if (!String.prototype.replaceAll) { String.prototype.replaceAll = function(str, newStr){ // If a regex pattern if (Object.prototype.toString.call(str).toLowerCase() === '[object regexp]') { return this.replace(str, newStr); } // If a string return this.replace(new RegExp(str, 'g'), newStr); }; } function htmlEntities(str) { return String(str).replace(/&/g, '&').replace(//g, '>').replace(/"/g, '"'); } $(".addP").click(function addItem() { $("[name=vino]").val(""); $("[name=cantina]").val(""); $("[name=annata]").val(""); $("[name=volume]").val(""); $("[name=quantita]").val(""); $("[name=note]").val(""); $("#tableview").hide(); $("#saveedit").show(); formAction = "new"; }); $(".closeForm").click(function addItem() { $("#tableview").show(); $("#saveedit").hide(); $("#view").hide(); $("#chpass").hide(); $("#find").hide(); }); $("#saveedit").hide(); var pageSize = 20, lastPage = 0, formAction = "new", lastId = 0; function updateTable(pageNum) { lastPage = pageNum; $.getJSON("api.php?intent=list&pageSize=" + pageSize + "&pageNum=" + pageNum + ("&" + $("#find").serialize()).replaceAll("&S", "&") + "&orderBy=" + $("[name=orderBy]").val() + "&orderHow=" + $("[name=orderHow]").val(), function (data) { $("#pageIndicator").text("Pagina " + (parseInt(pageNum) + 1) + " di " + data["pagTot"]); $("#tabnav").html(""); for (let i = 0; i < data["pagTot"]; i++) { var act = ""; if (i == pageNum) act = "active"; $("#tabnav").append('
  • ' + (i + 1) + '
  • ') } $("#tabbody").html(""); data["rows"].forEach(function iterate(value) { $("#tabbody").append(` `+ htmlEntities(value["id"]) + ` `+ htmlEntities(value["vino"]) + ` `+ htmlEntities(value["cantina"]) + ` `+ htmlEntities(value["annata"]) + ` `+ htmlEntities(value["volume"]) + ` ℓ `+ htmlEntities(value["quantita"]) + ` `+ htmlEntities(value["note"]) + `         `); }); }); } updateTable(0); $(document).delegate(".page-link", "click", function pageChange() { updateTable($(this).attr("data-pageNum")); }); $(document).delegate("[data-action=delete]", "click", function delElEvent() { if (confirm("Eliminare? (questa azione è irreversibile)")) { $.getJSON("api.php?intent=delete&id=" + $(this).attr("data-id"), function delSend() { updateTable(lastPage); $("#tableview").show(); $("#saveedit").hide(); $("#view").hide(); }); } }); $(document).delegate("[data-action=edit]", "click", function editElEvent() { lastId = $(this).attr("data-id"); $.getJSON("api.php?intent=get&id=" + $(this).attr("data-id"), function editEvent(data) { formAction = "edit"; $("[name=vino]").val(data["vino"]); $("[name=cantina]").val(data["cantina"]); $("[name=annata]").val(data["annata"]); $("[name=volume]").val(data["volume"]); $("[name=quantita]").val(data["quantita"]); $("[name=note]").val(data["note"]); $("#tableview").hide(); $("#saveedit").show(); }); }) $(document).delegate("[data-action=view]", "click", function editElEvent() { var idTemp = $(this).attr("data-id"); $.getJSON("api.php?intent=get&id=" + idTemp, function editEvent(data) { $("#Vid").html(idTemp); $("#Vvino").html(data["vino"]); $("#Vcantina").html(data["cantina"]); $("#Vannata").html(data["annata"]); $("#Vvolume").html(data["volume"] + " ℓ"); $("#Vquantita").html(data["quantita"]); $("#Vnote").html(data["note"]); $("#Vdelete").attr("data-id", idTemp); $("#view").show(); $("#tableview").hide(); }); }) $("#saveedit").submit(function (e) { e.preventDefault(); switch (formAction) { case "edit": $.getJSON("api.php?intent=update&id=" + lastId + "&" + $(this).serialize(), function editEvent(data) { $("#tableview").show(); $("#saveedit").hide(); updateTable(lastPage); }); break; case "new": $.getJSON("api.php?intent=add&" + $(this).serialize(), function editEvent(data) { $("#tableview").show(); $("#saveedit").hide(); updateTable(lastPage); }); break; } return false; }); $('[name=vino]').autoComplete({ resolver: 'custom', events: { search: function (qry, callback) { // let's do a custom ajax call $.ajax( 'api.php', { data: { "intent": "complete", 'query': qry, "type": "vino" } } ).done(function (res) { callback(res) }); } } }); $('[name=cantina]').autoComplete({ resolver: 'custom', events: { search: function (qry, callback) { // let's do a custom ajax call $.ajax( 'api.php', { data: { "intent": "complete", 'query': qry, "type": "cantina" } } ).done(function (res) { callback(res) }); } } }); $('[name=annata]').autoComplete({ resolver: 'custom', events: { search: function (qry, callback) { // let's do a custom ajax call $.ajax( 'api.php', { data: { "intent": "complete", 'query': qry, "type": "annata" } } ).done(function (res) { callback(res) }); } } }); $('[name=note]').autoComplete({ resolver: 'custom', events: { search: function (qry, callback) { // let's do a custom ajax call $.ajax( 'api.php', { data: { "intent": "complete", 'query': qry, "type": "note" } } ).done(function (res) { callback(res) }); } } }); $("#passwAccess").submit(function access(e) { e.preventDefault(); $.getJSON("api.php?intent=access&password=" + $("[name=password]").val(), function editEvent(data) { if (data["ok"]) { $("#passwAccess").hide(); $("#tableview").show(); $(".loggedInMenu").show(); } else { alert("Credenziali errate"); } }); return false; }); $("#chpass").submit(function access(e) { e.preventDefault(); $.getJSON("api.php?intent=updatePassword&password=" + $("[name=Upassword]").val(), function editEvent(data) { $("#chpass").hide(); $("#tableview").show(); }); return false; }); $(".logout").click(function () { location.reload(); }) $(".chpassBtn").click(function () { $("#find").hide(); $("#tableview").hide(); $("#chpass").show(); }); $(".search").click(function () { $("#find").show(); $("#tableview").show(); $("#chpass").hide(); }); $("#find").submit(function access(e) { e.preventDefault(); updateTable(lastPage); return false; }); $(".resetR").click(function () { $("#find")[0].reset(); $("#tableview").show(); $("#saveedit").hide(); $("#view").hide(); $("#chpass").hide(); $("#find").hide(); updateTable(lastPage); }); $('[name=orderBy],[name=orderHow]').on('change', function () { updateTable(lastPage); });