Files
adminandClaude Opus 5 2e66bdeff5 Anzeige fuer den Pi ist jetzt die Solar-Seite im Anzeige-Modus
Statt einer eigenen Vorlage mit nachgebauter Verdrahtung: ?action=anzeige
ist der Eintrag solar mit "anzeige" => true. header.php laesst Kopfleiste
und Menue weg und setzt die schmale Leiste (neu: Diagramme), footer.php
den Fuss; die Realtime-Karte fuellt einen Bildschirm, Diagramme folgen
darunter. Damit gehen am Display auch die Bedienfenster (Heizstab,
Wallboxen, Bewaesserung) und die Diagramme - alles aus solarMQTT.js.

anzeige.js bleibt fuer Leerlauf, Verbindungspunkt, Uhr und Neuladen;
restricted/anzeige.php, "eigen" in index.php und klickFilter entfallen.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-15 20:22:35 +02:00

242 lines
12 KiB
PHP

<!doctype html>
<html lang="en">
<!--begin::Head-->
<?php
// Die Raumtabelle traegt die Etagen - das Menue baut daraus seine Punkte.
// Hier und nicht erst in home.php: der Kopf wird zuerst eingebunden.
require_once(__DIR__ . "/rooms.php");
// $_GET["action"] ist von index.php bereits auf eine gueltige Seite gesetzt.
if (!isset($_GET["floor"]))
$_GET["floor"] = standardEtage();
?>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Smarthome control</title>
<!--begin::Accessibility Meta Tags-->
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes" />
<meta name="color-scheme" content="light dark" />
<meta name="theme-color" content="#007bff" media="(prefers-color-scheme: light)" />
<meta name="theme-color" content="#1a1a1a" media="(prefers-color-scheme: dark)" />
<link rel="icon" type="image/png" href="assets/img/favicon.png">
<!--end::Accessibility Meta Tags-->
<!--begin::Primary Meta Tags-->
<meta name="title" content="Smarthome control" />
<meta name="author" content="ColorlibHQ" />
<meta name="description" content="Smarthome control panel by m0." />
<meta name="keywords" content="smarthome dashboard, admin panel" />
<!--end::Primary Meta Tags-->
<!--begin::Accessibility Features-->
<!-- Skip links will be dynamically added by accessibility.js -->
<meta name="supported-color-schemes" content="light dark" />
<link rel="preload" href="./css/adminlte.min.css?v=2" as="style" />
<link rel="stylesheet" href="./css/solar.css?v=<?= filemtime("css/solar.css") ?>" />
<!--end::Accessibility Features-->
<!--begin::Fonts-->
<link rel="stylesheet" href="assets/fonts/font_poppins.css" media="print" onload="this.media='all'" />
<!--end::Fonts-->
<!--begin::Third Party Plugin(Bootstrap Icons)-->
<link rel="stylesheet" href="css/bootstrap-icons.min.css" />
<!--end::Third Party Plugin(Bootstrap Icons)-->
<!--begin::Required Plugin(AdminLTE)-->
<link rel="stylesheet" href="./css/adminlte.min.css?v=2" />
<!--end::Required Plugin(AdminLTE)-->
<!--begin::Karte (Leaflet) - nur auf Seiten mit Karte-->
<?php if ($page["leaflet"]): ?>
<link rel="stylesheet" href="css/leaflet.css" />
<?php endif; ?>
<!--end::Karte-->
</head>
<!--end::Head-->
<!--begin::Body-->
<?php
// Anzeige-Modus (?action=anzeige, siehe index.php): dieselbe Seite fuer ein
// festes Display, ohne Kopfleiste und Menue, dafuer mit schmaler Leiste.
// ?animation=1 schaltet alle Animationen ein, ?maus=1 den Mauszeiger.
$anzeige = !empty($page["anzeige"]);
$koerperKlassen = "layout-fixed sidebar-expand-lg bg-body-tertiary";
if ($anzeige) {
$koerperKlassen .= " anzeige" . (empty($_GET["animation"]) ? " anzeige-ruhig" : "")
. (empty($_GET["maus"]) ? " anzeige-ohne-maus" : "");
}
?>
<body class="<?= $koerperKlassen ?>" data-bs-theme="dark">
<?php if ($anzeige): ?>
<!-- Leiste der Anzeige; verdrahtet in js/solar/anzeige.js -->
<nav class="anzeige-leiste" aria-label="Ansicht">
<button type="button" data-anzeige="fluss" aria-pressed="true" title="Übersicht"><i class="bi bi-diagram-3"></i></button>
<button type="button" data-anzeige="anlage" aria-pressed="false" title="Anlage"><i class="bi bi-grid-3x2-gap"></i></button>
<button type="button" data-anzeige="speicher" aria-pressed="false" title="Speicher"><i class="bi bi-battery-half"></i></button>
<button type="button" data-anzeige="diagramme" aria-pressed="false" title="Diagramme"><i class="bi bi-graph-up"></i></button>
<div class="anzeige-fuss">
<span class="anzeige-punkt" id="anzeigeVerbindung" title="Verbindung wird aufgebaut"></span>
<span class="anzeige-uhr" id="anzeigeUhr"></span>
</div>
</nav>
<?php endif; ?>
<!--begin::App Wrapper-->
<div class="app-wrapper">
<?php if (!$anzeige): ?>
<!--begin::Header-->
<nav class="app-header navbar navbar-expand bg-body">
<!--begin::Container-->
<div class="container-fluid">
<!--begin::Start Navbar Links-->
<ul class="navbar-nav">
<li class="nav-item">
<a class="nav-link" data-lte-toggle="sidebar" href="#" role="button">
<i class="bi bi-list"></i>
</a>
</li>
</ul>
<!--end::Start Navbar Links-->
<!--begin::End Navbar Links-->
<ul class="navbar-nav ms-auto">
<!--begin::Fullscreen Toggle-->
<li class="nav-item">
<a class="nav-link" href="#" data-lte-toggle="fullscreen">
<i data-lte-icon="maximize" class="bi bi-arrows-fullscreen"></i>
<i data-lte-icon="minimize" class="bi bi-fullscreen-exit" style="display: none"></i>
</a>
</li>
<?php
if ($_SESSION["local"] == true)
echo "<li class='nav-item'><a class='nav-link' href='addUser.php'><i data-lte-icon='Add user' class='bi bi-person-add'></i></a></li>";
?>
<!--end::Fullscreen Toggle-->
</ul>
<!--end::End Navbar Links-->
</div>
<!--end::Container-->
</nav>
<!--end::Header-->
<!--begin::Sidebar-->
<aside class="app-sidebar bg-body-secondary shadow">
<!--begin::Sidebar Brand-->
<div class="sidebar-brand">
<!--begin::Brand Link-->
<a href="./index.php" class="brand-link">
<!--begin::Brand Image-->
<img src="./assets/img/AdminLTELogo.png" alt="Logo"
class="brand-image opacity-75 shadow" />
<!--end::Brand Image-->
<!--begin::Brand Text-->
<span class="brand-text fw-light">Smart controller</span>
<!--end::Brand Text-->
</a>
<!--end::Brand Link-->
</div>
<!--end::Sidebar Brand-->
<!--begin::Sidebar Wrapper-->
<div class="sidebar-wrapper">
<nav class="mt-2">
<!--begin::Sidebar Menu-->
<ul class="nav sidebar-menu flex-column" data-lte-toggle="treeview" role="navigation"
aria-label="Main navigation" data-accordion="false" id="navigation">
<li class="nav-item menu-open">
<a href="#" class="nav-link active">
<i class="nav-icon bi bi-speedometer"></i>
<p>
Dashboards
<i class="nav-arrow bi bi-chevron-right"></i>
</p>
</a>
<ul class="nav nav-treeview ps-4">
<li class="nav-item">
<a href="?action=solar" class="nav-link<?php if($_GET["action"]=="solar"){echo " active";} ?>">
<i class="nav-icon bi bi-brightness-alt-high"></i>
<p>Solar</p>
</a>
</li>
<li class="nav-item">
<a href="?action=heat" class="nav-link <?php if($_GET["action"]=="heat"){echo " active";} ?>">
<i class="nav-icon bi bi-fire"></i>
<p>Heizung</p>
</a>
</li>
<li class="nav-item">
<a href="?action=history" class="nav-link <?php if($_GET["action"]=="history"){echo " active";} ?>">
<i class="nav-icon bi bi-graph-up"></i>
<p>Historie</p>
</a>
</li>
<li class="nav-item">
<a href="?action=weather" class="nav-link <?php if($_GET["action"]=="weather"){echo " active";} ?>">
<i class="nav-icon bi bi-cloud-sun"></i>
<p>Wetter</p>
</a>
</li>
<li class="nav-item">
<a href="?action=skoda" class="nav-link <?php if($_GET["action"]=="skoda"){echo " active";} ?>">
<i class="nav-icon bi bi-ev-front"></i>
<p>Škoda</p>
</a>
</li>
</ul>
</li>
<li class="nav-item menu-open">
<a href="#" class="nav-link active">
<i class="nav-icon bi bi-house"></i>
<p>
Home
<i class="nav-arrow bi bi-chevron-right"></i>
</p>
</a>
<!-- Nur Etagen mit Grundriss: ein Menuepunkt auf das
Aussengelaende fuehrte auf eine leere Zeichenflaeche.
Bekommt dessen erster Raum eine Kachel, steht es hier
von selbst. -->
<ul class="nav nav-treeview ps-4">
<?php foreach (floorsWithPlan() as $etage): ?>
<li class="nav-item">
<a href="?action=home&floor=<?= $etage ?>" title="<?= htmlspecialchars(floorLabel($etage)) ?>"
class="nav-link <?php if($_GET["action"]=="home" && $_GET["floor"] == $etage){echo " active";} ?>">
<p> <?= $etage ?></p>
</a>
</li>
<?php endforeach; ?>
</ul>
</li>
<!-- Einstellungen stehen fuer sich: kein Dashboard,
sondern die Parameter dahinter. Genauso die
Protokolle - sie zeigen nicht das Haus, sondern
die Prozesse, die es steuern. -->
<li class="nav-item">
<a href="?action=settings" class="nav-link<?php if($_GET["action"]=="settings"){echo " active";} ?>">
<i class="nav-icon bi bi-gear"></i>
<p>Einstellungen</p>
</a>
</li>
<li class="nav-item">
<a href="?action=logs" class="nav-link<?php if($_GET["action"]=="logs"){echo " active";} ?>">
<i class="nav-icon bi bi-journal-text"></i>
<p>Protokolle</p>
</a>
</li>
<!-- Die Einführung für Einsteiger - Folien zum
Durchklicken, restricted/einfuehrung.php. -->
<li class="nav-item">
<a href="?action=einfuehrung" class="nav-link<?php if($_GET["action"]=="einfuehrung"){echo " active";} ?>">
<i class="nav-icon bi bi-mortarboard"></i>
<p>Einführung</p>
</a>
</li>
</ul>
<!--end::Sidebar Menu-->
</nav>
</div>
<!--end::Sidebar Wrapper-->
</aside>
<!--end::Sidebar-->
<?php endif; ?>