sproutcore 1.7.1.beta → 1.8.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (445) hide show
  1. data/CHANGELOG +44 -0
  2. data/README.rdoc +20 -20
  3. data/VERSION.yml +3 -3
  4. data/lib/Buildfile +1 -1
  5. data/lib/buildtasks/build.rake +5 -0
  6. data/lib/buildtasks/manifest.rake +19 -1
  7. data/lib/frameworks/sproutcore/Buildfile +19 -17
  8. data/lib/frameworks/sproutcore/CHANGELOG.md +163 -29
  9. data/lib/frameworks/sproutcore/README.md +29 -8
  10. data/lib/frameworks/sproutcore/apps/statechart_routing/Buildfile +12 -0
  11. data/lib/frameworks/sproutcore/apps/statechart_routing/controllers/login_controller.js +11 -0
  12. data/lib/frameworks/sproutcore/apps/statechart_routing/controllers/main_controller.js +7 -0
  13. data/lib/frameworks/sproutcore/apps/statechart_routing/controllers/statechart_controller.js +17 -0
  14. data/lib/frameworks/sproutcore/apps/statechart_routing/core.js +25 -0
  15. data/lib/frameworks/sproutcore/apps/statechart_routing/main.js +15 -0
  16. data/lib/frameworks/sproutcore/apps/statechart_routing/resources/_theme.css +18 -0
  17. data/lib/frameworks/sproutcore/apps/statechart_routing/resources/bar_page.js +14 -0
  18. data/lib/frameworks/sproutcore/apps/statechart_routing/resources/foo_page.js +14 -0
  19. data/lib/frameworks/sproutcore/apps/statechart_routing/resources/loading.rhtml +9 -0
  20. data/lib/frameworks/sproutcore/apps/statechart_routing/resources/login_page.js +61 -0
  21. data/lib/frameworks/sproutcore/apps/statechart_routing/resources/main_page.js +46 -0
  22. data/lib/frameworks/sproutcore/apps/statechart_routing/statechart.js +76 -0
  23. data/lib/frameworks/sproutcore/apps/statechart_routing/theme.js +27 -0
  24. data/lib/frameworks/sproutcore/apps/tests/controllers/targets.js +1 -1
  25. data/lib/frameworks/sproutcore/apps/tests/states/no_targets.js +1 -1
  26. data/lib/frameworks/sproutcore/apps/tests/states/ready_detail.js +1 -1
  27. data/lib/frameworks/sproutcore/apps/tests/states/ready_empty.js +1 -1
  28. data/lib/frameworks/sproutcore/apps/tests/states/ready_list.js +1 -1
  29. data/lib/frameworks/sproutcore/apps/tests/states/ready_no_tests.js +1 -1
  30. data/lib/frameworks/sproutcore/apps/welcome/controllers/targets.js +1 -1
  31. data/lib/frameworks/sproutcore/frameworks/ajax/system/request.js +14 -1
  32. data/lib/frameworks/sproutcore/frameworks/ajax/system/response.js +15 -15
  33. data/lib/frameworks/sproutcore/frameworks/ajax/tests/system/request.js +1 -1
  34. data/lib/frameworks/sproutcore/frameworks/animation/core.js +8 -5
  35. data/lib/frameworks/sproutcore/frameworks/bootstrap/system/browser.js +302 -70
  36. data/lib/frameworks/sproutcore/frameworks/bootstrap/system/loader.js +19 -14
  37. data/lib/frameworks/sproutcore/frameworks/bootstrap/tests/system/browser.js +471 -149
  38. data/lib/frameworks/sproutcore/frameworks/core_foundation/controllers/array.js +3 -3
  39. data/lib/frameworks/sproutcore/frameworks/core_foundation/ext/object.js +42 -0
  40. data/lib/frameworks/sproutcore/frameworks/core_foundation/ext/run_loop.js +3 -2
  41. data/lib/frameworks/sproutcore/frameworks/core_foundation/ext/string.js +7 -0
  42. data/lib/frameworks/sproutcore/frameworks/core_foundation/mixins/action_support.js +1 -1
  43. data/lib/frameworks/sproutcore/frameworks/core_foundation/mixins/delegate_support.js +2 -2
  44. data/lib/frameworks/sproutcore/frameworks/core_foundation/mixins/responder_context.js +3 -3
  45. data/lib/frameworks/sproutcore/frameworks/core_foundation/mixins/selection_support.js +1 -1
  46. data/lib/frameworks/sproutcore/frameworks/core_foundation/panes/body_overflow.js +63 -0
  47. data/lib/frameworks/sproutcore/frameworks/core_foundation/panes/keyboard.js +1 -1
  48. data/lib/frameworks/sproutcore/frameworks/core_foundation/panes/layout.js +37 -2
  49. data/lib/frameworks/sproutcore/frameworks/core_foundation/panes/main.js +28 -6
  50. data/lib/frameworks/sproutcore/frameworks/core_foundation/panes/pane.js +10 -3
  51. data/lib/frameworks/sproutcore/frameworks/core_foundation/protocols/sparse_array_delegate.js +2 -2
  52. data/lib/frameworks/sproutcore/frameworks/core_foundation/system/browser.js +66 -2
  53. data/lib/frameworks/sproutcore/frameworks/core_foundation/system/builder.js +1 -1
  54. data/lib/frameworks/sproutcore/frameworks/core_foundation/system/cursor.js +1 -1
  55. data/lib/frameworks/sproutcore/frameworks/core_foundation/system/event.js +58 -57
  56. data/lib/frameworks/sproutcore/frameworks/core_foundation/system/locale.js +1 -1
  57. data/lib/frameworks/sproutcore/frameworks/core_foundation/system/locale.js.orig +445 -0
  58. data/lib/frameworks/sproutcore/frameworks/core_foundation/system/platform.js +51 -31
  59. data/lib/frameworks/sproutcore/frameworks/core_foundation/system/ready.js +5 -1
  60. data/lib/frameworks/sproutcore/frameworks/core_foundation/system/render_context.js +53 -69
  61. data/lib/frameworks/sproutcore/frameworks/core_foundation/system/responder.js +1 -1
  62. data/lib/frameworks/sproutcore/frameworks/core_foundation/system/root_responder.js +98 -72
  63. data/lib/frameworks/sproutcore/frameworks/core_foundation/system/string.js +37 -3
  64. data/lib/frameworks/sproutcore/frameworks/core_foundation/system/timer.js +7 -4
  65. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/controllers/array/array_case.js +21 -0
  66. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/controllers/object/content_destroyed.js +7 -7
  67. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/mixins/string.js +23 -1
  68. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/system/browser.js +66 -0
  69. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/system/event.js +22 -0
  70. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/system/locale.js +11 -11
  71. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/system/render_context/end.js +4 -4
  72. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/system/render_context/escape_html.js +41 -0
  73. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/system/render_context/helpers_className.js +1 -1
  74. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/system/render_context/helpers_style.js +8 -8
  75. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/system/render_context/update.js +17 -16
  76. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/system/selection_set/remove.js +1 -1
  77. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/build_children.js +1 -1
  78. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/class_name_bindings_test.js +15 -0
  79. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/createChildViews.js +5 -5
  80. data/lib/frameworks/sproutcore/frameworks/core_foundation/views/view.js +50 -30
  81. data/lib/frameworks/sproutcore/frameworks/core_foundation/views/view/acceleration.js +46 -0
  82. data/lib/frameworks/sproutcore/frameworks/core_foundation/views/view/animation.js +1 -43
  83. data/lib/frameworks/sproutcore/frameworks/core_foundation/views/view/keyboard.js +8 -34
  84. data/lib/frameworks/sproutcore/frameworks/core_foundation/views/view/layout.js +3 -2
  85. data/lib/frameworks/sproutcore/frameworks/core_foundation/views/view/layout_style.js +10 -1
  86. data/lib/frameworks/sproutcore/frameworks/core_foundation/views/view/manipulation.js +6 -5
  87. data/lib/frameworks/sproutcore/frameworks/core_foundation/views/view/theming.js +22 -2
  88. data/lib/frameworks/sproutcore/frameworks/datastore/data_sources/data_source.js +2 -2
  89. data/lib/frameworks/sproutcore/frameworks/datastore/mixins/relationship_support.js +1 -1
  90. data/lib/frameworks/sproutcore/frameworks/datastore/models/child_attribute.js +0 -2
  91. data/lib/frameworks/sproutcore/frameworks/datastore/models/children_attribute.js +35 -0
  92. data/lib/frameworks/sproutcore/frameworks/datastore/models/record.js +46 -19
  93. data/lib/frameworks/sproutcore/frameworks/datastore/models/record_attribute.js +23 -9
  94. data/lib/frameworks/sproutcore/frameworks/datastore/models/single_attribute.js +2 -3
  95. data/lib/frameworks/sproutcore/frameworks/datastore/system/many_array.js +1 -1
  96. data/lib/frameworks/sproutcore/frameworks/datastore/system/nested_store.js +2 -2
  97. data/lib/frameworks/sproutcore/frameworks/datastore/system/query.js +294 -302
  98. data/lib/frameworks/sproutcore/frameworks/datastore/system/query.js.orig +1531 -0
  99. data/lib/frameworks/sproutcore/frameworks/datastore/system/record_array.js +4 -2
  100. data/lib/frameworks/sproutcore/frameworks/datastore/system/store.js +14 -11
  101. data/lib/frameworks/sproutcore/frameworks/datastore/tests/integration/many_array.js +63 -0
  102. data/lib/frameworks/sproutcore/frameworks/datastore/tests/models/many_attribute.js +1 -1
  103. data/lib/frameworks/sproutcore/frameworks/datastore/tests/models/nested_records/nested_record.js +4 -4
  104. data/lib/frameworks/sproutcore/frameworks/datastore/tests/models/nested_records/nested_record_array.js +50 -10
  105. data/lib/frameworks/sproutcore/frameworks/datastore/tests/models/nested_records/nested_record_array_complex.js +4 -4
  106. data/lib/frameworks/sproutcore/frameworks/datastore/tests/models/nested_records/nested_record_complex.js +3 -3
  107. data/lib/frameworks/sproutcore/frameworks/datastore/tests/models/record/destroy.js +1 -1
  108. data/lib/frameworks/sproutcore/frameworks/datastore/tests/models/record/refresh.js +1 -1
  109. data/lib/frameworks/sproutcore/frameworks/datastore/tests/models/record_attribute.js +1 -1
  110. data/lib/frameworks/sproutcore/frameworks/datastore/tests/models/single_attribute.js +114 -67
  111. data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/nested_store/commitChangesFromNestedStore.js +1 -1
  112. data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/nested_store/readDataHash.js +1 -1
  113. data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/query/compare.js +54 -1
  114. data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/query/evaluation.js +29 -9
  115. data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/query/parse.js +1 -1
  116. data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/record_array/core_methods.js +1 -1
  117. data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/record_array/flush.js +1 -1
  118. data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/store/cancelRecord.js +1 -1
  119. data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/store/commitChangesFromNestedStore.js +1 -1
  120. data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/store/commitRecord.js +37 -45
  121. data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/store/find.js +127 -127
  122. data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/store/pushChanges.js +16 -0
  123. data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/store/pushRelationships.js +42 -4
  124. data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/store/readDataHash.js +1 -1
  125. data/lib/frameworks/sproutcore/frameworks/datetime/frameworks/core/system/datetime.js +13 -7
  126. data/lib/frameworks/sproutcore/frameworks/datetime/frameworks/core/tests/system/datetime.js +8 -0
  127. data/lib/frameworks/sproutcore/frameworks/datetime/frameworks/localized/resources/strings.js +2 -1
  128. data/lib/frameworks/sproutcore/frameworks/datetime/frameworks/localized/system/datetime.js +1 -0
  129. data/lib/frameworks/sproutcore/frameworks/debug/core.js +3 -3
  130. data/lib/frameworks/sproutcore/frameworks/desktop/core.js +1 -1
  131. data/lib/frameworks/sproutcore/frameworks/desktop/mixins/collection_row_delegate.js +1 -1
  132. data/lib/frameworks/sproutcore/frameworks/desktop/mixins/collection_view_delegate.js +1 -1
  133. data/lib/frameworks/sproutcore/frameworks/desktop/panes/alert.js +1 -4
  134. data/lib/frameworks/sproutcore/frameworks/desktop/panes/menu.js +19 -6
  135. data/lib/frameworks/sproutcore/frameworks/desktop/panes/modal.js +30 -1
  136. data/lib/frameworks/sproutcore/frameworks/desktop/panes/palette.js +1 -1
  137. data/lib/frameworks/sproutcore/frameworks/desktop/panes/panel.js +24 -1
  138. data/lib/frameworks/sproutcore/frameworks/desktop/panes/picker.js +121 -28
  139. data/lib/frameworks/sproutcore/frameworks/desktop/panes/sheet.js +15 -15
  140. data/lib/frameworks/sproutcore/frameworks/desktop/protocols/drag_data_source.js +1 -1
  141. data/lib/frameworks/sproutcore/frameworks/desktop/protocols/drop_target.js +2 -2
  142. data/lib/frameworks/sproutcore/frameworks/desktop/protocols/responder.js +2 -2
  143. data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/button.js +39 -15
  144. data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/collection.js +3 -3
  145. data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/disclosure.js +2 -2
  146. data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/image_button.js +2 -2
  147. data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/panel.js +14 -6
  148. data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/popup_button.js +3 -3
  149. data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/progress.js +11 -11
  150. data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/segment.js +4 -3
  151. data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/segmented.js +1 -51
  152. data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/slider.js +11 -16
  153. data/lib/frameworks/sproutcore/frameworks/desktop/resources/images/icons/sc-icon-error-48.png +0 -0
  154. data/lib/frameworks/sproutcore/frameworks/desktop/resources/slider.css +0 -2
  155. data/lib/frameworks/sproutcore/frameworks/desktop/system/drag.js +3 -3
  156. data/lib/frameworks/sproutcore/frameworks/desktop/system/undo_manager.js +3 -3
  157. data/lib/frameworks/sproutcore/frameworks/desktop/tests/panes/alert/ui.js +9 -9
  158. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/button/content.js +11 -11
  159. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/button/ui.js +2 -1
  160. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/collection/reload.js +1 -1
  161. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/date_field/ui.js +107 -81
  162. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/list/rowDelegate.js +3 -3
  163. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/progress/ui.js +68 -60
  164. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/radio/methods.js +57 -12
  165. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/scroll/integration.js +21 -19
  166. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/scroller.js +5 -0
  167. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/segmented/ui.js +2 -2
  168. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/select/ui.js +32 -3
  169. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/split/methods.js +12 -0
  170. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/stacked/ui_comments.js +12 -0
  171. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/tab/methods.js +0 -8
  172. data/lib/frameworks/sproutcore/frameworks/desktop/views/button.js +77 -132
  173. data/lib/frameworks/sproutcore/frameworks/desktop/views/checkbox.js +5 -6
  174. data/lib/frameworks/sproutcore/frameworks/desktop/views/collection.js +16 -15
  175. data/lib/frameworks/sproutcore/frameworks/desktop/views/date_field.js +52 -52
  176. data/lib/frameworks/sproutcore/frameworks/desktop/views/disclosure.js +1 -1
  177. data/lib/frameworks/sproutcore/frameworks/desktop/views/grid.js +1 -1
  178. data/lib/frameworks/sproutcore/frameworks/desktop/views/list.js +147 -147
  179. data/lib/frameworks/sproutcore/frameworks/desktop/views/list_item.js +11 -2
  180. data/lib/frameworks/sproutcore/frameworks/desktop/views/menu_item.js +2 -2
  181. data/lib/frameworks/sproutcore/frameworks/desktop/views/menu_scroll.js +5 -5
  182. data/lib/frameworks/sproutcore/frameworks/desktop/views/popup_button.js +22 -12
  183. data/lib/frameworks/sproutcore/frameworks/desktop/views/radio.js +13 -7
  184. data/lib/frameworks/sproutcore/frameworks/desktop/views/scene.js +2 -2
  185. data/lib/frameworks/sproutcore/frameworks/desktop/views/scroll.js +462 -441
  186. data/lib/frameworks/sproutcore/frameworks/desktop/views/scroller.js +48 -62
  187. data/lib/frameworks/sproutcore/frameworks/desktop/views/segment.js +22 -2
  188. data/lib/frameworks/sproutcore/frameworks/desktop/views/segmented.js +150 -32
  189. data/lib/frameworks/sproutcore/frameworks/desktop/views/select.js +104 -45
  190. data/lib/frameworks/sproutcore/frameworks/desktop/views/select_button.js +42 -20
  191. data/lib/frameworks/sproutcore/frameworks/desktop/views/slider.js +24 -24
  192. data/lib/frameworks/sproutcore/frameworks/desktop/views/split.js +148 -154
  193. data/lib/frameworks/sproutcore/frameworks/desktop/views/stacked.js +2 -2
  194. data/lib/frameworks/sproutcore/frameworks/desktop/views/static_content.js +2 -2
  195. data/lib/frameworks/sproutcore/frameworks/desktop/views/tab.js +8 -7
  196. data/lib/frameworks/sproutcore/frameworks/desktop/views/web.js +2 -2
  197. data/lib/frameworks/sproutcore/frameworks/experimental/Buildfile +2 -0
  198. data/lib/frameworks/sproutcore/frameworks/experimental/apps/greenhouse/controllers/files.js +1 -1
  199. data/lib/frameworks/sproutcore/frameworks/experimental/apps/greenhouse/controllers/library.js +1 -1
  200. data/lib/frameworks/sproutcore/frameworks/experimental/apps/greenhouse/controllers/targets.js +1 -1
  201. data/lib/frameworks/sproutcore/frameworks/experimental/apps/greenhouse/controllers/view_configs.js +1 -1
  202. data/lib/frameworks/sproutcore/frameworks/experimental/apps/greenhouse/mixins/drop_down.js +1 -1
  203. data/lib/frameworks/sproutcore/frameworks/experimental/apps/greenhouse/states/ready.js +1 -1
  204. data/lib/frameworks/sproutcore/frameworks/experimental/apps/greenhouse/views/plist_item.js +1 -1
  205. data/lib/frameworks/sproutcore/frameworks/experimental/apps/greenhouse/views/web.js +1 -1
  206. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/designer/controllers/page_design.js +2 -2
  207. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/designer/css/css_style_sheet.js +2 -2
  208. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/designer/designers/object_designer.js +1 -1
  209. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/designer/designers/view_designer.js +2 -2
  210. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/designer/mixins/snap_lines.js +3 -3
  211. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/designer/views/designer_drop_target.js +1 -1
  212. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/designer/views/drawing.js +21 -21
  213. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/designer/views/page_item_view.js +1 -1
  214. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/forms/views/form.js +59 -53
  215. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/menu/views/menu/scroll.js +2 -2
  216. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/polymorphism/tests/models/polymorphism/simple.js +1 -1
  217. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/scroll_view/views/core_scroll.js +6 -6
  218. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/scroll_view/views/desktop/scroll.js +2 -2
  219. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/scroll_view/views/touch/scroll.js +2 -2
  220. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/select_view/ext/menu.js +14 -10
  221. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/select_view/ext/menu_item.js +17 -6
  222. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/select_view/views/popup_button.js +38 -14
  223. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/select_view/views/select.js +5 -13
  224. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/split_view/mixins/split_child.js +1 -1
  225. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/split_view/mixins/split_thumb.js +5 -3
  226. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/split_view/tests/children.js +19 -0
  227. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/split_view/tests/methods.js +20 -2
  228. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/split_view/tests/split_thumb.js +1 -1
  229. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/split_view/views/split.js +35 -12
  230. data/lib/frameworks/sproutcore/frameworks/formatters/README +6 -0
  231. data/lib/frameworks/sproutcore/frameworks/formatters/english.lproj/strings.js +174 -0
  232. data/lib/frameworks/sproutcore/frameworks/formatters/formatters/date_formatter.js +351 -0
  233. data/lib/frameworks/sproutcore/frameworks/formatters/tests/date_formatter.js +517 -0
  234. data/lib/frameworks/sproutcore/frameworks/foundation/core.js +1 -1
  235. data/lib/frameworks/sproutcore/frameworks/foundation/mixins/auto_resize.js +345 -138
  236. data/lib/frameworks/sproutcore/frameworks/foundation/mixins/button.js +5 -3
  237. data/lib/frameworks/sproutcore/frameworks/foundation/mixins/content_value_support.js +176 -42
  238. data/lib/frameworks/sproutcore/frameworks/foundation/mixins/editable.js +1 -1
  239. data/lib/frameworks/sproutcore/frameworks/foundation/mixins/flowed_layout.js +137 -105
  240. data/lib/frameworks/sproutcore/frameworks/foundation/mixins/gestureable.js +2 -2
  241. data/lib/frameworks/sproutcore/frameworks/foundation/mixins/inline_editable.js +2 -2
  242. data/lib/frameworks/sproutcore/frameworks/foundation/mixins/inline_editor.js +16 -1
  243. data/lib/frameworks/sproutcore/frameworks/foundation/mixins/static_layout.js +1 -1
  244. data/lib/frameworks/sproutcore/frameworks/foundation/mixins/validatable.js +47 -47
  245. data/lib/frameworks/sproutcore/frameworks/foundation/private/tree_item_observer.js +3 -3
  246. data/lib/frameworks/sproutcore/frameworks/foundation/render_delegates/helpers/sizing.js +1 -1
  247. data/lib/frameworks/sproutcore/frameworks/foundation/render_delegates/label.js +28 -6
  248. data/lib/frameworks/sproutcore/frameworks/foundation/render_delegates/render_delegate.js +1 -1
  249. data/lib/frameworks/sproutcore/frameworks/foundation/resources/benchmark.css +0 -5
  250. data/lib/frameworks/sproutcore/frameworks/foundation/resources/bootstrap.rhtml +34 -19
  251. data/lib/frameworks/sproutcore/frameworks/foundation/resources/button_view.css +0 -2
  252. data/lib/frameworks/sproutcore/frameworks/foundation/resources/label.css +1 -5
  253. data/lib/frameworks/sproutcore/frameworks/foundation/resources/text_field.css +8 -9
  254. data/lib/frameworks/sproutcore/frameworks/foundation/system/benchmark.js +2 -2
  255. data/lib/frameworks/sproutcore/frameworks/foundation/system/module.js +179 -47
  256. data/lib/frameworks/sproutcore/frameworks/foundation/system/task_queue.js +34 -1
  257. data/lib/frameworks/sproutcore/frameworks/foundation/system/text_selection.js +1 -1
  258. data/lib/frameworks/sproutcore/frameworks/foundation/system/user_defaults.js +26 -12
  259. data/lib/frameworks/sproutcore/frameworks/foundation/system/utils/misc.js +7 -7
  260. data/lib/frameworks/sproutcore/frameworks/foundation/system/utils/string_measurement.js +12 -4
  261. data/lib/frameworks/sproutcore/frameworks/foundation/system/utils/string_metric_optimization.js +202 -0
  262. data/lib/frameworks/sproutcore/frameworks/foundation/tests/mixins/content_value_support/content.js +77 -8
  263. data/lib/frameworks/sproutcore/frameworks/foundation/tests/mixins/flowed_layout/tests.js +1 -0
  264. data/lib/frameworks/sproutcore/frameworks/foundation/tests/mixins/inline_editable/beginEditing.js +2 -2
  265. data/lib/frameworks/sproutcore/frameworks/foundation/tests/mixins/inline_editable/commitEditing.js +4 -3
  266. data/lib/frameworks/sproutcore/frameworks/foundation/tests/mixins/inline_editable/discardEditing.js +4 -2
  267. data/lib/frameworks/sproutcore/frameworks/foundation/tests/mixins/inline_editor/beginEditing.js +2 -2
  268. data/lib/frameworks/sproutcore/frameworks/foundation/tests/mixins/inline_editor/commitEditing.js +4 -2
  269. data/lib/frameworks/sproutcore/frameworks/foundation/tests/mixins/inline_editor/discardEditing.js +4 -2
  270. data/lib/frameworks/sproutcore/frameworks/foundation/tests/system/utils/pointInElement.js +2 -2
  271. data/lib/frameworks/sproutcore/frameworks/foundation/tests/views/label/ui.js +0 -8
  272. data/lib/frameworks/sproutcore/frameworks/foundation/tests/views/text_field/ui.js +163 -149
  273. data/lib/frameworks/sproutcore/frameworks/foundation/validators/credit_card.js +1 -1
  274. data/lib/frameworks/sproutcore/frameworks/foundation/validators/date.js +1 -1
  275. data/lib/frameworks/sproutcore/frameworks/foundation/validators/date_time.js +1 -1
  276. data/lib/frameworks/sproutcore/frameworks/foundation/validators/password.js +1 -1
  277. data/lib/frameworks/sproutcore/frameworks/foundation/validators/validator.js +3 -3
  278. data/lib/frameworks/sproutcore/frameworks/foundation/views/field.js +16 -43
  279. data/lib/frameworks/sproutcore/frameworks/foundation/views/image.js +4 -3
  280. data/lib/frameworks/sproutcore/frameworks/foundation/views/inline_text_field.js +67 -54
  281. data/lib/frameworks/sproutcore/frameworks/foundation/views/label.js +49 -38
  282. data/lib/frameworks/sproutcore/frameworks/foundation/views/text_field.js +285 -242
  283. data/lib/frameworks/sproutcore/frameworks/jquery/jquery-buffer.js +13 -13
  284. data/lib/frameworks/sproutcore/frameworks/jquery/jquery-buffered.js +19 -22
  285. data/lib/frameworks/sproutcore/frameworks/jquery/jquery-sc.js +9 -3
  286. data/lib/frameworks/sproutcore/frameworks/jquery/jquery.js +231 -186
  287. data/lib/frameworks/sproutcore/frameworks/media/views/audio.js +145 -143
  288. data/lib/frameworks/sproutcore/frameworks/media/views/video.js +156 -154
  289. data/lib/frameworks/sproutcore/frameworks/qunit/qunit/qunit.js +5 -5
  290. data/lib/frameworks/sproutcore/frameworks/routing/system/routes.js +3 -3
  291. data/lib/frameworks/sproutcore/frameworks/routing/system/routes.js.orig +540 -0
  292. data/lib/frameworks/sproutcore/frameworks/routing/tests/system/routes.js +2 -2
  293. data/lib/frameworks/sproutcore/frameworks/runtime/core.js +15 -8
  294. data/lib/frameworks/sproutcore/frameworks/runtime/debug/test_suites/array/base.js +5 -5
  295. data/lib/frameworks/sproutcore/frameworks/runtime/debug/test_suites/array/replace.js +12 -0
  296. data/lib/frameworks/sproutcore/frameworks/runtime/ext/function.js +2 -2
  297. data/lib/frameworks/sproutcore/frameworks/runtime/mixins/array.js +1 -1
  298. data/lib/frameworks/sproutcore/frameworks/runtime/mixins/copyable.js +1 -1
  299. data/lib/frameworks/sproutcore/frameworks/runtime/mixins/enumerable.js +7 -7
  300. data/lib/frameworks/sproutcore/frameworks/runtime/mixins/observable.js +98 -32
  301. data/lib/frameworks/sproutcore/frameworks/runtime/private/chain_observer.js +7 -2
  302. data/lib/frameworks/sproutcore/frameworks/runtime/private/observer_queue.js +14 -3
  303. data/lib/frameworks/sproutcore/frameworks/runtime/private/observer_set.js +98 -13
  304. data/lib/frameworks/sproutcore/frameworks/runtime/system/binding.js +8 -14
  305. data/lib/frameworks/sproutcore/frameworks/runtime/system/enumerator.js +1 -1
  306. data/lib/frameworks/sproutcore/frameworks/runtime/system/error.js +2 -2
  307. data/lib/frameworks/sproutcore/frameworks/runtime/system/index_set.js +23 -6
  308. data/lib/frameworks/sproutcore/frameworks/runtime/system/logger.js +69 -18
  309. data/lib/frameworks/sproutcore/frameworks/runtime/system/object.js +57 -31
  310. data/lib/frameworks/sproutcore/frameworks/runtime/system/run_loop.js +189 -14
  311. data/lib/frameworks/sproutcore/frameworks/runtime/system/string.js +82 -22
  312. data/lib/frameworks/sproutcore/frameworks/runtime/tests/mixins/observable/chained.js +20 -0
  313. data/lib/frameworks/sproutcore/frameworks/runtime/tests/mixins/observable/observable.js +125 -4
  314. data/lib/frameworks/sproutcore/frameworks/runtime/tests/private/observer_queue.js +1 -1
  315. data/lib/frameworks/sproutcore/frameworks/runtime/tests/system/binding.js +2 -2
  316. data/lib/frameworks/sproutcore/frameworks/runtime/tests/system/index_set/rangeStartForIndex.js +37 -0
  317. data/lib/frameworks/sproutcore/frameworks/runtime/tests/system/index_set/remove.js +2 -2
  318. data/lib/frameworks/sproutcore/frameworks/runtime/tests/system/logger.js +16 -0
  319. data/lib/frameworks/sproutcore/frameworks/runtime/tests/system/run_loop.js +75 -4
  320. data/lib/frameworks/sproutcore/frameworks/runtime/tests/system/string.js +41 -0
  321. data/lib/frameworks/sproutcore/frameworks/statechart/mixins/statechart_delegate.js +113 -0
  322. data/lib/frameworks/sproutcore/frameworks/statechart/private/state_path_matcher.js +312 -0
  323. data/lib/frameworks/sproutcore/frameworks/statechart/system/async.js +18 -22
  324. data/lib/frameworks/sproutcore/frameworks/statechart/system/state.js +508 -131
  325. data/lib/frameworks/sproutcore/frameworks/statechart/system/state_route_handler_context.js +78 -0
  326. data/lib/frameworks/sproutcore/frameworks/statechart/system/statechart.js +265 -44
  327. data/lib/frameworks/sproutcore/frameworks/statechart/tests/event_handling/basic/with_concurrent_states.js +16 -0
  328. data/lib/frameworks/sproutcore/frameworks/statechart/tests/event_handling/responder/responder_chain.js +11 -3
  329. data/lib/frameworks/sproutcore/frameworks/statechart/tests/private/state_path_matcher.js +116 -0
  330. data/lib/frameworks/sproutcore/frameworks/statechart/tests/state/methods/add_substate.js +108 -0
  331. data/lib/frameworks/sproutcore/frameworks/statechart/tests/state/methods/find_first_relative_current_state/with_concurrent.js +179 -0
  332. data/lib/frameworks/sproutcore/frameworks/statechart/tests/state/methods/find_first_relative_current_state/without_concurrent.js +74 -0
  333. data/lib/frameworks/sproutcore/frameworks/statechart/tests/state/methods/get_state.js +141 -0
  334. data/lib/frameworks/sproutcore/frameworks/statechart/tests/state/methods/get_substate.js +340 -0
  335. data/lib/frameworks/sproutcore/frameworks/statechart/tests/state/methods/route_triggered.js +161 -0
  336. data/lib/frameworks/sproutcore/frameworks/statechart/tests/state/methods/try_to_handle_event.js +288 -0
  337. data/lib/frameworks/sproutcore/frameworks/statechart/tests/state_transitioning/history_state/standard/without_concurrent_states/context.js +5 -33
  338. data/lib/frameworks/sproutcore/frameworks/statechart/tests/state_transitioning/routing/with_concurrent_states/basic.js +213 -0
  339. data/lib/frameworks/sproutcore/frameworks/statechart/tests/state_transitioning/routing/without_concurrent_states/basic.js +212 -0
  340. data/lib/frameworks/sproutcore/frameworks/statechart/tests/state_transitioning/standard/without_concurrent_states/core.js +8 -0
  341. data/lib/frameworks/sproutcore/frameworks/statechart/tests/{state/namespacing.js → statechart/methods/get_state.js} +3 -41
  342. data/lib/frameworks/sproutcore/frameworks/statechart/tests/statechart/{invoke_state_method.js → methods/invoke_state_method.js} +1 -1
  343. data/lib/frameworks/sproutcore/frameworks/statechart/tests/{event_handling/advanced → statechart}/respond_to_event.js +1 -1
  344. data/lib/frameworks/sproutcore/frameworks/statechart/tests/system/state_route_handler_context/methods/retry.js +64 -0
  345. data/lib/frameworks/sproutcore/frameworks/table/core.js +2 -0
  346. data/lib/frameworks/sproutcore/frameworks/{core_foundation → template_view}/controls/button.js +0 -1
  347. data/lib/frameworks/sproutcore/frameworks/{core_foundation → template_view}/ext/handlebars.js +29 -5
  348. data/lib/frameworks/sproutcore/frameworks/{core_foundation → template_view}/ext/handlebars/bind.js +4 -3
  349. data/lib/frameworks/sproutcore/frameworks/{core_foundation → template_view}/ext/handlebars/collection.js +0 -0
  350. data/lib/frameworks/sproutcore/frameworks/{core_foundation → template_view}/ext/handlebars/localization.js +0 -0
  351. data/lib/frameworks/sproutcore/frameworks/{core_foundation → template_view}/ext/handlebars/view.js +0 -0
  352. data/lib/frameworks/sproutcore/frameworks/{handlebars → template_view}/handlebars.js +493 -357
  353. data/lib/frameworks/sproutcore/frameworks/{core_foundation → template_view}/mixins/template_helpers/checkbox_support.js +0 -0
  354. data/lib/frameworks/sproutcore/frameworks/{core_foundation → template_view}/mixins/template_helpers/text_field_support.js +13 -2
  355. data/lib/frameworks/sproutcore/frameworks/{core_foundation → template_view}/panes/template.js +0 -0
  356. data/lib/frameworks/sproutcore/frameworks/{core_foundation → template_view}/tests/controls/button.js +0 -0
  357. data/lib/frameworks/sproutcore/frameworks/{core_foundation → template_view}/tests/mixins/template_helpers/checkbox_support.js +0 -0
  358. data/lib/frameworks/sproutcore/frameworks/{core_foundation → template_view}/tests/mixins/template_helpers/text_field_support.js +0 -0
  359. data/lib/frameworks/sproutcore/frameworks/{core_foundation → template_view}/tests/panes/template.js +0 -0
  360. data/lib/frameworks/sproutcore/frameworks/{core_foundation → template_view}/tests/views/template/collection.js +39 -14
  361. data/lib/frameworks/sproutcore/frameworks/{core_foundation → template_view}/tests/views/template/core.js +0 -0
  362. data/lib/frameworks/sproutcore/frameworks/{core_foundation → template_view}/tests/views/template/handlebars.js +57 -6
  363. data/lib/frameworks/sproutcore/frameworks/{core_foundation → template_view}/views/bindable_span.js +21 -6
  364. data/lib/frameworks/sproutcore/frameworks/{core_foundation → template_view}/views/template.js +9 -3
  365. data/lib/frameworks/sproutcore/frameworks/{core_foundation → template_view}/views/template_collection.js +55 -26
  366. data/lib/frameworks/sproutcore/frameworks/testing/system/equiv.js +1 -1
  367. data/lib/frameworks/sproutcore/frameworks/testing/system/plan.js +122 -122
  368. data/lib/frameworks/sproutcore/frameworks/testing/system/runner.js +2 -2
  369. data/lib/frameworks/sproutcore/frameworks/testing/system/suite.js +4 -4
  370. data/lib/frameworks/sproutcore/frameworks/yuireset/resources/base.css +1 -1
  371. data/lib/frameworks/sproutcore/frameworks/yuireset/resources/reset.css +0 -1
  372. data/lib/frameworks/sproutcore/frameworks/yuireset/resources/view.css +4 -4
  373. data/lib/frameworks/sproutcore/lib/index.rhtml +55 -32
  374. data/lib/frameworks/sproutcore/license.js +2 -4
  375. data/lib/frameworks/sproutcore/themes/ace/resources/body.css +5 -1
  376. data/lib/frameworks/sproutcore/themes/ace/resources/button/ace/18px/button.css +2 -2
  377. data/lib/frameworks/sproutcore/themes/ace/resources/button/ace/24px/button.css +21 -13
  378. data/lib/frameworks/sproutcore/themes/ace/resources/button/ace/30px/button.css +17 -10
  379. data/lib/frameworks/sproutcore/themes/ace/resources/button/ace/44px/button.css +4 -3
  380. data/lib/frameworks/sproutcore/themes/ace/resources/button/dark/24px/button.css +20 -12
  381. data/lib/frameworks/sproutcore/themes/ace/resources/button/dark/30px/button.css +16 -8
  382. data/lib/frameworks/sproutcore/themes/ace/resources/button/dark/jumbo/button.css +17 -0
  383. data/lib/frameworks/sproutcore/themes/ace/resources/button/dark/small/button.css +17 -0
  384. data/lib/frameworks/sproutcore/themes/ace/resources/disclosure/ace/disclosure.css +2 -2
  385. data/lib/frameworks/sproutcore/themes/ace/resources/master-detail/master-detail.css +2 -2
  386. data/lib/frameworks/sproutcore/themes/ace/resources/picker/popover/popover.css +5 -3
  387. data/lib/frameworks/sproutcore/themes/iphone_theme/english.lproj/core.css +1 -1
  388. data/lib/frameworks/sproutcore/themes/legacy_theme/english.lproj/toolbar.css +1 -1
  389. data/lib/gen/app/USAGE +17 -4
  390. data/lib/gen/language/Buildfile +4 -4
  391. data/lib/gen/language/USAGE +4 -4
  392. data/lib/gen/page/templates/pages/@target_name@/Buildfile +7 -7
  393. data/lib/gen/{html_app → statechart_app}/Buildfile +0 -0
  394. data/lib/gen/{html_app → statechart_app}/README +0 -0
  395. data/lib/gen/statechart_app/USAGE +21 -0
  396. data/lib/gen/statechart_app/templates/apps/@target_name@/Buildfile +9 -0
  397. data/lib/gen/statechart_app/templates/apps/@target_name@/core.js +24 -0
  398. data/lib/gen/statechart_app/templates/apps/@target_name@/main.js +26 -0
  399. data/lib/gen/statechart_app/templates/apps/@target_name@/resources/_theme.css +18 -0
  400. data/lib/gen/statechart_app/templates/apps/@target_name@/resources/loading.rhtml +9 -0
  401. data/lib/gen/statechart_app/templates/apps/@target_name@/resources/main_page.js +21 -0
  402. data/lib/gen/statechart_app/templates/apps/@target_name@/statechart.js +8 -0
  403. data/lib/gen/statechart_app/templates/apps/@target_name@/states/ready_state.js +12 -0
  404. data/lib/gen/statechart_app/templates/apps/@target_name@/theme.js +24 -0
  405. data/lib/sproutcore/builders.rb +1 -0
  406. data/lib/sproutcore/builders/base.rb +19 -1
  407. data/lib/sproutcore/builders/chance_file.rb +6 -1
  408. data/lib/sproutcore/builders/handlebars.rb +1 -9
  409. data/lib/sproutcore/builders/javascript.rb +1 -10
  410. data/lib/sproutcore/builders/json.rb +25 -0
  411. data/lib/sproutcore/builders/less.rb +1 -1
  412. data/lib/sproutcore/builders/sass.rb +1 -1
  413. data/lib/sproutcore/builders/stylesheet.rb +1 -9
  414. data/lib/sproutcore/helpers/html5_manifest.rb +1 -1
  415. data/lib/sproutcore/helpers/static_helper.rb +42 -0
  416. data/lib/sproutcore/rack/proxy.rb +21 -3
  417. data/lib/sproutcore/rack/service.rb +3 -2
  418. data/lib/sproutcore/tools.rb +18 -25
  419. data/lib/sproutcore/tools/gen.rb +10 -3
  420. data/lib/sproutcore/tools/init.rb +11 -10
  421. data/spec/buildtasks/manifest/prepare_build_tasks/json_spec.rb +62 -0
  422. data/spec/fixtures/builder_tests/apps/handlebars_test/Buildfile +1 -1
  423. data/spec/fixtures/builder_tests/apps/json_test/sc_static.json +2 -0
  424. data/spec/lib/builders/json_spec.rb +53 -0
  425. data/sproutcore.gemspec +2 -2
  426. data/vendor/chance/lib/chance/parser.rb +1 -1
  427. metadata +222 -177
  428. data/lib/frameworks/sproutcore/frameworks/core_foundation/system/datetime.js +0 -0
  429. data/lib/frameworks/sproutcore/frameworks/debug/invoke_once_last_debugging.js +0 -259
  430. data/lib/frameworks/sproutcore/frameworks/documentation/core.js +0 -0
  431. data/lib/frameworks/sproutcore/frameworks/foundation/system/chance.js +0 -69
  432. data/lib/frameworks/sproutcore/frameworks/foundation/tests/mixins/editable/ui.js +0 -44
  433. data/lib/frameworks/sproutcore/frameworks/foundation/tests/mixins/inline_text_field/ui.js +0 -64
  434. data/lib/frameworks/sproutcore/frameworks/mini/license.js +0 -30
  435. data/lib/gen/html_app/USAGE +0 -15
  436. data/lib/gen/html_app/templates/apps/@target_name@/@target_name@.js +0 -11
  437. data/lib/gen/html_app/templates/apps/@target_name@/resources/images/.gitkeep +0 -0
  438. data/lib/gen/html_app/templates/apps/@target_name@/resources/stylesheets/@target_name@.css +0 -6
  439. data/lib/gen/html_app/templates/apps/@target_name@/resources/templates/@target_name@.handlebars +0 -1
  440. data/lib/gen/html_project/Buildfile +0 -45
  441. data/lib/gen/html_project/INIT +0 -3
  442. data/lib/gen/html_project/README +0 -1
  443. data/lib/gen/html_project/USAGE +0 -2
  444. data/lib/gen/html_project/templates/@filename@/Buildfile +0 -5
  445. data/lib/gen/html_project/templates/@filename@/README +0 -4
@@ -152,7 +152,7 @@ SC.SplitView = SC.View.extend({
152
152
  //
153
153
  // RENDERING
154
154
  // Things like layoutDirection must be rendered as class names.
155
- // We delegate to a render delegaate.
155
+ // We delegate to a render delegate.
156
156
  //
157
157
  displayProperties: ['layoutDirection'],
158
158
  renderDelegateName: 'splitRenderDelegate',
@@ -163,7 +163,7 @@ SC.SplitView = SC.View.extend({
163
163
  /**
164
164
  * @private
165
165
  * Returns either the width or the height of the SplitView's frame,
166
- * depending on the value of layoutDiretion. If layoutDirection is
166
+ * depending on the value of layoutDirection. If layoutDirection is
167
167
  * SC.LAYOUT_HORIZONTAL, this will return the SplitView's width; otherwise,
168
168
  * the SplitView's height.
169
169
  *
@@ -179,12 +179,12 @@ SC.SplitView = SC.View.extend({
179
179
  }.property('frame', 'layoutDirection').cacheable(),
180
180
 
181
181
  viewDidResize: function(orig) {
182
- this.invokeOnce('_scsv_tile');
182
+ this.scheduleTiling();
183
183
  orig();
184
184
  }.enhance(),
185
185
 
186
186
  layoutDirectionDidChange: function() {
187
- this.invokeOnce('_scsv_tile');
187
+ this.scheduleTiling();
188
188
  }.observes('layoutDirection'),
189
189
 
190
190
  //
@@ -193,7 +193,7 @@ SC.SplitView = SC.View.extend({
193
193
  /**
194
194
  * Attempts to adjust the position of a child view, such as a divider.
195
195
  *
196
- * The implementation for this may be overriden in the delegate method
196
+ * The implementation for this may be overridden in the delegate method
197
197
  * splitViewAdjustPositionForChild.
198
198
  *
199
199
  * You may use this method to automatically collapse the view by setting
@@ -303,7 +303,7 @@ SC.SplitView = SC.View.extend({
303
303
 
304
304
  // we initialize the size first thing in case the size is empty (fill)
305
305
  // if it is empty, the way we position the views would lead to inconsistent
306
- // sizes. In addition, we will constrain all initial sizes so they'll be vali
306
+ // sizes. In addition, we will constrain all initial sizes so they'll be valid
307
307
  // when/if we auto-resize them.
308
308
  var size = this.invokeDelegateMethod(del, 'splitViewGetSizeForChild', this, child);
309
309
  size = this.invokeDelegateMethod(del, 'splitViewConstrainSizeForChild', this, child, size);
@@ -348,20 +348,38 @@ SC.SplitView = SC.View.extend({
348
348
 
349
349
  // finally, remove all dividers that we didn't keep
350
350
  for (dividerId in oldDividers) {
351
- this.removeChild(oldDividers[dividerId]);
352
351
  oldDividers[dividerId].destroy();
353
352
  }
354
353
 
355
354
  this._scsv_dividers = newDividers;
356
355
 
357
- // whenever the child views have changed and need setup, SplitView
358
- // will need to lay out the children again.
359
- this.invokeOnce('_scsv_tile');
356
+ // retile immediately.
357
+ this._scsv_tile();
360
358
  },
361
359
 
362
360
  //
363
361
  // BASIC LAYOUT CODE
364
362
  //
363
+
364
+ /**
365
+ Whether the SplitView needs to be re-laid out. You can change this by
366
+ calling scheduleTiling.
367
+ */
368
+ needsTiling: YES,
369
+
370
+ /**
371
+ Schedules a retile of the SplitView.
372
+ */
373
+ scheduleTiling: function() {
374
+ this.set('needsTiling', YES);
375
+ this.invokeOnce('_scsv_tile');
376
+ },
377
+
378
+ tileIfNeeded: function() {
379
+ if (!this.get('needsTiling')) return;
380
+ this._scsv_tile();
381
+ },
382
+
365
383
  /**
366
384
  * @private
367
385
  * Tiling is the simpler of two layout paths. Tiling lays out all of the
@@ -404,6 +422,8 @@ SC.SplitView = SC.View.extend({
404
422
  this.adjust('height', size);
405
423
  }
406
424
  }
425
+
426
+ this.set('needsTiling', NO);
407
427
  },
408
428
 
409
429
  /**
@@ -504,7 +524,7 @@ SC.SplitView = SC.View.extend({
504
524
 
505
525
  var isResizable = this.invokeDelegateMethod(del, 'splitViewShouldResizeChildToFit', this, child);
506
526
  if (isResizable === useResizable) {
507
- // if outOfSize === -1 then we are agressively resizing (not resizing proportionally)
527
+ // if outOfSize === -1 then we are aggressively resizing (not resizing proportionally)
508
528
  if (outOfSize === -1) size += diff
509
529
  else size += (size / outOfSize) * diff;
510
530
 
@@ -888,7 +908,10 @@ SC.SplitView = SC.View.extend({
888
908
  * @returns Number
889
909
  */
890
910
  splitViewGetSizeForChild: function(splitView, child) {
891
- return child.get('size') || 100;
911
+ var size = child.get('size');
912
+ if (SC.none(size)) return 100;
913
+
914
+ return size;
892
915
  },
893
916
 
894
917
  /**
@@ -0,0 +1,6 @@
1
+ These are string formatters to be used with String#fmt.
2
+
3
+ For example, you can use the date formatter like this:
4
+
5
+ "Date: %{myDate:mm}/%{myDate:dd}/%{myDate:yyyy}".fmt({ myDate: new Date(), myDateFormatter: SC.DateFormatter })
6
+
@@ -0,0 +1,174 @@
1
+ SC.stringsFor('English', {
2
+ "SC.Date.Era.AD.Abbreviated": "AD",
3
+ "SC.Date.Era.AD.Full": "Anno Domini",
4
+ "SC.Date.Era.AD.Letter": "A",
5
+
6
+ "SC.Date.Era.BC.Abbreviated": "BC",
7
+ "SC.Date.Era.BC.Full": "Before Christ",
8
+ "SC.Date.Era.BC.Letter": "B",
9
+
10
+ "SC.Date.Quarter.Q1.Abbreviated": "Q1",
11
+ "SC.Date.Quarter.Q1.Full": "1st quarter",
12
+ "SC.Date.Quarter.StandAlone.Q1.Abbreviated": "Q1",
13
+ "SC.Date.Quarter.StandAlone.Q1.Full": "1st Quarter",
14
+
15
+ "SC.Date.Quarter.Q2.Abbreviated": "Q2",
16
+ "SC.Date.Quarter.Q2.Full": "2nd quarter",
17
+ "SC.Date.Quarter.StandAlone.Q2.Abbreviated": "Q2",
18
+ "SC.Date.Quarter.StandAlone.Q2.Full": "2nd Quarter",
19
+
20
+ "SC.Date.Quarter.Q3.Abbreviated": "Q3",
21
+ "SC.Date.Quarter.Q3.Full": "3rd quarter",
22
+ "SC.Date.Quarter.StandAlone.Q3.Abbreviated": "Q3",
23
+ "SC.Date.Quarter.StandAlone.Q3.Full": "3rd Quarter",
24
+
25
+ "SC.Date.Quarter.Q4.Abbreviated": "Q4",
26
+ "SC.Date.Quarter.Q4.Full": "4th quarter",
27
+ "SC.Date.Quarter.StandAlone.Q4.Abbreviated": "Q4",
28
+ "SC.Date.Quarter.StandAlone.Q4.Full": "4th Quarter",
29
+
30
+
31
+
32
+
33
+ "SC.Date.Month.January.Abbreviated": "Jan",
34
+ "SC.Date.Month.January.Full": "January",
35
+ "SC.Date.Month.January.Letter": "J",
36
+ "SC.Date.Month.StandAlone.January.Abbreviated": "Jan",
37
+ "SC.Date.Month.StandAlone.January.Full": "January",
38
+ "SC.Date.Month.StandAlone.January.Letter": "J",
39
+
40
+ "SC.Date.Month.February.Abbreviated": "Feb",
41
+ "SC.Date.Month.February.Full": "February",
42
+ "SC.Date.Month.February.Letter": "F",
43
+ "SC.Date.Month.StandAlone.February.Abbreviated": "Feb",
44
+ "SC.Date.Month.StandAlone.February.Full": "February",
45
+ "SC.Date.Month.StandAlone.February.Letter": "F",
46
+
47
+ "SC.Date.Month.March.Abbreviated": "Mar",
48
+ "SC.Date.Month.March.Full": "March",
49
+ "SC.Date.Month.March.Letter": "M",
50
+ "SC.Date.Month.StandAlone.March.Abbreviated": "Mar",
51
+ "SC.Date.Month.StandAlone.March.Full": "March",
52
+ "SC.Date.Month.StandAlone.March.Letter": "M",
53
+
54
+ "SC.Date.Month.April.Abbreviated": "Apr",
55
+ "SC.Date.Month.April.Full": "April",
56
+ "SC.Date.Month.April.Letter": "A",
57
+ "SC.Date.Month.StandAlone.April.Abbreviated": "Apr",
58
+ "SC.Date.Month.StandAlone.April.Full": "April",
59
+ "SC.Date.Month.StandAlone.April.Letter": "A",
60
+
61
+ "SC.Date.Month.May.Abbreviated": "May",
62
+ "SC.Date.Month.May.Full": "May",
63
+ "SC.Date.Month.May.Letter": "M",
64
+ "SC.Date.Month.StandAlone.May.Abbreviated": "May",
65
+ "SC.Date.Month.StandAlone.May.Full": "May",
66
+ "SC.Date.Month.StandAlone.May.Letter": "M",
67
+
68
+ "SC.Date.Month.June.Abbreviated": "Jun",
69
+ "SC.Date.Month.June.Full": "June",
70
+ "SC.Date.Month.June.Letter": "J",
71
+ "SC.Date.Month.StandAlone.June.Abbreviated": "Jun",
72
+ "SC.Date.Month.StandAlone.June.Full": "June",
73
+ "SC.Date.Month.StandAlone.June.Letter": "J",
74
+
75
+ "SC.Date.Month.July.Abbreviated": "Jul",
76
+ "SC.Date.Month.July.Full": "July",
77
+ "SC.Date.Month.July.Letter": "J",
78
+ "SC.Date.Month.StandAlone.July.Abbreviated": "Jul",
79
+ "SC.Date.Month.StandAlone.July.Full": "July",
80
+ "SC.Date.Month.StandAlone.July.Letter": "J",
81
+
82
+ "SC.Date.Month.August.Abbreviated": "Aug",
83
+ "SC.Date.Month.August.Full": "August",
84
+ "SC.Date.Month.August.Letter": "A",
85
+ "SC.Date.Month.StandAlone.August.Abbreviated": "Aug",
86
+ "SC.Date.Month.StandAlone.August.Full": "August",
87
+ "SC.Date.Month.StandAlone.August.Letter": "A",
88
+
89
+ "SC.Date.Month.September.Abbreviated": "Sep",
90
+ "SC.Date.Month.September.Full": "September",
91
+ "SC.Date.Month.September.Letter": "S",
92
+ "SC.Date.Month.StandAlone.September.Abbreviated": "Sep",
93
+ "SC.Date.Month.StandAlone.September.Full": "September",
94
+ "SC.Date.Month.StandAlone.September.Letter": "S",
95
+
96
+ "SC.Date.Month.October.Abbreviated": "Oct",
97
+ "SC.Date.Month.October.Full": "October",
98
+ "SC.Date.Month.October.Letter": "O",
99
+ "SC.Date.Month.StandAlone.October.Abbreviated": "Oct",
100
+ "SC.Date.Month.StandAlone.October.Full": "October",
101
+ "SC.Date.Month.StandAlone.October.Letter": "O",
102
+
103
+ "SC.Date.Month.November.Abbreviated": "Nov",
104
+ "SC.Date.Month.November.Full": "November",
105
+ "SC.Date.Month.November.Letter": "N",
106
+ "SC.Date.Month.StandAlone.November.Abbreviated": "Nov",
107
+ "SC.Date.Month.StandAlone.November.Full": "November",
108
+ "SC.Date.Month.StandAlone.November.Letter": "N",
109
+
110
+ "SC.Date.Month.December.Abbreviated": "Dec",
111
+ "SC.Date.Month.December.Full": "December",
112
+ "SC.Date.Month.December.Letter": "D",
113
+ "SC.Date.Month.StandAlone.December.Abbreviated": "Dec",
114
+ "SC.Date.Month.StandAlone.December.Full": "December",
115
+ "SC.Date.Month.StandAlone.December.Letter": "D",
116
+
117
+
118
+
119
+ "SC.Date.Day.Monday.Abbreviated": "Mon",
120
+ "SC.Date.Day.Monday.Full": "Monday",
121
+ "SC.Date.Day.Monday.Letter": "M",
122
+ "SC.Date.Day.StandAlone.Monday.Abbreviated": "Mon",
123
+ "SC.Date.Day.StandAlone.Monday.Full": "Monday",
124
+ "SC.Date.Day.StandAlone.Monday.Letter": "M",
125
+
126
+ "SC.Date.Day.Tuesday.Abbreviated": "Tue",
127
+ "SC.Date.Day.Tuesday.Full": "Tuesday",
128
+ "SC.Date.Day.Tuesday.Letter": "T",
129
+ "SC.Date.Day.StandAlone.Tuesday.Abbreviated": "Tue",
130
+ "SC.Date.Day.StandAlone.Tuesday.Full": "Tuesday",
131
+ "SC.Date.Day.StandAlone.Tuesday.Letter": "T",
132
+
133
+ "SC.Date.Day.Wednesday.Abbreviated": "Wed",
134
+ "SC.Date.Day.Wednesday.Full": "Wednesday",
135
+ "SC.Date.Day.Wednesday.Letter": "W",
136
+ "SC.Date.Day.StandAlone.Wednesday.Abbreviated": "Wed",
137
+ "SC.Date.Day.StandAlone.Wednesday.Full": "Wednesday",
138
+ "SC.Date.Day.StandAlone.Wednesday.Letter": "W",
139
+
140
+ "SC.Date.Day.Thursday.Abbreviated": "Thu",
141
+ "SC.Date.Day.Thursday.Full": "Thursday",
142
+ "SC.Date.Day.Thursday.Letter": "R",
143
+ "SC.Date.Day.StandAlone.Thursday.Abbreviated": "Thu",
144
+ "SC.Date.Day.StandAlone.Thursday.Full": "Thursday",
145
+ "SC.Date.Day.StandAlone.Thursday.Letter": "R",
146
+
147
+ "SC.Date.Day.Friday.Abbreviated": "Fri",
148
+ "SC.Date.Day.Friday.Full": "Friday",
149
+ "SC.Date.Day.Friday.Letter": "F",
150
+ "SC.Date.Day.StandAlone.Friday.Abbreviated": "Fri",
151
+ "SC.Date.Day.StandAlone.Friday.Full": "Friday",
152
+ "SC.Date.Day.StandAlone.Friday.Letter": "F",
153
+
154
+ "SC.Date.Day.Saturday.Abbreviated": "Sat",
155
+ "SC.Date.Day.Saturday.Full": "Saturday",
156
+ "SC.Date.Day.Saturday.Letter": "S",
157
+ "SC.Date.Day.StandAlone.Saturday.Abbreviated": "Sat",
158
+ "SC.Date.Day.StandAlone.Saturday.Full": "Saturday",
159
+ "SC.Date.Day.StandAlone.Saturday.Letter": "S",
160
+
161
+ "SC.Date.Day.Sunday.Abbreviated": "Sun",
162
+ "SC.Date.Day.Sunday.Full": "Sunday",
163
+ "SC.Date.Day.Sunday.Letter": "S",
164
+ "SC.Date.Day.StandAlone.Sunday.Abbreviated": "Sun",
165
+ "SC.Date.Day.StandAlone.Sunday.Full": "Sunday",
166
+ "SC.Date.Day.StandAlone.Sunday.Letter": "S",
167
+
168
+
169
+
170
+ "SC.Date.Period.AM": "AM",
171
+ "SC.Date.Period.PM": "PM"
172
+
173
+
174
+ });
@@ -0,0 +1,351 @@
1
+ /**
2
+ SC.DateFormatter is used with String.fmt to format dates with a format
3
+ string. For example:
4
+
5
+ "My date: %{date:yyyy} %{date:MM} %{date:dd}".fmt(myDate, SC.DateFormatter)
6
+
7
+ You can use almost any of the Unicode Technical Standard #35 (draft 10)
8
+ formatting strings. See:
9
+
10
+ http://unicode.org/reports/tr35/tr35-10.html#Date_Format_Patterns
11
+
12
+ Note that you can only put one (yyyy, MM, dd) per token, but you can put as
13
+ many tokens as you'd like.
14
+
15
+ */
16
+ SC.DateFormatter = function(date, f) {
17
+ if (!date) {
18
+ throw "No date passed to date formatter.";
19
+ } else if (!date.getFullYear) {
20
+ throw "Object passed to date formatter was not a date!";
21
+ }
22
+
23
+ // f is expected to be a character, potentially repeated.
24
+ // What we do is figure out what letter, and how many times it is repeated.
25
+ // we also sanity-check.
26
+ if (!f) {
27
+ throw "No formatting string passed to date formatter. Date: " + date;
28
+ }
29
+
30
+ var len = f.length, first = f[0], idx;
31
+ for (idx = 1; idx < len; idx++) {
32
+ if (f[idx] !== first) {
33
+ throw "Invalid format string for a date; all characters must be the same: " + f + "; date: " + date;
34
+ }
35
+ }
36
+
37
+ var formatter = SC.DateFormatter[first];
38
+ if (!formatter) {
39
+ throw "No formatter `" + first + "` exists for date: " + date;
40
+ }
41
+
42
+ return formatter(date, len);
43
+ };
44
+
45
+ //
46
+ // Era
47
+ //
48
+ SC.DateFormatter.G = function(date, count) {
49
+ var era = "SC.Date.Era.";
50
+ era += date.getFullYear() >= 0 ? "AD" : "BC";
51
+
52
+ if (count <= 3) {
53
+ // Abbreviated era (AD, BC, etc.)
54
+ return (era + ".Abbreviated").loc();
55
+ } else if (count === 4) {
56
+ return (era + ".Full").loc();
57
+ } else if (count === 5) {
58
+ return (era + ".Letter").loc();
59
+ } else {
60
+ throw "Invalid era format: expected at most 5 digits; found " + count + ".";
61
+ }
62
+ };
63
+
64
+ //
65
+ // Year
66
+ //
67
+ SC.DateFormatter.y = function(date, count) {
68
+ // this is expected to be the year not accounting for AD/BC.
69
+ // JavaScript stores it as a negative for BC years, so we need to
70
+ // do a Math.abs()
71
+ var year = Math.abs(date.getFullYear()).toString();
72
+ while (year.length < count) { year = '0' + year; }
73
+ year = year.substr(year.length - count);
74
+ return year;
75
+ };
76
+
77
+ // We only support gregorian calendars, so YYYY would mean the same as yyyy
78
+ SC.DateFormatter.Y = function(date, count) {
79
+ return SC.DateFormatter.y(date, count);
80
+ };
81
+
82
+ // u just doesn't do Math.abs
83
+ SC.DateFormatter.u = function(date, count) {
84
+ var lt0 = date.getFullYear() < 0;
85
+ var year = Math.abs(date.getFullYear()).toString();
86
+
87
+ while (year.length < count) { year = '0' + year; }
88
+ year = year.substr(year.length - count);
89
+
90
+ return (lt0 ? "-" : "") + year;
91
+ };
92
+
93
+ //
94
+ // Quarter
95
+ //
96
+ // I am not overly sure what "standAlone" is, but I think it may be for those
97
+ // cases where the month is "standalone" and therefore should be capitalized,
98
+ // and such...
99
+ SC.DateFormatter.Q = function(date, count, isStandAlone) {
100
+ var month = date.getMonth(),
101
+ quarter = Math.floor(month / 3) + 1,
102
+ quarterName = "SC.Date.Quarter." + (isStandAlone ? "StandAlone." : "") +
103
+ "Q" + quarter;
104
+
105
+ if (count === 1) {
106
+ return "" + quarter;
107
+ } else if (count === 2) {
108
+ return "0" + quarter;
109
+ } else if (count === 3) {
110
+ return (quarterName + ".Abbreviated").loc();
111
+ } else if (count == 4) {
112
+ return (quarterName + ".Full").loc();
113
+ } else {
114
+ throw "Unrecognized number of characters for quarter: " + count;
115
+ }
116
+ };
117
+
118
+ SC.DateFormatter.q = function(date, count) {
119
+ return SC.DateFormatter.Q(date, count, YES);
120
+ };
121
+
122
+ //
123
+ // Month
124
+ //
125
+
126
+ // It is a bit easier to translate an english month name to another language
127
+ // than to translate a number like 0, 1, 2, etc.--especially because you have
128
+ // no idea, as a translator: are we beginning at 0, or at 1?
129
+ SC.DateFormatter.ENGLISH_MONTH_NAMES = [
130
+ "January", "February", "March",
131
+ "April", "May", "June",
132
+ "July", "August", "September",
133
+ "October", "November", "December"
134
+ ];
135
+
136
+ SC.DateFormatter.M = function(date, count, isStandAlone) {
137
+
138
+ var month = date.getMonth(),
139
+ monthString = "" + (month + 1),
140
+ monthName = "SC.Date.Month." + (isStandAlone ? "StandAlone." : "") +
141
+ SC.DateFormatter.ENGLISH_MONTH_NAMES[month];
142
+
143
+ if (count === 1) {
144
+ return monthString;
145
+ } else if (count === 2) {
146
+ if (monthString.length < 2) monthString = "0" + monthString;
147
+ return monthString;
148
+ } else if (count === 3) {
149
+ return (monthName + ".Abbreviated").loc();
150
+ } else if (count === 4) {
151
+ return (monthName + ".Full").loc();
152
+ } else if (count === 5) {
153
+ return (monthName + ".Letter").loc();
154
+ } else {
155
+ throw "The number of Ms or Ls must be from 1 to 5. Supplied: " + count;
156
+ }
157
+ };
158
+
159
+ SC.DateFormatter.L = function(date, count) {
160
+ return SC.DateFormatter.M(date, count, YES);
161
+ };
162
+
163
+ // OMITTED: l; used only with Chinese calendar.
164
+ SC.DateFormatter.l = function() { throw "`l` date formatter not implemented."; };
165
+
166
+ //
167
+ // Omitted for now: Week Number
168
+ //
169
+ SC.DateFormatter.w = function(date, count) {
170
+ throw "Week number currently not supported for date formatting.";
171
+ };
172
+
173
+ SC.DateFormatter.W = function(date, count) {
174
+ throw "Week number currently not supported for date formatting.";
175
+ };
176
+
177
+ //
178
+ // Day
179
+ //
180
+ SC.DateFormatter.d = function(date, count) {
181
+ // day of month
182
+ var dayString = "" + date.getDate();
183
+ if (count > dayString.length) dayString = "0" + dayString;
184
+ return dayString;
185
+ };
186
+
187
+ SC.DateFormatter.D = function(date, count) {
188
+ // day of year
189
+ var firstDayOfYear = new Date(date.getFullYear(), 0, 1),
190
+ timestamp = firstDayOfYear.getTime(),
191
+ diff = date.getTime() - timestamp,
192
+ days = Math.floor(diff / (24 * 60 * 60 * 1000)) + 1;
193
+
194
+ days = "" + days;
195
+ while (days.length < count) days = "0" + days;
196
+ return days;
197
+ };
198
+
199
+ SC.DateFormatter.F = function(date, count) {
200
+ // day of week in month; for instance, 2 if it is the second wednesday in the month.
201
+ throw "Day of week in month (F) is not supported in date formatting";
202
+ };
203
+
204
+ SC.DateFormatter.g = function(date, count) {
205
+ // Julian day, modified: should be based on local timezone,
206
+ // and, more than that, local timezone midnight (not noon)
207
+ throw "Julian day not supported in date formatting.";
208
+ };
209
+
210
+ //
211
+ // Week Day
212
+ //
213
+
214
+ // See discussion of using a mapping to english names for months...
215
+ SC.DateFormatter.ENGLISH_DAY_NAMES = [
216
+ // JavaScript starts week on Sunday
217
+ "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"
218
+ ];
219
+
220
+
221
+ SC.DateFormatter.E = function(date, count) {
222
+ // E is like e, except that it doesn't ever create a day-of-week number,
223
+ // and therefore, if the count is less than three, it should be coerced
224
+ // up to three, because it means the same thing (short day)
225
+ if (count < 3) count = 3;
226
+ return SC.DateFormatter.e(date, count);
227
+ };
228
+
229
+ SC.DateFormatter.e = function(date, count, isStandAlone) {
230
+ var day = date.getDay(),
231
+ dayString = "" + (day + 1),
232
+ dayName = "SC.Date.Day." + (isStandAlone ? "StandAlone." : "") +
233
+ SC.DateFormatter.ENGLISH_DAY_NAMES[day];
234
+
235
+ if (count === 1) {
236
+ return dayString;
237
+ } else if (count === 2) {
238
+ dayString = "0" + dayString;
239
+ return dayString;
240
+ } else if (count === 3) {
241
+ return (dayName + ".Abbreviated").loc();
242
+ } else if (count === 4) {
243
+ return (dayName + ".Full").loc();
244
+ } else if (count === 5) {
245
+ return (dayName + ".Letter").loc();
246
+ } else {
247
+ throw "Unrecognized number of `e`s, `c`s, or `E`s in date format string.";
248
+ }
249
+ };
250
+
251
+ SC.DateFormatter.c = function(date, count) {
252
+ return SC.DateFormatter.e(date, count, YES);
253
+ };
254
+
255
+
256
+
257
+ //
258
+ // Period
259
+ //
260
+ SC.DateFormatter.a = function(date, count) {
261
+ if (count !== 1) {
262
+ throw "`a` can only be included in a date format string once.";
263
+ }
264
+
265
+ var name = "SC.Date.Period." + (date.getHours() > 11 ? "PM" : "AM");
266
+ return name.loc();
267
+ };
268
+
269
+ //
270
+ // Hour
271
+ //
272
+ // upper-case: 0-based. WEIRD PART: upper-case H and lower-case k are
273
+ // 24 hour. WTF? This makes NO SENSE AT ALL!
274
+ SC.DateFormatter._h = function(date, count, is24, base) {
275
+ var hour = date.getHours();
276
+ if (!is24) hour = hour % 12;
277
+ if (base) {
278
+ if (!is24) {
279
+ // if hour is 0, then we need to make it 12.
280
+ if (hour === 0) hour = 12;
281
+ } else {
282
+ // if hour is 0, hour needs to be 24
283
+ if (hour === 0) hour = 24;
284
+ }
285
+ }
286
+
287
+ var hourStr = "" + hour;
288
+ if (hourStr.length < count) hourStr = "0" + hourStr;
289
+
290
+ return hourStr;
291
+ };
292
+
293
+ SC.DateFormatter.h = function(date, count) {
294
+ return SC.DateFormatter._h(date, count, NO, 1);
295
+ };
296
+
297
+ SC.DateFormatter.H = function(date, count) {
298
+ return SC.DateFormatter._h(date, count, YES, 0);
299
+ };
300
+
301
+ SC.DateFormatter.K = function(date, count) {
302
+ return SC.DateFormatter._h(date, count, NO, 0);
303
+ };
304
+
305
+ SC.DateFormatter.k = function(date, count) {
306
+ return SC.DateFormatter._h(date, count, YES, 1);
307
+ };
308
+
309
+ //
310
+ // Minute
311
+ //
312
+ SC.DateFormatter.m = function(date, count) {
313
+ var str = "" + date.getMinutes();
314
+ if (str.length < count) str = "0" + str;
315
+ return str;
316
+ };
317
+
318
+ SC.DateFormatter.s = function(date, count) {
319
+ var str = "" + date.getSeconds();
320
+ if (str.length < count) str = "0" + str;
321
+ return str;
322
+ };
323
+
324
+ SC.DateFormatter.S = function(date, count) {
325
+ var fraction = date.getMilliseconds() / 1000.0,
326
+ mult = Math.pow(10, count);
327
+
328
+ fraction = Math.round(fraction * mult);
329
+ fraction = "" + fraction;
330
+
331
+ while(fraction.length < count) fraction="0" + fraction;
332
+ return fraction;
333
+ };
334
+
335
+ SC.DateFormatter.A = function(date, count) {
336
+ // ms in day...
337
+ var timestamp = new Date(date.getFullYear(), date.getMonth(), date.getDay()).getTime();
338
+ var res = date.getTime() - timestamp;
339
+ res = "" + res;
340
+ while (res.length < count) res = "0" + res;
341
+ return res;
342
+ };
343
+
344
+ SC.DateFormatter.z =
345
+ SC.DateFormatter.Z =
346
+ SC.DateFormatter.v =
347
+ SC.DateFormatter.V = function(date, count) {
348
+ throw "Timezone not supported in date format strings.";
349
+ };
350
+
351
+