mirror of
https://github.com/grafana/grafana.git
synced 2025-02-25 18:55:37 -06:00
query: more work on metrics tab changes
This commit is contained in:
@@ -1,5 +1,6 @@
|
||||
///<reference path="../../headers/common.d.ts" />
|
||||
|
||||
import angular from 'angular';
|
||||
import config from 'app/core/config';
|
||||
import $ from 'jquery';
|
||||
import _ from 'lodash';
|
||||
@@ -33,6 +34,7 @@ class MetricsPanelCtrl extends PanelCtrl {
|
||||
dataStream: any;
|
||||
dataSubscription: any;
|
||||
dataList: any;
|
||||
nextRefId: string;
|
||||
|
||||
constructor($scope, $injector) {
|
||||
super($scope, $injector);
|
||||
@@ -307,6 +309,25 @@ class MetricsPanelCtrl extends PanelCtrl {
|
||||
this.datasource = null;
|
||||
this.refresh();
|
||||
}
|
||||
|
||||
addQuery(target) {
|
||||
target.refId = this.dashboard.getNextQueryLetter(this.panel);
|
||||
|
||||
this.panel.targets.push(target);
|
||||
this.nextRefId = this.dashboard.getNextQueryLetter(this.panel);
|
||||
}
|
||||
|
||||
removeQuery(target) {
|
||||
var index = _.indexOf(this.panel.targets, target);
|
||||
this.panel.targets.splice(index, 1);
|
||||
this.nextRefId = this.dashboard.getNextQueryLetter(this.panel);
|
||||
this.refresh();
|
||||
}
|
||||
|
||||
moveQuery(target, direction) {
|
||||
var index = _.indexOf(this.panel.targets, target);
|
||||
_.move(this.panel.targets, index, index + direction);
|
||||
}
|
||||
}
|
||||
|
||||
export {MetricsPanelCtrl};
|
||||
|
||||
@@ -36,8 +36,10 @@ export class MetricsTabCtrl {
|
||||
}
|
||||
|
||||
this.dsSegment = uiSegmentSrv.newSegment({value: this.current.name, selectMode: true});
|
||||
this.mixedDsSegment = uiSegmentSrv.newSegment({value: 'Add Query', selectMode: true});
|
||||
this.nextRefId = this.getNextQueryLetter();
|
||||
this.mixedDsSegment = uiSegmentSrv.newSegment({value: 'Add Query', selectMode: true, fake: true});
|
||||
|
||||
// update next ref id
|
||||
this.panelCtrl.nextRefId = this.dashboard.getNextQueryLetter(this.panel);
|
||||
}
|
||||
|
||||
getOptions(includeBuiltin) {
|
||||
@@ -61,22 +63,13 @@ export class MetricsTabCtrl {
|
||||
var ds = _.find(this.datasources, {name: this.mixedDsSegment.value});
|
||||
if (ds) {
|
||||
target.datasource = ds.name;
|
||||
this.panelCtrl.panel.targets.push(target);
|
||||
this.panelCtrl.addDataQuery(target);
|
||||
this.mixedDsSegment.value = '';
|
||||
}
|
||||
}
|
||||
|
||||
getNextQueryLetter() {
|
||||
return this.dashboard.getNextQueryLetter(this.panel);
|
||||
}
|
||||
|
||||
addDataQuery() {
|
||||
var target: any = {
|
||||
isNew: true,
|
||||
refId: this.getNextQueryLetter()
|
||||
};
|
||||
this.panelCtrl.panel.targets.push(target);
|
||||
this.nextRefId = this.getNextQueryLetter();
|
||||
addQuery() {
|
||||
this.panelCtrl.addQuery({isNew: true});
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -76,8 +76,18 @@ export class PanelCtrl {
|
||||
profiler.renderingCompleted(this.panel.id, this.timing);
|
||||
}
|
||||
|
||||
shouldSkipRefresh() {
|
||||
// some scenarios we should never ignore refresh
|
||||
if (this.fullscreen || this.dashboard.meta.soloMode || this.dashboard.snapshot) {
|
||||
return false;
|
||||
}
|
||||
|
||||
return !this.isPanelVisible();
|
||||
}
|
||||
|
||||
refresh() {
|
||||
if (!this.isPanelVisible() && !this.dashboard.meta.soloMode && !this.dashboard.snapshot) {
|
||||
// somet
|
||||
if (this.shouldSkipRefresh()) {
|
||||
this.skippedLastRefresh = true;
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -21,7 +21,7 @@ export class QueryRowCtrl {
|
||||
this.panel = this.panelCtrl.panel;
|
||||
|
||||
if (!this.target.refId) {
|
||||
this.target.refId = this.getNextQueryLetter();
|
||||
this.target.refId = this.panelCtrl.dashboard.getNextQueryLetter(this.panel);
|
||||
}
|
||||
|
||||
this.toggleCollapse(true);
|
||||
@@ -40,16 +40,6 @@ export class QueryRowCtrl {
|
||||
this.panelCtrl.refresh();
|
||||
}
|
||||
|
||||
getNextQueryLetter() {
|
||||
var letters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
|
||||
|
||||
return _.find(letters, refId => {
|
||||
return _.every(this.panel.targets, function(other) {
|
||||
return other.refId !== refId;
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
toggleCollapse(init) {
|
||||
if (!this.canCollapse) {
|
||||
return;
|
||||
@@ -87,19 +77,16 @@ export class QueryRowCtrl {
|
||||
delete this.panelCtrl.__collapsedQueryCache[this.target.refId];
|
||||
}
|
||||
|
||||
this.panel.targets = _.without(this.panel.targets, this.target);
|
||||
this.panelCtrl.refresh();
|
||||
this.panelCtrl.removeQuery(this.target);
|
||||
}
|
||||
|
||||
duplicateQuery() {
|
||||
var clone = angular.copy(this.target);
|
||||
clone.refId = this.getNextQueryLetter();
|
||||
this.panel.targets.push(clone);
|
||||
this.panelCtrl.addQuery(clone);
|
||||
}
|
||||
|
||||
moveQuery(direction) {
|
||||
var index = _.indexOf(this.panel.targets, this.target);
|
||||
_.move(this.panel.targets, index, index + direction);
|
||||
this.panelCtrl.moveQuery(this.target, direction);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -2,10 +2,6 @@
|
||||
<div class="gf-form-group">
|
||||
<div class="gf-form-inline">
|
||||
<div class="gf-form">
|
||||
<label class="gf-form-label">
|
||||
<i class="icon-gf icon-gf-datasources"></i>
|
||||
</label>
|
||||
|
||||
<label class="gf-form-label">
|
||||
Data Source
|
||||
</label>
|
||||
@@ -31,9 +27,9 @@
|
||||
<span class="gf-form-query-letter-cell-carret">
|
||||
<i class="fa fa-caret-down"></i>
|
||||
</span>
|
||||
<span class="gf-form-query-letter-cell-letter">{{ctrl.nextRefId}}</span>
|
||||
<span class="gf-form-query-letter-cell-letter">{{ctrl.panelCtrl.nextRefId}}</span>
|
||||
</label>
|
||||
<button class="btn btn-inverse gf-form-btn" ng-click="ctrl.addDataQuery()" ng-hide="ctrl.current.meta.mixed">
|
||||
<button class="btn btn-inverse gf-form-btn" ng-click="ctrl.addQuery()" ng-hide="ctrl.current.meta.mixed">
|
||||
Add Query
|
||||
</button>
|
||||
|
||||
|
||||
Reference in New Issue
Block a user