From 6cc7f012d804844678be61e718292a1aba1483ce Mon Sep 17 00:00:00 2001 From: Clicky Date: Thu, 22 May 2014 20:09:02 -0700 Subject: [PATCH] Cleanup the influx query parsing --- .../services/influxdb/influxdbDatasource.js | 27 +++++++++---------- 1 file changed, 12 insertions(+), 15 deletions(-) diff --git a/src/app/services/influxdb/influxdbDatasource.js b/src/app/services/influxdb/influxdbDatasource.js index bf4d64190ae..650e240e4f6 100644 --- a/src/app/services/influxdb/influxdbDatasource.js +++ b/src/app/services/influxdb/influxdbDatasource.js @@ -43,16 +43,13 @@ function (angular, _, kbn) { var groupByIndex = lowerCaseQueryElements.indexOf("group"); var orderIndex = lowerCaseQueryElements.indexOf("order"); - var afterGroup = _.rest(lowerCaseQueryElements, groupByIndex); - for (var i = 0; i < afterGroup.length; i++) { - var el = afterGroup[i]; - if (el === "order") break; - if ( /,$/.test(el) && - _.size(afterGroup) > i && - ! /^time\(/.test(afterGroup[i + 1])) { - additionalGroups.push(queryElements[groupByIndex + i + 1]); - } - } + additionalGroups = lowerCaseQueryElements.slice(groupByIndex + 1, + orderIndex ? orderIndex : lowerCaseQueryElements.length).filter(function(w) { + return ! /time\(/.test(w); + }); + additionalGroups = _.map(additionalGroups, function(w) { + return w.replace(",",""); + }); if (whereIndex !== -1) { queryElements.splice(whereIndex+1, 0, timeFilter, "and"); @@ -73,14 +70,14 @@ function (angular, _, kbn) { query = queryElements.join(" "); } else { - var template = "select [[group]][[group_add]] [[func]]([[column]]) as [[column]]_[[func]] from [[series]] " + + var template = "select [[group]][[group_comma]] [[func]]([[column]]) as [[column]]_[[func]] from [[series]] " + "where [[timeFilter]] [[condition_add]] [[condition_key]] [[condition_op]] [[condition_value]] " + - "group by time([[interval]])[[group_add]] [[group]] order asc"; + "group by time([[interval]])[[group_comma]] [[group]] order asc"; if (target.column.indexOf('-') !== -1 || target.column.indexOf('.') !== -1) { - template = "select [[group]][[group_add]] [[func]](\"[[column]]\") as \"[[column]]_[[func]]\" from [[series]] " + + template = "select [[group]][[group_comma]] [[func]](\"[[column]]\") as \"[[column]]_[[func]]\" from [[series]] " + "where [[timeFilter]] [[condition_add]] [[condition_key]] [[condition_op]] [[condition_value]] " + - "group by time([[interval]])[[group_add]] [[group]] order asc"; + "group by time([[interval]])[[group_comma]] [[group]] order asc"; } var templateData = { @@ -93,7 +90,7 @@ function (angular, _, kbn) { condition_key: target.condition_filter ? target.condition_key : '', condition_op: target.condition_filter ? target.condition_op : '', condition_value: target.condition_filter ? target.condition_value : '', - group_add: target.groupby_field_add && target.groupby_field ? ',' : '', + group_comma: target.groupby_field_add && target.groupby_field ? ',' : '', group: target.groupby_field_add ? target.groupby_field : '', };