From 2892a22e04d4c7325e4d531b5cd6f93a71942166 Mon Sep 17 00:00:00 2001 From: ebb-tide Date: Wed, 25 Apr 2018 13:33:50 -0700 Subject: [PATCH] Handle responses from queries with errors --- ui/src/utils/groupBy.js | 25 ++++++++++++++++--------- 1 file changed, 16 insertions(+), 9 deletions(-) diff --git a/ui/src/utils/groupBy.js b/ui/src/utils/groupBy.js index 74e9e7b09a..dc6869c7aa 100644 --- a/ui/src/utils/groupBy.js +++ b/ui/src/utils/groupBy.js @@ -2,8 +2,11 @@ import _ from 'lodash' import {shiftDate} from 'shared/query/helpers' import {map, reduce, forEach, concat, clone} from 'fast.js' -const groupByMap = (responses, responseIndex, groupByColumns) => { - const firstColumns = _.get(responses, [0, 'series', 0, 'columns']) +const groupByMap = (results, responseIndex, groupByColumns) => { + if (_.isEmpty(results)) { + return [] + } + const firstColumns = _.get(results, [0, 'series', 0, 'columns']) const accum = [ { responseIndex, @@ -15,14 +18,14 @@ const groupByMap = (responses, responseIndex, groupByColumns) => { ...firstColumns.slice(1), ], groupByColumns, - name: _.get(responses, [0, 'series', 0, 'name']), + name: _.get(results, [0, 'series', 0, 'name']), values: [], }, ], }, ] - const seriesArray = _.get(responses, [0, 'series']) + const seriesArray = _.get(results, [0, 'series']) seriesArray.forEach(s => { const prevValues = accum[0].series[0].values const tagsToAdd = groupByColumns.map(gb => s.tags[gb]) @@ -35,13 +38,17 @@ const groupByMap = (responses, responseIndex, groupByColumns) => { const constructResults = (raw, groupBys) => { return _.flatten( map(raw, (response, index) => { - const responses = _.get(response, 'response.results', []) + const results = _.get(response, 'response.results', []) + + const successfulResults = _.filter( + results, + r => !_.get(r, 'error', false) + ) if (groupBys[index]) { - return groupByMap(responses, index, groupBys[index]) + return groupByMap(successfulResults, index, groupBys[index]) } - - return map(responses, r => ({...r, responseIndex: index})) + return map(successfulResults, r => ({...r, responseIndex: index})) }) ) } @@ -221,8 +228,8 @@ export const groupByTimeSeriesTransform = (raw, groupBys) => { if (!groupBys) { groupBys = Array(raw.length).fill(false) } - const results = constructResults(raw, groupBys) + const results = constructResults(raw, groupBys) const serieses = constructSerieses(results) const {cells, sortedLabels, seriesLabels} = constructCells(serieses)