Skip to content

Commit

Permalink
refactor + debug log
Browse files Browse the repository at this point in the history
  • Loading branch information
Roman Kartsev committed Jan 8, 2018
1 parent 22d50d6 commit 9bff233
Show file tree
Hide file tree
Showing 2 changed files with 25 additions and 13 deletions.
5 changes: 3 additions & 2 deletions src/ns.update.js
Original file line number Diff line number Diff line change
Expand Up @@ -321,7 +321,8 @@
this.view._getUpdateTree(tree);
}

this.tree = tree;
this.updateTree = tree;

this.log('created render tree', tree);
this.stopTimer('collectViews');

Expand Down Expand Up @@ -368,7 +369,7 @@
this.switchTimer('triggerHideEvents', 'insertNodes');

if (!this.view.destroyed) {
this.view._updateHTML(node, {toplevel: true, tree: this.tree}, viewEvents);
this.view._updateHTML(node, { toplevel: true, updateTree: this.updateTree }, viewEvents);
}

this.switchTimer('insertNodes', 'triggerEvents');
Expand Down
33 changes: 22 additions & 11 deletions src/ns.view.js
Original file line number Diff line number Diff line change
Expand Up @@ -1197,6 +1197,9 @@
* Обновляем (если нужно) ноду блока.
* @param {HTMLElement} node
* @param {object} updateOptions
* @package {boolean} updateOptions.toplevel
* @package {boolean} [updateOptions.parent_added]
* @package {ns.View~UpdateTree} [updateOptions.updateTree]
* @param {object} events
* @private
*/
Expand All @@ -1212,8 +1215,6 @@
// "my-root-view2": {/* tree 2 */}
// }
var options_next;
// debugger;
var tree = updateOptions.tree ? updateOptions.tree.views[this.id] : null; // берём поддерево для текущего вида

if (updateOptions.toplevel) {
options_next = no.extend({}, updateOptions);
Expand All @@ -1229,9 +1230,6 @@
if ( viewWasInvalid ) {
// Ищем новую ноду блока.
viewNode = this._extractNode(node);
// if (!viewNode) {
// debugger;
// }
ns.View.assert(!!viewNode, 6, [this.id]);

// Обновляем весь блок.
Expand Down Expand Up @@ -1289,15 +1287,28 @@

// Рекурсивно идем вниз по дереву, если не находимся в async-режиме
if (!this.asyncState) {
// Вычисляем поддерево updateTree для текущего вида.
var updateTree = updateOptions.updateTree ? updateOptions.updateTree.views[this.id] : null;
var parentId = this.id;

this._apply(function(view) {
// debugger;
if (!tree || tree.views[view.id]) {
var nested_options_next = no.extend({}, options_next, {
tree: !tree ? updateOptions.tree : tree.views[view.id]
});
// вот тут проверить по поддереву
// Обновляем вложенный вид если
// - для текущего вида не указан updateTree
// - для текущего вида указан updateTree и в нём присутствует вложенный вид
if (!updateTree || updateTree.views[view.id]) {
// Для вложенного вида передаём либо весь updateOptions.updateTree,
// либо своё поддерево updateOptions.updateTree.
var nested_update_tree = !updateTree ? updateOptions.updateTree : updateTree.views[view.id];
var nested_options_next = no.extend({}, options_next, { updateTree: nested_update_tree });

view._updateHTML(viewNode, nested_options_next, events);
}

if (ns.DEBUG) {
if (updateTree && !updateTree.views[view.id]) {
ns.log.debug('[ns.View] skip updating HTML for ' + view.id + ' inside ' + parentId, updateTree);
}
}
});
}
};
Expand Down

0 comments on commit 9bff233

Please sign in to comment.