| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879 |
- ///<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;
- rawSql: string;
- }
- export interface QueryMeta {
- sql: string;
- }
- var defaulQuery = `SELECT
- UNIX_TIMESTAMP(<time_column>) as time_sec,
- <value column> as value,
- <series name column> as metric
- FROM <table name>
- WHERE $__timeFilter(time_column)
- ORDER BY <time_column> ASC
- `;
- export class MysqlQueryCtrl extends QueryCtrl {
- static templateUrl = 'partials/query.editor.html';
- showLastQuerySQL: boolean;
- formats: any[];
- target: MysqlQuery;
- lastQueryMeta: QueryMeta;
- lastQueryError: string;
- showHelp: boolean;
- /** @ngInject **/
- constructor($scope, $injector) {
- super($scope, $injector);
- this.target.format = this.target.format || 'time_series';
- this.target.alias = "";
- this.formats = [
- {text: 'Time series', value: 'time_series'},
- {text: 'Table', value: 'table'},
- ];
- if (!this.target.rawSql) {
- this.target.rawSql = defaulQuery;
- }
- 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;
- }
- }
- }
- }
|