From e711d10925ff44b6a0256172e4c606bcd821b2bd Mon Sep 17 00:00:00 2001 From: Alexa V <239999+axelavargas@users.noreply.github.com> Date: Thu, 25 Apr 2024 13:06:57 +0200 Subject: [PATCH] Dashboard: Migration Fixes Mixed data source losing existing queries (#86883) --- .../panel-edit/PanelDataPane/PanelDataQueriesTab.tsx | 12 ++++++++++-- .../dashboard-scene/panel-edit/VizPanelManager.tsx | 5 +---- 2 files changed, 11 insertions(+), 6 deletions(-) diff --git a/public/app/features/dashboard-scene/panel-edit/PanelDataPane/PanelDataQueriesTab.tsx b/public/app/features/dashboard-scene/panel-edit/PanelDataPane/PanelDataQueriesTab.tsx index 1f47fdabe5a..324a7f9e232 100644 --- a/public/app/features/dashboard-scene/panel-edit/PanelDataPane/PanelDataQueriesTab.tsx +++ b/public/app/features/dashboard-scene/panel-edit/PanelDataPane/PanelDataQueriesTab.tsx @@ -2,7 +2,7 @@ import React from 'react'; import { CoreApp, DataSourceApi, DataSourceInstanceSettings, IconName } from '@grafana/data'; import { selectors } from '@grafana/e2e-selectors'; -import { config } from '@grafana/runtime'; +import { config, getDataSourceSrv } from '@grafana/runtime'; import { SceneObjectBase, SceneComponentProps, sceneGraph, SceneQueryRunner } from '@grafana/scenes'; import { DataQuery } from '@grafana/schema'; import { Button, HorizontalGroup, Tab } from '@grafana/ui'; @@ -120,7 +120,15 @@ export class PanelDataQueriesTab extends SceneObjectBase { const { dsSettings, datasource } = this._panelManager.state; - const ds = !dsSettings?.meta.mixed ? dsSettings : datasource; + let ds; + if (!dsSettings?.meta.mixed) { + ds = dsSettings; // Use dsSettings if it is not mixed + } else if (!datasource?.meta.mixed) { + ds = datasource; // Use datasource if dsSettings is mixed but datasource is not + } else { + // Use default datasource if both are mixed or just datasource is mixed + ds = getDataSourceSrv().getInstanceSettings(config.defaultDatasource); + } return { ...datasource?.getDefaultQuery?.(CoreApp.PanelEditor), diff --git a/public/app/features/dashboard-scene/panel-edit/VizPanelManager.tsx b/public/app/features/dashboard-scene/panel-edit/VizPanelManager.tsx index 0cfa0f7c5bc..a58b3860262 100644 --- a/public/app/features/dashboard-scene/panel-edit/VizPanelManager.tsx +++ b/public/app/features/dashboard-scene/panel-edit/VizPanelManager.tsx @@ -141,10 +141,7 @@ export class VizPanelManager extends SceneObjectBase { } if (datasource && dsSettings) { - this.setState({ - datasource, - dsSettings, - }); + this.setState({ datasource, dsSettings }); storeLastUsedDataSourceInLocalStorage( {