From 607b94aaa2cde6e93c329ef0990733d2f1f85d07 Mon Sep 17 00:00:00 2001 From: Ryan McKinley Date: Thu, 20 Apr 2023 22:03:38 -0700 Subject: [PATCH] FieldValues: Use standard array functions (#67012) --- .betterer.results | 6 +++-- .../src/dataframe/MutableDataFrame.ts | 12 +++++----- .../grafana-data/src/field/fieldComparers.ts | 11 ++++----- .../src/transformations/fieldReducer.ts | 2 +- .../transformers/groupingToMatrix.ts | 6 ++--- .../transformers/joinDataFrames.ts | 4 ++-- packages/grafana-data/src/utils/flotPairs.ts | 4 ++-- .../src/components/Sparkline/Sparkline.tsx | 2 +- .../unified/components/rule-editor/preview.ts | 4 ++-- public/app/features/dimensions/utils.ts | 2 +- .../hooks/useSearchKeyboardSelection.ts | 2 +- .../page/components/ExplainScorePopup.tsx | 4 ++-- .../search/page/components/columns.tsx | 2 +- public/app/features/search/service/bluge.ts | 2 +- .../timeSeriesTableTransformer.ts | 4 ++-- .../datasource/loki/getDerivedFields.ts | 2 +- .../loki/liveStreamsResultTransformer.ts | 6 ++--- .../prometheus/result_transformer.ts | 14 +++++------ .../datasource/tempo/resultTransformer.ts | 6 ++--- .../datasource/testdata/nodeGraphUtils.ts | 24 +++++++++---------- .../plugins/datasource/testdata/runStreams.ts | 4 ++-- public/app/plugins/panel/nodeGraph/utils.ts | 4 ++-- .../state-timeline/StateTimelineTooltip.tsx | 12 +++++----- 23 files changed, 70 insertions(+), 69 deletions(-) diff --git a/.betterer.results b/.betterer.results index 51c721f7b70..e821ba95673 100644 --- a/.betterer.results +++ b/.betterer.results @@ -284,8 +284,7 @@ exports[`better eslint`] = { [0, 0, 0, "Unexpected any. Specify a different type.", "1"] ], "packages/grafana-data/src/transformations/transformers/groupingToMatrix.ts:5381": [ - [0, 0, 0, "Unexpected any. Specify a different type.", "0"], - [0, 0, 0, "Unexpected any. Specify a different type.", "1"] + [0, 0, 0, "Unexpected any. Specify a different type.", "0"] ], "packages/grafana-data/src/transformations/transformers/histogram.ts:5381": [ [0, 0, 0, "Do not use any type assertions.", "0"], @@ -293,6 +292,9 @@ exports[`better eslint`] = { [0, 0, 0, "Unexpected any. Specify a different type.", "2"], [0, 0, 0, "Unexpected any. Specify a different type.", "3"] ], + "packages/grafana-data/src/transformations/transformers/joinDataFrames.ts:5381": [ + [0, 0, 0, "Unexpected any. Specify a different type.", "0"] + ], "packages/grafana-data/src/transformations/transformers/merge.ts:5381": [ [0, 0, 0, "Unexpected any. Specify a different type.", "0"], [0, 0, 0, "Unexpected any. Specify a different type.", "1"], diff --git a/packages/grafana-data/src/dataframe/MutableDataFrame.ts b/packages/grafana-data/src/dataframe/MutableDataFrame.ts index 84a58ab6498..77abfa58204 100644 --- a/packages/grafana-data/src/dataframe/MutableDataFrame.ts +++ b/packages/grafana-data/src/dataframe/MutableDataFrame.ts @@ -119,7 +119,7 @@ export class MutableDataFrame extends FunctionalVector implements Da // Make sure the field starts with a given length if (startLength) { while (field.values.length < startLength) { - field.values.add(MISSING_VALUE); + field.values.push(MISSING_VALUE); } } else { this.validate(); @@ -137,7 +137,7 @@ export class MutableDataFrame extends FunctionalVector implements Da // Add empty elements until everything matches for (const field of this.fields) { while (field.values.length !== length) { - field.values.add(MISSING_VALUE); + field.values.push(MISSING_VALUE); } } } @@ -191,7 +191,7 @@ export class MutableDataFrame extends FunctionalVector implements Da if (f.type !== FieldType.string && isString(v)) { v = this.parseValue(f, v); } - f.values.add(v); + f.values.push(v); } } @@ -227,7 +227,7 @@ export class MutableDataFrame extends FunctionalVector implements Da val = MISSING_VALUE; } - field.values.add(val); + field.values.push(val); } } @@ -238,7 +238,7 @@ export class MutableDataFrame extends FunctionalVector implements Da const obj = (value as any) || {}; for (const field of this.fields) { - field.values.set(index, obj[field.name]); + field.values[index] = obj[field.name]; } } @@ -248,7 +248,7 @@ export class MutableDataFrame extends FunctionalVector implements Da get(idx: number): T { const v: any = {}; for (const field of this.fields) { - v[field.name] = field.values.get(idx); + v[field.name] = field.values[idx]; } return v as T; } diff --git a/packages/grafana-data/src/field/fieldComparers.ts b/packages/grafana-data/src/field/fieldComparers.ts index aa709e2ffb7..972b435cd35 100644 --- a/packages/grafana-data/src/field/fieldComparers.ts +++ b/packages/grafana-data/src/field/fieldComparers.ts @@ -2,7 +2,6 @@ import { isNumber } from 'lodash'; import { dateTime, isDateTimeInput } from '../datetime'; import { Field, FieldType } from '../types/dataFrame'; -import { Vector } from '../types/vector'; type IndexComparer = (a: number, b: number) => number; @@ -79,12 +78,12 @@ const falsyComparer = (a: unknown, b: unknown): number => { return 0; }; -const timestampIndexComparer = (values: Vector, reverse: boolean): IndexComparer => { +const timestampIndexComparer = (values: number[], reverse: boolean): IndexComparer => { let mult = reverse ? -1 : 1; return (a: number, b: number): number => mult * (values[a] - values[b]); }; -const timeIndexComparer = (values: Vector, reverse: boolean): IndexComparer => { +const timeIndexComparer = (values: unknown[], reverse: boolean): IndexComparer => { return (a: number, b: number): number => { const vA = values[a]; const vB = values[b]; @@ -92,7 +91,7 @@ const timeIndexComparer = (values: Vector, reverse: boolean): IndexComp }; }; -const booleanIndexComparer = (values: Vector, reverse: boolean): IndexComparer => { +const booleanIndexComparer = (values: boolean[], reverse: boolean): IndexComparer => { return (a: number, b: number): number => { const vA = values[a]; const vB = values[b]; @@ -100,7 +99,7 @@ const booleanIndexComparer = (values: Vector, reverse: boolean): IndexC }; }; -const numericIndexComparer = (values: Vector, reverse: boolean): IndexComparer => { +const numericIndexComparer = (values: number[], reverse: boolean): IndexComparer => { return (a: number, b: number): number => { const vA = values[a]; const vB = values[b]; @@ -108,7 +107,7 @@ const numericIndexComparer = (values: Vector, reverse: boolean): IndexCo }; }; -const stringIndexComparer = (values: Vector, reverse: boolean): IndexComparer => { +const stringIndexComparer = (values: string[], reverse: boolean): IndexComparer => { return (a: number, b: number): number => { const vA = values[a]; const vB = values[b]; diff --git a/packages/grafana-data/src/transformations/fieldReducer.ts b/packages/grafana-data/src/transformations/fieldReducer.ts index a24a62d6af5..103dc14309e 100644 --- a/packages/grafana-data/src/transformations/fieldReducer.ts +++ b/packages/grafana-data/src/transformations/fieldReducer.ts @@ -290,7 +290,7 @@ export function doStandardCalcs(field: Field, ignoreNulls: boolean, nullAsZero: previousDeltaUp: true, }; - const data = field.values.toArray(); // toArray() ensures we handle all vector types + const data = field.values; calcs.count = ignoreNulls ? data.length : data.filter((val) => val != null).length; const isNumberField = field.type === FieldType.number || FieldType.time; diff --git a/packages/grafana-data/src/transformations/transformers/groupingToMatrix.ts b/packages/grafana-data/src/transformations/transformers/groupingToMatrix.ts index cbc4f8652f9..3b5721b7b99 100644 --- a/packages/grafana-data/src/transformations/transformers/groupingToMatrix.ts +++ b/packages/grafana-data/src/transformations/transformers/groupingToMatrix.ts @@ -2,7 +2,7 @@ import { map } from 'rxjs/operators'; import { MutableDataFrame } from '../../dataframe'; import { getFieldDisplayName } from '../../field/fieldState'; -import { DataFrame, DataTransformerInfo, Field, FieldType, SpecialValue, Vector } from '../../types'; +import { DataFrame, DataTransformerInfo, Field, FieldType, SpecialValue } from '../../types'; import { fieldMatchers } from '../matchers'; import { FieldMatcherID } from '../matchers/ids'; @@ -111,8 +111,8 @@ export const groupingToMatrixTransformer: DataTransformerInfo(values: T[]): T[] { + const unique = new Set(); for (let index = 0; index < values.length; index++) { unique.add(values[index]); diff --git a/packages/grafana-data/src/transformations/transformers/joinDataFrames.ts b/packages/grafana-data/src/transformations/transformers/joinDataFrames.ts index 39dfb3f0284..167a3f0ec50 100644 --- a/packages/grafana-data/src/transformations/transformers/joinDataFrames.ts +++ b/packages/grafana-data/src/transformations/transformers/joinDataFrames.ts @@ -1,7 +1,7 @@ import intersect from 'fast_array_intersect'; import { getTimeField, sortDataFrame } from '../../dataframe'; -import { DataFrame, Field, FieldMatcher, FieldType, Vector } from '../../types'; +import { DataFrame, Field, FieldMatcher, FieldType } from '../../types'; import { fieldMatchers } from '../matchers'; import { FieldMatcherID } from '../matchers/ids'; @@ -351,7 +351,7 @@ export function join(tables: AlignedData[], nullModes?: number[][], mode: JoinMo // Test a few samples to see if the values are ascending // Only exported for tests -export function isLikelyAscendingVector(data: Vector | [], samples = 50) { +export function isLikelyAscendingVector(data: any[], samples = 50) { const len = data.length; // empty or single value diff --git a/packages/grafana-data/src/utils/flotPairs.ts b/packages/grafana-data/src/utils/flotPairs.ts index 4780b5c5db0..06cea3086a5 100644 --- a/packages/grafana-data/src/utils/flotPairs.ts +++ b/packages/grafana-data/src/utils/flotPairs.ts @@ -23,8 +23,8 @@ export function getFlotPairs({ xField, yField, nullValueMode }: FlotPairsOptions const pairs: any[][] = []; for (let i = 0; i < length; i++) { - const x = vX.get(i); - let y = vY.get(i); + const x = vX[i]; + let y = vY[i]; if (y === null) { if (ignoreNulls) { diff --git a/packages/grafana-ui/src/components/Sparkline/Sparkline.tsx b/packages/grafana-ui/src/components/Sparkline/Sparkline.tsx index 4f60d99d03e..3604a975b4a 100644 --- a/packages/grafana-ui/src/components/Sparkline/Sparkline.tsx +++ b/packages/grafana-ui/src/components/Sparkline/Sparkline.tsx @@ -135,7 +135,7 @@ export class Sparkline extends PureComponent { return [sparkline.timeRange.from.valueOf(), sparkline.timeRange.to.valueOf()]; } const vals = sparkline.x.values; - return [vals.get(0), vals.get(vals.length - 1)]; + return [vals[0], vals[vals.length - 1]]; } return [0, sparkline.y.values.length - 1]; }, diff --git a/public/app/features/alerting/unified/components/rule-editor/preview.ts b/public/app/features/alerting/unified/components/rule-editor/preview.ts index 04b08ae156c..e6a6376cbfd 100644 --- a/public/app/features/alerting/unified/components/rule-editor/preview.ts +++ b/public/app/features/alerting/unified/components/rule-editor/preview.ts @@ -27,8 +27,8 @@ export function mapDataFrameToAlertPreview({ fields }: DataFrame): AlertPreview for (let index = 0; index < instanceStatusCount; index++) { const labelValues = labelIndexes.map((labelIndex) => [fields[labelIndex].name, fields[labelIndex].values[index]]); - const state = fields[stateFieldIndex]?.values?.get(index); - const info = fields[infoFieldIndex]?.values?.get(index); + const state = fields[stateFieldIndex]?.values?.[index]; + const info = fields[infoFieldIndex]?.values?.[index]; if (isGrafanaAlertState(state)) { instances.push({ diff --git a/public/app/features/dimensions/utils.ts b/public/app/features/dimensions/utils.ts index 139386dc914..9b3c2bccd81 100644 --- a/public/app/features/dimensions/utils.ts +++ b/public/app/features/dimensions/utils.ts @@ -125,7 +125,7 @@ export function getLastNotNullFieldValue(field: Field): T { const data = field.values; let idx = data.length - 1; while (idx >= 0) { - const v = data.get(idx--); + const v = data[idx--]; if (v != null) { return v; } diff --git a/public/app/features/search/hooks/useSearchKeyboardSelection.ts b/public/app/features/search/hooks/useSearchKeyboardSelection.ts index 6533a6d7ebc..ee9a35f11c1 100644 --- a/public/app/features/search/hooks/useSearchKeyboardSelection.ts +++ b/public/app/features/search/hooks/useSearchKeyboardSelection.ts @@ -85,7 +85,7 @@ export function useSearchKeyboardNavigation( setHighlightIndex({ ...highlightIndexRef.current }); break; } - const url = urlsRef.current.values?.get(idx) as string; + const url = urlsRef.current.values?.[idx] as string; if (url) { locationService.push(locationUtil.stripBaseFromUrl(url)); } diff --git a/public/app/features/search/page/components/ExplainScorePopup.tsx b/public/app/features/search/page/components/ExplainScorePopup.tsx index c31b7159553..387118a181b 100644 --- a/public/app/features/search/page/components/ExplainScorePopup.tsx +++ b/public/app/features/search/page/components/ExplainScorePopup.tsx @@ -60,8 +60,8 @@ export function ExplainScorePopup({ name, explain, frame, row }: Props) { showLineNumbers={false} showMiniMap={false} value={(() => { - const allowedActions = frame.fields.find((f) => f.name === 'allowed_actions')?.values?.get(row); - const dsUids = frame.fields.find((f) => f.name === 'ds_uid')?.values?.get(row); + const allowedActions = frame.fields.find((f) => f.name === 'allowed_actions')?.values?.[row]; + const dsUids = frame.fields.find((f) => f.name === 'ds_uid')?.values?.[row]; return JSON.stringify({ dsUids: dsUids ?? [], allowedActions: allowedActions ?? [] }, null, 2); })()} readOnly={false} diff --git a/public/app/features/search/page/components/columns.tsx b/public/app/features/search/page/components/columns.tsx index 831b338c40f..67c82fad45a 100644 --- a/public/app/features/search/page/components/columns.tsx +++ b/public/app/features/search/page/components/columns.tsx @@ -240,7 +240,7 @@ export const generateColumns = ( Cell: (p) => { return (
showExplainPopup(p.row.index)}> - {vals.get(p.row.index)} + {vals[p.row.index]}
); }, diff --git a/public/app/features/search/service/bluge.ts b/public/app/features/search/service/bluge.ts index 23e5b10bc5b..547a430b47d 100644 --- a/public/app/features/search/service/bluge.ts +++ b/public/app/features/search/service/bluge.ts @@ -226,7 +226,7 @@ function getTermCountsFrom(frame: DataFrame): TermCount[] { const vals = frame.fields[1].values; const counts: TermCount[] = []; for (let i = 0; i < frame.length; i++) { - counts.push({ term: keys.get(i), count: vals.get(i) }); + counts.push({ term: keys[i], count: vals[i] }); } return counts; } diff --git a/public/app/features/transformers/timeSeriesTable/timeSeriesTableTransformer.ts b/public/app/features/transformers/timeSeriesTable/timeSeriesTableTransformer.ts index 099c3a9acdc..a084a4c47ad 100644 --- a/public/app/features/transformers/timeSeriesTable/timeSeriesTableTransformer.ts +++ b/public/app/features/transformers/timeSeriesTable/timeSeriesTableTransformer.ts @@ -81,10 +81,10 @@ export function timeSeriesToTableTransform(options: TimeSeriesTableTransformerOp const labels = frame.fields[1].labels; for (const labelKey of Object.keys(labelFields)) { const labelValue = labels?.[labelKey] ?? null; - labelFields[labelKey].values.add(labelValue!); + labelFields[labelKey].values.push(labelValue!); } - frameField.values.add(frame); + frameField.values.push(frame); } return result; } diff --git a/public/app/plugins/datasource/loki/getDerivedFields.ts b/public/app/plugins/datasource/loki/getDerivedFields.ts index 3a87fe92259..bb17b33cd0f 100644 --- a/public/app/plugins/datasource/loki/getDerivedFields.ts +++ b/public/app/plugins/datasource/loki/getDerivedFields.ts @@ -25,7 +25,7 @@ export function getDerivedFields(dataFrame: DataFrame, derivedFieldConfigs: Deri lineField.values.forEach((line) => { for (const field of newFields) { const logMatch = line.match(derivedFieldsGrouped[field.name][0].matcherRegex); - field.values.add(logMatch && logMatch[1]); + field.values.push(logMatch && logMatch[1]); } }); diff --git a/public/app/plugins/datasource/loki/liveStreamsResultTransformer.ts b/public/app/plugins/datasource/loki/liveStreamsResultTransformer.ts index 79c0c79575a..a8275ca2f8e 100644 --- a/public/app/plugins/datasource/loki/liveStreamsResultTransformer.ts +++ b/public/app/plugins/datasource/loki/liveStreamsResultTransformer.ts @@ -38,9 +38,9 @@ export function appendResponseToBufferedData(response: LokiTailResponse, data: M // Add each line for (const [ts, line] of stream.values) { - tsField.values.add(new Date(parseInt(ts.slice(0, -6), 10)).toISOString()); - lineField.values.add(line); - idField.values.add(createUid(ts, allLabelsString, line, usedUids, data.refId)); + tsField.values.push(new Date(parseInt(ts.slice(0, -6), 10)).toISOString()); + lineField.values.push(line); + idField.values.push(createUid(ts, allLabelsString, line, usedUids, data.refId)); } } } diff --git a/public/app/plugins/datasource/prometheus/result_transformer.ts b/public/app/plugins/datasource/prometheus/result_transformer.ts index 936acc351e4..19e63367190 100644 --- a/public/app/plugins/datasource/prometheus/result_transformer.ts +++ b/public/app/plugins/datasource/prometheus/result_transformer.ts @@ -235,11 +235,11 @@ export function transformDFToTable(dfs: DataFrame[]): DataFrame[] { dataFramesByRefId[refId].forEach((df) => { const timeFields = df.fields[0]?.values ?? []; const dataFields = df.fields[1]?.values ?? []; - timeFields.forEach((value) => timeField.values.add(value)); + timeFields.forEach((value) => timeField.values.push(value)); dataFields.forEach((value) => { - valueField.values.add(parseSampleValue(value)); + valueField.values.push(parseSampleValue(value)); const labelsForField = df.fields[1].labels ?? {}; - labelFields.forEach((field) => field.values.add(getLabelValue(labelsForField, field.name))); + labelFields.forEach((field) => field.values.push(getLabelValue(labelsForField, field.name))); }); }); @@ -527,14 +527,14 @@ function transformMetricDataToTable(md: MatrixOrVectorResult[], options: Transfo md.forEach((d) => { if (isMatrixData(d)) { d.values.forEach((val) => { - timeField.values.add(val[0] * 1000); + timeField.values.push(val[0] * 1000); metricFields.forEach((metricField) => metricField.values.push(getLabelValue(d.metric, metricField.name))); - valueField.values.add(parseSampleValue(val[1])); + valueField.values.push(parseSampleValue(val[1])); }); } else { - timeField.values.add(d.value[0] * 1000); + timeField.values.push(d.value[0] * 1000); metricFields.forEach((metricField) => metricField.values.push(getLabelValue(d.metric, metricField.name))); - valueField.values.add(parseSampleValue(d.value[1])); + valueField.values.push(parseSampleValue(d.value[1])); } }); diff --git a/public/app/plugins/datasource/tempo/resultTransformer.ts b/public/app/plugins/datasource/tempo/resultTransformer.ts index ef2e663fb0a..17be5d64cb9 100644 --- a/public/app/plugins/datasource/tempo/resultTransformer.ts +++ b/public/app/plugins/datasource/tempo/resultTransformer.ts @@ -86,9 +86,9 @@ export function createTableFrame( if (match) { const traceId = match[1]; const time = timeField ? timeField.values[i] : null; - tableFrame.fields[0].values.add(time); - tableFrame.fields[1].values.add(traceId); - tableFrame.fields[2].values.add(line); + tableFrame.fields[0].values.push(time); + tableFrame.fields[1].values.push(traceId); + tableFrame.fields[2].values.push(line); hasMatch = true; } } diff --git a/public/app/plugins/datasource/testdata/nodeGraphUtils.ts b/public/app/plugins/datasource/testdata/nodeGraphUtils.ts index 620e685846e..564b70cad70 100644 --- a/public/app/plugins/datasource/testdata/nodeGraphUtils.ts +++ b/public/app/plugins/datasource/testdata/nodeGraphUtils.ts @@ -118,15 +118,15 @@ export function generateRandomNodes(count = 10) { const edgesSet = new Set(); for (const node of nodes) { - nodeFields.id.values.add(node.id); - nodeFields.title.values.add(node.title); - nodeFields[NodeGraphDataFrameFieldNames.subTitle].values.add(node.subTitle); - nodeFields[NodeGraphDataFrameFieldNames.mainStat].values.add(node.stat1); - nodeFields[NodeGraphDataFrameFieldNames.secondaryStat].values.add(node.stat2); - nodeFields.arc__success.values.add(node.success); - nodeFields.arc__errors.values.add(node.error); + nodeFields.id.values.push(node.id); + nodeFields.title.values.push(node.title); + nodeFields[NodeGraphDataFrameFieldNames.subTitle].values.push(node.subTitle); + nodeFields[NodeGraphDataFrameFieldNames.mainStat].values.push(node.stat1); + nodeFields[NodeGraphDataFrameFieldNames.secondaryStat].values.push(node.stat2); + nodeFields.arc__success.values.push(node.success); + nodeFields.arc__errors.values.push(node.error); const rnd = Math.random(); - nodeFields[NodeGraphDataFrameFieldNames.icon].values.add(rnd > 0.9 ? 'database' : rnd < 0.1 ? 'cloud' : ''); + nodeFields[NodeGraphDataFrameFieldNames.icon].values.push(rnd > 0.9 ? 'database' : rnd < 0.1 ? 'cloud' : ''); for (const edge of node.edges) { const id = `${node.id}--${edge}`; // We can have duplicate edges when we added some more by random @@ -134,10 +134,10 @@ export function generateRandomNodes(count = 10) { continue; } edgesSet.add(id); - edgesFrame.fields[0].values.add(`${node.id}--${edge}`); - edgesFrame.fields[1].values.add(node.id); - edgesFrame.fields[2].values.add(edge); - edgesFrame.fields[3].values.add(Math.random() * 100); + edgesFrame.fields[0].values.push(`${node.id}--${edge}`); + edgesFrame.fields[1].values.push(node.id); + edgesFrame.fields[2].values.push(edge); + edgesFrame.fields[3].values.push(Math.random() * 100); } } diff --git a/public/app/plugins/datasource/testdata/runStreams.ts b/public/app/plugins/datasource/testdata/runStreams.ts index c9b11c9f122..a2b5a533f61 100644 --- a/public/app/plugins/datasource/testdata/runStreams.ts +++ b/public/app/plugins/datasource/testdata/runStreams.ts @@ -151,8 +151,8 @@ export function runLogsStream( let timeoutId: ReturnType; const pushNextEvent = () => { - data.fields[0].values.add(getRandomLine()); - data.fields[1].values.add(Date.now()); + data.fields[0].values.push(getRandomLine()); + data.fields[1].values.push(Date.now()); subscriber.next({ data: [data], diff --git a/public/app/plugins/panel/nodeGraph/utils.ts b/public/app/plugins/panel/nodeGraph/utils.ts index e127db2c811..4fb8e5095a2 100644 --- a/public/app/plugins/panel/nodeGraph/utils.ts +++ b/public/app/plugins/panel/nodeGraph/utils.ts @@ -251,13 +251,13 @@ function normalizeStatsForNodes(nodesMap: { [id: string]: NodeDatumFromEdge }, e if (mainStatField) { newNode.mainStat = mainStatField; - mainStatValues.add(node.mainStatNumeric); + mainStatValues.push(node.mainStatNumeric); newNode.dataFrameRowIndex = index; } if (secondaryStatField) { newNode.secondaryStat = secondaryStatField; - secondaryStatValues.add(node.secondaryStatNumeric); + secondaryStatValues.push(node.secondaryStatNumeric); newNode.dataFrameRowIndex = index; } return newNode; diff --git a/public/app/plugins/panel/state-timeline/StateTimelineTooltip.tsx b/public/app/plugins/panel/state-timeline/StateTimelineTooltip.tsx index 901c6b553bb..345f0c8265b 100644 --- a/public/app/plugins/panel/state-timeline/StateTimelineTooltip.tsx +++ b/public/app/plugins/panel/state-timeline/StateTimelineTooltip.tsx @@ -41,7 +41,7 @@ export const StateTimelineTooltip = ({ const linkLookup = new Set(); if (field.getLinks) { - const v = field.values.get(datapointIdx); + const v = field.values[datapointIdx]; const disp = field.display ? field.display(v) : { text: `${v}`, numeric: +v }; field.getLinks({ calculatedValue: disp, valueRowIndex: datapointIdx }).forEach((link) => { const key = `${link.title}/${link.href}`; @@ -57,7 +57,7 @@ export const StateTimelineTooltip = ({ const dataFrameFieldIndex = field.state?.origin; const fieldFmt = field.display || getDisplayProcessor({ field, timeZone, theme }); - const value = field.values.get(datapointIdx!); + const value = field.values[datapointIdx!]; const display = fieldFmt(value); const fieldDisplayName = dataFrameFieldIndex ? getFieldDisplayName( @@ -70,10 +70,10 @@ export const StateTimelineTooltip = ({ const nextStateIdx = findNextStateIndex(field, datapointIdx!); let nextStateTs; if (nextStateIdx) { - nextStateTs = xField.values.get(nextStateIdx!); + nextStateTs = xField.values[nextStateIdx!]; } - const stateTs = xField.values.get(datapointIdx!); + const stateTs = xField.values[datapointIdx!]; let toFragment = null; let durationFragment = null; @@ -88,7 +88,7 @@ export const StateTimelineTooltip = ({ ); toFragment = ( <> - {' to'} {xFieldFmt(xField.values.get(nextStateIdx!)).text} + {' to'} {xFieldFmt(xField.values[nextStateIdx!]).text} ); } @@ -99,7 +99,7 @@ export const StateTimelineTooltip = ({ {fieldDisplayName}
- From {xFieldFmt(xField.values.get(datapointIdx!)).text} + From {xFieldFmt(xField.values[datapointIdx!]).text} {toFragment} {durationFragment}