sproutcore 1.8.2.1 → 1.9.0
Sign up to get free protection for your applications and to get access to all the features.
- data/VERSION.yml +2 -2
- data/lib/buildtasks/helpers/file_rule_list.rb +3 -3
- data/lib/frameworks/sproutcore/Buildfile +1 -1
- data/lib/frameworks/sproutcore/CHANGELOG.md +235 -16
- data/lib/frameworks/sproutcore/apps/media_examples/Buildfile +13 -0
- data/lib/frameworks/sproutcore/apps/media_examples/core.js +35 -0
- data/lib/frameworks/sproutcore/apps/media_examples/resources/loading.rhtml +3 -0
- data/lib/frameworks/sproutcore/apps/media_examples/resources/main_page.js +53 -0
- data/lib/frameworks/sproutcore/apps/media_examples/views/audio_view.js +100 -0
- data/lib/frameworks/sproutcore/apps/media_examples/views/camera_view.js +39 -0
- data/lib/frameworks/sproutcore/apps/media_examples/views/capabilities_view.js +116 -0
- data/lib/frameworks/sproutcore/apps/media_examples/views/microphone_view.js +40 -0
- data/lib/frameworks/sproutcore/apps/media_examples/views/video_view.js +107 -0
- data/lib/frameworks/sproutcore/apps/showcase/Buildfile +11 -0
- data/lib/frameworks/sproutcore/apps/showcase/README +15 -0
- data/lib/frameworks/sproutcore/apps/showcase/controllers/source_controller.js +15 -0
- data/lib/frameworks/sproutcore/apps/showcase/controllers/source_tree_controller.js +212 -0
- data/lib/frameworks/sproutcore/apps/showcase/core.js +170 -0
- data/lib/frameworks/sproutcore/apps/showcase/main.js +27 -0
- data/lib/frameworks/sproutcore/apps/showcase/resources/_theme.css +18 -0
- data/lib/frameworks/sproutcore/apps/showcase/resources/api.css +80 -0
- data/lib/frameworks/sproutcore/apps/showcase/resources/favicon.ico +0 -0
- data/lib/frameworks/sproutcore/apps/showcase/resources/images/alarm-clock.png +0 -0
- data/lib/frameworks/sproutcore/apps/showcase/resources/images/balloon-facebook.png +0 -0
- data/lib/frameworks/sproutcore/apps/showcase/resources/images/balloon-twitter.png +0 -0
- data/lib/frameworks/sproutcore/apps/showcase/resources/images/balloon.png +0 -0
- data/lib/frameworks/sproutcore/apps/showcase/resources/images/bullet.png +0 -0
- data/lib/frameworks/sproutcore/apps/showcase/resources/images/calendar-insert.png +0 -0
- data/lib/frameworks/sproutcore/apps/showcase/resources/images/cross.png +0 -0
- data/lib/frameworks/sproutcore/apps/showcase/resources/images/example-box-bg.png +0 -0
- data/lib/frameworks/sproutcore/apps/showcase/resources/images/fruit-grape.png +0 -0
- data/lib/frameworks/sproutcore/apps/showcase/resources/images/fruit-lime.png +0 -0
- data/lib/frameworks/sproutcore/apps/showcase/resources/images/fruit-orange.png +0 -0
- data/lib/frameworks/sproutcore/apps/showcase/resources/images/fruit.png +0 -0
- data/lib/frameworks/sproutcore/apps/showcase/resources/images/glow.png +0 -0
- data/lib/frameworks/sproutcore/apps/showcase/resources/images/green-dot.png +0 -0
- data/lib/frameworks/sproutcore/apps/showcase/resources/images/grey-dot.png +0 -0
- data/lib/frameworks/sproutcore/apps/showcase/resources/images/logo.png +0 -0
- data/lib/frameworks/sproutcore/apps/showcase/resources/images/pixels.png +0 -0
- data/lib/frameworks/sproutcore/apps/showcase/resources/images/red-dot.png +0 -0
- data/lib/frameworks/sproutcore/apps/showcase/resources/images/sproutcore-logo.png +0 -0
- data/lib/frameworks/sproutcore/apps/showcase/resources/images/sproutcore-startup-landscape.jpg +0 -0
- data/lib/frameworks/sproutcore/apps/{test_controls → showcase}/resources/loading.rhtml +1 -1
- data/lib/frameworks/sproutcore/apps/showcase/resources/main_page.js +61 -0
- data/lib/frameworks/sproutcore/apps/showcase/resources/stylesheet.css +365 -0
- data/lib/frameworks/sproutcore/apps/showcase/resources/views_page.js +64 -0
- data/lib/frameworks/sproutcore/apps/showcase/system/views_item_content.js +59 -0
- data/lib/frameworks/sproutcore/apps/showcase/theme.js +27 -0
- data/lib/frameworks/sproutcore/apps/showcase/views/button_views.js +55 -0
- data/lib/frameworks/sproutcore/apps/showcase/views/checkbox_views.js +34 -0
- data/lib/frameworks/sproutcore/apps/showcase/views/container_views.js +29 -0
- data/lib/frameworks/sproutcore/apps/showcase/views/date_field_views.js +30 -0
- data/lib/frameworks/sproutcore/apps/showcase/views/disclosure_views.js +22 -0
- data/lib/frameworks/sproutcore/apps/showcase/views/grid_views.js +28 -0
- data/lib/frameworks/sproutcore/apps/showcase/views/image_button_views.js +22 -0
- data/lib/frameworks/sproutcore/apps/showcase/views/image_views.js +51 -0
- data/lib/frameworks/sproutcore/apps/showcase/views/label_views.js +53 -0
- data/lib/frameworks/sproutcore/apps/showcase/views/list_views.js +31 -0
- data/lib/frameworks/sproutcore/apps/showcase/views/popup_button_views.js +24 -0
- data/lib/frameworks/sproutcore/apps/showcase/views/progress_views.js +26 -0
- data/lib/frameworks/sproutcore/apps/showcase/views/radio_views.js +30 -0
- data/lib/frameworks/sproutcore/apps/showcase/views/scroll_views.js +40 -0
- data/lib/frameworks/sproutcore/apps/showcase/views/segmented_views.js +90 -0
- data/lib/frameworks/sproutcore/apps/showcase/views/select_views.js +64 -0
- data/lib/frameworks/sproutcore/apps/showcase/views/slider_views.js +46 -0
- data/lib/frameworks/sproutcore/apps/showcase/views/source_list_views.js +23 -0
- data/lib/frameworks/sproutcore/apps/showcase/views/split_views.js +22 -0
- data/lib/frameworks/sproutcore/apps/showcase/views/stacked_views.js +23 -0
- data/lib/frameworks/sproutcore/apps/showcase/views/static_content_views.js +23 -0
- data/lib/frameworks/sproutcore/apps/showcase/views/tab_views.js +51 -0
- data/lib/frameworks/sproutcore/apps/showcase/views/text_field_views.js +52 -0
- data/lib/frameworks/sproutcore/apps/showcase/views/toolbar_views.js +23 -0
- data/lib/frameworks/sproutcore/apps/showcase/views/views_item_view.js +91 -0
- data/lib/frameworks/sproutcore/apps/showcase/views/views_list_view.js +67 -0
- data/lib/frameworks/sproutcore/apps/showcase/views/web_views.js +32 -0
- data/lib/frameworks/sproutcore/apps/showcase/views/well_views.js +29 -0
- data/lib/frameworks/sproutcore/apps/showcase/views/workspace_views.js +23 -0
- data/lib/frameworks/sproutcore/apps/tests/english.lproj/strings.js +2 -1
- data/lib/frameworks/sproutcore/frameworks/ajax/system/request.js +91 -51
- data/lib/frameworks/sproutcore/frameworks/ajax/system/response.js +93 -27
- data/lib/frameworks/sproutcore/frameworks/ajax/tests/system/request.js +196 -15
- data/lib/frameworks/sproutcore/frameworks/bootstrap/system/browser.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/core_foundation/controllers/array.js +26 -10
- data/lib/frameworks/sproutcore/frameworks/core_foundation/controllers/object.js +90 -92
- data/lib/frameworks/sproutcore/frameworks/core_foundation/ext/object.js +69 -39
- data/lib/frameworks/sproutcore/frameworks/core_foundation/mixins/selection_support.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/core_foundation/system/color.js +769 -0
- data/lib/frameworks/sproutcore/frameworks/{desktop → core_foundation}/system/key_bindings.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/system/render_context.js +4 -4
- data/lib/frameworks/sproutcore/frameworks/core_foundation/system/req_anim_frame.js +31 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/system/sparse_array.js +7 -1
- data/lib/frameworks/sproutcore/frameworks/core_foundation/system/utils.js +8 -6
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/controllers/array/array_case.js +49 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/controllers/array/selection_support.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/ext/object_test.js +106 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/system/color.js +448 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/system/render_context/escape_html.js +8 -1
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/system/timer/invokeLater.js +24 -24
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/system/utils/offset.js +5 -5
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/animation.js +90 -30
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/class_name_bindings_test.js +14 -6
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/touch.js +113 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/views/view.js +64 -8
- data/lib/frameworks/sproutcore/frameworks/core_foundation/views/view/animation.js +20 -4
- data/lib/frameworks/sproutcore/frameworks/core_foundation/views/view/layout_style.js +58 -38
- data/lib/frameworks/sproutcore/frameworks/core_foundation/views/view/touch.js +32 -39
- data/lib/frameworks/sproutcore/frameworks/core_tools/models/target.js +20 -15
- data/lib/frameworks/sproutcore/frameworks/datastore/models/child_attribute.js +19 -15
- data/lib/frameworks/sproutcore/frameworks/datastore/models/child_record.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/datastore/models/children_attribute.js +16 -16
- data/lib/frameworks/sproutcore/frameworks/datastore/models/many_attribute.js +32 -32
- data/lib/frameworks/sproutcore/frameworks/datastore/models/record.js +53 -38
- data/lib/frameworks/sproutcore/frameworks/datastore/models/record_attribute.js +9 -8
- data/lib/frameworks/sproutcore/frameworks/datastore/models/single_attribute.js +26 -26
- data/lib/frameworks/sproutcore/frameworks/datastore/system/child_array.js +1 -3
- data/lib/frameworks/sproutcore/frameworks/datastore/system/query.js +4 -3
- data/lib/frameworks/sproutcore/frameworks/datastore/system/record_array.js +0 -4
- data/lib/frameworks/sproutcore/frameworks/datastore/system/store.js +96 -8
- data/lib/frameworks/sproutcore/frameworks/datastore/tests/models/datetime_recordattribute.js +22 -4
- data/lib/frameworks/sproutcore/frameworks/datastore/tests/models/nested_records/data_store.js +24 -24
- data/lib/frameworks/sproutcore/frameworks/datastore/tests/models/nested_records/nested_record.js +376 -37
- data/lib/frameworks/sproutcore/frameworks/datastore/tests/models/nested_records/nested_record_array.js +51 -53
- data/lib/frameworks/sproutcore/frameworks/datastore/tests/models/nested_records/nested_record_array_complex.js +108 -66
- data/lib/frameworks/sproutcore/frameworks/datastore/tests/models/nested_records/nested_record_complex.js +33 -35
- data/lib/frameworks/sproutcore/frameworks/datastore/tests/models/single_attribute.js +6 -4
- data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/query/compare.js +33 -3
- data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/store/createRecord.js +181 -15
- data/lib/frameworks/sproutcore/frameworks/datetime/frameworks/core/system/datetime.js +6 -0
- data/lib/frameworks/sproutcore/frameworks/desktop/mixins/border.js +3 -1
- data/lib/frameworks/sproutcore/frameworks/desktop/mixins/collection_fast_path.js +2 -1
- data/lib/frameworks/sproutcore/frameworks/desktop/panes/menu.js +153 -6
- data/lib/frameworks/sproutcore/frameworks/desktop/panes/modal.js +39 -18
- data/lib/frameworks/sproutcore/frameworks/desktop/protocols/drop_target.js +2 -1
- data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/disclosure.js +6 -7
- data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/progress.js +139 -50
- data/lib/frameworks/sproutcore/frameworks/{foundation → desktop}/resources/button_view.css +3 -3
- data/lib/frameworks/sproutcore/frameworks/{foundation → desktop}/resources/checkbox_view.css +4 -0
- data/lib/frameworks/sproutcore/frameworks/desktop/resources/disclosure.css +2 -2
- data/lib/frameworks/sproutcore/frameworks/{foundation → desktop}/resources/radio_view.css +0 -0
- data/lib/frameworks/sproutcore/frameworks/desktop/resources/segmented.css +23 -17
- data/lib/frameworks/sproutcore/frameworks/desktop/resources/web.css +5 -0
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/integration/dialog.js +4 -5
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/mixins/border.js +3 -12
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/mixins/collection_fast_path.js +58 -0
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/panes/menu/methods.js +2 -2
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/panes/menu/ui.js +79 -12
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/collection/mouse.js +13 -0
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/date_field/ui.js +2 -2
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/grid/drag_and_drop.js +147 -0
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/grid/methods.js +123 -2
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/list/drag_and_drop.js +150 -0
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/list_item.js +58 -44
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/progress/methods.js +9 -80
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/progress/ui.js +54 -130
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/segmented/observers.js +78 -0
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/segmented/ui.js +64 -9
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/select/methods.js +11 -11
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/select/ui.js +28 -2
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/slider/methods.js +74 -0
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/slider/ui.js +141 -0
- data/lib/frameworks/sproutcore/frameworks/desktop/views/collection.js +4 -1
- data/lib/frameworks/sproutcore/frameworks/desktop/views/grid.js +69 -36
- data/lib/frameworks/sproutcore/frameworks/desktop/views/list.js +27 -11
- data/lib/frameworks/sproutcore/frameworks/desktop/views/list_item.js +41 -25
- data/lib/frameworks/sproutcore/frameworks/desktop/views/progress.js +51 -89
- data/lib/frameworks/sproutcore/frameworks/desktop/views/segmented.js +59 -34
- data/lib/frameworks/sproutcore/frameworks/desktop/views/select.js +59 -49
- data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/scroll_view/views/scroll.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/foundation/controllers/tree.js +4 -1
- data/lib/frameworks/sproutcore/frameworks/foundation/render_delegates/label.js +14 -14
- data/lib/frameworks/sproutcore/frameworks/foundation/resources/label.css +8 -8
- data/lib/frameworks/sproutcore/frameworks/foundation/resources/text_field.css +13 -1
- data/lib/frameworks/sproutcore/frameworks/foundation/system/user_defaults.js +4 -1
- data/lib/frameworks/sproutcore/frameworks/foundation/system/utils/colors.js +21 -22
- data/lib/frameworks/sproutcore/frameworks/foundation/tests/controllers/tree/selection_support.js +26 -0
- data/lib/frameworks/sproutcore/frameworks/foundation/tests/mixins/inline_text_field/beginEditing.js +4 -5
- data/lib/frameworks/sproutcore/frameworks/foundation/tests/system/image_queue.js +68 -44
- data/lib/frameworks/sproutcore/frameworks/foundation/tests/system/user_defaults.js +10 -0
- data/lib/frameworks/sproutcore/frameworks/foundation/tests/views/container/methods.js +0 -10
- data/lib/frameworks/sproutcore/frameworks/foundation/tests/views/container/ui.js +24 -59
- data/lib/frameworks/sproutcore/frameworks/foundation/tests/views/label/ui.js +47 -34
- data/lib/frameworks/sproutcore/frameworks/foundation/tests/views/text_field/methods.js +96 -12
- data/lib/frameworks/sproutcore/frameworks/foundation/tests/views/text_field/ui.js +38 -0
- data/lib/frameworks/sproutcore/frameworks/foundation/views/text_field.js +38 -50
- data/lib/frameworks/sproutcore/frameworks/jquery/jquery-buffer.js +6 -2
- data/lib/frameworks/sproutcore/frameworks/media/media_capabilities.js +211 -0
- data/lib/frameworks/sproutcore/frameworks/media/render_delegates/media_slider.js +77 -0
- data/lib/frameworks/sproutcore/frameworks/media/resources/playeras3.fla +0 -0
- data/lib/frameworks/sproutcore/frameworks/media/resources/video.css +129 -115
- data/lib/frameworks/sproutcore/frameworks/media/resources/videoCanvas.swf +0 -0
- data/lib/frameworks/sproutcore/frameworks/media/tests/media_capabilities.js +194 -0
- data/lib/frameworks/sproutcore/frameworks/media/views/audio.js +56 -173
- data/lib/frameworks/sproutcore/frameworks/media/views/controls.js +15 -18
- data/lib/frameworks/sproutcore/frameworks/media/views/media_slider.js +63 -219
- data/lib/frameworks/sproutcore/frameworks/media/views/mini_controls.js +4 -2
- data/lib/frameworks/sproutcore/frameworks/media/views/simple_controls.js +4 -8
- data/lib/frameworks/sproutcore/frameworks/media/views/video.js +51 -160
- data/lib/frameworks/sproutcore/frameworks/routing/system/routes.js +138 -102
- data/lib/frameworks/sproutcore/frameworks/routing/tests/system/routes.js +8 -0
- data/lib/frameworks/sproutcore/frameworks/runtime/core.js +2 -2
- data/lib/frameworks/sproutcore/frameworks/runtime/ext/array.js +8 -2
- data/lib/frameworks/sproutcore/frameworks/runtime/mixins/enumerable.js +32 -12
- data/lib/frameworks/sproutcore/frameworks/runtime/mixins/observable.js +28 -24
- data/lib/frameworks/sproutcore/frameworks/runtime/system/binding.js +0 -2
- data/lib/frameworks/sproutcore/frameworks/runtime/system/object.js +111 -12
- data/lib/frameworks/sproutcore/frameworks/runtime/tests/core/compare.js +9 -7
- data/lib/frameworks/sproutcore/frameworks/runtime/tests/mixins/array.js +8 -2
- data/lib/frameworks/sproutcore/frameworks/runtime/tests/mixins/enumerable/enumerable.js +160 -115
- data/lib/frameworks/sproutcore/frameworks/runtime/tests/system/object/enhance.js +64 -19
- data/lib/frameworks/sproutcore/frameworks/runtime/tests/system/object/mixin.js +83 -0
- data/lib/frameworks/sproutcore/frameworks/template_view/ext/handlebars/bind.js +3 -0
- data/lib/frameworks/sproutcore/frameworks/template_view/tests/views/template/collection.js +13 -0
- data/lib/frameworks/sproutcore/frameworks/template_view/tests/views/template/handlebars.js +4 -2
- data/lib/frameworks/sproutcore/frameworks/template_view/views/template_collection.js +5 -5
- data/lib/frameworks/sproutcore/themes/ace/resources/button/ace/18px/button.css +5 -1
- data/lib/frameworks/sproutcore/themes/ace/resources/button/ace/44px/button.css +13 -12
- data/lib/frameworks/sproutcore/themes/ace/resources/collection/normal/list.css +9 -2
- data/lib/frameworks/sproutcore/themes/ace/resources/progress/ace/progress.css +105 -5
- data/lib/frameworks/sproutcore/themes/ace/resources/progress/ace/progress_view_indeterminate_content.png +0 -0
- data/lib/frameworks/sproutcore/themes/ace/resources/segmented/18px/segmented.css +19 -15
- data/lib/frameworks/sproutcore/themes/ace/resources/segmented/24px/segmented.css +93 -21
- data/lib/frameworks/sproutcore/themes/ace/resources/segmented/24px/segmented_vertical_active.png +0 -0
- data/lib/frameworks/sproutcore/themes/ace/resources/segmented/24px/segmented_vertical_normal.png +0 -0
- data/lib/frameworks/sproutcore/themes/ace/resources/segmented/24px/segmented_vertical_selected.png +0 -0
- data/lib/frameworks/sproutcore/themes/ace/resources/segmented/24px/segmented_vertical_selected_active.png +0 -0
- data/lib/frameworks/sproutcore/themes/ace/resources/segmented/30px/segmented.css +91 -15
- data/lib/frameworks/sproutcore/themes/ace/resources/segmented/30px/segmented_vertical_active.png +0 -0
- data/lib/frameworks/sproutcore/themes/ace/resources/segmented/30px/segmented_vertical_normal.png +0 -0
- data/lib/frameworks/sproutcore/themes/ace/resources/segmented/30px/segmented_vertical_selected.png +0 -0
- data/lib/frameworks/sproutcore/themes/ace/resources/segmented/30px/segmented_vertical_selected_active.png +0 -0
- data/lib/frameworks/sproutcore/themes/ace/resources/segmented/44px/segmented.css +21 -17
- data/lib/frameworks/sproutcore/themes/ace/resources/segmented/segmented.css +26 -25
- data/lib/frameworks/sproutcore/themes/legacy_theme/english.lproj/menu_item_view.css +2 -4
- data/lib/sproutcore/helpers/minifier.rb +5 -5
- data/lib/sproutcore/tools/build.rb +1 -1
- data/sproutcore.gemspec +6 -1
- data/vendor/chance/lib/chance/instance/slicing.rb +2 -2
- metadata +143 -60
- data/lib/frameworks/sproutcore/apps/test_controls/Buildfile +0 -0
- data/lib/frameworks/sproutcore/apps/test_controls/controllers/alert.js +0 -39
- data/lib/frameworks/sproutcore/apps/test_controls/controllers/buttons.js +0 -21
- data/lib/frameworks/sproutcore/apps/test_controls/controllers/categories.js +0 -125
- data/lib/frameworks/sproutcore/apps/test_controls/controllers/category.js +0 -36
- data/lib/frameworks/sproutcore/apps/test_controls/controllers/select.js +0 -12
- data/lib/frameworks/sproutcore/apps/test_controls/controllers/split.js +0 -74
- data/lib/frameworks/sproutcore/apps/test_controls/core.js +0 -29
- data/lib/frameworks/sproutcore/apps/test_controls/main.js +0 -14
- data/lib/frameworks/sproutcore/apps/test_controls/resources/buttons_page.js +0 -158
- data/lib/frameworks/sproutcore/apps/test_controls/resources/checkboxes_page.js +0 -53
- data/lib/frameworks/sproutcore/apps/test_controls/resources/flow_layout_page.js +0 -85
- data/lib/frameworks/sproutcore/apps/test_controls/resources/list_page.js +0 -40
- data/lib/frameworks/sproutcore/apps/test_controls/resources/main_page.css +0 -60
- data/lib/frameworks/sproutcore/apps/test_controls/resources/main_page.js +0 -151
- data/lib/frameworks/sproutcore/apps/test_controls/resources/panels_page.js +0 -62
- data/lib/frameworks/sproutcore/apps/test_controls/resources/progress_page.js +0 -33
- data/lib/frameworks/sproutcore/apps/test_controls/resources/radio_page.js +0 -55
- data/lib/frameworks/sproutcore/apps/test_controls/resources/scroll_page.js +0 -77
- data/lib/frameworks/sproutcore/apps/test_controls/resources/segmented_page.js +0 -99
- data/lib/frameworks/sproutcore/apps/test_controls/resources/select_page.js +0 -75
- data/lib/frameworks/sproutcore/apps/test_controls/resources/sliders_page.js +0 -54
- data/lib/frameworks/sproutcore/apps/test_controls/resources/split_page.js +0 -141
- data/lib/frameworks/sproutcore/apps/test_controls/resources/strings.js +0 -50
- data/lib/frameworks/sproutcore/apps/test_controls/resources/tab_page.js +0 -53
- data/lib/frameworks/sproutcore/apps/test_controls/resources/text_field_page.js +0 -65
- data/lib/frameworks/sproutcore/apps/test_controls/theme.js +0 -34
- data/lib/frameworks/sproutcore/apps/tests/tests/controllers/detail.js +0 -15
- data/lib/frameworks/sproutcore/apps/tests/tests/controllers/source.js +0 -15
- data/lib/frameworks/sproutcore/apps/tests/tests/controllers/target.js +0 -15
- data/lib/frameworks/sproutcore/apps/tests/tests/controllers/targets.js +0 -15
- data/lib/frameworks/sproutcore/apps/tests/tests/controllers/tests.js +0 -15
- data/lib/frameworks/sproutcore/apps/tests/tests/models/target.js +0 -15
- data/lib/frameworks/sproutcore/apps/tests/tests/models/test.js +0 -15
- data/lib/frameworks/sproutcore/apps/tests/tests/views/offset_checkbox.js +0 -15
- data/lib/frameworks/sproutcore/frameworks/runtime/tests/core/console.js +0 -21
@@ -48,17 +48,23 @@ var DummyArray = SC.Object.extend(SC.Array, {
|
|
48
48
|
|
49
49
|
// Update the length property
|
50
50
|
this.set('length', this.content.length) ;
|
51
|
+
this.endPropertyChanges();
|
51
52
|
|
53
|
+
// Both arrayContentDidChange and enumerableContentDidChange will invoke
|
54
|
+
// "this.notifyPropertyChange('[]')". To prevent multiple notifications
|
55
|
+
// these calls are made as grouped property changes.
|
56
|
+
this.beginPropertyChanges();
|
57
|
+
|
52
58
|
// Call the general-purpose enumerableContentDidChange
|
53
59
|
// Enumerable method.
|
54
60
|
this.enumerableContentDidChange(idx, amt, len - amt) ;
|
55
|
-
|
56
|
-
|
61
|
+
|
57
62
|
// SC.Array implementations must call arrayContentDidChange
|
58
63
|
// after making mutations. This allows observers to perform
|
59
64
|
// operations based on the mutation. For instance, a listener
|
60
65
|
// might want to reflect additions onto itself.
|
61
66
|
this.arrayContentDidChange(idx, amt, len);
|
67
|
+
this.endPropertyChanges();
|
62
68
|
},
|
63
69
|
|
64
70
|
// SC.Arrays must implement objectAt, which returns an object
|
@@ -10,15 +10,15 @@
|
|
10
10
|
var enumerables ; // global variables
|
11
11
|
|
12
12
|
var DummyEnumerable = SC.Object.extend( SC.Enumerable, {
|
13
|
-
|
13
|
+
|
14
14
|
content: [],
|
15
|
-
|
15
|
+
|
16
16
|
length: function() { return this.content.length; }.property(),
|
17
|
-
|
17
|
+
|
18
18
|
objectAt: function(idx) { return this.content[idx]; },
|
19
|
-
|
19
|
+
|
20
20
|
nextObject: function(idx) { return this.content[idx]; },
|
21
|
-
|
21
|
+
|
22
22
|
// add support for reduced properties.
|
23
23
|
unknownProperty: function(key, value) {
|
24
24
|
var ret = this.reducedProperty(key, value) ;
|
@@ -28,12 +28,18 @@ var DummyEnumerable = SC.Object.extend( SC.Enumerable, {
|
|
28
28
|
}
|
29
29
|
return ret ;
|
30
30
|
},
|
31
|
-
|
31
|
+
|
32
|
+
shiftObject: function() {
|
33
|
+
var ret = this.content.shift();
|
34
|
+
this.enumerableContentDidChange(0, 1);
|
35
|
+
return ret;
|
36
|
+
},
|
37
|
+
|
32
38
|
pushObject: function(object) {
|
33
39
|
this.content.push(object) ;
|
34
|
-
this.enumerableContentDidChange()
|
40
|
+
this.enumerableContentDidChange(this.content.length - 2, 1);
|
35
41
|
}
|
36
|
-
|
42
|
+
|
37
43
|
});
|
38
44
|
|
39
45
|
var runFunc = function(a,b) { return ['DONE', a, b]; } ;
|
@@ -43,48 +49,48 @@ var reduceTestFunc = function(prev, item, idx, e, pname) { return pname||'TEST';
|
|
43
49
|
|
44
50
|
var CommonArray = [
|
45
51
|
{
|
46
|
-
first: "Charles",
|
47
|
-
gender: "male",
|
48
|
-
californian: NO,
|
49
|
-
ready: YES,
|
50
|
-
visited: "Prague",
|
51
|
-
doneTravelling: NO,
|
52
|
+
first: "Charles",
|
53
|
+
gender: "male",
|
54
|
+
californian: NO,
|
55
|
+
ready: YES,
|
56
|
+
visited: "Prague",
|
57
|
+
doneTravelling: NO,
|
52
58
|
run: runFunc,
|
53
59
|
invokeWhileTest: invokeWhileOK,
|
54
60
|
balance: 1
|
55
61
|
},
|
56
|
-
|
62
|
+
|
57
63
|
{
|
58
|
-
first: "Jenna",
|
59
|
-
gender: "female",
|
60
|
-
californian: YES,
|
61
|
-
ready: YES,
|
62
|
-
visited: "Prague",
|
63
|
-
doneTravelling: NO,
|
64
|
+
first: "Jenna",
|
65
|
+
gender: "female",
|
66
|
+
californian: YES,
|
67
|
+
ready: YES,
|
68
|
+
visited: "Prague",
|
69
|
+
doneTravelling: NO,
|
64
70
|
run: runFunc,
|
65
71
|
invokeWhileTest: invokeWhileOK,
|
66
|
-
balance: 2
|
72
|
+
balance: 2
|
67
73
|
},
|
68
|
-
|
74
|
+
|
69
75
|
{
|
70
|
-
first: "Peter",
|
71
|
-
gender: "male",
|
72
|
-
californian: NO,
|
73
|
-
ready: YES,
|
74
|
-
visited: "Prague",
|
75
|
-
doneTravelling: NO,
|
76
|
+
first: "Peter",
|
77
|
+
gender: "male",
|
78
|
+
californian: NO,
|
79
|
+
ready: YES,
|
80
|
+
visited: "Prague",
|
81
|
+
doneTravelling: NO,
|
76
82
|
run: runFunc,
|
77
83
|
invokeWhileTest: invokeWhileNotOK,
|
78
|
-
balance: 3
|
84
|
+
balance: 3
|
79
85
|
},
|
80
|
-
|
86
|
+
|
81
87
|
{
|
82
|
-
first: "Chris",
|
83
|
-
gender: "male",
|
84
|
-
californian: NO,
|
85
|
-
ready: YES,
|
86
|
-
visited: "Prague",
|
87
|
-
doneTravelling: NO,
|
88
|
+
first: "Chris",
|
89
|
+
gender: "male",
|
90
|
+
californian: NO,
|
91
|
+
ready: YES,
|
92
|
+
visited: "Prague",
|
93
|
+
doneTravelling: NO,
|
88
94
|
run: runFunc,
|
89
95
|
invokeWhileTest: invokeWhileOK,
|
90
96
|
balance: 4
|
@@ -92,17 +98,17 @@ var CommonArray = [
|
|
92
98
|
];
|
93
99
|
|
94
100
|
module("Real Array & DummyEnumerable", {
|
95
|
-
|
96
|
-
setup: function() {
|
97
|
-
enumerables = [SC.$A(CommonArray), DummyEnumerable.create({ content: CommonArray })] ;
|
101
|
+
|
102
|
+
setup: function() {
|
103
|
+
enumerables = [SC.$A(CommonArray), DummyEnumerable.create({ content: SC.clone(CommonArray) })] ;
|
98
104
|
},
|
99
|
-
|
105
|
+
|
100
106
|
teardown: function() {
|
101
107
|
delete enumerables;
|
102
108
|
delete Array.prototype["@max(balance)"] ; // remove cached value
|
103
109
|
delete Array.prototype["@min(balance)"] ;
|
104
110
|
}
|
105
|
-
|
111
|
+
|
106
112
|
});
|
107
113
|
|
108
114
|
test("should get enumerator that iterates through objects", function() {
|
@@ -111,14 +117,14 @@ test("should get enumerator that iterates through objects", function() {
|
|
111
117
|
src = ary2[idx2] ;
|
112
118
|
var e = src.enumerator() ;
|
113
119
|
ok(e !== null, 'enumerator must not be null');
|
114
|
-
|
120
|
+
|
115
121
|
var idx = 0;
|
116
122
|
var cur ;
|
117
123
|
while(cur = e.nextObject()) {
|
118
124
|
equals(src.objectAt(idx), cur, "object at index %@".fmt(idx)) ;
|
119
125
|
idx++;
|
120
126
|
}
|
121
|
-
|
127
|
+
|
122
128
|
equals(src.get('length'), idx) ;
|
123
129
|
}
|
124
130
|
});
|
@@ -129,7 +135,7 @@ test("should return firstObject for item with content", function() {
|
|
129
135
|
src = ary2[idx2] ;
|
130
136
|
equals(src.firstObject(), CommonArray[0], 'firstObject should return first object');
|
131
137
|
}
|
132
|
-
|
138
|
+
|
133
139
|
equals([].firstObject(), undefined, 'firstObject() on empty enumerable should return undefined');
|
134
140
|
});
|
135
141
|
|
@@ -138,20 +144,20 @@ test("should run forEach() to go through objects", function() {
|
|
138
144
|
for (var idx2=0, len2=ary2.length; idx2<len2; idx2++) {
|
139
145
|
src = ary2[idx2] ;
|
140
146
|
var idx = 0;
|
141
|
-
|
147
|
+
|
142
148
|
// save for testing later
|
143
149
|
var items = [] ;
|
144
150
|
var indexes = [] ;
|
145
151
|
var arrays = [] ;
|
146
152
|
var targets = [] ;
|
147
|
-
|
153
|
+
|
148
154
|
src.forEach(function(item, index, array) {
|
149
155
|
items.push(item);
|
150
156
|
indexes.push(index);
|
151
157
|
arrays.push(array);
|
152
158
|
targets.push(this);
|
153
159
|
}, this);
|
154
|
-
|
160
|
+
|
155
161
|
var len = src.get('length') ;
|
156
162
|
for(idx=0;idx<len;idx++) {
|
157
163
|
equals(items[idx], src.objectAt(idx)) ;
|
@@ -170,29 +176,29 @@ test("should map to values while passing proper params", function() {
|
|
170
176
|
for (var idx2=0, len2=ary2.length; idx2<len2; idx2++) {
|
171
177
|
src = ary2[idx2] ;
|
172
178
|
var idx = 0;
|
173
|
-
|
179
|
+
|
174
180
|
// save for testing later
|
175
181
|
var items = [] ;
|
176
182
|
var indexes = [] ;
|
177
183
|
var arrays = [] ;
|
178
184
|
var targets = [] ;
|
179
|
-
|
185
|
+
|
180
186
|
var mapped = src.map(function(item, index, array) {
|
181
187
|
items.push(item);
|
182
188
|
indexes.push(index);
|
183
189
|
arrays.push(array);
|
184
190
|
targets.push(this);
|
185
|
-
|
191
|
+
|
186
192
|
return index ;
|
187
193
|
}, this);
|
188
|
-
|
194
|
+
|
189
195
|
var len = src.get('length') ;
|
190
196
|
for(idx=0;idx<len;idx++) {
|
191
197
|
equals(src.objectAt(idx), items[idx], "items") ;
|
192
198
|
equals(idx, indexes[idx], "indexes") ;
|
193
199
|
equals(src, arrays[idx], 'arrays') ;
|
194
200
|
equals(SC.guidFor(this), SC.guidFor(targets[idx]), "this") ;
|
195
|
-
|
201
|
+
|
196
202
|
equals(idx, mapped[idx], "mapped") ;
|
197
203
|
}
|
198
204
|
}
|
@@ -203,22 +209,22 @@ test("should filter to items that return for callback", function() {
|
|
203
209
|
for (var idx2=0, len2=ary2.length; idx2<len2; idx2++) {
|
204
210
|
src = ary2[idx2] ;
|
205
211
|
var idx = 0;
|
206
|
-
|
212
|
+
|
207
213
|
// save for testing later
|
208
214
|
var items = [] ;
|
209
215
|
var indexes = [] ;
|
210
216
|
var arrays = [] ;
|
211
217
|
var targets = [] ;
|
212
|
-
|
218
|
+
|
213
219
|
var filtered = src.filter(function(item, index, array) {
|
214
220
|
items.push(item);
|
215
221
|
indexes.push(index);
|
216
222
|
arrays.push(array);
|
217
223
|
targets.push(this);
|
218
|
-
|
224
|
+
|
219
225
|
return item.gender === "female" ;
|
220
226
|
}, this);
|
221
|
-
|
227
|
+
|
222
228
|
var len = src.get('length') ;
|
223
229
|
for(idx=0;idx<len;idx++) {
|
224
230
|
equals(src.objectAt(idx), items[idx], "items") ;
|
@@ -226,7 +232,7 @@ test("should filter to items that return for callback", function() {
|
|
226
232
|
equals(src, arrays[idx], 'arrays') ;
|
227
233
|
equals(SC.guidFor(this), SC.guidFor(targets[idx]), "this") ;
|
228
234
|
}
|
229
|
-
|
235
|
+
|
230
236
|
equals(filtered.length, 1) ;
|
231
237
|
equals(filtered[0].first, "Jenna") ;
|
232
238
|
}
|
@@ -237,22 +243,22 @@ test("should return true if function for every() returns true", function() {
|
|
237
243
|
for (var idx2=0, len2=ary2.length; idx2<len2; idx2++) {
|
238
244
|
src = ary2[idx2] ;
|
239
245
|
var idx = 0 ;
|
240
|
-
|
246
|
+
|
241
247
|
// save for testing later
|
242
248
|
var items = [] ;
|
243
249
|
var indexes = [] ;
|
244
250
|
var arrays = [] ;
|
245
251
|
var targets = [] ;
|
246
|
-
|
252
|
+
|
247
253
|
var result = src.every(function(item, index, array) {
|
248
254
|
items.push(item) ;
|
249
255
|
indexes.push(index) ;
|
250
256
|
arrays.push(array) ;
|
251
257
|
targets.push(this) ;
|
252
|
-
|
258
|
+
|
253
259
|
return true ;
|
254
260
|
}, this);
|
255
|
-
|
261
|
+
|
256
262
|
var len = src.get('length') ;
|
257
263
|
for(idx=0;idx<len;idx++) {
|
258
264
|
equals(src.objectAt(idx), items[idx], "items") ;
|
@@ -260,7 +266,7 @@ test("should return true if function for every() returns true", function() {
|
|
260
266
|
equals(src, arrays[idx], 'arrays') ;
|
261
267
|
equals(SC.guidFor(this), SC.guidFor(targets[idx]), "this") ;
|
262
268
|
}
|
263
|
-
|
269
|
+
|
264
270
|
equals(result, YES) ;
|
265
271
|
}
|
266
272
|
});
|
@@ -281,22 +287,22 @@ test("should return false if all functions for some() returns false", function()
|
|
281
287
|
for (var idx2=0, len2=ary2.length; idx2<len2; idx2++) {
|
282
288
|
src = ary2[idx2] ;
|
283
289
|
var idx = 0 ;
|
284
|
-
|
290
|
+
|
285
291
|
// save for testing later
|
286
292
|
var items = [] ;
|
287
293
|
var indexes = [] ;
|
288
294
|
var arrays = [] ;
|
289
295
|
var targets = [] ;
|
290
|
-
|
296
|
+
|
291
297
|
var result = src.some(function(item, index, array) {
|
292
298
|
items.push(item) ;
|
293
299
|
indexes.push(index) ;
|
294
300
|
arrays.push(array) ;
|
295
301
|
targets.push(this) ;
|
296
|
-
|
302
|
+
|
297
303
|
return false ;
|
298
304
|
}, this);
|
299
|
-
|
305
|
+
|
300
306
|
var len = src.get('length') ;
|
301
307
|
for(idx=0;idx<len;idx++) {
|
302
308
|
equals(src.objectAt(idx), items[idx], "items") ;
|
@@ -304,7 +310,7 @@ test("should return false if all functions for some() returns false", function()
|
|
304
310
|
equals(src, arrays[idx], 'arrays') ;
|
305
311
|
equals(SC.guidFor(this), SC.guidFor(targets[idx]), "this") ;
|
306
312
|
}
|
307
|
-
|
313
|
+
|
308
314
|
equals(result, NO) ;
|
309
315
|
}
|
310
316
|
});
|
@@ -486,34 +492,73 @@ test("should invoke custom reducer", function() {
|
|
486
492
|
}
|
487
493
|
});
|
488
494
|
|
495
|
+
test("should trigger observer on property when lastObject changes", function() {
|
496
|
+
var src, ary2 = enumerables;
|
497
|
+
for (var idx2=0, len2=ary2.length; idx2<len2; idx2++) {
|
498
|
+
src = ary2[idx2];
|
499
|
+
|
500
|
+
var callCount = 0;
|
501
|
+
src.addObserver("lastObject", function() {
|
502
|
+
callCount++;
|
503
|
+
});
|
504
|
+
|
505
|
+
src.pushObject({
|
506
|
+
first: "John",
|
507
|
+
gender: "male",
|
508
|
+
californian: NO,
|
509
|
+
ready: YES,
|
510
|
+
visited: "Paris",
|
511
|
+
balance: 5
|
512
|
+
});
|
513
|
+
|
514
|
+
equals(callCount, 1, "callCount");
|
515
|
+
}
|
516
|
+
});
|
517
|
+
|
518
|
+
test("should trigger observer on property when firstObject changes", function() {
|
519
|
+
var src, ary2 = enumerables;
|
520
|
+
for (var idx2=0, len2=ary2.length; idx2<len2; idx2++) {
|
521
|
+
src = ary2[idx2] ;
|
522
|
+
|
523
|
+
var callCount = 0;
|
524
|
+
src.addObserver("firstObject", function() {
|
525
|
+
callCount++;
|
526
|
+
});
|
527
|
+
|
528
|
+
src.shiftObject();
|
529
|
+
|
530
|
+
equals(callCount, 1, "callCount");
|
531
|
+
}
|
532
|
+
});
|
533
|
+
|
489
534
|
test("should trigger observer of reduced prop when array changes once property retrieved once", function() {
|
490
535
|
var src, ary2 = enumerables ;
|
491
536
|
for (var idx2=0, len2=ary2.length; idx2<len2; idx2++) {
|
492
537
|
src = ary2[idx2] ;
|
493
538
|
// get the property...this will install the reducer property...
|
494
539
|
src.get("@max(balance)") ;
|
495
|
-
|
540
|
+
|
496
541
|
// install observer
|
497
542
|
var observedValue = null ;
|
498
|
-
src.addObserver("@max(balance)", function() {
|
543
|
+
src.addObserver("@max(balance)", function() {
|
499
544
|
observedValue = src.get("@max(balance)");
|
500
545
|
}) ;
|
501
|
-
|
546
|
+
|
502
547
|
//src.addProbe('[]') ;
|
503
548
|
//src.addProbe('@max(balance)');
|
504
|
-
|
549
|
+
|
505
550
|
// add record to array
|
506
|
-
src.pushObject({
|
507
|
-
first: "John",
|
508
|
-
gender: "male",
|
509
|
-
californian: NO,
|
510
|
-
ready: YES,
|
511
|
-
visited: "Paris",
|
551
|
+
src.pushObject({
|
552
|
+
first: "John",
|
553
|
+
gender: "male",
|
554
|
+
californian: NO,
|
555
|
+
ready: YES,
|
556
|
+
visited: "Paris",
|
512
557
|
balance: 5
|
513
558
|
}) ;
|
514
|
-
|
559
|
+
|
515
560
|
//SC.NotificationQueue.flush() ; // force observers to trigger
|
516
|
-
|
561
|
+
|
517
562
|
// observed value should now be set because the reduced property observer
|
518
563
|
// was triggered when we changed the array contents.
|
519
564
|
equals(5, observedValue, "observedValue") ;
|
@@ -527,22 +572,22 @@ test("should trigger observer of reduced prop when array changes - even if you n
|
|
527
572
|
src = ary2[idx2] ;
|
528
573
|
// install observer
|
529
574
|
var observedValue = null ;
|
530
|
-
src.addObserver("@max(balance)", function() {
|
575
|
+
src.addObserver("@max(balance)", function() {
|
531
576
|
observedValue = src.get("@max(balance)");
|
532
577
|
}) ;
|
533
|
-
|
578
|
+
|
534
579
|
// add record to array
|
535
|
-
src.pushObject({
|
536
|
-
first: "John",
|
537
|
-
gender: "male",
|
538
|
-
californian: NO,
|
539
|
-
ready: YES,
|
540
|
-
visited: "Paris",
|
580
|
+
src.pushObject({
|
581
|
+
first: "John",
|
582
|
+
gender: "male",
|
583
|
+
californian: NO,
|
584
|
+
ready: YES,
|
585
|
+
visited: "Paris",
|
541
586
|
balance: 5
|
542
587
|
}) ;
|
543
|
-
|
588
|
+
|
544
589
|
//SC.NotificationQueue.flush() ; // force observers to trigger
|
545
|
-
|
590
|
+
|
546
591
|
// observed value should now be set because the reduced property observer
|
547
592
|
// was triggered when we changed the array contents.
|
548
593
|
equals(5, observedValue, "observedValue") ;
|
@@ -558,14 +603,14 @@ test("should find the first element matching the criteria", function() {
|
|
558
603
|
var source ; // global variables
|
559
604
|
|
560
605
|
module("Real Array", {
|
561
|
-
|
562
|
-
setup: function() {
|
563
|
-
source = SC.$A(CommonArray);
|
606
|
+
|
607
|
+
setup: function() {
|
608
|
+
source = SC.$A(CommonArray);
|
564
609
|
},
|
565
|
-
|
566
|
-
teardown: function() {
|
567
|
-
delete source ;
|
568
|
-
|
610
|
+
|
611
|
+
teardown: function() {
|
612
|
+
delete source ;
|
613
|
+
|
569
614
|
delete Array.prototype["@max(balance)"] ; // remove cached value
|
570
615
|
delete Array.prototype["@min(balance)"] ;
|
571
616
|
}
|
@@ -574,47 +619,47 @@ module("Real Array", {
|
|
574
619
|
|
575
620
|
/*
|
576
621
|
This is a particular problem because reduced properties are registered
|
577
|
-
as dependent keys, which are not automatically configured in native
|
578
|
-
Arrays (where the SC.Object.init method is not run).
|
622
|
+
as dependent keys, which are not automatically configured in native
|
623
|
+
Arrays (where the SC.Object.init method is not run).
|
579
624
|
|
580
|
-
The fix for this problem was to add an initObservable() method to
|
625
|
+
The fix for this problem was to add an initObservable() method to
|
581
626
|
SC.Observable that will configure bindings and dependent keys. This
|
582
627
|
method is called from SC.Object.init() and it is called in
|
583
628
|
SC.Observable._notifyPropertyChanges if it has not been called already.
|
584
629
|
|
585
|
-
SC.Enumerable was in turn modified to register reducers as dependent
|
586
|
-
keys so that now they will be registered on the Array before any
|
630
|
+
SC.Enumerable was in turn modified to register reducers as dependent
|
631
|
+
keys so that now they will be registered on the Array before any
|
587
632
|
property change notifications are sent.
|
588
633
|
*/
|
589
634
|
test("should notify observers even if reduced property is cached on prototype", function() {
|
590
635
|
// make sure reduced property is cached
|
591
636
|
source.get("@max(balance)") ;
|
592
|
-
|
637
|
+
|
593
638
|
// now make a clone and observe
|
594
639
|
source = SC.$A(CommonArray) ;
|
595
|
-
|
640
|
+
|
596
641
|
// get the property...this will install the reducer property...
|
597
642
|
source.get("@max(balance)") ;
|
598
|
-
|
643
|
+
|
599
644
|
// install observer
|
600
645
|
var observedValue = null ;
|
601
|
-
source.addObserver("@max(balance)", function() {
|
646
|
+
source.addObserver("@max(balance)", function() {
|
602
647
|
observedValue = source.get("@max(balance)");
|
603
648
|
}) ;
|
604
|
-
|
649
|
+
|
605
650
|
//source.addProbe('[]') ;
|
606
651
|
//source.addProbe('@max(balance)');
|
607
|
-
|
652
|
+
|
608
653
|
// add record to array
|
609
|
-
source.pushObject({
|
610
|
-
first: "John",
|
611
|
-
gender: "male",
|
612
|
-
californian: NO,
|
613
|
-
ready: YES,
|
614
|
-
visited: "Paris",
|
654
|
+
source.pushObject({
|
655
|
+
first: "John",
|
656
|
+
gender: "male",
|
657
|
+
californian: NO,
|
658
|
+
ready: YES,
|
659
|
+
visited: "Paris",
|
615
660
|
balance: 5
|
616
661
|
}) ;
|
617
|
-
|
662
|
+
|
618
663
|
//SC.NotificationQueue.flush() ; // force observers to trigger
|
619
664
|
|
620
665
|
// observed value should now be set because the reduced property observer
|