warning fix

This commit is contained in:
Lasha Kapanadze 2025-09-01 19:56:08 +04:00
parent 1303cff9fd
commit d692614f70

View File

@ -98,6 +98,11 @@ foreach ($stmt->fetchAll(PDO::FETCH_ASSOC) as $row) {
<?php include('cssinclude.php'); ?>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.5.1/css/all.min.css" integrity="sha512-DTOQO9RWCH3ppGqcWaEA1BIZOC6xxalwEsw9c2QQeAIftl+Vegovlnee1c9QX4TctnWMn13TZye+giMm8e2Lw==" crossorigin="anonymous" referrerpolicy="no-referrer" />
<style>
.cell-changed {
background-color: #fff3b0 !important; /* რბილი ყვითელი */
transition: background-color 0.3s ease;
}
/* Colori pastello per input/select */
input.auto-input,
select.auto-input {
@ -413,6 +418,7 @@ foreach ($stmt->fetchAll(PDO::FETCH_ASSOC) as $row) {
<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>
</div>
@ -699,19 +705,75 @@ foreach ($stmt->fetchAll(PDO::FETCH_ASSOC) as $row) {
document.addEventListener("DOMContentLoaded", function() {
const inputs = document.querySelectorAll(".cell-input, .dropdown-select, .carrier-select, .awb-input");
const unsavedDiv = document.getElementById("unsavedChanges");
const changedList = document.getElementById("changedFields");
let hasChanges = false;
let changedFields = {}; // { rowIndex: [fieldNames...] }
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";
}
inputs.forEach(el => {
el.addEventListener("change", () => {
hasChanges = true;
unsavedDiv.style.display = "block";
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();
}
}
if (rowIndex !== undefined) {
if (!changedFields[rowIndex]) {
changedFields[rowIndex] = [];
}
if (!changedFields[rowIndex].includes(label)) {
changedFields[rowIndex].push(label);
}
// highlight მხოლოდ ეს კონკრეტული cell
gridCell.classList.add("cell-changed");
}
renderChangedList();
});
});
document.querySelectorAll(".save-btn").forEach(btn => {
btn.addEventListener("click", () => {
hasChanges = false;
unsavedDiv.style.display = "none";
const rowIndex = btn.dataset.row;
if (rowIndex !== undefined && changedFields[rowIndex]) {
delete changedFields[rowIndex]; // წავშალოთ კონკრეტული row
renderChangedList();
// ამოვშალოთ cell highlight იმ row-ში
document.querySelectorAll(`.grid-cell[data-row="${rowIndex}"]`)
.forEach(cell => cell.classList.remove("cell-changed"));
}
// თუ აღარაფერია შესანახი → false
if (Object.keys(changedFields).length === 0) {
hasChanges = false;
}
});
});
@ -987,4 +1049,4 @@ foreach ($stmt->fetchAll(PDO::FETCH_ASSOC) as $row) {
</script>
</body>
</html>
</html>