paniers/public_html_admin/js/paniers.js

544 lines
18 KiB
JavaScript

// SEARCH
var paniersSearch = false;
// VIEW
var modalViewPanier = false;
var btnViewPanier = false;
var currentViewPanier = 0;
var paniersBaseURL = "paniers.php";
// ADD
var modalAddPanier = false;
var formAddPanier = false;
var btnAddPanier = false;
// EDIT
var modalEditPanier = false;
var formEditPanier = false;
var btnEditPanier = false;
var currentEditPanier = 0;
// DELETE
var modalDeletePanier = false;
var btnDeletePanier = false;
var currentDeletePanier = 0;
$(document).ready( function() {
// INIT SEARCH
paniersSearch = $("#paniersSearch");
if(paniersSearch.length>0) initSearchPaniers();
// INIT VIEW PANIER
modalViewPanier = $("#modalViewPanier");
btnViewPanier = $(".btnViewPanier");
if(modalViewPanier.length>0 && btnViewPanier.length>0) {
initViewPanier();
// VIEW REQUEST
var id = getUrlParameter("id");
if(id!==false && parseInt(id)>0) loadDatasInViewPanierModal(id);
}
// INIT ADD PANIER
modalAddPanier = $("#modalAddPanier");
formAddPanier = $("#formAddPanier");
btnAddPanier = $("#btnAddPanier");
if(modalAddPanier.length>0 && formAddPanier.length>0 && btnAddPanier.length>0) initAddPanier();
// INIT EDIT PANIER
modalEditPanier = $("#modalEditPanier");
formEditPanier = $("#formEditPanier");
btnEditPanier = $(".btnEditPanier");
if(modalEditPanier.length>0 && formEditPanier.length>0 && btnEditPanier.length>0) initEditPanier();
// INIT DELETE PANIER
modalDeletePanier = $("#modalDeletePanier");
btnDeletePanier = $(".btnDeletePanier");
if(modalDeletePanier.length>0 && btnDeletePanier.length>0) initDeletePanier();
});
/***** SEARCH PANIERS *****/
function initSearchPaniers() {
// SEARCH
paniersSearch.find("input[name=search]").unbind('keypress').keypress( function(event) {
if(event.keyCode==13) searchPanier(false);
});
paniersSearch.find(".btnClearSearch").unbind('click').click( function(event) {
searchPanier(true);
});
// FILTRE GROUPE
loadValue = paniersSearch.find("select[name=groupe]").attr("load_value");
paniersSearch.find("select[name=groupe]").change(function(e) {
$(this).blur();
document.location = "?groupe="+parseInt($(this).val());
}).val(loadValue);
}
function searchPanier(clear) {
paniersSearch.find("input[name=search]").blur();
paniersSearch.find(".btnClearSearch").blur();
if(clear) document.location = "?clearSearch";
else document.location = "?search="+paniersSearch.find("input[name=search]").val();
}
/***** VIEW PANIER *****/
function initViewPanier() {
// BTN VIEW
btnViewPanier.unbind('click').click( function(event) {
event.preventDefault();
id = parseInt($(this).attr('ref'));
if(!id>0) return;
clearViewPanierModal();
currentViewPanier = id;
loadDatasInViewPanierModal(id);
});
// CANCEL
modalViewPanier.on('hidden.bs.modal', function (e) {
clearViewPanierModal();
currentViewPanier = 0;
});
}
function loadDatasInViewPanierModal(id) {
datas = {
'ref' : id,
'action' : 'getDatas'
};
$.post(paniersBaseURL, datas, function(jsonTxt) {
var datas = JSON.parse(jsonTxt);
modalViewPanier.find("small.db_ref > span").html(datas.ref);
modalViewPanier.find("td.nom").html(datas.nom);
modalViewPanier.find("td.groupe").html(datas.groupe_nom);
modalViewPanier.find("td.valeur").html(number_format(datas.valeur,2)+" €");
modalViewPanier.modal('show');
}).fail(function() { alert(srvErrorMsg+" (load modal view panier)"); });;
}
function clearViewPanierModal() {
modalViewPanier.find("small.db_ref > span").html("");
modalViewPanier.find("td.nom").html("");
modalViewPanier.find("td.groupe").html("");
modalViewPanier.find("td.valeur").html("");
}
/***** FORM PANIER *****/
function initFormPanier(form) {
form.on("submit", function(e) { e.preventDefault(); });
// NOM
initFirstUpperCaseInput(form.find("input[name=nom]"), null, function() { $(this).blur(); });
form.find("input[name=nom]").keydown(function(e) {
if(e.keyCode==13) { e.preventDefault(); $(this).blur(); }
});
// GROUPE
form.find("select[name=groupe]").change(function(e) {
$(this).blur();
// EXISTING
if(parseInt($(this).val())>0) {
switchBtnGroupeAction(form, "delete");
switchBtnGroupeSecondAction(form, "edit");
}
// CHOISIR...
else {
switchBtnGroupeAction(form, "add");
switchBtnGroupeSecondAction(form, "hide");
}
});
form.find("button.btnGroupeAction").click(function(e) {
e.preventDefault();
$(this).blur();
// ADD / SAVE NEW
if($(this).hasClass("add") || $(this).hasClass("save_new")) {
addInputGroupeName(form, "add");
switchBtnGroupeAction(form, "save");
switchBtnGroupeSecondAction(form, "cancel");
}
// SAVE
else if($(this).hasClass("save")) {
var ipt = form.find("input[name=groupeName]");
if(ipt.length>0) {
var ref = ipt.attr("ref");
var datas = { 'nom' : ipt.val() };
if(datas.nom=="") {
alert("Merci de renseigner le nom du groupe !");
return;
}
// ADD GROUPE
if(ref == "new") datas.action = "add_groupe";
// EDIT GROUPE
else if(parseInt(ref)>0) {
ref = parseInt(ref);
datas.action = "edit_groupe";
datas.groupe_ref = ref;
}
form.find("div.modaLoader").addClass("show");
form.find("button.btnGroupeAction").prop("disabled", true);
$.post( paniersBaseURL, datas, function( result ) {
if(parseInt(result)>0) {
switchBtnGroupeAction(form, "delete");
switchBtnGroupeSecondAction(form, "edit");
removeInputGroupeName(form);
if(ref == "new") ref = parseInt(result);
// REFRESH GROUPES LIST
$.post( paniersBaseURL, {action: "groupes_select_list"}, function( result ) {
form.find("select[name=groupe]").html(result).val(ref);
}).fail(function() { alert(srvErrorMsg+" (form panier - add/edit groupe - refresh list after)"); });
}
else {
console.error(result);
alert(result);
}
}).always(function() {
form.find("div.modaLoader").removeClass("show");
form.find("button.btnGroupeAction").prop("disabled", false);
}).fail(function() { alert(srvErrorMsg+" (form panier - add/edit groupe)"); });
}
}
// DELETE
else if($(this).hasClass("delete")) {
var ref = parseInt(form.find("select[name=groupe]").val());
var nom = form.find("select[name=groupe] option:selected").html();
if(confirm('Etês vous sûr de vouloir supprimer le groupe de panier "'+nom+'" ?')) {
form.find("div.modaLoader").addClass("show");
form.find("button.btnGroupeAction").prop("disabled", false);
var datas = { action : 'delete_groupe', groupe_ref : ref };
$.post( paniersBaseURL, datas, function( result ) {
if(parseInt(result)>0) {
// REFRESH CONTRATS TYPES LIST
$.post( paniersBaseURL, {action: "groupes_select_list"}, function( result ) {
form.find("select[name=groupe]").html(result).val("0");
}).fail(function() { alert(srvErrorMsg+" (form panier - delete groupe - refresh list after)"); });
}
else {
console.error(result);
alert(result);
}
}).always(function() {
form.find("div.modaLoader").removeClass("show");
form.find("button.btnGroupeAction").prop("disabled", false);
}).fail(function() { alert(srvErrorMsg+" (form panier - delete groupe)"); });
}
}
});
form.find("button.btnGroupeSecondAction").click(function(e) {
e.preventDefault();
$(this).blur();
// EDIT
if($(this).hasClass("edit")) {
addInputGroupeName(form, "edit");
switchBtnGroupeAction(form, "save");
switchBtnGroupeSecondAction(form, "cancel");
}
// CANCEL
else if($(this).hasClass("cancel")) {
removeInputGroupeName(form);
// EDIT
if(parseInt(form.find("select[name=groupe]").val())>0) {
switchBtnGroupeAction(form, "delete");
switchBtnGroupeSecondAction(form, "edit");
}
// ADD
else {
switchBtnGroupeAction(form, "add");
switchBtnGroupeSecondAction(form, "hide");
}
}
});
// VALEUR
initFloatInput(form.find("input[name=valeur]"));
form.find("input[name=valeur]").keydown(function(e) {
if(e.keyCode==13) { e.preventDefault(); $(this).blur(); }
});
}
function loadDatasInFormPanierDatas(modal,form,id) {
datas = {
'ref' : id,
'action' : 'getDatas'
};
$.post(paniersBaseURL, datas, function(jsonTxt) {
var datas = JSON.parse(jsonTxt);
form.find("input[name=nom]").val(datas.nom);
if(parseInt(datas.groupe_ref) > 0) {
form.find("select[name=groupe]").val(datas.groupe_ref);
switchBtnGroupeAction(form, "delete");
switchBtnGroupeSecondAction(form, "edit");
}
else {
form.find("select[name=groupe]").val("0");
switchBtnGroupeAction(form, "add");
switchBtnGroupeSecondAction(form, "hide");
}
form.find("input[name=valeur]").val(datas.valeur);
if(modal) modal.modal('show');
}).fail(function() { alert(srvErrorMsg+" (form panier - load datas)"); });
}
function clearFormPanierDatas(form) {
form.find("input[name=nom]").val("");
form.find("select[name=groupe]").val("0");
removeInputGroupeName(form);
switchBtnGroupeAction(form, "add");
switchBtnGroupeSecondAction(form, "hide");
form.find("input[name=valeur]").val("0");
// MODALOADER
form.find("div.modaLoader").removeClass("show");
}
// GROUPE
function switchBtnGroupeAction(form, action) { // ADD / SAVE / DELETE
var btn = form.find("button.btnGroupeAction");
if(action == "add") {
btn.removeClass("save delete").addClass("add").removeClass("btn-danger btn-primary").addClass("btn-default")
.find("i").removeClass("glyphicon-floppy-saved glyphicon-trash").addClass("glyphicon-plus");
}
else if(action == "save") {
btn.removeClass("add save_new delete").addClass("save").removeClass("btn-danger btn-default").addClass("btn-primary")
.find("i").removeClass("glyphicon-plus glyphicon-trash").addClass("glyphicon-floppy-saved");
}
else if(action == "delete") {
btn.removeClass("add save_new save").addClass("delete").removeClass("btn-default btn-primary").addClass("btn-danger")
.find("i").removeClass("glyphicon-plus glyphicon-floppy-saved").addClass("glyphicon-trash");
}
}
function switchBtnGroupeSecondAction(form, action) { // CANCEL / EDIT
var btn = form.find("button.btnGroupeSecondAction");
if(action == "cancel") {
btn.removeClass("edit").addClass("cancel").removeClass("btn-default").addClass("btn-danger")
.find("i").removeClass("glyphicon-edit").addClass("glyphicon-floppy-remove");
btn.parent().removeClass("hide");
}
else if(action == "edit") {
btn.removeClass("cancel").addClass("edit").removeClass("btn-danger").addClass("btn-default")
.find("i").removeClass("glyphicon-floppy-remove").addClass("glyphicon-edit");
btn.parent().removeClass("hide");
}
else if(action == "hide") {
btn.parent().addClass("hide");
}
}
function addInputGroupeName(form, action) {
var select = form.find("select[name=groupe]");
var ipt = $('<input type="text" class="form-control" name="groupeName" placeholder="nom">').attr("action", action);
select.addClass("hide");
ipt.insertBefore(select);
if(action=="edit") {
ipt.attr("ref", select.val());
ipt.val( select.find("option:selected").html() );
}
else ipt.attr("ref", "new");
ipt.focus();
ipt.keypress(function(e) {
if(e.keyCode==13) {
e.preventDefault();
form.find("button.btnGroupeAction").click();
}
});
}
function removeInputGroupeName(form) {
var ipt = form.find("input[name=groupeName]");
if(ipt.length>0) ipt.remove();
form.find("select[name=groupe]").removeClass("hide");
}
// GET FORM DATAS
function getPanierFormDatas(form) {
var datas = {
'nom' : form.find("input[name=nom]").val(),
'groupe' : parseInt(form.find("select[name=groupe]").val()),
'valeur' : parseFloat(form.find("input[name=valeur]").val())
};
return datas;
}
/***** ADD PANIER *****/
function initAddPanier() {
// BTN ADD
btnAddPanier.unbind('click').click( function(event) {
event.preventDefault();
clearFormPanierDatas(formAddPanier);
modalAddPanier.modal('show');
});
// INIT FORM ADD
initFormPanier(formAddPanier);
// SAVE PANIER
$(".btnSaveAddPanier").unbind('click').click( function(event) {
event.preventDefault();
var datas = getPanierFormDatas(formAddPanier);
if(datas.nom=="" || !datas.groupe>0) {
alert("ERREUR : au minimum, un nom et un groupe doivent être renseigné !");
return;
}
datas.action = 'add';
formAddPanier.find("div.modaLoader").addClass("show");
$(".btnSaveAddPanier").prop("disabled", true);
$.post( paniersBaseURL, datas, function( result ) {
if(parseInt(result)>0) {
modalAddPanier.modal('hide');
setTimeout(function() {
document.location.reload();
},200);
}
else {
console.error(result);
alert(result);
formAddPanier.find("div.modaLoader").removeClass("show");
$(".btnSaveAddPanier").prop("disabled", false);
}
}).fail( function() {
alert(srvErrorMsg+" (add panier)");
formAddPanier.find("div.modaLoader").removeClass("show");
$(".btnSaveAddPanier").prop("disabled", false);
});
});
// CANCEL
modalAddPanier.on('hidden.bs.modal', function (e) { clearFormPanierDatas(formAddPanier); });
}
/***** EDIT PANIER *****/
function initEditPanier() {
// BTN EDIT
btnEditPanier.unbind('click').click( function(event) {
event.preventDefault();
id = parseInt($(this).attr('ref'));
if(!id>0) return;
currentEditPanier = id;
clearFormPanierDatas(formEditPanier);
loadDatasInFormPanierDatas(modalEditPanier,formEditPanier,id);
});
// INIT FORM EDIT
initFormPanier(formEditPanier);
// SAVE PANIER
$(".btnSaveEditPanier").unbind('click').click( function(event) {
event.preventDefault();
if(!currentEditPanier>0) return;
var datas = getPanierFormDatas(formEditPanier);
if(datas.nom=="" || !datas.groupe>0) {
alert("ERREUR : au minimum, un nom et un groupe doivent être renseigné !");
return;
}
datas.action = 'edit';
datas.ref = currentEditPanier;
formEditPanier.find("div.modaLoader").addClass("show");
$(".btnSaveEditPanier").prop("disabled", true);
$.post( paniersBaseURL, datas, function( result ) {
if(parseInt(result)>0) {
modalEditPanier.modal('hide');
setTimeout(function() {
document.location.reload();
},200);
}
else {
console.error(result);
alert(result);
formEditPanier.find("div.modaLoader").removeClass("show");
$(".btnSaveEditPanier").prop("disabled", false);
}
}).fail( function() {
alert(srvErrorMsg+" (edit panier)");
formEditPanier.find("div.modaLoader").removeClass("show");
$(".btnSaveEditPanier").prop("disabled", false);
});
});
// CANCEL
modalEditPanier.on('hidden.bs.modal', function (e) {
clearFormPanierDatas(formEditPanier);
currentEditPanier = 0;
});
}
/***** DELETE PANIER *****/
function initDeletePanier() {
// BTN DELETE
btnDeletePanier.unbind('click').click( function(event) {
event.preventDefault();
id = parseInt($(this).attr('ref'));
if(!id>0) return;
currentDeletePanier = id;
modalDeletePanier.find('b.name').html( $(this).attr('nom') );
modalDeletePanier.modal('show');
});
// DELETE
$("#btnDeletePanier").unbind('click').click( function(event) {
event.preventDefault();
$(this).blur();
if(!currentDeletePanier>0) return;
var datas = {
action : 'delete',
ref : currentDeletePanier
};
$.post( paniersBaseURL, datas, function( result ) {
if(parseInt(result)>0) {
modalEditPanier.modal('hide');
setTimeout(function() {
document.location.reload();
},200);
}
else {
console.error(result);
alert(result);
}
}).fail(function() { alert(srvErrorMsg+" (delete panier)"); });
});
// CANCEL
modalDeletePanier.on('hidden.bs.modal', function (e) {
modalDeletePanier.find('b.name').html("");
currentDeletePanier = 0;
});
}