performance improvements by pre-defining queries
All checks were successful
Deployment / deploy-docker (push) Successful in 17s
All checks were successful
Deployment / deploy-docker (push) Successful in 17s
This commit is contained in:
@@ -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 => `
|
||||
|
||||
Reference in New Issue
Block a user