GraphNG: Ignore string fields when building data for uPlot in GraphNG (#32150)

This commit is contained in:
Dominik Prokop 2021-03-19 10:43:55 +01:00 committed by GitHub
parent ea484312a0
commit fb337e5c1d
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 18 additions and 7 deletions

View File

@ -7,6 +7,7 @@ import {
DataFrameFieldIndex, DataFrameFieldIndex,
FieldMatcherID, FieldMatcherID,
fieldMatchers, fieldMatchers,
FieldType,
TimeRange, TimeRange,
TimeZone, TimeZone,
} from '@grafana/data'; } from '@grafana/data';
@ -92,7 +93,7 @@ class UnthemedGraphNG extends React.Component<GraphNGProps, GraphNGState> {
return { return {
...state, ...state,
data: preparePlotData(frame), data: preparePlotData(frame, [FieldType.string]),
alignedDataFrame: frame, alignedDataFrame: frame,
seriesToDataFrameFieldIndexMap: frame.fields.map((f) => f.state!.origin!), seriesToDataFrameFieldIndexMap: frame.fields.map((f) => f.state!.origin!),
dimFields, dimFields,

View File

@ -33,21 +33,31 @@ export function buildPlotConfig(props: PlotProps, plugins: Record<string, PlotPl
} }
/** @internal */ /** @internal */
export function preparePlotData(frame: DataFrame): AlignedData { export function preparePlotData(frame: DataFrame, ignoreFieldTypes?: FieldType[]): AlignedData {
return frame.fields.map((f) => { const result: any[] = [];
for (let i = 0; i < frame.fields.length; i++) {
const f = frame.fields[i];
if (f.type === FieldType.time) { if (f.type === FieldType.time) {
if (f.values.length > 0 && typeof f.values.get(0) === 'string') { if (f.values.length > 0 && typeof f.values.get(0) === 'string') {
const timestamps = []; const timestamps = [];
for (let i = 0; i < f.values.length; i++) { for (let i = 0; i < f.values.length; i++) {
timestamps.push(dateTime(f.values.get(i)).valueOf()); timestamps.push(dateTime(f.values.get(i)).valueOf());
} }
return timestamps; result.push(timestamps);
continue;
} }
return f.values.toArray(); result.push(f.values.toArray());
continue;
} }
return f.values.toArray(); if (ignoreFieldTypes && ignoreFieldTypes.indexOf(f.type) > -1) {
}) as AlignedData; continue;
}
result.push(f.values.toArray());
}
return result as AlignedData;
} }
// Dev helpers // Dev helpers