performance improvements by pre-defining queries
All checks were successful
Deployment / deploy-docker (push) Successful in 17s

This commit is contained in:
Melchior Reimers
2026-01-25 17:11:05 +01:00
parent 9772d81f7d
commit 786fef2e71
4 changed files with 329 additions and 42 deletions

View File

@@ -268,6 +268,10 @@
<option value="1">Today</option>
<option value="7">Last 7 Days</option>
<option value="30">Last 30 Days</option>
<option value="42">Last 42 Days</option>
<option value="69">Last 69 Days</option>
<option value="180">Last 6 Months (180d)</option>
<option value="365">Last Year (365d)</option>
<option value="ytd">Year to Date (YTD)</option>
<option value="year">Full Year 2026</option>
<option value="custom">Custom Range...</option>
@@ -585,18 +589,36 @@
if (y === 'all') {
// Dual axis for breakdown
// Volume Dataset
const volData = labels.map(l => {
const row = data.find(r => r[0] === l && r[1] === name);
return row ? row[3] : 0; // value_volume is index 3
});
datasets.push({
label: `${name} (Vol)`,
data: labels.map(l => {
const row = data.find(r => r[0] === l && r[1] === name);
return row ? row[3] : 0; // value_volume is index 3
}),
data: volData,
backgroundColor: `hsla(${hue}, 75%, 50%, 0.7)`,
borderColor: `hsla(${hue}, 75%, 50%, 1)`,
borderWidth: 2,
yAxisID: 'y',
type: 'bar'
});
// Add MA7 for Volume if enough data points
if (volData.length > 7) {
const ma7 = calculateMA(volData, 7);
datasets.push({
label: `${name} (Vol MA7)`,
data: ma7,
borderColor: `hsla(${hue}, 90%, 80%, 0.8)`,
borderWidth: 1.5,
borderDash: [5, 5],
pointRadius: 0,
yAxisID: 'y',
type: 'line',
tension: 0.4
});
}
// Count Dataset
datasets.push({
label: `${name} (Cnt)`,
@@ -864,6 +886,22 @@
updateUrlParams();
}
function calculateMA(data, period) {
let ma = [];
for (let i = 0; i < data.length; i++) {
if (i < period - 1) {
ma.push(null);
continue;
}
let sum = 0;
for (let j = 0; j < period; j++) {
sum += data[i - j] || 0;
}
ma.push(sum / period);
}
return ma;
}
function fillMetadataTable() {
const tbody = document.getElementById('metadataRows');
tbody.innerHTML = store.metadata.map(r => `