sproutit-sproutcore 1.0.0.20090407205609 → 1.0.0.20090408130025
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/frameworks/sproutcore/Buildfile +63 -0
- data/frameworks/sproutcore/HISTORY +682 -0
- data/frameworks/sproutcore/README +22 -0
- data/frameworks/sproutcore/apps/sc_jsdoc/controllers/docs.js +149 -0
- data/frameworks/sproutcore/apps/sc_jsdoc/core.js +16 -0
- data/frameworks/sproutcore/apps/sc_jsdoc/english.lproj/body.css +17 -0
- data/frameworks/sproutcore/apps/sc_jsdoc/english.lproj/body.js +99 -0
- data/frameworks/sproutcore/apps/sc_jsdoc/english.lproj/images/sproutcore-logo.png +0 -0
- data/frameworks/sproutcore/apps/sc_jsdoc/english.lproj/strings.js +15 -0
- data/frameworks/sproutcore/apps/sc_jsdoc/main.js +27 -0
- data/frameworks/sproutcore/apps/sc_jsdoc/models/doc.js +21 -0
- data/frameworks/sproutcore/apps/sc_qunit/controllers/runner.js +209 -0
- data/frameworks/sproutcore/apps/sc_qunit/core.js +16 -0
- data/frameworks/sproutcore/apps/sc_qunit/english.lproj/body.css +17 -0
- data/frameworks/sproutcore/apps/sc_qunit/english.lproj/body.js +107 -0
- data/frameworks/sproutcore/apps/sc_qunit/english.lproj/images/sproutcore-logo.png +0 -0
- data/frameworks/sproutcore/apps/sc_qunit/english.lproj/strings.js +15 -0
- data/frameworks/sproutcore/apps/sc_qunit/main.js +18 -0
- data/frameworks/sproutcore/apps/sc_qunit/models/test.js +24 -0
- data/frameworks/sproutcore/apps/sc_qunit/views/test_iframe.js +52 -0
- data/frameworks/sproutcore/apps/tests/controllers/targets.js +47 -0
- data/frameworks/sproutcore/apps/tests/controllers/test.js +20 -0
- data/frameworks/sproutcore/apps/tests/controllers/tests.js +38 -0
- data/frameworks/sproutcore/apps/tests/core.js +35 -0
- data/frameworks/sproutcore/apps/tests/english.lproj/loading.rhtml +9 -0
- data/frameworks/sproutcore/apps/tests/english.lproj/main_page.css +19 -0
- data/frameworks/sproutcore/apps/tests/english.lproj/main_page.js +86 -0
- data/frameworks/sproutcore/apps/tests/english.lproj/strings.js +17 -0
- data/frameworks/sproutcore/apps/tests/fixtures/target.js +43 -0
- data/frameworks/sproutcore/apps/tests/fixtures/test.js +43 -0
- data/frameworks/sproutcore/apps/tests/main.js +39 -0
- data/frameworks/sproutcore/apps/tests/models/target.js +49 -0
- data/frameworks/sproutcore/apps/tests/models/test.js +20 -0
- data/frameworks/sproutcore/apps/tests/tests/controllers/targets.js +15 -0
- data/frameworks/sproutcore/apps/tests/tests/controllers/test.js +15 -0
- data/frameworks/sproutcore/apps/tests/tests/controllers/tests.js +15 -0
- data/frameworks/sproutcore/apps/tests/tests/models/target.js +15 -0
- data/frameworks/sproutcore/apps/tests/tests/models/test.js +15 -0
- data/frameworks/sproutcore/apps/welcome/core.js +23 -0
- data/frameworks/sproutcore/apps/welcome/english.lproj/loading.rhtml +8 -0
- data/frameworks/sproutcore/apps/welcome/english.lproj/main_page.js +43 -0
- data/frameworks/sproutcore/apps/welcome/english.lproj/strings.js +15 -0
- data/frameworks/sproutcore/apps/welcome/main.js +36 -0
- data/frameworks/sproutcore/design/Design Charts.graffle +15819 -0
- data/frameworks/sproutcore/design/Record State Table.numbers +0 -0
- data/frameworks/sproutcore/frameworks/datastore/core.js +14 -0
- data/frameworks/sproutcore/frameworks/datastore/data_sources/cascade.js +113 -0
- data/frameworks/sproutcore/frameworks/datastore/data_sources/data_source.js +256 -0
- data/frameworks/sproutcore/frameworks/datastore/data_sources/fixtures.js +196 -0
- data/frameworks/sproutcore/frameworks/datastore/debug/json.js +71 -0
- data/frameworks/sproutcore/frameworks/datastore/debug/standard_setup.js +96 -0
- data/frameworks/sproutcore/frameworks/datastore/fixtures/author_fixtures.js +2503 -0
- data/frameworks/sproutcore/frameworks/datastore/fixtures/sample.js +17 -0
- data/frameworks/sproutcore/frameworks/datastore/models/fetched_attribute.js +92 -0
- data/frameworks/sproutcore/frameworks/datastore/models/many_attribute.js +38 -0
- data/frameworks/sproutcore/frameworks/datastore/models/record.js +430 -0
- data/frameworks/sproutcore/frameworks/datastore/models/record_attribute.js +361 -0
- data/frameworks/sproutcore/frameworks/datastore/system/nested_store.js +305 -0
- data/frameworks/sproutcore/frameworks/datastore/system/query.js +128 -0
- data/frameworks/sproutcore/frameworks/datastore/system/record_array.js +149 -0
- data/frameworks/sproutcore/frameworks/datastore/system/store.js +1689 -0
- data/frameworks/sproutcore/frameworks/datastore/tests/data_sources/fixtures.js +86 -0
- data/frameworks/sproutcore/frameworks/datastore/tests/integration/contact_model.js +114 -0
- data/frameworks/sproutcore/frameworks/datastore/tests/integration/mail_model.js +91 -0
- data/frameworks/sproutcore/frameworks/datastore/tests/integration/test_runner_model.js +56 -0
- data/frameworks/sproutcore/frameworks/datastore/tests/models/record/destroy.js +73 -0
- data/frameworks/sproutcore/frameworks/datastore/tests/models/record/readAttribute.js +48 -0
- data/frameworks/sproutcore/frameworks/datastore/tests/models/record/refresh.js +42 -0
- data/frameworks/sproutcore/frameworks/datastore/tests/models/record/storeDidChangeProperties.js +138 -0
- data/frameworks/sproutcore/frameworks/datastore/tests/models/record/unknownProperty.js +46 -0
- data/frameworks/sproutcore/frameworks/datastore/tests/models/record/writeAttribute.js +71 -0
- data/frameworks/sproutcore/frameworks/datastore/tests/models/record_attribute.js +115 -0
- data/frameworks/sproutcore/frameworks/datastore/tests/system/nested_store/chain.js +40 -0
- data/frameworks/sproutcore/frameworks/datastore/tests/system/nested_store/commitChanges.js +116 -0
- data/frameworks/sproutcore/frameworks/datastore/tests/system/nested_store/commitChangesFromNestedStore.js +135 -0
- data/frameworks/sproutcore/frameworks/datastore/tests/system/nested_store/dataHashDidChange.js +110 -0
- data/frameworks/sproutcore/frameworks/datastore/tests/system/nested_store/discardChanges.js +99 -0
- data/frameworks/sproutcore/frameworks/datastore/tests/system/nested_store/readDataHash.js +180 -0
- data/frameworks/sproutcore/frameworks/datastore/tests/system/nested_store/readEditableDataHash.js +126 -0
- data/frameworks/sproutcore/frameworks/datastore/tests/system/nested_store/removeDataHash.js +163 -0
- data/frameworks/sproutcore/frameworks/datastore/tests/system/nested_store/writeDataHash.js +166 -0
- data/frameworks/sproutcore/frameworks/datastore/tests/system/record_array/core_methods.js +175 -0
- data/frameworks/sproutcore/frameworks/datastore/tests/system/store/cancelRecord.js +54 -0
- data/frameworks/sproutcore/frameworks/datastore/tests/system/store/commitChangesFromNestedStore.js +126 -0
- data/frameworks/sproutcore/frameworks/datastore/tests/system/store/commitRecord.js +127 -0
- data/frameworks/sproutcore/frameworks/datastore/tests/system/store/createRecord.js +57 -0
- data/frameworks/sproutcore/frameworks/datastore/tests/system/store/dataHashDidChange.js +78 -0
- data/frameworks/sproutcore/frameworks/datastore/tests/system/store/dataSourceCallbacks.js +247 -0
- data/frameworks/sproutcore/frameworks/datastore/tests/system/store/destroyRecord.js +106 -0
- data/frameworks/sproutcore/frameworks/datastore/tests/system/store/init.js +21 -0
- data/frameworks/sproutcore/frameworks/datastore/tests/system/store/pushChanges.js +61 -0
- data/frameworks/sproutcore/frameworks/datastore/tests/system/store/readDataHash.js +74 -0
- data/frameworks/sproutcore/frameworks/datastore/tests/system/store/readEditableDataHash.js +74 -0
- data/frameworks/sproutcore/frameworks/datastore/tests/system/store/recordDidChange.js +74 -0
- data/frameworks/sproutcore/frameworks/datastore/tests/system/store/removeDataHash.js +144 -0
- data/frameworks/sproutcore/frameworks/datastore/tests/system/store/retrieveRecord.js +137 -0
- data/frameworks/sproutcore/frameworks/datastore/tests/system/store/writeDataHash.js +130 -0
- data/frameworks/sproutcore/frameworks/debug/core.js +1 -0
- data/frameworks/sproutcore/frameworks/deprecated/core.js +61 -0
- data/frameworks/sproutcore/frameworks/deprecated/lib/button_views.rb +330 -0
- data/frameworks/sproutcore/frameworks/deprecated/lib/collection_view.rb +83 -0
- data/frameworks/sproutcore/frameworks/deprecated/lib/core_views.rb +326 -0
- data/frameworks/sproutcore/frameworks/deprecated/lib/form_views.rb +253 -0
- data/frameworks/sproutcore/frameworks/deprecated/lib/index.rhtml +75 -0
- data/frameworks/sproutcore/frameworks/deprecated/lib/menu_views.rb +93 -0
- data/frameworks/sproutcore/frameworks/deprecated/server/rails_server.js +80 -0
- data/frameworks/sproutcore/frameworks/deprecated/server/rest_server.js +178 -0
- data/frameworks/sproutcore/frameworks/deprecated/server/server.js +674 -0
- data/frameworks/sproutcore/frameworks/deprecated/system/animator.js +679 -0
- data/frameworks/sproutcore/frameworks/deprecated/system/binding.js +36 -0
- data/frameworks/sproutcore/frameworks/deprecated/system/browser.js +77 -0
- data/frameworks/sproutcore/frameworks/deprecated/system/classic_responder.js +314 -0
- data/frameworks/sproutcore/frameworks/deprecated/system/event.js +60 -0
- data/frameworks/sproutcore/frameworks/deprecated/system/globals.js +20 -0
- data/frameworks/sproutcore/frameworks/deprecated/system/misc.js +60 -0
- data/frameworks/sproutcore/frameworks/deprecated/system/node_descriptor.js +72 -0
- data/frameworks/sproutcore/frameworks/deprecated/system/object.js +124 -0
- data/frameworks/sproutcore/frameworks/deprecated/system/path_module.js +433 -0
- data/frameworks/sproutcore/frameworks/deprecated/system/string.js +109 -0
- data/frameworks/sproutcore/frameworks/deprecated/tests/application/application.rhtml +125 -0
- data/frameworks/sproutcore/frameworks/deprecated/tests/views/classic_view/clippingFrame.rhtml +401 -0
- data/frameworks/sproutcore/frameworks/deprecated/tests/views/classic_view/frame.rhtml +357 -0
- data/frameworks/sproutcore/frameworks/deprecated/tests/views/classic_view/isVisibleInWindow.rhtml +147 -0
- data/frameworks/sproutcore/frameworks/deprecated/tests/views/collection/base.rhtml +298 -0
- data/frameworks/sproutcore/frameworks/deprecated/tests/views/collection/incremental_rendering.rhtml +260 -0
- data/frameworks/sproutcore/frameworks/deprecated/tests/views/collection/source_list_rendering.rhtml +143 -0
- data/frameworks/sproutcore/frameworks/deprecated/tests/views/popup_button.rhtml +128 -0
- data/frameworks/sproutcore/frameworks/deprecated/tests/views/text_field.rhtml +37 -0
- data/frameworks/sproutcore/frameworks/deprecated/views/collection.js +24 -0
- data/frameworks/sproutcore/frameworks/designer/coders/design.js +30 -0
- data/frameworks/sproutcore/frameworks/designer/coders/localization.js +28 -0
- data/frameworks/sproutcore/frameworks/designer/coders/object.js +347 -0
- data/frameworks/sproutcore/frameworks/designer/controllers/page_design.js +102 -0
- data/frameworks/sproutcore/frameworks/designer/css/css_rule.js +22 -0
- data/frameworks/sproutcore/frameworks/designer/css/css_style.js +29 -0
- data/frameworks/sproutcore/frameworks/designer/css/css_style_sheet.js +201 -0
- data/frameworks/sproutcore/frameworks/designer/ext/page.js +88 -0
- data/frameworks/sproutcore/frameworks/designer/ext/view.js +40 -0
- data/frameworks/sproutcore/frameworks/designer/views/controls/button.js +18 -0
- data/frameworks/sproutcore/frameworks/designer/views/designer.js +553 -0
- data/frameworks/sproutcore/frameworks/designer/views/label.js +17 -0
- data/frameworks/sproutcore/frameworks/designer/views/mixins/button.js +13 -0
- data/frameworks/sproutcore/frameworks/designer/views/tab.js +17 -0
- data/frameworks/sproutcore/frameworks/desktop/core.js +6 -0
- data/frameworks/sproutcore/frameworks/desktop/debug/drag.js +41 -0
- data/frameworks/sproutcore/frameworks/desktop/english.lproj/alert.css +56 -0
- data/frameworks/sproutcore/frameworks/desktop/english.lproj/debug/a_sample_image.jpg +0 -0
- data/frameworks/sproutcore/frameworks/desktop/english.lproj/debug/apple-logo1.jpeg +0 -0
- data/frameworks/sproutcore/frameworks/desktop/english.lproj/debug/iframe.html +23 -0
- data/frameworks/sproutcore/frameworks/desktop/english.lproj/disclosure.css +71 -0
- data/frameworks/sproutcore/frameworks/desktop/english.lproj/icons.css +943 -0
- data/frameworks/sproutcore/frameworks/desktop/english.lproj/images/blank.gif +0 -0
- data/frameworks/sproutcore/frameworks/desktop/english.lproj/images/icons/mini_222222.png +0 -0
- data/frameworks/sproutcore/frameworks/desktop/english.lproj/images/icons/mini_454545.png +0 -0
- data/frameworks/sproutcore/frameworks/desktop/english.lproj/images/icons/mini_888888.png +0 -0
- data/frameworks/sproutcore/frameworks/desktop/english.lproj/images/icons/mini_ffffff.png +0 -0
- data/frameworks/sproutcore/frameworks/desktop/english.lproj/images/icons/shared.png +0 -0
- data/frameworks/sproutcore/frameworks/desktop/english.lproj/images/indicator.gif +0 -0
- data/frameworks/sproutcore/frameworks/desktop/english.lproj/images/panels/sprite-x.png +0 -0
- data/frameworks/sproutcore/frameworks/desktop/english.lproj/images/panels/sprite-y.png +0 -0
- data/frameworks/sproutcore/frameworks/desktop/english.lproj/images/sc-theme-sprite.png +0 -0
- data/frameworks/sproutcore/frameworks/desktop/english.lproj/images/standard_fade/000000.png +0 -0
- data/frameworks/sproutcore/frameworks/desktop/english.lproj/images/standard_fade/ffffff.png +0 -0
- data/frameworks/sproutcore/frameworks/desktop/english.lproj/images/sticky-note.png +0 -0
- data/frameworks/sproutcore/frameworks/desktop/english.lproj/list_item.css +156 -0
- data/frameworks/sproutcore/frameworks/desktop/english.lproj/menu.css +83 -0
- data/frameworks/sproutcore/frameworks/desktop/english.lproj/menu_item_view.css +99 -0
- data/frameworks/sproutcore/frameworks/desktop/english.lproj/palette.css +3 -0
- data/frameworks/sproutcore/frameworks/desktop/english.lproj/panel.css +94 -0
- data/frameworks/sproutcore/frameworks/desktop/english.lproj/picker.css +39 -0
- data/frameworks/sproutcore/frameworks/desktop/english.lproj/progress.css +31 -0
- data/frameworks/sproutcore/frameworks/desktop/english.lproj/radio.css +10 -0
- data/frameworks/sproutcore/frameworks/desktop/english.lproj/scroller.css +26 -0
- data/frameworks/sproutcore/frameworks/desktop/english.lproj/segmented.css +141 -0
- data/frameworks/sproutcore/frameworks/desktop/english.lproj/separator.css +19 -0
- data/frameworks/sproutcore/frameworks/desktop/english.lproj/slider.css +57 -0
- data/frameworks/sproutcore/frameworks/desktop/english.lproj/split.css +70 -0
- data/frameworks/sproutcore/frameworks/desktop/english.lproj/split_divider.css +8 -0
- data/frameworks/sproutcore/frameworks/desktop/english.lproj/strings.js +14 -0
- data/frameworks/sproutcore/frameworks/desktop/english.lproj/tab.css +12 -0
- data/frameworks/sproutcore/frameworks/desktop/english.lproj/text_field.css +29 -0
- data/frameworks/sproutcore/frameworks/desktop/english.lproj/toolbar.css +6 -0
- data/frameworks/sproutcore/frameworks/desktop/mixins/border.js +53 -0
- data/frameworks/sproutcore/frameworks/desktop/mixins/collection_group.js +22 -0
- data/frameworks/sproutcore/frameworks/desktop/mixins/collection_item.js +22 -0
- data/frameworks/sproutcore/frameworks/desktop/mixins/collection_view_delegate.js +226 -0
- data/frameworks/sproutcore/frameworks/desktop/mixins/scrollable.js +247 -0
- data/frameworks/sproutcore/frameworks/desktop/panes/alert.js +377 -0
- data/frameworks/sproutcore/frameworks/desktop/panes/menu.js +504 -0
- data/frameworks/sproutcore/frameworks/desktop/panes/modal.js +68 -0
- data/frameworks/sproutcore/frameworks/desktop/panes/palette.js +63 -0
- data/frameworks/sproutcore/frameworks/desktop/panes/panel.js +184 -0
- data/frameworks/sproutcore/frameworks/desktop/panes/picker.js +402 -0
- data/frameworks/sproutcore/frameworks/desktop/panes/sheet.js +46 -0
- data/frameworks/sproutcore/frameworks/desktop/protocols/drag_data_source.js +39 -0
- data/frameworks/sproutcore/frameworks/desktop/protocols/drag_source.js +81 -0
- data/frameworks/sproutcore/frameworks/desktop/protocols/drop_target.js +175 -0
- data/frameworks/sproutcore/frameworks/desktop/protocols/responder.js +280 -0
- data/frameworks/sproutcore/frameworks/desktop/system/drag.js +721 -0
- data/frameworks/sproutcore/frameworks/desktop/system/key_bindings.js +40 -0
- data/frameworks/sproutcore/frameworks/desktop/system/root_responder.js +641 -0
- data/frameworks/sproutcore/frameworks/desktop/system/undo_manager.js +187 -0
- data/frameworks/sproutcore/frameworks/desktop/tests/integration/dialog.js +43 -0
- data/frameworks/sproutcore/frameworks/desktop/tests/panes/alert/methods.js +10 -0
- data/frameworks/sproutcore/frameworks/desktop/tests/panes/alert/ui.js +152 -0
- data/frameworks/sproutcore/frameworks/desktop/tests/panes/menu/methods.js +10 -0
- data/frameworks/sproutcore/frameworks/desktop/tests/panes/menu/ui.js +57 -0
- data/frameworks/sproutcore/frameworks/desktop/tests/panes/palette/methods.js +10 -0
- data/frameworks/sproutcore/frameworks/desktop/tests/panes/palette/ui.js +36 -0
- data/frameworks/sproutcore/frameworks/desktop/tests/panes/panel/methods.js +10 -0
- data/frameworks/sproutcore/frameworks/desktop/tests/panes/panel/ui.js +40 -0
- data/frameworks/sproutcore/frameworks/desktop/tests/panes/picker/methods.js +10 -0
- data/frameworks/sproutcore/frameworks/desktop/tests/panes/picker/ui.js +80 -0
- data/frameworks/sproutcore/frameworks/desktop/tests/panes/sheet/methods.js +10 -0
- data/frameworks/sproutcore/frameworks/desktop/tests/panes/sheet/ui.js +38 -0
- data/frameworks/sproutcore/frameworks/desktop/tests/views/button/methods.js +45 -0
- data/frameworks/sproutcore/frameworks/desktop/tests/views/button/ui.js +140 -0
- data/frameworks/sproutcore/frameworks/desktop/tests/views/checkbox/methods.js +145 -0
- data/frameworks/sproutcore/frameworks/desktop/tests/views/checkbox/ui.js +99 -0
- data/frameworks/sproutcore/frameworks/desktop/tests/views/collection/methods.js +10 -0
- data/frameworks/sproutcore/frameworks/desktop/tests/views/collection/selectPreviousItem.js +39 -0
- data/frameworks/sproutcore/frameworks/desktop/tests/views/disclosure/methods.js +10 -0
- data/frameworks/sproutcore/frameworks/desktop/tests/views/disclosure/ui.js +64 -0
- data/frameworks/sproutcore/frameworks/desktop/tests/views/grid/methods.js +10 -0
- data/frameworks/sproutcore/frameworks/desktop/tests/views/grid/ui.js +10 -0
- data/frameworks/sproutcore/frameworks/desktop/tests/views/list/methods.js +10 -0
- data/frameworks/sproutcore/frameworks/desktop/tests/views/list/ui.js +110 -0
- data/frameworks/sproutcore/frameworks/desktop/tests/views/list_item.js +255 -0
- data/frameworks/sproutcore/frameworks/desktop/tests/views/menu_item/methods.js +10 -0
- data/frameworks/sproutcore/frameworks/desktop/tests/views/menu_item/ui.js +44 -0
- data/frameworks/sproutcore/frameworks/desktop/tests/views/progress/methods.js +128 -0
- data/frameworks/sproutcore/frameworks/desktop/tests/views/progress/ui.js +240 -0
- data/frameworks/sproutcore/frameworks/desktop/tests/views/radio/methods.js +113 -0
- data/frameworks/sproutcore/frameworks/desktop/tests/views/radio/ui.js +202 -0
- data/frameworks/sproutcore/frameworks/desktop/tests/views/scroll/methods.js +139 -0
- data/frameworks/sproutcore/frameworks/desktop/tests/views/scroll/ui.js +111 -0
- data/frameworks/sproutcore/frameworks/desktop/tests/views/scroller/methods.js +63 -0
- data/frameworks/sproutcore/frameworks/desktop/tests/views/scroller/ui.js +70 -0
- data/frameworks/sproutcore/frameworks/desktop/tests/views/segmented/methods.js +94 -0
- data/frameworks/sproutcore/frameworks/desktop/tests/views/segmented/ui.js +206 -0
- data/frameworks/sproutcore/frameworks/desktop/tests/views/select_field/methods.js +81 -0
- data/frameworks/sproutcore/frameworks/desktop/tests/views/select_field/ui.js +85 -0
- data/frameworks/sproutcore/frameworks/desktop/tests/views/separator.js +37 -0
- data/frameworks/sproutcore/frameworks/desktop/tests/views/source_list/methods.js +10 -0
- data/frameworks/sproutcore/frameworks/desktop/tests/views/source_list/ui.js +10 -0
- data/frameworks/sproutcore/frameworks/desktop/tests/views/split/methods.js +50 -0
- data/frameworks/sproutcore/frameworks/desktop/tests/views/split/ui.js +52 -0
- data/frameworks/sproutcore/frameworks/desktop/tests/views/tab/methods.js +54 -0
- data/frameworks/sproutcore/frameworks/desktop/tests/views/tab/ui.js +88 -0
- data/frameworks/sproutcore/frameworks/desktop/tests/views/text_field/methods.js +76 -0
- data/frameworks/sproutcore/frameworks/desktop/tests/views/text_field/ui.js +198 -0
- data/frameworks/sproutcore/frameworks/desktop/tests/views/web/methods.js +10 -0
- data/frameworks/sproutcore/frameworks/desktop/tests/views/web/ui.js +110 -0
- data/frameworks/sproutcore/frameworks/desktop/views/button.js +320 -0
- data/frameworks/sproutcore/frameworks/desktop/views/checkbox.js +98 -0
- data/frameworks/sproutcore/frameworks/desktop/views/collection.js +2141 -0
- data/frameworks/sproutcore/frameworks/desktop/views/disclosure.js +44 -0
- data/frameworks/sproutcore/frameworks/desktop/views/form.js +595 -0
- data/frameworks/sproutcore/frameworks/desktop/views/grid.js +199 -0
- data/frameworks/sproutcore/frameworks/desktop/views/list.js +706 -0
- data/frameworks/sproutcore/frameworks/desktop/views/list_item.js +523 -0
- data/frameworks/sproutcore/frameworks/desktop/views/menu_item.js +437 -0
- data/frameworks/sproutcore/frameworks/desktop/views/popup_button.js +62 -0
- data/frameworks/sproutcore/frameworks/desktop/views/progress.js +207 -0
- data/frameworks/sproutcore/frameworks/desktop/views/radio.js +332 -0
- data/frameworks/sproutcore/frameworks/desktop/views/scene.js +56 -0
- data/frameworks/sproutcore/frameworks/desktop/views/scroll.js +648 -0
- data/frameworks/sproutcore/frameworks/desktop/views/scroller.js +203 -0
- data/frameworks/sproutcore/frameworks/desktop/views/segmented.js +509 -0
- data/frameworks/sproutcore/frameworks/desktop/views/select_field.js +292 -0
- data/frameworks/sproutcore/frameworks/desktop/views/separator.js +37 -0
- data/frameworks/sproutcore/frameworks/desktop/views/slider.js +178 -0
- data/frameworks/sproutcore/frameworks/desktop/views/source_list.js +1117 -0
- data/frameworks/sproutcore/frameworks/desktop/views/source_list_group.js +169 -0
- data/frameworks/sproutcore/frameworks/desktop/views/split.js +651 -0
- data/frameworks/sproutcore/frameworks/desktop/views/split_divider.js +55 -0
- data/frameworks/sproutcore/frameworks/desktop/views/tab.js +190 -0
- data/frameworks/sproutcore/frameworks/desktop/views/text_field.js +233 -0
- data/frameworks/sproutcore/frameworks/desktop/views/thumb.js +49 -0
- data/frameworks/sproutcore/frameworks/desktop/views/toolbar.js +49 -0
- data/frameworks/sproutcore/frameworks/desktop/views/web.js +86 -0
- data/frameworks/sproutcore/frameworks/foundation/TESTING +46 -0
- data/frameworks/sproutcore/frameworks/foundation/controllers/array.js +490 -0
- data/frameworks/sproutcore/frameworks/foundation/controllers/controller.js +317 -0
- data/frameworks/sproutcore/frameworks/foundation/controllers/object.js +421 -0
- data/frameworks/sproutcore/frameworks/foundation/core.js +111 -0
- data/frameworks/sproutcore/frameworks/foundation/debug/control_test_pane.js +172 -0
- data/frameworks/sproutcore/frameworks/foundation/english.lproj/blank.gif +0 -0
- data/frameworks/sproutcore/frameworks/foundation/english.lproj/bootstrap.rhtml +53 -0
- data/frameworks/sproutcore/frameworks/foundation/english.lproj/button_view.css +55 -0
- data/frameworks/sproutcore/frameworks/foundation/english.lproj/core.css +5 -0
- data/frameworks/sproutcore/frameworks/foundation/english.lproj/debug/control-test-pane.css +8 -0
- data/frameworks/sproutcore/frameworks/foundation/english.lproj/images/sproutcore-logo.png +0 -0
- data/frameworks/sproutcore/frameworks/foundation/english.lproj/static_layout.css +5 -0
- data/frameworks/sproutcore/frameworks/foundation/english.lproj/view.css +40 -0
- data/frameworks/sproutcore/frameworks/foundation/ext/object.js +81 -0
- data/frameworks/sproutcore/frameworks/foundation/ext/run_loop.js +158 -0
- data/frameworks/sproutcore/frameworks/foundation/fixtures/file_exists.json +1 -0
- data/frameworks/sproutcore/frameworks/foundation/mixins/button.js +291 -0
- data/frameworks/sproutcore/frameworks/foundation/mixins/content_display.js +88 -0
- data/frameworks/sproutcore/frameworks/foundation/mixins/control.js +352 -0
- data/frameworks/sproutcore/frameworks/foundation/mixins/editable.js +146 -0
- data/frameworks/sproutcore/frameworks/foundation/mixins/responder.js +156 -0
- data/frameworks/sproutcore/frameworks/foundation/mixins/selection_support.js +154 -0
- data/frameworks/sproutcore/frameworks/foundation/mixins/static_layout.js +101 -0
- data/frameworks/sproutcore/frameworks/foundation/mixins/string.js +237 -0
- data/frameworks/sproutcore/frameworks/foundation/mixins/validatable.js +176 -0
- data/frameworks/sproutcore/frameworks/foundation/panes/main.js +47 -0
- data/frameworks/sproutcore/frameworks/foundation/panes/pane.js +555 -0
- data/frameworks/sproutcore/frameworks/foundation/protocols/inline_editor_delegate.js +84 -0
- data/frameworks/sproutcore/frameworks/foundation/system/benchmark.js +244 -0
- data/frameworks/sproutcore/frameworks/foundation/system/browser.js +64 -0
- data/frameworks/sproutcore/frameworks/foundation/system/builder.js +210 -0
- data/frameworks/sproutcore/frameworks/foundation/system/core_query.js +2015 -0
- data/frameworks/sproutcore/frameworks/foundation/system/cursor.js +129 -0
- data/frameworks/sproutcore/frameworks/foundation/system/error.js +93 -0
- data/frameworks/sproutcore/frameworks/foundation/system/event.js +817 -0
- data/frameworks/sproutcore/frameworks/foundation/system/image_cache.js +433 -0
- data/frameworks/sproutcore/frameworks/foundation/system/json.js +440 -0
- data/frameworks/sproutcore/frameworks/foundation/system/locale.js +288 -0
- data/frameworks/sproutcore/frameworks/foundation/system/page.js +106 -0
- data/frameworks/sproutcore/frameworks/foundation/system/ready.js +189 -0
- data/frameworks/sproutcore/frameworks/foundation/system/render_context.js +865 -0
- data/frameworks/sproutcore/frameworks/foundation/system/request.js +255 -0
- data/frameworks/sproutcore/frameworks/foundation/system/root_responder.js +368 -0
- data/frameworks/sproutcore/frameworks/foundation/system/routes.js +446 -0
- data/frameworks/sproutcore/frameworks/foundation/system/time.js +478 -0
- data/frameworks/sproutcore/frameworks/foundation/system/timer.js +549 -0
- data/frameworks/sproutcore/frameworks/foundation/system/user_defaults.js +158 -0
- data/frameworks/sproutcore/frameworks/foundation/system/utils.js +330 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/controllers/array.js +118 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/controllers/controller.js +268 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/controllers/object.js +433 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/debug/control_test_pane/methods.js +10 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/debug/control_test_pane/ui.js +113 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/integration/creating_views.js +113 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/mixins/button/content.js +195 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/mixins/button/displayProperties.js +89 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/mixins/control/content.js +168 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/mixins/control/displayProperties.js +89 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/system/builder.js +42 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/system/core_query/jquery_core.js +1323 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/system/core_query/jquery_dimensions.js +387 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/system/core_query/jquery_selector.js +405 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/system/core_query/setClass.js +49 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/system/core_query/within.js +66 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/system/error.js +41 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/system/json.js +14 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/system/locale.js +128 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/system/render_context/begin.js +47 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/system/render_context/element.js +44 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/system/render_context/end.js +119 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/system/render_context/get.js +51 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/system/render_context/helpers_attr.js +50 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/system/render_context/helpers_basic.js +28 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/system/render_context/helpers_className.js +179 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/system/render_context/helpers_style.js +100 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/system/render_context/init.js +55 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/system/render_context/join.js +28 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/system/render_context/push_text.js +74 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/system/render_context/tag.js +45 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/system/render_context/update.js +205 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/system/request.js +89 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/system/root_responder/makeKeyPane.js +124 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/system/root_responder/makeMainPane.js +68 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/system/root_responder/root_responder.js +97 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/system/root_responder/targetForAction.js +238 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/system/routes.js +33 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/system/timer/invalidate.js +38 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/system/timer/invokeLater.js +201 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/system/timer/isPaused.js +71 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/system/timer/performAction.js +67 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/system/timer/schedule.js +170 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/system/user_defaults.js +27 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/system/utils/normalizeURL.js +18 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/system/utils/range.js +62 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/validators/credit_card.js +35 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/validators/date.js +21 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/validators/number.js +47 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/validators/password.js +13 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/views/container/methods.js +10 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/views/container/ui.js +83 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/views/image/ui.js +39 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/views/main_pane.js +31 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/views/pane/append_remove.js +89 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/views/pane/firstResponder.js +148 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/views/pane/keyPane.js +133 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/views/pane/sendEvent.js +165 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/views/view/clippingFrame.js +132 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/views/view/convertFrames.js +246 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/views/view/createChildViews.js +87 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/views/view/createLayer.js +97 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/views/view/destroyLayer.js +85 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/views/view/findLayerInParentLayer.js +52 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/views/view/init.js +50 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/views/view/insertBefore.js +200 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/views/view/isVisibleInWindow.js +102 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/views/view/layer.js +150 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/views/view/layoutChildViews.js +162 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/views/view/layoutDidChange.js +127 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/views/view/layoutStyle.js +248 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/views/view/parentViewDidChange.js +67 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/views/view/prepareContext.js +166 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/views/view/removeChild.js +189 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/views/view/render.js +83 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/views/view/replaceChild.js +29 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/views/view/updateLayer.js +142 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/views/view/updateLayerLocation.js +194 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/views/view/viewDidResize.js +185 -0
- data/frameworks/sproutcore/frameworks/foundation/validators/credit_card.js +125 -0
- data/frameworks/sproutcore/frameworks/foundation/validators/date.js +52 -0
- data/frameworks/sproutcore/frameworks/foundation/validators/email.js +45 -0
- data/frameworks/sproutcore/frameworks/foundation/validators/not_empty.js +33 -0
- data/frameworks/sproutcore/frameworks/foundation/validators/number.js +82 -0
- data/frameworks/sproutcore/frameworks/foundation/validators/password.js +86 -0
- data/frameworks/sproutcore/frameworks/foundation/validators/validator.js +311 -0
- data/frameworks/sproutcore/frameworks/foundation/views/container.js +136 -0
- data/frameworks/sproutcore/frameworks/foundation/views/field.js +276 -0
- data/frameworks/sproutcore/frameworks/foundation/views/image.js +158 -0
- data/frameworks/sproutcore/frameworks/foundation/views/label.js +261 -0
- data/frameworks/sproutcore/frameworks/foundation/views/view.js +2160 -0
- data/frameworks/sproutcore/frameworks/mobile/english.lproj/core.css +12 -0
- data/frameworks/sproutcore/frameworks/mobile/lib/index.rhtml +126 -0
- data/frameworks/sproutcore/frameworks/mobile/system/root_responder.js +109 -0
- data/frameworks/sproutcore/frameworks/mobile/tests/views/button/ui.js +9 -0
- data/frameworks/sproutcore/frameworks/mobile/views/button.js +190 -0
- data/frameworks/sproutcore/frameworks/runtime/README +11 -0
- data/frameworks/sproutcore/frameworks/runtime/core.js +777 -0
- data/frameworks/sproutcore/frameworks/runtime/license.js +28 -0
- data/frameworks/sproutcore/frameworks/runtime/mixins/array.js +403 -0
- data/frameworks/sproutcore/frameworks/runtime/mixins/delegate_support.js +70 -0
- data/frameworks/sproutcore/frameworks/runtime/mixins/enumerable.js +1193 -0
- data/frameworks/sproutcore/frameworks/runtime/mixins/observable.js +1149 -0
- data/frameworks/sproutcore/frameworks/runtime/private/chain_observer.js +135 -0
- data/frameworks/sproutcore/frameworks/runtime/private/observer_queue.js +108 -0
- data/frameworks/sproutcore/frameworks/runtime/private/observer_set.js +128 -0
- data/frameworks/sproutcore/frameworks/runtime/protocols/sparse_array_delegate.js +131 -0
- data/frameworks/sproutcore/frameworks/runtime/system/binding.js +891 -0
- data/frameworks/sproutcore/frameworks/runtime/system/enumerator.js +107 -0
- data/frameworks/sproutcore/frameworks/runtime/system/object.js +783 -0
- data/frameworks/sproutcore/frameworks/runtime/system/range_observer.js +99 -0
- data/frameworks/sproutcore/frameworks/runtime/system/run_loop.js +214 -0
- data/frameworks/sproutcore/frameworks/runtime/system/set.js +246 -0
- data/frameworks/sproutcore/frameworks/runtime/system/sparse_array.js +286 -0
- data/frameworks/sproutcore/frameworks/runtime/tests/core/IsEqual.js +56 -0
- data/frameworks/sproutcore/frameworks/runtime/tests/core/beget.js +23 -0
- data/frameworks/sproutcore/frameworks/runtime/tests/core/clone.js +66 -0
- data/frameworks/sproutcore/frameworks/runtime/tests/core/guidFor.js +147 -0
- data/frameworks/sproutcore/frameworks/runtime/tests/core/inspect.js +27 -0
- data/frameworks/sproutcore/frameworks/runtime/tests/core/isArray.js +25 -0
- data/frameworks/sproutcore/frameworks/runtime/tests/core/itemType.js +38 -0
- data/frameworks/sproutcore/frameworks/runtime/tests/core/keys.js +20 -0
- data/frameworks/sproutcore/frameworks/runtime/tests/core/makeArray.js +30 -0
- data/frameworks/sproutcore/frameworks/runtime/tests/core/objectForPropertyPath.js +19 -0
- data/frameworks/sproutcore/frameworks/runtime/tests/core/tupleForPropertyPath.js +37 -0
- data/frameworks/sproutcore/frameworks/runtime/tests/mixins/enumerable.js +592 -0
- data/frameworks/sproutcore/frameworks/runtime/tests/mixins/observable/observable.js +467 -0
- data/frameworks/sproutcore/frameworks/runtime/tests/mixins/observable/propertyChanges.js +123 -0
- data/frameworks/sproutcore/frameworks/runtime/tests/mixins/observable/registerDependentKeys.js +79 -0
- data/frameworks/sproutcore/frameworks/runtime/tests/mixins/propertyChanges.js +80 -0
- data/frameworks/sproutcore/frameworks/runtime/tests/system/array.js +263 -0
- data/frameworks/sproutcore/frameworks/runtime/tests/system/binding.js +190 -0
- data/frameworks/sproutcore/frameworks/runtime/tests/system/object/base.js +135 -0
- data/frameworks/sproutcore/frameworks/runtime/tests/system/object/bindings.js +339 -0
- data/frameworks/sproutcore/frameworks/runtime/tests/system/run_loop.js +120 -0
- data/frameworks/sproutcore/frameworks/runtime/tests/system/set.js +313 -0
- data/frameworks/sproutcore/frameworks/runtime/tests/system/sparse_array.js +84 -0
- data/frameworks/sproutcore/frameworks/testing/core.js +13 -0
- data/frameworks/sproutcore/frameworks/testing/english.lproj/additions.css +8 -0
- data/frameworks/sproutcore/frameworks/testing/english.lproj/testsuite.css +131 -0
- data/frameworks/sproutcore/frameworks/testing/extras.js +43 -0
- data/frameworks/sproutcore/frameworks/testing/jquery.js +3559 -0
- data/frameworks/sproutcore/frameworks/testing/qunit.js +819 -0
- data/frameworks/sproutcore/frameworks/testing/tests/debug/qunit.js +25 -0
- data/frameworks/sproutcore/frameworks/testing/utils.js +55 -0
- data/frameworks/sproutcore/lib/index.rhtml +118 -0
- data/frameworks/sproutcore/license.js +28 -0
- data/frameworks/sproutcore/themes/empty_theme/tests/mini_icons.rhtml +69 -0
- data/frameworks/sproutcore/themes/iphone_theme/english.lproj/button.css +41 -0
- data/frameworks/sproutcore/themes/iphone_theme/english.lproj/core.css +8 -0
- data/frameworks/sproutcore/themes/iphone_theme/english.lproj/images/backButton.png +0 -0
- data/frameworks/sproutcore/themes/iphone_theme/english.lproj/images/blueButton.png +0 -0
- data/frameworks/sproutcore/themes/iphone_theme/english.lproj/images/cancel.png +0 -0
- data/frameworks/sproutcore/themes/iphone_theme/english.lproj/images/grayButton.png +0 -0
- data/frameworks/sproutcore/themes/iphone_theme/english.lproj/images/leftButton.png +0 -0
- data/frameworks/sproutcore/themes/iphone_theme/english.lproj/images/listArrow.png +0 -0
- data/frameworks/sproutcore/themes/iphone_theme/english.lproj/images/listArrowSel.png +0 -0
- data/frameworks/sproutcore/themes/iphone_theme/english.lproj/images/listGroup.png +0 -0
- data/frameworks/sproutcore/themes/iphone_theme/english.lproj/images/loading.gif +0 -0
- data/frameworks/sproutcore/themes/iphone_theme/english.lproj/images/pinstripes.png +0 -0
- data/frameworks/sproutcore/themes/iphone_theme/english.lproj/images/rightButton.png +0 -0
- data/frameworks/sproutcore/themes/iphone_theme/english.lproj/images/selection.png +0 -0
- data/frameworks/sproutcore/themes/iphone_theme/english.lproj/images/thumb.png +0 -0
- data/frameworks/sproutcore/themes/iphone_theme/english.lproj/images/toggle.png +0 -0
- data/frameworks/sproutcore/themes/iphone_theme/english.lproj/images/toggleOn.png +0 -0
- data/frameworks/sproutcore/themes/iphone_theme/english.lproj/images/toolButton.png +0 -0
- data/frameworks/sproutcore/themes/iphone_theme/english.lproj/images/toolbar.png +0 -0
- data/frameworks/sproutcore/themes/iphone_theme/english.lproj/images/whiteButton.png +0 -0
- data/frameworks/sproutcore/themes/iphone_theme/english.lproj/strings.js +15 -0
- data/frameworks/sproutcore/themes/standard_theme/Source/Panel.drawit/Data +0 -0
- data/frameworks/sproutcore/themes/standard_theme/Source/Panel.drawit/QuickLook/Preview.jpg +0 -0
- data/frameworks/sproutcore/themes/standard_theme/Source/Panel.drawit/QuickLook/Thumbnail.jpg +0 -0
- data/frameworks/sproutcore/themes/standard_theme/Source/ToolbarView Pattern.drawit/Data +0 -0
- data/frameworks/sproutcore/themes/standard_theme/Source/ToolbarView Pattern.drawit/QuickLook/Preview.jpg +0 -0
- data/frameworks/sproutcore/themes/standard_theme/Source/ToolbarView Pattern.drawit/QuickLook/Thumbnail.jpg +0 -0
- data/frameworks/sproutcore/themes/standard_theme/Source/panel-sprite-x.drawit/Data +0 -0
- data/frameworks/sproutcore/themes/standard_theme/Source/panel-sprite-x.drawit/QuickLook/Preview.jpg +0 -0
- data/frameworks/sproutcore/themes/standard_theme/Source/panel-sprite-x.drawit/QuickLook/Thumbnail.jpg +0 -0
- data/frameworks/sproutcore/themes/standard_theme/Source/panel-sprite-y.drawit/Data +0 -0
- data/frameworks/sproutcore/themes/standard_theme/Source/panel-sprite-y.drawit/QuickLook/Preview.jpg +0 -0
- data/frameworks/sproutcore/themes/standard_theme/Source/panel-sprite-y.drawit/QuickLook/Thumbnail.jpg +0 -0
- data/frameworks/sproutcore/themes/standard_theme/english.lproj/button.css +333 -0
- data/frameworks/sproutcore/themes/standard_theme/english.lproj/checkbox.css +90 -0
- data/frameworks/sproutcore/themes/standard_theme/english.lproj/collection.css +53 -0
- data/frameworks/sproutcore/themes/standard_theme/english.lproj/core.css +47 -0
- data/frameworks/sproutcore/themes/standard_theme/english.lproj/disclosure.css +55 -0
- data/frameworks/sproutcore/themes/standard_theme/english.lproj/images/sc-theme-sprite.png +0 -0
- data/frameworks/sproutcore/themes/standard_theme/english.lproj/images/sc-theme-ysprite.png +0 -0
- data/frameworks/sproutcore/themes/standard_theme/english.lproj/images/sc-toolbar-view.png +0 -0
- data/frameworks/sproutcore/themes/standard_theme/english.lproj/label.css +37 -0
- data/frameworks/sproutcore/themes/standard_theme/english.lproj/pane.css +8 -0
- data/frameworks/sproutcore/themes/standard_theme/english.lproj/panels/background-fat.jpg +0 -0
- data/frameworks/sproutcore/themes/standard_theme/english.lproj/panels/background-thin.jpg +0 -0
- data/frameworks/sproutcore/themes/standard_theme/english.lproj/panels/bottom-edge.png +0 -0
- data/frameworks/sproutcore/themes/standard_theme/english.lproj/panels/bottom-left-corner.png +0 -0
- data/frameworks/sproutcore/themes/standard_theme/english.lproj/panels/bottom-right-corner.png +0 -0
- data/frameworks/sproutcore/themes/standard_theme/english.lproj/panels/left-edge.png +0 -0
- data/frameworks/sproutcore/themes/standard_theme/english.lproj/panels/overlay.png +0 -0
- data/frameworks/sproutcore/themes/standard_theme/english.lproj/panels/right-edge.png +0 -0
- data/frameworks/sproutcore/themes/standard_theme/english.lproj/panels/top-edge.png +0 -0
- data/frameworks/sproutcore/themes/standard_theme/english.lproj/panels/top-left-corner.png +0 -0
- data/frameworks/sproutcore/themes/standard_theme/english.lproj/panels/top-right-corner.png +0 -0
- data/frameworks/sproutcore/themes/standard_theme/english.lproj/progress.css +23 -0
- data/frameworks/sproutcore/themes/standard_theme/english.lproj/radio.css +113 -0
- data/frameworks/sproutcore/themes/standard_theme/english.lproj/segmented.css +141 -0
- data/frameworks/sproutcore/themes/standard_theme/english.lproj/slider.css +62 -0
- data/frameworks/sproutcore/themes/standard_theme/english.lproj/split_view.css +27 -0
- data/frameworks/sproutcore/themes/standard_theme/english.lproj/tab.css +12 -0
- data/frameworks/sproutcore/themes/standard_theme/english.lproj/text_field.css +13 -0
- data/frameworks/sproutcore/themes/standard_theme/english.lproj/toolbar.css +4 -0
- data/lib/thor/.autotest +7 -0
- data/lib/thor/CHANGELOG.rdoc +52 -0
- data/lib/thor/LICENSE +20 -0
- data/lib/thor/README.markdown +76 -0
- data/lib/thor/Rakefile +6 -0
- data/lib/thor/Thorfile +45 -0
- data/lib/thor/bin/rake2thor +83 -0
- data/lib/thor/bin/thor +7 -0
- data/lib/thor/lib/thor/error.rb +3 -0
- data/lib/thor/lib/thor/options.rb +267 -0
- data/lib/thor/lib/thor/ordered_hash.rb +64 -0
- data/lib/thor/lib/thor/runner.rb +305 -0
- data/lib/thor/lib/thor/task.rb +83 -0
- data/lib/thor/lib/thor/task_hash.rb +22 -0
- data/lib/thor/lib/thor/tasks/package.rb +18 -0
- data/lib/thor/lib/thor/tasks.rb +77 -0
- data/lib/thor/lib/thor/util.rb +75 -0
- data/lib/thor/lib/thor.rb +170 -0
- data/lib/thor/script/destroy +14 -0
- data/lib/thor/script/generate +14 -0
- data/lib/thor/spec/fixtures/task.thor +10 -0
- data/lib/thor/spec/options_spec.rb +271 -0
- data/lib/thor/spec/ordered_hash_spec.rb +84 -0
- data/lib/thor/spec/spec.opts +1 -0
- data/lib/thor/spec/spec_helper.rb +30 -0
- data/lib/thor/spec/task_spec.rb +11 -0
- data/lib/thor/spec/tasks_spec.rb +28 -0
- data/lib/thor/spec/thor_runner_spec.rb +194 -0
- data/lib/thor/spec/thor_spec.rb +206 -0
- data/lib/thor/spec/util_spec.rb +99 -0
- data/lib/thor/task.thor +15 -0
- data/lib/thor/thor.gemspec +29 -0
- metadata +3 -4
- data/sproutcore.gemspec +0 -47
@@ -0,0 +1,46 @@
|
|
1
|
+
// ==========================================================================
|
2
|
+
// Project: SproutCore - JavaScript Application Framework
|
3
|
+
// Copyright: ©2006-2009 Apple, Inc. and contributors.
|
4
|
+
// License: Licened under MIT license (see license.js)
|
5
|
+
// ==========================================================================
|
6
|
+
/*globals module ok equals same test MyApp */
|
7
|
+
|
8
|
+
var MyFoo = null ;
|
9
|
+
module("SC.Record#unknownProperty", {
|
10
|
+
setup: function() {
|
11
|
+
MyApp = SC.Object.create({
|
12
|
+
store: SC.Store.create()
|
13
|
+
}) ;
|
14
|
+
|
15
|
+
MyApp.Foo = SC.Record.extend();
|
16
|
+
MyApp.json = {
|
17
|
+
foo: "bar",
|
18
|
+
number: 123,
|
19
|
+
bool: YES,
|
20
|
+
array: [1,2,3]
|
21
|
+
};
|
22
|
+
|
23
|
+
MyApp.foo = MyApp.store.createRecord(MyApp.Foo, MyApp.json);
|
24
|
+
}
|
25
|
+
});
|
26
|
+
|
27
|
+
test("get() returns attributes with no type changes if they exist", function() {
|
28
|
+
'foo number bool array'.w().forEach(function(key) {
|
29
|
+
equals(MyApp.foo.get(key), MyApp.json[key], "MyApp.foo.get(%@) should === attribute".fmt(key));
|
30
|
+
});
|
31
|
+
});
|
32
|
+
|
33
|
+
test("get() unknown attribute returns undefined", function() {
|
34
|
+
equals(MyApp.foo.get('imaginary'), undefined, 'imaginary property should be undefined');
|
35
|
+
});
|
36
|
+
|
37
|
+
test("set() unknown property should add to dataHash", function() {
|
38
|
+
MyApp.foo.set('blue', '0x00f');
|
39
|
+
equals(MyApp.store.dataHashes[MyApp.foo.storeKey].blue, '0x00f', 'should add blue attribute');
|
40
|
+
});
|
41
|
+
|
42
|
+
test("set() should replace existing property", function() {
|
43
|
+
MyApp.foo.set('foo', 'baz');
|
44
|
+
equals(MyApp.store.dataHashes[MyApp.foo.storeKey].foo, 'baz', 'should update foo attribute');
|
45
|
+
});
|
46
|
+
|
@@ -0,0 +1,71 @@
|
|
1
|
+
// ==========================================================================
|
2
|
+
// Project: SproutCore - JavaScript Application Framework
|
3
|
+
// Copyright: ©2006-2009 Apple, Inc. and contributors.
|
4
|
+
// License: Licened under MIT license (see license.js)
|
5
|
+
// ==========================================================================
|
6
|
+
/*globals module ok equals same test MyApp */
|
7
|
+
|
8
|
+
var store, Foo, json, foo ;
|
9
|
+
module("SC.Record#writeAttribute", {
|
10
|
+
setup: function() {
|
11
|
+
store = SC.Store.create();
|
12
|
+
Foo = SC.Record.extend();
|
13
|
+
json = {
|
14
|
+
foo: "bar",
|
15
|
+
number: 123,
|
16
|
+
bool: YES,
|
17
|
+
array: [1,2,3]
|
18
|
+
};
|
19
|
+
|
20
|
+
foo = store.createRecord(Foo, json);
|
21
|
+
store.writeStatus(foo.storeKey, SC.Record.READY_CLEAN);
|
22
|
+
}
|
23
|
+
});
|
24
|
+
|
25
|
+
test("returns receiver", function() {
|
26
|
+
equals(foo.writeAttribute("bar", "baz"), foo, 'should return receiver');
|
27
|
+
});
|
28
|
+
|
29
|
+
test("first time writing should mark record as dirty", function() {
|
30
|
+
// precondition
|
31
|
+
equals(foo.get('status'), SC.Record.READY_CLEAN, 'precond - start clean');
|
32
|
+
|
33
|
+
// action
|
34
|
+
foo.writeAttribute("bar", "baz");
|
35
|
+
|
36
|
+
// evaluate
|
37
|
+
equals(foo.get('status'), SC.Record.READY_DIRTY, 'should make READY_DIRTY after write');
|
38
|
+
});
|
39
|
+
|
40
|
+
test("state change should be deferred if writing inside of a beginEditing()/endEditing() pair", function() {
|
41
|
+
|
42
|
+
// precondition
|
43
|
+
equals(foo.get('status'), SC.Record.READY_CLEAN, 'precond - start clean');
|
44
|
+
|
45
|
+
// action
|
46
|
+
foo.beginEditing();
|
47
|
+
foo.writeAttribute("bar", "baz");
|
48
|
+
|
49
|
+
equals(foo.get('status'), SC.Record.READY_CLEAN, 'should not change state yet');
|
50
|
+
|
51
|
+
foo.endEditing();
|
52
|
+
|
53
|
+
// evaluate
|
54
|
+
equals(foo.get('status'), SC.Record.READY_DIRTY, 'should make READY_DIRTY after write');
|
55
|
+
|
56
|
+
}) ;
|
57
|
+
|
58
|
+
test("raises exception if you try to write an attribute before an attribute hash has been set", function() {
|
59
|
+
store.removeDataHash(foo.storeKey);
|
60
|
+
equals(store.readDataHash(foo.storeKey), null, 'precond - should not have store key');
|
61
|
+
|
62
|
+
var e, cnt=0 ;
|
63
|
+
try {
|
64
|
+
foo.writeAttribute("foo", "bar");
|
65
|
+
} catch(e) {
|
66
|
+
equals(e, SC.Record.BAD_STATE_ERROR, 'should throw BAD_STATE_ERROR');
|
67
|
+
cnt++;
|
68
|
+
}
|
69
|
+
equals(cnt, 1, 'should raise exception');
|
70
|
+
});
|
71
|
+
|
@@ -0,0 +1,115 @@
|
|
1
|
+
// ==========================================================================
|
2
|
+
// Project: SproutCore - JavaScript Application Framework
|
3
|
+
// Copyright: ©2006-2009 Apple, Inc. and contributors.
|
4
|
+
// License: Licened under MIT license (see license.js)
|
5
|
+
// ==========================================================================
|
6
|
+
/*globals module ok equals same test MyApp */
|
7
|
+
|
8
|
+
// test core array-mapping methods for RecordArray
|
9
|
+
var storeKeys, rec;
|
10
|
+
module("SC.RecordArray core methods", {
|
11
|
+
setup: function() {
|
12
|
+
|
13
|
+
MyApp = SC.Object.create({
|
14
|
+
store: SC.Store.create()
|
15
|
+
});
|
16
|
+
|
17
|
+
MyApp.Foo = SC.Record.extend({
|
18
|
+
|
19
|
+
// test simple reading of a pass-through prop
|
20
|
+
firstName: SC.Record.attr(String),
|
21
|
+
|
22
|
+
// test mapping to another internal key
|
23
|
+
otherName: SC.Record.attr(String, { key: "firstName" }),
|
24
|
+
|
25
|
+
// test mapping Date
|
26
|
+
date: SC.Record.attr(Date),
|
27
|
+
|
28
|
+
// used to test default value
|
29
|
+
defaultValue: SC.Record.attr(String, {
|
30
|
+
defaultValue: "default"
|
31
|
+
}),
|
32
|
+
|
33
|
+
// test toOne relationships
|
34
|
+
foo: SC.Record.attr('MyApp.Foo')
|
35
|
+
|
36
|
+
});
|
37
|
+
|
38
|
+
storeKeys = MyApp.store.loadRecords(MyApp.Foo, [
|
39
|
+
{ guid: 1,
|
40
|
+
firstName: "John", lastName: "Doe",
|
41
|
+
date: "2009-03-01T20:30-08:00"
|
42
|
+
},
|
43
|
+
|
44
|
+
{ guid: 2, firstName: "Jane", lastName: "Doe", foo: 1 }
|
45
|
+
]);
|
46
|
+
|
47
|
+
rec = MyApp.store.find(MyApp.Foo, 1);
|
48
|
+
equals(rec.storeKey, storeKeys[0], 'should find record');
|
49
|
+
}
|
50
|
+
});
|
51
|
+
|
52
|
+
// ..........................................................
|
53
|
+
// READING
|
54
|
+
//
|
55
|
+
|
56
|
+
test("pass-through should return builtin value" ,function() {
|
57
|
+
equals(rec.get('firstName'), 'John', 'reading prop should get attr value');
|
58
|
+
});
|
59
|
+
|
60
|
+
test("returns default value if underyling value is empty", function() {
|
61
|
+
equals(rec.get('defaultValue'), 'default', 'reading prop should return default value');
|
62
|
+
});
|
63
|
+
|
64
|
+
test("naming a key should read alternate attribute", function() {
|
65
|
+
equals(rec.get('otherName'), 'John', 'reading prop otherName should get attr from firstName');
|
66
|
+
});
|
67
|
+
|
68
|
+
test("getting toOne relationship should map guid to a real record", function() {
|
69
|
+
var rec2 = MyApp.store.find(MyApp.Foo, 2);
|
70
|
+
equals(rec2.get('id'), 2, 'precond - should find record 2');
|
71
|
+
equals(rec2.get('foo'), rec, 'should get rec1 instance for rec2.foo');
|
72
|
+
});
|
73
|
+
|
74
|
+
test("reading date should parse ISO date", function() {
|
75
|
+
var d = new Date(1235968200000); // should be proper date
|
76
|
+
equals(rec.get('date').toString(), d.toString(), 'should have matched date');
|
77
|
+
});
|
78
|
+
|
79
|
+
// ..........................................................
|
80
|
+
// WRITING
|
81
|
+
//
|
82
|
+
|
83
|
+
test("writing pass-through should simply set value", function() {
|
84
|
+
rec.set("firstName", "Foo");
|
85
|
+
equals(rec.readAttribute("firstName"), "Foo", "should write string");
|
86
|
+
|
87
|
+
rec.set("firstName", 23);
|
88
|
+
equals(rec.readAttribute("firstName"), 23, "should write number");
|
89
|
+
|
90
|
+
rec.set("firstName", YES);
|
91
|
+
equals(rec.readAttribute("firstName"), YES, "should write bool");
|
92
|
+
|
93
|
+
});
|
94
|
+
|
95
|
+
test("writing a value should override default value", function() {
|
96
|
+
|
97
|
+
equals(rec.get('defaultValue'), 'default', 'precond - returns default');
|
98
|
+
rec.set('defaultValue', 'not-default');
|
99
|
+
equals(rec.get('defaultValue'), 'not-default', 'newly written value should replace default value');
|
100
|
+
});
|
101
|
+
|
102
|
+
test("writing to a to-one relationship should update set guid", function() {
|
103
|
+
var rec2 = MyApp.store.find(MyApp.Foo, 2);
|
104
|
+
equals(rec2.get('id'), 2, 'precond - should find record 2');
|
105
|
+
equals(rec2.get('foo'), rec, 'precond - should get rec1 instance for rec2.foo');
|
106
|
+
|
107
|
+
rec2.set('foo', rec2);
|
108
|
+
equals(rec2.readAttribute('foo'), 2, 'should write ID for set record to foo attribute');
|
109
|
+
});
|
110
|
+
|
111
|
+
test("writing a date should generate an ISO date" ,function() {
|
112
|
+
var date = new Date(1238650083966);
|
113
|
+
equals(rec.set('date', date), rec, 'returns reciever');
|
114
|
+
equals(rec.readAttribute('date'), '2009-04-01T22:28:03-07:00', 'should have new time (%@)'.fmt(date.toString()));
|
115
|
+
});
|
@@ -0,0 +1,40 @@
|
|
1
|
+
// ==========================================================================
|
2
|
+
// Project: SproutCore - JavaScript Application Framework
|
3
|
+
// Copyright: ©2006-2009 Apple, Inc. and contributors.
|
4
|
+
// License: Licened under MIT license (see license.js)
|
5
|
+
// ==========================================================================
|
6
|
+
/*globals module ok equals same test MyApp */
|
7
|
+
|
8
|
+
// This file tests the initial state of the store when it is first created
|
9
|
+
// either independently or as a chained store.
|
10
|
+
|
11
|
+
// ..........................................................
|
12
|
+
// SC.Store#chain - init
|
13
|
+
//
|
14
|
+
module("SC.Store#chain - init");
|
15
|
+
|
16
|
+
notest("initial setup for chained store", function() {
|
17
|
+
var parent = SC.Store.create();
|
18
|
+
var store = parent.chain();
|
19
|
+
|
20
|
+
ok(store !== parent, 'chain should return new child store');
|
21
|
+
|
22
|
+
equals(store.get('parentStore'), parent, 'should have parentStore');
|
23
|
+
|
24
|
+
equals(SC.typeOf(store.dataHashes), SC.T_HASH, 'should have dataHashes');
|
25
|
+
parent.dataHashes.foo = 'bar';
|
26
|
+
equals(store.dataHashes.foo, 'bar', 'dataHashes should inherit from parent');
|
27
|
+
|
28
|
+
equals(SC.typeOf(store.revisions), SC.T_HASH, 'should have revisions');
|
29
|
+
parent.revisions.foo = 'bar';
|
30
|
+
equals(store.revisions.foo, 'bar', 'revisions should inherit from parent');
|
31
|
+
|
32
|
+
equals(SC.typeOf(store.statuses), SC.T_HASH, 'should have statuses');
|
33
|
+
parent.statuses.foo = 'bar';
|
34
|
+
equals(store.statuses.foo, 'bar', 'statuses should inherit from parent');
|
35
|
+
|
36
|
+
ok(!store.locks, 'should not have locks');
|
37
|
+
ok(!store.chainedChanges, 'should not have chainedChanges');
|
38
|
+
ok(!store.editables, 'should not have editables');
|
39
|
+
});
|
40
|
+
|
@@ -0,0 +1,116 @@
|
|
1
|
+
// ==========================================================================
|
2
|
+
// Project: SproutCore - JavaScript Application Framework
|
3
|
+
// Copyright: ©2006-2009 Apple, Inc. and contributors.
|
4
|
+
// License: Licened under MIT license (see license.js)
|
5
|
+
// ==========================================================================
|
6
|
+
/*globals module ok equals same test MyApp */
|
7
|
+
|
8
|
+
// NOTE: The test below are based on the Data Hashes state chart. This models
|
9
|
+
// the "commit" event in the NestedStore portion of the diagram.
|
10
|
+
|
11
|
+
var parent, store, child, storeKey, json, args;
|
12
|
+
module("SC.NestedStore#commitChanges", {
|
13
|
+
setup: function() {
|
14
|
+
parent = SC.Store.create();
|
15
|
+
|
16
|
+
json = {
|
17
|
+
string: "string",
|
18
|
+
number: 23,
|
19
|
+
bool: YES
|
20
|
+
};
|
21
|
+
args = null;
|
22
|
+
|
23
|
+
storeKey = SC.Store.generateStoreKey();
|
24
|
+
|
25
|
+
store = parent.chain(); // create nested store
|
26
|
+
child = store.chain(); // test multiple levels deep
|
27
|
+
|
28
|
+
// override commitChangesFromNestedStore() so we can ensure it is called
|
29
|
+
// save call history for later evaluation
|
30
|
+
parent.commitChangesFromNestedStore =
|
31
|
+
child.commitChangesFromNestedStore =
|
32
|
+
store.commitChangesFromNestedStore = function(store, changes, force) {
|
33
|
+
if (!args) args = [];
|
34
|
+
args.push({
|
35
|
+
target: this,
|
36
|
+
store: store,
|
37
|
+
changes: changes,
|
38
|
+
force: force
|
39
|
+
});
|
40
|
+
};
|
41
|
+
|
42
|
+
}
|
43
|
+
});
|
44
|
+
|
45
|
+
// ..........................................................
|
46
|
+
// BASIC STATE TRANSITIONS
|
47
|
+
//
|
48
|
+
|
49
|
+
function testStateTransition(shouldIncludeStoreKey) {
|
50
|
+
|
51
|
+
// attempt to commit
|
52
|
+
equals(store.commitChanges(), store, 'should return receiver');
|
53
|
+
|
54
|
+
// verify result
|
55
|
+
equals(store.storeKeyEditState(storeKey), SC.Store.INHERITED, 'data edit state');
|
56
|
+
equals(args.length, 1, 'should have called commitChangesFromNestedStore');
|
57
|
+
equals(args[0].target, parent, 'should have called on parent store');
|
58
|
+
|
59
|
+
// verify if changes passed to callback included storeKey
|
60
|
+
var changes = args[0].changes;
|
61
|
+
var didInclude = changes && changes.contains(storeKey);
|
62
|
+
if (shouldIncludeStoreKey) {
|
63
|
+
ok(didInclude, 'passed set of changes should include storeKey');
|
64
|
+
} else {
|
65
|
+
ok(!didInclude, 'passed set of changes should NOT include storeKey');
|
66
|
+
}
|
67
|
+
|
68
|
+
equals(store.get('hasChanges'), NO, 'hasChanges should be cleared');
|
69
|
+
ok(!store.chainedChanges || store.chainedChanges.length===0, 'should have empty chainedChanges set');
|
70
|
+
}
|
71
|
+
|
72
|
+
notest("state = INHERITED", function() {
|
73
|
+
|
74
|
+
// write in some data to parent
|
75
|
+
parent.writeDataHash(storeKey, json);
|
76
|
+
|
77
|
+
// check preconditions
|
78
|
+
equals(store.storeKeyEditState(storeKey), SC.Store.INHERITED, 'precond - data edit state');
|
79
|
+
|
80
|
+
testStateTransition(NO);
|
81
|
+
});
|
82
|
+
|
83
|
+
|
84
|
+
notest("state = LOCKED", function() {
|
85
|
+
|
86
|
+
// write in some data to parent
|
87
|
+
parent.writeDataHash(storeKey, json);
|
88
|
+
parent.editables = null ; // manually force to lock state
|
89
|
+
store.readDataHash(storeKey);
|
90
|
+
|
91
|
+
// check preconditions
|
92
|
+
equals(store.storeKeyEditState(storeKey), SC.Store.LOCKED, 'precond - data edit state');
|
93
|
+
ok(!store.chainedChanges || !store.chainedChanges.contains(storeKey), 'locked record should not be in chainedChanges set');
|
94
|
+
|
95
|
+
testStateTransition(NO);
|
96
|
+
});
|
97
|
+
|
98
|
+
notest("state = EDITABLE", function() {
|
99
|
+
|
100
|
+
// write in some data to parent
|
101
|
+
store.writeDataHash(storeKey, json);
|
102
|
+
store.dataHashDidChange(storeKey);
|
103
|
+
|
104
|
+
// check preconditions
|
105
|
+
equals(store.storeKeyEditState(storeKey), SC.Store.EDITABLE, 'precond - data edit state');
|
106
|
+
ok(store.chainedChanges && store.chainedChanges.contains(storeKey), 'editable record should be in chainedChanges set');
|
107
|
+
|
108
|
+
testStateTransition(YES);
|
109
|
+
});
|
110
|
+
|
111
|
+
|
112
|
+
// ..........................................................
|
113
|
+
// SPECIAL CASES
|
114
|
+
//
|
115
|
+
|
116
|
+
// TODO: Add more special cases for SC.NestedStore#commitChanges
|
@@ -0,0 +1,135 @@
|
|
1
|
+
// ==========================================================================
|
2
|
+
// Project: SproutCore - JavaScript Application Framework
|
3
|
+
// Copyright: ©2006-2009 Apple, Inc. and contributors.
|
4
|
+
// License: Licened under MIT license (see license.js)
|
5
|
+
// ==========================================================================
|
6
|
+
/*globals module ok equals same test MyApp */
|
7
|
+
|
8
|
+
var parent, store, child, storeKey, json;
|
9
|
+
module("SC.NestedStore#commitChangesFromNestedStore", {
|
10
|
+
setup: function() {
|
11
|
+
parent = SC.Store.create();
|
12
|
+
|
13
|
+
json = {
|
14
|
+
string: "string",
|
15
|
+
number: 23,
|
16
|
+
bool: YES
|
17
|
+
};
|
18
|
+
|
19
|
+
storeKey = SC.Store.generateStoreKey();
|
20
|
+
|
21
|
+
store = parent.chain();
|
22
|
+
child = store.chain(); // test multiple levels deep
|
23
|
+
|
24
|
+
// wirte basic status
|
25
|
+
child.writeDataHash(storeKey, json, SC.Record.READY_DIRTY);
|
26
|
+
child.dataHashDidChange(storeKey);
|
27
|
+
child.changelog = SC.Set.create();
|
28
|
+
child.changelog.add(storeKey);
|
29
|
+
}
|
30
|
+
});
|
31
|
+
|
32
|
+
notest("copies changed data hashes, statuses, and revisions", function() {
|
33
|
+
|
34
|
+
// verify preconditions
|
35
|
+
equals(store.readDataHash(storeKey), null, 'precond - should not have data yet');
|
36
|
+
ok(child.chainedChanges.contains(storeKey), 'precond - child changes should include storeKey');
|
37
|
+
|
38
|
+
// perform action
|
39
|
+
equals(store.commitChangesFromNestedStore(child, child.chainedChanges, NO), store, 'should return receiver');
|
40
|
+
|
41
|
+
// verify new status
|
42
|
+
equals(store.readDataHash(storeKey), json, 'now should have json');
|
43
|
+
equals(store.readStatus(storeKey), SC.Record.READY_DIRTY, 'now should have status');
|
44
|
+
equals(store.revisions[storeKey], child.revisions[storeKey], 'now shoulave have revision from child');
|
45
|
+
|
46
|
+
});
|
47
|
+
|
48
|
+
notest("adds lock on any items not already locked", function() {
|
49
|
+
|
50
|
+
var storeKey2 = SC.Store.generateStoreKey();
|
51
|
+
var json2 = { kind: "json2" };
|
52
|
+
|
53
|
+
// verify preconditions
|
54
|
+
store.readDataHash(storeKey);
|
55
|
+
ok(store.locks[storeKey], 'precond - storeKey should have lock');
|
56
|
+
ok(!store.locks[storeKey2], 'precond - storeKey2 should not have lock');
|
57
|
+
|
58
|
+
// write another record into child store to commit changes.
|
59
|
+
child.writeDataHash(storeKey2, json2, SC.Record.READY_DIRTY);
|
60
|
+
child.dataHashDidChange(storeKey2);
|
61
|
+
|
62
|
+
var changes = child.chainedChanges ;
|
63
|
+
ok(changes.contains(storeKey), 'precond - child.chainedChanges should contain storeKey');
|
64
|
+
ok(changes.contains(storeKey2), 'precond - child.chainedChanges should contain storeKey2');
|
65
|
+
|
66
|
+
// now commit back to parent
|
67
|
+
equals(store.commitChangesFromNestedStore(child, changes, NO), store, 'should return reciever');
|
68
|
+
|
69
|
+
// and verify that both have locks
|
70
|
+
ok(store.locks[storeKey], 'storeKey should have lock after commit (actual: %@)'.fmt(store.locks[storeKey]));
|
71
|
+
ok(store.locks[storeKey2], 'storeKey2 should have lock after commit (actual: %@)'.fmt(store.locks[storeKey2]));
|
72
|
+
|
73
|
+
});
|
74
|
+
|
75
|
+
notest("adds items in chainedChanges to reciever chainedChanges", function() {
|
76
|
+
|
77
|
+
var key1 = SC.Store.generateStoreKey();
|
78
|
+
|
79
|
+
store.dataHashDidChange(key1);
|
80
|
+
|
81
|
+
ok(child.chainedChanges.contains(storeKey), 'precond - child.chainedChanges should contain store key');
|
82
|
+
|
83
|
+
equals(store.commitChangesFromNestedStore(child, child.chainedChanges, NO), store, 'should return receiver');
|
84
|
+
|
85
|
+
// changelog should merge nested store & existing
|
86
|
+
ok(store.chainedChanges.contains(key1), 'chainedChanges should still contain key1');
|
87
|
+
ok(store.chainedChanges.contains(storeKey), 'chainedChanges should also contain storeKey');
|
88
|
+
});
|
89
|
+
|
90
|
+
notest("should set hasChanges to YES if has changes", function() {
|
91
|
+
|
92
|
+
var changes = child.chainedChanges;
|
93
|
+
ok(changes.length>0, 'precond - should have some changes in child');
|
94
|
+
equals(store.get('hasChanges'), NO, 'precond - store should not have changes');
|
95
|
+
|
96
|
+
store.commitChangesFromNestedStore(child, changes, NO);
|
97
|
+
equals(store.get('hasChanges'), YES, 'store should now have changes');
|
98
|
+
});
|
99
|
+
|
100
|
+
notest("should set hasChanges to NO if no changes", function() {
|
101
|
+
|
102
|
+
child = store.chain() ; // get a new child store
|
103
|
+
|
104
|
+
var changes = child.chainedChanges || SC.Set.create();
|
105
|
+
ok(!changes || !changes.length, 'precond - should have not have changes in child');
|
106
|
+
equals(store.get('hasChanges'), NO, 'precond - store should not have changes');
|
107
|
+
|
108
|
+
store.commitChangesFromNestedStore(child, changes, NO);
|
109
|
+
equals(store.get('hasChanges'), NO, 'store should NOT now have changes');
|
110
|
+
});
|
111
|
+
|
112
|
+
// ..........................................................
|
113
|
+
// SPECIAL CASES
|
114
|
+
//
|
115
|
+
|
116
|
+
notest("committing changes should chain back each step", function() {
|
117
|
+
|
118
|
+
// preconditions
|
119
|
+
equals(child.readDataHash(storeKey), json, 'precond - child should have data');
|
120
|
+
equals(store.readDataHash(storeKey), null, 'precond - store should not have data');
|
121
|
+
equals(parent.readDataHash(storeKey), null, 'precond - parent should not have data');
|
122
|
+
|
123
|
+
// do commits
|
124
|
+
child.commitChanges();
|
125
|
+
equals(store.get('hasChanges'), YES, 'store should now have changes');
|
126
|
+
equals(store.readDataHash(storeKey), json, 'store should now have json');
|
127
|
+
|
128
|
+
store.commitChanges();
|
129
|
+
equals(store.get('hasChanges'), NO, 'store should no longer have changes');
|
130
|
+
equals(parent.readDataHash(storeKey), json, 'parent should now have json');
|
131
|
+
});
|
132
|
+
|
133
|
+
|
134
|
+
|
135
|
+
|
data/frameworks/sproutcore/frameworks/datastore/tests/system/nested_store/dataHashDidChange.js
ADDED
@@ -0,0 +1,110 @@
|
|
1
|
+
// ==========================================================================
|
2
|
+
// Project: SproutCore - JavaScript Application Framework
|
3
|
+
// Copyright: ©2006-2009 Apple, Inc. and contributors.
|
4
|
+
// License: Licened under MIT license (see license.js)
|
5
|
+
// ==========================================================================
|
6
|
+
/*globals module ok equals same test MyApp */
|
7
|
+
|
8
|
+
// NOTE: The test below are based on the Data Hashes state chart. This models
|
9
|
+
// the "did_change" event in the NestedStore portion of the diagram.
|
10
|
+
|
11
|
+
var parent, store, child, storeKey, json;
|
12
|
+
module("SC.NestedStore#dataHashDidChange", {
|
13
|
+
setup: function() {
|
14
|
+
parent = SC.Store.create();
|
15
|
+
|
16
|
+
json = {
|
17
|
+
string: "string",
|
18
|
+
number: 23,
|
19
|
+
bool: YES
|
20
|
+
};
|
21
|
+
|
22
|
+
storeKey = SC.Store.generateStoreKey();
|
23
|
+
|
24
|
+
parent.writeDataHash(storeKey, json, SC.Record.READY_CLEAN);
|
25
|
+
parent.editables = null; // manually patch to setup test state
|
26
|
+
|
27
|
+
store = parent.chain(); // create nested store
|
28
|
+
child = store.chain(); // test multiple levels deep
|
29
|
+
}
|
30
|
+
});
|
31
|
+
|
32
|
+
// ..........................................................
|
33
|
+
// BASIC STATE TRANSITIONS
|
34
|
+
//
|
35
|
+
|
36
|
+
|
37
|
+
function testStateTransition(fromState, toState) {
|
38
|
+
|
39
|
+
// verify preconditions
|
40
|
+
equals(store.get('hasChanges'), NO, 'should not have changes');
|
41
|
+
equals(store.storeKeyEditState(storeKey), fromState, 'precond - storeKey edit state');
|
42
|
+
if (store.chainedChanges) {
|
43
|
+
ok(!store.chainedChanges.contains(storeKey), 'changedChanges should NOT include storeKey');
|
44
|
+
}
|
45
|
+
|
46
|
+
var oldrev = store.revisions[storeKey];
|
47
|
+
|
48
|
+
// perform action
|
49
|
+
equals(store.dataHashDidChange(storeKey), store, 'should return receiver');
|
50
|
+
|
51
|
+
// verify results
|
52
|
+
equals(store.storeKeyEditState(storeKey), toState, 'store key edit state is in same state');
|
53
|
+
|
54
|
+
// verify revision
|
55
|
+
ok(oldrev !== store.revisions[storeKey], 'revisions should change. was: %@ - now: %@'.fmt(oldrev, store.revisions[storeKey]));
|
56
|
+
ok(store.chainedChanges.contains(storeKey), 'changedChanges should now include storeKey');
|
57
|
+
|
58
|
+
equals(store.get('hasChanges'), YES, 'should have changes');
|
59
|
+
}
|
60
|
+
|
61
|
+
notest("edit state = INHERITED, parent editable = NO", function() {
|
62
|
+
|
63
|
+
// verify preconditions
|
64
|
+
equals(parent.storeKeyEditState(storeKey), SC.Store.LOCKED, 'precond - parent store edit state is not EDITABLE');
|
65
|
+
|
66
|
+
testStateTransition(SC.Store.INHERITED, SC.Store.LOCKED);
|
67
|
+
}) ;
|
68
|
+
|
69
|
+
notest("edit state = INHERITED, parent editable = YES", function() {
|
70
|
+
|
71
|
+
// verify preconditions
|
72
|
+
parent.readEditableDataHash(storeKey);
|
73
|
+
equals(parent.storeKeyEditState(storeKey), SC.Store.EDITABLE, 'precond - parent store edit state is EDITABLE');
|
74
|
+
|
75
|
+
testStateTransition(SC.Store.INHERITED, SC.Store.EDITABLE);
|
76
|
+
}) ;
|
77
|
+
|
78
|
+
notest("edit state = LOCKED", function() {
|
79
|
+
store.readDataHash(storeKey); // lock
|
80
|
+
testStateTransition(SC.Store.LOCKED, SC.Store.LOCKED);
|
81
|
+
}) ;
|
82
|
+
|
83
|
+
notest("edit state = EDITABLE", function() {
|
84
|
+
store.readEditableDataHash(storeKey); // make editable
|
85
|
+
testStateTransition(SC.Store.EDITABLE, SC.Store.EDITABLE);
|
86
|
+
}) ;
|
87
|
+
|
88
|
+
// ..........................................................
|
89
|
+
// SPECIAL CASES
|
90
|
+
//
|
91
|
+
|
92
|
+
notest("calling with array of storeKeys will edit all store keys", function() {
|
93
|
+
|
94
|
+
var storeKeys = [storeKey, SC.Store.generateStoreKey()], idx ;
|
95
|
+
store.dataHashDidChange(storeKeys, 2000) ;
|
96
|
+
for(idx=0;idx<storeKeys.length;idx++) {
|
97
|
+
equals(store.revisions[storeKeys[idx]], 2000, 'storeKey at index %@ should have new revision'.fmt(idx));
|
98
|
+
ok(store.chainedChanges.contains(storeKeys[idx]), 'chainedChanges should include storeKey at index %@'.fmt(idx));
|
99
|
+
}
|
100
|
+
});
|
101
|
+
|
102
|
+
notest("marking change should update revision but leave lock alone", function() {
|
103
|
+
parent.dataHashDidChange(storeKey); // make sure parent has a revision
|
104
|
+
store.readDataHash(storeKey); // cause a lock
|
105
|
+
store.dataHashDidChange(storeKey); // update revision
|
106
|
+
|
107
|
+
equals(store.locks[storeKey], parent.revisions[storeKey], 'lock should have parent revision');
|
108
|
+
ok(store.revisions[storeKey] !== parent.revisions[storeKey], 'revision should not match parent rev');
|
109
|
+
});
|
110
|
+
|