Sammelstand der offenen Arbeit im Dashboard. Einstellungen: eine Eingabemaske fuer die Energiepreise unter restricted/settings.php, dazu costs.php als Modell und ajax/settings.php als Endpunkt. Die Preise stehen jetzt in gridCosts, gasCosts und fuelCosts statt fest im Quelltext von getStats.php; die Jahresstatistik rechnet ueber LEAD() den jeweils gueltigen Zeitraum aus und schlaegt den anteiligen Grundpreis auf. Eingegeben wird in gewohnten Einheiten - l/100 km, kWh/100 km, Euro je Liter -, umgerechnet wird beim Speichern. solarLog_costs.sql beschreibt die Umstellung der Tabellen. Skoda: eigene Seite mit Live-Werten ueber MQTT und Historie ueber ajax/skoda.php, Kommandos ueber ajax/skodaCmd.php. Karte: Leaflet mit einem eigenen Kachel-Zwischenspeicher (ajax/tile.php), dessen Ablage unter tiles/ nicht ins Repository gehoert. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
80 lines
2.8 KiB
PHP
80 lines
2.8 KiB
PHP
<!--begin::Footer-->
|
|
<footer class="app-footer">
|
|
<!--begin::To the end-->
|
|
<div class="float-end d-none d-sm-inline">Free simple code</div>
|
|
<!--end::To the end-->
|
|
<!--begin::Copyright-->
|
|
<strong>
|
|
No © 2025 by
|
|
<a href="https://el-wa.org" class="text-decoration-none">m0</a>
|
|
</strong>
|
|
All rights don't care.
|
|
<!--end::Copyright-->
|
|
</footer>
|
|
<!--end::Footer-->
|
|
<div class="modal fade" id="modalEV" data-bs-backdrop="static" data-bs-keyboard="false" tabindex="-1">
|
|
<div class="modal-dialog modal-dialog-centered">
|
|
<div class="modal-content">
|
|
<div class="modal-header">
|
|
<h4 class="modal-title" id="modal-title">Charger settings:</h4>
|
|
<div class="card-tools" style="position: absolute; right: 10px;">
|
|
<button type="button" class="btn btn-tool" data-bs-dismiss="modal">
|
|
<i class="bi bi-x-lg"></i>
|
|
</button>
|
|
</div>
|
|
</div>
|
|
<div class="modal-body p-0 m-0 shadow" id="modal-body">
|
|
Loading...
|
|
</div>
|
|
<div class="modal-footer justify-content-between">
|
|
<button type="button" class="btn btn-default" data-bs-dismiss="modal">Close</button>
|
|
<button type="button" id="modalSaveBtn" class="btn btn-primary">Save changes</button>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="offcanvas offcanvas-top" tabindex="-1" id="offcanvas" data-bs-backdrop="static">
|
|
<div class="offcanvas-header">
|
|
<h5 class="offcanvas-title" id="offcanvas-title">Offcanvas with backdrop</h5>
|
|
<button type="button" class="btn-close text-reset" data-bs-dismiss="offcanvas" aria-label="Close"></button>
|
|
</div>
|
|
<div class="offcanvas-body" id="offcanvas-body">
|
|
<p>.....</p>
|
|
</div>
|
|
</div>
|
|
|
|
</div>
|
|
<!--end::App Wrapper-->
|
|
|
|
<!--begin::Script-->
|
|
<script src="js/popper.min.js" crossorigin="anonymous"></script>
|
|
<script src="js/bootstrap.min.js" crossorigin="anonymous"></script>
|
|
<script src="js/adminlte.min.js"></script>
|
|
<script src="js/modal-dynamic.min.js"></script>
|
|
<?php if ($page["mqtt"]): ?>
|
|
<!-- MQTT.js 5.14.1, dist/mqtt.min.js aus dem npm-Paket (368 KB statt 859 KB unminifiziert) -->
|
|
<script src="js/mqtt.min.js"></script>
|
|
<?php endif; ?>
|
|
<?php if ($page["meteogram"]): ?>
|
|
<script src="js/meteogram.js"></script>
|
|
<?php endif; ?>
|
|
<?php if ($page["charts"]): ?>
|
|
<?php include __DIR__ . "/charts.html"; ?>
|
|
<?php endif; ?>
|
|
<?php if ($page["leaflet"]): ?>
|
|
<!-- Leaflet 1.9.4, BSD 2-Clause. Liegt wie alle anderen Bibliotheken lokal;
|
|
die Kacheln kommen ueber ajax/tile.php aus dem eigenen Zwischenspeicher. -->
|
|
<script src="js/leaflet.js"></script>
|
|
<?php endif; ?>
|
|
<script src="js/solar/common.js?v=<?= filemtime("js/solar/common.js") ?>"></script>
|
|
<?php foreach ($page["scripts"] as $script): ?>
|
|
<script src="<?= $script ?>?v=<?= filemtime($script) ?>"></script>
|
|
<?php endforeach; ?>
|
|
<!--end::Script-->
|
|
|
|
</body>
|
|
<!--end::Body-->
|
|
|
|
</html>
|