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,159 +0,0 @@
1
- selectField = Luca.register "Luca.fields.SelectField"
2
-
3
- selectField.extends "Luca.core.Field"
4
-
5
- selectField.triggers "after:select",
6
- "on:change"
7
-
8
- selectField.publicConfiguration
9
- # Enables multi-select UI element.
10
- allowMultiple: false
11
-
12
- # Includes a blank option in addition to all of the items
13
- # in the underlying collection. Defaults to `true`
14
- includeBlank: true
15
-
16
- # determines which value is sent when
17
- # the blank option is selected?
18
- blankValue: ''
19
-
20
- # Determines the text displayed when
21
- # the blank option is selected
22
- blankText: 'Select One'
23
-
24
- # Specifying a value for maxDisplayLength will truncate
25
- # values displayed in the select field when they reach
26
- # past a certain point, using the _.str truncate method.
27
- # Leave at 0 if you want to keep this feature disabled.
28
- maxDisplayLength: 0
29
-
30
- # When the underlying collection is reset and we re-render
31
- # the options elements, should we keep the value that was set
32
- # on this field prior to that? Defaults to `true` unless otherwise
33
- # specified.
34
- retainValue: undefined
35
-
36
- # Determines which value is rendered in the label element that gets
37
- # rendered along with this control group.
38
- label: undefined
39
-
40
- selectField.privateConfiguration
41
- template: "fields/select_field"
42
- events:
43
- "change select" : "change_handler"
44
-
45
- selectField.publicMethods
46
- # sets the value of this select field.
47
- setValue: (value)->
48
- @currentValue = value
49
- Luca.core.Field::setValue.apply @, arguments
50
-
51
- # returns the value of the select field. runs
52
- # the value through the getParsedValue method which
53
- # enforces the valueType type conversion.
54
- getValue: ()->
55
- raw = @getInputElement()?.val()
56
-
57
- if @allowMultiple
58
- _.map raw, (value)=>
59
- @getParsedValue(value)
60
- else
61
- @getParsedValue(raw)
62
-
63
- selectField.privateMethods
64
- initialize: (@options={})->
65
- _.extend @, @options
66
- _.extend @, Luca.concerns.Deferrable
67
- _.bindAll @, "change_handler"
68
-
69
- if _.isArray(@collection)
70
- @collection = data: @collection
71
-
72
- Luca.core.Field::initialize.apply @, arguments
73
-
74
- @input_id ||= _.uniqueId('field')
75
- @input_name ||= @name
76
- @valueType ||= Luca.config.idAttributeType if @valueField is "id"
77
- @label ||= @name
78
- @retainValue = true unless @retainValue?
79
-
80
- afterInitialize: ()->
81
- if @collection?.data
82
- @valueField ||= "id"
83
- @displayField ||= "name"
84
- @sortOptionsBy ||= @displayField
85
- @parseData()
86
-
87
- try
88
- @configure_collection( @setAsDeferrable )
89
- catch e
90
- console.log "Error Configuring Collection", @, e.message
91
-
92
- @collection?.bind "before:fetch", @beforeFetch, @
93
- @collection?.bind "reset", @populateOptions, @
94
-
95
- # if the select field is configured with a data property
96
- # then parse that data into the proper format. either
97
- # an array of objects with the valueField and displayField
98
- # properties, or an array of arrays with [valueField, displayField]
99
- parseData: ()->
100
- @collection.data = _( @collection.data ).map (record)=>
101
- return record if not _.isArray( record )
102
-
103
- hash = {}
104
- hash[ @valueField ] = record[0]
105
- hash[ @displayField ] = record[1] || record[0]
106
-
107
- hash
108
-
109
- getInputElement: ()->
110
- @input ||= @$('select').eq(0)
111
-
112
- afterRender: ()->
113
- if @collection?.models?.length > 0
114
- @populateOptions()
115
- else
116
- @collection?.trigger("reset")
117
-
118
- beforeFetch: ()->
119
- @resetOptions()
120
-
121
- change_handler: (e)->
122
- @trigger "on:change", @, e
123
-
124
- resetOptions: ()->
125
- @getInputElement().html('')
126
-
127
- if @allowMultiple
128
- @getInputElement().attr(multiple: true)
129
- else if @includeBlank
130
- @getInputElement().append("<option value='#{ @blankValue }'>#{ @blankText }</option>")
131
-
132
- populateOptions: ()->
133
- @resetOptions()
134
-
135
- if @collection?.length > 0
136
- if @sortOptionsBy?
137
- models = @collection.sortBy (model)=>
138
- if model.read?
139
- model.read( @sortOptionsBy )
140
- else
141
- model.get( @sortOptionsBy )
142
- else
143
- models = @collection.models
144
-
145
- for model in models
146
- v = model.read?( @valueField ) || model.get(@valueField)
147
- d = model.read?( @displayField ) || model.get(@displayField)
148
-
149
- if @maxDisplayLength and @maxDisplayLength > 0
150
- d = _.str.truncate(d, @maxDisplayLength)
151
-
152
- selected = "selected" if @selected and v is @selected
153
- option = "<option #{ selected } value='#{ v }'>#{ d }</option>"
154
- @getInputElement().append( option )
155
-
156
- @trigger "after:populate:options", @
157
- @setValue( @currentValue )
158
-
159
- selectField.register()
@@ -1,57 +0,0 @@
1
- textArea = Luca.register "Luca.fields.TextAreaField"
2
- textArea.extends "Luca.core.Field"
3
- textArea.defines
4
- autoBindEventHandlers: true
5
-
6
- events:
7
- "blur textarea" : "blur_handler"
8
- "focus textarea" : "focus_handler"
9
-
10
- template: 'fields/text_area_field'
11
-
12
- height: "200px"
13
- width: "90%"
14
- keyEventThrottle: 300
15
-
16
- initialize: (@options={})->
17
-
18
- @input_id ||= _.uniqueId('field')
19
- @input_name ||= @name
20
- @label ||= @name
21
- @input_class ||= @class
22
- @input_value ||= ""
23
- @inputStyles ||= "height:#{ @height };width:#{ @width }"
24
- @placeHolder ||= ""
25
-
26
- Luca.core.Field::initialize.apply @, arguments
27
-
28
- if @enableKeyEvents is true
29
- @keyup_handler = _.debounce(@keyup_handler, @keyEventThrottle || 10)
30
-
31
- console.log "Registering Key Events"
32
- @registerEvent("keyup textarea","keyup_handler")
33
- @registerEvent("keydown textarea","keyup_handler")
34
-
35
- setValue: (value)->
36
- $( @field() ).val(value)
37
-
38
- getValue: ()->
39
- $( @field() ).val()
40
-
41
- field: ()->
42
- @input = @$("textarea")
43
-
44
- keyup_handler: (e)->
45
- # TODO: Should ignore certain keyup events
46
- # which would not indicate a change
47
- @trigger "on:change", @, e
48
- @trigger "on:keyup", @, e
49
-
50
- blur_handler: (e)->
51
- @trigger "on:blur", @, e
52
-
53
- focus_handler: (e)->
54
- @trigger "on:focus", @, e
55
-
56
- change_handler: (e)->
57
- @trigger "on:change", @, e
@@ -1,20 +0,0 @@
1
- typeAheadField = Luca.register "Luca.fields.TypeAheadField"
2
- typeAheadField.extends "Luca.fields.TextField"
3
-
4
-
5
- typeAheadField.defines
6
- getSource: ()->
7
- Luca.util.read(@source) || []
8
-
9
- matcher: (item)->
10
- true
11
-
12
- beforeRender: ()->
13
- Luca.fields.TextField::beforeRender.apply(@, arguments)
14
- @getInputElement().attr('data-provide','typeahead')
15
-
16
- afterRender: ()->
17
- Luca.fields.TextField::afterRender.apply(@, arguments)
18
- @getInputElement().typeahead
19
- matcher: @matcher
20
- source: @getSource()
@@ -1,421 +0,0 @@
1
- # The FormView component is a special container which provides functionality
2
- # around the components inside which extend from the Luca.core.Field class.
3
- #
4
- # The FormView component integrates well with Luca.Models and can control
5
- # the attributes on that model, respond to validations, and submit changes
6
- # to an API.
7
- formView = Luca.register "Luca.components.FormView"
8
-
9
- formView.extends "Luca.Container"
10
-
11
- formView.mixesIn "LoadMaskable",
12
- "FormModelBindings"
13
-
14
- formView.triggers "before:submit",
15
- "before:reset",
16
- "before:load",
17
- "before:load:new",
18
- "before:load:existing",
19
- "after:submit",
20
- "after:reset",
21
- "after:load",
22
- "after:load:new",
23
- "after:load:existing",
24
- "after:submit:success",
25
- "after:submit:fatal_error",
26
- "after:submit:error",
27
- "state:change:dirty"
28
-
29
-
30
-
31
- formView.publicConfiguration
32
- # track dirty state will bind to change events
33
- # on all of the underlying fields, and set a
34
- # flag whenever one of them changes
35
- trackDirtyState: false
36
-
37
- # don't setup two way binding to the model
38
- trackModelChanges: false
39
-
40
- # should the label display above, or to the
41
- # side of the fields
42
- labelAlign: undefined
43
-
44
- # specifying this class gives you the ability
45
- # to layout the nested fields accordingly.
46
- fieldLayoutClass: undefined
47
-
48
- # should this form have a legend?
49
- legend: ""
50
-
51
- # available options are true, false, "top", "bottom", or "both"
52
- # the component configuration for the toolbar can be controlled
53
- # by specifying a name of a property that contains a valid
54
- # component reference ( either hash w/ type reference )
55
- toolbar: true
56
-
57
- # the name of the property which contains the configuration
58
- # for the buttons that will go in this toolbar. Specify
59
- # a string so it can be lazily evaluated at initialization.
60
- toolbarConfig: undefined
61
-
62
- # the default toolbar definition that will be created if
63
- # the form is configured to have a toolbar on it. this value
64
- # will be resolved at initialization, so pass a string identifying
65
- # an object in memory.
66
- defaultToolbar: "Luca.components.FormView.defaultToolbar"
67
-
68
- # if this form will be submitting values to a RESTful API and you
69
- # want to show a loading indicator or progress bar, configure the
70
- # @loadMask property.
71
- loadMask: true
72
-
73
- # Applies the twitter bootstrap well class to this form.
74
- # @$el.addClass('well') if @well
75
- well: false
76
-
77
- # Applies the twitter bootstrap form-search class to this form.
78
- # @$el.addClass('form-search') if @searchForm
79
- searchForm: false
80
-
81
- # Applies the twitter bootstrap horizontal form class to this form.
82
- # @$el.addClass('form-horizontal') if @horizontalForm
83
- horizontalForm: false
84
-
85
- # Applies the twitter bootstrap inline form class to this form.
86
- # @$el.addClass('form-inline') if @inlineForm
87
- inlineForm: false
88
-
89
- # if we should always include blank values
90
- # regardless of how the field is configured
91
- includeBlankValues: undefined
92
-
93
- formView.privateConfiguration
94
- tagName: 'form'
95
-
96
- # These events will get registered on the component
97
- # but still leave the @events property open to extend
98
- # for any component which inherits from us.
99
- _inheritEvents:
100
- "click .submit-button" : "submitHandler"
101
- "click .reset-button" : "resetHandler"
102
-
103
- bodyClassName: "form-view-body"
104
-
105
- stateful:
106
- dirty: false
107
- currentModel: undefined
108
-
109
- formView.privateMethods
110
- initialize: (@options={})->
111
- form = @
112
-
113
- @loadMask = Luca.config.enableBoostrap unless @loadMask?
114
-
115
- Luca.Container::initialize.apply @, arguments
116
-
117
- @components ||= @fields
118
-
119
- _.bindAll @, "submitHandler", "resetHandler", "renderToolbars"
120
-
121
- # have our events be internal to the view, and not
122
- # part of the normal @events chain, so they can be inherited
123
- for eventId, handler of @_inheritEvents
124
- @registerEvent(eventId, handler)
125
-
126
- if @trackDirtyState is true
127
- @on "after:components", ()->
128
- for field in @getFields()
129
- field.on "on:change", @onFieldChange, form
130
- , form
131
-
132
- @setupHooks( @hooks )
133
-
134
- @applyStyleClasses()
135
-
136
- Luca.components.FormView.setupToolbar.call(@)
137
-
138
- onFieldChange: (field, e)->
139
- @trigger "field:change", field, e
140
- @state.set('dirty', true)
141
-
142
- getDefaultToolbar: ()->
143
- config = @toolbarConfig || @defaultToolbar
144
- Luca.util.resolve( Luca.util.read(config) )
145
-
146
- applyStyleClasses: ()->
147
- if Luca.config.enableBoostrap
148
- @applyBootstrapStyleClasses()
149
-
150
- @$el.addClass( "label-align-#{ @labelAlign }") if @labelAlign
151
- @$el.addClass( @fieldLayoutClass ) if @fieldLayoutClass
152
-
153
- applyBootstrapStyleClasses: ()->
154
- @inlineForm = true if @labelAlign is "left"
155
-
156
- @$el.addClass('well') if @well
157
- @$el.addClass('form-search') if @searchForm
158
- @$el.addClass('form-horizontal') if @horizontalForm
159
- @$el.addClass('form-inline') if @inlineForm
160
-
161
- resetHandler: (e)->
162
- me = my = $( e?.target )
163
- if @beforeReset?
164
- result = @beforeReset()
165
- return if result is false
166
-
167
- @reset()
168
- @trigger "after:reset", @
169
-
170
- submitHandler: (e)->
171
- if @beforeSubmit?
172
- result = @beforeSubmit()
173
- return if result is false
174
- else
175
- @trigger "before:submit", @
176
-
177
- @trigger "enable:loadmask", @ if @loadMask is true
178
- @submit() if @hasModel()
179
-
180
- afterComponents: ()->
181
- Luca.Container::afterComponents?.apply(@, arguments)
182
-
183
- form = @
184
- @eachField (field)->
185
- field.getForm = ()=> form
186
- field.getModel = ()=> form.currentModel()
187
-
188
- eachField: (iterator)->
189
- _( @getFields() ).map( iterator )
190
-
191
- getField: (name)->
192
- passOne = _( @getFields('name', name) ).first()
193
- return passOne if passOne?
194
-
195
- _( @getFields('input_name', name) ).first()
196
-
197
- getFields: (attr,value)->
198
- fields = @selectByAttribute("isField", true, true)
199
-
200
- if attr? and value?
201
- fields = _(fields).select (field)->
202
- property = field[ attr ]
203
- property = property.call(field) if _.isFunction(property)
204
- property is value
205
-
206
- fields
207
-
208
- loadModel: (model)->
209
- form = @
210
- fields = @getFields()
211
-
212
- @state.set('dirty', false)
213
-
214
- @trigger "before:load", @, model
215
-
216
- if model
217
- model.beforeFormLoad?.apply(model, @)
218
- event = "before:load:#{ (if model.isNew() then "new" else "existing")}"
219
- @trigger event, @, model
220
-
221
- @state.set('currentModel', model)
222
-
223
- @setValues(model || {}, silent: true)
224
-
225
- @trigger "after:load", @, model
226
-
227
- if model
228
- @trigger "after:load:#{ (if model.isNew() then "new" else "existing")}", @, model
229
-
230
- reset: ()->
231
- @loadModel( @state.get('currentModel') )
232
-
233
- clear: ()->
234
- @state.set('currentModel', @defaultModel?() )
235
-
236
- _( @getFields() ).each (field)=>
237
- try
238
- field.setValue('')
239
- catch e
240
- console.log "Error Clearing", @, field
241
-
242
- isDirty: ()->
243
- !!@state.get('dirty')
244
-
245
- # set the values on the form
246
- # without syncing
247
- setValues: (source, options={})->
248
- source ||= @currentModel()
249
- fields = @getFields()
250
-
251
- _( fields ).each (field) =>
252
- field_name = field.input_name || field.name
253
-
254
- if source?[field_name]
255
- value = Luca.util.read( source[field_name] )
256
-
257
- if !value and Luca.isBackboneModel(source)
258
- value = source.get(field_name)
259
-
260
- field?.setValue( value ) unless field.readOnly is true
261
-
262
- @applyFormValuesToModel() unless options.silent? is true
263
-
264
- # Public: returns a hash of values for the form fields in this view.
265
- #
266
- # options - An options Hash to control the behavior of values returned (default: {}):
267
- # reject_blank: don't include values which are blank (default: true)
268
- # skip_buttons: don't include button fields (default: true)
269
- # blanks: an inverse alias for reject_blank (default: false)
270
- getValues: (options={})->
271
- options.reject_blank = true unless options.reject_blank?
272
- options.skip_buttons = true unless options.skip_buttons?
273
- options.reject_blank = true if options.blanks is false
274
-
275
- values = _( @getFields() ).inject (memo,field)=>
276
- value = field.getValue()
277
- key = field.input_name || field.name
278
-
279
- valueIsBlank = !!(_.str.isBlank( value ) || _.isUndefined( value ))
280
-
281
- allowBlankValues = not options.reject_blank and not field.send_blanks
282
- allowBlankValues = true if field.includeBlank is true or @includeBlankValues is true
283
-
284
-
285
- if options.debug
286
- console.log "#{ key } Options", options, "Value", value, "Value Is Blank?", valueIsBlank, "Allow Blanks?", allowBlankValues
287
-
288
- if options.skip_buttons and field.isButton
289
- skip = true
290
- else
291
- if valueIsBlank and allowBlankValues is false
292
- skip = true
293
-
294
- if field.input_name is "id" and valueIsBlank is true
295
- skip = true
296
-
297
- if options.debug
298
- console.log "Skip is true on #{ key }"
299
-
300
- if skip isnt true
301
- memo[ key ] = value
302
-
303
- memo
304
-
305
- , (options.defaults || {})
306
-
307
- values
308
-
309
- removeErrors: ()->
310
- @$('.alert.alert-error').remove()
311
- @$el.removeClass('error')
312
-
313
- for field in @getFields()
314
- field.clearErrors()
315
-
316
- displayErrors: (errors)->
317
- has_errors = false
318
- for field in @getFields()
319
- for field_name, field_errors of errors when field_name is field.input_name
320
- field.displayErrors(field_errors)
321
- has_errors = true
322
-
323
- if has_errors
324
- @$el.addClass('error')
325
-
326
- displayValidationErrorsMessage: ()->
327
- @errorMessage('Please fix the fields with errors')
328
-
329
- submit_success_handler: (model, response, xhr)->
330
- @trigger "after:submit", @, model, response
331
- @trigger "disable:loadmask", @ if @loadMask is true
332
-
333
- if response and response?.success is true
334
- @trigger "after:submit:success", @, model, response
335
- else
336
- @trigger "after:submit:error", @, model, response
337
-
338
- submit_fatal_error_handler: (model, response, xhr)->
339
- @trigger "after:submit", @, model, response
340
- @trigger "after:submit:fatal_error", @, model, response
341
-
342
- try
343
- json = $.parseJSON(response.responseText)
344
- if !json.success && json.errors?
345
- @displayValidationErrorsMessage()
346
- @displayErrors(json.errors)
347
-
348
- submit: (save=true, saveOptions={})->
349
- _.bindAll @, "submit_success_handler", "submit_fatal_error_handler"
350
-
351
- saveOptions.success ||= @submit_success_handler
352
- saveOptions.error ||= @submit_fatal_error_handler
353
-
354
- @removeErrors()
355
- @applyFormValuesToModel()
356
- return unless save
357
- @currentModel()?.save( @currentModel().toJSON(), saveOptions )
358
-
359
- hasModel: ()->
360
- @currentModel()?
361
-
362
- currentModel: (options={})->
363
- if options is true or options?.refresh is true
364
- @applyFormValuesToModel()
365
-
366
- @state.get('currentModel')
367
-
368
- applyFormValuesToModel: (options)->
369
- @currentModel()?.set( @getValues(), options )
370
-
371
- setLegend: (@legend)->
372
- $('fieldset legend', @el).first().html(@legend)
373
-
374
- flash: (message)->
375
- if @$('.toolbar-container.top').length > 0
376
- @$('.toolbar-container.top').after(message)
377
- else
378
- @$bodyEl().prepend(message)
379
-
380
- successFlashDelay: 1500
381
-
382
- successMessage: (message)->
383
- @$('.alert.alert-success').remove()
384
- @flash Luca.template("components/form_alert", className:"alert alert-success", message: message)
385
- _.delay ()=>
386
- @$('.alert.alert-success').fadeOut()
387
- , @successFlashDelay || 0
388
-
389
- errorMessage: (message)->
390
- @$('.alert.alert-error').remove()
391
- @flash Luca.template("components/form_alert", className:"alert alert-error", message: message)
392
-
393
- formView.classInterface
394
- setupToolbar: ()->
395
- if @toolbar isnt false and (not @topToolbar and not @bottomToolbar)
396
- if @toolbar is "both" or @toolbar is "top"
397
- @topToolbar = _.clone( @getDefaultToolbar() )
398
-
399
- unless @toolbar is "top"
400
- @bottomToolbar = _.clone( @getDefaultToolbar() )
401
-
402
- defaultToolbar:
403
- buttons:[
404
- icon:"remove-sign"
405
- label: "Reset"
406
- eventId: "click:reset"
407
- className:"reset-button"
408
- align: 'right'
409
- ,
410
- icon:"ok-sign"
411
- white: true
412
- label: "Save Changes"
413
- eventId: "click:submit"
414
- color: "success"
415
- className: 'submit-button'
416
- align: 'right'
417
- ]
418
-
419
- formView.defines
420
- version: 2
421
-
@@ -1,42 +0,0 @@
1
- gridView = Luca.register "Luca.components.GridLayoutView"
2
- gridView.extends "Luca.CollectionView"
3
-
4
- gridView.publicConfiguration
5
- # how many items do you wish to render per row?
6
- # assuming a 12 column grid, each item will receive
7
- # an equal amount of grid span/columns.
8
- itemsPerRow: 3
9
-
10
- gridView.privateConfiguration
11
- className: "grid-layout-view"
12
- tagName: "div"
13
- itemTagName: "div"
14
-
15
- gridView.privateMethods
16
- # adds the bootstrap span class to each collection-item,
17
- # where span class is equal to the 12 column grid / @itemsPerRow.
18
- # for example, each item would receive a span4 class when @itemsPerRow = 3
19
- attributesForItem: ()->
20
- base = Luca.CollectionView::attributesForItem.apply(@, arguments)
21
- @itemsPerRow = 3 unless _.isNumber(@itemsPerRow) and @itemsPerRow > 1
22
- columns = parseInt(12 / @itemsPerRow)
23
- base.class += " span#{ columns }"
24
-
25
- base
26
-
27
- # wraps every N number of rows, where N = @itemsPerRow
28
- # in a row-fluid wrapper, and appends it to the view
29
- renderModels: (models)->
30
- index = 0
31
- rowIndex = 0
32
-
33
- rows = for model in models
34
- row = @make("div", class:"row-fluid") if rowIndex++ is 0
35
- $(row).append @makeItem(model,index++)
36
- rowIndex = 0 if index > 0 and index % @itemsPerRow is 0
37
- row
38
-
39
- for row in rows
40
- @$append(row)
41
-
42
- gridView.register()
@@ -1,7 +0,0 @@
1
- #= require ./collection_view
2
- #= require ./simple_collection_view
3
- #= require ./grid_layout_view
4
- #= require ./table_view
5
- #= require ./multi_collection_view
6
- #= require ./table_view_scrollable
7
- #= require_tree .