From 5c5e4fee48eafab5ee6f4ce3a69ae7aec7be29c3 Mon Sep 17 00:00:00 2001 From: Artur Arseniev Date: Sun, 8 Dec 2019 20:39:29 +0100 Subject: [PATCH] Update layers view when component prop changes. Closes #2433 --- src/navigator/view/ItemView.js | 9 +++++++++ src/navigator/view/ItemsView.js | 4 +++- 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/src/navigator/view/ItemView.js b/src/navigator/view/ItemView.js index 58ca2572e..b7f2df54c 100644 --- a/src/navigator/view/ItemView.js +++ b/src/navigator/view/ItemView.js @@ -66,6 +66,7 @@ export default Backbone.View.extend({ this.ppfx = this.em.get('Config').stylePrefix; this.sorter = o.sorter || ''; this.pfx = this.config.stylePrefix; + this.parentView = o.parentView; const pfx = this.pfx; const ppfx = this.ppfx; const model = this.model; @@ -75,6 +76,7 @@ export default Backbone.View.extend({ this.listenTo(components, 'remove add reset', this.checkChildren); this.listenTo(model, 'change:status', this.updateStatus); this.listenTo(model, 'change:open', this.updateOpening); + this.listenTo(model, 'change:layerable', this.updateLayerable); this.listenTo(model, 'change:style:display', this.updateVisibility); this.className = `${pfx}layer ${pfx}layer__t-${type} no-select ${ppfx}two-color`; this.inputNameCls = `${ppfx}layer-name`; @@ -350,6 +352,12 @@ export default Backbone.View.extend({ this.render(); }, + updateLayerable() { + const { parentView } = this; + const toRerender = parentView || this; + toRerender.render(); + }, + render() { const { model, config, pfx, ppfx, opt } = this; const { isCountable } = opt; @@ -367,6 +375,7 @@ export default Backbone.View.extend({ config: this.config, sorter: this.sorter, opened: this.opt.opened, + parentView: this, parent: model, level }).render().$el; diff --git a/src/navigator/view/ItemsView.js b/src/navigator/view/ItemsView.js index dcb67a219..ab1821320 100644 --- a/src/navigator/view/ItemsView.js +++ b/src/navigator/view/ItemsView.js @@ -11,6 +11,7 @@ export default Backbone.View.extend({ this.ppfx = config.pStylePrefix || ''; this.pfx = config.stylePrefix || ''; this.parent = o.parent; + this.parentView = o.parentView; const pfx = this.pfx; const ppfx = this.ppfx; const parent = this.parent; @@ -72,13 +73,14 @@ export default Backbone.View.extend({ * @return Object Object created * */ addToCollection(model, fragmentEl, index) { - const level = this.level; + const { level, parentView } = this; var fragment = fragmentEl || null; var viewObject = ItemView; var view = new viewObject({ level, model, + parentView, config: this.config, sorter: this.sorter, isCountable: this.isCountable,