Commit 66db99fa by Torkel Ödegaard

Merge branch 'feature/influxdb-add-where-conditions' of…

Merge branch 'feature/influxdb-add-where-conditions' of github.com:mavimo/grafana into mavimo-feature/influxdb-add-where-conditions
parents 0efafc50 595aab4e
...@@ -18,6 +18,7 @@ function (angular) { ...@@ -18,6 +18,7 @@ function (angular) {
$scope.rawQuery = false; $scope.rawQuery = false;
$scope.functions = ['count', 'mean', 'sum', 'min', 'max', 'mode', 'distinct', 'median', 'derivative', 'stddev', 'first', 'last']; $scope.functions = ['count', 'mean', 'sum', 'min', 'max', 'mode', 'distinct', 'median', 'derivative', 'stddev', 'first', 'last'];
$scope.operators = ['=', '=~', '>', '<', '!~', '<>'];
$scope.oldSeries = $scope.target.series; $scope.oldSeries = $scope.target.series;
$scope.$on('typeahead-updated', function(){ $scope.$on('typeahead-updated', function(){
$timeout($scope.get_data); $timeout($scope.get_data);
......
...@@ -52,12 +52,24 @@ ...@@ -52,12 +52,24 @@
ng-blur="get_data()"> ng-blur="get_data()">
</li> </li>
<li class="grafana-target-segment" ng-hide="target.rawQuery"> <li class="grafana-target-segment" ng-hide="target.rawQuery">
label
</li>
<li ng-hide="target.rawQuery">
<input type="text"
class="input-small grafana-target-segment-input"
ng-model="target.label"
spellcheck='false'
placeholder="label"
ng-blur="seriesBlur()">
</li>
<li class="grafana-target-segment" ng-hide="target.rawQuery">
from series from series
</li> </li>
<li ng-hide="target.rawQuery"> <li ng-hide="target.rawQuery">
<input type="text" <input type="text"
class="input-medium grafana-target-segment-input" class="input-small grafana-target-segment-input"
ng-model="target.series" ng-model="target.series"
spellcheck='false' spellcheck='false'
bs-typeahead="listSeries" bs-typeahead="listSeries"
...@@ -72,7 +84,7 @@ ...@@ -72,7 +84,7 @@
<li ng-hide="target.rawQuery"> <li ng-hide="target.rawQuery">
<input type="text" <input type="text"
class="input-medium grafana-target-segment-input" class="input-small grafana-target-segment-input"
ng-model="target.column" ng-model="target.column"
placeholder="value column" placeholder="value column"
spellcheck='false' spellcheck='false'
...@@ -84,14 +96,44 @@ ...@@ -84,14 +96,44 @@
<li class="grafana-target-segment" ng-hide="target.rawQuery"> <li class="grafana-target-segment" ng-hide="target.rawQuery">
function function
</li> </li>
<li ng-hide="target.rawQuery"> <li ng-hide="target.rawQuery">
<select class="input-medium grafana-target-segment-input" <select class="input-small grafana-target-segment-input"
ng-change="get_data()" ng-change="get_data()"
ng-model="target.function" ng-model="target.function"
ng-options="f for f in functions" ></select> ng-options="f for f in functions" ></select>
</li> </li>
<li ng-hide="target.rawQuery">
<a class="grafana-target-segment"
ng-click="target.condiction_filter = !target.condiction_filter; get_data();"
role="menuitem">
<i class="icon-filter"></i>
</a>
</li>
<li ng-hide="target.rawQuery" ng-show="target.condiction_filter">
<select class="input-small grafana-target-segment-input"
ng-change="get_data()"
ng-model="target.condition_add"
ng-options="f for f in ['and', 'or']" ></select>
<input type="text"
class="input-small grafana-target-segment-input"
ng-model="target.condition_key"
placeholder="key"
spellcheck='false'
bs-typeahead="listColumns"
data-min-length=0
ng-blur="get_data()">
<select class="input-small grafana-target-segment-input"
ng-change="get_data()"
ng-model="target.condition_op"
ng-options="f for f in operators" ></select>
<input type="text"
class="input-small grafana-target-segment-input"
ng-model="target.condition_value"
placeholder="value"
spellcheck='false'
data-min-length=0
ng-blur="get_data()">
</li>
<li class="grafana-target-segment" ng-hide="target.rawQuery"> <li class="grafana-target-segment" ng-hide="target.rawQuery">
group by time group by time
</li> </li>
......
...@@ -60,25 +60,29 @@ function (angular, _, kbn) { ...@@ -60,25 +60,29 @@ function (angular, _, kbn) {
} }
query = queryElements.join(" "); query = queryElements.join(" ");
} }
else { else {
var template = "select [[func]]([[column]]) as [[column]]_[[func]] from [[series]] where [[timeFilter]]" + var template = "select [[func]]([[column]]) as [[column]]_[[func]] from [[series]] " +
" group by time([[interval]]) order asc"; "where [[timeFilter]] [[condition_add]] [[condition_key]] [[condition_op]] [[condition_value]] " +
"group by time([[interval]]) order asc";
var templateData = { var templateData = {
series: target.series, series: target.series,
column: target.column, column: target.column,
func: target.function, func: target.function,
timeFilter: timeFilter, timeFilter: timeFilter,
interval: target.interval || options.interval interval: target.interval || options.interval,
condition_add: target.condiction_filter ? target.condition_add : '',
condition_key: target.condiction_filter ? target.condition_key : '',
condition_op: target.condiction_filter ? target.condition_op : '',
condition_value: target.condiction_filter ? target.condition_value: ''
}; };
query = _.template(template, templateData, this.templateSettings); query = _.template(template, templateData, this.templateSettings);
target.query = query; target.query = query;
} }
return this.doInfluxRequest(query).then(handleInfluxQueryResponse); return this.doInfluxRequest(query, target.label).then(handleInfluxQueryResponse);
}, this); }, this);
...@@ -117,7 +121,7 @@ function (angular, _, kbn) { ...@@ -117,7 +121,7 @@ function (angular, _, kbn) {
}); });
} }
InfluxDatasource.prototype.doInfluxRequest = function(query) { InfluxDatasource.prototype.doInfluxRequest = function(query, label) {
var _this = this; var _this = this;
var deferred = $q.defer(); var deferred = $q.defer();
...@@ -138,6 +142,7 @@ function (angular, _, kbn) { ...@@ -138,6 +142,7 @@ function (angular, _, kbn) {
}; };
return $http(options).success(function (data) { return $http(options).success(function (data) {
data.label = label;
deferred.resolve(data); deferred.resolve(data);
}); });
}, 10); }, 10);
...@@ -156,9 +161,7 @@ function (angular, _, kbn) { ...@@ -156,9 +161,7 @@ function (angular, _, kbn) {
return; return;
} }
console.log("series:"+series.name + ": "+series.points.length + " points"); var target = data.label || series.name + "." + column;
var target = series.name + "." + column;
var datapoints = []; var datapoints = [];
for(var i = 0; i < series.points.length; i++) { for(var i = 0; i < series.points.length; i++) {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment