|
|
|
@ -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; |
|
|
|
} |
|
|
|
}, |
|
|
|
{ |
|
|
|
|