diff --git a/node_modules/notebook.js b/node_modules/notebook.js index 30f2fc88..c237faf2 100644 --- a/node_modules/notebook.js +++ b/node_modules/notebook.js @@ -442,12 +442,14 @@ var Notebook = { } } - // 处理添加的 + // 处理添加的, 更新的, 这里前端统一重新渲染!! var adds = notebookSyncInfo.adds; - if (!isEmpty(adds)) { - console.log(' has add notebook'); - console.log(adds); - Web.addSyncNotebook(adds); + if (!isEmpty(adds) || !isEmpty(notebookSyncInfo.updates)) { + console.log(' has adds/updates notebook', adds, notebookSyncInfo.updates); + // Web.addSyncNotebook(adds); + // Web.updateSyncNotebook(notebookSyncInfo.updates); + + Web.reloadNotebook(); } if (!isEmpty(notebookSyncInfo.changeAdds)) { @@ -456,13 +458,6 @@ var Notebook = { Web.addChangeNotebook(notebookSyncInfo.changeAdds); } - if (!isEmpty(notebookSyncInfo.updates)) { - console.log(' has updates notebook'); - console.log(notebookSyncInfo.updates); - // 处理更新的 - Web.updateSyncNotebook(notebookSyncInfo.updates); - } - if (!isEmpty(notebookSyncInfo.deletes)) { // 处理删除的 Web.deleteSyncNotebook(notebookSyncInfo.deletes); diff --git a/node_modules/sync.js b/node_modules/sync.js index f1dba9a6..86db55b7 100644 --- a/node_modules/sync.js +++ b/node_modules/sync.js @@ -186,11 +186,13 @@ var Sync = { Notebook.getNotebookByServerNotebookId(notebookId, function(notebookLocal) { // 2.1 本地没有, 表示是新建 if(!notebookLocal) { - console.log('add addNotebookForce...') + console.log(' add addNotebookForce...', notebook.Title) // TODO Notebook.addNotebookForce(notebook, function(notebook) { - // me._syncInfo.notebook.adds.push(notebook); - me.fixSynced('notebook', 'adds', notebook); + // 要最后一起添加, 因为有层级关系 + console.log(' ', notebook.Title) + me._syncInfo.notebook.adds.push(notebook); + // me.fixSynced('notebook', 'adds', notebook); canCall(); }); } else { @@ -209,8 +211,9 @@ var Sync = { // 这里都是用服务器端的数据, 不处理冲突 Notebook.updateNotebookForce(notebook, notebookLocal, function(notebook) { if(notebook) { - // me._syncInfo.notebook.updates.push(notebook); - me.fixSynced('notebook', 'updates', notebook); + // 前端一起渲染 + me._syncInfo.notebook.updates.push(notebook); + // me.fixSynced('notebook', 'updates', notebook); } canCall(); }) @@ -226,7 +229,7 @@ var Sync = { return; } Api.getSyncNotebooks(afterUsn, me._notebookMaxEntry, function(notebooks) { - console.log(' syncNotebook') + console.log(' syncNotebook', notebooks) // console.log(notebooks); if(Common.isOk(notebooks)) { me._totalSyncNotebookNum += notebooks.length; @@ -663,6 +666,15 @@ var Sync = { } }, + // 前端重新渲染 + fixSyncedNotebook: function () { + var me = this; + if(me.incrSyncStart) { + console.log(' fixSyncedNotebook') + Notebook.fixConflicts(me._syncInfo.notebook); + } + }, + // 处理冲突 fixConflicts: function(callback) { var me = this; @@ -676,7 +688,7 @@ var Sync = { // 不是fullSync if(me.incrSyncStart) { - Notebook.fixConflicts(me._syncInfo.notebook); + // Notebook.fixConflicts(me._syncInfo.notebook); Note.fixConflicts(me._syncInfo.note, function() { // 避免无限循环, 别send changes了 @@ -773,9 +785,12 @@ var Sync = { // 同步笔记本 me.syncNotebook(lastSyncUsn, function(ok) { if(ok) { + me.fixSyncedNotebook(); console.log(' incr notebook ok', lastSyncUsn); + me.addSyncProcessStatus(10); console.log(' incr note start'); + // 同步笔记 me.syncNote(lastSyncUsn, function(ok) { if(ok) { @@ -864,11 +879,13 @@ var Sync = { if(!newNotebook.NotebookId) { if(newNotebook.Msg == 'conflict') { // 没用, 前端不会处理的, 按理不会出现这种情况, 因为先sync - me._syncInfo.notebook.conflicts.push(newNotebook); + // me._syncInfo.notebook.conflicts.push(newNotebook); + me.fixSynced('notebook', 'conflicts', newNotebook); } else if(newNotebook.Msg == 'notExists') { // 服务器端没有, 那么要作为添加 // 可能服务器上已删除, 此时应该要作为添加而不是更新 me._syncInfo.notebook.changeNeedAdds.push(notebook); + // me.fixSynced('notebook', 'changeNeedAdds', notebook); } // me.checkNeedIncSyncAgain(newNotebook.Usn); @@ -877,15 +894,17 @@ var Sync = { else { // 更新 // TODO 后端updateNotebook只要传Usn回来即可 - console.log("返回来的notebook" + newNotebook.Title) + console.log(" 返回来的notebook" + newNotebook.Title) Notebook.updateNotebookForceForSendChange(notebook.NotebookId, newNotebook, function() { if(notebook.LocalIsNew) { // 没用 me._syncInfo.notebook.changeAdds.push(newNotebook); + // me.fixSynced('notebook', 'changeAdds', newNotebook); } else { // 没用 - me._syncInfo.notebook.updates.push(newNotebook); + // me._syncInfo.notebook.updates.push(newNotebook); + me.fixSynced('notebook', 'updates', newNotebook); } // 这里才cb(), 因为先添加父, 再添加子 diff --git a/node_modules/web.js b/node_modules/web.js index c50d58a4..d1519cf4 100644 --- a/node_modules/web.js +++ b/node_modules/web.js @@ -39,6 +39,10 @@ var Web = { me.Tag = tag; }, + reloadNotebook: function () { + this.Notebook.reload(); + }, + addSyncNotebook: function(notebooks) { var me = this; me.Notebook.addSync(notebooks); diff --git a/public/js/app/notebook.js b/public/js/app/notebook.js index 3fbbd5a4..06938238 100644 --- a/public/js/app/notebook.js +++ b/public/js/app/notebook.js @@ -382,7 +382,8 @@ Notebook.curNotebookIsTrashOrAll = function() { Notebook.curNotebookIsTrash = function() { return Notebook.curNotebookId == Notebook.trashNotebookId; }; -Notebook.renderNotebooks = function(notebooks) { +// reload 是否再一次load +Notebook.renderNotebooks = function(notebooks, reload) { var self = this; if(!notebooks || typeof notebooks != "object" || notebooks.length < 0) { @@ -416,12 +417,17 @@ Notebook.renderNotebooks = function(notebooks) { Notebook.curNotebookId = notebooks[0].NotebookId; self.cacheAllNotebooks(notebooks); } - - // 渲染nav - Notebook.renderNav(); - - // 渲染第一个notebook作为当前 - Notebook.changeNotebookNavForNewNote(notebooks[0].NotebookId); + + if (!reload) { + // 渲染nav + Notebook.renderNav(); + + // 渲染第一个notebook作为当前 + Notebook.changeNotebookNavForNewNote(notebooks[0].NotebookId); + } + else { + console.log(' reload notebook ok'); + } } Notebook.cacheAllNotebooks = function(notebooks) { @@ -1111,27 +1117,43 @@ Notebook.fixSyncConflict = function(note, newNote) { */ }; +// 本地 -> 添加到服务器上的 +// 不用做任何操作 +Notebook.addChange = function(notebooks) { + return; +}; + +// 服务器adds/updates后, 一起渲染 +Notebook.reload = function() { + var me = this; + var curNotebookId = Notebook.curNotebookId; + NotebookService.getNotebooks(function(notebooks) { + me.renderNotebooks(notebooks, true); + + // 定位到某个笔记本下 + Notebook.expandNotebookTo(curNotebookId); + }); +}; + +// 弃用, 一起渲染 // notebooks // <- server 服务器端添加过来的 +// ? 如果是子先添加了, 再父添加呢? Notebook.addSync = function(notebooks) { var me = this; if(isEmpty(notebooks)) { return; } console.log('web add sync notebook'); - for(var i in notebooks) { + for(var i = 0; i < notebooks.length; ++i) { var notebook = notebooks[i]; Notebook.setCache(notebook); me.tree.addNodes(me.tree.getNodeByTId(notebook.ParentNotebookId), {Title: notebook.Title, NotebookId: notebook.NotebookId, IsNew: false}, // IsNew: false啊!!! true, true, false); } -} -// 本地 -> 添加到服务器上的 -// 不用做任何操作 -Notebook.addChange = function(notebooks) { - return; }; +// 弃用, 一起渲染 // 更新 // 不对移动做修改, 只修改标题 Notebook.updateSync = function(notebooks) { diff --git a/public/js/app/page.js b/public/js/app/page.js index 3f3034fc..33cc8663 100644 --- a/public/js/app/page.js +++ b/public/js/app/page.js @@ -1489,7 +1489,7 @@ function initPage(initedCallback) { // 标签 TagService.getTags(function(tags) { - Tag.nav.setTags(tags); + Tag.nav.setTags(tags); ok(); });