ende 0.3.13 → 0.4.0

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 (76) hide show
  1. checksums.yaml +4 -4
  2. data/component.json +7 -0
  3. data/lib/assets/javascripts/aura/extensions/devise.js.coffee +2 -2
  4. data/lib/assets/javascripts/aura/extensions/loader.js.coffee +13 -11
  5. data/lib/assets/javascripts/aura/extensions/mask.js.coffee +54 -40
  6. data/lib/assets/javascripts/aura/extensions/mediator.js +5 -3
  7. data/lib/assets/javascripts/aura/extensions/models.js.coffee.erb +2 -2
  8. data/lib/assets/javascripts/aura/extensions/rivets/accounting.js.coffee +7 -1
  9. data/lib/assets/javascripts/aura/extensions/rivets/formatters.js.coffee +5 -1
  10. data/lib/assets/javascripts/aura/extensions/rivets.js.coffee +47 -29
  11. data/lib/assets/javascripts/aura/extensions/routes.js.coffee +10 -5
  12. data/lib/assets/javascripts/aura/extensions/states.js.coffee +2 -2
  13. data/lib/assets/javascripts/aura/extensions/widget/eventable.js.coffee +18 -19
  14. data/lib/assets/javascripts/aura/extensions/widget/lifecycleable.js.coffee +15 -10
  15. data/lib/assets/javascripts/config/initializers/jquery.js.coffee +2 -1
  16. data/lib/assets/javascripts/config/initializers/requirejs.js.coffee +3 -4
  17. data/lib/assets/javascripts/config/initializers.js.coffee +3 -0
  18. data/lib/assets/javascripts/config/load_components.js.coffee +106 -83
  19. data/lib/assets/javascripts/ende.js.coffee +13 -4
  20. data/lib/assets/javascripts/widgets/authenticator/presenter.js.coffee +3 -2
  21. data/lib/assets/javascripts/widgets/dialog/main.js.coffee +7 -3
  22. data/lib/assets/javascripts/widgets/support/main.js.coffee +3 -4
  23. data/lib/assets/javascripts/widgets/viewer/main.js.coffee +35 -103
  24. data/lib/assets/javascripts/widgets/viewer/presenters/default.js.coffee +2 -4
  25. data/lib/ende/version.rb +1 -1
  26. data/vendor/assets/components/build.js +30877 -0
  27. data/vendor/assets/components/ende_build.js +2487 -148
  28. data/vendor/assets/components/indemma_with_none.js +30553 -0
  29. data/vendor/assets/javascripts/spin/spin.js +349 -0
  30. data/vendor/components/indefinido-indemma/.gitignore +3 -0
  31. data/vendor/components/indefinido-indemma/.ruby-gemset +1 -1
  32. data/vendor/components/indefinido-indemma/.ruby-version +1 -1
  33. data/vendor/components/indefinido-indemma/build/development.js +17 -14
  34. data/vendor/components/indefinido-indemma/build/release.js +213 -148
  35. data/vendor/components/indefinido-indemma/build/test.js +213 -148
  36. data/vendor/components/indefinido-indemma/component.json +3 -1
  37. data/vendor/components/indefinido-indemma/karma.conf.js +50 -60
  38. data/vendor/components/indefinido-indemma/lib/record/associable.js +17 -17
  39. data/vendor/components/indefinido-indemma/lib/record/persistable.js +8 -1
  40. data/vendor/components/indefinido-indemma/lib/record/queryable.js +3 -0
  41. data/vendor/components/indefinido-indemma/lib/record/resource.js +25 -45
  42. data/vendor/components/indefinido-indemma/lib/record/restfulable.js +82 -28
  43. data/vendor/components/indefinido-indemma/lib/record/scopable.js +28 -2
  44. data/vendor/components/indefinido-indemma/lib/record/storable.js +1 -1
  45. data/vendor/components/indefinido-indemma/lib/record/validatable.js +15 -23
  46. data/vendor/components/indefinido-indemma/lib/record/validations/associated.js +3 -5
  47. data/vendor/components/indefinido-indemma/lib/record/validations/confirmation.js +3 -5
  48. data/vendor/components/indefinido-indemma/lib/record/validations/cpf.js +5 -7
  49. data/vendor/components/indefinido-indemma/lib/record/validations/presence.js +3 -5
  50. data/vendor/components/indefinido-indemma/lib/record/validations/remote.js +3 -7
  51. data/vendor/components/indefinido-indemma/lib/record/validations/type.js +2 -2
  52. data/vendor/components/indefinido-indemma/lib/record/validations/validatorable.js +12 -0
  53. data/vendor/components/indefinido-indemma/package.json +9 -0
  54. data/vendor/components/indefinido-indemma/spec/record/restfulable_spec.js +12 -0
  55. data/vendor/components/indefinido-indemma/spec/record/validatable_spec.js +4 -4
  56. data/vendor/components/indefinido-indemma/spec/record/validations/associated_spec.js +2 -2
  57. data/vendor/components/indefinido-indemma/src/lib/record/associable.coffee +44 -20
  58. data/vendor/components/indefinido-indemma/src/lib/record/persistable.coffee +7 -2
  59. data/vendor/components/indefinido-indemma/src/lib/record/queryable.coffee +1 -0
  60. data/vendor/components/indefinido-indemma/src/lib/record/resource.coffee +32 -32
  61. data/vendor/components/indefinido-indemma/src/lib/record/restfulable.coffee +79 -22
  62. data/vendor/components/indefinido-indemma/src/lib/record/scopable.coffee +27 -8
  63. data/vendor/components/indefinido-indemma/src/lib/record/storable.coffee +1 -1
  64. data/vendor/components/indefinido-indemma/src/lib/record/validatable.coffee +20 -19
  65. data/vendor/components/indefinido-indemma/src/lib/record/validations/associated.coffee +3 -5
  66. data/vendor/components/indefinido-indemma/src/lib/record/validations/confirmation.coffee +2 -4
  67. data/vendor/components/indefinido-indemma/src/lib/record/validations/cpf.coffee +4 -5
  68. data/vendor/components/indefinido-indemma/src/lib/record/validations/presence.coffee +2 -5
  69. data/vendor/components/indefinido-indemma/src/lib/record/validations/remote.coffee +3 -7
  70. data/vendor/components/indefinido-indemma/src/lib/record/validations/type.coffee +2 -3
  71. data/vendor/components/indefinido-indemma/src/lib/record/validations/validatorable.coffee +5 -0
  72. data/vendor/components/indefinido-indemma/src/spec/record/restfulable_spec.coffee +8 -0
  73. data/vendor/components/indefinido-indemma/src/spec/record/validatable_spec.coffee +4 -4
  74. data/vendor/components/indefinido-indemma/src/spec/record/validations/associated_spec.coffee +2 -2
  75. metadata +9 -3
  76. data/lib/assets/javascripts/aura/extensions/rivets/formatters.js.coffee~ +0 -0
@@ -1,95 +1,118 @@
1
- #= require require/require
2
- #= require build
3
- # TODO Move this file outside the initializers folder
4
-
5
1
  root = exports ? this
6
2
 
7
- # if jQuery is already included in the default build, we need to load
8
- # it and globalize it, because aurajs does not know we are using
9
- # component.io loader and thinks jquery must be shipped within it
10
- # TODO think in away to not use a global jquery
11
- # try
12
- # root.jQuery = root.$ = require 'component-jquery'
13
- # catch e
14
- # jQuery was not included in the component build, soo the application will fallback to the
15
- # jquery builded in aurajs
16
-
17
- define 'jquery', [], -> require 'component-jquery'
18
- root.jQuery = root.$ = require 'component-jquery'
19
-
20
- # This may be included in build, and loaded before aurajs requires for them
21
- # TODO also preload underscorejs
22
- # define 'underscore', require 'lodash'
23
- # TODO also preload eventemitter2
24
- # TODO also preload require-jstext
25
-
26
- # TODO!! Try to improve requirejs and components require integrationod
27
-
28
- # Little object class to merge component require and requirejs require
29
- loader =
30
- shim: ->
31
- # Store loaders functions
32
- loader.loaders.component = require
33
- loader.loaders.requirejs = requirejs
34
- loader.activate.define = root.define
35
-
36
- # Expand require fuction with requirejs configurations
37
- # so we can require without great problems
38
- loader.require.config = requirejs.config
39
- loader.require.s = requirejs.s
40
-
41
- initialize: ->
42
- extend = require 'segmentio-extend'
43
- extend loader.require, require
44
-
45
- # Override global require for ower one
46
- root.require = loader.require
47
- root.loader = loader
48
-
49
- # Resource loaders compatibility
50
- loaders:
51
- requirejs : null
52
- component : null
53
- discovered: null
54
-
55
- discover: (params...) ->
56
-
57
- if params[0] instanceof Array
58
- requirer = 'requirejs'
59
- else
60
- requirer = 'component'
61
-
62
- @activate (requirer) and requirer
63
-
64
- activate: (requirer) ->
65
- switch requirer
66
- when 'component'
67
- root.define = null
68
- when 'requirejs'
69
- root.define = @activate.define
3
+ # Prevent aura from defining jquery erroniously
4
+ define 'jquery' , ['config/load_components'], -> require 'component-jquery'
5
+ # TODO define 'underscore', ['config/load_components'], -> require 'lodash'
6
+
7
+ # TODO figure out how to use rjs optmizer to include component builds
8
+ # Use call method to avoid optmization at all
9
+ define 'ende_components', ['ende_build'], {}
10
+ define 'application_components', ['ende_components', 'build'], {}
11
+
12
+ requirejs.config
13
+ shim:
14
+ build:
15
+ # FIXME check that the build was loaded in a more elegant way
16
+ # probably create a undefined plug-in for component builder
17
+ exports: 'require.modules.seminovos/vendor/loaded'
18
+ deps: ['ende_build']
19
+ ende_build:
20
+ exports: 'require.register'
21
+
22
+ # In order to start, application and ende components must be loaded
23
+ define 'config/load_components', ['application_components'], ->
24
+
25
+ # TODO remove and use r.js optmizer wrapShim option, when
26
+ # optimizer gets updated
27
+ define 'jquery.inview' , ['jquery'], ->
28
+ require 'ened/vendor/assets/javascripts/jquery/inview.js'
29
+
30
+ define 'jquery.mask' , ['jquery'], ->
31
+ inner_lazy_require = 'ened/vendor/assets/javascripts/jquery/inputmask.js'
32
+ require inner_lazy_require
33
+
34
+ define 'jquery.mask_extensions' , ['jquery'], ->
35
+ inner_lazy_require = 'ened/vendor/assets/javascripts/jquery/inputmask.extensions.js'
36
+ require inner_lazy_require
37
+
38
+ define 'jquery.mask_numeric_extensions' , ['jquery'], ->
39
+ inner_lazy_require = 'ened/vendor/assets/javascripts/jquery/inputmask.numeric.extensions.js'
40
+ require inner_lazy_require
41
+
42
+ # Object.defineProperty window, 'jQuery',
43
+ # get: -> require 'component-jquery'
44
+ # set: -> debugger
45
+
46
+ # This may be included in build, and loaded before aurajs requires for them
47
+ # TODO also preload eventemitter2
48
+ # TODO also preload require-jstext
49
+
50
+ # Little object class to merge component require and requirejs require
51
+ loader =
52
+ shim: ->
53
+ # Store loaders functions
54
+ loader.loaders.component = require
55
+ loader.loaders.requirejs = requirejs
56
+ loader.activate.define = root.define
57
+
58
+ # Expand require fuction with requirejs configurations
59
+ # so we can require without great problems
60
+ loader.require.config = requirejs.config
61
+ loader.require.s = requirejs.s
62
+
63
+ initialize: ->
64
+ with_component = 'segmentio-extend'
65
+ extend = require with_component
66
+ extend loader.require, require
67
+
68
+ # Override global require for ower one
69
+ root.require = loader.require
70
+ root.loader = loader
71
+
72
+ # Resource loaders compatibility
73
+ loaders:
74
+ requirejs : null
75
+ component : null
76
+ discovered: null
77
+
78
+ discover: (params...) ->
79
+
80
+ if params[0] instanceof Array
81
+ requirer = 'requirejs'
70
82
  else
71
- false
83
+ requirer = 'component'
72
84
 
73
- @loaders.discovered = @loaders[requirer]
85
+ @activate (requirer) and requirer
74
86
 
75
- true
87
+ activate: (requirer) ->
88
+ switch requirer
89
+ when 'component'
90
+ root.define = null
91
+ when 'requirejs'
92
+ root.define = @activate.define
93
+ else
94
+ false
76
95
 
77
- require: (params...) ->
78
- using = loader.discover params...
96
+ @loaders.discovered = @loaders[requirer]
79
97
 
80
- try
98
+ true
81
99
 
82
- module = loader.loaders.discovered.apply @, params
100
+ require: (params...) ->
101
+ using = loader.discover params...
83
102
 
84
- catch e
85
- console.warn 'Failed to load \'', params[0], "' with #{using}: Error: '", e.message, '\'. Trying with requirejs.'
86
- loader.activate 'requirejs'
87
- module = loader.loaders.discovered.apply @, params unless module
103
+ try
104
+
105
+ module = loader.loaders.discovered.apply @, params
88
106
 
89
- # Always let requirjs active by default
90
- loader.activate 'requirejs'
107
+ catch e
108
+ console.warn 'Failed to load \'', params[0], "' with #{using}: Error: '", e.message, '\'. Trying with requirejs.'
109
+ loader.activate 'requirejs'
110
+ module = loader.loaders.discovered.apply @, params unless module
111
+
112
+ # Always let requirjs active by default
113
+ loader.activate 'requirejs'
91
114
 
92
- module
115
+ module
93
116
 
94
- loader.shim()
95
- loader.initialize()
117
+ loader.shim()
118
+ loader.initialize()
@@ -1,4 +1,13 @@
1
- #= require ende_build
2
- #= require config/load_components
3
- #= require_tree ./config/initializers
4
- # TODO think if require jquery and jquery inview in this place is actualy a good idead
1
+ # TODO think if require jquery and jquery inview in this place is actualy a good idead
2
+
3
+ # TODO use requirejs alias / packing modules definition for this
4
+ define 'ende', ['config/load_components', 'config/initializers'], ->
5
+
6
+ # Override defaults components definition
7
+ # TODO better way to forward component modules to application
8
+ define 'observable', [], -> require("indefinido-observable").mixin
9
+ define 'advisable' , [], -> require("indefinido-advisable").mixin
10
+
11
+ # TODO FIX THIS!
12
+ require.register('observable', (r, e, module) -> module.exports = require("indefinido-observable").mixin)
13
+ require.register('advisable' , (r, e, module) -> module.exports = require("indefinido-advisable").mixin )
@@ -1,6 +1,7 @@
1
1
  'use strict'
2
- define ->
3
- observable = require('observable').mixin
2
+
3
+ lazy_require = 'observable'
4
+ define [lazy_require], (observable) ->
4
5
 
5
6
  (authenticator, recoverer, base) ->
6
7
 
@@ -84,9 +84,13 @@ define ->
84
84
  initialize: (options) ->
85
85
  @sandbox.logger.log "initialized!"
86
86
 
87
- # TODO integrate component and requirejs
88
- dialog = require('dialog').Dialog
89
- overlay = require 'component-overlay'
87
+ # TODO integrate component and requirejs in a more consize way
88
+ with_component = 'dialog'
89
+ dialog = require(with_component).Dialog
90
+
91
+ with_component = 'component-overlay'
92
+ overlay = require with_component
93
+
90
94
  @sandbox.util.extend dialog.prototype, dialog_extensions
91
95
 
92
96
  # Initialize fundamental style
@@ -1,8 +1,7 @@
1
- # TODO bettter require
2
- stampit = require 'indefinido-indemma/vendor/stampit.js'
3
- observable = require('observable').mixin
1
+ 'use strict';
4
2
 
5
- define ->
3
+ lazy_require = 'observable'
4
+ define ['stampit/stampit', lazy_require], (stampit, observable) ->
6
5
 
7
6
  handlers =
8
7
  adapter_loaded: (composable) ->
@@ -1,17 +1,13 @@
1
1
  'use strict';
2
2
 
3
+ lazy_requires = ['observable', 'advisable']
3
4
  define [
4
5
  './states/index',
5
6
  './presenters/default',
6
- './presenters/default',
7
- '/assets/jquery/inview',
8
- 'stampit/stampit'], (templates, presenter, inview, stampit) ->
9
-
10
- observable = require('observable').mixin
11
- advisable = require('advisable').mixin
12
-
13
- # TODO define componentjs required packages, as requirejs packages
14
- stampit ||= require 'stampit/stampit'
7
+ 'jquery.inview',
8
+ 'stampit/stampit',
9
+ lazy_requires[0],
10
+ lazy_requires[1]], (templates, presenter, inview, stampit, observable, advisable) ->
15
11
 
16
12
  scopable = (widget) ->
17
13
  deferred = widget.sandbox.data.deferred()
@@ -129,32 +125,7 @@ define [
129
125
  viewed: (event, in_view, horizontal, vertical) ->
130
126
  boo[if in_view then 'pride' else 'shame'] event.target
131
127
 
132
-
133
- # TODO Move each handler to independent features
134
- handleable = stampit
135
- handleables:
136
- item:
137
- hover: (event, models) ->
138
- if event.type == 'mouseenter'
139
- @hover models.item
140
- else if event.type == 'mouseleave'
141
- @hover null
142
- else
143
- throw new TypeError 'viewer.handlers.hover: Event type incompatible with hovering.'
144
-
145
- clicked: (event, models) -> @select models.item
146
-
147
- , {}, ->
148
-
149
- throw new TypeError "Widget property is mandatory for handleable stamp" unless @widget?
150
-
151
- @handlers =
152
- item:
153
- clicked: $.proxy @handleables.item.clicked, @widget
154
- hover : $.proxy @handleables.item.hover , @widget
155
-
156
- @
157
- version: '0.2.4'
128
+ version: '0.2.1'
158
129
 
159
130
  # TODO better separation of concerns
160
131
  # TODO Current remote page that is beign displayed
@@ -185,16 +156,8 @@ define [
185
156
  # We extend presentation.selected just to assign all values of the item model
186
157
  # TODO call presenter to do this job
187
158
  @sandbox.util.extend @presentation.selected , item.model.json?() || item.model
188
-
189
- # TODO change paramters to item, item.model
190
159
  @sandbox.emit "viewer.#{@identifier}.selected", item.model
191
160
 
192
- # Called when hover in and out from model
193
- hover: (item) ->
194
- # TODO call presenter to do this job
195
- # @sandbox.util.extend @presentation.hovered , item.model.json?() || item.model
196
- @sandbox.emit "viewer.#{@identifier}.hovered", item, item && item.model
197
-
198
161
  scope_to: (scope, child_scope) ->
199
162
  # Singuralize in order to accept association scopes, since
200
163
  # association scopes return almost the same kind as of it's
@@ -202,14 +165,16 @@ define [
202
165
  sent_scope = @inflector.singularize scope.resource.toString()
203
166
  current_scope = @inflector.singularize @scope.resource.toString()
204
167
 
205
- deferred = @sandbox.data.deferred()
206
-
207
168
  if sent_scope != current_scope
208
169
  throw new TypeError "Invalid scope sent to viewer@#{@identifier} sent: '#{sent_scope}', expected: '#{current_scope}'"
209
170
 
210
171
  # For sobsequent usages we must store the scope
211
172
  @scope = scope
212
173
 
174
+ # TODO better hierachical event distribution
175
+ for { _widget: widget } in @sandbox._children?
176
+ widget.scope_to? child_scope
177
+
213
178
  @sandbox.emit "viewer.#{@identifier}.scope_changed", @scope
214
179
 
215
180
  # TODO better scope data binding, and updating
@@ -219,15 +184,6 @@ define [
219
184
 
220
185
  @repopulate()
221
186
 
222
- # TODO rename this method
223
- # TODO also move this to an external tag
224
- statused: (status) ->
225
- if status
226
- @status = status
227
- @sandbox.emit "viewer.#{@identifier}.status_changed", status
228
- else
229
- @status
230
-
231
187
  repopulate: ->
232
188
  unless @fetching?
233
189
  if @load?
@@ -238,10 +194,9 @@ define [
238
194
 
239
195
  # TODO store spinner instance, instead of creating a new one every time
240
196
  unless @load?
241
- @load = @sandbox.ui.loader @$results
197
+ @load = @sandbox.ui.loader @$el.find '.results .items'
242
198
 
243
199
  # TODO implement status for viewer widget
244
- @statused 'loading'
245
200
  @$el.addClass 'idle'
246
201
  @$el.removeClass 'loading'
247
202
 
@@ -276,7 +231,6 @@ define [
276
231
 
277
232
  @fetching.always =>
278
233
  # TODO implement status for viewer widget
279
- @statused 'loading'
280
234
  @$el.addClass 'idle'
281
235
  @$el.removeClass 'loading'
282
236
 
@@ -285,11 +239,12 @@ define [
285
239
  @load = null
286
240
 
287
241
 
288
- populate: ->
289
- @load = @sandbox.ui.loader @$el
242
+ populate: (handlers) ->
243
+ sandbox = @sandbox
244
+
245
+ @load = @sandbox.ui.loader @$results
290
246
 
291
247
  # TODO implement status for viewer widget
292
- @statused 'loading'
293
248
  @$el.removeClass 'idle'
294
249
  @$el.addClass 'loading'
295
250
 
@@ -314,12 +269,9 @@ define [
314
269
 
315
270
  @load.stop()
316
271
 
317
- # TODO do not send records as parameter
318
- @presentation = @presenter records, @scope, @handleable
272
+ @presentation = @presenter records, @scope
319
273
 
320
- # Initialize elements
321
274
  @$el.html templates[@options.resource]
322
- @$results = @$el.find '.results .items'
323
275
 
324
276
  if records.length
325
277
  # boo.initialize @$el.find '.results .items'
@@ -346,7 +298,7 @@ define [
346
298
 
347
299
 
348
300
  plugins: (options) ->
349
- deferreds = [@]
301
+ deferreds = []
350
302
 
351
303
  deferreds.push paginable widget: @ if options.page
352
304
  deferreds.push scrollable widget: @ if options.scroll
@@ -357,7 +309,6 @@ define [
357
309
  # TODO move this method to an extension
358
310
  syncronize_children: ->
359
311
  @sandbox._children ||= []
360
- @sandbox._widget ||= @
361
312
 
362
313
  # Add possible new childs
363
314
  @constructor.startAll(@$el).done (widgets...) =>
@@ -367,12 +318,6 @@ define [
367
318
 
368
319
  @sandbox._children = @sandbox._children.concat widgets
369
320
 
370
- for widget in widgets
371
- # TODO emit this event only when all siblings have initialized
372
- @sandbox.emit "#{widget.name}.#{widget.identifier}.siblings_initialized", @sandbox._children
373
-
374
- true
375
-
376
321
  # TODO better internal aura widget selection
377
322
  # Prevent other child to be instantiated
378
323
  @$el.find('[data-aura-widget]').each (i, element) ->
@@ -456,56 +401,43 @@ define [
456
401
  initialize: (options) ->
457
402
  # TODO import core extensions in another place
458
403
  @resource = @sandbox.resource options.resource
459
- @scope = @resource
460
-
461
- # Instantiate it's on handleable factory
462
- widget = @
463
- widgetable = stampit().enclose -> @widget = widget; @
464
- @handleable = stampit.compose widgetable, handleable
404
+ @scope = model = @resource
465
405
 
466
406
  {sandbox: {util: {@inflector}}} = @
467
407
 
468
408
  @sandbox.on "viewer.#{@identifier}.scope", @scope_to, @
469
409
 
470
- # Initalize plugins
471
- # TODO think how to implement plugins api
410
+ # Iniitalize plugins
472
411
  loading = @plugins options
473
412
 
474
- @statused 'idle'
475
413
  @$el.addClass "viewer widget #{@inflector.cssify @identifier} idle clearfix"
476
414
 
477
- loading.done (widget) ->
478
- widget.require_custom options.resource
479
-
480
- # TODO externalize this code to an extension
481
- require_custom: (resource) ->
482
- deferred = @sandbox.data.deferred()
415
+ loading.done => @require_custom options
483
416
 
417
+ require_custom: (options) ->
484
418
  # Fetch custom templates
485
419
  # TODO better custom templates structure and custom presenter
486
420
  # TODO better segregation of concerns on this code
487
421
  # TODO handle case where custom presenter does not exist!
488
422
  require [
489
- "text!./widgets/viewer/templates/default/#{resource}.html"
490
- "./widgets/viewer/presenters/#{resource}"
423
+ "text!./widgets/viewer/templates/default/#{options.resource}.html"
424
+ "./widgets/viewer/presenters/#{options.resource}"
491
425
  ], (custom_default_template, custom_presenter) =>
492
426
 
493
- unless presenter.hasOwnProperty 'handlers'
494
- Object.defineProperty presenter, 'handlers',
495
- get: -> throw new Error "presenter.hanlder is deprecated, please compose upon handleable"
496
- set: -> throw new Error "presenter.hanlder is deprecated, please compose upon handleable"
427
+ # TODO Better way to preserve widgets handlers
428
+ handlers =
429
+ item:
430
+ clicked: (event, models) =>
431
+ @select models.item
497
432
 
498
- custom_default_template and templates[resource] = custom_default_template
499
- @presenter = @sandbox.util.extend custom_presenter, presenter if custom_presenter
433
+ presenter.handlers = handlers
500
434
 
501
- # Fetch default data
502
- @populate()
435
+ custom_default_template and templates[options.resource] = custom_default_template
436
+ @presenter = @sandbox.util.extend custom_presenter, presenter if custom_presenter
503
437
 
504
- deferred.resolveWith @, [resource]
438
+ @$results = @$el.find '.results .items'
505
439
 
506
- , (error) =>
507
- # TODO handle other status codes with xhr error
508
- @sandbox.logger.error "Error when loading presenter and template for resource '#{resource}':\n\n", error.message + "\n\n", error
509
- deferred.rejectWith @, arguments
440
+ # Fetch default data
441
+ @populate handlers
510
442
 
511
- deferred
443
+ true
@@ -3,10 +3,8 @@
3
3
  # TODO implement default presenter
4
4
  # define ['aura/presenterable'], (presenterable) ->
5
5
  # presenterable()
6
- # TODO move observable to requirejs
7
- observable = require('observable').mixin
8
-
9
- define ['stampit/stampit'], (stampit) ->
6
+ lazy_require = 'observable'
7
+ define ['stampit/stampit', lazy_require], (stampit, observable) ->
10
8
 
11
9
  itemable = stampit().enclose -> observable @
12
10
 
data/lib/ende/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Ende
2
- VERSION = "0.3.13"
2
+ VERSION = "0.4.0"
3
3
  end