fix(energiediagramm): Visualisierungsthema übernehmen
Tests / test (push) Successful in 1m51s

This commit is contained in:
dh
2026-10-01 15:34:23 +00:00
parent 59eec738ab
commit 82860c0eb9
4 changed files with 41 additions and 7 deletions
+2
View File
@@ -14,6 +14,8 @@ Alle wesentlichen Aenderungen an Enelix Utils werden in dieser Datei dokumentier
### Beta-Aenderungen ### Beta-Aenderungen
- Energiediagramm uebernimmt Kachel- und Textfarbe der Visualisierung; Zeitraum-
und Datumsauswahl bleiben in hellen und dunklen Themen lesbar.
- Dezimale IP-Symcon-Farbwerte werden im Energiediagramm korrekt verarbeitet. - Dezimale IP-Symcon-Farbwerte werden im Energiediagramm korrekt verarbeitet.
- Kachelabstand fuer den Symcon-Kopf und versionsabhaengiger Vollbildmodus. - Kachelabstand fuer den Symcon-Kopf und versionsabhaengiger Vollbildmodus.
- Vollstaendige PHP-, Struktur- und Symcon-Modultests fuer alle Module. - Vollstaendige PHP-, Struktur- und Symcon-Modultests fuer alle Module.
+7 -3
View File
@@ -31,9 +31,13 @@ dezimalen Farbwerte.
## Darstellung ## Darstellung
Der Inhalt beginnt unterhalb des von Symcon eingeblendeten Kachelkopfs, damit Der Inhalt beginnt unterhalb des von Symcon eingeblendeten Kachelkopfs, damit
Zeitraum und Datum vollstaendig bedienbar bleiben. Beim Oeffnen und beim erneuten Zeitraum und Datum vollstaendig bedienbar bleiben. Hintergrund, Text und
Sichtbarwerden wird die Darstellung aktualisiert. Das Diagrammraster wechselt Bedienelemente verwenden die von IP-Symcon bereitgestellten Kachel- und
bei geringer Breite automatisch von zwei Spalten auf eine Spalte. Textfarben. Auch geoeffnete Auswahlfelder sowie native Datumselemente passen sich
automatisch an ein helles oder dunkles Visualisierungsthema an. Beim Oeffnen und
beim erneuten Sichtbarwerden wird die Darstellung aktualisiert. Das
Diagrammraster wechselt bei geringer Breite automatisch von zwei Spalten auf
eine Spalte.
IP-Symcon 8.x unterstuetzt HTML-SDK-Darstellungen nur in der normalen Kachel. IP-Symcon 8.x unterstuetzt HTML-SDK-Darstellungen nur in der normalen Kachel.
Der vom Client angebotene Vergroesserungsdialog kann deshalb leer bleiben. Der vom Client angebotene Vergroesserungsdialog kann deshalb leer bleiben.
+29 -4
View File
@@ -65,6 +65,8 @@
min-width: 0; min-width: 0;
min-height: 100%; min-height: 100%;
margin: 0; margin: 0;
color: var(--content-color, inherit);
background-color: var(--card-color, transparent);
} }
#energy-app { #energy-app {
@@ -74,8 +76,8 @@
padding: 58px 14px 14px; padding: 58px 14px 14px;
overflow: auto; overflow: auto;
font-family: system-ui, -apple-system, "Segoe UI", sans-serif; font-family: system-ui, -apple-system, "Segoe UI", sans-serif;
color: inherit; color: var(--content-color, inherit);
background: transparent; background-color: var(--card-color, transparent);
} }
.toolbar, .toolbar,
@@ -104,11 +106,16 @@
border: 1px solid rgba(127, 127, 127, 0.45); border: 1px solid rgba(127, 127, 127, 0.45);
border-radius: 6px; border-radius: 6px;
padding: 7px 10px; padding: 7px 10px;
color: inherit; color: var(--content-color, inherit);
background: rgba(127, 127, 127, 0.08); background-color: var(--card-color, transparent);
font: inherit; font: inherit;
} }
select option {
color: var(--content-color, CanvasText);
background-color: var(--card-color, Canvas);
}
button { button {
cursor: pointer; cursor: pointer;
font-weight: 650; font-weight: 650;
@@ -277,6 +284,23 @@
const selfConsumptionChart = document.getElementById('self-consumption-chart'); const selfConsumptionChart = document.getElementById('self-consumption-chart');
const autarkyChart = document.getElementById('autarky-chart'); const autarkyChart = document.getElementById('autarky-chart');
function syncColorScheme() {
const cardColor = getComputedStyle(document.documentElement)
.getPropertyValue('--card-color')
.trim();
const match = cardColor.match(/^#?([0-9a-f]{6})$/i);
if (!match) {
return;
}
const value = Number.parseInt(match[1], 16);
const red = (value >> 16) & 255;
const green = (value >> 8) & 255;
const blue = value & 255;
const luminance = ((0.2126 * red) + (0.7152 * green) + (0.0722 * blue)) / 255;
document.documentElement.style.colorScheme = luminance < 0.5 ? 'dark' : 'light';
}
function send(action, value) { function send(action, value) {
if (typeof requestAction !== 'function') { if (typeof requestAction !== 'function') {
return; return;
@@ -372,6 +396,7 @@
return; return;
} }
syncColorScheme();
range.value = data.range || 'day'; range.value = data.range || 'day';
date.value = data.date || ''; date.value = data.date || '';
customStart.value = data.customStart || ''; customStart.value = data.customStart || '';
@@ -51,6 +51,9 @@ final class EnergiediagrammModulstrukturTest extends TestCase
self::assertStringContainsString('grid-template-columns: minmax(0, 1fr)', $html); self::assertStringContainsString('grid-template-columns: minmax(0, 1fr)', $html);
self::assertStringContainsString('padding: 58px 14px 14px', $html); self::assertStringContainsString('padding: 58px 14px 14px', $html);
self::assertStringContainsString('padding: 58px 10px 10px', $html); self::assertStringContainsString('padding: 58px 10px 10px', $html);
self::assertStringContainsString('background-color: var(--card-color, transparent)', $html);
self::assertStringContainsString('color: var(--content-color, CanvasText)', $html);
self::assertStringContainsString('function syncColorScheme()', $html);
self::assertStringContainsString('SetCustomRange', $html); self::assertStringContainsString('SetCustomRange', $html);
self::assertStringNotContainsString("addEventListener('load'", $html); self::assertStringNotContainsString("addEventListener('load'", $html);
} }