From 6e18b217fb90f2f96a67bdaf28cc2ef91450e3a1 Mon Sep 17 00:00:00 2001 From: Artur Arseniev Date: Thu, 17 Aug 2017 15:16:52 +0200 Subject: [PATCH] Refactor Navigator and move there components status update --- index.html | 3 +- src/commands/view/OpenLayers.js | 4 +- src/commands/view/SelectComponent.js | 28 ----------- src/navigator/index.js | 69 +++++++++++++++++++--------- 4 files changed, 52 insertions(+), 52 deletions(-) diff --git a/index.html b/index.html index 40e079b61..36aa32a1b 100755 --- a/index.html +++ b/index.html @@ -1329,7 +1329,8 @@ }) editor.on('block:drag:stop', function(model) { - editor.select(model); + console.log(model); + model && editor.select(model); }); editor.render(); diff --git a/src/commands/view/OpenLayers.js b/src/commands/view/OpenLayers.js index e2d44c44e..dc4c58edf 100644 --- a/src/commands/view/OpenLayers.js +++ b/src/commands/view/OpenLayers.js @@ -3,7 +3,7 @@ var Layers = require('navigator'); module.exports = { run(em, sender) { - if(!this.$layers) { + if (!this.$layers) { var collection = em.DomComponents.getComponent().get('components'), config = em.getConfig(), panels = em.Panels, @@ -13,7 +13,7 @@ module.exports = { config.layers.pStylePrefix = config.stylePrefix; config.layers.em = em.editor; config.layers.opened = em.editor.get('opened'); - var layers = new Layers(collection, config.layers); + var layers = new Layers().init(collection, config.layers); this.$layers = layers.render(); // Check if panel exists otherwise crate it diff --git a/src/commands/view/SelectComponent.js b/src/commands/view/SelectComponent.js index cf25d9267..8b9ff90ab 100644 --- a/src/commands/view/SelectComponent.js +++ b/src/commands/view/SelectComponent.js @@ -304,38 +304,10 @@ module.exports = { * */ onSelect(e, el) { e.stopPropagation(); - //var md = this.editorModel.get('selectedComponent'); - //this.cleanPrevious(md); - //var $el = $(el); - //var nMd = $el.data('model'); var model = $(el).data('model'); if (model) { - /* - var em = this.em; - var mirror = nMd.get('mirror'); - nMd = mirror ? mirror : nMd; - - // Close all opened components inside Navigator - var opened = em.get('opened'); - - for (var cid in opened) { - var m = opened[cid]; - m.set('open', 0); - } - - var parent = nMd.collection ? nMd.collection.parent : null; - - while (parent) { - parent.set('open', 1); - opened[parent.cid] = parent; - parent = parent.collection ? parent.collection.parent : null; - } - */ - - //this.editorModel.set('selectedComponent', nMd); this.editor.select(model); - //nMd.set('status','selected'); this.showFixedElementOffset(el); this.hideElementOffset(); this.hideHighlighter(); diff --git a/src/navigator/index.js b/src/navigator/index.js index d81c5e4bc..549d34a1e 100644 --- a/src/navigator/index.js +++ b/src/navigator/index.js @@ -1,27 +1,54 @@ -function Navigator(collection, c) { - var config = c, - defaults = require('./config/config'), - ItemsView = require('./view/ItemsView'); - - // Set default options - for (var name in defaults) { - if (!(name in config)) - config[name] = defaults[name]; - } +module.exports = () => { + let itemsView; + let config = {}; + const defaults = require('./config/config'); + const ItemsView = require('./view/ItemsView'); + + return { + init(collection, opts) { + config = opts || config; + const em = config.em; + + // Set default options + for (var name in defaults) { + if (!(name in config)) + config[name] = defaults[name]; + } + + itemsView = new ItemsView({ + collection, + config, + opened: opts.opened || {} + }); + em && em.on('change:selectedComponent', this.componentChanged); + this.componentChanged(); + + return this; + }, + + /** + * Triggered when the selected component is changed + * @private + */ + componentChanged() { + const em = config.em; + const opened = em.get('opened'); + const model = em.get('selectedComponent'); + let parent = model && model.collection ? model.collection.parent : null; - var obj = { - collection, - config, - opened: c.opened || {} - }; + for (let cid in opened) { + opened[cid].set('open', 0); + } - this.ItemsView = new ItemsView(obj); -} + while (parent) { + parent.set('open', 1); + opened[parent.cid] = parent; + parent = parent.collection ? parent.collection.parent : null; + } + }, -Navigator.prototype = { render() { - return this.ItemsView.render().$el; + return itemsView.render().$el; }, + } }; - -module.exports = Navigator;