Skip to content

Commit

Permalink
fix(ui): handle flux tables with no time column
Browse files Browse the repository at this point in the history
  • Loading branch information
sranka committed Aug 16, 2022
1 parent 7a855c6 commit c0957d1
Showing 1 changed file with 51 additions and 47 deletions.
98 changes: 51 additions & 47 deletions ui/src/shared/parsing/flux/parseTablesByTime.ts
Original file line number Diff line number Diff line change
Expand Up @@ -42,64 +42,68 @@ export const parseTablesByTime = (
const allColumnNames = []
const nonNumericColumns = []

const tablesByTime = tables.map(table => {
const header = table.data[0] as string[]
const columnNames: {[k: number]: string} = {}
const tablesByTime = tables
.map(table => {
const header = table.data[0] as string[]
const columnNames: {[k: number]: string} = {}

for (let i = 0; i < header.length; i++) {
const columnName = header[i]
const dataType = table.dataTypes[columnName]
for (let i = 0; i < header.length; i++) {
const columnName = header[i]
const dataType = table.dataTypes[columnName]

if (COLUMN_BLACKLIST.has(columnName)) {
continue
}
if (COLUMN_BLACKLIST.has(columnName)) {
continue
}

if (table.groupKey[columnName]) {
continue
}
if (table.groupKey[columnName]) {
continue
}

if (!NUMERIC_DATATYPES.includes(dataType)) {
nonNumericColumns.push(columnName)
continue
}
if (!NUMERIC_DATATYPES.includes(dataType)) {
nonNumericColumns.push(columnName)
continue
}

const uniqueColumnName = fluxTableKey(table, columnName)
const uniqueColumnName = fluxTableKey(table, columnName)

columnNames[i] = uniqueColumnName
allColumnNames.push(uniqueColumnName)
}
columnNames[i] = uniqueColumnName
allColumnNames.push(uniqueColumnName)
}

let timeIndex = header.indexOf('_time')
let timeIndex = header.indexOf('_time')

let isTimeFound = true
if (timeIndex < 0) {
timeIndex = header.indexOf('_stop')
isTimeFound = false
}
let isTimeFound = true
if (timeIndex < 0) {
timeIndex = header.indexOf('_stop')
if (timeIndex < 0) {
return undefined
}
isTimeFound = false
}

const result = {}
for (let i = 1; i < table.data.length; i++) {
const row = table.data[i]
const timeValue = row[timeIndex]
let time = ''

if (isTimeFound) {
time = timeValue.toString()
} else {
// _stop and _start have values in date string format instead of number
time = Date.parse(timeValue as string).toString()
const result = {}
for (let i = 1; i < table.data.length; i++) {
const row = table.data[i]
const timeValue = row[timeIndex]
let time: string
if (isTimeFound) {
time = timeValue.toString()
} else {
// _stop and _start have values in date string format instead of number
time = Date.parse(timeValue as string).toString()
}
result[time] = Object.entries(columnNames).reduce(
(acc, [valueIndex, columnName]) => ({
...acc,
[columnName]: row[valueIndex],
}),
{}
)
}
result[time] = Object.entries(columnNames).reduce(
(acc, [valueIndex, columnName]) => ({
...acc,
[columnName]: row[valueIndex],
}),
{}
)
}

return result
})
return result
})
.filter(x => x !== undefined)

return {nonNumericColumns, tablesByTime, allColumnNames}
}

0 comments on commit c0957d1

Please sign in to comment.