luca 0.9.76 → 0.9.89

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.
Files changed (457) hide show
  1. data/CHANGELOG +65 -2
  2. data/Gemfile +4 -0
  3. data/Gemfile.lock +18 -2
  4. data/Guardfile +3 -25
  5. data/README.md +50 -58
  6. data/ROADMAP +15 -32
  7. data/Rakefile +18 -77
  8. data/app.rb +12 -46
  9. data/{assets → app/assets}/images/glyphicons-halflings-white.png +0 -0
  10. data/{assets → app/assets}/images/glyphicons-halflings.png +0 -0
  11. data/app/assets/javascripts/luca-ui.js +1 -0
  12. data/app/assets/javascripts/luca/basic.coffee +8 -0
  13. data/{src → app/assets/javascripts/luca}/components/application.coffee +233 -65
  14. data/{src → app/assets/javascripts/luca}/components/collection_loader_view.coffee +0 -0
  15. data/app/assets/javascripts/luca/components/collection_view.coffee +207 -0
  16. data/{src → app/assets/javascripts/luca}/components/controller.coffee +27 -13
  17. data/{src/core/field.coffee → app/assets/javascripts/luca/components/fields/base.coffee} +18 -10
  18. data/{src → app/assets/javascripts/luca}/components/fields/button_field.coffee +8 -9
  19. data/{src → app/assets/javascripts/luca}/components/fields/checkbox_array.coffee +0 -0
  20. data/{src → app/assets/javascripts/luca}/components/fields/checkbox_field.coffee +0 -0
  21. data/{src → app/assets/javascripts/luca}/components/fields/file_upload_field.coffee +0 -0
  22. data/{src → app/assets/javascripts/luca}/components/fields/hidden_field.coffee +0 -0
  23. data/{src → app/assets/javascripts/luca}/components/fields/label_field.coffee +0 -0
  24. data/app/assets/javascripts/luca/components/fields/select_field.coffee +159 -0
  25. data/app/assets/javascripts/luca/components/fields/text_area_field.coffee +57 -0
  26. data/{src → app/assets/javascripts/luca}/components/fields/text_field.coffee +9 -3
  27. data/{src → app/assets/javascripts/luca}/components/fields/type_ahead_field.coffee +0 -0
  28. data/app/assets/javascripts/luca/components/form_view.coffee +421 -0
  29. data/app/assets/javascripts/luca/components/grid_layout_view.coffee +43 -0
  30. data/app/assets/javascripts/luca/components/index.coffee +7 -0
  31. data/app/assets/javascripts/luca/components/load_mask.coffee +8 -0
  32. data/{src → app/assets/javascripts/luca}/components/multi_collection_view.coffee +34 -34
  33. data/app/assets/javascripts/luca/components/nav_bar.coffee +80 -0
  34. data/app/assets/javascripts/luca/components/page.coffee +69 -0
  35. data/app/assets/javascripts/luca/components/page_controller.coffee +3 -0
  36. data/{src → app/assets/javascripts/luca}/components/pagination_control.coffee +13 -13
  37. data/{src → app/assets/javascripts/luca}/components/record_manager.coffee +0 -0
  38. data/{src → app/assets/javascripts/luca}/components/router.coffee +4 -1
  39. data/app/assets/javascripts/luca/components/simple_collection_view.coffee +10 -0
  40. data/app/assets/javascripts/luca/components/table_view.coffee +93 -0
  41. data/app/assets/javascripts/luca/components/table_view_scrollable.coffee +23 -0
  42. data/{src → app/assets/javascripts/luca}/concerns/application_event_bindings.coffee +1 -1
  43. data/app/assets/javascripts/luca/concerns/collection_event_bindings.coffee +47 -0
  44. data/{src → app/assets/javascripts/luca}/concerns/deferrable.coffee +1 -2
  45. data/app/assets/javascripts/luca/concerns/development_tool_helpers.coffee +30 -0
  46. data/{src → app/assets/javascripts/luca}/concerns/dom_helpers.coffee +10 -7
  47. data/{src → app/assets/javascripts/luca}/concerns/enhanced_properties.coffee +0 -0
  48. data/{src → app/assets/javascripts/luca}/concerns/filterable.coffee +39 -20
  49. data/app/assets/javascripts/luca/concerns/form_model_bindings.coffee +20 -0
  50. data/{src → app/assets/javascripts/luca}/concerns/grid_layout.coffee +0 -0
  51. data/{src → app/assets/javascripts/luca}/concerns/loadmaskable.coffee +17 -11
  52. data/{src → app/assets/javascripts/luca}/concerns/local_storage.coffee +0 -0
  53. data/app/assets/javascripts/luca/concerns/modal_view.coffee +63 -0
  54. data/{src → app/assets/javascripts/luca}/concerns/model_presenter.coffee +0 -0
  55. data/{src → app/assets/javascripts/luca}/concerns/paginatable.coffee +6 -20
  56. data/{src → app/assets/javascripts/luca}/concerns/query_collection_bindings.coffee +16 -8
  57. data/app/assets/javascripts/luca/concerns/sortable.coffee +69 -0
  58. data/app/assets/javascripts/luca/concerns/state_model.coffee +58 -0
  59. data/{src → app/assets/javascripts/luca}/concerns/templating.coffee +6 -1
  60. data/app/assets/javascripts/luca/config.coffee +54 -0
  61. data/{src → app/assets/javascripts/luca}/containers/card_view.coffee +23 -8
  62. data/{src/core → app/assets/javascripts/luca/containers}/container.coffee +228 -77
  63. data/app/assets/javascripts/luca/containers/index.coffee +2 -0
  64. data/{src → app/assets/javascripts/luca}/containers/modal_view.coffee +1 -1
  65. data/{src → app/assets/javascripts/luca}/containers/panel_toolbar.coffee +5 -6
  66. data/{src → app/assets/javascripts/luca}/containers/tab_view.coffee +19 -10
  67. data/{src → app/assets/javascripts/luca}/containers/viewport.coffee +11 -12
  68. data/{src → app/assets/javascripts/luca}/core/collection.coffee +37 -23
  69. data/{src/components → app/assets/javascripts/luca/core}/collection_view.coffee +21 -38
  70. data/{src/plugins → app/assets/javascripts/luca/core}/events.coffee +38 -6
  71. data/app/assets/javascripts/luca/core/index.coffee +12 -0
  72. data/{src → app/assets/javascripts/luca}/core/model.coffee +1 -1
  73. data/{src → app/assets/javascripts/luca}/core/observer.coffee +0 -0
  74. data/app/assets/javascripts/luca/core/panel.coffee +124 -0
  75. data/{src/define.coffee → app/assets/javascripts/luca/core/registry/component_definition.coffee} +59 -8
  76. data/{src → app/assets/javascripts/luca/core/registry}/concerns.coffee +0 -0
  77. data/app/assets/javascripts/luca/core/registry/index.coffee +4 -0
  78. data/{src/core → app/assets/javascripts/luca/core/registry}/meta_data.coffee +6 -0
  79. data/{src/core → app/assets/javascripts/luca/core/registry}/registry.coffee +20 -14
  80. data/app/assets/javascripts/luca/core/templates.coffee +51 -0
  81. data/app/assets/javascripts/luca/core/view.coffee +364 -0
  82. data/app/assets/javascripts/luca/dependencies.coffee +9 -0
  83. data/{src/tools → app/assets/javascripts/luca/development}/code_mirror_field.coffee +2 -1
  84. data/app/assets/javascripts/luca/development/code_sync_manager.coffee +126 -0
  85. data/app/assets/javascripts/luca/development/component.coffee +76 -0
  86. data/app/assets/javascripts/luca/development/components.coffee +57 -0
  87. data/{src/tools → app/assets/javascripts/luca/development}/console.coffee +6 -5
  88. data/app/assets/javascripts/luca/development/index.coffee +5 -0
  89. data/{src → app/assets/javascripts/luca}/framework.coffee +16 -99
  90. data/app/assets/javascripts/luca/index.coffee +8 -0
  91. data/{src → app/assets/javascripts/luca}/managers/collection_manager.coffee +12 -8
  92. data/app/assets/javascripts/luca/managers/index.coffee +2 -0
  93. data/app/assets/javascripts/luca/managers/socket_manager.coffee +89 -0
  94. data/{src → app/assets/javascripts/luca}/templates/components/bootstrap_form_controls.jst.ejs +0 -0
  95. data/{src → app/assets/javascripts/luca}/templates/components/collection_loader_view.jst.ejs +0 -0
  96. data/{src → app/assets/javascripts/luca}/templates/components/form_alert.jst.ejs +0 -0
  97. data/{src → app/assets/javascripts/luca}/templates/components/grid_view.jst.ejs +0 -0
  98. data/{src → app/assets/javascripts/luca}/templates/components/grid_view_empty_text.jst.ejs +0 -0
  99. data/{src → app/assets/javascripts/luca}/templates/components/load_mask.jst.ejs +0 -0
  100. data/app/assets/javascripts/luca/templates/components/nav_bar.jst.ejs +19 -0
  101. data/{src → app/assets/javascripts/luca}/templates/components/pagination.jst.ejs +0 -0
  102. data/{src/templates → app/assets/javascripts/luca/templates/components}/table_view.jst.ejs +0 -0
  103. data/{src → app/assets/javascripts/luca}/templates/containers/basic.jst.ejs +0 -0
  104. data/{src → app/assets/javascripts/luca}/templates/containers/tab_selector_container.jst.ejs +0 -0
  105. data/app/assets/javascripts/luca/templates/containers/tab_view.jst.ejs +2 -0
  106. data/{src → app/assets/javascripts/luca}/templates/containers/toolbar_wrapper.jst.ejs +0 -0
  107. data/{src → app/assets/javascripts/luca}/templates/fields/button_field.jst.ejs +0 -0
  108. data/{src → app/assets/javascripts/luca}/templates/fields/button_field_link.jst.ejs +0 -0
  109. data/{src → app/assets/javascripts/luca}/templates/fields/checkbox_array.jst.ejs +0 -0
  110. data/{src → app/assets/javascripts/luca}/templates/fields/checkbox_array_item.jst.ejs +0 -0
  111. data/{src → app/assets/javascripts/luca}/templates/fields/checkbox_field.jst.ejs +0 -0
  112. data/{src → app/assets/javascripts/luca}/templates/fields/file_upload_field.jst.ejs +0 -0
  113. data/{src → app/assets/javascripts/luca}/templates/fields/hidden_field.jst.ejs +0 -0
  114. data/{src → app/assets/javascripts/luca}/templates/fields/select_field.jst.ejs +0 -0
  115. data/{src → app/assets/javascripts/luca}/templates/fields/text_area_field.jst.ejs +0 -0
  116. data/{src → app/assets/javascripts/luca}/templates/fields/text_field.jst.ejs +0 -0
  117. data/app/assets/javascripts/luca/util/deprecations.coffee +18 -0
  118. data/app/assets/javascripts/luca/util/index.coffee +4 -0
  119. data/app/assets/javascripts/luca/util/keybindings.coffee +24 -0
  120. data/app/assets/javascripts/luca/util/logging.coffee +30 -0
  121. data/{src/util.coffee → app/assets/javascripts/luca/util/luca.coffee} +27 -4
  122. data/{src/core → app/assets/javascripts/luca/util}/script_loader.coffee +0 -0
  123. data/{src/stylesheets → app/assets/stylesheets/luca}/components/checkbox_array.scss +0 -0
  124. data/app/assets/stylesheets/luca/components/form_view.scss +7 -0
  125. data/{src/stylesheets → app/assets/stylesheets/luca}/components/grid_view.scss +0 -0
  126. data/{src/stylesheets → app/assets/stylesheets/luca}/components/load_mask.scss +0 -0
  127. data/{vendor/assets/luca-ui/components/grid_view.css → app/assets/stylesheets/luca/components/table_view.scss} +60 -51
  128. data/{src/stylesheets → app/assets/stylesheets/luca}/components/viewport.scss +0 -0
  129. data/app/assets/stylesheets/luca/containers/container.scss +19 -0
  130. data/{src/stylesheets → app/assets/stylesheets/luca}/containers/modal_view.scss +0 -0
  131. data/{src/stylesheets → app/assets/stylesheets/luca}/containers/panels.scss +0 -0
  132. data/{src/stylesheets → app/assets/stylesheets/luca}/containers/tab_view.scss +0 -0
  133. data/{src/stylesheets/tools → app/assets/stylesheets/luca/development}/console.scss +0 -0
  134. data/app/assets/stylesheets/luca/development/index.css +3 -0
  135. data/app/assets/stylesheets/luca/index.css +4 -0
  136. data/{src/stylesheets → app/assets/stylesheets/luca}/normalize.scss +0 -0
  137. data/config.ru +1 -2
  138. data/docs/framework.json +1 -0
  139. data/docs/{application.md → old/application.md} +0 -0
  140. data/docs/{collection.md → old/collection.md} +0 -0
  141. data/docs/{collection_manager.md → old/collection_manager.md} +0 -0
  142. data/docs/{container_philosophy.md → old/container_philosophy.md} +0 -0
  143. data/docs/{event_binding_helpers.md → old/event_binding_helpers.md} +0 -0
  144. data/docs/{method_caching_and_computed_properties.md → old/method_caching_and_computed_properties.md} +0 -0
  145. data/docs/{view.md → old/view.md} +0 -0
  146. data/lib/generators/luca/application/application_generator.rb +12 -8
  147. data/lib/generators/luca/application/templates/controller.rb +0 -2
  148. data/lib/generators/luca/application/templates/index.html.erb +12 -0
  149. data/lib/generators/luca/application/templates/index.html.haml +1 -0
  150. data/lib/generators/luca/application/templates/javascripts/application.coffee +18 -0
  151. data/lib/generators/luca/application/templates/javascripts/collection_manager.coffee +2 -0
  152. data/lib/generators/luca/application/templates/javascripts/config.coffee +3 -0
  153. data/lib/generators/luca/application/templates/javascripts/dependencies.coffee +3 -0
  154. data/lib/generators/luca/application/templates/javascripts/home.jst.ejs +2 -0
  155. data/lib/generators/luca/application/templates/javascripts/index.coffee +15 -0
  156. data/lib/generators/luca/application/templates/javascripts/router.coffee +4 -0
  157. data/lib/guard/luca.rb +84 -0
  158. data/lib/luca.rb +18 -1
  159. data/lib/luca/asset_compiler.rb +117 -0
  160. data/lib/luca/collection.rb +64 -0
  161. data/lib/luca/collection/endpoint.rb +37 -0
  162. data/lib/luca/collection/file_backend.rb +121 -0
  163. data/lib/luca/collection/redis_backend.rb +153 -0
  164. data/lib/luca/compiled_asset.rb +61 -0
  165. data/lib/luca/component_definition.rb +338 -0
  166. data/lib/luca/luca_application.rb +247 -0
  167. data/lib/luca/project.rb +73 -0
  168. data/lib/luca/project_harness.rb +96 -0
  169. data/lib/luca/rails.rb +5 -3
  170. data/lib/luca/rails/engine.rb +12 -0
  171. data/lib/luca/rails/version.rb +1 -2
  172. data/lib/luca/stylesheet.rb +36 -0
  173. data/lib/luca/template.rb +2 -0
  174. data/lib/luca/template_asset.rb +64 -0
  175. data/lib/railties/luca/tasks.rake +38 -0
  176. data/spec/{components → javascripts/components}/application_spec.coffee +0 -0
  177. data/spec/{components → javascripts/components}/collection_loader_view_spec.coffee +0 -0
  178. data/spec/{components → javascripts/components}/collection_view_spec.coffee +0 -0
  179. data/spec/{components → javascripts/components}/controller_spec.coffee +4 -0
  180. data/spec/{components → javascripts/components}/fields/checkbox_array_spec.coffee +0 -0
  181. data/spec/javascripts/components/form_view_spec.coffee +162 -0
  182. data/spec/{components → javascripts/components}/grid_view_spec.coffee +0 -0
  183. data/spec/{components → javascripts/components}/multi_collection_view_spec.coffee +0 -0
  184. data/spec/{components → javascripts/components}/pagination_control_spec.coffee +0 -0
  185. data/spec/{components → javascripts/components}/record_manager_spec.coffee +0 -0
  186. data/spec/{components → javascripts/components}/table_view_spec.coffee +0 -0
  187. data/spec/{components → javascripts/components}/template_spec.coffee +0 -0
  188. data/spec/javascripts/concerns/collection_event_bindings_spec.coffee +15 -0
  189. data/spec/{concerns → javascripts/concerns}/dom_helpers_spec.coffee +2 -2
  190. data/spec/{concerns → javascripts/concerns}/filterable_spec.coffee +4 -4
  191. data/spec/{concerns → javascripts/concerns}/model_presenter_spec.coffee +0 -0
  192. data/spec/{concerns → javascripts/concerns}/paginatable_spec.coffee +0 -0
  193. data/spec/javascripts/concerns/state_model_spec.coffee +55 -0
  194. data/spec/{containers → javascripts/containers}/card_view_spec.coffee +5 -0
  195. data/spec/{containers → javascripts/containers}/modal_view_spec.coffee +0 -0
  196. data/spec/{containers → javascripts/containers}/panel_view_spec.coffee +0 -0
  197. data/spec/{containers → javascripts/containers}/tab_view_spec.coffee +0 -0
  198. data/spec/{containers → javascripts/containers}/viewport_spec.coffee +0 -0
  199. data/spec/{core → javascripts/core}/collection_spec.coffee +25 -0
  200. data/spec/{concerns_spec.coffee → javascripts/core/concerns_spec.coffee} +0 -0
  201. data/spec/{core → javascripts/core}/container_spec.coffee +8 -6
  202. data/spec/{define_spec.coffee → javascripts/core/define_spec.coffee} +0 -0
  203. data/spec/javascripts/core/events_spec.coffee +26 -0
  204. data/spec/{core → javascripts/core}/field_spec.coffee +0 -0
  205. data/spec/{framework_spec.coffee → javascripts/core/framework_spec.coffee} +1 -1
  206. data/spec/{core → javascripts/core}/model_spec.coffee +0 -0
  207. data/spec/{core → javascripts/core}/observer_spec.coffee +0 -0
  208. data/spec/{util_spec.coffee → javascripts/core/util_spec.coffee} +2 -2
  209. data/spec/{core → javascripts/core}/view_spec.coffee +114 -38
  210. data/spec/javascripts/dependencies/index.coffee +3 -0
  211. data/{assets → spec}/javascripts/dependencies/jasmine-html.js +0 -0
  212. data/{assets → spec}/javascripts/dependencies/jasmine.js +0 -0
  213. data/{assets → spec}/javascripts/dependencies/sinon.js +0 -0
  214. data/spec/{helper.coffee → javascripts/helper.coffee} +0 -0
  215. data/spec/{managers → javascripts/managers}/collection_manager_spec.coffee +0 -0
  216. data/spec/{managers → javascripts/managers}/socket_manager_spec.coffee +0 -0
  217. data/spec/lib/component_definition_spec.rb +63 -0
  218. data/spec/lib/input_compiler_spec.rb +9 -0
  219. data/spec/lib/luca_application_spec.rb +30 -0
  220. data/spec/support/fixtures/application.coffee +45 -0
  221. data/spec/support/fixtures/component.coffee +34 -0
  222. data/{assets/javascripts/sandbox/views/inspector/instance_list.coffee → tutorials/component-definitions.md} +0 -0
  223. data/{spec/concerns/state_model_spec.coffee → tutorials/component-definitions/01_intro.md} +0 -0
  224. data/tutorials/component-driven-design.md +140 -0
  225. data/tutorials/structure-of-a-project.md +63 -0
  226. data/vendor/assets/javascripts/backbone-ext.js +21 -0
  227. data/vendor/assets/javascripts/backbone-min.js +38 -0
  228. data/vendor/assets/javascripts/backbone-query.min.js +1 -0
  229. data/vendor/assets/javascripts/bootstrap.min.js +7 -0
  230. data/{assets/javascripts/dependencies → vendor/assets/javascripts}/codemirror-coffeescript.js +0 -0
  231. data/{assets/javascripts/dependencies → vendor/assets/javascripts}/codemirror-css.js +0 -0
  232. data/{assets/javascripts/dependencies → vendor/assets/javascripts}/codemirror-html.js +0 -0
  233. data/{assets/javascripts/dependencies → vendor/assets/javascripts}/codemirror-javascript.js +0 -0
  234. data/{assets/javascripts/dependencies → vendor/assets/javascripts}/codemirror-less.js +0 -0
  235. data/vendor/assets/javascripts/codemirror-ui.js +503 -0
  236. data/{assets/javascripts/dependencies → vendor/assets/javascripts}/codemirror-vim.js +0 -0
  237. data/{assets/javascripts/dependencies → vendor/assets/javascripts}/codemirror.js +0 -0
  238. data/vendor/assets/javascripts/hogan.js +707 -0
  239. data/vendor/assets/javascripts/inflections.js +656 -0
  240. data/vendor/assets/javascripts/jasmine-html.js +190 -0
  241. data/vendor/assets/javascripts/jasmine.js +2476 -0
  242. data/{assets/javascripts/dependencies → vendor/assets/javascripts}/jquery.js +0 -0
  243. data/vendor/assets/javascripts/keymaster.min.js +4 -0
  244. data/vendor/assets/javascripts/luca-dependencies.min.js +6 -0
  245. data/vendor/assets/javascripts/luca-development.min.js +1 -0
  246. data/vendor/assets/javascripts/luca-spec.js +11 -0
  247. data/vendor/assets/javascripts/luca-ui.js +3336 -2561
  248. data/vendor/assets/javascripts/luca-ui.min.js +5 -5
  249. data/vendor/assets/javascripts/luca.full.min.js +10 -0
  250. data/vendor/assets/javascripts/luca.min.js +5 -0
  251. data/{assets/javascripts/dependencies → vendor/assets/javascripts}/modal.js +0 -0
  252. data/{assets/javascripts/dependencies → vendor/assets/javascripts}/modernizr.min.js +0 -0
  253. data/{assets/javascripts/dependencies → vendor/assets/javascripts}/prettify.js +0 -0
  254. data/vendor/assets/javascripts/sinon.js +3469 -0
  255. data/{assets/javascripts/dependencies → vendor/assets/javascripts}/spin-min.js +0 -0
  256. data/{assets/javascripts/dependencies → vendor/assets/javascripts}/underscore-min.js +0 -0
  257. data/vendor/assets/javascripts/underscore-string.min.js +1 -0
  258. data/vendor/assets/stylesheets/bootstrap-responsive.min.css +9 -0
  259. data/vendor/assets/stylesheets/bootstrap.min.css +9 -0
  260. data/{assets → vendor/assets}/stylesheets/codemirror-blackboard.css +0 -0
  261. data/{assets → vendor/assets}/stylesheets/codemirror-monokai.css +0 -0
  262. data/{assets → vendor/assets}/stylesheets/codemirror.css +0 -0
  263. data/{assets → vendor/assets}/stylesheets/jasmine.css +0 -0
  264. data/vendor/assets/stylesheets/luca-components.css +204 -0
  265. data/vendor/assets/stylesheets/luca-development.css +23 -0
  266. data/vendor/assets/stylesheets/luca-ui.css +58 -461
  267. data/views/jasmine.erb +2 -2
  268. metadata +280 -336
  269. data/assets/javascripts/dependencies.coffee +0 -5
  270. data/assets/javascripts/dependencies/backbone-min.js +0 -37
  271. data/assets/javascripts/dependencies/backbone-query.min.js +0 -1
  272. data/assets/javascripts/dependencies/bootstrap.min.js +0 -7
  273. data/assets/javascripts/dependencies/coffee-script.js +0 -12189
  274. data/assets/javascripts/dependencies/underscore-string.min.js +0 -14
  275. data/assets/javascripts/luca-templates.js +0 -1
  276. data/assets/javascripts/luca-ui-base.coffee +0 -1
  277. data/assets/javascripts/luca-ui-bootstrap.js +0 -1
  278. data/assets/javascripts/luca-ui-development-tools.coffee +0 -9
  279. data/assets/javascripts/luca-ui-full.js +0 -3
  280. data/assets/javascripts/luca-ui-spec.coffee +0 -2
  281. data/assets/javascripts/luca-ui.js +0 -3
  282. data/assets/javascripts/luca/index.coffee +0 -1
  283. data/assets/javascripts/sandbox.coffee +0 -7
  284. data/assets/javascripts/sandbox/application.coffee +0 -57
  285. data/assets/javascripts/sandbox/config.coffee +0 -7
  286. data/assets/javascripts/sandbox/router.coffee +0 -24
  287. data/assets/javascripts/sandbox/templates/builder.luca +0 -2
  288. data/assets/javascripts/sandbox/templates/builder/component_list.luca +0 -1
  289. data/assets/javascripts/sandbox/templates/main.luca +0 -53
  290. data/assets/javascripts/sandbox/templates/sandbox.luca +0 -1
  291. data/assets/javascripts/sandbox/templates/sandbox/docs_index.luca +0 -1
  292. data/assets/javascripts/sandbox/templates/sandbox/navigation.luca +0 -8
  293. data/assets/javascripts/sandbox/templates/sandbox/readme.luca +0 -30
  294. data/assets/javascripts/sandbox/views/builder.coffee +0 -133
  295. data/assets/javascripts/sandbox/views/builder/builder_canvas.coffee +0 -3
  296. data/assets/javascripts/sandbox/views/builder/builder_editor.coffee +0 -6
  297. data/assets/javascripts/sandbox/views/builder/component_list.coffee +0 -38
  298. data/assets/javascripts/sandbox/views/builder/project_browser.coffee +0 -14
  299. data/assets/javascripts/sandbox/views/docs_controller.coffee +0 -7
  300. data/assets/javascripts/sandbox/views/inspector.coffee +0 -11
  301. data/assets/javascripts/sandbox/views/inspector/instance_filter.coffee +0 -18
  302. data/assets/javascripts/sandbox/views/top_navigation.coffee +0 -4
  303. data/assets/javascripts/spec-dependencies.coffee +0 -4
  304. data/assets/stylesheets/bootstrap-responsive.min.css +0 -2
  305. data/assets/stylesheets/bootstrap.min.css +0 -727
  306. data/assets/stylesheets/luca-ui-bootstrap.css +0 -4
  307. data/assets/stylesheets/luca-ui-development-tools.css +0 -5
  308. data/assets/stylesheets/luca-ui-full.css +0 -3
  309. data/assets/stylesheets/luca-ui-spec.css +0 -3
  310. data/assets/stylesheets/luca-ui.css +0 -3
  311. data/assets/stylesheets/prettify.css +0 -40
  312. data/assets/stylesheets/sandbox.css +0 -3
  313. data/assets/stylesheets/sandbox/builder.scss +0 -79
  314. data/assets/stylesheets/sandbox/sandbox.scss +0 -18
  315. data/assets/stylesheets/themes/amelia-bootstrap.css +0 -826
  316. data/assets/stylesheets/themes/slate-bootstrap.css +0 -797
  317. data/assets/stylesheets/themes/superhero-bootstrap.css +0 -830
  318. data/lib/generators/luca/application/templates/javascripts/application.js +0 -28
  319. data/lib/generators/luca/application/templates/javascripts/application.js.coffee +0 -20
  320. data/lib/generators/luca/application/templates/javascripts/config.js +0 -15
  321. data/lib/generators/luca/application/templates/javascripts/config.js.coffee +0 -9
  322. data/lib/generators/luca/application/templates/javascripts/dependencies.js +0 -5
  323. data/lib/generators/luca/application/templates/javascripts/dependencies.js.coffee +0 -5
  324. data/lib/generators/luca/application/templates/javascripts/index.js +0 -9
  325. data/lib/generators/luca/application/templates/javascripts/index.js.coffee +0 -9
  326. data/lib/generators/luca/application/templates/javascripts/main.js +0 -8
  327. data/lib/generators/luca/application/templates/javascripts/main.js.coffee +0 -3
  328. data/lib/generators/luca/application/templates/javascripts/main.jst.ejs +0 -1
  329. data/lib/generators/luca/application/templates/javascripts/router.js +0 -12
  330. data/lib/generators/luca/application/templates/javascripts/router.js.coffee +0 -7
  331. data/lib/luca/code_browser.rb +0 -55
  332. data/lib/luca/command_line.rb +0 -69
  333. data/spec/components/form_view_spec.coffee +0 -84
  334. data/spec/containers/column_view_spec.coffee +0 -0
  335. data/spec/containers/split_view_spec.coffee +0 -0
  336. data/src/components/base_toolbar.coffee +0 -17
  337. data/src/components/fields/select_field.coffee +0 -96
  338. data/src/components/fields/text_area_field.coffee +0 -42
  339. data/src/components/form_button_toolbar.coffee +0 -28
  340. data/src/components/form_view.coffee +0 -282
  341. data/src/components/grid_view.coffee +0 -269
  342. data/src/components/index.coffee +0 -1
  343. data/src/components/load_mask.coffee +0 -3
  344. data/src/components/nav_bar.coffee +0 -22
  345. data/src/components/page_controller.coffee +0 -2
  346. data/src/components/table_view.coffee +0 -69
  347. data/src/components/template.coffee +0 -5
  348. data/src/components/toolbar_dialog.coffee +0 -25
  349. data/src/concerns/collection_event_bindings.coffee +0 -26
  350. data/src/concerns/modal_view.coffee +0 -38
  351. data/src/concerns/state_model.coffee +0 -16
  352. data/src/containers/column_view.coffee +0 -42
  353. data/src/containers/page_view.coffee +0 -2
  354. data/src/containers/panel_view.coffee +0 -23
  355. data/src/containers/split_view.coffee +0 -8
  356. data/src/core/core.coffee +0 -0
  357. data/src/core/panel.coffee +0 -118
  358. data/src/core/view.coffee +0 -172
  359. data/src/index.coffee +0 -25
  360. data/src/managers/socket_manager.coffee +0 -54
  361. data/src/plugins/development_tool_helpers.coffee +0 -21
  362. data/src/samples/definition.coffee +0 -49
  363. data/src/stylesheets/base.scss +0 -0
  364. data/src/stylesheets/components/form_view.scss +0 -59
  365. data/src/stylesheets/components/toolbar.scss +0 -0
  366. data/src/stylesheets/containers/container.scss +0 -11
  367. data/src/stylesheets/tools/class_browser.scss +0 -32
  368. data/src/stylesheets/tools/code_editor.scss +0 -24
  369. data/src/stylesheets/tools/component_tester.scss +0 -26
  370. data/src/templates/components/nav_bar.jst.ejs +0 -4
  371. data/src/templates/containers/tab_view.jst.ejs +0 -2
  372. data/src/tools/application_inspector.coffee +0 -2
  373. data/src/tools/code_editor.coffee +0 -258
  374. data/src/tools/coffee_script_editor.coffee +0 -82
  375. data/src/tools/collection_inspector.coffee +0 -4
  376. data/src/tools/collections/components.coffee +0 -59
  377. data/src/tools/collections/instances.coffee +0 -15
  378. data/src/tools/component_tester.coffee +0 -462
  379. data/src/tools/models/components.coffee +0 -25
  380. data/src/tools/models/instance.coffee +0 -2
  381. data/src/tools/templates/component_tester/help.luca +0 -14
  382. data/vendor/assets/javascripts/luca-ui-base.js +0 -5304
  383. data/vendor/assets/javascripts/luca-ui-bootstrap.js +0 -9
  384. data/vendor/assets/javascripts/luca-ui-development-tools.js +0 -18561
  385. data/vendor/assets/javascripts/luca-ui-development-tools.min.js +0 -15
  386. data/vendor/assets/javascripts/luca-ui-full.js +0 -6696
  387. data/vendor/assets/javascripts/luca-ui-full.min.js +0 -9
  388. data/vendor/assets/javascripts/luca-ui-spec.js +0 -6815
  389. data/vendor/assets/javascripts/luca-ui-templates.js +0 -92
  390. data/vendor/assets/luca-ui/base.css +0 -85
  391. data/vendor/assets/luca-ui/components/application.js +0 -91
  392. data/vendor/assets/luca-ui/components/base_toolbar.js +0 -23
  393. data/vendor/assets/luca-ui/components/controller.js +0 -38
  394. data/vendor/assets/luca-ui/components/fields/button_field.js +0 -45
  395. data/vendor/assets/luca-ui/components/fields/checkbox_field.js +0 -43
  396. data/vendor/assets/luca-ui/components/fields/file_upload_field.js +0 -20
  397. data/vendor/assets/luca-ui/components/fields/hidden_field.js +0 -20
  398. data/vendor/assets/luca-ui/components/fields/select_field.js +0 -97
  399. data/vendor/assets/luca-ui/components/fields/text_area_field.js +0 -48
  400. data/vendor/assets/luca-ui/components/fields/text_field.js +0 -46
  401. data/vendor/assets/luca-ui/components/fields/type_ahead_field.js +0 -13
  402. data/vendor/assets/luca-ui/components/form_button_toolbar.js +0 -32
  403. data/vendor/assets/luca-ui/components/form_view.css +0 -32
  404. data/vendor/assets/luca-ui/components/form_view.js +0 -207
  405. data/vendor/assets/luca-ui/components/grid_view.js +0 -202
  406. data/vendor/assets/luca-ui/components/record_manager.js +0 -207
  407. data/vendor/assets/luca-ui/components/router.js +0 -36
  408. data/vendor/assets/luca-ui/components/template.js +0 -26
  409. data/vendor/assets/luca-ui/components/toolbar.css +0 -11
  410. data/vendor/assets/luca-ui/containers/card_view.js +0 -98
  411. data/vendor/assets/luca-ui/containers/column_view.js +0 -52
  412. data/vendor/assets/luca-ui/containers/container.css +0 -3
  413. data/vendor/assets/luca-ui/containers/modal_view.css +0 -0
  414. data/vendor/assets/luca-ui/containers/modal_view.js +0 -87
  415. data/vendor/assets/luca-ui/containers/panel_view.js +0 -34
  416. data/vendor/assets/luca-ui/containers/split_view.js +0 -13
  417. data/vendor/assets/luca-ui/containers/tab_view.css +0 -16
  418. data/vendor/assets/luca-ui/containers/tab_view.js +0 -80
  419. data/vendor/assets/luca-ui/containers/viewport.js +0 -18
  420. data/vendor/assets/luca-ui/core/collection.js +0 -221
  421. data/vendor/assets/luca-ui/core/container.js +0 -205
  422. data/vendor/assets/luca-ui/core/field.js +0 -59
  423. data/vendor/assets/luca-ui/core/observer.js +0 -42
  424. data/vendor/assets/luca-ui/core/view.js +0 -127
  425. data/vendor/assets/luca-ui/framework.js +0 -110
  426. data/vendor/assets/luca-ui/index.js +0 -5
  427. data/vendor/assets/luca-ui/managers/collection_manager.js +0 -98
  428. data/vendor/assets/luca-ui/managers/socket_manager.js +0 -52
  429. data/vendor/assets/luca-ui/modules/deferrable.js +0 -21
  430. data/vendor/assets/luca-ui/modules/local_storage.js +0 -81
  431. data/vendor/assets/luca-ui/normalize.css +0 -359
  432. data/vendor/assets/luca-ui/stylesheets/base.css +0 -85
  433. data/vendor/assets/luca-ui/stylesheets/components/form_view.css +0 -32
  434. data/vendor/assets/luca-ui/stylesheets/components/grid_view.css +0 -76
  435. data/vendor/assets/luca-ui/stylesheets/components/toolbar.css +0 -11
  436. data/vendor/assets/luca-ui/stylesheets/containers/container.css +0 -3
  437. data/vendor/assets/luca-ui/stylesheets/containers/modal_view.css +0 -0
  438. data/vendor/assets/luca-ui/stylesheets/containers/tab_view.css +0 -16
  439. data/vendor/assets/luca-ui/stylesheets/normalize.css +0 -359
  440. data/vendor/assets/luca-ui/templates/components/bootstrap_form_controls.js +0 -4
  441. data/vendor/assets/luca-ui/templates/components/form_view.js +0 -4
  442. data/vendor/assets/luca-ui/templates/components/grid_view.js +0 -4
  443. data/vendor/assets/luca-ui/templates/components/grid_view_empty_text.js +0 -4
  444. data/vendor/assets/luca-ui/templates/containers/basic.js +0 -4
  445. data/vendor/assets/luca-ui/templates/containers/tab_selector_container.js +0 -4
  446. data/vendor/assets/luca-ui/templates/containers/tab_view.js +0 -4
  447. data/vendor/assets/luca-ui/templates/containers/toolbar_wrapper.js +0 -4
  448. data/vendor/assets/luca-ui/templates/fields/button_field.js +0 -4
  449. data/vendor/assets/luca-ui/templates/fields/button_field_link.js +0 -4
  450. data/vendor/assets/luca-ui/templates/fields/checkbox_field.js +0 -4
  451. data/vendor/assets/luca-ui/templates/fields/file_upload_field.js +0 -4
  452. data/vendor/assets/luca-ui/templates/fields/hidden_field.js +0 -4
  453. data/vendor/assets/luca-ui/templates/fields/select_field.js +0 -4
  454. data/vendor/assets/luca-ui/templates/fields/text_area_field.js +0 -4
  455. data/vendor/assets/luca-ui/templates/fields/text_field.js +0 -4
  456. data/vendor/assets/luca-ui/templates/sample/contents.js +0 -4
  457. data/vendor/assets/luca-ui/templates/sample/welcome.js +0 -4
@@ -0,0 +1,2 @@
1
+ #= require ./container
2
+ #= require_directory .
@@ -1,4 +1,4 @@
1
- _.def("Luca.ModalView").extends("Luca.core.Container").with
1
+ _.def("Luca.ModalView").extends("Luca.Container").with
2
2
 
3
3
  closeOnEscape: true
4
4
 
@@ -1,4 +1,4 @@
1
- panelToolbar = Luca.register "Luca.components.PanelToolbar"
1
+ panelToolbar = Luca.register "Luca.PanelToolbar"
2
2
  # The Panel Toolbar is a collection of buttons and / or dropdowns
3
3
  # which are automatically created by BasicPanel classes, or can be
4
4
  # added to any other view component.
@@ -19,10 +19,6 @@ panelToolbar.defines
19
19
  # color options are primary, info, success, warning, danger, inverse
20
20
  buttons:[]
21
21
 
22
- className: "luca-ui-toolbar btn-toolbar"
23
-
24
- well: true
25
-
26
22
  orientation: 'top'
27
23
 
28
24
  autoBindEventHandlers: true
@@ -134,7 +130,10 @@ buildButton = (config, wrap=true)->
134
130
  buttonAttributes["class"] += " dropdown-toggle"
135
131
  buttonAttributes["data-toggle"] = "dropdown"
136
132
 
137
- dropdownItems = _(config.dropdown).map (dropdownItem)=>
133
+ dropdownItems = for dropdownItem in config.dropdown
134
+ if _.isObject(dropdownItem)
135
+ dropdownItem = _.values(dropdownItem).reverse()
136
+
138
137
  link = make "a", {}, dropdownItem[1]
139
138
  make "li", {"data-eventId": dropdownItem[0]}, link
140
139
 
@@ -1,6 +1,6 @@
1
- _.def('Luca.containers.TabView').extends('Luca.containers.CardView').with
2
-
3
1
  tabView = Luca.register "Luca.containers.TabView"
2
+ tabView.extends "Luca.containers.CardView"
3
+
4
4
  tabView.triggers "before:select",
5
5
  "after:select"
6
6
 
@@ -12,7 +12,8 @@ tabView.privateConfiguration
12
12
  additionalClassNames: 'tabbable'
13
13
  navClass: "nav-tabs"
14
14
  bodyTemplate: "containers/tab_view"
15
- bodyEl: "div.tab-content"
15
+ bodyClassName: "tab-content"
16
+ skipGetterMethods: true
16
17
 
17
18
  tabView.defines
18
19
  initialize: (@options={})->
@@ -40,9 +41,9 @@ tabView.defines
40
41
  afterRender: ()->
41
42
  Luca.containers.CardView::afterRender?.apply @, arguments
42
43
  tabContainerId = @tabContainer().attr("id")
43
- @registerEvent("click ##{ tabContainerId } li a", "select")
44
+ @registerEvent("click ##{ tabContainerId } li a", "tabSelectClickHandler")
44
45
 
45
- if Luca.config.enableBoostrap and (@tab_position is "left" or @tab_position is "right")
46
+ if Luca.config.enableBootstrap and (@tab_position is "left" or @tab_position is "right")
46
47
  @tabContainerWrapper().addClass("span2")
47
48
  @tabContentWrapper().addClass("span9")
48
49
 
@@ -63,13 +64,17 @@ tabView.defines
63
64
  @tabSelectors().removeClass('active')
64
65
  @activeTabSelector().addClass('active')
65
66
 
66
- select: (e)->
67
- e.preventDefault()
68
-
67
+ tabSelectClickHandler: (e)->
68
+ e?.preventDefault()
69
69
  me = my = $( e.target )
70
+ me = my ||= @tabSelectors()[0]
71
+ tabName = my.parent().data('target')
70
72
 
73
+ @select(tabName)
74
+
75
+ select: (tabName=0)->
71
76
  @trigger "before:select", @
72
- @activate my.parent().data('target')
77
+ @activate(tabName)
73
78
  @trigger "after:select", @
74
79
 
75
80
  componentElements: ()->
@@ -85,4 +90,8 @@ tabView.defines
85
90
  @$("ul.#{ @navClass }", @tabContainerWrapper() )
86
91
 
87
92
  tabSelectors: ()->
88
- @$( 'li.tab-selector', @tabContainer() )
93
+ @$( 'li.tab-selector', @tabContainer() )
94
+
95
+ bodyTemplateVars: ()->
96
+ cid: @cid
97
+ navClass: @navClass
@@ -1,23 +1,22 @@
1
- _.def('Luca.containers.Viewport').extend('Luca.containers.CardView').with
2
-
3
- activeItem: 0
4
-
5
- additionalClassNames: 'luca-ui-viewport'
1
+ viewport = Luca.register "Luca.containers.Viewport"
2
+ viewport.extends "Luca.Container"
6
3
 
4
+ viewport.defines
7
5
  fullscreen: true
8
-
9
6
  fluid: false
10
7
 
8
+ applyWrapper: true
11
9
 
12
10
  initialize: (@options={})->
13
11
  _.extend @, @options
14
12
 
15
- if Luca.config.enableBoostrap is true
16
- @wrapperClass = if @fluid is true then Luca.containers.Viewport.fluidWrapperClass else Luca.containers.Viewport.defaultWrapperClass
13
+ if Luca.config.enableBoostrap is true and @applyWrapper is true
14
+ @wrapperClass = if @fluid is true then Luca.config.fluidWrapperClass else Luca.config.wrapperClass
17
15
 
18
- Luca.core.Container::initialize.apply(@, arguments)
16
+ Luca.Container::initialize.apply(@, arguments)
19
17
 
20
- @enableFullscreen() if @fullscreen is true
18
+ if @fullscreen is true
19
+ @enableFullscreen()
21
20
 
22
21
  enableFluid: ()-> @enableWrapper()
23
22
 
@@ -79,5 +78,5 @@ _.def('Luca.containers.Viewport').extend('Luca.containers.CardView').with
79
78
  # IMPLEMENT
80
79
 
81
80
 
82
- Luca.containers.Viewport.defaultWrapperClass = 'row'
83
- Luca.containers.Viewport.fluidWrapperClass = 'row-fluid'
81
+ Luca.containers.Viewport.defaultWrapperClass = Luca.config.wrapperClass || 'container'
82
+ Luca.containers.Viewport.fluidWrapperClass = Luca.config.fluidWrapperClass || 'container-fluid'
@@ -24,7 +24,6 @@ collection.defines
24
24
 
25
25
  initialize: (models=[], @options)->
26
26
  _.extend @, @options
27
- @setupMethodCaching()
28
27
  @_reset()
29
28
 
30
29
  # By specifying a @cache_key property or method, you can instruct
@@ -36,7 +35,7 @@ collection.defines
36
35
  console.log 'The @cached property of Luca.Collection is being deprecated. Please change to cache_key'
37
36
 
38
37
  if @cache_key ||= @cached
39
- @bootstrap_cache_key = if _.isFunction( @cache_key ) then @cache_key() else @cache_key
38
+ @bootstrap_cache_key = Luca.util.read(@cache_key)
40
39
 
41
40
  if @registerAs or @registerWith
42
41
  console.log "This configuration API is deprecated. use @name and @manager properties instead"
@@ -57,8 +56,8 @@ collection.defines
57
56
  # to be scoped with some sort of unique id, as say some sort of belongsTo relationship
58
57
  # then you can specify @registerAs as a method()
59
58
  if @manager
60
- @name ||= @cache_key()
61
- @name = if _.isFunction( @name ) then @name() else @name
59
+ @name ||= Luca.util.read(@cache_key)
60
+ @name = Luca.util.read(@name)
62
61
 
63
62
  unless @private or @anonymous
64
63
  @bind "after:initialize", ()=>
@@ -69,7 +68,7 @@ collection.defines
69
68
  # locally in localStorage
70
69
  if @useLocalStorage is true and window.localStorage?
71
70
  table = @bootstrap_cache_key || @name
72
- throw "Must specify either a cached or registerAs property to use localStorage"
71
+ throw "Must specify a cache_key property or method to use localStorage"
73
72
  @localStorage = new Luca.LocalStore( table )
74
73
 
75
74
  # Populating a collection with local data
@@ -93,6 +92,8 @@ collection.defines
93
92
  Luca.concern.setup.call(@)
94
93
  Luca.util.setupHooks.call(@, @hooks)
95
94
 
95
+ @setupMethodCaching()
96
+
96
97
  @trigger "after:initialize"
97
98
 
98
99
  # Luca.Collections will append a query string to the URL
@@ -152,34 +153,32 @@ collection.defines
152
153
  # You can apply params to a collection, so that any upcoming requests
153
154
  # made to the REST API are made with the key values specified
154
155
  applyParams: (params)->
155
- @base_params = _( Luca.Collection.baseParams() ).clone()
156
+ @base_params = _( Luca.Collection.baseParams() ).clone() || {}
156
157
  _.extend @base_params, params
157
158
 
158
159
  @
159
160
 
160
- # If this collection is to be registered with some global collection
161
- # tracker such as new Luca.CollectionManager() then we will register
162
- # ourselves automatically
163
- #
164
- # To automatically register a collection with the registry, instantiate
165
- # it with the registerWith property, which can either be a reference to
166
- # the manager itself, or a string in case the manager isn't available
167
- # at compile time
168
- register: (collectionManager=Luca.CollectionManager.get(), key="", collection)->
169
- throw "Can not register with a collection manager without a key" unless key.length >= 1
170
- throw "Can not register with a collection manager without a valid collection manager" unless collectionManager?
161
+ register: (collectionManager, key="", collection)->
162
+ collectionManager ||= Luca.CollectionManager.get()
163
+
164
+ unless key.length >= 1
165
+ throw "Attempt to register a collection without specifying a key."
166
+
171
167
 
172
168
  # by passing a string instead of a reference to an object, we can look up
173
169
  # that object only when necessary. this prevents us from having to create
174
170
  # the manager instance before we can define our collections
175
171
  if _.isString( collectionManager )
176
- collectionManager = Luca.util.nestedValue( collectionManager, (window || global) )
172
+ collectionManager = Luca.util.resolve( collectionManager )
177
173
 
178
- throw "Could not register with collection manager" unless collectionManager
174
+ unless collectionManager?
175
+ throw "Attempt to register with a non existent collection manager."
179
176
 
180
177
  if _.isFunction( collectionManager.add )
181
178
  return collectionManager.add(key, collection)
182
179
 
180
+ # If we don't want to use the CollectionManager class, and just want
181
+ # to cache collection instances on an object, we can do that too.
183
182
  if _.isObject( collectionManager )
184
183
  collectionManager[ key ] = collection
185
184
 
@@ -249,7 +248,7 @@ collection.defines
249
248
  wrapped()
250
249
  @unbind "reset", @
251
250
 
252
- unless @fetching or not options.autoFetch
251
+ unless @fetching or not !!options.autoFetch
253
252
  @fetch()
254
253
 
255
254
  # ifLoaded is equivalent to binding to the reset trigger with
@@ -296,6 +295,8 @@ collection.defines
296
295
  @clearMethodCache(name)
297
296
 
298
297
  setupMethodCaching: ()->
298
+ return unless @cachedMethods?.length > 0
299
+
299
300
  collection = @
300
301
  membershipEvents = ["reset","add","remove"]
301
302
  cache = @_methodCache = {}
@@ -310,7 +311,7 @@ collection.defines
310
311
 
311
312
  # wrap the collection method with a basic memoize operation
312
313
  collection[ method ] = ()->
313
- cache[method].value ||= cache[method].original.apply collection, arguments
314
+ cache[method].value ||= cache[method].original.apply(collection, arguments)
314
315
 
315
316
  # bind to events on the collection, which once triggered, will
316
317
  # invalidate the cached value. causing us to have to restore it
@@ -321,7 +322,9 @@ collection.defines
321
322
  dependencies = method.split(':')[1]
322
323
 
323
324
  if dependencies
324
- for dependency in dependencies.split(",")
325
+ watchForChangesOn = dependencies.split(",")
326
+
327
+ _( watchForChangesOn ).each (dependency)->
325
328
  collection.bind "change:#{dependency}", ()->
326
329
  collection.clearMethodCache(method: method)
327
330
 
@@ -329,9 +332,17 @@ collection.defines
329
332
  # make sure the querying interface from backbone.query is present
330
333
  # in the case backbone-query isn't loaded. without it, it will
331
334
  # just return the models
335
+ #
336
+ # TODO:
337
+ #
338
+ # Currently the View mixins: Filterable, Sortable, and Paginatable
339
+ # implement a lot of logic that belongs in this interface.
332
340
  query: (filter={},options={})->
333
341
  if Backbone.QueryCollection?
334
- return Backbone.QueryCollection::query.apply(@, arguments)
342
+ if _.isFunction(prepare = options.prepare || @prepareQuery)
343
+ filter = prepare(filter)
344
+
345
+ return Backbone.QueryCollection::query.call(@, filter, options)
335
346
  else
336
347
  @models
337
348
 
@@ -373,6 +384,9 @@ Luca.Collection.baseParams = (obj)->
373
384
 
374
385
  Luca.util.read( Luca.Collection._baseParams )
375
386
 
387
+ Luca.Collection.resetBaseParams = ()->
388
+ Luca.Collection._baseParams = {}
389
+
376
390
  # In order to make our Backbone Apps super fast it is a good practice
377
391
  # to pre-populate your collections by what is referred to as bootstrapping
378
392
  #
@@ -1,25 +1,14 @@
1
+ # The CollectionView handles rendering a set of models from a
2
+ # collection
1
3
  collectionView = Luca.register "Luca.components.CollectionView"
2
- # The CollectionView facilitates the rendering of a Collection
3
- # of models into a group of many rendered templates
4
- #
5
- # Example:
6
- #
7
- # new Luca.components.CollectionView
8
- # itemTemplate: "template_name"
9
- # collection: "collection_class_name"
10
- # pagination:
11
- # page: 1
12
- # limit: 15
13
- # filterable:
14
- # query:
15
- # default: 'value'
16
- #
17
- collectionView.extends "Luca.components.Panel"
4
+
5
+ collectionView.extends "Luca.Panel"
18
6
 
19
7
  collectionView.mixesIn "QueryCollectionBindings",
20
8
  "LoadMaskable",
21
9
  "Filterable",
22
- "Paginatable"
10
+ "Paginatable",
11
+ "Sortable"
23
12
 
24
13
  collectionView.triggers "before:refresh",
25
14
  "after:refresh",
@@ -73,25 +62,21 @@ collectionView.defines
73
62
  console.log "Missing Collection on #{ @name || @cid }", @, @collection
74
63
  throw "Collection Views must have a valid backbone collection"
75
64
 
76
- @collection.on "before:fetch", ()=>
77
- @trigger "enable:loadmask"
78
-
79
- @collection.bind "reset", ()=>
80
- @refresh()
81
- @trigger "disable:loadmask"
65
+ @on "data:refresh", @refresh, @
82
66
 
83
- @collection.bind "remove", ()=>
84
- @refresh()
67
+ @on "collection:reset", @refresh, @
68
+ @on "collection:remove", @refresh, @
69
+ @on "collection:add", @refresh, @
70
+ @on "collection:change", @refreshModel, @ if @observeChanges is true
85
71
 
86
- @collection.bind "add", ()=>
87
- @refresh()
72
+ Luca.Panel::initialize.apply(@, arguments)
88
73
 
89
- if @observeChanges is true
90
- @collection.on "change", @refreshModel, @
74
+ view = @
75
+ if @getCollection()?.length > 0
76
+ @on "after:render", ()->
77
+ view.refresh()
78
+ view.unbind "after:render", @
91
79
 
92
- Luca.components.Panel::initialize.apply(@, arguments)
93
-
94
- @on "refresh", @refresh, @
95
80
 
96
81
  attributesForItem: (item, model)->
97
82
  _.extend {}, class: @itemClassName, "data-index": item.index, "data-model-id": item.model.get('id')
@@ -138,7 +123,10 @@ collectionView.defines
138
123
  @trigger("before:refresh", models, query, options)
139
124
 
140
125
  if models.length is 0
141
- @trigger("empty:results")
126
+ @trigger("empty:results", query, options)
127
+
128
+ if @getCollection()?.length > 0 and models.length is 0
129
+ @trigger("empty:filter", query, options)
142
130
 
143
131
  index = 0
144
132
  for model in models
@@ -156,11 +144,6 @@ collectionView.defines
156
144
  eventTrigger = _([domEvent,"#{ @itemTagName }.#{ @itemClassName }", selector]).compact().join(" ")
157
145
  Luca.View::registerEvent(eventTrigger,handler)
158
146
 
159
- render: ()->
160
- @refresh()
161
- @$attach() if @$el.parent().length > 0 and @container?
162
- @
163
-
164
147
  # Private Helpers
165
148
 
166
149
 
@@ -9,7 +9,7 @@
9
9
  # or
10
10
  #
11
11
  # view.defer( myCallback ).until("triggered:event")
12
- class DeferredBindingProxy
12
+ class Luca.DeferredBindingProxy
13
13
  constructor: (@object, operation, wrapWithUnderscore=true)->
14
14
  if _.isFunction(operation)
15
15
  fn = operation
@@ -41,10 +41,42 @@ class DeferredBindingProxy
41
41
 
42
42
  @object
43
43
 
44
+ class Luca.EventRelayer
45
+ constructor: (options={})->
46
+ {@target,@events,@prefix,@source} = options
47
+
48
+ if @events.length > 0 and @target and @source
49
+ @setup()
50
+ @
51
+
52
+ prefixedBy: (@prefix="")->
53
+ @
54
+
55
+ from:(@source)->
56
+ @
57
+
58
+ to: (@target)->
59
+ @
60
+
61
+ setup: (@target)->
62
+ prefix = @prefix
63
+ target = @target
64
+
65
+ for eventId in @events
66
+ console.log "Binding to ", eventId, prefix, @target.name, @source.name
67
+ @source.on eventId, (args...)->
68
+ trigger = _( [prefix,eventId] ).compact().join(':')
69
+ args.unshift(trigger)
70
+ @trigger.apply(@, args)
71
+ , target
72
+
73
+
44
74
  Luca.Events =
75
+ relays: (events...)->
76
+ new Luca.EventRelayer(relayer: @, events: events)
45
77
 
46
78
  defer: (operation, wrapWithUnderscore=true)->
47
- new DeferredBindingProxy(@, operation, wrapWithUnderscore)
79
+ new Luca.DeferredBindingProxy(@, operation, wrapWithUnderscore)
48
80
 
49
81
  once: (trigger, callback, context)->
50
82
  context ||= @
@@ -56,14 +88,14 @@ Luca.Events =
56
88
  @bind trigger, onceFn
57
89
 
58
90
 
59
- Luca.EventsExt =
91
+ Luca.EventsExt =
60
92
  waitUntil:(trigger, context)->
61
93
  @waitFor.call(@, trigger, context )
62
-
94
+
63
95
  waitFor: (trigger, context)->
64
96
  self = @
65
- proxy =
66
- on:(target)->
97
+ proxy =
98
+ on:(target)->
67
99
  target.waitFor.call(target,trigger,context)
68
100
  and:(runList...)->
69
101
  for fn in runList