Commit 2d5d5e63 by Carl Bergquist Committed by GitHub

Merge pull request #10998 from grafana/10995_shortcut

Fix keyboard shortcuts
parents 3b836c9c cacfdc64
......@@ -33,10 +33,6 @@ export class HelpCtrl {
{ keys: ['p', 's'], description: 'Open Panel Share Modal' },
{ keys: ['p', 'r'], description: 'Remove Panel' },
],
'Focused Row': [
{ keys: ['r', 'c'], description: 'Collapse Row' },
{ keys: ['r', 'r'], description: 'Remove Row' },
],
'Time Range': [
{ keys: ['t', 'z'], description: 'Zoom out time range' },
{
......
......@@ -171,8 +171,9 @@ export class KeybindingSrv {
// delete panel
this.bind('p r', () => {
if (dashboard.meta.focusPanelId && dashboard.meta.canEdit) {
var panelInfo = dashboard.getPanelInfoById(dashboard.meta.focusPanelId);
panelInfo.row.removePanel(panelInfo.panel);
this.$rootScope.appEvent('panel-remove', {
panelId: dashboard.meta.focusPanelId,
});
dashboard.meta.focusPanelId = 0;
}
});
......@@ -192,36 +193,14 @@ export class KeybindingSrv {
}
});
// delete row
this.bind('r r', () => {
if (dashboard.meta.focusPanelId && dashboard.meta.canEdit) {
var panelInfo = dashboard.getPanelInfoById(dashboard.meta.focusPanelId);
dashboard.removeRow(panelInfo.row);
dashboard.meta.focusPanelId = 0;
}
});
// collapse row
this.bind('r c', () => {
if (dashboard.meta.focusPanelId) {
var panelInfo = dashboard.getPanelInfoById(dashboard.meta.focusPanelId);
panelInfo.row.toggleCollapse();
dashboard.meta.focusPanelId = 0;
}
});
// collapse all rows
this.bind('d shift+c', () => {
for (let row of dashboard.rows) {
row.collapse = true;
}
dashboard.collapseRows();
});
// expand all rows
this.bind('d shift+e', () => {
for (let row of dashboard.rows) {
row.collapse = false;
}
dashboard.expandRows();
});
this.bind('d n', e => {
......
......@@ -3,6 +3,7 @@ import config from 'app/core/config';
import coreModule from 'app/core/core_module';
import { PanelContainer } from './dashgrid/PanelContainer';
import { DashboardModel } from './dashboard_model';
import { PanelModel } from './panel_model';
export class DashboardCtrl implements PanelContainer {
dashboard: DashboardModel;
......@@ -130,9 +131,47 @@ export class DashboardCtrl implements PanelContainer {
return this;
}
onRemovingPanel(evt, options) {
options = options || {};
if (!options.panelId) {
return;
}
var panelInfo = this.dashboard.getPanelInfoById(options.panelId);
this.removePanel(panelInfo.panel, true);
}
removePanel(panel: PanelModel, ask: boolean) {
// confirm deletion
if (ask !== false) {
var text2, confirmText;
if (panel.alert) {
text2 = 'Panel includes an alert rule, removing panel will also remove alert rule';
confirmText = 'YES';
}
this.$scope.appEvent('confirm-modal', {
title: 'Remove Panel',
text: 'Are you sure you want to remove this panel?',
text2: text2,
icon: 'fa-trash',
confirmText: confirmText,
yesText: 'Remove',
onConfirm: () => {
this.removePanel(panel, false);
},
});
return;
}
this.dashboard.removePanel(panel);
}
init(dashboard) {
this.$scope.onAppEvent('show-json-editor', this.showJsonEditor.bind(this));
this.$scope.onAppEvent('template-variable-value-updated', this.templateVariableUpdated.bind(this));
this.$scope.onAppEvent('panel-remove', this.onRemovingPanel.bind(this));
this.setupDashboard(dashboard);
}
}
......
......@@ -524,6 +524,34 @@ export class DashboardModel {
this.removePanel(row);
}
expandRows() {
for (let i = 0; i < this.panels.length; i++) {
var panel = this.panels[i];
if (panel.type !== 'row') {
continue;
}
if (panel.collapsed) {
this.toggleRow(panel);
}
}
}
collapseRows() {
for (let i = 0; i < this.panels.length; i++) {
var panel = this.panels[i];
if (panel.type !== 'row') {
continue;
}
if (!panel.collapsed) {
this.toggleRow(panel);
}
}
}
setPanelFocus(id) {
this.meta.focusPanelId = id;
}
......
......@@ -241,31 +241,10 @@ export class PanelCtrl {
});
}
removePanel(ask: boolean) {
// confirm deletion
if (ask !== false) {
var text2, confirmText;
if (this.panel.alert) {
text2 = 'Panel includes an alert rule, removing panel will also remove alert rule';
confirmText = 'YES';
}
appEvents.emit('confirm-modal', {
title: 'Remove Panel',
text: 'Are you sure you want to remove this panel?',
text2: text2,
icon: 'fa-trash',
confirmText: confirmText,
yesText: 'Remove',
onConfirm: () => {
this.removePanel(false);
},
});
return;
}
this.dashboard.removePanel(this.panel);
removePanel() {
this.publishAppEvent('panel-remove', {
panelId: this.panel.id,
});
}
editPanelJson() {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment