mirror of
https://github.com/leanote/desktop-app.git
synced 2025-10-15 15:41:19 +00:00
send notebook changes, 先添加父, 再添加子
This commit is contained in:
2
node_modules/api.js
generated
vendored
2
node_modules/api.js
generated
vendored
@@ -502,7 +502,7 @@ var Api = {
|
||||
Content: note.Content,
|
||||
IsMarkdown: note.IsMarkdown,
|
||||
Tags: note.Tags,
|
||||
IsBlog: note.IsBlog,
|
||||
IsBlog: false, // TODO 这里永远设为非blog note.IsBlog,
|
||||
Files: note.Files,
|
||||
FileDatas: note.FileDatas,
|
||||
}
|
||||
|
2
node_modules/db.js
generated
vendored
2
node_modules/db.js
generated
vendored
@@ -10,7 +10,7 @@ console.error(dbPath);
|
||||
|
||||
// test
|
||||
if(dbPath.length < 6) {
|
||||
// var dbPath = '/Users/life/Library/Application Support/Leanote' + '/nedb';
|
||||
var dbPath = '/Users/life/Library/Application Support/Leanote' + '/nedb';
|
||||
}
|
||||
|
||||
// console.log(dbPath);
|
||||
|
100
node_modules/notebook.js
generated
vendored
100
node_modules/notebook.js
generated
vendored
@@ -65,40 +65,48 @@ var Notebook = {
|
||||
});
|
||||
},
|
||||
|
||||
// 建立关联
|
||||
_mapNotebooks: function(notebooks) {
|
||||
var me = this;
|
||||
// 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);
|
||||
return isolatedNotebooks;
|
||||
},
|
||||
|
||||
// 得到用户下所有的notebook
|
||||
// 排序好之后返回
|
||||
getNotebooks: function(callback) {
|
||||
getNotebooks: function(callback) {
|
||||
var me = this;
|
||||
var userId = User.getCurActiveUserId();
|
||||
NB.find({UserId: userId, $or: [{LocalIsDelete : { $exists : false }}, {LocalIsDelete: false}] }, 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);
|
||||
|
||||
callback && callback(me._mapNotebooks(notebooks));
|
||||
});
|
||||
},
|
||||
|
||||
@@ -127,7 +135,10 @@ var Notebook = {
|
||||
},
|
||||
|
||||
updateNotebookTitle: function(notebookId, title, callback) {
|
||||
NB.update({NotebookId: notebookId}, {$set: {Title: title, IsDirty: true, UpdatedTime: new Date()}}, function(err, n) {
|
||||
NB.update({NotebookId: notebookId},
|
||||
{$set:
|
||||
{Title: title, IsDirty: true, UpdatedTime: new Date()}
|
||||
}, function(err, n) {
|
||||
callback(true);
|
||||
});
|
||||
},
|
||||
@@ -153,7 +164,11 @@ var Notebook = {
|
||||
for(var i = 0; i < siblingNotebookIds.length; ++i) {
|
||||
var siblingNotebookId = siblingNotebookIds[i];
|
||||
console.log('siblingNotebookId: ' + siblingNotebookId);
|
||||
NB.update({NotebookId: siblingNotebookId}, {$set: {ParentNotebookId: parentNotebookId, Seq: i, IsDirty: true, UpdatedTime: new Date()}});
|
||||
NB.update({NotebookId: siblingNotebookId},
|
||||
{$set:
|
||||
{ParentNotebookId: parentNotebookId, Seq: i, IsDirty: true, UpdatedTime: new Date()}
|
||||
}
|
||||
);
|
||||
}
|
||||
});
|
||||
},
|
||||
@@ -346,14 +361,41 @@ var Notebook = {
|
||||
});
|
||||
},
|
||||
|
||||
// 深度优先一个列表
|
||||
// 为了send changes时避免先send child
|
||||
_deepTraversal: [],
|
||||
_visited: {}, // 可以不要
|
||||
deep: function(T) {
|
||||
var me = this;
|
||||
if(!T || !T.Subs || T.Subs.length == 0) {
|
||||
return;
|
||||
}
|
||||
for(var i = 0; i < T.Subs.length; ++i) {
|
||||
var node = T.Subs[i];
|
||||
if(!me._visited[node.NotebookId]) { // 可以不要这个判断
|
||||
me._visited[node.NotebookId] = true;
|
||||
me._deepTraversal.push(T.Subs[i]);
|
||||
// 递归
|
||||
me.deep(T.Subs[i]);
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
// 获得用户修改的笔记本
|
||||
getDirtyNotebooks: function(callback) {
|
||||
var me = this;
|
||||
NB.find({UserId: User.getCurActiveUserId(), IsDirty: true}, function(err, notebooks) {
|
||||
if(err) {
|
||||
log(err);
|
||||
return callback && callback(false);
|
||||
} else {
|
||||
callback(notebooks);
|
||||
var mapNotebooks = me._mapNotebooks(notebooks);
|
||||
// 深度优先一个序列
|
||||
me._deepTraversal = [];
|
||||
me._visited = {};
|
||||
me.deep({Subs: mapNotebooks});
|
||||
// 返回之
|
||||
callback(me._deepTraversal);
|
||||
}
|
||||
});
|
||||
},
|
||||
|
24
node_modules/sync.js
generated
vendored
24
node_modules/sync.js
generated
vendored
@@ -670,22 +670,28 @@ var Sync = {
|
||||
// 可能服务器上已删除, 此时应该要作为添加而不是更新
|
||||
me._syncInfo.notebook.changeNeedAdds.push(notebook);
|
||||
}
|
||||
|
||||
// me.checkNeedIncSyncAgain(newNotebook.Usn);
|
||||
return cb();
|
||||
}
|
||||
else {
|
||||
// 更新
|
||||
// TODO 后端updateNotebook只要传Usn回来即可
|
||||
Notebook.updateNotebookForceForSendChange(notebook.NotebookId, newNotebook);
|
||||
|
||||
if(notebook.LocalIsNew) {
|
||||
Notebook.updateNotebookForceForSendChange(notebook.NotebookId, newNotebook, function() {
|
||||
if(notebook.LocalIsNew) {
|
||||
// 没用
|
||||
me._syncInfo.notebook.changeAdds.push(newNotebook);
|
||||
} else {
|
||||
// 没用
|
||||
me._syncInfo.notebook.updates.push(newNotebook);
|
||||
}
|
||||
} else {
|
||||
// 没用
|
||||
me._syncInfo.notebook.updates.push(newNotebook);
|
||||
}
|
||||
|
||||
// 这里才cb(), 因为先添加父, 再添加子
|
||||
me.checkNeedIncSyncAgain(newNotebook.Usn);
|
||||
cb();
|
||||
});
|
||||
}
|
||||
me.checkNeedIncSyncAgain(newNotebook.Usn);
|
||||
cb();
|
||||
|
||||
});
|
||||
}, function() {
|
||||
callback && callback();
|
||||
|
File diff suppressed because one or more lines are too long
46
test.js
46
test.js
@@ -21,14 +21,14 @@ Api.addNotebook({
|
||||
// Api.uploadImage();
|
||||
User.userId = '54bdc65599c37b0da9000002';
|
||||
User.userId = '54d7620d99c37b030600002c';
|
||||
User.userId = '54f6e72899c37b6e20000044';
|
||||
User.userId = '545b26ad38f4116d08000029';
|
||||
|
||||
// 54d7624205fcd105da00005
|
||||
|
||||
// var reg = new RegExp(Evt.localUrl + '/api/file/getImage', 'g');
|
||||
// content = content.replace(reg, Evt.leanoteUrl + '/api/file/getImage');
|
||||
|
||||
Api.auth('leanote@leanote.com', 'myleanotelife121');
|
||||
// Api.auth('leanote@leanote.com', 'myleanotelife121');
|
||||
|
||||
User.init(function() {
|
||||
|
||||
@@ -37,15 +37,19 @@ User.init(function() {
|
||||
console.log(note);
|
||||
});
|
||||
*/
|
||||
|
||||
Notebook.getDirtyNotebooks(function(notebooks) {
|
||||
console.log(notebooks);
|
||||
})
|
||||
|
||||
|
||||
// Note.getNoteByServerNoteId('54f1a1f899c37b4faf000001', function(note) {
|
||||
// console.log(note);
|
||||
// });
|
||||
|
||||
Note.getNotes('', function(ret) {
|
||||
console.log(ret);
|
||||
});
|
||||
// Note.getNotes('', function(ret) {
|
||||
// console.log(ret);
|
||||
// });
|
||||
});
|
||||
|
||||
|
||||
@@ -115,4 +119,34 @@ while(s = reg.exec(a)) {
|
||||
}
|
||||
*/
|
||||
|
||||
console.log(Common.goNowToDate('2014-01-06T18:29:48.802+08:00'));
|
||||
// console.log(Common.goNowToDate('2014-01-06T18:29:48.802+08:00'));
|
||||
|
||||
var A = {
|
||||
_deepTraversal: [],
|
||||
_visited: {},
|
||||
deep: function(T) {
|
||||
var me = this;
|
||||
if(!T || !T.Subs || T.Subs.length == 0) {
|
||||
return;
|
||||
}
|
||||
for(var i = 0; i < T.Subs.length; ++i) {
|
||||
var node = T.Subs[i];
|
||||
if(!me._visited[node.NotebookId]) {
|
||||
me._visited[node.NotebookId] = true;
|
||||
me._deepTraversal.push(T.Subs[i]);
|
||||
me.deep(T.Subs[i]);
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
init: function() {
|
||||
var nodes = [
|
||||
{NotebookId: 1, Subs: [{NotebookId: 2, Subs: [{NotebookId: 9}]}, {NotebookId: 3, Subs: [{NotebookId: 4}, {NotebookId: 5}]}]},
|
||||
{NotebookId: 6},
|
||||
{NotebookId: 7}
|
||||
]
|
||||
this.deep({Subs: nodes});
|
||||
console.log(this._deepTraversal);
|
||||
}
|
||||
};
|
||||
// A.init();
|
Reference in New Issue
Block a user