module.ts 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. ///<reference path="../../../headers/common.d.ts" />
  2. import angular from 'angular';
  3. import _ from 'lodash';
  4. import {MysqlDatasource} from './datasource';
  5. import {QueryCtrl} from 'app/plugins/sdk';
  6. export interface MysqlQuery {
  7. refId: string;
  8. format: string;
  9. alias: string;
  10. rawSql: string;
  11. }
  12. export interface QueryMeta {
  13. sql: string;
  14. }
  15. var defaulQuery = `SELECT
  16. UNIX_TIMESTAMP(<time_column>) as time_sec,
  17. <value column> as value,
  18. <series name column> as metric
  19. FROM <table name>
  20. WHERE $__timeFilter(time_column)
  21. ORDER BY <time_column> ASC
  22. `;
  23. class MysqlQueryCtrl extends QueryCtrl {
  24. static templateUrl = 'partials/query.editor.html';
  25. showLastQuerySQL: boolean;
  26. formats: any[];
  27. target: MysqlQuery;
  28. lastQueryMeta: QueryMeta;
  29. lastQueryError: string;
  30. showHelp: boolean;
  31. constructor($scope, $injector) {
  32. super($scope, $injector);
  33. this.target.format = this.target.format || 'time_series';
  34. this.target.alias = "";
  35. this.formats = [
  36. {text: 'Time series', value: 'time_series'},
  37. {text: 'Table', value: 'table'},
  38. ];
  39. if (!this.target.rawSql) {
  40. this.target.rawSql = defaulQuery;
  41. }
  42. this.panelCtrl.events.on('data-received', this.onDataReceived.bind(this), $scope);
  43. this.panelCtrl.events.on('data-error', this.onDataError.bind(this), $scope);
  44. }
  45. onDataReceived(dataList) {
  46. this.lastQueryMeta = null;
  47. this.lastQueryError = null;
  48. let anySeriesFromQuery = _.find(dataList, {refId: this.target.refId});
  49. if (anySeriesFromQuery) {
  50. this.lastQueryMeta = anySeriesFromQuery.meta;
  51. }
  52. }
  53. onDataError(err) {
  54. if (err.data && err.data.results) {
  55. let queryRes = err.data.results[this.target.refId];
  56. if (queryRes) {
  57. this.lastQueryMeta = queryRes.meta;
  58. this.lastQueryError = queryRes.error;
  59. }
  60. }
  61. }
  62. }
  63. class MysqlConfigCtrl {
  64. static templateUrl = 'partials/config.html';
  65. }
  66. export {
  67. MysqlDatasource,
  68. MysqlDatasource as Datasource,
  69. MysqlQueryCtrl as QueryCtrl,
  70. MysqlConfigCtrl as ConfigCtrl,
  71. };