+
+
+ Seleziona i beni da cui questo bene dipende (tieni premuto Ctrl/Cmd per selezionarne piu' di uno). Alimenta la Mappa delle Dipendenze e supporta l'analisi del rischio (art. 24 D.Lgs. 138/2024).
+
`, {
size: 'lg',
footer: `
@@ -982,11 +1004,66 @@
status: document.getElementById('asset-status').value,
};
+ const depSel = document.getElementById('asset-dependencies');
+ data.dependencies = depSel
+ ? Array.from(depSel.selectedOptions).map(o => parseInt(o.value)).filter(n => !isNaN(n))
+ : [];
+
if (window._assetSaveCallback) {
window._assetSaveCallback(data);
}
}
+ // ── Elimina bene ────────────────────────────────────────
+ async function confirmDeleteAsset(id) {
+ const a = (allAssets || []).find(x => x.id === parseInt(id));
+ const nome = a ? a.name : ('#' + id);
+ if (!confirm(`Eliminare definitivamente il bene "${nome}"?\nL'operazione non e' reversibile.`)) return;
+ try {
+ const r = await api.deleteAsset(id);
+ if (r.success) {
+ showNotification('Bene eliminato dall\'inventario.', 'success');
+ closeModal();
+ loadAssets();
+ } else {
+ showNotification(r.message || 'Eliminazione non riuscita (serve il ruolo amministratore).', 'error');
+ }
+ } catch (e) {
+ showNotification('Errore di connessione.', 'error');
+ }
+ }
+
+ // ── Mappa delle Dipendenze ──────────────────────────────
+ function parseAssetDeps(a) {
+ let d = a.dependencies;
+ if (typeof d === 'string') { try { d = JSON.parse(d); } catch (e) { d = []; } }
+ return (d || []).map(x => parseInt(x)).filter(n => !isNaN(n));
+ }
+ function showDependencyMap() {
+ const assets = allAssets || [];
+ const byId = {};
+ assets.forEach(a => { byId[a.id] = a; });
+ const total = assets.reduce((s, a) => s + parseAssetDeps(a).length, 0);
+ let body;
+ if (!assets.length) {
+ body = `
Nessun bene in inventario. Aggiungi prima i beni, poi apri Modifica su ciascuno per impostare le dipendenze.
Relazioni di dipendenza tra i beni dell'inventario (${total} collegamenti totali). Per impostare o modificare le dipendenze di un bene, aprilo con Modifica e usa il campo Dipendenze. La mappa supporta l'analisi del rischio e la continuita' operativa (art. 24 D.Lgs. 138/2024).
+
Bene
Dipende da
${rows}
`;
+ }
+ showModal('Mappa delle Dipendenze', body, {
+ size: 'lg',
+ footer: ``
+ });
+ }
+
// ── Initial Load ────────────────────────────────────────
loadAssets();
diff --git a/public/version.json b/public/version.json
index 343c0ed..ec9c5dc 100644
--- a/public/version.json
+++ b/public/version.json
@@ -1 +1 @@
-{"version": "1.24.12", "build": "2026-06-24-v1.24.12", "date": "2026-06-24", "changelog": "Widget Segnalazioni — Risolto l'errore \"Data too long for column 'operative_summary'\" quando la descrizione era troppo lunga: ora la casella ha un limite di 1900 caratteri con contatore live e un messaggio chiaro se si supera (al posto dell'errore tecnico). Causa radice (dimensione colonna lato ticket-ms) inoltrata ad AgileHub. Risolto ticket #430."}
+{"version": "1.24.13", "build": "2026-06-25-v1.24.13", "date": "2026-06-25", "changelog": "Inventario beni — Aggiunta la Mappa delle Dipendenze: nuovo pulsante 'Mappa Dipendenze' che mostra le relazioni tra i beni, e nel form di ogni bene un campo per selezionare i beni da cui dipende (supporta l'analisi del rischio, art. 24 D.Lgs. 138/2024). Aggiunto il pulsante per eliminare un bene dall'inventario (lista e dettaglio). Risolti ticket #440 e #439."}