From 4b03ca3344946f4eba8a5e33a5ff7002a23547da Mon Sep 17 00:00:00 2001 From: Dominik Prokop Date: Mon, 15 Jan 2024 12:08:08 +0100 Subject: [PATCH 1/9] Always wrap SceneQueryRunner with SceneDataTransformer --- .../panel-edit/VizPanelManager.tsx | 12 +++++----- .../utils/createPanelDataProvider.ts | 12 ++++------ .../datasource/dashboard/datasource.ts | 23 ++++++++++++------- 3 files changed, 25 insertions(+), 22 deletions(-) diff --git a/public/app/features/dashboard-scene/panel-edit/VizPanelManager.tsx b/public/app/features/dashboard-scene/panel-edit/VizPanelManager.tsx index 044bc37d202..4ace716e347 100644 --- a/public/app/features/dashboard-scene/panel-edit/VizPanelManager.tsx +++ b/public/app/features/dashboard-scene/panel-edit/VizPanelManager.tsx @@ -30,7 +30,7 @@ import { GrafanaQuery } from 'app/plugins/datasource/grafana/types'; import { QueryGroupOptions } from 'app/types'; import { PanelTimeRange, PanelTimeRangeState } from '../scene/PanelTimeRange'; -import { getPanelIdForVizPanel } from '../utils/utils'; +import { getPanelIdForVizPanel, getQueryRunnerFor } from '../utils/utils'; interface VizPanelManagerState extends SceneObjectState { panel: VizPanel; @@ -229,13 +229,13 @@ export class VizPanelManager extends SceneObjectBase { } get queryRunner(): SceneQueryRunner { - const dataObj = this.state.panel.state.$data; + // Panel data object is always SceneQueryRunner wrapped in a SceneDataTransformer + const runner = getQueryRunnerFor(this.state.panel); - if (dataObj instanceof SceneDataTransformer) { - return dataObj.state.$data as SceneQueryRunner; + if (!runner) { + throw new Error('Query runner not found'); } - - return dataObj as SceneQueryRunner; + return runner; } get panelData(): SceneDataProvider { diff --git a/public/app/features/dashboard-scene/utils/createPanelDataProvider.ts b/public/app/features/dashboard-scene/utils/createPanelDataProvider.ts index c74394228e9..6e58e8fa398 100644 --- a/public/app/features/dashboard-scene/utils/createPanelDataProvider.ts +++ b/public/app/features/dashboard-scene/utils/createPanelDataProvider.ts @@ -26,12 +26,8 @@ export function createPanelDataProvider(panel: PanelModel): SceneDataProvider | }); // Wrap inner data provider in a data transformer - if (panel.transformations?.length) { - dataProvider = new SceneDataTransformer({ - $data: dataProvider, - transformations: panel.transformations, - }); - } - - return dataProvider; + return new SceneDataTransformer({ + $data: dataProvider, + transformations: panel.transformations || [], + }); } diff --git a/public/app/plugins/datasource/dashboard/datasource.ts b/public/app/plugins/datasource/dashboard/datasource.ts index e3ddf75cef7..9548f300b23 100644 --- a/public/app/plugins/datasource/dashboard/datasource.ts +++ b/public/app/plugins/datasource/dashboard/datasource.ts @@ -7,9 +7,13 @@ import { DataSourceInstanceSettings, TestDataSourceResponse, } from '@grafana/data'; -import { SceneDataTransformer, SceneObject } from '@grafana/scenes'; +import { SceneDataProvider, SceneDataTransformer, SceneObject } from '@grafana/scenes'; import { PanelEditor } from 'app/features/dashboard-scene/panel-edit/PanelEditor'; -import { findVizPanelByKey, getVizPanelKeyForPanelId } from 'app/features/dashboard-scene/utils/utils'; +import { + findVizPanelByKey, + getQueryRunnerFor, + getVizPanelKeyForPanelId, +} from 'app/features/dashboard-scene/utils/utils'; import { DashboardQuery } from './types'; @@ -49,22 +53,25 @@ export class DashboardDatasource extends DataSourceApi { return of({ data: [], error: { message: 'Could not find source panel' } }); } - let sourceDataProvider = sourcePanel?.state.$data; - - if (query.withTransforms && sourceDataProvider instanceof SceneDataTransformer) { - sourceDataProvider = sourceDataProvider.state.$data!; - } + let sourceDataProvider: SceneDataProvider | undefined = getQueryRunnerFor(sourcePanel); if (!sourceDataProvider || !sourceDataProvider.getResultsStream) { return of({ data: [] }); } + if (query.withTransforms && sourceDataProvider.parent) { + const transformer = sourceDataProvider.parent; + if (transformer && transformer instanceof SceneDataTransformer) { + sourceDataProvider = transformer; + } + } + if (!sourceDataProvider?.isActive) { sourceDataProvider?.activate(); sourceDataProvider.setContainerWidth!(500); } - return sourceDataProvider.getResultsStream().pipe( + return sourceDataProvider.getResultsStream!().pipe( map((result) => { return { data: result.data.series, From 263c717c3d618bca03f5bc5b55eca15c2bc5a24b Mon Sep 17 00:00:00 2001 From: Dominik Prokop Date: Mon, 15 Jan 2024 12:17:08 +0100 Subject: [PATCH 2/9] Update Dashboard model compat wrapper tests --- .../panel-edit/VizPanelManager.tsx | 1 - ...DashboardModelCompatibilityWrapper.test.ts | 23 +++++++++++-------- 2 files changed, 13 insertions(+), 11 deletions(-) diff --git a/public/app/features/dashboard-scene/panel-edit/VizPanelManager.tsx b/public/app/features/dashboard-scene/panel-edit/VizPanelManager.tsx index 4ace716e347..ba379d338b0 100644 --- a/public/app/features/dashboard-scene/panel-edit/VizPanelManager.tsx +++ b/public/app/features/dashboard-scene/panel-edit/VizPanelManager.tsx @@ -19,7 +19,6 @@ import { DeepPartial, SceneQueryRunner, sceneGraph, - SceneDataTransformer, SceneDataProvider, } from '@grafana/scenes'; import { DataQuery } from '@grafana/schema'; diff --git a/public/app/features/dashboard-scene/utils/DashboardModelCompatibilityWrapper.test.ts b/public/app/features/dashboard-scene/utils/DashboardModelCompatibilityWrapper.test.ts index 51adfd75f09..7e8fb941803 100644 --- a/public/app/features/dashboard-scene/utils/DashboardModelCompatibilityWrapper.test.ts +++ b/public/app/features/dashboard-scene/utils/DashboardModelCompatibilityWrapper.test.ts @@ -16,7 +16,6 @@ import { SHARED_DASHBOARD_QUERY } from 'app/plugins/datasource/dashboard'; import { DashboardControls } from '../scene/DashboardControls'; import { DashboardLinksControls } from '../scene/DashboardLinksControls'; import { DashboardScene } from '../scene/DashboardScene'; -import { ShareQueryDataProvider } from '../scene/ShareQueryDataProvider'; import { DashboardModelCompatibilityWrapper } from './DashboardModelCompatibilityWrapper'; @@ -41,18 +40,14 @@ describe('DashboardModelCompatibilityWrapper', () => { expect(wrapper.panels[0].targets[0]).toEqual({ refId: 'A' }); expect(wrapper.panels[1].targets).toHaveLength(0); expect(wrapper.panels[2].targets).toHaveLength(1); - expect(wrapper.panels[2].targets).toEqual([ - { datasource: { uid: SHARED_DASHBOARD_QUERY, type: 'datasource' }, refId: 'A', panelId: 1 }, - ]); + expect(wrapper.panels[2].targets).toEqual([{ refId: 'A', panelId: 1 }]); expect(wrapper.panels[3].targets).toHaveLength(1); expect(wrapper.panels[3].targets[0]).toEqual({ refId: 'A' }); expect(wrapper.panels[4].targets).toHaveLength(1); - expect(wrapper.panels[4].targets).toEqual([ - { datasource: { uid: SHARED_DASHBOARD_QUERY, type: 'datasource' }, refId: 'A', panelId: 1 }, - ]); + expect(wrapper.panels[4].targets).toEqual([{ refId: 'A', panelId: 1 }]); expect(wrapper.panels[0].datasource).toEqual({ uid: 'gdev-testdata', type: 'grafana-testdata-datasource' }); - expect(wrapper.panels[1].datasource).toEqual(null); + expect(wrapper.panels[1].datasource).toEqual(undefined); expect(wrapper.panels[2].datasource).toEqual({ uid: SHARED_DASHBOARD_QUERY, type: 'datasource' }); expect(wrapper.panels[3].datasource).toEqual({ uid: 'gdev-testdata', type: 'grafana-testdata-datasource' }); expect(wrapper.panels[4].datasource).toEqual({ uid: SHARED_DASHBOARD_QUERY, type: 'datasource' }); @@ -162,7 +157,11 @@ function setup() { title: 'Panel with a shared query', key: 'panel-3', pluginId: 'table', - $data: new ShareQueryDataProvider({ query: { refId: 'A', panelId: 1 } }), + $data: new SceneQueryRunner({ + key: 'data-query-runner', + queries: [{ refId: 'A', panelId: 1 }], + datasource: { uid: SHARED_DASHBOARD_QUERY, type: 'datasource' }, + }), }), }), @@ -187,7 +186,11 @@ function setup() { key: 'panel-4', pluginId: 'table', $data: new SceneDataTransformer({ - $data: new ShareQueryDataProvider({ query: { refId: 'A', panelId: 1 } }), + $data: new SceneQueryRunner({ + key: 'data-query-runner', + queries: [{ refId: 'A', panelId: 1 }], + datasource: { uid: SHARED_DASHBOARD_QUERY, type: 'datasource' }, + }), transformations: [], }), }), From b17e06201e1e062d200760627b8668e29b35ab84 Mon Sep 17 00:00:00 2001 From: Dominik Prokop Date: Mon, 15 Jan 2024 12:23:46 +0100 Subject: [PATCH 3/9] DashboardQueryEditor test --- .../dashboard/DashboardQueryEditor.test.tsx | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/public/app/plugins/datasource/dashboard/DashboardQueryEditor.test.tsx b/public/app/plugins/datasource/dashboard/DashboardQueryEditor.test.tsx index c165132ac63..d18ec7ef229 100644 --- a/public/app/plugins/datasource/dashboard/DashboardQueryEditor.test.tsx +++ b/public/app/plugins/datasource/dashboard/DashboardQueryEditor.test.tsx @@ -15,6 +15,7 @@ import { import { DashboardQueryEditor } from './DashboardQueryEditor'; import { SHARED_DASHBOARD_QUERY } from './types'; +import { DashboardDatasource } from './datasource'; jest.mock('app/core/config', () => ({ ...jest.requireActual('app/core/config'), @@ -78,10 +79,11 @@ describe('DashboardQueryEditor', () => { it('does not show a panel with the SHARED_DASHBOARD_QUERY datasource as an option in the dropdown', async () => { render( ); const select = screen.getByText('Choose panel'); @@ -101,10 +103,11 @@ describe('DashboardQueryEditor', () => { mockDashboard.initEditPanel(mockDashboard.panels[0]); render( ); const select = screen.getByText('Choose panel'); From 2f25a47603b40350e948f27dc926be54635ef783 Mon Sep 17 00:00:00 2001 From: Dominik Prokop Date: Mon, 15 Jan 2024 12:42:08 +0100 Subject: [PATCH 4/9] VizPanelManager tests update --- .../panel-edit/VizPanelManager.test.tsx | 136 ++---------------- 1 file changed, 15 insertions(+), 121 deletions(-) diff --git a/public/app/features/dashboard-scene/panel-edit/VizPanelManager.test.tsx b/public/app/features/dashboard-scene/panel-edit/VizPanelManager.test.tsx index b7bc6ce459a..418b3a8dd82 100644 --- a/public/app/features/dashboard-scene/panel-edit/VizPanelManager.test.tsx +++ b/public/app/features/dashboard-scene/panel-edit/VizPanelManager.test.tsx @@ -10,7 +10,6 @@ import { SHARED_DASHBOARD_QUERY } from 'app/plugins/datasource/dashboard'; import { DASHBOARD_DATASOURCE_PLUGIN_ID } from 'app/plugins/datasource/dashboard/types'; import { PanelTimeRange, PanelTimeRangeState } from '../scene/PanelTimeRange'; -import { ShareQueryDataProvider } from '../scene/ShareQueryDataProvider'; import { transformSaveModelToScene } from '../serialization/transformSaveModelToScene'; import { DashboardModelCompatibilityWrapper } from '../utils/DashboardModelCompatibilityWrapper'; import { findVizPanelByKey } from '../utils/utils'; @@ -426,11 +425,7 @@ describe('VizPanelManager', () => { vizPanelManager.activate(); await Promise.resolve(); - const panel = vizPanelManager.state.panel; - - expect(panel.state.$data).toBeInstanceOf(SceneQueryRunner); - - expect((panel.state.$data as SceneQueryRunner).state.datasource).toEqual({ + expect(vizPanelManager.queryRunner.state.datasource).toEqual({ uid: 'gdev-testdata', type: 'grafana-testdata-datasource', }); @@ -446,7 +441,7 @@ describe('VizPanelManager', () => { }, } as any); - expect((panel.state.$data as SceneQueryRunner).state.datasource).toEqual({ + expect(vizPanelManager.queryRunner.state.datasource).toEqual({ uid: 'gdev-prometheus', type: 'grafana-prometheus-datasource', }); @@ -457,11 +452,7 @@ describe('VizPanelManager', () => { vizPanelManager.activate(); await Promise.resolve(); - const panel = vizPanelManager.state.panel; - - expect(panel.state.$data).toBeInstanceOf(SceneQueryRunner); - - expect((panel.state.$data as SceneQueryRunner).state.datasource).toEqual({ + expect(vizPanelManager.queryRunner.state.datasource).toEqual({ uid: 'gdev-testdata', type: 'grafana-testdata-datasource', }); @@ -477,7 +468,10 @@ describe('VizPanelManager', () => { }, } as any); - expect(panel.state.$data).toBeInstanceOf(ShareQueryDataProvider); + expect(vizPanelManager.queryRunner.state.datasource).toEqual({ + uid: SHARED_DASHBOARD_QUERY, + type: 'datasource', + }); }); it('changing from dashboard data source to a plugin', async () => { @@ -485,100 +479,10 @@ describe('VizPanelManager', () => { vizPanelManager.activate(); await Promise.resolve(); - const panel = vizPanelManager.state.panel; - - expect(panel.state.$data).toBeInstanceOf(ShareQueryDataProvider); - - await vizPanelManager.changePanelDataSource({ - name: 'grafana-prometheus', - type: 'grafana-prometheus-datasource', - uid: 'gdev-prometheus', - meta: { - name: 'Prometheus', - module: 'prometheus', - id: 'grafana-prometheus-datasource', - }, - } as any); - - expect(panel.state.$data).toBeInstanceOf(SceneQueryRunner); - expect((panel.state.$data as SceneQueryRunner).state.datasource).toEqual({ - uid: 'gdev-prometheus', - type: 'grafana-prometheus-datasource', - }); - }); - - describe('with transformations', () => { - it('changing from one plugin to another', async () => { - const { vizPanelManager } = setupTest('panel-2'); - vizPanelManager.activate(); - await Promise.resolve(); - - const panel = vizPanelManager.state.panel; - - expect(panel.state.$data).toBeInstanceOf(SceneDataTransformer); - - expect((panel.state.$data?.state.$data as SceneQueryRunner).state.datasource).toEqual({ - uid: 'gdev-testdata', - type: 'grafana-testdata-datasource', - }); - - await vizPanelManager.changePanelDataSource({ - name: 'grafana-prometheus', - type: 'grafana-prometheus-datasource', - uid: 'gdev-prometheus', - meta: { - name: 'Prometheus', - module: 'prometheus', - id: 'grafana-prometheus-datasource', - }, - } as any); - - expect(panel.state.$data).toBeInstanceOf(SceneDataTransformer); - expect((panel.state.$data?.state.$data as SceneQueryRunner).state.datasource).toEqual({ - uid: 'gdev-prometheus', - type: 'grafana-prometheus-datasource', - }); - }); - }); - - it('changing from a plugin to dashboard data source', async () => { - const { vizPanelManager } = setupTest('panel-2'); - vizPanelManager.activate(); - await Promise.resolve(); - - const panel = vizPanelManager.state.panel; - - expect(panel.state.$data).toBeInstanceOf(SceneDataTransformer); - - expect((panel.state.$data?.state.$data as SceneQueryRunner).state.datasource).toEqual({ - uid: 'gdev-testdata', - type: 'grafana-testdata-datasource', - }); - - await vizPanelManager.changePanelDataSource({ - name: SHARED_DASHBOARD_QUERY, - type: 'datasource', + expect(vizPanelManager.queryRunner.state.datasource).toEqual({ uid: SHARED_DASHBOARD_QUERY, - meta: { - name: 'Prometheus', - module: 'prometheus', - id: DASHBOARD_DATASOURCE_PLUGIN_ID, - }, - } as any); - - expect(panel.state.$data).toBeInstanceOf(SceneDataTransformer); - expect(panel.state.$data?.state.$data).toBeInstanceOf(ShareQueryDataProvider); - }); - - it('changing from a dashboard data source to a plugin', async () => { - const { vizPanelManager } = setupTest('panel-4'); - vizPanelManager.activate(); - await Promise.resolve(); - - const panel = vizPanelManager.state.panel; - - expect(panel.state.$data).toBeInstanceOf(SceneDataTransformer); - expect(panel.state.$data?.state.$data).toBeInstanceOf(ShareQueryDataProvider); + type: 'datasource', + }); await vizPanelManager.changePanelDataSource({ name: 'grafana-prometheus', @@ -591,9 +495,7 @@ describe('VizPanelManager', () => { }, } as any); - expect(panel.state.$data).toBeInstanceOf(SceneDataTransformer); - expect(panel.state.$data?.state.$data).toBeInstanceOf(SceneQueryRunner); - expect((panel.state.$data?.state.$data as SceneQueryRunner).state.datasource).toEqual({ + expect(vizPanelManager.queryRunner.state.datasource).toEqual({ uid: 'gdev-prometheus', type: 'grafana-prometheus-datasource', }); @@ -655,15 +557,8 @@ describe('VizPanelManager', () => { panelId: panelWithTransformations.id, }, ]); - expect(vizPanelManager.panelData).toBeInstanceOf(ShareQueryDataProvider); - expect((vizPanelManager.panelData as ShareQueryDataProvider).state.query.panelId).toBe( - panelWithTransformations.id - ); - expect(vizPanelManager.panelData.state.$data).toBeInstanceOf(SceneDataTransformer); - expect(vizPanelManager.panelData.state.$data?.state.$data).toBeInstanceOf(SceneQueryRunner); - expect((vizPanelManager.panelData.state.$data?.state.$data as SceneQueryRunner).state.queries).toEqual( - panelWithTransformations.targets - ); + expect(vizPanelManager.panelData).toBeInstanceOf(SceneDataTransformer); + expect(vizPanelManager.queryRunner.state.queries[0].panelId).toEqual(panelWithTransformations.id); // Changing dashboard query to a panel with queries only vizPanelManager.changeQueries([ @@ -676,9 +571,8 @@ describe('VizPanelManager', () => { }, ]); - expect(vizPanelManager.panelData).toBeInstanceOf(ShareQueryDataProvider); - expect((vizPanelManager.panelData as ShareQueryDataProvider).state.query.panelId).toBe(panelWithQueriesOnly.id); - expect(vizPanelManager.queryRunner.state.queries).toEqual(panelWithQueriesOnly.targets); + expect(vizPanelManager.panelData).toBeInstanceOf(SceneDataTransformer); + expect(vizPanelManager.queryRunner.state.queries[0].panelId).toBe(panelWithQueriesOnly.id); }); }); }); From dc6ba39df8044bba9346c1050ee0fd01d1494ef6 Mon Sep 17 00:00:00 2001 From: Dominik Prokop Date: Mon, 15 Jan 2024 12:45:17 +0100 Subject: [PATCH 5/9] transform save model to scene tests update --- .../serialization/transformSaveModelToScene.test.ts | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/public/app/features/dashboard-scene/serialization/transformSaveModelToScene.test.ts b/public/app/features/dashboard-scene/serialization/transformSaveModelToScene.test.ts index b20acc17ba7..0e2b7673340 100644 --- a/public/app/features/dashboard-scene/serialization/transformSaveModelToScene.test.ts +++ b/public/app/features/dashboard-scene/serialization/transformSaveModelToScene.test.ts @@ -22,6 +22,7 @@ import { SceneGridItem, SceneGridLayout, SceneGridRow, + SceneQueryRunner, SceneRefreshPicker, SceneTimePicker, VizPanel, @@ -44,7 +45,6 @@ import { DashboardControls } from '../scene/DashboardControls'; import { PanelRepeaterGridItem } from '../scene/PanelRepeaterGridItem'; import { PanelTimeRange } from '../scene/PanelTimeRange'; import { RowRepeaterBehavior } from '../scene/RowRepeaterBehavior'; -import { ShareQueryDataProvider } from '../scene/ShareQueryDataProvider'; import { getQueryRunnerFor } from '../utils/utils'; import dashboard_to_load1 from './testfiles/dashboard_to_load1.json'; @@ -382,7 +382,9 @@ describe('transformSaveModelToScene', () => { }; const { vizPanel } = buildGridItemForTest(panel); - expect(vizPanel.state.$data).toBeInstanceOf(ShareQueryDataProvider); + expect(vizPanel.state.$data).toBeInstanceOf(SceneDataTransformer); + expect(vizPanel.state.$data?.state.$data).toBeInstanceOf(SceneQueryRunner); + expect((vizPanel.state.$data?.state.$data as SceneQueryRunner).state.queries).toEqual(panel.targets); }); it('should not set SceneQueryRunner for plugins with skipDataQuery', () => { From e7c861211fb7953ef4f441f7d959179bd104beab Mon Sep 17 00:00:00 2001 From: Dominik Prokop Date: Mon, 15 Jan 2024 12:46:10 +0100 Subject: [PATCH 6/9] Betterer --- .betterer.results | 19 ++----------------- 1 file changed, 2 insertions(+), 17 deletions(-) diff --git a/.betterer.results b/.betterer.results index 0ac51d62848..75cdf65a69c 100644 --- a/.betterer.results +++ b/.betterer.results @@ -2411,16 +2411,7 @@ exports[`better eslint`] = { [0, 0, 0, "Unexpected any. Specify a different type.", "1"], [0, 0, 0, "Unexpected any. Specify a different type.", "2"], [0, 0, 0, "Unexpected any. Specify a different type.", "3"], - [0, 0, 0, "Unexpected any. Specify a different type.", "4"], - [0, 0, 0, "Unexpected any. Specify a different type.", "5"], - [0, 0, 0, "Unexpected any. Specify a different type.", "6"], - [0, 0, 0, "Unexpected any. Specify a different type.", "7"] - ], - "public/app/features/dashboard-scene/panel-edit/VizPanelManager.tsx:5381": [ - [0, 0, 0, "Do not use any type assertions.", "0"], - [0, 0, 0, "Do not use any type assertions.", "1"], - [0, 0, 0, "Do not use any type assertions.", "2"], - [0, 0, 0, "Do not use any type assertions.", "3"] + [0, 0, 0, "Unexpected any. Specify a different type.", "4"] ], "public/app/features/dashboard-scene/scene/DashboardScene.test.tsx:5381": [ [0, 0, 0, "Unexpected any. Specify a different type.", "0"] @@ -2468,10 +2459,7 @@ exports[`better eslint`] = { [0, 0, 0, "Unexpected any. Specify a different type.", "0"] ], "public/app/features/dashboard-scene/utils/DashboardModelCompatibilityWrapper.ts:5381": [ - [0, 0, 0, "Do not use any type assertions.", "0"], - [0, 0, 0, "Do not use any type assertions.", "1"], - [0, 0, 0, "Do not use any type assertions.", "2"], - [0, 0, 0, "Do not use any type assertions.", "3"] + [0, 0, 0, "Do not use any type assertions.", "0"] ], "public/app/features/dashboard-scene/utils/test-utils.ts:5381": [ [0, 0, 0, "Do not use any type assertions.", "0"], @@ -4856,9 +4844,6 @@ exports[`better eslint`] = { "public/app/plugins/datasource/cloudwatch/utils/logsRetry.ts:5381": [ [0, 0, 0, "Unexpected any. Specify a different type.", "0"] ], - "public/app/plugins/datasource/dashboard/DashboardQueryEditor.tsx:5381": [ - [0, 0, 0, "Do not use any type assertions.", "0"] - ], "public/app/plugins/datasource/dashboard/runSharedRequest.ts:5381": [ [0, 0, 0, "Do not use any type assertions.", "0"], [0, 0, 0, "Do not use any type assertions.", "1"] From be349256950f3a6d4a45f1d8544a8f681be363e1 Mon Sep 17 00:00:00 2001 From: Dominik Prokop Date: Mon, 15 Jan 2024 13:41:32 +0100 Subject: [PATCH 7/9] PanelMenuBehavior test update --- public/app/features/dashboard-scene/scene/PanelMenuBehavior.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/public/app/features/dashboard-scene/scene/PanelMenuBehavior.tsx b/public/app/features/dashboard-scene/scene/PanelMenuBehavior.tsx index c12193d1c04..b7400fb1976 100644 --- a/public/app/features/dashboard-scene/scene/PanelMenuBehavior.tsx +++ b/public/app/features/dashboard-scene/scene/PanelMenuBehavior.tsx @@ -225,7 +225,7 @@ export function getPanelLinksBehavior(panel: PanelModel) { function createExtensionContext(panel: VizPanel, dashboard: DashboardScene): PluginExtensionPanelContext { const timeRange = sceneGraph.getTimeRange(panel); let queryRunner = getQueryRunnerFor(panel); - let targets: DataQuery[] = []; + let targets: DataQuery[] = queryRunner?.state.queries; const id = getPanelIdForVizPanel(panel); let scopedVars = {}; From c38fe163ad734305370ab25391873a5a16c27c1b Mon Sep 17 00:00:00 2001 From: Dominik Prokop Date: Mon, 15 Jan 2024 13:48:10 +0100 Subject: [PATCH 8/9] Few more bits --- .betterer.results | 3 ++- .../app/features/dashboard-scene/scene/PanelMenuBehavior.tsx | 2 +- .../plugins/datasource/dashboard/DashboardQueryEditor.test.tsx | 2 +- 3 files changed, 4 insertions(+), 3 deletions(-) diff --git a/.betterer.results b/.betterer.results index 75cdf65a69c..432172cbe0e 100644 --- a/.betterer.results +++ b/.betterer.results @@ -2418,7 +2418,8 @@ exports[`better eslint`] = { ], "public/app/features/dashboard-scene/scene/PanelMenuBehavior.tsx: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.", "1"], + [0, 0, 0, "Do not use any type assertions.", "2"] ], "public/app/features/dashboard-scene/scene/setDashboardPanelContext.test.ts:5381": [ [0, 0, 0, "Unexpected any. Specify a different type.", "0"] diff --git a/public/app/features/dashboard-scene/scene/PanelMenuBehavior.tsx b/public/app/features/dashboard-scene/scene/PanelMenuBehavior.tsx index b7400fb1976..a7346644071 100644 --- a/public/app/features/dashboard-scene/scene/PanelMenuBehavior.tsx +++ b/public/app/features/dashboard-scene/scene/PanelMenuBehavior.tsx @@ -225,7 +225,7 @@ export function getPanelLinksBehavior(panel: PanelModel) { function createExtensionContext(panel: VizPanel, dashboard: DashboardScene): PluginExtensionPanelContext { const timeRange = sceneGraph.getTimeRange(panel); let queryRunner = getQueryRunnerFor(panel); - let targets: DataQuery[] = queryRunner?.state.queries; + const targets: DataQuery[] = queryRunner?.state.queries as DataQuery[]; const id = getPanelIdForVizPanel(panel); let scopedVars = {}; diff --git a/public/app/plugins/datasource/dashboard/DashboardQueryEditor.test.tsx b/public/app/plugins/datasource/dashboard/DashboardQueryEditor.test.tsx index d18ec7ef229..ca9d18c71c1 100644 --- a/public/app/plugins/datasource/dashboard/DashboardQueryEditor.test.tsx +++ b/public/app/plugins/datasource/dashboard/DashboardQueryEditor.test.tsx @@ -14,8 +14,8 @@ import { } from '../../../features/dashboard/state/__fixtures__/dashboardFixtures'; import { DashboardQueryEditor } from './DashboardQueryEditor'; -import { SHARED_DASHBOARD_QUERY } from './types'; import { DashboardDatasource } from './datasource'; +import { SHARED_DASHBOARD_QUERY } from './types'; jest.mock('app/core/config', () => ({ ...jest.requireActual('app/core/config'), From 6073626683dd3e9f437a533ef55fd79baaceb982 Mon Sep 17 00:00:00 2001 From: Dominik Prokop Date: Mon, 15 Jan 2024 14:15:57 +0100 Subject: [PATCH 9/9] Prettier --- .../serialization/sceneVariablesSetToVariables.test.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/public/app/features/dashboard-scene/serialization/sceneVariablesSetToVariables.test.ts b/public/app/features/dashboard-scene/serialization/sceneVariablesSetToVariables.test.ts index 66b922c2011..7dfab1318bf 100644 --- a/public/app/features/dashboard-scene/serialization/sceneVariablesSetToVariables.test.ts +++ b/public/app/features/dashboard-scene/serialization/sceneVariablesSetToVariables.test.ts @@ -98,7 +98,7 @@ describe('sceneVariablesSetToVariables', () => { allValue: 'test-all', isMulti: true, }); - + const set = new SceneVariableSet({ variables: [variable], });