|
|
|
@ -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)
|
|
|
|
|