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.
Files changed (604) hide show
  1. data/CHANGELOG +9 -153
  2. data/Gemfile +1 -10
  3. data/Gemfile.lock +40 -113
  4. data/Guardfile +25 -3
  5. data/README.md +57 -54
  6. data/ROADMAP +32 -15
  7. data/Rakefile +75 -24
  8. data/app.rb +46 -12
  9. data/{app/assets → assets}/images/glyphicons-halflings-white.png +0 -0
  10. data/{app/assets → assets}/images/glyphicons-halflings.png +0 -0
  11. data/assets/javascripts/dependencies/backbone-min.js +37 -0
  12. data/assets/javascripts/dependencies/backbone-query.min.js +1 -0
  13. data/assets/javascripts/dependencies/bootstrap.min.js +7 -0
  14. data/{vendor/assets/javascripts → assets/javascripts/dependencies}/codemirror-coffeescript.js +0 -0
  15. data/{vendor/assets/javascripts → assets/javascripts/dependencies}/codemirror-css.js +0 -0
  16. data/{vendor/assets/javascripts → assets/javascripts/dependencies}/codemirror-html.js +0 -0
  17. data/{vendor/assets/javascripts → assets/javascripts/dependencies}/codemirror-javascript.js +0 -0
  18. data/{vendor/assets/javascripts → assets/javascripts/dependencies}/codemirror-less.js +0 -0
  19. data/{vendor/assets/javascripts → assets/javascripts/dependencies}/codemirror-vim.js +0 -0
  20. data/{vendor/assets/javascripts → assets/javascripts/dependencies}/codemirror.js +0 -0
  21. data/assets/javascripts/dependencies/coffee-script.js +12189 -0
  22. data/{spec → assets}/javascripts/dependencies/jasmine-html.js +0 -0
  23. data/{spec → assets}/javascripts/dependencies/jasmine.js +0 -0
  24. data/assets/javascripts/dependencies/jquery.js +4 -0
  25. data/{vendor/assets/javascripts → assets/javascripts/dependencies}/modal.js +0 -0
  26. data/{vendor/assets/javascripts → assets/javascripts/dependencies}/modernizr.min.js +0 -0
  27. data/{vendor/assets/javascripts → assets/javascripts/dependencies}/prettify.js +0 -0
  28. data/{spec → assets}/javascripts/dependencies/sinon.js +0 -0
  29. data/{vendor/assets/javascripts → assets/javascripts/dependencies}/spin-min.js +0 -0
  30. data/assets/javascripts/dependencies/underscore-min.js +31 -0
  31. data/assets/javascripts/dependencies/underscore-string.min.js +14 -0
  32. data/assets/javascripts/dependencies.coffee +5 -0
  33. data/assets/javascripts/luca/index.coffee +1 -0
  34. data/assets/javascripts/luca-templates.js +1 -0
  35. data/assets/javascripts/luca-ui-base.coffee +1 -0
  36. data/assets/javascripts/luca-ui-bootstrap.js +1 -0
  37. data/assets/javascripts/luca-ui-development-tools.coffee +9 -0
  38. data/assets/javascripts/luca-ui-full.js +3 -0
  39. data/assets/javascripts/luca-ui-spec.coffee +2 -0
  40. data/assets/javascripts/luca-ui.js +3 -0
  41. data/assets/javascripts/sandbox/application.coffee +57 -0
  42. data/assets/javascripts/sandbox/config.coffee +7 -0
  43. data/assets/javascripts/sandbox/router.coffee +24 -0
  44. data/assets/javascripts/sandbox/templates/builder/component_list.luca +1 -0
  45. data/assets/javascripts/sandbox/templates/builder.luca +2 -0
  46. data/assets/javascripts/sandbox/templates/main.luca +53 -0
  47. data/assets/javascripts/sandbox/templates/sandbox/docs_index.luca +1 -0
  48. data/assets/javascripts/sandbox/templates/sandbox/navigation.luca +8 -0
  49. data/assets/javascripts/sandbox/templates/sandbox/readme.luca +30 -0
  50. data/assets/javascripts/sandbox/templates/sandbox.luca +1 -0
  51. data/assets/javascripts/sandbox/views/builder/builder_canvas.coffee +3 -0
  52. data/assets/javascripts/sandbox/views/builder/builder_editor.coffee +6 -0
  53. data/assets/javascripts/sandbox/views/builder/component_list.coffee +38 -0
  54. data/assets/javascripts/sandbox/views/builder/project_browser.coffee +14 -0
  55. data/assets/javascripts/sandbox/views/builder.coffee +133 -0
  56. data/assets/javascripts/sandbox/views/docs_controller.coffee +7 -0
  57. data/assets/javascripts/sandbox/views/inspector/instance_filter.coffee +18 -0
  58. data/{app/assets/stylesheets/luca/containers/modal_view.scss → assets/javascripts/sandbox/views/inspector/instance_list.coffee} +0 -0
  59. data/assets/javascripts/sandbox/views/inspector.coffee +11 -0
  60. data/assets/javascripts/sandbox/views/top_navigation.coffee +4 -0
  61. data/assets/javascripts/sandbox.coffee +7 -0
  62. data/assets/javascripts/spec-dependencies.coffee +4 -0
  63. data/assets/stylesheets/bootstrap-responsive.min.css +2 -0
  64. data/assets/stylesheets/bootstrap.min.css +727 -0
  65. data/{vendor/assets → assets}/stylesheets/codemirror-blackboard.css +0 -0
  66. data/{vendor/assets → assets}/stylesheets/codemirror-monokai.css +0 -0
  67. data/{vendor/assets → assets}/stylesheets/codemirror.css +0 -0
  68. data/{vendor/assets → assets}/stylesheets/jasmine.css +0 -0
  69. data/assets/stylesheets/luca-ui-bootstrap.css +4 -0
  70. data/assets/stylesheets/luca-ui-development-tools.css +5 -0
  71. data/assets/stylesheets/luca-ui-full.css +3 -0
  72. data/assets/stylesheets/luca-ui-spec.css +3 -0
  73. data/assets/stylesheets/luca-ui.css +3 -0
  74. data/assets/stylesheets/prettify.css +40 -0
  75. data/assets/stylesheets/sandbox/builder.scss +79 -0
  76. data/assets/stylesheets/sandbox/sandbox.scss +18 -0
  77. data/assets/stylesheets/sandbox.css +3 -0
  78. data/assets/stylesheets/themes/amelia-bootstrap.css +826 -0
  79. data/assets/stylesheets/themes/slate-bootstrap.css +797 -0
  80. data/assets/stylesheets/themes/superhero-bootstrap.css +830 -0
  81. data/config.ru +2 -1
  82. data/docs/{old/application.md → application.md} +0 -0
  83. data/docs/{old/collection.md → collection.md} +0 -0
  84. data/docs/{old/collection_manager.md → collection_manager.md} +0 -0
  85. data/docs/{old/container_philosophy.md → container_philosophy.md} +0 -0
  86. data/docs/{old/event_binding_helpers.md → event_binding_helpers.md} +0 -0
  87. data/docs/{old/method_caching_and_computed_properties.md → method_caching_and_computed_properties.md} +0 -0
  88. data/docs/{old/view.md → view.md} +0 -0
  89. data/lib/luca/code_browser.rb +55 -0
  90. data/lib/luca/command_line.rb +69 -0
  91. data/lib/luca/rails/engine.rb +0 -12
  92. data/lib/luca/rails/version.rb +2 -1
  93. data/lib/luca/rails.rb +3 -5
  94. data/lib/luca/template.rb +0 -2
  95. data/lib/luca.rb +1 -25
  96. data/luca.gemspec +7 -16
  97. data/site/assets/bootstrap.min.js +7 -0
  98. data/site/assets/dependencies.js +94 -0
  99. data/site/assets/glyphicons-halflings-white.png +0 -0
  100. data/site/assets/glyphicons-halflings.png +0 -0
  101. data/site/assets/luca-ui-bootstrap.css +1331 -0
  102. data/site/assets/luca-ui-bootstrap.js +9 -0
  103. data/site/assets/luca-ui-development-tools.css +234 -0
  104. data/site/assets/luca-ui-development-tools.js +18561 -0
  105. data/site/assets/luca-ui-development-tools.min.js +15 -0
  106. data/site/assets/luca-ui-full.min.js +8 -0
  107. data/site/assets/luca-ui.min.js +4 -0
  108. data/site/assets/sandbox.css +62 -0
  109. data/site/assets/sandbox.js +469 -0
  110. data/site/docs/application.html +41 -0
  111. data/site/docs/caching.html +43 -0
  112. data/site/docs/collection.html +75 -0
  113. data/site/docs/collection_manager.html +71 -0
  114. data/site/docs/containers.html +118 -0
  115. data/site/docs/events.html +153 -0
  116. data/site/docs/view.html +128 -0
  117. data/site/img/glyphicons-halflings-white.png +0 -0
  118. data/site/img/glyphicons-halflings.png +0 -0
  119. data/site/index.html +20 -0
  120. data/site/source-map.js +1 -0
  121. data/spec/{javascripts/components → components}/application_spec.coffee +0 -0
  122. data/spec/{javascripts/components → components}/collection_loader_view_spec.coffee +0 -0
  123. data/{site/source/app/assets/javascripts/docs/lib/util.coffee → spec/components/controller_spec.coffee} +0 -0
  124. data/spec/{javascripts/components → components}/fields/checkbox_array_spec.coffee +0 -0
  125. data/spec/components/form_view_spec.coffee +80 -0
  126. data/spec/{javascripts/components → components}/grid_view_spec.coffee +0 -0
  127. data/spec/{javascripts/components → components}/record_manager_spec.coffee +0 -0
  128. data/spec/{javascripts/components → components}/template_spec.coffee +0 -0
  129. data/spec/containers/card_view_spec.coffee +50 -0
  130. data/{site/source/app/assets/javascripts/docs/views/components/code_editor/index.coffee → spec/containers/column_view_spec.coffee} +0 -0
  131. data/spec/{javascripts/containers → containers}/modal_view_spec.coffee +0 -0
  132. data/spec/{javascripts/containers → containers}/panel_view_spec.coffee +0 -0
  133. data/spec/{javascripts/components/pagination_control_spec.coffee → containers/split_view_spec.coffee} +0 -0
  134. data/spec/{javascripts/containers → containers}/tab_view_spec.coffee +0 -0
  135. data/spec/{javascripts/containers → containers}/viewport_spec.coffee +0 -0
  136. data/spec/{javascripts/core → core}/collection_spec.coffee +1 -26
  137. data/spec/core/container_spec.coffee +66 -0
  138. data/spec/{javascripts/concerns/paginatable_spec.coffee → core/field_spec.coffee} +0 -0
  139. data/spec/{javascripts/core → core}/model_spec.coffee +3 -26
  140. data/spec/{javascripts/core → core}/observer_spec.coffee +0 -0
  141. data/spec/{javascripts/core → core}/view_spec.coffee +38 -114
  142. data/spec/{javascripts/core/framework_spec.coffee → framework_spec.coffee} +2 -31
  143. data/spec/{javascripts/helper.coffee → helper.coffee} +0 -0
  144. data/spec/{javascripts/managers → managers}/collection_manager_spec.coffee +0 -0
  145. data/spec/{javascripts/managers → managers}/socket_manager_spec.coffee +0 -0
  146. data/src/components/application.coffee +318 -0
  147. data/src/components/base_toolbar.coffee +15 -0
  148. data/{app/assets/javascripts/luca → src}/components/collection_loader_view.coffee +1 -3
  149. data/src/components/collection_view.coffee +131 -0
  150. data/src/components/controller.coffee +63 -0
  151. data/src/components/fields/button_field.coffee +38 -0
  152. data/{app/assets/javascripts/luca → src}/components/fields/checkbox_array.coffee +7 -18
  153. data/{app/assets/javascripts/luca → src}/components/fields/checkbox_field.coffee +10 -19
  154. data/{app/assets/javascripts/luca → src}/components/fields/file_upload_field.coffee +4 -5
  155. data/src/components/fields/hidden_field.coffee +12 -0
  156. data/src/components/fields/label_field.coffee +14 -0
  157. data/src/components/fields/select_field.coffee +97 -0
  158. data/src/components/fields/text_area_field.coffee +40 -0
  159. data/{app/assets/javascripts/luca → src}/components/fields/text_field.coffee +5 -16
  160. data/src/components/fields/type_ahead_field.coffee +22 -0
  161. data/src/components/form_button_toolbar.coffee +25 -0
  162. data/src/components/form_view.coffee +275 -0
  163. data/src/components/grid_view.coffee +269 -0
  164. data/src/components/index.coffee +1 -0
  165. data/src/components/load_mask.coffee +3 -0
  166. data/src/components/nav_bar.coffee +22 -0
  167. data/src/components/page_controller.coffee +2 -0
  168. data/{app/assets/javascripts/luca → src}/components/record_manager.coffee +0 -0
  169. data/{app/assets/javascripts/luca → src}/components/router.coffee +1 -6
  170. data/src/components/table_view.coffee +53 -0
  171. data/src/components/template.coffee +5 -0
  172. data/src/components/toolbar_dialog.coffee +25 -0
  173. data/src/containers/card_view.coffee +93 -0
  174. data/src/containers/column_view.coffee +42 -0
  175. data/{app/assets/javascripts/luca → src}/containers/modal_view.coffee +9 -9
  176. data/src/containers/page_view.coffee +2 -0
  177. data/{app/assets/javascripts/luca → src}/containers/panel_toolbar.coffee +84 -89
  178. data/src/containers/panel_view.coffee +23 -0
  179. data/src/containers/split_view.coffee +8 -0
  180. data/{app/assets/javascripts/luca → src}/containers/tab_view.coffee +21 -27
  181. data/{app/assets/javascripts/luca → src}/containers/viewport.coffee +18 -14
  182. data/{app/assets/javascripts/luca → src}/core/collection.coffee +51 -97
  183. data/src/core/container.coffee +374 -0
  184. data/{tutorials/component-definitions.md → src/core/core.coffee} +0 -0
  185. data/src/core/field.coffee +79 -0
  186. data/src/core/model.coffee +43 -0
  187. data/{app/assets/javascripts/luca → src}/core/observer.coffee +0 -0
  188. data/src/core/panel.coffee +118 -0
  189. data/{app/assets/javascripts/luca/core/registry → src/core}/registry.coffee +43 -63
  190. data/{app/assets/javascripts/luca/util → src/core}/script_loader.coffee +0 -0
  191. data/src/core/view.coffee +264 -0
  192. data/src/define.coffee +110 -0
  193. data/{app/assets/javascripts/luca → src}/framework.coffee +103 -98
  194. data/src/index.coffee +23 -0
  195. data/{app/assets/javascripts/luca → src}/managers/collection_manager.coffee +13 -37
  196. data/src/managers/socket_manager.coffee +54 -0
  197. data/{app/assets/javascripts/luca/concerns → src/modules}/deferrable.coffee +4 -5
  198. data/src/modules/grid_layout.coffee +3 -0
  199. data/{app/assets/javascripts/luca/concerns/loadmaskable.coffee → src/modules/load_mask.coffee} +11 -23
  200. data/{app/assets/javascripts/luca/concerns → src/modules}/local_storage.coffee +0 -0
  201. data/src/plugins/development_tool_helpers.coffee +21 -0
  202. data/src/plugins/events.coffee +54 -0
  203. data/src/samples/definition.coffee +49 -0
  204. data/{tutorials/component-definitions/01_intro.md → src/stylesheets/base.scss} +0 -0
  205. data/{app/assets/stylesheets/luca → src/stylesheets}/components/checkbox_array.scss +1 -1
  206. data/src/stylesheets/components/form_view.scss +59 -0
  207. data/{app/assets/stylesheets/luca → src/stylesheets}/components/grid_view.scss +0 -0
  208. data/{app/assets/stylesheets/luca → src/stylesheets}/components/load_mask.scss +0 -0
  209. data/src/stylesheets/components/toolbar.scss +0 -0
  210. data/{app/assets/stylesheets/luca → src/stylesheets}/components/viewport.scss +4 -1
  211. data/src/stylesheets/containers/container.scss +16 -0
  212. data/src/stylesheets/containers/modal_view.scss +0 -0
  213. data/{app/assets/stylesheets/luca → src/stylesheets}/containers/panels.scss +0 -0
  214. data/{app/assets/stylesheets/luca → src/stylesheets}/containers/tab_view.scss +5 -5
  215. data/{app/assets/stylesheets/luca → src/stylesheets}/normalize.scss +0 -0
  216. data/src/stylesheets/tools/class_browser.scss +32 -0
  217. data/src/stylesheets/tools/code_editor.scss +24 -0
  218. data/src/stylesheets/tools/component_tester.scss +26 -0
  219. data/{app/assets/stylesheets/luca/development → src/stylesheets/tools}/console.scss +0 -0
  220. data/src/templates/components/bootstrap_form_controls.luca +7 -0
  221. data/src/templates/components/collection_loader_view.luca +5 -0
  222. data/src/templates/components/form_alert +0 -0
  223. data/src/templates/components/form_alert.luca +3 -0
  224. data/src/templates/components/grid_view.luca +7 -0
  225. data/src/templates/components/grid_view_empty_text.luca +3 -0
  226. data/src/templates/components/load_mask.luca +3 -0
  227. data/src/templates/components/nav_bar.luca +2 -0
  228. data/src/templates/containers/basic.luca +1 -0
  229. data/src/templates/containers/tab_selector_container.luca +8 -0
  230. data/src/templates/containers/tab_view.luca +2 -0
  231. data/src/templates/containers/toolbar_wrapper.luca +1 -0
  232. data/src/templates/fields/button_field.luca +2 -0
  233. data/src/templates/fields/button_field_link.luca +5 -0
  234. data/src/templates/fields/checkbox_array.luca +4 -0
  235. data/src/templates/fields/checkbox_array_item.luca +4 -0
  236. data/src/templates/fields/checkbox_field.luca +9 -0
  237. data/src/templates/fields/file_upload_field.luca +8 -0
  238. data/src/templates/fields/hidden_field.luca +1 -0
  239. data/src/templates/fields/select_field.luca +8 -0
  240. data/src/templates/fields/text_area_field.luca +8 -0
  241. data/src/templates/fields/text_field.luca +17 -0
  242. data/src/templates/sample/contents.luca +1 -0
  243. data/src/templates/sample/welcome.luca +1 -0
  244. data/src/templates/table_view.luca +4 -0
  245. data/src/tools/application_inspector.coffee +2 -0
  246. data/src/tools/code_editor.coffee +258 -0
  247. data/{app/assets/javascripts/luca/development → src/tools}/code_mirror_field.coffee +1 -2
  248. data/src/tools/coffee_script_editor.coffee +82 -0
  249. data/src/tools/collection_inspector.coffee +4 -0
  250. data/src/tools/collections/components.coffee +59 -0
  251. data/src/tools/collections/instances.coffee +15 -0
  252. data/src/tools/component_tester.coffee +462 -0
  253. data/{app/assets/javascripts/luca/development → src/tools}/console.coffee +24 -55
  254. data/src/tools/models/components.coffee +25 -0
  255. data/src/tools/models/instance.coffee +2 -0
  256. data/src/tools/templates/component_tester/help.luca +14 -0
  257. data/{app/assets/javascripts/luca/util/luca.coffee → src/util.coffee} +6 -90
  258. data/vendor/assets/javascripts/luca-ui-development-tools.js +18533 -0
  259. data/vendor/assets/javascripts/luca-ui-development-tools.min.js +15 -0
  260. data/vendor/assets/javascripts/luca-ui-full.js +4806 -0
  261. data/vendor/assets/javascripts/luca-ui-full.min.js +8 -0
  262. data/vendor/assets/javascripts/luca-ui-templates.js +24 -0
  263. data/vendor/assets/javascripts/luca-ui.js +1703 -4394
  264. data/vendor/assets/javascripts/luca-ui.min.js +4 -5
  265. data/vendor/assets/luca-ui/base.css +85 -0
  266. data/vendor/assets/luca-ui/components/application.js +91 -0
  267. data/vendor/assets/luca-ui/components/base_toolbar.js +23 -0
  268. data/vendor/assets/luca-ui/components/controller.js +38 -0
  269. data/vendor/assets/luca-ui/components/fields/button_field.js +45 -0
  270. data/vendor/assets/luca-ui/components/fields/checkbox_field.js +43 -0
  271. data/vendor/assets/luca-ui/components/fields/file_upload_field.js +20 -0
  272. data/vendor/assets/luca-ui/components/fields/hidden_field.js +20 -0
  273. data/vendor/assets/luca-ui/components/fields/select_field.js +97 -0
  274. data/vendor/assets/luca-ui/components/fields/text_area_field.js +48 -0
  275. data/vendor/assets/luca-ui/components/fields/text_field.js +46 -0
  276. data/vendor/assets/luca-ui/components/fields/type_ahead_field.js +13 -0
  277. data/vendor/assets/luca-ui/components/form_button_toolbar.js +32 -0
  278. data/vendor/assets/luca-ui/components/form_view.css +32 -0
  279. data/vendor/assets/luca-ui/components/form_view.js +207 -0
  280. data/{app/assets/stylesheets/luca/components/table_view.scss → vendor/assets/luca-ui/components/grid_view.css} +51 -60
  281. data/vendor/assets/luca-ui/components/grid_view.js +202 -0
  282. data/vendor/assets/luca-ui/components/record_manager.js +207 -0
  283. data/vendor/assets/luca-ui/components/router.js +36 -0
  284. data/vendor/assets/luca-ui/components/template.js +26 -0
  285. data/vendor/assets/luca-ui/components/toolbar.css +11 -0
  286. data/vendor/assets/luca-ui/containers/card_view.js +98 -0
  287. data/vendor/assets/luca-ui/containers/column_view.js +52 -0
  288. data/vendor/assets/luca-ui/containers/container.css +3 -0
  289. data/vendor/assets/luca-ui/containers/modal_view.css +0 -0
  290. data/vendor/assets/luca-ui/containers/modal_view.js +87 -0
  291. data/vendor/assets/luca-ui/containers/panel_view.js +34 -0
  292. data/vendor/assets/luca-ui/containers/split_view.js +13 -0
  293. data/vendor/assets/luca-ui/containers/tab_view.css +16 -0
  294. data/vendor/assets/luca-ui/containers/tab_view.js +80 -0
  295. data/vendor/assets/luca-ui/containers/viewport.js +18 -0
  296. data/vendor/assets/luca-ui/core/collection.js +221 -0
  297. data/vendor/assets/luca-ui/core/container.js +205 -0
  298. data/vendor/assets/luca-ui/core/field.js +59 -0
  299. data/vendor/assets/luca-ui/core/observer.js +42 -0
  300. data/vendor/assets/luca-ui/core/view.js +127 -0
  301. data/vendor/assets/luca-ui/framework.js +110 -0
  302. data/vendor/assets/luca-ui/index.js +5 -0
  303. data/vendor/assets/luca-ui/managers/collection_manager.js +98 -0
  304. data/vendor/assets/luca-ui/managers/socket_manager.js +52 -0
  305. data/vendor/assets/luca-ui/modules/deferrable.js +21 -0
  306. data/vendor/assets/luca-ui/modules/local_storage.js +81 -0
  307. data/vendor/assets/luca-ui/normalize.css +359 -0
  308. data/vendor/assets/luca-ui/stylesheets/base.css +85 -0
  309. data/vendor/assets/luca-ui/stylesheets/components/form_view.css +32 -0
  310. data/vendor/assets/luca-ui/stylesheets/components/grid_view.css +76 -0
  311. data/vendor/assets/luca-ui/stylesheets/components/toolbar.css +11 -0
  312. data/vendor/assets/luca-ui/stylesheets/containers/container.css +3 -0
  313. data/vendor/assets/luca-ui/stylesheets/containers/modal_view.css +0 -0
  314. data/vendor/assets/luca-ui/stylesheets/containers/tab_view.css +16 -0
  315. data/vendor/assets/luca-ui/stylesheets/normalize.css +359 -0
  316. data/vendor/assets/luca-ui/templates/components/bootstrap_form_controls.js +4 -0
  317. data/vendor/assets/luca-ui/templates/components/form_view.js +4 -0
  318. data/vendor/assets/luca-ui/templates/components/grid_view.js +4 -0
  319. data/vendor/assets/luca-ui/templates/components/grid_view_empty_text.js +4 -0
  320. data/vendor/assets/luca-ui/templates/containers/basic.js +4 -0
  321. data/vendor/assets/luca-ui/templates/containers/tab_selector_container.js +4 -0
  322. data/vendor/assets/luca-ui/templates/containers/tab_view.js +4 -0
  323. data/vendor/assets/luca-ui/templates/containers/toolbar_wrapper.js +4 -0
  324. data/vendor/assets/luca-ui/templates/fields/button_field.js +4 -0
  325. data/vendor/assets/luca-ui/templates/fields/button_field_link.js +4 -0
  326. data/vendor/assets/luca-ui/templates/fields/checkbox_field.js +4 -0
  327. data/vendor/assets/luca-ui/templates/fields/file_upload_field.js +4 -0
  328. data/vendor/assets/luca-ui/templates/fields/hidden_field.js +4 -0
  329. data/vendor/assets/luca-ui/templates/fields/select_field.js +4 -0
  330. data/vendor/assets/luca-ui/templates/fields/text_area_field.js +4 -0
  331. data/vendor/assets/luca-ui/templates/fields/text_field.js +4 -0
  332. data/vendor/assets/luca-ui/templates/sample/contents.js +4 -0
  333. data/vendor/assets/luca-ui/templates/sample/welcome.js +4 -0
  334. data/vendor/assets/stylesheets/luca-ui.css +471 -68
  335. data/views/jasmine.erb +2 -2
  336. metadata +328 -496
  337. data/app/assets/javascripts/luca/basic.coffee +0 -8
  338. data/app/assets/javascripts/luca/components/application.coffee +0 -530
  339. data/app/assets/javascripts/luca/components/collection_view.coffee +0 -211
  340. data/app/assets/javascripts/luca/components/controller.coffee +0 -176
  341. data/app/assets/javascripts/luca/components/fields/base.coffee +0 -144
  342. data/app/assets/javascripts/luca/components/fields/button_field.coffee +0 -91
  343. data/app/assets/javascripts/luca/components/fields/hidden_field.coffee +0 -11
  344. data/app/assets/javascripts/luca/components/fields/label_field.coffee +0 -12
  345. data/app/assets/javascripts/luca/components/fields/select_field.coffee +0 -159
  346. data/app/assets/javascripts/luca/components/fields/text_area_field.coffee +0 -57
  347. data/app/assets/javascripts/luca/components/fields/type_ahead_field.coffee +0 -20
  348. data/app/assets/javascripts/luca/components/form_view.coffee +0 -421
  349. data/app/assets/javascripts/luca/components/grid_layout_view.coffee +0 -42
  350. data/app/assets/javascripts/luca/components/index.coffee +0 -7
  351. data/app/assets/javascripts/luca/components/load_mask.coffee +0 -8
  352. data/app/assets/javascripts/luca/components/multi_collection_view.coffee +0 -92
  353. data/app/assets/javascripts/luca/components/nav_bar.coffee +0 -80
  354. data/app/assets/javascripts/luca/components/page.coffee +0 -70
  355. data/app/assets/javascripts/luca/components/pagination_control.coffee +0 -104
  356. data/app/assets/javascripts/luca/components/simple_collection_view.coffee +0 -10
  357. data/app/assets/javascripts/luca/components/table_view.coffee +0 -93
  358. data/app/assets/javascripts/luca/components/table_view_scrollable.coffee +0 -23
  359. data/app/assets/javascripts/luca/concerns/application_event_bindings.coffee +0 -19
  360. data/app/assets/javascripts/luca/concerns/collection_event_bindings.coffee +0 -47
  361. data/app/assets/javascripts/luca/concerns/development_tool_helpers.coffee +0 -30
  362. data/app/assets/javascripts/luca/concerns/dom_helpers.coffee +0 -61
  363. data/app/assets/javascripts/luca/concerns/enhanced_properties.coffee +0 -23
  364. data/app/assets/javascripts/luca/concerns/filterable.coffee +0 -101
  365. data/app/assets/javascripts/luca/concerns/form_model_bindings.coffee +0 -20
  366. data/app/assets/javascripts/luca/concerns/grid_layout.coffee +0 -15
  367. data/app/assets/javascripts/luca/concerns/modal_view.coffee +0 -63
  368. data/app/assets/javascripts/luca/concerns/model_presenter.coffee +0 -23
  369. data/app/assets/javascripts/luca/concerns/paginatable.coffee +0 -79
  370. data/app/assets/javascripts/luca/concerns/query_collection_bindings.coffee +0 -52
  371. data/app/assets/javascripts/luca/concerns/sortable.coffee +0 -69
  372. data/app/assets/javascripts/luca/concerns/state_model.coffee +0 -58
  373. data/app/assets/javascripts/luca/concerns/templating.coffee +0 -13
  374. data/app/assets/javascripts/luca/config.coffee +0 -54
  375. data/app/assets/javascripts/luca/containers/card_view.coffee +0 -178
  376. data/app/assets/javascripts/luca/containers/container.coffee +0 -711
  377. data/app/assets/javascripts/luca/containers/index.coffee +0 -2
  378. data/app/assets/javascripts/luca/containers/page_controller.coffee +0 -25
  379. data/app/assets/javascripts/luca/core/events.coffee +0 -114
  380. data/app/assets/javascripts/luca/core/index.coffee +0 -12
  381. data/app/assets/javascripts/luca/core/model.coffee +0 -56
  382. data/app/assets/javascripts/luca/core/panel.coffee +0 -124
  383. data/app/assets/javascripts/luca/core/registry/component_definition.coffee +0 -319
  384. data/app/assets/javascripts/luca/core/registry/concerns.coffee +0 -70
  385. data/app/assets/javascripts/luca/core/registry/index.coffee +0 -4
  386. data/app/assets/javascripts/luca/core/registry/meta_data.coffee +0 -99
  387. data/app/assets/javascripts/luca/core/templates.coffee +0 -51
  388. data/app/assets/javascripts/luca/core/view.coffee +0 -383
  389. data/app/assets/javascripts/luca/dependencies.coffee +0 -9
  390. data/app/assets/javascripts/luca/development/code_sync_manager.coffee +0 -173
  391. data/app/assets/javascripts/luca/development/component.coffee +0 -76
  392. data/app/assets/javascripts/luca/development/components.coffee +0 -57
  393. data/app/assets/javascripts/luca/development/index.coffee +0 -5
  394. data/app/assets/javascripts/luca/index.coffee +0 -9
  395. data/app/assets/javascripts/luca/managers/index.coffee +0 -2
  396. data/app/assets/javascripts/luca/managers/socket_manager.coffee +0 -89
  397. data/app/assets/javascripts/luca/templates/components/bootstrap_form_controls.jst.ejs +0 -10
  398. data/app/assets/javascripts/luca/templates/components/collection_loader_view.jst.ejs +0 -6
  399. data/app/assets/javascripts/luca/templates/components/form_alert.jst.ejs +0 -4
  400. data/app/assets/javascripts/luca/templates/components/grid_view.jst.ejs +0 -11
  401. data/app/assets/javascripts/luca/templates/components/grid_view_empty_text.jst.ejs +0 -3
  402. data/app/assets/javascripts/luca/templates/components/load_mask.jst.ejs +0 -5
  403. data/app/assets/javascripts/luca/templates/components/nav_bar.jst.ejs +0 -19
  404. data/app/assets/javascripts/luca/templates/components/pagination.jst.ejs +0 -10
  405. data/app/assets/javascripts/luca/templates/components/table_view.jst.ejs +0 -4
  406. data/app/assets/javascripts/luca/templates/containers/basic.jst.ejs +0 -1
  407. data/app/assets/javascripts/luca/templates/containers/tab_selector_container.jst.ejs +0 -12
  408. data/app/assets/javascripts/luca/templates/containers/tab_view.jst.ejs +0 -2
  409. data/app/assets/javascripts/luca/templates/containers/toolbar_wrapper.jst.ejs +0 -1
  410. data/app/assets/javascripts/luca/templates/fields/button_field.jst.ejs +0 -2
  411. data/app/assets/javascripts/luca/templates/fields/button_field_link.jst.ejs +0 -6
  412. data/app/assets/javascripts/luca/templates/fields/checkbox_array.jst.ejs +0 -4
  413. data/app/assets/javascripts/luca/templates/fields/checkbox_array_item.jst.ejs +0 -3
  414. data/app/assets/javascripts/luca/templates/fields/checkbox_field.jst.ejs +0 -10
  415. data/app/assets/javascripts/luca/templates/fields/file_upload_field.jst.ejs +0 -10
  416. data/app/assets/javascripts/luca/templates/fields/hidden_field.jst.ejs +0 -1
  417. data/app/assets/javascripts/luca/templates/fields/select_field.jst.ejs +0 -11
  418. data/app/assets/javascripts/luca/templates/fields/text_area_field.jst.ejs +0 -11
  419. data/app/assets/javascripts/luca/templates/fields/text_field.jst.ejs +0 -16
  420. data/app/assets/javascripts/luca/util/deprecations.coffee +0 -18
  421. data/app/assets/javascripts/luca/util/index.coffee +0 -4
  422. data/app/assets/javascripts/luca/util/keybindings.coffee +0 -24
  423. data/app/assets/javascripts/luca/util/logging.coffee +0 -30
  424. data/app/assets/javascripts/luca-ui.js +0 -1
  425. data/app/assets/stylesheets/luca/components/form_view.scss +0 -7
  426. data/app/assets/stylesheets/luca/containers/container.scss +0 -19
  427. data/app/assets/stylesheets/luca/development/index.css +0 -3
  428. data/app/assets/stylesheets/luca/index.css +0 -4
  429. data/bin/luca +0 -14
  430. data/docs/framework.json +0 -1
  431. data/docs/luca-framework-documentation.js +0 -1
  432. data/lib/generators/luca/application/application_generator.rb +0 -75
  433. data/lib/generators/luca/application/templates/controller.rb +0 -4
  434. data/lib/generators/luca/application/templates/index.html.erb +0 -19
  435. data/lib/generators/luca/application/templates/index.html.haml +0 -7
  436. data/lib/generators/luca/application/templates/javascripts/application.coffee +0 -18
  437. data/lib/generators/luca/application/templates/javascripts/collection_manager.coffee +0 -2
  438. data/lib/generators/luca/application/templates/javascripts/config.coffee +0 -3
  439. data/lib/generators/luca/application/templates/javascripts/dependencies.coffee +0 -3
  440. data/lib/generators/luca/application/templates/javascripts/home.jst.ejs +0 -2
  441. data/lib/generators/luca/application/templates/javascripts/index.coffee +0 -15
  442. data/lib/generators/luca/application/templates/javascripts/router.coffee +0 -4
  443. data/lib/guard/luca.rb +0 -84
  444. data/lib/luca/asset_compiler.rb +0 -117
  445. data/lib/luca/cli/generate.rb +0 -37
  446. data/lib/luca/cli/server.rb +0 -20
  447. data/lib/luca/cli/sync.rb +0 -40
  448. data/lib/luca/cli/watch.rb +0 -16
  449. data/lib/luca/cli.rb +0 -68
  450. data/lib/luca/collection/endpoint.rb +0 -38
  451. data/lib/luca/collection/file_backend.rb +0 -121
  452. data/lib/luca/collection/redis_backend.rb +0 -153
  453. data/lib/luca/collection.rb +0 -64
  454. data/lib/luca/compiled_asset.rb +0 -61
  455. data/lib/luca/component_definition.rb +0 -356
  456. data/lib/luca/luca_application.rb +0 -258
  457. data/lib/luca/project.rb +0 -73
  458. data/lib/luca/project_harness.rb +0 -96
  459. data/lib/luca/server.rb +0 -7
  460. data/lib/luca/stylesheet.rb +0 -35
  461. data/lib/luca/template_asset.rb +0 -64
  462. data/lib/luca/version.rb +0 -3
  463. data/lib/luca/watcher.rb +0 -72
  464. data/lib/railties/luca/tasks.rake +0 -38
  465. data/site/.bundle/config +0 -2
  466. data/site/.gitignore +0 -5
  467. data/site/.rvmrc +0 -1
  468. data/site/CHANGELOG.md +0 -41
  469. data/site/DOCS.md +0 -41
  470. data/site/Gemfile +0 -8
  471. data/site/Gemfile.lock +0 -134
  472. data/site/LICENSE.md +0 -19
  473. data/site/config.rb +0 -84
  474. data/site/helpers/site_helpers.rb +0 -20
  475. data/site/html5bp-docs/README.md +0 -38
  476. data/site/html5bp-docs/contribute.md +0 -104
  477. data/site/html5bp-docs/crossdomain.md +0 -21
  478. data/site/html5bp-docs/css.md +0 -135
  479. data/site/html5bp-docs/extend.md +0 -507
  480. data/site/html5bp-docs/faq.md +0 -77
  481. data/site/html5bp-docs/htaccess.md +0 -323
  482. data/site/html5bp-docs/html.md +0 -170
  483. data/site/html5bp-docs/js.md +0 -31
  484. data/site/html5bp-docs/misc.md +0 -25
  485. data/site/html5bp-docs/usage.md +0 -109
  486. data/site/readme.md +0 -47
  487. data/site/source/.htaccess +0 -540
  488. data/site/source/404.html +0 -157
  489. data/site/source/app/assets/javascripts/dependencies.js.coffee +0 -6
  490. data/site/source/app/assets/javascripts/docs/application.coffee +0 -64
  491. data/site/source/app/assets/javascripts/docs/collections/docs_documentation.coffee +0 -17
  492. data/site/source/app/assets/javascripts/docs/collections/github_repositories.coffee +0 -7
  493. data/site/source/app/assets/javascripts/docs/collections/index.coffee +0 -1
  494. data/site/source/app/assets/javascripts/docs/collections/luca_documentation.coffee +0 -17
  495. data/site/source/app/assets/javascripts/docs/collections/public_gists.coffee +0 -4
  496. data/site/source/app/assets/javascripts/docs/config.coffee +0 -5
  497. data/site/source/app/assets/javascripts/docs/index.coffee +0 -12
  498. data/site/source/app/assets/javascripts/docs/lib/router.coffee +0 -3
  499. data/site/source/app/assets/javascripts/docs/models/component.coffee +0 -99
  500. data/site/source/app/assets/javascripts/docs/models/github_repository.coffee +0 -3
  501. data/site/source/app/assets/javascripts/docs/models/index.coffee +0 -1
  502. data/site/source/app/assets/javascripts/docs/templates/component_documentation.jst.ejs +0 -55
  503. data/site/source/app/assets/javascripts/docs/templates/examples_browser/overview.jst.ejs +0 -4
  504. data/site/source/app/assets/javascripts/docs/templates/examples_browser/selector.jst.ejs +0 -11
  505. data/site/source/app/assets/javascripts/docs/templates/github_repository.jst.ejs +0 -4
  506. data/site/source/app/assets/javascripts/docs/templates/layouts/main.jst.ejs +0 -4
  507. data/site/source/app/assets/javascripts/docs/templates/left_navigation.jst.ejs +0 -5
  508. data/site/source/app/assets/javascripts/docs/templates/pages/getting_started.jst.ejs +0 -78
  509. data/site/source/app/assets/javascripts/docs/templates/pages/home.jst.ejs +0 -57
  510. data/site/source/app/assets/javascripts/docs/views/components/code_editor.coffee +0 -45
  511. data/site/source/app/assets/javascripts/docs/views/components/component_documentation.coffee +0 -72
  512. data/site/source/app/assets/javascripts/docs/views/index.coffee +0 -3
  513. data/site/source/app/assets/javascripts/docs/views/pages/browse_source/details.coffee +0 -37
  514. data/site/source/app/assets/javascripts/docs/views/pages/browse_source/list.coffee +0 -31
  515. data/site/source/app/assets/javascripts/docs/views/pages/browse_source.coffee +0 -46
  516. data/site/source/app/assets/javascripts/docs/views/pages/component_editor.coffee +0 -10
  517. data/site/source/app/assets/javascripts/docs/views/pages/examples_browser/docs.coffee +0 -12
  518. data/site/source/app/assets/javascripts/docs/views/pages/examples_browser/source.coffee +0 -13
  519. data/site/source/app/assets/javascripts/docs/views/pages/examples_browser.coffee +0 -102
  520. data/site/source/app/assets/javascripts/docs/views/pages/home.coffee +0 -10
  521. data/site/source/app/assets/javascripts/docs/views/views/api_browser/index.coffee +0 -43
  522. data/site/source/app/assets/javascripts/docs/views/views/collection_view_examples/grid_layout_view_example.coffee +0 -14
  523. data/site/source/app/assets/javascripts/docs/views/views/collection_view_examples/table_view_example.coffee +0 -39
  524. data/site/source/app/assets/javascripts/docs/views/views/form_view_examples/basic_example.coffee +0 -38
  525. data/site/source/app/assets/javascripts/docs/views/views/form_view_examples/complex_layout.coffee +0 -110
  526. data/site/source/app/assets/javascripts/docs/views/views/top_navigation.coffee +0 -6
  527. data/site/source/app/assets/javascripts/docs-docs.js +0 -1
  528. data/site/source/app/assets/javascripts/luca-docs.js +0 -1
  529. data/site/source/app/assets/javascripts/luca-framework-documentation.js +0 -1
  530. data/site/source/app/assets/javascripts/site.js.coffee +0 -4
  531. data/site/source/app/assets/javascripts/vendor/codemirror.js +0 -4786
  532. data/site/source/app/assets/javascripts/vendor/coffeescript.js +0 -346
  533. data/site/source/app/assets/javascripts/vendor/css.js +0 -465
  534. data/site/source/app/assets/javascripts/vendor/htmlmixed.js +0 -84
  535. data/site/source/app/assets/javascripts/vendor/javascript.js +0 -422
  536. data/site/source/app/assets/javascripts/vendor/js-beautify.js +0 -1353
  537. data/site/source/app/assets/javascripts/vendor/modernizr-2.6.1.min.js +0 -4
  538. data/site/source/app/assets/javascripts/vendor/vim.js +0 -2511
  539. data/site/source/app/assets/stylesheets/docs/api-browser.css.scss +0 -5
  540. data/site/source/app/assets/stylesheets/docs/application.css.scss +0 -35
  541. data/site/source/app/assets/stylesheets/docs/browse-source.css.scss +0 -5
  542. data/site/source/app/assets/stylesheets/docs/scrollable-table.css.scss +0 -5
  543. data/site/source/app/assets/stylesheets/site.css.scss +0 -2
  544. data/site/source/app/assets/stylesheets/vendor/codemirror.css +0 -240
  545. data/site/source/app/assets/stylesheets/vendor/prettify-tomorrow-night-bright.css +0 -160
  546. data/site/source/app/assets/stylesheets/vendor/twilight.css +0 -26
  547. data/site/source/crossdomain.xml +0 -15
  548. data/site/source/documentation.html.haml +0 -1
  549. data/site/source/favicon_base.png +0 -0
  550. data/site/source/humans.txt +0 -15
  551. data/site/source/images/background.png +0 -0
  552. data/site/source/images/middleman.png +0 -0
  553. data/site/source/index.html.haml +0 -1
  554. data/site/source/layouts/layout.haml +0 -55
  555. data/site/source/readme.md +0 -63
  556. data/site/source/robots.txt +0 -3
  557. data/spec/javascripts/components/collection_view_spec.coffee +0 -59
  558. data/spec/javascripts/components/controller_spec.coffee +0 -62
  559. data/spec/javascripts/components/form_view_spec.coffee +0 -162
  560. data/spec/javascripts/components/multi_collection_view_spec.coffee +0 -5
  561. data/spec/javascripts/components/table_view_spec.coffee +0 -17
  562. data/spec/javascripts/concerns/collection_event_bindings_spec.coffee +0 -15
  563. data/spec/javascripts/concerns/dom_helpers_spec.coffee +0 -16
  564. data/spec/javascripts/concerns/filterable_spec.coffee +0 -25
  565. data/spec/javascripts/concerns/model_presenter_spec.coffee +0 -31
  566. data/spec/javascripts/concerns/state_model_spec.coffee +0 -55
  567. data/spec/javascripts/containers/card_view_spec.coffee +0 -108
  568. data/spec/javascripts/core/concerns_spec.coffee +0 -88
  569. data/spec/javascripts/core/container_spec.coffee +0 -287
  570. data/spec/javascripts/core/define_spec.coffee +0 -116
  571. data/spec/javascripts/core/events_spec.coffee +0 -26
  572. data/spec/javascripts/core/field_spec.coffee +0 -4
  573. data/spec/javascripts/core/util_spec.coffee +0 -24
  574. data/spec/javascripts/dependencies/index.coffee +0 -3
  575. data/spec/lib/component_definition_spec.rb +0 -63
  576. data/spec/lib/input_compiler_spec.rb +0 -9
  577. data/spec/lib/luca_application_spec.rb +0 -30
  578. data/spec/support/fixtures/application.coffee +0 -45
  579. data/spec/support/fixtures/component.coffee +0 -34
  580. data/tutorials/component-driven-design.md +0 -140
  581. data/tutorials/structure-of-a-project.md +0 -63
  582. data/vendor/assets/javascripts/backbone-ext.js +0 -21
  583. data/vendor/assets/javascripts/backbone-min.js +0 -42
  584. data/vendor/assets/javascripts/backbone-query.min.js +0 -1
  585. data/vendor/assets/javascripts/bootstrap.min.js +0 -7
  586. data/vendor/assets/javascripts/codemirror-ui.js +0 -503
  587. data/vendor/assets/javascripts/hogan.js +0 -707
  588. data/vendor/assets/javascripts/inflections.js +0 -656
  589. data/vendor/assets/javascripts/jasmine-html.js +0 -190
  590. data/vendor/assets/javascripts/jasmine.js +0 -2476
  591. data/vendor/assets/javascripts/jquery.js +0 -5
  592. data/vendor/assets/javascripts/keymaster.min.js +0 -4
  593. data/vendor/assets/javascripts/luca-dependencies.min.js +0 -8
  594. data/vendor/assets/javascripts/luca-development.min.js +0 -1
  595. data/vendor/assets/javascripts/luca-spec.js +0 -11
  596. data/vendor/assets/javascripts/luca.full.min.js +0 -12
  597. data/vendor/assets/javascripts/luca.min.js +0 -5
  598. data/vendor/assets/javascripts/sinon.js +0 -3469
  599. data/vendor/assets/javascripts/underscore-min.js +0 -1
  600. data/vendor/assets/javascripts/underscore-string.min.js +0 -1
  601. data/vendor/assets/stylesheets/bootstrap-responsive.min.css +0 -9
  602. data/vendor/assets/stylesheets/bootstrap.min.css +0 -9
  603. data/vendor/assets/stylesheets/luca-components.css +0 -202
  604. data/vendor/assets/stylesheets/luca-development.css +0 -23
@@ -1,211 +0,0 @@
1
- # The `Luca.CollectionView` renders models from a `Luca.Collection` into multiple
2
- # elements, and provides methods for filtering, paginating, sorting the underlying
3
- # collection and re-rendering the contents of its `@el` accordingly.
4
- #
5
- # #### Basic Example
6
- # collectionView = Luca.register "App.views.Books"
7
- # collectionView.extends "Luca.CollectionView"
8
- #
9
- # collectionView.defines
10
- # itemProperty: "author"
11
- # collection: new Luca.Collection([
12
- # author: "George Orwell"
13
- # title: "Animal Farm"
14
- # ,
15
- # author: "Noam Chomsky"
16
- # title: "Manufacturing Consent"
17
- # ])
18
- #
19
- # view = new App.views.Books()
20
- # #### Extending it to make it Filterable and Paginatable
21
- # filterable = Luca.register "App.views.FilterableBooks"
22
- # filterable.extends "App.views.Books"
23
- # filterable.defines
24
- # collection: "books"
25
- # paginatable: 12
26
- # filterable:
27
- # query:
28
- # author: "George Orwell"
29
- #
30
- # view = new App.views.FilterableBooks()
31
- # #### Filterable Collections
32
- #
33
- # The `Luca.CollectionView` will attempt to perform a local query against its
34
- # collection which behaves like a `Backbone.QueryCollection`. It will do this
35
- # by default without making a remote request to the API.
36
- #
37
- # If you do not want this behavior, you can configure the `Luca.CollectionView` to
38
- # behave as if the filtering was happen remotely in your REST API.
39
- #
40
- # filterable:
41
- # options:
42
- # remote: true
43
- collectionView = Luca.register "Luca.CollectionView"
44
-
45
- collectionView.extends "Luca.Panel"
46
-
47
- collectionView.replaces "Luca.components.CollectionView"
48
-
49
- collectionView.mixesIn "QueryCollectionBindings",
50
- "LoadMaskable",
51
- "Filterable",
52
- "Paginatable",
53
- "Sortable"
54
-
55
- collectionView.triggers "before:refresh",
56
- "after:refresh",
57
- "refresh",
58
- "empty:results"
59
-
60
- collectionView.publicConfiguration
61
- # Specify which collection will be used to supply the models to be rendered.
62
- # Accepts either a string alias for the Collection class, or an instance of
63
- # any class which inherits from Backbone.Collection
64
- collection: undefined
65
-
66
- # By default the CollectionView will be rendered inside of an OL tag.
67
- tagName: "ol"
68
-
69
- # The CollectionView behaves as a Luca.Panel which means it has an area for
70
- # top and bottom toolbars. The actual content that gets rendered from the
71
- # collection will be rendered inside an element with the specified class.
72
- bodyClassName: "collection-ui-panel"
73
-
74
- # Each item from the collection will be rendered inside of an element specified by @itemTagName
75
- itemTagName: 'li'
76
-
77
- # Each item element will be assigned a CSS class specified by @itemClassName
78
- itemClassName: 'collection-item'
79
-
80
- # Specify which template should be used to render each item in the collection.
81
- # Accepts a string which will be passed to Luca.template(@itemTemplate). Your template
82
- # can expect to be passed an object with the `model` and `index` properties on it.
83
- itemTemplate: undefined
84
-
85
- # Accepts a reference to a function, which will be called with an object with the `model` and `index`
86
- # properties on it. This function should return a String which will be injected into the item DOM element.
87
- itemRenderer: undefined
88
-
89
- # Plucks the specified property from the model and inserts it into the item DOM element.
90
- itemProperty: undefined
91
-
92
- # If @observeChanges is set to true, any change in an underlying model will automatically be re-rendered.
93
- observeChanges: false
94
-
95
- collectionView.publicMethods
96
- initialize: (@options={})->
97
- _.extend(@, @options)
98
- _.bindAll @, "refresh"
99
-
100
- unless @collection? or @options.collection
101
- console.log "Error on initialize of collection view", @
102
- throw "Collection Views must specify a collection"
103
-
104
- unless @itemTemplate? || @itemRenderer? || @itemProperty?
105
- throw "Collection Views must specify an item template or item renderer function"
106
-
107
- if _.isString(@collection)
108
- if Luca.CollectionManager.get()
109
- @collection = Luca.CollectionManager.get().getOrCreate(@collection)
110
- else
111
- console.log "String Collection but no collection manager"
112
-
113
- unless Luca.isBackboneCollection(@collection)
114
- console.log "Missing Collection on #{ @name || @cid }", @, @collection
115
- throw "Collection Views must have a valid backbone collection"
116
-
117
- # INVESTIGATE THIS BEING DOUBLE WORK
118
- @on "data:refresh", @refresh, @
119
- @on "collection:reset", @refresh, @
120
-
121
- @on "collection:remove", @refresh, @
122
- @on "collection:add", @refresh, @
123
- @on "collection:change", @refreshModel, @ if @observeChanges is true
124
-
125
- Luca.Panel::initialize.apply(@, arguments)
126
-
127
- view = @
128
- if @getCollection()?.length > 0
129
- @on "after:render", ()->
130
- view.refresh()
131
- view.unbind "after:render", @
132
-
133
- # Given the id of a model, find the underlying DOM element which was rendered by this collection.
134
- # Assumes that the data-model-id attribute is set, which it is by default by @attributesForItem.
135
- locateItemElement: (id)->
136
- @$(".#{ @itemClassName }[data-model-id='#{ id }']")
137
-
138
- # Refresh is responsible for applying any filtering, pagination, or sorting options that may be set
139
- # from the various Luca.concerns mixed in by `Luca.CollectionView` and making a query to the underlying
140
- # collection. It will then take the set of models returned by `@getModels` and pass them through the
141
- # item rendering pipeline.
142
- refresh: ()->
143
- query = @getLocalQuery()
144
- options = @getQueryOptions()
145
- models = @getModels(query, options)
146
-
147
- @$bodyEl().empty()
148
-
149
- @trigger("before:refresh", models, query, options)
150
-
151
- if models.length is 0
152
- @trigger("empty:results", query, options)
153
-
154
- @renderModels(models, query, options)
155
-
156
- @trigger("after:refresh", models, query, options)
157
-
158
- @
159
-
160
-
161
- collectionView.privateMethods
162
- renderModels: (models, query, options)->
163
- index = 0
164
- for model in models
165
- @$append @makeItem(model, index++)
166
-
167
- # Determines which attributes should be set on the item DOM element.
168
- attributesForItem: (item, model)->
169
- _.extend {}, class: @itemClassName, "data-index": item.index, "data-model-id": item.model.get('id')
170
-
171
- # Determines the content for the item DOM element. Will use the appropriate options
172
- # specified by `@itemTemplate`, `@itemRenderer`, or `@itemProperty`
173
- contentForItem: (item={})->
174
- if @itemTemplate? and templateFn = Luca.template(@itemTemplate)
175
- return content = templateFn.call(@, item)
176
-
177
- if @itemRenderer? and _.isFunction( @itemRenderer )
178
- return content = @itemRenderer.call(@, item, item.model, item.index)
179
-
180
- if @itemProperty and item.model?
181
- return content = item.model.read( @itemProperty )
182
-
183
- ""
184
-
185
- # Uses the various options passed to the `CollectionView` to assemble a call to `Luca.View::make`.
186
- makeItem: (model, index)->
187
- item = if @prepareItem? then @prepareItem.call(@, model, index) else (model:model, index: index)
188
- attributes = @attributesForItem(item, model)
189
- content = @contentForItem(item)
190
-
191
- try
192
- Luca.View::make(@itemTagName, attributes, content)
193
- catch e
194
- console.log "Error generating DOM element for CollectionView", @, model, index
195
-
196
- # Given a model, attempt to re-render the contents of its item in this view's DOM contents.
197
- refreshModel: (model)->
198
- index = @collection.indexOf( model )
199
- @locateItemElement(model.get('id')).empty().append( @contentForItem({model,index}, model) )
200
- @trigger("model:refreshed", index, model)
201
-
202
-
203
- registerEvent: (domEvent, selector, handler)->
204
- if !handler? and _.isFunction(selector)
205
- handler = selector
206
- selector = undefined
207
-
208
- eventTrigger = _([domEvent,"#{ @itemTagName }.#{ @itemClassName }", selector]).compact().join(" ")
209
- Luca.View::registerEvent(eventTrigger,handler)
210
-
211
- collectionView.register()
@@ -1,176 +0,0 @@
1
- # The Controller is a special type of CardView that is used to provide structure to a Luca.Application. Each
2
- # component in the controller is expected to have a unique `@name` property. The Application's router configuration
3
- # will map URL / Hashbangs to the `@name`s of components that belong to the Application controller.
4
- #
5
- # Applications which structure their 'pages' in controllers, or sections, will have the names of which
6
- # section or page is active inside of its state model. One example / common application structure we see:
7
- #
8
- # application:
9
- # main_controller:
10
- # controller / section_one:
11
- # page_one
12
- # page_two
13
- # page_three
14
- # controller / section_two
15
- # page_alpha
16
- # page_bravo
17
- #
18
- # In the above example, the Application would attempt to route to page_one, and the state
19
- # of the application may look like:
20
- #
21
- # application.activeSection() #=> 'section_one'
22
- # application.activeSubSection() # => 'page_one'
23
- # application.activePage() # => page_one
24
- #
25
- controller = Luca.register "Luca.components.Controller"
26
- controller.extends "Luca.containers.CardView"
27
-
28
- controller.publicConfiguration
29
- # If there is an active application, we will attempt to
30
- # set the name of our currently activated page on the application's
31
- # state machine. The attribute we will set can be configured by setting this value.
32
- tracker: "page"
33
-
34
- # We will set the name of the active page / section on our DOM element
35
- # The attribute we will set can be configured by setting this.
36
- activeAttribute: "active-section"
37
- stateful: true
38
- defaultPage: undefined
39
- defaultCard: 0
40
-
41
- controller.publicMethods
42
- # Navigate to the default ( or first ) component on this controller.
43
- # This will automatically get called upon rendering, so that it sets up
44
- # the proper state tracking, event binding, etc.
45
- default: (callback)->
46
- @navigate_to(@defaultPage || @defaultCard, callback)
47
-
48
- # Returns the name of the component which is currently active
49
- # on this controller.
50
- activePage: ()->
51
- @activeSection()
52
-
53
- # Navigate to a page on this controller by name. If passed an optional
54
- # callback, the callback will be called within the context of the activated page.
55
- navigate_to: (page, callback)->
56
- page ||= @defaultCard
57
-
58
- @activate page, false, (activator, previous,current)=>
59
- if current.activatedByController is true
60
- current.trigger("on:controller:reactivation")
61
- else
62
- current.trigger("on:controller:activation")
63
- current.activatedByController = true
64
-
65
- @state.set(active_section: current.name )
66
-
67
- if @tracker? and app = @app || Luca.getApplication?()
68
- app.state.set(@tracker, current.name)
69
-
70
- Luca.key?.setScope( current.name )
71
-
72
- if _.isFunction( callback )
73
- callback.call(current)
74
-
75
- # return the component we are navigating to
76
- @find(page)
77
-
78
- controller.classMethods
79
- # For each component we control, if there is a keyEvents property defined
80
- # then we will define a keymaster scope for that component's name, and setup
81
- # bindings as directed. This is important because each time a controller
82
- # activates a component, that component will attempt to change the scope of
83
- # the keymaster so that components becomes responsible for handling detected key events.
84
- setupComponentKeyEvents: ()->
85
- @_().each (component)->
86
- if _.isObject(component.keyEvents) and component.name?
87
- Luca.util.setupKeymaster(component.keyEvents, component.name).on(component)
88
-
89
- # The Controller Path is an array of the names of the controllers
90
- # a given component belongs to. This method will get patched on to each
91
- # component that belongs to a controller. It will always be bound to the instance
92
- # of the component itself. Example:
93
- #
94
- # application.contains
95
- # name: "main_controller"
96
- # components: [
97
- # name: "sub_controller"
98
- # components:[
99
- # name: "page"
100
- # ]
101
- # ]
102
- #
103
- # The @controllerPath() method for the component named page would be ['sub_controller','page'].
104
- # This will be used internally by the Application route builder, so that each of page's parent
105
- # controllers are activated in the proper order needed to make page visible.
106
- controllerPath: ()->
107
- component = @
108
-
109
- list = [component.name]
110
- atBase = false
111
-
112
- while component and not atBase
113
- component = component.getParent?()
114
- atBase = true if component?.role is "main_controller"
115
- list.push( component.name ) if component? and not atBase
116
-
117
- list.reverse()
118
-
119
- controller.afterDefinition ()->
120
- Luca.View::hooks.push "on:controller:activation"
121
-
122
- controller.defines
123
-
124
- initialize: (@options)->
125
- # let's phase out the 'card' terminology
126
- # and 'section' while we're at it. page is the word.
127
- @defaultCard ||= @defaultPage ||= @components[0]?.name || 0
128
- @defaultPage ||= @defaultCard
129
-
130
- @defaultState ||=
131
- active_section: @defaultPage
132
-
133
- Luca.containers.CardView::initialize.apply @, arguments
134
-
135
- throw "Controllers must specify a defaultCard property and/or the first component must have a name" unless @defaultCard?
136
-
137
- @_().each (component)->
138
- component.controllerPath = Luca.components.Controller.controllerPath
139
-
140
- @on "after:render", @default, @
141
- @on "before:render", Luca.components.Controller.setupComponentKeyEvents, @
142
-
143
- each: (fn)->
144
- _( @components ).each (component)=> fn.call(@,component)
145
-
146
- activeSection: ()->
147
- @get("active_section")
148
-
149
- pageControllers: (deep=false)->
150
- @controllers.apply(@, arguments)
151
-
152
- controllers:(deep=false)->
153
- @select (component)->
154
- type = (component.type || component.ctype)
155
- type is "controller" or type is "page_controller"
156
-
157
- availablePages: ()->
158
- @availableSections.apply(@, arguments)
159
-
160
- availableSections: ()->
161
- console.log "The availableSections()/availablePages() method will be removed in 1.0"
162
- base = {}
163
- base[ @name ] = @sectionNames()
164
-
165
- _( @controllers() ).reduce (memo,controller)=>
166
- memo[ controller.name ] = controller.sectionNames()
167
- memo
168
- , base
169
-
170
- pageNames: ()->
171
- @sectionNames()
172
-
173
- sectionNames: (deep=false)->
174
- @pluck('name')
175
-
176
-
@@ -1,144 +0,0 @@
1
- # The `Luca.core.Field` is an abstract base class for field components
2
- # which are used in the `Luca.components.FormView`. They provide common
3
- # functionality like getValue, setValue, change and validation event bindings.
4
- #
5
- # Additionally, the field component provides common Twitter Bootstrap styling
6
- # hooks, such as error, warning, and success status flagging.
7
- field = Luca.register "Luca.core.Field"
8
-
9
- field.extends "Luca.View"
10
-
11
- field.triggers "before:validation",
12
- "after:validation",
13
- "on:change"
14
-
15
- field.publicConfiguration
16
- className: 'luca-ui-field'
17
-
18
- # Controls whether or not this field is rendered in a disabled state
19
- disabled: undefined
20
-
21
- # Controls the bootstrap helperText value for this field control
22
- helperText: undefined
23
-
24
- # Text value for the label element that goes along with this field control
25
- label: undefined
26
-
27
- # Controls the positioning of the label element. Valid options are
28
- # 'top', 'left'. For any other custom display you can control this
29
- # on your own by specifying a template
30
- labelAlign: 'top'
31
-
32
- # Controls the value displayed in this field when it is in an untouched state
33
- # by the user. Uses the html5 placeholder attribute
34
- placeHolder: undefined
35
-
36
- # Controls whether or not we want to display visual indicator
37
- # that this field is required.
38
- required: undefined
39
-
40
- # Which statuses can be applied to this field? Valid options are taken
41
- # from bootstrap state styling.
42
- statuses: [
43
- "warning"
44
- "error"
45
- "success"
46
- ]
47
-
48
- # What is the type of value that this field
49
- # should have? You can use this to coerce the `getValue()` type
50
- # into an integer, string, or float.
51
- valueType: "string"
52
-
53
-
54
-
55
- field.publicMethods
56
- # Disable this field
57
- disable: ()->
58
- @getInputElement().attr('disabled', true)
59
-
60
- # Enable this field
61
- enable: ()->
62
- @getInputElement().attr('disabled', false)
63
-
64
- # Gets the value from the input element in this field control
65
- getValue: ()->
66
- raw = @getInputElement()?.val()
67
- @getParsedValue(raw)
68
-
69
- # Sets the value on the input element inside this field control
70
- setValue: (value)->
71
- @getInputElement()?.val(value)
72
-
73
- # Update the state of this field. Valid options are defined on
74
- # this fields `@statuses` property
75
- updateState: (state)->
76
- for cssClass in @statuses
77
- @$el.removeClass(cssClass)
78
-
79
- @$el.addClass(state)
80
-
81
- # Remove any visual error indications from this field control
82
- clearErrors: ()->
83
- @$el.removeClass('error')
84
-
85
- # Display a visual error state on this field
86
- displayErrors: (errors)->
87
- @updateState('error')
88
-
89
- field.privateMethods
90
- # Runs the value from the underlying input element
91
- # through a type conversion process configured by
92
- # the `@valueType` field
93
- getParsedValue: (raw)->
94
- return raw if _.str.isBlank( raw )
95
-
96
- switch @valueType
97
- when "integer" then parseInt(raw)
98
- when "string" then "#{ raw }"
99
- when "float" then parseFloat(raw)
100
- else raw
101
-
102
- field.privateConfiguration
103
- # A convenience method for identifying field components
104
- isField: true
105
- template: 'fields/text_field'
106
-
107
- field.privateMethods
108
- initialize: (@options={})->
109
- _.extend @, @options
110
-
111
- @input_id ||= _.uniqueId('field')
112
- @input_name ||= @name
113
- @input_class ||= ""
114
- @input_type ||= ""
115
- @helperText ||= ""
116
- @label = @name if not @label? or @label.length is 0
117
- @label ||= "*#{ @label }" if @required and not @label?.match(/^\*/)
118
- @inputStyles ||= ""
119
- @input_value ||= @value || ""
120
-
121
- @disable() if @disabled
122
-
123
- @updateState( @state )
124
- @placeHolder ||= ""
125
-
126
- # In order to support using Luca.View template properties everywhere.
127
-
128
- # Will need to work around how the field classes
129
- # apply templates to themselves.
130
- Luca.View::initialize.apply(@, arguments)
131
-
132
- beforeRender: ()->
133
- if Luca.config.enableBoostrap
134
- @$el.addClass('control-group')
135
-
136
- @$el.addClass('required') if @required
137
-
138
- change_handler: (e)->
139
- @trigger "on:change", @, e
140
-
141
- getInputElement: ()->
142
- @input ||= @$('input').eq(0)
143
-
144
- field.register()
@@ -1,91 +0,0 @@
1
- # The `Luca.fields.ButtonField` provides an easy way to generate
2
- # a button element, with an optional icon. Supports all of the
3
- # available bootstrap icons, and color states.
4
- #
5
- # The `Luca.fields.ButtonField` component will typically be used as
6
- # part of a `Luca.components.FormView` or a `Luca.components.PanelToolbar`.
7
- buttonField = Luca.register "Luca.fields.ButtonField"
8
-
9
- buttonField.extends "Luca.core.Field"
10
-
11
- buttonField.triggers "button:click"
12
-
13
- buttonField.publicConfiguration
14
- # Which size should this button be? Valid options are:
15
- # - none ( default )
16
- # - large
17
- # - mini
18
- # - small
19
- buttonSize: undefined
20
-
21
- # Which bootstrap color class should we apply to this button?
22
- # Valid options are any css button class, or the defaults which
23
- # ship with bootstrap:
24
- #
25
- # - btn-primary
26
- # - btn-info
27
- # - btn-success
28
- # - btn-warning
29
- # - btn-danger
30
- # - btn-inverse
31
- # - btn-link
32
- class: undefined
33
-
34
- # specifies the bootstrap icon class you want to use for this button
35
- # you can use 'icon-ok-sign' or just 'ok-sign'
36
- icon_class: undefined
37
-
38
- # specifies the text value of the button
39
- label: undefined
40
-
41
- # an alias for label, or input_value. controls which text
42
- # displays inside of the button
43
- text: undefined
44
-
45
- # should we render the white icon?
46
- white: false
47
-
48
- buttonField.privateConfiguration
49
- readOnly: true
50
- input_value: undefined
51
- input_type: "button"
52
- icon_class: undefined
53
- input_name: undefined
54
- buttonClasses: ""
55
-
56
- buttonField.privateConfiguration
57
- isButton: true
58
- autoBindEventHandlers: true
59
- template: "fields/button_field"
60
- events:
61
- "click input" : "clickHandler"
62
-
63
- buttonField.privateMethods
64
- clickHandler: (e)->
65
- me = my = $( e.currentTarget )
66
- @trigger "button:click"
67
-
68
- initialize: (@options={})->
69
- _.extend @, @options
70
-
71
- Luca.core.Field::initialize.apply @, arguments
72
-
73
- @template = "fields/button_field_link" if @icon_class?.length
74
-
75
- afterInitialize: ()->
76
- @input_id ||= _.uniqueId('button')
77
- @input_name ||= @name ||= @input_id
78
- @input_value ||= @label ||= @text
79
- @input_class ||= @class ||= @buttonClasses
80
-
81
- if @buttonSize?.length > 0
82
- @input_class += " #{ buttonSize.replace(/btn-/,'') }"
83
-
84
- @icon_class ||= ""
85
- @icon_class = "icon-#{ @icon_class }" if @icon_class.length and !@icon_class.match(/^icon-/)
86
- @icon_class += " icon-white" if @white
87
-
88
- setValue: ()->
89
- true
90
-
91
- buttonField.register()
@@ -1,11 +0,0 @@
1
- hiddenField = Luca.register "Luca.fields.HiddenField"
2
- hiddenField.extends "Luca.core.Field"
3
-
4
- hiddenField.defines
5
- template: 'fields/hidden_field'
6
-
7
- afterInitialize: ()->
8
- @input_id ||= _.uniqueId('field')
9
- @input_name ||= @name
10
- @input_value ||= @value
11
- @label ||= @name
@@ -1,12 +0,0 @@
1
- labelField = Luca.register "Luca.components.LabelField"
2
- labelField.extends "Luca.core.Field"
3
-
4
- labelField.defines
5
- formatter: (value)->
6
- value ||= @getValue()
7
- _.str.titleize( value )
8
-
9
- setValue: (value)->
10
- @trigger("change", value, @getValue())
11
- @getInputElement().attr('value', value)
12
- @$('.value').html( @formatter(value) )