Commit 4f8b2ad2 by Torkel Ödegaard

began work on filtering overhaul

parent 03353cb6
<div ng-controller='filtering' ng-init="init()"> <div ng-controller='filtering' ng-init="init()">
<div class='filtering-container'>
<div ng-repeat="filter in filter.templateParameters" class="small filter-panel-filter"> <div ng-repeat="filter in filter.templateParameters" class="small filter-panel-filter">
<div>
<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>
</div>
<div ng-hide="filter.editing" style="margin-right: 45px;">
<ul class="unstyled"> <ul class="unstyled">
<li ng-if="filter.name" class="dropdown"> <li ng-if="filter.name" class="dropdown">
{{filter.name}} : {{filter.name}} :
...@@ -24,27 +16,33 @@ ...@@ -24,27 +16,33 @@
</ul> </ul>
</div> </div>
<form ng-show="filter.editing"> <div class="submenu-control-edit">
<ul class="unstyled"> <i class="icon-cog pointer" config-modal="app/panels/filtering/editor.html" bs-tooltip="'Edit'" ></i>
<li>
<strong>name</strong>:<br/>
<input type='text' ng-model="filter.name">
</li>
<li>
<strong>filter.query</strong>:<br/>
<input type='text' ng-model="filter.query">
</li>
<li>
<label for="includeAll">Include all:</label>
<input id="includeAll" type='checkbox' ng-model="filter.includeAll">
</li>
</ul>
<div>
<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>
</div>
</form>
</div>
<i class="pointer icon-plus-sign add-filter-action" ng-click="add()" bs-tooltip="'Add metric filter / param'" data-placement="right"></i>
</div> </div>
</div>
<!-- <form ng&#45;show="filter.editing"> -->
<!-- <ul class="unstyled"> -->
<!-- <li> -->
<!-- <strong>name</strong>:<br/> -->
<!-- <input type='text' ng&#45;model="filter.name"> -->
<!-- </li> -->
<!-- <li> -->
<!-- <strong>filter.query</strong>:<br/> -->
<!-- <input type='text' ng&#45;model="filter.query"> -->
<!-- </li> -->
<!-- <li> -->
<!-- <label for="includeAll">Include all:</label> -->
<!-- <input id="includeAll" type='checkbox' ng&#45;model="filter.includeAll"> -->
<!-- </li> -->
<!-- </ul> -->
<!-- <div> -->
<!-- <input type="submit" value="Update" ng&#45;click="applyFilter(filter)" class="filter&#45;apply btn btn&#45;success btn&#45;mini" bs&#45;tooltip="'Update and refresh'"/> -->
<!-- <button ng&#45;click="filter.editing=undefined" class="filter&#45;apply btn btn&#45;mini" bs&#45;tooltip="'Save without refresh'">Close</button> -->
<!-- </div> -->
<!-- </form> -->
<!-- </div> -->
<!-- <i class="pointer icon&#45;plus&#45;sign add&#45;filter&#45;action" ng&#45;click="add()" bs&#45;tooltip="'Add metric filter / param'" data&#45;placement="right"></i> -->
<!-- </div> -->
</div> </div>
...@@ -9,7 +9,6 @@ define([ ...@@ -9,7 +9,6 @@ define([
module.service('annotationsSrv', function(datasourceSrv, $q, alertSrv, $rootScope) { module.service('annotationsSrv', function(datasourceSrv, $q, alertSrv, $rootScope) {
var promiseCached; var promiseCached;
var annotationPanel;
var list = []; var list = [];
var timezone; var timezone;
...@@ -23,8 +22,7 @@ define([ ...@@ -23,8 +22,7 @@ define([
}; };
this.getAnnotations = function(filterSrv, rangeUnparsed, dashboard) { this.getAnnotations = function(filterSrv, rangeUnparsed, dashboard) {
annotationPanel = _.findWhere(dashboard.pulldowns, { type: 'annotations' }); if (!dashboard.annotations.enable) {
if (!annotationPanel.enable) {
return $q.when(null); return $q.when(null);
} }
...@@ -33,7 +31,7 @@ define([ ...@@ -33,7 +31,7 @@ define([
} }
timezone = dashboard.timezone; timezone = dashboard.timezone;
var annotations = _.where(annotationPanel.annotations, { enable: true }); var annotations = _.where(dashboard.annotations.list, { enable: true });
var promises = _.map(annotations, function(annotation) { var promises = _.map(annotations, function(annotation) {
var datasource = datasourceSrv.get(annotation.datasource); var datasource = datasourceSrv.get(annotation.datasource);
......
...@@ -27,10 +27,10 @@ function (angular, $, kbn, _, moment) { ...@@ -27,10 +27,10 @@ function (angular, $, kbn, _, moment) {
this.timezone = data.timezone || 'browser'; this.timezone = data.timezone || 'browser';
this.editable = data.editble || true; this.editable = data.editble || true;
this.rows = data.rows || []; this.rows = data.rows || [];
this.pulldowns = data.pulldowns || [];
this.nav = data.nav || []; this.nav = data.nav || [];
this.time = data.time || { from: 'now-6h', to: 'now' }; this.time = data.time || { from: 'now-6h', to: 'now' };
this.templating = data.templating || { list: [] }; this.templating = data.templating || { list: [], enable: false };
this.annotations = data.annotations || { list: [], enable: false};
this.refresh = data.refresh; this.refresh = data.refresh;
this.version = data.version || 0; this.version = data.version || 0;
...@@ -38,14 +38,6 @@ function (angular, $, kbn, _, moment) { ...@@ -38,14 +38,6 @@ function (angular, $, kbn, _, moment) {
this.nav.push({ type: 'timepicker' }); this.nav.push({ type: 'timepicker' });
} }
if (!_.findWhere(this.pulldowns, {type: 'filtering'})) {
this.pulldowns.push({ type: 'filtering', enable: false });
}
if (!_.findWhere(this.pulldowns, {type: 'annotations'})) {
this.pulldowns.push({ type: 'annotations', enable: false });
}
this.updateSchema(data); this.updateSchema(data);
} }
...@@ -147,9 +139,9 @@ function (angular, $, kbn, _, moment) { ...@@ -147,9 +139,9 @@ function (angular, $, kbn, _, moment) {
p.updateSchema = function(old) { p.updateSchema = function(old) {
var oldVersion = this.version; var oldVersion = this.version;
var panelUpgrades = []; var panelUpgrades = [];
this.version = 4; this.version = 5;
if (oldVersion === 4) { if (oldVersion === 5) {
return; return;
} }
...@@ -224,6 +216,21 @@ function (angular, $, kbn, _, moment) { ...@@ -224,6 +216,21 @@ function (angular, $, kbn, _, moment) {
}); });
} }
if (oldVersion < 5) {
// move pulldowns to new schema
var filtering = _.findWhere(old.pulldowns, { type: 'filtering' });
var annotations = _.findWhere(old.pulldowns, { type: 'annotations' });
if (filtering) {
this.templating.enable = filtering.enable;
}
if (annotations) {
this.annotations = {
list: annotations.annotations,
enable: annotations.enable
};
}
}
if (panelUpgrades.length === 0) { if (panelUpgrades.length === 0) {
return; return;
} }
......
...@@ -18,7 +18,6 @@ define([ ...@@ -18,7 +18,6 @@ define([
it('should have default properties', function() { it('should have default properties', function() {
expect(model.rows.length).to.be(0); expect(model.rows.length).to.be(0);
expect(model.nav.length).to.be(1); expect(model.nav.length).to.be(1);
expect(model.pulldowns.length).to.be(2);
}); });
}); });
...@@ -91,6 +90,17 @@ define([ ...@@ -91,6 +90,17 @@ define([
beforeEach(inject(function(dashboardSrv) { beforeEach(inject(function(dashboardSrv) {
model = dashboardSrv.create({ model = dashboardSrv.create({
services: { filter: { time: { from: 'now-1d', to: 'now'}, list: [1] }}, services: { filter: { time: { from: 'now-1d', to: 'now'}, list: [1] }},
pulldowns: [
{
type: 'filtering',
enable: true
},
{
type: 'annotations',
enable: true,
annotations: [{name: 'old'}]
}
],
rows: [ rows: [
{ {
panels: [ panels: [
...@@ -140,8 +150,15 @@ define([ ...@@ -140,8 +150,15 @@ define([
expect(graph.seriesOverrides[0].yaxis).to.be(2); expect(graph.seriesOverrides[0].yaxis).to.be(2);
}); });
it('should move pulldowns to new schema', function() {
expect(model.templating.enable).to.be(true);
expect(model.annotations.enable).to.be(true);
expect(model.annotations.list[0].name).to.be('old');
});
it('dashboard schema version should be set to latest', function() { it('dashboard schema version should be set to latest', function() {
expect(model.version).to.be(4); expect(model.version).to.be(5);
}); });
}); });
......
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