From e1e6ba36caf7570dc985d65f5fc379b57cd49ab7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Torkel=20=C3=96degaard?= Date: Tue, 1 Jul 2014 15:55:56 +0200 Subject: [PATCH] Refactoring influxdb datasource, split out response handling --- .../services/influxdb/influxdbDatasource.js | 60 +++---------------- 1 file changed, 9 insertions(+), 51 deletions(-) diff --git a/src/app/services/influxdb/influxdbDatasource.js b/src/app/services/influxdb/influxdbDatasource.js index c63b735b9ea..4993c3655e3 100644 --- a/src/app/services/influxdb/influxdbDatasource.js +++ b/src/app/services/influxdb/influxdbDatasource.js @@ -1,9 +1,10 @@ define([ 'angular', 'underscore', - 'kbn' + 'kbn', + './influxSeries' ], -function (angular, _, kbn) { +function (angular, _, kbn, InfluxSeries) { 'use strict'; var module = angular.module('kibana.services'); @@ -194,57 +195,14 @@ function (angular, _, kbn) { return deferred.promise; }; - function handleInfluxQueryResponse(alias, groupByField, data) { - var output = []; - - _.each(data, function(series) { - var seriesName; - var timeCol = series.columns.indexOf('time'); - var valueCol = 1; - var groupByCol = -1; - - if (groupByField) { - groupByCol = series.columns.indexOf(groupByField); - } - - // find value column - _.each(series.columns, function(column, index) { - if (column !== 'time' && column !== 'sequence_number' && column !== groupByField) { - valueCol = index; - } - }); - - var groups = {}; - - if (groupByField) { - groups = _.groupBy(series.points, function (point) { - return point[groupByCol]; - }); - } - else { - groups[series.columns[valueCol]] = series.points; - } - - _.each(groups, function(groupPoints, key) { - var datapoints = []; - for (var i = 0; i < groupPoints.length; i++) { - var metricValue = isNaN(groupPoints[i][valueCol]) ? null : groupPoints[i][valueCol]; - datapoints[i] = [metricValue, groupPoints[i][timeCol]]; - } - - seriesName = alias ? alias : (series.name + '.' + key); - - // if mulitple groups append key to alias - if (alias && groupByField) { - seriesName += key; - } - - output.push({ target: seriesName, datapoints: datapoints }); - }); - + function handleInfluxQueryResponse(alias, groupByField, seriesList) { + var influxSeries = new InfluxSeries({ + seriesList: seriesList, + alias: alias, + groupByField: groupByField }); - return output; + return influxSeries.getTimeSeries(); } function getTimeFilter(options) {