Skip to content

Commit b033560

Browse files
author
jacquesbach
committed
Richtige Lade-Reihenfolge
1 parent baa5ec8 commit b033560

2 files changed

Lines changed: 53 additions & 39 deletions

File tree

static/js/layout.js

Lines changed: 52 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -62,40 +62,73 @@ async function saveLayout() {
6262
// 4. Layout beim Starten laden
6363
async function loadLayout() {
6464
let savedLayout = null;
65-
6665
try {
67-
// Wir versuchen es direkt beim API-Endpunkt
6866
const response = await fetch('/api/layout');
6967
if (response.ok) {
7068
const data = await response.json();
71-
if (data && data.layout) {
72-
savedLayout = data.layout;
73-
console.log("Layout aus DB geladen");
74-
}
69+
if (data && data.layout) savedLayout = data.layout;
7570
}
76-
} catch (error) {
77-
console.warn("API Layout nicht verfügbar, versuche LocalStorage...");
78-
}
71+
} catch (e) { console.error("DB Load failed", e); }
7972

80-
// Wenn DB nicht ging oder leer war, schau im LocalStorage nach
8173
if (!savedLayout) {
8274
const localData = localStorage.getItem('balkonkraftwerk_layout');
83-
if (localData) {
84-
savedLayout = JSON.parse(localData);
85-
console.log("Layout aus LocalStorage geladen");
86-
}
75+
if (localData) savedLayout = JSON.parse(localData);
8776
}
8877

8978
if (savedLayout && dashboardGrid) {
79+
dashboardGrid.removeAll();
9080
dashboardGrid.load(savedLayout);
81+
console.log("Layout sauber neu geladen.");
9182
}
9283
}
9384

94-
// Beim Laden der Seite ausführen (füge das zu deinen anderen Init-Funktionen hinzu)
9585
document.addEventListener("DOMContentLoaded", async () => {
86+
// --- PHASE 1: Das Gerüst aufbauen ---
9687
initGridstack();
97-
await loadLayout();
98-
99-
// Nach dem Laden des Layouts kann es helfen, Chart.js einen Resize-Befehl zu geben
100-
window.dispatchEvent(new Event('resize'));
88+
await loadLayout(); // Wartet, bis Boxen aus DB oder LocalStorage da sind
89+
90+
// --- PHASE 2: Startwerte für Datumsfelder setzen ---
91+
const t = new Date().toISOString().split('T')[0];
92+
const startInput = document.getElementById('start');
93+
const endInput = document.getElementById('end');
94+
95+
if (startInput && endInput) {
96+
startInput.value = t;
97+
endInput.value = t;
98+
startInput.addEventListener('change', updateQuickButtonsActiveState);
99+
endInput.addEventListener('change', updateQuickButtonsActiveState);
100+
}
101+
102+
// --- PHASE 3: Daten in die Boxen pumpen ---
103+
// Wir prüfen bei jeder Funktion, ob sie existiert, um Fehler zu vermeiden
104+
try {
105+
if (typeof fetchData === "function") await fetchData();
106+
if (typeof updateWeather === "function") updateWeather();
107+
if (typeof updateLive === "function") updateLive();
108+
if (typeof updatePeaks === "function") updatePeaks();
109+
if (typeof updateQuickButtonsActiveState === "function") updateQuickButtonsActiveState();
110+
111+
// ML-Funktionen
112+
if (typeof loadForecast === "function") loadForecast();
113+
if (typeof loadGlobalShap === "function") loadGlobalShap();
114+
if (typeof loadFeatureImportance === "function") loadFeatureImportance();
115+
116+
// Heatmaps
117+
if (typeof initHeatmapYears === "function") initHeatmapYears();
118+
if (typeof initHourlyHeatmap === "function") initHourlyHeatmap();
119+
120+
} catch (err) {
121+
console.error("Fehler beim initialen Daten-Load:", err);
122+
}
123+
124+
// --- PHASE 4: Intervalle für Updates starten ---
125+
setInterval(() => { if (typeof updateLive === "function") updateLive(); }, 5000);
126+
setInterval(() => { if (typeof fetchData === "function") fetchData(); }, 60000);
127+
setInterval(() => { if (typeof updatePeaks === "function") updatePeaks(); }, 60000);
128+
setInterval(() => { if (typeof checkLoadingStatus === "function") checkLoadingStatus(); }, 500);
129+
130+
// WICHTIG: Einmal kräftig schütteln, damit Charts ihre Größe im neuen Grid finden
131+
setTimeout(() => {
132+
window.dispatchEvent(new Event('resize'));
133+
}, 200);
101134
});

static/js/script.js

Lines changed: 1 addition & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1396,23 +1396,4 @@ function showShapDetails(point) {
13961396
}
13971397

13981398
document.getElementById("seasonInterpretation").innerText = text;
1399-
}
1400-
1401-
1402-
const t = new Date().toISOString().split('T')[0];
1403-
document.getElementById('start').value = t;
1404-
document.getElementById('end').value = t;
1405-
document.getElementById('start').addEventListener('change', updateQuickButtonsActiveState);
1406-
document.getElementById('end').addEventListener('change', updateQuickButtonsActiveState);
1407-
fetchData();
1408-
updateWeather();
1409-
updateLive();
1410-
updatePeaks();
1411-
updateQuickButtonsActiveState();
1412-
loadForecast();
1413-
loadGlobalShap();
1414-
loadFeatureImportance();
1415-
setInterval(updateLive, 5000);
1416-
setInterval(fetchData, 60000);
1417-
setInterval(updatePeaks, 60000);
1418-
setInterval(checkLoadingStatus, 500);
1399+
}

0 commit comments

Comments
 (0)