Merge pull request #10998 from grafana/10995_shortcut
Fix keyboard shortcuts
This commit is contained in:
@@ -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() {
|
||||
|
||||
Reference in New Issue
Block a user