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可能有