luca 0.9.9 → 0.9.42
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/CHANGELOG +9 -153
- data/Gemfile +1 -10
- data/Gemfile.lock +40 -113
- data/Guardfile +25 -3
- data/README.md +57 -54
- data/ROADMAP +32 -15
- data/Rakefile +75 -24
- data/app.rb +46 -12
- data/{app/assets → assets}/images/glyphicons-halflings-white.png +0 -0
- data/{app/assets → assets}/images/glyphicons-halflings.png +0 -0
- data/assets/javascripts/dependencies/backbone-min.js +37 -0
- data/assets/javascripts/dependencies/backbone-query.min.js +1 -0
- data/assets/javascripts/dependencies/bootstrap.min.js +7 -0
- data/{vendor/assets/javascripts → assets/javascripts/dependencies}/codemirror-coffeescript.js +0 -0
- data/{vendor/assets/javascripts → assets/javascripts/dependencies}/codemirror-css.js +0 -0
- data/{vendor/assets/javascripts → assets/javascripts/dependencies}/codemirror-html.js +0 -0
- data/{vendor/assets/javascripts → assets/javascripts/dependencies}/codemirror-javascript.js +0 -0
- data/{vendor/assets/javascripts → assets/javascripts/dependencies}/codemirror-less.js +0 -0
- data/{vendor/assets/javascripts → assets/javascripts/dependencies}/codemirror-vim.js +0 -0
- data/{vendor/assets/javascripts → assets/javascripts/dependencies}/codemirror.js +0 -0
- data/assets/javascripts/dependencies/coffee-script.js +12189 -0
- data/{spec → assets}/javascripts/dependencies/jasmine-html.js +0 -0
- data/{spec → assets}/javascripts/dependencies/jasmine.js +0 -0
- data/assets/javascripts/dependencies/jquery.js +4 -0
- data/{vendor/assets/javascripts → assets/javascripts/dependencies}/modal.js +0 -0
- data/{vendor/assets/javascripts → assets/javascripts/dependencies}/modernizr.min.js +0 -0
- data/{vendor/assets/javascripts → assets/javascripts/dependencies}/prettify.js +0 -0
- data/{spec → assets}/javascripts/dependencies/sinon.js +0 -0
- data/{vendor/assets/javascripts → assets/javascripts/dependencies}/spin-min.js +0 -0
- data/assets/javascripts/dependencies/underscore-min.js +31 -0
- data/assets/javascripts/dependencies/underscore-string.min.js +14 -0
- data/assets/javascripts/dependencies.coffee +5 -0
- data/assets/javascripts/luca/index.coffee +1 -0
- data/assets/javascripts/luca-templates.js +1 -0
- data/assets/javascripts/luca-ui-base.coffee +1 -0
- data/assets/javascripts/luca-ui-bootstrap.js +1 -0
- data/assets/javascripts/luca-ui-development-tools.coffee +9 -0
- data/assets/javascripts/luca-ui-full.js +3 -0
- data/assets/javascripts/luca-ui-spec.coffee +2 -0
- data/assets/javascripts/luca-ui.js +3 -0
- data/assets/javascripts/sandbox/application.coffee +57 -0
- data/assets/javascripts/sandbox/config.coffee +7 -0
- data/assets/javascripts/sandbox/router.coffee +24 -0
- data/assets/javascripts/sandbox/templates/builder/component_list.luca +1 -0
- data/assets/javascripts/sandbox/templates/builder.luca +2 -0
- data/assets/javascripts/sandbox/templates/main.luca +53 -0
- data/assets/javascripts/sandbox/templates/sandbox/docs_index.luca +1 -0
- data/assets/javascripts/sandbox/templates/sandbox/navigation.luca +8 -0
- data/assets/javascripts/sandbox/templates/sandbox/readme.luca +30 -0
- data/assets/javascripts/sandbox/templates/sandbox.luca +1 -0
- data/assets/javascripts/sandbox/views/builder/builder_canvas.coffee +3 -0
- data/assets/javascripts/sandbox/views/builder/builder_editor.coffee +6 -0
- data/assets/javascripts/sandbox/views/builder/component_list.coffee +38 -0
- data/assets/javascripts/sandbox/views/builder/project_browser.coffee +14 -0
- data/assets/javascripts/sandbox/views/builder.coffee +133 -0
- data/assets/javascripts/sandbox/views/docs_controller.coffee +7 -0
- data/assets/javascripts/sandbox/views/inspector/instance_filter.coffee +18 -0
- data/{app/assets/stylesheets/luca/containers/modal_view.scss → assets/javascripts/sandbox/views/inspector/instance_list.coffee} +0 -0
- data/assets/javascripts/sandbox/views/inspector.coffee +11 -0
- data/assets/javascripts/sandbox/views/top_navigation.coffee +4 -0
- data/assets/javascripts/sandbox.coffee +7 -0
- data/assets/javascripts/spec-dependencies.coffee +4 -0
- data/assets/stylesheets/bootstrap-responsive.min.css +2 -0
- data/assets/stylesheets/bootstrap.min.css +727 -0
- data/{vendor/assets → assets}/stylesheets/codemirror-blackboard.css +0 -0
- data/{vendor/assets → assets}/stylesheets/codemirror-monokai.css +0 -0
- data/{vendor/assets → assets}/stylesheets/codemirror.css +0 -0
- data/{vendor/assets → assets}/stylesheets/jasmine.css +0 -0
- data/assets/stylesheets/luca-ui-bootstrap.css +4 -0
- data/assets/stylesheets/luca-ui-development-tools.css +5 -0
- data/assets/stylesheets/luca-ui-full.css +3 -0
- data/assets/stylesheets/luca-ui-spec.css +3 -0
- data/assets/stylesheets/luca-ui.css +3 -0
- data/assets/stylesheets/prettify.css +40 -0
- data/assets/stylesheets/sandbox/builder.scss +79 -0
- data/assets/stylesheets/sandbox/sandbox.scss +18 -0
- data/assets/stylesheets/sandbox.css +3 -0
- data/assets/stylesheets/themes/amelia-bootstrap.css +826 -0
- data/assets/stylesheets/themes/slate-bootstrap.css +797 -0
- data/assets/stylesheets/themes/superhero-bootstrap.css +830 -0
- data/config.ru +2 -1
- data/docs/{old/application.md → application.md} +0 -0
- data/docs/{old/collection.md → collection.md} +0 -0
- data/docs/{old/collection_manager.md → collection_manager.md} +0 -0
- data/docs/{old/container_philosophy.md → container_philosophy.md} +0 -0
- data/docs/{old/event_binding_helpers.md → event_binding_helpers.md} +0 -0
- data/docs/{old/method_caching_and_computed_properties.md → method_caching_and_computed_properties.md} +0 -0
- data/docs/{old/view.md → view.md} +0 -0
- data/lib/luca/code_browser.rb +55 -0
- data/lib/luca/command_line.rb +69 -0
- data/lib/luca/rails/engine.rb +0 -12
- data/lib/luca/rails/version.rb +2 -1
- data/lib/luca/rails.rb +3 -5
- data/lib/luca/template.rb +0 -2
- data/lib/luca.rb +1 -25
- data/luca.gemspec +7 -16
- data/site/assets/bootstrap.min.js +7 -0
- data/site/assets/dependencies.js +94 -0
- data/site/assets/glyphicons-halflings-white.png +0 -0
- data/site/assets/glyphicons-halflings.png +0 -0
- data/site/assets/luca-ui-bootstrap.css +1331 -0
- data/site/assets/luca-ui-bootstrap.js +9 -0
- data/site/assets/luca-ui-development-tools.css +234 -0
- data/site/assets/luca-ui-development-tools.js +18561 -0
- data/site/assets/luca-ui-development-tools.min.js +15 -0
- data/site/assets/luca-ui-full.min.js +8 -0
- data/site/assets/luca-ui.min.js +4 -0
- data/site/assets/sandbox.css +62 -0
- data/site/assets/sandbox.js +469 -0
- data/site/docs/application.html +41 -0
- data/site/docs/caching.html +43 -0
- data/site/docs/collection.html +75 -0
- data/site/docs/collection_manager.html +71 -0
- data/site/docs/containers.html +118 -0
- data/site/docs/events.html +153 -0
- data/site/docs/view.html +128 -0
- data/site/img/glyphicons-halflings-white.png +0 -0
- data/site/img/glyphicons-halflings.png +0 -0
- data/site/index.html +20 -0
- data/site/source-map.js +1 -0
- data/spec/{javascripts/components → components}/application_spec.coffee +0 -0
- data/spec/{javascripts/components → components}/collection_loader_view_spec.coffee +0 -0
- data/{site/source/app/assets/javascripts/docs/lib/util.coffee → spec/components/controller_spec.coffee} +0 -0
- data/spec/{javascripts/components → components}/fields/checkbox_array_spec.coffee +0 -0
- data/spec/components/form_view_spec.coffee +80 -0
- data/spec/{javascripts/components → components}/grid_view_spec.coffee +0 -0
- data/spec/{javascripts/components → components}/record_manager_spec.coffee +0 -0
- data/spec/{javascripts/components → components}/template_spec.coffee +0 -0
- data/spec/containers/card_view_spec.coffee +50 -0
- data/{site/source/app/assets/javascripts/docs/views/components/code_editor/index.coffee → spec/containers/column_view_spec.coffee} +0 -0
- data/spec/{javascripts/containers → containers}/modal_view_spec.coffee +0 -0
- data/spec/{javascripts/containers → containers}/panel_view_spec.coffee +0 -0
- data/spec/{javascripts/components/pagination_control_spec.coffee → containers/split_view_spec.coffee} +0 -0
- data/spec/{javascripts/containers → containers}/tab_view_spec.coffee +0 -0
- data/spec/{javascripts/containers → containers}/viewport_spec.coffee +0 -0
- data/spec/{javascripts/core → core}/collection_spec.coffee +1 -26
- data/spec/core/container_spec.coffee +66 -0
- data/spec/{javascripts/concerns/paginatable_spec.coffee → core/field_spec.coffee} +0 -0
- data/spec/{javascripts/core → core}/model_spec.coffee +3 -26
- data/spec/{javascripts/core → core}/observer_spec.coffee +0 -0
- data/spec/{javascripts/core → core}/view_spec.coffee +38 -114
- data/spec/{javascripts/core/framework_spec.coffee → framework_spec.coffee} +2 -31
- data/spec/{javascripts/helper.coffee → helper.coffee} +0 -0
- data/spec/{javascripts/managers → managers}/collection_manager_spec.coffee +0 -0
- data/spec/{javascripts/managers → managers}/socket_manager_spec.coffee +0 -0
- data/src/components/application.coffee +318 -0
- data/src/components/base_toolbar.coffee +15 -0
- data/{app/assets/javascripts/luca → src}/components/collection_loader_view.coffee +1 -3
- data/src/components/collection_view.coffee +131 -0
- data/src/components/controller.coffee +63 -0
- data/src/components/fields/button_field.coffee +38 -0
- data/{app/assets/javascripts/luca → src}/components/fields/checkbox_array.coffee +7 -18
- data/{app/assets/javascripts/luca → src}/components/fields/checkbox_field.coffee +10 -19
- data/{app/assets/javascripts/luca → src}/components/fields/file_upload_field.coffee +4 -5
- data/src/components/fields/hidden_field.coffee +12 -0
- data/src/components/fields/label_field.coffee +14 -0
- data/src/components/fields/select_field.coffee +97 -0
- data/src/components/fields/text_area_field.coffee +40 -0
- data/{app/assets/javascripts/luca → src}/components/fields/text_field.coffee +5 -16
- data/src/components/fields/type_ahead_field.coffee +22 -0
- data/src/components/form_button_toolbar.coffee +25 -0
- data/src/components/form_view.coffee +275 -0
- data/src/components/grid_view.coffee +269 -0
- data/src/components/index.coffee +1 -0
- data/src/components/load_mask.coffee +3 -0
- data/src/components/nav_bar.coffee +22 -0
- data/src/components/page_controller.coffee +2 -0
- data/{app/assets/javascripts/luca → src}/components/record_manager.coffee +0 -0
- data/{app/assets/javascripts/luca → src}/components/router.coffee +1 -6
- data/src/components/table_view.coffee +53 -0
- data/src/components/template.coffee +5 -0
- data/src/components/toolbar_dialog.coffee +25 -0
- data/src/containers/card_view.coffee +93 -0
- data/src/containers/column_view.coffee +42 -0
- data/{app/assets/javascripts/luca → src}/containers/modal_view.coffee +9 -9
- data/src/containers/page_view.coffee +2 -0
- data/{app/assets/javascripts/luca → src}/containers/panel_toolbar.coffee +84 -89
- data/src/containers/panel_view.coffee +23 -0
- data/src/containers/split_view.coffee +8 -0
- data/{app/assets/javascripts/luca → src}/containers/tab_view.coffee +21 -27
- data/{app/assets/javascripts/luca → src}/containers/viewport.coffee +18 -14
- data/{app/assets/javascripts/luca → src}/core/collection.coffee +51 -97
- data/src/core/container.coffee +374 -0
- data/{tutorials/component-definitions.md → src/core/core.coffee} +0 -0
- data/src/core/field.coffee +79 -0
- data/src/core/model.coffee +43 -0
- data/{app/assets/javascripts/luca → src}/core/observer.coffee +0 -0
- data/src/core/panel.coffee +118 -0
- data/{app/assets/javascripts/luca/core/registry → src/core}/registry.coffee +43 -63
- data/{app/assets/javascripts/luca/util → src/core}/script_loader.coffee +0 -0
- data/src/core/view.coffee +264 -0
- data/src/define.coffee +110 -0
- data/{app/assets/javascripts/luca → src}/framework.coffee +103 -98
- data/src/index.coffee +23 -0
- data/{app/assets/javascripts/luca → src}/managers/collection_manager.coffee +13 -37
- data/src/managers/socket_manager.coffee +54 -0
- data/{app/assets/javascripts/luca/concerns → src/modules}/deferrable.coffee +4 -5
- data/src/modules/grid_layout.coffee +3 -0
- data/{app/assets/javascripts/luca/concerns/loadmaskable.coffee → src/modules/load_mask.coffee} +11 -23
- data/{app/assets/javascripts/luca/concerns → src/modules}/local_storage.coffee +0 -0
- data/src/plugins/development_tool_helpers.coffee +21 -0
- data/src/plugins/events.coffee +54 -0
- data/src/samples/definition.coffee +49 -0
- data/{tutorials/component-definitions/01_intro.md → src/stylesheets/base.scss} +0 -0
- data/{app/assets/stylesheets/luca → src/stylesheets}/components/checkbox_array.scss +1 -1
- data/src/stylesheets/components/form_view.scss +59 -0
- data/{app/assets/stylesheets/luca → src/stylesheets}/components/grid_view.scss +0 -0
- data/{app/assets/stylesheets/luca → src/stylesheets}/components/load_mask.scss +0 -0
- data/src/stylesheets/components/toolbar.scss +0 -0
- data/{app/assets/stylesheets/luca → src/stylesheets}/components/viewport.scss +4 -1
- data/src/stylesheets/containers/container.scss +16 -0
- data/src/stylesheets/containers/modal_view.scss +0 -0
- data/{app/assets/stylesheets/luca → src/stylesheets}/containers/panels.scss +0 -0
- data/{app/assets/stylesheets/luca → src/stylesheets}/containers/tab_view.scss +5 -5
- data/{app/assets/stylesheets/luca → src/stylesheets}/normalize.scss +0 -0
- data/src/stylesheets/tools/class_browser.scss +32 -0
- data/src/stylesheets/tools/code_editor.scss +24 -0
- data/src/stylesheets/tools/component_tester.scss +26 -0
- data/{app/assets/stylesheets/luca/development → src/stylesheets/tools}/console.scss +0 -0
- data/src/templates/components/bootstrap_form_controls.luca +7 -0
- data/src/templates/components/collection_loader_view.luca +5 -0
- data/src/templates/components/form_alert +0 -0
- data/src/templates/components/form_alert.luca +3 -0
- data/src/templates/components/grid_view.luca +7 -0
- data/src/templates/components/grid_view_empty_text.luca +3 -0
- data/src/templates/components/load_mask.luca +3 -0
- data/src/templates/components/nav_bar.luca +2 -0
- data/src/templates/containers/basic.luca +1 -0
- data/src/templates/containers/tab_selector_container.luca +8 -0
- data/src/templates/containers/tab_view.luca +2 -0
- data/src/templates/containers/toolbar_wrapper.luca +1 -0
- data/src/templates/fields/button_field.luca +2 -0
- data/src/templates/fields/button_field_link.luca +5 -0
- data/src/templates/fields/checkbox_array.luca +4 -0
- data/src/templates/fields/checkbox_array_item.luca +4 -0
- data/src/templates/fields/checkbox_field.luca +9 -0
- data/src/templates/fields/file_upload_field.luca +8 -0
- data/src/templates/fields/hidden_field.luca +1 -0
- data/src/templates/fields/select_field.luca +8 -0
- data/src/templates/fields/text_area_field.luca +8 -0
- data/src/templates/fields/text_field.luca +17 -0
- data/src/templates/sample/contents.luca +1 -0
- data/src/templates/sample/welcome.luca +1 -0
- data/src/templates/table_view.luca +4 -0
- data/src/tools/application_inspector.coffee +2 -0
- data/src/tools/code_editor.coffee +258 -0
- data/{app/assets/javascripts/luca/development → src/tools}/code_mirror_field.coffee +1 -2
- data/src/tools/coffee_script_editor.coffee +82 -0
- data/src/tools/collection_inspector.coffee +4 -0
- data/src/tools/collections/components.coffee +59 -0
- data/src/tools/collections/instances.coffee +15 -0
- data/src/tools/component_tester.coffee +462 -0
- data/{app/assets/javascripts/luca/development → src/tools}/console.coffee +24 -55
- data/src/tools/models/components.coffee +25 -0
- data/src/tools/models/instance.coffee +2 -0
- data/src/tools/templates/component_tester/help.luca +14 -0
- data/{app/assets/javascripts/luca/util/luca.coffee → src/util.coffee} +6 -90
- data/vendor/assets/javascripts/luca-ui-development-tools.js +18533 -0
- data/vendor/assets/javascripts/luca-ui-development-tools.min.js +15 -0
- data/vendor/assets/javascripts/luca-ui-full.js +4806 -0
- data/vendor/assets/javascripts/luca-ui-full.min.js +8 -0
- data/vendor/assets/javascripts/luca-ui-templates.js +24 -0
- data/vendor/assets/javascripts/luca-ui.js +1703 -4394
- data/vendor/assets/javascripts/luca-ui.min.js +4 -5
- data/vendor/assets/luca-ui/base.css +85 -0
- data/vendor/assets/luca-ui/components/application.js +91 -0
- data/vendor/assets/luca-ui/components/base_toolbar.js +23 -0
- data/vendor/assets/luca-ui/components/controller.js +38 -0
- data/vendor/assets/luca-ui/components/fields/button_field.js +45 -0
- data/vendor/assets/luca-ui/components/fields/checkbox_field.js +43 -0
- data/vendor/assets/luca-ui/components/fields/file_upload_field.js +20 -0
- data/vendor/assets/luca-ui/components/fields/hidden_field.js +20 -0
- data/vendor/assets/luca-ui/components/fields/select_field.js +97 -0
- data/vendor/assets/luca-ui/components/fields/text_area_field.js +48 -0
- data/vendor/assets/luca-ui/components/fields/text_field.js +46 -0
- data/vendor/assets/luca-ui/components/fields/type_ahead_field.js +13 -0
- data/vendor/assets/luca-ui/components/form_button_toolbar.js +32 -0
- data/vendor/assets/luca-ui/components/form_view.css +32 -0
- data/vendor/assets/luca-ui/components/form_view.js +207 -0
- data/{app/assets/stylesheets/luca/components/table_view.scss → vendor/assets/luca-ui/components/grid_view.css} +51 -60
- data/vendor/assets/luca-ui/components/grid_view.js +202 -0
- data/vendor/assets/luca-ui/components/record_manager.js +207 -0
- data/vendor/assets/luca-ui/components/router.js +36 -0
- data/vendor/assets/luca-ui/components/template.js +26 -0
- data/vendor/assets/luca-ui/components/toolbar.css +11 -0
- data/vendor/assets/luca-ui/containers/card_view.js +98 -0
- data/vendor/assets/luca-ui/containers/column_view.js +52 -0
- data/vendor/assets/luca-ui/containers/container.css +3 -0
- data/vendor/assets/luca-ui/containers/modal_view.css +0 -0
- data/vendor/assets/luca-ui/containers/modal_view.js +87 -0
- data/vendor/assets/luca-ui/containers/panel_view.js +34 -0
- data/vendor/assets/luca-ui/containers/split_view.js +13 -0
- data/vendor/assets/luca-ui/containers/tab_view.css +16 -0
- data/vendor/assets/luca-ui/containers/tab_view.js +80 -0
- data/vendor/assets/luca-ui/containers/viewport.js +18 -0
- data/vendor/assets/luca-ui/core/collection.js +221 -0
- data/vendor/assets/luca-ui/core/container.js +205 -0
- data/vendor/assets/luca-ui/core/field.js +59 -0
- data/vendor/assets/luca-ui/core/observer.js +42 -0
- data/vendor/assets/luca-ui/core/view.js +127 -0
- data/vendor/assets/luca-ui/framework.js +110 -0
- data/vendor/assets/luca-ui/index.js +5 -0
- data/vendor/assets/luca-ui/managers/collection_manager.js +98 -0
- data/vendor/assets/luca-ui/managers/socket_manager.js +52 -0
- data/vendor/assets/luca-ui/modules/deferrable.js +21 -0
- data/vendor/assets/luca-ui/modules/local_storage.js +81 -0
- data/vendor/assets/luca-ui/normalize.css +359 -0
- data/vendor/assets/luca-ui/stylesheets/base.css +85 -0
- data/vendor/assets/luca-ui/stylesheets/components/form_view.css +32 -0
- data/vendor/assets/luca-ui/stylesheets/components/grid_view.css +76 -0
- data/vendor/assets/luca-ui/stylesheets/components/toolbar.css +11 -0
- data/vendor/assets/luca-ui/stylesheets/containers/container.css +3 -0
- data/vendor/assets/luca-ui/stylesheets/containers/modal_view.css +0 -0
- data/vendor/assets/luca-ui/stylesheets/containers/tab_view.css +16 -0
- data/vendor/assets/luca-ui/stylesheets/normalize.css +359 -0
- data/vendor/assets/luca-ui/templates/components/bootstrap_form_controls.js +4 -0
- data/vendor/assets/luca-ui/templates/components/form_view.js +4 -0
- data/vendor/assets/luca-ui/templates/components/grid_view.js +4 -0
- data/vendor/assets/luca-ui/templates/components/grid_view_empty_text.js +4 -0
- data/vendor/assets/luca-ui/templates/containers/basic.js +4 -0
- data/vendor/assets/luca-ui/templates/containers/tab_selector_container.js +4 -0
- data/vendor/assets/luca-ui/templates/containers/tab_view.js +4 -0
- data/vendor/assets/luca-ui/templates/containers/toolbar_wrapper.js +4 -0
- data/vendor/assets/luca-ui/templates/fields/button_field.js +4 -0
- data/vendor/assets/luca-ui/templates/fields/button_field_link.js +4 -0
- data/vendor/assets/luca-ui/templates/fields/checkbox_field.js +4 -0
- data/vendor/assets/luca-ui/templates/fields/file_upload_field.js +4 -0
- data/vendor/assets/luca-ui/templates/fields/hidden_field.js +4 -0
- data/vendor/assets/luca-ui/templates/fields/select_field.js +4 -0
- data/vendor/assets/luca-ui/templates/fields/text_area_field.js +4 -0
- data/vendor/assets/luca-ui/templates/fields/text_field.js +4 -0
- data/vendor/assets/luca-ui/templates/sample/contents.js +4 -0
- data/vendor/assets/luca-ui/templates/sample/welcome.js +4 -0
- data/vendor/assets/stylesheets/luca-ui.css +471 -68
- data/views/jasmine.erb +2 -2
- metadata +328 -496
- data/app/assets/javascripts/luca/basic.coffee +0 -8
- data/app/assets/javascripts/luca/components/application.coffee +0 -530
- data/app/assets/javascripts/luca/components/collection_view.coffee +0 -211
- data/app/assets/javascripts/luca/components/controller.coffee +0 -176
- data/app/assets/javascripts/luca/components/fields/base.coffee +0 -144
- data/app/assets/javascripts/luca/components/fields/button_field.coffee +0 -91
- data/app/assets/javascripts/luca/components/fields/hidden_field.coffee +0 -11
- data/app/assets/javascripts/luca/components/fields/label_field.coffee +0 -12
- data/app/assets/javascripts/luca/components/fields/select_field.coffee +0 -159
- data/app/assets/javascripts/luca/components/fields/text_area_field.coffee +0 -57
- data/app/assets/javascripts/luca/components/fields/type_ahead_field.coffee +0 -20
- data/app/assets/javascripts/luca/components/form_view.coffee +0 -421
- data/app/assets/javascripts/luca/components/grid_layout_view.coffee +0 -42
- data/app/assets/javascripts/luca/components/index.coffee +0 -7
- data/app/assets/javascripts/luca/components/load_mask.coffee +0 -8
- data/app/assets/javascripts/luca/components/multi_collection_view.coffee +0 -92
- data/app/assets/javascripts/luca/components/nav_bar.coffee +0 -80
- data/app/assets/javascripts/luca/components/page.coffee +0 -70
- data/app/assets/javascripts/luca/components/pagination_control.coffee +0 -104
- data/app/assets/javascripts/luca/components/simple_collection_view.coffee +0 -10
- data/app/assets/javascripts/luca/components/table_view.coffee +0 -93
- data/app/assets/javascripts/luca/components/table_view_scrollable.coffee +0 -23
- data/app/assets/javascripts/luca/concerns/application_event_bindings.coffee +0 -19
- data/app/assets/javascripts/luca/concerns/collection_event_bindings.coffee +0 -47
- data/app/assets/javascripts/luca/concerns/development_tool_helpers.coffee +0 -30
- data/app/assets/javascripts/luca/concerns/dom_helpers.coffee +0 -61
- data/app/assets/javascripts/luca/concerns/enhanced_properties.coffee +0 -23
- data/app/assets/javascripts/luca/concerns/filterable.coffee +0 -101
- data/app/assets/javascripts/luca/concerns/form_model_bindings.coffee +0 -20
- data/app/assets/javascripts/luca/concerns/grid_layout.coffee +0 -15
- data/app/assets/javascripts/luca/concerns/modal_view.coffee +0 -63
- data/app/assets/javascripts/luca/concerns/model_presenter.coffee +0 -23
- data/app/assets/javascripts/luca/concerns/paginatable.coffee +0 -79
- data/app/assets/javascripts/luca/concerns/query_collection_bindings.coffee +0 -52
- data/app/assets/javascripts/luca/concerns/sortable.coffee +0 -69
- data/app/assets/javascripts/luca/concerns/state_model.coffee +0 -58
- data/app/assets/javascripts/luca/concerns/templating.coffee +0 -13
- data/app/assets/javascripts/luca/config.coffee +0 -54
- data/app/assets/javascripts/luca/containers/card_view.coffee +0 -178
- data/app/assets/javascripts/luca/containers/container.coffee +0 -711
- data/app/assets/javascripts/luca/containers/index.coffee +0 -2
- data/app/assets/javascripts/luca/containers/page_controller.coffee +0 -25
- data/app/assets/javascripts/luca/core/events.coffee +0 -114
- data/app/assets/javascripts/luca/core/index.coffee +0 -12
- data/app/assets/javascripts/luca/core/model.coffee +0 -56
- data/app/assets/javascripts/luca/core/panel.coffee +0 -124
- data/app/assets/javascripts/luca/core/registry/component_definition.coffee +0 -319
- data/app/assets/javascripts/luca/core/registry/concerns.coffee +0 -70
- data/app/assets/javascripts/luca/core/registry/index.coffee +0 -4
- data/app/assets/javascripts/luca/core/registry/meta_data.coffee +0 -99
- data/app/assets/javascripts/luca/core/templates.coffee +0 -51
- data/app/assets/javascripts/luca/core/view.coffee +0 -383
- data/app/assets/javascripts/luca/dependencies.coffee +0 -9
- data/app/assets/javascripts/luca/development/code_sync_manager.coffee +0 -173
- data/app/assets/javascripts/luca/development/component.coffee +0 -76
- data/app/assets/javascripts/luca/development/components.coffee +0 -57
- data/app/assets/javascripts/luca/development/index.coffee +0 -5
- data/app/assets/javascripts/luca/index.coffee +0 -9
- data/app/assets/javascripts/luca/managers/index.coffee +0 -2
- data/app/assets/javascripts/luca/managers/socket_manager.coffee +0 -89
- data/app/assets/javascripts/luca/templates/components/bootstrap_form_controls.jst.ejs +0 -10
- data/app/assets/javascripts/luca/templates/components/collection_loader_view.jst.ejs +0 -6
- data/app/assets/javascripts/luca/templates/components/form_alert.jst.ejs +0 -4
- data/app/assets/javascripts/luca/templates/components/grid_view.jst.ejs +0 -11
- data/app/assets/javascripts/luca/templates/components/grid_view_empty_text.jst.ejs +0 -3
- data/app/assets/javascripts/luca/templates/components/load_mask.jst.ejs +0 -5
- data/app/assets/javascripts/luca/templates/components/nav_bar.jst.ejs +0 -19
- data/app/assets/javascripts/luca/templates/components/pagination.jst.ejs +0 -10
- data/app/assets/javascripts/luca/templates/components/table_view.jst.ejs +0 -4
- data/app/assets/javascripts/luca/templates/containers/basic.jst.ejs +0 -1
- data/app/assets/javascripts/luca/templates/containers/tab_selector_container.jst.ejs +0 -12
- data/app/assets/javascripts/luca/templates/containers/tab_view.jst.ejs +0 -2
- data/app/assets/javascripts/luca/templates/containers/toolbar_wrapper.jst.ejs +0 -1
- data/app/assets/javascripts/luca/templates/fields/button_field.jst.ejs +0 -2
- data/app/assets/javascripts/luca/templates/fields/button_field_link.jst.ejs +0 -6
- data/app/assets/javascripts/luca/templates/fields/checkbox_array.jst.ejs +0 -4
- data/app/assets/javascripts/luca/templates/fields/checkbox_array_item.jst.ejs +0 -3
- data/app/assets/javascripts/luca/templates/fields/checkbox_field.jst.ejs +0 -10
- data/app/assets/javascripts/luca/templates/fields/file_upload_field.jst.ejs +0 -10
- data/app/assets/javascripts/luca/templates/fields/hidden_field.jst.ejs +0 -1
- data/app/assets/javascripts/luca/templates/fields/select_field.jst.ejs +0 -11
- data/app/assets/javascripts/luca/templates/fields/text_area_field.jst.ejs +0 -11
- data/app/assets/javascripts/luca/templates/fields/text_field.jst.ejs +0 -16
- data/app/assets/javascripts/luca/util/deprecations.coffee +0 -18
- data/app/assets/javascripts/luca/util/index.coffee +0 -4
- data/app/assets/javascripts/luca/util/keybindings.coffee +0 -24
- data/app/assets/javascripts/luca/util/logging.coffee +0 -30
- data/app/assets/javascripts/luca-ui.js +0 -1
- data/app/assets/stylesheets/luca/components/form_view.scss +0 -7
- data/app/assets/stylesheets/luca/containers/container.scss +0 -19
- data/app/assets/stylesheets/luca/development/index.css +0 -3
- data/app/assets/stylesheets/luca/index.css +0 -4
- data/bin/luca +0 -14
- data/docs/framework.json +0 -1
- data/docs/luca-framework-documentation.js +0 -1
- data/lib/generators/luca/application/application_generator.rb +0 -75
- data/lib/generators/luca/application/templates/controller.rb +0 -4
- data/lib/generators/luca/application/templates/index.html.erb +0 -19
- data/lib/generators/luca/application/templates/index.html.haml +0 -7
- data/lib/generators/luca/application/templates/javascripts/application.coffee +0 -18
- data/lib/generators/luca/application/templates/javascripts/collection_manager.coffee +0 -2
- data/lib/generators/luca/application/templates/javascripts/config.coffee +0 -3
- data/lib/generators/luca/application/templates/javascripts/dependencies.coffee +0 -3
- data/lib/generators/luca/application/templates/javascripts/home.jst.ejs +0 -2
- data/lib/generators/luca/application/templates/javascripts/index.coffee +0 -15
- data/lib/generators/luca/application/templates/javascripts/router.coffee +0 -4
- data/lib/guard/luca.rb +0 -84
- data/lib/luca/asset_compiler.rb +0 -117
- data/lib/luca/cli/generate.rb +0 -37
- data/lib/luca/cli/server.rb +0 -20
- data/lib/luca/cli/sync.rb +0 -40
- data/lib/luca/cli/watch.rb +0 -16
- data/lib/luca/cli.rb +0 -68
- data/lib/luca/collection/endpoint.rb +0 -38
- data/lib/luca/collection/file_backend.rb +0 -121
- data/lib/luca/collection/redis_backend.rb +0 -153
- data/lib/luca/collection.rb +0 -64
- data/lib/luca/compiled_asset.rb +0 -61
- data/lib/luca/component_definition.rb +0 -356
- data/lib/luca/luca_application.rb +0 -258
- data/lib/luca/project.rb +0 -73
- data/lib/luca/project_harness.rb +0 -96
- data/lib/luca/server.rb +0 -7
- data/lib/luca/stylesheet.rb +0 -35
- data/lib/luca/template_asset.rb +0 -64
- data/lib/luca/version.rb +0 -3
- data/lib/luca/watcher.rb +0 -72
- data/lib/railties/luca/tasks.rake +0 -38
- data/site/.bundle/config +0 -2
- data/site/.gitignore +0 -5
- data/site/.rvmrc +0 -1
- data/site/CHANGELOG.md +0 -41
- data/site/DOCS.md +0 -41
- data/site/Gemfile +0 -8
- data/site/Gemfile.lock +0 -134
- data/site/LICENSE.md +0 -19
- data/site/config.rb +0 -84
- data/site/helpers/site_helpers.rb +0 -20
- data/site/html5bp-docs/README.md +0 -38
- data/site/html5bp-docs/contribute.md +0 -104
- data/site/html5bp-docs/crossdomain.md +0 -21
- data/site/html5bp-docs/css.md +0 -135
- data/site/html5bp-docs/extend.md +0 -507
- data/site/html5bp-docs/faq.md +0 -77
- data/site/html5bp-docs/htaccess.md +0 -323
- data/site/html5bp-docs/html.md +0 -170
- data/site/html5bp-docs/js.md +0 -31
- data/site/html5bp-docs/misc.md +0 -25
- data/site/html5bp-docs/usage.md +0 -109
- data/site/readme.md +0 -47
- data/site/source/.htaccess +0 -540
- data/site/source/404.html +0 -157
- data/site/source/app/assets/javascripts/dependencies.js.coffee +0 -6
- data/site/source/app/assets/javascripts/docs/application.coffee +0 -64
- data/site/source/app/assets/javascripts/docs/collections/docs_documentation.coffee +0 -17
- data/site/source/app/assets/javascripts/docs/collections/github_repositories.coffee +0 -7
- data/site/source/app/assets/javascripts/docs/collections/index.coffee +0 -1
- data/site/source/app/assets/javascripts/docs/collections/luca_documentation.coffee +0 -17
- data/site/source/app/assets/javascripts/docs/collections/public_gists.coffee +0 -4
- data/site/source/app/assets/javascripts/docs/config.coffee +0 -5
- data/site/source/app/assets/javascripts/docs/index.coffee +0 -12
- data/site/source/app/assets/javascripts/docs/lib/router.coffee +0 -3
- data/site/source/app/assets/javascripts/docs/models/component.coffee +0 -99
- data/site/source/app/assets/javascripts/docs/models/github_repository.coffee +0 -3
- data/site/source/app/assets/javascripts/docs/models/index.coffee +0 -1
- data/site/source/app/assets/javascripts/docs/templates/component_documentation.jst.ejs +0 -55
- data/site/source/app/assets/javascripts/docs/templates/examples_browser/overview.jst.ejs +0 -4
- data/site/source/app/assets/javascripts/docs/templates/examples_browser/selector.jst.ejs +0 -11
- data/site/source/app/assets/javascripts/docs/templates/github_repository.jst.ejs +0 -4
- data/site/source/app/assets/javascripts/docs/templates/layouts/main.jst.ejs +0 -4
- data/site/source/app/assets/javascripts/docs/templates/left_navigation.jst.ejs +0 -5
- data/site/source/app/assets/javascripts/docs/templates/pages/getting_started.jst.ejs +0 -78
- data/site/source/app/assets/javascripts/docs/templates/pages/home.jst.ejs +0 -57
- data/site/source/app/assets/javascripts/docs/views/components/code_editor.coffee +0 -45
- data/site/source/app/assets/javascripts/docs/views/components/component_documentation.coffee +0 -72
- data/site/source/app/assets/javascripts/docs/views/index.coffee +0 -3
- data/site/source/app/assets/javascripts/docs/views/pages/browse_source/details.coffee +0 -37
- data/site/source/app/assets/javascripts/docs/views/pages/browse_source/list.coffee +0 -31
- data/site/source/app/assets/javascripts/docs/views/pages/browse_source.coffee +0 -46
- data/site/source/app/assets/javascripts/docs/views/pages/component_editor.coffee +0 -10
- data/site/source/app/assets/javascripts/docs/views/pages/examples_browser/docs.coffee +0 -12
- data/site/source/app/assets/javascripts/docs/views/pages/examples_browser/source.coffee +0 -13
- data/site/source/app/assets/javascripts/docs/views/pages/examples_browser.coffee +0 -102
- data/site/source/app/assets/javascripts/docs/views/pages/home.coffee +0 -10
- data/site/source/app/assets/javascripts/docs/views/views/api_browser/index.coffee +0 -43
- data/site/source/app/assets/javascripts/docs/views/views/collection_view_examples/grid_layout_view_example.coffee +0 -14
- data/site/source/app/assets/javascripts/docs/views/views/collection_view_examples/table_view_example.coffee +0 -39
- data/site/source/app/assets/javascripts/docs/views/views/form_view_examples/basic_example.coffee +0 -38
- data/site/source/app/assets/javascripts/docs/views/views/form_view_examples/complex_layout.coffee +0 -110
- data/site/source/app/assets/javascripts/docs/views/views/top_navigation.coffee +0 -6
- data/site/source/app/assets/javascripts/docs-docs.js +0 -1
- data/site/source/app/assets/javascripts/luca-docs.js +0 -1
- data/site/source/app/assets/javascripts/luca-framework-documentation.js +0 -1
- data/site/source/app/assets/javascripts/site.js.coffee +0 -4
- data/site/source/app/assets/javascripts/vendor/codemirror.js +0 -4786
- data/site/source/app/assets/javascripts/vendor/coffeescript.js +0 -346
- data/site/source/app/assets/javascripts/vendor/css.js +0 -465
- data/site/source/app/assets/javascripts/vendor/htmlmixed.js +0 -84
- data/site/source/app/assets/javascripts/vendor/javascript.js +0 -422
- data/site/source/app/assets/javascripts/vendor/js-beautify.js +0 -1353
- data/site/source/app/assets/javascripts/vendor/modernizr-2.6.1.min.js +0 -4
- data/site/source/app/assets/javascripts/vendor/vim.js +0 -2511
- data/site/source/app/assets/stylesheets/docs/api-browser.css.scss +0 -5
- data/site/source/app/assets/stylesheets/docs/application.css.scss +0 -35
- data/site/source/app/assets/stylesheets/docs/browse-source.css.scss +0 -5
- data/site/source/app/assets/stylesheets/docs/scrollable-table.css.scss +0 -5
- data/site/source/app/assets/stylesheets/site.css.scss +0 -2
- data/site/source/app/assets/stylesheets/vendor/codemirror.css +0 -240
- data/site/source/app/assets/stylesheets/vendor/prettify-tomorrow-night-bright.css +0 -160
- data/site/source/app/assets/stylesheets/vendor/twilight.css +0 -26
- data/site/source/crossdomain.xml +0 -15
- data/site/source/documentation.html.haml +0 -1
- data/site/source/favicon_base.png +0 -0
- data/site/source/humans.txt +0 -15
- data/site/source/images/background.png +0 -0
- data/site/source/images/middleman.png +0 -0
- data/site/source/index.html.haml +0 -1
- data/site/source/layouts/layout.haml +0 -55
- data/site/source/readme.md +0 -63
- data/site/source/robots.txt +0 -3
- data/spec/javascripts/components/collection_view_spec.coffee +0 -59
- data/spec/javascripts/components/controller_spec.coffee +0 -62
- data/spec/javascripts/components/form_view_spec.coffee +0 -162
- data/spec/javascripts/components/multi_collection_view_spec.coffee +0 -5
- data/spec/javascripts/components/table_view_spec.coffee +0 -17
- data/spec/javascripts/concerns/collection_event_bindings_spec.coffee +0 -15
- data/spec/javascripts/concerns/dom_helpers_spec.coffee +0 -16
- data/spec/javascripts/concerns/filterable_spec.coffee +0 -25
- data/spec/javascripts/concerns/model_presenter_spec.coffee +0 -31
- data/spec/javascripts/concerns/state_model_spec.coffee +0 -55
- data/spec/javascripts/containers/card_view_spec.coffee +0 -108
- data/spec/javascripts/core/concerns_spec.coffee +0 -88
- data/spec/javascripts/core/container_spec.coffee +0 -287
- data/spec/javascripts/core/define_spec.coffee +0 -116
- data/spec/javascripts/core/events_spec.coffee +0 -26
- data/spec/javascripts/core/field_spec.coffee +0 -4
- data/spec/javascripts/core/util_spec.coffee +0 -24
- data/spec/javascripts/dependencies/index.coffee +0 -3
- data/spec/lib/component_definition_spec.rb +0 -63
- data/spec/lib/input_compiler_spec.rb +0 -9
- data/spec/lib/luca_application_spec.rb +0 -30
- data/spec/support/fixtures/application.coffee +0 -45
- data/spec/support/fixtures/component.coffee +0 -34
- data/tutorials/component-driven-design.md +0 -140
- data/tutorials/structure-of-a-project.md +0 -63
- data/vendor/assets/javascripts/backbone-ext.js +0 -21
- data/vendor/assets/javascripts/backbone-min.js +0 -42
- data/vendor/assets/javascripts/backbone-query.min.js +0 -1
- data/vendor/assets/javascripts/bootstrap.min.js +0 -7
- data/vendor/assets/javascripts/codemirror-ui.js +0 -503
- data/vendor/assets/javascripts/hogan.js +0 -707
- data/vendor/assets/javascripts/inflections.js +0 -656
- data/vendor/assets/javascripts/jasmine-html.js +0 -190
- data/vendor/assets/javascripts/jasmine.js +0 -2476
- data/vendor/assets/javascripts/jquery.js +0 -5
- data/vendor/assets/javascripts/keymaster.min.js +0 -4
- data/vendor/assets/javascripts/luca-dependencies.min.js +0 -8
- data/vendor/assets/javascripts/luca-development.min.js +0 -1
- data/vendor/assets/javascripts/luca-spec.js +0 -11
- data/vendor/assets/javascripts/luca.full.min.js +0 -12
- data/vendor/assets/javascripts/luca.min.js +0 -5
- data/vendor/assets/javascripts/sinon.js +0 -3469
- data/vendor/assets/javascripts/underscore-min.js +0 -1
- data/vendor/assets/javascripts/underscore-string.min.js +0 -1
- data/vendor/assets/stylesheets/bootstrap-responsive.min.css +0 -9
- data/vendor/assets/stylesheets/bootstrap.min.css +0 -9
- data/vendor/assets/stylesheets/luca-components.css +0 -202
- data/vendor/assets/stylesheets/luca-development.css +0 -23
|
@@ -0,0 +1,318 @@
|
|
|
1
|
+
# Luca.Application
|
|
2
|
+
#
|
|
3
|
+
# The Application class is the global state tracking mechanism
|
|
4
|
+
# for your single page application, as well as the entry point.
|
|
5
|
+
#
|
|
6
|
+
# By default it contains a main controller which is a Luca.components.Controller instance.
|
|
7
|
+
#
|
|
8
|
+
# In a typical Luca application, the router will use the applications @navigate_to() method to switch
|
|
9
|
+
# from page to page on the main controller, or any other controllers nested inside of it.
|
|
10
|
+
#
|
|
11
|
+
# You would control flow when the controller fires activation events on the nested view components inside of it.
|
|
12
|
+
#
|
|
13
|
+
# Decoupling application control flow from the URL Fragment from Backbone.History and preventing
|
|
14
|
+
# your components from directly caring about the URL Fragment, allows you to build applications as
|
|
15
|
+
# isolated components which can run separately or nested inside of other applications.
|
|
16
|
+
|
|
17
|
+
startHistory = ()-> Backbone.history.start()
|
|
18
|
+
|
|
19
|
+
_.def('Luca.Application').extends('Luca.containers.Viewport').with
|
|
20
|
+
name: "MyApp"
|
|
21
|
+
|
|
22
|
+
# The Application uses a Backbone.Model as a state machine, which
|
|
23
|
+
# allows you to get / set attributes, persist them somewhere, and
|
|
24
|
+
# most importantly to bind to change events of certain attributes.
|
|
25
|
+
#
|
|
26
|
+
# the @defaultState property will be the default attributes
|
|
27
|
+
defaultState: {}
|
|
28
|
+
|
|
29
|
+
# if autoBoot is set to true, the application will
|
|
30
|
+
# attempt to boot on document ready.
|
|
31
|
+
autoBoot: false
|
|
32
|
+
|
|
33
|
+
# automatically starts the @router if it exists,
|
|
34
|
+
# once the components for the application have
|
|
35
|
+
# been created. Pass the event name you want to
|
|
36
|
+
# listen for on this component before you start history
|
|
37
|
+
autoStartHistory: "before:render"
|
|
38
|
+
|
|
39
|
+
# we will create a collection manager singleton
|
|
40
|
+
# by default unless otherwise specified.
|
|
41
|
+
useCollectionManager: true
|
|
42
|
+
|
|
43
|
+
# to pass options to the collection manager, set the @collectionManager
|
|
44
|
+
# hash which will get passed once the collection manager is created
|
|
45
|
+
collectionManager: {}
|
|
46
|
+
|
|
47
|
+
# by default we will use the standard collection manager which ships with
|
|
48
|
+
# Luca. If you would like to use your own extension of the collection manager
|
|
49
|
+
# just pass a reference to the class you would like to use.
|
|
50
|
+
collectionManagerClass: "Luca.CollectionManager"
|
|
51
|
+
|
|
52
|
+
# Luca plugin apps are apps which mount onto existing
|
|
53
|
+
# luca apps, and will not have the behavior of a main
|
|
54
|
+
# app which acts as a singleton
|
|
55
|
+
plugin: false
|
|
56
|
+
|
|
57
|
+
# by default, the application will use a controller
|
|
58
|
+
# component, which is a card view container which shows
|
|
59
|
+
# one view at a time. this is useful for having an application
|
|
60
|
+
# with several 'pages' so to speak
|
|
61
|
+
useController: true
|
|
62
|
+
|
|
63
|
+
# Key Handler
|
|
64
|
+
#
|
|
65
|
+
# One responsibility of the application, since it is a viewport which monopolizes the entire screen
|
|
66
|
+
# is to relay keypress events from the document, to whatever views are interested in responding to them.
|
|
67
|
+
#
|
|
68
|
+
# This functionality is disabled by default.
|
|
69
|
+
useKeyHandler: false
|
|
70
|
+
|
|
71
|
+
# You can configure key events by specifying them by their name, as it exists in Luca.keyMap. For example:
|
|
72
|
+
#
|
|
73
|
+
keyEvents: {}
|
|
74
|
+
|
|
75
|
+
# keyEvents
|
|
76
|
+
# keyup: keyUpHandler
|
|
77
|
+
# enter: enterHandler
|
|
78
|
+
# meta:
|
|
79
|
+
# up: metaUpHandler
|
|
80
|
+
# control:
|
|
81
|
+
# forwardslash: controlSlashHandler
|
|
82
|
+
# keyup: controlUpHandler
|
|
83
|
+
# control_meta:
|
|
84
|
+
# keydown: metaControlKeyDownHandler
|
|
85
|
+
#
|
|
86
|
+
#
|
|
87
|
+
|
|
88
|
+
# applications have one component, the controller.
|
|
89
|
+
# any components defined on the application class directly
|
|
90
|
+
# will get wrapped by the main controller unless you
|
|
91
|
+
# set useController = false
|
|
92
|
+
components:[
|
|
93
|
+
ctype: 'template'
|
|
94
|
+
name: 'welcome'
|
|
95
|
+
template: 'sample/welcome'
|
|
96
|
+
templateContainer: "Luca.templates"
|
|
97
|
+
]
|
|
98
|
+
|
|
99
|
+
initialize: (@options={})->
|
|
100
|
+
app = @
|
|
101
|
+
appName = @name
|
|
102
|
+
alreadyRunning = Luca.getApplication?()
|
|
103
|
+
|
|
104
|
+
Luca.Application.instances ||= {}
|
|
105
|
+
Luca.Application.instances[ appName ] = app
|
|
106
|
+
|
|
107
|
+
Luca.containers.Viewport::initialize.apply @, arguments
|
|
108
|
+
|
|
109
|
+
@state = new Luca.Model( @defaultState )
|
|
110
|
+
|
|
111
|
+
# The Controller is the piece of the application that handles showing
|
|
112
|
+
# and hiding 'pages' of the app. The Application has a navigate_to
|
|
113
|
+
# method which delegates to the controller, and allows you to navigate
|
|
114
|
+
# to a given page, or component, by its name. The controller integrates
|
|
115
|
+
# with the state machine of the application
|
|
116
|
+
@setupMainController()
|
|
117
|
+
|
|
118
|
+
# The Collection Manager is responsible
|
|
119
|
+
@setupCollectionManager()
|
|
120
|
+
|
|
121
|
+
# we will render when all of the various components
|
|
122
|
+
# which handle our data dependencies determine that
|
|
123
|
+
# we are ready
|
|
124
|
+
@defer(()-> app.render()).until(@, "ready")
|
|
125
|
+
|
|
126
|
+
# Set up the Backbone Router
|
|
127
|
+
@setupRouter()
|
|
128
|
+
|
|
129
|
+
# the keyHandler allows us to specify
|
|
130
|
+
# keyEvents on our application with an API very similar
|
|
131
|
+
# to the DOM events API for Backbone.View
|
|
132
|
+
#
|
|
133
|
+
# Example:
|
|
134
|
+
#
|
|
135
|
+
# keyEvents:
|
|
136
|
+
# meta:
|
|
137
|
+
# forwardslash: "altSlashHandler"
|
|
138
|
+
if @useKeyRouter is true
|
|
139
|
+
console.log "The useKeyRouter property is being deprecated. switch to useKeyHandler instead"
|
|
140
|
+
|
|
141
|
+
@setupKeyHandler() if (@useKeyHandler is true or @useKeyRouter is true) and @keyEvents?
|
|
142
|
+
|
|
143
|
+
# if the application is a plugin designed to modify the behavior
|
|
144
|
+
# of another app, then don't claim ownership. otherwise the most common
|
|
145
|
+
# use-case is that there will be one application instance
|
|
146
|
+
unless @plugin is true or alreadyRunning
|
|
147
|
+
Luca.getApplication = (name)=>
|
|
148
|
+
return app unless name?
|
|
149
|
+
Luca.Application.instances[ name ]
|
|
150
|
+
|
|
151
|
+
if @autoBoot
|
|
152
|
+
if Luca.util.resolve(@name)
|
|
153
|
+
throw "Attempting to override window.#{ @name } when it already exists"
|
|
154
|
+
|
|
155
|
+
$ ->
|
|
156
|
+
window[ appName ] = app
|
|
157
|
+
app.boot()
|
|
158
|
+
|
|
159
|
+
# @activeView() returns a reference to the instance of the view
|
|
160
|
+
# which is currently monopolizing the viewport.
|
|
161
|
+
#
|
|
162
|
+
# this will be whicever component is active on the controllers
|
|
163
|
+
# nested within the main controller, if there are any, or the view
|
|
164
|
+
# itself which is active on the main controller.
|
|
165
|
+
activeView: ()->
|
|
166
|
+
if active = @activeSubSection()
|
|
167
|
+
@view( active )
|
|
168
|
+
else
|
|
169
|
+
@view( @activeSection() )
|
|
170
|
+
|
|
171
|
+
# Returns the name of the active component on the main controller
|
|
172
|
+
activeSection: ()->
|
|
173
|
+
@get("active_section")
|
|
174
|
+
|
|
175
|
+
# Returns the name of the active component on the nested controllers
|
|
176
|
+
# on the main controller, if there is one. These get set on the
|
|
177
|
+
# state machine in response to card switch events on the controller component
|
|
178
|
+
activeSubSection: ()->
|
|
179
|
+
@get("active_sub_section")
|
|
180
|
+
|
|
181
|
+
activePages: ()->
|
|
182
|
+
@$('.luca-ui-controller').map (index,element)=> $(element).data('active-section')
|
|
183
|
+
|
|
184
|
+
# boot should trigger the ready event, which will call the initial call
|
|
185
|
+
# to render() your application, which will have a cascading effect on every
|
|
186
|
+
# subcomponent in the view, recursively rendering everything which is set
|
|
187
|
+
# to automatically render (i.e. any non-deferrable components ).
|
|
188
|
+
#
|
|
189
|
+
# you should use boot to fire up any dependent collections, manager, any
|
|
190
|
+
# sort of data processing, whatever your application requires to run outside
|
|
191
|
+
# of the views
|
|
192
|
+
boot: ()->
|
|
193
|
+
@trigger "ready"
|
|
194
|
+
|
|
195
|
+
# delegate to the collection manager's get or create function.
|
|
196
|
+
# use App.collection() to create or access existing collections
|
|
197
|
+
collection: ()->
|
|
198
|
+
@collectionManager.getOrCreate.apply(@collectionManager, arguments)
|
|
199
|
+
|
|
200
|
+
get: (attribute)->
|
|
201
|
+
@state.get(attribute)
|
|
202
|
+
|
|
203
|
+
set: (attribute, value, options)->
|
|
204
|
+
@state.set.apply(@state, arguments)
|
|
205
|
+
|
|
206
|
+
view: (name)->
|
|
207
|
+
Luca.cache(name)
|
|
208
|
+
|
|
209
|
+
#### Navigation Hooks
|
|
210
|
+
#
|
|
211
|
+
# delegate to the main controller so that we can switch the active section
|
|
212
|
+
navigate_to: (component_name, callback)->
|
|
213
|
+
@getMainController().navigate_to(component_name, callback)
|
|
214
|
+
|
|
215
|
+
getMainController: ()->
|
|
216
|
+
return @components[0] if @useController is true
|
|
217
|
+
Luca.cache('main_controller')
|
|
218
|
+
|
|
219
|
+
#
|
|
220
|
+
keyHandler: (e)->
|
|
221
|
+
return unless e and @keyEvents
|
|
222
|
+
|
|
223
|
+
isInputEvent = $(e.target).is('input') || $(e.target).is('textarea')
|
|
224
|
+
|
|
225
|
+
return if isInputEvent
|
|
226
|
+
|
|
227
|
+
keyname = Luca.keyMap[ e.keyCode ]
|
|
228
|
+
|
|
229
|
+
return unless keyname
|
|
230
|
+
|
|
231
|
+
meta = e?.metaKey is true
|
|
232
|
+
control = e?.ctrlKey is true
|
|
233
|
+
|
|
234
|
+
source = @keyEvents
|
|
235
|
+
source = if meta then @keyEvents.meta else source
|
|
236
|
+
source = if control then @keyEvents.control else source
|
|
237
|
+
source = if meta and control then @keyEvents.meta_control else source
|
|
238
|
+
|
|
239
|
+
if keyEvent = source?[keyname]
|
|
240
|
+
if @[keyEvent]? and _.isFunction(@[keyEvent])
|
|
241
|
+
@[keyEvent]?.call(@)
|
|
242
|
+
else
|
|
243
|
+
@trigger(keyEvent, e, keyname)
|
|
244
|
+
|
|
245
|
+
setupControllerBindings: ()->
|
|
246
|
+
app = @
|
|
247
|
+
# any time the main controller card switches we should track
|
|
248
|
+
# the active card on the global state chart
|
|
249
|
+
@getMainController()?.bind "after:card:switch", (previous,current)=>
|
|
250
|
+
@state.set(active_section:current.name)
|
|
251
|
+
app.trigger "page:change"
|
|
252
|
+
|
|
253
|
+
# any time the card switches on one of the sub controllers
|
|
254
|
+
# then we should track the active sub section on the global state chart
|
|
255
|
+
@getMainController()?.each (component)=>
|
|
256
|
+
if component.ctype.match(/controller$/)
|
|
257
|
+
component.bind "after:card:switch", (previous,current)=>
|
|
258
|
+
@state.set(active_sub_section:current.name)
|
|
259
|
+
app.trigger "sub:page:change"
|
|
260
|
+
|
|
261
|
+
setupMainController: ()->
|
|
262
|
+
if @useController is true
|
|
263
|
+
definedComponents = @components || []
|
|
264
|
+
|
|
265
|
+
@components = [
|
|
266
|
+
ctype: 'controller'
|
|
267
|
+
name: "main_controller"
|
|
268
|
+
components: definedComponents
|
|
269
|
+
]
|
|
270
|
+
|
|
271
|
+
@defer( @setupControllerBindings, false ).until("after:components")
|
|
272
|
+
|
|
273
|
+
setupCollectionManager: ()->
|
|
274
|
+
if @useCollectionManager is true
|
|
275
|
+
@collectionManagerClass = Luca.util.resolve( @collectionManagerClass ) if _.isString( @collectionManagerClass )
|
|
276
|
+
|
|
277
|
+
collectionManagerOptions = @collectionManagerOptions
|
|
278
|
+
|
|
279
|
+
if _.isObject(@collectionManager) and not _.isFunction( @collectionManager?.get )
|
|
280
|
+
collectionManagerOptions = @collectionManager
|
|
281
|
+
@collectionManager = undefined
|
|
282
|
+
|
|
283
|
+
if _.isString(@collectionManager)
|
|
284
|
+
collectionManagerOptions =
|
|
285
|
+
name: @collectionManager
|
|
286
|
+
|
|
287
|
+
@collectionManager = Luca.CollectionManager.get?( collectionManagerOptions.name )
|
|
288
|
+
|
|
289
|
+
unless _.isFunction(@collectionManager?.get)
|
|
290
|
+
@collectionManager = new @collectionManagerClass( collectionManagerOptions )
|
|
291
|
+
|
|
292
|
+
setupRouter: ()->
|
|
293
|
+
app = @
|
|
294
|
+
|
|
295
|
+
if _.isString( @router )
|
|
296
|
+
routerClass = Luca.util.resolve(@router)
|
|
297
|
+
@router = new routerClass({app})
|
|
298
|
+
|
|
299
|
+
# if this application has a router associated with it
|
|
300
|
+
# then we need to start backbone history on a certain event.
|
|
301
|
+
# you can control which by setting the @startHistoryOn property
|
|
302
|
+
if @router and @autoStartHistory
|
|
303
|
+
@autoStartHistory = "before:render" if @autoStartHistory is true
|
|
304
|
+
@defer(startHistory, false).until(@, @autoStartHistory)
|
|
305
|
+
|
|
306
|
+
setupKeyHandler: ()->
|
|
307
|
+
return unless @keyEvents
|
|
308
|
+
|
|
309
|
+
@keyEvents.control_meta ||= {}
|
|
310
|
+
|
|
311
|
+
# allow for both meta_control, control_meta for the combo
|
|
312
|
+
_.extend(@keyEvents.control_meta, @keyEvents.meta_control) if @keyEvents.meta_control
|
|
313
|
+
|
|
314
|
+
handler = _.bind(@keyHandler, @)
|
|
315
|
+
|
|
316
|
+
for keyEvent in (@keypressEvents || ["keydown"])
|
|
317
|
+
$( document ).on( keyEvent, handler )
|
|
318
|
+
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
_.def('Luca.components.Toolbar').extends('Luca.core.Container').with
|
|
2
|
+
|
|
3
|
+
className: 'luca-ui-toolbar toolbar'
|
|
4
|
+
|
|
5
|
+
position: 'bottom'
|
|
6
|
+
|
|
7
|
+
initialize: (@options={})->
|
|
8
|
+
Luca.core.Container::initialize.apply @, arguments
|
|
9
|
+
|
|
10
|
+
prepareComponents: ()->
|
|
11
|
+
_( @components ).each (component)=>
|
|
12
|
+
component.container = @$el
|
|
13
|
+
|
|
14
|
+
render: ()->
|
|
15
|
+
$(@container).append(@el)
|
|
@@ -3,10 +3,8 @@
|
|
|
3
3
|
# if you want to. Default implementation uses twitter bootstrap modal and
|
|
4
4
|
# progress bar (http://twitter.github.com/bootstrap/). You template
|
|
5
5
|
# should contain `progress`, `bar` and `message` classes
|
|
6
|
-
|
|
7
|
-
loaderView.extends "Luca.View"
|
|
6
|
+
_.def('Luca.components.CollectionLoaderView').extends('Luca.components.Template').with
|
|
8
7
|
|
|
9
|
-
loaderView.defines
|
|
10
8
|
className: 'luca-ui-collection-loader-view'
|
|
11
9
|
|
|
12
10
|
template: "components/collection_loader_view"
|
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
# Public: The CollectionView renders a collection of models into a list of items.
|
|
2
|
+
#
|
|
3
|
+
# Examples
|
|
4
|
+
#
|
|
5
|
+
# _.def('App.ListView').extends('Luca.components.CollectionView').with
|
|
6
|
+
# collection: new App.SampleCollection()
|
|
7
|
+
# itemTemplate: "list_view_item"
|
|
8
|
+
# loadMask: true
|
|
9
|
+
#
|
|
10
|
+
|
|
11
|
+
_.def("Luca.components.CollectionView").extends("Luca.components.Panel").with
|
|
12
|
+
tagName: "div"
|
|
13
|
+
|
|
14
|
+
className: "luca-ui-collection-view"
|
|
15
|
+
|
|
16
|
+
bodyClassName: "collection-ui-panel"
|
|
17
|
+
|
|
18
|
+
# A collection view can pass a model through to a template
|
|
19
|
+
itemTemplate: undefined
|
|
20
|
+
|
|
21
|
+
# A collection view can pass a model through a function which should return a string
|
|
22
|
+
itemRenderer: undefined
|
|
23
|
+
|
|
24
|
+
itemTagName: 'li'
|
|
25
|
+
|
|
26
|
+
itemClassName: 'collection-item'
|
|
27
|
+
|
|
28
|
+
hooks:[
|
|
29
|
+
"empty:results"
|
|
30
|
+
]
|
|
31
|
+
|
|
32
|
+
initialize: (@options={})->
|
|
33
|
+
_.extend(@, @options)
|
|
34
|
+
|
|
35
|
+
_.bindAll @, "refresh"
|
|
36
|
+
|
|
37
|
+
unless @collection? or @options.collection
|
|
38
|
+
throw "Collection Views must specify a collection"
|
|
39
|
+
|
|
40
|
+
unless @itemTemplate? || @itemRenderer? || @itemProperty?
|
|
41
|
+
throw "Collection Views must specify an item template or item renderer function"
|
|
42
|
+
|
|
43
|
+
Luca.components.Panel::initialize.apply(@, arguments)
|
|
44
|
+
|
|
45
|
+
if _.isString(@collection) and Luca.CollectionManager.get()
|
|
46
|
+
@collection = Luca.CollectionManager.get().getOrCreate(@collection)
|
|
47
|
+
|
|
48
|
+
if Luca.isBackboneCollection(@collection)
|
|
49
|
+
@collection.on "before:fetch", ()=>
|
|
50
|
+
@trigger "enable:loadmask" if @loadMask is true
|
|
51
|
+
|
|
52
|
+
@collection.bind "reset", ()=>
|
|
53
|
+
@trigger "disable:loadmask" if @loadMask is true
|
|
54
|
+
@refresh()
|
|
55
|
+
|
|
56
|
+
@collection.bind "add", @refresh
|
|
57
|
+
@collection.bind "remove", @refresh
|
|
58
|
+
|
|
59
|
+
if @observeChanges is true
|
|
60
|
+
setupChangeObserver.call(@)
|
|
61
|
+
|
|
62
|
+
else
|
|
63
|
+
throw "Collection Views must have a valid backbone collection"
|
|
64
|
+
|
|
65
|
+
if @collection.length > 0
|
|
66
|
+
@refresh()
|
|
67
|
+
|
|
68
|
+
attributesForItem: (item, model)->
|
|
69
|
+
_.extend {}, class: @itemClassName, "data-index": item.index, "data-model-id": item.model.get('id')
|
|
70
|
+
|
|
71
|
+
contentForItem: (item={})->
|
|
72
|
+
if @itemTemplate? and templateFn = Luca.template(@itemTemplate)
|
|
73
|
+
# this is the model
|
|
74
|
+
content = templateFn.call(@, item)
|
|
75
|
+
|
|
76
|
+
if @itemRenderer? and _.isFunction( @itemRenderer )
|
|
77
|
+
content = @itemRenderer.call(@, item, item.model, item.index)
|
|
78
|
+
|
|
79
|
+
if @itemProperty
|
|
80
|
+
content = item.model.get(@itemProperty) || item.model[ @itemProperty ]
|
|
81
|
+
content = content() if _.isFunction(content)
|
|
82
|
+
|
|
83
|
+
content
|
|
84
|
+
|
|
85
|
+
makeItem: (model, index)->
|
|
86
|
+
item = if @prepareItem? then @prepareItem.call(@, model, index) else (model:model, index: index)
|
|
87
|
+
make(@itemTagName, @attributesForItem(item, model), @contentForItem(item))
|
|
88
|
+
|
|
89
|
+
getModels: ()->
|
|
90
|
+
if @collection?.query and (@filter || @filterOptions)
|
|
91
|
+
@collection.query(@filter, @filterOptions)
|
|
92
|
+
else
|
|
93
|
+
@collection.models
|
|
94
|
+
|
|
95
|
+
|
|
96
|
+
locateItemElement: (id)->
|
|
97
|
+
@$(".#{ @itemClassName }[data-model-id='#{ id }']")
|
|
98
|
+
|
|
99
|
+
refreshModel: (model)->
|
|
100
|
+
index = @collection.indexOf( model )
|
|
101
|
+
@locateItemElement(model.get('id')).empty().append( @contentForItem({model,index}, model) )
|
|
102
|
+
|
|
103
|
+
refresh: ()->
|
|
104
|
+
@$bodyEl().empty()
|
|
105
|
+
|
|
106
|
+
if @getModels().length is 0
|
|
107
|
+
@trigger("empty:results")
|
|
108
|
+
|
|
109
|
+
_( @getModels() ).each (model, index)=>
|
|
110
|
+
@$append( @makeItem(model, index) )
|
|
111
|
+
|
|
112
|
+
registerEvent: (domEvent, selector, handler)->
|
|
113
|
+
if !handler? and _.isFunction(selector)
|
|
114
|
+
handler = selector
|
|
115
|
+
selector = undefined
|
|
116
|
+
|
|
117
|
+
eventTrigger = _([domEvent,"#{ @itemTagName }.#{ @itemClassName }", selector]).compact().join(" ")
|
|
118
|
+
Luca.View::registerEvent(eventTrigger,handler)
|
|
119
|
+
|
|
120
|
+
render: ()->
|
|
121
|
+
@refresh()
|
|
122
|
+
@$attach() if @$el.parent().length > 0 and @container?
|
|
123
|
+
@
|
|
124
|
+
|
|
125
|
+
# Private Helpers
|
|
126
|
+
|
|
127
|
+
make = Luca.View::make
|
|
128
|
+
|
|
129
|
+
setupChangeObserver = ()->
|
|
130
|
+
@collection.on "change", (model)=>
|
|
131
|
+
@refreshModel(model)
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
_.def('Luca.components.Controller').extends('Luca.containers.CardView').with
|
|
2
|
+
|
|
3
|
+
additionalClassNames:['luca-ui-controller']
|
|
4
|
+
|
|
5
|
+
activeAttribute: "active-section"
|
|
6
|
+
|
|
7
|
+
initialize: (@options)->
|
|
8
|
+
Luca.containers.CardView::initialize.apply @, arguments
|
|
9
|
+
|
|
10
|
+
@defaultCard ||= @components[0]?.name
|
|
11
|
+
|
|
12
|
+
throw "Controllers must specify a defaultCard property and/or the first component must have a name" unless @defaultCard
|
|
13
|
+
|
|
14
|
+
@state = new Backbone.Model
|
|
15
|
+
active_section: @defaultCard
|
|
16
|
+
|
|
17
|
+
each: (fn)->
|
|
18
|
+
_( @components ).each (component)=>
|
|
19
|
+
fn.apply @, [component]
|
|
20
|
+
|
|
21
|
+
activeSection: ()->
|
|
22
|
+
@get("activeSection")
|
|
23
|
+
|
|
24
|
+
controllers:(deep=false)->
|
|
25
|
+
@select 'ctype', 'controller', deep
|
|
26
|
+
|
|
27
|
+
availableSections: ()->
|
|
28
|
+
base = {}
|
|
29
|
+
base[ @name ] = @sectionNames()
|
|
30
|
+
|
|
31
|
+
_( @controllers() ).reduce (memo,controller)=>
|
|
32
|
+
memo[ controller.name ] = controller.sectionNames()
|
|
33
|
+
memo
|
|
34
|
+
, base
|
|
35
|
+
|
|
36
|
+
sectionNames: (deep=false)->
|
|
37
|
+
@pluck('name')
|
|
38
|
+
|
|
39
|
+
default: (callback)->
|
|
40
|
+
@navigate_to(@defaultCard, callback)
|
|
41
|
+
|
|
42
|
+
# switch the active card of this controller
|
|
43
|
+
# optionally passing an onActivation callback
|
|
44
|
+
# will fire this callback in the context of
|
|
45
|
+
# the currently active card
|
|
46
|
+
navigate_to: (section, callback)->
|
|
47
|
+
section ||= @defaultCard
|
|
48
|
+
|
|
49
|
+
# activate is a method on Luca.containers.CardView which
|
|
50
|
+
# selects a component and makes it visible, hiding any
|
|
51
|
+
# other component which may be monopolizing the view at that time.
|
|
52
|
+
|
|
53
|
+
# after activation it triggers a after:card:switch event
|
|
54
|
+
# and if it is the first time that view is being activated,
|
|
55
|
+
# it triggers a first:activation event which gets relayed to all
|
|
56
|
+
# child components in that view
|
|
57
|
+
@activate section, false, (activator, previous,current)=>
|
|
58
|
+
@state.set(active_section: current.name )
|
|
59
|
+
if _.isFunction( callback )
|
|
60
|
+
callback.apply(current)
|
|
61
|
+
|
|
62
|
+
# return the section we are navigating to
|
|
63
|
+
@find(section)
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
_.def('Luca.fields.ButtonField').extends('Luca.core.Field').with
|
|
2
|
+
|
|
3
|
+
readOnly: true
|
|
4
|
+
|
|
5
|
+
events:
|
|
6
|
+
"click input" : "click_handler"
|
|
7
|
+
|
|
8
|
+
hooks:[
|
|
9
|
+
"button:click"
|
|
10
|
+
]
|
|
11
|
+
|
|
12
|
+
className: 'luca-ui-field luca-ui-button-field'
|
|
13
|
+
|
|
14
|
+
template: 'fields/button_field'
|
|
15
|
+
|
|
16
|
+
click_handler: (e)->
|
|
17
|
+
me = my = $( e.currentTarget )
|
|
18
|
+
@trigger "button:click"
|
|
19
|
+
|
|
20
|
+
initialize: (@options={})->
|
|
21
|
+
_.extend @options
|
|
22
|
+
_.bindAll @, "click_handler"
|
|
23
|
+
|
|
24
|
+
Luca.core.Field::initialize.apply @, arguments
|
|
25
|
+
|
|
26
|
+
@template = "fields/button_field_link" if @icon_class?.length
|
|
27
|
+
|
|
28
|
+
afterInitialize: ()->
|
|
29
|
+
@input_id ||= _.uniqueId('button')
|
|
30
|
+
@input_name ||= @name ||= @input_id
|
|
31
|
+
@input_value ||= @label ||= @text
|
|
32
|
+
@input_type ||= "button"
|
|
33
|
+
@input_class ||= @class
|
|
34
|
+
@icon_class ||= ""
|
|
35
|
+
@icon_class = "icon-#{ @icon_class }" if @icon_class.length and !@icon_class.match(/^icon-/)
|
|
36
|
+
@icon_class += " icon-white" if @white
|
|
37
|
+
|
|
38
|
+
setValue: ()-> true
|
|
@@ -1,10 +1,8 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
checkboxArray.extends "Luca.core.Field"
|
|
1
|
+
make = Luca.View::make
|
|
2
|
+
|
|
3
|
+
_.def('Luca.fields.CheckboxArray').extends('Luca.core.Field').with
|
|
4
|
+
version: 2
|
|
6
5
|
|
|
7
|
-
checkboxArray.privateConfiguration
|
|
8
6
|
template: "fields/checkbox_array"
|
|
9
7
|
|
|
10
8
|
className: "luca-ui-checkbox-array"
|
|
@@ -14,10 +12,9 @@ checkboxArray.privateConfiguration
|
|
|
14
12
|
|
|
15
13
|
selectedItems: []
|
|
16
14
|
|
|
17
|
-
checkboxArray.privateMethods
|
|
18
15
|
initialize: (@options={})->
|
|
19
16
|
_.extend @, @options
|
|
20
|
-
_.extend @, Luca.
|
|
17
|
+
_.extend @, Luca.modules.Deferrable
|
|
21
18
|
_.bindAll @, "renderCheckboxes", "clickHandler", "checkSelected"
|
|
22
19
|
|
|
23
20
|
Luca.core.Field::initialize.apply @, arguments
|
|
@@ -36,9 +33,6 @@ checkboxArray.privateMethods
|
|
|
36
33
|
|
|
37
34
|
cbArray = @
|
|
38
35
|
|
|
39
|
-
unless Luca.isBackboneCollection(@collection)
|
|
40
|
-
throw "Checkbox Array Fields must specify a @collection property"
|
|
41
|
-
|
|
42
36
|
if @collection.length > 0
|
|
43
37
|
@renderCheckboxes()
|
|
44
38
|
else
|
|
@@ -65,8 +59,8 @@ checkboxArray.privateMethods
|
|
|
65
59
|
label = model.get(@displayField)
|
|
66
60
|
input_id = _.uniqueId("#{ @cid }_checkbox")
|
|
67
61
|
|
|
68
|
-
inputElement =
|
|
69
|
-
element =
|
|
62
|
+
inputElement = make("input",type:"checkbox",class:"array-checkbox",name:@input_name,value:value,id: input_id)
|
|
63
|
+
element = make("label", {for:input_id}, inputElement)
|
|
70
64
|
|
|
71
65
|
$( element ).append(" #{ label }")
|
|
72
66
|
@controls().append( element )
|
|
@@ -80,9 +74,6 @@ checkboxArray.privateMethods
|
|
|
80
74
|
allFields: ()->
|
|
81
75
|
@controls().find("input[type='checkbox']")
|
|
82
76
|
|
|
83
|
-
checkboxArray.publicMethods
|
|
84
|
-
# Check the selected items. Expects an array of values
|
|
85
|
-
# for boxes you would like to see checked.
|
|
86
77
|
checkSelected: (items)->
|
|
87
78
|
@selectedItems = items if items?
|
|
88
79
|
|
|
@@ -94,8 +85,6 @@ checkboxArray.publicMethods
|
|
|
94
85
|
|
|
95
86
|
@selectedItems
|
|
96
87
|
|
|
97
|
-
# Gets an array of values for the checkboxes in this array
|
|
98
|
-
# which are checked.
|
|
99
88
|
getValue: ()->
|
|
100
89
|
@$(field).val() for field in @allFields() when @$(field).prop('checked')
|
|
101
90
|
|
|
@@ -1,20 +1,13 @@
|
|
|
1
|
-
|
|
1
|
+
_.def('Luca.fields.CheckboxField').extends('Luca.core.Field').with
|
|
2
2
|
|
|
3
|
-
checkboxField.extends "Luca.core.Field"
|
|
4
|
-
|
|
5
|
-
checkboxField.triggers "checked",
|
|
6
|
-
"unchecked"
|
|
7
|
-
|
|
8
|
-
checkboxField.publicConfiguration
|
|
9
|
-
send_blanks: true
|
|
10
|
-
input_value: 1
|
|
11
|
-
|
|
12
|
-
checkboxField.privateConfiguration
|
|
13
|
-
template: 'fields/checkbox_field'
|
|
14
3
|
events:
|
|
15
4
|
"change input" : "change_handler"
|
|
16
5
|
|
|
17
|
-
|
|
6
|
+
className: 'luca-ui-checkbox-field luca-ui-field'
|
|
7
|
+
template: 'fields/checkbox_field'
|
|
8
|
+
hooks: ["checked","unchecked"]
|
|
9
|
+
send_blanks: true
|
|
10
|
+
|
|
18
11
|
change_handler: (e)->
|
|
19
12
|
me = my = $(e.target)
|
|
20
13
|
|
|
@@ -31,16 +24,14 @@ checkboxField.privateInterface
|
|
|
31
24
|
|
|
32
25
|
Luca.core.Field::initialize.apply @, arguments
|
|
33
26
|
|
|
27
|
+
afterInitialize: ()->
|
|
34
28
|
@input_id ||= _.uniqueId('field')
|
|
35
29
|
@input_name ||= @name
|
|
30
|
+
@input_value ||= 1
|
|
36
31
|
@label ||= @name
|
|
37
32
|
|
|
38
|
-
checkboxField.publicInterface
|
|
39
33
|
setValue: (checked)->
|
|
40
|
-
@
|
|
34
|
+
@input.attr('checked', checked)
|
|
41
35
|
|
|
42
36
|
getValue:()->
|
|
43
|
-
@
|
|
44
|
-
|
|
45
|
-
checkboxField.defines
|
|
46
|
-
version: 1
|
|
37
|
+
@input.is(":checked")
|