diff --git a/dashboard/public/index.html b/dashboard/public/index.html
index 1d71ca6..d18a719 100644
--- a/dashboard/public/index.html
+++ b/dashboard/public/index.html
@@ -203,14 +203,24 @@
updateUrlParams();
}
- async function loadStatistics() {
+ async function loadStatistics(forceReload = false) {
const days = parseInt(document.getElementById('statisticsPeriod')?.value || '7');
- // Lade die Graphen (ohne fetchData aufzurufen, um Zucken zu vermeiden)
- await Promise.all([
- loadMovingAverage(days),
- loadVolumeChanges(days),
- loadStockTrends(days)
- ]);
+
+ // Beim ersten Laden oder bei expliziter Anforderung: Daten laden
+ if (forceReload || !store.trades || store.trades.length === 0) {
+ await fetchData(true); // skipCharts = true, damit Graphen nicht doppelt geladen werden
+ }
+
+ // Lade die Graphen
+ try {
+ await Promise.all([
+ loadMovingAverage(days),
+ loadVolumeChanges(days),
+ loadStockTrends(days)
+ ]);
+ } catch (err) {
+ console.error('Error loading statistics:', err);
+ }
updateUrlParams();
}
@@ -225,7 +235,12 @@
return;
}
- const ctx = document.getElementById('movingAverageChart').getContext('2d');
+ const canvas = document.getElementById('movingAverageChart');
+ if (!canvas) {
+ console.error('Canvas element movingAverageChart not found');
+ return;
+ }
+ const ctx = canvas.getContext('2d');
if (charts.movingAverage) charts.movingAverage.destroy();
const dateIdx = columns.findIndex(c => c.name === 'date' || c.name === 'timestamp');
@@ -340,7 +355,12 @@
return;
}
- const ctx = document.getElementById('volumeChangesChart').getContext('2d');
+ const canvas = document.getElementById('volumeChangesChart');
+ if (!canvas) {
+ console.error('Canvas element volumeChangesChart not found');
+ return;
+ }
+ const ctx = canvas.getContext('2d');
if (charts.volumeChanges) charts.volumeChanges.destroy();
const exchangeIdx = columns.findIndex(c => c.name === 'exchange');
@@ -425,7 +445,12 @@
return;
}
- const ctx = document.getElementById('stockTrendsChart').getContext('2d');
+ const canvas = document.getElementById('stockTrendsChart');
+ if (!canvas) {
+ console.error('Canvas element stockTrendsChart not found');
+ return;
+ }
+ const ctx = canvas.getContext('2d');
const tableContainer = document.getElementById('stockTrendsTable');
if (charts.stockTrends) charts.stockTrends.destroy();
@@ -747,7 +772,8 @@
fetchData(true); // skipCharts = true
}, 30000);
- setTimeout(() => loadStatistics(), 1000);
+ // Lade Statistiken nach kurzer Verzögerung (forceReload = true beim ersten Laden)
+ setTimeout(() => loadStatistics(true), 1000);
};