From 4195f424d6a5d76a2a0eb5514baa46c18f3dceaf Mon Sep 17 00:00:00 2001 From: Artur Arseniev Date: Sat, 2 Jun 2018 16:03:17 +0200 Subject: [PATCH] Refactor DomComponents selection methods --- src/dom_components/index.js | 38 ++++++++++------------- src/dom_components/view/ComponentView.js | 7 ----- src/dom_components/view/ComponentsView.js | 3 +- src/editor/model/Editor.js | 3 +- 4 files changed, 19 insertions(+), 32 deletions(-) diff --git a/src/dom_components/index.js b/src/dom_components/index.js index cd2a505d1..7f3db0ef7 100644 --- a/src/dom_components/index.js +++ b/src/dom_components/index.js @@ -195,8 +195,8 @@ module.exports = () => { em.on('change:componentHovered', this.componentHovered, this); const selected = em.get('selected'); - em.listenTo(selected, 'add', this.selectAdded); - em.listenTo(selected, 'remove', this.selectRemoved); + em.listenTo(selected, 'add', this.selectAdd); + em.listenTo(selected, 'remove', this.selectRemove); } // Build wrapper @@ -515,18 +515,21 @@ module.exports = () => { return; }, - selectAdded(component) { + selectAdd(component) { console.log('ADDED', component); - const status = 'selected'; - component.set({ status }); + component && + component.set({ + status: 'selected' + }); }, - selectRemoved(component) { - console.log('Removed', component); - component.set({ - status: '', - state: '' - }); + selectRemove(component) { + console.log('REMOVED', component); + component && + component.set({ + status: '', + state: '' + }); }, /** @@ -535,17 +538,8 @@ module.exports = () => { */ componentChanged() { const em = c.em; - const model = em.get('selectedComponent'); - const previousModel = em.previous('selectedComponent'); - - // Deselect the previous component - previousModel && - previousModel.set({ - status: '', - state: '' - }); - - model && model.set('status', 'selected'); + this.selectRemove(em.previous('selectedComponent')); + this.selectAdd(em.get('selectedComponent')); }, /** diff --git a/src/dom_components/view/ComponentView.js b/src/dom_components/view/ComponentView.js index e3973c13a..54a58d731 100644 --- a/src/dom_components/view/ComponentView.js +++ b/src/dom_components/view/ComponentView.js @@ -24,7 +24,6 @@ module.exports = Backbone.View.extend({ this.classe = this.attr.class || []; const $el = this.$el; const classes = model.get('classes'); - //this.listenTo(model, 'destroy remove', this.remove); this.listenTo(model, 'change:style', this.updateStyle); this.listenTo(model, 'change:attributes', this.updateAttributes); this.listenTo(model, 'change:highlightable', this.updateHighlight); @@ -40,12 +39,6 @@ module.exports = Backbone.View.extend({ this.init(); }, - remove() { - Backbone.View.prototype.remove.apply(this); - const children = this.childrenView; - children && children.stopListening(); - }, - /** * Initialize callback */ diff --git a/src/dom_components/view/ComponentsView.js b/src/dom_components/view/ComponentsView.js index 2c7199e7a..f793fe873 100644 --- a/src/dom_components/view/ComponentsView.js +++ b/src/dom_components/view/ComponentsView.js @@ -12,9 +12,8 @@ module.exports = Backbone.View.extend({ }, removeChildren(removed) { - console.log('removed', removed); const view = removed.view; - view.prototype.remove.apply(view); + view.remove.apply(view); const children = view.childrenView; children && children.stopListening(); }, diff --git a/src/editor/model/Editor.js b/src/editor/model/Editor.js index 5d5056f86..b810d8295 100644 --- a/src/editor/model/Editor.js +++ b/src/editor/model/Editor.js @@ -243,8 +243,9 @@ module.exports = Backbone.Model.extend({ if (model && !model.get('selectable')) return; opts.forceChange && this.set('selectedComponent', ''); const selected = this.get('selected'); - selected.remove(selected.models); + selected.remove(selected.filter(sel => sel !== model)); this.set('selectedComponent', model, opts); + this.addSelected(model, opts); }, /**