ende 0.4.20 → 0.4.21

Sign up to get free protection for your applications and to get access to all the features.
Files changed (95) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +2 -3
  3. data/build/build.css +111 -0
  4. data/component.json +1 -0
  5. data/lib/assets/javascripts/aura/extensions/models.js.coffee.erb +4 -13
  6. data/lib/assets/javascripts/aura/extensions/platform.js.coffee +2 -8
  7. data/lib/assets/javascripts/aura/extensions/rivets.js.coffee +21 -10
  8. data/lib/assets/javascripts/aura/extensions/states.js.coffee +25 -27
  9. data/lib/assets/javascripts/aura/extensions/widget/eventable.js.coffee +28 -23
  10. data/lib/assets/javascripts/aura/extensions/widget/lifecycleable.js.coffee +21 -34
  11. data/lib/assets/javascripts/aura/extensions/widget/napable.js.coffee +17 -13
  12. data/lib/assets/javascripts/config/load_components.js.coffee +5 -7
  13. data/lib/assets/javascripts/widgets/dialog/main.js.coffee +1 -2
  14. data/lib/assets/javascripts/widgets/list/presenter.js.coffee +5 -4
  15. data/lib/assets/javascripts/widgets/support/adapters/olark.js +1 -1
  16. data/lib/assets/javascripts/widgets/tray/main.js.coffee +16 -22
  17. data/lib/assets/javascripts/widgets/viewer/main.js.coffee +39 -102
  18. data/lib/assets/javascripts/widgets/viewer/plugins/scopable.js.coffee +7 -1
  19. data/lib/ende/version.rb +1 -1
  20. data/vendor/assets/components/ende_build.js +5732 -1047
  21. data/vendor/components/indefinido-indemma/build/development.js +2 -2
  22. data/vendor/components/indefinido-indemma/build/release.js +9 -4
  23. data/vendor/components/indefinido-indemma/build/test.js +115 -21916
  24. data/vendor/components/indefinido-indemma/component.json +0 -1
  25. data/vendor/components/indefinido-indemma/lib/record/restfulable.js +7 -2
  26. data/vendor/components/indefinido-indemma/lib/record/validatable.js +2 -2
  27. data/vendor/components/indefinido-indemma/src/lib/record/persistable.coffee +2 -0
  28. data/vendor/components/indefinido-indemma/src/lib/record/resource.coffee +3 -2
  29. data/vendor/components/indefinido-indemma/src/lib/record/restfulable.coffee +16 -4
  30. data/vendor/components/indefinido-indemma/src/lib/record/validatable.coffee +3 -3
  31. data/vendor/components/indefinido-observable/.gitignore +15 -0
  32. data/vendor/components/indefinido-observable/.ruby-gemset +1 -0
  33. data/vendor/components/indefinido-observable/.ruby-version +1 -0
  34. data/vendor/components/indefinido-observable/Gemfile +13 -0
  35. data/vendor/components/indefinido-observable/Guardfile +39 -0
  36. data/vendor/components/indefinido-observable/History.md +0 -0
  37. data/vendor/components/indefinido-observable/Readme.md +116 -0
  38. data/vendor/components/indefinido-observable/build/build.js +14798 -0
  39. data/vendor/components/indefinido-observable/build/development.js +339 -0
  40. data/vendor/components/indefinido-observable/build/release.js +14937 -0
  41. data/vendor/components/indefinido-observable/build/test.js +339 -0
  42. data/vendor/components/indefinido-observable/component.json +7 -3
  43. data/vendor/components/indefinido-observable/components/chaijs-chai/component.json +46 -0
  44. data/vendor/components/indefinido-observable/components/chaijs-chai/index.js +1 -0
  45. data/vendor/components/indefinido-observable/components/chaijs-chai/lib/chai/assertion.js +132 -0
  46. data/vendor/components/indefinido-observable/components/chaijs-chai/lib/chai/core/assertions.js +1270 -0
  47. data/vendor/components/indefinido-observable/components/chaijs-chai/lib/chai/error.js +60 -0
  48. data/vendor/components/indefinido-observable/components/chaijs-chai/lib/chai/interface/assert.js +1060 -0
  49. data/vendor/components/indefinido-observable/components/chaijs-chai/lib/chai/interface/expect.js +12 -0
  50. data/vendor/components/indefinido-observable/components/chaijs-chai/lib/chai/interface/should.js +76 -0
  51. data/vendor/components/indefinido-observable/components/chaijs-chai/lib/chai/utils/addChainableMethod.js +94 -0
  52. data/vendor/components/indefinido-observable/components/chaijs-chai/lib/chai/utils/addMethod.js +37 -0
  53. data/vendor/components/indefinido-observable/components/chaijs-chai/lib/chai/utils/addProperty.js +40 -0
  54. data/vendor/components/indefinido-observable/components/chaijs-chai/lib/chai/utils/eql.js +124 -0
  55. data/vendor/components/indefinido-observable/components/chaijs-chai/lib/chai/utils/flag.js +32 -0
  56. data/vendor/components/indefinido-observable/components/chaijs-chai/lib/chai/utils/getActual.js +19 -0
  57. data/vendor/components/indefinido-observable/components/chaijs-chai/lib/chai/utils/getEnumerableProperties.js +25 -0
  58. data/vendor/components/indefinido-observable/components/chaijs-chai/lib/chai/utils/getMessage.js +49 -0
  59. data/vendor/components/indefinido-observable/components/chaijs-chai/lib/chai/utils/getName.js +20 -0
  60. data/vendor/components/indefinido-observable/components/chaijs-chai/lib/chai/utils/getPathValue.js +102 -0
  61. data/vendor/components/indefinido-observable/components/chaijs-chai/lib/chai/utils/getProperties.js +35 -0
  62. data/vendor/components/indefinido-observable/components/chaijs-chai/lib/chai/utils/index.js +108 -0
  63. data/vendor/components/indefinido-observable/components/chaijs-chai/lib/chai/utils/inspect.js +316 -0
  64. data/vendor/components/indefinido-observable/components/chaijs-chai/lib/chai/utils/objDisplay.js +48 -0
  65. data/vendor/components/indefinido-observable/components/chaijs-chai/lib/chai/utils/overwriteMethod.js +51 -0
  66. data/vendor/components/indefinido-observable/components/chaijs-chai/lib/chai/utils/overwriteProperty.js +54 -0
  67. data/vendor/components/indefinido-observable/components/chaijs-chai/lib/chai/utils/test.js +26 -0
  68. data/vendor/components/indefinido-observable/components/chaijs-chai/lib/chai/utils/transferFlags.js +44 -0
  69. data/vendor/components/indefinido-observable/components/chaijs-chai/lib/chai/utils/type.js +45 -0
  70. data/vendor/components/indefinido-observable/components/chaijs-chai/lib/chai.js +79 -0
  71. data/vendor/components/indefinido-observable/components/cjohansen-sinon/sinon.js +4290 -0
  72. data/vendor/components/indefinido-observable/components/component-jquery/component.json +14 -0
  73. data/vendor/components/indefinido-observable/components/component-jquery/index.js +9601 -0
  74. data/vendor/components/indefinido-observable/components/kapit-observe-shim/component.json +11 -0
  75. data/vendor/components/indefinido-observable/components/kapit-observe-utils/component.json +13 -0
  76. data/vendor/components/indefinido-observable/karma.conf.js +92 -0
  77. data/vendor/components/indefinido-observable/lib/observable.js +9 -19
  78. data/vendor/components/indefinido-observable/spec/legacy/observable_spec.js +126 -0
  79. data/vendor/components/indefinido-observable/spec/observable_spec.js +92 -0
  80. data/vendor/components/indefinido-observable/spec/spec_helper.js +8 -0
  81. data/vendor/components/indefinido-observable/spec/vendor/accessors_spec.js +63 -0
  82. data/vendor/components/indefinido-observable/src/lib/adapters/rivets.js.coffee +15 -0
  83. data/vendor/components/indefinido-observable/src/spec/legacy/observable_spec.coffee +132 -0
  84. data/vendor/components/indefinido-observable/src/spec/observable_spec.coffee +85 -0
  85. data/vendor/components/indefinido-observable/src/spec/spec_helper.coffee +5 -0
  86. data/vendor/components/indefinido-observable/src/spec/vendor/accessors_spec.coffee +59 -0
  87. data/vendor/components/indefinido-observable/vendor/spec/boot.js +104 -0
  88. data/vendor/components/indefinido-observable/vendor/spec/jasmine.js +2054 -0
  89. metadata +60 -8
  90. data/lib/assets/javascripts/aura/extensions/domain.js.coffee +0 -55
  91. data/lib/assets/javascripts/aura/extensions/stamps.js.coffee +0 -35
  92. data/lib/assets/javascripts/aura/extensions/widget/composable.js.coffee +0 -135
  93. data/lib/assets/javascripts/aura/extensions/widget/flowable.js.coffee +0 -65
  94. data/lib/assets/javascripts/widgets/attachable/main.js.coffee +0 -77
  95. /data/{lib/assets/javascripts/aura/extensions/stamps → vendor/assets/javascripts/stampit}/stampit.js +0 -0
@@ -1,22 +1,24 @@
1
- 'use strict'
1
+ define ->
2
2
 
3
- define
3
+ 'use strict'
4
4
 
5
5
  type: 'Base'
6
6
 
7
7
  version: '0.1.2'
8
8
 
9
9
  initialize: (options) ->
10
+ names = []
10
11
  {identifier} = options
11
- @names = []
12
12
 
13
- # TODO access omit method throuhgh sandbox
13
+ # TODO access omit method throuhgh underscore
14
14
  widget_options = _.omit options, 'el', 'ref', '_ref', 'name', 'require', 'baseUrl', 'resource'
15
15
 
16
16
  # TODO remove jquery dependency
17
- injections = @prepare_injections widget_options
17
+ for name, suboptions of widget_options when $.type(suboptions) is "object"
18
+ names.push suboptions.name || name
19
+ @add suboptions.name || name, suboptions
18
20
 
19
- @$el.addClass ['tray', 'widget'].concat(@names).join(' ')
21
+ @$el.addClass ['tray', 'widget'].concat(names).join(' ')
20
22
 
21
23
  @identifier ||= identifier
22
24
 
@@ -25,21 +27,13 @@ define
25
27
  @identifier = identifier
26
28
  @$el.attr 'id', identifier
27
29
 
28
- # TODO get defer through sandbox
29
- _.defer =>
30
- @sandbox.start injections
31
-
32
- prepare_injections: (widget_options) ->
33
- # TODO remove jquery dependency, and use type detection through sandbox
34
- for name, suboptions of widget_options when $.type(suboptions) is "object"
35
- @names.push suboptions.name || name
36
-
37
- # TODO do not allow elements outside of the tray
38
- # TODO remove jquery dependency, and use documentFragment to build widgets
39
- # TODO allow widgets without elements
40
- @$el.append suboptions.el = jQuery '<div class="widget"></div>'
30
+ @sandbox.start()
41
31
 
42
- @injection
43
- name: suboptions.name || name
44
- options: suboptions
32
+ add: (name, options) ->
45
33
 
34
+ # TODO add widgets as childrens of the tray widget sandbox
35
+ # TODO remove jquery dependency, and use documentFragment to build widgets
36
+ element = jQuery '<div class="widget"></div>'
37
+ options.el = element
38
+ @$el.append element
39
+ @inject name, options
@@ -1,13 +1,14 @@
1
+
1
2
  'use strict';
2
3
 
3
- lazy_require = 'advisable'
4
+ lazy_requires = ['observable', 'advisable']
4
5
  define [
5
6
  './states/index',
6
7
  './presenters/default',
7
8
  'jquery.inview',
8
9
  'stampit/stampit',
9
- 'observable',
10
- lazy_require], (templates, presenter, inview, stampit, observable, advisable) ->
10
+ lazy_requires[0],
11
+ lazy_requires[1]], (templates, presenter, inview, stampit, observable, advisable) ->
11
12
 
12
13
  scopable = (widget) ->
13
14
  deferred = widget.sandbox.data.deferred()
@@ -29,7 +30,6 @@ define [
29
30
 
30
31
  return unless total_pages?
31
32
 
32
- # TODO set default abortion to decreatse page numbers amount
33
33
  scope.page ++page_number
34
34
 
35
35
  if page_number <= total_pages
@@ -126,32 +126,7 @@ define [
126
126
  viewed: (event, in_view, horizontal, vertical) ->
127
127
  boo[if in_view then 'pride' else 'shame'] event.target
128
128
 
129
-
130
- # TODO Move each handler to independent features
131
- handleable = stampit
132
- handleables:
133
- item:
134
- hover: (event, models) ->
135
- if event.type == 'mouseenter'
136
- @hover models.item
137
- else if event.type == 'mouseleave'
138
- @hover null
139
- else
140
- throw new TypeError 'viewer.handlers.hover: Event type incompatible with hovering.'
141
-
142
- clicked: (event, models) -> @select models.item
143
-
144
- , {}, ->
145
-
146
- throw new TypeError "Widget property is mandatory for handleable stamp" unless @widget?
147
-
148
- @handlers =
149
- item:
150
- clicked: $.proxy @handleables.item.clicked, @widget
151
- hover : $.proxy @handleables.item.hover , @widget
152
-
153
- @
154
- version: '0.2.4'
129
+ version: '0.2.1'
155
130
 
156
131
  # TODO better separation of concerns
157
132
  # TODO Current remote page that is beign displayed
@@ -182,16 +157,8 @@ define [
182
157
  # We extend presentation.selected just to assign all values of the item model
183
158
  # TODO call presenter to do this job
184
159
  @sandbox.util.extend @presentation.selected , item.model.json?() || item.model
185
-
186
- # TODO change paramters to item, item.model
187
160
  @sandbox.emit "viewer.#{@identifier}.selected", item.model
188
161
 
189
- # Called when hover in and out from model
190
- hover: (item) ->
191
- # TODO call presenter to do this job
192
- # @sandbox.util.extend @presentation.hovered , item.model.json?() || item.model
193
- @sandbox.emit "viewer.#{@identifier}.hovered", item, item && item.model
194
-
195
162
  scope_to: (scope, child_scope) ->
196
163
  # Singuralize in order to accept association scopes, since
197
164
  # association scopes return almost the same kind as of it's
@@ -199,14 +166,16 @@ define [
199
166
  sent_scope = @inflector.singularize scope.resource.toString()
200
167
  current_scope = @inflector.singularize @scope.resource.toString()
201
168
 
202
- deferred = @sandbox.data.deferred()
203
-
204
169
  if sent_scope != current_scope
205
170
  throw new TypeError "Invalid scope sent to viewer@#{@identifier} sent: '#{sent_scope}', expected: '#{current_scope}'"
206
171
 
207
172
  # For sobsequent usages we must store the scope
208
173
  @scope = scope
209
174
 
175
+ # TODO better hierachical event distribution
176
+ for { _widget: widget } in @sandbox._children?
177
+ widget.scope_to? child_scope
178
+
210
179
  @sandbox.emit "viewer.#{@identifier}.scope_changed", @scope
211
180
 
212
181
  # TODO better scope data binding, and updating
@@ -216,15 +185,6 @@ define [
216
185
 
217
186
  @repopulate()
218
187
 
219
- # TODO rename this method
220
- # TODO also move this to an external tag
221
- statused: (status) ->
222
- if status
223
- @status = status
224
- @sandbox.emit "viewer.#{@identifier}.status_changed", status
225
- else
226
- @status
227
-
228
188
  repopulate: ->
229
189
  unless @fetching?
230
190
  if @load?
@@ -235,10 +195,9 @@ define [
235
195
 
236
196
  # TODO store spinner instance, instead of creating a new one every time
237
197
  unless @load?
238
- @load = @sandbox.ui.loader @$results
198
+ @load = @sandbox.ui.loader @$el.find '.results .items'
239
199
 
240
200
  # TODO implement status for viewer widget
241
- @statused 'loading'
242
201
  @$el.addClass 'idle'
243
202
  @$el.removeClass 'loading'
244
203
 
@@ -253,7 +212,7 @@ define [
253
212
  records = _.map records, @resource, @resource unless records[0]?.resource or records[0]?.itemable
254
213
 
255
214
  # TODO implement Array.concat ou Array.merge in observer, and
256
- # use it here instead of overriding all records
215
+ # use it here instead of pushing each record
257
216
  viewer.items = records
258
217
 
259
218
  # Start widgets created by bindings
@@ -272,20 +231,21 @@ define [
272
231
  @sandbox.emit "viewer.#{@identifier}.populated", records, @
273
232
 
274
233
  @fetching.always =>
234
+ # TODO implement status for viewer widget
235
+ @$el.addClass 'idle'
236
+ @$el.removeClass 'loading'
237
+
275
238
  if @load?
276
239
  @load.stop()
277
240
  @load = null
278
241
 
279
- # TODO implement status for viewer widget
280
- @$el.removeClass 'loading'
281
- @statused 'idle'
282
- @$el.addClass 'idle'
283
242
 
284
- populate: ->
285
- @load = @sandbox.ui.loader @$el
243
+ populate: (handlers) ->
244
+ sandbox = @sandbox
245
+
246
+ @load = @sandbox.ui.loader @$results
286
247
 
287
248
  # TODO implement status for viewer widget
288
- @statused 'loading'
289
249
  @$el.removeClass 'idle'
290
250
  @$el.addClass 'loading'
291
251
 
@@ -310,12 +270,9 @@ define [
310
270
 
311
271
  @load.stop()
312
272
 
313
- # TODO do not send records as parameter
314
- @presentation = @presenter records, @scope, @handleable
273
+ @presentation = @presenter records, @scope
315
274
 
316
- # Initialize elements
317
275
  @$el.html templates[@options.resource]
318
- @$results = @$el.find '.results .items'
319
276
 
320
277
  if records.length
321
278
  # boo.initialize @$el.find '.results .items'
@@ -342,7 +299,7 @@ define [
342
299
 
343
300
 
344
301
  plugins: (options) ->
345
- deferreds = [@]
302
+ deferreds = []
346
303
 
347
304
  deferreds.push paginable widget: @ if options.page
348
305
  deferreds.push scrollable widget: @ if options.scroll
@@ -353,7 +310,6 @@ define [
353
310
  # TODO move this method to an extension
354
311
  syncronize_children: ->
355
312
  @sandbox._children ||= []
356
- @sandbox._widget ||= @
357
313
 
358
314
  # Add possible new childs
359
315
  @constructor.startAll(@$el).done (widgets...) =>
@@ -363,12 +319,6 @@ define [
363
319
 
364
320
  @sandbox._children = @sandbox._children.concat widgets
365
321
 
366
- for widget in widgets
367
- # TODO emit this event only when all siblings have initialized
368
- @sandbox.emit "#{widget.name}.#{widget.identifier}.siblings_initialized", @sandbox._children
369
-
370
- true
371
-
372
322
  # TODO better internal aura widget selection
373
323
  # Prevent other child to be instantiated
374
324
  @$el.find('[data-aura-widget]').each (i, element) ->
@@ -452,56 +402,43 @@ define [
452
402
  initialize: (options) ->
453
403
  # TODO import core extensions in another place
454
404
  @resource = @sandbox.resource options.resource
455
- @scope = @resource
456
-
457
- # Instantiate it's on handleable factory
458
- widget = @
459
- widgetable = stampit().enclose -> @widget = widget; @
460
- @handleable = stampit.compose widgetable, handleable
405
+ @scope = model = @resource
461
406
 
462
407
  {sandbox: {util: {@inflector}}} = @
463
408
 
464
409
  @sandbox.on "viewer.#{@identifier}.scope", @scope_to, @
465
410
 
466
- # Initalize plugins
467
- # TODO think how to implement plugins api
411
+ # Iniitalize plugins
468
412
  loading = @plugins options
469
413
 
470
- @statused 'idle'
471
414
  @$el.addClass "viewer widget #{@inflector.cssify @identifier} idle clearfix"
472
415
 
473
- loading.done (widget) ->
474
- widget.require_custom options.resource
475
-
476
- # TODO externalize this code to an extension
477
- require_custom: (resource) ->
478
- deferred = @sandbox.data.deferred()
416
+ loading.done => @require_custom options
479
417
 
418
+ require_custom: (options) ->
480
419
  # Fetch custom templates
481
420
  # TODO better custom templates structure and custom presenter
482
421
  # TODO better segregation of concerns on this code
483
422
  # TODO handle case where custom presenter does not exist!
484
423
  require [
485
- "text!./widgets/viewer/templates/default/#{resource}.html"
486
- "./widgets/viewer/presenters/#{resource}"
424
+ "text!./widgets/viewer/templates/default/#{options.resource}.html"
425
+ "./widgets/viewer/presenters/#{options.resource}"
487
426
  ], (custom_default_template, custom_presenter) =>
488
427
 
489
- unless presenter.hasOwnProperty 'handlers'
490
- Object.defineProperty presenter, 'handlers',
491
- get: -> throw new Error "presenter.hanlder is deprecated, please compose upon handleable"
492
- set: -> throw new Error "presenter.hanlder is deprecated, please compose upon handleable"
428
+ # TODO Better way to preserve widgets handlers
429
+ handlers =
430
+ item:
431
+ clicked: (event, models) =>
432
+ @select models.item
493
433
 
494
- custom_default_template and templates[resource] = custom_default_template
495
- @presenter = @sandbox.util.extend custom_presenter, presenter if custom_presenter
434
+ presenter.handlers = handlers
496
435
 
497
- # Fetch default data
498
- @populate()
436
+ custom_default_template and templates[options.resource] = custom_default_template
437
+ @presenter = @sandbox.util.extend custom_presenter, presenter if custom_presenter
499
438
 
500
- deferred.resolveWith @, [resource]
439
+ @$results = @$el.find '.results .items'
501
440
 
502
- , (error) =>
503
- # TODO handle other status codes with xhr error
504
- @sandbox.logger.error "Error when loading presenter and template for resource '#{resource}':\n\n", error.message + "\n\n", error
505
- deferred.rejectWith @, arguments
441
+ # Fetch default data
442
+ @populate handlers
506
443
 
507
- deferred
444
+ true
@@ -1,6 +1,11 @@
1
1
  'use strict';
2
2
 
3
- define ['stampit/stampit', 'observable'], (stampit, observable) ->
3
+ window.domo = []
4
+
5
+ # TODO define componentjs required packages, as requirejs packages
6
+ observable = require('indefinido-observable').mixin
7
+
8
+ define ['stampit/stampit'], (stampit) ->
4
9
 
5
10
  scopingable = stampit
6
11
  start: ->
@@ -37,6 +42,7 @@ define ['stampit/stampit', 'observable'], (stampit, observable) ->
37
42
  @
38
43
 
39
44
 
45
+
40
46
  scopable = stampit
41
47
  forward_scope_data: (scope_name, data) ->
42
48
  switch @scope['$' + scope_name].constructor
data/lib/ende/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Ende
2
- VERSION = "0.4.20"
2
+ VERSION = "0.4.21"
3
3
  end