From: Giorgio Ravera Date: Wed, 11 Mar 2026 21:20:40 +0000 (+0100) Subject: renamed visibility and added form to manage it X-Git-Url: http://git.giorgioravera.it/?a=commitdiff_plain;h=f6b78c7ca31fd2ed7c52f1c3612ea57a04486300;p=network-manager.git renamed visibility and added form to manage it --- diff --git a/backend/db/aliases.py b/backend/db/aliases.py index 3aa0878..038a770 100644 --- a/backend/db/aliases.py +++ b/backend/db/aliases.py @@ -39,11 +39,16 @@ def validate_data(data: dict) -> dict: # Boolean normalization for DB (0/1) ssl_enabled = int(bool(data.get("ssl_enabled", 0))) + # Normalization (0/1/2) + v = int(data.get("visibility", 0)) + visibility = v if v in (0, 1, 2) else 0 + return { "name": name, "target": target, "note": note, "ssl_enabled": ssl_enabled, + "visibility": visibility, } # ----------------------------- @@ -75,12 +80,13 @@ def add_alias(data: dict): conn = get_db() try: cur = conn.execute( - "INSERT INTO aliases (name, target, note, ssl_enabled) VALUES (?, ?, ?, ?)", + "INSERT INTO aliases (name, target, note, ssl_enabled, visibility) VALUES (?, ?, ?, ?, ?)", ( cleaned["name"], cleaned["target"], cleaned["note"], cleaned["ssl_enabled"], + cleaned["visibility"], ) ) conn.commit() @@ -107,7 +113,7 @@ def update_alias(alias_id: int, data: dict) -> bool: cur = conn.execute( """ UPDATE aliases - SET name=?, target=?, note=?, ssl_enabled=? + SET name=?, target=?, note=?, ssl_enabled=?, visibility=?, last_updated=CURRENT_TIMESTAMP WHERE id=? """, ( @@ -115,6 +121,7 @@ def update_alias(alias_id: int, data: dict) -> bool: cleaned["target"], cleaned["note"], cleaned["ssl_enabled"], + cleaned["visibility"], alias_id, ) ) @@ -162,7 +169,7 @@ def init_db_alias_table(cur): target TEXT NOT NULL, note TEXT, ssl_enabled INTEGER NOT NULL DEFAULT 0, - external_mode INTEGER NOT NULL DEFAULT 0, + visibility INTEGER NOT NULL DEFAULT 0, last_updated TIMESTAMP DEFAULT CURRENT_TIMESTAMP ); """) diff --git a/backend/db/hosts.py b/backend/db/hosts.py index ea9c1f0..92c861c 100644 --- a/backend/db/hosts.py +++ b/backend/db/hosts.py @@ -55,6 +55,10 @@ def validate_data(data: dict) -> dict: # Normalizzazione boolean per DB (0/1) ssl_enabled = int(bool(data.get("ssl_enabled", 0))) + # Normalizzazione (0/1/2) + v = int(data.get("visibility", 0)) + visibility = v if v in (0, 1, 2) else 0 + return { "name": name, "ipv4": ipv4, @@ -62,6 +66,7 @@ def validate_data(data: dict) -> dict: "mac": mac, "note": note, "ssl_enabled": ssl_enabled, + "visibility": visibility, } # ----------------------------- @@ -107,7 +112,7 @@ def add_host(data: dict): conn = get_db() try: cur = conn.execute( - "INSERT INTO hosts (name, ipv4, ipv6, mac, note, ssl_enabled) VALUES (?, ?, ?, ?, ?, ?)", + "INSERT INTO hosts (name, ipv4, ipv6, mac, note, ssl_enabled, visibility) VALUES (?, ?, ?, ?, ?, ?, ?)", ( cleaned["name"], cleaned["ipv4"], @@ -115,6 +120,7 @@ def add_host(data: dict): cleaned["mac"], cleaned["note"], cleaned["ssl_enabled"], + cleaned["visibility"], ) ) conn.commit() @@ -141,7 +147,7 @@ def update_host(host_id: int, data: dict) -> bool: cur = conn.execute( """ UPDATE hosts - SET name=?, ipv4=?, ipv6=?, mac=?, note=?, ssl_enabled=? + SET name=?, ipv4=?, ipv6=?, mac=?, note=?, ssl_enabled=?, visibility=?, last_updated=CURRENT_TIMESTAMP WHERE id=? """, ( @@ -151,6 +157,7 @@ def update_host(host_id: int, data: dict) -> bool: cleaned["mac"], cleaned["note"], cleaned["ssl_enabled"], + cleaned["visibility"], host_id, ) ) @@ -210,7 +217,7 @@ def init_db_hosts_table(cur): mac TEXT, note TEXT, ssl_enabled INTEGER NOT NULL DEFAULT 0, - external_mode INTEGER NOT NULL DEFAULT 0, + visibility INTEGER NOT NULL DEFAULT 0, last_updated TIMESTAMP DEFAULT CURRENT_TIMESTAMP ); """) diff --git a/frontend/aliases.html b/frontend/aliases.html index d30267c..680baae 100644 --- a/frontend/aliases.html +++ b/frontend/aliases.html @@ -155,6 +155,21 @@ + +
+ +
+ + + + + + + + + +
+
diff --git a/frontend/css/layout.css b/frontend/css/layout.css index 3d59efd..a5d730d 100644 --- a/frontend/css/layout.css +++ b/frontend/css/layout.css @@ -214,7 +214,9 @@ body { line-height: 1.1; } -.form-label { +.form-label, +.form-check-label, +.form-check-input { font-size: 0.80rem; /* più piccina */ margin-bottom: 2px; /* Bootstrap usa 8px; lo riduciamo */ } @@ -245,12 +247,6 @@ select.form-select:focus, border-color: #198754; /* verde Bootstrap */ } -.form-check-input:focus { - border-color: var(--accent); - box-shadow: 0 0 0 1px var(--accent); - outline: none; -} - /* ================================ Icons ================================ */ diff --git a/frontend/hosts.html b/frontend/hosts.html index 8d8809d..f1a98fa 100644 --- a/frontend/hosts.html +++ b/frontend/hosts.html @@ -167,6 +167,21 @@ + +
+ +
+ + + + + + + + + +
+
diff --git a/frontend/js/aliases.js b/frontend/js/aliases.js index 72d24d5..a2cd907 100644 --- a/frontend/js/aliases.js +++ b/frontend/js/aliases.js @@ -131,9 +131,9 @@ async function loadAliases() { td.appendChild(icon); // - // external_mode icon + // visibility icon // - const ext = (h.external_mode ?? "").toString(); + const ext = (h.visibility ?? "").toString(); let aria = ""; let iconClass = ""; switch (ext) { @@ -273,6 +273,13 @@ async function editAlias(id) { document.getElementById("aliasTarget").value = data.target ?? ""; document.getElementById("aliasNote").value = data.note ?? ""; document.getElementById("aliasSSL").checked = !!data.ssl_enabled; + if (data.visibility == 0) { + document.getElementById("aliasVisibilityLocal").checked = true; + } else if (data.visibility == 1){ + document.getElementById("aliasVisibilityGlobal").checked = true; + } else { + document.getElementById("aliasVisibilityAlias").checked = true; + } } // ----------------------------- @@ -411,7 +418,10 @@ async function handleAddAliasSubmit(e) { name: document.getElementById('aliasName').value.trim(), target: document.getElementById('aliasTarget').value.trim(), note: document.getElementById('aliasNote').value.trim(), - ssl_enabled: document.getElementById('aliasSSL').checked ? 1 : 0 + ssl_enabled: document.getElementById('aliasSSL').checked ? 1 : 0, + visibility: Number( + document.querySelector('input[name="aliasVisibility"]:checked')?.value ?? 0 + ) }; const ok = await saveAlias(data); diff --git a/frontend/js/hosts.js b/frontend/js/hosts.js index 834822c..e75f742 100644 --- a/frontend/js/hosts.js +++ b/frontend/js/hosts.js @@ -150,9 +150,9 @@ async function loadHosts() { td.appendChild(icon); // - // external_mode icon + // visibility icon // - const ext = (h.external_mode ?? "").toString(); + const ext = (h.visibility ?? "").toString(); let aria = ""; let iconClass = ""; switch (ext) { @@ -294,6 +294,13 @@ async function editHost(id) { document.getElementById("hostMAC").value = data.mac ?? ""; document.getElementById("hostNote").value = data.note ?? ""; document.getElementById("hostSSL").checked = !!data.ssl_enabled; + if (data.visibility == 0) { + document.getElementById("hostVisibilityLocal").checked = true; + } else if (data.visibility == 1){ + document.getElementById("hostVisibilityGlobal").checked = true; + } else { + document.getElementById("hostVisibilityAlias").checked = true; + } } // ----------------------------- @@ -444,7 +451,10 @@ async function handleAddHostSubmit(e) { ipv6: document.getElementById('hostIPv6').value.trim(), mac: document.getElementById('hostMAC').value.trim(), note: document.getElementById('hostNote').value.trim(), - ssl_enabled: document.getElementById('hostSSL').checked ? 1 : 0 + ssl_enabled: document.getElementById('hostSSL').checked ? 1 : 0, + visibility: Number( + document.querySelector('input[name="hostVisibility"]:checked')?.value ?? 0 + ) }; const ok = await saveHost(data);