ende 0.4.20 → 0.4.21

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 (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