ende 0.3.1 → 0.3.2

Sign up to get free protection for your applications and to get access to all the features.
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