From c52f932025358020547c89e2bbfa30c779ee73aa Mon Sep 17 00:00:00 2001 From: "Grot (@grafanabot)" <43478413+grafanabot@users.noreply.github.com> Date: Wed, 12 Apr 2023 19:00:11 +0200 Subject: [PATCH] [v9.5.x] Table Panel: Fix panel migration for options cell type (#66406) Table Panel: Fix panel migration for options cell type (#66305) (cherry picked from commit b83627a6612304619bcee70b8883acc9caca6323) Co-authored-by: Ryan McKinley --- .../dashboard/state/DashboardMigrator.test.ts | 4 ++-- .../dashboard/state/DashboardMigrator.ts | 16 ++++++++-------- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/public/app/features/dashboard/state/DashboardMigrator.test.ts b/public/app/features/dashboard/state/DashboardMigrator.test.ts index 8be8111780f..2b014d77ce4 100644 --- a/public/app/features/dashboard/state/DashboardMigrator.test.ts +++ b/public/app/features/dashboard/state/DashboardMigrator.test.ts @@ -3,6 +3,7 @@ import { each, map } from 'lodash'; import { DataLinkBuiltInVars, MappingType } from '@grafana/data'; import { getPanelPlugin } from '@grafana/data/test/__mocks__/pluginMocks'; import { setDataSourceSrv } from '@grafana/runtime'; +import { FieldConfigSource } from '@grafana/schema'; import { config } from 'app/core/config'; import { GRID_CELL_HEIGHT, GRID_CELL_VMARGIN } from 'app/core/constants'; import { mockDataSource, MockDataSourceSrv } from 'app/features/alerting/unified/mocks'; @@ -2196,8 +2197,7 @@ describe('when migrating table cell display mode to cell options', () => { inspect: false, }, }, - overrides: [], - }, + } as unknown as FieldConfigSource, // missing overrides }, // @ts-expect-error { diff --git a/public/app/features/dashboard/state/DashboardMigrator.ts b/public/app/features/dashboard/state/DashboardMigrator.ts index c95dcc7c5c8..7fb0ca83103 100644 --- a/public/app/features/dashboard/state/DashboardMigrator.ts +++ b/public/app/features/dashboard/state/DashboardMigrator.ts @@ -825,14 +825,14 @@ export class DashboardMigrator { } // Update any overrides referencing the cell display mode - for (let i = 0; i < panel.fieldConfig.overrides.length; i++) { - for (let j = 0; j < panel.fieldConfig.overrides[i].properties.length; j++) { - let overrideDisplayMode = panel.fieldConfig.overrides[i].properties[j].value; - - if (panel.fieldConfig.overrides[i].properties[j].id === 'custom.displayMode') { - panel.fieldConfig.overrides[i].properties[j].id = 'custom.cellOptions'; - panel.fieldConfig.overrides[i].properties[j].value = - migrateTableDisplayModeToCellOptions(overrideDisplayMode); + if (panel.fieldConfig?.overrides) { + for (const override of panel.fieldConfig.overrides) { + for (let j = 0; j < override.properties?.length ?? 0; j++) { + let overrideDisplayMode = override.properties[j].value; + if (override.properties[j].id === 'custom.displayMode') { + override.properties[j].id = 'custom.cellOptions'; + override.properties[j].value = migrateTableDisplayModeToCellOptions(overrideDisplayMode); + } } } }