mirror of https://github.com/grafana/grafana
parent
7784e4e24b
commit
2b029912aa
@ -0,0 +1,79 @@ |
||||
///<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; |
||||
} |
||||
} |
||||
} |
||||
} |
||||
|
||||
|
||||
Loading…
Reference in new issue