luca 0.9.7 → 0.9.8

Sign up to get free protection for your applications and to get access to all the features.
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
@@ -0,0 +1,92 @@
1
+ multiView = Luca.register "Luca.components.MultiCollectionView"
2
+
3
+ # The CollectionMultiView is a collection view with multiple renderings
4
+ # of the list. ( e.g. Icons, Table, List ). It works by maintaining
5
+ # a current view, and rendering that view. It refreshes the views
6
+ # whenever they are activated.
7
+ #
8
+ # The MultiView allows you to share one collection, filter, pagination setup
9
+ # but render multiple versions of a model. To do this, you are expected to
10
+ # define one or more objects in the @views property of the component.
11
+
12
+ # Example:
13
+ # multiView = new Luca.components.MultiCollectionView
14
+ # collection: "my_collection"
15
+ # paginatable:
16
+ # page: 1
17
+ # limit: 20
18
+ # views:[
19
+ # type: "table"
20
+ # columns:[
21
+ # header: "Header"
22
+ # reader: "attribute"
23
+ # ]
24
+ # ]
25
+ multiView.extends "Luca.containers.CardView"
26
+
27
+ multiView.mixesIn "QueryCollectionBindings",
28
+ "LoadMaskable",
29
+ "Filterable",
30
+ "Paginatable",
31
+ "Sortable"
32
+
33
+ multiView.triggers "before:refresh",
34
+ "after:refresh",
35
+ "refresh",
36
+ "empty:results"
37
+
38
+ multiView.private
39
+ stateful:
40
+ activeView: 0
41
+
42
+ initialize: (@options={})->
43
+ @components ||= @views
44
+
45
+ for view in @components
46
+ Luca.components.MultiCollectionView.validateComponent( view )
47
+
48
+ Luca.containers.CardView::initialize.apply(@, arguments)
49
+
50
+ @on "data:refresh", @refresh, @
51
+ @on "after:card:switch", @refresh, @
52
+ @on "after:components", Luca.components.MultiCollectionView.propagateCollectionComponents, @
53
+
54
+ relayAfterRefresh: (models,query,options)->
55
+ @trigger "after:refresh", models, query, options
56
+
57
+ refresh: ()->
58
+ @activeComponent()?.refresh()
59
+
60
+ multiView.classMethods
61
+ propagateCollectionComponents: ()->
62
+ container = @
63
+
64
+ # in the multi view will share the same
65
+ # collection, filter state, pagination options, etc
66
+ for component in @components
67
+
68
+ component.on "after:refresh", (models,query,options)=>
69
+ @debug "collection member after refresh"
70
+ @trigger("after:refresh",models,query,options)
71
+
72
+ _.extend component,
73
+ collection: container.getCollection()
74
+ getQuery: _.bind(container.getQuery, container)
75
+ getQueryOptions: _.bind(container.getQueryOptions, container)
76
+
77
+ if container.prepareQuery?
78
+ _.extend component,
79
+ prepareQuery: _.bind(container.prepareQuery, container)
80
+
81
+ validateComponent: (component)->
82
+ type = (component.type || component.ctype)
83
+
84
+ return if type is "collection" or
85
+ type is "collection_view" or
86
+ type is "table" or
87
+ type is "table_view"
88
+
89
+ throw "The MultiCollectionView expects to contain multiple collection views"
90
+
91
+ multiView.defines
92
+ version: 3
@@ -1,4 +1,8 @@
1
- _.def("Luca.components.NavBar").extends("Luca.View").with
1
+ navBar = Luca.register "Luca.components.NavBar"
2
+
3
+ navBar.extends "Luca.View"
4
+
5
+ navBar.defines
2
6
  fixed: true
3
7
  position: 'top'
4
8
  className: 'navbar'
@@ -0,0 +1,7 @@
1
+ #_.def("Luca.PageController").extends("Luca.components.Controller").with
2
+ pageController = Luca.register "Luca.PageController"
3
+
4
+ pageController.extends "Luca.components.Controller"
5
+
6
+ pageController.defines
7
+ version: 2
@@ -7,6 +7,9 @@ paginationControl.defines
7
7
 
8
8
  stateful: true
9
9
 
10
+ stateChangeEvents:
11
+ "numberOfPages" : "onPageCountChange"
12
+
10
13
  autoBindEventHandlers: true
11
14
 
12
15
  events:
@@ -14,25 +17,22 @@ paginationControl.defines
14
17
  "click a.next" : "nextPage"
15
18
  "click a.prev" : "previousPage"
16
19
 
17
- afterInitialize: ()->
18
- _.bindAll @, "updateWithPageCount"
19
-
20
- @state?.on "change", (state, numberOfPages)=>
21
- @updateWithPageCount( state.get('numberOfPages') )
20
+ onPageCountChange: ()->
21
+ @updateWithPageCount( @get('numberOfPages') )
22
22
 
23
23
  limit: ()->
24
- parseInt (@state.get('limit') || @collection?.length)
24
+ parseInt (@get('limit') || @collection?.length)
25
25
 
26
26
  page: ()->
27
- parseInt (@state.get('page') || 1)
27
+ parseInt (@get('page') || 1)
28
28
 
29
29
  nextPage: ()->
30
30
  return unless @nextEnabled()
31
- @state.set('page', @page() + 1 )
31
+ @set('page', @page() + 1 )
32
32
 
33
33
  previousPage: ()->
34
34
  return unless @previousEnabled()
35
- @state.set('page', @page() - 1 )
35
+ @set('page', @page() - 1 )
36
36
 
37
37
  selectPage: (e)->
38
38
  me = my = @$( e.target )
@@ -44,10 +44,10 @@ paginationControl.defines
44
44
  @setPage( my.data('page-number') )
45
45
 
46
46
  setPage: (page=1,options={})->
47
- @state.set('page', page, options)
47
+ @set('page', page, options)
48
48
 
49
49
  setLimit: (limit=1,options={})->
50
- @state.set('limit', limit, options)
50
+ @set('limit', limit, options)
51
51
 
52
52
  pageButtonContainer: ()->
53
53
  @$ '.group'
@@ -100,5 +100,5 @@ paginationControl.defines
100
100
  parseInt @collection?.length || 0
101
101
 
102
102
  itemsPerPage: (value, options={})->
103
- @state.set("limit", value, options) if value?
104
- parseInt @state.get("limit")
103
+ @set("limit", value, options) if value?
104
+ parseInt @get("limit")
@@ -1,4 +1,7 @@
1
- _.def("Luca.Router").extends("Backbone.Router").with
1
+ #_.def("Luca.Router").extends("Backbone.Router").with
2
+ router = Luca.register "Luca.Router"
3
+ router.extends "Backbone.Router"
4
+ router.defines
2
5
  routes:
3
6
  "" : "default"
4
7
 
@@ -14,6 +17,8 @@ _.def("Luca.Router").extends("Backbone.Router").with
14
17
  @bind "route:#{ route_id }", ()=>
15
18
  @trigger.apply @, ["change:navigation", route_id ].concat( _( arguments ).flatten() )
16
19
 
20
+ Backbone.Router.initialize?.apply(@, arguments)
21
+
17
22
  #### Router Functions
18
23
 
19
24
  # Intercept calls to Backbone.Router.navigate so that we can at least
@@ -0,0 +1,89 @@
1
+ tableView = Luca.register "Luca.components.TableView"
2
+ tableView.extends "Luca.components.CollectionView"
3
+
4
+ tableView.publicConfiguration
5
+ widths: []
6
+ columns:[]
7
+ emptyText: "There are no results to display"
8
+
9
+ tableView.privateConfiguration
10
+ additionalClassNames: "table"
11
+ tagName: "table"
12
+ bodyTemplate: "table_view"
13
+ bodyTagName: "tbody"
14
+ bodyClassName: "table-body"
15
+ stateful: true
16
+ itemTagName: "tr"
17
+ observeChanges: true
18
+
19
+ tableView.privateMethods
20
+ eachColumn: (fn, scope=@)->
21
+ index = 0
22
+ for col in @columns
23
+ fn.call(scope, col, index++, @)
24
+
25
+ itemRenderer: (item, model)->
26
+ Luca.components.TableView.rowRenderer.call(@, item, model)
27
+
28
+ initialize: (@options={})->
29
+ Luca.components.CollectionView::initialize.apply(@, arguments)
30
+
31
+ index = 0
32
+ @columns = for column in @columns
33
+ if width = @widths[ index ]
34
+ column.width = width
35
+
36
+ if _.isString(column)
37
+ column = reader: column
38
+
39
+ if !column.header?
40
+ column.header = _.str.titleize(_.str.humanize(column.reader))
41
+
42
+ index++
43
+ column
44
+
45
+ @defer ()=>
46
+ Luca.components.TableView.renderHeader.call(@, @columns, @$('thead') )
47
+ .until("after:render")
48
+
49
+ tableView.classMethods
50
+ renderHeader : (columns, targetElement)->
51
+ index = 0
52
+
53
+ @$( targetElement ).append("<tr></tr>")
54
+
55
+ for column in columns
56
+ attrs = "data-col-index": index++
57
+
58
+ if column.sortable
59
+ attrs.class = "sortable-toggle"
60
+ attrs["data-sortable-sort-by"] = column.sortBy || column.sortable
61
+ attrs["data-sortable-order"] = column.order
62
+
63
+ content = column.header
64
+ content = "<a class='link'>#{ column.header }</a>" if column.sortable
65
+
66
+ @$(targetElement).append( Backbone.View::make "th", attrs, content )
67
+
68
+
69
+ index = 0
70
+
71
+ for column in columns when column.width?
72
+ th = @$("th[data-col-index='#{ index++ }']",targetElement)
73
+ th.css('width', column.width)
74
+
75
+
76
+ rowRenderer: (item, model, index)->
77
+ colIndex = 0
78
+ for columnConfig in @columns
79
+ Luca.components.TableView.renderColumn.call(@, columnConfig, item, model, colIndex++)
80
+
81
+ renderColumn : (column, item, model, index)->
82
+ cellValue = model.read( column.reader )
83
+
84
+ if _.isFunction( column.renderer )
85
+ cellValue = column.renderer.call @, cellValue, model, column
86
+
87
+ Backbone.View::make("td", {"data-col-index":index}, cellValue)
88
+
89
+ tableView.register()
@@ -16,4 +16,4 @@ Luca.concerns.ApplicationEventBindings =
16
16
  unless _.isFunction(handler)
17
17
  throw "Error registering application event #{ eventTrigger } on #{ @name || @cid }"
18
18
 
19
- app.on(eventTrigger, handler)
19
+ app.on(eventTrigger, handler, @)
@@ -0,0 +1,44 @@
1
+ Luca.concerns.CollectionEventBindings =
2
+ __initializer: ()->
3
+ Luca.concerns.CollectionEventBindings.__setup.call(@)
4
+
5
+ unless @collectionEventBindingsSetup is true
6
+ if Luca.isBackboneCollection(@collection)
7
+ @collection.on "reset", relayAs("collection:reset"), @
8
+ @collection.on "add", relayAs("collection:add"), @
9
+ @collection.on "remove", relayAs("collection:remove"), @
10
+ @collection.on "change", relayAs("collection:change"), @
11
+ @collection.on "before:fetch", relayAs("collection:fetch"), @
12
+
13
+ @collectionEventBindingsSetup = true
14
+
15
+ __setup: ()->
16
+ return if _.isEmpty( @collectionEvents )
17
+
18
+ manager = @collectionManager || Luca.CollectionManager.get()
19
+
20
+ for signature, handler of @collectionEvents
21
+ [key,eventTrigger] = signature.split(" ")
22
+
23
+ collection = manager.getOrCreate( key )
24
+
25
+ if !collection
26
+ throw "Could not find collection specified by #{ key }"
27
+
28
+ if _.isString(handler)
29
+ handler = @[handler]
30
+
31
+ unless _.isFunction(handler)
32
+ throw "invalid collectionEvents configuration"
33
+
34
+ try
35
+ collection.on(eventTrigger, handler, @)
36
+ catch e
37
+ console.log "Error Binding To Collection in registerCollectionEvents", @
38
+ throw e
39
+
40
+
41
+ relayAs = (eventName)->
42
+ (args...)->
43
+ args.unshift(eventName)
44
+ @trigger.apply(@, args)
@@ -8,8 +8,7 @@ Luca.concerns.Deferrable =
8
8
  if _.isString( @collection ) and collectionManager = Luca.CollectionManager?.get()
9
9
  @collection = collectionManager.getOrCreate(@collection)
10
10
 
11
- # if there is already an instantiated backbone collection don't do anything
12
- unless @collection and _.isFunction( @collection.fetch ) and _.isFunction( @collection.reset )
11
+ if _.isObject(@collection) and not Luca.isBackboneCollection(@collection)
13
12
  @collection = new Luca.Collection( @collection.initial_set, @collection )
14
13
 
15
14
  if @collection?.deferrable_trigger
@@ -1,4 +1,4 @@
1
- Luca.DevelopmentToolHelpers =
1
+ Luca.concerns.DevelopmentToolHelpers =
2
2
  refreshCode: ()->
3
3
  view = @
4
4
 
@@ -7,16 +7,16 @@ Luca.concerns.DomHelpers =
7
7
  if _.isString additionalClasses
8
8
  additionalClasses = additionalClasses.split(" ")
9
9
 
10
- if @gridSpan
11
- additionalClasses.push "span#{ @gridSpan }"
10
+ if span = @gridSpan || @span
11
+ additionalClasses.push "span#{ span }"
12
12
 
13
- if @gridOffset
14
- additionalClasses.push "offset#{ @gridOffset }"
13
+ if offset = @gridOffset || @offset
14
+ additionalClasses.push "offset#{ offset }"
15
15
 
16
- if @gridRowFluid
16
+ if @gridRowFluid || @rowFluid
17
17
  additionalClasses.push "row-fluid"
18
18
 
19
- if @gridRow
19
+ if @gridRow || @row
20
20
  additionalClasses.push "row"
21
21
 
22
22
  return unless additionalClasses?
@@ -40,7 +40,10 @@ Luca.concerns.DomHelpers =
40
40
  @$el.parent('[data-wrapper="true"]')
41
41
 
42
42
  $template: (template, variables={})->
43
- @$el.html( Luca.template(template,variables) )
43
+ try
44
+ @$el.html( Luca.template(template,variables) )
45
+ catch e
46
+ console.log "Error in $template: #{ template } #{ @identifier?() ? @name || @cid }"
44
47
 
45
48
  $html: (content)->
46
49
  @$el.html( content )
@@ -0,0 +1,104 @@
1
+ Luca.concerns.Filterable =
2
+ classMethods:
3
+ prepare: ()->
4
+ filter = _.clone( @getQuery() )
5
+ options = _.clone( @getQueryOptions() )
6
+
7
+ prepared = @prepareRemoteFilter(filter, options)
8
+
9
+ @debug "Preparing filterable call", prepared, @isRemote()
10
+
11
+ if @isRemote()
12
+ @collection.applyFilter(prepared, remote: true)
13
+ else
14
+ @trigger "data:refresh"
15
+
16
+ __included: (component, module)->
17
+ _.extend(Luca.Collection::, __filters:{})
18
+
19
+ __initializer: (component, module)->
20
+ if @filterable is false
21
+ return
22
+
23
+ @filterable = {} if @filterable is true
24
+
25
+ # TEMP HACK
26
+ unless Luca.isBackboneCollection(@collection)
27
+ @collection = Luca.CollectionManager.get?()?.getOrCreate(@collection)
28
+
29
+ unless Luca.isBackboneCollection(@collection)
30
+ @debug "Skipping Filterable due to no collection being present on #{ @name || @cid }"
31
+ @debug "Collection", @collection
32
+ return
33
+
34
+ @getCollection ||= ()-> @collection
35
+
36
+ filter = @getFilterState()
37
+
38
+ @querySources ||= []
39
+ @optionsSources ||= []
40
+ @query ||= {}
41
+ @queryOptions ||= {}
42
+
43
+ @querySources.push ((options={})=> @getFilterState().toQuery())
44
+ @optionsSources.push ((options={})=> @getFilterState().toOptions())
45
+
46
+ filter.on "change", ()=> @trigger "filter:change"
47
+
48
+ @on "filter:change", Luca.concerns.Filterable.classMethods.prepare, @
49
+
50
+ module
51
+
52
+ prepareRemoteFilter: (filter={}, options={})->
53
+ filter[ Luca.config.apiLimitParameter ] = options.limit if options.limit?
54
+ filter[ Luca.config.apiPageParameter ] = options.page if options.page?
55
+ filter[ Luca.config.apiSortByParameter ] = options.sortBy if options.sortBy?
56
+
57
+ filter
58
+
59
+ isRemote: ()->
60
+ return true if @getQueryOptions().remote is true
61
+ return true if @remoteFilterFallback is true and @getCollection()?.length is 0
62
+
63
+ getFilterState: ()->
64
+ {options,query} = config = @filterable || {}
65
+
66
+ if !_.isEmpty(config) and (_.isEmpty(query) and _.isEmpty(options))
67
+ _.extend(options, _( config ).pluck('sortBy','page','limit') )
68
+
69
+ @collection.__filters[ @cid ] ||= new FilterModel
70
+ query: query || {}
71
+ options: options || {}
72
+
73
+ setSortBy: (sortBy, options={})->
74
+ @getFilterState().setOption('sortBy', sortBy, options)
75
+
76
+ applyFilter: (query={}, options={})->
77
+ options = _.defaults(options, @getQueryOptions())
78
+ query = _.defaults(query, @getQuery())
79
+ @getFilterState().clear(silent:false)
80
+ @getFilterState().set({query,options}, options)
81
+
82
+ class FilterModel extends Backbone.Model
83
+ defaults:
84
+ options: {}
85
+ query: {}
86
+
87
+ setOption: (option, value, options)->
88
+ payload = {}
89
+ payload[option] = value
90
+ @set 'options', _.extend(@toOptions(), payload), options
91
+
92
+ setQueryOption: (option, value, options)->
93
+ payload = {}
94
+ payload[option] = value
95
+ @set 'query', _.extend(@toQuery(), payload), options
96
+
97
+ toOptions: ()->
98
+ _.clone(@toJSON().options)
99
+
100
+ toQuery: ()->
101
+ _.clone(@toJSON().query)
102
+
103
+ toRemote: ()->
104
+ Luca.concerns.Filterable.prepareRemoteFilter.call(@, @toQuery(), @toOptions())
@@ -1,18 +1,24 @@
1
1
  Luca.concerns.LoadMaskable =
2
2
  __initializer: ()->
3
- return unless @loadMask is true
3
+ return if @loadMask is false or not @loadMask?
4
4
 
5
5
  if @loadMask is true
6
- @defer ()=>
7
- @$el.addClass('with-mask')
8
-
9
- if @$('.load-mask').length is 0
10
- @loadMaskTarget().prepend Luca.template(@loadMaskTemplate, @)
11
- @$('.load-mask').hide()
12
- .until("after:render")
13
-
14
- @on (@loadmaskEnableEvent || "enable:loadmask"), @applyLoadMask, @
15
- @on (@loadmaskDisableEvent || "disable:loadmask"), @applyLoadMask, @
6
+ @loadMask =
7
+ enableEvent: "enable:loadmask"
8
+ disableEvent: "disable:loadmask"
9
+
10
+ @on "collection:fetch", ()=> @trigger "enable:loadmask"
11
+ @on "collection:reset", ()=> @trigger "disable:loadmask"
12
+
13
+ @on "after:render", ()->
14
+ @$el.addClass('with-mask')
15
+ if @$('.load-mask').length is 0 and @loadMaskTemplate?
16
+ @loadMaskTarget().prepend Luca.template(@loadMaskTemplate, @)
17
+ @$('.load-mask').hide()
18
+ , @
19
+
20
+ @on(@loadMask.enableEvent, @applyLoadMask, @)
21
+ @on(@loadMask.disableEvent, @applyLoadMask, @)
16
22
 
17
23
  showLoadMask: ()->
18
24
  @trigger("enable:loadmask")
@@ -1,6 +1,6 @@
1
1
  Luca.concerns.Paginatable =
2
2
  paginatorViewClass: 'Luca.components.PaginationControl'
3
- paginationSelector: ".toolbar.bottom"
3
+ paginationSelector: ".toolbar.bottom.pagination-container"
4
4
 
5
5
  __included: ()->
6
6
  _.extend(Luca.Collection::, __paginators: {})
@@ -9,9 +9,8 @@ Luca.concerns.Paginatable =
9
9
  if @paginatable is false
10
10
  return
11
11
 
12
- # TEMP HACK
13
- unless Luca.isBackboneCollection(@collection)
14
- @collection = Luca.CollectionManager.get?()?.getOrCreate(@collection)
12
+ if _.isNumber(@paginatable) or _.isString(@paginatable)
13
+ @paginatable = limit: parseInt(@paginatable), page: 1
15
14
 
16
15
  unless Luca.isBackboneCollection(@collection)
17
16
  @debug "Skipping Paginatable due to no collection being present on #{ @name || @cid }"
@@ -20,10 +19,7 @@ Luca.concerns.Paginatable =
20
19
 
21
20
  _.bindAll @, "paginationControl", "pager"
22
21
 
23
- @getCollection ||= ()->
24
- @collection
25
-
26
- collection = @getCollection()
22
+ collection = (@getCollection ||= ()-> @collection)()
27
23
 
28
24
  paginationState = @getPaginationState()
29
25
 
@@ -34,13 +30,9 @@ Luca.concerns.Paginatable =
34
30
  options = _( paginationState.toJSON() ).pick('limit','page','sortBy')
35
31
  _.extend(options, pager: @pager)
36
32
 
37
- paginationState.on "change:page", (state)=>
38
- if @isRemote()
39
- filter = _.extend(@toQuery(), @toQueryOptions())
40
- @collection.applyFilter(filter, remote: true)
41
- else
42
- @trigger "refresh"
33
+ paginationState.on "change:page", ()=> @trigger "pagination:change"
43
34
 
35
+ @on "pagination:change", Luca.concerns.Filterable.classMethods.prepare, @
44
36
  @on "before:render", @renderPaginationControl, @
45
37
 
46
38
  pager: (numberOfPages, models)->
@@ -0,0 +1,46 @@
1
+ Luca.concerns.QueryCollectionBindings =
2
+ getCollection: ()->
3
+ @collection
4
+
5
+ loadModels: (models=[], options={})->
6
+ @getCollection()?.reset(models, options)
7
+
8
+ applyQuery: (query={},queryOptions={})->
9
+ @query = query
10
+ @queryOptions = queryOptions
11
+ @refresh()
12
+ @
13
+
14
+ # Private: returns the query that is applied to the underlying collection.
15
+ # accepts the same options as Luca.Collection.query's initial query option.
16
+ getQuery: (options={})->
17
+ query = @query ||= {}
18
+
19
+ for querySource in _( @querySources || [] ).compact()
20
+ query = _.extend(query, (querySource(options)||{}) )
21
+
22
+ Luca.util.readAll(query)
23
+
24
+ # Private: returns the query that is applied to the underlying collection.
25
+ # accepts the same options as Luca.Collection.query's initial query option.
26
+ getQueryOptions: (options={})->
27
+ queryOptions = @queryOptions ||= {}
28
+
29
+ for optionSource in _( @optionsSources || [] ).compact()
30
+ queryOptions = _.extend(queryOptions, (optionSource(options)||{}) )
31
+
32
+ queryOptions
33
+ # Private: returns the models to be rendered. If the underlying collection
34
+ # responds to @query() then it will use that interface.
35
+ getModels: (query,options)->
36
+ if @collection?.query
37
+ query ||= @getQuery()
38
+ options ||= @getQueryOptions()
39
+ options.prepare ||= @prepareQuery
40
+
41
+ # TODO
42
+ # Need to write specs for this
43
+ @collection.query(query, options)
44
+ else
45
+ @collection.models
46
+