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,12 +1,11 @@
1
1
  collection = Luca.define 'Luca.Collection'
2
-
3
- if Backbone.QueryCollection?
4
- collection.extends 'Backbone.QueryCollection'
5
- else
6
- collection.extends 'Backbone.Collection'
7
-
2
+ collection.extends 'Backbone.QueryCollection'
8
3
  collection.includes 'Luca.Events'
9
4
 
5
+ collection.triggers "after:initialize",
6
+ "before:fetch",
7
+ "after:response"
8
+
10
9
  collection.defines
11
10
  model: Luca.Model
12
11
  # cachedMethods refers to a list of methods on the collection
@@ -25,7 +24,6 @@ collection.defines
25
24
 
26
25
  initialize: (models=[], @options)->
27
26
  _.extend @, @options
28
- @setupMethodCaching()
29
27
  @_reset()
30
28
 
31
29
  # By specifying a @cache_key property or method, you can instruct
@@ -37,7 +35,7 @@ collection.defines
37
35
  console.log 'The @cached property of Luca.Collection is being deprecated. Please change to cache_key'
38
36
 
39
37
  if @cache_key ||= @cached
40
- @bootstrap_cache_key = if _.isFunction( @cache_key ) then @cache_key() else @cache_key
38
+ @bootstrap_cache_key = Luca.util.read(@cache_key)
41
39
 
42
40
  if @registerAs or @registerWith
43
41
  console.log "This configuration API is deprecated. use @name and @manager properties instead"
@@ -58,8 +56,8 @@ collection.defines
58
56
  # to be scoped with some sort of unique id, as say some sort of belongsTo relationship
59
57
  # then you can specify @registerAs as a method()
60
58
  if @manager
61
- @name ||= @cache_key()
62
- @name = if _.isFunction( @name ) then @name() else @name
59
+ @name ||= Luca.util.read(@cache_key)
60
+ @name = Luca.util.read(@name)
63
61
 
64
62
  unless @private or @anonymous
65
63
  @bind "after:initialize", ()=>
@@ -70,7 +68,7 @@ collection.defines
70
68
  # locally in localStorage
71
69
  if @useLocalStorage is true and window.localStorage?
72
70
  table = @bootstrap_cache_key || @name
73
- throw "Must specify either a cached or registerAs property to use localStorage"
71
+ throw "Must specify a cache_key property or method to use localStorage"
74
72
  @localStorage = new Luca.LocalStore( table )
75
73
 
76
74
  # Populating a collection with local data
@@ -92,6 +90,9 @@ collection.defines
92
90
  @reset models, silent: true, parse: options?.parse
93
91
 
94
92
  Luca.concern.setup.call(@)
93
+ Luca.util.setupHooks.call(@, @hooks)
94
+
95
+ @setupMethodCaching()
95
96
 
96
97
  @trigger "after:initialize"
97
98
 
@@ -141,43 +142,43 @@ collection.defines
141
142
  @
142
143
 
143
144
  applyFilter: (filter={}, options={})->
145
+ options = _( options ).clone()
146
+
144
147
  if options.remote? is true or @remoteFilter is true
145
148
  @applyParams(filter)
146
- @fetch _.extend(options,refresh:true)
149
+ @fetch _.extend(options,refresh:true,remote:true)
147
150
  else
148
- @reset @query filter
151
+ @reset @query(filter, options)
149
152
 
150
153
  # You can apply params to a collection, so that any upcoming requests
151
154
  # made to the REST API are made with the key values specified
152
155
  applyParams: (params)->
153
- @base_params = _( Luca.Collection.baseParams() ).clone()
156
+ @base_params = _( Luca.Collection.baseParams() ).clone() || {}
154
157
  _.extend @base_params, params
155
158
 
156
159
  @
157
160
 
158
- # If this collection is to be registered with some global collection
159
- # tracker such as new Luca.CollectionManager() then we will register
160
- # ourselves automatically
161
- #
162
- # To automatically register a collection with the registry, instantiate
163
- # it with the registerWith property, which can either be a reference to
164
- # the manager itself, or a string in case the manager isn't available
165
- # at compile time
166
- register: (collectionManager=Luca.CollectionManager.get(), key="", collection)->
167
- throw "Can not register with a collection manager without a key" unless key.length >= 1
168
- throw "Can not register with a collection manager without a valid collection manager" unless collectionManager?
161
+ register: (collectionManager, key="", collection)->
162
+ collectionManager ||= Luca.CollectionManager.get()
163
+
164
+ unless key.length >= 1
165
+ throw "Attempt to register a collection without specifying a key."
166
+
169
167
 
170
168
  # by passing a string instead of a reference to an object, we can look up
171
169
  # that object only when necessary. this prevents us from having to create
172
170
  # the manager instance before we can define our collections
173
171
  if _.isString( collectionManager )
174
- collectionManager = Luca.util.nestedValue( collectionManager, (window || global) )
172
+ collectionManager = Luca.util.resolve( collectionManager )
175
173
 
176
- throw "Could not register with collection manager" unless collectionManager
174
+ unless collectionManager?
175
+ throw "Attempt to register with a non existent collection manager."
177
176
 
178
177
  if _.isFunction( collectionManager.add )
179
178
  return collectionManager.add(key, collection)
180
179
 
180
+ # If we don't want to use the CollectionManager class, and just want
181
+ # to cache collection instances on an object, we can do that too.
181
182
  if _.isObject( collectionManager )
182
183
  collectionManager[ key ] = collection
183
184
 
@@ -232,10 +233,11 @@ collection.defines
232
233
  # reset trigger with a function wrapped in _.once
233
234
  # so that it only gets run...ahem...once.
234
235
  #
235
- # that being said, if the collection already has models
236
236
  # it won't even bother fetching it it will just run
237
237
  # as if reset was already triggered
238
- onceLoaded: (fn, options={autoFetch:true})->
238
+ onceLoaded: (fn, options={})->
239
+ _.defaults(options, autoFetch: true)
240
+
239
241
  if @length > 0 and not @fetching
240
242
  fn.apply @, [@]
241
243
  return
@@ -264,17 +266,6 @@ collection.defines
264
266
  unless @fetching is true or !options.autoFetch or @length > 0
265
267
  @fetch()
266
268
 
267
- # parse is very close to the stock Backbone.Collection parse, which
268
- # just returns the response. However, it also triggers a callback
269
- # after:response, and automatically parses responses which contain
270
- # a JSON root like you would see in rails, if you specify the @root
271
- # property.
272
- #
273
- # it will also update the Luca.Collection.cache with the models from
274
- # the response, so that any subsequent calls to fetch() on a bootstrapped
275
- # collection, will have updated models from the server. Really only
276
- # useful if you call fetch(refresh:true) manually on any bootstrapped
277
- # collection
278
269
  parse: (response)->
279
270
  @fetching = false
280
271
  @trigger "after:response", response
@@ -304,6 +295,8 @@ collection.defines
304
295
  @clearMethodCache(name)
305
296
 
306
297
  setupMethodCaching: ()->
298
+ return unless @cachedMethods?.length > 0
299
+
307
300
  collection = @
308
301
  membershipEvents = ["reset","add","remove"]
309
302
  cache = @_methodCache = {}
@@ -318,7 +311,7 @@ collection.defines
318
311
 
319
312
  # wrap the collection method with a basic memoize operation
320
313
  collection[ method ] = ()->
321
- cache[method].value ||= cache[method].original.apply collection, arguments
314
+ cache[method].value ||= cache[method].original.apply(collection, arguments)
322
315
 
323
316
  # bind to events on the collection, which once triggered, will
324
317
  # invalidate the cached value. causing us to have to restore it
@@ -329,7 +322,9 @@ collection.defines
329
322
  dependencies = method.split(':')[1]
330
323
 
331
324
  if dependencies
332
- for dependency in dependencies.split(",")
325
+ watchForChangesOn = dependencies.split(",")
326
+
327
+ _( watchForChangesOn ).each (dependency)->
333
328
  collection.bind "change:#{dependency}", ()->
334
329
  collection.clearMethodCache(method: method)
335
330
 
@@ -337,9 +332,17 @@ collection.defines
337
332
  # make sure the querying interface from backbone.query is present
338
333
  # in the case backbone-query isn't loaded. without it, it will
339
334
  # just return the models
335
+ #
336
+ # TODO:
337
+ #
338
+ # Currently the View mixins: Filterable, Sortable, and Paginatable
339
+ # implement a lot of logic that belongs in this interface.
340
340
  query: (filter={},options={})->
341
341
  if Backbone.QueryCollection?
342
- return Backbone.QueryCollection::query.apply(@, arguments)
342
+ if _.isFunction(prepare = options.prepare || @prepareQuery)
343
+ filter = prepare(filter)
344
+
345
+ return Backbone.QueryCollection::query.call(@, filter, options)
343
346
  else
344
347
  @models
345
348
 
@@ -366,18 +369,24 @@ Luca.Collection.extend = (definition={})->
366
369
 
367
370
  componentClass
368
371
 
372
+ Luca.Collection.namespace = (namespace)->
373
+ namespace = Luca.util.resolve(namespace) if _.isString(namespace)
374
+ Luca.Collection.__defaultNamespace = namespace if namespace?
375
+ Luca.Collection.__defaultNamespace ||= (window || global)
376
+ Luca.util.read( Luca.Collection.__defaultNamespace )
377
+
369
378
  # Always include these parameters in every request to your REST API.
370
379
  #
371
380
  # either specify a function which returns a hash, or just a normal hash
372
381
  Luca.Collection.baseParams = (obj)->
373
- return Luca.Collection._baseParams = obj if obj
374
-
375
- if _.isFunction( Luca.Collection._baseParams )
376
- return Luca.Collection._baseParams()
382
+ obj = Luca.util.resolve(obj) if _.isString(obj)
383
+ Luca.Collection._baseParams = obj if obj
377
384
 
378
- if _.isObject( Luca.Collection._baseParams )
379
- Luca.Collection._baseParams
385
+ Luca.util.read( Luca.Collection._baseParams )
380
386
 
387
+ Luca.Collection.resetBaseParams = ()->
388
+ Luca.Collection._baseParams = {}
389
+
381
390
  # In order to make our Backbone Apps super fast it is a good practice
382
391
  # to pre-populate your collections by what is referred to as bootstrapping
383
392
  #
@@ -9,7 +9,7 @@
9
9
  # or
10
10
  #
11
11
  # view.defer( myCallback ).until("triggered:event")
12
- class DeferredBindingProxy
12
+ class Luca.DeferredBindingProxy
13
13
  constructor: (@object, operation, wrapWithUnderscore=true)->
14
14
  if _.isFunction(operation)
15
15
  fn = operation
@@ -41,10 +41,42 @@ class DeferredBindingProxy
41
41
 
42
42
  @object
43
43
 
44
+ class Luca.EventRelayer
45
+ constructor: (options={})->
46
+ {@target,@events,@prefix,@source} = options
47
+
48
+ if @events.length > 0 and @target and @source
49
+ @setup()
50
+ @
51
+
52
+ prefixedBy: (@prefix="")->
53
+ @
54
+
55
+ from:(@source)->
56
+ @
57
+
58
+ to: (@target)->
59
+ @
60
+
61
+ setup: (@target)->
62
+ prefix = @prefix
63
+ target = @target
64
+
65
+ for eventId in @events
66
+ console.log "Binding to ", eventId, prefix, @target.name, @source.name
67
+ @source.on eventId, (args...)->
68
+ trigger = _( [prefix,eventId] ).compact().join(':')
69
+ args.unshift(trigger)
70
+ @trigger.apply(@, args)
71
+ , target
72
+
73
+
44
74
  Luca.Events =
75
+ relays: (events...)->
76
+ new Luca.EventRelayer(relayer: @, events: events)
45
77
 
46
78
  defer: (operation, wrapWithUnderscore=true)->
47
- new DeferredBindingProxy(@, operation, wrapWithUnderscore)
79
+ new Luca.DeferredBindingProxy(@, operation, wrapWithUnderscore)
48
80
 
49
81
  once: (trigger, callback, context)->
50
82
  context ||= @
@@ -0,0 +1,12 @@
1
+ #= require ./registry
2
+ #= require ./observer
3
+ #= require ./events
4
+ #= require ./templates
5
+ #= require_tree ../concerns
6
+ #= require ./model
7
+ #= require ./collection
8
+ #= require ./view
9
+ #= require ./panel
10
+ #= require_self
11
+
12
+
@@ -29,7 +29,7 @@ setupComputedProperties = ()->
29
29
 
30
30
  for attr, dependencies of @computed
31
31
  @on "change:#{attr}", ()=>
32
- @_computed[attr] = @[attr].call @
32
+ @_computed[attr] = @read(attr)
33
33
 
34
34
  dependencies = dependencies.split(',') if _.isString(dependencies)
35
35
 
@@ -0,0 +1,112 @@
1
+ # Luca.Panel is a low level Luca.View component which is used
2
+ # to build components which have toolbar areas, and a body area for the main
3
+ # contents of the view.
4
+ panel = Luca.register "Luca.Panel"
5
+
6
+ panel.replaces "Luca.Panel"
7
+
8
+ panel.extends "Luca.View"
9
+
10
+ #panel.mixesIn "LoadMaskable"
11
+
12
+ panel.configuration
13
+ topToolbar: undefined
14
+ bottomToolbar: undefined
15
+ #loadMask: false
16
+ #loadMaskTemplate: "components/load_mask"
17
+ #loadMaskTimeout: 3000
18
+
19
+ panel.publicMethods
20
+ applyStyles: (styles={},body=false)->
21
+
22
+ target = if body then @$bodyEl() else @$el
23
+
24
+ for setting, value of styles
25
+ target.css(setting,value)
26
+
27
+ @
28
+
29
+ $bodyEl: ()->
30
+ element = @bodyTagName || "div"
31
+ className = @bodyClassName || "view-body"
32
+
33
+ @bodyEl ||= "#{ element }.#{ className }"
34
+
35
+ bodyEl = @$(@bodyEl)
36
+
37
+ return bodyEl if bodyEl.length > 0
38
+
39
+ if bodyEl.length is 0 and (@bodyClassName? || @bodyTagName?)
40
+ newElement = @make(element,class:className,"data-auto-appended":true)
41
+ @$el.append( newElement )
42
+ return @$(@bodyEl)
43
+
44
+ @$el
45
+
46
+ $wrap: (wrapper)->
47
+ if _.isString(wrapper) and not wrapper.match(/[<>]/)
48
+ wrapper = @make("div",class:wrapper)
49
+
50
+ @$el.wrap( wrapper )
51
+
52
+ $template: (template, variables={})->
53
+ @$html( Luca.template(template,variables) )
54
+
55
+ $empty: ()->
56
+ @$bodyEl().empty()
57
+
58
+ $html: (content)->
59
+ @$bodyEl().html( content )
60
+
61
+ $append: (content)->
62
+ @$bodyEl().append(content)
63
+
64
+ panel.privateMethods
65
+ beforeRender: ()->
66
+ Luca.View::beforeRender?.apply(@, arguments)
67
+ @applyStyles( @styles ) if @styles?
68
+ @applyStyles( @bodyStyles, true ) if @bodyStyles?
69
+ @renderToolbars?()
70
+
71
+ renderToolbars: ()->
72
+ _( ["top","left","right","bottom"] ).each (orientation)=>
73
+ if config = @["#{ orientation }Toolbar"]
74
+ @renderToolbar( orientation, config)
75
+
76
+ renderToolbar: (orientation="top", config={})->
77
+ config.parent = @
78
+ config.orientation = orientation
79
+ el = Luca.util.read( config.container )
80
+ el ||= Luca.util.read( config.targetEl )
81
+
82
+ console.log "Rendering toolbar to", config, el
83
+ Luca.Panel.attachToolbar.call(@, config, el )
84
+
85
+ panel.classMethods
86
+ attachToolbar: (config={}, targetEl)->
87
+ config.orientation ||= "top"
88
+ config.type ||= config.ctype ||= @toolbarType || "panel_toolbar"
89
+
90
+ config.additionalClassNames = "#{ Luca.config.toolbarContainerClass } #{ config.orientation }"
91
+
92
+ toolbar = Luca.util.lazyComponent( config )
93
+
94
+ hasBody = @bodyClassName or @bodyTagName
95
+
96
+ # there will be a body panel inside of the views $el
97
+ # so just place the toolbar before, or after the body
98
+ action = switch config.orientation
99
+ when "top", "left"
100
+ if hasBody and not targetEl?.length > 0 then "before" else "prepend"
101
+ when "bottom", "right"
102
+ if hasBody and not targetEl?.length > 0 then "after" else "append"
103
+
104
+ toolbarEl = if targetEl?.length > 0
105
+ @$(targetEl)
106
+ else
107
+ @$bodyEl()
108
+
109
+ toolbarEl[action]( toolbar.render().el )
110
+
111
+ panel.defines
112
+ version: 3