From 7565cb0114dc4309630eb91d0e00bae9364eec92 Mon Sep 17 00:00:00 2001 From: Alexander Zobnin Date: Thu, 28 Jan 2016 18:38:31 +0300 Subject: [PATCH] Fixed bug with aggregation functions bind when dashboard loaded. --- plugins/datasource-zabbix/datasource.js | 6 ++++-- plugins/datasource-zabbix/metricFunctions.js | 13 ++++++++----- plugins/datasource-zabbix/queryCtrl.js | 2 +- 3 files changed, 13 insertions(+), 8 deletions(-) diff --git a/plugins/datasource-zabbix/datasource.js b/plugins/datasource-zabbix/datasource.js index 3d92601..a9ff939 100644 --- a/plugins/datasource-zabbix/datasource.js +++ b/plugins/datasource-zabbix/datasource.js @@ -152,7 +152,8 @@ function (angular, _, dateMath, utils, metricFunctions) { return _.contains(transformFunctions, func.def.name); }); var functions = _.map(transFuncDefs, function(func) { - return func.bindFunction(DataProcessingService.metricFunctions); + var funcInstance = metricFunctions.createFuncInstance(func.def, func.params); + return funcInstance.bindFunction(DataProcessingService.metricFunctions); }); // Metric data processing @@ -171,7 +172,8 @@ function (angular, _, dateMath, utils, metricFunctions) { return _.contains(aggregationFunctions, func.def.name); }); var functions = _.map(aggFuncDefs, function(func) { - return func.bindFunction(DataProcessingService.metricFunctions); + var funcInstance = metricFunctions.createFuncInstance(func.def, func.params); + return funcInstance.bindFunction(DataProcessingService.metricFunctions); }); var dp = _.map(timeseries_data, 'datapoints'); diff --git a/plugins/datasource-zabbix/metricFunctions.js b/plugins/datasource-zabbix/metricFunctions.js index 279024c..74ac76e 100644 --- a/plugins/datasource-zabbix/metricFunctions.js +++ b/plugins/datasource-zabbix/metricFunctions.js @@ -110,11 +110,14 @@ function (_, $) { categories[catName] = _.sortBy(funcList, 'name'); }); - function FuncInstance(funcDef, options) { + function FuncInstance(funcDef, params) { this.def = funcDef; - this.params = []; - if (options && options.withDefaultParams) { + if (params) { + this.params = params; + } else { + // Create with default params + this.params = []; this.params = funcDef.defaultParams.slice(0); } @@ -200,14 +203,14 @@ function (_, $) { }; return { - createFuncInstance: function(funcDef, options) { + createFuncInstance: function(funcDef, params) { if (_.isString(funcDef)) { if (!index[funcDef]) { throw { message: 'Method not found ' + name }; } funcDef = index[funcDef]; } - return new FuncInstance(funcDef, options); + return new FuncInstance(funcDef, params); }, getFuncDef: function(name) { diff --git a/plugins/datasource-zabbix/queryCtrl.js b/plugins/datasource-zabbix/queryCtrl.js index b993419..3cce7b0 100644 --- a/plugins/datasource-zabbix/queryCtrl.js +++ b/plugins/datasource-zabbix/queryCtrl.js @@ -269,7 +269,7 @@ define([ $scope.validateTarget = function () {}; $scope.addFunction = function(funcDef) { - var newFunc = metricFunctions.createFuncInstance(funcDef, { withDefaultParams: true }); + var newFunc = metricFunctions.createFuncInstance(funcDef); newFunc.added = true; $scope.target.functions.push(newFunc);