fix(ui): handle flux tables with no time column
parent
0433845c26
commit
f89482808c
|
@ -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 (!NUMERIC_DATATYPES.includes(dataType)) {
|
||||
nonNumericColumns.push(columnName)
|
||||
continue
|
||||
}
|
||||
|
||||
const uniqueColumnName = fluxTableKey(table, columnName)
|
||||
|
||||
columnNames[i] = uniqueColumnName
|
||||
allColumnNames.push(uniqueColumnName)
|
||||
}
|
||||
|
||||
if (table.groupKey[columnName]) {
|
||||
continue
|
||||
let timeIndex = header.indexOf('_time')
|
||||
|
||||
let isTimeFound = true
|
||||
if (timeIndex < 0) {
|
||||
timeIndex = header.indexOf('_stop')
|
||||
if (timeIndex < 0) {
|
||||
return undefined
|
||||
}
|
||||
isTimeFound = false
|
||||
}
|
||||
|
||||
if (!NUMERIC_DATATYPES.includes(dataType)) {
|
||||
nonNumericColumns.push(columnName)
|
||||
continue
|
||||
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],
|
||||
}),
|
||||
{}
|
||||
)
|
||||
}
|
||||
|
||||
const uniqueColumnName = fluxTableKey(table, columnName)
|
||||
|
||||
columnNames[i] = uniqueColumnName
|
||||
allColumnNames.push(uniqueColumnName)
|
||||
}
|
||||
|
||||
let timeIndex = header.indexOf('_time')
|
||||
|
||||
let isTimeFound = true
|
||||
if (timeIndex < 0) {
|
||||
timeIndex = header.indexOf('_stop')
|
||||
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()
|
||||
}
|
||||
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}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue