Commit a3b4e409 by Torkel Ödegaard

Adds support to have filters inside filters, (nested templated segments), Closes #128

parent 0c42b9a6
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
<div class='filtering-container'> <div class='filtering-container'>
<div ng-repeat="filter in filterSrv.list" class="small filter-panel-filter"> <div ng-repeat="filter in filterList" class="small filter-panel-filter">
<div> <div>
<i class="filter-action pointer icon-remove" bs-tooltip="'Remove'" ng-click="remove(filter)"></i> <i class="filter-action pointer icon-remove" bs-tooltip="'Remove'" ng-click="remove(filter)"></i>
<i class="filter-action pointer icon-edit" ng-hide="filter.editing" bs-tooltip="'Edit'" ng-click="filter.editing = true"></i> <i class="filter-action pointer icon-edit" ng-hide="filter.editing" bs-tooltip="'Edit'" ng-click="filter.editing = true"></i>
...@@ -17,7 +17,7 @@ ...@@ -17,7 +17,7 @@
</a> </a>
<ul class="dropdown-menu"> <ul class="dropdown-menu">
<li ng-repeat="option in filter.options"> <li ng-repeat="option in filter.options">
<a ng-click="filterSrv.filterOptionSelected(filter, option)">{{option.text}}</a> <a ng-click="filterOptionSelected(filter, option)">{{option.text}}</a>
</li> </li>
</ul> </ul>
</li> </li>
...@@ -40,9 +40,8 @@ ...@@ -40,9 +40,8 @@
</li> </li>
</ul> </ul>
<div> <div>
<input type="submit" value="Apply" ng-click="applyFilter(filter)" class="filter-apply btn btn-success btn-mini" bs-tooltip="'Save and refresh'"/> <input type="submit" value="Update" ng-click="applyFilter(filter)" class="filter-apply btn btn-success btn-mini" bs-tooltip="'Update and refresh'"/>
<button ng-click="filter.editing=undefined" class="filter-apply btn btn-mini" bs-tooltip="'Save without refresh'">Close</button>
<button ng-click="filter.editing=undefined" class="filter-apply btn btn-mini" bs-tooltip="'Save without refresh'">Save</button>
</div> </div>
</form> </form>
</div> </div>
......
...@@ -27,15 +27,33 @@ function (angular, app, _) { ...@@ -27,15 +27,33 @@ function (angular, app, _) {
_.defaults($scope.panel,_d); _.defaults($scope.panel,_d);
$scope.init = function() { $scope.init = function() {
$scope.filterSrv = filterSrv; $scope.filterList = filterSrv.list;
}; };
$scope.remove = function(filter) { $scope.remove = function(filter) {
filterSrv.remove(filter); filterSrv.remove(filter);
}; };
$scope.filterOptionSelected = function(filter, option) {
filterSrv.filterOptionSelected(filter, option);
$scope.applyFilterToOtherFilters(filter);
};
$scope.applyFilterToOtherFilters = function(updatedFilter) {
_.each($scope.filterList, function(filter) {
if (filter === updatedFilter) {
return;
}
if (filter.query.indexOf(updatedFilter.name) !== -1) {
$scope.applyFilter(filter);
}
});
};
$scope.applyFilter = function(filter) { $scope.applyFilter = function(filter) {
datasourceSrv.default.metricFindQuery(filter.query) var query = filterSrv.applyFilterToTarget(filter.query);
datasourceSrv.default.metricFindQuery(query)
.then(function (results) { .then(function (results) {
filter.editing=undefined; filter.editing=undefined;
filter.options = _.map(results, function(node) { filter.options = _.map(results, function(node) {
......
define([ define([
'./alertSrv', './alertSrv',
'./dashboard', './dashboard',
'./datasourceSrv',
'./filterSrv', './filterSrv',
'./timer', './timer',
'./panelMove', './panelMove',
'./datasourceSrv',
'./keyboardManager', './keyboardManager',
'./annotationsSrv', './annotationsSrv',
'./playlistSrv', './playlistSrv',
......
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