diff --git a/packages/grafana-data/src/field/fieldState.test.ts b/packages/grafana-data/src/field/fieldState.test.ts index 33275a58ceb..a017962f37b 100644 --- a/packages/grafana-data/src/field/fieldState.test.ts +++ b/packages/grafana-data/src/field/fieldState.test.ts @@ -15,6 +15,11 @@ function checkScenario(scenario: TitleScenario): string { return getFieldDisplayName(field, frame, scenario.frames); } +jest.mock('lodash', () => ({ + ...jest.requireActual('lodash'), + isEqual: jest.fn().mockImplementation((obj1, obj2) => obj1 === obj2), +})); + describe('getFieldDisplayName', () => { it('Should add suffix for comparison frames', () => { const frame = toDataFrame({ diff --git a/packages/grafana-data/src/field/fieldState.ts b/packages/grafana-data/src/field/fieldState.ts index c20d6469bb7..6f816ca5cf5 100644 --- a/packages/grafana-data/src/field/fieldState.ts +++ b/packages/grafana-data/src/field/fieldState.ts @@ -1,3 +1,5 @@ +import { isEqual } from 'lodash'; + import { DataFrame, Field, TIME_SERIES_VALUE_FIELD_NAME, FieldType, TIME_SERIES_TIME_FIELD_NAME } from '../types'; import { formatLabels } from '../utils/labels'; @@ -165,7 +167,7 @@ function getUniqueFieldName(field: Field, frame?: DataFrame) { for (let i = 0; i < frame.fields.length; i++) { const otherField = frame.fields[i]; - if (field === otherField) { + if (isEqual(field, otherField)) { foundSelf = true; if (dupeCount > 0) { diff --git a/public/app/features/visualization/data-hover/DataHoverView.tsx b/public/app/features/visualization/data-hover/DataHoverView.tsx index 2acc2146941..f8f2f075b60 100644 --- a/public/app/features/visualization/data-hover/DataHoverView.tsx +++ b/public/app/features/visualization/data-hover/DataHoverView.tsx @@ -72,8 +72,11 @@ export const DataHoverView = ({ data, rowIndex, columnIndex, sortOrder, mode, he }); } + // Sanitize field by removing hovered property to fix unique display name issue + const { hovered, ...sanitizedField } = field; + displayValues.push({ - name: getFieldDisplayName(field, data), + name: getFieldDisplayName(sanitizedField, data), value, valueString: formattedValueToString(fieldDisplay), highlight: field.hovered,