mirror of
https://github.com/grafana/grafana.git
synced 2025-02-25 18:55:37 -06:00
ux(dashboard): keybinding changes / new, #6442
This commit is contained in:
parent
8ea2d3f19c
commit
f91e067235
@ -1,6 +1,7 @@
|
|||||||
///<reference path="../../headers/common.d.ts" />
|
///<reference path="../../headers/common.d.ts" />
|
||||||
|
|
||||||
import $ from 'jquery';
|
import $ from 'jquery';
|
||||||
|
import _ from 'lodash';
|
||||||
|
|
||||||
import coreModule from 'app/core/core_module';
|
import coreModule from 'app/core/core_module';
|
||||||
import appEvents from 'app/core/app_events';
|
import appEvents from 'app/core/app_events';
|
||||||
@ -9,10 +10,15 @@ import Mousetrap from 'mousetrap';
|
|||||||
|
|
||||||
export class KeybindingSrv {
|
export class KeybindingSrv {
|
||||||
helpModal: boolean;
|
helpModal: boolean;
|
||||||
bindings: any;
|
|
||||||
|
|
||||||
/** @ngInject */
|
/** @ngInject */
|
||||||
constructor(private $rootScope, private $modal, private $location, private contextSrv) {
|
constructor(
|
||||||
|
private $rootScope,
|
||||||
|
private $modal,
|
||||||
|
private $location,
|
||||||
|
private contextSrv,
|
||||||
|
private $timeout) {
|
||||||
|
|
||||||
// clear out all shortcuts on route change
|
// clear out all shortcuts on route change
|
||||||
$rootScope.$on('$routeChangeSuccess', () => {
|
$rootScope.$on('$routeChangeSuccess', () => {
|
||||||
Mousetrap.reset();
|
Mousetrap.reset();
|
||||||
@ -23,9 +29,8 @@ export class KeybindingSrv {
|
|||||||
this.setupGlobal();
|
this.setupGlobal();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
setupGlobal() {
|
setupGlobal() {
|
||||||
this.bind("?", this.showHelpModal);
|
this.bind(['?', 'h'], this.showHelpModal);
|
||||||
this.bind("g h", this.goToHome);
|
this.bind("g h", this.goToHome);
|
||||||
this.bind("g a", this.openAlerting);
|
this.bind("g a", this.openAlerting);
|
||||||
this.bind("g p", this.goToProfile);
|
this.bind("g p", this.goToProfile);
|
||||||
@ -54,7 +59,6 @@ export class KeybindingSrv {
|
|||||||
}
|
}
|
||||||
|
|
||||||
showHelpModal() {
|
showHelpModal() {
|
||||||
console.log('showing help modal');
|
|
||||||
appEvents.emit('show-modal', {
|
appEvents.emit('show-modal', {
|
||||||
src: 'public/app/partials/help_modal.html',
|
src: 'public/app/partials/help_modal.html',
|
||||||
model: {}
|
model: {}
|
||||||
@ -69,6 +73,11 @@ export class KeybindingSrv {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
showDashEditView(view) {
|
||||||
|
var search = _.extend(this.$location.search(), {editview: view});
|
||||||
|
this.$location.search(search);
|
||||||
|
}
|
||||||
|
|
||||||
setupDashboardBindings(scope, dashboard) {
|
setupDashboardBindings(scope, dashboard) {
|
||||||
this.bind('b', () => {
|
this.bind('b', () => {
|
||||||
dashboard.toggleEditMode();
|
dashboard.toggleEditMode();
|
||||||
@ -82,11 +91,6 @@ export class KeybindingSrv {
|
|||||||
this.bind(['ctrl+s', 'command+s'], () => {
|
this.bind(['ctrl+s', 'command+s'], () => {
|
||||||
scope.appEvent('save-dashboard');
|
scope.appEvent('save-dashboard');
|
||||||
});
|
});
|
||||||
|
|
||||||
this.bind('r', () => {
|
|
||||||
scope.broadcastRefresh();
|
|
||||||
});
|
|
||||||
|
|
||||||
this.bind('ctrl+z', () => {
|
this.bind('ctrl+z', () => {
|
||||||
scope.appEvent('zoom-out');
|
scope.appEvent('zoom-out');
|
||||||
});
|
});
|
||||||
@ -128,7 +132,7 @@ export class KeybindingSrv {
|
|||||||
});
|
});
|
||||||
|
|
||||||
// delete panel
|
// delete panel
|
||||||
this.bind('d', () => {
|
this.bind('r', () => {
|
||||||
if (dashboard.meta.focusPanelId && dashboard.meta.canEdit) {
|
if (dashboard.meta.focusPanelId && dashboard.meta.canEdit) {
|
||||||
var panelInfo = dashboard.getPanelInfoById(dashboard.meta.focusPanelId);
|
var panelInfo = dashboard.getPanelInfoById(dashboard.meta.focusPanelId);
|
||||||
panelInfo.row.removePanel(panelInfo.panel);
|
panelInfo.row.removePanel(panelInfo.panel);
|
||||||
@ -136,6 +140,29 @@ export class KeybindingSrv {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
// delete panel
|
||||||
|
this.bind('s', () => {
|
||||||
|
if (dashboard.meta.focusPanelId) {
|
||||||
|
var shareScope = scope.$new();
|
||||||
|
var panelInfo = dashboard.getPanelInfoById(dashboard.meta.focusPanelId);
|
||||||
|
shareScope.panel = panelInfo.panel;
|
||||||
|
shareScope.dashboard = dashboard;
|
||||||
|
|
||||||
|
appEvents.emit('show-modal', {
|
||||||
|
src: 'public/app/features/dashboard/partials/shareModal.html',
|
||||||
|
scope: shareScope
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
this.bind('d r', () => {
|
||||||
|
scope.broadcastRefresh();
|
||||||
|
});
|
||||||
|
|
||||||
|
this.bind('d s', () => {
|
||||||
|
this.showDashEditView('settings');
|
||||||
|
});
|
||||||
|
|
||||||
this.bind('esc', () => {
|
this.bind('esc', () => {
|
||||||
var popups = $('.popover.in');
|
var popups = $('.popover.in');
|
||||||
if (popups.length > 0) {
|
if (popups.length > 0) {
|
||||||
|
@ -64,6 +64,11 @@
|
|||||||
<li ng-if="dashboardMeta.canEdit"><a class="pointer" ng-click="viewJson();">View JSON</a></li>
|
<li ng-if="dashboardMeta.canEdit"><a class="pointer" ng-click="viewJson();">View JSON</a></li>
|
||||||
<li ng-if="contextSrv.isEditor && !dashboard.editable"><a class="pointer" ng-click="makeEditable();">Make Editable</a></li>
|
<li ng-if="contextSrv.isEditor && !dashboard.editable"><a class="pointer" ng-click="makeEditable();">Make Editable</a></li>
|
||||||
<li ng-if="contextSrv.isEditor"><a class="pointer" ng-click="saveDashboardAs();">Save As...</a></li>
|
<li ng-if="contextSrv.isEditor"><a class="pointer" ng-click="saveDashboardAs();">Save As...</a></li>
|
||||||
|
<li class="dropdown-menu-item-with-shortcut">
|
||||||
|
<a class="pointer" ng-click="showHelpModal();">
|
||||||
|
Help <span class="dropdown-menu-item-shortcut">h</span>
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
<li ng-if="dashboardMeta.canSave"><a class="pointer" ng-click="deleteDashboard();">Delete dashboard</a></li>
|
<li ng-if="dashboardMeta.canSave"><a class="pointer" ng-click="deleteDashboard();">Delete dashboard</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
</li>
|
</li>
|
||||||
|
@ -33,6 +33,13 @@ export class DashNavCtrl {
|
|||||||
$location.search(search);
|
$location.search(search);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
$scope.showHelpModal = function() {
|
||||||
|
$scope.appEvent('show-modal', {
|
||||||
|
src: 'public/app/partials/help_modal.html',
|
||||||
|
model: {}
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
$scope.starDashboard = function() {
|
$scope.starDashboard = function() {
|
||||||
if ($scope.dashboardMeta.isStarred) {
|
if ($scope.dashboardMeta.isStarred) {
|
||||||
backendSrv.delete('/api/user/stars/dashboard/' + $scope.dashboard.id).then(function() {
|
backendSrv.delete('/api/user/stars/dashboard/' + $scope.dashboard.id).then(function() {
|
||||||
|
@ -53,21 +53,21 @@ var template = `
|
|||||||
<h3 class="page-heading">Preferences</h3>
|
<h3 class="page-heading">Preferences</h3>
|
||||||
|
|
||||||
<div class="gf-form">
|
<div class="gf-form">
|
||||||
<span class="gf-form-label width-9">UI Theme</span>
|
<span class="gf-form-label width-10">UI Theme</span>
|
||||||
<div class="gf-form-select-wrapper max-width-20">
|
<div class="gf-form-select-wrapper max-width-20">
|
||||||
<select class="gf-form-input" ng-model="ctrl.prefs.theme" ng-options="f.value as f.text for f in ctrl.themes"></select>
|
<select class="gf-form-input" ng-model="ctrl.prefs.theme" ng-options="f.value as f.text for f in ctrl.themes"></select>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="gf-form">
|
<div class="gf-form">
|
||||||
<span class="gf-form-label width-9">Home Dashboard</span>
|
<span class="gf-form-label width-10">Home Dashboard</span>
|
||||||
<dashboard-selector class="gf-form-select-wrapper max-width-20 gf-form-select-wrapper--has-help-icon"
|
<dashboard-selector class="gf-form-select-wrapper max-width-20 gf-form-select-wrapper--has-help-icon"
|
||||||
model="ctrl.prefs.homeDashboardId">
|
model="ctrl.prefs.homeDashboardId">
|
||||||
</dashboard-selector>
|
</dashboard-selector>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="gf-form">
|
<div class="gf-form">
|
||||||
<label class="gf-form-label width-9">Timezone</label>
|
<label class="gf-form-label width-10">Timezone</label>
|
||||||
<div class="gf-form-select-wrapper max-width-20">
|
<div class="gf-form-select-wrapper max-width-20">
|
||||||
<select class="gf-form-input" ng-model="ctrl.prefs.timezone" ng-options="f.value as f.text for f in ctrl.timezones"></select>
|
<select class="gf-form-input" ng-model="ctrl.prefs.timezone" ng-options="f.value as f.text for f in ctrl.timezones"></select>
|
||||||
</div>
|
</div>
|
||||||
|
Loading…
Reference in New Issue
Block a user