Dashboards: Repeating with no clone keys (#109839)

* Dashboards: New pathId concept to find panels not based on scene object key

* Minor fix

* fix test

* Fix test

* adding unit tests for pathId functions

* fix

* Fix link sharing to use new path

* fix

* Update

* No clone keys

* Remove all the clone keys complexity

* More changes

* update e2e test

* Progress

* fix auto grid item

* Finally working cannot move panel into clone row

* adjust how we find vizpanel for keyboard shortcuts

* Update

* Fix shortcuts

* Fix test

* fixing tests

* fix lint

* fix tests

* fix e2e

* adjust how outliine children are collected for auto and custom grids

* update

* Upgrade scenes

---------

Co-authored-by: oscarkilhed <oscar.kilhed@grafana.com>
Co-authored-by: Sergej-Vlasov <sergej.s.vlasov@gmail.com>
This commit is contained in:
Torkel Ödegaard
2025-08-20 10:21:18 +02:00
committed by GitHub
co-authored by oscarkilhed Sergej-Vlasov
parent f6404b9589
commit 485831f0b2
56 changed files with 384 additions and 744 deletions
@@ -35,12 +35,12 @@ test.describe(
test('Can view solo repeated panel in scenes', async ({ page, selectors }) => {
// open Panel Tests - Graph NG
const soloPanelUrl = selectors.pages.SoloPanel.url(
'templating-repeating-panels/templating-repeating-panels?orgId=1&from=1699934989607&to=1699956589607&panelId=panel-2-clone-1&__feature.dashboardSceneSolo=true'
'templating-repeating-panels/templating-repeating-panels?orgId=1&from=1699934989607&to=1699956589607&panelId=A$panel-2&__feature.dashboardSceneSolo=true'
);
await page.goto(soloPanelUrl);
// Check that the panel title exists
const panelTitle = page.getByTestId(selectors.components.Panels.Panel.title('server=B'));
const panelTitle = page.getByTestId(selectors.components.Panels.Panel.title('server=A'));
await expect(panelTitle).toBeVisible();
// Check that uplot-main-div does not exist
@@ -51,7 +51,7 @@ test.describe(
test('Can view solo in repeated row and panel in scenes', async ({ page, selectors }) => {
// open Panel Tests - Graph NG
const soloPanelUrl = selectors.pages.SoloPanel.url(
'Repeating-rows-uid/repeating-rows?orgId=1&var-server=A&var-server=B&var-server=D&var-pod=1&var-pod=2&var-pod=3&panelId=panel-16-clone-1/grid-item-2/panel-2-clone-1&__feature.dashboardSceneSolo=true'
'Repeating-rows-uid/repeating-rows?orgId=1&var-server=A&var-server=B&var-server=D&var-pod=1&var-pod=2&var-pod=3&panelId=B$2$panel-2&__feature.dashboardSceneSolo=true'
);
await page.goto(soloPanelUrl);