Commit 4a362704 by Harald Kraemer

Moved dashboard keybinding setup to own service.

The goal is to split up the situation between the dashboard
controller and the current dashboard service. I want to be
able to use the routing in order to select various dashboard
controllers, so I can extend the current scripting
mechanism by implementing new dashboard controllers.

However, to do this in a non-insane way, I need to move as
much functionality as possible into services, so the individual
controllers just need to throw the right set of services
together and add a bit of loading logic.
parent 2c43fdc4
......@@ -98,7 +98,7 @@ function (angular, $, _, appLevelRequire) {
'pasvaz.bindonce'
];
_.each('controllers directives factories services filters'.split(' '),
_.each('controllers directives factories services services.dashboard filters'.split(' '),
function (type) {
var module_name = 'kibana.'+type;
// create the module
......
......@@ -22,7 +22,8 @@ define([
'jquery',
'config',
'underscore',
'services/all'
'services/all',
'services/dashboard/all'
],
function (angular, $, config, _) {
"use strict";
......@@ -30,7 +31,7 @@ function (angular, $, config, _) {
var module = angular.module('kibana.controllers');
module.controller('DashCtrl', function(
$scope, $rootScope, ejsResource, dashboard,
$scope, $rootScope, ejsResource, dashboard, dashboardKeybindings,
alertSrv, panelMove, keyboardManager, grafanaVersion) {
$scope.requiredElasticSearchVersion = ">=0.90.3";
......@@ -66,68 +67,7 @@ function (angular, $, config, _) {
$scope.bindKeyboardShortcuts();
};
$scope.bindKeyboardShortcuts = function() {
$rootScope.$on('panel-fullscreen-enter', function() {
$rootScope.fullscreen = true;
});
$rootScope.$on('panel-fullscreen-exit', function() {
$rootScope.fullscreen = false;
});
$rootScope.$on('dashboard-saved', function() {
if ($rootScope.fullscreen) {
$rootScope.$emit('panel-fullscreen-exit');
}
});
keyboardManager.bind('ctrl+f', function(evt) {
$rootScope.$emit('open-search', evt);
}, { inputDisabled: true });
keyboardManager.bind('ctrl+h', function() {
var current = dashboard.current.hideControls;
dashboard.current.hideControls = !current;
dashboard.current.panel_hints = current;
}, { inputDisabled: true });
keyboardManager.bind('ctrl+s', function(evt) {
$rootScope.$emit('save-dashboard', evt);
}, { inputDisabled: true });
keyboardManager.bind('ctrl+r', function() {
dashboard.refresh();
}, { inputDisabled: true });
keyboardManager.bind('ctrl+z', function(evt) {
$rootScope.$emit('zoom-out', evt);
}, { inputDisabled: true });
keyboardManager.bind('esc', function() {
var popups = $('.popover.in');
if (popups.length > 0) {
return;
}
$rootScope.$emit('panel-fullscreen-exit');
}, { inputDisabled: true });
};
$scope.countWatchers = function (scopeStart) {
var q = [scopeStart || $rootScope], watchers = 0, scope;
while (q.length > 0) {
scope = q.pop();
if (scope.$$watchers) {
watchers += scope.$$watchers.length;
}
if (scope.$$childHead) {
q.push(scope.$$childHead);
}
if (scope.$$nextSibling) {
q.push(scope.$$nextSibling);
}
}
window.console.log(watchers);
};
$scope.bindKeyboardShortcuts = dashboardKeybindings.shortcuts
$scope.isPanel = function(obj) {
if(!_.isNull(obj) && !_.isUndefined(obj) && !_.isUndefined(obj.type)) {
......@@ -196,4 +136,4 @@ function (angular, $, config, _) {
$scope.init();
});
});
\ No newline at end of file
});
define([
'./dashboardKeyBindings',
],
function () {});
define([
'angular',
'jquery',
'underscore',
'services/all'
],
function( angular, $, _ ) {
"use strict";
var module = angular.module('kibana.services.dashboard');
module.service( 'dashboardKeybindings', function($rootScope, keyboardManager, dashboard) {
this.shortcuts = function() {
$rootScope.$on('panel-fullscreen-enter', function() {
$rootScope.fullscreen = true;
});
$rootScope.$on('panel-fullscreen-exit', function() {
$rootScope.fullscreen = false;
});
$rootScope.$on('dashboard-saved', function() {
if ($rootScope.fullscreen) {
$rootScope.$emit('panel-fullscreen-exit');
}
});
keyboardManager.bind('ctrl+f', function(evt) {
$rootScope.$emit('open-search', evt);
}, { inputDisabled: true });
keyboardManager.bind('ctrl+h', function() {
var current = dashboard.current.hideControls;
dashboard.current.hideControls = !current;
dashboard.current.panel_hints = current;
}, { inputDisabled: true });
keyboardManager.bind('ctrl+s', function(evt) {
$rootScope.$emit('save-dashboard', evt);
}, { inputDisabled: true });
keyboardManager.bind('ctrl+r', function() {
dashboard.refresh();
}, { inputDisabled: true });
keyboardManager.bind('ctrl+z', function(evt) {
$rootScope.$emit('zoom-out', evt);
}, { inputDisabled: true });
keyboardManager.bind('esc', function() {
var popups = $('.popover.in');
if (popups.length > 0) {
return;
}
$rootScope.$emit('panel-fullscreen-exit');
}, { inputDisabled: true });
};
});
});
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