فهرست منبع

keyboard binding now work again

Torkel Ödegaard 11 سال پیش
والد
کامیت
4c64bcfae7

+ 4 - 5
src/app/controllers/dash.js

@@ -31,16 +31,13 @@ function (angular, $, config, _) {
   var module = angular.module('kibana.controllers');
 
   module.controller('DashCtrl', function(
-    $scope, $rootScope, dashboardKeybindings, filterSrv, dashboard, panelMoveSrv, alertSrv, timer) {
+    $scope, $rootScope, dashboardKeybindings, filterSrv, dashboard, panelMoveSrv, timer) {
 
     $scope.editor = { index: 0 };
 
     $scope.init = function() {
       $scope.availablePanels = config.panels;
-
-      dashboardKeybindings.shortcuts();
-
-      $scope.onAppEvent('setup-dashboard', $scope.setupDashboard, $scope);
+      $scope.onAppEvent('setup-dashboard', $scope.setupDashboard);
     };
 
     $scope.setupDashboard = function(event, dashboardData) {
@@ -62,6 +59,8 @@ function (angular, $, config, _) {
 
       window.document.title = 'Grafana - ' + $scope.dashboard.title;
 
+      dashboardKeybindings.shortcuts($scope);
+
       $scope.emitAppEvent("dashboard-loaded", $scope.dashboard);
     };
 

+ 3 - 3
src/app/controllers/grafanaCtrl.js

@@ -17,12 +17,12 @@ function (angular, config, _) {
       $scope.dashAlerts = alertSrv;
     };
 
-    $scope.onAppEvent = function(name, callback, scope) {
+    $rootScope.onAppEvent = function(name, callback) {
       var unbind = $rootScope.$on(name, callback);
-      scope.$on('$destroy', unbind);
+      this.$on('$destroy', unbind);
     };
 
-    $scope.emitAppEvent = function(name, payload) {
+    $rootScope.emitAppEvent = function(name, payload) {
       $rootScope.$emit(name, payload);
     };
 

+ 1 - 1
src/app/controllers/search.js

@@ -16,7 +16,7 @@ function (angular, _, config, $) {
       $scope.selectedIndex = -1;
       $scope.results = {dashboards: [], tags: [], metrics: []};
       $scope.query = { query: 'title:' };
-      $scope.onAppEvent('open-search', $scope.openSearch, $scope);
+      $scope.onAppEvent('open-search', $scope.openSearch);
     };
 
     $scope.keyDown = function (evt) {

+ 0 - 1
src/app/dashboards/default.json

@@ -92,7 +92,6 @@
   ],
   "editable": true,
   "failover": false,
-  "panel_hints": true,
   "style": "dark",
   "pulldowns": [
     {

+ 3 - 3
src/app/partials/dashboard.html

@@ -1,4 +1,4 @@
-<div ng-controller="DashCtrl">
+<div ng-controller="DashCtrl" body-class>
 
   <div class="navbar navbar-static-top">
     <div class="navbar-inner">
@@ -42,7 +42,7 @@
               <div class="row-open" ng-show="!row.collapse">
                 <div ng-show="row.collapsable" class='row-tab bgPrimary' ng-click="toggle_row(row)">
                   <span class="row-tab-button">
-                    <i class="icon-caret-right" ></i>
+                    <i class="icon-caret-right"></i>
                   </span>
                 </div>
                 <div class='row-tab bgSuccess dropdown' ng-show="row.editable">
@@ -110,7 +110,7 @@
         </div>
 
 
-      <div ng-show='dashboard.editable && dashboard.panel_hints' class="row-fluid add-row-panel-hint">
+      <div ng-show='dashboard.editable' class="row-fluid add-row-panel-hint">
         <div class="span12" style="text-align:right;">
           <span style="margin-right: 10px;" ng-click="add_row_default()" class="pointer btn btn-info btn-mini">
             <span><i class="icon-plus-sign"></i> ADD A ROW</span>

+ 1 - 4
src/app/partials/dasheditor.html

@@ -22,10 +22,7 @@
           <select ng-model="dashboard.timezone" class='input-small' ng-options="f for f in ['browser','utc']"></select>
         </div>
         <div class="editor-option">
-          <label class="small"> Hints <tip>Show 'Add panel' hints in empty spaces</tip></label><input type="checkbox" ng-model="dashboard.panel_hints" ng-checked="dashboard.panel_hints" />
-        </div>
-        <div class="editor-option">
-          <label class="small">Hide controls</label>
+          <label class="small">Hide controls (CTRL+H)</label>
           <input type="checkbox" ng-model="dashboard.hideControls" ng-checked="dashboard.hideControls">
         </div>
       </div>

+ 23 - 19
src/app/services/dashboard/dashboardKeyBindings.js

@@ -8,50 +8,54 @@ function(angular, $) {
 
   var module = angular.module('kibana.services');
 
-  module.service('dashboardKeybindings', function($rootScope, keyboardManager, dashboard) {
+  module.service('dashboardKeybindings', function($rootScope, keyboardManager) {
     this.hasRegistered = false;
 
-    this.shortcuts = function() {
-      if (this.hasRegistered) {
-        return;
-      }
+    this.shortcuts = function(scope) {
 
-      this.hasRegistered = true;
-
-      $rootScope.$on('panel-fullscreen-enter', function() {
+      scope.onAppEvent('panel-fullscreen-enter', function() {
         $rootScope.fullscreen = true;
       });
 
-      $rootScope.$on('panel-fullscreen-exit', function() {
+      scope.onAppEvent('panel-fullscreen-exit', function() {
         $rootScope.fullscreen = false;
       });
 
-      $rootScope.$on('dashboard-saved', function() {
+      scope.onAppEvent('dashboard-saved', function() {
         if ($rootScope.fullscreen) {
-          $rootScope.$emit('panel-fullscreen-exit');
+          scope.emitAppEvent('panel-fullscreen-exit');
         }
       });
 
+      scope.$on('$destroy', function() {
+        console.log('unbind keyboardManager');
+        keyboardManager.unbind('ctrl+f');
+        keyboardManager.unbind('ctrl+h');
+        keyboardManager.unbind('ctrl+s');
+        keyboardManager.unbind('ctrl+r');
+        keyboardManager.unbind('ctrl+z');
+        keyboardManager.unbind('esc');
+      });
+
       keyboardManager.bind('ctrl+f', function(evt) {
-        $rootScope.$emit('open-search', evt);
+        scope.emitAppEvent('open-search', evt);
       }, { inputDisabled: true });
 
       keyboardManager.bind('ctrl+h', function() {
-        var current = dashboard.current.hideControls;
-        dashboard.current.hideControls = !current;
-        dashboard.current.panel_hints = current;
+        var current = scope.dashboard.hideControls;
+        scope.dashboard.hideControls = !current;
       }, { inputDisabled: true });
 
       keyboardManager.bind('ctrl+s', function(evt) {
-        $rootScope.$emit('save-dashboard', evt);
+        scope.emitAppEvent('save-dashboard', evt);
       }, { inputDisabled: true });
 
       keyboardManager.bind('ctrl+r', function() {
-        dashboard.emit_refresh();
+        scope.dashboard.emit_refresh();
       }, { inputDisabled: true });
 
       keyboardManager.bind('ctrl+z', function(evt) {
-        $rootScope.$emit('zoom-out', evt);
+        scope.emitAppEvent('zoom-out', evt);
       }, { inputDisabled: true });
 
       keyboardManager.bind('esc', function() {
@@ -59,7 +63,7 @@ function(angular, $) {
         if (popups.length > 0) {
           return;
         }
-        $rootScope.$emit('panel-fullscreen-exit');
+        scope.emitAppEvent('panel-fullscreen-exit');
       }, { inputDisabled: true });
     };
   });

+ 1 - 1
src/index.html

@@ -18,7 +18,7 @@
 
   </head>
 
-  <body ng-cloak body-class ng-controller="GrafanaCtrl">
+  <body ng-cloak ng-controller="GrafanaCtrl">
 
     <link rel="stylesheet" href="css/bootstrap.light.min.css" ng-if="dashboard.style === 'light'">
     <link rel="stylesheet" href="css/bootstrap-responsive.min.css">