From 05ac44380bec73ef7662b3a7a7c02a1add6a0002 Mon Sep 17 00:00:00 2001 From: Andrew Watkins Date: Tue, 7 Nov 2017 13:44:39 -0800 Subject: [PATCH] Add shifted query if query is shifted --- ui/src/shared/query/helpers.js | 1 + ui/src/utils/buildQueriesForGraphs.js | 49 ++++++++++++++++++--------- 2 files changed, 34 insertions(+), 16 deletions(-) diff --git a/ui/src/shared/query/helpers.js b/ui/src/shared/query/helpers.js index 54407062cb..77eb36318d 100644 --- a/ui/src/shared/query/helpers.js +++ b/ui/src/shared/query/helpers.js @@ -46,6 +46,7 @@ export const shiftTimeRange = (timeRange, shift) => { const type = 'shifted' switch (trType) { + case RELATIVE_UPPER: case ABSOLUTE: { return { lower: `${lower} - ${duration}`, diff --git a/ui/src/utils/buildQueriesForGraphs.js b/ui/src/utils/buildQueriesForGraphs.js index 46e5cfc6a9..a3be70d005 100644 --- a/ui/src/utils/buildQueriesForGraphs.js +++ b/ui/src/utils/buildQueriesForGraphs.js @@ -1,28 +1,45 @@ import {buildQuery} from 'utils/influxql' +import {shiftTimeRange} from 'shared/query/helpers' import {TYPE_QUERY_CONFIG} from 'src/dashboards/constants' -const buildQueries = (proxy, queryConfigs, timeRange) => { +const buildQueries = (proxy, queryConfigs, tR) => { const statements = queryConfigs.map(query => { - const text = - query.rawText || - buildQuery(TYPE_QUERY_CONFIG, query.range || timeRange, query) - return {text, id: query.id, queryConfig: query} - }) + const {rawText, range, id, shift, database, measurement, fields} = query + const timeRange = range || tR + const text = rawText || buildQuery(TYPE_QUERY_CONFIG, timeRange, query) + const isParsable = database && measurement && fields.length - const queries = statements.filter(s => s.text !== null).map(s => { - let queryProxy = '' - if (s.queryConfig.source) { - queryProxy = `${s.queryConfig.source.links.proxy}` + if (shift && isParsable) { + const shiftedQuery = buildQuery( + TYPE_QUERY_CONFIG, + shiftTimeRange(timeRange, shift), + query + ) + + return {text: `${text};${shiftedQuery}`, id, queryConfig: query} } - return { - host: [queryProxy || proxy], - text: s.text, - id: s.id, - queryConfig: s.queryConfig, - } + return {text, id, queryConfig: query} }) + const queries = statements + .filter(s => s.text !== null) + .map(({queryConfig, text, id}) => { + let queryProxy = '' + if (queryConfig.source) { + queryProxy = `${queryConfig.source.links.proxy}` + } + + const host = [queryProxy || proxy] + + return { + host, + text, + id, + queryConfig, + } + }) + return queries }