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

(cherry picked from commit fb337e5c1d)

Co-authored-by: Dominik Prokop <dominik.prokop@grafana.com>
This commit is contained in:
Grot (@grafanabot)
2021-03-19 11:25:44 +01:00
committed by GitHub
co-authored by Dominik Prokop
parent fbf3469e80
commit 1df1d60e1e
2 changed files with 18 additions and 7 deletions
@@ -7,6 +7,7 @@ import {
DataFrameFieldIndex, DataFrameFieldIndex,
FieldMatcherID, FieldMatcherID,
fieldMatchers, fieldMatchers,
FieldType,
TimeRange, TimeRange,
TimeZone, TimeZone,
} from '@grafana/data'; } from '@grafana/data';
@@ -89,7 +90,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,
@@ -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