add consolidateBy() function
This commit is contained in:
16
dist/datasource-zabbix/datasource.js
vendored
16
dist/datasource-zabbix/datasource.js
vendored
@@ -23,10 +23,23 @@ System.register(['lodash', 'app/core/utils/datemath', './utils', './migrations',
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function getConsolidateBy(target) {
|
||||||
|
var consolidateBy = 'avg';
|
||||||
|
var funcDef = _.find(target.functions, function (func) {
|
||||||
|
return func.def.name === 'consolidateBy';
|
||||||
|
});
|
||||||
|
if (funcDef && funcDef.params && funcDef.params.length) {
|
||||||
|
consolidateBy = funcDef.params[0];
|
||||||
|
}
|
||||||
|
return consolidateBy;
|
||||||
|
}
|
||||||
|
|
||||||
function downsampleSeries(timeseries_data, options) {
|
function downsampleSeries(timeseries_data, options) {
|
||||||
|
var defaultAgg = dataProcessor.aggregationFunctions['avg'];
|
||||||
|
var consolidateByFunc = dataProcessor.aggregationFunctions[options.consolidateBy] || defaultAgg;
|
||||||
return _.map(timeseries_data, function (timeseries) {
|
return _.map(timeseries_data, function (timeseries) {
|
||||||
if (timeseries.datapoints.length > options.maxDataPoints) {
|
if (timeseries.datapoints.length > options.maxDataPoints) {
|
||||||
timeseries.datapoints = dataProcessor.groupBy(options.interval, dataProcessor.AVERAGE, timeseries.datapoints);
|
timeseries.datapoints = dataProcessor.groupBy(options.interval, consolidateByFunc, timeseries.datapoints);
|
||||||
}
|
}
|
||||||
return timeseries;
|
return timeseries;
|
||||||
});
|
});
|
||||||
@@ -339,6 +352,7 @@ System.register(['lodash', 'app/core/utils/datemath', './utils', './migrations',
|
|||||||
};
|
};
|
||||||
return this.zabbix.getItemsFromTarget(target, getItemOptions).then(function (items) {
|
return this.zabbix.getItemsFromTarget(target, getItemOptions).then(function (items) {
|
||||||
var getHistoryPromise = void 0;
|
var getHistoryPromise = void 0;
|
||||||
|
options.consolidateBy = getConsolidateBy(target);
|
||||||
|
|
||||||
if (useTrends) {
|
if (useTrends) {
|
||||||
var valueType = _this2.getTrendValueType(target);
|
var valueType = _this2.getTrendValueType(target);
|
||||||
|
|||||||
2
dist/datasource-zabbix/datasource.js.map
vendored
2
dist/datasource-zabbix/datasource.js.map
vendored
File diff suppressed because one or more lines are too long
11
dist/datasource-zabbix/metricFunctions.js
vendored
11
dist/datasource-zabbix/metricFunctions.js
vendored
@@ -80,7 +80,8 @@ System.register(['lodash', 'jquery'], function (_export, _context) {
|
|||||||
Filter: [],
|
Filter: [],
|
||||||
Trends: [],
|
Trends: [],
|
||||||
Time: [],
|
Time: [],
|
||||||
Alias: []
|
Alias: [],
|
||||||
|
Special: []
|
||||||
};
|
};
|
||||||
addFuncDef({
|
addFuncDef({
|
||||||
name: 'groupBy',
|
name: 'groupBy',
|
||||||
@@ -225,6 +226,14 @@ System.register(['lodash', 'jquery'], function (_export, _context) {
|
|||||||
defaultParams: ['/(.*)/', '$1']
|
defaultParams: ['/(.*)/', '$1']
|
||||||
});
|
});
|
||||||
|
|
||||||
|
// Special
|
||||||
|
addFuncDef({
|
||||||
|
name: 'consolidateBy',
|
||||||
|
category: 'Special',
|
||||||
|
params: [{ name: 'type', type: 'string', options: ['avg', 'min', 'max', 'sum', 'count'] }],
|
||||||
|
defaultParams: ['avg']
|
||||||
|
});
|
||||||
|
|
||||||
_.each(categories, function (funcList, catName) {
|
_.each(categories, function (funcList, catName) {
|
||||||
categories[catName] = _.sortBy(funcList, 'name');
|
categories[catName] = _.sortBy(funcList, 'name');
|
||||||
});
|
});
|
||||||
|
|||||||
File diff suppressed because one or more lines are too long
16
dist/test/datasource-zabbix/datasource.js
vendored
16
dist/test/datasource-zabbix/datasource.js
vendored
@@ -212,6 +212,7 @@ var ZabbixAPIDatasource = function () {
|
|||||||
};
|
};
|
||||||
return this.zabbix.getItemsFromTarget(target, getItemOptions).then(function (items) {
|
return this.zabbix.getItemsFromTarget(target, getItemOptions).then(function (items) {
|
||||||
var getHistoryPromise = void 0;
|
var getHistoryPromise = void 0;
|
||||||
|
options.consolidateBy = getConsolidateBy(target);
|
||||||
|
|
||||||
if (useTrends) {
|
if (useTrends) {
|
||||||
var valueType = _this2.getTrendValueType(target);
|
var valueType = _this2.getTrendValueType(target);
|
||||||
@@ -614,10 +615,23 @@ function bindFunctionDefs(functionDefs, category) {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function getConsolidateBy(target) {
|
||||||
|
var consolidateBy = 'avg';
|
||||||
|
var funcDef = _lodash2.default.find(target.functions, function (func) {
|
||||||
|
return func.def.name === 'consolidateBy';
|
||||||
|
});
|
||||||
|
if (funcDef && funcDef.params && funcDef.params.length) {
|
||||||
|
consolidateBy = funcDef.params[0];
|
||||||
|
}
|
||||||
|
return consolidateBy;
|
||||||
|
}
|
||||||
|
|
||||||
function downsampleSeries(timeseries_data, options) {
|
function downsampleSeries(timeseries_data, options) {
|
||||||
|
var defaultAgg = _dataProcessor2.default.aggregationFunctions['avg'];
|
||||||
|
var consolidateByFunc = _dataProcessor2.default.aggregationFunctions[options.consolidateBy] || defaultAgg;
|
||||||
return _lodash2.default.map(timeseries_data, function (timeseries) {
|
return _lodash2.default.map(timeseries_data, function (timeseries) {
|
||||||
if (timeseries.datapoints.length > options.maxDataPoints) {
|
if (timeseries.datapoints.length > options.maxDataPoints) {
|
||||||
timeseries.datapoints = _dataProcessor2.default.groupBy(options.interval, _dataProcessor2.default.AVERAGE, timeseries.datapoints);
|
timeseries.datapoints = _dataProcessor2.default.groupBy(options.interval, consolidateByFunc, timeseries.datapoints);
|
||||||
}
|
}
|
||||||
return timeseries;
|
return timeseries;
|
||||||
});
|
});
|
||||||
|
|||||||
11
dist/test/datasource-zabbix/metricFunctions.js
vendored
11
dist/test/datasource-zabbix/metricFunctions.js
vendored
@@ -29,7 +29,8 @@ var categories = {
|
|||||||
Filter: [],
|
Filter: [],
|
||||||
Trends: [],
|
Trends: [],
|
||||||
Time: [],
|
Time: [],
|
||||||
Alias: []
|
Alias: [],
|
||||||
|
Special: []
|
||||||
};
|
};
|
||||||
|
|
||||||
function addFuncDef(funcDef) {
|
function addFuncDef(funcDef) {
|
||||||
@@ -188,6 +189,14 @@ addFuncDef({
|
|||||||
defaultParams: ['/(.*)/', '$1']
|
defaultParams: ['/(.*)/', '$1']
|
||||||
});
|
});
|
||||||
|
|
||||||
|
// Special
|
||||||
|
addFuncDef({
|
||||||
|
name: 'consolidateBy',
|
||||||
|
category: 'Special',
|
||||||
|
params: [{ name: 'type', type: 'string', options: ['avg', 'min', 'max', 'sum', 'count'] }],
|
||||||
|
defaultParams: ['avg']
|
||||||
|
});
|
||||||
|
|
||||||
_lodash2.default.each(categories, function (funcList, catName) {
|
_lodash2.default.each(categories, function (funcList, catName) {
|
||||||
categories[catName] = _lodash2.default.sortBy(funcList, 'name');
|
categories[catName] = _lodash2.default.sortBy(funcList, 'name');
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -155,6 +155,7 @@ class ZabbixAPIDatasource {
|
|||||||
return this.zabbix.getItemsFromTarget(target, getItemOptions)
|
return this.zabbix.getItemsFromTarget(target, getItemOptions)
|
||||||
.then(items => {
|
.then(items => {
|
||||||
let getHistoryPromise;
|
let getHistoryPromise;
|
||||||
|
options.consolidateBy = getConsolidateBy(target);
|
||||||
|
|
||||||
if (useTrends) {
|
if (useTrends) {
|
||||||
let valueType = this.getTrendValueType(target);
|
let valueType = this.getTrendValueType(target);
|
||||||
@@ -529,11 +530,24 @@ function bindFunctionDefs(functionDefs, category) {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function getConsolidateBy(target) {
|
||||||
|
let consolidateBy = 'avg';
|
||||||
|
let funcDef = _.find(target.functions, func => {
|
||||||
|
return func.def.name === 'consolidateBy';
|
||||||
|
});
|
||||||
|
if (funcDef && funcDef.params && funcDef.params.length) {
|
||||||
|
consolidateBy = funcDef.params[0];
|
||||||
|
}
|
||||||
|
return consolidateBy;
|
||||||
|
}
|
||||||
|
|
||||||
function downsampleSeries(timeseries_data, options) {
|
function downsampleSeries(timeseries_data, options) {
|
||||||
|
let defaultAgg = dataProcessor.aggregationFunctions['avg'];
|
||||||
|
let consolidateByFunc = dataProcessor.aggregationFunctions[options.consolidateBy] || defaultAgg;
|
||||||
return _.map(timeseries_data, timeseries => {
|
return _.map(timeseries_data, timeseries => {
|
||||||
if (timeseries.datapoints.length > options.maxDataPoints) {
|
if (timeseries.datapoints.length > options.maxDataPoints) {
|
||||||
timeseries.datapoints = dataProcessor
|
timeseries.datapoints = dataProcessor
|
||||||
.groupBy(options.interval, dataProcessor.AVERAGE, timeseries.datapoints);
|
.groupBy(options.interval, consolidateByFunc, timeseries.datapoints);
|
||||||
}
|
}
|
||||||
return timeseries;
|
return timeseries;
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -8,7 +8,8 @@ var categories = {
|
|||||||
Filter: [],
|
Filter: [],
|
||||||
Trends: [],
|
Trends: [],
|
||||||
Time: [],
|
Time: [],
|
||||||
Alias: []
|
Alias: [],
|
||||||
|
Special: []
|
||||||
};
|
};
|
||||||
|
|
||||||
function addFuncDef(funcDef) {
|
function addFuncDef(funcDef) {
|
||||||
@@ -204,6 +205,16 @@ addFuncDef({
|
|||||||
defaultParams: ['/(.*)/', '$1']
|
defaultParams: ['/(.*)/', '$1']
|
||||||
});
|
});
|
||||||
|
|
||||||
|
// Special
|
||||||
|
addFuncDef({
|
||||||
|
name: 'consolidateBy',
|
||||||
|
category: 'Special',
|
||||||
|
params: [
|
||||||
|
{ name: 'type', type: 'string', options: ['avg', 'min', 'max', 'sum', 'count'] }
|
||||||
|
],
|
||||||
|
defaultParams: ['avg'],
|
||||||
|
});
|
||||||
|
|
||||||
_.each(categories, function(funcList, catName) {
|
_.each(categories, function(funcList, catName) {
|
||||||
categories[catName] = _.sortBy(funcList, 'name');
|
categories[catName] = _.sortBy(funcList, 'name');
|
||||||
});
|
});
|
||||||
|
|||||||
Reference in New Issue
Block a user