Notebook.curNotebookId = ""; Notebook.cache = {}; // notebookId => {}; Notebook.notebooks = []; // 按次序 //
  • CSS
  • Notebook.notebookNavForListNote = ""; // html 为了note list上面和新建时的ul // 设置缓存 Notebook.setCache = function(notebook) { var notebookId = notebook.NotebookId; if (!notebookId) { return; } if (!Notebook.cache[notebookId]) { Notebook.cache[notebookId] = {}; } $.extend(Notebook.cache[notebookId], notebook); }; Notebook.getCurNotebookId = function() { return Notebook.curNotebookId; }; Notebook.getCurNotebook = function() { return Notebook.cache[Notebook.curNotebookId]; }; // 为什么可能会没有? 因为可能是新加的笔记本, 此时该笔记本又有笔记, 一起同步过来 // 还没显示到web上 // 放在这里, 让addNote时调用 Notebook._newNotebookNumberNotes = {}; // notebookId => count Notebook._subNotebookNumberNotes = {}; Notebook.reRenderNotebookNumberNotesIfIsNewNotebook = function(notebookId) { var count = Notebook._newNotebookNumberNotes[notebookId]; if (count) { delete Notebook._newNotebookNumberNotes[notebookId]; } else { return; } Notebook.updateNotebookNumberNotes(notebookId, count); }; // 为了server Web调用 Notebook.updateNotebookNumberNotes = function(notebookId, count) { var self = this; var notebook = self.getNotebook(notebookId); // 为什么可能会没有? 因为可能是新加的笔记本, 此时该笔记本又有笔记, 一起同步过来 // 可能是子笔记本, 显示不出 // 还没显示到web上 if (!notebook) { Notebook._newNotebookNumberNotes[notebookId] = count; return; } if (!$("#numberNotes_" + notebookId).length) { Notebook._subNotebookNumberNotes[notebookId] = count; return; } notebook.NumberNotes = count; $("#numberNotes_" + notebookId).html(count); }; // 笔记本的笔记数量更新 Notebook._updateNotebookNumberNotes = function(notebookId, n) { var self = this; var notebook = self.getNotebook(notebookId); if (!notebook) { return; } if (!notebook.NumberNotes) { notebook.NumberNotes = 0; } notebook.NumberNotes += n; if (notebook.NumberNotes < 0) { notebook.NumberNotes = 0; } // 得到笔记本下笔记的数量, v2, 重新统计 var notes = Note.getNotesByNotebookId(notebookId); var cnt = notes ? notes.length : 0; if (!cnt) { $("#numberNotes_" + notebookId).html(notebook.NumberNotes); } else { if (n == -1) { cnt += n; } if (cnt < 0) { cnt = 0; } $("#numberNotes_" + notebookId).html(cnt); } }; // addNote, copyNote, moveNote Notebook.incrNotebookNumberNotes = function(notebookId) { var self = this; self._updateNotebookNumberNotes(notebookId, 1); }; // moteNote, deleteNote Notebook.minusNotebookNumberNotes = function(notebookId) { var self = this; self._updateNotebookNumberNotes(notebookId, -1); }; // 得到notebook标题, 给note显示其notebook标题用 // called by Note Notebook.getNotebook = function(notebookId) { return Notebook.cache[notebookId]; }; // called by Note Notebook.getNotebookTitle = function(notebookId) { var notebook = Notebook.cache[notebookId]; if (notebook) { return trimTitle(notebook.Title); } else { return getMsg("UnTitled"); } } /** * 我的notebooks */ // 得到下级notebooks Notebook.getSubNotebooks = function(parentNotebookId) { var me = this; var treeObj = me.tree; var parentNode = treeObj.getNodeByTId(parentNotebookId); if (!parentNode) { return; } var nextLevel = parentNode.level + 1; function filter(node) { return node.level == nextLevel; } var nodes = treeObj.getNodesByFilter(filter, false, parentNode); if (nodes && nodes.length == 0) { return false; } return nodes; }; /** * Simple Tree Setting(基本版) * 笔记移动、复制时使用 */ Notebook.getSimpleTreeSetting = function(options) { // 添加自定义dom function addDiyDom(treeId, treeNode) { var spaceWidth = 5; var switchObj = $("#" + treeId + " #" + treeNode.tId + "_switch"), icoObj = $("#" + treeId + " #" + treeNode.tId + "_ico"); switchObj.remove(); icoObj.before(switchObj); if (treeNode.level > 1) { var spaceStr = ""; switchObj.before(spaceStr); } } var onDblClick = function(e, treeId, treeNode) { var notebookId = treeNode.NotebookId; options.callback(notebookId); $("#leanoteDialog").modal('hide'); }; var setting = { view: { showLine: false, showIcon: false, selectedMulti: false, addDiyDom: addDiyDom }, data: { key: { name: "Title", children: "Subs", } }, callback: { onDblClick: onDblClick } }; return setting; } Notebook.getTreeSetting = function(isSearch, isShare) { var noSearch = !isSearch; var self = this; // 添加自定义dom function addDiyDom(treeId, treeNode) { var spaceWidth = 5; var switchObj = $("#" + treeId + " #" + treeNode.tId + "_switch"), icoObj = $("#" + treeId + " #" + treeNode.tId + "_ico"); switchObj.remove(); icoObj.before(switchObj); if (!Notebook.isAllNotebookId(treeNode.NotebookId) && !Notebook.isTrashNotebookId(treeNode.NotebookId)) { icoObj.after($('' + (treeNode.NumberNotes || 0) + '')); // icoObj.after($('')); icoObj.after($('')); } if (treeNode.level > 1) { var spaceStr = ""; switchObj.before(spaceStr); } } // 拖拽 function beforeDrag(treeId, treeNodes) { for (var i = 0, l = treeNodes.length; i < l; i++) { if (treeNodes[i].drag === false) { return false; } } return true; } function beforeDrop(treeId, treeNodes, targetNode, moveType) { return targetNode ? targetNode.drop !== false : true; } function onDrop(e, treeId, treeNodes, targetNode, moveType) { var treeNode = treeNodes[0]; // 搜索不能drag if (!targetNode) { return; } var parentNode; var treeObj = self.tree; var ajaxData = { curNotebookId: treeNode.NotebookId }; // 成为子节点, 那么只需要得到targetNode下所有的子结点即可 if (moveType == "inner") { parentNode = targetNode; } else { parentNode = targetNode.getParentNode(); } // 在targetNode之前或之后, // 那么: 1) 需要将该parentNode下所有的node重新排序即可; 2) treeNodes[0]为parentNode的子 if (!parentNode) { var nodes = treeObj.getNodes(); // 得到所有nodes } else { ajaxData.parentNotebookId = parentNode.NotebookId; var nextLevel = parentNode.level + 1; function filter(node) { return node.level == nextLevel; } var nodes = treeObj.getNodesByFilter(filter, false, parentNode); } ajaxData.siblings = []; for (var i in nodes) { var notebookId = nodes[i].NotebookId; if (!Notebook.isAllNotebookId(notebookId) && !Notebook.isTrashNotebookId(notebookId)) { ajaxData.siblings.push(notebookId); } } // {siblings: [id1, id2], parentNotebookId: 'xx', curNotebookId: 'yy'} NotebookService.dragNotebooks(ajaxData.curNotebookId, ajaxData.parentNotebookId, ajaxData.siblings); // 设置dirty状态 // 不需要设置parentNotebookId var ids = [ajaxData.curNotebookId].concat(ajaxData.siblings || []); ids.forEach(function(notebookId) { if (notebookId) { Notebook.setDirtyOrNew(notebookId, true); } }); setTimeout(function() { Notebook.changeNav(); }, 100); } var onClick = function(e, treeId, treeNode) { var notebookId = treeNode.NotebookId; Notebook.changeNotebook(notebookId); }; var onDblClick = function(e) { var notebookId = $(e.target).attr("notebookId"); if (!Notebook.isAllNotebookId(notebookId) && !Notebook.isTrashNotebookId(notebookId)) { self.updateNotebookTitle(e.target); } }; var setting = { view: { showLine: false, showIcon: false, selectedMulti: false, dblClickExpand: false, addDiyDom: addDiyDom }, data: { key: { name: "Title", children: "Subs", } }, edit: { enable: true, showRemoveBtn: false, showRenameBtn: false, drag: { isMove: noSearch, prev: noSearch, inner: noSearch, next: noSearch } }, callback: { beforeDrag: beforeDrag, beforeDrop: beforeDrop, onDrop: onDrop, onClick: onClick, onDblClick: onDblClick, onExpand: function(event, treeId, treeNode) { // 展开时, 会有子笔记本, 如果之前有设置数量, 则重新设置 // 为了防止移动, 复制过来时没有该sub if (treeNode.isParent) { var childNotes = self.getSubNotebooks(treeNode.NotebookId); if (childNotes) { childNotes.forEach(function(node) { var notebookId = node.NotebookId; if (Notebook._subNotebookNumberNotes[notebookId] !== undefined) { $('#numberNotes_' + notebookId).html(Notebook._subNotebookNumberNotes[notebookId]); Notebook._subNotebookNumberNotes[notebookId] = undefined; } // 子的dirty, new状态 Notebook.setDirtyOrNewForSub(notebookId); }); } } }, beforeRename: function(treeId, treeNode, newName, isCancel) { if (newName == "") { if (treeNode.IsNew) { // 删除之 self.tree.removeNode(treeNode); return true; } return false; } 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); } return true; } } }; return setting; }; Notebook.allNotebookId = "0"; Notebook.trashNotebookId = "-1"; Notebook.curNotebookIsTrashOrAll = function() { return Notebook.curNotebookId == Notebook.trashNotebookId || Notebook.curNotebookId == Notebook.allNotebookId; }; Notebook.curNotebookIsTrash = function() { return Notebook.curNotebookId == Notebook.trashNotebookId; }; // reload 是否再一次load Notebook.renderNotebooks = function(notebooks, reload) { var self = this; if (!notebooks || typeof notebooks != "object" || notebooks.length < 0) { notebooks = []; } // title可能有