TransformSaveModelToScene: Force v1 for reports (#114767)

force v1 for reports
This commit is contained in:
Sergej-Vlasov
2025-12-05 11:01:43 +00:00
committed by GitHub
parent 0a51779107
commit be99781176
2 changed files with 13 additions and 8 deletions
@@ -441,7 +441,7 @@ export class DashboardScenePageStateManager extends DashboardScenePageStateManag
}
if (rsp?.dashboard) {
const scene = transformSaveModelToScene(rsp);
const scene = transformSaveModelToScene(rsp, options);
// Special handling for Template route - set up edit mode and dirty state
if (
@@ -29,11 +29,11 @@ import {
} from 'app/features/dashboard/services/DashboardProfiler';
import { DashboardModel } from 'app/features/dashboard/state/DashboardModel';
import { PanelModel } from 'app/features/dashboard/state/PanelModel';
import { DashboardDTO, DashboardDataDTO } from 'app/types/dashboard';
import { DashboardDTO, DashboardDataDTO, DashboardRoutes } from 'app/types/dashboard';
import { addPanelsOnLoadBehavior } from '../addToDashboard/addPanelsOnLoadBehavior';
import { dashboardAnalyticsInitializer } from '../behaviors/DashboardAnalyticsInitializerBehavior';
import { shouldForceV2API } from '../pages/DashboardScenePageStateManager';
import { LoadDashboardOptions, shouldForceV2API } from '../pages/DashboardScenePageStateManager';
import { AlertStatesDataLayer } from '../scene/AlertStatesDataLayer';
import { DashboardAnnotationsDataLayer } from '../scene/DashboardAnnotationsDataLayer';
import { DashboardControls } from '../scene/DashboardControls';
@@ -76,11 +76,11 @@ export interface SaveModelToSceneOptions {
isEmbedded?: boolean;
}
export function transformSaveModelToScene(rsp: DashboardDTO): DashboardScene {
export function transformSaveModelToScene(rsp: DashboardDTO, options?: LoadDashboardOptions): DashboardScene {
// Just to have migrations run
const oldModel = new DashboardModel(rsp.dashboard, rsp.meta);
const scene = createDashboardSceneFromDashboardModel(oldModel, rsp.dashboard);
const scene = createDashboardSceneFromDashboardModel(oldModel, rsp.dashboard, options);
// TODO: refactor createDashboardSceneFromDashboardModel to work on Dashboard schema model
const apiVersion = config.featureToggles.kubernetesDashboards
@@ -255,12 +255,17 @@ function createRowItemFromLegacyRow(row: PanelModel, panels: DashboardGridItem[]
return rowItem;
}
export function createDashboardSceneFromDashboardModel(oldModel: DashboardModel, dto: DashboardDataDTO) {
export function createDashboardSceneFromDashboardModel(
oldModel: DashboardModel,
dto: DashboardDataDTO,
options?: LoadDashboardOptions
) {
let variables: SceneVariableSet | undefined;
let annotationLayers: SceneDataLayerProvider[] = [];
let alertStatesLayer: AlertStatesDataLayer | undefined;
const uid = oldModel.uid;
const serializerVersion = shouldForceV2API() && !oldModel.meta.isSnapshot ? 'v2' : 'v1';
const isReport = options?.route === DashboardRoutes.Report;
const serializerVersion = shouldForceV2API() && !oldModel.meta.isSnapshot && !isReport ? 'v2' : 'v1';
if (oldModel.meta.isSnapshot) {
variables = createVariablesForSnapshot(oldModel);
@@ -348,7 +353,7 @@ export function createDashboardSceneFromDashboardModel(oldModel: DashboardModel,
let body: DashboardLayoutManager;
if (config.featureToggles.dashboardNewLayouts && oldModel.panels.some((p) => p.type === 'row')) {
if (serializerVersion === 'v2' && oldModel.panels.some((p) => p.type === 'row')) {
body = createRowsFromPanels(oldModel.panels);
} else {
body = new DefaultGridLayoutManager({