mirror of
https://github.com/leanote/desktop-app.git
synced 2025-10-17 00:15:12 +00:00
基本雏型, 本地
This commit is contained in:
139
node_modules/notebook.js
generated
vendored
Normal file
139
node_modules/notebook.js
generated
vendored
Normal file
@@ -0,0 +1,139 @@
|
||||
var db = require('db');
|
||||
var User = require('user');
|
||||
var NB = db.notebooks;
|
||||
|
||||
function log(o) {console.log(o);}
|
||||
|
||||
/*
|
||||
字段:
|
||||
_id, // NotebookId表示是服务端Id, _id表示本地的id, 不一样
|
||||
IsDeleted bool, // 是否已删除, true表示本地已删除, 未同步
|
||||
LocalUsn int 本地Usn, 递增, 用于记录从上次同步后是否已修改, 若 > lastUpdateCount则表示已修改
|
||||
NotebookId bson.ObjectId `bson:"_id,omitempty"` // 必须要设置bson:"_id" 不然mgo不会认为是主键
|
||||
UserId bson.ObjectId `bson:"UserId"`
|
||||
ParentNotebookId bson.ObjectId `bson:"ParentNotebookId,omitempty"` // 上级
|
||||
Seq int `Seq` // 排序
|
||||
Title string `Title` // 标题
|
||||
UrlTitle string `UrlTitle` // Url标题 2014/11.11加
|
||||
NumberNotes int `NumberNotes` // 笔记数
|
||||
IsTrash bool `IsTrash,omitempty` // 是否是trash, 默认是false
|
||||
IsBlog bool `IsBlog,omitempty` // 是否是Blog 2013/12/29 新加
|
||||
CreatedTime time.Time `CreatedTime,omitempty`
|
||||
UpdatedTime time.Time `UpdatedTime,omitempty`
|
||||
|
||||
// 2015/1/15, 更新序号
|
||||
Usn int `Usn` // UpdateSequenceNum, 与服务器端保存一致
|
||||
|
||||
*/
|
||||
|
||||
// 排序笔记本和子笔记本
|
||||
function sortNotebooks(notebooks) {
|
||||
notebooks.sort(function(a, b) {
|
||||
return a.Seq - b.Seq;
|
||||
});
|
||||
for(var i in notebooks) {
|
||||
var notebook = notebooks[i];
|
||||
if(notebook.Subs.length > 0) {
|
||||
sortNotebooks(notebook.Subs);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// 笔记本服务
|
||||
var Notebook = {
|
||||
|
||||
addNotebookTest: function() {
|
||||
var doc = {
|
||||
// _id: "xxxxx",
|
||||
hello: 'world'
|
||||
, n: 5
|
||||
, today: new Date()
|
||||
, nedbIsAwesome: true
|
||||
, notthere: null
|
||||
, notToBeSaved: undefined // Will not be saved
|
||||
, fruits: [ 'apple', 'orange', 'pear' ]
|
||||
, infos: { name: 'nedb' }
|
||||
};
|
||||
console.log("save before")
|
||||
NB.insert(doc, function (err, newDoc) { // Callback is optional
|
||||
// newDoc is the newly inserted document, including its _id
|
||||
// newDoc has no key called notToBeSaved since its value was undefined
|
||||
console.log(err);
|
||||
console.log(newDoc);
|
||||
});
|
||||
},
|
||||
|
||||
// 得到用户下所有的notebook
|
||||
// 排序好之后返回
|
||||
getNotebooks: function(callback) {
|
||||
var userId = User.getCurActiveUserId();
|
||||
NB.find({UserId: userId}, function(err, notebooks) {
|
||||
if(err) {
|
||||
log(err);
|
||||
return callback && callback(false);
|
||||
}
|
||||
// log(notebooks);
|
||||
// 整理成层级关系, 并排序
|
||||
// 1. 建立map
|
||||
var notebooksMap = {};
|
||||
for(var i in notebooks) {
|
||||
var notebook = notebooks[i];
|
||||
notebook.Subs = [];
|
||||
notebooksMap[notebook.NotebookId] = notebook;
|
||||
}
|
||||
// 2. 追加到父下
|
||||
var isolatedNotebooks = []; // 独立的, 没有父的, 第一级
|
||||
for(var notebookId in notebooksMap) {
|
||||
var notebook = notebooksMap[notebookId];
|
||||
var parentNotebookId = notebook.ParentNotebookId;
|
||||
if(parentNotebookId && notebooksMap[parentNotebookId]) {
|
||||
notebooksMap[parentNotebookId].Subs.push(notebook);
|
||||
} else {
|
||||
isolatedNotebooks.push(notebook);
|
||||
}
|
||||
}
|
||||
// 3. 排序
|
||||
sortNotebooks(isolatedNotebooks);
|
||||
// log(notebooks);
|
||||
// log(notebooksMap['1'].Subs);
|
||||
callback && callback(isolatedNotebooks);
|
||||
});
|
||||
},
|
||||
|
||||
// 新建笔记本
|
||||
addNotebook: function(notebookId, title, parentNotebookId, callback) {
|
||||
var notebook = {
|
||||
Title: title,
|
||||
Seq: -1,
|
||||
UserId: User.getCurActiveUserId(),
|
||||
ParentNotebookId: parentNotebookId
|
||||
// TODO UrlTitle
|
||||
}
|
||||
if(notebookId) {
|
||||
notebook['NotebookId'] = notebookId;
|
||||
}
|
||||
NB.insert(notebook, function (err, newDoc) { // Callback is optional
|
||||
if(err) {
|
||||
console.log(err);
|
||||
callback && callback(false);
|
||||
} else {
|
||||
callback && callback(newDoc);
|
||||
}
|
||||
});
|
||||
},
|
||||
|
||||
// 重新统计笔记本的笔记数据
|
||||
reCountNotebookNumberNotes: function(notebookId) {
|
||||
db.notes.count({NotebookId: notebookId, IsTrash: false}, function(err, count) {
|
||||
if(err) {
|
||||
log(err);
|
||||
return;
|
||||
}
|
||||
log("count");
|
||||
log(notebookId);
|
||||
log(count);
|
||||
NB.update({NotebookId: notebookId}, {$set: {NumberNotes: count}}, {})
|
||||
});
|
||||
}
|
||||
};
|
||||
module.exports = Notebook;
|
Reference in New Issue
Block a user