diff --git a/ui/src/kapacitor/components/RuleGraphDygraph.tsx b/ui/src/kapacitor/components/RuleGraphDygraph.tsx index ee7a8062a..f9fc58f9b 100644 --- a/ui/src/kapacitor/components/RuleGraphDygraph.tsx +++ b/ui/src/kapacitor/components/RuleGraphDygraph.tsx @@ -64,6 +64,17 @@ class RuleGraphDygraph extends Component { if (!timeSeriesToDygraphResult) { return null } + if (timeSeriesToDygraphResult.unsupportedValue) { + console.error( + 'Unsupported y-axis value, cannot display data', + timeSeriesToDygraphResult + ) + return ( +

+ Unsupported y-axis value, only numbers are supported. +

+ ) + } return ( { const newFields = _.get(fieldSets, measurement, []).map(f => ({ value: f, type: 'field', - })) + })) as Field[] this.setState({ - fields: newFields, + fields: _.uniqBy(newFields, 'value'), // do not duplicate items }) }) } diff --git a/ui/src/utils/timeSeriesTransformers.ts b/ui/src/utils/timeSeriesTransformers.ts index 32a9811fe..acd112455 100644 --- a/ui/src/utils/timeSeriesTransformers.ts +++ b/ui/src/utils/timeSeriesTransformers.ts @@ -11,6 +11,7 @@ export interface TimeSeriesToDyGraphReturnType { labels: string[] timeSeries: DygraphValue[][] dygraphSeries: DygraphSeries + unsupportedValue?: any } export const timeSeriesToDygraph = async ( @@ -19,12 +20,18 @@ export const timeSeriesToDygraph = async ( ): Promise => { const result = await manager.timeSeriesToDygraph(raw, pathname) const {timeSeries} = result + let unsupportedValue: any const newTimeSeries = fastMap( timeSeries, - ([time, ...values]) => [new Date(time), ...values] + ([time, ...values]) => { + if (unsupportedValue === undefined) { + unsupportedValue = values.find(x => x !== null && typeof x !== 'number') + } + return [new Date(time), ...values] + } ) - return {...result, timeSeries: newTimeSeries} + return {...result, timeSeries: newTimeSeries, unsupportedValue} } export const timeSeriesToTableGraph = async (