mirror of
https://github.com/grafana/grafana.git
synced 2025-07-29 20:42:40 +08:00
73 lines
1.7 KiB
TypeScript
73 lines
1.7 KiB
TypeScript
///<reference path="../../../headers/common.d.ts" />
|
|
|
|
import angular from 'angular';
|
|
import _ from 'lodash';
|
|
import {MysqlDatasource} from './datasource';
|
|
import {QueryCtrl} from 'app/plugins/sdk';
|
|
|
|
export interface MysqlQuery {
|
|
refId: string;
|
|
format: string;
|
|
alias: string;
|
|
}
|
|
|
|
export interface QueryMeta {
|
|
sql: string;
|
|
}
|
|
|
|
class MysqlQueryCtrl extends QueryCtrl {
|
|
static templateUrl = 'partials/query.editor.html';
|
|
|
|
showLastQuerySQL: boolean;
|
|
formats: any[];
|
|
target: MysqlQuery;
|
|
lastQueryMeta: QueryMeta;
|
|
lastQueryError: string;
|
|
|
|
constructor($scope, $injector) {
|
|
super($scope, $injector);
|
|
|
|
this.target.format = 'time_series';
|
|
this.target.alias = "";
|
|
this.formats = [
|
|
{text: 'Time series', value: 'time_series'},
|
|
{text: 'Table', value: 'table'},
|
|
];
|
|
|
|
this.panelCtrl.events.on('data-received', this.onDataReceived.bind(this), $scope);
|
|
this.panelCtrl.events.on('data-error', this.onDataError.bind(this), $scope);
|
|
}
|
|
|
|
onDataReceived(dataList) {
|
|
this.lastQueryMeta = null;
|
|
this.lastQueryError = null;
|
|
|
|
let anySeriesFromQuery = _.find(dataList, {refId: this.target.refId});
|
|
if (anySeriesFromQuery) {
|
|
this.lastQueryMeta = anySeriesFromQuery.meta;
|
|
}
|
|
}
|
|
|
|
onDataError(err) {
|
|
if (err.data && err.data.results) {
|
|
let queryRes = err.data.results[this.target.refId];
|
|
if (queryRes) {
|
|
this.lastQueryMeta = queryRes.meta;
|
|
this.lastQueryError = queryRes.error;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
class MysqlConfigCtrl {
|
|
static templateUrl = 'partials/config.html';
|
|
}
|
|
|
|
export {
|
|
MysqlDatasource,
|
|
MysqlDatasource as Datasource,
|
|
MysqlQueryCtrl as QueryCtrl,
|
|
MysqlConfigCtrl as ConfigCtrl,
|
|
};
|
|
|