groupBy(): minor refactor

This commit is contained in:
Alexander Zobnin
2017-07-28 12:37:28 +03:00
parent 1899d32152
commit e626ce4ca2
4 changed files with 29 additions and 21 deletions

View File

@@ -95,6 +95,10 @@ function groupBy(datapoints, interval, groupByCallback) {
}
function groupBy_perf(datapoints, interval, groupByCallback) {
if (datapoints.length === 0) {
return [];
}
let ms_interval = utils.parseInterval(interval);
let grouped_series = [];
let frame_values = [];
@@ -103,32 +107,28 @@ function groupBy_perf(datapoints, interval, groupByCallback) {
let point_frame_ts = frame_ts;
let point;
if (datapoints.length > 0) {
for (let i=0; i < datapoints.length; i++) {
point = datapoints[i];
point_frame_ts = getPointTimeFrame(point[POINT_TIMESTAMP], ms_interval);
if (point_frame_ts === frame_ts) {
frame_values.push(point[POINT_VALUE]);
} else if (point_frame_ts > frame_ts) {
frame_value = groupByCallback(frame_values);
grouped_series.push([frame_value, frame_ts]);
for (let i=0; i < datapoints.length; i++) {
point = datapoints[i];
point_frame_ts = getPointTimeFrame(point[POINT_TIMESTAMP], ms_interval);
if (point_frame_ts === frame_ts) {
frame_values.push(point[POINT_VALUE]);
} else if (point_frame_ts > frame_ts) {
frame_value = groupByCallback(frame_values);
grouped_series.push([frame_value, frame_ts]);
// Move frame window to next non-empty interval and fill empty by null
// Move frame window to next non-empty interval and fill empty by null
frame_ts += ms_interval;
while (frame_ts < point_frame_ts) {
grouped_series.push([null, frame_ts]);
frame_ts += ms_interval;
while (frame_ts < point_frame_ts) {
grouped_series.push([null, frame_ts]);
frame_ts += ms_interval;
}
frame_values = [point[POINT_VALUE]];
}
frame_values = [point[POINT_VALUE]];
}
frame_value = groupByCallback(frame_values);
grouped_series.push([frame_value, frame_ts]);
}
frame_value = groupByCallback(frame_values);
grouped_series.push([frame_value, frame_ts]);
return grouped_series;
}