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
|
@@ -1,530 +0,0 @@
|
|
|
1
|
-
# The `Luca.Application` is the main entry point into your Application.
|
|
2
|
-
# It acts as a global state machine, page controller, and router, in addition
|
|
3
|
-
# to providing access to other singletons such as the CollectionManager, and SocketManager.
|
|
4
|
-
#
|
|
5
|
-
# The structure of a common `Luca.Application` is that it contains one or many `Pages` which
|
|
6
|
-
# themselves are made up of the components of your application. One `Page` is visible at a time
|
|
7
|
-
# and which page is displayed is managed by an instance of the `Luca.components.Controller` class.
|
|
8
|
-
#
|
|
9
|
-
# ### Example Configuration
|
|
10
|
-
# application = Luca.register "App.Application"
|
|
11
|
-
# application.extends "Luca.Application"
|
|
12
|
-
#
|
|
13
|
-
# application.defines
|
|
14
|
-
# name: "MyApplication"
|
|
15
|
-
# routes:
|
|
16
|
-
# "" : "home"
|
|
17
|
-
# "standard/backbone/style/:route" : "name_of_page#name_of_method"
|
|
18
|
-
#
|
|
19
|
-
# components:[
|
|
20
|
-
# name: "home"
|
|
21
|
-
# ,
|
|
22
|
-
# type: "your_view"
|
|
23
|
-
# name: "name_of_page"
|
|
24
|
-
# name_of_method: (routeParam)->
|
|
25
|
-
# @doSomethignToSetupYourPageWithThePassed(routeParam)
|
|
26
|
-
# ]
|
|
27
|
-
#
|
|
28
|
-
# App.onReady ()->
|
|
29
|
-
# window.MyApp = new App.Application();
|
|
30
|
-
# window.MyApp.boot()
|
|
31
|
-
#
|
|
32
|
-
# #### @routes and pages
|
|
33
|
-
#
|
|
34
|
-
# In the above example, our application contains two pages, one with the name 'home'
|
|
35
|
-
# and one with the name 'name_of_page'. It also specifies a `@routes` property which
|
|
36
|
-
# is identical to the configuration you would see in a standard `Backbone.Router`.
|
|
37
|
-
#
|
|
38
|
-
# Whenever the route matches 'standard/backbone/style/route' the `App.Application` instance
|
|
39
|
-
# will send an instruction to the `Luca.components.Controller` to `activate` the page whose name
|
|
40
|
-
# is passed in the `@routes` config.
|
|
41
|
-
#
|
|
42
|
-
# If that page defines a method called `@routeHandler` it will be called with the parameters
|
|
43
|
-
# from the route. In the `@routes` config you can specify your own route handler method
|
|
44
|
-
# by using the rails style `page_name#action` and it will call the `@action` method instead
|
|
45
|
-
# on the view named `page_name`.
|
|
46
|
-
#
|
|
47
|
-
# The `App.Application` instance, also accessible by `window.MyApp`, or through the helper `App()`
|
|
48
|
-
# or `Luca.getApplication()` maintains the state of which page is active. You can access this
|
|
49
|
-
# in your code by calling `App().activePage()`.
|
|
50
|
-
#
|
|
51
|
-
# #### Controllers
|
|
52
|
-
#
|
|
53
|
-
# The `Luca.components.Controller` is a special type of component which contains
|
|
54
|
-
# other views, or `Pages` which only one will be visible at any given time. It expects
|
|
55
|
-
# that each page will have its own unique `@name` property. A `Luca.components.Controller` can
|
|
56
|
-
# contain other controllers, providing you with a way of structuring your application layout
|
|
57
|
-
# in an organized, hierarchal fashion.
|
|
58
|
-
#
|
|
59
|
-
# By default, any `Luca.Application` will have one `Luca.components.Controller` automatically
|
|
60
|
-
# created named 'main_controller' which is accessible by `MyApp.getMainController()`. Any
|
|
61
|
-
# components you define on the `Luca.Application` instance will be wrapped by the main controller
|
|
62
|
-
# automatically unless you specify `@useController = false` in your Application component definition.
|
|
63
|
-
application = Luca.register "Luca.Application"
|
|
64
|
-
application.extends "Luca.containers.Viewport"
|
|
65
|
-
|
|
66
|
-
application.triggers "controller:change",
|
|
67
|
-
"action:change"
|
|
68
|
-
|
|
69
|
-
application.publicConfiguration
|
|
70
|
-
name: "MyApp"
|
|
71
|
-
|
|
72
|
-
# The Application uses a Backbone.Model as a state machine, which
|
|
73
|
-
# allows you to get / set attributes, persist them somewhere, and
|
|
74
|
-
# most importantly to bind to change events of certain attributes.
|
|
75
|
-
#
|
|
76
|
-
# the @defaultState property will be the default attributes
|
|
77
|
-
stateful: {}
|
|
78
|
-
|
|
79
|
-
# if autoBoot is set to true, the application will
|
|
80
|
-
# attempt to boot on document ready.
|
|
81
|
-
autoBoot: false
|
|
82
|
-
|
|
83
|
-
# automatically starts the @router if it exists,
|
|
84
|
-
# once the components for the application have
|
|
85
|
-
# been created. Pass the event name you want to
|
|
86
|
-
# listen for on this component before you start history
|
|
87
|
-
autoStartHistory: "before:render"
|
|
88
|
-
|
|
89
|
-
# use Backbone.history push state?
|
|
90
|
-
pushState: false
|
|
91
|
-
|
|
92
|
-
# If the server renders the entire page
|
|
93
|
-
# first, then we should start history silently.
|
|
94
|
-
startHistorySilently: false
|
|
95
|
-
|
|
96
|
-
# In cases where we use pushState, we need to tell
|
|
97
|
-
# the application what the actual root url of our app
|
|
98
|
-
# is, since everything after would otherwise be a hashbang
|
|
99
|
-
rootUrl: undefined
|
|
100
|
-
|
|
101
|
-
# we will create a collection manager singleton
|
|
102
|
-
# by default unless otherwise specified.
|
|
103
|
-
useCollectionManager: true
|
|
104
|
-
|
|
105
|
-
# to pass options to the collection manager, set the @collectionManager
|
|
106
|
-
# hash which will get passed once the collection manager is created
|
|
107
|
-
collectionManager: {}
|
|
108
|
-
|
|
109
|
-
# by default we will use the standard collection manager which ships with
|
|
110
|
-
# Luca. If you would like to use your own extension of the collection manager
|
|
111
|
-
# just pass a reference to the class you would like to use.
|
|
112
|
-
collectionManagerClass: "Luca.CollectionManager"
|
|
113
|
-
|
|
114
|
-
# Luca plugin apps are apps which mount onto existing
|
|
115
|
-
# luca apps, and will not have the behavior of a main
|
|
116
|
-
# app which acts as a singleton
|
|
117
|
-
plugin: false
|
|
118
|
-
|
|
119
|
-
# by default, the application will use a controller
|
|
120
|
-
# component, which is a card view container which shows
|
|
121
|
-
# one view at a time. this is useful for having an application
|
|
122
|
-
# with several 'pages' so to speak
|
|
123
|
-
useController: true
|
|
124
|
-
|
|
125
|
-
# If your Application does not behave as a Viewport that monopolizes
|
|
126
|
-
# its entire element, but instead you wish to render the application
|
|
127
|
-
# controller to a specific element, you can specify the css selector of that element.
|
|
128
|
-
mainControllerContainer: undefined
|
|
129
|
-
|
|
130
|
-
# keyEvents understands the following modifiers:
|
|
131
|
-
# - `⇧`, `shift`, `option`, `⌥`, `alt`, `ctrl`, `control`, `command`, and `⌘`.
|
|
132
|
-
# The following special keys can be used for shortcuts:
|
|
133
|
-
# `backspace`, `tab`, `clear`, `enter`, `return`, `esc`, `escape`, `space`,
|
|
134
|
-
# `up`, `down`, `left`, `right`, `home`, `end`, `pageup`, `pagedown`, `del`, `delete`
|
|
135
|
-
# and `f1` through `f19`.
|
|
136
|
-
#
|
|
137
|
-
# **Note**: This requires the keymaster.js library to be loaded. This library is included
|
|
138
|
-
# with the bundled dependencies that ship with Luca.
|
|
139
|
-
#
|
|
140
|
-
# Example:
|
|
141
|
-
# application.configuration
|
|
142
|
-
# keyEvents:
|
|
143
|
-
# '⌘+r, ctrl+r': "keyHandlerFunction"
|
|
144
|
-
# keyHandlerFunction: -> alert 'something + r was pressed'
|
|
145
|
-
keyEvents: {}
|
|
146
|
-
|
|
147
|
-
# create getter methods for the various roles in the application's components on the application itself.
|
|
148
|
-
createRoleBasedGetters: false
|
|
149
|
-
|
|
150
|
-
# create an instance of Luca.SocketManager which is a Backbone.Events style abstraction that
|
|
151
|
-
# sits on top of services like faye, or socket.io
|
|
152
|
-
useSocketManager: false
|
|
153
|
-
socketManagerOptions: {}
|
|
154
|
-
|
|
155
|
-
application.publicMethods
|
|
156
|
-
# Creating your Application and all of its components and pages is
|
|
157
|
-
# generally as simple as creating an instance of your Application class:
|
|
158
|
-
# Luca.onReady ()->
|
|
159
|
-
# window.MyApp = new Luca.Application()
|
|
160
|
-
# window.MyApp.boot()
|
|
161
|
-
initialize: (@options={})->
|
|
162
|
-
app = @
|
|
163
|
-
appName = @name
|
|
164
|
-
alreadyRunning = Luca.getApplication?()
|
|
165
|
-
|
|
166
|
-
Luca.Application.registerInstance(@)
|
|
167
|
-
|
|
168
|
-
Luca.concerns.StateModel.__initializer.call(@)
|
|
169
|
-
|
|
170
|
-
# The Collection Manager is responsible for managing instances
|
|
171
|
-
# of collections, usually to guarantee only a single collection is
|
|
172
|
-
# instantiated for a given resource, to maintain 'authoritative'
|
|
173
|
-
# representations of models.
|
|
174
|
-
@setupCollectionManager()
|
|
175
|
-
|
|
176
|
-
# Socket Manager provides a bridge between remote pub/sub providers and
|
|
177
|
-
# the backbone.events interface on various components in the system.
|
|
178
|
-
@setupSocketManager()
|
|
179
|
-
|
|
180
|
-
Luca.containers.Viewport::initialize.apply @, arguments
|
|
181
|
-
|
|
182
|
-
# The Controller is the piece of the application that handles showing
|
|
183
|
-
# and hiding 'pages' of the app. The Application has a navigate_to
|
|
184
|
-
# method which delegates to the controller, and allows you to navigate
|
|
185
|
-
# to a given page, or component, by its name. The controller integrates
|
|
186
|
-
# with the state machine of the application
|
|
187
|
-
@setupMainController() if @useController is true
|
|
188
|
-
|
|
189
|
-
# we will render when all of the various components
|
|
190
|
-
# which handle our data dependencies determine that
|
|
191
|
-
# we are ready
|
|
192
|
-
@defer(()-> app.render()).until(@, "ready")
|
|
193
|
-
|
|
194
|
-
# Set up the Backbone Router
|
|
195
|
-
@setupRouter()
|
|
196
|
-
|
|
197
|
-
# the keyHandler allows us to specify
|
|
198
|
-
# keyEvents on our application with an API very similar
|
|
199
|
-
# to the DOM events API for Backbone.View
|
|
200
|
-
#
|
|
201
|
-
# Example:
|
|
202
|
-
#
|
|
203
|
-
# keyEvents:
|
|
204
|
-
# meta:
|
|
205
|
-
# forwardslash: "altSlashHandler"
|
|
206
|
-
if (@useKeyHandler is true or @useKeyRouter is true) and @keyEvents?
|
|
207
|
-
@setupKeyHandler()
|
|
208
|
-
|
|
209
|
-
# if the application is a plugin designed to modify the behavior
|
|
210
|
-
# of another app, then don't claim ownership. otherwise the most common
|
|
211
|
-
# use-case is that there will be one application instance
|
|
212
|
-
unless @plugin is true or alreadyRunning
|
|
213
|
-
Luca.getApplication = (name)=>
|
|
214
|
-
return app unless name?
|
|
215
|
-
Luca.Application.instances[ name ]
|
|
216
|
-
|
|
217
|
-
if @autoBoot
|
|
218
|
-
if Luca.util.resolve(@name)
|
|
219
|
-
throw "Attempting to override window.#{ @name } when it already exists"
|
|
220
|
-
|
|
221
|
-
$ ->
|
|
222
|
-
window[ appName ] = app
|
|
223
|
-
app.boot()
|
|
224
|
-
|
|
225
|
-
Luca.trigger "application:available", @
|
|
226
|
-
|
|
227
|
-
# @activeView() returns a reference to the instance of the view
|
|
228
|
-
# which is currently monopolizing the viewport. In an application
|
|
229
|
-
# which uses a controller hierarchy, it will be the last controller
|
|
230
|
-
# has activated one of its pages.
|
|
231
|
-
activeView: ()->
|
|
232
|
-
if active = @activeSubSection()
|
|
233
|
-
@view( active )
|
|
234
|
-
else
|
|
235
|
-
@view( @activeSection() )
|
|
236
|
-
|
|
237
|
-
# Returns the name of the active component on the main controller
|
|
238
|
-
activeSection: ()->
|
|
239
|
-
@get("active_section")
|
|
240
|
-
|
|
241
|
-
# Returns the name of the active component on the nested controllers
|
|
242
|
-
# on the main controller, if there is one. These get set on the
|
|
243
|
-
# state machine in response to card switch events on the controller component
|
|
244
|
-
activeSubSection: ()->
|
|
245
|
-
@get("active_sub_section")
|
|
246
|
-
|
|
247
|
-
activePages: ()->
|
|
248
|
-
console.log "This method will be getting removed in Luca 1.0"
|
|
249
|
-
@$('.luca-controller').map (index,element)=> $(element).data('active-section')
|
|
250
|
-
|
|
251
|
-
# boot should trigger the ready event, which will call the initial call
|
|
252
|
-
# to render() your application, which will have a cascading effect on every
|
|
253
|
-
# subcomponent in the view, recursively rendering everything which is set
|
|
254
|
-
# to automatically render (i.e. any non-deferrable components ).
|
|
255
|
-
#
|
|
256
|
-
# you should use boot to fire up any dependent collections, manager, any
|
|
257
|
-
# sort of data processing, whatever your application requires to run outside
|
|
258
|
-
# of the views
|
|
259
|
-
boot: ()->
|
|
260
|
-
@trigger "ready"
|
|
261
|
-
for service in [@collectionManager, @socket, @router]
|
|
262
|
-
service?.trigger("ready")
|
|
263
|
-
|
|
264
|
-
# delegate to the collection manager's get or create function.
|
|
265
|
-
# use App.collection() to create or access existing collections
|
|
266
|
-
collection: ()->
|
|
267
|
-
@collectionManager.getOrCreate.apply(@collectionManager, arguments)
|
|
268
|
-
|
|
269
|
-
# Get an attribute from our internal state machine
|
|
270
|
-
get: (attribute)->
|
|
271
|
-
@state.get(attribute)
|
|
272
|
-
|
|
273
|
-
# Set an attribute on our internal state machine
|
|
274
|
-
set: (attribute, value, options)->
|
|
275
|
-
@state.set.apply(@state, arguments)
|
|
276
|
-
|
|
277
|
-
# Access a named view by its @name property.
|
|
278
|
-
view: (name)->
|
|
279
|
-
Luca.cache(name)
|
|
280
|
-
|
|
281
|
-
# delegate to the main controller so that we can switch the active section
|
|
282
|
-
# easily directly from the application. If passed a callback, this function
|
|
283
|
-
# will get called in the context of the activated component. This method is useful
|
|
284
|
-
# inside of custom route handlers if you are manually defining them on a `Backbone.Router`
|
|
285
|
-
# instead of using the built in `@routes` helper.
|
|
286
|
-
navigate_to: (component_name, callback)->
|
|
287
|
-
@getMainController().navigate_to(component_name, callback)
|
|
288
|
-
|
|
289
|
-
application.privateMethods
|
|
290
|
-
# Any time the Application's main controller changes its active page
|
|
291
|
-
# we track the name of that page ( aka section ) on our state machine.
|
|
292
|
-
# If the active page on the main controller is another controller component,
|
|
293
|
-
# then we will track that controller's active component as our active sub section.
|
|
294
|
-
setupControllerBindings: ()->
|
|
295
|
-
app = @
|
|
296
|
-
# any time the main controller card switches we should track
|
|
297
|
-
# the active card on the global state chart
|
|
298
|
-
@getMainController()?.bind "after:card:switch", (previous,current)=>
|
|
299
|
-
@state.set(active_section:current.name)
|
|
300
|
-
app.trigger "controller:change", previous.name, current.name
|
|
301
|
-
|
|
302
|
-
# any time the card switches on one of the sub controllers
|
|
303
|
-
# then we should track the active sub section on the global state chart
|
|
304
|
-
@getMainController()?.each (component)=>
|
|
305
|
-
type = component.type || component.ctype
|
|
306
|
-
if type.match(/controller$/)
|
|
307
|
-
component.bind "after:card:switch", (previous,current)=>
|
|
308
|
-
@state.set(active_sub_section:current.name)
|
|
309
|
-
app.trigger "action:change", previous.name, current.name
|
|
310
|
-
|
|
311
|
-
# A typical structure for a Luca.Application is that it will act as a `Viewport` which
|
|
312
|
-
# monopolizes the entire top level element in your dom ( either the body tag, or a top
|
|
313
|
-
# level element just underneath it) This `Viewport` is an abstract element where we can
|
|
314
|
-
# setup global event bindings, like keyBindings and such. The `Viewport` will generally
|
|
315
|
-
# contain a `Luca.components.Controller` instance called "main_controller" that is responsible
|
|
316
|
-
# for displaying the active page for a given route.
|
|
317
|
-
setupMainController: ()->
|
|
318
|
-
if @useController is true
|
|
319
|
-
definedComponents = @components || []
|
|
320
|
-
base =
|
|
321
|
-
type: 'controller'
|
|
322
|
-
name: "main_controller"
|
|
323
|
-
role: "main_controller"
|
|
324
|
-
components: definedComponents
|
|
325
|
-
|
|
326
|
-
if @mainControllerContainer?
|
|
327
|
-
_.extend(base, container: @mainControllerContainer)
|
|
328
|
-
|
|
329
|
-
@components = [base]
|
|
330
|
-
|
|
331
|
-
@getMainController = ()=>
|
|
332
|
-
@findComponentByRole('main_controller')
|
|
333
|
-
|
|
334
|
-
@defer( @setupControllerBindings, false ).until("after:components")
|
|
335
|
-
|
|
336
|
-
setupCollectionManager: ()->
|
|
337
|
-
return unless @useCollectionManager is true
|
|
338
|
-
|
|
339
|
-
return if @collectionManager? and @collectionManager?.get?
|
|
340
|
-
|
|
341
|
-
if _.isString( @collectionManagerClass )
|
|
342
|
-
@collectionManagerClass = Luca.util.resolve( @collectionManagerClass )
|
|
343
|
-
|
|
344
|
-
collectionManagerOptions = @collectionManagerOptions || {}
|
|
345
|
-
|
|
346
|
-
# if the collectionManager property is present, and it
|
|
347
|
-
# isn't a reference to a collection manager instance, then
|
|
348
|
-
# it is being used as a configuration hash for when we do create
|
|
349
|
-
# the collection manager. so let's stash it.
|
|
350
|
-
if _.isObject(@collectionManager) and not _.isFunction( @collectionManager?.get )
|
|
351
|
-
collectionManagerOptions = @collectionManager
|
|
352
|
-
@collectionManager = undefined
|
|
353
|
-
|
|
354
|
-
# if the collection manager property is a string, then it is a
|
|
355
|
-
# reference to a name of a collection manager to use. so let's
|
|
356
|
-
# stash it
|
|
357
|
-
if _.isString(@collectionManager)
|
|
358
|
-
collectionManagerOptions =
|
|
359
|
-
name: @collectionManager
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
# let's try and get the collection manager by name if we can
|
|
363
|
-
@collectionManager = Luca.CollectionManager.get?( collectionManagerOptions.name )
|
|
364
|
-
|
|
365
|
-
# if we can't, then we will have to create one ourselves
|
|
366
|
-
unless _.isFunction(@collectionManager?.get)
|
|
367
|
-
collectionManagerOptions.autoStart = false
|
|
368
|
-
@collectionManager = new @collectionManagerClass( collectionManagerOptions )
|
|
369
|
-
|
|
370
|
-
# If our application is configured with a `@socketManagerOptions` property,
|
|
371
|
-
# it will create a socket manager instance for us automatically. It won't
|
|
372
|
-
# start the socket manager process until the `@boot()` method is called on the application.
|
|
373
|
-
setupSocketManager: ()->
|
|
374
|
-
return if _.isEmpty(@socketManagerOptions)
|
|
375
|
-
_.extend(@socketManagerOptions, autoStart: false)
|
|
376
|
-
|
|
377
|
-
@socket = new Luca.SocketManager(@socketManagerOptions)
|
|
378
|
-
|
|
379
|
-
# Sets up an instance of the Backbone.Router, and sets up the
|
|
380
|
-
# call to start the history tracking API once the appropriate
|
|
381
|
-
# application events have been fired.
|
|
382
|
-
setupRouter: ()->
|
|
383
|
-
return if not @router? and not @routes?
|
|
384
|
-
|
|
385
|
-
routerClass = Luca.Router
|
|
386
|
-
routerClass = Luca.util.resolve(@router) if _.isString(@router)
|
|
387
|
-
|
|
388
|
-
routerConfig = routerClass.prototype
|
|
389
|
-
routerConfig.routes ||= {}
|
|
390
|
-
routerConfig.app = @
|
|
391
|
-
|
|
392
|
-
if _.isObject( @routes )
|
|
393
|
-
for routePattern, endpoint of @routes
|
|
394
|
-
if endpoint.match(/\ /)
|
|
395
|
-
[page, action] = endpoint.split(' ')
|
|
396
|
-
else if endpoint.match(/\#/)
|
|
397
|
-
[page, action] = endpoint.split('#')
|
|
398
|
-
|
|
399
|
-
fn = _.uniqueId(page)
|
|
400
|
-
routerConfig[fn] = Luca.Application.routeTo(page).action(action)
|
|
401
|
-
routerConfig.routes[ routePattern ] = fn
|
|
402
|
-
|
|
403
|
-
@router = new routerClass(routerConfig)
|
|
404
|
-
|
|
405
|
-
# if this application has a router associated with it
|
|
406
|
-
# then we need to start backbone history on a certain event.
|
|
407
|
-
# you can control which by setting the @startHistoryOn property
|
|
408
|
-
if @router and @autoStartHistory
|
|
409
|
-
@autoStartHistory = "before:render" if @autoStartHistory is true
|
|
410
|
-
@defer( Luca.Application.startHistory, false).until(@, @autoStartHistory)
|
|
411
|
-
|
|
412
|
-
# The default implementation of setupKeyHandler is kept around for backward
|
|
413
|
-
# compatibility purposes. In Luca 1.0 we will be using keymaster.js for our
|
|
414
|
-
# key binding setup.
|
|
415
|
-
setupKeyHandler: ()->
|
|
416
|
-
return unless @keyEvents
|
|
417
|
-
|
|
418
|
-
@keyEvents.control_meta ||= {}
|
|
419
|
-
|
|
420
|
-
# allow for both meta_control, control_meta for the combo
|
|
421
|
-
_.extend(@keyEvents.control_meta, @keyEvents.meta_control) if @keyEvents.meta_control
|
|
422
|
-
|
|
423
|
-
handler = _.bind(@keyHandler, @)
|
|
424
|
-
|
|
425
|
-
for keyEvent in (@keypressEvents || ["keydown"])
|
|
426
|
-
$( document ).on( keyEvent, handler )
|
|
427
|
-
|
|
428
|
-
application.classMethods
|
|
429
|
-
instances:{}
|
|
430
|
-
|
|
431
|
-
# An application inspection helper, it describes the structure of this application's
|
|
432
|
-
# controlled components. For an application that consists of multiple nested controllers
|
|
433
|
-
# it will recursively walk each controller and build a tree of the various pages / controlers.
|
|
434
|
-
pageHierarchy: ()->
|
|
435
|
-
app = Luca()
|
|
436
|
-
mainController = app.getMainController()
|
|
437
|
-
|
|
438
|
-
getTree = (node)->
|
|
439
|
-
return {} unless node.components? or node.pages?
|
|
440
|
-
|
|
441
|
-
# recursively walks the pages on a controller
|
|
442
|
-
_( node.components || node.pages ).reduce (memo, page)->
|
|
443
|
-
memo[ page.name ] = page.name
|
|
444
|
-
memo[ page.name ] = getTree(page) if page.navigate_to?
|
|
445
|
-
memo
|
|
446
|
-
, {}
|
|
447
|
-
|
|
448
|
-
getTree( mainController )
|
|
449
|
-
|
|
450
|
-
# Registers this instance of the Luca.Appliction
|
|
451
|
-
# so that it is available via the Luca() helper, or through
|
|
452
|
-
# a call to Luca.Application.get().
|
|
453
|
-
registerInstance: (app)->
|
|
454
|
-
Luca.Application.instances[ app.name ] = app
|
|
455
|
-
|
|
456
|
-
# If the keymaster library is present, swap out the
|
|
457
|
-
# setupKeyHandler method with something which will enable
|
|
458
|
-
# keymaster support instead of our legacy system.
|
|
459
|
-
checkForKeymaster: ()->
|
|
460
|
-
if window?.key?.noConflict
|
|
461
|
-
Luca.key = window.key.noConflict()
|
|
462
|
-
|
|
463
|
-
Luca.Application::setupKeyHandler = ()->
|
|
464
|
-
return unless @keyEvents
|
|
465
|
-
Luca.util.setupKeymaster(@keyEvents, "all").on(@)
|
|
466
|
-
|
|
467
|
-
# This is used internally by the Application as it sets up
|
|
468
|
-
# the @routes property and uses it to configure the Luca.Router
|
|
469
|
-
# instance for your app. It allows you to specify the page you want
|
|
470
|
-
# to monopolize the viewport in your application by name, and regardless
|
|
471
|
-
# of how deeply nested that page may be among your controllers, it will know
|
|
472
|
-
# what to do.
|
|
473
|
-
routeTo: (pages...)->
|
|
474
|
-
last = _( pages ).last()
|
|
475
|
-
first = _( pages ).first()
|
|
476
|
-
|
|
477
|
-
callback = undefined
|
|
478
|
-
specifiedAction = undefined
|
|
479
|
-
|
|
480
|
-
routeHelper = (args...)->
|
|
481
|
-
path = @app || Luca()
|
|
482
|
-
index = 0
|
|
483
|
-
|
|
484
|
-
# we can specify a page by name, and not have to know its full path.
|
|
485
|
-
if pages.length is 1 and target = Luca(first)
|
|
486
|
-
pages = target.controllerPath()
|
|
487
|
-
|
|
488
|
-
# when we do know the full path
|
|
489
|
-
for page in pages when _.isString(page)
|
|
490
|
-
nextItem = pages[++index]
|
|
491
|
-
target = Luca(page)
|
|
492
|
-
|
|
493
|
-
if page is last
|
|
494
|
-
if specifiedAction? and not target[specifiedAction]? and not target.routeHandler?
|
|
495
|
-
console.log "You specified a component action to call when a route matches, but it does not exist on the component"
|
|
496
|
-
|
|
497
|
-
callback = if specifiedAction? and target[ specifiedAction ]?
|
|
498
|
-
_.bind(target[ specifiedAction ], target)
|
|
499
|
-
else if target.routeHandler?
|
|
500
|
-
target.routeHandler
|
|
501
|
-
|
|
502
|
-
callback ||= if _.isFunction(nextItem)
|
|
503
|
-
_.bind(nextItem, target)
|
|
504
|
-
else if _.isObject(nextItem)
|
|
505
|
-
if action = nextItem.action and target[action]?
|
|
506
|
-
_.bind(target[action], target)
|
|
507
|
-
|
|
508
|
-
path = path.navigate_to page, ()->
|
|
509
|
-
callback?.apply(target, args)
|
|
510
|
-
|
|
511
|
-
routeHelper.action = (action)->
|
|
512
|
-
specifiedAction = action
|
|
513
|
-
routeHelper
|
|
514
|
-
|
|
515
|
-
routeHelper
|
|
516
|
-
|
|
517
|
-
# Public: you can override Luca.Application.startHistory to
|
|
518
|
-
# modify how Backbone.history.start is called. This will get called
|
|
519
|
-
# by the Application instance in response to the @autoStartHistory property.
|
|
520
|
-
startHistory: ()->
|
|
521
|
-
Backbone.history.start
|
|
522
|
-
pushState: @pushState
|
|
523
|
-
rootUrl: @rootUrl
|
|
524
|
-
silent: @startHistorySilently
|
|
525
|
-
|
|
526
|
-
application.afterDefinition ()->
|
|
527
|
-
Luca.routeHelper = Luca.Application.routeTo
|
|
528
|
-
Luca.Application.checkForKeymaster()
|
|
529
|
-
|
|
530
|
-
application.register()
|