DashboardScene: Disable edit related shortcuts for Viewer (#89936)

check if can edit before adding edit shortcuts
pull/89945/head
Sergej-Vlasov 11 months ago committed by GitHub
parent 36ff0fe63a
commit 527071aed6
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
  1. 93
      public/app/features/dashboard-scene/scene/keyboardShortcuts.ts

@ -16,6 +16,8 @@ export function setupKeyboardShortcuts(scene: DashboardScene) {
const keybindings = new KeybindingSet();
let vizPanelKey: string | null = null;
const canEdit = scene.canEditDashboard();
const panelAttentionSubscription = appEvents.subscribe(SetPanelAttentionEvent, (event) => {
if (typeof event.payload.panelId === 'string') {
vizPanelKey = event.payload.panelId;
@ -42,20 +44,6 @@ export function setupKeyboardShortcuts(scene: DashboardScene) {
}),
});
// Panel edit
keybindings.addBinding({
key: 'e',
onTrigger: withFocusedPanel(scene, async (vizPanel: VizPanel) => {
const sceneRoot = vizPanel.getRoot();
if (sceneRoot instanceof DashboardScene) {
const panelId = getPanelIdForVizPanel(vizPanel);
if (!scene.state.editPanel) {
locationService.push(getEditPanelUrl(panelId));
}
}
}),
});
// Panel share
keybindings.addBinding({
key: 'p s',
@ -133,38 +121,55 @@ export function setupKeyboardShortcuts(scene: DashboardScene) {
},
});
// Dashboard settings
keybindings.addBinding({
key: 'd s',
onTrigger: scene.onOpenSettings,
});
keybindings.addBinding({
key: 'mod+s',
onTrigger: () => scene.openSaveDrawer({}),
});
if (canEdit) {
// Panel edit
keybindings.addBinding({
key: 'e',
onTrigger: withFocusedPanel(scene, async (vizPanel: VizPanel) => {
const sceneRoot = vizPanel.getRoot();
if (sceneRoot instanceof DashboardScene) {
const panelId = getPanelIdForVizPanel(vizPanel);
if (!scene.state.editPanel) {
locationService.push(getEditPanelUrl(panelId));
}
}
}),
});
// Dashboard settings
keybindings.addBinding({
key: 'd s',
onTrigger: scene.onOpenSettings,
});
// Open save drawer
keybindings.addBinding({
key: 'mod+s',
onTrigger: () => scene.openSaveDrawer({}),
});
// delete panel
keybindings.addBinding({
key: 'p r',
onTrigger: withFocusedPanel(scene, (vizPanel: VizPanel) => {
if (scene.state.isEditing) {
onRemovePanel(scene, vizPanel);
}
}),
});
// duplicate panel
keybindings.addBinding({
key: 'p d',
onTrigger: withFocusedPanel(scene, (vizPanel: VizPanel) => {
if (scene.state.isEditing) {
scene.duplicatePanel(vizPanel);
}
}),
});
}
// toggle all panel legends (TODO)
// delete panel
keybindings.addBinding({
key: 'p r',
onTrigger: withFocusedPanel(scene, (vizPanel: VizPanel) => {
if (scene.state.isEditing) {
onRemovePanel(scene, vizPanel);
}
}),
});
// duplicate panel
keybindings.addBinding({
key: 'p d',
onTrigger: withFocusedPanel(scene, (vizPanel: VizPanel) => {
if (scene.state.isEditing) {
scene.duplicatePanel(vizPanel);
}
}),
});
// toggle all exemplars (TODO)
// collapse all rows (TODO)
// expand all rows (TODO)

Loading…
Cancel
Save