|
|
@@ -1,25 +1,61 @@
|
|
|
///<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';
|
|
|
|
|
|
- resultFormats: any;
|
|
|
- target: any;
|
|
|
+ showLastQuerySQL: boolean;
|
|
|
+ formats: any[];
|
|
|
+ target: MysqlQuery;
|
|
|
+ lastQueryMeta: QueryMeta;
|
|
|
+ lastQueryError: string;
|
|
|
|
|
|
constructor($scope, $injector) {
|
|
|
super($scope, $injector);
|
|
|
|
|
|
- this.target.resultFormat = 'time_series';
|
|
|
+ this.target.format = 'time_series';
|
|
|
this.target.alias = "";
|
|
|
- this.resultFormats = [
|
|
|
+ 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;
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
|