174 lines
4.3 KiB
JavaScript
174 lines
4.3 KiB
JavaScript
// ===============================
|
|
// UI FUNCTIONS
|
|
// ===============================
|
|
|
|
// Output foto → <pre id="out">
|
|
function out(data) {
|
|
const el = document.getElementById("out");
|
|
if (el) {
|
|
el.textContent = JSON.stringify(data, null, 2);
|
|
}
|
|
}
|
|
|
|
// Output attività → <pre id="outActivities">
|
|
function outActivities(data) {
|
|
const el = document.getElementById("outActivities");
|
|
if (el) {
|
|
el.textContent = JSON.stringify(data, null, 2);
|
|
}
|
|
}
|
|
|
|
// ===============================
|
|
// CARICA LISTA UTENTI — solo Admin
|
|
// ===============================
|
|
async function loadUserDropdown() {
|
|
try {
|
|
const users = await apiGet(`/users`);
|
|
|
|
// FOTO
|
|
const selPhotos = document.getElementById("userSelect");
|
|
if (selPhotos) {
|
|
selPhotos.innerHTML = "";
|
|
|
|
users.forEach(u => {
|
|
const opt = document.createElement("option");
|
|
opt.value = u.name;
|
|
opt.textContent = u.name;
|
|
selPhotos.appendChild(opt);
|
|
});
|
|
}
|
|
|
|
// ATTIVITÀ
|
|
const selActivities = document.getElementById("userSelectActivities");
|
|
if (selActivities) {
|
|
selActivities.innerHTML = "";
|
|
|
|
users.forEach(u => {
|
|
const opt = document.createElement("option");
|
|
opt.value = u.name;
|
|
opt.textContent = u.name;
|
|
selActivities.appendChild(opt);
|
|
});
|
|
}
|
|
|
|
} catch (err) {
|
|
console.error("Errore nel caricare gli utenti:", err);
|
|
out({
|
|
error: "Errore nel caricare gli utenti",
|
|
details: err.message
|
|
});
|
|
}
|
|
}
|
|
|
|
// ===============================
|
|
// INIZIALIZZAZIONE UI
|
|
// ===============================
|
|
document.addEventListener("DOMContentLoaded", async () => {
|
|
// 1. Aspetta che config.js carichi Admin.BASE_URL
|
|
await loadConfig();
|
|
|
|
// 2. Helper per bind
|
|
const bind = (id, fn) => {
|
|
const el = document.getElementById(id);
|
|
|
|
if (el && typeof fn === "function") {
|
|
el.onclick = fn;
|
|
}
|
|
};
|
|
|
|
// ===============================
|
|
// FOTO
|
|
// ===============================
|
|
bind("btnScan", scan);
|
|
bind("btnResetDB", resetDB);
|
|
bind("btnReadDBUser", readDBUser);
|
|
bind("btnDeletePhoto", deletePhoto);
|
|
bind("btnFindIdIndex", findIdIndex);
|
|
bind("btnResetDBuser", resetDBuser);
|
|
bind("btnSearchPhotoById", searchPhotoById);
|
|
|
|
// Toggle soft delete foto
|
|
bind("btnToggleSoft", toggleSoftDelete);
|
|
|
|
bind("btnShowDBChanges", async () => {
|
|
const since = getSinceISO();
|
|
|
|
if (!since) {
|
|
return out({ error: "Inserisci una data/ora" });
|
|
}
|
|
|
|
const payload = parseJwt(Admin.token);
|
|
const user = payload.name;
|
|
const res = await getDBChanges(since, user);
|
|
|
|
out(res);
|
|
});
|
|
|
|
bind("btnShowHardDeleted", async () => {
|
|
const since = getSinceISO();
|
|
|
|
if (!since) {
|
|
return out({ error: "Inserisci una data/ora" });
|
|
}
|
|
|
|
const payload = parseJwt(Admin.token);
|
|
const user = payload.name;
|
|
const res = await getHardDeleted(since, user);
|
|
|
|
out(res.deleted || res);
|
|
});
|
|
|
|
bind("btnBack", () => {
|
|
window.location.href = "index.html";
|
|
});
|
|
|
|
// ===============================
|
|
// ATTIVITÀ
|
|
// ===============================
|
|
bind("btnScanActivities", scanActivities);
|
|
bind("btnResetActivitiesDB", resetActivitiesDB);
|
|
bind("btnReadActivitiesDB", readActivitiesDBUser);
|
|
bind("btnDeleteActivity", deleteActivity);
|
|
|
|
// Toggle soft delete attività
|
|
bind("btnToggleSoftActivity", toggleSoftDeleteActivity);
|
|
|
|
bind("btnSearchActivityById", searchActivityById);
|
|
|
|
bind("btnShowActivitiesChanges", async () => {
|
|
const since = getSinceISOActivities();
|
|
|
|
if (!since) {
|
|
return outActivities({ error: "Inserisci una data/ora" });
|
|
}
|
|
|
|
const payload = parseJwt(Admin.token);
|
|
const user = payload.name;
|
|
const res = await getActivitiesChanges(since, user);
|
|
|
|
outActivities(res);
|
|
});
|
|
|
|
bind("btnShowActivitiesHardDeleted", async () => {
|
|
const since = getSinceISOActivities();
|
|
|
|
if (!since) {
|
|
return outActivities({ error: "Inserisci una data/ora" });
|
|
}
|
|
|
|
const payload = parseJwt(Admin.token);
|
|
const user = payload.name;
|
|
const res = await getActivitiesHardDeleted(since, user);
|
|
|
|
outActivities(res.deleted || res);
|
|
});
|
|
|
|
// ===============================
|
|
// DROPDOWN UTENTI — solo Admin
|
|
// ===============================
|
|
const payload = parseJwt(Admin.token);
|
|
|
|
if (payload.name === "Admin") {
|
|
loadUserDropdown();
|
|
}
|
|
});
|