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

View File

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