sproutcore 1.9.2 → 1.10.0.rc.1

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 (746) hide show
  1. checksums.yaml +15 -0
  2. data/VERSION.yml +2 -2
  3. data/bin/sc-build +12 -9
  4. data/bin/sc-build-number +12 -9
  5. data/bin/sc-docs +12 -15
  6. data/bin/sc-gen +12 -9
  7. data/bin/sc-init +12 -9
  8. data/bin/sc-manifest +12 -9
  9. data/bin/sc-server +12 -9
  10. data/bin/sproutcore +12 -9
  11. data/lib/frameworks/sproutcore/Buildfile +14 -17
  12. data/lib/frameworks/sproutcore/CHANGELOG.md +214 -3
  13. data/lib/frameworks/sproutcore/README.md +4 -1
  14. data/lib/frameworks/sproutcore/apps/greenhouse/Buildfile +13 -0
  15. data/lib/frameworks/sproutcore/{frameworks/experimental/apps/greenhouse/README → apps/greenhouse/README.md} +1 -1
  16. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/TODO +0 -0
  17. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/beautify.js +0 -0
  18. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/controllers/design.js +3 -3
  19. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/controllers/file.js +3 -3
  20. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/controllers/files.js +3 -3
  21. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/controllers/layout.js +9 -9
  22. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/controllers/library.js +23 -23
  23. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/controllers/page.js +1 -1
  24. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/controllers/property.js +1 -1
  25. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/controllers/property_editor.js +2 -2
  26. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/controllers/target.js +1 -1
  27. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/controllers/targets.js +12 -12
  28. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/controllers/view_configs.js +15 -15
  29. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/core.js +14 -14
  30. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/core_file.js +0 -0
  31. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/data_source.js +42 -42
  32. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/app_page.js +45 -45
  33. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/css/app-selector.css +0 -0
  34. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/css/button.css +0 -0
  35. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/css/dock.css +0 -0
  36. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/css/general.css +0 -0
  37. data/lib/frameworks/sproutcore/apps/greenhouse/english.lproj/css/icons.css +5 -0
  38. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/css/main-page.css +0 -0
  39. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/css/menu.css +0 -0
  40. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/css/modal.css +0 -0
  41. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/css/picker.css +0 -0
  42. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/css/search.css +0 -0
  43. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/css/text-field.css +0 -0
  44. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/dialogs.js +0 -0
  45. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/fonts/museosans_500.eot +0 -0
  46. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/fonts/museosans_500.otf +0 -0
  47. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/fonts/museosans_500.woff +0 -0
  48. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/fonts/museosans_500_italic.eot +0 -0
  49. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/fonts/museosans_500_italic.otf +0 -0
  50. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/fonts/museosans_500_italic.woff +0 -0
  51. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/app-selector/choose-app.png +0 -0
  52. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/app-selector/list-item-sel.png +0 -0
  53. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/buttons/capsule-xl/active-l.png +0 -0
  54. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/buttons/capsule-xl/active-m.png +0 -0
  55. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/buttons/capsule-xl/active-r.png +0 -0
  56. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/buttons/capsule-xl/regular-l.png +0 -0
  57. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/buttons/capsule-xl/regular-m.png +0 -0
  58. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/buttons/capsule-xl/regular-r.png +0 -0
  59. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/buttons/capsule/active-l.png +0 -0
  60. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/buttons/capsule/active-r.png +0 -0
  61. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/buttons/capsule/disabled-l.png +0 -0
  62. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/buttons/capsule/disabled-r.png +0 -0
  63. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/buttons/capsule/regular-l.png +0 -0
  64. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/buttons/capsule/regular-r.png +0 -0
  65. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/buttons/capsule/sel-active-l.png +0 -0
  66. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/buttons/capsule/sel-active-r.png +0 -0
  67. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/buttons/capsule/sel-disabled-l.png +0 -0
  68. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/buttons/capsule/sel-disabled-r.png +0 -0
  69. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/buttons/capsule/sel-l.png +0 -0
  70. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/buttons/capsule/sel-r.png +0 -0
  71. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/buttons/dark/active-l.png +0 -0
  72. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/buttons/dark/active-m.png +0 -0
  73. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/buttons/dark/active-r.png +0 -0
  74. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/buttons/dark/cap-active-l.png +0 -0
  75. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/buttons/dark/cap-active-r.png +0 -0
  76. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/buttons/dark/cap-l.png +0 -0
  77. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/buttons/dark/cap-r.png +0 -0
  78. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/buttons/dark/cap-sel-active-l.png +0 -0
  79. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/buttons/dark/cap-sel-active-r.png +0 -0
  80. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/buttons/dark/cap-sel-l.png +0 -0
  81. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/buttons/dark/cap-sel-r.png +0 -0
  82. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/buttons/dark/disabled-l.png +0 -0
  83. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/buttons/dark/disabled-m.png +0 -0
  84. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/buttons/dark/disabled-r.png +0 -0
  85. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/buttons/dark/regular-l.png +0 -0
  86. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/buttons/dark/regular-m.png +0 -0
  87. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/buttons/dark/regular-r.png +0 -0
  88. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/buttons/dark/sel-active-l.png +0 -0
  89. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/buttons/dark/sel-active-m.png +0 -0
  90. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/buttons/dark/sel-active-r.png +0 -0
  91. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/buttons/dark/sel-disabled-l.png +0 -0
  92. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/buttons/dark/sel-disabled-m.png +0 -0
  93. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/buttons/dark/sel-disabled-r.png +0 -0
  94. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/buttons/dark/sel-l.png +0 -0
  95. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/buttons/dark/sel-m.png +0 -0
  96. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/buttons/dark/sel-r.png +0 -0
  97. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/buttons/shared/active-m.png +0 -0
  98. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/buttons/shared/disabled-m.png +0 -0
  99. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/buttons/shared/regular-m.png +0 -0
  100. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/buttons/shared/sel-active-m.png +0 -0
  101. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/buttons/shared/sel-disabled-m.png +0 -0
  102. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/buttons/shared/sel-m.png +0 -0
  103. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/buttons/square/active-l.png +0 -0
  104. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/buttons/square/active-r.png +0 -0
  105. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/buttons/square/disabled-l.png +0 -0
  106. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/buttons/square/disabled-r.png +0 -0
  107. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/buttons/square/regular-l.png +0 -0
  108. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/buttons/square/regular-r.png +0 -0
  109. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/buttons/square/sel-active-l.png +0 -0
  110. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/buttons/square/sel-active-r.png +0 -0
  111. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/buttons/square/sel-disabled-l.png +0 -0
  112. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/buttons/square/sel-disabled-r.png +0 -0
  113. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/buttons/square/sel-l.png +0 -0
  114. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/buttons/square/sel-r.png +0 -0
  115. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/icons/actions-active.png +0 -0
  116. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/icons/actions.png +0 -0
  117. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/icons/inspector-active.png +0 -0
  118. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/icons/inspector.png +0 -0
  119. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/icons/library-active.png +0 -0
  120. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/icons/library.png +0 -0
  121. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/icons/projects-active.png +0 -0
  122. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/icons/projects.png +0 -0
  123. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/icons/run-active.png +0 -0
  124. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/icons/run.png +0 -0
  125. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/icons/save-active.png +0 -0
  126. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/icons/save.png +0 -0
  127. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/logos/greenhouse-l.png +0 -0
  128. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/logos/greenhouse-s.png +0 -0
  129. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/logos/sproutcore.png +0 -0
  130. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/main-bg.png +0 -0
  131. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/picker/bottom-left.png +0 -0
  132. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/picker/bottom-right.png +0 -0
  133. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/picker/bottom.png +0 -0
  134. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/picker/close-active.png +0 -0
  135. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/picker/close.png +0 -0
  136. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/picker/left.png +0 -0
  137. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/picker/pointer-bottom.png +0 -0
  138. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/picker/pointer-left.png +0 -0
  139. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/picker/pointer-right.png +0 -0
  140. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/picker/pointer-top.png +0 -0
  141. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/picker/right.png +0 -0
  142. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/picker/search-active.png +0 -0
  143. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/picker/search.png +0 -0
  144. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/picker/top-left.png +0 -0
  145. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/picker/top-right.png +0 -0
  146. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/picker/top.png +0 -0
  147. data/lib/frameworks/sproutcore/apps/greenhouse/english.lproj/images/sc-icon-sproutcore-16.png +0 -0
  148. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/toolbar-bg.png +0 -0
  149. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/inspectors.js +0 -0
  150. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/loading.rhtml +0 -0
  151. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/main_page.js +0 -0
  152. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/strings.js +0 -0
  153. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/fixtures/file.js +0 -0
  154. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/main.js +5 -5
  155. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/mixins/drop_down.js +14 -14
  156. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/models/design.js +4 -4
  157. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/models/dir.js +12 -12
  158. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/models/file.js +7 -9
  159. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/models/target.js +12 -12
  160. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/models/view_config.js +10 -10
  161. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/resources/test_page.js +0 -0
  162. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/states/inspector.js +11 -11
  163. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/states/library.js +10 -10
  164. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/states/main.js +26 -25
  165. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/states/modals.js +10 -10
  166. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/states/ready.js +15 -15
  167. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/tests/controllers/design.js +0 -0
  168. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/tests/controllers/designs.js +0 -0
  169. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/tests/controllers/file.js +0 -0
  170. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/tests/controllers/files.js +0 -0
  171. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/tests/models/file.js +0 -0
  172. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/tests/models/view_config.js +0 -0
  173. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/tests/views/list_item.js +0 -0
  174. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/tests/views/plist_item.js +1 -5
  175. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/theme.js +6 -6
  176. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/views/anchor.js +43 -43
  177. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/views/application_list_item.js +2 -2
  178. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/views/event_blocker.js +7 -7
  179. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/views/label_designer.js +0 -0
  180. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/views/list_item.js +8 -8
  181. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/views/plist_item.js +23 -23
  182. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/views/simple_button.js +31 -31
  183. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/views/tear_off_picker.js +12 -12
  184. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/views/web.js +5 -5
  185. data/lib/frameworks/sproutcore/apps/media_examples/core.js +5 -6
  186. data/lib/frameworks/sproutcore/apps/media_examples/views/audio_view.js +16 -17
  187. data/lib/frameworks/sproutcore/apps/media_examples/views/camera_view.js +4 -5
  188. data/lib/frameworks/sproutcore/apps/media_examples/views/capabilities_view.js +17 -18
  189. data/lib/frameworks/sproutcore/apps/media_examples/views/microphone_view.js +4 -5
  190. data/lib/frameworks/sproutcore/apps/media_examples/views/video_view.js +18 -19
  191. data/lib/frameworks/sproutcore/apps/showcase/Buildfile +2 -2
  192. data/lib/frameworks/sproutcore/apps/showcase/README +1 -1
  193. data/lib/frameworks/sproutcore/apps/showcase/controllers/source_tree_controller.js +27 -7
  194. data/lib/frameworks/sproutcore/apps/showcase/core.js +6 -4
  195. data/lib/frameworks/sproutcore/apps/showcase/main.js +2 -1
  196. data/lib/frameworks/sproutcore/apps/showcase/patch.diff +529 -0
  197. data/lib/frameworks/sproutcore/apps/showcase/resources/images/sproutcore-128.png +0 -0
  198. data/lib/frameworks/sproutcore/apps/showcase/resources/main_page.js +3 -2
  199. data/lib/frameworks/sproutcore/apps/showcase/resources/stylesheet.css +35 -16
  200. data/lib/frameworks/sproutcore/apps/showcase/resources/views_page.js +195 -10
  201. data/lib/frameworks/sproutcore/apps/showcase/system/views_item_content.js +2 -1
  202. data/lib/frameworks/sproutcore/apps/showcase/theme.js +2 -1
  203. data/lib/frameworks/sproutcore/apps/showcase/views/checkbox_views.js +2 -1
  204. data/lib/frameworks/sproutcore/apps/showcase/views/date_field_views.js +2 -1
  205. data/lib/frameworks/sproutcore/apps/showcase/views/disclosure_views.js +2 -1
  206. data/lib/frameworks/sproutcore/apps/showcase/views/label_views.js +2 -1
  207. data/lib/frameworks/sproutcore/apps/showcase/views/list_views.js +2 -1
  208. data/lib/frameworks/sproutcore/apps/showcase/views/popup_button_views.js +3 -2
  209. data/lib/frameworks/sproutcore/apps/showcase/views/progress_views.js +2 -1
  210. data/lib/frameworks/sproutcore/apps/showcase/views/radio_views.js +2 -1
  211. data/lib/frameworks/sproutcore/apps/showcase/views/scroll_views.js +2 -1
  212. data/lib/frameworks/sproutcore/apps/showcase/views/segmented_views.js +2 -1
  213. data/lib/frameworks/sproutcore/apps/showcase/views/select_views.js +10 -9
  214. data/lib/frameworks/sproutcore/apps/showcase/views/slider_views.js +2 -1
  215. data/lib/frameworks/sproutcore/apps/showcase/views/source_list_views.js +2 -1
  216. data/lib/frameworks/sproutcore/apps/showcase/views/split_views.js +2 -1
  217. data/lib/frameworks/sproutcore/apps/showcase/views/stacked_views.js +2 -1
  218. data/lib/frameworks/sproutcore/apps/showcase/views/static_content_views.js +2 -1
  219. data/lib/frameworks/sproutcore/apps/showcase/views/tab_views.js +2 -1
  220. data/lib/frameworks/sproutcore/apps/showcase/views/text_field_views.js +2 -1
  221. data/lib/frameworks/sproutcore/apps/showcase/views/toolbar_views.js +2 -1
  222. data/lib/frameworks/sproutcore/apps/showcase/views/views_item_view.js +15 -6
  223. data/lib/frameworks/sproutcore/apps/showcase/views/views_list_view.js +5 -4
  224. data/lib/frameworks/sproutcore/apps/showcase/views/web_views.js +2 -1
  225. data/lib/frameworks/sproutcore/apps/showcase/views/well_views.js +2 -1
  226. data/lib/frameworks/sproutcore/apps/showcase/views/workspace_views.js +2 -1
  227. data/lib/frameworks/sproutcore/apps/statechart_routing/core.js +5 -5
  228. data/lib/frameworks/sproutcore/apps/statechart_routing/resources/login_page.js +15 -15
  229. data/lib/frameworks/sproutcore/apps/statechart_routing/resources/styles.css +3 -0
  230. data/lib/frameworks/sproutcore/apps/tests/controllers/source.js +11 -11
  231. data/lib/frameworks/sproutcore/apps/tests/controllers/target.js +6 -12
  232. data/lib/frameworks/sproutcore/apps/tests/controllers/targets.js +28 -33
  233. data/lib/frameworks/sproutcore/apps/tests/controllers/{detail.js → test.js} +14 -12
  234. data/lib/frameworks/sproutcore/apps/tests/controllers/tests.js +11 -15
  235. data/lib/frameworks/sproutcore/apps/tests/core.js +8 -113
  236. data/lib/frameworks/sproutcore/apps/tests/english.lproj/main_page.css +9 -19
  237. data/lib/frameworks/sproutcore/apps/tests/english.lproj/main_page.js +81 -92
  238. data/lib/frameworks/sproutcore/apps/tests/english.lproj/strings.js +3 -1
  239. data/lib/frameworks/sproutcore/apps/tests/main.js +8 -13
  240. data/lib/frameworks/sproutcore/apps/tests/statechart.js +268 -0
  241. data/lib/frameworks/sproutcore/apps/tests/views/offset_checkbox.js +4 -4
  242. data/lib/frameworks/sproutcore/apps/welcome/controllers/targets.js +16 -16
  243. data/lib/frameworks/sproutcore/apps/welcome/core.js +9 -9
  244. data/lib/frameworks/sproutcore/apps/welcome/english.lproj/images/sproutcore.png +0 -0
  245. data/lib/frameworks/sproutcore/apps/welcome/english.lproj/main_page.js +22 -25
  246. data/lib/frameworks/sproutcore/apps/welcome/main.js +3 -3
  247. data/lib/frameworks/sproutcore/frameworks/foundation/resources/images/sproutcore-startup-landscape.jpg b/data/lib/frameworks/sproutcore/design/Assorted → Images/sproutcore-startup-landscape.jpg +0 -0
  248. data/lib/frameworks/sproutcore/frameworks/foundation/resources/images/sproutcore-startup-landscape.png b/data/lib/frameworks/sproutcore/design/Assorted → Images/sproutcore-startup-landscape.png +0 -0
  249. data/lib/frameworks/sproutcore/frameworks/foundation/resources/images/sproutcore-startup-portrait.jpg b/data/lib/frameworks/sproutcore/design/Assorted → Images/sproutcore-startup-portrait.jpg +0 -0
  250. data/lib/frameworks/sproutcore/frameworks/foundation/resources/images/sproutcore-startup-portrait.png b/data/lib/frameworks/sproutcore/design/Assorted → Images/sproutcore-startup-portrait.png +0 -0
  251. data/lib/frameworks/sproutcore/frameworks/foundation/resources/images/sproutcore-startup.png b/data/lib/frameworks/sproutcore/design/Assorted → Images/sproutcore-startup.png +0 -0
  252. data/lib/frameworks/sproutcore/frameworks/ajax/system/request.js +21 -7
  253. data/lib/frameworks/sproutcore/frameworks/ajax/tests/system/request.js +35 -2
  254. data/lib/frameworks/sproutcore/frameworks/bootstrap/system/browser.js +142 -75
  255. data/lib/frameworks/sproutcore/frameworks/bootstrap/tests/system/browser.js +20 -2
  256. data/lib/frameworks/sproutcore/frameworks/core_foundation/child_view_layouts/horizontal_stack_layout.js +283 -0
  257. data/lib/frameworks/sproutcore/frameworks/core_foundation/child_view_layouts/vertical_stack_layout.js +284 -0
  258. data/lib/frameworks/sproutcore/frameworks/core_foundation/controllers/array.js +64 -65
  259. data/lib/frameworks/sproutcore/frameworks/core_foundation/controllers/controller.js +14 -14
  260. data/lib/frameworks/sproutcore/frameworks/core_foundation/controllers/object.js +8 -8
  261. data/lib/frameworks/sproutcore/frameworks/core_foundation/core.js +19 -19
  262. data/lib/frameworks/sproutcore/frameworks/core_foundation/ext/run_loop.js +10 -25
  263. data/lib/frameworks/sproutcore/frameworks/core_foundation/mixins/selection_support.js +12 -6
  264. data/lib/frameworks/sproutcore/frameworks/core_foundation/panes/body_overflow.js +53 -34
  265. data/lib/frameworks/sproutcore/frameworks/core_foundation/panes/layout.js +30 -24
  266. data/lib/frameworks/sproutcore/frameworks/core_foundation/panes/main.js +44 -40
  267. data/lib/frameworks/sproutcore/frameworks/core_foundation/panes/manipulation.js +5 -2
  268. data/lib/frameworks/sproutcore/frameworks/core_foundation/panes/pane.js +105 -176
  269. data/lib/frameworks/sproutcore/frameworks/core_foundation/panes/pane_statechart.js +50 -0
  270. data/lib/frameworks/sproutcore/frameworks/core_foundation/panes/visibility.js +4 -4
  271. data/lib/frameworks/sproutcore/frameworks/core_foundation/protocols/view_transition_protocol.js +48 -0
  272. data/lib/frameworks/sproutcore/frameworks/core_foundation/system/browser.js +225 -7
  273. data/lib/frameworks/sproutcore/frameworks/core_foundation/system/core_query.js +54 -34
  274. data/lib/frameworks/sproutcore/frameworks/core_foundation/system/cursor.js +86 -71
  275. data/lib/frameworks/sproutcore/frameworks/core_foundation/system/device.js +35 -35
  276. data/lib/frameworks/sproutcore/frameworks/core_foundation/system/event.js +2 -2
  277. data/lib/frameworks/sproutcore/frameworks/core_foundation/system/locale.js +2 -2
  278. data/lib/frameworks/sproutcore/frameworks/core_foundation/system/platform.js +283 -120
  279. data/lib/frameworks/sproutcore/frameworks/core_foundation/system/ready.js +36 -37
  280. data/lib/frameworks/sproutcore/frameworks/core_foundation/system/render_context.js +653 -435
  281. data/lib/frameworks/sproutcore/frameworks/core_foundation/system/responder.js +49 -42
  282. data/lib/frameworks/sproutcore/frameworks/core_foundation/system/root_responder.js +422 -396
  283. data/lib/frameworks/sproutcore/frameworks/core_foundation/system/selection_set.js +5 -5
  284. data/lib/frameworks/sproutcore/frameworks/core_foundation/system/sparse_array.js +10 -8
  285. data/lib/frameworks/sproutcore/frameworks/core_foundation/system/theme.js +37 -16
  286. data/lib/frameworks/sproutcore/frameworks/core_foundation/system/timer.js +5 -5
  287. data/lib/frameworks/sproutcore/frameworks/core_foundation/system/utils/rect.js +1 -1
  288. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/controllers/array/array_case.js +15 -0
  289. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/controllers/array/selection_support.js +21 -0
  290. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/system/cursor.js +28 -0
  291. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/system/platform.js +18 -0
  292. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/system/render_context/end.js +17 -17
  293. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/system/render_context/helpers_attr.js +9 -9
  294. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/system/render_context/helpers_className.js +43 -43
  295. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/system/render_context/helpers_style.js +4 -14
  296. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/system/render_context/update.js +18 -30
  297. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/system/sparse_array.js +78 -43
  298. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/system/theme.js +7 -7
  299. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/main_pane.js +4 -3
  300. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/pane/append_remove.js +31 -15
  301. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/pane/child_view.js +47 -2
  302. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/pane/firstResponder.js +32 -31
  303. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/pane/keyPane.js +23 -22
  304. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/pane/layout.js +3 -2
  305. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/pane/sendEvent.js +17 -16
  306. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/animation.js +626 -211
  307. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/border_frame_test.js +174 -0
  308. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/build.js +22 -20
  309. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/childViewLayout_test.js +27 -0
  310. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/clippingFrame.js +11 -10
  311. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/convertFrames.js +5 -4
  312. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/createChildViews.js +10 -6
  313. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/createLayer.js +17 -12
  314. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/destroy.js +60 -7
  315. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/destroyLayer.js +19 -26
  316. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/didAppendToDocument.js +14 -13
  317. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/enabled_states_test.js +341 -0
  318. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/findLayerInParentLayer.js +9 -8
  319. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/init.js +26 -16
  320. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/insertBefore.js +28 -68
  321. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/isVisible.js +35 -23
  322. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/isVisibleInWindow.js +93 -78
  323. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/keyboard.js +62 -64
  324. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/layer.js +69 -18
  325. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/layoutChildViews.js +26 -21
  326. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/layoutDidChange.js +129 -57
  327. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/layoutStyle.js +436 -238
  328. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/removeChild.js +38 -44
  329. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/render.js +14 -4
  330. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/render_delegate_support.js +29 -20
  331. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/replaceAllChildren_test.js +229 -0
  332. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/updateLayer.js +33 -95
  333. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/viewDidResize.js +87 -39
  334. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/view_states_test.js +684 -0
  335. data/lib/frameworks/sproutcore/frameworks/core_foundation/views/view.js +767 -625
  336. data/lib/frameworks/sproutcore/frameworks/core_foundation/views/view/acceleration.js +4 -23
  337. data/lib/frameworks/sproutcore/frameworks/core_foundation/views/view/animation.js +645 -77
  338. data/lib/frameworks/sproutcore/frameworks/core_foundation/views/view/cursor.js +1 -1
  339. data/lib/frameworks/sproutcore/frameworks/core_foundation/views/view/enabled.js +218 -19
  340. data/lib/frameworks/sproutcore/frameworks/core_foundation/views/view/layout.js +648 -321
  341. data/lib/frameworks/sproutcore/frameworks/core_foundation/views/view/layout_style.js +326 -534
  342. data/lib/frameworks/sproutcore/frameworks/core_foundation/views/view/manipulation.js +120 -126
  343. data/lib/frameworks/sproutcore/frameworks/core_foundation/views/view/statechart.js +1526 -0
  344. data/lib/frameworks/sproutcore/frameworks/core_foundation/views/view/theming.js +18 -23
  345. data/lib/frameworks/sproutcore/frameworks/core_foundation/views/view/visibility.js +12 -94
  346. data/lib/frameworks/sproutcore/frameworks/core_tools/core.js +2 -2
  347. data/lib/frameworks/sproutcore/frameworks/core_tools/data_source.js +19 -19
  348. data/lib/frameworks/sproutcore/frameworks/core_tools/models/target.js +43 -27
  349. data/lib/frameworks/sproutcore/frameworks/core_tools/models/test.js +5 -5
  350. data/lib/frameworks/sproutcore/frameworks/core_tools/resources/icons.css +5 -0
  351. data/lib/frameworks/sproutcore/frameworks/core_tools/resources/sc-icon-sproutcore-16.png +0 -0
  352. data/lib/frameworks/sproutcore/frameworks/datastore/data_sources/cascade.js +41 -41
  353. data/lib/frameworks/sproutcore/frameworks/datastore/data_sources/data_source.js +1 -1
  354. data/lib/frameworks/sproutcore/frameworks/datastore/data_sources/fixtures.js +90 -90
  355. data/lib/frameworks/sproutcore/frameworks/datastore/models/child_attribute.js +1 -1
  356. data/lib/frameworks/sproutcore/frameworks/datastore/models/fetched_attribute.js +31 -31
  357. data/lib/frameworks/sproutcore/frameworks/datastore/models/many_attribute.js +3 -3
  358. data/lib/frameworks/sproutcore/frameworks/datastore/models/record.js +6 -6
  359. data/lib/frameworks/sproutcore/frameworks/datastore/models/record_attribute.js +1 -1
  360. data/lib/frameworks/sproutcore/frameworks/datastore/models/single_attribute.js +1 -1
  361. data/lib/frameworks/sproutcore/frameworks/datastore/system/many_array.js +1 -1
  362. data/lib/frameworks/sproutcore/frameworks/datastore/system/nested_store.js +2 -8
  363. data/lib/frameworks/sproutcore/frameworks/datastore/system/query.js +74 -48
  364. data/lib/frameworks/sproutcore/frameworks/datastore/system/record_array.js +11 -16
  365. data/lib/frameworks/sproutcore/frameworks/datastore/system/store.js +187 -253
  366. data/lib/frameworks/sproutcore/frameworks/datastore/tests/data_sources/cascade.js +5 -5
  367. data/lib/frameworks/sproutcore/frameworks/datastore/tests/data_sources/fixtures.js +14 -14
  368. data/lib/frameworks/sproutcore/frameworks/datastore/tests/models/nested_records/data_store.js +49 -9
  369. data/lib/frameworks/sproutcore/frameworks/datastore/tests/models/single_attribute.js +2 -2
  370. data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/query/builders.js +236 -127
  371. data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/query/instance_management.js +107 -0
  372. data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/store/createRecord.js +17 -0
  373. data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/store/destroyRecord.js +12 -11
  374. data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/store/loadRecord.js +42 -17
  375. data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/store/pushChanges.js +20 -15
  376. data/lib/frameworks/sproutcore/frameworks/datetime/frameworks/core/system/datetime.js +205 -92
  377. data/lib/frameworks/sproutcore/frameworks/datetime/frameworks/core/tests/system/datetime.js +61 -25
  378. data/lib/frameworks/sproutcore/frameworks/datetime/frameworks/localized/resources/strings.js +39 -9
  379. data/lib/frameworks/sproutcore/frameworks/datetime/frameworks/localized/system/datetime.js +45 -1
  380. data/lib/frameworks/sproutcore/frameworks/datetime/frameworks/localized/tests/system/datetime.js +88 -0
  381. data/lib/frameworks/sproutcore/frameworks/{experimental/frameworks/designer → designer}/coders/design.js +0 -0
  382. data/lib/frameworks/sproutcore/frameworks/{experimental/frameworks/designer → designer}/coders/object.js +0 -0
  383. data/lib/frameworks/sproutcore/frameworks/{experimental/frameworks/designer → designer}/controllers/controllers.js +3 -3
  384. data/lib/frameworks/sproutcore/frameworks/{experimental/frameworks/designer → designer}/controllers/design.js +2 -2
  385. data/lib/frameworks/sproutcore/frameworks/{experimental/frameworks/designer → designer}/controllers/designs.js +19 -19
  386. data/lib/frameworks/sproutcore/frameworks/{experimental/frameworks/designer → designer}/controllers/page_design.js +44 -44
  387. data/lib/frameworks/sproutcore/frameworks/{experimental/frameworks/designer → designer}/controllers/page_files.js +4 -4
  388. data/lib/frameworks/sproutcore/frameworks/{experimental/frameworks/designer → designer}/core.js +0 -0
  389. data/lib/frameworks/sproutcore/frameworks/{experimental/frameworks/designer → designer}/css/css_rule.js +0 -0
  390. data/lib/frameworks/sproutcore/frameworks/{experimental/frameworks/designer → designer}/css/css_style.js +6 -6
  391. data/lib/frameworks/sproutcore/frameworks/{experimental/frameworks/designer → designer}/css/css_style_sheet.js +37 -37
  392. data/lib/frameworks/sproutcore/frameworks/{experimental/frameworks/designer → designer}/designers/button.js +0 -0
  393. data/lib/frameworks/sproutcore/frameworks/{experimental/frameworks/designer → designer}/designers/label.js +0 -0
  394. data/lib/frameworks/sproutcore/frameworks/{experimental/frameworks/designer → designer}/designers/object_designer.js +0 -0
  395. data/lib/frameworks/sproutcore/frameworks/{experimental/frameworks/designer → designer}/designers/tab.js +0 -0
  396. data/lib/frameworks/sproutcore/frameworks/{experimental/frameworks/designer → designer}/designers/text_field.js +0 -0
  397. data/lib/frameworks/sproutcore/frameworks/{experimental/frameworks/designer → designer}/designers/view_designer.js +1 -1
  398. data/lib/frameworks/sproutcore/frameworks/{experimental/frameworks/designer → designer}/english.lproj/css/designer.css +0 -0
  399. data/lib/frameworks/sproutcore/frameworks/{experimental/frameworks/designer → designer}/english.lproj/design_page.js +0 -0
  400. data/lib/frameworks/sproutcore/frameworks/{experimental/frameworks/designer → designer}/english.lproj/high_light.css +0 -0
  401. data/lib/frameworks/sproutcore/frameworks/{experimental/frameworks/designer → designer}/english.lproj/images/controller.png +0 -0
  402. data/lib/frameworks/sproutcore/frameworks/{experimental/frameworks/designer → designer}/english.lproj/images/dock-bg.png +0 -0
  403. data/lib/frameworks/sproutcore/frameworks/{experimental/frameworks/designer → designer}/english.lproj/images/dock-item-bg.png +0 -0
  404. data/lib/frameworks/sproutcore/frameworks/{experimental/frameworks/designer → designer}/english.lproj/images/dock-item-divider.png +0 -0
  405. data/lib/frameworks/sproutcore/frameworks/{experimental/frameworks/designer → designer}/english.lproj/images/dock-item-sel-bg.png +0 -0
  406. data/lib/frameworks/sproutcore/frameworks/{experimental/frameworks/designer → designer}/english.lproj/images/dock-item-sel-divider.png +0 -0
  407. data/lib/frameworks/sproutcore/frameworks/{experimental/frameworks/designer → designer}/english.lproj/images/main-bg.png +0 -0
  408. data/lib/frameworks/sproutcore/frameworks/{experimental/frameworks/designer → designer}/english.lproj/images/page.png +0 -0
  409. data/lib/frameworks/sproutcore/frameworks/{experimental/frameworks/designer → designer}/english.lproj/images/pane.png +0 -0
  410. data/lib/frameworks/sproutcore/frameworks/{experimental/frameworks/designer → designer}/english.lproj/images/view.png +0 -0
  411. data/lib/frameworks/sproutcore/frameworks/{experimental/frameworks/designer → designer}/english.lproj/selection_handles.css +0 -0
  412. data/lib/frameworks/sproutcore/frameworks/{experimental/frameworks/designer → designer}/ext/binding.js +0 -0
  413. data/lib/frameworks/sproutcore/frameworks/{experimental/frameworks/designer → designer}/ext/object.js +0 -0
  414. data/lib/frameworks/sproutcore/frameworks/{experimental/frameworks/designer → designer}/ext/page.js +0 -0
  415. data/lib/frameworks/sproutcore/frameworks/{experimental/frameworks/designer → designer}/ext/view.js +0 -0
  416. data/lib/frameworks/sproutcore/frameworks/{experimental/frameworks/designer → designer}/mixins/button.js +0 -0
  417. data/lib/frameworks/sproutcore/frameworks/{experimental/frameworks/designer → designer}/mixins/snap_lines.js +0 -0
  418. data/lib/frameworks/sproutcore/frameworks/{experimental/frameworks/designer → designer}/tests/coders/page.js +0 -0
  419. data/lib/frameworks/sproutcore/frameworks/{experimental/frameworks/designer → designer}/tests/designers/view_designer.js +0 -0
  420. data/lib/frameworks/sproutcore/frameworks/{experimental/frameworks/designer → designer}/views/designer_drop_target.js +36 -37
  421. data/lib/frameworks/sproutcore/frameworks/{experimental/frameworks/designer → designer}/views/drawing.js +1 -1
  422. data/lib/frameworks/sproutcore/frameworks/{experimental/frameworks/designer → designer}/views/high_light.js +17 -17
  423. data/lib/frameworks/sproutcore/frameworks/{experimental/frameworks/designer → designer}/views/page_item_view.js +0 -0
  424. data/lib/frameworks/sproutcore/frameworks/{experimental/frameworks/designer → designer}/views/selection_handles.js +14 -14
  425. data/lib/frameworks/sproutcore/frameworks/desktop/mixins/collection_fast_path.js +1 -2
  426. data/lib/frameworks/sproutcore/frameworks/desktop/mixins/scrollable.js +51 -51
  427. data/lib/frameworks/sproutcore/frameworks/{experimental/frameworks/split_view → desktop}/mixins/split_child.js +63 -52
  428. data/lib/frameworks/sproutcore/frameworks/{experimental/frameworks/split_view → desktop}/mixins/split_thumb.js +64 -59
  429. data/lib/frameworks/sproutcore/frameworks/desktop/panes/alert.js +113 -112
  430. data/lib/frameworks/sproutcore/frameworks/desktop/panes/menu.js +182 -203
  431. data/lib/frameworks/sproutcore/frameworks/desktop/panes/palette.js +13 -13
  432. data/lib/frameworks/sproutcore/frameworks/desktop/panes/panel.js +51 -29
  433. data/lib/frameworks/sproutcore/frameworks/desktop/panes/picker.js +513 -307
  434. data/lib/frameworks/sproutcore/frameworks/desktop/panes/sheet.js +69 -217
  435. data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/button.js +31 -26
  436. data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/checkbox.js +15 -20
  437. data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/collection.js +2 -6
  438. data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/disclosure.js +6 -6
  439. data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/image_button.js +25 -16
  440. data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/panel.js +6 -6
  441. data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/picker.js +29 -16
  442. data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/popup_button.js +1 -1
  443. data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/progress.js +19 -23
  444. data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/radio.js +14 -17
  445. data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/radio_group.js +24 -24
  446. data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/segment.js +4 -4
  447. data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/slider.js +5 -5
  448. data/lib/frameworks/sproutcore/frameworks/{experimental/frameworks/split_view → desktop}/render_delegates/split.js +0 -0
  449. data/lib/frameworks/sproutcore/frameworks/{experimental/frameworks/split_view → desktop}/render_delegates/split_divider.js +0 -0
  450. data/lib/frameworks/sproutcore/frameworks/desktop/resources/modal.css +2 -0
  451. data/lib/frameworks/sproutcore/frameworks/desktop/resources/panel.css +1 -1
  452. data/lib/frameworks/sproutcore/frameworks/desktop/resources/segmented.css +24 -98
  453. data/lib/frameworks/sproutcore/frameworks/desktop/system/drag.js +446 -442
  454. data/lib/frameworks/sproutcore/frameworks/desktop/tests/panes/alert/ui.js +42 -21
  455. data/lib/frameworks/sproutcore/frameworks/desktop/tests/panes/menu/methods.js +19 -3
  456. data/lib/frameworks/sproutcore/frameworks/desktop/tests/panes/menu/ui.js +26 -28
  457. data/lib/frameworks/sproutcore/frameworks/desktop/tests/panes/palette/ui.js +3 -2
  458. data/lib/frameworks/sproutcore/frameworks/desktop/tests/panes/pane_page.js +11 -7
  459. data/lib/frameworks/sproutcore/frameworks/desktop/tests/panes/panel/ui.js +5 -4
  460. data/lib/frameworks/sproutcore/frameworks/desktop/tests/panes/picker/methods.js +32 -26
  461. data/lib/frameworks/sproutcore/frameworks/desktop/tests/panes/picker/ui.js +27 -22
  462. data/lib/frameworks/sproutcore/frameworks/desktop/tests/panes/select_button/methods.js +5 -4
  463. data/lib/frameworks/sproutcore/frameworks/desktop/tests/panes/select_button/ui.js +0 -2
  464. data/lib/frameworks/sproutcore/frameworks/desktop/tests/panes/sheet/ui.js +11 -8
  465. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/button/displayProperties.js +5 -5
  466. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/button/keyEquivalents.js +9 -11
  467. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/button/ui.js +23 -23
  468. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/checkbox/ui.js +15 -17
  469. data/lib/frameworks/sproutcore/frameworks/desktop/tests/{mixins → views/collection}/collection_fast_path.js +18 -12
  470. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/collection/content.js +46 -53
  471. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/collection/itemViewForContentIndex.js +101 -47
  472. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/collection/mouse.js +26 -26
  473. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/collection/reload.js +89 -69
  474. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/collection/selection.js +27 -25
  475. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/collection/ui_diagram.js +32 -35
  476. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/date_field/methods.js +1 -0
  477. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/date_field/ui.js +6 -11
  478. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/disclosure/ui.js +3 -5
  479. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/grid/drag_and_drop.js +103 -8
  480. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/grid/methods.js +76 -38
  481. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/image_button/ui.js +3 -5
  482. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/list/drag_and_drop.js +91 -3
  483. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/list/render.js +2 -17
  484. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/list/rowHeightForContentIndex.js +70 -38
  485. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/list/ui_alternatingrows.js +17 -19
  486. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/list/ui_outline.js +10 -13
  487. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/list/ui_row_heights.js +37 -30
  488. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/list/ui_simple.js +18 -20
  489. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/list_item.js +115 -28
  490. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/scroll/ui.js +0 -2
  491. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/segmented/methods.js +37 -1
  492. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/segmented/ui.js +194 -182
  493. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/select/ui.js +2 -3
  494. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/select_field/ui.js +18 -21
  495. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/separator.js +5 -6
  496. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/slider/methods.js +5 -4
  497. data/lib/frameworks/sproutcore/frameworks/{experimental/frameworks/split_view/tests → desktop/tests/views/split}/children.js +15 -15
  498. data/lib/frameworks/sproutcore/frameworks/{experimental/frameworks/split_view/tests → desktop/tests/views/split}/dividers.js +0 -0
  499. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/split/methods.js +341 -45
  500. data/lib/frameworks/sproutcore/frameworks/{experimental/frameworks/split_view/tests → desktop/tests/views/split}/split_child.js +0 -0
  501. data/lib/frameworks/sproutcore/frameworks/{experimental/frameworks/split_view/tests → desktop/tests/views/split}/split_thumb.js +0 -0
  502. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/split/ui.js +6 -8
  503. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/stacked/ui_comments.js +49 -52
  504. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/tab/ui.js +23 -6
  505. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/toolbar/ui.js +2 -4
  506. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/web/ui.js +4 -5
  507. data/lib/frameworks/sproutcore/frameworks/desktop/views/button.js +47 -38
  508. data/lib/frameworks/sproutcore/frameworks/desktop/views/checkbox.js +24 -24
  509. data/lib/frameworks/sproutcore/frameworks/desktop/views/collection.js +887 -740
  510. data/lib/frameworks/sproutcore/frameworks/desktop/views/date_field.js +2 -2
  511. data/lib/frameworks/sproutcore/frameworks/desktop/views/grid.js +68 -55
  512. data/lib/frameworks/sproutcore/frameworks/desktop/views/image_button.js +3 -3
  513. data/lib/frameworks/sproutcore/frameworks/desktop/views/list.js +8 -26
  514. data/lib/frameworks/sproutcore/frameworks/desktop/views/list_item.js +189 -167
  515. data/lib/frameworks/sproutcore/frameworks/desktop/views/master_detail.js +55 -54
  516. data/lib/frameworks/sproutcore/frameworks/desktop/views/menu_item.js +8 -4
  517. data/lib/frameworks/sproutcore/frameworks/desktop/views/menu_scroll.js +145 -146
  518. data/lib/frameworks/sproutcore/frameworks/desktop/views/popup_button.js +21 -21
  519. data/lib/frameworks/sproutcore/frameworks/desktop/views/progress.js +2 -2
  520. data/lib/frameworks/sproutcore/frameworks/desktop/views/radio.js +66 -66
  521. data/lib/frameworks/sproutcore/frameworks/desktop/views/scene.js +40 -44
  522. data/lib/frameworks/sproutcore/frameworks/desktop/views/scroll.js +203 -200
  523. data/lib/frameworks/sproutcore/frameworks/desktop/views/scroller.js +11 -12
  524. data/lib/frameworks/sproutcore/frameworks/desktop/views/segment.js +6 -13
  525. data/lib/frameworks/sproutcore/frameworks/desktop/views/segmented.js +87 -112
  526. data/lib/frameworks/sproutcore/frameworks/desktop/views/select.js +192 -179
  527. data/lib/frameworks/sproutcore/frameworks/desktop/views/select_button.js +23 -23
  528. data/lib/frameworks/sproutcore/frameworks/desktop/views/select_field.js +64 -64
  529. data/lib/frameworks/sproutcore/frameworks/desktop/views/slider.js +56 -56
  530. data/lib/frameworks/sproutcore/frameworks/desktop/views/split.js +784 -714
  531. data/lib/frameworks/sproutcore/frameworks/desktop/views/split_divider.js +21 -39
  532. data/lib/frameworks/sproutcore/frameworks/desktop/views/stacked.js +45 -41
  533. data/lib/frameworks/sproutcore/frameworks/desktop/views/static_content.js +1 -1
  534. data/lib/frameworks/sproutcore/frameworks/desktop/views/tab.js +4 -10
  535. data/lib/frameworks/sproutcore/frameworks/desktop/views/thumb.js +9 -47
  536. data/lib/frameworks/sproutcore/frameworks/desktop/views/toolbar.js +40 -16
  537. data/lib/frameworks/sproutcore/frameworks/desktop/views/web.js +2 -1
  538. data/lib/frameworks/sproutcore/frameworks/desktop/views/workspace.js +62 -50
  539. data/lib/frameworks/sproutcore/frameworks/experimental/Buildfile +0 -9
  540. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/device_motion/device.js +45 -45
  541. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/device_motion/platform.js +16 -16
  542. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/polymorphism/models/record.js +46 -6
  543. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/polymorphism/tests/models/polymorphism/simple.js +16 -2
  544. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/scroll_view/render_delegates/desktop_scroller.js +12 -12
  545. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/scroll_view/tests/scroll/ui.js +38 -40
  546. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/select_view/ext/menu.js +8 -8
  547. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/select_view/views/select.js +20 -20
  548. data/lib/frameworks/sproutcore/frameworks/formatters/formatters/date_formatter.js +16 -16
  549. data/lib/frameworks/sproutcore/frameworks/foundation/controllers/tree.js +26 -14
  550. data/lib/frameworks/sproutcore/frameworks/foundation/debug/control_test_pane.js +43 -43
  551. data/lib/frameworks/sproutcore/frameworks/foundation/debug/test-image.png +0 -0
  552. data/lib/frameworks/sproutcore/frameworks/foundation/delegates/inline_text_field.js +11 -11
  553. data/lib/frameworks/sproutcore/frameworks/foundation/mixins/auto_resize.js +63 -41
  554. data/lib/frameworks/sproutcore/frameworks/foundation/mixins/button.js +1 -1
  555. data/lib/frameworks/sproutcore/frameworks/foundation/mixins/collection_content.js +60 -61
  556. data/lib/frameworks/sproutcore/frameworks/foundation/mixins/control.js +72 -72
  557. data/lib/frameworks/sproutcore/frameworks/foundation/mixins/flowed_layout.js +142 -142
  558. data/lib/frameworks/sproutcore/frameworks/foundation/mixins/gesturable.js +1 -1
  559. data/lib/frameworks/sproutcore/frameworks/foundation/mixins/inline_editable.js +1 -1
  560. data/lib/frameworks/sproutcore/frameworks/foundation/mixins/inner_frame.js +10 -8
  561. data/lib/frameworks/sproutcore/frameworks/foundation/mixins/static_layout.js +36 -29
  562. data/lib/frameworks/sproutcore/frameworks/foundation/private/tree_item_observer.js +4 -4
  563. data/lib/frameworks/sproutcore/frameworks/foundation/protocols/swap_transition_protocol.js +150 -0
  564. data/lib/frameworks/sproutcore/frameworks/foundation/render_delegates/canvas_image.js +54 -29
  565. data/lib/frameworks/sproutcore/frameworks/foundation/render_delegates/image.js +23 -18
  566. data/lib/frameworks/sproutcore/frameworks/foundation/render_delegates/label.js +12 -11
  567. data/lib/frameworks/sproutcore/frameworks/foundation/resources/benchmark.css +21 -20
  568. data/lib/frameworks/sproutcore/frameworks/foundation/resources/images/sproutcore-128.png +0 -0
  569. data/lib/frameworks/sproutcore/frameworks/foundation/resources/images/sproutcore-256.png +0 -0
  570. data/lib/frameworks/sproutcore/frameworks/foundation/resources/images/sproutcore-32.png +0 -0
  571. data/lib/frameworks/sproutcore/frameworks/foundation/resources/images/sproutcore-48.png +0 -0
  572. data/lib/frameworks/sproutcore/frameworks/foundation/resources/images/sproutcore-512.png +0 -0
  573. data/lib/frameworks/sproutcore/frameworks/foundation/resources/images/sproutcore-64.png +0 -0
  574. data/lib/frameworks/sproutcore/frameworks/foundation/resources/label.css +5 -0
  575. data/lib/frameworks/sproutcore/frameworks/foundation/system/app_cache.js +412 -0
  576. data/lib/frameworks/sproutcore/frameworks/foundation/system/benchmark.js +2 -3
  577. data/lib/frameworks/sproutcore/frameworks/foundation/system/module.js +11 -5
  578. data/lib/frameworks/sproutcore/frameworks/foundation/system/text_selection.js +21 -21
  579. data/lib/frameworks/sproutcore/frameworks/foundation/system/utils/string_measurement.js +8 -3
  580. data/lib/frameworks/sproutcore/frameworks/foundation/tests/controllers/tree/selection_support.js +33 -8
  581. data/lib/frameworks/sproutcore/frameworks/foundation/tests/delegates/inline_text_field/inline_text_field.js +2 -1
  582. data/lib/frameworks/sproutcore/frameworks/foundation/tests/mixins/content_display.js +9 -3
  583. data/lib/frameworks/sproutcore/frameworks/foundation/tests/mixins/control/displayProperties.js +5 -4
  584. data/lib/frameworks/sproutcore/frameworks/foundation/tests/mixins/flowed_layout/tests.js +49 -4
  585. data/lib/frameworks/sproutcore/frameworks/foundation/tests/mixins/inline_text_field/beginEditing.js +29 -21
  586. data/lib/frameworks/sproutcore/frameworks/foundation/tests/mixins/staticLayout.js +3 -5
  587. data/lib/frameworks/sproutcore/frameworks/foundation/tests/mixins/validatable/ui.js +8 -10
  588. data/lib/frameworks/sproutcore/frameworks/foundation/tests/system/app_cache_test.js +81 -0
  589. data/lib/frameworks/sproutcore/frameworks/foundation/tests/system/image_queue.js +2 -2
  590. data/lib/frameworks/sproutcore/frameworks/foundation/tests/system/utils/pointInElement.js +0 -3
  591. data/lib/frameworks/sproutcore/frameworks/foundation/tests/views/container/methods.js +40 -1
  592. data/lib/frameworks/sproutcore/frameworks/foundation/tests/views/container/transition_test.js +143 -0
  593. data/lib/frameworks/sproutcore/frameworks/foundation/tests/views/container/ui.js +5 -7
  594. data/lib/frameworks/sproutcore/frameworks/foundation/tests/views/image/ui.js +187 -84
  595. data/lib/frameworks/sproutcore/frameworks/foundation/tests/views/label/ui.js +6 -41
  596. data/lib/frameworks/sproutcore/frameworks/foundation/tests/views/text_field/methods.js +51 -7
  597. data/lib/frameworks/sproutcore/frameworks/foundation/tests/views/text_field/ui.js +11 -16
  598. data/lib/frameworks/sproutcore/frameworks/foundation/transitions/adjust_bounce_transition.js +80 -0
  599. data/lib/frameworks/sproutcore/frameworks/foundation/transitions/adjust_smooth_transition.js +39 -0
  600. data/lib/frameworks/sproutcore/frameworks/foundation/transitions/adjust_spring_transition.js +77 -0
  601. data/lib/frameworks/sproutcore/frameworks/foundation/transitions/bounce_transition.js +211 -0
  602. data/lib/frameworks/sproutcore/frameworks/foundation/transitions/fade_transition.js +57 -0
  603. data/lib/frameworks/sproutcore/frameworks/foundation/transitions/pop_transition.js +82 -0
  604. data/lib/frameworks/sproutcore/frameworks/foundation/transitions/scale_transition.js +54 -0
  605. data/lib/frameworks/sproutcore/frameworks/foundation/transitions/slide_transition.js +140 -0
  606. data/lib/frameworks/sproutcore/frameworks/foundation/transitions/spring_transition.js +203 -0
  607. data/lib/frameworks/sproutcore/frameworks/foundation/transitions/swap_dissolve_transition.js +67 -0
  608. data/lib/frameworks/sproutcore/frameworks/foundation/transitions/swap_fade_color_transition.js +81 -0
  609. data/lib/frameworks/sproutcore/frameworks/foundation/transitions/swap_move_in_transition.js +104 -0
  610. data/lib/frameworks/sproutcore/frameworks/foundation/transitions/swap_push_transition.js +181 -0
  611. data/lib/frameworks/sproutcore/frameworks/foundation/transitions/swap_reveal_transition.js +90 -0
  612. data/lib/frameworks/sproutcore/frameworks/foundation/validators/validator.js +2 -2
  613. data/lib/frameworks/sproutcore/frameworks/foundation/views/container.js +483 -95
  614. data/lib/frameworks/sproutcore/frameworks/foundation/views/field.js +65 -65
  615. data/lib/frameworks/sproutcore/frameworks/foundation/views/image.js +111 -100
  616. data/lib/frameworks/sproutcore/frameworks/foundation/views/inline_text_field.js +30 -222
  617. data/lib/frameworks/sproutcore/frameworks/foundation/views/label.js +38 -24
  618. data/lib/frameworks/sproutcore/frameworks/foundation/views/text_field.js +74 -62
  619. data/lib/frameworks/sproutcore/frameworks/jquery/jquery-1.8.3-patched.js +9485 -0
  620. data/lib/frameworks/sproutcore/frameworks/media/media_capabilities.js +4 -4
  621. data/lib/frameworks/sproutcore/frameworks/media/render_delegates/media_slider.js +20 -20
  622. data/lib/frameworks/sproutcore/frameworks/media/resources/video.css +18 -17
  623. data/lib/frameworks/sproutcore/frameworks/media/views/audio.js +19 -19
  624. data/lib/frameworks/sproutcore/frameworks/media/views/controls.js +10 -11
  625. data/lib/frameworks/sproutcore/frameworks/media/views/mini_controls.js +7 -8
  626. data/lib/frameworks/sproutcore/frameworks/media/views/video.js +24 -24
  627. data/lib/frameworks/sproutcore/frameworks/qunit/test/test.js +2 -2
  628. data/lib/frameworks/sproutcore/frameworks/routing/system/routes.js +32 -21
  629. data/lib/frameworks/sproutcore/frameworks/routing/tests/system/routes.js +72 -53
  630. data/lib/frameworks/sproutcore/frameworks/runtime/core.js +164 -156
  631. data/lib/frameworks/sproutcore/frameworks/runtime/ext/array.js +20 -20
  632. data/lib/frameworks/sproutcore/frameworks/runtime/mixins/array.js +145 -140
  633. data/lib/frameworks/sproutcore/frameworks/runtime/mixins/comparable.js +1 -1
  634. data/lib/frameworks/sproutcore/frameworks/runtime/mixins/copyable.js +2 -2
  635. data/lib/frameworks/sproutcore/frameworks/runtime/mixins/enumerable.js +393 -370
  636. data/lib/frameworks/sproutcore/frameworks/runtime/mixins/freezable.js +3 -3
  637. data/lib/frameworks/sproutcore/frameworks/runtime/mixins/observable.js +1045 -999
  638. data/lib/frameworks/sproutcore/frameworks/runtime/private/chain_observer.js +41 -36
  639. data/lib/frameworks/sproutcore/frameworks/runtime/private/observer_queue.js +10 -4
  640. data/lib/frameworks/sproutcore/frameworks/runtime/private/observer_set.js +11 -1
  641. data/lib/frameworks/sproutcore/frameworks/runtime/private/property_chain.js +7 -7
  642. data/lib/frameworks/sproutcore/frameworks/runtime/system/binding.js +275 -205
  643. data/lib/frameworks/sproutcore/frameworks/runtime/system/function.js +27 -27
  644. data/lib/frameworks/sproutcore/frameworks/runtime/system/index_set.js +229 -193
  645. data/lib/frameworks/sproutcore/frameworks/runtime/system/logger.js +24 -24
  646. data/lib/frameworks/sproutcore/frameworks/runtime/system/object.js +186 -188
  647. data/lib/frameworks/sproutcore/frameworks/runtime/system/range_observer.js +1 -1
  648. data/lib/frameworks/sproutcore/frameworks/runtime/system/run_loop.js +138 -65
  649. data/lib/frameworks/sproutcore/frameworks/runtime/system/set.js +11 -10
  650. data/lib/frameworks/sproutcore/frameworks/runtime/system/string.js +8 -4
  651. data/lib/frameworks/sproutcore/frameworks/runtime/tests/core/tupleForPropertyPath.js +4 -0
  652. data/lib/frameworks/sproutcore/frameworks/runtime/tests/mixins/observable/chained.js +112 -23
  653. data/lib/frameworks/sproutcore/frameworks/runtime/tests/mixins/observable/observable.js +71 -18
  654. data/lib/frameworks/sproutcore/frameworks/runtime/tests/system/binding.js +97 -57
  655. data/lib/frameworks/sproutcore/frameworks/runtime/tests/system/index_set/add.js +22 -22
  656. data/lib/frameworks/sproutcore/frameworks/runtime/tests/system/index_set/infinite.js +184 -0
  657. data/lib/frameworks/sproutcore/frameworks/runtime/tests/system/observer_set.js +63 -1
  658. data/lib/frameworks/sproutcore/frameworks/runtime/tests/system/run_loop.js +73 -36
  659. data/lib/frameworks/sproutcore/frameworks/runtime/tests/system/set.js +100 -25
  660. data/lib/frameworks/sproutcore/frameworks/runtime/tests/system/string.js +7 -0
  661. data/lib/frameworks/sproutcore/frameworks/statechart/debug/sequence_matcher.js +1 -1
  662. data/lib/frameworks/sproutcore/frameworks/statechart/private/state_path_matcher.js +2 -2
  663. data/lib/frameworks/sproutcore/frameworks/statechart/system/history_state.js +32 -32
  664. data/lib/frameworks/sproutcore/frameworks/statechart/system/state.js +449 -422
  665. data/lib/frameworks/sproutcore/frameworks/statechart/system/state_route_handler_context.js +19 -19
  666. data/lib/frameworks/sproutcore/frameworks/statechart/system/statechart.js +612 -562
  667. data/lib/frameworks/sproutcore/frameworks/statechart/tests/state_transitioning/routing/with_concurrent_states/basic.js +115 -62
  668. data/lib/frameworks/sproutcore/frameworks/statechart/tests/state_transitioning/routing/without_concurrent_states/basic.js +145 -64
  669. data/lib/frameworks/sproutcore/frameworks/statechart/tests/statechart/respond_to_event.js +17 -1
  670. data/lib/frameworks/sproutcore/frameworks/table/views/table_head.js +30 -30
  671. data/lib/frameworks/sproutcore/frameworks/table/views/table_row.js +34 -34
  672. data/lib/frameworks/sproutcore/frameworks/template_view/ext/handlebars/bind.js +1 -1
  673. data/lib/frameworks/sproutcore/frameworks/template_view/ext/handlebars/collection.js +2 -2
  674. data/lib/frameworks/sproutcore/frameworks/template_view/ext/handlebars/view.js +3 -5
  675. data/lib/frameworks/sproutcore/frameworks/template_view/tests/panes/template.js +2 -0
  676. data/lib/frameworks/sproutcore/frameworks/template_view/tests/views/template/core.js +2 -2
  677. data/lib/frameworks/sproutcore/frameworks/template_view/views/bindable_span.js +7 -7
  678. data/lib/frameworks/sproutcore/frameworks/template_view/views/template.js +4 -4
  679. data/lib/frameworks/sproutcore/frameworks/template_view/views/template_collection.js +15 -21
  680. data/lib/frameworks/sproutcore/frameworks/testing/system/plan.js +4 -4
  681. data/lib/frameworks/sproutcore/frameworks/testing/system/runner.js +35 -35
  682. data/lib/frameworks/sproutcore/scripts/run_sc_server_master.sh +34 -0
  683. data/lib/frameworks/sproutcore/tests/phantomjs_runner.phantomjs +606 -0
  684. data/lib/frameworks/sproutcore/themes/ace/designs/psds/panel/PanelPane.opacity +0 -0
  685. data/lib/frameworks/sproutcore/themes/ace/designs/psds/panel/Pointers.opacity +0 -0
  686. data/lib/frameworks/sproutcore/themes/ace/resources/button/ace/44px/active_button@2x.png +0 -0
  687. data/lib/frameworks/sproutcore/themes/ace/resources/button/ace/44px/normal_button@2x.png +0 -0
  688. data/lib/frameworks/sproutcore/themes/ace/resources/button/ace/44px/selected_active_button@2x.png +0 -0
  689. data/lib/frameworks/sproutcore/themes/ace/resources/button/ace/44px/selected_button@2x.png +0 -0
  690. data/lib/frameworks/sproutcore/themes/ace/resources/button/popup/select.css +3 -4
  691. data/lib/frameworks/sproutcore/themes/ace/resources/collection/normal/list.css +18 -0
  692. data/lib/frameworks/sproutcore/themes/ace/resources/panel/panel.png +0 -0
  693. data/lib/frameworks/sproutcore/themes/ace/resources/panel/panel@2x.png +0 -0
  694. data/lib/frameworks/sproutcore/themes/ace/resources/picker/ace/panel.png +0 -0
  695. data/lib/frameworks/sproutcore/themes/ace/resources/picker/ace/panel@2x.png +0 -0
  696. data/lib/frameworks/sproutcore/themes/ace/resources/picker/ace/picker.css +34 -14
  697. data/lib/frameworks/sproutcore/themes/ace/resources/picker/ace/pointers.png +0 -0
  698. data/lib/frameworks/sproutcore/themes/ace/resources/picker/ace/pointers@2x.png +0 -0
  699. data/lib/frameworks/sproutcore/themes/ace/resources/segmented/18px/segmented.css +5 -4
  700. data/lib/frameworks/sproutcore/themes/ace/resources/segmented/24px/segmented.css +7 -2
  701. data/lib/frameworks/sproutcore/themes/ace/resources/segmented/30px/segmented.css +5 -4
  702. data/lib/frameworks/sproutcore/themes/ace/resources/segmented/44px/segmented.css +6 -3
  703. data/lib/frameworks/sproutcore/themes/ace/resources/toolbar/toolbar.css +7 -5
  704. data/lib/frameworks/sproutcore/themes/legacy_theme/render_delegates/button.js +7 -7
  705. data/lib/frameworks/sproutcore/themes/legacy_theme/render_delegates/progress.js +37 -37
  706. data/lib/frameworks/sproutcore/themes/legacy_theme/render_delegates/slider.js +12 -12
  707. data/lib/sproutcore/helpers/static_helper.rb +35 -27
  708. data/sproutcore.gemspec +1 -0
  709. metadata +529 -451
  710. data/lib/frameworks/sproutcore/apps/showcase/resources/images/sproutcore-logo.png +0 -0
  711. data/lib/frameworks/sproutcore/apps/showcase/views/button_views.js +0 -55
  712. data/lib/frameworks/sproutcore/apps/showcase/views/container_views.js +0 -29
  713. data/lib/frameworks/sproutcore/apps/showcase/views/grid_views.js +0 -28
  714. data/lib/frameworks/sproutcore/apps/showcase/views/image_button_views.js +0 -22
  715. data/lib/frameworks/sproutcore/apps/showcase/views/image_views.js +0 -51
  716. data/lib/frameworks/sproutcore/apps/tests/states/no_targets.js +0 -26
  717. data/lib/frameworks/sproutcore/apps/tests/states/ready.js +0 -56
  718. data/lib/frameworks/sproutcore/apps/tests/states/ready_detail.js +0 -41
  719. data/lib/frameworks/sproutcore/apps/tests/states/ready_empty.js +0 -48
  720. data/lib/frameworks/sproutcore/apps/tests/states/ready_list.js +0 -41
  721. data/lib/frameworks/sproutcore/apps/tests/states/ready_loading.js +0 -44
  722. data/lib/frameworks/sproutcore/apps/tests/states/ready_no_tests.js +0 -31
  723. data/lib/frameworks/sproutcore/apps/tests/states/start.js +0 -39
  724. data/lib/frameworks/sproutcore/apps/welcome/tests/controllers/targets.js +0 -15
  725. data/lib/frameworks/sproutcore/frameworks/animation/Buildfile +0 -3
  726. data/lib/frameworks/sproutcore/frameworks/animation/LICENSE +0 -25
  727. data/lib/frameworks/sproutcore/frameworks/animation/README.md +0 -79
  728. data/lib/frameworks/sproutcore/frameworks/animation/core.js +0 -1208
  729. data/lib/frameworks/sproutcore/frameworks/animation/tests/core.js +0 -152
  730. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/parentViewDidChange.js +0 -67
  731. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/prepareContext.js +0 -203
  732. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/updateLayerLocation.js +0 -213
  733. data/lib/frameworks/sproutcore/frameworks/desktop/mixins/border.js +0 -163
  734. data/lib/frameworks/sproutcore/frameworks/desktop/tests/mixins/border.js +0 -97
  735. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/split_view/tests/methods.js +0 -312
  736. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/split_view/views/split.js +0 -961
  737. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/split_view/views/split_divider.js +0 -40
  738. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/split_view/views/thumb.js +0 -27
  739. data/lib/frameworks/sproutcore/frameworks/foundation/resources/images/sproutcore-logo.png +0 -0
  740. data/lib/frameworks/sproutcore/frameworks/foundation/resources/images/sproutcore.png +0 -0
  741. data/lib/frameworks/sproutcore/frameworks/jquery/jquery-buffer.js +0 -394
  742. data/lib/frameworks/sproutcore/frameworks/jquery/jquery-buffered.js +0 -133
  743. data/lib/frameworks/sproutcore/frameworks/jquery/jquery-sc.js +0 -18
  744. data/lib/frameworks/sproutcore/frameworks/jquery/jquery.js +0 -8981
  745. data/lib/frameworks/sproutcore/frameworks/jquery/tests/set_class.js +0 -40
  746. data/lib/frameworks/sproutcore/themes/ace/resources/picker/ace/picker.js +0 -0
@@ -0,0 +1,107 @@
1
+ // ==========================================================================
2
+ // Project: SproutCore - JavaScript Application Framework
3
+ // Copyright: ©2006-2011 Apple Inc. and contributors.
4
+ // License: Licensed under MIT license (see license.js)
5
+ // ==========================================================================
6
+ /*globals module ok equals same test MyApp */
7
+
8
+ // test parsing of query string
9
+ module("SC.Query instance and memory management", {
10
+ setup: function() {
11
+
12
+ SC.RunLoop.begin();
13
+
14
+ // setup dummy app and store
15
+ MyApp = SC.Object.create({
16
+ store: SC.Store.create()
17
+ });
18
+
19
+ // setup a dummy model
20
+ MyApp.Foo = SC.Record.extend();
21
+ MyApp.Bar = SC.Record.extend();
22
+ MyApp.BarChild = MyApp.Bar.extend();
23
+ MyApp.Baz = SC.Record.extend();
24
+
25
+ // load some data
26
+ MyApp.store.loadRecords(MyApp.Foo, [{
27
+ guid: 1,
28
+ firstName: "John",
29
+ lastName: "Doe",
30
+ year: 1974
31
+ }, {
32
+ guid: 2,
33
+ firstName: "Jane",
34
+ lastName: "Doe",
35
+ year: 1975
36
+ }]);
37
+
38
+ MyApp.store.loadRecords(MyApp.Bar, [{
39
+ guid: 3,
40
+ firstName: "Emily",
41
+ lastName: "Parker",
42
+ year: 1975,
43
+ active: null
44
+ }, {
45
+ guid: 4,
46
+ firstName: "Johnny",
47
+ lastName: "Cash",
48
+ active: false
49
+ }]);
50
+
51
+ SC.RunLoop.end();
52
+
53
+ },
54
+
55
+ teardown: function() {
56
+ MyApp = q = null;
57
+ }
58
+ });
59
+
60
+ // ..........................................................
61
+ // BASIC TESTS
62
+ //
63
+ test("Record Arrays should not be created more than once if a query is re-run", function() {
64
+
65
+ var qFoo = SC.Query.create({
66
+ recordType: MyApp.Foo
67
+ });
68
+ var qBar = SC.Query.create({
69
+ recordType: MyApp.Bar
70
+ });
71
+
72
+ ok(!MyApp.store.getPath('recordArrays.length'), "RecordArrays length must start as empty.");
73
+ var raFoo = MyApp.store.find(qFoo);
74
+ equals(MyApp.store.getPath('recordArrays.length'), 1, "RecordArrays length must be 1 after new query");
75
+ var raFoo2 = MyApp.store.find(qFoo);
76
+ equals(MyApp.store.getPath('recordArrays.length'), 1, "RecordArrays length must not increment after second identical query");
77
+ var raBar = MyApp.store.find(qBar);
78
+ equals(MyApp.store.getPath('recordArrays.length'), 2, "RecordArrays length must be 2 after second new query.");
79
+
80
+ equals(raFoo2, raFoo, "Record array must return same instance.");
81
+
82
+ raFoo.destroy();
83
+ raBar.destroy();
84
+ qFoo.destroy();
85
+ qBar.destroy();
86
+ });
87
+
88
+ test("Reset must destroy all cached record arrays.", function() {
89
+
90
+ var qFoo = SC.Query.create({
91
+ recordType: MyApp.Foo
92
+ });
93
+ var qBar = SC.Query.create({
94
+ recordType: MyApp.Bar
95
+ });
96
+
97
+ ok(!MyApp.store.getPath('recordArrays.length'), "RecordArrays length must start as empty.");
98
+ var raFoo = MyApp.store.find(qFoo);
99
+ var raBar = MyApp.store.find(qBar);
100
+ equals(MyApp.store.getPath('recordArrays.length'), 2, "RecordArrays length must be 2 after two new queries.");
101
+
102
+ MyApp.store.reset();
103
+ ok(!MyApp.store.getPath('recordArrays.length'), "Cached record array must be empty after reset()");
104
+ ok(raFoo.get('isDestroyed'), "Record Array 1 must be destroyed after reset()");
105
+ ok(raBar.get('isDestroyed'), "Record Array 2 must be destroyed after reset()");
106
+
107
+ });
@@ -240,3 +240,20 @@ test("Initializing default values with keyed attributes", function() {
240
240
  ok(store.readDataHash(sk2)['array_key'] !== store.readDataHash(sk1)['array_key'], "the default value for 'array' is a copy not a reference");
241
241
  ok(store.readDataHash(sk2)['funcDef_key'] !== store.readDataHash(sk1)['funcDef_key'], "the default value for 'funcDef' is a copy not a reference");
242
242
  });
243
+
244
+ test("The data hash of the record should be correct BEFORE the status changes.", function () {
245
+ var rec1;
246
+
247
+ //create record
248
+ rec1 = store.createRecord(MyRecordType, { string: "Pre-create" }, 'test-status');
249
+ rec1.commitRecord();
250
+
251
+ rec1.addObserver('status', function () {
252
+ if (this.get('status') === SC.Record.READY_CLEAN) {
253
+ equals(this.get('id'), 'new-id', "The id attribute should be correct since the status has updated.");
254
+ equals(this.get('string'), "Post-create", "The string attribute should be correct since the status has updated.");
255
+ }
256
+ });
257
+
258
+ store.dataSourceDidComplete(rec1.get('storeKey'), { string: "Post-create" }, 'new-id');
259
+ });
@@ -14,7 +14,7 @@ module("SC.Store#destroyRecord", {
14
14
  SC.RunLoop.begin();
15
15
 
16
16
  store = SC.Store.create();
17
-
17
+
18
18
  json1 = {
19
19
  guid: "destroyGUID1",
20
20
  string: "string",
@@ -51,7 +51,7 @@ module("SC.Store#destroyRecord", {
51
51
  number: 23,
52
52
  bool: YES
53
53
  };
54
-
54
+
55
55
  storeKey1 = SC.Store.generateStoreKey();
56
56
  store.writeDataHash(storeKey1, json1, SC.Record.BUSY_DESTROYING);
57
57
  storeKey2 = SC.Store.generateStoreKey();
@@ -75,11 +75,11 @@ test("Check for different states after/before executing destroyRecord", function
75
75
  store.destroyRecord(undefined, undefined, storeKey1);
76
76
  status = store.readStatus( storeKey1);
77
77
  equals(status, SC.Record.BUSY_DESTROYING, "the status shouldn't have changed. It should be BUSY_DESTROYING ");
78
-
78
+
79
79
  store.destroyRecord(undefined, undefined, storeKey2);
80
80
  status = store.readStatus( storeKey2);
81
81
  equals(status, SC.Record.DESTROYED, "the status shouldn't have changed. It should be DESTROYED ");
82
-
82
+
83
83
  try{
84
84
  store.destroyRecord(undefined, undefined, storeKey3);
85
85
  msg='';
@@ -87,7 +87,7 @@ test("Check for different states after/before executing destroyRecord", function
87
87
  msg=error1.message;
88
88
  }
89
89
  equals(msg, SC.Record.NOT_FOUND_ERROR.message, "destroyRecord should throw the following error");
90
-
90
+
91
91
  try{
92
92
  store.destroyRecord(undefined, undefined, storeKey4);
93
93
  msg='';
@@ -95,16 +95,17 @@ test("Check for different states after/before executing destroyRecord", function
95
95
  msg=error2.message;
96
96
  }
97
97
  equals(msg, SC.Record.BUSY_ERROR.message, "destroyRecord should throw the following error");
98
-
98
+
99
99
  store.destroyRecord(undefined, undefined, storeKey5);
100
- status = store.readStatus( storeKey5);
100
+ status = store.readStatus(storeKey5);
101
+ equals(store.dataHashes[storeKey5], null, "the data hash should be removed");
101
102
  equals(status, SC.Record.DESTROYED_CLEAN, "the status should have changed to DESTROYED_CLEAN ");
102
-
103
+
103
104
  store.destroyRecord(undefined, undefined, storeKey6);
104
105
  status = store.readStatus( storeKey6);
105
106
  equals(status, SC.Record.DESTROYED_DIRTY, "the status should have changed to DESTROYED_DIRTY ");
106
-
107
+
107
108
  equals(store.changelog.length, 1, "The changelog has the following number of entries:");
108
-
109
-
109
+
110
+
110
111
  });
@@ -11,54 +11,79 @@ var Person;
11
11
 
12
12
  module("SC.Store#loadRecord", {
13
13
  setup: function() {
14
-
14
+
15
15
  Person = SC.Record.extend({
16
16
  first: SC.Record.attr(String, { isRequired: YES}),
17
17
  last: SC.Record.attr(String),
18
18
  age: SC.Record.attr(Number),
19
19
  isAlive: SC.Record.attr(Boolean)
20
20
  });
21
-
21
+
22
22
  SC.RunLoop.begin();
23
23
 
24
24
  store = SC.Store.create();
25
-
26
- dataHashes = [
27
-
28
- Person.create({
25
+
26
+ dataHashes = [
27
+
28
+ {
29
29
  guid: 1,
30
30
  first: "John",
31
31
  last: "Sproutish",
32
32
  age: 35,
33
- isAlive: YES}),
34
-
35
- Person.create({
33
+ isAlive: YES},
34
+
35
+ {
36
36
  guid: 2,
37
37
  first: "Sarah",
38
38
  last: "Coop",
39
39
  age: 28,
40
- isAlive: YES })];
40
+ isAlive: YES }];
41
41
 
42
42
  SC.RunLoop.end();
43
43
  }
44
44
  });
45
45
 
46
46
  test("loadRecord loads new / update existing record in store", function() {
47
- var aDataHash = dataHashes[0];
47
+ var aDataHash = dataHashes[0];
48
48
  var storeKey = store.loadRecord(Person, aDataHash);
49
49
  ok(storeKey, "A store key is generated for a new record.");
50
-
51
- var doesStoreKeyResolveToPK = aDataHash.get('guid') === store.idFor(storeKey);
50
+
51
+ var doesStoreKeyResolveToPK = aDataHash.guid === store.idFor(storeKey);
52
52
  ok(doesStoreKeyResolveToPK, "The storeKey resolves to the correct Primary Key");
53
-
53
+
54
54
  var isStatusCorrect = store.peekStatus(storeKey) & SC.Record.READY_CLEAN;
55
55
  ok(isStatusCorrect, "Record is in SC.Record.READY_CLEAN state after loading into store.");
56
-
56
+
57
57
  // Change the record
58
58
  aDataHash['age'] = 40;
59
59
  var storeKeyAfterUpdate = store.loadRecord(Person, aDataHash);
60
60
  ok(storeKey === storeKeyAfterUpdate, "When the same record is loaded a second time its store key remains unchanged.");
61
-
61
+
62
62
  var record = store.materializeRecord(storeKey);
63
- ok(record.get('age') === 40, "Record in store is updated with new values from data hash.");
63
+ ok(record.get('age') === 40, "Record in store is updated with new values from data hash.");
64
+ });
65
+
66
+ test("The data hash of the record should be correct BEFORE the status changes.", function () {
67
+ var rec1;
68
+ var aDataHash = dataHashes[0];
69
+ var storeKey = store.loadRecord(Person, aDataHash);
70
+
71
+ store.set('dataSource', SC.DataSource.create({
72
+ retrieveRecords: function () { return true; }
73
+ }));
74
+
75
+ //create record
76
+ rec1 = store.materializeRecord(storeKey);
77
+
78
+ rec1.addObserver('status', function () {
79
+ if (this.get('status') === SC.Record.READY_CLEAN) {
80
+ equals(this.get('last'), "Post-Sproutish", "The string attribute should be correct since the status has updated.");
81
+ }
82
+ });
83
+
84
+ SC.run(function () {
85
+ rec1.refresh();
86
+ });
87
+
88
+ store.loadRecord(Person, {guid: 1 , first: "John", last: "Post-Sproutish", age: 35 , isAlive: true}, 1);
64
89
  });
@@ -3,20 +3,20 @@
3
3
  // Copyright: ©2006-2011 Apple Inc. and contributors.
4
4
  // License: Licensed under MIT license (see license.js)
5
5
  // ==========================================================================
6
- /*globals module ok equals same test MyApp */
6
+ /*global module ok equals test */
7
7
 
8
- var store, storeKey, json;
8
+ var store, storeKey1, storeKey2, storeKey3, storeKey4, storeKey5, storeKey6, json;
9
9
  module("SC.Store#pushChanges", {
10
- setup: function() {
10
+ setup: function () {
11
11
  SC.RunLoop.begin();
12
12
  store = SC.Store.create();
13
-
13
+
14
14
  json = {
15
15
  string: "string",
16
16
  number: 23,
17
17
  bool: YES
18
18
  };
19
-
19
+
20
20
  storeKey1 = SC.Store.generateStoreKey();
21
21
  store.writeDataHash(storeKey1, json, SC.Record.EMPTY);
22
22
 
@@ -35,43 +35,48 @@ module("SC.Store#pushChanges", {
35
35
  storeKey6 = SC.Store.generateStoreKey();
36
36
  store.writeDataHash(storeKey6, json, SC.Record.BUSY_LOADING);
37
37
  SC.RunLoop.end();
38
+ },
39
+
40
+ teardown: function () {
41
+ store.destroy();
42
+ store = json = null;
38
43
  }
39
44
  });
40
45
 
41
- test("Do a pushRetrieve and check if there is conflicts", function() {
46
+ test("Do a pushRetrieve and check if there is conflicts", function () {
42
47
  var res = store.pushRetrieve(SC.Record, undefined, undefined, storeKey1);
43
48
  equals(res, storeKey1, "There is no conflict, pushRetrieve was succesful.");
44
49
  res = store.pushRetrieve(SC.Record, undefined, undefined, storeKey4);
45
50
  ok(!res, "There is a conflict, because of the state, this is expected.");
46
51
  });
47
52
 
48
- test("Do a pushDestroy and check if there is conflicts", function() {
53
+ test("Do a pushDestroy and check if there is conflicts", function () {
49
54
  var res = store.pushDestroy(SC.Record, undefined, storeKey2);
50
55
  equals(res, storeKey2, "There is no conflict, pushDestroy was succesful.");
51
56
  res = store.pushRetrieve(SC.Record, undefined, undefined, storeKey5);
52
57
  ok(!res, "There is a conflict, because of the state, this is expected.");
53
58
  });
54
59
 
55
- test("Issue a pushError and check if there is conflicts", function() {
60
+ test("Issue a pushError and check if there is conflicts", function () {
56
61
  var res = store.pushError(SC.Record, undefined, SC.Record.NOT_FOUND_ERROR, storeKey3);
57
62
  equals(res, storeKey3, "There is no conflict, pushError was succesful.");
58
63
  res = store.pushRetrieve(SC.Record, undefined, undefined, storeKey6);
59
64
  ok(!res, "There is a conflict, because of the state, this is expected.");
60
65
  });
61
66
 
62
- test("A pushRetrieve updating the id of an existing record should update the primary Key cache", function(){
67
+ test("A pushRetrieve updating the id of an existing record should update the primary Key cache", function () {
63
68
  var tmpid, recFirst, recSecond, sK;
64
-
69
+
65
70
  tmpid = "@2345235asddsgfd";
66
71
  recFirst = { firstname: 'me', lastname: 'too', guid: tmpid };
67
72
  recSecond = { firstname: 'me', lastname: 'too', guid: 1 };
68
73
  SC.RunLoop.begin();
69
- var sK = store.loadRecord(SC.Record, recFirst, tmpid);
74
+
75
+ sK = store.loadRecord(SC.Record, recFirst, tmpid);
70
76
  SC.RunLoop.end();
71
- equals(store.idFor(sK),tmpid); //check whether the id is indeed tmpid
77
+ equals(store.idFor(sK), tmpid); //check whether the id is indeed tmpid
72
78
  SC.RunLoop.begin();
73
- store.pushRetrieve(SC.Record,1,recSecond,sK);
79
+ store.pushRetrieve(SC.Record, 1, recSecond, sK);
74
80
  SC.RunLoop.end();
75
- equals(store.idFor(sK),1); // id should now have been updated
81
+ equals(store.idFor(sK), 1); // id should now have been updated
76
82
  });
77
-
@@ -16,7 +16,7 @@ SC.SCANNER_OUT_OF_BOUNDS_ERROR = new Error("Out of bounds.");
16
16
 
17
17
  /**
18
18
  Standard error thrown by `SC.Scanner` when you pass a value not an integer.
19
-
19
+
20
20
  @static
21
21
  @constant
22
22
  @type Error
@@ -25,15 +25,15 @@ SC.SCANNER_INT_ERROR = new Error("Not an int.");
25
25
 
26
26
  /**
27
27
  Standard error thrown by `SC.SCanner` when it cannot find a string to skip.
28
-
28
+
29
29
  @static
30
30
  @constant
31
31
  @type Error
32
32
  */
33
33
  SC.SCANNER_SKIP_ERROR = new Error("Did not find the string to skip.");
34
34
 
35
- /**
36
- Standard error thrown by `SC.Scanner` when it can any kind a string in the
35
+ /**
36
+ Standard error thrown by `SC.Scanner` when it can any kind a string in the
37
37
  matching array.
38
38
 
39
39
  @static
@@ -43,7 +43,7 @@ SC.SCANNER_SKIP_ERROR = new Error("Did not find the string to skip.");
43
43
  SC.SCANNER_SCAN_ARRAY_ERROR = new Error("Did not find any string of the given array to scan.");
44
44
 
45
45
  /**
46
- Standard error thrown when trying to compare two dates in different
46
+ Standard error thrown when trying to compare two dates in different
47
47
  timezones.
48
48
 
49
49
  @static
@@ -69,38 +69,38 @@ SC.DATETIME_ISO8601 = '%Y-%m-%dT%H:%M:%S%Z';
69
69
  assign the scanner's string on initialization and the scanner progresses
70
70
  through the characters of that string from beginning to end as you request
71
71
  items.
72
-
72
+
73
73
  Scanners are used by `DateTime` to convert strings into `DateTime` objects.
74
-
74
+
75
75
  @extends SC.Object
76
76
  @since SproutCore 1.0
77
77
  @author Martin Ottenwaelter
78
78
  */
79
79
  SC.Scanner = SC.Object.extend(
80
80
  /** @scope SC.Scanner.prototype */ {
81
-
81
+
82
82
  /**
83
83
  The string to scan. You usually pass it to the create method:
84
-
84
+
85
85
  SC.Scanner.create({string: 'May, 8th'});
86
-
86
+
87
87
  @type String
88
88
  */
89
89
  string: null,
90
-
90
+
91
91
  /**
92
92
  The current scan location. It is incremented by the scanner as the
93
93
  characters are processed.
94
94
  The default is 0: the beginning of the string.
95
-
95
+
96
96
  @type Integer
97
97
  */
98
98
  scanLocation: 0,
99
-
99
+
100
100
  /**
101
101
  Reads some characters from the string, and increments the scan location
102
- accordingly.
103
-
102
+ accordingly.
103
+
104
104
  @param {Integer} len The amount of characters to read
105
105
  @throws {SC.SCANNER_OUT_OF_BOUNDS_ERROR} If asked to read too many characters
106
106
  @returns {String} The characters
@@ -111,10 +111,10 @@ SC.Scanner = SC.Object.extend(
111
111
  this.scanLocation += len;
112
112
  return str;
113
113
  },
114
-
114
+
115
115
  /**
116
116
  Reads some characters from the string and interprets it as an integer.
117
-
117
+
118
118
  @param {Integer} min_len The minimum amount of characters to read
119
119
  @param {Integer} [max_len] The maximum amount of characters to read (defaults to the minimum)
120
120
  @throws {SC.SCANNER_INT_ERROR} If asked to read non numeric characters
@@ -131,10 +131,10 @@ SC.Scanner = SC.Object.extend(
131
131
  }
132
132
  return parseInt(match[0], 10);
133
133
  },
134
-
134
+
135
135
  /**
136
136
  Attempts to skip a given string.
137
-
137
+
138
138
  @param {String} str The string to skip
139
139
  @throws {SC.SCANNER_SKIP_ERROR} If the given string could not be scanned
140
140
  @returns {Boolean} YES if the given string was successfully scanned, NO otherwise
@@ -143,10 +143,10 @@ SC.Scanner = SC.Object.extend(
143
143
  if (this.scan(str.length) !== str) throw SC.SCANNER_SKIP_ERROR;
144
144
  return YES;
145
145
  },
146
-
146
+
147
147
  /**
148
148
  Attempts to scan any string in a given array.
149
-
149
+
150
150
  @param {Array} ary the array of strings to scan
151
151
  @throws {SC.SCANNER_SCAN_ARRAY_ERROR} If no string of the given array is found
152
152
  @returns {Integer} The index of the scanned string of the given array
@@ -160,7 +160,7 @@ SC.Scanner = SC.Object.extend(
160
160
  }
161
161
  throw SC.SCANNER_SCAN_ARRAY_ERROR;
162
162
  }
163
-
163
+
164
164
  });
165
165
 
166
166
 
@@ -178,27 +178,27 @@ SC.Scanner = SC.Object.extend(
178
178
  // Creates a DateTime representing 5am in Washington, DC and 10am in London
179
179
  var d = SC.DateTime.create({ hour: 5, timezone: 300 }); // -5 hours from UTC
180
180
  var e = SC.DateTime.create({ hour: 10, timezone: 0 }); // same time, specified in UTC
181
-
181
+
182
182
  and it is true that `d.isEqual(e)`.
183
183
 
184
184
  The time zone specified upon creation is permanent, and any calls to
185
185
  `get()` on that instance will return values expressed in that time zone. So,
186
-
186
+
187
187
  d.get('hour') returns 5.
188
188
  e.get('hour') returns 10.
189
-
189
+
190
190
  but
191
-
191
+
192
192
  d.get('milliseconds') === e.get('milliseconds')
193
-
193
+
194
194
  is true, since they are technically the same position in time.
195
-
196
- You can also use SC.DateTime as a record attribute on a data model.
197
-
195
+
196
+ You can also use SC.DateTime as a record attribute on a data model.
197
+
198
198
  SC.Record.attr(SC.DateTime); // Default format is ISO8601. See `SC.DateTime.recordFormat`
199
199
  SC.Record.attr(SC.DateTime, { format: '%d/%m/%Y' }); // Attribute stored as a string in '%d/%m/%Y' format
200
- SC.Record.attr(SC.DateTime, { useUnixTime: YES }); // Attribute stored as a number in Unix time
201
-
200
+ SC.Record.attr(SC.DateTime, { useUnixTime: YES }); // Attribute stored as a number in Unix time
201
+
202
202
  @extends SC.Object
203
203
  @extends SC.Freezable
204
204
  @extends SC.Copyable
@@ -209,13 +209,13 @@ SC.Scanner = SC.Object.extend(
209
209
  */
210
210
  SC.DateTime = SC.Object.extend(SC.Freezable, SC.Copyable,
211
211
  /** @scope SC.DateTime.prototype */ {
212
-
212
+
213
213
  /**
214
214
  @private
215
215
 
216
216
  Internal representation of a date: the number of milliseconds
217
217
  since January, 1st 1970 00:00:00.0 UTC.
218
-
218
+
219
219
  @property
220
220
  @type {Integer}
221
221
  */
@@ -229,7 +229,7 @@ SC.DateTime = SC.Object.extend(SC.Freezable, SC.Copyable,
229
229
  @type Integer
230
230
  */
231
231
  timezone: 0,
232
-
232
+
233
233
  /**
234
234
  A `SC.DateTime` instance is frozen by default for better performance.
235
235
 
@@ -251,7 +251,7 @@ SC.DateTime = SC.Object.extend(SC.Freezable, SC.Copyable,
251
251
  Note that passing only a time zone does not affect the actual milliseconds since
252
252
  Jan 1, 1970, only the time zone in which it is expressed when displayed.
253
253
 
254
- @see SC.DateTime#create for the list of options you can pass
254
+ @see SC.DateTime.create for the list of options you can pass
255
255
  @returns {SC.DateTime} copy of receiver
256
256
  */
257
257
  adjust: function(options, resetCascadingly) {
@@ -267,7 +267,7 @@ SC.DateTime = SC.Object.extend(SC.Freezable, SC.Copyable,
267
267
  Returns a new `SC.DateTime` object advanced according the the given parameters.
268
268
  Don't use floating point values, it might give unpredictable results.
269
269
 
270
- @see SC.DateTime#create for the list of options you can pass
270
+ @see SC.DateTime.create for the list of options you can pass
271
271
  @param {Hash} options the amount of date/time to advance the receiver
272
272
  @returns {DateTime} copy of the receiver
273
273
  */
@@ -279,6 +279,7 @@ SC.DateTime = SC.Object.extend(SC.Freezable, SC.Copyable,
279
279
  Generic getter.
280
280
 
281
281
  The properties you can get are:
282
+
282
283
  - `year`
283
284
  - `month` (January is 1, contrary to JavaScript Dates for which January is 0)
284
285
  - `day`
@@ -289,6 +290,7 @@ SC.DateTime = SC.Object.extend(SC.Freezable, SC.Copyable,
289
290
  - `millisecond`
290
291
  - `milliseconds`, the number of milliseconds since
291
292
  January, 1st 1970 00:00:00.0 UTC
293
+ - `elapsed`, the number of milliseconds until (-), or since (+), the date.
292
294
  - `isLeapYear`, a boolean value indicating whether the receiver's year
293
295
  is a leap year
294
296
  - `daysInMonth`, the number of days of the receiver's current month
@@ -313,36 +315,94 @@ SC.DateTime = SC.Object.extend(SC.Freezable, SC.Copyable,
313
315
  like the C strftime function.
314
316
 
315
317
  The format parameter can contain the following characters:
316
- - %a -- The abbreviated weekday name (``Sun'')
317
- - %A -- The full weekday name (``Sunday'')
318
- - %b -- The abbreviated month name (``Jan'')
319
- - %B -- The full month name (``January'')
320
- - %c -- The preferred local date and time representation
321
- - %d -- Day of the month (01..31)
322
- - %D -- Day of the month (0..31)
323
- - %h -- Hour of the day, 24-hour clock (0..23)
324
- - %H -- Hour of the day, 24-hour clock (00..23)
325
- - %i -- Hour of the day, 12-hour clock (1..12)
326
- - %I -- Hour of the day, 12-hour clock (01..12)
327
- - %j -- Day of the year (001..366)
328
- - %m -- Month of the year (01..12)
329
- - %M -- Minute of the hour (00..59)
330
- - %p -- Meridian indicator (``AM'' or ``PM'')
331
- - %S -- Second of the minute (00..60)
332
- - %s -- Milliseconds of the second (000..999)
333
- - %U -- Week number of the current year,
318
+
319
+ - `%a` -- The abbreviated weekday name ("Sun")
320
+ - `%A` -- The full weekday name ("Sunday")
321
+ - `%b` -- The abbreviated month name ("Jan")
322
+ - `%B` -- The full month name ("January")
323
+ - `%c` -- The preferred local date and time representation
324
+ - `%d` -- Day of the month (01..31)
325
+ - `%D` -- Day of the month (0..31)
326
+ - `%E` -- Elapsed time, according to localized text formatting strings. See below.
327
+ - `%h` -- Hour of the day, 24-hour clock (0..23)
328
+ - `%H` -- Hour of the day, 24-hour clock (00..23)
329
+ - `%i` -- Hour of the day, 12-hour clock (1..12)
330
+ - `%I` -- Hour of the day, 12-hour clock (01..12)
331
+ - `%j` -- Day of the year (001..366)
332
+ - `%m` -- Month of the year (01..12)
333
+ - `%M` -- Minute of the hour (00..59)
334
+ - `%p` -- Meridian indicator ("AM" or "PM")
335
+ - `%S` -- Second of the minute (00..60)
336
+ - `%s` -- Milliseconds of the second (000..999)
337
+ - `%U` -- Week number of the current year,
334
338
  starting with the first Sunday as the first
335
339
  day of the first week (00..53)
336
- - %W -- Week number of the current year,
337
- starting with the first Monday as the first
340
+ - `%W` -- Week number of the current year,
341
+ starting with the first Monday as the first
338
342
  day of the first week (00..53)
339
- - %w -- Day of the week (Sunday is 0, 0..6)
340
- - %x -- Preferred representation for the date alone, no time
341
- - %X -- Preferred representation for the time alone, no date
342
- - %y -- Year without a century (00..99)
343
- - %Y -- Year with century
344
- - %Z -- Time zone (ISO 8601 formatted)
345
- - %% -- Literal ``%'' character
343
+ - `%w` -- Day of the week (Sunday is 0, 0..6)
344
+ - `%x` -- Preferred representation for the date alone, no time
345
+ - `%X` -- Preferred representation for the time alone, no date
346
+ - `%y` -- Year without a century (00..99)
347
+ - `%Y` -- Year with century
348
+ - `%Z` -- Time zone (ISO 8601 formatted)
349
+ - `%%` -- Literal "%" character
350
+
351
+ The Elapsed date format is a special, SproutCore specific formatting
352
+ feature which will return an accurate-ish, human readable indication
353
+ of elapsed time. For example, it might return "In 5 minutes", or "A year
354
+ ago".
355
+
356
+ For example,
357
+
358
+ var date = SC.DateTime.create();
359
+
360
+ date.toFormattedString("%E"); // "Right now"
361
+
362
+ date.advance({ minute: 4 });
363
+ date.toFormattedString("%E"); // "In 4 minutes"
364
+
365
+ date.advance({ day: -7 });
366
+ date.toFormattedString("%E"); // "About a week ago"
367
+
368
+ To customize the output for the %E formatter, override the date
369
+ localization strings inside of in your app. The English localization
370
+ strings used are:
371
+
372
+ '_SC.DateTime.now' : 'Right now',
373
+ '_SC.DateTime.secondIn' : 'In a moment',
374
+ '_SC.DateTime.secondsIn' : 'In %e seconds',
375
+ '_SC.DateTime.minuteIn' : 'In a minute',
376
+ '_SC.DateTime.minutesIn' : 'In %e minutes',
377
+ '_SC.DateTime.hourIn' : 'An hour from now',
378
+ '_SC.DateTime.hoursIn' : 'In about %e hours',
379
+ '_SC.DateTime.dayIn' : 'Tomorrow at %i:%M %p',
380
+ '_SC.DateTime.daysIn' : '%A at %i:%M %p',
381
+ '_SC.DateTime.weekIn' : 'Next week',
382
+ '_SC.DateTime.weeksIn' : 'In %e weeks',
383
+ '_SC.DateTime.monthIn' : 'Next month',
384
+ '_SC.DateTime.monthsIn' : 'In %e months',
385
+ '_SC.DateTime.yearIn' : 'Next year',
386
+ '_SC.DateTime.yearsIn' : 'In %e years',
387
+
388
+ '_SC.DateTime.secondAgo' : 'A moment ago',
389
+ '_SC.DateTime.secondsAgo' : '%e seconds ago',
390
+ '_SC.DateTime.minuteAgo' : 'A minute ago',
391
+ '_SC.DateTime.minutesAgo' : '%e minutes ago',
392
+ '_SC.DateTime.hourAgo' : 'An hour ago',
393
+ '_SC.DateTime.hoursAgo' : 'About %e hours ago',
394
+ '_SC.DateTime.dayAgo' : 'Yesterday at %i:%M %p',
395
+ '_SC.DateTime.daysAgo' : '%A at %i:%M %p',
396
+ '_SC.DateTime.weekAgo' : 'About a week ago',
397
+ '_SC.DateTime.weeksAgo' : '%e weeks ago',
398
+ '_SC.DateTime.monthAgo' : 'About a month ago',
399
+ '_SC.DateTime.monthsAgo' : '%e months ago',
400
+ '_SC.DateTime.yearAgo' : 'Last year',
401
+ '_SC.DateTime.yearsAgo' : '%e years ago'
402
+
403
+ Notice the special "%e" parameter in the localized strings. This will be
404
+ replaced with the number of intervals (seconds, minutes, weeks, etc) that
405
+ are appropriate.
346
406
 
347
407
  @param {String} format the format string
348
408
  @return {String} the formatted string
@@ -370,7 +430,7 @@ SC.DateTime = SC.Object.extend(SC.Freezable, SC.Copyable,
370
430
  `SC.DateTime` is designed, calling `SC.DateTime._toFormattedString` would
371
431
  have a nasty side effect. We shouldn't therefore call any of
372
432
  `SC.DateTime`'s methods from `toString`)
373
-
433
+
374
434
  @returns {String}
375
435
  */
376
436
  toString: function() {
@@ -379,7 +439,7 @@ SC.DateTime = SC.Object.extend(SC.Freezable, SC.Copyable,
379
439
  ", timezone: " +
380
440
  this.timezone;
381
441
  },
382
-
442
+
383
443
  /**
384
444
  Returns `YES` if the passed `SC.DateTime` is equal to the receiver, ie: if their
385
445
  number of milliseconds since January, 1st 1970 00:00:00.0 UTC are equal.
@@ -402,7 +462,7 @@ SC.DateTime = SC.Object.extend(SC.Freezable, SC.Copyable,
402
462
  copy: function() {
403
463
  return this;
404
464
  },
405
-
465
+
406
466
  /**
407
467
  Returns a copy of the receiver with the timezone set to the passed
408
468
  timezone. The returned value is equal to the receiver (ie `SC.Compare`
@@ -421,7 +481,7 @@ SC.DateTime = SC.Object.extend(SC.Freezable, SC.Copyable,
421
481
  if (timezone === undefined) timezone = 0;
422
482
  return this.advance({ timezone: timezone - this.timezone });
423
483
  }
424
-
484
+
425
485
  });
426
486
 
427
487
  SC.DateTime.mixin(SC.Comparable,
@@ -447,7 +507,7 @@ SC.DateTime.mixin(SC.Comparable,
447
507
  @default ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday']
448
508
  */
449
509
  dayNames: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'],
450
-
510
+
451
511
  /**
452
512
  @private
453
513
 
@@ -456,7 +516,7 @@ SC.DateTime.mixin(SC.Comparable,
456
516
  @type Array
457
517
  */
458
518
  _englishDayNames: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'],
459
-
519
+
460
520
  /**
461
521
  @type Array
462
522
  @default ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat']
@@ -474,13 +534,13 @@ SC.DateTime.mixin(SC.Comparable,
474
534
  @default ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']
475
535
  */
476
536
  abbreviatedMonthNames: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],
477
-
537
+
478
538
  /**
479
539
  @type Array
480
540
  @default ['AM', 'PM']
481
541
  */
482
542
  AMPMNames:['AM', 'PM'],
483
-
543
+
484
544
  /**
485
545
  @private
486
546
 
@@ -509,7 +569,7 @@ SC.DateTime.mixin(SC.Comparable,
509
569
  @type Integer
510
570
  */
511
571
  _tz: 0,
512
-
572
+
513
573
  /**
514
574
  The offset, in minutes, between UTC and the local system time. This
515
575
  property is computed at loading time and should never be changed.
@@ -519,7 +579,7 @@ SC.DateTime.mixin(SC.Comparable,
519
579
  @constant
520
580
  */
521
581
  timezone: new Date().getTimezoneOffset(),
522
-
582
+
523
583
  /**
524
584
  @private
525
585
 
@@ -530,7 +590,7 @@ SC.DateTime.mixin(SC.Comparable,
530
590
  @type Array
531
591
  */
532
592
  _dt_cache: {},
533
-
593
+
534
594
  /**
535
595
  @private
536
596
 
@@ -628,7 +688,7 @@ SC.DateTime.mixin(SC.Comparable,
628
688
  suffix = key.slice(4);
629
689
  if (prefix === 'last' || prefix === 'next') {
630
690
  currentWeekday = this._get('dayOfWeek', start, timezone);
631
- targetWeekday = this._englishDayNames.indexOf(suffix);
691
+ targetWeekday = this._englishDayNames.indexOf(suffix);
632
692
  if (targetWeekday >= 0) {
633
693
  var delta = targetWeekday - currentWeekday;
634
694
  if (prefix === 'last' && delta >= 0) delta -= 7;
@@ -673,6 +733,9 @@ SC.DateTime.mixin(SC.Comparable,
673
733
  case 'millisecond':
674
734
  v = d.getUTCMilliseconds();
675
735
  break;
736
+ case 'elapsed':
737
+ v = +new Date() - d.getTime() - (timezone * 60000);
738
+ break;
676
739
  }
677
740
 
678
741
  // isLeapYear
@@ -745,7 +808,7 @@ SC.DateTime.mixin(SC.Comparable,
745
808
  this._setCalcState(ms, timezone);
746
809
  return this; // for chaining
747
810
  },
748
-
811
+
749
812
  /**
750
813
  @private
751
814
  @see SC.DateTime#advance
@@ -764,7 +827,7 @@ SC.DateTime.mixin(SC.Comparable,
764
827
 
765
828
  return this._adjust(opts, start, tz, NO);
766
829
  },
767
-
830
+
768
831
  /*
769
832
  @private
770
833
 
@@ -835,7 +898,7 @@ SC.DateTime.mixin(SC.Comparable,
835
898
  // to move back to real UTC.
836
899
  d.setTime(ms + (tz * 60000));
837
900
  ms = d.getTime(); // now get the corrected milliseconds value
838
-
901
+
839
902
  // Restore what was there previously before leaving in case someone called this method
840
903
  // in the middle of another calculation.
841
904
  d.setTime(previousMilliseconds);
@@ -907,7 +970,7 @@ SC.DateTime.mixin(SC.Comparable,
907
970
  });
908
971
  }
909
972
  },
910
-
973
+
911
974
  /**
912
975
  @private
913
976
 
@@ -921,7 +984,7 @@ SC.DateTime.mixin(SC.Comparable,
921
984
  timezone: this._tz
922
985
  });
923
986
  },
924
-
987
+
925
988
  /**
926
989
  Returns a `SC.DateTime` object created from a given string parsed with a given
927
990
  format. Returns `null` if the parsing fails.
@@ -946,24 +1009,26 @@ SC.DateTime.mixin(SC.Comparable,
946
1009
  case 'A': check.dayOfWeek = scanner.scanArray(this.dayNames); break;
947
1010
  case 'b': opts.month = scanner.scanArray(this.abbreviatedMonthNames) + 1; break;
948
1011
  case 'B': opts.month = scanner.scanArray(this.monthNames) + 1; break;
949
- case 'c': throw "%c is not implemented";
1012
+ case 'c': throw new Error("%c is not implemented");
950
1013
  case 'd':
951
1014
  case 'D': opts.day = scanner.scanInt(1, 2); break;
1015
+ case 'e': throw new Error("%e is not implemented");
1016
+ case 'E': throw new Error("%E is not implemented");
952
1017
  case 'h':
953
1018
  case 'H': opts.hour = scanner.scanInt(1, 2); break;
954
1019
  case 'i':
955
1020
  case 'I': opts.hour = scanner.scanInt(1, 2); break;
956
- case 'j': throw "%j is not implemented";
1021
+ case 'j': throw new Error("%j is not implemented");
957
1022
  case 'm': opts.month = scanner.scanInt(1, 2); break;
958
1023
  case 'M': opts.minute = scanner.scanInt(1, 2); break;
959
1024
  case 'p': opts.meridian = scanner.scanArray(this.AMPMNames); break;
960
1025
  case 'S': opts.second = scanner.scanInt(1, 2); break;
961
1026
  case 's': opts.millisecond = scanner.scanInt(1, 3); break;
962
- case 'U': throw "%U is not implemented";
963
- case 'W': throw "%W is not implemented";
964
- case 'w': throw "%w is not implemented";
965
- case 'x': throw "%x is not implemented";
966
- case 'X': throw "%X is not implemented";
1027
+ case 'U': throw new Error("%U is not implemented");
1028
+ case 'W': throw new Error("%W is not implemented");
1029
+ case 'w': throw new Error("%w is not implemented");
1030
+ case 'x': throw new Error("%x is not implemented");
1031
+ case 'X': throw new Error("%X is not implemented");
967
1032
  case 'y': opts.year = scanner.scanInt(2); opts.year += (opts.year > 70 ? 1900 : 2000); break;
968
1033
  case 'Y': opts.year = scanner.scanInt(4); break;
969
1034
  case 'Z':
@@ -1008,7 +1073,7 @@ SC.DateTime.mixin(SC.Comparable,
1008
1073
 
1009
1074
  Converts the x parameter into a string padded with 0s so that the string’s
1010
1075
  length is at least equal to the len parameter.
1011
-
1076
+
1012
1077
  @param {Object} x the object to convert to a string
1013
1078
  @param {Integer} the minimum length of the returned string
1014
1079
  @returns {String} the padded string
@@ -1043,12 +1108,13 @@ SC.DateTime.mixin(SC.Comparable,
1043
1108
  case 'c': return this._date.toString();
1044
1109
  case 'd': return this._pad(this._get('day'));
1045
1110
  case 'D': return this._get('day');
1111
+ case 'E': return this._toFormattedString(this.__getElapsedStringFormat(start, timezone), start, timezone);
1046
1112
  case 'h': return this._get('hour');
1047
1113
  case 'H': return this._pad(this._get('hour'));
1048
1114
  case 'i':
1049
1115
  hour = this._get('hour');
1050
1116
  return (hour === 12 || hour === 0) ? 12 : (hour + 12) % 12;
1051
- case 'I':
1117
+ case 'I':
1052
1118
  hour = this._get('hour');
1053
1119
  return this._pad((hour === 12 || hour === 0) ? 12 : (hour + 12) % 12);
1054
1120
  case 'j': return this._pad(this._get('dayOfYear'), 3);
@@ -1086,12 +1152,20 @@ SC.DateTime.mixin(SC.Comparable,
1086
1152
  // need to move into local time zone for these calculations
1087
1153
  this._setCalcState(start - (timezone * 60000), 0); // so simulate a shifted 'UTC' time
1088
1154
 
1089
- return format.replace(/\%([aAbBcdDhHiIjmMpsSUWwxXyYZ\%])/g, function() {
1155
+ return format.replace(/\%([aAbBcdeEDhHiIjmMpsSUWwxXyYZ\%])/g, function() {
1090
1156
  var v = that.__toFormattedString.call(that, arguments, start, timezone);
1091
1157
  return v;
1092
1158
  });
1093
1159
  },
1094
1160
 
1161
+ /**
1162
+ @private
1163
+ @see SC.DateTime#toFormattedString
1164
+ */
1165
+ __getElapsedStringFormat: function(start, timezone) {
1166
+ return "";
1167
+ },
1168
+
1095
1169
  /**
1096
1170
  This will tell you which of the two passed `DateTime` is greater by
1097
1171
  comparing their number of milliseconds since
@@ -1099,11 +1173,12 @@ SC.DateTime.mixin(SC.Comparable,
1099
1173
 
1100
1174
  @param {SC.DateTime} a the first DateTime instance
1101
1175
  @param {SC.DateTime} b the second DateTime instance
1102
- @returns {Integer} -1 if a < b,
1176
+ @returns {Integer} -1 if a < b,
1103
1177
  +1 if a > b,
1104
1178
  0 if a == b
1105
1179
  */
1106
1180
  compare: function(a, b) {
1181
+ if (SC.none(a) || SC.none(b)) throw new Error("You must pass two valid dates to compare()");
1107
1182
  var ma = a.get('milliseconds');
1108
1183
  var mb = b.get('milliseconds');
1109
1184
  return ma < mb ? -1 : ma === mb ? 0 : 1;
@@ -1123,12 +1198,50 @@ SC.DateTime.mixin(SC.Comparable,
1123
1198
  don't have the same timezone
1124
1199
  */
1125
1200
  compareDate: function(a, b) {
1201
+ if (SC.none(a) || SC.none(b)) throw new Error("You must pass two valid dates to compareDate()");
1126
1202
  if (a.get('timezone') !== b.get('timezone')) throw SC.DATETIME_COMPAREDATE_TIMEZONE_ERROR;
1127
1203
  var ma = a.adjust({hour: 0}).get('milliseconds');
1128
1204
  var mb = b.adjust({hour: 0}).get('milliseconds');
1129
1205
  return ma < mb ? -1 : ma === mb ? 0 : 1;
1206
+ },
1207
+
1208
+ /**
1209
+ Returns the interval of time between the two passed in DateTimes in units
1210
+ according to the format.
1211
+
1212
+ You can display the difference in weeks (w), days (d), hours (h), minutes (M)
1213
+ or seconds (S).
1214
+
1215
+ @param {SC.DateTime} a the first DateTime instance
1216
+ @param {SC.DateTime} b the second DateTime instance
1217
+ @param {String} format the interval to get the difference in
1218
+ */
1219
+ difference: function(a, b, format) {
1220
+ if (SC.none(a) || SC.none(b)) throw new Error("You must pass two valid dates to difference()");
1221
+ var ma = a.get('milliseconds'),
1222
+ mb = b.get('milliseconds'),
1223
+ diff = mb - ma,
1224
+ divider;
1225
+
1226
+ switch(format) {
1227
+ case 'd':
1228
+ case 'D': divider = 864e5; break; // day: 1000 * 60 * 60 * 24
1229
+ case 'h':
1230
+ case 'H': divider = 36e5; break; // hour: 1000 * 60 * 60
1231
+ case 'M': divider = 6e4; break; // minute: 1000 * 60
1232
+ case 'S': divider = 1e3; break; // second: 1000
1233
+ case 's': divider = 1; break;
1234
+ case 'W': divider = 6048e5; break; // week: 1000 * 60 * 60 * 24 * 7
1235
+ default: throw format+" is not supported"; break;
1236
+ }
1237
+
1238
+ var ret = diff/divider;
1239
+
1240
+ return Math.round(ret);
1130
1241
  }
1131
1242
 
1243
+
1244
+
1132
1245
  });
1133
1246
 
1134
1247
  /**