+ _.each @elements_items(), (item) =>\r
+ item.boosts(level) if item\r
+ \r
+ dig_elements: () ->\r
+ items = []\r
+ @_dig_elements(items, @attributes)\r
+ items\r
+ \r
+ _dig_elements: (items, attributes) ->\r
+ _.each attributes, (attribute, name) =>\r
+ a = @my_class().my_manifest().associations\r
+ if a.has_many[name]\r
+ _.each attribute, (attr) =>\r
+ items.push(attr)\r
+ Array.prototype.push.apply(items, attr.dig_elements())\r
+ if a.has_one[name]\r
+ items.push(attribute)\r
+ Array.prototype.push.apply(items, attribute.dig_elements())\r
+ \r
+ load_elements: (options) ->\r
+ @_load_elements(@dig_elements(), options)\r
+ \r
+ _load_elements: (items, options) ->\r
+ if _.isEmpty(items)\r
+ options.success.call(options.context, this)\r
+ return\r
+ item = items.shift()\r
+ item.fetch({\r
+ success: (model, response, opt) => \r
+ @_load_elements(items, options)\r
+ error: (item, response, opt) =>\r
+ options.fail.call(options.context, response, opt)\r
+ })\r
+ \r
+ decoded_attributes: () ->\r
+ attributes = {}\r
+ _.each @attributes, (attribute, name) =>\r
+ a = @my_class().my_manifest().associations\r
+ decoded = if a.has_many[name]\r
+ # has many association\r
+ model = a.has_many[name].model()\r
+ _.map attribute, (attr) =>\r
+ child = @cache_child(model, attr)\r
+ child.attributes = child.decoded_attributes()\r
+ child\r
+ else if a.has_one[name]\r
+ # has one association\r
+ model = a.has_one[name].model()\r
+ child = @cache_child(model, attribute)\r
+ child.attributes = child.decoded_attributes()\r
+ child\r
+ else\r
+ attribute\r
+ attributes[name] = decoded\r
+ attributes\r
+ \r
+ replaced_attributes: (options = {}) ->\r
+ attributes = {}\r
+ _.each @attributes, (attribute, name) =>\r
+ console.log name\r
+ console.log attribute\r
+ a = @my_class().my_manifest().associations\r
+ replaced = if a.has_many[name]\r
+ # has many association\r
+ _.map attribute, (decoded) =>\r
+ child = if options.hold\r
+ @replace_and_hold_element(decoded)\r
+ else\r
+ @replace_element(decoded)\r
+ console.log child\r
+ child.attributes = child.replaced_attributes(options)\r
+ child\r
+ else if a.has_one[name]\r
+ # has one association\r
+ child = if options.hold\r
+ @replace_and_hold_element(attribute)\r