luca 0.9.6 → 0.9.7

Sign up to get free protection for your applications and to get access to all the features.
Files changed (76) hide show
  1. data/CHANGELOG +37 -14
  2. data/lib/luca/rails/version.rb +1 -1
  3. data/spec/components/collection_view_spec.coffee +24 -2
  4. data/spec/components/pagination_control_spec.coffee +0 -0
  5. data/spec/concerns/dom_helpers_spec.coffee +16 -0
  6. data/spec/concerns/filterable_spec.coffee +25 -0
  7. data/spec/concerns/model_presenter_spec.coffee +31 -0
  8. data/spec/concerns/paginatable_spec.coffee +0 -0
  9. data/spec/concerns/state_model_spec.coffee +0 -0
  10. data/spec/concerns_spec.coffee +88 -0
  11. data/spec/core/container_spec.coffee +74 -12
  12. data/spec/core/model_spec.coffee +6 -1
  13. data/spec/define_spec.coffee +0 -6
  14. data/spec/util_spec.coffee +24 -0
  15. data/src/components/application.coffee +32 -30
  16. data/src/components/base_toolbar.coffee +6 -4
  17. data/src/components/collection_loader_view.coffee +3 -1
  18. data/src/components/collection_view.coffee +42 -21
  19. data/src/components/controller.coffee +3 -1
  20. data/src/components/fields/button_field.coffee +19 -12
  21. data/src/components/fields/checkbox_array.coffee +8 -2
  22. data/src/components/fields/checkbox_field.coffee +18 -9
  23. data/src/components/fields/file_upload_field.coffee +5 -1
  24. data/src/components/fields/hidden_field.coffee +3 -1
  25. data/src/components/fields/label_field.coffee +4 -3
  26. data/src/components/fields/select_field.coffee +7 -8
  27. data/src/components/fields/text_field.coffee +3 -1
  28. data/src/components/fields/type_ahead_field.coffee +4 -2
  29. data/src/components/form_button_toolbar.coffee +4 -1
  30. data/src/components/form_view.coffee +49 -44
  31. data/src/components/grid_view.coffee +1 -1
  32. data/src/components/multi_collection_view.coffee +49 -22
  33. data/src/components/pagination_control.coffee +17 -13
  34. data/src/{modules → concerns}/application_event_bindings.coffee +1 -1
  35. data/src/{modules → concerns}/collection_event_bindings.coffee +1 -1
  36. data/src/{modules → concerns}/deferrable.coffee +1 -1
  37. data/src/{modules → concerns}/dom_helpers.coffee +11 -2
  38. data/src/{modules → concerns}/enhanced_properties.coffee +1 -1
  39. data/src/concerns/filterable.coffee +82 -0
  40. data/src/{modules → concerns}/grid_layout.coffee +1 -1
  41. data/src/{modules → concerns}/loadmaskable.coffee +1 -1
  42. data/src/{modules → concerns}/local_storage.coffee +0 -0
  43. data/src/{modules → concerns}/modal_view.coffee +1 -1
  44. data/src/concerns/model_presenter.coffee +23 -0
  45. data/src/concerns/paginatable.coffee +87 -0
  46. data/src/{modules → concerns}/state_model.coffee +1 -1
  47. data/src/{modules → concerns}/templating.coffee +1 -1
  48. data/src/concerns.coffee +70 -0
  49. data/src/containers/tab_view.coffee +7 -10
  50. data/src/core/collection.coffee +17 -1
  51. data/src/core/container.coffee +56 -31
  52. data/src/core/field.coffee +39 -38
  53. data/src/core/meta_data.coffee +37 -0
  54. data/src/core/model.coffee +18 -1
  55. data/src/core/view.coffee +25 -29
  56. data/src/define.coffee +54 -66
  57. data/src/framework.coffee +23 -18
  58. data/src/index.coffee +3 -1
  59. data/src/stylesheets/components/checkbox_array.scss +1 -1
  60. data/src/stylesheets/components/form_view.scss +5 -5
  61. data/src/stylesheets/components/viewport.scss +2 -1
  62. data/src/stylesheets/containers/container.scss +0 -5
  63. data/src/stylesheets/containers/tab_view.scss +5 -5
  64. data/src/tools/console.coffee +5 -5
  65. data/src/util.coffee +47 -0
  66. data/vendor/assets/javascripts/luca-ui-development-tools.js +5 -5
  67. data/vendor/assets/javascripts/luca-ui-development-tools.min.js +1 -1
  68. data/vendor/assets/javascripts/luca-ui-full.js +905 -416
  69. data/vendor/assets/javascripts/luca-ui-full.min.js +5 -5
  70. data/vendor/assets/javascripts/luca-ui.js +905 -416
  71. data/vendor/assets/javascripts/luca-ui.min.js +5 -4
  72. data/vendor/assets/stylesheets/luca-ui.css +15 -15
  73. metadata +27 -17
  74. data/spec/mixin_spec.coffee +0 -49
  75. data/src/modules/filterable.coffee +0 -60
  76. data/src/modules/paginatable.coffee +0 -79
@@ -1,27 +1,27 @@
1
- .luca-ui-checkbox-array input.array-checkbox {
1
+ .luca-ui-checkbox-array input.array-checkbox, .luca-checkbox-array input.array-checkbox {
2
2
  display: inline-block; }
3
- .luca-ui-form-view-wrapper {
3
+ .luca-form-view {
4
4
  width: 100%;
5
5
  float: left;
6
6
  display: block;
7
7
  clear: both;
8
8
  margin: 10px 0px; }
9
9
 
10
- .luca-ui-form-view .luca-ui-field {
10
+ .luca-form-view .luca-ui-field {
11
11
  margin: 5px;
12
12
  padding: 5px; }
13
- .luca-ui-form-view .luca-ui-field .helper-text {
13
+ .luca-form-view .luca-ui-field .helper-text {
14
14
  font-size: 0.75em;
15
15
  font-color: #ccc; }
16
16
 
17
- .luca-ui-form-view.label-align-top .luca-ui-field label, .luca-ui-form-view.label-align-top .luca-ui-field input, .luca-ui-form-view.label-align-top .luca-ui-field select, .luca-ui-form-view.label-align-top .luca-ui-field textarea {
17
+ .luca-form-view.label-align-top .luca-ui-field label, .luca-form-view.label-align-top .luca-ui-field input, .luca-form-view.label-align-top .luca-ui-field select, .luca-form-view.label-align-top .luca-ui-field textarea {
18
18
  margin: 5px 0px;
19
19
  display: block; }
20
20
 
21
- .luca-ui-form-view.column-layout .luca-ui-field {
21
+ .luca-form-view.column-layout .luca-ui-field {
22
22
  float: left; }
23
23
 
24
- .luca-ui-form-view .toolbar-container {
24
+ .luca-form-view .toolbar-container {
25
25
  padding-right: 12px; }
26
26
 
27
27
  /* support for older form view config */
@@ -124,7 +124,7 @@ html.luca-ui-fullscreen, body.luca-ui-fullscreen {
124
124
 
125
125
  .luca-ui-fullscreen .fluid-viewport-wrapper {
126
126
  padding-top: 40px; }
127
- .luca-ui-fullscreen .luca-ui-viewport, .luca-ui-fullscreen .fullscreen-container {
127
+ .luca-ui-fullscreen .luca-viewport, .luca-ui-fullscreen .luca-ui-viewport, .luca-ui-fullscreen .fullscreen-container {
128
128
  min-height: 100%;
129
129
  height: auto !important;
130
130
  height: 100%; }
@@ -151,23 +151,23 @@ html.luca-ui-fullscreen, body.luca-ui-fullscreen {
151
151
  .luca-ui-toolbar.toolbar-top {
152
152
  border-bottom-left-radius: 0px;
153
153
  border-bottom-right-radius: 0px; }
154
- .luca-ui-tab-view .luca-ui-card .luca-ui-grid-view, .luca-ui-tab-view .luca-ui-card .luca-ui-form-view, .luca-ui-tab-view .luca-ui-card .luca-ui-card {
154
+ .luca-tab-view .luca-ui-card .luca-ui-grid-view, .luca-tab-view .luca-ui-card .luca-form-view, .luca-tab-view .luca-ui-card .luca-ui-card {
155
155
  overflow: hidden; }
156
156
 
157
- .luca-ui-tab-view.tabs-below .tab-selector-container, .luca-ui-tab-view.tabs-right .tab-selector-container {
157
+ .luca-tab-view.tabs-below .tab-selector-container, .luca-tab-view.tabs-right .tab-selector-container {
158
158
  display: block;
159
159
  clear: both; }
160
160
 
161
- .luca-ui-tab-view.tabs-left .tab-selector-container {
161
+ .luca-tab-view.tabs-left .tab-selector-container {
162
162
  float: left; }
163
- .luca-ui-tab-view.tabs-left .tab-selector-container ul.nav-tabs {
163
+ .luca-tab-view.tabs-left .tab-selector-container ul.nav-tabs {
164
164
  padding: 0px; }
165
- .luca-ui-tab-view.tabs-left .tab-content {
165
+ .luca-tab-view.tabs-left .tab-content {
166
166
  float: left; }
167
167
 
168
- .luca-ui-tab-view.tabs-right .tab-selector-container {
168
+ .luca-tab-view.tabs-right .tab-selector-container {
169
169
  float: right; }
170
- .luca-ui-tab-view.tabs-right .tab-content {
170
+ .luca-tab-view.tabs-right .tab-content {
171
171
  float: left; }
172
172
  /* normalize.css 2011-11-04T15:38 UTC - http://github.com/necolas/normalize.css */
173
173
  /* =============================================================================
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: luca
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.9.6
4
+ version: 0.9.7
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-11-20 00:00:00.000000000 Z
12
+ date: 2012-11-29 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: railties
@@ -251,9 +251,16 @@ files:
251
251
  - spec/components/form_view_spec.coffee
252
252
  - spec/components/grid_view_spec.coffee
253
253
  - spec/components/multi_collection_view_spec.coffee
254
+ - spec/components/pagination_control_spec.coffee
254
255
  - spec/components/record_manager_spec.coffee
255
256
  - spec/components/table_view_spec.coffee
256
257
  - spec/components/template_spec.coffee
258
+ - spec/concerns/dom_helpers_spec.coffee
259
+ - spec/concerns/filterable_spec.coffee
260
+ - spec/concerns/model_presenter_spec.coffee
261
+ - spec/concerns/paginatable_spec.coffee
262
+ - spec/concerns/state_model_spec.coffee
263
+ - spec/concerns_spec.coffee
257
264
  - spec/containers/card_view_spec.coffee
258
265
  - spec/containers/column_view_spec.coffee
259
266
  - spec/containers/modal_view_spec.coffee
@@ -272,7 +279,7 @@ files:
272
279
  - spec/helper.coffee
273
280
  - spec/managers/collection_manager_spec.coffee
274
281
  - spec/managers/socket_manager_spec.coffee
275
- - spec/mixin_spec.coffee
282
+ - spec/util_spec.coffee
276
283
  - src/components/application.coffee
277
284
  - src/components/base_toolbar.coffee
278
285
  - src/components/collection_loader_view.coffee
@@ -302,6 +309,21 @@ files:
302
309
  - src/components/table_view.coffee
303
310
  - src/components/template.coffee
304
311
  - src/components/toolbar_dialog.coffee
312
+ - src/concerns.coffee
313
+ - src/concerns/application_event_bindings.coffee
314
+ - src/concerns/collection_event_bindings.coffee
315
+ - src/concerns/deferrable.coffee
316
+ - src/concerns/dom_helpers.coffee
317
+ - src/concerns/enhanced_properties.coffee
318
+ - src/concerns/filterable.coffee
319
+ - src/concerns/grid_layout.coffee
320
+ - src/concerns/loadmaskable.coffee
321
+ - src/concerns/local_storage.coffee
322
+ - src/concerns/modal_view.coffee
323
+ - src/concerns/model_presenter.coffee
324
+ - src/concerns/paginatable.coffee
325
+ - src/concerns/state_model.coffee
326
+ - src/concerns/templating.coffee
305
327
  - src/containers/card_view.coffee
306
328
  - src/containers/column_view.coffee
307
329
  - src/containers/modal_view.coffee
@@ -315,6 +337,7 @@ files:
315
337
  - src/core/container.coffee
316
338
  - src/core/core.coffee
317
339
  - src/core/field.coffee
340
+ - src/core/meta_data.coffee
318
341
  - src/core/model.coffee
319
342
  - src/core/observer.coffee
320
343
  - src/core/panel.coffee
@@ -326,19 +349,6 @@ files:
326
349
  - src/index.coffee
327
350
  - src/managers/collection_manager.coffee
328
351
  - src/managers/socket_manager.coffee
329
- - src/modules/application_event_bindings.coffee
330
- - src/modules/collection_event_bindings.coffee
331
- - src/modules/deferrable.coffee
332
- - src/modules/dom_helpers.coffee
333
- - src/modules/enhanced_properties.coffee
334
- - src/modules/filterable.coffee
335
- - src/modules/grid_layout.coffee
336
- - src/modules/loadmaskable.coffee
337
- - src/modules/local_storage.coffee
338
- - src/modules/modal_view.coffee
339
- - src/modules/paginatable.coffee
340
- - src/modules/state_model.coffee
341
- - src/modules/templating.coffee
342
352
  - src/plugins/development_tool_helpers.coffee
343
353
  - src/plugins/events.coffee
344
354
  - src/samples/definition.coffee
@@ -500,7 +510,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
500
510
  version: '0'
501
511
  segments:
502
512
  - 0
503
- hash: -4460069165458551648
513
+ hash: -1023452771417874938
504
514
  required_rubygems_version: !ruby/object:Gem::Requirement
505
515
  none: false
506
516
  requirements:
@@ -1,49 +0,0 @@
1
- describe 'The Mixin System', ->
2
-
3
- window.Luca ||= {}
4
-
5
- Luca.mixin.namespace 'Luca.test_modules'
6
-
7
- Luca.test_modules =
8
- SecondMixin:
9
- __included: ()->
10
- window.secondMixinIncluded = true
11
- __initializer: ()->
12
- @trigger "second:mixin"
13
- FirstMixin:
14
- __initializer: ()->
15
- @trigger "first:mixin"
16
- __privateMethod: ()->
17
- true
18
- publicMethod: ()->
19
- true
20
-
21
- sampleView = Luca.register('Luca.components.FirstView')
22
-
23
- sampleView.mixesIn 'FirstMixin'
24
-
25
- sampleView.defines
26
- sampleMethod: ()->
27
- "sample"
28
-
29
- secondView = Luca.register("Luca.components.SecondView")
30
- secondView.extends 'Luca.components.FirstView'
31
- secondView.mixesIn 'SecondMixin'
32
- secondView.defines
33
- version: 2
34
-
35
- it "should omit the private methods defined on the mixin", ->
36
- sampleView = new Luca.components.FirstView
37
- expect( sampleView.__privateMethod ).not.toBeDefined()
38
-
39
- it "should extend the prototype with the mixins normal methods", ->
40
- sampleView = new Luca.components.FirstView
41
- expect( sampleView.publicMethod ).toBeDefined()
42
-
43
- it "should call the initializer for that module on the instance", ->
44
- secondView = new Luca.components.SecondView
45
- expect( secondView ).toHaveTriggered("second:mixin")
46
-
47
- it "should call the initializers up the prototype chain", ->
48
- secondView = new Luca.components.SecondView
49
- expect( secondView ).toHaveTriggered("first:mixin")
@@ -1,60 +0,0 @@
1
- Luca.modules.Filterable =
2
- __included: (component, module)->
3
- _.extend(Luca.Collection::, __filters:{})
4
-
5
- __initializer: (component, module)->
6
- return if @filterable is false or not Luca.isBackboneCollection(@collection)
7
-
8
- @getCollection ||= ()-> @collection
9
-
10
- filter = @getFilterState()
11
-
12
- filter.on "change", (state)=>
13
- @trigger "collection:change:filter", state, @getCollection()
14
- @trigger "refresh"
15
-
16
- if @getQuery?
17
- @getQuery = _.compose @getQuery, (query={})->
18
- obj = _.clone(query)
19
- _.extend(obj, filter.toQuery() )
20
- else
21
- @getQuery = ()=>
22
- filter.toQuery()
23
-
24
- if @getQueryOptions?
25
- @getQueryOptions = _.compose @getQueryOptions, (options={})->
26
- obj = _.clone(options)
27
- _.extend(obj, filter.toOptions() )
28
- else
29
- @getQueryOptions = ()-> filter.toOptions()
30
-
31
- getFilterState: ()->
32
- @collection.__filters[ @cid ] ||= new FilterModel(@filterable)
33
-
34
- setSortBy: (sortBy, options={})->
35
- @getFilterState().setOption('sortBy', sortBy, options)
36
-
37
- applyFilter: (query={}, options={})->
38
- options = _.defaults(options, @getQueryOptions())
39
- query = _.defaults(query, @getQuery())
40
-
41
- silent = _( options ).delete('silent') is true
42
-
43
- @getFilterState().set({query,options}, silent: silent)
44
-
45
- class FilterModel extends Backbone.Model
46
- setOption: (option, value, options)->
47
- payload = {}
48
- payload[option] = value
49
- @set 'options', _.extend(@toOptions(), payload), options
50
-
51
- setQueryOption: (option, value, options)->
52
- payload = {}
53
- payload[option] = value
54
- @set 'query', _.extend(@toQuery(), payload), options
55
-
56
- toOptions: ()->
57
- @toJSON().options
58
-
59
- toQuery: ()->
60
- @toJSON().query
@@ -1,79 +0,0 @@
1
- Luca.modules.Paginatable =
2
- paginatorViewClass: 'Luca.components.PaginationControl'
3
- paginationSelector: ".toolbar.bottom"
4
-
5
- __included: ()->
6
- _.extend(Luca.Collection::, __paginators: {})
7
-
8
- __initializer:()->
9
- return if @paginatable is false or not Luca.isBackboneCollection(@collection)
10
-
11
- _.bindAll @, "paginationControl"
12
-
13
- @getCollection ||= ()-> @collection
14
-
15
- collection = @getCollection()
16
-
17
- paginationState = @getPaginationState()
18
-
19
- paginationState.on "change", (state)=>
20
- @trigger "collection:change:pagination", state, collection
21
- @trigger "refresh"
22
-
23
- @on "after:refresh", (models, query, options)=>
24
- _.defer ()=>
25
- @updatePagination.call(@, models, query, options)
26
-
27
- @on "after:render", ()=>
28
- @paginationControl().refresh()
29
-
30
- if old = @getQueryOptions
31
- @getQueryOptions = ()->
32
- _.extend( old(), paginationState.toJSON() )
33
- else
34
- @getQueryOptions = ()-> paginationState.toJSON()
35
-
36
- getPaginationState: ()->
37
- @collection.__paginators[ @cid ] ||= @paginationControl().state
38
-
39
- paginationContainer: ()->
40
- @$(">#{ @paginationSelector }")
41
-
42
- setCurrentPage: (page=1, options={})->
43
- @getPaginationState().set('page', page, options)
44
-
45
- setLimit: (limit=0,options={})->
46
- @getPaginationState().set('limit', limit, options)
47
-
48
- updatePagination: (models=[], query={}, options={})->
49
- _.defaults(options, @getQueryOptions(), limit: 0 )
50
-
51
- paginator = @paginationControl()
52
-
53
- itemCount = models?.length || 0
54
- totalCount = @getCollection()?.length
55
-
56
- if itemCount is 0 or totalCount <= options.limit
57
- paginator.$el.hide()
58
- else
59
- paginator.$el.show()
60
-
61
- paginator.state.set(page: options.page, limit: options.limit)
62
-
63
- paginationControl: ()->
64
- return @paginator if @paginator?
65
-
66
- _.defaults(@paginatable ||= {}, page: 1, limit: 20)
67
-
68
- @paginator = Luca.util.lazyComponent
69
- type: "pagination_control"
70
- collection: @getCollection()
71
- defaultState: @paginatable
72
-
73
- @paginator
74
-
75
- renderPaginationControl: ()->
76
- @paginationControl()
77
- @paginationContainer().append @paginationControl().render().$el
78
-
79
-