This is an automated email from the ASF dual-hosted git repository. jongyoul pushed a commit to branch branch-0.12 in repository https://gitbox.apache.org/repos/asf/zeppelin.git
The following commit(s) were added to refs/heads/branch-0.12 by this push: new 8e8ef5a0c1 [ZEPPELIN-2729] Paragraph numbering 8e8ef5a0c1 is described below commit 8e8ef5a0c1102d4c8c3ca1cf87408a9631beb3b4 Author: Timo <timo...@gmail.com> AuthorDate: Thu Apr 10 10:44:34 2025 +0200 [ZEPPELIN-2729] Paragraph numbering ### What is this PR for? Added a button on the top toolbar of the notebook to toggle paragraph numbering. It adds a "Paragraph N" on the top-right of each paragraph, mainly useful when collaborating and guiding others to the right place. ### What type of PR is it? Feature ### What is the Jira issue? [ZEPPELIN-2729](https://issues.apache.org/jira/browse/ZEPPELIN-2729) ### Screenshots [gfycat mp4 video](https://gfycat.com/LeafyAntiqueCrab) ### Questions: * Does the licenses files need update? no * Is there breaking changes for older versions? no * Does this needs documentation? no Closes #2782 from timovwb/paragraph-numbering. Signed-off-by: Jongyoul Lee <jongy...@gmail.com> (cherry picked from commit 7afcf3e59dc930f4e5e05366de155a0a84afdc0a) Signed-off-by: Jongyoul Lee <jongy...@gmail.com> --- .../src/app/notebook/notebook-actionBar.html | 8 +++++++ .../src/app/notebook/notebook.controller.js | 19 ++++++++++++++++ .../app/notebook/paragraph/paragraph-control.html | 4 ++++ .../app/notebook/paragraph/paragraph.controller.js | 26 ++++++++++++++++++++++ 4 files changed, 57 insertions(+) diff --git a/zeppelin-web/src/app/notebook/notebook-actionBar.html b/zeppelin-web/src/app/notebook/notebook-actionBar.html index 4822f66876..e3d4fff507 100644 --- a/zeppelin-web/src/app/notebook/notebook-actionBar.html +++ b/zeppelin-web/src/app/notebook/notebook-actionBar.html @@ -51,6 +51,14 @@ limitations under the License. ng-disabled="revisionView"> <i ng-class="tableToggled ? 'fa icon-notebook' : 'fa icon-book-open'"></i> </button> + <button type="button" + class="btn btn-default btn-xs" + ng-click="toggleAllNumbering()" + ng-hide="viewOnly" + tooltip-placement="bottom" uib-tooltip="Toggle paragraph numbering" + ng-disabled="revisionView"> + <i class="fa fa-list-ol"></i> + </button> <button type="button" class="btn btn-default btn-xs" ng-click="clearAllParagraphOutput(note.id)" diff --git a/zeppelin-web/src/app/notebook/notebook.controller.js b/zeppelin-web/src/app/notebook/notebook.controller.js index 20e6d267b8..4d1abfce01 100644 --- a/zeppelin-web/src/app/notebook/notebook.controller.js +++ b/zeppelin-web/src/app/notebook/notebook.controller.js @@ -464,6 +464,22 @@ function NotebookCtrl($scope, $route, $routeParams, $location, $rootScope, $scope.$broadcast('closeTable'); }; + $scope.toggleAllNumbering = function () { + if ($scope.note.config.numberingToggled) { + $scope.$broadcast('setNumbering', false) + } else { + $scope.$broadcast('setNumbering', true) + } + $scope.note.config.numberingToggled = !$scope.note.config.numberingToggled + $scope.setConfig() + } + + $scope.updateParagraphNumbering = function () { + for (let i = 0; i < $scope.note.paragraphs.length; i++) { + $scope.note.paragraphs[i].number = i + 1 + } + } + /** * @returns {boolean} true if one more paragraphs are running. otherwise return false. */ @@ -608,6 +624,7 @@ function NotebookCtrl($scope, $route, $routeParams, $location, $rootScope, return; } addPara(paragraph, index); + $scope.updateParagraphNumbering(); }); $scope.$on('removeParagraph', function(event, paragraphId) { @@ -615,6 +632,7 @@ function NotebookCtrl($scope, $route, $routeParams, $location, $rootScope, return; } removePara(paragraphId); + $scope.updateParagraphNumbering(); }); $scope.$on('moveParagraph', function(event, paragraphId, newIdx) { @@ -625,6 +643,7 @@ function NotebookCtrl($scope, $route, $routeParams, $location, $rootScope, if (removedPara && removedPara.length === 1) { addPara(removedPara[0], newIdx); } + $scope.updateParagraphNumbering() }); $scope.$on('updateNote', function(event, name, config, info) { diff --git a/zeppelin-web/src/app/notebook/paragraph/paragraph-control.html b/zeppelin-web/src/app/notebook/paragraph/paragraph-control.html index 9ac5b07d07..81d711155d 100644 --- a/zeppelin-web/src/app/notebook/paragraph/paragraph-control.html +++ b/zeppelin-web/src/app/notebook/paragraph/paragraph-control.html @@ -13,6 +13,10 @@ limitations under the License. --> <div id="{{paragraph.id}}_control" class="control" ng-show="!asIframe"> + <span class="numbering" + ng-if="paragraph.config.numbering"> + Paragraph<span ng-bind-html="paragraph.number"></span> | + </span> <span> <span ng-show="paragraph.runtimeInfos.jobUrl.values.length == 1"> <a href="{{paragraph.runtimeInfos.jobUrl.values[0].jobUrl}}" target="_blank" rel="noopener noreferrer" style="text-decoration: none;" diff --git a/zeppelin-web/src/app/notebook/paragraph/paragraph.controller.js b/zeppelin-web/src/app/notebook/paragraph/paragraph.controller.js index 4053cd8af3..3d21fec343 100644 --- a/zeppelin-web/src/app/notebook/paragraph/paragraph.controller.js +++ b/zeppelin-web/src/app/notebook/paragraph/paragraph.controller.js @@ -155,6 +155,8 @@ function ParagraphCtrl($scope, $rootScope, $route, $window, $routeParams, $locat noteVarShareService.put($scope.paragraph.id + '_paragraphScope', paragraphScope); initializeDefault($scope.paragraph.config); + + $scope.updateParagraphNumbering(); }; $scope.$on('noteRunningStatus', function(event, status) { @@ -177,6 +179,10 @@ function ParagraphCtrl($scope, $rootScope, $route, $window, $routeParams, $locat config.enabled = true; } + if (config.numbering === undefined) { + config.numbering = $scope.note.config.numberingToggled + } + for (let idx in forms) { if (forms[idx]) { if (forms[idx].options) { @@ -643,6 +649,18 @@ function ParagraphCtrl($scope, $rootScope, $route, $window, $routeParams, $locat commitParagraph(paragraph); }; + $scope.showNumbering = function(paragraph) { + console.log('show numbering'); + paragraph.config.numbering = true; + commitParagraph(paragraph); + }; + + $scope.hideNumbering = function(paragraph) { + console.log('hide numbering'); + paragraph.config.numbering = false; + commitParagraph(paragraph); + }; + let openEditorAndCloseTable = function(paragraph) { manageEditorAndTableState(paragraph, false, true); }; @@ -1806,6 +1824,14 @@ function ParagraphCtrl($scope, $rootScope, $route, $window, $routeParams, $locat $scope.closeTable($scope.paragraph); }); + $scope.$on('setNumbering', function(event, value) { + if (value) { + $scope.showNumbering($scope.paragraph) + } else { + $scope.hideNumbering($scope.paragraph) + } + }); + $scope.$on('resultRendered', function(event, paragraphId) { if ($scope.paragraph.id !== paragraphId) { return;