From 3da1c27692ef418018fe1810c49d44bcbf576d2b Mon Sep 17 00:00:00 2001 From: Clicky Date: Thu, 22 May 2014 15:20:10 -0700 Subject: [PATCH] Proof of concept of multiple groups using "host" Initial test to make sure this plan works using a predefined alternate group by. Now to actually figure this out based on the query and add some UI for it. --- .../services/influxdb/influxdbDatasource.js | 25 +++++++++++++------ 1 file changed, 17 insertions(+), 8 deletions(-) diff --git a/src/app/services/influxdb/influxdbDatasource.js b/src/app/services/influxdb/influxdbDatasource.js index 0a47e2e2619..df17c08a7e7 100644 --- a/src/app/services/influxdb/influxdbDatasource.js +++ b/src/app/services/influxdb/influxdbDatasource.js @@ -162,20 +162,29 @@ function (angular, _, kbn) { _.each(data, function(series) { var timeCol = series.columns.indexOf('time'); + var groupByColumn = series.columns.indexOf('host'); _.each(series.columns, function(column, index) { - if (column === "time" || column === "sequence_number") { + if (column === "time" || column === "sequence_number" || column === "host") { return; } var target = data.alias || series.name + "." + column; - var datapoints = []; - - for(var i = 0; i < series.points.length; i++) { - datapoints[i] = [series.points[i][index], series.points[i][timeCol]]; - } - - output.push({ target:target, datapoints:datapoints }); + var datapoints = _.groupBy(series.points, function (point) { + if (groupByColumn == -1 ) return null; + else return point[groupByColumn]; + }); + datapoints = _.map(_.pairs(datapoints), function(values) { + return [values[0], _.map(values[1], function (point) { return [point[index], point[timeCol]]; }) ]; + }); + + _.each(datapoints, function(values) { + if (values[0] == null) { + output.push({ target: target, datapoints: values[1]}); + } else { + output.push({ target: values[0] + "-" + target, datapoints: values[1] }); + } + }); }); });