From 78d93315a90a99381d4923d2dfa75e683928bef4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Torkel=20=C3=96degaard?= Date: Wed, 20 Mar 2019 12:06:40 +0100 Subject: [PATCH 1/2] fix(graphite): nonNegativeDerivative argument hidden if 0, fixes #12488 --- public/app/plugins/datasource/graphite/func_editor.ts | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/public/app/plugins/datasource/graphite/func_editor.ts b/public/app/plugins/datasource/graphite/func_editor.ts index f2522f2ab18..25c007fcb19 100644 --- a/public/app/plugins/datasource/graphite/func_editor.ts +++ b/public/app/plugins/datasource/graphite/func_editor.ts @@ -183,8 +183,9 @@ export function graphiteFuncEditor($compile, templateSrv, popoverSrv) { } let paramValue = templateSrv.highlightVariablesAsHtml(func.params[index]); + const hasValue = paramValue !== null && paramValue !== undefined; - const last = index >= func.params.length - 1 && param.optional && !paramValue; + const last = index >= func.params.length - 1 && param.optional && !hasValue; if (last && param.multiple) { paramValue = '+'; } @@ -197,7 +198,7 @@ export function graphiteFuncEditor($compile, templateSrv, popoverSrv) { '' + - (paramValue || ' ') + + (hasValue ? paramValue : ' ') + '' ); const $input = $(paramTemplate); From a9cc8a8992267fa913402043c14f4316b090ef98 Mon Sep 17 00:00:00 2001 From: ryan Date: Wed, 20 Mar 2019 09:45:19 -0700 Subject: [PATCH 2/2] update table data model --- packages/grafana-ui/src/types/data.ts | 21 ++++++++++++++++--- .../grafana-ui/src/utils/processTableData.ts | 5 +++-- .../datasource/influxdb/influx_series.ts | 3 ++- .../prometheus/result_transformer.ts | 4 ++-- 4 files changed, 25 insertions(+), 8 deletions(-) diff --git a/packages/grafana-ui/src/types/data.ts b/packages/grafana-ui/src/types/data.ts index ab177eb8888..69d5261ba3c 100644 --- a/packages/grafana-ui/src/types/data.ts +++ b/packages/grafana-ui/src/types/data.ts @@ -50,14 +50,29 @@ export enum NullValueMode { /** View model projection of many time series */ export type TimeSeriesVMs = TimeSeriesVM[]; +export enum ColumnType { + time = 'time', // or date + number = 'number', + string = 'string', + boolean = 'boolean', + other = 'other', // Object, Array, etc +} + export interface Column { text: string; // The column name - type?: 'time' | 'number' | 'string' | 'object'; // not used anywhere? can we remove? - filterable?: boolean; // currently only set by elasticsearch, and used in the table panel + type?: ColumnType; + filterable?: boolean; unit?: string; + dateFormat?: string; // Source data format +} + +export interface Tags { + [key: string]: string; } export interface TableData { + name?: string; columns: Column[]; - rows: any[]; + rows: any[][]; + tags?: Tags; } diff --git a/packages/grafana-ui/src/utils/processTableData.ts b/packages/grafana-ui/src/utils/processTableData.ts index d4a91efd622..b7226fb2937 100644 --- a/packages/grafana-ui/src/utils/processTableData.ts +++ b/packages/grafana-ui/src/utils/processTableData.ts @@ -3,7 +3,7 @@ import isNumber from 'lodash/isNumber'; import Papa, { ParseError, ParseMeta } from 'papaparse'; // Types -import { TableData, Column, TimeSeries } from '../types'; +import { TableData, Column, TimeSeries, ColumnType } from '../types'; // Subset of all parse options export interface TableParseOptions { @@ -131,6 +131,7 @@ export function parseCSV(text: string, options?: TableParseOptions, details?: Ta function convertTimeSeriesToTableData(timeSeries: TimeSeries): TableData { return { + name: timeSeries.target, columns: [ { text: timeSeries.target || 'Value', @@ -138,7 +139,7 @@ function convertTimeSeriesToTableData(timeSeries: TimeSeries): TableData { }, { text: 'Time', - type: 'time', + type: ColumnType.time, unit: 'dateTimeAsIso', }, ], diff --git a/public/app/plugins/datasource/influxdb/influx_series.ts b/public/app/plugins/datasource/influxdb/influx_series.ts index 10c1584f488..fedeffca942 100644 --- a/public/app/plugins/datasource/influxdb/influx_series.ts +++ b/public/app/plugins/datasource/influxdb/influx_series.ts @@ -1,5 +1,6 @@ import _ from 'lodash'; import TableModel from 'app/core/table_model'; +import { ColumnType } from '@grafana/ui'; export default class InfluxSeries { series: any; @@ -156,7 +157,7 @@ export default class InfluxSeries { // Check that the first column is indeed 'time' if (series.columns[0] === 'time') { // Push this now before the tags and with the right type - table.columns.push({ text: 'Time', type: 'time' }); + table.columns.push({ text: 'Time', type: ColumnType.time }); j++; } _.each(_.keys(series.tags), key => { diff --git a/public/app/plugins/datasource/prometheus/result_transformer.ts b/public/app/plugins/datasource/prometheus/result_transformer.ts index b0fab2564eb..5815d10adcf 100644 --- a/public/app/plugins/datasource/prometheus/result_transformer.ts +++ b/public/app/plugins/datasource/prometheus/result_transformer.ts @@ -1,6 +1,6 @@ import _ from 'lodash'; import TableModel from 'app/core/table_model'; -import { TimeSeries } from '@grafana/ui'; +import { TimeSeries, ColumnType } from '@grafana/ui'; export class ResultTransformer { constructor(private templateSrv) {} @@ -98,7 +98,7 @@ export class ResultTransformer { // Sort metric labels, create columns for them and record their index const sortedLabels = _.keys(metricLabels).sort(); - table.columns.push({ text: 'Time', type: 'time' }); + table.columns.push({ text: 'Time', type: ColumnType.time }); _.each(sortedLabels, (label, labelIndex) => { metricLabels[label] = labelIndex + 1; table.columns.push({ text: label, filterable: true });