| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384 |
- ///<reference path="../../../headers/common.d.ts" />
- import _ from "lodash";
- import { QueryCtrl } from "app/plugins/sdk";
- export interface PostgresQuery {
- refId: string;
- format: string;
- alias: string;
- rawSql: string;
- }
- export interface QueryMeta {
- sql: string;
- }
- const defaultQuery = `SELECT
- $__time(time_column),
- value1
- FROM
- metric_table
- WHERE
- $__timeFilter(time_column)
- `;
- export class PostgresQueryCtrl extends QueryCtrl {
- static templateUrl = "partials/query.editor.html";
- showLastQuerySQL: boolean;
- formats: any[];
- target: PostgresQuery;
- 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) {
- // special handling when in table panel
- if (this.panelCtrl.panel.type === "table") {
- this.target.format = "table";
- this.target.rawSql = "SELECT 1";
- } else {
- this.target.rawSql = defaultQuery;
- }
- }
- 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;
- }
- }
- }
- }
|