diff --git a/public/userarea/partsTable.js b/public/userarea/partsTable.js index 1c2d287..c91a67e 100644 --- a/public/userarea/partsTable.js +++ b/public/userarea/partsTable.js @@ -530,6 +530,7 @@ $(document).ready(function () { const finishLoading = function () { unsavedChanges = false; isLoadingPartsRecord = false; + updateSaveBtnState(); if (callback) callback(); }; @@ -809,7 +810,11 @@ $(document).ready(function () { } } - $("#partsModal").on("hide.bs.modal", function (e) { + $(document).on("hide.bs.modal", "#partsModal", function (e) { + console.log( + "[partsModal] hide.bs.modal — unsavedChanges =", + unsavedChanges, + ); if ( unsavedChanges && !confirm("Hai modifiche non salvate. Vuoi davvero uscire?") @@ -1843,11 +1848,17 @@ $(document).ready(function () { const item = (data.results || [])[0]; if (item) { const option = new Option(item.text, item.id, true, true); - if (!fromFilter) $select.append(option).trigger("change"); + if (!fromFilter) + $select + .append(option) + .trigger("change", [{ skipHandler: true }]); else $select.append(option); partMatrice[partNumber] = item.id; } else { - if (!fromFilter) $select.val(null).trigger("change"); + if (!fromFilter) + $select + .val(null) + .trigger("change", [{ skipHandler: true }]); partMatrice[partNumber] = null; } }); @@ -2025,6 +2036,7 @@ $(document).ready(function () { ); unsavedChanges = false; + updateSaveBtnState(); if (!$("#quotationeBtn").hasClass("d-none")) $("#quotationeBtn").addClass("d-none"); @@ -2212,20 +2224,37 @@ $(document).ready(function () { function markUnsaved() { if (isLoadingPartsRecord) return; - if (!unsavedChanges) { - unsavedChanges = true; + unsavedChanges = true; + updateSaveBtnState(); + } + + // Aggiorna aspetto del tasto Salva in base a unsavedChanges + function updateSaveBtnState() { + const $btn = $("#savePartsBtn"); + if (!$btn.length) return; + + if (unsavedChanges) { + $btn.removeClass("btn-success").addClass("btn-danger"); + } else { + $btn.removeClass("btn-danger").addClass("btn-success"); } } + // Catch-all: modifiche manuali negli input della tabella parti segnano "non salvato". + // I