Fixed bug with aggregation functions bind when dashboard loaded.

This commit is contained in:
Alexander Zobnin
2016-01-28 18:38:31 +03:00
parent 95cae7ee4d
commit 7565cb0114
3 changed files with 13 additions and 8 deletions

View File

@@ -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');

View File

@@ -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) {

View File

@@ -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);