| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122 |
- import { DashboardModel } from '../dashboard/dashboard_model';
- import Remarkable from 'remarkable';
- export class MetricsTabCtrl {
- dsName: string;
- panel: any;
- panelCtrl: any;
- datasources: any[];
- datasourceInstance: any;
- nextRefId: string;
- dashboard: DashboardModel;
- panelDsValue: any;
- addQueryDropdown: any;
- queryTroubleshooterOpen: boolean;
- helpOpen: boolean;
- optionsOpen: boolean;
- hasQueryHelp: boolean;
- helpHtml: string;
- queryOptions: any;
- /** @ngInject */
- constructor($scope, private $sce, datasourceSrv, private backendSrv) {
- this.panelCtrl = $scope.ctrl;
- $scope.ctrl = this;
- this.panel = this.panelCtrl.panel;
- this.dashboard = this.panelCtrl.dashboard;
- this.datasources = datasourceSrv.getMetricSources();
- this.panelDsValue = this.panelCtrl.panel.datasource;
- for (const ds of this.datasources) {
- if (ds.value === this.panelDsValue) {
- this.datasourceInstance = ds;
- }
- }
- this.addQueryDropdown = { text: 'Add Query', value: null, fake: true };
- // update next ref id
- this.panelCtrl.nextRefId = this.dashboard.getNextQueryLetter(this.panel);
- this.updateDatasourceOptions();
- }
- updateDatasourceOptions() {
- if (this.datasourceInstance) {
- this.hasQueryHelp = this.datasourceInstance.meta.hasQueryHelp;
- this.queryOptions = this.datasourceInstance.meta.queryOptions;
- }
- }
- getOptions(includeBuiltin) {
- return Promise.resolve(
- this.datasources
- .filter(value => {
- return includeBuiltin || !value.meta.builtIn;
- })
- .map(ds => {
- return { value: ds.value, text: ds.name, datasource: ds };
- })
- );
- }
- datasourceChanged(option) {
- if (!option) {
- return;
- }
- this.datasourceInstance = option.datasource;
- this.panelCtrl.setDatasource(option.datasource);
- this.updateDatasourceOptions();
- }
- addMixedQuery(option) {
- if (!option) {
- return;
- }
- this.panelCtrl.addQuery({
- isNew: true,
- datasource: option.datasource.name,
- });
- this.addQueryDropdown = { text: 'Add Query', value: null, fake: true };
- }
- addQuery() {
- this.panelCtrl.addQuery({ isNew: true });
- }
- toggleHelp() {
- this.optionsOpen = false;
- this.queryTroubleshooterOpen = false;
- this.helpOpen = !this.helpOpen;
- this.backendSrv.get(`/api/plugins/${this.datasourceInstance.meta.id}/markdown/query_help`).then(res => {
- const md = new Remarkable();
- this.helpHtml = this.$sce.trustAsHtml(md.render(res));
- });
- }
- toggleOptions() {
- this.helpOpen = false;
- this.queryTroubleshooterOpen = false;
- this.optionsOpen = !this.optionsOpen;
- }
- toggleQueryTroubleshooter() {
- this.helpOpen = false;
- this.optionsOpen = false;
- this.queryTroubleshooterOpen = !this.queryTroubleshooterOpen;
- }
- }
- /** @ngInject */
- export function metricsTabDirective() {
- 'use strict';
- return {
- restrict: 'E',
- scope: true,
- templateUrl: 'public/app/features/panel/partials/metrics_tab.html',
- controller: MetricsTabCtrl,
- };
- }
|