Handle responses from queries with errors

pull/10616/head
ebb-tide 2018-04-25 13:33:50 -07:00
parent 5a1b6a5698
commit 2892a22e04
1 changed files with 16 additions and 9 deletions

View File

@ -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)