|
|
|
@ -2,15 +2,19 @@ |
|
|
|
|
|
|
|
|
|
import moment = require('moment'); |
|
|
|
|
import _ = require('lodash'); |
|
|
|
|
import TimeSeries = require('app/core/time_series'); |
|
|
|
|
|
|
|
|
|
var transformers = {}; |
|
|
|
|
|
|
|
|
|
transformers['timeseries_to_rows'] = { |
|
|
|
|
description: 'Time series to rows', |
|
|
|
|
getColumns: function() { |
|
|
|
|
return []; |
|
|
|
|
}, |
|
|
|
|
transform: function(data, panel, model) { |
|
|
|
|
model.columns = [ |
|
|
|
|
{text: 'Time', type: 'date'}, |
|
|
|
|
{text: 'Series'}, |
|
|
|
|
{text: 'Metric'}, |
|
|
|
|
{text: 'Value'}, |
|
|
|
|
]; |
|
|
|
|
|
|
|
|
@ -26,6 +30,9 @@ transformers['timeseries_to_rows'] = { |
|
|
|
|
|
|
|
|
|
transformers['timeseries_to_columns'] = { |
|
|
|
|
description: 'Time series to columns', |
|
|
|
|
getColumns: function() { |
|
|
|
|
return []; |
|
|
|
|
}, |
|
|
|
|
transform: function(data, panel, model) { |
|
|
|
|
model.columns.push({text: 'Time', type: 'date'}); |
|
|
|
|
|
|
|
|
@ -64,8 +71,50 @@ transformers['timeseries_to_columns'] = { |
|
|
|
|
} |
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
transformers['timeseries_aggregations'] = { |
|
|
|
|
description: 'Time series aggregations', |
|
|
|
|
getColumns: function() { |
|
|
|
|
return [ |
|
|
|
|
{text: 'Avg', value: 'avg'}, |
|
|
|
|
{text: 'Min', value: 'min'}, |
|
|
|
|
{text: 'Max', value: 'max'}, |
|
|
|
|
]; |
|
|
|
|
}, |
|
|
|
|
transform: function(data, panel, model) { |
|
|
|
|
var i, y; |
|
|
|
|
model.columns.push({text: 'Metric'}); |
|
|
|
|
|
|
|
|
|
if (panel.columns.length === 0) { |
|
|
|
|
panel.columns.push({text: 'Avg', value: 'avg'}); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
for (i = 0; i < panel.columns.length; i++) { |
|
|
|
|
model.columns.push({text: panel.columns[i].text}); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
for (i = 0; i < data.length; i++) { |
|
|
|
|
var series = new TimeSeries({ |
|
|
|
|
datapoints: data[i].datapoints, |
|
|
|
|
alias: data[i].target, |
|
|
|
|
}); |
|
|
|
|
|
|
|
|
|
series.getFlotPairs('connected'); |
|
|
|
|
var cells = [series.alias]; |
|
|
|
|
|
|
|
|
|
for (y = 0; y < panel.columns.length; y++) { |
|
|
|
|
cells.push(series.stats[panel.columns[y].value]); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
model.rows.push(cells); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
transformers['annotations'] = { |
|
|
|
|
description: 'Annotations', |
|
|
|
|
getColumns: function() { |
|
|
|
|
return []; |
|
|
|
|
}, |
|
|
|
|
transform: function(data, panel, model) { |
|
|
|
|
model.columns.push({text: 'Time', type: 'date'}); |
|
|
|
|
model.columns.push({text: 'Title'}); |
|
|
|
@ -85,10 +134,34 @@ transformers['annotations'] = { |
|
|
|
|
|
|
|
|
|
transformers['json'] = { |
|
|
|
|
description: 'JSON Data', |
|
|
|
|
getColumns: function(data) { |
|
|
|
|
if (!data || data.length === 0) { |
|
|
|
|
return []; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
var names: any = {}; |
|
|
|
|
for (var i = 0; i < data.length; i++) { |
|
|
|
|
var series = data[i]; |
|
|
|
|
if (series.type === 'docs') { |
|
|
|
|
continue; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
for (var y = 0; y < series.datapoints.length; y++) { |
|
|
|
|
var doc = series.datapoints[y]; |
|
|
|
|
for (var propName in doc) { |
|
|
|
|
names[propName] = true; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
return _.map(names, function(value, key) { |
|
|
|
|
return {text: key, value: key}; |
|
|
|
|
}); |
|
|
|
|
}, |
|
|
|
|
transform: function(data, panel, model) { |
|
|
|
|
var i, y, z; |
|
|
|
|
for (i = 0; i < panel.columns.length; i++) { |
|
|
|
|
model.columns.push({text: panel.columns[i].name}); |
|
|
|
|
model.columns.push({text: panel.columns[i].text}); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
if (model.columns.length === 0) { |
|
|
|
@ -102,7 +175,7 @@ transformers['json'] = { |
|
|
|
|
var dp = series.datapoints[y]; |
|
|
|
|
var values = []; |
|
|
|
|
for (z = 0; z < panel.columns.length; z++) { |
|
|
|
|
values.push(dp[panel.columns[z].name]); |
|
|
|
|
values.push(dp[panel.columns[z].value]); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
if (values.length === 0) { |
|
|
|
|