diff --git a/packages/grafana-data/src/transformations/matchers/valueMatchers/rangeMatchers.ts b/packages/grafana-data/src/transformations/matchers/valueMatchers/rangeMatchers.ts index c467e5aa993..c16b426fe9d 100644 --- a/packages/grafana-data/src/transformations/matchers/valueMatchers/rangeMatchers.ts +++ b/packages/grafana-data/src/transformations/matchers/valueMatchers/rangeMatchers.ts @@ -14,14 +14,25 @@ const isBetweenValueMatcher: ValueMatcherInfo = { if (isNaN(value)) { return false; } - return value > options.from && value < options.to; + + // if it is a time, it is interpolated as a string, so convert before comparing + const fromVal = typeof options.from !== 'number' ? parseInt(options.from, 10) : options.from; + const toVal = typeof options.to !== 'number' ? parseInt(options.to, 10) : options.to; + + return value > fromVal && value < toVal; }; }, getOptionsDisplayText: (options) => { return `Matches all rows where field value is between ${options.from} and ${options.to}.`; }, - isApplicable: (field) => field.type === FieldType.number, - getDefaultOptions: () => ({ from: 0, to: 100 }), + isApplicable: (field) => field.type === FieldType.number || field.type === FieldType.time, + getDefaultOptions: (field) => { + if (field.type === FieldType.time) { + return { from: '$__from', to: '$__to' }; + } else { + return { from: 0, to: 100 }; + } + }, }; export const getRangeValueMatchers = (): ValueMatcherInfo[] => [isBetweenValueMatcher];