ende 0.4.25 → 0.5.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (87) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +3 -2
  3. data/component.json +0 -1
  4. data/lib/assets/javascripts/aura/extensions/domain.js.coffee +55 -0
  5. data/lib/assets/javascripts/aura/extensions/models.js.coffee.erb +13 -4
  6. data/lib/assets/javascripts/aura/extensions/platform.js.coffee +8 -2
  7. data/lib/assets/javascripts/aura/extensions/rivets.js.coffee +10 -21
  8. data/lib/assets/javascripts/aura/extensions/stamps/stampit.js +242 -568
  9. data/lib/assets/javascripts/aura/extensions/widget/composable.js.coffee +18 -35
  10. data/lib/assets/javascripts/config/load_components.js.coffee +7 -5
  11. data/lib/assets/javascripts/widgets/attachable/main.js.coffee +77 -0
  12. data/lib/assets/javascripts/widgets/list/presenter.js.coffee +4 -5
  13. data/lib/assets/javascripts/widgets/support/adapters/olark.js +1 -1
  14. data/lib/assets/javascripts/widgets/tray/main.js.coffee +22 -16
  15. data/lib/assets/javascripts/widgets/viewer/main.js.coffee +4 -8
  16. data/lib/assets/javascripts/widgets/viewer/plugins/scopable.js.coffee +1 -7
  17. data/lib/ende/version.rb +1 -1
  18. data/vendor/assets/components/ende_build.js +463 -5150
  19. data/vendor/components/indefinido-indemma/build/development.js +2 -2
  20. data/vendor/components/indefinido-indemma/build/release.js +4 -5
  21. data/vendor/components/indefinido-indemma/build/test.js +2 -2
  22. data/vendor/components/indefinido-indemma/component.json +1 -0
  23. data/vendor/components/indefinido-indemma/lib/record/restfulable.js +2 -3
  24. data/vendor/components/indefinido-indemma/lib/record/validatable.js +2 -2
  25. data/vendor/components/indefinido-indemma/src/lib/record/restfulable.coffee +3 -9
  26. data/vendor/components/indefinido-indemma/src/lib/record/validatable.coffee +3 -3
  27. data/vendor/components/indefinido-observable/component.json +3 -7
  28. data/vendor/components/indefinido-observable/lib/observable.js +19 -9
  29. metadata +4 -60
  30. data/build/build.css +0 -111
  31. data/vendor/assets/javascripts/stampit/stampit.js +0 -392
  32. data/vendor/components/indefinido-observable/.gitignore +0 -15
  33. data/vendor/components/indefinido-observable/.ruby-gemset +0 -1
  34. data/vendor/components/indefinido-observable/.ruby-version +0 -1
  35. data/vendor/components/indefinido-observable/Gemfile +0 -13
  36. data/vendor/components/indefinido-observable/Guardfile +0 -39
  37. data/vendor/components/indefinido-observable/History.md +0 -0
  38. data/vendor/components/indefinido-observable/Readme.md +0 -116
  39. data/vendor/components/indefinido-observable/build/build.js +0 -14798
  40. data/vendor/components/indefinido-observable/build/development.js +0 -339
  41. data/vendor/components/indefinido-observable/build/release.js +0 -14937
  42. data/vendor/components/indefinido-observable/build/test.js +0 -339
  43. data/vendor/components/indefinido-observable/components/chaijs-chai/component.json +0 -46
  44. data/vendor/components/indefinido-observable/components/chaijs-chai/index.js +0 -1
  45. data/vendor/components/indefinido-observable/components/chaijs-chai/lib/chai/assertion.js +0 -132
  46. data/vendor/components/indefinido-observable/components/chaijs-chai/lib/chai/core/assertions.js +0 -1270
  47. data/vendor/components/indefinido-observable/components/chaijs-chai/lib/chai/error.js +0 -60
  48. data/vendor/components/indefinido-observable/components/chaijs-chai/lib/chai/interface/assert.js +0 -1060
  49. data/vendor/components/indefinido-observable/components/chaijs-chai/lib/chai/interface/expect.js +0 -12
  50. data/vendor/components/indefinido-observable/components/chaijs-chai/lib/chai/interface/should.js +0 -76
  51. data/vendor/components/indefinido-observable/components/chaijs-chai/lib/chai/utils/addChainableMethod.js +0 -94
  52. data/vendor/components/indefinido-observable/components/chaijs-chai/lib/chai/utils/addMethod.js +0 -37
  53. data/vendor/components/indefinido-observable/components/chaijs-chai/lib/chai/utils/addProperty.js +0 -40
  54. data/vendor/components/indefinido-observable/components/chaijs-chai/lib/chai/utils/eql.js +0 -124
  55. data/vendor/components/indefinido-observable/components/chaijs-chai/lib/chai/utils/flag.js +0 -32
  56. data/vendor/components/indefinido-observable/components/chaijs-chai/lib/chai/utils/getActual.js +0 -19
  57. data/vendor/components/indefinido-observable/components/chaijs-chai/lib/chai/utils/getEnumerableProperties.js +0 -25
  58. data/vendor/components/indefinido-observable/components/chaijs-chai/lib/chai/utils/getMessage.js +0 -49
  59. data/vendor/components/indefinido-observable/components/chaijs-chai/lib/chai/utils/getName.js +0 -20
  60. data/vendor/components/indefinido-observable/components/chaijs-chai/lib/chai/utils/getPathValue.js +0 -102
  61. data/vendor/components/indefinido-observable/components/chaijs-chai/lib/chai/utils/getProperties.js +0 -35
  62. data/vendor/components/indefinido-observable/components/chaijs-chai/lib/chai/utils/index.js +0 -108
  63. data/vendor/components/indefinido-observable/components/chaijs-chai/lib/chai/utils/inspect.js +0 -316
  64. data/vendor/components/indefinido-observable/components/chaijs-chai/lib/chai/utils/objDisplay.js +0 -48
  65. data/vendor/components/indefinido-observable/components/chaijs-chai/lib/chai/utils/overwriteMethod.js +0 -51
  66. data/vendor/components/indefinido-observable/components/chaijs-chai/lib/chai/utils/overwriteProperty.js +0 -54
  67. data/vendor/components/indefinido-observable/components/chaijs-chai/lib/chai/utils/test.js +0 -26
  68. data/vendor/components/indefinido-observable/components/chaijs-chai/lib/chai/utils/transferFlags.js +0 -44
  69. data/vendor/components/indefinido-observable/components/chaijs-chai/lib/chai/utils/type.js +0 -45
  70. data/vendor/components/indefinido-observable/components/chaijs-chai/lib/chai.js +0 -79
  71. data/vendor/components/indefinido-observable/components/cjohansen-sinon/sinon.js +0 -4290
  72. data/vendor/components/indefinido-observable/components/component-jquery/component.json +0 -14
  73. data/vendor/components/indefinido-observable/components/component-jquery/index.js +0 -9601
  74. data/vendor/components/indefinido-observable/components/kapit-observe-shim/component.json +0 -11
  75. data/vendor/components/indefinido-observable/components/kapit-observe-utils/component.json +0 -13
  76. data/vendor/components/indefinido-observable/karma.conf.js +0 -92
  77. data/vendor/components/indefinido-observable/spec/legacy/observable_spec.js +0 -126
  78. data/vendor/components/indefinido-observable/spec/observable_spec.js +0 -92
  79. data/vendor/components/indefinido-observable/spec/spec_helper.js +0 -8
  80. data/vendor/components/indefinido-observable/spec/vendor/accessors_spec.js +0 -63
  81. data/vendor/components/indefinido-observable/src/lib/adapters/rivets.js.coffee +0 -15
  82. data/vendor/components/indefinido-observable/src/spec/legacy/observable_spec.coffee +0 -132
  83. data/vendor/components/indefinido-observable/src/spec/observable_spec.coffee +0 -85
  84. data/vendor/components/indefinido-observable/src/spec/spec_helper.coffee +0 -5
  85. data/vendor/components/indefinido-observable/src/spec/vendor/accessors_spec.coffee +0 -59
  86. data/vendor/components/indefinido-observable/vendor/spec/boot.js +0 -104
  87. data/vendor/components/indefinido-observable/vendor/spec/jasmine.js +0 -2054
@@ -32,7 +32,6 @@ define 'aura/extensions/widget/composable', ->
32
32
  for advice in advices
33
33
 
34
34
  # in order to preserve declaration order, we must reverse the callbacks order
35
- # TODO rename advice.name to advice.type
36
35
  advice.callbacks.reverse() if advice.name == 'before'
37
36
 
38
37
  # Advice with all callbacks
@@ -43,44 +42,28 @@ define 'aura/extensions/widget/composable', ->
43
42
  advisor.advisable = (factory) ->
44
43
  original = factory.compose
45
44
 
46
- compose_advices = (advices, composed_advices = {}) ->
47
- for advice in advices
48
- composed_advices[advice.key] ||= []
49
- composed_advices[advice.key] = composed_advices[advice.key].concat advice.callbacks
50
-
51
- composed_advices
52
-
53
- composable_advices = (stamps...) ->
54
- advices = []
55
- for stamped in stamps
56
- {fixed: {methods: stamp_methods}} = stamped
57
- advices = advices.concat extract_advices stamp_methods
45
+ stamp.mixIn factory,
46
+ compose: (stamps...) ->
47
+ {fixed: {methods: composition_methods}} = @composition
48
+ advices = extract_advices composition_methods
58
49
 
59
- # Create a ultimate stamp with all advices arrays or functions
60
- # merged, that will ultimatly override the prototype chain
61
- # definitions
62
- #
63
- # TODO do not store advices definitions in the prototype chain
64
- stamps.push stamp compose_advices advices
50
+ for stamped in stamps
51
+ {fixed: {methods: stamp_methods}} = stamped
52
+ advices = advices.concat extract_advices stamp_methods
65
53
 
66
- stamps
54
+ adviced_stamp = {}
55
+ for advice in advices
56
+ adviced_stamp[advice.key] ||= []
57
+ adviced_stamp[advice.key] = adviced_stamp[advice.key].concat advice.callbacks
67
58
 
68
- # Move current factory composition advices to a composable form
69
- # {fixed: {methods: composition_methods}} = factory.composition
70
- # compose_advices extract_advices(composition_methods), composition_methods
59
+ # Create a ultimate stamp with all advices arrays or functions merged
60
+ # TODO do not store advices definitions in the prototype chain
61
+ stamps.push stamp adviced_stamp
71
62
 
72
- stamp.mixIn factory,
73
- compose: (stamps...) ->
74
- stamps.unshift factory.composition
75
- original.apply factory, composable_advices stamps...
63
+ original.apply factory, stamps
76
64
 
77
65
  advice: advisor.advice
78
66
 
79
-
80
- composable = advisor.composable
81
- advisor.composable = ->
82
- advisor.advisable composable.apply advisor, arguments
83
-
84
67
  advisor
85
68
 
86
69
  composerable = (compositor) ->
@@ -120,8 +103,8 @@ define 'aura/extensions/widget/composable', ->
120
103
  methods = extend methods, fixed.methods, definition_methods or definition
121
104
  state = extend state , fixed.state , definition_state
122
105
 
123
- initializers = initializers.concat fixed.enclose if fixed.enclose
124
- initializers = initializers.concat definition.enclose if definition.enclose
106
+ initializers.push fixed.enclose if fixed.enclose
107
+ initializers.push definition.enclose if definition.enclose
125
108
 
126
109
  enclosed = (properties) ->
127
110
  initializers.forEach (initializer) => initializer.call @, properties
@@ -138,7 +121,7 @@ define 'aura/extensions/widget/composable', ->
138
121
 
139
122
  {core: {Widgets, util: {extend}, stamp}} = application
140
123
 
141
- Widgets = advisorable composerable Widgets
124
+ Widgets = composerable advisorable Widgets
142
125
 
143
126
  # THINK how to at the same time respect aura ways of instantiating
144
127
  # widgets and preserve widget logic composability
@@ -26,6 +26,8 @@ define 'modernizr' , ['config/load_components'], ->
26
26
  require 'modernizr'
27
27
  window.Modernizr
28
28
 
29
+ define 'rivets', ['config/load_components'], -> require 'rivets'
30
+
29
31
  # TODO define 'underscore', ['config/load_components'], -> require 'lodash'
30
32
 
31
33
  # TODO figure out how to use rjs optmizer to include component builds
@@ -121,8 +123,8 @@ define 'config/load_components', ['application_components'], ->
121
123
  using = loader.discover params...
122
124
 
123
125
  try
124
-
125
- module = loader.loaders.discovered.apply @, params
126
+ # TODO rename mod to module
127
+ mod = loader.loaders.discovered.apply @, params
126
128
 
127
129
  catch e
128
130
  if e.require
@@ -132,15 +134,15 @@ define 'config/load_components', ['application_components'], ->
132
134
 
133
135
  # Since it failed to load with component, try to load with requirejs
134
136
  loader.activate 'requirejs'
135
- unless module
136
- module = loader.loaders.discovered.apply @, params
137
+ unless mod
138
+ mod = loader.loaders.discovered.apply @, params
137
139
  else
138
140
  throw e
139
141
 
140
142
  # Always let requirejs active by default
141
143
  loader.activate 'requirejs'
142
144
 
143
- module
145
+ mod
144
146
 
145
147
  loader.shim()
146
148
  loader.initialize()
@@ -0,0 +1,77 @@
1
+ define ->
2
+
3
+ # TODO create diferent type for non-ui composable widgets
4
+ # TODO think about how to make this widget dependent on eventable extension
5
+ # TODO move this widtet to an extension when element is stored in the sandbox
6
+ type: 'Base'
7
+
8
+ version: '0.1.0'
9
+
10
+ # TODO options: {state: 'reset' # Will preserve initial widget state }
11
+
12
+ initialize: (options) ->
13
+
14
+ @sandbox._attachments = []
15
+
16
+ @$el.addClass "widget #{@name} composing"
17
+
18
+ # TODO think how to extend widgets as a way of knowing all children have started
19
+ @compose_when_parent()
20
+
21
+ # TODO think how to extend widgets as a way of knowing all children have started
22
+ compose_when_parent: ->
23
+ @interval = setInterval =>
24
+ if @sandbox._parent?
25
+ @compose @sandbox._parent._widget
26
+ clearInterval @interval
27
+ , 800
28
+
29
+ # Create a widget type to replace @$el for a html comment
30
+ compose: (parent) ->
31
+ @parent = parent
32
+ parent_namespace = parent.name + '.' + parent.identifier
33
+
34
+ # TODO move to elementless widgets
35
+ @transform_into_elementless()
36
+
37
+ @sandbox.on "#{parent_namespace}.reattach", @reattach, @
38
+ @sandbox.on "#{parent_namespace}.detach" , @detach , @
39
+ @sandbox.on "#{parent_namespace}.attach" , @attach , @
40
+
41
+ transform_into_elementless: ->
42
+ serializable_options = _.omit @options, '$el', 'el', 'ref', '_ref', 'require', 'baseUrl'
43
+
44
+ marker = " #{@name}.#{@identifier} for #{@parent.name}.#{parent.identifier}"
45
+ marker += " with #{JSON.stringify serializable_options} "
46
+ node = document.createComment marker
47
+ @$el.replaceWith node
48
+
49
+ @$el = $ node
50
+
51
+ reattach: (selector) ->
52
+ @detach()
53
+ @attach selector
54
+
55
+ detach: ->
56
+ @sandbox.stopListening()
57
+ # TODO Support multiple deatachments events storage
58
+ current_events = @sandbox._events
59
+ @sandbox._events = @sandbox._attachments.shift() || []
60
+ @sandbox._attachments.push current_events
61
+
62
+ # TODO unbind and store jquery handlers
63
+ # TODO store element position in the attachment
64
+ @parent.$el.detach()
65
+
66
+ attach: (selector) ->
67
+ element = @sandbox.dom.find selector
68
+ @sandbox.logger.error "attach: No element found for #{selector} for attachment" unless element.length
69
+
70
+ # TODO Support multiple deatachments events storage
71
+ @sandbox._attachments.push @sandbox._events
72
+ @sandbox._events = @sandbox._attachments.shift() || []
73
+ @sandbox.startListening()
74
+
75
+ # TODO rebind jquery handlers
76
+ # TODO restore element position of the attachment
77
+ element.append @parent.$el
@@ -1,13 +1,13 @@
1
1
  'use strict'
2
- observable = require('indefinido-observable').mixin
3
2
 
4
- define (model) ->
3
+ define ->
5
4
 
6
5
  (items, luna) ->
7
6
 
8
7
  resource = items[0].resource
9
8
 
10
- searcher: observable
9
+ # TODO create view_model
10
+ searcher:
11
11
  query: ''
12
12
  search: (event, models) ->
13
13
 
@@ -22,8 +22,7 @@ define (model) ->
22
22
 
23
23
  false
24
24
 
25
- # TODO create view_model
26
- list: observable Object.create null,
25
+ list: Object.create null,
27
26
  resource:
28
27
  set: (resource) -> null
29
28
  get: -> resource
@@ -114,7 +114,7 @@ define(function () {
114
114
  update_user: function (user) {
115
115
  user.email && olark('api.visitor.updateEmailAddress', {emailAddress: user.email});
116
116
  user.name && olark('api.visitor.updateFullName' , {fullName: user.name});
117
- user.phone && olark('api.visitor.updatePhoneNumber' , {phoneNumber: user.phone});
117
+ user.phone.toString() && olark('api.visitor.updatePhoneNumber' , {phoneNumber: user.phone.toString()});
118
118
  // TODO rename user._id to user.id
119
119
  user._id && olark('api.visitor.updateCustomFields', {id: user._id});
120
120
  }
@@ -1,24 +1,22 @@
1
- define ->
1
+ 'use strict'
2
2
 
3
- 'use strict'
3
+ define
4
4
 
5
5
  type: 'Base'
6
6
 
7
7
  version: '0.1.2'
8
8
 
9
9
  initialize: (options) ->
10
- names = []
11
10
  {identifier} = options
11
+ @names = []
12
12
 
13
- # TODO access omit method throuhgh underscore
13
+ # TODO access omit method throuhgh sandbox
14
14
  widget_options = _.omit options, 'el', 'ref', '_ref', 'name', 'require', 'baseUrl', 'resource'
15
15
 
16
16
  # TODO remove jquery dependency
17
- for name, suboptions of widget_options when $.type(suboptions) is "object"
18
- names.push suboptions.name || name
19
- @add suboptions.name || name, suboptions
17
+ injections = @prepare_injections widget_options
20
18
 
21
- @$el.addClass ['tray', 'widget'].concat(names).join(' ')
19
+ @$el.addClass ['tray', 'widget'].concat(@names).join(' ')
22
20
 
23
21
  @identifier ||= identifier
24
22
 
@@ -27,13 +25,21 @@ define ->
27
25
  @identifier = identifier
28
26
  @$el.attr 'id', identifier
29
27
 
30
- @sandbox.start()
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>'
31
41
 
32
- add: (name, options) ->
42
+ @injection
43
+ name: suboptions.name || name
44
+ options: suboptions
33
45
 
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
@@ -256,6 +256,9 @@ define [
256
256
  # use it here instead of overriding all records
257
257
  viewer.items = records
258
258
 
259
+ # Start widgets created by bindings
260
+ @syncronize_children()
261
+
259
262
  @fetching.done (records) =>
260
263
  if viewer.items.length
261
264
  # boo.initialize @$el.find '.results .items'
@@ -322,14 +325,7 @@ define [
322
325
 
323
326
  # TODO move binders to application
324
327
  @inherit_parent_presentation()
325
- # TODO on bind execute presentation_options method and extend and inherit from presenter what needed
326
- @bind @presentation, @sandbox.util.extend(true, @presenter.presentation, @options.presentation)
327
-
328
- @presentation.viewer.subscribe 'items', =>
329
- # Start possible widgets created by items with widget
330
- # instantiation markup
331
- @syncronize_children()
332
-
328
+ @bind @presentation, @presenter.presentation
333
329
 
334
330
  # Start widgets that may have been created by bindings
335
331
  @sandbox.emit 'aura.sandbox.start', @sandbox
@@ -1,11 +1,6 @@
1
1
  'use strict';
2
2
 
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) ->
3
+ define ['stampit/stampit', 'observable'], (stampit, observable) ->
9
4
 
10
5
  scopingable = stampit
11
6
  start: ->
@@ -42,7 +37,6 @@ define ['stampit/stampit'], (stampit) ->
42
37
  @
43
38
 
44
39
 
45
-
46
40
  scopable = stampit
47
41
  forward_scope_data: (scope_name, data) ->
48
42
  switch @scope['$' + scope_name].constructor
data/lib/ende/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Ende
2
- VERSION = "0.4.25"
2
+ VERSION = "0.5.0"
3
3
  end