fixed note save and import special character

This commit is contained in:
2026-02-19 11:55:24 +01:00
parent 1a4beadbb2
commit 407d6884a1
4 changed files with 59 additions and 56 deletions
+48 -50
View File
@@ -666,13 +666,11 @@ function fixedDefaultValue(array $f): string
<div class="card radius-10">
<div class="card-header">
<div class="d-flex align-items-center">
<div>
<h6 class="mb-0">Modifica Dati Importati</h6>
<div id="unsavedChanges" style="display:none; color: red; font-weight: bold; margin:10px 0;">
⚠️ Unsaved changes detected! Please save before leaving this page.
<ul id="changedFields" style="margin-top:5px; font-weight:normal; color:darkred;"></ul>
</div>
<div id="unsavedChanges" style="display:none; color: red; font-weight: bold; margin:10px 0;">
⚠️ Unsaved changes detected! Please save before leaving this page.<br>
<span id="changedRows" style="font-weight:normal; color:darkred;"></span>
</div>
</div>
</div>
<div class="card-body">
@@ -1228,52 +1226,49 @@ function fixedDefaultValue(array $f): string
document.addEventListener("DOMContentLoaded", function() {
const inputs = document.querySelectorAll(".cell-input, .dropdown-select, .carrier-select, .awb-input, .date-picker");
const unsavedDiv = document.getElementById("unsavedChanges");
const changedList = document.getElementById("changedFields");
const changedRowsEl = document.getElementById("changedRows");
let hasChanges = false;
let changedFields = {};
function renderChangedList() {
changedList.innerHTML = "";
Object.keys(changedFields).forEach(rowIndex => {
const fields = changedFields[rowIndex];
if (fields.length > 0) {
const li = document.createElement("li");
li.textContent = `Row ${parseInt(rowIndex) + 1}: ${fields.join(", ")}`;
changedList.appendChild(li);
}
});
unsavedDiv.style.display = Object.keys(changedFields).length > 0 ? "block" : "none";
// ✅ solo righe modificate (Set)
let changedRows = new Set();
function renderChangedRows() {
const rows = Array.from(changedRows)
.map(n => Number(n))
.sort((a, b) => a - b);
if (rows.length === 0) {
unsavedDiv.style.display = "none";
changedRowsEl.textContent = "";
return;
}
// Visuale: "Row 1, Row 5, Row 6"
changedRowsEl.textContent = rows.map(r => `Row ${r + 1}`).join(", ");
unsavedDiv.style.display = "block";
}
inputs.forEach(el => {
el.addEventListener("change", () => {
hasChanges = true;
const gridCell = el.closest(".grid-cell");
const colIndex = gridCell?.dataset.index;
const rowIndex = gridCell?.dataset.row;
let label = "Unknown field";
if (colIndex) {
const header = document.querySelector(`.grid-header[data-index="${colIndex}"]`);
if (header) {
label = header.textContent.replace(":", "").trim();
}
}
// ✅ segnamo solo la riga
if (rowIndex !== undefined) {
if (!changedFields[rowIndex]) {
changedFields[rowIndex] = [];
}
if (!changedFields[rowIndex].includes(label)) {
changedFields[rowIndex].push(label);
}
gridCell.classList.add("cell-changed");
changedRows.add(rowIndex);
}
renderChangedList();
// (se vuoi mantenere highlight cella gialla, lascia questa riga)
if (gridCell) gridCell.classList.add("cell-changed");
renderChangedRows();
});
});
document.querySelectorAll(".save-btn").forEach(btn => {
btn.addEventListener("click", () => {
const rowIndex = btn.dataset.row;
@@ -1331,13 +1326,16 @@ function fixedDefaultValue(array $f): string
});
setTimeout(() => cells.forEach(cell => cell.classList.remove('flash-success')), 500);
if (changedFields[rowIndex]) {
delete changedFields[rowIndex];
document.querySelectorAll(`.grid-cell[data-row="${rowIndex}"]`)
.forEach(cell => cell.classList.remove("cell-changed"));
renderChangedList();
hasChanges = Object.keys(changedFields).length > 0;
}
// ✅ rimuovi riga dal set (non mostrare più Row X)
changedRows.delete(rowIndex);
// se vuoi continuare a togliere highlight giallo di TUTTA la riga:
document.querySelectorAll(`.grid-cell[data-row="${rowIndex}"]`)
.forEach(cell => cell.classList.remove("cell-changed"));
renderChangedRows();
hasChanges = changedRows.size > 0;
alert('Salvataggio riga avvenuto con successo!');
} else {
@@ -1413,11 +1411,10 @@ function fixedDefaultValue(array $f): string
});
setTimeout(() => cells.forEach(cell => cell.classList.remove('flash-success')), 500);
if (changedFields[rowIndex]) {
delete changedFields[rowIndex];
document.querySelectorAll(`.grid-cell[data-row="${rowIndex}"]`)
.forEach(cell => cell.classList.remove("cell-changed"));
}
changedRows.delete(rowIndex);
document.querySelectorAll(`.grid-cell[data-row="${rowIndex}"]`)
.forEach(cell => cell.classList.remove("cell-changed"));
} else {
errorMessages.push(`Riga ${parseInt(rowIndex) + 1}: ${data.message}`);
}
@@ -1426,8 +1423,9 @@ function fixedDefaultValue(array $f): string
}
}
renderChangedList();
hasChanges = Object.keys(changedFields).length > 0;
renderChangedRows();
hasChanges = changedRows.size > 0;
if (errorMessages.length === 0) {
alert(`Tutte le ${successCount} righe salvate con successo!`);