Zugangsdaten-Entitaet, Gruppen-Tabelle mit Aufklappansicht, Vor-/Nachname, Dashboard-Sektionen
- Zugangsdaten (SSH-Logins) als eigenstaendige, wiederverwendbare Entitaet statt direkt am Switch; inline Neuanlage beim Switch-Erstellen moeglich; automatische Migration bestehender Switch-Logins - Gruppen-Seite als Tabelle mit Aufklapp-Zeile fuer Rechte (Akkordeon), Admin als feste Systemzeile (Mitgliederverwaltung ueber is_admin), Standardgruppe 'Benutzer' mit allen Ansichtsrechten (devices.view, switches.view), automatische Zuordnung neuer/verwaister Benutzer - Users-Seite: Icon-Buttons statt Text, Bearbeiten+Passwortaenderung in einem Modal zusammengefuehrt, Gruppe/Admin-Zuweisung ueber eigenen Zuweisen-Button (wie Switch-Zuordnung bei Devices), Vor-/Nachname - Dashboard: einheitliche Kachelansicht mit/ohne Login, drei sortierte Abschnitte (Offline/Online/Deaktiviert), Kachel-Suchfilter, Bootstrap- artiges Grid (max. 6 Spalten), Aktivieren-Option im Popup fuer deaktivierte Geraete, Countdown serverseitig korrekt geseedet - Sidebar dauerhaft einklappbar (Desktop, persistent via localStorage) - Devices-Tabelle: Aktions-Buttons nebeneinander statt untereinander Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
@@ -39,9 +39,14 @@
|
||||
function initSidebar() {
|
||||
const sidebar = document.querySelector(".sidebar");
|
||||
const backdrop = document.querySelector(".sidebar-backdrop");
|
||||
const main = document.querySelector(".main");
|
||||
const toggles = document.querySelectorAll("[data-sidebar-toggle]");
|
||||
if (!sidebar) return;
|
||||
|
||||
const DESKTOP_BREAKPOINT = 900;
|
||||
const COLLAPSE_KEY = "poe-sidebar-collapsed";
|
||||
|
||||
// Mobile: temporäres Überlagern per Hamburger + Backdrop.
|
||||
function open() {
|
||||
sidebar.classList.add("open");
|
||||
backdrop && backdrop.classList.add("open");
|
||||
@@ -50,8 +55,22 @@
|
||||
sidebar.classList.remove("open");
|
||||
backdrop && backdrop.classList.remove("open");
|
||||
}
|
||||
|
||||
// Desktop: dauerhaftes Ein-/Ausklappen, über Neuladen hinweg gemerkt.
|
||||
function setCollapsed(collapsed) {
|
||||
sidebar.classList.toggle("collapsed", collapsed);
|
||||
main && main.classList.toggle("sidebar-collapsed", collapsed);
|
||||
localStorage.setItem(COLLAPSE_KEY, collapsed ? "1" : "0");
|
||||
}
|
||||
|
||||
if (localStorage.getItem(COLLAPSE_KEY) === "1") setCollapsed(true);
|
||||
|
||||
toggles.forEach((btn) => btn.addEventListener("click", () => {
|
||||
sidebar.classList.contains("open") ? close() : open();
|
||||
if (window.innerWidth <= DESKTOP_BREAKPOINT) {
|
||||
sidebar.classList.contains("open") ? close() : open();
|
||||
} else {
|
||||
setCollapsed(!sidebar.classList.contains("collapsed"));
|
||||
}
|
||||
}));
|
||||
backdrop && backdrop.addEventListener("click", close);
|
||||
document.querySelectorAll(".nav-item").forEach((a) => a.addEventListener("click", close));
|
||||
|
||||
Reference in New Issue
Block a user