From 269513f61c475578f9cc4cf2d69bc201bee4d979 Mon Sep 17 00:00:00 2001 From: LucasYuNju Date: Sun, 28 Aug 2016 15:53:50 +0800 Subject: [PATCH 1/6] Add itemTpl for list view. --- public/js/app/note.js | 96 ++++++++++++++++++++----------------------- 1 file changed, 44 insertions(+), 52 deletions(-) diff --git a/public/js/app/note.js b/public/js/app/note.js index 9b9c7101..327ed2e6 100644 --- a/public/js/app/note.js +++ b/public/js/app/note.js @@ -11,21 +11,6 @@ Note.curNoteId = ""; Note.interval = ""; // 定时器 -// 这里, settings, blog, star -Note.itemIsBlog = '
'; - -// for render -Note.itemTplNoImg = '
  • ' -Note.itemTplNoImg += Note.itemIsBlog +'

    ?

    ? ?

    ?

  • '; - -// 有image -Note.itemTpl = '
  • ' -Note.itemTpl +=Note.itemIsBlog + '

    ?

    ? ?

    ?

  • '; - -// for new -Note.newItemTpl = '
  • ' -Note.newItemTpl += Note.itemIsBlog + '

    ?

    ? ?

    ?

  • '; - Note.noteItemListO = $("#noteItemList"); Note.$itemList = $('#noteItemList'); @@ -34,6 +19,31 @@ Note.$itemList = $('#noteItemList'); Note.cacheByNotebookId = {all: {}}; Note.notebookIds = {}; // notebookId => true + +// 切换笔记视图 +Note.setViewMode = function(mode) { + // blog, star, settings + Note.itemIsBlog = '
    '; + if(mode === "list") { //list view + Note.itemTplNoImg = '
  • '; + Note.itemTplNoImg += Note.itemIsBlog + '

    ?

  • '; + + Note.itemTpl = '
  • '; + Note.itemTpl += Note.itemIsBlog + '

    ?

  • '; + } + else { // summary view + // 无image + Note.itemTplNoImg = '
  • '; + Note.itemTplNoImg += Note.itemIsBlog + '

    ?

    ? ?

    ?

  • '; + + // 有image + Note.itemTpl = '
  • '; + Note.itemTpl += Note.itemIsBlog + '

    ?

    ? ?

    ?

  • '; + } +} + +Note.setViewMode(Config.view || "summary"); + // 定时保存信息 Note.intervalTime = 10 * 1000; // 10秒 Note.startInterval = function() { @@ -266,7 +276,7 @@ Note.curHasChanged = function(force) { hasChanged.hasChanged = true; // 本页使用用小写 hasChanged.Title = title; // 要传到后台的用大写 } - + if(!arrayEqual(cacheNote.Tags, tags)) { hasChanged.hasChanged = true; hasChanged.Tags = tags; @@ -312,14 +322,14 @@ Note.curHasChanged = function(force) { else { content = contents; } - + if (cacheNote.Content != content) { hasChanged.hasChanged = true; hasChanged.Content = content; - + // 从html中得到... var c = preview || content; - + // 不是博客或没有自定义设置的 if(!cacheNote.HasSelfDefined || !cacheNote.IsBlog) { hasChanged.Desc = Note.genDesc(c); @@ -658,7 +668,7 @@ Note.setCurNoteId = function(noteId) { Note.curNoteId = noteId; Note.inChangeNoteId = ''; }; -// 清空curNoteId, +// 清空curNoteId, Note.clearCurNoteId = function () { // 为什么要++? 避免刚清空, 因为内容的延迟又设置回去了 Note.contentAjaxSeq++; @@ -771,8 +781,6 @@ Note.reRenderNote = function(noteId) { }); }; -// 渲染 - // 更改信息到左侧 // 定时更改 当前正在编辑的信息到左侧导航 // 或change select. 之前的note, 已经改变了 @@ -788,6 +796,9 @@ Note.renderChangedNote = function(changedNote) { // 如果标题改了, 如果也在star列表中, 那也要改star的标题啊 Note.changeStarNoteTitle(changedNote.NoteId, trimTitle(changedNote.Title)); } + if($leftNoteNav.hasClass("list-item")) { + return; //list view只需要更新title + } if(changedNote.Desc) { $leftNoteNav.find(".desc").html(trimTitle(changedNote.Desc)); } @@ -869,7 +880,7 @@ Note.renderNoteContent = function(content, dontNeedSetReadonly, seq2) { } }); - // 只有在renderNoteContent时才设置curNoteId + // 只有在renderNoteContent时才设置curNoteId // Note.setCurNoteId(content.NoteId); // 重新渲染到左侧 desc, 因为笔记传过来是没有desc的 @@ -887,25 +898,6 @@ Note.renderNoteDesc = function(note) { Note.renderChangedNote(note); }; -// 初始化时渲染最初的notes -/** -
    - -*/ - Note.showEditorMask = function() { $("#editorMask").css("z-index", 10).show(); // 要判断是否是垃圾筒 @@ -1127,7 +1119,7 @@ Note.newNote = function(notebookId, isShare, fromUserId, isMarkdown) { // 是否是为共享的notebook添加笔记, 如果是, 则还要记录fromUserId var newItem = ""; - var baseClasses = "item-my"; + var baseClasses = "item-my item-active"; if(isShare) { baseClasses = "item-shared"; } @@ -1136,7 +1128,7 @@ Note.newNote = function(notebookId, isShare, fromUserId, isMarkdown) { var notebookTitle = notebook ? notebook.Title : ""; var curDate = getCurDatetime(); - newItem = tt(Note.newItemTpl, baseClasses, me.newNoteSeq(), "", note.NoteId, note.Title, notebookTitle, curDate, ""); + newItem = tt(Note.itemTplNoImg, baseClasses, me.newNoteSeq(), note.NoteId, note.Title, notebookTitle, curDate, ""); newItem = $(newItem); newItem.find(".item-blog").hide(); @@ -1801,7 +1793,7 @@ Note.toggleReadOnly = function(needSave) { if (needSave) { Note.curChangedSaveIt(true); } - + Note.readOnly = true; LEA.readOnly = true; @@ -2141,7 +2133,7 @@ Note.addGetNoteContentLazy = function(noteId) { me.startGetNoteContentLazy(); }; -// render notes后, +// render notes后, // 开始加载 Note.startGetNoteContentLazy = function() { var me = this; @@ -2336,7 +2328,7 @@ Note.initContextmenu = function() { }); function dialogOperateNotes(options) { $("#leanoteDialog #modalTitle").html(getMsg("selectNotebook")); - + $("#leanoteDialog .modal-body").html('

    '+getMsg("doubleClick")+'

    '); $("#leanoteDialog .modal-footer").html('\ \ @@ -2788,7 +2780,7 @@ Note.getBatchNoteIds = function () { }; Note.batch = { $noteItemList: $("#noteItemList"), - + cancelInBatch: function () { Note.inBatch = false; this.$body.removeClass('batch'); @@ -2947,7 +2939,7 @@ Note.batch = { //---------- // 多选操作 //---------- - + if (isMulti || isConti) { Note.curChangedSaveIt(); } @@ -2955,7 +2947,7 @@ Note.batch = { // 多选 if (isMulti) { me.select($this); - + // 连续选 } else if (isConti) { // 选择 开始位置到结束位置 @@ -2974,7 +2966,7 @@ Note.batch = { me.finalFix(); }); - + //---------- // 鼠标拖动开始 @@ -3452,7 +3444,7 @@ Note.addSync = function(notes) { // 避免trash的也加进来 if (!note.IsDeleted) { if ( - (note.IsTrash && Notebook.curNotebookIsTrash()) + (note.IsTrash && Notebook.curNotebookIsTrash()) || !note.IsTrash) { Note.addNoteCache(note); From 0c28bbc057a55b75749ffe095f7e3d4f1b499156 Mon Sep 17 00:00:00 2001 From: LucasYuNju Date: Sun, 28 Aug 2016 15:59:15 +0800 Subject: [PATCH 2/6] Add view option to mac top menu. --- public/js/app/notebook.js | 164 +++++++++++++++++++------------------- public/js/app/page.js | 23 +++++- 2 files changed, 106 insertions(+), 81 deletions(-) diff --git a/public/js/app/notebook.js b/public/js/app/notebook.js index c6945313..738ef016 100644 --- a/public/js/app/notebook.js +++ b/public/js/app/notebook.js @@ -1,7 +1,7 @@ Notebook.curNotebookId = ""; Notebook.cache = {}; // notebookId => {}; Notebook.notebooks = []; // 按次序 -//
  • CSS
  • +//
  • CSS
  • Notebook.notebookNavForListNote = ""; // html 为了note list上面和新建时的ul Notebook.notebookNavForNewNote = ""; // html 为了note list上面和新建时的ul @@ -128,15 +128,15 @@ Notebook.getNotebookTitle = function(notebookId) { */ // 得到下级notebooks -Notebook.getSubNotebooks = function(parentNotebookId) { +Notebook.getSubNotebooks = function(parentNotebookId) { var me = this; var treeObj = me.tree; - var parentNode = treeObj.getNodeByTId(parentNotebookId); + var parentNode = treeObj.getNodeByTId(parentNotebookId); if(!parentNode) { return; } - + var nextLevel = parentNode.level+1; function filter(node) { return node.level == nextLevel; @@ -191,9 +191,9 @@ Notebook.getSimpleTreeSetting = function(options) { return setting; } -Notebook.getTreeSetting = function(isSearch, isShare) { +Notebook.getTreeSetting = function(isSearch, isShare) { var noSearch = !isSearch; - + var self = this; // 添加自定义dom function addDiyDom(treeId, treeNode) { @@ -238,15 +238,15 @@ Notebook.getTreeSetting = function(isSearch, isShare) { var parentNode; var treeObj = self.tree; var ajaxData = {curNotebookId: treeNode.NotebookId}; - + // 成为子节点, 那么只需要得到targetNode下所有的子结点即可 if(moveType == "inner") { parentNode = targetNode; } else { parentNode = targetNode.getParentNode(); } - - // 在targetNode之前或之后, + + // 在targetNode之前或之后, // 那么: 1) 需要将该parentNode下所有的node重新排序即可; 2) treeNodes[0]为parentNode的子 if(!parentNode) { var nodes = treeObj.getNodes(); // 得到所有nodes @@ -258,7 +258,7 @@ Notebook.getTreeSetting = function(isSearch, isShare) { } var nodes = treeObj.getNodesByFilter(filter, false, parentNode); } - + ajaxData.siblings = []; for(var i in nodes) { var notebookId = nodes[i].NotebookId; @@ -266,18 +266,18 @@ Notebook.getTreeSetting = function(isSearch, isShare) { ajaxData.siblings.push(notebookId); } } - + // {siblings: [id1, id2], parentNotebookId: 'xx', curNotebookId: 'yy'} NotebookService.dragNotebooks(ajaxData.curNotebookId, ajaxData.parentNotebookId, ajaxData.siblings); // ajaxPost("/notebook/dragNotebooks", {data: JSON.stringify(ajaxData)}); - + // 这里慢! setTimeout(function() { Notebook.changeNav(); }, 100); } - + if(!isShare) { var onClick = function(e, treeId, treeNode) { var notebookId = treeNode.NotebookId; @@ -297,7 +297,7 @@ Notebook.getTreeSetting = function(isSearch, isShare) { }; var onDblClick = null; } - + var setting = { view: { showLine: false, @@ -357,12 +357,12 @@ Notebook.getTreeSetting = function(isSearch, isShare) { if(treeNode.Title == newName) { return true; } - + // 如果是新添加的 if(treeNode.IsNew) { var parentNode = treeNode.getParentNode(); var parentNotebookId = parentNode ? parentNode.NotebookId : ""; - + self.doAddNotebook(treeNode.NotebookId, newName, parentNotebookId); } else { self.doUpdateNotebookTitle(treeNode.NotebookId, newName); @@ -371,7 +371,7 @@ Notebook.getTreeSetting = function(isSearch, isShare) { } } }; - + return setting; } Notebook.allNotebookId = "0"; @@ -394,13 +394,13 @@ Notebook.renderNotebooks = function(notebooks) { var notebook = notebooks[i]; notebook.Title = trimTitle(notebook.Title); } - + notebooks = [{NotebookId: Notebook.allNotebookId, Title: getMsg("all"), drop:false, drag: false}].concat(notebooks); notebooks.push({NotebookId: Notebook.trashNotebookId, Title: getMsg("trash"), drop:false, drag: false}); Notebook.notebooks = notebooks; // 缓存之 self.tree = $.fn.zTree.init($("#notebookList"), self.getTreeSetting(), notebooks); - + // 展开/折叠图标 var $notebookList = $("#notebookList"); $notebookList.hover(function () { @@ -416,10 +416,10 @@ Notebook.renderNotebooks = function(notebooks) { Notebook.curNotebookId = notebooks[0].NotebookId; self.cacheAllNotebooks(notebooks); } - + // 渲染nav Notebook.renderNav(); - + // 渲染第一个notebook作为当前 Notebook.changeNotebookNavForNewNote(notebooks[0].NotebookId); } @@ -440,7 +440,7 @@ Notebook.expandNotebookTo = function(notebookId, userId) { var me = this; var selected = false; var tree = me.tree; - + // 共享的 if(userId) { tree = Share.trees[userId]; @@ -471,7 +471,7 @@ Notebook.expandNotebookTo = function(notebookId, userId) { } -// RenderNotebooks调用, +// RenderNotebooks调用, // nav 为了新建, 快速选择, 移动笔记 // 这些在添加,修改,删除notebooks都要变动!!! Notebook.renderNav = function(nav) { @@ -511,7 +511,7 @@ Notebook.searchNotebookForList = function(key) { if(key) { $search.show(); $notebookList.hide(); - + var notebooks = self.tree.getNodesByParamFuzzy("Title", key); log('search'); log(notebooks); @@ -536,25 +536,25 @@ Notebook.searchNotebookForList = function(key) { Notebook.getChangedNotebooks = function(notebooks) { var self = this; var navForNewNote = ""; - + var len = notebooks.length; for(var i = 0; i < len; ++i) { var notebook = notebooks[i]; - + var classes = ""; if(!isEmpty(notebook.Subs)) { classes = "dropdown-submenu"; } var eachForNew = tt(''; - + navForNewNote += eachForNew; } return navForNewNote; @@ -574,12 +574,12 @@ Notebook.changeNav = function() { } } var html = self.getChangedNotebooks(pureNotebooks); - + self.everNavForNewNote = html; self.everNotebooks = pureNotebooks; - + $("#notebookNavForNewNote").html(html); - + // 移动, 复制重新来, 因为nav变了, 移动至-----的notebook导航也变了 // 这里速度很慢 // var t1 = (new Date()).getTime(); @@ -590,13 +590,13 @@ Notebook.changeNav = function() { } /** - * 我的共享notebooks + * 我的共享notebooks
    @@ -613,11 +613,11 @@ Notebook.renderShareNotebooks = function(sharedUserInfos, shareNotebooks) { if(isEmpty(sharedUserInfos)) { return; } - + if(!shareNotebooks || typeof shareNotebooks != "object" || shareNotebooks.length < 0) { return; } - + var $shareNotebooks = $("#shareNotebooks"); var user2ShareNotebooks = {}; for(var i in shareNotebooks) { @@ -627,7 +627,7 @@ Notebook.renderShareNotebooks = function(sharedUserInfos, shareNotebooks) { for(var i in sharedUserInfos) { var userInfo = sharedUserInfos[i]; var userNotebooks = user2ShareNotebooks[userInfo.UserId] || {ShareNotebooks:[]}; - + userNotebooks.ShareNotebooks = [{NotebookId: "-2", Title: "默认共享"}].concat(userNotebooks.ShareNotebooks) var username = userInfo.Username || userInfo.Email; @@ -638,7 +638,7 @@ Notebook.renderShareNotebooks = function(sharedUserInfos, shareNotebooks) { body += tt('
  • ?
  • ', notebook.NotebookId, notebook.Title) } body += ""; - + $shareNotebooks.append(header + body + "
    ") } } @@ -662,7 +662,7 @@ Notebook.changeNotebookNavForNewNote = function(notebookId, title) { var notebook = Notebook.cache[0]; title = notebook.Title; } - + if(!Notebook.isAllNotebookId(notebookId) && !Notebook.isTrashNotebookId(notebookId)) { $("#curNotebookForNewNote").html(title).attr("notebookId", notebookId); } else if(!$("#curNotebookForNewNote").attr("notebookId")) { @@ -680,17 +680,17 @@ Notebook.changeNotebookNavForNewNote = function(notebookId, title) { // 改变导航, 两处 // 单击左侧, 单击新建下拉时调用 -// 1 选中左侧导航, +// 1 选中左侧导航, // 2 notelist上面 > // 3 新建笔记 - js > // 转成我的nav <-> 共享 Notebook.toggleToMyNav = function(userId, notebookId) { $("#sharedNotebookNavForListNav").hide(); $("#myNotebookNavForListNav").show(); - + $("#newMyNote").show(); $("#newSharedNote").hide(); - + // 搜索tag隐藏 $("#tagSearch").hide(); }; @@ -698,19 +698,19 @@ Notebook.toggleToMyNav = function(userId, notebookId) { Notebook.changeNotebookNav = function(notebookId) { Notebook.curNotebookId = notebookId; Notebook.toggleToMyNav(); - + // 1 改变当前的notebook Notebook.selectNotebook($(tt('#notebook [notebookId="?"]', notebookId))); - + var notebook = Notebook.cache[notebookId]; - + if(!notebook) { return; } - + // 2 Notebook.changeCurNotebookTitle(notebook.Title); - + // 3 Notebook.changeNotebookNavForNewNote(notebookId, notebook.Title); }; @@ -730,6 +730,10 @@ Notebook.curActiveNotebookIsTrash = function() { return Notebook.isTrashNotebookId($("#notebookList .curSelectedNode").attr("notebookId")); }; +Notebook.renderCurNotebook = function() { + Notebook.changeNotebook(Notebook.curNotebookId); +} + // 改变笔记本 // 0. 改变样式 // 1. 改变note, 此时需要先保存 @@ -746,18 +750,18 @@ Notebook.changeNotebook = function(notebookId, callback, needRendNoteId) { } Notebook.changeNotebookNav(notebookId); - + Notebook.curNotebookId = notebookId; // 1 Note.curChangedSaveIt(true); - + // 2 先清空所有 Note.clearAll(); - + var url = "/note/listNotes/"; var param = {notebookId: notebookId}; - + // 废纸篓 if(Notebook.isTrashNotebookId(notebookId)) { url = "/note/listTrashNotes"; @@ -767,14 +771,14 @@ Notebook.changeNotebook = function(notebookId, callback, needRendNoteId) { // 得到全部的... cacheNotes = Note.getNotesByNotebookId(); // 数量一致 - if(!isEmpty(cacheNotes)) { + if(!isEmpty(cacheNotes)) { if(callback) { callback(cacheNotes); } else { Note.renderNotesAndTargetNote(cacheNotes, needRendNoteId); } return; - } + } } else { cacheNotes = Note.getNotesByNotebookId(notebookId); var notebook = Notebook.cache[notebookId]; @@ -785,7 +789,7 @@ Notebook.changeNotebook = function(notebookId, callback, needRendNoteId) { var len = cacheNotes ? cacheNotes.length : 0; // 如果为0, 从服务器上拿 - if(len != 0 && len == notebook.NumberNotes) { + if(len != 0 && len == notebook.NumberNotes) { if(callback) { callback(cacheNotes); } else { @@ -797,14 +801,14 @@ Notebook.changeNotebook = function(notebookId, callback, needRendNoteId) { log('数量不一致'); } } - + // 2 得到笔记本 // 这里可以缓存起来, note按notebookId缓存 // 这里可能点击过快导致前面点击的后来才返回 me.showNoteAndEditorLoading(); me.changeNotebookSeq++; (function(seq) { - var callback2 = function(cacheNotes) { + var callback2 = function(cacheNotes) { // 后面点击过快, 之前的结果不要了 if(seq != me.changeNotebookSeq) { log("notebook changed too fast!"); @@ -859,10 +863,10 @@ Notebook.changeNotebookForNewNote = function(notebookId) { if(Notebook.isTrashNotebookId(notebookId) || Notebook.isAllNotebookId(notebookId)) { return; } - + Notebook.changeNotebookNav(notebookId, true); Notebook.curNotebookId = notebookId; - + // 2 得到笔记本 // 这里可以缓存起来, note按notebookId缓存 Service.noteService.getNotes(notebookId, function(notes) { @@ -885,7 +889,7 @@ Notebook.shareNotebooks= function(target) { $("#friendsEmail").focus(); }, 500); var notebookId = $(target).attr("notebookId"); - + shareNoteOrNotebook(notebookId, false); } @@ -898,7 +902,7 @@ Notebook.setNotebook2Blog = function(target) { if(notebook.IsBlog != undefined) { isBlog = !notebook.IsBlog; } - + // 那么, 如果当前是该notebook下, 重新渲染之 if(Notebook.curNotebookId == notebookId) { if(isBlog) { @@ -906,7 +910,7 @@ Notebook.setNotebook2Blog = function(target) { } else { $("#noteList .item-blog").hide(); } - + // 如果当前在所有笔记本下 } else if(Notebook.curNotebookId == Notebook.allNotebookId){ $("#noteItemList .item").each(function(){ @@ -933,7 +937,7 @@ Notebook.setNotebook2Blog = function(target) { Notebook.updateNotebookTitle = function(target) { var self = Notebook; var notebookId = $(target).attr("notebookId"); - + if(self.tree2) { self.tree2.editName(self.tree2.getNodeByTId(notebookId)); } else { @@ -948,7 +952,7 @@ Notebook.doUpdateNotebookTitle = function(notebookId, newTitle) { Notebook.cache[notebookId].Title = newTitle; // 改变nav Notebook.changeNav(); - + // 同步 if(self.tree2) { var notebook = self.tree.getNodeByTId(notebookId); @@ -968,7 +972,7 @@ Notebook.renderUpdateNoteTitle = function(notebookId, newTitle) { Notebook.cache[notebookId].Title = trimTitle(newTitle); // 改变nav Notebook.changeNav(); - + var notebook = self.tree.getNodeByTId(notebookId); if(!notebook) { return; @@ -993,7 +997,7 @@ Notebook.addNotebook = function() { if($("#myNotebooks").hasClass("closed")) { $("#myNotebooks .folderHeader").trigger("click"); } - + // 添加并修改 self.tree.addNodes(null, {Title: "", NotebookId: getObjectId(), IsNew: true}, true, true); } @@ -1007,10 +1011,10 @@ Notebook.doAddNotebook = function(notebookId, title, parentNotebookId) { var notebook = self.tree.getNodeByTId(notebookId); $.extend(notebook, ret); notebook.IsNew = false; - + // 选中之 Notebook.changeNotebook(notebookId); - + // 改变nav Notebook.changeNav(); } @@ -1024,9 +1028,9 @@ Notebook.addChildNotebook = function(target) { if($("#myNotebooks").hasClass("closed")) { $("#myNotebooks .folderHeader").trigger("click"); } - + var notebookId = $(target).attr("notebookId"); - + // 添加并修改 self.tree.addNodes(self.tree.getNodeByTId(notebookId), {Title: "", NotebookId: getObjectId(), IsNew: true}, false, true); } @@ -1035,7 +1039,7 @@ Notebook.addChildNotebook = function(target) { // 删除 Notebook.deleteNotebook = function(target) { var self = Notebook; - + var notebookId = $(target).attr("notebookId"); if(!notebookId) { return; @@ -1063,11 +1067,11 @@ Notebook.deleteNotebookFromTree = function(notebookId) { } delete Notebook.cache[notebookId]; // 改变nav - Notebook.changeNav(); + Notebook.changeNav(); }; // 清空垃圾 -Notebook.clearTrash = function() { +Notebook.clearTrash = function() { var me = this; if(confirm(getMsg('Are you sure ?'))) { NoteService.clearTrash(function() { @@ -1091,7 +1095,7 @@ Notebook.fixSyncConflict = function(note, newNote) { Note.addNoteCache(note); Note.addNoteCache(newNote); - var target = $(tt('[noteId="?"]', note.NoteId)); // + var target = $(tt('[noteId="?"]', note.NoteId)); // // 如果当前笔记在笔记列表中, 那么生成一个新笔记放在这个笔记上面 if(target.length > 0) { var newHtmlObject = Note._getNoteHtmlObjct(note); @@ -1112,14 +1116,14 @@ Notebook.fixSyncConflict = function(note, newNote) { // <- server 服务器端添加过来的 Notebook.addSync = function(notebooks) { var me = this; - if(isEmpty(notebooks)) { + if(isEmpty(notebooks)) { return; } console.log('web add sync notebook'); for(var i in notebooks) { var notebook = notebooks[i]; Notebook.setCache(notebook); - me.tree.addNodes(me.tree.getNodeByTId(notebook.ParentNotebookId), + me.tree.addNodes(me.tree.getNodeByTId(notebook.ParentNotebookId), {Title: notebook.Title, NotebookId: notebook.NotebookId, IsNew: false}, // IsNew: false啊!!! true, true, false); } @@ -1133,7 +1137,7 @@ Notebook.addChange = function(notebooks) { // 不对移动做修改, 只修改标题 Notebook.updateSync = function(notebooks) { var me = this; - if(isEmpty(notebooks)) { + if(isEmpty(notebooks)) { return; } log("update notebook sync"); @@ -1152,7 +1156,7 @@ Notebook.updateSync = function(notebooks) { // 删除 Notebook.deleteSync = function(notebooks) { var me = this; - if(isEmpty(notebooks)) { + if(isEmpty(notebooks)) { return; } log('delete notebook sync'); @@ -1179,11 +1183,11 @@ Notebook.init = function() { var notebookId = $(this).find("a").attr("notebookId"); Notebook.changeNotebook(notebookId); }); - + //------------------- // 右键菜单 function newNotebookListMenu() { - + var me = this; this.target = ''; this.menu = new gui.Menu(); @@ -1334,7 +1338,7 @@ Notebook.init = function() { e.stopPropagation(); Notebook.addNotebook(); }); - + // notebook setting $("#notebookList").on("click", ".notebook-setting", function(e) { e.preventDefault(); diff --git a/public/js/app/page.js b/public/js/app/page.js index d6b93a28..264623ce 100644 --- a/public/js/app/page.js +++ b/public/js/app/page.js @@ -1964,7 +1964,7 @@ function setMacTopMenu() { accelerator: isMac_ ? 'Command+R' : 'Ctrl+R', click: function() { onClose(function() { - gui.win.reload(); + gui.win.reload(); }); } }, @@ -1973,6 +1973,27 @@ function setMacTopMenu() { accelerator: isMac_ ? 'Alt+Command+I' : 'Ctrl+I', click: function() { gui.win.toggleDevTools(); } }, + { + type: 'separator' + }, + { + label: 'Summary View', + click: function() { + Note.setViewMode("summary"); + Notebook.renderCurNotebook(); + Config.view = "summary"; + Api.writeConfig(Config); + }, + }, + { + label: 'List View', + click: function() { + Note.setViewMode("list"); + Notebook.renderCurNotebook(); + Config.view = "list"; + Api.writeConfig(Config); + }, + }, ] }, { From 90255254965fb086359ce7b3264c7f98931c159d Mon Sep 17 00:00:00 2001 From: LucasYuNju Date: Sun, 28 Aug 2016 16:00:47 +0800 Subject: [PATCH 3/6] Rewrite css code for list view. --- public/themes/default.css | 30 +++++++++++++------- public/themes/themes/night/theme.css | 9 +++++- public/themes/themes/pebbles_night/theme.css | 9 +++++- public/themes/themes/water_night/theme.css | 9 +++++- 4 files changed, 43 insertions(+), 14 deletions(-) diff --git a/public/themes/default.css b/public/themes/default.css index d3b6dd66..a0ebed24 100644 --- a/public/themes/default.css +++ b/public/themes/default.css @@ -1157,7 +1157,6 @@ h3 { } #noteItemList .item { position: relative; - height: 70px; overflow: hidden; cursor: default; border: 1px solid #ebeff2; @@ -1166,7 +1165,7 @@ h3 { background-color: #fff; } /* -#noteItemList .item:hover, +#noteItemList .item:hover, #noteItemList .contextmenu-hover { background-color: #ddd !important; //color: @aBlackColor; @@ -1207,10 +1206,10 @@ h3 { border-radius: 3px; text-align: center; } -.item-thumb img { +#noteItemList .item-thumb img { max-width: 66px; } -.item-title { +#noteItemList .item-title { /*font-weight: 400;*/ font-size: 16px; height: 22px; @@ -1218,7 +1217,6 @@ h3 { overflow: hidden; margin-bottom: 0px; color: #000000; - border-bottom: dashed 1px #ebeff2; } #noteItemList .item-desc { position: absolute; @@ -1233,13 +1231,13 @@ h3 { #noteItemList .item-image .item-desc { right: 70px; } -.item-info { +#noteItemList .item-info { margin: 0; white-space: nowrap; text-overflow: ellipsis; overflow: hidden; } -.desc { +#noteItemList .desc { margin: 0; word-wrap: break-word; text-overflow: ellipsis; @@ -1247,6 +1245,16 @@ h3 { overflow: hidden; white-space: nowrap; } +/*list view & summary view*/ +#noteItemList .summary-item { + height: 70px; +} +#noteItemList .list-item { + height: 30px; +} +#noteItemList .summary-item .item-title { + border-bottom: dashed 1px #ebeff2; +} #editorMask { position: absolute; top: 0px; @@ -1891,9 +1899,9 @@ img::selection { margin-top: -2px; } /* -#starNotes li a, -.ztree li a, -.ztree li span.button, +#starNotes li a, +.ztree li a, +.ztree li span.button, .folderHeader, #myProfile .dropdown-toggle, #tagNav li a { @@ -2664,7 +2672,7 @@ a.raw:hover { ::-webkit-scrollbar-thumb { background-color: @sbc; border:1px solid #dadada; - border-radius: 5px; + border-radius: 5px; } ::-webkit-scrollbar-thumb:hover { background-color:#dadada diff --git a/public/themes/themes/night/theme.css b/public/themes/themes/night/theme.css index cad232c2..e059917c 100644 --- a/public/themes/themes/night/theme.css +++ b/public/themes/themes/night/theme.css @@ -102,13 +102,20 @@ /* 不显示图片 */ } #noteItemList .item { - height: 69px; border: none; border-bottom: 1px solid #363636; background-color: transparent; color: #c2c2c2; overflow: hidden; } +#noteItemList .summary-item { + /*summary view*/ + height: 69px; +} +#noteItemList .list-item { + /*list view*/ + height: 29px; +} #noteItemList .item-title { color: #c2c2c2; border-bottom: none; diff --git a/public/themes/themes/pebbles_night/theme.css b/public/themes/themes/pebbles_night/theme.css index e381a681..790dd06d 100644 --- a/public/themes/themes/pebbles_night/theme.css +++ b/public/themes/themes/pebbles_night/theme.css @@ -102,13 +102,20 @@ /* 不显示图片 */ } #noteItemList .item { - height: 69px; border: none; border-bottom: 1px solid #363636; background-color: transparent; color: #c2c2c2; overflow: hidden; } +#noteItemList .summary-item { + /*summary view*/ + height: 69px; +} +#noteItemList .list-item { + /*list view*/ + height: 29px; +} #noteItemList .item-title { color: #c2c2c2; border-bottom: none; diff --git a/public/themes/themes/water_night/theme.css b/public/themes/themes/water_night/theme.css index 3fefe452..c8609ff0 100644 --- a/public/themes/themes/water_night/theme.css +++ b/public/themes/themes/water_night/theme.css @@ -102,13 +102,20 @@ /* 不显示图片 */ } #noteItemList .item { - height: 69px; border: none; border-bottom: 1px solid #363636; background-color: transparent; color: #c2c2c2; overflow: hidden; } +#noteItemList .summary-item { + /*summary view*/ + height: 69px; +} +#noteItemList .list-item { + /*list view*/ + height: 29px; +} #noteItemList .item-title { color: #c2c2c2; border-bottom: none; From dd52fbd5ad32d6fba60dd242603db7a9df874575 Mon Sep 17 00:00:00 2001 From: LucasYuNju Date: Sun, 28 Aug 2016 17:30:24 +0800 Subject: [PATCH 4/6] Create all template strings at initialization. --- public/js/app/note.js | 51 +++++++++++++++++++++++-------------------- public/js/app/page.js | 6 ++--- 2 files changed, 29 insertions(+), 28 deletions(-) diff --git a/public/js/app/note.js b/public/js/app/note.js index 327ed2e6..ebacc8b2 100644 --- a/public/js/app/note.js +++ b/public/js/app/note.js @@ -19,30 +19,33 @@ Note.$itemList = $('#noteItemList'); Note.cacheByNotebookId = {all: {}}; Note.notebookIds = {}; // notebookId => true - -// 切换笔记视图 -Note.setViewMode = function(mode) { +// 初始化模版字符串 +(function() { + Note.itemTpl = {}; + Note.itemTplNoImg = {}; // blog, star, settings - Note.itemIsBlog = '
    '; - if(mode === "list") { //list view - Note.itemTplNoImg = '
  • '; - Note.itemTplNoImg += Note.itemIsBlog + '

    ?

  • '; + var itemIsBlog = '
    '; - Note.itemTpl = '
  • '; - Note.itemTpl += Note.itemIsBlog + '

    ?

  • '; - } - else { // summary view - // 无image - Note.itemTplNoImg = '
  • '; - Note.itemTplNoImg += Note.itemIsBlog + '

    ?

    ? ?

    ?

  • '; + // list view + Note.itemTplNoImg.list = '
  • '; + Note.itemTplNoImg.list += itemIsBlog + '

    ?

  • '; + Note.itemTpl.list = '
  • '; + Note.itemTpl.list += itemIsBlog + '

    ?

  • '; - // 有image - Note.itemTpl = '
  • '; - Note.itemTpl += Note.itemIsBlog + '

    ?

    ? ?

    ?

  • '; - } + // summary view + Note.itemTplNoImg.summary = '
  • '; + Note.itemTplNoImg.summary += itemIsBlog + '

    ?

    ? ?

    ?

  • '; + Note.itemTpl.summary = '
  • '; + Note.itemTpl.summary += itemIsBlog + '

    ?

    ? ?

    ?

  • '; +})(); + +Note.getItemTpl = function() { + return Note.itemTpl[Config.view || 'summary']; } -Note.setViewMode(Config.view || "summary"); +Note.getItemTplNoImg = function() { + return Note.itemTplNoImg[Config.view ||'summary']; +} // 定时保存信息 Note.intervalTime = 10 * 1000; // 10秒 @@ -994,9 +997,9 @@ Note._getNoteHtmlObjct = function(note, isShared) { var tmp; if(note.ImgSrc) { - tmp = tt(Note.itemTpl, classes, this.newNoteSeq(), note.NoteId, Note.fixImageSrc(note.ImgSrc), note.Title, Notebook.getNotebookTitle(note.NotebookId), goNowToDatetime(note.UpdatedTime), note.Desc); + tmp = tt(Note.getItemTpl(), classes, this.newNoteSeq(), note.NoteId, Note.fixImageSrc(note.ImgSrc), note.Title, Notebook.getNotebookTitle(note.NotebookId), goNowToDatetime(note.UpdatedTime), note.Desc); } else { - tmp = tt(Note.itemTplNoImg, classes, this.newNoteSeq(), note.NoteId, note.Title, Notebook.getNotebookTitle(note.NotebookId), goNowToDatetime(note.UpdatedTime), note.Desc); + tmp = tt(Note.getItemTplNoImg(), classes, this.newNoteSeq(), note.NoteId, note.Title, Notebook.getNotebookTitle(note.NotebookId), goNowToDatetime(note.UpdatedTime), note.Desc); } // blog ? if(!note.IsBlog) { @@ -1041,9 +1044,9 @@ Note._renderNotes = function(notes, forNewNote, isShared, tang) { // 第几趟 var tmp; if(note.ImgSrc) { - tmp = tt(Note.itemTpl, classes, i, note.NoteId, Note.fixImageSrc(note.ImgSrc), note.Title, Notebook.getNotebookTitle(note.NotebookId), goNowToDatetime(note.UpdatedTime), note.Desc || ''); + tmp = tt(Note.getItemTpl(), classes, i, note.NoteId, Note.fixImageSrc(note.ImgSrc), note.Title, Notebook.getNotebookTitle(note.NotebookId), goNowToDatetime(note.UpdatedTime), note.Desc || ''); } else { - tmp = tt(Note.itemTplNoImg, classes, i, note.NoteId, note.Title, Notebook.getNotebookTitle(note.NotebookId), goNowToDatetime(note.UpdatedTime), note.Desc || ''); + tmp = tt(Note.getItemTplNoImg(), classes, i, note.NoteId, note.Title, Notebook.getNotebookTitle(note.NotebookId), goNowToDatetime(note.UpdatedTime), note.Desc || ''); } if(!note.IsBlog) { tmp = $(tmp); @@ -1128,7 +1131,7 @@ Note.newNote = function(notebookId, isShare, fromUserId, isMarkdown) { var notebookTitle = notebook ? notebook.Title : ""; var curDate = getCurDatetime(); - newItem = tt(Note.itemTplNoImg, baseClasses, me.newNoteSeq(), note.NoteId, note.Title, notebookTitle, curDate, ""); + newItem = tt(Note.getItemTplNoImg(), baseClasses, me.newNoteSeq(), note.NoteId, note.Title, notebookTitle, curDate, ""); newItem = $(newItem); newItem.find(".item-blog").hide(); diff --git a/public/js/app/page.js b/public/js/app/page.js index 264623ce..4dace4a9 100644 --- a/public/js/app/page.js +++ b/public/js/app/page.js @@ -1979,18 +1979,16 @@ function setMacTopMenu() { { label: 'Summary View', click: function() { - Note.setViewMode("summary"); + Config.view = 'summary'; Notebook.renderCurNotebook(); - Config.view = "summary"; Api.writeConfig(Config); }, }, { label: 'List View', click: function() { - Note.setViewMode("list"); + Config.view = 'list'; Notebook.renderCurNotebook(); - Config.view = "list"; Api.writeConfig(Config); }, }, From b0ebb26977d04c28a26e10c2991d3930fa1cdc0a Mon Sep 17 00:00:00 2001 From: LucasYuNju Date: Sun, 28 Aug 2016 18:00:22 +0800 Subject: [PATCH 5/6] Recover traling spaces deleted by atom. --- public/js/app/notebook.js | 161 +++++++++++++++++++------------------- 1 file changed, 80 insertions(+), 81 deletions(-) diff --git a/public/js/app/notebook.js b/public/js/app/notebook.js index 738ef016..3fbbd5a4 100644 --- a/public/js/app/notebook.js +++ b/public/js/app/notebook.js @@ -1,7 +1,7 @@ Notebook.curNotebookId = ""; Notebook.cache = {}; // notebookId => {}; Notebook.notebooks = []; // 按次序 -//
  • CSS
  • +//
  • CSS
  • Notebook.notebookNavForListNote = ""; // html 为了note list上面和新建时的ul Notebook.notebookNavForNewNote = ""; // html 为了note list上面和新建时的ul @@ -128,15 +128,15 @@ Notebook.getNotebookTitle = function(notebookId) { */ // 得到下级notebooks -Notebook.getSubNotebooks = function(parentNotebookId) { +Notebook.getSubNotebooks = function(parentNotebookId) { var me = this; var treeObj = me.tree; - var parentNode = treeObj.getNodeByTId(parentNotebookId); + var parentNode = treeObj.getNodeByTId(parentNotebookId); if(!parentNode) { return; } - + var nextLevel = parentNode.level+1; function filter(node) { return node.level == nextLevel; @@ -191,9 +191,9 @@ Notebook.getSimpleTreeSetting = function(options) { return setting; } -Notebook.getTreeSetting = function(isSearch, isShare) { +Notebook.getTreeSetting = function(isSearch, isShare) { var noSearch = !isSearch; - + var self = this; // 添加自定义dom function addDiyDom(treeId, treeNode) { @@ -238,15 +238,15 @@ Notebook.getTreeSetting = function(isSearch, isShare) { var parentNode; var treeObj = self.tree; var ajaxData = {curNotebookId: treeNode.NotebookId}; - + // 成为子节点, 那么只需要得到targetNode下所有的子结点即可 if(moveType == "inner") { parentNode = targetNode; } else { parentNode = targetNode.getParentNode(); } - - // 在targetNode之前或之后, + + // 在targetNode之前或之后, // 那么: 1) 需要将该parentNode下所有的node重新排序即可; 2) treeNodes[0]为parentNode的子 if(!parentNode) { var nodes = treeObj.getNodes(); // 得到所有nodes @@ -258,7 +258,7 @@ Notebook.getTreeSetting = function(isSearch, isShare) { } var nodes = treeObj.getNodesByFilter(filter, false, parentNode); } - + ajaxData.siblings = []; for(var i in nodes) { var notebookId = nodes[i].NotebookId; @@ -266,18 +266,18 @@ Notebook.getTreeSetting = function(isSearch, isShare) { ajaxData.siblings.push(notebookId); } } - + // {siblings: [id1, id2], parentNotebookId: 'xx', curNotebookId: 'yy'} NotebookService.dragNotebooks(ajaxData.curNotebookId, ajaxData.parentNotebookId, ajaxData.siblings); // ajaxPost("/notebook/dragNotebooks", {data: JSON.stringify(ajaxData)}); - + // 这里慢! setTimeout(function() { Notebook.changeNav(); }, 100); } - + if(!isShare) { var onClick = function(e, treeId, treeNode) { var notebookId = treeNode.NotebookId; @@ -297,7 +297,7 @@ Notebook.getTreeSetting = function(isSearch, isShare) { }; var onDblClick = null; } - + var setting = { view: { showLine: false, @@ -357,12 +357,12 @@ Notebook.getTreeSetting = function(isSearch, isShare) { if(treeNode.Title == newName) { return true; } - + // 如果是新添加的 if(treeNode.IsNew) { var parentNode = treeNode.getParentNode(); var parentNotebookId = parentNode ? parentNode.NotebookId : ""; - + self.doAddNotebook(treeNode.NotebookId, newName, parentNotebookId); } else { self.doUpdateNotebookTitle(treeNode.NotebookId, newName); @@ -371,7 +371,7 @@ Notebook.getTreeSetting = function(isSearch, isShare) { } } }; - + return setting; } Notebook.allNotebookId = "0"; @@ -394,13 +394,13 @@ Notebook.renderNotebooks = function(notebooks) { var notebook = notebooks[i]; notebook.Title = trimTitle(notebook.Title); } - + notebooks = [{NotebookId: Notebook.allNotebookId, Title: getMsg("all"), drop:false, drag: false}].concat(notebooks); notebooks.push({NotebookId: Notebook.trashNotebookId, Title: getMsg("trash"), drop:false, drag: false}); Notebook.notebooks = notebooks; // 缓存之 self.tree = $.fn.zTree.init($("#notebookList"), self.getTreeSetting(), notebooks); - + // 展开/折叠图标 var $notebookList = $("#notebookList"); $notebookList.hover(function () { @@ -416,10 +416,10 @@ Notebook.renderNotebooks = function(notebooks) { Notebook.curNotebookId = notebooks[0].NotebookId; self.cacheAllNotebooks(notebooks); } - + // 渲染nav Notebook.renderNav(); - + // 渲染第一个notebook作为当前 Notebook.changeNotebookNavForNewNote(notebooks[0].NotebookId); } @@ -440,7 +440,7 @@ Notebook.expandNotebookTo = function(notebookId, userId) { var me = this; var selected = false; var tree = me.tree; - + // 共享的 if(userId) { tree = Share.trees[userId]; @@ -471,7 +471,7 @@ Notebook.expandNotebookTo = function(notebookId, userId) { } -// RenderNotebooks调用, +// RenderNotebooks调用, // nav 为了新建, 快速选择, 移动笔记 // 这些在添加,修改,删除notebooks都要变动!!! Notebook.renderNav = function(nav) { @@ -511,7 +511,7 @@ Notebook.searchNotebookForList = function(key) { if(key) { $search.show(); $notebookList.hide(); - + var notebooks = self.tree.getNodesByParamFuzzy("Title", key); log('search'); log(notebooks); @@ -536,25 +536,25 @@ Notebook.searchNotebookForList = function(key) { Notebook.getChangedNotebooks = function(notebooks) { var self = this; var navForNewNote = ""; - + var len = notebooks.length; for(var i = 0; i < len; ++i) { var notebook = notebooks[i]; - + var classes = ""; if(!isEmpty(notebook.Subs)) { classes = "dropdown-submenu"; } var eachForNew = tt(''; - + navForNewNote += eachForNew; } return navForNewNote; @@ -574,12 +574,12 @@ Notebook.changeNav = function() { } } var html = self.getChangedNotebooks(pureNotebooks); - + self.everNavForNewNote = html; self.everNotebooks = pureNotebooks; - + $("#notebookNavForNewNote").html(html); - + // 移动, 复制重新来, 因为nav变了, 移动至-----的notebook导航也变了 // 这里速度很慢 // var t1 = (new Date()).getTime(); @@ -590,13 +590,13 @@ Notebook.changeNav = function() { } /** - * 我的共享notebooks + * 我的共享notebooks
    @@ -613,11 +613,11 @@ Notebook.renderShareNotebooks = function(sharedUserInfos, shareNotebooks) { if(isEmpty(sharedUserInfos)) { return; } - + if(!shareNotebooks || typeof shareNotebooks != "object" || shareNotebooks.length < 0) { return; } - + var $shareNotebooks = $("#shareNotebooks"); var user2ShareNotebooks = {}; for(var i in shareNotebooks) { @@ -627,7 +627,7 @@ Notebook.renderShareNotebooks = function(sharedUserInfos, shareNotebooks) { for(var i in sharedUserInfos) { var userInfo = sharedUserInfos[i]; var userNotebooks = user2ShareNotebooks[userInfo.UserId] || {ShareNotebooks:[]}; - + userNotebooks.ShareNotebooks = [{NotebookId: "-2", Title: "默认共享"}].concat(userNotebooks.ShareNotebooks) var username = userInfo.Username || userInfo.Email; @@ -638,7 +638,7 @@ Notebook.renderShareNotebooks = function(sharedUserInfos, shareNotebooks) { body += tt('
  • ?
  • ', notebook.NotebookId, notebook.Title) } body += ""; - + $shareNotebooks.append(header + body + "
    ") } } @@ -662,7 +662,7 @@ Notebook.changeNotebookNavForNewNote = function(notebookId, title) { var notebook = Notebook.cache[0]; title = notebook.Title; } - + if(!Notebook.isAllNotebookId(notebookId) && !Notebook.isTrashNotebookId(notebookId)) { $("#curNotebookForNewNote").html(title).attr("notebookId", notebookId); } else if(!$("#curNotebookForNewNote").attr("notebookId")) { @@ -680,17 +680,17 @@ Notebook.changeNotebookNavForNewNote = function(notebookId, title) { // 改变导航, 两处 // 单击左侧, 单击新建下拉时调用 -// 1 选中左侧导航, +// 1 选中左侧导航, // 2 notelist上面 > // 3 新建笔记 - js > // 转成我的nav <-> 共享 Notebook.toggleToMyNav = function(userId, notebookId) { $("#sharedNotebookNavForListNav").hide(); $("#myNotebookNavForListNav").show(); - + $("#newMyNote").show(); $("#newSharedNote").hide(); - + // 搜索tag隐藏 $("#tagSearch").hide(); }; @@ -698,19 +698,19 @@ Notebook.toggleToMyNav = function(userId, notebookId) { Notebook.changeNotebookNav = function(notebookId) { Notebook.curNotebookId = notebookId; Notebook.toggleToMyNav(); - + // 1 改变当前的notebook Notebook.selectNotebook($(tt('#notebook [notebookId="?"]', notebookId))); - + var notebook = Notebook.cache[notebookId]; - + if(!notebook) { return; } - + // 2 Notebook.changeCurNotebookTitle(notebook.Title); - + // 3 Notebook.changeNotebookNavForNewNote(notebookId, notebook.Title); }; @@ -733,7 +733,6 @@ Notebook.curActiveNotebookIsTrash = function() { Notebook.renderCurNotebook = function() { Notebook.changeNotebook(Notebook.curNotebookId); } - // 改变笔记本 // 0. 改变样式 // 1. 改变note, 此时需要先保存 @@ -750,18 +749,18 @@ Notebook.changeNotebook = function(notebookId, callback, needRendNoteId) { } Notebook.changeNotebookNav(notebookId); - + Notebook.curNotebookId = notebookId; // 1 Note.curChangedSaveIt(true); - + // 2 先清空所有 Note.clearAll(); - + var url = "/note/listNotes/"; var param = {notebookId: notebookId}; - + // 废纸篓 if(Notebook.isTrashNotebookId(notebookId)) { url = "/note/listTrashNotes"; @@ -771,14 +770,14 @@ Notebook.changeNotebook = function(notebookId, callback, needRendNoteId) { // 得到全部的... cacheNotes = Note.getNotesByNotebookId(); // 数量一致 - if(!isEmpty(cacheNotes)) { + if(!isEmpty(cacheNotes)) { if(callback) { callback(cacheNotes); } else { Note.renderNotesAndTargetNote(cacheNotes, needRendNoteId); } return; - } + } } else { cacheNotes = Note.getNotesByNotebookId(notebookId); var notebook = Notebook.cache[notebookId]; @@ -789,7 +788,7 @@ Notebook.changeNotebook = function(notebookId, callback, needRendNoteId) { var len = cacheNotes ? cacheNotes.length : 0; // 如果为0, 从服务器上拿 - if(len != 0 && len == notebook.NumberNotes) { + if(len != 0 && len == notebook.NumberNotes) { if(callback) { callback(cacheNotes); } else { @@ -801,14 +800,14 @@ Notebook.changeNotebook = function(notebookId, callback, needRendNoteId) { log('数量不一致'); } } - + // 2 得到笔记本 // 这里可以缓存起来, note按notebookId缓存 // 这里可能点击过快导致前面点击的后来才返回 me.showNoteAndEditorLoading(); me.changeNotebookSeq++; (function(seq) { - var callback2 = function(cacheNotes) { + var callback2 = function(cacheNotes) { // 后面点击过快, 之前的结果不要了 if(seq != me.changeNotebookSeq) { log("notebook changed too fast!"); @@ -863,10 +862,10 @@ Notebook.changeNotebookForNewNote = function(notebookId) { if(Notebook.isTrashNotebookId(notebookId) || Notebook.isAllNotebookId(notebookId)) { return; } - + Notebook.changeNotebookNav(notebookId, true); Notebook.curNotebookId = notebookId; - + // 2 得到笔记本 // 这里可以缓存起来, note按notebookId缓存 Service.noteService.getNotes(notebookId, function(notes) { @@ -889,7 +888,7 @@ Notebook.shareNotebooks= function(target) { $("#friendsEmail").focus(); }, 500); var notebookId = $(target).attr("notebookId"); - + shareNoteOrNotebook(notebookId, false); } @@ -902,7 +901,7 @@ Notebook.setNotebook2Blog = function(target) { if(notebook.IsBlog != undefined) { isBlog = !notebook.IsBlog; } - + // 那么, 如果当前是该notebook下, 重新渲染之 if(Notebook.curNotebookId == notebookId) { if(isBlog) { @@ -910,7 +909,7 @@ Notebook.setNotebook2Blog = function(target) { } else { $("#noteList .item-blog").hide(); } - + // 如果当前在所有笔记本下 } else if(Notebook.curNotebookId == Notebook.allNotebookId){ $("#noteItemList .item").each(function(){ @@ -937,7 +936,7 @@ Notebook.setNotebook2Blog = function(target) { Notebook.updateNotebookTitle = function(target) { var self = Notebook; var notebookId = $(target).attr("notebookId"); - + if(self.tree2) { self.tree2.editName(self.tree2.getNodeByTId(notebookId)); } else { @@ -952,7 +951,7 @@ Notebook.doUpdateNotebookTitle = function(notebookId, newTitle) { Notebook.cache[notebookId].Title = newTitle; // 改变nav Notebook.changeNav(); - + // 同步 if(self.tree2) { var notebook = self.tree.getNodeByTId(notebookId); @@ -972,7 +971,7 @@ Notebook.renderUpdateNoteTitle = function(notebookId, newTitle) { Notebook.cache[notebookId].Title = trimTitle(newTitle); // 改变nav Notebook.changeNav(); - + var notebook = self.tree.getNodeByTId(notebookId); if(!notebook) { return; @@ -997,7 +996,7 @@ Notebook.addNotebook = function() { if($("#myNotebooks").hasClass("closed")) { $("#myNotebooks .folderHeader").trigger("click"); } - + // 添加并修改 self.tree.addNodes(null, {Title: "", NotebookId: getObjectId(), IsNew: true}, true, true); } @@ -1011,10 +1010,10 @@ Notebook.doAddNotebook = function(notebookId, title, parentNotebookId) { var notebook = self.tree.getNodeByTId(notebookId); $.extend(notebook, ret); notebook.IsNew = false; - + // 选中之 Notebook.changeNotebook(notebookId); - + // 改变nav Notebook.changeNav(); } @@ -1028,9 +1027,9 @@ Notebook.addChildNotebook = function(target) { if($("#myNotebooks").hasClass("closed")) { $("#myNotebooks .folderHeader").trigger("click"); } - + var notebookId = $(target).attr("notebookId"); - + // 添加并修改 self.tree.addNodes(self.tree.getNodeByTId(notebookId), {Title: "", NotebookId: getObjectId(), IsNew: true}, false, true); } @@ -1039,7 +1038,7 @@ Notebook.addChildNotebook = function(target) { // 删除 Notebook.deleteNotebook = function(target) { var self = Notebook; - + var notebookId = $(target).attr("notebookId"); if(!notebookId) { return; @@ -1067,11 +1066,11 @@ Notebook.deleteNotebookFromTree = function(notebookId) { } delete Notebook.cache[notebookId]; // 改变nav - Notebook.changeNav(); + Notebook.changeNav(); }; // 清空垃圾 -Notebook.clearTrash = function() { +Notebook.clearTrash = function() { var me = this; if(confirm(getMsg('Are you sure ?'))) { NoteService.clearTrash(function() { @@ -1095,7 +1094,7 @@ Notebook.fixSyncConflict = function(note, newNote) { Note.addNoteCache(note); Note.addNoteCache(newNote); - var target = $(tt('[noteId="?"]', note.NoteId)); // + var target = $(tt('[noteId="?"]', note.NoteId)); // // 如果当前笔记在笔记列表中, 那么生成一个新笔记放在这个笔记上面 if(target.length > 0) { var newHtmlObject = Note._getNoteHtmlObjct(note); @@ -1116,14 +1115,14 @@ Notebook.fixSyncConflict = function(note, newNote) { // <- server 服务器端添加过来的 Notebook.addSync = function(notebooks) { var me = this; - if(isEmpty(notebooks)) { + if(isEmpty(notebooks)) { return; } console.log('web add sync notebook'); for(var i in notebooks) { var notebook = notebooks[i]; Notebook.setCache(notebook); - me.tree.addNodes(me.tree.getNodeByTId(notebook.ParentNotebookId), + me.tree.addNodes(me.tree.getNodeByTId(notebook.ParentNotebookId), {Title: notebook.Title, NotebookId: notebook.NotebookId, IsNew: false}, // IsNew: false啊!!! true, true, false); } @@ -1137,7 +1136,7 @@ Notebook.addChange = function(notebooks) { // 不对移动做修改, 只修改标题 Notebook.updateSync = function(notebooks) { var me = this; - if(isEmpty(notebooks)) { + if(isEmpty(notebooks)) { return; } log("update notebook sync"); @@ -1156,7 +1155,7 @@ Notebook.updateSync = function(notebooks) { // 删除 Notebook.deleteSync = function(notebooks) { var me = this; - if(isEmpty(notebooks)) { + if(isEmpty(notebooks)) { return; } log('delete notebook sync'); @@ -1183,11 +1182,11 @@ Notebook.init = function() { var notebookId = $(this).find("a").attr("notebookId"); Notebook.changeNotebook(notebookId); }); - + //------------------- // 右键菜单 function newNotebookListMenu() { - + var me = this; this.target = ''; this.menu = new gui.Menu(); @@ -1338,7 +1337,7 @@ Notebook.init = function() { e.stopPropagation(); Notebook.addNotebook(); }); - + // notebook setting $("#notebookList").on("click", ".notebook-setting", function(e) { e.preventDefault(); From fbc39e7918b3f7a406f039b38995506597a97a96 Mon Sep 17 00:00:00 2001 From: LucasYuNju Date: Fri, 9 Sep 2016 23:26:14 +0800 Subject: [PATCH 6/6] Put view switching button to left. --- note.html | 4 ++++ public/js/app/note.js | 32 ++++++++++++++++++++++++++++++++ public/themes/default.css | 9 +++++++++ 3 files changed, 45 insertions(+) diff --git a/note.html b/note.html index 8753d311..0877d400 100755 --- a/note.html +++ b/note.html @@ -240,6 +240,10 @@ function log(o) {
    +
    + +
    +
    + diff --git a/public/js/app/note.js b/public/js/app/note.js index ebacc8b2..b90d06b7 100644 --- a/public/js/app/note.js +++ b/public/js/app/note.js @@ -3221,6 +3221,38 @@ $(function() { Notebook.searchNotebookForList(key); }); + // 切换列表视图 + $("#viewModeDropdown").click(function() { + console.log("*******"); + var themeSubmenus = new gui.Menu(); + themeSubmenus.append(new gui.MenuItem({ + checked: Config.view === "summary", + label: "摘要视图", + type: "checkbox", + click: function() { + Config.view = 'summary'; + Notebook.renderCurNotebook(); + Api.writeConfig(Config); + } + })); + themeSubmenus.append(new gui.MenuItem({ + checked: Config.view === "list", + label: "列表视图", + type: "checkbox", + click: function() { + Config.view = 'list'; + Notebook.renderCurNotebook(); + Api.writeConfig(Config); + } + })); + + var $this = $(this); + var x = $this.offset().left; + var y = $this.offset().top + $this.height(); + themeSubmenus.popup(gui.getCurrentWindow(), Math.round(x), Math.round(y)); + }); + + //--------------------------- // 搜索, 按enter才搜索 /* diff --git a/public/themes/default.css b/public/themes/default.css index a0ebed24..6e46a811 100644 --- a/public/themes/default.css +++ b/public/themes/default.css @@ -1448,6 +1448,15 @@ h3 { .close:focus { outline: none; } +#viewModeDropdown { + width: 30px; + height:35px; + line-height: 30px; + text-align: center; + position: relative; + z-index: 10000; + cursor: pointer; +} #newMyNote { position: absolute; right: 3px;