grafana/public/app/features/dashboard/keybindings.js

85 lines
2.4 KiB
JavaScript
Raw Normal View History

define([
'angular',
'jquery',
],
function(angular, $) {
"use strict";
2014-07-28 11:11:52 -05:00
var module = angular.module('grafana.services');
module.service('dashboardKeybindings', function($rootScope, keyboardManager, $modal, $q) {
2014-06-08 07:40:44 -05:00
2014-06-12 06:37:40 -05:00
this.shortcuts = function(scope) {
2014-06-08 07:40:44 -05:00
2014-06-12 06:37:40 -05:00
scope.$on('$destroy', function() {
keyboardManager.unbindAll();
2014-06-12 06:37:40 -05:00
});
var helpModalScope = null;
keyboardManager.bind('shift+?', function() {
if (helpModalScope) { return; }
helpModalScope = $rootScope.$new();
var helpModal = $modal({
template: './app/partials/help_modal.html',
persist: false,
show: false,
scope: helpModalScope,
keyboard: false
});
helpModalScope.$on('$destroy', function() { helpModalScope = null; });
$q.when(helpModal).then(function(modalEl) { modalEl.modal('show'); });
}, { inputDisabled: true });
keyboardManager.bind('ctrl+f', function() {
scope.appEvent('show-dash-search');
2014-06-06 23:38:33 -05:00
}, { inputDisabled: true });
keyboardManager.bind('ctrl+o', function() {
var current = scope.dashboard.sharedCrosshair;
scope.dashboard.sharedCrosshair = !current;
scope.broadcastRefresh();
}, { inputDisabled: true });
2014-11-08 04:44:23 -06:00
keyboardManager.bind('ctrl+l', function() {
scope.$broadcast('toggle-all-legends');
2014-11-08 04:44:23 -06:00
}, { inputDisabled: true });
2014-06-06 23:38:33 -05:00
keyboardManager.bind('ctrl+h', function() {
2014-06-12 06:37:40 -05:00
var current = scope.dashboard.hideControls;
scope.dashboard.hideControls = !current;
2014-06-06 23:38:33 -05:00
}, { inputDisabled: true });
keyboardManager.bind('ctrl+s', function(evt) {
scope.appEvent('save-dashboard', evt);
2014-06-06 23:38:33 -05:00
}, { inputDisabled: true });
keyboardManager.bind('ctrl+r', function() {
scope.broadcastRefresh();
2014-06-06 23:38:33 -05:00
}, { inputDisabled: true });
keyboardManager.bind('ctrl+z', function(evt) {
scope.appEvent('zoom-out', evt);
2014-06-06 23:38:33 -05:00
}, { inputDisabled: true });
keyboardManager.bind('esc', function() {
var popups = $('.popover.in');
if (popups.length > 0) {
return;
}
// close modals
var modalData = $(".modal").data();
if (modalData && modalData.$scope && modalData.$scope.dismiss) {
modalData.$scope.dismiss();
}
scope.appEvent('hide-dash-editor');
scope.exitFullscreen();
2014-06-06 23:38:33 -05:00
}, { inputDisabled: true });
};
});
});