server_photo_s85js/public/js/admin/ui.js
2026-08-11 08:45:04 +02:00

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();
}
});