diff --git a/Energy_Pie/module.html b/Energy_Pie/module.html
index fbae9c1..09c4d11 100644
--- a/Energy_Pie/module.html
+++ b/Energy_Pie/module.html
@@ -33,13 +33,6 @@
gap:14px;">
-
-
-
@@ -116,69 +109,59 @@
return Math.ceil((((d-s)/86400000)+1)/7)+" "+y;
}
-function render(data) {
- if (!data) return;
+function render(data){
+ if(!data) return;
- // UI-Status
elRange.value = data.range || 'day';
elDate.value = data.date || '';
+
elDate.disabled = (data.range === 'total');
// Zeitraum-Anzeige
if (data.range === 'total') {
+ // ✅ Wunsch: bei Gesamt nix anzeigen
elPeriod.textContent = '';
} else if (data.tStart && data.tEnd) {
const s = new Date(data.tStart * 1000);
const e = new Date(data.tEnd * 1000 - 1000);
- const pad = n => String(n).padStart(2, '0');
- const fmt = d => `${pad(d.getDate())}.${pad(d.getMonth() + 1)}.${d.getFullYear()}`;
-
- if (data.range === 'day') {
+ if (data.range === 'day')
elPeriod.textContent = `Zeitraum: ${fmt(s)}`;
- } else if (data.range === 'week') {
- elPeriod.textContent = `Zeitraum: ${fmt(s)} – ${fmt(e)}`;
- } else if (data.range === 'month') {
- elPeriod.textContent = `Zeitraum: ${fmt(s)} – ${fmt(e)}`;
- } else if (data.range === 'year') {
- elPeriod.textContent = `Zeitraum: ${fmt(s)} – ${fmt(e)}`;
- }
+ else if (data.range === 'week')
+ elPeriod.textContent = `Zeitraum: Woche ${isoWeek(s)}`;
+ else if (data.range === 'month')
+ elPeriod.textContent = `Zeitraum: ${monthName(s.getMonth())} ${s.getFullYear()}`;
+ else if (data.range === 'year')
+ elPeriod.textContent = `Zeitraum: ${s.getFullYear()}`;
+ else
+ elPeriod.textContent = ''; // fallback: lieber leer als falsch
+ } else {
+ elPeriod.textContent = '';
}
- // Keine Daten vorhanden
- if (data.hasData === false) {
- elHint.innerHTML = `
- Letzter Zeitpunkt
- (Keine Werte für diesen Zeitraum)
- `;
+ // Keine Daten
+ if(data.hasData === false){
+ elHint.innerHTML = `Letzter Zeitpunkt (Keine Werte für diesen Zeitraum)`;
elGrid.innerHTML = '';
- elExplain.innerHTML = '';
return;
}
// Werte
const v = data.values || {};
- const prod = v.Produktion || 0;
- const cons = v.Hausverbrauch || 0;
- const grid = v.Netz || 0;
- const eigen = Math.max(cons - grid, 0);
-
elHint.innerHTML = `
- Produktion: ${prod.toFixed(2)} kWh
- Verbrauch: ${cons.toFixed(2)} kWh
- Netzbezug: ${grid.toFixed(2)} kWh
+ Produktion: ${v.Produktion?.toFixed(2) || 0} kWh
+ Verbrauch: ${v.Hausverbrauch?.toFixed(2) || 0} kWh
+ Netzbezug: ${v.Netz?.toFixed(2) || 0} kWh
`;
- // Donut-Renderer
- const donut = (title, percent, color) => {
+ const donut = (t, p, c) => {
const r = 56;
const C = 2 * Math.PI * r;
- const p = Math.max(0, Math.min(100, percent));
- const dash = (p / 100) * C;
+ const dash = (Math.max(0, Math.min(100, p)) / 100) * C;
return `
-
${title}
+
${t}
- ${p.toFixed(1)}%
+ ${Number(p).toFixed(1)}%
`;
};
- // Donuts einsetzen
+ const prod = v.Produktion || 0;
+ const cons = v.Hausverbrauch || 0;
+ const grid = v.Netz || 0;
+ const eigen = Math.max(cons - grid, 0);
+
elGrid.innerHTML =
donut('Eigenverbrauchsquote', prod ? (eigen / prod * 100) : 0, '#63B3FF') +
donut('Autarkiegrad', cons ? (eigen / cons * 100) : 0, '#A855F7');
-
- // Erklärtexte unter den Kreisen
- elExplain.innerHTML = `
-
- Eigenverbrauchsquote:
- Anteil des selbst erzeugten Stroms, der direkt im eigenen Haushalt verbraucht wird.
-
-
- Autarkiegrad:
- Anteil des gesamten Stromverbrauchs, der durch eigene Stromerzeugung gedeckt wird.
-
- `;
}
-document.getElementById('explain').innerHTML = `
-
- Eigenverbrauchsquote:
- Anteil des selbst erzeugten Stroms, der direkt im eigenen Haushalt verbraucht wird.
-
-
- Autarkiegrad:
- Anteil des gesamten Stromverbrauchs, der durch eigene Stromerzeugung gedeckt wird.
-
-`;
-
window.handleMessage = d=>{
try{if(typeof d==='string')d=JSON.parse(d)}catch{}
render(d);