Datasource query() refactoring.

This commit is contained in:
Alexander Zobnin
2016-01-28 19:37:50 +03:00
parent e124838e34
commit ce757409c3

View File

@@ -148,19 +148,12 @@ function (angular, _, dateMath, utils, metricFunctions) {
timeseries_data = _.map(timeseries_data, function (timeseries) { timeseries_data = _.map(timeseries_data, function (timeseries) {
// Filter only transform functions // Filter only transform functions
var transformFunctions = _.map(metricFunctions.getCategories()['Transform'], 'name'); var transformFunctions = bindFunctionDefs(target.functions, 'Transform');
var transFuncDefs = _.filter(target.functions, function(func) {
return _.contains(transformFunctions, func.def.name);
});
var functions = _.map(transFuncDefs, function(func) {
var funcInstance = metricFunctions.createFuncInstance(func.def, func.params);
return funcInstance.bindFunction(DataProcessingService.metricFunctions);
});
// Metric data processing // Metric data processing
var dp = timeseries.datapoints; var dp = timeseries.datapoints;
for (var i = 0; i < functions.length; i++) { for (var i = 0; i < transformFunctions.length; i++) {
dp = functions[i](dp); dp = transformFunctions[i](dp);
} }
timeseries.datapoints = dp; timeseries.datapoints = dp;
@@ -168,25 +161,18 @@ function (angular, _, dateMath, utils, metricFunctions) {
}); });
// Aggregations // Aggregations
var aggregationFunctions = _.map(metricFunctions.getCategories()['Aggregate'], 'name'); var aggregationFunctions = bindFunctionDefs(target.functions, 'Aggregate');
var aggFuncDefs = _.filter(target.functions, function(func) {
return _.contains(aggregationFunctions, func.def.name);
});
var functions = _.map(aggFuncDefs, function(func) {
var funcInstance = metricFunctions.createFuncInstance(func.def, func.params);
return funcInstance.bindFunction(DataProcessingService.metricFunctions);
});
var dp = _.map(timeseries_data, 'datapoints'); var dp = _.map(timeseries_data, 'datapoints');
if (aggregationFunctions.length) {
if (functions.length) { for (var i = 0; i < aggregationFunctions.length; i++) {
for (var i = 0; i < functions.length; i++) { dp = aggregationFunctions[i](dp);
dp = functions[i](dp);
} }
timeseries_data = { timeseries_data = {
target: 'agg', target: 'agg',
datapoints: dp datapoints: dp
}; };
} }
return timeseries_data; return timeseries_data;
}); });
}); });
@@ -257,6 +243,17 @@ function (angular, _, dateMath, utils, metricFunctions) {
}); });
}; };
function bindFunctionDefs(functionDefs, category) {
var aggregationFunctions = _.map(metricFunctions.getCategories()[category], 'name');
var aggFuncDefs = _.filter(functionDefs, function(func) {
return _.contains(aggregationFunctions, func.def.name);
});
return _.map(aggFuncDefs, function(func) {
var funcInstance = metricFunctions.createFuncInstance(func.def, func.params);
return funcInstance.bindFunction(DataProcessingService.metricFunctions);
});
}
//////////////// ////////////////
// Templating // // Templating //
//////////////// ////////////////