Feat: Improve aggregate using sliding window

pull/4264/head
Nelson Chan 5 months ago
parent 25ebfdedbe
commit 05641d2e1e
No known key found for this signature in database

@ -213,7 +213,7 @@ export default {
let colorData = []; // Color Data for Bar Chart let colorData = []; // Color Data for Bar Chart
const period = parseInt(this.chartPeriodHrs); const period = parseInt(this.chartPeriodHrs);
let aggregatePoints = period > 6 ? 10 : 5; let aggregatePoints = period > 6 ? 12 : 4;
let aggregateBuffer = []; let aggregateBuffer = [];
@ -224,24 +224,25 @@ export default {
continue; continue;
} }
if (datapoint.down > 0) { if (datapoint.up > 0) {
// Clear the aggregate buffer // Aggregate Up data using a sliding window
if (aggregateBuffer.length > 0) { aggregateBuffer.push(datapoint);
if (aggregateBuffer.length === aggregatePoints) {
const average = this.getAverage(aggregateBuffer); const average = this.getAverage(aggregateBuffer);
this.pushDatapoint(average, avgPingData, minPingData, maxPingData, downData, colorData); this.pushDatapoint(average, avgPingData, minPingData, maxPingData, downData, colorData);
aggregateBuffer = []; aggregateBuffer = aggregateBuffer.slice(Math.floor(aggregatePoints / 2));
} }
this.pushDatapoint(datapoint, avgPingData, minPingData, maxPingData, downData, colorData);
} else { } else {
// Only aggregate up datapoints // datapoint is fully down, no need to aggregate
aggregateBuffer.push(datapoint); // Clear the aggregate buffer
if (aggregateBuffer.length > 0) {
if (aggregateBuffer.length === aggregatePoints) {
const average = this.getAverage(aggregateBuffer); const average = this.getAverage(aggregateBuffer);
this.pushDatapoint(average, avgPingData, minPingData, maxPingData, downData, colorData); this.pushDatapoint(average, avgPingData, minPingData, maxPingData, downData, colorData);
aggregateBuffer = []; aggregateBuffer = [];
} }
this.pushDatapoint(datapoint, avgPingData, minPingData, maxPingData, downData, colorData);
} }
} }
} }

Loading…
Cancel
Save