You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@zeppelin.apache.org by mo...@apache.org on 2016/08/06 15:03:11 UTC

zeppelin git commit: [Optimization] Code editor key binding event optimization.

Repository: zeppelin
Updated Branches:
  refs/heads/master 8fe914b5d -> ea76ca9f3


[Optimization] Code editor key binding event optimization.

### What is this PR for?
zeppelin custom key binding event optimization for Ace Code editor

### What type of PR is it?
Improvement

### Todos
- [x] optimization for key binding and check logic

### How should this be tested?
For many in the code editor and typing quickly.
The effect is greater when there are many Paragraph.

### Questions:
* Does the licenses files need update? no
* Is there breaking changes for older versions? no
* Does this needs documentation? no

Author: CloverHearts <cl...@gmail.com>

Closes #1287 from cloverhearts/dev/codeditorKeyBindOptimization and squashes the following commits:

76cd284 [CloverHearts] paragraph move jum bug fixed.
27f7146 [CloverHearts] Modify the style syntax for code editor
e4c37b1 [CloverHearts] move to original key bind function for codeeditor optimiza
6a9edbe [CloverHearts] change access type $scope access member to local variable and add last row check logic
8cc63b7 [CloverHearts] fixed syntax error for editor key binding optimization.
b37788d [CloverHearts] Code editor key binding event optimization.


Project: http://git-wip-us.apache.org/repos/asf/zeppelin/repo
Commit: http://git-wip-us.apache.org/repos/asf/zeppelin/commit/ea76ca9f
Tree: http://git-wip-us.apache.org/repos/asf/zeppelin/tree/ea76ca9f
Diff: http://git-wip-us.apache.org/repos/asf/zeppelin/diff/ea76ca9f

Branch: refs/heads/master
Commit: ea76ca9f3f4fe98da45adcb81d7611801b11e1e4
Parents: 8fe914b
Author: CloverHearts <cl...@gmail.com>
Authored: Fri Aug 5 23:18:02 2016 +0900
Committer: Lee moon soo <mo...@apache.org>
Committed: Sat Aug 6 08:03:00 2016 -0700

----------------------------------------------------------------------
 .../notebook/paragraph/paragraph.controller.js  | 52 ++++++++++++--------
 1 file changed, 32 insertions(+), 20 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/zeppelin/blob/ea76ca9f/zeppelin-web/src/app/notebook/paragraph/paragraph.controller.js
----------------------------------------------------------------------
diff --git a/zeppelin-web/src/app/notebook/paragraph/paragraph.controller.js b/zeppelin-web/src/app/notebook/paragraph/paragraph.controller.js
index 5e8e2fe..2925c47 100644
--- a/zeppelin-web/src/app/notebook/paragraph/paragraph.controller.js
+++ b/zeppelin-web/src/app/notebook/paragraph/paragraph.controller.js
@@ -665,6 +665,19 @@ angular.module('zeppelinWebApp').controller('ParagraphCtrl', function($scope, $r
       $scope.editor.commands.bindKey('ctrl-.', 'startAutocomplete');
       $scope.editor.commands.bindKey('ctrl-space', null);
 
+      var keyBindingEditorFocusAction = function(scrollValue) {
+        var numRows = $scope.editor.getSession().getLength();
+        var currentRow = $scope.editor.getCursorPosition().row;
+        if (currentRow === 0 && scrollValue <= 0) {
+          // move focus to previous paragraph
+          $scope.$emit('moveFocusToPreviousParagraph', $scope.paragraph.id);
+        } else if (currentRow === numRows - 1 && scrollValue >= 0) {
+          $scope.$emit('moveFocusToNextParagraph', $scope.paragraph.id);
+        } else {
+          $scope.scrollToCursor($scope.paragraph.id, scrollValue);
+        }
+      };
+
       // handle cursor moves
       $scope.editor.keyBinding.origOnCommandKey = $scope.editor.keyBinding.onCommandKey;
       $scope.editor.keyBinding.onCommandKey = function(e, hashId, keyCode) {
@@ -678,27 +691,26 @@ angular.module('zeppelinWebApp').controller('ParagraphCtrl', function($scope, $r
             angular.element('#' + $scope.paragraph.id + '_editor > textarea').css('top', cursorPos.top);
           }
 
-          var numRows;
-          var currentRow;
+          var ROW_UP = -1;
+          var ROW_DOWN = 1;
 
-          if (keyCode === 38 || (keyCode === 80 && e.ctrlKey && !e.altKey)) {  // UP
-            numRows = $scope.editor.getSession().getLength();
-            currentRow = $scope.editor.getCursorPosition().row;
-            if (currentRow === 0) {
-              // move focus to previous paragraph
-              $scope.$emit('moveFocusToPreviousParagraph', $scope.paragraph.id);
-            } else {
-              $scope.scrollToCursor($scope.paragraph.id, -1);
-            }
-          } else if (keyCode === 40 || (keyCode === 78 && e.ctrlKey && !e.altKey)) {  // DOWN
-            numRows = $scope.editor.getSession().getLength();
-            currentRow = $scope.editor.getCursorPosition().row;
-            if (currentRow === numRows - 1) {
-              // move focus to next paragraph
-              $scope.$emit('moveFocusToNextParagraph', $scope.paragraph.id);
-            } else {
-              $scope.scrollToCursor($scope.paragraph.id, 1);
-            }
+          switch (keyCode) {
+            case 38:
+              keyBindingEditorFocusAction(ROW_UP);
+              break;
+            case 80:
+              if (e.ctrlKey && !e.altKey) {
+                keyBindingEditorFocusAction(ROW_UP);
+              }
+              break;
+            case 40:
+              keyBindingEditorFocusAction(ROW_DOWN);
+              break;
+            case 78:
+              if (e.ctrlKey && !e.altKey) {
+                keyBindingEditorFocusAction(ROW_DOWN);
+              }
+              break;
           }
         }
         this.origOnCommandKey(e, hashId, keyCode);