From 63729a590474b4cf4b751e248fbaf1a7e0c2c91e Mon Sep 17 00:00:00 2001 From: Alexander Zobnin Date: Tue, 26 Jan 2016 22:59:11 +0300 Subject: [PATCH] Changed groupBy() function for working with grafana-style intervals. --- plugins/datasource-zabbix/dataProcessingService.js | 8 +++++--- plugins/datasource-zabbix/datasource.js | 9 +++------ 2 files changed, 8 insertions(+), 9 deletions(-) diff --git a/plugins/datasource-zabbix/dataProcessingService.js b/plugins/datasource-zabbix/dataProcessingService.js index 279d610..3565e2e 100644 --- a/plugins/datasource-zabbix/dataProcessingService.js +++ b/plugins/datasource-zabbix/dataProcessingService.js @@ -1,9 +1,10 @@ define([ 'angular', 'lodash', - 'moment' + 'moment', + './utils' ], -function (angular, _, moment) { +function (angular, _, moment, utils) { 'use strict'; var module = angular.module('grafana.services'); @@ -65,7 +66,8 @@ function (angular, _, moment) { * Group points by given time interval * datapoints: [[, ], ...] */ - this.groupBy = function(datapoints, ms_interval, groupByCallback) { + this.groupBy = function(interval, groupByCallback, datapoints) { + var ms_interval = utils.parseInterval(interval); var frames = _.groupBy(datapoints, function(point) { var group_time = Number(moment.utc(point[1]).startOf('minute').valueOf()); group_time = Math.ceil(point[1] / ms_interval) * ms_interval; diff --git a/plugins/datasource-zabbix/datasource.js b/plugins/datasource-zabbix/datasource.js index bfc4b24..f340465 100644 --- a/plugins/datasource-zabbix/datasource.js +++ b/plugins/datasource-zabbix/datasource.js @@ -144,12 +144,11 @@ function (angular, _, dateMath, utils) { return getHistory.then(function (timeseries_data) { return _.map(timeseries_data, function (timeseries) { - var groupBuInterval = utils.parseInterval(options.interval); - // Series downsampling + // Metric data processing var dp = timeseries.datapoints; if (false) { - dp = DataProcessingService.groupBy(dp, groupBuInterval, + dp = DataProcessingService.groupBy(dp, options.interval, DataProcessingService.AVERAGE); timeseries.datapoints = dp; } @@ -215,10 +214,8 @@ function (angular, _, dateMath, utils) { // Series downsampling var DPS = DataProcessingService; - var groupBuInterval = utils.parseInterval(options.interval); if (timeseries.datapoints.length > options.maxDataPoints) { - timeseries.datapoints = DPS.groupBy(timeseries.datapoints, groupBuInterval, - DPS.AVERAGE); + timeseries.datapoints = DPS.groupBy(options.interval, DPS.AVERAGE, timeseries.datapoints); } return timeseries; });