Repository: incubator-zeppelin Updated Branches: refs/heads/master 57555f5ba -> b15964544
[ZEPPELIN-834]Handle Note-name with spaces ### What is this PR for? Handle notename to have only white spaces. ### What type of PR is it? [Bug Fix ] ### Todos ### What is the Jira issue? [ZEPPELIN-834] (https://issues.apache.org/jira/browse/ZEPPELIN-834) ### How should this be tested? Create note with name having only white spaces. you should be able to see note id for those note. ### Screenshots (if appropriate) Before:    After:    ### Questions: * Does the licenses files need update?NO * Is there breaking changes for older versions?NO * Does this needs documentation?NO Author: Ravi Ranjan <ranjanravi0...@gmail.com> Closes #866 from ravicodder/handleBlankNoteName and squashes the following commits: 3c88876 [Ravi Ranjan] Refactor the logic into common function 6625360 [Ravi Ranjan] Merge branch 'master' of https://github.com/apache/incubator-zeppelin into handleBlankNoteName 67f3cab [Ravi Ranjan] Handle blank note name Project: http://git-wip-us.apache.org/repos/asf/incubator-zeppelin/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-zeppelin/commit/b1596454 Tree: http://git-wip-us.apache.org/repos/asf/incubator-zeppelin/tree/b1596454 Diff: http://git-wip-us.apache.org/repos/asf/incubator-zeppelin/diff/b1596454 Branch: refs/heads/master Commit: b15964544cc86c19007119bab2086c7f1e65cdc9 Parents: 57555f5 Author: Ravi Ranjan <ranjanravi0...@gmail.com> Authored: Wed May 4 11:32:15 2016 +0530 Committer: Prabhjyot Singh <prabhjyotsi...@gmail.com> Committed: Tue May 10 10:48:06 2016 +0530 ---------------------------------------------------------------------- docs/manual/notebookashomepage.md | 2 +- zeppelin-web/src/app/home/home.controller.js | 4 ++++ zeppelin-web/src/app/home/home.html | 12 ++++++++---- zeppelin-web/src/app/notebook/notebook-actionBar.html | 4 ++-- zeppelin-web/src/app/search/result-list.html | 2 +- .../arrayOrderingSrv/arrayOrdering.service.js | 12 +++++++++++- zeppelin-web/src/components/navbar/navbar.html | 8 ++++++-- 7 files changed, 33 insertions(+), 11 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-zeppelin/blob/b1596454/docs/manual/notebookashomepage.md ---------------------------------------------------------------------- diff --git a/docs/manual/notebookashomepage.md b/docs/manual/notebookashomepage.md index 7b090ec..48f06a6 100644 --- a/docs/manual/notebookashomepage.md +++ b/docs/manual/notebookashomepage.md @@ -88,7 +88,7 @@ you need to do is use our %angular support. <i style="font-size: 15px;" class="icon-notebook"></i> Create new note</a></h5> <ul style="list-style-type: none;"> <li ng-repeat="note in home.notes.list track by $index"><i style="font-size: 10px;" class="icon-doc"></i> - <a style="text-decoration: none;" href="#/notebook/{{note.id}}">{{note.name || 'Note ' + note.id}}</a> + <a style="text-decoration: none;" href="#/notebook/{{note.id}}">{{noteName(note)}}</a> </li> </ul> </div> http://git-wip-us.apache.org/repos/asf/incubator-zeppelin/blob/b1596454/zeppelin-web/src/app/home/home.controller.js ---------------------------------------------------------------------- diff --git a/zeppelin-web/src/app/home/home.controller.js b/zeppelin-web/src/app/home/home.controller.js index 63410ce..a87ac91 100644 --- a/zeppelin-web/src/app/home/home.controller.js +++ b/zeppelin-web/src/app/home/home.controller.js @@ -76,4 +76,8 @@ angular.module('zeppelinWebApp').controller('HomeCtrl', function($scope, noteboo node.hidden = !node.hidden; }; + $rootScope.noteName = function(note) { + return arrayOrderingSrv.getNoteName(note); + }; + }); http://git-wip-us.apache.org/repos/asf/incubator-zeppelin/blob/b1596454/zeppelin-web/src/app/home/home.html ---------------------------------------------------------------------- diff --git a/zeppelin-web/src/app/home/home.html b/zeppelin-web/src/app/home/home.html index 7255f68..b6466cf 100644 --- a/zeppelin-web/src/app/home/home.html +++ b/zeppelin-web/src/app/home/home.html @@ -15,12 +15,12 @@ limitations under the License. <script type="text/ng-template" id="notebook_folder_renderer.html"> <div ng-if="node.children == null"> <a style="text-decoration: none;" href="#/notebook/{{node.id}}"> - <i style="font-size: 10px;" class="icon-doc"/> {{node.name || 'Note ' + node.id}} + <i style="font-size: 10px;" class="icon-doc"/> {{noteName(node)}} </a> </div> <div ng-if="node.children != null"> <a style="text-decoration: none; cursor: pointer;" ng-click="toggleFolderNode(node)"> - <i style="font-size: 10px;" ng-class="node.hidden ? 'icon-folder' : 'icon-folder-alt'" /> {{node.name}} + <i style="font-size: 10px;" ng-class="node.hidden ? 'icon-folder' : 'icon-folder-alt'" /> {{noteName(node)}} </a> <div ng-if="!node.hidden"> <ul style="list-style-type: none; padding-left:15px;"> @@ -59,13 +59,17 @@ limitations under the License. <i style="font-size: 15px;" class="icon-notebook"></i> Create new note</a></h5> <ul id="notebook-names"> <li class="filter-names" ng-include="'components/filterNoteNames/filter-note-names.html'"></li> + <li ng-repeat="note in home.notes.list | filter:query | orderBy:home.arrayOrderingSrv.notebookListOrdering track by $index"> + <i style="font-size: 10px;" class="icon-doc"></i> + <a style="text-decoration: none;" href="#/notebook/{{note.id}}">{{noteName(note)}}</a> + </li> <div ng-if="!query || query.name === ''"> - <li ng-repeat="node in home.notes.root.children" ng-include="'notebook_folder_renderer.html'" /> + <li ng-repeat="node in home.notes.root.children | orderBy:home.arrayOrderingSrv.notebookListOrdering track by $index" ng-include="'notebook_folder_renderer.html'" /> </div> <div ng-if="query && query.name !== ''"> <li ng-repeat="note in home.notes.flatList | filter:query | orderBy:home.arrayOrderingSrv.notebookListOrdering track by $index"> <i style="font-size: 10px;" class="icon-doc"></i> - <a style="text-decoration: none;" href="#/notebook/{{note.id}}">{{note.name || 'Note ' + note.id}}</a> + <a style="text-decoration: none;" href="#/notebook/{{note.id}}">{{noteName(note)}}</a> </li> </div> </ul> http://git-wip-us.apache.org/repos/asf/incubator-zeppelin/blob/b1596454/zeppelin-web/src/app/notebook/notebook-actionBar.html ---------------------------------------------------------------------- diff --git a/zeppelin-web/src/app/notebook/notebook-actionBar.html b/zeppelin-web/src/app/notebook/notebook-actionBar.html index f371bd3..558c338 100644 --- a/zeppelin-web/src/app/notebook/notebook-actionBar.html +++ b/zeppelin-web/src/app/notebook/notebook-actionBar.html @@ -13,9 +13,9 @@ limitations under the License. --> <div class="noteAction" ng-show="note.id && !paragraphUrl"> <h3> - <input type="text" pu-elastic-input class="form-control2" placeholder="{{note.name || 'Note ' + note.id}}" style="min-width: 200px; max-width: 600px;" + <input type="text" pu-elastic-input class="form-control2" placeholder="{{noteName(note)}}" style="min-width: 200px; max-width: 600px;" ng-show="showEditor" ng-model="note.name" ng-blur="sendNewName();showEditor = false;" ng-enter="sendNewName();showEditor = false;" ng-escape="note.name = oldName; showEditor = false" focus-if="showEditor" /> - <p class="form-control-static2" ng-click="showEditor = true; oldName = note.name" ng-show="!showEditor">{{note.name || 'Note ' + note.id}}</p> + <p class="form-control-static2" ng-click="showEditor = true; oldName = note.name" ng-show="!showEditor">{{noteName(note)}}</p> <span class="labelBtn btn-group"> <button type="button" class="btn btn-default btn-xs" http://git-wip-us.apache.org/repos/asf/incubator-zeppelin/blob/b1596454/zeppelin-web/src/app/search/result-list.html ---------------------------------------------------------------------- diff --git a/zeppelin-web/src/app/search/result-list.html b/zeppelin-web/src/app/search/result-list.html index 2d2b6cf..87fce53 100644 --- a/zeppelin-web/src/app/search/result-list.html +++ b/zeppelin-web/src/app/search/result-list.html @@ -21,7 +21,7 @@ limitations under the License. <i style="font-size: 10px;" class="icon-doc"></i> <a class="search-results-header" href="#/notebook/{{note.id}}"> - {{note.name || 'Note ' + note.id}} + {{note.name.trim()==='' && 'Note ' + note.id.split('/',2)[0] || note.name}} </a> </h4> </div> http://git-wip-us.apache.org/repos/asf/incubator-zeppelin/blob/b1596454/zeppelin-web/src/components/arrayOrderingSrv/arrayOrdering.service.js ---------------------------------------------------------------------- diff --git a/zeppelin-web/src/components/arrayOrderingSrv/arrayOrdering.service.js b/zeppelin-web/src/components/arrayOrderingSrv/arrayOrdering.service.js index 13c4b20..da9da18 100644 --- a/zeppelin-web/src/components/arrayOrderingSrv/arrayOrdering.service.js +++ b/zeppelin-web/src/components/arrayOrderingSrv/arrayOrdering.service.js @@ -15,8 +15,18 @@ angular.module('zeppelinWebApp').service('arrayOrderingSrv', function() { + var arrayOrderingSrv = this; + this.notebookListOrdering = function(note) { - return (note.name ? note.name : 'Note ' + note.id); + return arrayOrderingSrv.getNoteName(note); + }; + + this.getNoteName = function(note) { + if(note.name === undefined || note.name.trim() === '') { + return'Note ' + note.id; + } else { + return note.name; + } }; }); http://git-wip-us.apache.org/repos/asf/incubator-zeppelin/blob/b1596454/zeppelin-web/src/components/navbar/navbar.html ---------------------------------------------------------------------- diff --git a/zeppelin-web/src/components/navbar/navbar.html b/zeppelin-web/src/components/navbar/navbar.html index 272167a..db74317 100644 --- a/zeppelin-web/src/components/navbar/navbar.html +++ b/zeppelin-web/src/components/navbar/navbar.html @@ -12,10 +12,10 @@ See the License for the specific language governing permissions and limitations under the License. --> <script type="text/ng-template" id="notebook_list_renderer.html"> - <a ng-if="note.id" href="#/notebook/{{note.id}}">{{note.name || 'Note ' + note.id}} </a> + <a ng-if="note.id" href="#/notebook/{{note.id}}">{{noteName(note)}} </a> <li ng-if="!note.id" class="dropdown-submenu"> - <a tabindex="-1" href="javascript: void(0)">{{note.name}}</a> + <a tabindex="-1" href="javascript: void(0)">{{noteName(note)}}</a> <ul class="dropdown-menu"> <li ng-repeat="note in note.children track by $index" ng-class="{'active' : navbar.isActive(note.id)}" ng-include="'notebook_list_renderer.html'"> </li> @@ -44,6 +44,10 @@ limitations under the License. <li><a href="" data-toggle="modal" data-target="#noteNameModal"><i class="fa fa-plus"></i> Create new note</a></li> <li class="divider"></li> <div id="notebook-list" class="scrollbar-container"> + <li class="filter-names" ng-include="'components/filterNoteNames/filter-note-names.html'"></li> + <li ng-repeat="note in navbar.notes.list | filter:query | orderBy:navbar.arrayOrderingSrv.notebookListOrdering track by $index" + ng-class="{'active' : navbar.isActive(note.id)}"> + <a href="#/notebook/{{note.id}}">{{noteName(note)}} </a> <li ng-repeat="note in navbar.notes.root.children track by $index" ng-class="{'active' : navbar.isActive(note.id)}" ng-include="'notebook_list_renderer.html'"> </li> </div>