luca 0.9.7 → 0.9.8

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 (377) hide show
  1. data/CHANGELOG +38 -0
  2. data/Gemfile +1 -0
  3. data/Gemfile.lock +27 -0
  4. data/README.md +45 -42
  5. data/ROADMAP +6 -29
  6. data/{assets → app/assets}/images/glyphicons-halflings-white.png +0 -0
  7. data/{assets → app/assets}/images/glyphicons-halflings.png +0 -0
  8. data/app/assets/javascripts/luca/basic.coffee +8 -0
  9. data/{src → app/assets/javascripts/luca}/components/application.coffee +153 -40
  10. data/{src → app/assets/javascripts/luca}/components/base_toolbar.coffee +2 -2
  11. data/{src → app/assets/javascripts/luca}/components/collection_loader_view.coffee +0 -0
  12. data/{src → app/assets/javascripts/luca}/components/collection_view.coffee +45 -104
  13. data/app/assets/javascripts/luca/components/controller.coffee +99 -0
  14. data/{src/core/field.coffee → app/assets/javascripts/luca/components/fields/base.coffee} +1 -1
  15. data/{src → app/assets/javascripts/luca}/components/fields/button_field.coffee +1 -2
  16. data/{src → app/assets/javascripts/luca}/components/fields/checkbox_array.coffee +0 -0
  17. data/{src → app/assets/javascripts/luca}/components/fields/checkbox_field.coffee +0 -0
  18. data/{src → app/assets/javascripts/luca}/components/fields/file_upload_field.coffee +0 -0
  19. data/{src → app/assets/javascripts/luca}/components/fields/hidden_field.coffee +0 -0
  20. data/{src → app/assets/javascripts/luca}/components/fields/label_field.coffee +0 -0
  21. data/{src → app/assets/javascripts/luca}/components/fields/select_field.coffee +8 -4
  22. data/{src → app/assets/javascripts/luca}/components/fields/text_area_field.coffee +3 -2
  23. data/{src → app/assets/javascripts/luca}/components/fields/text_field.coffee +2 -3
  24. data/{src → app/assets/javascripts/luca}/components/fields/type_ahead_field.coffee +0 -0
  25. data/{src → app/assets/javascripts/luca}/components/form_button_toolbar.coffee +0 -0
  26. data/{src → app/assets/javascripts/luca}/components/form_view.coffee +111 -44
  27. data/{src → app/assets/javascripts/luca}/components/grid_view.coffee +6 -6
  28. data/{src → app/assets/javascripts/luca}/components/index.coffee +0 -0
  29. data/app/assets/javascripts/luca/components/load_mask.coffee +8 -0
  30. data/app/assets/javascripts/luca/components/multi_collection_view.coffee +92 -0
  31. data/{src → app/assets/javascripts/luca}/components/nav_bar.coffee +5 -1
  32. data/app/assets/javascripts/luca/components/page_controller.coffee +7 -0
  33. data/{src → app/assets/javascripts/luca}/components/pagination_control.coffee +13 -13
  34. data/{src → app/assets/javascripts/luca}/components/record_manager.coffee +0 -0
  35. data/{src → app/assets/javascripts/luca}/components/router.coffee +6 -1
  36. data/app/assets/javascripts/luca/components/table_view.coffee +89 -0
  37. data/{src → app/assets/javascripts/luca}/components/template.coffee +0 -0
  38. data/{src → app/assets/javascripts/luca}/components/toolbar_dialog.coffee +0 -0
  39. data/{src → app/assets/javascripts/luca}/concerns/application_event_bindings.coffee +1 -1
  40. data/app/assets/javascripts/luca/concerns/collection_event_bindings.coffee +44 -0
  41. data/{src → app/assets/javascripts/luca}/concerns/deferrable.coffee +1 -2
  42. data/{src/plugins → app/assets/javascripts/luca/concerns}/development_tool_helpers.coffee +1 -1
  43. data/{src → app/assets/javascripts/luca}/concerns/dom_helpers.coffee +10 -7
  44. data/{src → app/assets/javascripts/luca}/concerns/enhanced_properties.coffee +0 -0
  45. data/app/assets/javascripts/luca/concerns/filterable.coffee +104 -0
  46. data/{src → app/assets/javascripts/luca}/concerns/grid_layout.coffee +0 -0
  47. data/{src → app/assets/javascripts/luca}/concerns/loadmaskable.coffee +17 -11
  48. data/{src → app/assets/javascripts/luca}/concerns/local_storage.coffee +0 -0
  49. data/{src → app/assets/javascripts/luca}/concerns/modal_view.coffee +0 -0
  50. data/{src → app/assets/javascripts/luca}/concerns/model_presenter.coffee +0 -0
  51. data/{src → app/assets/javascripts/luca}/concerns/paginatable.coffee +6 -14
  52. data/app/assets/javascripts/luca/concerns/query_collection_bindings.coffee +46 -0
  53. data/app/assets/javascripts/luca/concerns/sortable.coffee +69 -0
  54. data/app/assets/javascripts/luca/concerns/state_model.coffee +44 -0
  55. data/{src → app/assets/javascripts/luca}/concerns/templating.coffee +4 -1
  56. data/app/assets/javascripts/luca/config.coffee +49 -0
  57. data/{src → app/assets/javascripts/luca}/containers/card_view.coffee +30 -13
  58. data/{src/core → app/assets/javascripts/luca/containers}/container.coffee +57 -18
  59. data/app/assets/javascripts/luca/containers/index.coffee +2 -0
  60. data/{src → app/assets/javascripts/luca}/containers/modal_view.coffee +1 -1
  61. data/{src → app/assets/javascripts/luca}/containers/panel_toolbar.coffee +1 -1
  62. data/{src → app/assets/javascripts/luca}/containers/tab_view.coffee +1 -1
  63. data/{src → app/assets/javascripts/luca}/containers/viewport.coffee +4 -4
  64. data/{src → app/assets/javascripts/luca}/core/collection.coffee +58 -49
  65. data/{src/plugins → app/assets/javascripts/luca/core}/events.coffee +34 -2
  66. data/app/assets/javascripts/luca/core/index.coffee +12 -0
  67. data/{src → app/assets/javascripts/luca}/core/model.coffee +1 -1
  68. data/{src → app/assets/javascripts/luca}/core/observer.coffee +0 -0
  69. data/app/assets/javascripts/luca/core/panel.coffee +112 -0
  70. data/app/assets/javascripts/luca/core/registry/component_definition.coffee +318 -0
  71. data/{src → app/assets/javascripts/luca/core/registry}/concerns.coffee +0 -0
  72. data/app/assets/javascripts/luca/core/registry/index.coffee +4 -0
  73. data/app/assets/javascripts/luca/core/registry/meta_data.coffee +97 -0
  74. data/{src/core → app/assets/javascripts/luca/core/registry}/registry.coffee +10 -6
  75. data/app/assets/javascripts/luca/core/templates.coffee +47 -0
  76. data/{src → app/assets/javascripts/luca}/core/view.coffee +69 -11
  77. data/app/assets/javascripts/luca/dependencies.coffee +7 -0
  78. data/{src/tools → app/assets/javascripts/luca/development}/code_mirror_field.coffee +2 -1
  79. data/{src/tools → app/assets/javascripts/luca/development}/console.coffee +6 -5
  80. data/app/assets/javascripts/luca/development/index.coffee +2 -0
  81. data/{src → app/assets/javascripts/luca}/framework.coffee +74 -90
  82. data/app/assets/javascripts/luca/index.coffee +8 -0
  83. data/{src → app/assets/javascripts/luca}/managers/collection_manager.coffee +16 -7
  84. data/app/assets/javascripts/luca/managers/index.coffee +2 -0
  85. data/app/assets/javascripts/luca/managers/socket_manager.coffee +66 -0
  86. data/{src → app/assets/javascripts/luca}/templates/components/bootstrap_form_controls.jst.ejs +0 -0
  87. data/{src → app/assets/javascripts/luca}/templates/components/collection_loader_view.jst.ejs +0 -0
  88. data/{src → app/assets/javascripts/luca}/templates/components/form_alert.jst.ejs +0 -0
  89. data/{src → app/assets/javascripts/luca}/templates/components/grid_view.jst.ejs +0 -0
  90. data/{src → app/assets/javascripts/luca}/templates/components/grid_view_empty_text.jst.ejs +0 -0
  91. data/{src → app/assets/javascripts/luca}/templates/components/load_mask.jst.ejs +0 -0
  92. data/{src → app/assets/javascripts/luca}/templates/components/nav_bar.jst.ejs +0 -0
  93. data/{src → app/assets/javascripts/luca}/templates/components/pagination.jst.ejs +0 -0
  94. data/{src/templates → app/assets/javascripts/luca/templates/components}/table_view.jst.ejs +0 -0
  95. data/{src → app/assets/javascripts/luca}/templates/containers/basic.jst.ejs +0 -0
  96. data/{src → app/assets/javascripts/luca}/templates/containers/tab_selector_container.jst.ejs +0 -0
  97. data/{src → app/assets/javascripts/luca}/templates/containers/tab_view.jst.ejs +0 -0
  98. data/{src → app/assets/javascripts/luca}/templates/containers/toolbar_wrapper.jst.ejs +0 -0
  99. data/{src → app/assets/javascripts/luca}/templates/fields/button_field.jst.ejs +0 -0
  100. data/{src → app/assets/javascripts/luca}/templates/fields/button_field_link.jst.ejs +0 -0
  101. data/{src → app/assets/javascripts/luca}/templates/fields/checkbox_array.jst.ejs +0 -0
  102. data/{src → app/assets/javascripts/luca}/templates/fields/checkbox_array_item.jst.ejs +0 -0
  103. data/{src → app/assets/javascripts/luca}/templates/fields/checkbox_field.jst.ejs +0 -0
  104. data/{src → app/assets/javascripts/luca}/templates/fields/file_upload_field.jst.ejs +0 -0
  105. data/{src → app/assets/javascripts/luca}/templates/fields/hidden_field.jst.ejs +0 -0
  106. data/{src → app/assets/javascripts/luca}/templates/fields/select_field.jst.ejs +0 -0
  107. data/{src → app/assets/javascripts/luca}/templates/fields/text_area_field.jst.ejs +1 -1
  108. data/{src → app/assets/javascripts/luca}/templates/fields/text_field.jst.ejs +1 -1
  109. data/app/assets/javascripts/luca/util/deprecations.coffee +18 -0
  110. data/app/assets/javascripts/luca/util/index.coffee +3 -0
  111. data/app/assets/javascripts/luca/util/logging.coffee +15 -0
  112. data/{src/util.coffee → app/assets/javascripts/luca/util/luca.coffee} +20 -4
  113. data/{src/core → app/assets/javascripts/luca/util}/script_loader.coffee +0 -0
  114. data/app/assets/javascripts/luca-ui.js +1 -0
  115. data/{src/stylesheets → app/assets/stylesheets/luca}/components/checkbox_array.scss +0 -0
  116. data/app/assets/stylesheets/luca/components/form_view.scss +7 -0
  117. data/{src/stylesheets → app/assets/stylesheets/luca}/components/grid_view.scss +0 -0
  118. data/{src/stylesheets → app/assets/stylesheets/luca}/components/load_mask.scss +0 -0
  119. data/{src/stylesheets → app/assets/stylesheets/luca}/components/viewport.scss +0 -0
  120. data/{src/stylesheets → app/assets/stylesheets/luca}/containers/container.scss +0 -0
  121. data/{src/stylesheets → app/assets/stylesheets/luca}/containers/modal_view.scss +0 -0
  122. data/{src/stylesheets → app/assets/stylesheets/luca}/containers/panels.scss +0 -0
  123. data/{src/stylesheets → app/assets/stylesheets/luca}/containers/tab_view.scss +0 -0
  124. data/{src/stylesheets/tools → app/assets/stylesheets/luca/development}/console.scss +0 -0
  125. data/app/assets/stylesheets/luca/development/index.css +3 -0
  126. data/app/assets/stylesheets/luca/index.css +4 -0
  127. data/{src/stylesheets → app/assets/stylesheets/luca}/normalize.scss +0 -0
  128. data/app.rb +2 -4
  129. data/lib/generators/luca/application/application_generator.rb +12 -8
  130. data/lib/generators/luca/application/templates/controller.rb +0 -2
  131. data/lib/generators/luca/application/templates/index.html.erb +12 -0
  132. data/lib/generators/luca/application/templates/index.html.haml +1 -0
  133. data/lib/generators/luca/application/templates/javascripts/application.coffee +18 -0
  134. data/lib/generators/luca/application/templates/javascripts/collection_manager.coffee +2 -0
  135. data/lib/generators/luca/application/templates/javascripts/config.coffee +3 -0
  136. data/lib/generators/luca/application/templates/javascripts/{dependencies.js.coffee → dependencies.coffee} +1 -0
  137. data/lib/generators/luca/application/templates/javascripts/home.jst.ejs +2 -0
  138. data/lib/generators/luca/application/templates/javascripts/index.coffee +15 -0
  139. data/lib/generators/luca/application/templates/javascripts/router.coffee +4 -0
  140. data/lib/luca/component_documentation.rb +72 -0
  141. data/lib/luca/rails/engine.rb +4 -0
  142. data/lib/luca/rails/version.rb +1 -1
  143. data/lib/luca.rb +1 -1
  144. data/lib/railties/luca/tasks.rake +31 -0
  145. data/luca.gemspec +1 -0
  146. data/spec/components/controller_spec.coffee +62 -0
  147. data/spec/components/form_view_spec.coffee +4 -0
  148. data/spec/concerns/collection_event_bindings_spec.coffee +15 -0
  149. data/spec/concerns/dom_helpers_spec.coffee +2 -2
  150. data/spec/concerns/filterable_spec.coffee +4 -4
  151. data/spec/concerns/state_model_spec.coffee +50 -0
  152. data/spec/core/collection_spec.coffee +25 -0
  153. data/spec/{concerns_spec.coffee → core/concerns_spec.coffee} +0 -0
  154. data/spec/core/container_spec.coffee +57 -5
  155. data/spec/core/define_spec.coffee +116 -0
  156. data/spec/core/events_spec.coffee +26 -0
  157. data/spec/core/field_spec.coffee +4 -0
  158. data/spec/{framework_spec.coffee → core/framework_spec.coffee} +31 -2
  159. data/spec/{util_spec.coffee → core/util_spec.coffee} +2 -2
  160. data/spec/core/view_spec.coffee +65 -1
  161. data/spec/dependencies/index.coffee +3 -0
  162. data/{assets/javascripts → spec}/dependencies/jasmine-html.js +0 -0
  163. data/{assets/javascripts → spec}/dependencies/jasmine.js +0 -0
  164. data/{assets/javascripts → spec}/dependencies/sinon.js +0 -0
  165. data/spec/luca-spec.coffee +9 -0
  166. data/vendor/assets/javascripts/backbone-ext.js +21 -0
  167. data/vendor/assets/javascripts/backbone-min.js +38 -0
  168. data/vendor/assets/javascripts/backbone-query.min.js +1 -0
  169. data/vendor/assets/javascripts/bootstrap.min.js +7 -0
  170. data/{assets/javascripts/dependencies → vendor/assets/javascripts}/codemirror-coffeescript.js +0 -0
  171. data/{assets/javascripts/dependencies → vendor/assets/javascripts}/codemirror-css.js +0 -0
  172. data/{assets/javascripts/dependencies → vendor/assets/javascripts}/codemirror-html.js +0 -0
  173. data/{assets/javascripts/dependencies → vendor/assets/javascripts}/codemirror-javascript.js +0 -0
  174. data/{assets/javascripts/dependencies → vendor/assets/javascripts}/codemirror-less.js +0 -0
  175. data/vendor/assets/javascripts/codemirror-ui.js +503 -0
  176. data/{assets/javascripts/dependencies → vendor/assets/javascripts}/codemirror-vim.js +0 -0
  177. data/{assets/javascripts/dependencies → vendor/assets/javascripts}/codemirror.js +0 -0
  178. data/vendor/assets/javascripts/inflections.js +656 -0
  179. data/vendor/assets/javascripts/jasmine-html.js +190 -0
  180. data/vendor/assets/javascripts/jasmine.js +2476 -0
  181. data/{assets/javascripts/dependencies → vendor/assets/javascripts}/jquery.js +0 -0
  182. data/vendor/assets/javascripts/luca-spec.js +11 -0
  183. data/{assets/javascripts/dependencies → vendor/assets/javascripts}/modal.js +0 -0
  184. data/{assets/javascripts/dependencies → vendor/assets/javascripts}/modernizr.min.js +0 -0
  185. data/{assets/javascripts/dependencies → vendor/assets/javascripts}/prettify.js +0 -0
  186. data/vendor/assets/javascripts/sinon.js +3469 -0
  187. data/{assets/javascripts/dependencies → vendor/assets/javascripts}/spin-min.js +0 -0
  188. data/{assets/javascripts/dependencies → vendor/assets/javascripts}/underscore-min.js +0 -0
  189. data/vendor/assets/javascripts/underscore-string.min.js +1 -0
  190. data/vendor/assets/stylesheets/bootstrap-responsive.min.css +9 -0
  191. data/vendor/assets/stylesheets/bootstrap.min.css +9 -0
  192. data/{assets → vendor/assets}/stylesheets/codemirror-blackboard.css +0 -0
  193. data/{assets → vendor/assets}/stylesheets/codemirror-monokai.css +0 -0
  194. data/{assets → vendor/assets}/stylesheets/codemirror.css +0 -0
  195. data/{assets → vendor/assets}/stylesheets/jasmine.css +0 -0
  196. data/vendor/assets/stylesheets/luca-ui.css +0 -601
  197. data/views/jasmine.erb +2 -2
  198. metadata +190 -299
  199. data/assets/javascripts/dependencies/backbone-min.js +0 -37
  200. data/assets/javascripts/dependencies/backbone-query.min.js +0 -1
  201. data/assets/javascripts/dependencies/bootstrap.min.js +0 -7
  202. data/assets/javascripts/dependencies/coffee-script.js +0 -12189
  203. data/assets/javascripts/dependencies/underscore-string.min.js +0 -14
  204. data/assets/javascripts/dependencies.coffee +0 -5
  205. data/assets/javascripts/luca/index.coffee +0 -1
  206. data/assets/javascripts/luca-templates.js +0 -1
  207. data/assets/javascripts/luca-ui-base.coffee +0 -1
  208. data/assets/javascripts/luca-ui-bootstrap.js +0 -1
  209. data/assets/javascripts/luca-ui-development-tools.coffee +0 -9
  210. data/assets/javascripts/luca-ui-full.js +0 -3
  211. data/assets/javascripts/luca-ui-spec.coffee +0 -2
  212. data/assets/javascripts/luca-ui.js +0 -3
  213. data/assets/javascripts/sandbox/application.coffee +0 -57
  214. data/assets/javascripts/sandbox/config.coffee +0 -7
  215. data/assets/javascripts/sandbox/router.coffee +0 -24
  216. data/assets/javascripts/sandbox/templates/builder/component_list.luca +0 -1
  217. data/assets/javascripts/sandbox/templates/builder.luca +0 -2
  218. data/assets/javascripts/sandbox/templates/main.luca +0 -53
  219. data/assets/javascripts/sandbox/templates/sandbox/docs_index.luca +0 -1
  220. data/assets/javascripts/sandbox/templates/sandbox/navigation.luca +0 -8
  221. data/assets/javascripts/sandbox/templates/sandbox/readme.luca +0 -30
  222. data/assets/javascripts/sandbox/templates/sandbox.luca +0 -1
  223. data/assets/javascripts/sandbox/views/builder/builder_canvas.coffee +0 -3
  224. data/assets/javascripts/sandbox/views/builder/builder_editor.coffee +0 -6
  225. data/assets/javascripts/sandbox/views/builder/component_list.coffee +0 -38
  226. data/assets/javascripts/sandbox/views/builder/project_browser.coffee +0 -14
  227. data/assets/javascripts/sandbox/views/builder.coffee +0 -133
  228. data/assets/javascripts/sandbox/views/docs_controller.coffee +0 -7
  229. data/assets/javascripts/sandbox/views/inspector/instance_filter.coffee +0 -18
  230. data/assets/javascripts/sandbox/views/inspector/instance_list.coffee +0 -0
  231. data/assets/javascripts/sandbox/views/inspector.coffee +0 -11
  232. data/assets/javascripts/sandbox/views/top_navigation.coffee +0 -4
  233. data/assets/javascripts/sandbox.coffee +0 -7
  234. data/assets/javascripts/spec-dependencies.coffee +0 -4
  235. data/assets/stylesheets/bootstrap-responsive.min.css +0 -2
  236. data/assets/stylesheets/bootstrap.min.css +0 -727
  237. data/assets/stylesheets/luca-ui-bootstrap.css +0 -4
  238. data/assets/stylesheets/luca-ui-development-tools.css +0 -5
  239. data/assets/stylesheets/luca-ui-full.css +0 -3
  240. data/assets/stylesheets/luca-ui-spec.css +0 -3
  241. data/assets/stylesheets/luca-ui.css +0 -3
  242. data/assets/stylesheets/prettify.css +0 -40
  243. data/assets/stylesheets/sandbox/builder.scss +0 -79
  244. data/assets/stylesheets/sandbox/sandbox.scss +0 -18
  245. data/assets/stylesheets/sandbox.css +0 -3
  246. data/assets/stylesheets/themes/amelia-bootstrap.css +0 -826
  247. data/assets/stylesheets/themes/slate-bootstrap.css +0 -797
  248. data/assets/stylesheets/themes/superhero-bootstrap.css +0 -830
  249. data/lib/generators/luca/application/templates/javascripts/application.js +0 -28
  250. data/lib/generators/luca/application/templates/javascripts/application.js.coffee +0 -20
  251. data/lib/generators/luca/application/templates/javascripts/config.js +0 -15
  252. data/lib/generators/luca/application/templates/javascripts/config.js.coffee +0 -9
  253. data/lib/generators/luca/application/templates/javascripts/dependencies.js +0 -5
  254. data/lib/generators/luca/application/templates/javascripts/index.js +0 -9
  255. data/lib/generators/luca/application/templates/javascripts/index.js.coffee +0 -9
  256. data/lib/generators/luca/application/templates/javascripts/main.js +0 -8
  257. data/lib/generators/luca/application/templates/javascripts/main.js.coffee +0 -3
  258. data/lib/generators/luca/application/templates/javascripts/main.jst.ejs +0 -1
  259. data/lib/generators/luca/application/templates/javascripts/router.js +0 -12
  260. data/lib/generators/luca/application/templates/javascripts/router.js.coffee +0 -7
  261. data/spec/containers/column_view_spec.coffee +0 -0
  262. data/spec/containers/split_view_spec.coffee +0 -0
  263. data/spec/define_spec.coffee +0 -13
  264. data/src/components/controller.coffee +0 -65
  265. data/src/components/load_mask.coffee +0 -3
  266. data/src/components/multi_collection_view.coffee +0 -121
  267. data/src/components/page_controller.coffee +0 -2
  268. data/src/components/table_view.coffee +0 -62
  269. data/src/concerns/collection_event_bindings.coffee +0 -26
  270. data/src/concerns/filterable.coffee +0 -82
  271. data/src/concerns/state_model.coffee +0 -16
  272. data/src/containers/column_view.coffee +0 -42
  273. data/src/containers/page_view.coffee +0 -2
  274. data/src/containers/panel_view.coffee +0 -23
  275. data/src/containers/split_view.coffee +0 -8
  276. data/src/core/core.coffee +0 -0
  277. data/src/core/meta_data.coffee +0 -37
  278. data/src/core/panel.coffee +0 -118
  279. data/src/define.coffee +0 -170
  280. data/src/index.coffee +0 -25
  281. data/src/managers/socket_manager.coffee +0 -54
  282. data/src/samples/definition.coffee +0 -49
  283. data/src/stylesheets/base.scss +0 -0
  284. data/src/stylesheets/components/form_view.scss +0 -59
  285. data/src/stylesheets/components/toolbar.scss +0 -0
  286. data/src/stylesheets/tools/class_browser.scss +0 -32
  287. data/src/stylesheets/tools/code_editor.scss +0 -24
  288. data/src/stylesheets/tools/component_tester.scss +0 -26
  289. data/src/tools/application_inspector.coffee +0 -2
  290. data/src/tools/code_editor.coffee +0 -258
  291. data/src/tools/coffee_script_editor.coffee +0 -82
  292. data/src/tools/collection_inspector.coffee +0 -4
  293. data/src/tools/collections/components.coffee +0 -59
  294. data/src/tools/collections/instances.coffee +0 -15
  295. data/src/tools/component_tester.coffee +0 -462
  296. data/src/tools/models/components.coffee +0 -25
  297. data/src/tools/models/instance.coffee +0 -2
  298. data/src/tools/templates/component_tester/help.luca +0 -14
  299. data/vendor/assets/javascripts/luca-ui-base.js +0 -5304
  300. data/vendor/assets/javascripts/luca-ui-bootstrap.js +0 -9
  301. data/vendor/assets/javascripts/luca-ui-development-tools.js +0 -18561
  302. data/vendor/assets/javascripts/luca-ui-development-tools.min.js +0 -15
  303. data/vendor/assets/javascripts/luca-ui-full.js +0 -6319
  304. data/vendor/assets/javascripts/luca-ui-full.min.js +0 -9
  305. data/vendor/assets/javascripts/luca-ui-spec.js +0 -6815
  306. data/vendor/assets/javascripts/luca-ui-templates.js +0 -92
  307. data/vendor/assets/javascripts/luca-ui.js +0 -6234
  308. data/vendor/assets/javascripts/luca-ui.min.js +0 -5
  309. data/vendor/assets/luca-ui/base.css +0 -85
  310. data/vendor/assets/luca-ui/components/application.js +0 -91
  311. data/vendor/assets/luca-ui/components/base_toolbar.js +0 -23
  312. data/vendor/assets/luca-ui/components/controller.js +0 -38
  313. data/vendor/assets/luca-ui/components/fields/button_field.js +0 -45
  314. data/vendor/assets/luca-ui/components/fields/checkbox_field.js +0 -43
  315. data/vendor/assets/luca-ui/components/fields/file_upload_field.js +0 -20
  316. data/vendor/assets/luca-ui/components/fields/hidden_field.js +0 -20
  317. data/vendor/assets/luca-ui/components/fields/select_field.js +0 -97
  318. data/vendor/assets/luca-ui/components/fields/text_area_field.js +0 -48
  319. data/vendor/assets/luca-ui/components/fields/text_field.js +0 -46
  320. data/vendor/assets/luca-ui/components/fields/type_ahead_field.js +0 -13
  321. data/vendor/assets/luca-ui/components/form_button_toolbar.js +0 -32
  322. data/vendor/assets/luca-ui/components/form_view.css +0 -32
  323. data/vendor/assets/luca-ui/components/form_view.js +0 -207
  324. data/vendor/assets/luca-ui/components/grid_view.css +0 -76
  325. data/vendor/assets/luca-ui/components/grid_view.js +0 -202
  326. data/vendor/assets/luca-ui/components/record_manager.js +0 -207
  327. data/vendor/assets/luca-ui/components/router.js +0 -36
  328. data/vendor/assets/luca-ui/components/template.js +0 -26
  329. data/vendor/assets/luca-ui/components/toolbar.css +0 -11
  330. data/vendor/assets/luca-ui/containers/card_view.js +0 -98
  331. data/vendor/assets/luca-ui/containers/column_view.js +0 -52
  332. data/vendor/assets/luca-ui/containers/container.css +0 -3
  333. data/vendor/assets/luca-ui/containers/modal_view.css +0 -0
  334. data/vendor/assets/luca-ui/containers/modal_view.js +0 -87
  335. data/vendor/assets/luca-ui/containers/panel_view.js +0 -34
  336. data/vendor/assets/luca-ui/containers/split_view.js +0 -13
  337. data/vendor/assets/luca-ui/containers/tab_view.css +0 -16
  338. data/vendor/assets/luca-ui/containers/tab_view.js +0 -80
  339. data/vendor/assets/luca-ui/containers/viewport.js +0 -18
  340. data/vendor/assets/luca-ui/core/collection.js +0 -221
  341. data/vendor/assets/luca-ui/core/container.js +0 -205
  342. data/vendor/assets/luca-ui/core/field.js +0 -59
  343. data/vendor/assets/luca-ui/core/observer.js +0 -42
  344. data/vendor/assets/luca-ui/core/view.js +0 -127
  345. data/vendor/assets/luca-ui/framework.js +0 -110
  346. data/vendor/assets/luca-ui/index.js +0 -5
  347. data/vendor/assets/luca-ui/managers/collection_manager.js +0 -98
  348. data/vendor/assets/luca-ui/managers/socket_manager.js +0 -52
  349. data/vendor/assets/luca-ui/modules/deferrable.js +0 -21
  350. data/vendor/assets/luca-ui/modules/local_storage.js +0 -81
  351. data/vendor/assets/luca-ui/normalize.css +0 -359
  352. data/vendor/assets/luca-ui/stylesheets/base.css +0 -85
  353. data/vendor/assets/luca-ui/stylesheets/components/form_view.css +0 -32
  354. data/vendor/assets/luca-ui/stylesheets/components/grid_view.css +0 -76
  355. data/vendor/assets/luca-ui/stylesheets/components/toolbar.css +0 -11
  356. data/vendor/assets/luca-ui/stylesheets/containers/container.css +0 -3
  357. data/vendor/assets/luca-ui/stylesheets/containers/modal_view.css +0 -0
  358. data/vendor/assets/luca-ui/stylesheets/containers/tab_view.css +0 -16
  359. data/vendor/assets/luca-ui/stylesheets/normalize.css +0 -359
  360. data/vendor/assets/luca-ui/templates/components/bootstrap_form_controls.js +0 -4
  361. data/vendor/assets/luca-ui/templates/components/form_view.js +0 -4
  362. data/vendor/assets/luca-ui/templates/components/grid_view.js +0 -4
  363. data/vendor/assets/luca-ui/templates/components/grid_view_empty_text.js +0 -4
  364. data/vendor/assets/luca-ui/templates/containers/basic.js +0 -4
  365. data/vendor/assets/luca-ui/templates/containers/tab_selector_container.js +0 -4
  366. data/vendor/assets/luca-ui/templates/containers/tab_view.js +0 -4
  367. data/vendor/assets/luca-ui/templates/containers/toolbar_wrapper.js +0 -4
  368. data/vendor/assets/luca-ui/templates/fields/button_field.js +0 -4
  369. data/vendor/assets/luca-ui/templates/fields/button_field_link.js +0 -4
  370. data/vendor/assets/luca-ui/templates/fields/checkbox_field.js +0 -4
  371. data/vendor/assets/luca-ui/templates/fields/file_upload_field.js +0 -4
  372. data/vendor/assets/luca-ui/templates/fields/hidden_field.js +0 -4
  373. data/vendor/assets/luca-ui/templates/fields/select_field.js +0 -4
  374. data/vendor/assets/luca-ui/templates/fields/text_area_field.js +0 -4
  375. data/vendor/assets/luca-ui/templates/fields/text_field.js +0 -4
  376. data/vendor/assets/luca-ui/templates/sample/contents.js +0 -4
  377. data/vendor/assets/luca-ui/templates/sample/welcome.js +0 -4
@@ -1,54 +1,50 @@
1
+ # The CollectionView handles rendering a set of models from a
2
+ # collection
1
3
  collectionView = Luca.register "Luca.components.CollectionView"
2
- # The CollectionView facilitates the rendering of a Collection
3
- # of models into a group of many rendered templates
4
- #
5
- # Example:
6
- #
7
- # new Luca.components.CollectionView
8
- # itemTemplate: "template_name"
9
- # collection: "collection_class_name"
10
- # pagination:
11
- # page: 1
12
- # limit: 15
13
- # filterable:
14
- # query:
15
- # default: 'value'
16
- #
17
- collectionView.extends "Luca.components.Panel"
18
-
19
- collectionView.mixesIn "LoadMaskable",
20
- "Filterable",
21
- "Paginatable"
22
4
 
23
- collectionView.triggers "before:refresh",
24
- "after:refresh",
25
- "refresh",
26
- "empty:results"
5
+ collectionView.extends "Luca.Panel"
27
6
 
28
- collectionView.defines
29
- tagName: "ol"
7
+ collectionView.mixesIn "QueryCollectionBindings",
8
+ "LoadMaskable",
9
+ "Filterable",
10
+ "Paginatable",
11
+ "Sortable"
30
12
 
31
- className: "luca-ui-collection-view"
13
+ collectionView.triggers "before:refresh",
14
+ "after:refresh",
15
+ "refresh",
16
+ "empty:results"
32
17
 
18
+ # IDEA:
19
+ #
20
+ # For validation of component configuration,
21
+ # we could define a convention like:
22
+ #
23
+ # collectionView.validatesConfigurationWith
24
+ # requiresValidCollectionAt: "collection"
25
+ # requiresPresenceOf:
26
+ # either: ["itemTemplate", "itemRenderer", "itemProperty"]
27
+ #
28
+ #
29
+ collectionView.publicConfiguration
30
+ tagName: "ol"
33
31
  bodyClassName: "collection-ui-panel"
34
-
35
- # A collection view can pass a model through to a template
36
- itemTemplate: undefined
37
-
38
- # A collection view can pass a model through a function which should return a string
39
- itemRenderer: undefined
40
-
41
32
  itemTagName: 'li'
42
-
43
33
  itemClassName: 'collection-item'
34
+ itemTemplate: undefined
35
+ itemRenderer: undefined
36
+ itemProperty: undefined
44
37
 
45
-
38
+ collectionView.defines
46
39
  initialize: (@options={})->
47
40
  _.extend(@, @options)
48
-
49
41
  _.bindAll @, "refresh"
50
42
 
51
-
43
+ # IDEA:
44
+ #
45
+ # This type of code could be moved into a re-usable concern
46
+ # which higher order components can mixin to make it easier
47
+ # to extend them, instantiate them, etc.
52
48
  unless @collection? or @options.collection
53
49
  console.log "Error on initialize of collection view", @
54
50
  throw "Collection Views must specify a collection"
@@ -66,30 +62,21 @@ collectionView.defines
66
62
  console.log "Missing Collection on #{ @name || @cid }", @, @collection
67
63
  throw "Collection Views must have a valid backbone collection"
68
64
 
69
- @collection.on "before:fetch", ()=>
70
- @trigger "enable:loadmask"
71
-
72
- @collection.bind "reset", ()=>
73
- @refresh()
74
- @trigger "disable:loadmask"
75
-
76
- @collection.bind "remove", ()=>
77
- @refresh()
65
+ @on "data:refresh", @refresh, @
78
66
 
79
- @collection.bind "add", ()=>
80
- @refresh()
67
+ @on "collection:reset", @refresh, @
68
+ @on "collection:remove", @refresh, @
69
+ @on "collection:add", @refresh, @
70
+ @on "collection:change", @refreshModel, @ if @observeChanges is true
81
71
 
82
- if @observeChanges is true
83
- @collection.on "change", @refreshModel, @
72
+ Luca.Panel::initialize.apply(@, arguments)
84
73
 
85
- Luca.components.Panel::initialize.apply(@, arguments)
74
+ view = @
75
+ if @getCollection()?.length > 0
76
+ @on "after:render", ()->
77
+ view.refresh()
78
+ view.unbind "after:render", @
86
79
 
87
- unless @autoRefreshOnModelsPresent is false
88
- @defer ()=>
89
- @refresh() if @collection.length > 0
90
- .until("after:render")
91
-
92
- @on "refresh", @refresh, @
93
80
 
94
81
  attributesForItem: (item, model)->
95
82
  _.extend {}, class: @itemClassName, "data-index": item.index, "data-model-id": item.model.get('id')
@@ -118,47 +105,6 @@ collectionView.defines
118
105
  console.log "Error generating DOM element for CollectionView", @, model, index
119
106
  #no op
120
107
 
121
- getCollection: ()->
122
- @collection
123
-
124
- loadModels: (models=[], options={})->
125
- @getCollection()?.reset(models, options)
126
-
127
- applyQuery: (query={},queryOptions={})->
128
- @query = query
129
- @queryOptions = queryOptions
130
- @refresh()
131
- @
132
-
133
- # Private: returns the query that is applied to the underlying collection.
134
- # accepts the same options as Luca.Collection.query's initial query option.
135
- getQuery: ()->
136
- query = @query ||= {}
137
- for querySource in _( @querySources || [] ).compact()
138
- query = _.extend(query, (querySource()||{}) )
139
- query
140
-
141
- # Private: returns the query that is applied to the underlying collection.
142
- # accepts the same options as Luca.Collection.query's initial query option.
143
- getQueryOptions: ()->
144
- options = @queryOptions ||= {}
145
-
146
- for optionSource in _( @optionsSources || [] ).compact()
147
- options = _.extend(options, (optionSource()||{}) )
148
-
149
- options
150
-
151
- # Private: returns the models to be rendered. If the underlying collection
152
- # responds to @query() then it will use that interface.
153
- getModels: (query,options)->
154
- if @collection?.query
155
- query ||= @getQuery()
156
- options ||= @getQueryOptions()
157
-
158
- @collection.query(query, options)
159
- else
160
- @collection.models
161
-
162
108
  locateItemElement: (id)->
163
109
  @$(".#{ @itemClassName }[data-model-id='#{ id }']")
164
110
 
@@ -195,11 +141,6 @@ collectionView.defines
195
141
  eventTrigger = _([domEvent,"#{ @itemTagName }.#{ @itemClassName }", selector]).compact().join(" ")
196
142
  Luca.View::registerEvent(eventTrigger,handler)
197
143
 
198
- render: ()->
199
- @refresh()
200
- @$attach() if @$el.parent().length > 0 and @container?
201
- @
202
-
203
144
  # Private Helpers
204
145
 
205
146
 
@@ -0,0 +1,99 @@
1
+ controller = Luca.register "Luca.components.Controller"
2
+ controller.extends "Luca.containers.CardView"
3
+
4
+ controller.publicInterface
5
+ default: (callback)->
6
+ @navigate_to(@defaultPage || @defaultCard, callback)
7
+
8
+ activePage: ()->
9
+ @activeSection()
10
+
11
+ navigate_to: (section, callback)->
12
+ section ||= @defaultCard
13
+
14
+ @activate section, false, (activator, previous,current)=>
15
+ unless current.activatedByController is true
16
+ current.trigger("on:controller:activation")
17
+ current.activatedByController = true
18
+
19
+ @state.set(active_section: current.name )
20
+
21
+ if _.isFunction( callback )
22
+ callback.call(current)
23
+
24
+ # return the section we are navigating to
25
+ @find(section)
26
+
27
+ controller.classMethods
28
+ controllerPath: ()->
29
+ component = @
30
+
31
+ list = [component.name]
32
+ atBase = false
33
+
34
+ while component and not atBase
35
+ component = component.getParent?()
36
+ atBase = true if component?.role is "main_controller"
37
+ list.push( component.name ) if component? and not atBase
38
+
39
+ list.reverse()
40
+
41
+ controller.afterDefinition ()->
42
+ Luca.View::hooks.push "on:controller:activation"
43
+
44
+ controller.defines
45
+ additionalClassNames: 'luca-ui-controller'
46
+ activeAttribute: "active-section"
47
+ stateful: true
48
+
49
+ initialize: (@options)->
50
+ # let's phase out the 'card' terminology
51
+ # and 'section' while we're at it. page is the word.
52
+ @defaultCard ||= @defaultPage ||= @components[0]?.name || 0
53
+ @defaultPage ||= @defaultCard
54
+
55
+ @defaultState ||=
56
+ active_section: @defaultPage
57
+
58
+ Luca.containers.CardView::initialize.apply @, arguments
59
+
60
+ throw "Controllers must specify a defaultCard property and/or the first component must have a name" unless @defaultCard?
61
+
62
+ @_().each (component)->
63
+ component.controllerPath = Luca.components.Controller.controllerPath
64
+
65
+ @on "after:render", @default, @
66
+
67
+ each: (fn)->
68
+ _( @components ).each (component)=> fn.call(@,component)
69
+
70
+ activeSection: ()->
71
+ @get("active_section")
72
+
73
+ pageControllers: (deep=false)->
74
+ @controllers.apply(@, arguments)
75
+
76
+ controllers:(deep=false)->
77
+ @select (component)->
78
+ type = (component.type || component.ctype)
79
+ type is "controller" or type is "page_controller"
80
+
81
+ availablePages: ()->
82
+ @availableSections.apply(@, arguments)
83
+
84
+ availableSections: ()->
85
+ base = {}
86
+ base[ @name ] = @sectionNames()
87
+
88
+ _( @controllers() ).reduce (memo,controller)=>
89
+ memo[ controller.name ] = controller.sectionNames()
90
+ memo
91
+ , base
92
+
93
+ pageNames: ()->
94
+ @sectionNames()
95
+
96
+ sectionNames: (deep=false)->
97
+ @pluck('name')
98
+
99
+
@@ -71,7 +71,7 @@ field.defines
71
71
  Luca.View::initialize.apply(@, arguments)
72
72
 
73
73
  beforeRender: ()->
74
- if Luca.enableBootstrap
74
+ if Luca.config.enableBoostrap
75
75
  @$el.addClass('control-group')
76
76
 
77
77
  @$el.addClass('required') if @required
@@ -13,6 +13,7 @@ buttonField.publicConfiguration
13
13
  white: undefined
14
14
 
15
15
  buttonField.privateConfiguration
16
+ isButton: true
16
17
  template: "fields/button_field"
17
18
  events:
18
19
  "click input" : "click_handler"
@@ -41,5 +42,3 @@ buttonField.privateInterface
41
42
 
42
43
  setValue: ()-> true
43
44
 
44
- buttonField.defines
45
- version: 1
@@ -21,10 +21,14 @@ selectField.defines
21
21
  _.extend @, Luca.concerns.Deferrable
22
22
  _.bindAll @, "change_handler", "populateOptions", "beforeFetch"
23
23
 
24
+ if _.isArray(@collection)
25
+ @collection = data: @collection
26
+
24
27
  Luca.core.Field::initialize.apply @, arguments
25
28
 
26
29
  @input_id ||= _.uniqueId('field')
27
30
  @input_name ||= @name
31
+ @valueType ||= Luca.config.idAttributeType if @valueField is "id"
28
32
  @label ||= @name
29
33
  @retainValue = true if _.isUndefined @retainValue
30
34
 
@@ -35,12 +39,12 @@ selectField.defines
35
39
  @parseData()
36
40
 
37
41
  try
38
- @configure_collection()
42
+ @configure_collection( @setAsDeferrable )
39
43
  catch e
40
44
  console.log "Error Configuring Collection", @, e.message
41
45
 
42
- @collection.bind "before:fetch", @beforeFetch
43
- @collection.bind "reset", @populateOptions
46
+ @collection?.bind "before:fetch", @beforeFetch
47
+ @collection?.bind "reset", @populateOptions
44
48
 
45
49
  # if the select field is configured with a data property
46
50
  # then parse that data into the proper format. either
@@ -63,7 +67,7 @@ selectField.defines
63
67
  if @collection?.models?.length > 0
64
68
  @populateOptions()
65
69
  else
66
- @collection.trigger("reset")
70
+ @collection?.trigger("reset")
67
71
 
68
72
  setValue: (value)->
69
73
  @currentValue = value
@@ -13,14 +13,15 @@ _.def('Luca.fields.TextAreaField').extends('Luca.core.Field').with
13
13
  initialize: (@options={})->
14
14
  _.bindAll @, "keydown_handler"
15
15
 
16
- Luca.core.Field::initialize.apply @, arguments
17
-
18
16
  @input_id ||= _.uniqueId('field')
19
17
  @input_name ||= @name
20
18
  @label ||= @name
21
19
  @input_class ||= @class
22
20
  @input_value ||= ""
23
21
  @inputStyles ||= "height:#{ @height };width:#{ @width }"
22
+ @placeHolder ||= ""
23
+
24
+ Luca.core.Field::initialize.apply @, arguments
24
25
 
25
26
  setValue: (value)->
26
27
  $( @field() ).val(value)
@@ -24,9 +24,6 @@ textField.defines
24
24
  @label ||= @name
25
25
  @input_class ||= @class
26
26
  @input_value ||= @value || ""
27
-
28
- # TODO
29
- # Placeholder?
30
27
 
31
28
  if @prepend
32
29
  @$el.addClass('input-prepend')
@@ -36,6 +33,8 @@ textField.defines
36
33
  @$el.addClass('input-append')
37
34
  @addOn = @append
38
35
 
36
+ @placeHolder ||= ""
37
+
39
38
  Luca.core.Field::initialize.apply @, arguments
40
39
 
41
40
  keyup_handler: (e)->
@@ -1,7 +1,14 @@
1
- #_.def("Luca.components.FormView").extends('Luca.core.Container').with
2
-
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.
3
7
  formView = Luca.register "Luca.components.FormView"
4
- formView.extends "Luca.core.Container"
8
+
9
+ formView.extends "Luca.Container"
10
+
11
+ formView.mixesIn "LoadMaskable"
5
12
 
6
13
  formView.triggers "before:submit",
7
14
  "before:reset",
@@ -18,46 +25,93 @@ formView.triggers "before:submit",
18
25
  "after:submit:error"
19
26
 
20
27
 
21
- formView.defines
22
- tagName: 'form'
23
28
 
24
- className: 'luca-ui-form-view'
29
+ formView.publicConfiguration
30
+ # should the label display above, or to the
31
+ # side of the fields
32
+ labelAlign: undefined
25
33
 
26
- events:
27
- "click .submit-button" : "submitHandler"
28
- "click .reset-button" : "resetHandler"
34
+ # specifying this class gives you the ability
35
+ # to layout the nested fields accordingly.
36
+ fieldLayoutClass: undefined
29
37
 
38
+ # should this form have a legend?
39
+ legend: ""
40
+
41
+ # available options are true, false, "top", "bottom", or "both"
42
+ # the component configuration for the toolbar can be controlled
43
+ # by specifying a name of a property that contains a valid
44
+ # component reference ( either hash w/ type reference )
30
45
  toolbar: true
31
46
 
32
- legend: ""
47
+ # the name of the property which contains the configuration
48
+ # for the buttons that will go in this toolbar. Specify
49
+ # a string so it can be lazily evaluated at initialization.
50
+ toolbarConfig: undefined
33
51
 
34
- bodyClassName: "form-view-body"
52
+ # the default toolbar definition that will be created if
53
+ # the form is configured to have a toolbar on it. this value
54
+ # will be resolved at initialization, so pass a string identifying
55
+ # an object in memory.
56
+ defaultToolbar: "Luca.components.FormView.defaultToolbar"
57
+
58
+ # if this form will be submitting values to a RESTful API and you
59
+ # want to show a loading indicator or progress bar, configure the
60
+ # @loadMask property.
61
+ loadMask: true
62
+
63
+ # Applies the twitter bootstrap well class to this form.
64
+ # @$el.addClass('well') if @well
65
+ well: false
66
+
67
+ # Applies the twitter bootstrap form-search class to this form.
68
+ # @$el.addClass('form-search') if @searchForm
69
+ searchForm: false
70
+
71
+ # Applies the twitter bootstrap horizontal form class to this form.
72
+ # @$el.addClass('form-horizontal') if @horizontalForm
73
+ horizontalForm: false
35
74
 
36
- version: 1
75
+ # Applies the twitter bootstrap inline form class to this form.
76
+ # @$el.addClass('form-inline') if @inlineForm
77
+ inlineForm: false
37
78
 
79
+ # if we should always include blank values
80
+ # regardless of how the field is configured
81
+ includeBlankValues: undefined
82
+
83
+ formView.privateConfiguration
84
+ tagName: 'form'
85
+ stateful: true
86
+ events:
87
+ "click .submit-button" : "submitHandler"
88
+ "click .reset-button" : "resetHandler"
89
+
90
+ bodyClassName: "form-view-body"
91
+
92
+ formView.privateMethods
38
93
  initialize: (@options={})->
39
- @loadMask = Luca.enableBootstrap unless @loadMask?
94
+ @loadMask = Luca.config.enableBoostrap unless @loadMask?
40
95
 
41
- Luca.core.Container::initialize.apply @, arguments
96
+ Luca.Container::initialize.apply @, arguments
42
97
 
43
98
  @components ||= @fields
44
99
 
45
100
  _.bindAll @, "submitHandler", "resetHandler", "renderToolbars"
46
- @state ||= new Backbone.Model
47
101
 
48
102
  @setupHooks( @hooks )
49
103
 
50
104
  @applyStyleClasses()
51
105
 
52
- if @toolbar isnt false and (not @topToolbar and not @bottomToolbar)
53
- @topToolbar = @getDefaultToolbar() if @toolbar is "both" or @toolbar is "top"
54
- @bottomToolbar = @getDefaultToolbar() unless @toolbar is "top"
106
+ Luca.components.FormView.setupToolbar.call(@)
107
+
55
108
 
56
109
  getDefaultToolbar: ()->
57
- Luca.components.FormView.defaultFormViewToolbar
110
+ config = @toolbarConfig || @defaultToolbar
111
+ Luca.util.resolve( Luca.util.read(config) )
58
112
 
59
113
  applyStyleClasses: ()->
60
- if Luca.enableBootstrap
114
+ if Luca.config.enableBoostrap
61
115
  @applyBootstrapStyleClasses()
62
116
 
63
117
  @$el.addClass( "label-align-#{ @labelAlign }") if @labelAlign
@@ -84,11 +138,12 @@ formView.defines
84
138
  @submit() if @hasModel()
85
139
 
86
140
  afterComponents: ()->
87
- Luca.core.Container::afterComponents?.apply(@, arguments)
141
+ Luca.Container::afterComponents?.apply(@, arguments)
88
142
 
89
- @eachField (field)=>
90
- field.getForm = ()=> @
91
- field.getModel = ()=> @currentModel()
143
+ form = @
144
+ @eachField (field)->
145
+ field.getForm = ()=> form
146
+ field.getModel = ()=> form.currentModel()
92
147
 
93
148
  eachField: (iterator)->
94
149
  _( @getFields() ).map( iterator )
@@ -179,11 +234,13 @@ formView.defines
179
234
  valueIsBlank = !!(_.str.isBlank( value ) || _.isUndefined( value ))
180
235
 
181
236
  allowBlankValues = not options.reject_blank and not field.send_blanks
237
+ allowBlankValues = true if field.includeBlank is true or @includeBlankValues is true
238
+
182
239
 
183
240
  if options.debug
184
241
  console.log "#{ key } Options", options, "Value", value, "Value Is Blank?", valueIsBlank, "Allow Blanks?", allowBlankValues
185
242
 
186
- if options.skip_buttons and field.ctype is "button_field"
243
+ if options.skip_buttons and field.isButton
187
244
  skip = true
188
245
  else
189
246
  if valueIsBlank and allowBlankValues is false
@@ -236,8 +293,8 @@ formView.defines
236
293
 
237
294
  @current_model
238
295
 
239
- syncFormWithModel: ()->
240
- @current_model?.set( @getValues() )
296
+ syncFormWithModel: (options)->
297
+ @current_model?.set( @getValues(), options )
241
298
 
242
299
  setLegend: (@legend)->
243
300
  $('fieldset legend', @el).first().html(@legend)
@@ -261,22 +318,32 @@ formView.defines
261
318
  @$('.alert.alert-error').remove()
262
319
  @flash Luca.template("components/form_alert", className:"alert alert-error", message: message)
263
320
 
321
+ formView.classInterface
322
+ setupToolbar: ()->
323
+ if @toolbar isnt false and (not @topToolbar and not @bottomToolbar)
324
+ if @toolbar is "both" or @toolbar is "top"
325
+ @topToolbar = _.clone( @getDefaultToolbar() )
326
+
327
+ unless @toolbar is "top"
328
+ @bottomToolbar = _.clone( @getDefaultToolbar() )
329
+
330
+ defaultToolbar:
331
+ buttons:[
332
+ icon:"remove-sign"
333
+ label: "Reset"
334
+ eventId: "click:reset"
335
+ className:"reset-button"
336
+ align: 'right'
337
+ ,
338
+ icon:"ok-sign"
339
+ white: true
340
+ label: "Save Changes"
341
+ eventId: "click:submit"
342
+ color: "success"
343
+ className: 'submit-button'
344
+ align: 'right'
345
+ ]
264
346
 
265
- Luca.components.FormView.defaultFormViewToolbar =
266
- buttons:[
267
- icon:"remove-sign"
268
- label: "Reset"
269
- eventId: "click:reset"
270
- className:"reset-button"
271
- align: 'right'
272
- ,
273
- icon:"ok-sign"
274
- white: true
275
- label: "Save Changes"
276
- eventId: "click:submit"
277
- color: "success"
278
- className: 'submit-button'
279
- align: 'right'
280
- ]
281
-
347
+ formView.defines
348
+ version: 2
282
349
 
@@ -1,4 +1,4 @@
1
- _.def('Luca.components.GridView').extend('Luca.components.Panel').with
1
+ _.def('Luca.components.GridView').extend('Luca.Panel').with
2
2
 
3
3
  bodyTemplate: "components/grid_view"
4
4
 
@@ -59,10 +59,10 @@ _.def('Luca.components.GridView').extend('Luca.components.Panel').with
59
59
  _.extend @, @options
60
60
  _.extend @, Luca.concerns.Deferrable
61
61
 
62
- @loadMask = Luca.enableBootstrap unless @loadMask?
62
+ @loadMask = Luca.config.enableBoostrap unless @loadMask?
63
63
  @loadMaskEl ||= ".luca-ui-g-view-body" if @loadMask is true
64
64
 
65
- Luca.components.Panel::initialize.apply(@, arguments)
65
+ Luca.Panel::initialize.apply(@, arguments)
66
66
 
67
67
  @configure_collection(true)
68
68
 
@@ -87,7 +87,7 @@ _.def('Luca.components.GridView').extend('Luca.components.Panel').with
87
87
  console.log "Error in change handler for GridView.collection", error, @, model
88
88
 
89
89
  beforeRender: ()->
90
- Luca.components.Panel::beforeRender?.apply(@, arguments)
90
+ Luca.Panel::beforeRender?.apply(@, arguments)
91
91
 
92
92
  @trigger "before:grid:render", @
93
93
 
@@ -108,7 +108,7 @@ _.def('Luca.components.GridView').extend('Luca.components.Panel').with
108
108
  $(@container).append @$el
109
109
 
110
110
  afterRender: ()->
111
- Luca.components.Panel::afterRender?.apply(@, arguments)
111
+ Luca.Panel::afterRender?.apply(@, arguments)
112
112
 
113
113
  @rendered = true
114
114
  @refresh()
@@ -120,7 +120,7 @@ _.def('Luca.components.GridView').extend('Luca.components.Panel').with
120
120
  _( @additionalWrapperClasses ).each (containerClass)=>
121
121
  @wrapper?.addClass( containerClass )
122
122
 
123
- if Luca.enableBootstrap
123
+ if Luca.config.enableBoostrap
124
124
  @table.addClass('table')
125
125
 
126
126
  _( @tableStyle?.split(" ") ).each (style)=>
@@ -0,0 +1,8 @@
1
+ #_.def("Luca.components.LoadMask").extends("Luca.View").with
2
+ loadMask = Luca.register "Luca.components.LoadMask"
3
+
4
+ loadMask.extends "Luca.View"
5
+
6
+ loadMask.defines
7
+ className: "luca-ui-load-mask"
8
+ bodyTemplate:"components/load_mask"