Browse Source

Apply avoidDefaults option to Selectors

pull/3165/head
Artur Arseniev 6 years ago
parent
commit
39f78b2a45
  1. 3
      src/dom_components/model/Component.js
  2. 35
      src/selector_manager/model/Selector.js

3
src/dom_components/model/Component.js

@ -1036,6 +1036,7 @@ const Component = Backbone.Model.extend(Styleable).extend(
delete obj.attributes.class;
delete obj.toolbar;
delete obj.traits;
delete obj.status;
if (this.em.getConfig('avoidDefaults')) {
this.getChangedProps(obj);
@ -1052,7 +1053,7 @@ const Component = Backbone.Model.extend(Styleable).extend(
const defaults = result(this, 'defaults');
forEach(defaults, (value, key) => {
if (['type', 'content'].indexOf(key) === -1 && obj[key] === value) {
if (['type'].indexOf(key) === -1 && obj[key] === value) {
delete obj[key];
}
});

35
src/selector_manager/model/Selector.js

@ -1,9 +1,11 @@
import Backbone from 'backbone';
import { result, forEach, keys } from 'underscore';
const TYPE_CLASS = 1;
const TYPE_ID = 2;
const { Model } = Backbone;
const Selector = Backbone.Model.extend(
const Selector = Model.extend(
{
idAttribute: 'name',
@ -43,6 +45,7 @@ const Selector = Backbone.Model.extend(
? escapeName(namePreEsc)
: Selector.escapeName(namePreEsc);
this.set('name', nameEsc);
this.em = config.em;
},
/**
@ -64,6 +67,36 @@ const Selector = Backbone.Model.extend(
}
return init + (escape ? escape(name) : name);
},
toJSON(opts = {}) {
const { em } = this;
let obj = Model.prototype.toJSON.call(this, [opts]);
const defaults = result(this, 'defaults');
if (em && em.getConfig('avoidDefaults')) {
forEach(defaults, (value, key) => {
if (obj[key] === value) {
delete obj[key];
}
});
if (obj.label === obj.name) {
delete obj.label;
}
const objLen = keys(obj).length;
if (objLen === 1 && obj.name) {
obj = obj.name;
}
if (objLen === 2 && obj.name && obj.type) {
obj = this.getFullName();
}
}
return obj;
}
},
{

Loading…
Cancel
Save