|
|
|
@ -16,6 +16,7 @@ import { KioskMode } from 'app/types'; |
|
|
|
|
import { PanelInspectDrawer } from '../inspect/PanelInspectDrawer'; |
|
|
|
|
import { buildPanelEditScene } from '../panel-edit/PanelEditor'; |
|
|
|
|
import { createDashboardEditViewFor } from '../settings/utils'; |
|
|
|
|
import { ShareModal } from '../sharing/ShareModal'; |
|
|
|
|
import { findVizPanelByKey, getDashboardSceneFor, getLibraryPanel, isPanelClone } from '../utils/utils'; |
|
|
|
|
|
|
|
|
|
import { DashboardScene, DashboardSceneState } from './DashboardScene'; |
|
|
|
@ -29,7 +30,7 @@ export class DashboardSceneUrlSync implements SceneObjectUrlSyncHandler { |
|
|
|
|
constructor(private _scene: DashboardScene) {} |
|
|
|
|
|
|
|
|
|
getKeys(): string[] { |
|
|
|
|
return ['inspect', 'viewPanel', 'editPanel', 'editview', 'autofitpanels', 'kiosk']; |
|
|
|
|
return ['inspect', 'viewPanel', 'editPanel', 'editview', 'autofitpanels', 'kiosk', 'shareView']; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
getUrlState(): SceneObjectUrlValues { |
|
|
|
@ -41,11 +42,12 @@ export class DashboardSceneUrlSync implements SceneObjectUrlSyncHandler { |
|
|
|
|
editview: state.editview?.getUrlKey(), |
|
|
|
|
editPanel: state.editPanel?.getUrlKey() || undefined, |
|
|
|
|
kiosk: state.kioskMode === KioskMode.Full ? '' : state.kioskMode === KioskMode.TV ? 'tv' : undefined, |
|
|
|
|
shareView: state.shareView, |
|
|
|
|
}; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
updateFromUrl(values: SceneObjectUrlValues): void { |
|
|
|
|
const { inspectPanelKey, viewPanelScene, isEditing, editPanel } = this._scene.state; |
|
|
|
|
const { inspectPanelKey, viewPanelScene, isEditing, editPanel, shareView } = this._scene.state; |
|
|
|
|
const update: Partial<DashboardSceneState> = {}; |
|
|
|
|
|
|
|
|
|
if (typeof values.editview === 'string' && this._scene.canEditDashboard()) { |
|
|
|
@ -153,6 +155,16 @@ export class DashboardSceneUrlSync implements SceneObjectUrlSyncHandler { |
|
|
|
|
update.editPanel = undefined; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
if (typeof values.shareView === 'string') { |
|
|
|
|
update.shareView = values.shareView; |
|
|
|
|
update.overlay = new ShareModal({ |
|
|
|
|
activeTab: values.shareView, |
|
|
|
|
}); |
|
|
|
|
} else if (shareView && values.shareView === null) { |
|
|
|
|
update.overlay = undefined; |
|
|
|
|
update.shareView = undefined; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
if (this._scene.state.body instanceof SceneGridLayout) { |
|
|
|
|
const UNSAFE_fitPanels = typeof values.autofitpanels === 'string'; |
|
|
|
|
|
|
|
|
|