ende 0.1.7 → 0.1.8
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 +4 -4
- data/component.json +1 -0
- data/lib/assets/javascripts/aura/extensions/devise.js.coffee +34 -17
- data/lib/assets/javascripts/aura/extensions/routes.js.coffee +25 -4
- data/lib/assets/javascripts/aura/extensions/states.js.coffee +55 -22
- data/lib/assets/javascripts/aura/extensions/widget/lifecycleable.js.coffee +16 -12
- data/lib/assets/javascripts/widgets/form/default.html +3 -0
- data/lib/assets/javascripts/widgets/form/main.js.coffee +23 -0
- data/lib/assets/javascripts/widgets/form/presenter.js.coffee +18 -0
- data/lib/assets/javascripts/widgets/form/templates/password.html +2 -0
- data/lib/assets/javascripts/widgets/list/main.js.coffee +10 -21
- data/lib/assets/javascripts/widgets/viewer/main.js.coffee +3 -11
- data/lib/assets/javascripts/widgets/viewer/presenter.js.coffee +0 -1
- data/lib/ende/version.rb +1 -1
- metadata +6 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: caaa7f535f49335e7750267ca46931905ff7b23e
|
4
|
+
data.tar.gz: 25f153014541704bf57f2ba14164dac5e1f748cf
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b6cabe61279b7634405d4f46f6f3b9d60afb2495d150a1dc0647a8bc54f4484c8e304841cb8a054da20534aff1a0f4b8a35ae87a8fc7d51b384d057ebf5439e0
|
7
|
+
data.tar.gz: 15724ab7f7bb9a085dda78e3274a7c290752d440727168c2b7b2f985211e04b60567b72d854e12a4e667007f57960707c7b1973ff3e0cc23c93a71f83df8f77e
|
data/component.json
CHANGED
@@ -112,7 +112,7 @@ define 'aura/extensions/devise', () ->
|
|
112
112
|
|
113
113
|
# user_password POST /users/password(.:format) devise/passwords#create
|
114
114
|
# new_user_password GET /users/password/new(.:format) devise/passwords#new
|
115
|
-
# edit_user_password GET /
|
115
|
+
# edit_user_password GET /users/password/edit(.:format) devise/passwords#edit
|
116
116
|
# PATCH /users/password(.:format) devise/passwords#update
|
117
117
|
# PUT /users/password(.:format) devise/passwords#updaet
|
118
118
|
password =
|
@@ -123,7 +123,7 @@ define 'aura/extensions/devise', () ->
|
|
123
123
|
password: user.password
|
124
124
|
|
125
125
|
create: (user) ->
|
126
|
-
|
126
|
+
event_name = @event
|
127
127
|
user_password = password.build user
|
128
128
|
password.instance = user_password
|
129
129
|
|
@@ -131,7 +131,18 @@ define 'aura/extensions/devise', () ->
|
|
131
131
|
|
132
132
|
user_password
|
133
133
|
.save ->
|
134
|
-
|
134
|
+
# TODO add models event emission to the models extension
|
135
|
+
# TODO detect model event emission need based on
|
136
|
+
# subscriptions to resource events
|
137
|
+
mediator.emit 'password.created', @
|
138
|
+
|
139
|
+
switch(event_name)
|
140
|
+
when 'user.create_password'
|
141
|
+
mediator.emit 'user.password_created' , user
|
142
|
+
when 'user.recover_password'
|
143
|
+
mediator.emit 'user.password_recovered', user
|
144
|
+
else
|
145
|
+
console.warn "devise password created: no corresponding confirmation event found for #{event_name}"
|
135
146
|
.fail ->
|
136
147
|
# TODO improve event naming
|
137
148
|
mediator.emit 'user.unauthorized', @
|
@@ -168,17 +179,6 @@ define 'aura/extensions/devise', () ->
|
|
168
179
|
core = application.core
|
169
180
|
sandbox = application.sandbox
|
170
181
|
mediator = core.mediator
|
171
|
-
|
172
|
-
# Define callbacks
|
173
|
-
# TODO get json with features info from devise
|
174
|
-
# gem and only use apropriated listeners
|
175
|
-
mediator.on 'user.sign_in' , session.create
|
176
|
-
mediator.on 'user.sign_out', session.destroy
|
177
|
-
mediator.on 'user.recover_password', password.create
|
178
|
-
|
179
|
-
|
180
|
-
mediator.on 'action.unauthorized', domain.action_unauthorized
|
181
|
-
|
182
182
|
# TODO add ajax control into an extension and stop using jquery directly
|
183
183
|
jQuery(document).ajaxError (event, xhr) ->
|
184
184
|
if xhr.status == 401
|
@@ -197,7 +197,11 @@ define 'aura/extensions/devise', () ->
|
|
197
197
|
router.define '/users/sign_out' , 'session.destroy'
|
198
198
|
|
199
199
|
# TODO get devise configuration for password recovery
|
200
|
-
router.define '/users/password/new', 'password.new'
|
200
|
+
router.define '/users/password/new' , 'password.new'
|
201
|
+
router.define '/users/password/edit', 'password.edit'
|
202
|
+
|
203
|
+
# TODO get devise configuration for user registry
|
204
|
+
router.define '/users/new' , 'registration.new'
|
201
205
|
|
202
206
|
define_resources: (model) ->
|
203
207
|
|
@@ -217,15 +221,28 @@ define 'aura/extensions/devise', () ->
|
|
217
221
|
|
218
222
|
email: String
|
219
223
|
|
224
|
+
define_handlers: ->
|
225
|
+
# TODO get json with features info from devise
|
226
|
+
# gem and only use apropriated listeners
|
227
|
+
mediator.on 'user.sign_in' , session.create
|
228
|
+
mediator.on 'user.sign_out', session.destroy
|
229
|
+
mediator.on 'user.create_password' , password.create
|
230
|
+
mediator.on 'user.recover_password', password.create
|
231
|
+
|
232
|
+
mediator.on 'action.unauthorized', domain.action_unauthorized
|
233
|
+
|
234
|
+
|
220
235
|
afterAppStart: (application) ->
|
221
236
|
{router, models} = application.core
|
222
237
|
@define_resources models
|
223
238
|
|
239
|
+
# We must define handlers only after resources have been
|
240
|
+
# acknowledged
|
241
|
+
@define_handlers()
|
242
|
+
|
224
243
|
# TODO move to an external module
|
225
244
|
@define_routes router if router?
|
226
245
|
|
227
|
-
@define_handlers
|
228
|
-
|
229
246
|
# Restore session if not already
|
230
247
|
# TODO Restore only when application is ready
|
231
248
|
session.restore()
|
@@ -6,23 +6,44 @@ define 'aura/extensions/routes', (routes) ->
|
|
6
6
|
# TODO Remove .call null
|
7
7
|
loader.require.call null, 'modernizr'
|
8
8
|
loader.require.call null, 'ened/vendor/assets/javascripts/lennon/lennon.js'
|
9
|
+
query = loader.require.call null, 'querystring'
|
9
10
|
router = null
|
10
11
|
|
11
12
|
(application) ->
|
12
13
|
core = application.core
|
13
14
|
mediator = core.mediator
|
14
|
-
|
15
|
+
|
16
|
+
# TODO unify router api
|
15
17
|
router = new Lennon
|
16
18
|
# TODO implement logger api for lennon or change lennon library
|
17
19
|
# logger: application.logger
|
18
20
|
publishEvent: (name, params) ->
|
19
|
-
# TODO
|
20
|
-
params.method = "get"
|
21
|
+
# TODO method parsing (get, delete, put, post)
|
21
22
|
mediator.emit name, params
|
22
23
|
|
24
|
+
|
25
|
+
router.location = (href) ->
|
26
|
+
if Modernizr.history
|
27
|
+
window.history.pushState null, null, href
|
28
|
+
else
|
29
|
+
# TODO parse href and extract path!
|
30
|
+
window.location.hash = href
|
31
|
+
|
32
|
+
router.process()
|
33
|
+
|
23
34
|
application.core.router = router
|
24
35
|
|
25
|
-
|
36
|
+
location = Object.create null,
|
37
|
+
# TODO cache query parsing
|
38
|
+
query:
|
39
|
+
get: -> query.parse window.location.search.substring(1)
|
40
|
+
|
41
|
+
toString: -> window.location
|
42
|
+
|
43
|
+
version: '0.2.0'
|
44
|
+
|
45
|
+
initialize: (application) ->
|
46
|
+
application.sandbox.location = location
|
26
47
|
|
27
48
|
afterAppStart: (application) ->
|
28
49
|
router.process()
|
@@ -3,54 +3,67 @@ define 'aura/extensions/states', ['application/states'], (states) ->
|
|
3
3
|
'use strict'
|
4
4
|
|
5
5
|
(application) ->
|
6
|
-
core
|
7
|
-
|
8
|
-
mediator = core.mediator
|
9
|
-
_ = core.util._
|
6
|
+
{core, logger} = application
|
7
|
+
{dom, mediator} = core
|
10
8
|
|
11
9
|
state =
|
12
10
|
current: 'initializing'
|
13
11
|
list: []
|
14
12
|
previous: null
|
15
13
|
change: (transition) ->
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
state
|
20
|
-
state.
|
21
|
-
|
14
|
+
|
15
|
+
unless transition.to == transition.from
|
16
|
+
# The application transition consists in simply store the
|
17
|
+
# old state and updating the current one
|
18
|
+
state.previous = state.current
|
19
|
+
state.current = transition.to
|
20
|
+
|
21
|
+
mediator.emit 'state.changed', transition
|
22
22
|
else
|
23
23
|
mediator.emit 'state.errored', to: transition.to, message: 'Application already in this state!'
|
24
|
+
|
24
25
|
changed: (transition) ->
|
25
|
-
|
26
|
+
dom.find('html').addClass(transition.to).removeClass(transition.from)
|
26
27
|
|
27
28
|
# Set default intial state
|
28
|
-
|
29
|
+
dom.find('html').addClass state.current
|
29
30
|
|
30
31
|
# Application flow control
|
31
32
|
flow =
|
32
33
|
|
33
34
|
changed: (transition) ->
|
34
|
-
|
35
|
-
|
35
|
+
unormalized_widget_options = states[transition.to]
|
36
|
+
|
37
|
+
# TODO cache rendered widgets!
|
38
|
+
|
39
|
+
if unormalized_widget_options
|
36
40
|
widgets = []
|
37
41
|
|
38
|
-
for name, options of
|
42
|
+
for name, options of unormalized_widget_options
|
43
|
+
widget_name = options.name || name
|
44
|
+
|
45
|
+
# To allow user controlling the application change the
|
46
|
+
# widget configuration at runtime, we check the transition
|
47
|
+
# for widget options
|
39
48
|
widgets.push
|
40
|
-
name:
|
41
|
-
options: options
|
49
|
+
name: widget_name
|
50
|
+
options: core.util.extend transition[widget_name], options
|
42
51
|
|
52
|
+
# TODO document why we delete this?
|
43
53
|
delete options.name
|
44
54
|
|
45
55
|
# TODO update aura and use native start method
|
46
56
|
core.inject(widgets).fail flow.failed
|
47
57
|
|
58
|
+
# To prevent reinstation upon changing to this state for the
|
59
|
+
# second time, delete stored configuration for this state
|
48
60
|
delete states[transition.to]
|
61
|
+
|
49
62
|
failed: (exception) ->
|
50
|
-
logger.error "states.flow.failed: Failed autostarting widget
|
63
|
+
logger.error "states.flow.failed: Failed autostarting widget! \n Message: #{exception.message}", exception
|
51
64
|
|
52
65
|
|
53
|
-
version: '0.2.
|
66
|
+
version: '0.2.1'
|
54
67
|
|
55
68
|
initialize: (application) ->
|
56
69
|
mediator.on 'state.change' , state.change
|
@@ -65,13 +78,33 @@ define 'aura/extensions/states', ['application/states'], (states) ->
|
|
65
78
|
Object.defineProperty core, 'state',
|
66
79
|
set: (to) ->
|
67
80
|
console.warn 'Changing state through the core object is no longer supported. Use application.state = \"other_state\" instead.'
|
68
|
-
state
|
81
|
+
application.state = to
|
69
82
|
get: ->
|
70
83
|
console.warn 'Getting state through the core object is no longer supported. Use application.state instead.'
|
71
|
-
state
|
84
|
+
application.state
|
72
85
|
|
73
86
|
Object.defineProperty application, 'state',
|
74
|
-
set: (to) ->
|
87
|
+
set: (to) ->
|
88
|
+
# To use a unified internal api, transform the setter call
|
89
|
+
# into the transition api
|
90
|
+
|
91
|
+
# app.state = name: 'new_state', ...
|
92
|
+
unless $.type(to) == 'string'
|
93
|
+
transition = to: to.name
|
94
|
+
delete to.name
|
95
|
+
|
96
|
+
# app.state = 'new_state'
|
97
|
+
else
|
98
|
+
transition = to: to
|
99
|
+
|
100
|
+
# app.state = 'previous'
|
101
|
+
transition.to = if transition.to == 'previous' then state.previous else transition.to
|
102
|
+
|
103
|
+
# To change the application state, must invoke the change
|
104
|
+
# function with the apropriated transition object
|
105
|
+
transition.from = state.current
|
106
|
+
state.change transition
|
107
|
+
|
75
108
|
get: -> state.current
|
76
109
|
|
77
110
|
afterAppStart: (application) -> application.state = "default"
|
@@ -12,22 +12,25 @@ define 'aura/extensions/widget/lifecycleable', ->
|
|
12
12
|
|
13
13
|
# TODO check for existing widgets before convert options, and
|
14
14
|
# not only if type is object
|
15
|
-
|
16
|
-
|
17
|
-
|
15
|
+
unless options.nested
|
16
|
+
for subwidget_name, suboptions of options
|
17
|
+
# TODO if isWidget subwidget_name
|
18
|
+
if $.type(suboptions) == 'object' and not (suboptions instanceof jQuery)
|
18
19
|
|
19
|
-
|
20
|
+
for name, suboption of suboptions
|
20
21
|
|
21
|
-
|
22
|
+
if $.type(suboption) == 'object' and not (suboption instanceof jQuery)
|
22
23
|
|
23
|
-
|
24
|
-
|
24
|
+
for subname, subsuboption of suboption
|
25
|
+
options["#{subwidget_name}#{@capitalize name}#{@capitalize subname}"] = subsuboption
|
25
26
|
|
26
|
-
|
27
|
+
else
|
27
28
|
|
28
|
-
|
29
|
+
options["#{subwidget_name}#{@capitalize name}"] = suboption
|
29
30
|
|
30
|
-
|
31
|
+
# TODO delete options[subwidget_name]
|
32
|
+
|
33
|
+
delete options.nested
|
31
34
|
|
32
35
|
ref = definition.name.split "@"
|
33
36
|
widgetName = @decamelize ref[0]
|
@@ -68,14 +71,15 @@ define 'aura/extensions/widget/lifecycleable', ->
|
|
68
71
|
|
69
72
|
(application) ->
|
70
73
|
|
74
|
+
version: '0.1.0'
|
75
|
+
|
71
76
|
initialize: (application) ->
|
72
|
-
core = application
|
77
|
+
{core} = application
|
73
78
|
|
74
79
|
# TODO use indemma inflections module instead
|
75
80
|
core.util.capitalize = (string) ->
|
76
81
|
string.charAt(0).toUpperCase() + string.slice(1);
|
77
82
|
|
78
|
-
|
79
83
|
# Cache usefull methods
|
80
84
|
lifecycleable.sources = application.config.widgets.sources
|
81
85
|
lifecycleable.find = core.dom.find
|
@@ -0,0 +1,23 @@
|
|
1
|
+
define ['./presenter', 'text!./template'], (presenter, template) ->
|
2
|
+
|
3
|
+
type: 'Base'
|
4
|
+
|
5
|
+
initialize: (options) ->
|
6
|
+
sandbox = @sandbox
|
7
|
+
sandbox.logger.log "initialized!"
|
8
|
+
|
9
|
+
model = sandbox.model options.resource
|
10
|
+
record = model options.record
|
11
|
+
|
12
|
+
# Create defaults
|
13
|
+
# TODO extract and vaidate options
|
14
|
+
form = sandbox.util.extend options,
|
15
|
+
title: options.resource
|
16
|
+
|
17
|
+
# Will also initialize sandbox!
|
18
|
+
@html template
|
19
|
+
|
20
|
+
# Bind presenter to template
|
21
|
+
presentation = presenter form, record
|
22
|
+
@$el.addClass 'form widget'
|
23
|
+
@bind presentation
|
@@ -0,0 +1,18 @@
|
|
1
|
+
'use strict'
|
2
|
+
observable = require('observable').mixin
|
3
|
+
|
4
|
+
define ->
|
5
|
+
|
6
|
+
(form, record) ->
|
7
|
+
|
8
|
+
|
9
|
+
# TODO create view_model
|
10
|
+
form: observable Object.create null,
|
11
|
+
title:
|
12
|
+
set: (title) -> record.title = title
|
13
|
+
get: -> record.title
|
14
|
+
configurable: true
|
15
|
+
body:
|
16
|
+
set: (body) -> record.body = body
|
17
|
+
get: -> record.body
|
18
|
+
configurable: true
|
@@ -10,17 +10,17 @@ define ['./states/index', './presenter'], (templates, presenter) ->
|
|
10
10
|
sandbox:
|
11
11
|
search:
|
12
12
|
index: lunr
|
13
|
-
initialize: (
|
14
|
-
throw 'no
|
13
|
+
initialize: (records) ->
|
14
|
+
throw 'no records provided' unless records?
|
15
15
|
|
16
|
-
@sample =
|
16
|
+
@sample = records[0]
|
17
17
|
@index = @sandbox.search.index(@indexate)
|
18
18
|
|
19
|
-
for
|
20
|
-
@index.add
|
21
|
-
@store.set
|
19
|
+
for record in records
|
20
|
+
@index.add record
|
21
|
+
@store.set record._id, record
|
22
22
|
|
23
|
-
@store.all =
|
23
|
+
@store.all = records
|
24
24
|
|
25
25
|
# TODO put bold face on matched texts
|
26
26
|
search: (params...) ->
|
@@ -41,27 +41,16 @@ define ['./states/index', './presenter'], (templates, presenter) ->
|
|
41
41
|
true
|
42
42
|
|
43
43
|
|
44
|
-
#
|
45
|
-
# to extend your widget. Defaults to Base constructor.
|
46
|
-
#
|
47
|
-
# type: 'Base'
|
44
|
+
# Widget Prototype
|
48
45
|
|
49
|
-
|
50
|
-
#
|
51
|
-
# Note: the options are passed thorught the html element data
|
52
|
-
# attributes for this widget: <div data-aura-amount="3"></div>
|
53
|
-
#
|
54
|
-
# options: {}
|
46
|
+
type: 'Base'
|
55
47
|
|
56
|
-
|
57
|
-
# Widget initialization method, will be called upon loading, options
|
58
|
-
# are already filled with defaults
|
59
48
|
initialize: (options) ->
|
60
49
|
widget = @
|
61
50
|
sandbox = @sandbox
|
62
51
|
sandbox.logger.log "initialized!"
|
63
52
|
|
64
|
-
|
53
|
+
record = sandbox.models[options.model]
|
65
54
|
|
66
55
|
# Will also initialize sandbox!
|
67
56
|
@html templates.default
|
@@ -86,19 +86,12 @@ define ['./states/index', './presenters/default', '/assets/jquery/inview.js'], (
|
|
86
86
|
|
87
87
|
populate: (handlers) ->
|
88
88
|
# Initialize dependencies
|
89
|
-
list = ''
|
90
|
-
if @options.listModel
|
91
|
-
list = "<div data-aura-widget=\"list\" data-model=\"#{@options.listModel}\"></div>"
|
92
|
-
@sandbox.on 'list.stabilized' , handlers.list.stabilized
|
93
|
-
@sandbox.on 'list.selection.incremented' , handlers.list.changed
|
94
|
-
@sandbox.on 'list.selection.decremented' , handlers.list.changed
|
95
|
-
|
96
89
|
@scope.all (records) =>
|
97
90
|
@load.stop()
|
98
91
|
|
99
92
|
@presentation = @presenter records
|
100
93
|
|
101
|
-
@html
|
94
|
+
@html templates[@options.resource]
|
102
95
|
boo.initialize @$el.find '.results .items'
|
103
96
|
|
104
97
|
sandbox = @sandbox
|
@@ -107,7 +100,7 @@ define ['./states/index', './presenters/default', '/assets/jquery/inview.js'], (
|
|
107
100
|
@bind @presentation,
|
108
101
|
binders:
|
109
102
|
unfolding: (element) ->
|
110
|
-
drawing = sandbox.modacad.drawing $(element), @model
|
103
|
+
drawing = sandbox.modacad.drawing $(element), @model.model
|
111
104
|
setTimeout ->
|
112
105
|
drawing.redisplay
|
113
106
|
doll:
|
@@ -128,10 +121,9 @@ define ['./states/index', './presenters/default', '/assets/jquery/inview.js'], (
|
|
128
121
|
initialize: (options) ->
|
129
122
|
# TODO rename all options model to options.resource
|
130
123
|
options.model ||= options.resource
|
131
|
-
options.listModel ||= options.listResource
|
132
124
|
|
133
125
|
# TODO import core extensions in another place
|
134
|
-
@scope = model = @sandbox.models[options.
|
126
|
+
@scope = model = @sandbox.models[options.resource]
|
135
127
|
cssify = @sandbox.util.inflector.cssify
|
136
128
|
loader = @sandbox.ui.loader
|
137
129
|
@sandbox.on "viewer.#{@identifier}.scope", @scope_to, @
|
data/lib/ende/version.rb
CHANGED
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.1.
|
4
|
+
version: 0.1.8
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Heitor Salazar
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2013-10-
|
11
|
+
date: 2013-10-26 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -89,6 +89,10 @@ files:
|
|
89
89
|
- lib/assets/javascripts/widgets/authenticator/states/default.html
|
90
90
|
- lib/assets/javascripts/widgets/authenticator/states/index.js.coffee
|
91
91
|
- lib/assets/javascripts/widgets/authenticator/states/passwords.html
|
92
|
+
- lib/assets/javascripts/widgets/form/default.html
|
93
|
+
- lib/assets/javascripts/widgets/form/main.js.coffee
|
94
|
+
- lib/assets/javascripts/widgets/form/presenter.js.coffee
|
95
|
+
- lib/assets/javascripts/widgets/form/templates/password.html
|
92
96
|
- lib/assets/javascripts/widgets/list/main.js.coffee
|
93
97
|
- lib/assets/javascripts/widgets/list/presenter.js.coffee
|
94
98
|
- lib/assets/javascripts/widgets/list/states/default.html
|