ende 0.3.1 → 0.3.2

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 0969aad723eb6466010bbb9eb7a27eac744e55d9
4
- data.tar.gz: ac27b1c89fc77ae142fd3b13e1b12aef4ca51bd6
3
+ metadata.gz: bb1613e062a3e54de98840f579455b3f0f40e6f1
4
+ data.tar.gz: e54b6e9c72d7fca5a89cb08d1ffd897e85dba482
5
5
  SHA512:
6
- metadata.gz: 89fe2cc7c38f0405f9808f6e9e2ce6ec9192e867ed87cce78c281d78626550e956e46d657d3a6f0e7f4ea496c32335addf616fde99e894ffed1a0ac824c83850
7
- data.tar.gz: 680535f8a45ac308e2f3a5c8a349c908d16150616f1fde983929a0aaea27ea0e6559e4a546cca22b17098edfe8180fc2c34997da82ce3b55aebc5df5a22259a7
6
+ metadata.gz: 711ef07535c5cf8325fd6ffbe02c5bd741f9b7be6b977771577d50af5f806f10af905ad094988b1d8c046fcd3d80c57a383ecd6818bafb9ed5fe95f0b099bb12
7
+ data.tar.gz: 34515cb01be277154400b9950759ded82a462841bb4e80bb31afc0334ab768b7527b516c63bc771da76adf5bf81f61c843871e1777764b97a3a2b675d0efa7cd
@@ -255,7 +255,7 @@ define 'aura/extensions/rivets', ->
255
255
  presented = presentation.presented
256
256
  delete presentation.presented
257
257
 
258
- @view = rivets.bind @$el, presentation, options
258
+ @sandbox._view = @view = rivets.bind @$el, presentation, options
259
259
 
260
260
  presented(@view) if presented?
261
261
 
@@ -3,10 +3,19 @@
3
3
  define [
4
4
  './states/index',
5
5
  './presenters/default',
6
+ './presenters/default',
6
7
  '/assets/jquery/inview',
7
8
  'stampit/stampit'], (templates, presenter, inview, stampit) ->
8
9
 
9
- observable = require('indefinido-observable').mixin
10
+ observable = require('indefinido-observable').mixin
11
+
12
+ # TODO define componentjs required packages, as requirejs packages
13
+ stampit ||= require 'stampit/stampit'
14
+
15
+ scopable = (widget) ->
16
+ # TODO add widget plug-in as an extension for a widget
17
+ require ['widgets/viewer/plugins/scopable'], (scopable) ->
18
+ scopable widget
10
19
 
11
20
  paginable = stampit
12
21
  flip_to: (page) ->
@@ -200,6 +209,9 @@ define [
200
209
  @$el.addClass 'empty'
201
210
  @$el.removeClass 'filled'
202
211
 
212
+ # Start widgets that may have been created by bindings
213
+ @sandbox.start @$el
214
+
203
215
  @sandbox.emit "viewer.#{@identifier}.populated", records
204
216
 
205
217
  @fetching.always =>
@@ -244,8 +256,7 @@ define [
244
256
 
245
257
  @presentation = @presenter records
246
258
 
247
- @html templates[@options.resource]
248
-
259
+ @$el.html templates[@options.resource]
249
260
 
250
261
  if records.length
251
262
  # boo.initialize @$el.find '.results .items'
@@ -254,8 +265,12 @@ define [
254
265
  @$el.addClass 'empty'
255
266
 
256
267
  # TODO move binders to application
268
+ @inherit_parent_presentation()
257
269
  @bind @presentation, @presenter.presentation
258
270
 
271
+ # Start widgets that may have been created by bindings
272
+ @sandbox.start @$el
273
+
259
274
  @handles 'click', 'back', '.back'
260
275
 
261
276
  @sandbox.emit "viewer.#{@identifier}.populated", records
@@ -270,6 +285,38 @@ define [
270
285
 
271
286
  paginable widget: @ if options.page
272
287
  scrollable widget: @ if options.scroll
288
+ scopable @ if options.scope or options.scopable
289
+
290
+ # TODO listen for future parent presentation changes
291
+ inherit_parent_presentation: ->
292
+ return unless view = @sandbox?._parent?._view
293
+
294
+ isDescendant = (parent, child) ->
295
+ node = child.parentNode
296
+
297
+ while (node != null)
298
+ return true if (node == parent)
299
+ node = node.parentNode
300
+
301
+ false
302
+
303
+ models = {}
304
+ # Copy default models
305
+ # TODO think if its a good idea to notify about model name conflicts
306
+ for name, model of view.models
307
+ @presentation[name] ||= model # By default do not child models with parent models
308
+
309
+ for binding in view.bindings
310
+ # Copy each binding models
311
+ if binding.iterated
312
+ for view in binding.iterated
313
+ if isDescendant view.els[0], @$el.get(0)
314
+ for name, model of view.models
315
+ @presentation[name] ||= model
316
+
317
+ break
318
+
319
+ true
273
320
 
274
321
 
275
322
  initialize: (options) ->
@@ -0,0 +1,39 @@
1
+ 'use strict';
2
+
3
+ # TODO define componentjs required packages, as requirejs packages
4
+ observable = require('indefinido-observable').mixin
5
+
6
+ define ->
7
+ (widget) ->
8
+
9
+ widget = observable widget
10
+
11
+ # TODO transfer data from old scope to new one
12
+ # widget.subscribe 'scope', ->
13
+
14
+ enhance_presenter = (presenter) ->
15
+ widget = @
16
+ presenter.presentation ||= {binders: {}}
17
+ presenter.presentation.binders ||= {}
18
+
19
+ {presentation: {binders}} = presenter
20
+
21
+
22
+ binders['scope-*'] =
23
+ bind: ->
24
+ @scope_name = @args[0].replace /-/g, '_'
25
+ routine: (element, value) ->
26
+ widget.scope_to widget.scope[@scope_name] value
27
+
28
+ binders.scope =
29
+
30
+ routine: (element, value) ->
31
+ keypath = @keypath.substring 1 if @keypath[0] == '_'
32
+ name = "by_#{@key}_#{keypath || @keypath}"
33
+ widget.scope_to widget.scope[name] value
34
+
35
+ enhance_presenter.call widget, widget.presenter
36
+ widget.subscribe 'presenter', enhance_presenter
37
+
38
+
39
+
data/lib/ende/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Ende
2
- VERSION = "0.3.1"
2
+ VERSION = "0.3.2"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ende
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.1
4
+ version: 0.3.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Heitor Salazar
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-01-22 00:00:00.000000000 Z
11
+ date: 2014-01-23 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -110,6 +110,7 @@ files:
110
110
  - lib/assets/javascripts/widgets/support/main.js.coffee
111
111
  - lib/assets/javascripts/widgets/tray/main.js.coffee
112
112
  - lib/assets/javascripts/widgets/viewer/main.js.coffee
113
+ - lib/assets/javascripts/widgets/viewer/plugins/scopable.js.coffee
113
114
  - lib/assets/javascripts/widgets/viewer/presenters/default.js.coffee
114
115
  - lib/assets/javascripts/widgets/viewer/states/default.html
115
116
  - lib/assets/javascripts/widgets/viewer/states/index.js.coffee