riojs 0.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (270) hide show
  1. data/LICENSE +20 -0
  2. data/README.rdoc +24 -0
  3. data/VERSION +1 -0
  4. data/bin/rio +5 -0
  5. data/generators/rio_app/USAGE +19 -0
  6. data/generators/rio_app/rio_app_generator.rb +40 -0
  7. data/generators/rio_app/templates/app.build +10 -0
  8. data/generators/rio_app/templates/app.css +0 -0
  9. data/generators/rio_app/templates/app.js +20 -0
  10. data/generators/rio_app/templates/app_view.html.erb +19 -0
  11. data/generators/rio_app/templates/fixture.js +4 -0
  12. data/generators/rio_app/templates/rio.html.erb +18 -0
  13. data/generators/rio_app/templates/rio_controller.rb +2 -0
  14. data/generators/rio_app/templates/spec.js +7 -0
  15. data/generators/rio_component/USAGE +13 -0
  16. data/generators/rio_component/rio_component_generator.rb +16 -0
  17. data/generators/rio_component/templates/component.css +0 -0
  18. data/generators/rio_component/templates/component.js +11 -0
  19. data/generators/rio_component/templates/fixture.js +3 -0
  20. data/generators/rio_component/templates/spec.js +6 -0
  21. data/generators/rio_model/USAGE +12 -0
  22. data/generators/rio_model/rio_model_generator.rb +21 -0
  23. data/generators/rio_model/templates/fixture.js +3 -0
  24. data/generators/rio_model/templates/model.js +9 -0
  25. data/generators/rio_model/templates/spec.js +6 -0
  26. data/generators/rio_page/USAGE +14 -0
  27. data/generators/rio_page/rio_page_generator.rb +16 -0
  28. data/generators/rio_page/templates/fixture.js +3 -0
  29. data/generators/rio_page/templates/page.css +12 -0
  30. data/generators/rio_page/templates/page.js +12 -0
  31. data/generators/rio_page/templates/page.jst +64 -0
  32. data/generators/rio_page/templates/spec.js +6 -0
  33. data/generators/rio_resource/USAGE +20 -0
  34. data/generators/rio_resource/rio_resource_generator.rb +10 -0
  35. data/generators/rio_resource/templates/controller.rb +3 -0
  36. data/init.rb +4 -0
  37. data/install/config/juggernaut_hosts.yml +18 -0
  38. data/install/lib/tasks/rio.rake +1 -0
  39. data/install/script/rio_server +37 -0
  40. data/lib/rio/autospec.rb +86 -0
  41. data/lib/rio/install.rb +90 -0
  42. data/lib/rio/juggernaut.rb +212 -0
  43. data/lib/rio/path.rb +3 -0
  44. data/lib/rio/rio_compressor.rb +219 -0
  45. data/lib/rio/rio_file_controller.rb +16 -0
  46. data/lib/rio/rio_on_rails.rb +586 -0
  47. data/lib/rio/rio_proxy_controller.rb +60 -0
  48. data/lib/rio/rio_push_controller.rb +48 -0
  49. data/lib/rio/rio_routes.rb +24 -0
  50. data/lib/rio/rio_spec_controller.rb +70 -0
  51. data/lib/riojs.rb +14 -0
  52. data/lib/tasks/rio.rb +63 -0
  53. data/public/images/background-chiffon.png +0 -0
  54. data/public/images/button-gradient-overlay-down.png +0 -0
  55. data/public/images/button-gradient-overlay.png +0 -0
  56. data/public/images/icons/add.png +0 -0
  57. data/public/images/icons/error-big.png +0 -0
  58. data/public/images/icons/warning-big.png +0 -0
  59. data/public/images/rio-logo-big.png +0 -0
  60. data/public/images/rio-logo.png +0 -0
  61. data/public/images/splitter-handle-horizontal.png +0 -0
  62. data/public/images/splitter-handle-vertical.png +0 -0
  63. data/public/images/tab-bar-gradient-overlay.png +0 -0
  64. data/public/images/title-gradient-overlay.png +0 -0
  65. data/public/images/trash.gif +0 -0
  66. data/public/javascripts/components/accordion.js +144 -0
  67. data/public/javascripts/components/alert_box.js +59 -0
  68. data/public/javascripts/components/base.js +47 -0
  69. data/public/javascripts/components/box.js +63 -0
  70. data/public/javascripts/components/button.js +98 -0
  71. data/public/javascripts/components/checkbox.js +44 -0
  72. data/public/javascripts/components/container.js +265 -0
  73. data/public/javascripts/components/grid_view.js +107 -0
  74. data/public/javascripts/components/image.js +19 -0
  75. data/public/javascripts/components/input.js +171 -0
  76. data/public/javascripts/components/label.js +15 -0
  77. data/public/javascripts/components/lightbox.js +160 -0
  78. data/public/javascripts/components/link.js +43 -0
  79. data/public/javascripts/components/list_item.js +44 -0
  80. data/public/javascripts/components/list_view.js +192 -0
  81. data/public/javascripts/components/marquee.js +131 -0
  82. data/public/javascripts/components/menu.js +89 -0
  83. data/public/javascripts/components/notification.js +75 -0
  84. data/public/javascripts/components/overlay.js +134 -0
  85. data/public/javascripts/components/panel.js +146 -0
  86. data/public/javascripts/components/radio.js +46 -0
  87. data/public/javascripts/components/splitter.js +65 -0
  88. data/public/javascripts/components/tab_bar.js +64 -0
  89. data/public/javascripts/components/tab_panel.js +57 -0
  90. data/public/javascripts/components/textarea.js +223 -0
  91. data/public/javascripts/components/toggle_button.js +22 -0
  92. data/public/javascripts/components/tooltip.js +80 -0
  93. data/public/javascripts/lib/application.js +482 -0
  94. data/public/javascripts/lib/attr.js +760 -0
  95. data/public/javascripts/lib/benchmark.js +235 -0
  96. data/public/javascripts/lib/blank.html +39 -0
  97. data/public/javascripts/lib/boot.js +300 -0
  98. data/public/javascripts/lib/clipboard.js +96 -0
  99. data/public/javascripts/lib/collection_entity.js +46 -0
  100. data/public/javascripts/lib/component.js +129 -0
  101. data/public/javascripts/lib/console.js +75 -0
  102. data/public/javascripts/lib/console/apps/console.build +43 -0
  103. data/public/javascripts/lib/console/apps/console.js +28 -0
  104. data/public/javascripts/lib/console/blank.html +39 -0
  105. data/public/javascripts/lib/console/components/benchmark.js +196 -0
  106. data/public/javascripts/lib/console/components/console.js +352 -0
  107. data/public/javascripts/lib/console/components/dependencies_list.js +17 -0
  108. data/public/javascripts/lib/console/components/docs.js +66 -0
  109. data/public/javascripts/lib/console/components/playground.js +30 -0
  110. data/public/javascripts/lib/console/console.html +27 -0
  111. data/public/javascripts/lib/console/console_commands.js +287 -0
  112. data/public/javascripts/lib/console/console_commands.js.rej +21 -0
  113. data/public/javascripts/lib/console/console_mixin.js +22 -0
  114. data/public/javascripts/lib/console/docs/files.html +579 -0
  115. data/public/javascripts/lib/console/docs/index.html +323 -0
  116. data/public/javascripts/lib/console/docs/symbols/Object.html +291 -0
  117. data/public/javascripts/lib/console/docs/symbols/_global_.html +413 -0
  118. data/public/javascripts/lib/console/docs/symbols/rio.AIM.html +490 -0
  119. data/public/javascripts/lib/console/docs/symbols/rio.Application.html +841 -0
  120. data/public/javascripts/lib/console/docs/symbols/rio.Attr.html +1075 -0
  121. data/public/javascripts/lib/console/docs/symbols/rio.Binding.html +272 -0
  122. data/public/javascripts/lib/console/docs/symbols/rio.Component.html +419 -0
  123. data/public/javascripts/lib/console/docs/symbols/rio.Cookie.html +543 -0
  124. data/public/javascripts/lib/console/docs/symbols/rio.DelayedTask#initialize.html +270 -0
  125. data/public/javascripts/lib/console/docs/symbols/rio.DelayedTask.html +391 -0
  126. data/public/javascripts/lib/console/docs/symbols/rio.JsTemplate.html +271 -0
  127. data/public/javascripts/lib/console/docs/symbols/rio.Juggernaut.html +329 -0
  128. data/public/javascripts/lib/console/docs/symbols/rio.Model.html +822 -0
  129. data/public/javascripts/lib/console/docs/symbols/rio.Page.html +383 -0
  130. data/public/javascripts/lib/console/docs/symbols/rio.Template.html +328 -0
  131. data/public/javascripts/lib/console/docs/symbols/rio.Utils.html +617 -0
  132. data/public/javascripts/lib/console/docs/symbols/rio.html +506 -0
  133. data/public/javascripts/lib/console/docs/symbols/src/public_javascripts_components_base.js.html +54 -0
  134. data/public/javascripts/lib/console/docs/symbols/src/public_javascripts_lib_application.js.html +490 -0
  135. data/public/javascripts/lib/console/docs/symbols/src/public_javascripts_lib_attr.js.html +768 -0
  136. data/public/javascripts/lib/console/docs/symbols/src/public_javascripts_lib_boot.js.html +308 -0
  137. data/public/javascripts/lib/console/docs/symbols/src/public_javascripts_lib_clipboard.js.html +103 -0
  138. data/public/javascripts/lib/console/docs/symbols/src/public_javascripts_lib_collection_entity.js.html +53 -0
  139. data/public/javascripts/lib/console/docs/symbols/src/public_javascripts_lib_component.js.html +137 -0
  140. data/public/javascripts/lib/console/docs/symbols/src/public_javascripts_lib_cookie.js.html +81 -0
  141. data/public/javascripts/lib/console/docs/symbols/src/public_javascripts_lib_delayed_task.js.html +68 -0
  142. data/public/javascripts/lib/console/docs/symbols/src/public_javascripts_lib_file.js.html +80 -0
  143. data/public/javascripts/lib/console/docs/symbols/src/public_javascripts_lib_flash_detect.js.html +129 -0
  144. data/public/javascripts/lib/console/docs/symbols/src/public_javascripts_lib_form.js.html +95 -0
  145. data/public/javascripts/lib/console/docs/symbols/src/public_javascripts_lib_id.js.html +50 -0
  146. data/public/javascripts/lib/console/docs/symbols/src/public_javascripts_lib_inflector.js.html +167 -0
  147. data/public/javascripts/lib/console/docs/symbols/src/public_javascripts_lib_js_template.js.html +283 -0
  148. data/public/javascripts/lib/console/docs/symbols/src/public_javascripts_lib_juggernaut.js.html +303 -0
  149. data/public/javascripts/lib/console/docs/symbols/src/public_javascripts_lib_key_map.js.html +68 -0
  150. data/public/javascripts/lib/console/docs/symbols/src/public_javascripts_lib_layout_manager.js.html +175 -0
  151. data/public/javascripts/lib/console/docs/symbols/src/public_javascripts_lib_log.js.html +17 -0
  152. data/public/javascripts/lib/console/docs/symbols/src/public_javascripts_lib_model.js.html +1074 -0
  153. data/public/javascripts/lib/console/docs/symbols/src/public_javascripts_lib_page.js.html +246 -0
  154. data/public/javascripts/lib/console/docs/symbols/src/public_javascripts_lib_parameters.js.html +66 -0
  155. data/public/javascripts/lib/console/docs/symbols/src/public_javascripts_lib_protohack.js.html +305 -0
  156. data/public/javascripts/lib/console/docs/symbols/src/public_javascripts_lib_push.js.html +12 -0
  157. data/public/javascripts/lib/console/docs/symbols/src/public_javascripts_lib_rsh.js.html +659 -0
  158. data/public/javascripts/lib/console/docs/symbols/src/public_javascripts_lib_swfobject.js.html +12 -0
  159. data/public/javascripts/lib/console/docs/symbols/src/public_javascripts_lib_tag.js.html +60 -0
  160. data/public/javascripts/lib/console/docs/symbols/src/public_javascripts_lib_template.js.html +64 -0
  161. data/public/javascripts/lib/console/docs/symbols/src/public_javascripts_lib_theme.js.html +105 -0
  162. data/public/javascripts/lib/console/docs/symbols/src/public_javascripts_lib_undo.js.html +142 -0
  163. data/public/javascripts/lib/console/docs/symbols/src/public_javascripts_lib_utils.js.html +87 -0
  164. data/public/javascripts/lib/console/docs/symbols/src/public_javascripts_lib_yaml.js.html +88 -0
  165. data/public/javascripts/lib/console/file-small.png +0 -0
  166. data/public/javascripts/lib/console/green-circle.png +0 -0
  167. data/public/javascripts/lib/console/loading.gif +0 -0
  168. data/public/javascripts/lib/console/pages/console_page.js +149 -0
  169. data/public/javascripts/lib/console/pages/console_page.jst +27 -0
  170. data/public/javascripts/lib/console/red-circle.png +0 -0
  171. data/public/javascripts/lib/cookie.js +74 -0
  172. data/public/javascripts/lib/delayed_task.js +61 -0
  173. data/public/javascripts/lib/dependencies.js +76 -0
  174. data/public/javascripts/lib/environment.js +30 -0
  175. data/public/javascripts/lib/event.simulate.js +137 -0
  176. data/public/javascripts/lib/expressinstall.swf +0 -0
  177. data/public/javascripts/lib/file.js +72 -0
  178. data/public/javascripts/lib/flash_detect.js +122 -0
  179. data/public/javascripts/lib/flashembed.min.js +16 -0
  180. data/public/javascripts/lib/form.js +88 -0
  181. data/public/javascripts/lib/id.js +43 -0
  182. data/public/javascripts/lib/inflector.js +160 -0
  183. data/public/javascripts/lib/instrumenter.js +106 -0
  184. data/public/javascripts/lib/js_template.js +275 -0
  185. data/public/javascripts/lib/jslint.js +4950 -0
  186. data/public/javascripts/lib/juggernaut.js +295 -0
  187. data/public/javascripts/lib/juggernaut.swf +0 -0
  188. data/public/javascripts/lib/key_map.js +60 -0
  189. data/public/javascripts/lib/layout_manager.js +167 -0
  190. data/public/javascripts/lib/model.js +1067 -0
  191. data/public/javascripts/lib/page.js +238 -0
  192. data/public/javascripts/lib/parameters.js +59 -0
  193. data/public/javascripts/lib/png_fix.js +75 -0
  194. data/public/javascripts/lib/protohack.js +297 -0
  195. data/public/javascripts/lib/push.js +5 -0
  196. data/public/javascripts/lib/rio.build +28 -0
  197. data/public/javascripts/lib/rio_development.build +5 -0
  198. data/public/javascripts/lib/rio_lint.js +66 -0
  199. data/public/javascripts/lib/rsh.js +651 -0
  200. data/public/javascripts/lib/spec.js +545 -0
  201. data/public/javascripts/lib/spec_runner.js +242 -0
  202. data/public/javascripts/lib/swfobject.js +5 -0
  203. data/public/javascripts/lib/tag.js +52 -0
  204. data/public/javascripts/lib/undo.js +134 -0
  205. data/public/javascripts/lib/utils.js +80 -0
  206. data/public/javascripts/lib/yaml.js +80 -0
  207. data/public/javascripts/pages/playground_page.js +15 -0
  208. data/public/javascripts/prototype/builder.js +146 -0
  209. data/public/javascripts/prototype/controls.js +1004 -0
  210. data/public/javascripts/prototype/dragdrop.js +1030 -0
  211. data/public/javascripts/prototype/effects.js +1137 -0
  212. data/public/javascripts/prototype/prototype.js +4320 -0
  213. data/public/javascripts/prototype/slider.js +283 -0
  214. data/public/javascripts/prototype/sound.js +67 -0
  215. data/public/javascripts/specs/components/box_spec.js +6 -0
  216. data/public/javascripts/specs/components/checkbox_spec.js +26 -0
  217. data/public/javascripts/specs/components/container_spec.js +6 -0
  218. data/public/javascripts/specs/components/input_spec.js +71 -0
  219. data/public/javascripts/specs/components/panel_spec.js +6 -0
  220. data/public/javascripts/specs/components/radio_spec.js +40 -0
  221. data/public/javascripts/specs/fixtures/components/box.js +3 -0
  222. data/public/javascripts/specs/fixtures/components/checkbox.js +9 -0
  223. data/public/javascripts/specs/fixtures/components/container.js +3 -0
  224. data/public/javascripts/specs/fixtures/components/input.js +12 -0
  225. data/public/javascripts/specs/fixtures/components/menu.js +19 -0
  226. data/public/javascripts/specs/fixtures/components/menu_item.js +18 -0
  227. data/public/javascripts/specs/fixtures/components/radio.js +11 -0
  228. data/public/javascripts/specs/lib/application_spec.js +281 -0
  229. data/public/javascripts/specs/lib/attr_spec.js +1514 -0
  230. data/public/javascripts/specs/lib/benchmark_spec.js +361 -0
  231. data/public/javascripts/specs/lib/collection_entity_spec.js +131 -0
  232. data/public/javascripts/specs/lib/component_spec.js +86 -0
  233. data/public/javascripts/specs/lib/form_spec.js +171 -0
  234. data/public/javascripts/specs/lib/id_spec.js +21 -0
  235. data/public/javascripts/specs/lib/instrumenter_spec.js +5 -0
  236. data/public/javascripts/specs/lib/js_template_spec.js +131 -0
  237. data/public/javascripts/specs/lib/key_map_spec.js +227 -0
  238. data/public/javascripts/specs/lib/model_spec.js +2268 -0
  239. data/public/javascripts/specs/lib/parameters_spec.js +94 -0
  240. data/public/javascripts/specs/lib/spec_spec.js +943 -0
  241. data/public/javascripts/specs/lib/undo_spec.js +105 -0
  242. data/public/javascripts/specs/lib/yaml_spec.js +127 -0
  243. data/public/sounds/basso.wav +0 -0
  244. data/public/sounds/purr.wav +0 -0
  245. data/public/stylesheets/components/accordion.css +24 -0
  246. data/public/stylesheets/components/alert_box.css +35 -0
  247. data/public/stylesheets/components/box.css +0 -0
  248. data/public/stylesheets/components/button.css +39 -0
  249. data/public/stylesheets/components/checkbox.css +9 -0
  250. data/public/stylesheets/components/container.css +3 -0
  251. data/public/stylesheets/components/grid_view.css +52 -0
  252. data/public/stylesheets/components/input.css +10 -0
  253. data/public/stylesheets/components/label.css +3 -0
  254. data/public/stylesheets/components/lightbox.css +31 -0
  255. data/public/stylesheets/components/link.css +4 -0
  256. data/public/stylesheets/components/list_view.css +23 -0
  257. data/public/stylesheets/components/marquee.css +29 -0
  258. data/public/stylesheets/components/menu.css +34 -0
  259. data/public/stylesheets/components/notification.css +52 -0
  260. data/public/stylesheets/components/overlay.css +8 -0
  261. data/public/stylesheets/components/panel.css +36 -0
  262. data/public/stylesheets/components/radio.css +9 -0
  263. data/public/stylesheets/components/splitter.css +35 -0
  264. data/public/stylesheets/components/tab_bar.css +59 -0
  265. data/public/stylesheets/components/tab_panel.css +15 -0
  266. data/public/stylesheets/components/textarea.css +11 -0
  267. data/public/stylesheets/components/tooltip.css +10 -0
  268. data/public/stylesheets/console.css +151 -0
  269. data/public/stylesheets/css_reset.css +55 -0
  270. metadata +343 -0
@@ -0,0 +1,17 @@
1
+ <html><head><meta http-equiv="content-type" content="text/html; charset=utf-8"> <style>
2
+ .KEYW {color: #933;}
3
+ .COMM {color: #bbb; font-style: italic;}
4
+ .NUMB {color: #393;}
5
+ .STRN {color: #393;}
6
+ .REGX {color: #339;}
7
+ .line {border-right: 1px dotted #666; color: #666; font-style: normal;}
8
+ </style></head><body><pre><span class='line'> 1</span> <span class="NAME">rio.log</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">message</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
9
+ <span class='line'> 2</span> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">rio.logWindow</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NAME">undefined</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
10
+ <span class='line'> 3</span> </span><span class="NAME">rio.logWindow</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">window.open</span><span class="PUNC">(</span><span class="STRN">"about:blank"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"log"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"width=500,height=300,status=yes,toolbar=no,menubar=no,location=no"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
11
+ <span class='line'> 4</span> </span><span class="NAME">rio.logWindow.document.write</span><span class="PUNC">(</span><span class="STRN">"&lt;div id=\"logWindow\">&lt;/div>"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
12
+ <span class='line'> 5</span> </span><span class="NAME">rio.logWindow.document.close</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
13
+ <span class='line'> 6</span> </span><span class="PUNC">}</span><span class="WHIT">
14
+ <span class='line'> 7</span> </span><span class="NAME">rio.logWindow.document.getElementById</span><span class="PUNC">(</span><span class="STRN">'logWindow'</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">innerHTML</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">message</span><span class="PUNC">;</span><span class="WHIT">
15
+ <span class='line'> 8</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
16
+ <span class='line'> 9</span>
17
+ <span class='line'> 10</span> </span></pre></body></html>
@@ -0,0 +1,1074 @@
1
+ <html><head><meta http-equiv="content-type" content="text/html; charset=utf-8"> <style>
2
+ .KEYW {color: #933;}
3
+ .COMM {color: #bbb; font-style: italic;}
4
+ .NUMB {color: #393;}
5
+ .STRN {color: #393;}
6
+ .REGX {color: #339;}
7
+ .line {border-right: 1px dotted #666; color: #666; font-style: normal;}
8
+ </style></head><body><pre><span class='line'> 1</span> <span class="COMM">/**
9
+ <span class='line'> 2</span> @class
10
+ <span class='line'> 3</span> @extends rio.Attr
11
+ <span class='line'> 4</span>
12
+ <span class='line'> 5</span> Model is used to create model classes in a rio application. It provides ActiveResource style synchronization with
13
+ <span class='line'> 6</span> a rest-based resource and automated client-server bindings with a push server.
14
+ <span class='line'> 7</span>
15
+ <span class='line'> 8</span> @author Jason Tillery
16
+ <span class='line'> 9</span> @copyright 2008-2009 Thinklink LLC
17
+ <span class='line'> 10</span> */</span><span class="WHIT">
18
+ <span class='line'> 11</span> </span><span class="NAME">rio.Model</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
19
+ <span class='line'> 12</span> </span><span class="NAME">create</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
20
+ <span class='line'> 13</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">args</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">$A</span><span class="PUNC">(</span><span class="NAME">arguments</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
21
+ <span class='line'> 14</span> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">args.length</span><span class="WHIT"> </span><span class="PUNC">></span><span class="WHIT"> </span><span class="NUMB">0</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="NAME">args.last</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">!=</span><span class="WHIT"> </span><span class="NAME">undefined</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="PUNC">!</span><span class="NAME">args.last</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">ATTR</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
22
+ <span class='line'> 15</span> </span><span class="NAME">args</span><span class="PUNC">[</span><span class="NAME">args.size</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">-</span><span class="WHIT"> </span><span class="NUMB">1</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">Object.extend</span><span class="PUNC">(</span><span class="PUNC">{</span><span class="WHIT"> </span><span class="NAME">noExtend</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">args.last</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
23
+ <span class='line'> 16</span> </span><span class="PUNC">}</span><span class="WHIT">
24
+ <span class='line'> 17</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">model</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">rio.Attr.create.apply</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">args</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
25
+ <span class='line'> 18</span> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">model._fields.id</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NAME">undefined</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="NAME">model.prototype.setId</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NAME">undefined</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
26
+ <span class='line'> 19</span> </span><span class="NAME">model.attrAccessor</span><span class="PUNC">(</span><span class="STRN">"id"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
27
+ <span class='line'> 20</span> </span><span class="PUNC">}</span><span class="WHIT">
28
+ <span class='line'> 21</span> </span><span class="NAME">model.attrEvent</span><span class="PUNC">(</span><span class="STRN">"destroy"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
29
+ <span class='line'> 22</span> </span><span class="NAME">Object.extend</span><span class="PUNC">(</span><span class="NAME">model</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
30
+ <span class='line'> 23</span> </span><span class="NAME">resource</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">url</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
31
+ <span class='line'> 24</span> </span><span class="NAME">model.addMethods</span><span class="PUNC">(</span><span class="PUNC">{</span><span class="WHIT">
32
+ <span class='line'> 25</span> </span><span class="NAME">isNew</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
33
+ <span class='line'> 26</span> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">this.getId</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NAME">undefined</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.getId</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">temporary</span><span class="WHIT"> </span><span class="PUNC">!=</span><span class="WHIT"> </span><span class="NAME">undefined</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="NAME">this.getId</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">temporary</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
34
+ <span class='line'> 27</span> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
35
+ <span class='line'> 28</span>
36
+ <span class='line'> 29</span> </span><span class="NAME">url</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
37
+ <span class='line'> 30</span> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">model.url</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">"/"</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">this.getId</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
38
+ <span class='line'> 31</span> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
39
+ <span class='line'> 32</span>
40
+ <span class='line'> 33</span> </span><span class="NAME">save</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">options</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
41
+ <span class='line'> 34</span> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.__destroying</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT"> </span><span class="KEYW">return</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
42
+ <span class='line'> 35</span>
43
+ <span class='line'> 36</span> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.valid</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="PUNC">!</span><span class="NAME">this.valid</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT"> </span><span class="KEYW">return</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
44
+ <span class='line'> 37</span> </span><span class="COMM">// var idField = Object.keys(model._fields).detect(function(field) {</span><span class="WHIT">
45
+ <span class='line'> 38</span> </span><span class="COMM">// var val = this["_" + field];</span><span class="WHIT">
46
+ <span class='line'> 39</span> </span><span class="COMM">// return field != "id" && val && val.temporary && val.temporary();</span><span class="WHIT">
47
+ <span class='line'> 40</span> </span><span class="COMM">// }.bind(this));</span><span class="WHIT">
48
+ <span class='line'> 41</span> </span><span class="COMM">// if (idField) {</span><span class="WHIT">
49
+ <span class='line'> 42</span> </span><span class="COMM">// this["_" + idField].doAfterReification(this.save.curry(options).bind(this));</span><span class="WHIT">
50
+ <span class='line'> 43</span> </span><span class="COMM">// return;</span><span class="WHIT">
51
+ <span class='line'> 44</span> </span><span class="COMM">// }</span><span class="WHIT">
52
+ <span class='line'> 45</span>
53
+ <span class='line'> 46</span> </span><span class="COMM">// if (this._creating) {</span><span class="WHIT">
54
+ <span class='line'> 47</span> </span><span class="COMM">// if (!this._pendingUpdates) { this._pendingUpdates = []; }</span><span class="WHIT">
55
+ <span class='line'> 48</span> </span><span class="COMM">// this._pendingUpdates.push(this.save.curry(options).bind(this));</span><span class="WHIT">
56
+ <span class='line'> 49</span> </span><span class="COMM">// return;</span><span class="WHIT">
57
+ <span class='line'> 50</span> </span><span class="COMM">// }</span><span class="WHIT">
58
+ <span class='line'> 51</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">firstTimeCreating</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">!</span><span class="NAME">this._creating</span><span class="PUNC">;</span><span class="WHIT">
59
+ <span class='line'> 52</span> </span><span class="NAME">this._creating</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">;</span><span class="WHIT">
60
+ <span class='line'> 53</span> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="NAME">this.isNew</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="NAME">this.beforeCreate</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="NAME">firstTimeCreating</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT"> </span><span class="NAME">this.beforeCreate</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
61
+ <span class='line'> 54</span>
62
+ <span class='line'> 55</span> </span><span class="NAME">model.addToTransaction</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">options</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
63
+ <span class='line'> 56</span> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
64
+ <span class='line'> 57</span>
65
+ <span class='line'> 58</span> </span><span class="NAME">destroy</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">options</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
66
+ <span class='line'> 59</span> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="NAME">this.__destroying</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="KEYW">return</span><span class="PUNC">;</span><span class="PUNC">}</span><span class="WHIT">
67
+ <span class='line'> 60</span>
68
+ <span class='line'> 61</span> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.beforeDestroy</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT"> </span><span class="NAME">this.beforeDestroy</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
69
+ <span class='line'> 62</span>
70
+ <span class='line'> 63</span> </span><span class="NAME">this.__destroying</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">;</span><span class="WHIT">
71
+ <span class='line'> 64</span>
72
+ <span class='line'> 65</span> </span><span class="NAME">model.addToTransaction</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">Object.extend</span><span class="PUNC">(</span><span class="PUNC">{</span><span class="NAME">destroy</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">options</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
73
+ <span class='line'> 66</span> </span><span class="NAME">this.removeFromCaches</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
74
+ <span class='line'> 67</span>
75
+ <span class='line'> 68</span> </span><span class="NAME">this.fire</span><span class="PUNC">(</span><span class="STRN">"destroy"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
76
+ <span class='line'> 69</span> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
77
+ <span class='line'> 70</span>
78
+ <span class='line'> 71</span> </span><span class="NAME">parameters</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
79
+ <span class='line'> 72</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">modelKey</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">model.url</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">match</span><span class="PUNC">(</span><span class="REGX">/^\/?(.*)$/</span><span class="PUNC">)</span><span class="PUNC">[</span><span class="NUMB">1</span><span class="PUNC">]</span><span class="PUNC">.</span><span class="NAME">singularize</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
80
+ <span class='line'> 73</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">parameters</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
81
+ <span class='line'> 74</span>
82
+ <span class='line'> 75</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">persistentFieldNames</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">model.persistentFieldNames</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
83
+ <span class='line'> 76</span> </span><span class="KEYW">for</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">i</span><span class="PUNC">=</span><span class="NAME">persistentFieldNames.length</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">i</span><span class="PUNC">--</span><span class="PUNC">;</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
84
+ <span class='line'> 77</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">name</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">persistentFieldNames</span><span class="PUNC">[</span><span class="NAME">i</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
85
+ <span class='line'> 78</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">currentState</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">this</span><span class="PUNC">[</span><span class="STRN">"_"</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">name</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
86
+ <span class='line'> 79</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">lastState</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this._lastSavedState</span><span class="WHIT"> </span><span class="PUNC">?</span><span class="WHIT"> </span><span class="NAME">this._lastSavedState</span><span class="PUNC">[</span><span class="NAME">name</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">undefined</span><span class="PUNC">;</span><span class="WHIT">
87
+ <span class='line'> 80</span>
88
+ <span class='line'> 81</span> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">currentState</span><span class="WHIT"> </span><span class="PUNC">!=</span><span class="WHIT"> </span><span class="NAME">lastState</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
89
+ <span class='line'> 82</span> </span><span class="NAME">parameters</span><span class="PUNC">[</span><span class="NAME">modelKey</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">"["</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">name.underscore</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">"]"</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">currentState</span><span class="PUNC">;</span><span class="WHIT">
90
+ <span class='line'> 83</span> </span><span class="PUNC">}</span><span class="WHIT">
91
+ <span class='line'> 84</span> </span><span class="PUNC">}</span><span class="WHIT">
92
+ <span class='line'> 85</span> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">parameters</span><span class="PUNC">;</span><span class="WHIT">
93
+ <span class='line'> 86</span> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
94
+ <span class='line'> 87</span>
95
+ <span class='line'> 88</span> </span><span class="NAME">afterUpdateField</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
96
+ <span class='line'> 89</span> </span><span class="NAME">model.updateInCollectionEntites</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
97
+ <span class='line'> 90</span> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
98
+ <span class='line'> 91</span>
99
+ <span class='line'> 92</span> </span><span class="NAME">attributeState</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
100
+ <span class='line'> 93</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">state</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
101
+ <span class='line'> 94</span>
102
+ <span class='line'> 95</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">persistentFieldNames</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">model.persistentFieldNames</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
103
+ <span class='line'> 96</span> </span><span class="KEYW">for</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">i</span><span class="PUNC">=</span><span class="NAME">persistentFieldNames.length</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">i</span><span class="PUNC">--</span><span class="PUNC">;</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
104
+ <span class='line'> 97</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">f</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">persistentFieldNames</span><span class="PUNC">[</span><span class="NAME">i</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
105
+ <span class='line'> 98</span> </span><span class="NAME">state</span><span class="PUNC">[</span><span class="NAME">f</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">this</span><span class="PUNC">[</span><span class="PUNC">(</span><span class="STRN">"get-"</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">f</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">camelize</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">]</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
106
+ <span class='line'> 99</span> </span><span class="PUNC">}</span><span class="WHIT">
107
+ <span class='line'>100</span> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">state</span><span class="PUNC">;</span><span class="WHIT">
108
+ <span class='line'>101</span> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
109
+ <span class='line'>102</span>
110
+ <span class='line'>103</span> </span><span class="NAME">attributeStateChange</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
111
+ <span class='line'>104</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">state</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
112
+ <span class='line'>105</span>
113
+ <span class='line'>106</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">persistentFieldNames</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">model.persistentFieldNames</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
114
+ <span class='line'>107</span> </span><span class="KEYW">for</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">i</span><span class="PUNC">=</span><span class="NAME">persistentFieldNames.length</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">i</span><span class="PUNC">--</span><span class="PUNC">;</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
115
+ <span class='line'>108</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">f</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">persistentFieldNames</span><span class="PUNC">[</span><span class="NAME">i</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
116
+ <span class='line'>109</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">currentState</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">this</span><span class="PUNC">[</span><span class="STRN">"_"</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">f</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
117
+ <span class='line'>110</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">lastState</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this._lastSavedState</span><span class="WHIT"> </span><span class="PUNC">?</span><span class="WHIT"> </span><span class="NAME">this._lastSavedState</span><span class="PUNC">[</span><span class="NAME">f</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">undefined</span><span class="PUNC">;</span><span class="WHIT">
118
+ <span class='line'>111</span> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">currentState</span><span class="WHIT"> </span><span class="PUNC">!=</span><span class="WHIT"> </span><span class="NAME">lastState</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
119
+ <span class='line'>112</span> </span><span class="NAME">state</span><span class="PUNC">[</span><span class="NAME">f</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">currentState</span><span class="PUNC">;</span><span class="WHIT">
120
+ <span class='line'>113</span> </span><span class="PUNC">}</span><span class="WHIT">
121
+ <span class='line'>114</span> </span><span class="PUNC">}</span><span class="WHIT">
122
+ <span class='line'>115</span>
123
+ <span class='line'>116</span> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">state</span><span class="PUNC">;</span><span class="WHIT">
124
+ <span class='line'>117</span> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
125
+ <span class='line'>118</span>
126
+ <span class='line'>119</span> </span><span class="NAME">removeFromCaches</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
127
+ <span class='line'>120</span> </span><span class="NAME">model.removeFromCollectionEntities</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
128
+ <span class='line'>121</span> </span><span class="NAME">model.removeFromCache</span><span class="PUNC">(</span><span class="NAME">this.getId</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
129
+ <span class='line'>122</span> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
130
+ <span class='line'>123</span>
131
+ <span class='line'>124</span> </span><span class="NAME">toString</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
132
+ <span class='line'>125</span> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="STRN">"[rio.models.*]"</span><span class="PUNC">;</span><span class="WHIT">
133
+ <span class='line'>126</span> </span><span class="PUNC">}</span><span class="WHIT">
134
+ <span class='line'>127</span> </span><span class="PUNC">}</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
135
+ <span class='line'>128</span>
136
+ <span class='line'>129</span> </span><span class="NAME">Object.extend</span><span class="PUNC">(</span><span class="NAME">model</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
137
+ <span class='line'>130</span> </span><span class="NAME">undoEnabled</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">,</span><span class="WHIT">
138
+ <span class='line'>131</span>
139
+ <span class='line'>132</span> </span><span class="NAME">url</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
140
+ <span class='line'>133</span> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">url</span><span class="PUNC">;</span><span class="WHIT">
141
+ <span class='line'>134</span> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
142
+ <span class='line'>135</span>
143
+ <span class='line'>136</span> </span><span class="NAME">_idCache</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
144
+ <span class='line'>137</span> </span><span class="NAME">id</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">val</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">createIfNotFound</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
145
+ <span class='line'>138</span> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">val</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
146
+ <span class='line'>139</span> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this._idCache</span><span class="PUNC">[</span><span class="NAME">val</span><span class="PUNC">]</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">this._idCache</span><span class="PUNC">[</span><span class="NAME">val</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
147
+ <span class='line'>140</span> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">createIfNotFound</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
148
+ <span class='line'>141</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">id</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">rio.Id</span><span class="PUNC">(</span><span class="NAME">val</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
149
+ <span class='line'>142</span> </span><span class="NAME">this._idCache</span><span class="PUNC">[</span><span class="NAME">val</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">id</span><span class="PUNC">;</span><span class="WHIT">
150
+ <span class='line'>143</span> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">id</span><span class="PUNC">;</span><span class="WHIT">
151
+ <span class='line'>144</span> </span><span class="PUNC">}</span><span class="WHIT">
152
+ <span class='line'>145</span> </span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
153
+ <span class='line'>146</span> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">rio.Id</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
154
+ <span class='line'>147</span> </span><span class="PUNC">}</span><span class="WHIT">
155
+ <span class='line'>148</span> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
156
+ <span class='line'>149</span>
157
+ <span class='line'>150</span> </span><span class="NAME">reifyId</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">id</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">val</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
158
+ <span class='line'>151</span> </span><span class="NAME">id.reify</span><span class="PUNC">(</span><span class="NAME">val</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
159
+ <span class='line'>152</span> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this._idCache</span><span class="PUNC">[</span><span class="NAME">val</span><span class="PUNC">]</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
160
+ <span class='line'>153</span> </span><span class="NAME">rio.warn</span><span class="PUNC">(</span><span class="STRN">"id collision while reifying - "</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">model</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">"#"</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">id</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
161
+ <span class='line'>154</span> </span><span class="PUNC">}</span><span class="WHIT">
162
+ <span class='line'>155</span> </span><span class="NAME">this._idCache</span><span class="PUNC">[</span><span class="NAME">val</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">id</span><span class="PUNC">;</span><span class="WHIT">
163
+ <span class='line'>156</span> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
164
+ <span class='line'>157</span>
165
+ <span class='line'>158</span> </span><span class="NAME">persistentFieldNames</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
166
+ <span class='line'>159</span> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">Object.keys</span><span class="PUNC">(</span><span class="NAME">model._fields</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">reject</span><span class="PUNC">(</span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">f</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
167
+ <span class='line'>160</span> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">model._clientOnlyAttrs.include</span><span class="PUNC">(</span><span class="NAME">f</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="NAME">model.prototype</span><span class="PUNC">[</span><span class="PUNC">(</span><span class="STRN">"set-"</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">f</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">camelize</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NAME">undefined</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="NAME">f</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="STRN">"id"</span><span class="PUNC">;</span><span class="WHIT">
168
+ <span class='line'>161</span> </span><span class="PUNC">}</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
169
+ <span class='line'>162</span> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
170
+ <span class='line'>163</span>
171
+ <span class='line'>164</span> </span><span class="NAME">_transaction</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="PUNC">[</span><span class="PUNC">]</span><span class="PUNC">,</span><span class="WHIT">
172
+ <span class='line'>165</span> </span><span class="NAME">addToTransaction</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">entity</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">options</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
173
+ <span class='line'>166</span> </span><span class="NAME">options</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">options</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
174
+ <span class='line'>167</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">existingTransaction</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this._transaction.detect</span><span class="PUNC">(</span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">t</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">t.entity</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NAME">entity</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
175
+ <span class='line'>168</span> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">existingTransaction</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
176
+ <span class='line'>169</span> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">options.destroy</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
177
+ <span class='line'>170</span> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">existingTransaction.entity.isNew</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
178
+ <span class='line'>171</span> </span><span class="NAME">this._transaction.splice</span><span class="PUNC">(</span><span class="NAME">this._transaction.indexOf</span><span class="PUNC">(</span><span class="NAME">existingTransaction</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">1</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
179
+ <span class='line'>172</span> </span><span class="COMM">// don't need to do this, now that we immediately remove on destroy</span><span class="WHIT">
180
+ <span class='line'>173</span> </span><span class="COMM">// model.removeFromCollectionEntities(existingTransaction.entity);</span><span class="WHIT">
181
+ <span class='line'>174</span> </span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
182
+ <span class='line'>175</span> </span><span class="NAME">existingTransaction.options</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">options</span><span class="PUNC">;</span><span class="WHIT">
183
+ <span class='line'>176</span> </span><span class="PUNC">}</span><span class="WHIT">
184
+ <span class='line'>177</span> </span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
185
+ <span class='line'>178</span> </span><span class="NAME">existingTransaction.attributeState</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">entity.attributeStateChange</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
186
+ <span class='line'>179</span> </span><span class="NAME">existingTransaction.parameters</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">entity.parameters</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
187
+ <span class='line'>180</span> </span><span class="PUNC">}</span><span class="WHIT">
188
+ <span class='line'>181</span> </span><span class="COMM">// TODO: chain onSuccess/onFailure functions</span><span class="WHIT">
189
+ <span class='line'>182</span> </span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
190
+ <span class='line'>183</span> </span><span class="NAME">this._transaction.push</span><span class="PUNC">(</span><span class="PUNC">{</span><span class="WHIT">
191
+ <span class='line'>184</span> </span><span class="NAME">entity</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">entity</span><span class="PUNC">,</span><span class="WHIT">
192
+ <span class='line'>185</span> </span><span class="NAME">options</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">options</span><span class="PUNC">,</span><span class="WHIT">
193
+ <span class='line'>186</span> </span><span class="NAME">attributeState</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">entity.attributeStateChange</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT">
194
+ <span class='line'>187</span> </span><span class="NAME">parameters</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">entity.parameters</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT">
195
+ <span class='line'>188</span> </span><span class="PUNC">}</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
196
+ <span class='line'>189</span> </span><span class="PUNC">}</span><span class="WHIT">
197
+ <span class='line'>190</span> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">this._transactionQueued</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
198
+ <span class='line'>191</span> </span><span class="NAME">this._transactionQueued</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">;</span><span class="WHIT">
199
+ <span class='line'>192</span> </span><span class="NAME">this.prepareTransaction</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
200
+ <span class='line'>193</span> </span><span class="PUNC">}</span><span class="WHIT">
201
+ <span class='line'>194</span> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
202
+ <span class='line'>195</span>
203
+ <span class='line'>196</span> </span><span class="COMM">/* Simply defers execution. Can override this for testing. */</span><span class="WHIT">
204
+ <span class='line'>197</span> </span><span class="NAME">prepareTransaction</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
205
+ <span class='line'>198</span> </span><span class="NAME">this.executeTransaction.bind</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">rio.Undo.isProcessingUndo</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">rio.Undo.isProcessingRedo</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">defer</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
206
+ <span class='line'>199</span> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
207
+ <span class='line'>200</span>
208
+ <span class='line'>201</span> </span><span class="NAME">__transactionInProgress</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">,</span><span class="WHIT">
209
+ <span class='line'>202</span> </span><span class="NAME">__queuedTransactions</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="PUNC">[</span><span class="PUNC">]</span><span class="PUNC">,</span><span class="WHIT">
210
+ <span class='line'>203</span> </span><span class="NAME">executeTransaction</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">undoTransaction</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">redoTransaction</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
211
+ <span class='line'>204</span> </span><span class="NAME">this._transactionQueued</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">;</span><span class="WHIT">
212
+ <span class='line'>205</span>
213
+ <span class='line'>206</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">transaction</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this._transaction.clone</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
214
+ <span class='line'>207</span> </span><span class="NAME">this._transaction.clear</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
215
+ <span class='line'>208</span>
216
+ <span class='line'>209</span> </span><span class="COMM">// Transactions can be queued here, so lets make sure that all entities _lastSavedState's are</span><span class="WHIT">
217
+ <span class='line'>210</span> </span><span class="COMM">// correct before letting subsequent transaction queue up.</span><span class="WHIT">
218
+ <span class='line'>211</span> </span><span class="KEYW">for</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">i</span><span class="PUNC">=</span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">len</span><span class="PUNC">=</span><span class="NAME">transaction.length</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">i</span><span class="PUNC">&lt;</span><span class="NAME">len</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">i</span><span class="PUNC">++</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
219
+ <span class='line'>212</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">t</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">transaction</span><span class="PUNC">[</span><span class="NAME">i</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
220
+ <span class='line'>213</span> </span><span class="NAME">t.oldLastSavedState</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">t.entity._lastSavedState</span><span class="PUNC">;</span><span class="WHIT">
221
+ <span class='line'>214</span> </span><span class="NAME">t.entity._lastSavedState</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">t.options.destroy</span><span class="WHIT"> </span><span class="PUNC">?</span><span class="WHIT"> </span><span class="NAME">undefined</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">t.entity.attributeState</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
222
+ <span class='line'>215</span> </span><span class="PUNC">}</span><span class="WHIT">
223
+ <span class='line'>216</span>
224
+ <span class='line'>217</span> </span><span class="NAME">transaction.undoTransaction</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">undoTransaction</span><span class="PUNC">;</span><span class="WHIT">
225
+ <span class='line'>218</span> </span><span class="NAME">transaction.redoTransaction</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">redoTransaction</span><span class="PUNC">;</span><span class="WHIT">
226
+ <span class='line'>219</span> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.__transactionInProgress</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
227
+ <span class='line'>220</span> </span><span class="NAME">this.__queuedTransactions.push</span><span class="PUNC">(</span><span class="NAME">transaction</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
228
+ <span class='line'>221</span> </span><span class="KEYW">return</span><span class="PUNC">;</span><span class="WHIT">
229
+ <span class='line'>222</span> </span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
230
+ <span class='line'>223</span> </span><span class="NAME">this._doExecuteTransaction</span><span class="PUNC">(</span><span class="NAME">transaction</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
231
+ <span class='line'>224</span> </span><span class="PUNC">}</span><span class="WHIT">
232
+ <span class='line'>225</span> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
233
+ <span class='line'>226</span>
234
+ <span class='line'>227</span> </span><span class="NAME">_doExecuteTransaction</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">transaction</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
235
+ <span class='line'>228</span> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">transaction.empty</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT"> </span><span class="KEYW">return</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
236
+ <span class='line'>229</span>
237
+ <span class='line'>230</span> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">model.undoEnabled</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
238
+ <span class='line'>231</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">undos</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">transaction.map</span><span class="PUNC">(</span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">t</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
239
+ <span class='line'>232</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">undo</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT"> </span><span class="NAME">id</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">t.entity.getId</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">state</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">t.oldLastSavedState</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">destroy</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">t.options.destroy</span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
240
+ <span class='line'>233</span> </span><span class="COMM">// t.entity._lastSavedState = t.options.destroy ? undefined : t.entity.attributeState();</span><span class="WHIT">
241
+ <span class='line'>234</span> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">undo</span><span class="PUNC">;</span><span class="WHIT">
242
+ <span class='line'>235</span> </span><span class="PUNC">}</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
243
+ <span class='line'>236</span>
244
+ <span class='line'>237</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">processUndos</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
245
+ <span class='line'>238</span> </span><span class="NAME">undos.reverse</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">each</span><span class="PUNC">(</span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">u</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
246
+ <span class='line'>239</span> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">u.state</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
247
+ <span class='line'>240</span> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">u.destroy</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
248
+ <span class='line'>241</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">instance</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">model</span><span class="PUNC">(</span><span class="NAME">Object.extend</span><span class="PUNC">(</span><span class="PUNC">{</span><span class="WHIT"> </span><span class="NAME">id</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">u.id</span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">u.state</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
249
+ <span class='line'>242</span> </span><span class="NAME">instance._lastSavedState</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">undefined</span><span class="PUNC">;</span><span class="WHIT">
250
+ <span class='line'>243</span> </span><span class="NAME">instance.save</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
251
+ <span class='line'>244</span> </span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
252
+ <span class='line'>245</span> </span><span class="NAME">model.getFromCache</span><span class="PUNC">(</span><span class="NAME">u.id</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">updateAttributes</span><span class="PUNC">(</span><span class="NAME">u.state</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
253
+ <span class='line'>246</span> </span><span class="PUNC">}</span><span class="WHIT">
254
+ <span class='line'>247</span> </span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
255
+ <span class='line'>248</span> </span><span class="NAME">model.getFromCache</span><span class="PUNC">(</span><span class="NAME">u.id</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">destroy</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
256
+ <span class='line'>249</span> </span><span class="PUNC">}</span><span class="WHIT">
257
+ <span class='line'>250</span> </span><span class="PUNC">}</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
258
+ <span class='line'>251</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
259
+ <span class='line'>252</span>
260
+ <span class='line'>253</span> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">transaction.undoTransaction</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
261
+ <span class='line'>254</span> </span><span class="NAME">rio.Undo.registerRedo</span><span class="PUNC">(</span><span class="NAME">processUndos</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
262
+ <span class='line'>255</span> </span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
263
+ <span class='line'>256</span> </span><span class="NAME">rio.Undo.registerUndo</span><span class="PUNC">(</span><span class="NAME">processUndos</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">transaction.redoTransaction</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
264
+ <span class='line'>257</span> </span><span class="PUNC">}</span><span class="WHIT">
265
+ <span class='line'>258</span> </span><span class="PUNC">}</span><span class="WHIT">
266
+ <span class='line'>259</span>
267
+ <span class='line'>260</span> </span><span class="COMM">// // Always update the last saved states</span><span class="WHIT">
268
+ <span class='line'>261</span> </span><span class="COMM">// for (var i=0, len=transaction.length; i&lt;len; i++) {</span><span class="WHIT">
269
+ <span class='line'>262</span> </span><span class="COMM">// var t = transaction[i];</span><span class="WHIT">
270
+ <span class='line'>263</span> </span><span class="COMM">// </span><span class="WHIT">
271
+ <span class='line'>264</span> </span><span class="COMM">// // LOOKS LIKE A BUG</span><span class="WHIT">
272
+ <span class='line'>265</span> </span><span class="COMM">// // TODO: SHOULD PROBABLY BE USING THE t.attributeState instead of t.entity.attributeState()</span><span class="WHIT">
273
+ <span class='line'>266</span> </span><span class="COMM">// t.entity._lastSavedState = t.options.destroy ? undefined : t.entity.attributeState();</span><span class="WHIT">
274
+ <span class='line'>267</span> </span><span class="COMM">// }</span><span class="WHIT">
275
+ <span class='line'>268</span>
276
+ <span class='line'>269</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">createSuccess</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">entity</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">onSuccess</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">json</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
277
+ <span class='line'>270</span> </span><span class="NAME">entity._creating</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">;</span><span class="WHIT">
278
+ <span class='line'>271</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">results</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">model._filterAndProcessJsonWhileAccumulatingCollectionEntities</span><span class="PUNC">(</span><span class="NAME">json</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
279
+ <span class='line'>272</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">idString</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">results</span><span class="PUNC">[</span><span class="NUMB">0</span><span class="PUNC">]</span><span class="PUNC">.</span><span class="NAME">id</span><span class="PUNC">;</span><span class="WHIT">
280
+ <span class='line'>273</span> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">entity.getId</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="NAME">entity.getId</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">temporary</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="NAME">entity.getId</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">temporary</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
281
+ <span class='line'>274</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">id</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">parseInt</span><span class="PUNC">(</span><span class="NAME">idString</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">10</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
282
+ <span class='line'>275</span> </span><span class="NAME">model.reifyId</span><span class="PUNC">(</span><span class="NAME">entity.getId</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">id</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
283
+ <span class='line'>276</span> </span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
284
+ <span class='line'>277</span> </span><span class="COMM">// NOTE: An entity will not be updated with any attributes but the ID on create success</span><span class="WHIT">
285
+ <span class='line'>278</span> </span><span class="NAME">entity._id</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">model.id</span><span class="PUNC">(</span><span class="NAME">parseInt</span><span class="PUNC">(</span><span class="NAME">idString</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">10</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
286
+ <span class='line'>279</span> </span><span class="NAME">model.putInCache</span><span class="PUNC">(</span><span class="NAME">entity._id</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">entity</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
287
+ <span class='line'>280</span> </span><span class="PUNC">}</span><span class="WHIT">
288
+ <span class='line'>281</span> </span><span class="NAME">onSuccess</span><span class="PUNC">(</span><span class="NAME">entity</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
289
+ <span class='line'>282</span> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">entity.afterCreate</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT"> </span><span class="NAME">entity.afterCreate</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
290
+ <span class='line'>283</span> </span><span class="COMM">// if (entity._pendingUpdates) {</span><span class="WHIT">
291
+ <span class='line'>284</span> </span><span class="COMM">// entity._pendingUpdates.each(function(u) { u(); });</span><span class="WHIT">
292
+ <span class='line'>285</span> </span><span class="COMM">// }</span><span class="WHIT">
293
+ <span class='line'>286</span> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">results</span><span class="PUNC">[</span><span class="NUMB">1</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
294
+ <span class='line'>287</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
295
+ <span class='line'>288</span>
296
+ <span class='line'>289</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">updateSuccess</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">entity</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">onSuccess</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
297
+ <span class='line'>290</span> </span><span class="NAME">onSuccess</span><span class="PUNC">(</span><span class="NAME">entity</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
298
+ <span class='line'>291</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
299
+ <span class='line'>292</span>
300
+ <span class='line'>293</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">destroySuccess</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">entity</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">onSuccess</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
301
+ <span class='line'>294</span> </span><span class="COMM">// don't need to do this, now that we immediately remove on destroy</span><span class="WHIT">
302
+ <span class='line'>295</span> </span><span class="COMM">// model.removeFromCollectionEntities(entity);</span><span class="WHIT">
303
+ <span class='line'>296</span> </span><span class="PUNC">(</span><span class="NAME">onSuccess</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="NAME">Prototype.emptyFunction</span><span class="PUNC">)</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
304
+ <span class='line'>297</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
305
+ <span class='line'>298</span>
306
+ <span class='line'>299</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">url</span><span class="PUNC">;</span><span class="WHIT">
307
+ <span class='line'>300</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">method</span><span class="PUNC">;</span><span class="WHIT">
308
+ <span class='line'>301</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">parameters</span><span class="PUNC">;</span><span class="WHIT">
309
+ <span class='line'>302</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">onSuccess</span><span class="PUNC">;</span><span class="WHIT">
310
+ <span class='line'>303</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">onFailure</span><span class="PUNC">;</span><span class="WHIT">
311
+ <span class='line'>304</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">onConnectionFailure</span><span class="PUNC">;</span><span class="WHIT">
312
+ <span class='line'>305</span>
313
+ <span class='line'>306</span> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">transaction.length</span><span class="WHIT"> </span><span class="PUNC">></span><span class="WHIT"> </span><span class="NUMB">1</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
314
+ <span class='line'>307</span> </span><span class="NAME">url</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">model.url</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
315
+ <span class='line'>308</span> </span><span class="NAME">method</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">"post"</span><span class="PUNC">;</span><span class="WHIT">
316
+ <span class='line'>309</span>
317
+ <span class='line'>310</span> </span><span class="NAME">parameters</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
318
+ <span class='line'>311</span> </span><span class="NAME">transaction.each</span><span class="PUNC">(</span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">t</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
319
+ <span class='line'>312</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">id</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">t.entity.getId</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
320
+ <span class='line'>313</span> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">t.options.destroy</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
321
+ <span class='line'>314</span> </span><span class="NAME">parameters</span><span class="PUNC">[</span><span class="STRN">"transaction["</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">id</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">"]"</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">"delete"</span><span class="PUNC">;</span><span class="WHIT">
322
+ <span class='line'>315</span> </span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
323
+ <span class='line'>316</span> </span><span class="KEYW">for</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">f</span><span class="WHIT"> </span><span class="KEYW">in</span><span class="WHIT"> </span><span class="NAME">t.attributeState</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
324
+ <span class='line'>317</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">val</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">t.attributeState</span><span class="PUNC">[</span><span class="NAME">f</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
325
+ <span class='line'>318</span> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">val</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="NAME">val.toString</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT"> </span><span class="NAME">val</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">val.toString</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
326
+ <span class='line'>319</span> </span><span class="NAME">parameters</span><span class="PUNC">[</span><span class="STRN">"transaction["</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">id</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">"]["</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">f.underscore</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">"]"</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">val</span><span class="PUNC">;</span><span class="WHIT">
327
+ <span class='line'>320</span> </span><span class="PUNC">}</span><span class="WHIT">
328
+ <span class='line'>321</span> </span><span class="PUNC">}</span><span class="WHIT">
329
+ <span class='line'>322</span> </span><span class="PUNC">}</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
330
+ <span class='line'>323</span>
331
+ <span class='line'>324</span> </span><span class="NAME">onSuccess</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">response</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
332
+ <span class='line'>325</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">afterFunctions</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">transaction.map</span><span class="PUNC">(</span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">t</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
333
+ <span class='line'>326</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">entity</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">t.entity</span><span class="PUNC">;</span><span class="WHIT">
334
+ <span class='line'>327</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">options</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">t.options</span><span class="PUNC">;</span><span class="WHIT">
335
+ <span class='line'>328</span>
336
+ <span class='line'>329</span> </span><span class="NAME">options</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">options</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
337
+ <span class='line'>330</span> </span><span class="NAME">options.onSuccess</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">options.onSuccess</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="NAME">Prototype.emptyFunction</span><span class="PUNC">;</span><span class="WHIT">
338
+ <span class='line'>331</span>
339
+ <span class='line'>332</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">json</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">response.responseJSON.transaction</span><span class="PUNC">[</span><span class="NAME">t.entity.getId</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
340
+ <span class='line'>333</span> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="WHIT">
341
+ <span class='line'>334</span> </span><span class="NAME">options.destroy</span><span class="WHIT"> </span><span class="PUNC">?</span><span class="WHIT"> </span><span class="NAME">destroySuccess</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">entity.isNew</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">?</span><span class="WHIT"> </span><span class="NAME">createSuccess</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">updateSuccess</span><span class="PUNC">)</span><span class="WHIT">
342
+ <span class='line'>335</span> </span><span class="PUNC">)</span><span class="PUNC">(</span><span class="NAME">entity</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">options.onSuccess</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">json</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
343
+ <span class='line'>336</span> </span><span class="PUNC">}</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
344
+ <span class='line'>337</span>
345
+ <span class='line'>338</span> </span><span class="NAME">afterFunctions.compact</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">each</span><span class="PUNC">(</span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">af</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
346
+ <span class='line'>339</span> </span><span class="NAME">af</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
347
+ <span class='line'>340</span> </span><span class="PUNC">}</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
348
+ <span class='line'>341</span> </span><span class="PUNC">}</span><span class="PUNC">.</span><span class="NAME">bind</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
349
+ <span class='line'>342</span>
350
+ <span class='line'>343</span> </span><span class="NAME">onFailure</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
351
+ <span class='line'>344</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">handled</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">;</span><span class="WHIT">
352
+ <span class='line'>345</span> </span><span class="NAME">transaction.each</span><span class="PUNC">(</span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">t</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
353
+ <span class='line'>346</span> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">t.options.onFailure</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
354
+ <span class='line'>347</span> </span><span class="NAME">t.options.onFailure</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
355
+ <span class='line'>348</span> </span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
356
+ <span class='line'>349</span> </span><span class="NAME">handled</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">;</span><span class="WHIT">
357
+ <span class='line'>350</span> </span><span class="PUNC">}</span><span class="WHIT">
358
+ <span class='line'>351</span> </span><span class="PUNC">}</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
359
+ <span class='line'>352</span> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">handled</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
360
+ <span class='line'>353</span> </span><span class="NAME">rio.Application.fail</span><span class="PUNC">(</span><span class="STRN">"Failed creating, updating, or destroying."</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">model</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">"\n"</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">Object.toJSON</span><span class="PUNC">(</span><span class="NAME">parameters</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
361
+ <span class='line'>354</span> </span><span class="PUNC">}</span><span class="WHIT">
362
+ <span class='line'>355</span> </span><span class="PUNC">}</span><span class="PUNC">.</span><span class="NAME">bind</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
363
+ <span class='line'>356</span>
364
+ <span class='line'>357</span> </span><span class="NAME">onConnectionFailure</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
365
+ <span class='line'>358</span> </span><span class="NAME">transaction.each</span><span class="PUNC">(</span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">t</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
366
+ <span class='line'>359</span> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">t.options.onConnectionFailure</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
367
+ <span class='line'>360</span> </span><span class="NAME">t.options.onConnectionFailure</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
368
+ <span class='line'>361</span> </span><span class="PUNC">}</span><span class="WHIT">
369
+ <span class='line'>362</span> </span><span class="PUNC">}</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
370
+ <span class='line'>363</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
371
+ <span class='line'>364</span> </span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
372
+ <span class='line'>365</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">entity</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">transaction.first</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">entity</span><span class="PUNC">;</span><span class="WHIT">
373
+ <span class='line'>366</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">options</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">transaction.first</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">options</span><span class="PUNC">;</span><span class="WHIT">
374
+ <span class='line'>367</span>
375
+ <span class='line'>368</span> </span><span class="NAME">options</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">options</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
376
+ <span class='line'>369</span> </span><span class="NAME">options.onSuccess</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">options.onSuccess</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="NAME">Prototype.emptyFunction</span><span class="PUNC">;</span><span class="WHIT">
377
+ <span class='line'>370</span>
378
+ <span class='line'>371</span> </span><span class="NAME">parameters</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">options.parameters</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="NAME">transaction.first</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">parameters</span><span class="PUNC">;</span><span class="WHIT">
379
+ <span class='line'>372</span> </span><span class="NAME">url</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">entity.isNew</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">?</span><span class="WHIT"> </span><span class="NAME">model.url</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">entity.url</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
380
+ <span class='line'>373</span> </span><span class="NAME">method</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">options.destroy</span><span class="WHIT"> </span><span class="PUNC">?</span><span class="WHIT"> </span><span class="STRN">"delete"</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">entity.isNew</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">?</span><span class="WHIT"> </span><span class="STRN">"post"</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="STRN">"put"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
381
+ <span class='line'>374</span> </span><span class="NAME">onSuccess</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">response</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
382
+ <span class='line'>375</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">after</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="WHIT">
383
+ <span class='line'>376</span> </span><span class="NAME">options.destroy</span><span class="WHIT"> </span><span class="PUNC">?</span><span class="WHIT"> </span><span class="NAME">destroySuccess</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">entity.isNew</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">?</span><span class="WHIT"> </span><span class="NAME">createSuccess</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">updateSuccess</span><span class="PUNC">)</span><span class="WHIT">
384
+ <span class='line'>377</span> </span><span class="PUNC">)</span><span class="PUNC">(</span><span class="NAME">entity</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">options.onSuccess</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">response.responseJSON</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
385
+ <span class='line'>378</span> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">after</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT"> </span><span class="NAME">after</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
386
+ <span class='line'>379</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
387
+ <span class='line'>380</span> </span><span class="NAME">onFailure</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">options.onFailure</span><span class="PUNC">;</span><span class="WHIT">
388
+ <span class='line'>381</span> </span><span class="NAME">onConnectionFailure</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">options.onConnectionFailure</span><span class="PUNC">;</span><span class="WHIT">
389
+ <span class='line'>382</span> </span><span class="PUNC">}</span><span class="WHIT">
390
+ <span class='line'>383</span>
391
+ <span class='line'>384</span> </span><span class="NAME">this.__transactionInProgress</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">;</span><span class="WHIT">
392
+ <span class='line'>385</span> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">Ajax.Request</span><span class="PUNC">(</span><span class="NAME">url</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
393
+ <span class='line'>386</span> </span><span class="NAME">asynchronous</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">,</span><span class="WHIT">
394
+ <span class='line'>387</span> </span><span class="NAME">method</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">method</span><span class="PUNC">,</span><span class="WHIT">
395
+ <span class='line'>388</span> </span><span class="NAME">evalJSON</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">,</span><span class="WHIT">
396
+ <span class='line'>389</span> </span><span class="NAME">parameters</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">$H</span><span class="PUNC">(</span><span class="NAME">parameters</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">merge</span><span class="PUNC">(</span><span class="PUNC">{</span><span class="WHIT">
397
+ <span class='line'>390</span> </span><span class="STRN">'transaction_key'</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">rio.environment.transactionKey</span><span class="PUNC">,</span><span class="WHIT">
398
+ <span class='line'>391</span> </span><span class="STRN">'authenticity_token'</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">rio.Application.getToken</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT">
399
+ <span class='line'>392</span> </span><span class="PUNC">}</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">toObject</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT">
400
+ <span class='line'>393</span> </span><span class="NAME">onSuccess</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">response</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
401
+ <span class='line'>394</span> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">response.status</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
402
+ <span class='line'>395</span> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">onConnectionFailure</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
403
+ <span class='line'>396</span> </span><span class="NAME">onConnectionFailure</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
404
+ <span class='line'>397</span> </span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
405
+ <span class='line'>398</span> </span><span class="NAME">rio.Application.fail</span><span class="PUNC">(</span><span class="STRN">"Connection Failure"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">model</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">":\n"</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">Object.toJSON</span><span class="PUNC">(</span><span class="NAME">parameters</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
406
+ <span class='line'>399</span> </span><span class="PUNC">}</span><span class="WHIT">
407
+ <span class='line'>400</span> </span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
408
+ <span class='line'>401</span> </span><span class="NAME">onSuccess</span><span class="PUNC">(</span><span class="NAME">response</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
409
+ <span class='line'>402</span> </span><span class="PUNC">}</span><span class="WHIT">
410
+ <span class='line'>403</span> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
411
+ <span class='line'>404</span> </span><span class="NAME">onFailure</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
412
+ <span class='line'>405</span> </span><span class="COMM">// if (!entity.__destroying) {</span><span class="WHIT">
413
+ <span class='line'>406</span> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">onFailure</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
414
+ <span class='line'>407</span> </span><span class="NAME">onFailure</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
415
+ <span class='line'>408</span> </span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
416
+ <span class='line'>409</span> </span><span class="NAME">rio.Application.fail</span><span class="PUNC">(</span><span class="STRN">"Failed creating, updating, or destroying."</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">model</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">":\n"</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">Object.toJSON</span><span class="PUNC">(</span><span class="NAME">parameters</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
417
+ <span class='line'>410</span> </span><span class="PUNC">}</span><span class="WHIT">
418
+ <span class='line'>411</span> </span><span class="COMM">// }</span><span class="WHIT">
419
+ <span class='line'>412</span> </span><span class="PUNC">}</span><span class="PUNC">.</span><span class="NAME">bind</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT">
420
+ <span class='line'>413</span> </span><span class="NAME">onComplete</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">response</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
421
+ <span class='line'>414</span> </span><span class="NAME">this.__transactionInProgress</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">;</span><span class="WHIT">
422
+ <span class='line'>415</span> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">this.__queuedTransactions.empty</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
423
+ <span class='line'>416</span> </span><span class="NAME">this._doExecuteTransaction</span><span class="PUNC">(</span><span class="NAME">this.__queuedTransactions.shift</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
424
+ <span class='line'>417</span> </span><span class="PUNC">}</span><span class="WHIT">
425
+ <span class='line'>418</span> </span><span class="PUNC">}</span><span class="PUNC">.</span><span class="NAME">bind</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">)</span><span class="WHIT">
426
+ <span class='line'>419</span> </span><span class="PUNC">}</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
427
+ <span class='line'>420</span>
428
+ <span class='line'>421</span> </span><span class="NAME">transaction.each</span><span class="PUNC">(</span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">t</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
429
+ <span class='line'>422</span> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">t.entity.isNew</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
430
+ <span class='line'>423</span> </span><span class="NAME">t.entity._creating</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">;</span><span class="WHIT">
431
+ <span class='line'>424</span> </span><span class="PUNC">}</span><span class="WHIT">
432
+ <span class='line'>425</span> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">t.options.destroy</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
433
+ <span class='line'>426</span> </span><span class="NAME">t.entity.__destroying</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">;</span><span class="WHIT">
434
+ <span class='line'>427</span> </span><span class="PUNC">}</span><span class="WHIT">
435
+ <span class='line'>428</span> </span><span class="PUNC">}</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
436
+ <span class='line'>429</span> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
437
+ <span class='line'>430</span>
438
+ <span class='line'>431</span> </span><span class="NAME">create</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">options</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
439
+ <span class='line'>432</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">obj</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">model</span><span class="PUNC">(</span><span class="NAME">options</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
440
+ <span class='line'>433</span> </span><span class="NAME">obj.save</span><span class="PUNC">(</span><span class="NAME">options</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
441
+ <span class='line'>434</span> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">obj</span><span class="PUNC">;</span><span class="WHIT">
442
+ <span class='line'>435</span> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
443
+ <span class='line'>436</span>
444
+ <span class='line'>437</span> </span><span class="NAME">find</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">id</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">options</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
445
+ <span class='line'>438</span> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">id</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NAME">undefined</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT"> </span><span class="KEYW">return</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
446
+ <span class='line'>439</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">rioId</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">id.constructor</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NAME">rio.Id</span><span class="WHIT"> </span><span class="PUNC">?</span><span class="WHIT"> </span><span class="NAME">id</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">model.id</span><span class="PUNC">(</span><span class="NAME">id</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
447
+ <span class='line'>440</span>
448
+ <span class='line'>441</span> </span><span class="NAME">options</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">options</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
449
+ <span class='line'>442</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">asynchronous</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">options.asynchronous</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NAME">undefined</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="NAME">options.asynchronous</span><span class="PUNC">;</span><span class="WHIT">
450
+ <span class='line'>443</span>
451
+ <span class='line'>444</span> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">options.onSuccess</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NAME">undefined</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
452
+ <span class='line'>445</span> </span><span class="NAME">asynchronous</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">;</span><span class="WHIT">
453
+ <span class='line'>446</span> </span><span class="NAME">options.onSuccess</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">Prototype.emptyFunction</span><span class="PUNC">;</span><span class="WHIT">
454
+ <span class='line'>447</span> </span><span class="PUNC">}</span><span class="WHIT">
455
+ <span class='line'>448</span>
456
+ <span class='line'>449</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">existing</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.getFromCache</span><span class="PUNC">(</span><span class="NAME">rioId</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
457
+ <span class='line'>450</span> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">existing</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
458
+ <span class='line'>451</span> </span><span class="NAME">options.onSuccess</span><span class="PUNC">(</span><span class="NAME">existing</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
459
+ <span class='line'>452</span> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">existing</span><span class="PUNC">;</span><span class="WHIT">
460
+ <span class='line'>453</span> </span><span class="PUNC">}</span><span class="WHIT">
461
+ <span class='line'>454</span>
462
+ <span class='line'>455</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">entity</span><span class="PUNC">;</span><span class="WHIT">
463
+ <span class='line'>456</span>
464
+ <span class='line'>457</span> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">Ajax.Request</span><span class="PUNC">(</span><span class="NAME">this.url</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">"/"</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">id</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
465
+ <span class='line'>458</span> </span><span class="NAME">asynchronous</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">asynchronous</span><span class="PUNC">,</span><span class="WHIT">
466
+ <span class='line'>459</span> </span><span class="NAME">method</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="STRN">'get'</span><span class="PUNC">,</span><span class="WHIT">
467
+ <span class='line'>460</span> </span><span class="NAME">evalJSON</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">,</span><span class="WHIT">
468
+ <span class='line'>461</span> </span><span class="NAME">onSuccess</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">response</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
469
+ <span class='line'>462</span> </span><span class="NAME">entity</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">model</span><span class="PUNC">(</span><span class="NAME">model._filterAndProcessJson</span><span class="PUNC">(</span><span class="NAME">response.responseJSON</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
470
+ <span class='line'>463</span> </span><span class="NAME">options.onSuccess</span><span class="PUNC">(</span><span class="NAME">entity</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
471
+ <span class='line'>464</span> </span><span class="PUNC">}</span><span class="WHIT">
472
+ <span class='line'>465</span> </span><span class="PUNC">}</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
473
+ <span class='line'>466</span> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">asynchronous</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
474
+ <span class='line'>467</span> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">entity</span><span class="PUNC">;</span><span class="WHIT">
475
+ <span class='line'>468</span> </span><span class="PUNC">}</span><span class="WHIT">
476
+ <span class='line'>469</span> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
477
+ <span class='line'>470</span>
478
+ <span class='line'>471</span> </span><span class="NAME">findAll</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">options</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
479
+ <span class='line'>472</span> </span><span class="NAME">options</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">options</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
480
+ <span class='line'>473</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">asynchronous</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">options.asynchronous</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NAME">undefined</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="NAME">options.asynchronous</span><span class="PUNC">;</span><span class="WHIT">
481
+ <span class='line'>474</span>
482
+ <span class='line'>475</span> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">options.onSuccess</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NAME">undefined</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
483
+ <span class='line'>476</span> </span><span class="NAME">asynchronous</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">;</span><span class="WHIT">
484
+ <span class='line'>477</span> </span><span class="NAME">options.onSuccess</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">Prototype.emptyFunction</span><span class="PUNC">;</span><span class="WHIT">
485
+ <span class='line'>478</span> </span><span class="PUNC">}</span><span class="WHIT">
486
+ <span class='line'>479</span>
487
+ <span class='line'>480</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">idField</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">Object.keys</span><span class="PUNC">(</span><span class="NAME">options.parameters</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">detect</span><span class="PUNC">(</span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">parameter</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
488
+ <span class='line'>481</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">val</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">options.parameters</span><span class="PUNC">[</span><span class="NAME">parameter</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
489
+ <span class='line'>482</span> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">val</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="NAME">val.temporary</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="NAME">val.temporary</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
490
+ <span class='line'>483</span> </span><span class="PUNC">}</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
491
+ <span class='line'>484</span>
492
+ <span class='line'>485</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">urlToUse</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">options.url</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="NAME">this.url</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
493
+ <span class='line'>486</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">parameters</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">rio.Parameters</span><span class="PUNC">(</span><span class="NAME">options.parameters</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">options.nonAjaxParameters</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
494
+ <span class='line'>487</span> </span><span class="COMM">// Assume that there are no entities yet (since a param is unreified)</span><span class="WHIT">
495
+ <span class='line'>488</span> </span><span class="COMM">// New entities will be added to the collectionEntity as they are created or broadcast</span><span class="WHIT">
496
+ <span class='line'>489</span> </span><span class="COMM">// If this poses a problem, we can always schedule a find for after reification and then reconcile the CE's</span><span class="WHIT">
497
+ <span class='line'>490</span> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">idField</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
498
+ <span class='line'>491</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">collectionEntity</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">rio.CollectionEntity.create</span><span class="PUNC">(</span><span class="PUNC">{</span><span class="WHIT">
499
+ <span class='line'>492</span> </span><span class="NAME">model</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">model</span><span class="PUNC">,</span><span class="WHIT">
500
+ <span class='line'>493</span> </span><span class="NAME">values</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="PUNC">[</span><span class="PUNC">]</span><span class="PUNC">,</span><span class="WHIT">
501
+ <span class='line'>494</span> </span><span class="NAME">condition</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">parameters.conditionFunction</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT">
502
+ <span class='line'>495</span> </span><span class="PUNC">}</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
503
+ <span class='line'>496</span> </span><span class="NAME">this.putCollectionEntity</span><span class="PUNC">(</span><span class="NAME">urlToUse</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">"#"</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">Object.toJSON</span><span class="PUNC">(</span><span class="NAME">parameters.ajaxParameters</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">collectionEntity</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
504
+ <span class='line'>497</span>
505
+ <span class='line'>498</span> </span><span class="NAME">Object.values</span><span class="PUNC">(</span><span class="NAME">model._identityCache</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">each</span><span class="PUNC">(</span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">entity</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
506
+ <span class='line'>499</span> </span><span class="NAME">collectionEntity.add</span><span class="PUNC">(</span><span class="NAME">entity</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
507
+ <span class='line'>500</span> </span><span class="PUNC">}</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
508
+ <span class='line'>501</span>
509
+ <span class='line'>502</span> </span><span class="NAME">options.onSuccess</span><span class="PUNC">(</span><span class="NAME">collectionEntity</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
510
+ <span class='line'>503</span> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">collectionEntity</span><span class="PUNC">;</span><span class="WHIT">
511
+ <span class='line'>504</span> </span><span class="PUNC">}</span><span class="WHIT">
512
+ <span class='line'>505</span>
513
+ <span class='line'>506</span>
514
+ <span class='line'>507</span> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this._collectionEntities</span><span class="PUNC">[</span><span class="NAME">urlToUse</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">"#"</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">Object.toJSON</span><span class="PUNC">(</span><span class="NAME">parameters.ajaxParameters</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">]</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
515
+ <span class='line'>508</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">found</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this._collectionEntities</span><span class="PUNC">[</span><span class="NAME">urlToUse</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">"#"</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">Object.toJSON</span><span class="PUNC">(</span><span class="NAME">parameters.ajaxParameters</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
516
+ <span class='line'>509</span> </span><span class="NAME">found.prepare</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
517
+ <span class='line'>510</span> </span><span class="NAME">options.onSuccess</span><span class="PUNC">(</span><span class="NAME">found</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
518
+ <span class='line'>511</span> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">asynchronous</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
519
+ <span class='line'>512</span> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">found</span><span class="PUNC">;</span><span class="WHIT">
520
+ <span class='line'>513</span> </span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
521
+ <span class='line'>514</span> </span><span class="KEYW">return</span><span class="PUNC">;</span><span class="WHIT">
522
+ <span class='line'>515</span> </span><span class="PUNC">}</span><span class="WHIT">
523
+ <span class='line'>516</span> </span><span class="PUNC">}</span><span class="WHIT">
524
+ <span class='line'>517</span>
525
+ <span class='line'>518</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">results</span><span class="PUNC">;</span><span class="WHIT">
526
+ <span class='line'>519</span> </span><span class="NAME">rio.Model._findAllRequests.push</span><span class="PUNC">(</span><span class="WHIT">
527
+ <span class='line'>520</span> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">Ajax.Request</span><span class="PUNC">(</span><span class="NAME">urlToUse</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
528
+ <span class='line'>521</span> </span><span class="NAME">asynchronous</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">asynchronous</span><span class="PUNC">,</span><span class="WHIT">
529
+ <span class='line'>522</span> </span><span class="NAME">method</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="STRN">'get'</span><span class="PUNC">,</span><span class="WHIT">
530
+ <span class='line'>523</span> </span><span class="NAME">evalJSON</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">,</span><span class="WHIT">
531
+ <span class='line'>524</span> </span><span class="NAME">parameters</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="NAME">conditions</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">Object.toJSON</span><span class="PUNC">(</span><span class="NAME">parameters.ajaxParameters</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
532
+ <span class='line'>525</span> </span><span class="NAME">onSuccess</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">response</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
533
+ <span class='line'>526</span> </span><span class="NAME">results</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this._collectionEntityFromJson</span><span class="PUNC">(</span><span class="NAME">response.responseJSON</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">parameters</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">urlToUse</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
534
+ <span class='line'>527</span> </span><span class="NAME">results.prepare</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
535
+ <span class='line'>528</span> </span><span class="NAME">options.onSuccess</span><span class="PUNC">(</span><span class="NAME">results</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
536
+ <span class='line'>529</span> </span><span class="PUNC">}</span><span class="PUNC">.</span><span class="NAME">bind</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">)</span><span class="WHIT">
537
+ <span class='line'>530</span> </span><span class="PUNC">}</span><span class="PUNC">)</span><span class="WHIT">
538
+ <span class='line'>531</span> </span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
539
+ <span class='line'>532</span> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">asynchronous</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
540
+ <span class='line'>533</span> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">results</span><span class="PUNC">;</span><span class="WHIT">
541
+ <span class='line'>534</span> </span><span class="PUNC">}</span><span class="WHIT">
542
+ <span class='line'>535</span> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
543
+ <span class='line'>536</span>
544
+ <span class='line'>537</span> </span><span class="NAME">_hasManyAssociations</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
545
+ <span class='line'>538</span> </span><span class="NAME">hasMany</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">hasManyName</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
546
+ <span class='line'>539</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">options</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
547
+ <span class='line'>540</span> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">Object.isString</span><span class="PUNC">(</span><span class="NAME">hasManyName</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
548
+ <span class='line'>541</span> </span><span class="NAME">options</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">hasManyName</span><span class="PUNC">[</span><span class="NUMB">1</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
549
+ <span class='line'>542</span> </span><span class="NAME">hasManyName</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">hasManyName</span><span class="PUNC">[</span><span class="NUMB">0</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
550
+ <span class='line'>543</span> </span><span class="PUNC">}</span><span class="WHIT">
551
+ <span class='line'>544</span> </span><span class="NAME">options.className</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">hasManyName.singularize</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">classize</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
552
+ <span class='line'>545</span> </span><span class="NAME">options.foreignKey</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.NAME.toLowerCase</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">"Id"</span><span class="PUNC">;</span><span class="WHIT">
553
+ <span class='line'>546</span> </span><span class="NAME">options.parameters</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">options.parameters</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
554
+ <span class='line'>547</span>
555
+ <span class='line'>548</span> </span><span class="NAME">this._hasManyAssociations</span><span class="PUNC">[</span><span class="NAME">hasManyName</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">options</span><span class="PUNC">;</span><span class="WHIT">
556
+ <span class='line'>549</span>
557
+ <span class='line'>550</span> </span><span class="NAME">this.attrAccessor</span><span class="PUNC">(</span><span class="NAME">hasManyName</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
558
+ <span class='line'>551</span> </span><span class="NAME">this.clientOnlyAttr</span><span class="PUNC">(</span><span class="NAME">hasManyName</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
559
+ <span class='line'>552</span>
560
+ <span class='line'>553</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">getName</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="STRN">"get-"</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">hasManyName</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">camelize</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
561
+ <span class='line'>554</span>
562
+ <span class='line'>555</span> </span><span class="NAME">this.prototype</span><span class="PUNC">[</span><span class="NAME">getName</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.prototype</span><span class="PUNC">[</span><span class="NAME">getName</span><span class="PUNC">]</span><span class="PUNC">.</span><span class="NAME">wrap</span><span class="PUNC">(</span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">proceed</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
563
+ <span class='line'>556</span> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">[</span><span class="STRN">"_"</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">hasManyName</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NAME">undefined</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
564
+ <span class='line'>557</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">parameters</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">Object.clone</span><span class="PUNC">(</span><span class="NAME">options.parameters</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
565
+ <span class='line'>558</span> </span><span class="NAME">parameters</span><span class="PUNC">[</span><span class="NAME">options.foreignKey</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.getId</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
566
+ <span class='line'>559</span> </span><span class="NAME">rio.models</span><span class="PUNC">[</span><span class="NAME">options.className</span><span class="PUNC">]</span><span class="PUNC">.</span><span class="NAME">findAll</span><span class="PUNC">(</span><span class="PUNC">{</span><span class="WHIT">
567
+ <span class='line'>560</span> </span><span class="NAME">asynchronous</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">,</span><span class="WHIT">
568
+ <span class='line'>561</span> </span><span class="NAME">parameters</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">parameters</span><span class="PUNC">,</span><span class="WHIT">
569
+ <span class='line'>562</span> </span><span class="NAME">onSuccess</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">entities</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
570
+ <span class='line'>563</span> </span><span class="KEYW">this</span><span class="PUNC">[</span><span class="STRN">"_"</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">hasManyName</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">entities</span><span class="PUNC">;</span><span class="WHIT">
571
+ <span class='line'>564</span> </span><span class="PUNC">}</span><span class="PUNC">.</span><span class="NAME">bind</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">)</span><span class="WHIT">
572
+ <span class='line'>565</span> </span><span class="PUNC">}</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
573
+ <span class='line'>566</span> </span><span class="PUNC">}</span><span class="WHIT">
574
+ <span class='line'>567</span> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">proceed.apply</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">$A</span><span class="PUNC">(</span><span class="NAME">arguments</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">slice</span><span class="PUNC">(</span><span class="NUMB">1</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
575
+ <span class='line'>568</span> </span><span class="PUNC">}</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
576
+ <span class='line'>569</span> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
577
+ <span class='line'>570</span>
578
+ <span class='line'>571</span> </span><span class="NAME">belongsTo</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">args</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
579
+ <span class='line'>572</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">options</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
580
+ <span class='line'>573</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">associationName</span><span class="PUNC">;</span><span class="WHIT">
581
+ <span class='line'>574</span> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">Object.isString</span><span class="PUNC">(</span><span class="NAME">args</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
582
+ <span class='line'>575</span> </span><span class="NAME">associationName</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">args</span><span class="PUNC">[</span><span class="NUMB">0</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
583
+ <span class='line'>576</span> </span><span class="NAME">options</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">args</span><span class="PUNC">[</span><span class="NUMB">1</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
584
+ <span class='line'>577</span> </span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
585
+ <span class='line'>578</span> </span><span class="NAME">associationName</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">args</span><span class="PUNC">;</span><span class="WHIT">
586
+ <span class='line'>579</span> </span><span class="PUNC">}</span><span class="WHIT">
587
+ <span class='line'>580</span> </span><span class="NAME">this.attrAccessor</span><span class="PUNC">(</span><span class="NAME">associationName</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
588
+ <span class='line'>581</span> </span><span class="NAME">this.clientOnlyAttr</span><span class="PUNC">(</span><span class="NAME">associationName</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
589
+ <span class='line'>582</span>
590
+ <span class='line'>583</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">className</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">options.className</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="NAME">associationName.classize</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
591
+ <span class='line'>584</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">foreignKey</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">options.foreignKey</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="NAME">associationName</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">"Id"</span><span class="PUNC">;</span><span class="WHIT">
592
+ <span class='line'>585</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">getName</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="STRN">"get-"</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">associationName</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">camelize</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
593
+ <span class='line'>586</span>
594
+ <span class='line'>587</span> </span><span class="NAME">this.prototype</span><span class="PUNC">[</span><span class="NAME">getName</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.prototype</span><span class="PUNC">[</span><span class="NAME">getName</span><span class="PUNC">]</span><span class="PUNC">.</span><span class="NAME">wrap</span><span class="PUNC">(</span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">proceed</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
595
+ <span class='line'>588</span> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">[</span><span class="STRN">"_"</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">associationName</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NAME">undefined</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
596
+ <span class='line'>589</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">setAssociation</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
597
+ <span class='line'>590</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">associationId</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">this</span><span class="PUNC">[</span><span class="STRN">"_"</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">foreignKey</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
598
+ <span class='line'>591</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">foundValue</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">rio.models</span><span class="PUNC">[</span><span class="NAME">className</span><span class="PUNC">]</span><span class="PUNC">.</span><span class="NAME">find</span><span class="PUNC">(</span><span class="NAME">associationId</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
599
+ <span class='line'>592</span> </span><span class="NAME">asynchronous</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="WHIT">
600
+ <span class='line'>593</span> </span><span class="PUNC">}</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
601
+ <span class='line'>594</span> </span><span class="KEYW">this</span><span class="PUNC">[</span><span class="PUNC">(</span><span class="STRN">"set-"</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">associationName</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">camelize</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">]</span><span class="PUNC">(</span><span class="NAME">foundValue</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
602
+ <span class='line'>595</span> </span><span class="PUNC">}</span><span class="PUNC">.</span><span class="NAME">bind</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
603
+ <span class='line'>596</span> </span><span class="NAME">setAssociation</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
604
+ <span class='line'>597</span> </span><span class="KEYW">this</span><span class="PUNC">[</span><span class="NAME">foreignKey</span><span class="PUNC">]</span><span class="PUNC">.</span><span class="NAME">bind</span><span class="PUNC">(</span><span class="NAME">setAssociation</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
605
+ <span class='line'>598</span> </span><span class="PUNC">}</span><span class="WHIT">
606
+ <span class='line'>599</span> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">proceed.apply</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">$A</span><span class="PUNC">(</span><span class="NAME">arguments</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">slice</span><span class="PUNC">(</span><span class="NUMB">1</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
607
+ <span class='line'>600</span> </span><span class="PUNC">}</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
608
+ <span class='line'>601</span> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
609
+ <span class='line'>602</span>
610
+ <span class='line'>603</span> </span><span class="NAME">_parametersFromJsonParameters</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">params</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
611
+ <span class='line'>604</span> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">rio.Parameters</span><span class="PUNC">(</span><span class="WHIT">
612
+ <span class='line'>605</span> </span><span class="NAME">Object.keys</span><span class="PUNC">(</span><span class="NAME">params</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">inject</span><span class="PUNC">(</span><span class="PUNC">{</span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">acc</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">p</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
613
+ <span class='line'>606</span> </span><span class="NAME">acc</span><span class="PUNC">[</span><span class="NAME">p.camelize</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">params</span><span class="PUNC">[</span><span class="NAME">p</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
614
+ <span class='line'>607</span> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">acc</span><span class="PUNC">;</span><span class="WHIT">
615
+ <span class='line'>608</span> </span><span class="PUNC">}</span><span class="PUNC">)</span><span class="WHIT">
616
+ <span class='line'>609</span> </span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
617
+ <span class='line'>610</span> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
618
+ <span class='line'>611</span>
619
+ <span class='line'>612</span> </span><span class="NAME">_processIncludedCollectionEntities</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">json</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
620
+ <span class='line'>613</span> </span><span class="KEYW">for</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">i</span><span class="PUNC">=</span><span class="NAME">json.length</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">i</span><span class="PUNC">--</span><span class="PUNC">;</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
621
+ <span class='line'>614</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">include</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">json</span><span class="PUNC">[</span><span class="NAME">i</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
622
+ <span class='line'>615</span> </span><span class="NAME">params</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this._parametersFromJsonParameters</span><span class="PUNC">(</span><span class="NAME">include.parameters</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
623
+ <span class='line'>616</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">url</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">rio.models</span><span class="PUNC">[</span><span class="NAME">include.className</span><span class="PUNC">]</span><span class="PUNC">.</span><span class="NAME">url</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
624
+ <span class='line'>617</span> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this._collectionEntities</span><span class="PUNC">[</span><span class="NAME">url</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">"#"</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">Object.toJSON</span><span class="PUNC">(</span><span class="NAME">params.ajaxParameters</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NAME">undefined</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
625
+ <span class='line'>618</span> </span><span class="NAME">rio.models</span><span class="PUNC">[</span><span class="NAME">include.className</span><span class="PUNC">]</span><span class="PUNC">.</span><span class="NAME">_collectionEntityFromJson</span><span class="PUNC">(</span><span class="NAME">include.json</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">params</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">url</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
626
+ <span class='line'>619</span> </span><span class="PUNC">}</span><span class="WHIT">
627
+ <span class='line'>620</span> </span><span class="PUNC">}</span><span class="WHIT">
628
+ <span class='line'>621</span> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
629
+ <span class='line'>622</span>
630
+ <span class='line'>623</span> </span><span class="NAME">_filterAndProcessJsonWhileAccumulatingCollectionEntities</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">inJson</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
631
+ <span class='line'>624</span> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">inJson._set</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
632
+ <span class='line'>625</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">ceFunction</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
633
+ <span class='line'>626</span> </span><span class="NAME">model._processIncludedCollectionEntities</span><span class="PUNC">(</span><span class="NAME">inJson._set.include</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
634
+ <span class='line'>627</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
635
+ <span class='line'>628</span> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="PUNC">[</span><span class="NAME">rio.Model.filterJson</span><span class="PUNC">(</span><span class="NAME">inJson._set.self</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">ceFunction</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
636
+ <span class='line'>629</span> </span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
637
+ <span class='line'>630</span> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="PUNC">[</span><span class="NAME">rio.Model.filterJson</span><span class="PUNC">(</span><span class="NAME">inJson</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">Prototype.emptyFunction</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
638
+ <span class='line'>631</span> </span><span class="PUNC">}</span><span class="WHIT">
639
+ <span class='line'>632</span> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
640
+ <span class='line'>633</span>
641
+ <span class='line'>634</span> </span><span class="NAME">_filterAndProcessJson</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">inJson</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
642
+ <span class='line'>635</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">results</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">model._filterAndProcessJsonWhileAccumulatingCollectionEntities</span><span class="PUNC">(</span><span class="NAME">inJson</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
643
+ <span class='line'>636</span> </span><span class="NAME">results</span><span class="PUNC">[</span><span class="NUMB">1</span><span class="PUNC">]</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
644
+ <span class='line'>637</span> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">results</span><span class="PUNC">[</span><span class="NUMB">0</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
645
+ <span class='line'>638</span> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
646
+ <span class='line'>639</span>
647
+ <span class='line'>640</span> </span><span class="NAME">_collectionEntityFromJson</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">json</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">parameters</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">url</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
648
+ <span class='line'>641</span> </span><span class="COMM">// In case multiple identical queries were made simultaneously</span><span class="WHIT">
649
+ <span class='line'>642</span> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this._collectionEntities</span><span class="PUNC">[</span><span class="NAME">url</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">"#"</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">Object.toJSON</span><span class="PUNC">(</span><span class="NAME">parameters.ajaxParameters</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">]</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
650
+ <span class='line'>643</span> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">this._collectionEntities</span><span class="PUNC">[</span><span class="NAME">url</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">"#"</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">Object.toJSON</span><span class="PUNC">(</span><span class="NAME">parameters.ajaxParameters</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
651
+ <span class='line'>644</span> </span><span class="PUNC">}</span><span class="WHIT">
652
+ <span class='line'>645</span>
653
+ <span class='line'>646</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">results</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">json.map</span><span class="PUNC">(</span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">result</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
654
+ <span class='line'>647</span> </span><span class="COMM">// This may cause bugs. It should map the results of _filterAndProcessJsonWhileAccumulatingCollectionEntities</span><span class="WHIT">
655
+ <span class='line'>648</span> </span><span class="COMM">// and execute them after them map to prevent reification collisions</span><span class="WHIT">
656
+ <span class='line'>649</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">modelJson</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">model._filterAndProcessJson</span><span class="PUNC">(</span><span class="NAME">result</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
657
+ <span class='line'>650</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">fromCache</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.getFromCache</span><span class="PUNC">(</span><span class="NAME">model.id</span><span class="PUNC">(</span><span class="NAME">modelJson.id</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
658
+ <span class='line'>651</span> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">fromCache</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
659
+ <span class='line'>652</span> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">fromCache</span><span class="PUNC">;</span><span class="WHIT">
660
+ <span class='line'>653</span> </span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
661
+ <span class='line'>654</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">lazyNew</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
662
+ <span class='line'>655</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">fromCache</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.getFromCache</span><span class="PUNC">(</span><span class="NAME">model.id</span><span class="PUNC">(</span><span class="NAME">modelJson.id</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
663
+ <span class='line'>656</span> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">fromCache</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">fromCache</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
664
+ <span class='line'>657</span> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">model</span><span class="PUNC">(</span><span class="NAME">modelJson</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
665
+ <span class='line'>658</span> </span><span class="PUNC">}</span><span class="PUNC">.</span><span class="NAME">bind</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
666
+ <span class='line'>659</span> </span><span class="NAME">lazyNew.__lazyNew</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">;</span><span class="WHIT">
667
+ <span class='line'>660</span> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">lazyNew</span><span class="PUNC">;</span><span class="WHIT">
668
+ <span class='line'>661</span> </span><span class="PUNC">}</span><span class="WHIT">
669
+ <span class='line'>662</span> </span><span class="PUNC">}</span><span class="PUNC">.</span><span class="NAME">bind</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
670
+ <span class='line'>663</span>
671
+ <span class='line'>664</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">collectionEntity</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">rio.CollectionEntity.create</span><span class="PUNC">(</span><span class="PUNC">{</span><span class="WHIT">
672
+ <span class='line'>665</span> </span><span class="NAME">model</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">model</span><span class="PUNC">,</span><span class="WHIT">
673
+ <span class='line'>666</span> </span><span class="NAME">values</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">results</span><span class="PUNC">,</span><span class="WHIT">
674
+ <span class='line'>667</span> </span><span class="NAME">condition</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">parameters.conditionFunction</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT">
675
+ <span class='line'>668</span> </span><span class="PUNC">}</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
676
+ <span class='line'>669</span> </span><span class="NAME">collectionEntity.prepare</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
677
+ <span class='line'>670</span> </span><span class="NAME">collectionEntity.prepare</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">Prototype.emptyFunction</span><span class="PUNC">;</span><span class="WHIT">
678
+ <span class='line'>671</span> </span><span class="COMM">// prevent the initialization from double adding the entities</span><span class="WHIT">
679
+ <span class='line'>672</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">oldAdd</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.add</span><span class="PUNC">;</span><span class="WHIT">
680
+ <span class='line'>673</span> </span><span class="KEYW">try</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
681
+ <span class='line'>674</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">i</span><span class="PUNC">;</span><span class="WHIT">
682
+ <span class='line'>675</span> </span><span class="NAME">this.add</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">Prototype.emptyFunction</span><span class="PUNC">;</span><span class="WHIT">
683
+ <span class='line'>676</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">timesToLoop</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.length</span><span class="PUNC">;</span><span class="WHIT">
684
+ <span class='line'>677</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">toRemove</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">[</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
685
+ <span class='line'>678</span> </span><span class="KEYW">for</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">i</span><span class="PUNC">=</span><span class="NUMB">0</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">i</span><span class="PUNC">&lt;</span><span class="NAME">timesToLoop</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">i</span><span class="PUNC">++</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
686
+ <span class='line'>679</span> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">[</span><span class="NAME">i</span><span class="PUNC">]</span><span class="PUNC">.</span><span class="NAME">__lazyNew</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
687
+ <span class='line'>680</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">modelInstance</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">this</span><span class="PUNC">[</span><span class="NAME">i</span><span class="PUNC">]</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
688
+ <span class='line'>681</span> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">this.include</span><span class="PUNC">(</span><span class="NAME">modelInstance</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
689
+ <span class='line'>682</span> </span><span class="KEYW">this</span><span class="PUNC">[</span><span class="NAME">i</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">modelInstance</span><span class="PUNC">;</span><span class="WHIT">
690
+ <span class='line'>683</span> </span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
691
+ <span class='line'>684</span> </span><span class="NAME">toRemove.push</span><span class="PUNC">(</span><span class="NAME">i</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
692
+ <span class='line'>685</span> </span><span class="PUNC">}</span><span class="WHIT">
693
+ <span class='line'>686</span> </span><span class="PUNC">}</span><span class="WHIT">
694
+ <span class='line'>687</span> </span><span class="PUNC">}</span><span class="WHIT">
695
+ <span class='line'>688</span> </span><span class="KEYW">for</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">i</span><span class="PUNC">=</span><span class="NAME">toRemove.length</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">i</span><span class="PUNC">--</span><span class="PUNC">;</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
696
+ <span class='line'>689</span> </span><span class="NAME">this.splice</span><span class="PUNC">(</span><span class="NAME">toRemove</span><span class="PUNC">[</span><span class="NAME">i</span><span class="PUNC">]</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">1</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
697
+ <span class='line'>690</span> </span><span class="PUNC">}</span><span class="WHIT">
698
+ <span class='line'>691</span> </span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">finally</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
699
+ <span class='line'>692</span> </span><span class="NAME">this.add</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">oldAdd</span><span class="PUNC">;</span><span class="WHIT">
700
+ <span class='line'>693</span> </span><span class="PUNC">}</span><span class="WHIT">
701
+ <span class='line'>694</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
702
+ <span class='line'>695</span> </span><span class="PUNC">(</span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
703
+ <span class='line'>696</span> </span><span class="COMM">// Ultimately we shouldn't need to do this</span><span class="WHIT">
704
+ <span class='line'>697</span> </span><span class="COMM">// This is required if when parsing eager loaded json collections</span><span class="WHIT">
705
+ <span class='line'>698</span> </span><span class="COMM">// contain individual entities that need to be added to other collection entities</span><span class="WHIT">
706
+ <span class='line'>699</span> </span><span class="COMM">// and the entity representing the eager collection is never loaded, hence prepared.</span><span class="WHIT">
707
+ <span class='line'>700</span> </span><span class="NAME">collectionEntity.prepare</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
708
+ <span class='line'>701</span> </span><span class="PUNC">}</span><span class="PUNC">.</span><span class="NAME">defer</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
709
+ <span class='line'>702</span> </span><span class="NAME">this.putCollectionEntity</span><span class="PUNC">(</span><span class="NAME">url</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">"#"</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">Object.toJSON</span><span class="PUNC">(</span><span class="NAME">parameters.ajaxParameters</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">collectionEntity</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
710
+ <span class='line'>703</span>
711
+ <span class='line'>704</span> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">collectionEntity</span><span class="PUNC">;</span><span class="WHIT">
712
+ <span class='line'>705</span> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
713
+ <span class='line'>706</span>
714
+ <span class='line'>707</span> </span><span class="NAME">_clientOnlyAttrs</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="PUNC">[</span><span class="PUNC">]</span><span class="PUNC">,</span><span class="WHIT">
715
+ <span class='line'>708</span>
716
+ <span class='line'>709</span> </span><span class="NAME">clientOnlyAttr</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">attrName</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
717
+ <span class='line'>710</span> </span><span class="NAME">this._clientOnlyAttrs.push</span><span class="PUNC">(</span><span class="NAME">attrName</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
718
+ <span class='line'>711</span> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
719
+ <span class='line'>712</span>
720
+ <span class='line'>713</span> </span><span class="NAME">_identityCache</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
721
+ <span class='line'>714</span>
722
+ <span class='line'>715</span> </span><span class="NAME">getFromCache</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">id</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
723
+ <span class='line'>716</span> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">id</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NAME">undefined</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT"> </span><span class="KEYW">return</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
724
+ <span class='line'>717</span> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">this._identityCache</span><span class="PUNC">[</span><span class="NAME">id.cacheKey</span><span class="WHIT"> </span><span class="PUNC">?</span><span class="WHIT"> </span><span class="NAME">id.cacheKey</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">id</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="NAME">this._identityCache</span><span class="PUNC">[</span><span class="NAME">model.id</span><span class="PUNC">(</span><span class="NAME">id</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="NAME">model.id</span><span class="PUNC">(</span><span class="NAME">id</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">cacheKey</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
725
+ <span class='line'>718</span> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
726
+ <span class='line'>719</span>
727
+ <span class='line'>720</span> </span><span class="NAME">putInCache</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">id</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">value</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
728
+ <span class='line'>721</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">cacheKey</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">id.cacheKey</span><span class="WHIT"> </span><span class="PUNC">?</span><span class="WHIT"> </span><span class="NAME">id.cacheKey</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">id</span><span class="PUNC">;</span><span class="WHIT">
729
+ <span class='line'>722</span> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this._identityCache</span><span class="PUNC">[</span><span class="NAME">cacheKey</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NAME">value</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
730
+ <span class='line'>723</span> </span><span class="KEYW">return</span><span class="PUNC">;</span><span class="WHIT">
731
+ <span class='line'>724</span> </span><span class="PUNC">}</span><span class="WHIT">
732
+ <span class='line'>725</span> </span><span class="NAME">this._identityCache</span><span class="PUNC">[</span><span class="NAME">cacheKey</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">value</span><span class="PUNC">;</span><span class="WHIT">
733
+ <span class='line'>726</span> </span><span class="NAME">this.addToCollectionEntities</span><span class="PUNC">(</span><span class="NAME">value</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
734
+ <span class='line'>727</span> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
735
+ <span class='line'>728</span>
736
+ <span class='line'>729</span> </span><span class="NAME">removeFromCache</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">id</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
737
+ <span class='line'>730</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">cacheKey</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">id.cacheKey</span><span class="WHIT"> </span><span class="PUNC">?</span><span class="WHIT"> </span><span class="NAME">id.cacheKey</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">id</span><span class="PUNC">;</span><span class="WHIT">
738
+ <span class='line'>731</span> </span><span class="KEYW">delete</span><span class="WHIT"> </span><span class="NAME">this._identityCache</span><span class="PUNC">[</span><span class="NAME">cacheKey</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
739
+ <span class='line'>732</span> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
740
+ <span class='line'>733</span>
741
+ <span class='line'>734</span> </span><span class="NAME">_collectionEntities</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
742
+ <span class='line'>735</span> </span><span class="NAME">putCollectionEntity</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">key</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">value</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
743
+ <span class='line'>736</span> </span><span class="NAME">this._collectionEntities</span><span class="PUNC">[</span><span class="NAME">key</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">value</span><span class="PUNC">;</span><span class="WHIT">
744
+ <span class='line'>737</span> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
745
+ <span class='line'>738</span>
746
+ <span class='line'>739</span> </span><span class="NAME">addToCollectionEntities</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">value</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
747
+ <span class='line'>740</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">ces</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this._collectionEntities</span><span class="PUNC">;</span><span class="WHIT">
748
+ <span class='line'>741</span> </span><span class="KEYW">for</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">key</span><span class="WHIT"> </span><span class="KEYW">in</span><span class="WHIT"> </span><span class="NAME">ces</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
749
+ <span class='line'>742</span> </span><span class="NAME">ces</span><span class="PUNC">[</span><span class="NAME">key</span><span class="PUNC">]</span><span class="PUNC">.</span><span class="NAME">add</span><span class="PUNC">(</span><span class="NAME">value</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
750
+ <span class='line'>743</span> </span><span class="PUNC">}</span><span class="WHIT">
751
+ <span class='line'>744</span> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
752
+ <span class='line'>745</span>
753
+ <span class='line'>746</span> </span><span class="NAME">updateInCollectionEntites</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">value</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
754
+ <span class='line'>747</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">ces</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this._collectionEntities</span><span class="PUNC">;</span><span class="WHIT">
755
+ <span class='line'>748</span> </span><span class="KEYW">for</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">key</span><span class="WHIT"> </span><span class="KEYW">in</span><span class="WHIT"> </span><span class="NAME">ces</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
756
+ <span class='line'>749</span> </span><span class="NAME">ces</span><span class="PUNC">[</span><span class="NAME">key</span><span class="PUNC">]</span><span class="PUNC">.</span><span class="NAME">update</span><span class="PUNC">(</span><span class="NAME">value</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
757
+ <span class='line'>750</span> </span><span class="PUNC">}</span><span class="WHIT">
758
+ <span class='line'>751</span> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
759
+ <span class='line'>752</span>
760
+ <span class='line'>753</span> </span><span class="NAME">removeFromCollectionEntities</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">value</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
761
+ <span class='line'>754</span> </span><span class="NAME">Object.values</span><span class="PUNC">(</span><span class="NAME">this._collectionEntities</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">each</span><span class="PUNC">(</span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">collectionEntity</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
762
+ <span class='line'>755</span> </span><span class="NAME">collectionEntity.remove</span><span class="PUNC">(</span><span class="NAME">value</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
763
+ <span class='line'>756</span> </span><span class="PUNC">}</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
764
+ <span class='line'>757</span> </span><span class="PUNC">}</span><span class="WHIT">
765
+ <span class='line'>758</span>
766
+ <span class='line'>759</span> </span><span class="PUNC">}</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
767
+ <span class='line'>760</span> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
768
+ <span class='line'>761</span>
769
+ <span class='line'>762</span> </span><span class="NAME">hasChannel</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
770
+ <span class='line'>763</span> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">;</span><span class="WHIT">
771
+ <span class='line'>764</span> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
772
+ <span class='line'>765</span>
773
+ <span class='line'>766</span> </span><span class="NAME">channel</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
774
+ <span class='line'>767</span> </span><span class="NAME">model.addMethods</span><span class="PUNC">(</span><span class="PUNC">{</span><span class="WHIT">
775
+ <span class='line'>768</span> </span><span class="NAME">broadcast</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
776
+ <span class='line'>769</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">args</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">$A</span><span class="PUNC">(</span><span class="NAME">arguments</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
777
+ <span class='line'>770</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">methodName</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">args.shift</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
778
+ <span class='line'>771</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">body</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
779
+ <span class='line'>772</span> </span><span class="NAME">id</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">this.getId</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">toString</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT">
780
+ <span class='line'>773</span> </span><span class="NAME">method</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">methodName</span><span class="PUNC">,</span><span class="WHIT">
781
+ <span class='line'>774</span> </span><span class="NAME">args</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">args</span><span class="WHIT">
782
+ <span class='line'>775</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
783
+ <span class='line'>776</span>
784
+ <span class='line'>777</span> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">Ajax.Request</span><span class="PUNC">(</span><span class="STRN">"/push/broadcast"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
785
+ <span class='line'>778</span> </span><span class="NAME">asynchronous</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">,</span><span class="WHIT">
786
+ <span class='line'>779</span> </span><span class="NAME">method</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="STRN">"get"</span><span class="PUNC">,</span><span class="WHIT">
787
+ <span class='line'>780</span> </span><span class="NAME">evalJSON</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">,</span><span class="WHIT">
788
+ <span class='line'>781</span> </span><span class="NAME">evalJS</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">,</span><span class="WHIT">
789
+ <span class='line'>782</span> </span><span class="NAME">parameters</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
790
+ <span class='line'>783</span> </span><span class="NAME">channel</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">this.channelName</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT">
791
+ <span class='line'>784</span> </span><span class="NAME">message</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">Object.toJSON</span><span class="PUNC">(</span><span class="NAME">body</span><span class="PUNC">)</span><span class="WHIT">
792
+ <span class='line'>785</span> </span><span class="PUNC">}</span><span class="WHIT">
793
+ <span class='line'>786</span> </span><span class="PUNC">}</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
794
+ <span class='line'>787</span> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
795
+ <span class='line'>788</span>
796
+ <span class='line'>789</span> </span><span class="NAME">channelName</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
797
+ <span class='line'>790</span> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">model</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">"."</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">this.getId</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
798
+ <span class='line'>791</span> </span><span class="PUNC">}</span><span class="WHIT">
799
+ <span class='line'>792</span> </span><span class="PUNC">}</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
800
+ <span class='line'>793</span>
801
+ <span class='line'>794</span> </span><span class="NAME">Object.extend</span><span class="PUNC">(</span><span class="NAME">model</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
802
+ <span class='line'>795</span> </span><span class="NAME">hasChannel</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
803
+ <span class='line'>796</span>
804
+ <span class='line'>797</span> </span><span class="NAME">receiveBroadcast</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">options</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
805
+ <span class='line'>798</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">instance</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">model.getFromCache</span><span class="PUNC">(</span><span class="NAME">model.id</span><span class="PUNC">(</span><span class="NAME">options.id</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
806
+ <span class='line'>799</span> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">instance</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
807
+ <span class='line'>800</span> </span><span class="NAME">instance</span><span class="PUNC">[</span><span class="NAME">options.method</span><span class="PUNC">]</span><span class="PUNC">.</span><span class="NAME">apply</span><span class="PUNC">(</span><span class="NAME">instance</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">options.args</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
808
+ <span class='line'>801</span> </span><span class="PUNC">}</span><span class="WHIT">
809
+ <span class='line'>802</span> </span><span class="PUNC">}</span><span class="WHIT">
810
+ <span class='line'>803</span> </span><span class="PUNC">}</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
811
+ <span class='line'>804</span> </span><span class="PUNC">}</span><span class="WHIT">
812
+ <span class='line'>805</span> </span><span class="PUNC">}</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
813
+ <span class='line'>806</span>
814
+ <span class='line'>807</span> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">args.length</span><span class="WHIT"> </span><span class="PUNC">></span><span class="WHIT"> </span><span class="NUMB">0</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="NAME">args.last</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">!=</span><span class="WHIT"> </span><span class="NAME">undefined</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="PUNC">!</span><span class="NAME">args.last</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">ATTR</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
815
+ <span class='line'>808</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">initializers</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">args.last</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
816
+ <span class='line'>809</span> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">Object.isString</span><span class="PUNC">(</span><span class="NAME">initializers.resource</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
817
+ <span class='line'>810</span> </span><span class="NAME">model.resource</span><span class="PUNC">(</span><span class="NAME">initializers.resource</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
818
+ <span class='line'>811</span> </span><span class="PUNC">}</span><span class="WHIT">
819
+ <span class='line'>812</span> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">initializers.channel</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
820
+ <span class='line'>813</span> </span><span class="NAME">model.channel</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
821
+ <span class='line'>814</span> </span><span class="PUNC">}</span><span class="WHIT">
822
+ <span class='line'>815</span>
823
+ <span class='line'>816</span> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">initializers.hasMany</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
824
+ <span class='line'>817</span> </span><span class="NAME">initializers.hasMany.each</span><span class="PUNC">(</span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">h</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
825
+ <span class='line'>818</span> </span><span class="NAME">model.hasMany</span><span class="PUNC">(</span><span class="NAME">h</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
826
+ <span class='line'>819</span> </span><span class="PUNC">}</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
827
+ <span class='line'>820</span> </span><span class="PUNC">}</span><span class="WHIT">
828
+ <span class='line'>821</span>
829
+ <span class='line'>822</span> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">initializers.belongsTo</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
830
+ <span class='line'>823</span> </span><span class="NAME">initializers.belongsTo.each</span><span class="PUNC">(</span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">h</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
831
+ <span class='line'>824</span> </span><span class="NAME">model.belongsTo</span><span class="PUNC">(</span><span class="NAME">h</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
832
+ <span class='line'>825</span> </span><span class="PUNC">}</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
833
+ <span class='line'>826</span> </span><span class="PUNC">}</span><span class="WHIT">
834
+ <span class='line'>827</span>
835
+ <span class='line'>828</span> </span><span class="PUNC">(</span><span class="NAME">initializers.clientOnlyAttrs</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="PUNC">[</span><span class="PUNC">]</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">each</span><span class="PUNC">(</span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">clientOnlyAttr</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
836
+ <span class='line'>829</span> </span><span class="NAME">model.clientOnlyAttr</span><span class="PUNC">(</span><span class="NAME">clientOnlyAttr</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
837
+ <span class='line'>830</span> </span><span class="PUNC">}</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
838
+ <span class='line'>831</span>
839
+ <span class='line'>832</span> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">initializers.undoEnabled</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
840
+ <span class='line'>833</span> </span><span class="NAME">model.undoEnabled</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">;</span><span class="WHIT">
841
+ <span class='line'>834</span> </span><span class="PUNC">}</span><span class="WHIT">
842
+ <span class='line'>835</span>
843
+ <span class='line'>836</span> </span><span class="NAME">rio.Model.extend</span><span class="PUNC">(</span><span class="NAME">model</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">initializers.methods</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="PUNC">}</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
844
+ <span class='line'>837</span> </span><span class="PUNC">}</span><span class="WHIT">
845
+ <span class='line'>838</span>
846
+ <span class='line'>839</span> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">model</span><span class="PUNC">;</span><span class="WHIT">
847
+ <span class='line'>840</span> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
848
+ <span class='line'>841</span>
849
+ <span class='line'>842</span> </span><span class="NAME">_findAllRequests</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="PUNC">[</span><span class="PUNC">]</span><span class="PUNC">,</span><span class="WHIT">
850
+ <span class='line'>843</span> </span><span class="NAME">afterActiveQueries</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">fcn</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
851
+ <span class='line'>844</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">count</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">;</span><span class="WHIT">
852
+ <span class='line'>845</span> </span><span class="NAME">this._findAllRequests.each</span><span class="PUNC">(</span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">far</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
853
+ <span class='line'>846</span> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">far._complete</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT"> </span><span class="KEYW">return</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
854
+ <span class='line'>847</span> </span><span class="NAME">count</span><span class="PUNC">++</span><span class="PUNC">;</span><span class="WHIT">
855
+ <span class='line'>848</span> </span><span class="NAME">far.options.onComplete</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">far.options.onComplete</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="NAME">Prototype.emptyFunction</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">wrap</span><span class="PUNC">(</span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">proceed</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
856
+ <span class='line'>849</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">ret</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">proceed</span><span class="PUNC">(</span><span class="NAME">arguments</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
857
+ <span class='line'>850</span> </span><span class="NAME">count</span><span class="PUNC">--</span><span class="PUNC">;</span><span class="WHIT">
858
+ <span class='line'>851</span> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">count</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT"> </span><span class="NAME">fcn</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
859
+ <span class='line'>852</span> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">ret</span><span class="PUNC">;</span><span class="WHIT">
860
+ <span class='line'>853</span> </span><span class="PUNC">}</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
861
+ <span class='line'>854</span> </span><span class="PUNC">}</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
862
+ <span class='line'>855</span> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">count</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT"> </span><span class="NAME">fcn</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
863
+ <span class='line'>856</span> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
864
+ <span class='line'>857</span>
865
+ <span class='line'>858</span> </span><span class="NAME">filterJson</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">json</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
866
+ <span class='line'>859</span> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">json.attributes</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">json.attributes</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
867
+ <span class='line'>860</span> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">rio.environment.includeRootInJson</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">?</span><span class="WHIT"> </span><span class="NAME">Object.values</span><span class="PUNC">(</span><span class="NAME">json</span><span class="PUNC">)</span><span class="PUNC">[</span><span class="NUMB">0</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">json</span><span class="PUNC">;</span><span class="WHIT">
868
+ <span class='line'>861</span> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
869
+ <span class='line'>862</span>
870
+ <span class='line'>863</span> </span><span class="NAME">remoteCreate</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">options</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
871
+ <span class='line'>864</span> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">options.transactionKey</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NAME">rio.environment.transactionKey</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT"> </span><span class="KEYW">return</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
872
+ <span class='line'>865</span> </span><span class="KEYW">try</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
873
+ <span class='line'>866</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">results</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">rio.Model.doRemoteCreate</span><span class="PUNC">(</span><span class="NAME">options</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
874
+ <span class='line'>867</span> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">results.undoFunction</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
875
+ <span class='line'>868</span> </span><span class="NAME">rio.Undo.registerUndo</span><span class="PUNC">(</span><span class="NAME">results.undoFunction</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
876
+ <span class='line'>869</span> </span><span class="PUNC">}</span><span class="WHIT">
877
+ <span class='line'>870</span> </span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">catch</span><span class="PUNC">(</span><span class="NAME">e</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
878
+ <span class='line'>871</span> </span><span class="NAME">rio.error</span><span class="PUNC">(</span><span class="NAME">e</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"Remote create error!"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
879
+ <span class='line'>872</span> </span><span class="PUNC">}</span><span class="WHIT">
880
+ <span class='line'>873</span> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
881
+ <span class='line'>874</span>
882
+ <span class='line'>875</span> </span><span class="NAME">remoteUpdate</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">options</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
883
+ <span class='line'>876</span> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">options.transactionKey</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NAME">rio.environment.transactionKey</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT"> </span><span class="KEYW">return</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
884
+ <span class='line'>877</span> </span><span class="KEYW">try</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
885
+ <span class='line'>878</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">results</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">rio.Model.doRemoteUpdate</span><span class="PUNC">(</span><span class="NAME">options</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
886
+ <span class='line'>879</span> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">results.undoFunction</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
887
+ <span class='line'>880</span> </span><span class="NAME">rio.Undo.registerUndo</span><span class="PUNC">(</span><span class="NAME">results.undoFunction</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
888
+ <span class='line'>881</span> </span><span class="PUNC">}</span><span class="WHIT">
889
+ <span class='line'>882</span> </span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">catch</span><span class="PUNC">(</span><span class="NAME">e</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
890
+ <span class='line'>883</span> </span><span class="NAME">rio.error</span><span class="PUNC">(</span><span class="NAME">e</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"Remote update error!"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
891
+ <span class='line'>884</span> </span><span class="PUNC">}</span><span class="WHIT">
892
+ <span class='line'>885</span> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
893
+ <span class='line'>886</span>
894
+ <span class='line'>887</span> </span><span class="NAME">remoteDestroy</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">options</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
895
+ <span class='line'>888</span> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">options.transactionKey</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NAME">rio.environment.transactionKey</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT"> </span><span class="KEYW">return</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
896
+ <span class='line'>889</span> </span><span class="KEYW">try</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
897
+ <span class='line'>890</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">results</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">rio.Model.doRemoteDestroy</span><span class="PUNC">(</span><span class="NAME">options</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
898
+ <span class='line'>891</span> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">results.undoFunction</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
899
+ <span class='line'>892</span> </span><span class="NAME">rio.Undo.registerUndo</span><span class="PUNC">(</span><span class="NAME">results.undoFunction</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
900
+ <span class='line'>893</span> </span><span class="PUNC">}</span><span class="WHIT">
901
+ <span class='line'>894</span> </span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">catch</span><span class="PUNC">(</span><span class="NAME">e</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
902
+ <span class='line'>895</span> </span><span class="NAME">rio.error</span><span class="PUNC">(</span><span class="NAME">e</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"Remote destroy error!"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
903
+ <span class='line'>896</span> </span><span class="PUNC">}</span><span class="WHIT">
904
+ <span class='line'>897</span> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
905
+ <span class='line'>898</span>
906
+ <span class='line'>899</span> </span><span class="NAME">doRemoteCreate</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">options</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
907
+ <span class='line'>900</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">model</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">rio.models</span><span class="PUNC">[</span><span class="NAME">options.name</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
908
+ <span class='line'>901</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">fromCache</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">model.getFromCache</span><span class="PUNC">(</span><span class="NAME">model.id</span><span class="PUNC">(</span><span class="NAME">options.id</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
909
+ <span class='line'>902</span> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">fromCache</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
910
+ <span class='line'>903</span> </span><span class="NAME">fromCache</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">model</span><span class="PUNC">(</span><span class="NAME">model._filterAndProcessJson</span><span class="PUNC">(</span><span class="NAME">options.json</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
911
+ <span class='line'>904</span> </span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
912
+ <span class='line'>905</span> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
913
+ <span class='line'>906</span> </span><span class="PUNC">}</span><span class="WHIT">
914
+ <span class='line'>907</span>
915
+ <span class='line'>908</span> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
916
+ <span class='line'>909</span> </span><span class="NAME">undoFunction</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">model.undoEnabled</span><span class="WHIT"> </span><span class="PUNC">?</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
917
+ <span class='line'>910</span> </span><span class="NAME">model.getFromCache</span><span class="PUNC">(</span><span class="NAME">fromCache.getId</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">destroy</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
918
+ <span class='line'>911</span> </span><span class="PUNC">}</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="WHIT">
919
+ <span class='line'>912</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
920
+ <span class='line'>913</span> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
921
+ <span class='line'>914</span>
922
+ <span class='line'>915</span> </span><span class="NAME">doRemoteUpdate</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">options</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
923
+ <span class='line'>916</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">model</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">rio.models</span><span class="PUNC">[</span><span class="NAME">options.name</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
924
+ <span class='line'>917</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">instance</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">model.getFromCache</span><span class="PUNC">(</span><span class="NAME">model.id</span><span class="PUNC">(</span><span class="NAME">options.id</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
925
+ <span class='line'>918</span> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">instance</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
926
+ <span class='line'>919</span> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
927
+ <span class='line'>920</span> </span><span class="PUNC">}</span><span class="WHIT">
928
+ <span class='line'>921</span>
929
+ <span class='line'>922</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">json</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">model._filterAndProcessJson</span><span class="PUNC">(</span><span class="NAME">options.json</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
930
+ <span class='line'>923</span>
931
+ <span class='line'>924</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">results</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
932
+ <span class='line'>925</span>
933
+ <span class='line'>926</span> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">model.undoEnabled</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
934
+ <span class='line'>927</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">oldState</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">instance.attributeState</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
935
+ <span class='line'>928</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">processUndo</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
936
+ <span class='line'>929</span> </span><span class="NAME">model.getFromCache</span><span class="PUNC">(</span><span class="NAME">instance.getId</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">updateAttributes</span><span class="PUNC">(</span><span class="NAME">oldState</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
937
+ <span class='line'>930</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
938
+ <span class='line'>931</span> </span><span class="NAME">results.undoFunction</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">processUndo</span><span class="PUNC">;</span><span class="WHIT">
939
+ <span class='line'>932</span> </span><span class="PUNC">}</span><span class="WHIT">
940
+ <span class='line'>933</span>
941
+ <span class='line'>934</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">attributes</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">Object.keys</span><span class="PUNC">(</span><span class="NAME">json</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">without</span><span class="PUNC">(</span><span class="STRN">"id"</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">inject</span><span class="PUNC">(</span><span class="PUNC">{</span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">acc</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">k</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
942
+ <span class='line'>935</span> </span><span class="NAME">acc</span><span class="PUNC">[</span><span class="NAME">k.camelize</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">json</span><span class="PUNC">[</span><span class="NAME">k</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
943
+ <span class='line'>936</span> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">acc</span><span class="PUNC">;</span><span class="WHIT">
944
+ <span class='line'>937</span> </span><span class="PUNC">}</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
945
+ <span class='line'>938</span> </span><span class="NAME">instance.updateAttributes</span><span class="PUNC">(</span><span class="NAME">attributes</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT"> </span><span class="NAME">skipSave</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
946
+ <span class='line'>939</span> </span><span class="NAME">rio.models</span><span class="PUNC">[</span><span class="NAME">options.name</span><span class="PUNC">]</span><span class="PUNC">.</span><span class="NAME">updateInCollectionEntites</span><span class="PUNC">(</span><span class="NAME">instance</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
947
+ <span class='line'>940</span>
948
+ <span class='line'>941</span> </span><span class="NAME">instance._lastSavedState</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">instance.attributeState</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
949
+ <span class='line'>942</span>
950
+ <span class='line'>943</span> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">results</span><span class="PUNC">;</span><span class="WHIT">
951
+ <span class='line'>944</span> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
952
+ <span class='line'>945</span>
953
+ <span class='line'>946</span> </span><span class="NAME">doRemoteDestroy</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">options</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
954
+ <span class='line'>947</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">model</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">rio.models</span><span class="PUNC">[</span><span class="NAME">options.name</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
955
+ <span class='line'>948</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">fromCache</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">model.getFromCache</span><span class="PUNC">(</span><span class="NAME">model.id</span><span class="PUNC">(</span><span class="NAME">options.id</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
956
+ <span class='line'>949</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">results</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
957
+ <span class='line'>950</span>
958
+ <span class='line'>951</span> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">fromCache</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
959
+ <span class='line'>952</span> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">model.undoEnabled</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
960
+ <span class='line'>953</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">oldState</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">fromCache.attributeState</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
961
+ <span class='line'>954</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">processUndo</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
962
+ <span class='line'>955</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">instance</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">model</span><span class="PUNC">(</span><span class="NAME">Object.extend</span><span class="PUNC">(</span><span class="PUNC">{</span><span class="NAME">id</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">fromCache.getId</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">oldState</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
963
+ <span class='line'>956</span> </span><span class="NAME">instance._lastSavedState</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">undefined</span><span class="PUNC">;</span><span class="WHIT">
964
+ <span class='line'>957</span> </span><span class="NAME">instance.save</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
965
+ <span class='line'>958</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
966
+ <span class='line'>959</span> </span><span class="NAME">results.undoFunction</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">processUndo</span><span class="PUNC">;</span><span class="WHIT">
967
+ <span class='line'>960</span> </span><span class="PUNC">}</span><span class="WHIT">
968
+ <span class='line'>961</span>
969
+ <span class='line'>962</span> </span><span class="NAME">fromCache.removeFromCaches</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
970
+ <span class='line'>963</span>
971
+ <span class='line'>964</span> </span><span class="NAME">fromCache.fire</span><span class="PUNC">(</span><span class="STRN">"destroy"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
972
+ <span class='line'>965</span> </span><span class="PUNC">}</span><span class="WHIT">
973
+ <span class='line'>966</span>
974
+ <span class='line'>967</span> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">results</span><span class="PUNC">;</span><span class="WHIT">
975
+ <span class='line'>968</span> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
976
+ <span class='line'>969</span>
977
+ <span class='line'>970</span> </span><span class="NAME">remoteTransaction</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">transactionData</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
978
+ <span class='line'>971</span> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">transactionData.transactionKey</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NAME">rio.environment.transactionKey</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT"> </span><span class="KEYW">return</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
979
+ <span class='line'>972</span> </span><span class="KEYW">try</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
980
+ <span class='line'>973</span> </span><span class="COMM">// TODO: Two potential bugs here</span><span class="WHIT">
981
+ <span class='line'>974</span> </span><span class="COMM">//</span><span class="WHIT">
982
+ <span class='line'>975</span> </span><span class="COMM">// 1) Need to execute this in a rio.Attr.transaction</span><span class="WHIT">
983
+ <span class='line'>976</span> </span><span class="COMM">// 2) Need to get back the collection entity process functions from _filterAndProcessJsonWhileAccumulatingCollectionEntities</span><span class="WHIT">
984
+ <span class='line'>977</span> </span><span class="COMM">// and run them at the end. Otherwise we might have reification collisions.</span><span class="WHIT">
985
+ <span class='line'>978</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">resultSets</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">transactionData.transaction.map</span><span class="PUNC">(</span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">t</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
986
+ <span class='line'>979</span> </span><span class="KEYW">switch</span><span class="PUNC">(</span><span class="NAME">t.action</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
987
+ <span class='line'>980</span> </span><span class="KEYW">case</span><span class="WHIT"> </span><span class="STRN">"create"</span><span class="PUNC">:</span><span class="WHIT">
988
+ <span class='line'>981</span> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">rio.Model.doRemoteCreate</span><span class="PUNC">(</span><span class="NAME">t</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
989
+ <span class='line'>982</span> </span><span class="KEYW">case</span><span class="WHIT"> </span><span class="STRN">"update"</span><span class="PUNC">:</span><span class="WHIT">
990
+ <span class='line'>983</span> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">rio.Model.doRemoteUpdate</span><span class="PUNC">(</span><span class="NAME">t</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
991
+ <span class='line'>984</span> </span><span class="KEYW">case</span><span class="WHIT"> </span><span class="STRN">"destroy"</span><span class="PUNC">:</span><span class="WHIT">
992
+ <span class='line'>985</span> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">rio.Model.doRemoteDestroy</span><span class="PUNC">(</span><span class="NAME">t</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
993
+ <span class='line'>986</span> </span><span class="PUNC">}</span><span class="WHIT">
994
+ <span class='line'>987</span> </span><span class="PUNC">}</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
995
+ <span class='line'>988</span>
996
+ <span class='line'>989</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">undos</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">resultSets.map</span><span class="PUNC">(</span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">r</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">r.undoFunction</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">compact</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
997
+ <span class='line'>990</span>
998
+ <span class='line'>991</span> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">undos.empty</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
999
+ <span class='line'>992</span> </span><span class="NAME">rio.Undo.registerUndo</span><span class="PUNC">(</span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
1000
+ <span class='line'>993</span> </span><span class="NAME">undos.each</span><span class="PUNC">(</span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">undo</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
1001
+ <span class='line'>994</span> </span><span class="NAME">undo</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
1002
+ <span class='line'>995</span> </span><span class="PUNC">}</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
1003
+ <span class='line'>996</span> </span><span class="PUNC">}</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
1004
+ <span class='line'>997</span> </span><span class="PUNC">}</span><span class="WHIT">
1005
+ <span class='line'>998</span> </span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">catch</span><span class="PUNC">(</span><span class="NAME">e</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
1006
+ <span class='line'>999</span> </span><span class="NAME">rio.error</span><span class="PUNC">(</span><span class="NAME">e</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"Remote transaction error!"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
1007
+ <span class='line'>1000</span> </span><span class="PUNC">}</span><span class="WHIT">
1008
+ <span class='line'>1001</span> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
1009
+ <span class='line'>1002</span>
1010
+ <span class='line'>1003</span> </span><span class="NAME">extend</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">model</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">extension</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
1011
+ <span class='line'>1004</span>
1012
+ <span class='line'>1005</span> </span><span class="NAME">extension.__initialize</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">extension.initialize</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="NAME">Prototype.emptyFunction</span><span class="PUNC">;</span><span class="WHIT">
1013
+ <span class='line'>1006</span> </span><span class="NAME">extension.initialize</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">options</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
1014
+ <span class='line'>1007</span> </span><span class="NAME">this.__model</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">model</span><span class="PUNC">;</span><span class="WHIT">
1015
+ <span class='line'>1008</span>
1016
+ <span class='line'>1009</span> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">options.id</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NAME">undefined</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="NAME">model.url</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
1017
+ <span class='line'>1010</span> </span><span class="NAME">options.id</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">model.id</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
1018
+ <span class='line'>1011</span> </span><span class="NAME">this._id</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">options.id</span><span class="PUNC">;</span><span class="WHIT">
1019
+ <span class='line'>1012</span> </span><span class="PUNC">}</span><span class="WHIT">
1020
+ <span class='line'>1013</span>
1021
+ <span class='line'>1014</span> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">options.id</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="NAME">options.id.constructor</span><span class="WHIT"> </span><span class="PUNC">!=</span><span class="WHIT"> </span><span class="NAME">rio.Id</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="NAME">model.id</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
1022
+ <span class='line'>1015</span> </span><span class="NAME">options.id</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">model.id</span><span class="PUNC">(</span><span class="NAME">options.id</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
1023
+ <span class='line'>1016</span> </span><span class="NAME">this.setId</span><span class="PUNC">(</span><span class="NAME">options.id</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
1024
+ <span class='line'>1017</span> </span><span class="PUNC">}</span><span class="WHIT">
1025
+ <span class='line'>1018</span>
1026
+ <span class='line'>1019</span> </span><span class="PUNC">(</span><span class="NAME">this.__initialize.bind</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">(</span><span class="NAME">options</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
1027
+ <span class='line'>1020</span>
1028
+ <span class='line'>1021</span> </span><span class="COMM">// Add the hasManyAssocitation#create methods</span><span class="WHIT">
1029
+ <span class='line'>1022</span> </span><span class="NAME">Object.keys</span><span class="PUNC">(</span><span class="NAME">model._hasManyAssociations</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">each</span><span class="PUNC">(</span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">hasManyName</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
1030
+ <span class='line'>1023</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">options</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">model._hasManyAssociations</span><span class="PUNC">[</span><span class="NAME">hasManyName</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
1031
+ <span class='line'>1024</span> </span><span class="KEYW">this</span><span class="PUNC">[</span><span class="NAME">hasManyName</span><span class="PUNC">]</span><span class="PUNC">.</span><span class="NAME">create</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">createOptions</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
1032
+ <span class='line'>1025</span> </span><span class="COMM">// In the case that the entity is still new, we should preload the association</span><span class="WHIT">
1033
+ <span class='line'>1026</span> </span><span class="COMM">// to make sure no entries are missed</span><span class="WHIT">
1034
+ <span class='line'>1027</span> </span><span class="COMM">// TODO: before we can wrap in isNew, we need to make the spec fixture proxy include created entities</span><span class="WHIT">
1035
+ <span class='line'>1028</span> </span><span class="COMM">// if (this.isNew()) {</span><span class="WHIT">
1036
+ <span class='line'>1029</span> </span><span class="KEYW">this</span><span class="PUNC">[</span><span class="PUNC">(</span><span class="STRN">"get-"</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">hasManyName</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">camelize</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">]</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
1037
+ <span class='line'>1030</span> </span><span class="COMM">// }</span><span class="WHIT">
1038
+ <span class='line'>1031</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">parameters</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">Object.clone</span><span class="PUNC">(</span><span class="NAME">options.parameters</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
1039
+ <span class='line'>1032</span> </span><span class="NAME">parameters</span><span class="PUNC">[</span><span class="NAME">options.foreignKey</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.getId</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
1040
+ <span class='line'>1033</span> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">rio.models</span><span class="PUNC">[</span><span class="NAME">options.className</span><span class="PUNC">]</span><span class="PUNC">.</span><span class="NAME">create</span><span class="PUNC">(</span><span class="NAME">Object.extend</span><span class="PUNC">(</span><span class="NAME">createOptions</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">parameters</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
1041
+ <span class='line'>1034</span> </span><span class="PUNC">}</span><span class="PUNC">.</span><span class="NAME">bind</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
1042
+ <span class='line'>1035</span> </span><span class="PUNC">}</span><span class="PUNC">.</span><span class="NAME">bind</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
1043
+ <span class='line'>1036</span>
1044
+ <span class='line'>1037</span> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">model.hasChannel</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
1045
+ <span class='line'>1038</span> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">rio.push</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
1046
+ <span class='line'>1039</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">addChannel</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
1047
+ <span class='line'>1040</span> </span><span class="NAME">rio.push.addChannel</span><span class="PUNC">(</span><span class="NAME">this.channelName</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
1048
+ <span class='line'>1041</span> </span><span class="PUNC">}</span><span class="PUNC">.</span><span class="NAME">bind</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
1049
+ <span class='line'>1042</span> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">options.id</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="NAME">options.id.temporary</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
1050
+ <span class='line'>1043</span> </span><span class="NAME">options.id.doAfterReification</span><span class="PUNC">(</span><span class="NAME">addChannel</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
1051
+ <span class='line'>1044</span> </span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
1052
+ <span class='line'>1045</span> </span><span class="NAME">addChannel</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
1053
+ <span class='line'>1046</span> </span><span class="PUNC">}</span><span class="WHIT">
1054
+ <span class='line'>1047</span> </span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
1055
+ <span class='line'>1048</span> </span><span class="NAME">rio.warn</span><span class="PUNC">(</span><span class="STRN">"Attempted to add a channel without an available push server"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
1056
+ <span class='line'>1049</span> </span><span class="PUNC">}</span><span class="WHIT">
1057
+ <span class='line'>1050</span> </span><span class="PUNC">}</span><span class="WHIT">
1058
+ <span class='line'>1051</span>
1059
+ <span class='line'>1052</span> </span><span class="NAME">options</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">options</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
1060
+ <span class='line'>1053</span> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">options.id</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="NAME">model.url</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
1061
+ <span class='line'>1054</span> </span><span class="NAME">model.putInCache</span><span class="PUNC">(</span><span class="NAME">options.id</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">this</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
1062
+ <span class='line'>1055</span> </span><span class="PUNC">}</span><span class="WHIT">
1063
+ <span class='line'>1056</span> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">options.id</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="NAME">options.id.temporary</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="PUNC">!</span><span class="NAME">options.id.temporary</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
1064
+ <span class='line'>1057</span> </span><span class="NAME">this._lastSavedState</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.attributeState</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
1065
+ <span class='line'>1058</span> </span><span class="PUNC">}</span><span class="WHIT">
1066
+ <span class='line'>1059</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
1067
+ <span class='line'>1060</span>
1068
+ <span class='line'>1061</span> </span><span class="NAME">rio.Attr.extend</span><span class="PUNC">(</span><span class="NAME">model</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">extension</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
1069
+ <span class='line'>1062</span> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
1070
+ <span class='line'>1063</span>
1071
+ <span class='line'>1064</span> </span><span class="NAME">toString</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
1072
+ <span class='line'>1065</span> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="STRN">"Model"</span><span class="PUNC">;</span><span class="WHIT">
1073
+ <span class='line'>1066</span> </span><span class="PUNC">}</span><span class="WHIT">
1074
+ <span class='line'>1067</span> </span><span class="PUNC">}</span><span class="PUNC">;</span></pre></body></html>