Browse Source

Clean up components module

pull/261/head
Artur Arseniev 9 years ago
parent
commit
534f0f7ab6
  1. 2
      index.html
  2. 2
      src/dom_components/config/config.js
  3. 37
      src/dom_components/index.js
  4. 5
      src/dom_components/model/Components.js
  5. 1
      src/dom_components/view/ComponentView.js
  6. 6
      src/dom_components/view/ComponentsView.js
  7. 20
      src/domain_abstract/model/TypeableCollection.js
  8. 6
      src/editor/view/EditorView.js
  9. 4
      test/specs/code_manager/model/CodeModels.js
  10. 4
      test/specs/dom_components/model/Component.js
  11. 4
      test/specs/dom_components/view/ComponentV.js
  12. 4
      test/specs/dom_components/view/ComponentsView.js

2
index.html

@ -831,7 +831,7 @@
fromElement: true, fromElement: true,
clearOnRender: 0, clearOnRender: 0,
storageManager:{ storageManager: {
autoload: 1, autoload: 1,
storeComponents: 1, storeComponents: 1,
storeStyles: 1, storeStyles: 1,

2
src/dom_components/config/config.js

@ -7,8 +7,6 @@ module.exports = {
// Default wrapper configuration // Default wrapper configuration
wrapper: { wrapper: {
// Need this property for exports
wrapper: 1,
style: {margin: 0}, style: {margin: 0},
removable: false, removable: false,
copyable: false, copyable: false,

37
src/dom_components/index.js

@ -34,13 +34,12 @@
*/ */
module.exports = () => { module.exports = () => {
var c = {}, var c = {},
componentTypes = {},
defaults = require('./config/config'), defaults = require('./config/config'),
Component = require('./model/Component'), Component = require('./model/Component'),
ComponentView = require('./view/ComponentView'); ComponentView = require('./view/ComponentView');
var component, componentView; var component, componentView;
var defaultTypes = [ var componentTypes = [
{ {
id: 'cell', id: 'cell',
model: require('./model/ComponentTableCell'), model: require('./model/ComponentTableCell'),
@ -105,7 +104,7 @@ module.exports = () => {
return { return {
componentTypes: defaultTypes, componentTypes,
/** /**
* Name of the module * Name of the module
@ -166,27 +165,42 @@ module.exports = () => {
c.rte = em.get('rte') || ''; c.rte = em.get('rte') || '';
c.modal = em.get('Modal') || ''; c.modal = em.get('Modal') || '';
c.am = em.get('AssetManager') || ''; c.am = em.get('AssetManager') || '';
em.get('Parser').compTypes = defaultTypes; em.get('Parser').compTypes = componentTypes;
em.on('change:selectedComponent', this.componentChanged, this); em.on('change:selectedComponent', this.componentChanged, this);
} }
c.wrapper['custom-name'] = c.wrapperName; // Build wrapper
component = new Component(c.wrapper, { let components = c.components;
let wrapper = Object.assign({}, c.wrapper);
wrapper['custom-name'] = c.wrapperName;
wrapper.wrapper = 1;
// Components might be a wrapper
if (components && components.constructor === Object && components.wrapper) {
wrapper = Object.assign({}, components);
components = components.components || [];
wrapper.components = [];
// Have to put back the real object of components
if (em) {
em.config.components = components;
}
}
component = new Component(wrapper, {
sm: em, sm: em,
config: c, config: c,
defaultTypes,
componentTypes, componentTypes,
}); });
component.set({ attributes: {id: 'wrapper'}}); component.set({ attributes: {id: 'wrapper'}});
if(em && !em.config.loadCompsOnRender) { if(em && !em.config.loadCompsOnRender) {
component.get('components').add(c.components); component.get('components').add(components);
} }
componentView = new ComponentView({ componentView = new ComponentView({
model: component, model: component,
config: c, config: c,
defaultTypes,
componentTypes, componentTypes,
}); });
return this; return this;
@ -198,7 +212,6 @@ module.exports = () => {
*/ */
onLoad() { onLoad() {
if(c.stm && c.stm.isAutosave()){ if(c.stm && c.stm.isAutosave()){
//console.log('OnLoad', this.getWrapper().get('components'));
c.em.initUndoManager(); c.em.initUndoManager();
c.em.initChildrenComp(this.getWrapper()); c.em.initChildrenComp(this.getWrapper());
} }
@ -405,7 +418,7 @@ module.exports = () => {
compType.view = methods.view; compType.view = methods.view;
} else { } else {
methods.id = type; methods.id = type;
defaultTypes.unshift(methods); componentTypes.unshift(methods);
} }
}, },
@ -415,7 +428,7 @@ module.exports = () => {
* @private * @private
*/ */
getType(type) { getType(type) {
var df = defaultTypes; var df = componentTypes;
for (var it = 0; it < df.length; it++) { for (var it = 0; it < df.length; it++) {
var dfId = df[it].id; var dfId = df[it].id;

5
src/dom_components/model/Components.js

@ -21,13 +21,10 @@ module.exports = Backbone.Collection.extend({
if(opt && opt.config) if(opt && opt.config)
options.config = opt.config; options.config = opt.config;
if(opt && opt.defaultTypes)
options.defaultTypes = opt.defaultTypes;
if(opt && opt.componentTypes) if(opt && opt.componentTypes)
options.componentTypes = opt.componentTypes; options.componentTypes = opt.componentTypes;
var df = opt.defaultTypes; var df = opt.componentTypes;
for (var it = 0; it < df.length; it++) { for (var it = 0; it < df.length; it++) {
var dfId = df[it].id; var dfId = df[it].id;

1
src/dom_components/view/ComponentView.js

@ -302,7 +302,6 @@ module.exports = Backbone.View.extend({
var view = new ComponentsView({ var view = new ComponentsView({
collection: this.model.get('components'), collection: this.model.get('components'),
config: this.config, config: this.config,
defaultTypes: this.opts.defaultTypes,
componentTypes: this.opts.componentTypes, componentTypes: this.opts.componentTypes,
}); });

6
src/dom_components/view/ComponentsView.js

@ -44,8 +44,7 @@ module.exports = Backbone.View.extend({
viewObject = this.compView; viewObject = this.compView;
//console.log('Add to collection', model, 'Index',i); //console.log('Add to collection', model, 'Index',i);
var dt = this.opts.defaultTypes; var dt = this.opts.componentTypes;
var ct = this.opts.componentTypes;
var type = model.get('type'); var type = model.get('type');
@ -61,8 +60,7 @@ module.exports = Backbone.View.extend({
var view = new viewObject({ var view = new viewObject({
model, model,
config: this.config, config: this.config,
defaultTypes: dt, componentTypes: dt,
componentTypes: ct,
}); });
var rendered = view.render().el; var rendered = view.render().el;
if(view.model.get('type') == 'textnode') if(view.model.get('type') == 'textnode')

20
src/domain_abstract/model/Typeable.js → src/domain_abstract/model/TypeableCollection.js

@ -14,6 +14,26 @@ export default {
init && init(); init && init();
}, },
/**
* Recognize type by any value
* @param {mixed} value
* @return {Object} Found type
*/
recognizeType(value) {
const types = this.getTypes();
for (let i = 0; i < types.length; i++) {
const type = types[i];
let typeFound = type.isType(value);
typeFound = typeof typeFound == 'boolean' && typeFound ?
{type: type.id} : typeFound;
if (typeFound) {
return typeFound;
}
}
},
/** /**
* Returns the base type (last object in the stack) * Returns the base type (last object in the stack)
* @return {Object} * @return {Object}

6
src/editor/view/EditorView.js

@ -7,11 +7,11 @@ module.exports = Backbone.View.extend({
this.pn = this.model.get('Panels'); this.pn = this.model.get('Panels');
this.conf = this.model.config; this.conf = this.model.config;
this.className = this.conf.stylePrefix + 'editor'; this.className = this.conf.stylePrefix + 'editor';
this.model.on('loaded', function(){ this.model.on('loaded', () => {
this.pn.active(); this.pn.active();
this.model.runDefault(); this.model.runDefault();
this.model.trigger('load'); setTimeout(() => this.model.trigger('load'), 0);
}, this); });
}, },
render() { render() {

4
test/specs/code_manager/model/CodeModels.js

@ -14,7 +14,7 @@ module.exports = {
obj = new HtmlGenerator(); obj = new HtmlGenerator();
var dcomp = new DomComponents(); var dcomp = new DomComponents();
comp = new Component({}, { comp = new Component({}, {
defaultTypes: dcomp.componentTypes, componentTypes: dcomp.componentTypes,
}); });
}); });
@ -64,7 +64,7 @@ module.exports = {
obj = new CssGenerator(); obj = new CssGenerator();
var dcomp = new DomComponents(); var dcomp = new DomComponents();
comp = new Component({}, { comp = new Component({}, {
defaultTypes: dcomp.componentTypes, componentTypes: dcomp.componentTypes,
}); });
}); });

4
test/specs/dom_components/model/Component.js

@ -19,7 +19,7 @@ module.exports = {
obj = new Component(); obj = new Component();
dcomp = new DomComponents(); dcomp = new DomComponents();
compOpts = { compOpts = {
defaultTypes: dcomp.componentTypes, componentTypes: dcomp.componentTypes,
}; };
}); });
@ -254,7 +254,7 @@ module.exports = {
beforeEach(() => { beforeEach(() => {
dcomp = new DomComponents(); dcomp = new DomComponents();
compOpts = { compOpts = {
defaultTypes: dcomp.componentTypes, componentTypes: dcomp.componentTypes,
} }
}); });

4
test/specs/dom_components/view/ComponentV.js

@ -23,7 +23,7 @@ module.exports = {
beforeEach(() => { beforeEach(() => {
dcomp = new DomComponents(); dcomp = new DomComponents();
compOpts = { compOpts = {
defaultTypes: dcomp.componentTypes, componentTypes: dcomp.componentTypes,
}; };
model = new Component(); model = new Component();
view = new ComponentView({ view = new ComponentView({
@ -129,7 +129,7 @@ module.exports = {
}, compOpts); }, compOpts);
view = new ComponentView({ view = new ComponentView({
model, model,
defaultTypes: dcomp.componentTypes, componentTypes: dcomp.componentTypes,
}); });
expect(view.render().$el.html()).toEqual('<span data-highlightable="1"></span><div title="test" data-highlightable="1"></div>'); expect(view.render().$el.html()).toEqual('<span data-highlightable="1"></span><div title="test" data-highlightable="1"></div>');
}); });

4
test/specs/dom_components/view/ComponentsView.js

@ -21,12 +21,12 @@ module.exports = {
beforeEach(() => { beforeEach(() => {
dcomp = new DomComponents(); dcomp = new DomComponents();
compOpts = { compOpts = {
defaultTypes: dcomp.componentTypes, componentTypes: dcomp.componentTypes,
}; };
model = new Components([], compOpts); model = new Components([], compOpts);
view = new ComponentsView({ view = new ComponentsView({
collection: model, collection: model,
defaultTypes: dcomp.componentTypes, componentTypes: dcomp.componentTypes,
}); });
$fixture.empty().appendTo($fixtures); $fixture.empty().appendTo($fixtures);
$fixture.html(view.render().el); $fixture.html(view.render().el);

Loading…
Cancel
Save