From 9a03cd8e761ebb46f05693a1f50b29ab2a207695 Mon Sep 17 00:00:00 2001 From: Prabhjyot Singh Date: Thu, 31 Dec 2015 13:10:14 +0530 Subject: [PATCH 1/3] keep scope for mouse drag, doulble/multiple clicks --- .../src/app/notebook/notebook.controller.js | 49 ++++++++++++++++--- 1 file changed, 41 insertions(+), 8 deletions(-) diff --git a/zeppelin-web/src/app/notebook/notebook.controller.js b/zeppelin-web/src/app/notebook/notebook.controller.js index 9030a49979d..d4e663498a4 100644 --- a/zeppelin-web/src/app/notebook/notebook.controller.js +++ b/zeppelin-web/src/app/notebook/notebook.controller.js @@ -40,6 +40,9 @@ angular.module('zeppelinWebApp').controller('NotebookCtrl', $scope.interpreterBindings = []; $scope.isNoteDirty = null; $scope.saveTimer = null; + $scope.paragraphClickFlag = 0; + $scope.alreadyclicked = false; + $scope.alreadyclickedTimeout = null; var angularObjectRegistry = {}; var connectedOnce = false; @@ -95,17 +98,47 @@ angular.module('zeppelinWebApp').controller('NotebookCtrl', if (!$scope.note) { return; } - for (var i=0; i<$scope.note.paragraphs.length; i++) { - var paragraphId = $scope.note.paragraphs[i].id; - if (jQuery.contains(angular.element('#' + paragraphId + '_container')[0], clickEvent.target)) { - $scope.$broadcast('focusParagraph', paragraphId, 0, true); - break; + try { + for (var i = 0; i < $scope.note.paragraphs.length; i++) { + var paragraphId = $scope.note.paragraphs[i].id; + if (jQuery.contains(angular.element('#' + paragraphId + '_container')[0], clickEvent.target)) { + $scope.$broadcast('focusParagraph', paragraphId, 0, true); + break; + } } + } catch (e) { + //nothing to worry. page changed. } }; - // register mouseevent handler for focus paragraph - document.addEventListener('click', $scope.focusParagraphOnClick); + var doc = angular.element(document); + + $scope.mouseDownHandler = function(evt) { + doc.on('mouseup mousemove', function handler(evt) { + if (evt.type === 'mouseup') { + if ($scope.alreadyclicked) { + // double + if ($scope.alreadyclickedTimeout) { + clearTimeout($scope.alreadyclickedTimeout); + setTimeout(function() { + // can be a tripple click + $scope.alreadyclicked = false; + }, 300); + } + } else { + // single + $scope.alreadyclicked = true; + $scope.alreadyclickedTimeout = setTimeout(function() { + $scope.alreadyclicked = false; + $scope.focusParagraphOnClick(evt); + }, 300); + } + } + doc.off('mouseup mousemove', handler); + }); + }; + + doc.on('mousedown', $scope.mouseDownHandler); $scope.keyboardShortcut = function(keyEvent) { @@ -267,7 +300,7 @@ angular.module('zeppelinWebApp').controller('NotebookCtrl', $scope.killSaveTimer(); $scope.saveNote(); - document.removeEventListener('click', $scope.focusParagraphOnClick); + doc.off('mousedown'); document.removeEventListener('keydown', $scope.keyboardShortcut); }); From daf4ed70876e13a58e528df17b9543b0bf0cd698 Mon Sep 17 00:00:00 2001 From: Lee moon soo Date: Thu, 31 Dec 2015 16:26:09 -0800 Subject: [PATCH 2/3] Another way of handling ZEPPELIN-547 --- .../src/app/notebook/notebook.controller.js | 35 ++----------------- .../paragraph/paragraph.controller.js | 3 +- 2 files changed, 3 insertions(+), 35 deletions(-) diff --git a/zeppelin-web/src/app/notebook/notebook.controller.js b/zeppelin-web/src/app/notebook/notebook.controller.js index d4e663498a4..b3cc0481cb8 100644 --- a/zeppelin-web/src/app/notebook/notebook.controller.js +++ b/zeppelin-web/src/app/notebook/notebook.controller.js @@ -40,9 +40,6 @@ angular.module('zeppelinWebApp').controller('NotebookCtrl', $scope.interpreterBindings = []; $scope.isNoteDirty = null; $scope.saveTimer = null; - $scope.paragraphClickFlag = 0; - $scope.alreadyclicked = false; - $scope.alreadyclickedTimeout = null; var angularObjectRegistry = {}; var connectedOnce = false; @@ -111,35 +108,7 @@ angular.module('zeppelinWebApp').controller('NotebookCtrl', } }; - var doc = angular.element(document); - - $scope.mouseDownHandler = function(evt) { - doc.on('mouseup mousemove', function handler(evt) { - if (evt.type === 'mouseup') { - if ($scope.alreadyclicked) { - // double - if ($scope.alreadyclickedTimeout) { - clearTimeout($scope.alreadyclickedTimeout); - setTimeout(function() { - // can be a tripple click - $scope.alreadyclicked = false; - }, 300); - } - } else { - // single - $scope.alreadyclicked = true; - $scope.alreadyclickedTimeout = setTimeout(function() { - $scope.alreadyclicked = false; - $scope.focusParagraphOnClick(evt); - }, 300); - } - } - doc.off('mouseup mousemove', handler); - }); - }; - - doc.on('mousedown', $scope.mouseDownHandler); - + document.addEventListener('click', $scope.focusParagraphOnClick); $scope.keyboardShortcut = function(keyEvent) { // handle keyevent @@ -300,7 +269,7 @@ angular.module('zeppelinWebApp').controller('NotebookCtrl', $scope.killSaveTimer(); $scope.saveNote(); - doc.off('mousedown'); + document.removeEventListener('click', $scope.focusParagraphOnClick); document.removeEventListener('keydown', $scope.keyboardShortcut); }); diff --git a/zeppelin-web/src/app/notebook/paragraph/paragraph.controller.js b/zeppelin-web/src/app/notebook/paragraph/paragraph.controller.js index 280ef6e8bdb..7a92cd00fc7 100644 --- a/zeppelin-web/src/app/notebook/paragraph/paragraph.controller.js +++ b/zeppelin-web/src/app/notebook/paragraph/paragraph.controller.js @@ -841,9 +841,8 @@ angular.module('zeppelinWebApp') if ($scope.paragraph.id === paragraphId) { // focus editor if (!$scope.paragraph.config.editorHide) { - $scope.editor.focus(); - if (!mouseEvent) { + $scope.editor.focus(); // move cursor to the first row (or the last row) var row; if (cursorPos >= 0) { From ba6cc382560a16a41b6f8fbddade84050835bea9 Mon Sep 17 00:00:00 2001 From: Prabhjyot Singh Date: Fri, 1 Jan 2016 11:43:22 +0530 Subject: [PATCH 3/3] reverting notebook.controller.js changes --- .../src/app/notebook/notebook.controller.js | 15 ++++++--------- 1 file changed, 6 insertions(+), 9 deletions(-) diff --git a/zeppelin-web/src/app/notebook/notebook.controller.js b/zeppelin-web/src/app/notebook/notebook.controller.js index b3cc0481cb8..e10d725308e 100644 --- a/zeppelin-web/src/app/notebook/notebook.controller.js +++ b/zeppelin-web/src/app/notebook/notebook.controller.js @@ -95,19 +95,16 @@ angular.module('zeppelinWebApp').controller('NotebookCtrl', if (!$scope.note) { return; } - try { - for (var i = 0; i < $scope.note.paragraphs.length; i++) { - var paragraphId = $scope.note.paragraphs[i].id; - if (jQuery.contains(angular.element('#' + paragraphId + '_container')[0], clickEvent.target)) { - $scope.$broadcast('focusParagraph', paragraphId, 0, true); - break; - } + for (var i=0; i<$scope.note.paragraphs.length; i++) { + var paragraphId = $scope.note.paragraphs[i].id; + if (jQuery.contains(angular.element('#' + paragraphId + '_container')[0], clickEvent.target)) { + $scope.$broadcast('focusParagraph', paragraphId, 0, true); + break; } - } catch (e) { - //nothing to worry. page changed. } }; + // register mouseevent handler for focus paragraph document.addEventListener('click', $scope.focusParagraphOnClick); $scope.keyboardShortcut = function(keyEvent) {