| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109 |
- ///<reference path="../../headers/common.d.ts" />
- import angular from 'angular';
- var module = angular.module('grafana.directives');
- export class QueryRowCtrl {
- collapsedText: string;
- canCollapse: boolean;
- getCollapsedText: any;
- target: any;
- queryCtrl: any;
- panelCtrl: any;
- panel: any;
- collapsed: any;
- constructor() {
- this.panelCtrl = this.queryCtrl.panelCtrl;
- this.target = this.queryCtrl.target;
- this.panel = this.panelCtrl.panel;
- if (!this.target.refId) {
- this.target.refId = this.panelCtrl.dashboard.getNextQueryLetter(this.panel);
- }
- this.toggleCollapse(true);
- if (this.target.isNew) {
- delete this.target.isNew;
- this.toggleCollapse(false);
- }
- if (this.panel.targets.length < 4) {
- this.collapsed = false;
- }
- }
- toggleHideQuery() {
- this.target.hide = !this.target.hide;
- this.panelCtrl.refresh();
- }
- toggleCollapse(init) {
- if (!this.canCollapse) {
- return;
- }
- if (!this.panelCtrl.__collapsedQueryCache) {
- this.panelCtrl.__collapsedQueryCache = {};
- }
- if (init) {
- this.collapsed = this.panelCtrl.__collapsedQueryCache[this.target.refId] !== false;
- } else {
- this.collapsed = !this.collapsed;
- this.panelCtrl.__collapsedQueryCache[this.target.refId] = this.collapsed;
- }
- try {
- this.collapsedText = this.queryCtrl.getCollapsedText();
- } catch (e) {
- var err = e.message || e.toString();
- this.collapsedText = 'Error: ' + err;
- }
- }
- toggleEditorMode() {
- if (this.canCollapse && this.collapsed) {
- this.collapsed = false;
- }
- this.queryCtrl.toggleEditorMode();
- }
- removeQuery() {
- if (this.panelCtrl.__collapsedQueryCache) {
- delete this.panelCtrl.__collapsedQueryCache[this.target.refId];
- }
- this.panelCtrl.removeQuery(this.target);
- }
- duplicateQuery() {
- var clone = angular.copy(this.target);
- this.panelCtrl.addQuery(clone);
- }
- moveQuery(direction) {
- this.panelCtrl.moveQuery(this.target, direction);
- }
- }
- /** @ngInject **/
- function queryEditorRowDirective() {
- return {
- restrict: 'E',
- controller: QueryRowCtrl,
- bindToController: true,
- controllerAs: "ctrl",
- templateUrl: 'public/app/features/panel/partials/query_editor_row.html',
- transclude: true,
- scope: {
- queryCtrl: "=",
- canCollapse: "=",
- hasTextEditMode: "=",
- },
- };
- }
- module.directive('queryEditorRow', queryEditorRowDirective);
|