|
|
|
@ -28,13 +28,16 @@ define(['backbone', './Properties', './PropertyFactory'], |
|
|
|
/** |
|
|
|
* Extend properties |
|
|
|
* @param {Array<Object>} props Start properties |
|
|
|
* @param {Array<Object>} moProps Model props |
|
|
|
* @param {Boolean} ex Returns the same amount of passed model props |
|
|
|
* @return {Array<Object>} Final props |
|
|
|
* @private |
|
|
|
*/ |
|
|
|
extendProperties: function(props){ |
|
|
|
extendProperties: function(props, moProps, ex){ |
|
|
|
var pLen = props.length; |
|
|
|
var mProps = this.get('properties'); |
|
|
|
var mProps = moProps || this.get('properties'); |
|
|
|
var ext = this.get('extendBuilded'); |
|
|
|
var isolated = []; |
|
|
|
|
|
|
|
for (var i = 0, len = mProps.length; i < len; i++){ |
|
|
|
var mProp = mProps[i]; |
|
|
|
@ -43,17 +46,25 @@ define(['backbone', './Properties', './PropertyFactory'], |
|
|
|
for(var j = 0; j < pLen; j++){ |
|
|
|
var prop = props[j]; |
|
|
|
if(mProp.property == prop.property){ |
|
|
|
// Check for nested properties
|
|
|
|
var mPProps = mProp.properties; |
|
|
|
if(mPProps && mPProps.length){ |
|
|
|
mProp.properties = this.extendProperties(prop.properties, mPProps, 1); |
|
|
|
} |
|
|
|
props[j] = ext ? _.extend(prop, mProp) : mProp; |
|
|
|
isolated[j] = props[j]; |
|
|
|
found = 1; |
|
|
|
continue; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
if(!found) |
|
|
|
if(!found){ |
|
|
|
props.push(mProp); |
|
|
|
isolated.push(mProp); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
return props; |
|
|
|
return ex ? isolated : props; |
|
|
|
}, |
|
|
|
|
|
|
|
/** |
|
|
|
@ -78,4 +89,4 @@ define(['backbone', './Properties', './PropertyFactory'], |
|
|
|
}, |
|
|
|
|
|
|
|
}); |
|
|
|
}); |
|
|
|
}); |
|
|
|
|