DashboardsLoader: Enable cursor sync in scenes based dashboard (#73383)

* Bump scenes

* Enable cursor sync in scene dashboard
This commit is contained in:
Dominik Prokop 2023-08-17 16:03:26 +02:00 committed by GitHub
parent 3245e25273
commit 30393459df
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 33 additions and 11 deletions

View File

@ -244,7 +244,7 @@
"@grafana/lezer-traceql": "0.0.4", "@grafana/lezer-traceql": "0.0.4",
"@grafana/monaco-logql": "^0.0.7", "@grafana/monaco-logql": "^0.0.7",
"@grafana/runtime": "workspace:*", "@grafana/runtime": "workspace:*",
"@grafana/scenes": "0.22.0", "@grafana/scenes": "0.24.0",
"@grafana/schema": "workspace:*", "@grafana/schema": "workspace:*",
"@grafana/ui": "workspace:*", "@grafana/ui": "workspace:*",
"@kusto/monaco-kusto": "^7.4.0", "@kusto/monaco-kusto": "^7.4.0",

View File

@ -1,6 +1,7 @@
import { getPanelPlugin } from '@grafana/data/test/__mocks__/pluginMocks'; import { getPanelPlugin } from '@grafana/data/test/__mocks__/pluginMocks';
import { config, locationService } from '@grafana/runtime'; import { config, locationService } from '@grafana/runtime';
import { import {
behaviors,
CustomVariable, CustomVariable,
DataSourceVariable, DataSourceVariable,
getUrlSyncManager, getUrlSyncManager,
@ -12,7 +13,7 @@ import {
SceneQueryRunner, SceneQueryRunner,
VizPanel, VizPanel,
} from '@grafana/scenes'; } from '@grafana/scenes';
import { defaultDashboard, LoadingState, Panel, RowPanel, VariableType } from '@grafana/schema'; import { DashboardCursorSync, defaultDashboard, LoadingState, Panel, RowPanel, VariableType } from '@grafana/schema';
import { DashboardModel, PanelModel } from 'app/features/dashboard/state'; import { DashboardModel, PanelModel } from 'app/features/dashboard/state';
import { createPanelJSONFixture } from 'app/features/dashboard/state/__fixtures__/dashboardFixtures'; import { createPanelJSONFixture } from 'app/features/dashboard/state/__fixtures__/dashboardFixtures';
import { SHARED_DASHBOARD_QUERY } from 'app/plugins/datasource/dashboard'; import { SHARED_DASHBOARD_QUERY } from 'app/plugins/datasource/dashboard';
@ -139,6 +140,20 @@ describe('DashboardLoader', () => {
expect(scene.state?.$variables?.state.variables).toHaveLength(1); expect(scene.state?.$variables?.state.variables).toHaveLength(1);
expect(scene.state.controls).toBeDefined(); expect(scene.state.controls).toBeDefined();
}); });
it('should apply cursor sync behavior', () => {
const dash = {
...defaultDashboard,
graphTooltip: DashboardCursorSync.Crosshair,
};
const oldModel = new DashboardModel(dash);
const scene = createDashboardSceneFromDashboardModel(oldModel);
expect(scene.state.$behaviors).toHaveLength(1);
expect(scene.state.$behaviors![0]).toBeInstanceOf(behaviors.CursorSync);
expect((scene.state.$behaviors![0] as behaviors.CursorSync).state.sync).toEqual(DashboardCursorSync.Crosshair);
});
}); });
describe('when organizing panels as scene children', () => { describe('when organizing panels as scene children', () => {

View File

@ -27,6 +27,7 @@ import {
SceneObject, SceneObject,
SceneControlsSpacer, SceneControlsSpacer,
VizPanelMenu, VizPanelMenu,
behaviors,
} from '@grafana/scenes'; } from '@grafana/scenes';
import { StateManagerBase } from 'app/core/services/StateManagerBase'; import { StateManagerBase } from 'app/core/services/StateManagerBase';
import { dashboardLoaderSrv } from 'app/features/dashboard/services/DashboardLoaderSrv'; import { dashboardLoaderSrv } from 'app/features/dashboard/services/DashboardLoaderSrv';
@ -194,6 +195,12 @@ export function createDashboardSceneFromDashboardModel(oldModel: DashboardModel)
}), }),
$timeRange: new SceneTimeRange(oldModel.time), $timeRange: new SceneTimeRange(oldModel.time),
$variables: variables, $variables: variables,
$behaviors: [
new behaviors.CursorSync({
key: 'dashboard',
sync: oldModel.graphTooltip,
}),
],
controls: controls, controls: controls,
}); });
} }

View File

@ -3929,9 +3929,9 @@ __metadata:
languageName: unknown languageName: unknown
linkType: soft linkType: soft
"@grafana/scenes@npm:0.22.0": "@grafana/scenes@npm:0.24.0":
version: 0.22.0 version: 0.24.0
resolution: "@grafana/scenes@npm:0.22.0" resolution: "@grafana/scenes@npm:0.24.0"
dependencies: dependencies:
"@grafana/e2e-selectors": 10.0.2 "@grafana/e2e-selectors": 10.0.2
react-grid-layout: 1.3.4 react-grid-layout: 1.3.4
@ -3939,11 +3939,11 @@ __metadata:
react-virtualized-auto-sizer: 1.0.7 react-virtualized-auto-sizer: 1.0.7
uuid: ^9.0.0 uuid: ^9.0.0
peerDependencies: peerDependencies:
"@grafana/data": 10.0.2 "@grafana/data": 10.0.3
"@grafana/runtime": 10.0.2 "@grafana/runtime": 10.0.3
"@grafana/schema": 10.0.2 "@grafana/schema": 10.0.3
"@grafana/ui": 10.0.2 "@grafana/ui": 10.0.3
checksum: 94eac2f9ba92722a9d1a23c43d48f3ee8300f0c3cd8631c38770438debc8a8c874a00ba8f2901db634cd1c0bd57f4c9366a7a8d2b060023e4635e839142566b7 checksum: b9cfc535228f0426ee4e422d3e8872f56212f9785acfcdb86aefe6e9c2ff5c98ef750eef0d72cd0ebc2feb67719fac86877b2eae6d376bdd45691da9068b5194
languageName: node languageName: node
linkType: hard linkType: hard
@ -19248,7 +19248,7 @@ __metadata:
"@grafana/lezer-traceql": 0.0.4 "@grafana/lezer-traceql": 0.0.4
"@grafana/monaco-logql": ^0.0.7 "@grafana/monaco-logql": ^0.0.7
"@grafana/runtime": "workspace:*" "@grafana/runtime": "workspace:*"
"@grafana/scenes": 0.22.0 "@grafana/scenes": 0.24.0
"@grafana/schema": "workspace:*" "@grafana/schema": "workspace:*"
"@grafana/toolkit": "workspace:*" "@grafana/toolkit": "workspace:*"
"@grafana/tsconfig": ^1.3.0-rc1 "@grafana/tsconfig": ^1.3.0-rc1