appetizer-ui 0.9.0 → 0.9.1
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.
- data/appetizer-ui.gemspec +15 -13
- data/lib/appetizer/ui/assets.rb +21 -8
- data/lib/appetizer/ui/jasmine/js/jquery-jasmine.js +288 -0
- data/lib/appetizer/ui/jasmine/js/spec-runner.coffee +0 -1
- data/lib/appetizer/ui/jasmine/views/specs.erb +12 -4
- data/lib/appetizer/ui/rake.rb +29 -10
- data/lib/appetizer/ui/spec.rb +1 -2
- metadata +122 -61
- data/lib/appetizer/ui/app/js/appetizer.coffee +0 -15
- data/lib/appetizer/ui/app/js/appetizer/core.coffee +0 -20
- data/lib/appetizer/ui/app/js/appetizer/model.coffee +0 -1
- data/lib/appetizer/ui/app/js/appetizer/router.coffee +0 -70
- data/lib/appetizer/ui/app/js/appetizer/view.coffee +0 -139
- data/lib/appetizer/ui/app/js/appetizer/xdr.coffee +0 -57
- data/lib/appetizer/ui/app/views/client/appetizer/missing.jst.eco +0 -3
- data/lib/appetizer/ui/jasmine/js/backbone.modelbinding/appetizerExtensions.spec.js +0 -54
- data/lib/appetizer/ui/jasmine/js/backbone.modelbinding/checkboxConventionBindings.spec.js +0 -110
- data/lib/appetizer/ui/jasmine/js/backbone.modelbinding/configurableBindingAttributes.spec.js +0 -117
- data/lib/appetizer/ui/jasmine/js/backbone.modelbinding/configureAllBindingAttributes.spec.js +0 -139
- data/lib/appetizer/ui/jasmine/js/backbone.modelbinding/customConvention.spec.js +0 -53
- data/lib/appetizer/ui/jasmine/js/backbone.modelbinding/dataBindConvention.spec.js +0 -151
- data/lib/appetizer/ui/jasmine/js/backbone.modelbinding/dataBindMultiple.spec.js +0 -36
- data/lib/appetizer/ui/jasmine/js/backbone.modelbinding/dataBindSubstitutions.spec.js +0 -137
- data/lib/appetizer/ui/jasmine/js/backbone.modelbinding/globalConfiguraAllBindingAttributes.spec.js +0 -124
- data/lib/appetizer/ui/jasmine/js/backbone.modelbinding/globalConfigurableBindingAttributes.spec.js +0 -36
- data/lib/appetizer/ui/jasmine/js/backbone.modelbinding/helpers/SpecHelper.js +0 -4
- data/lib/appetizer/ui/jasmine/js/backbone.modelbinding/helpers/sample.backbone.app.js +0 -159
- data/lib/appetizer/ui/jasmine/js/backbone.modelbinding/html5inputConventionBinding.spec.js +0 -142
- data/lib/appetizer/ui/jasmine/js/backbone.modelbinding/modelUnbinding.spec.js +0 -73
- data/lib/appetizer/ui/jasmine/js/backbone.modelbinding/noConflict.spec.js +0 -36
- data/lib/appetizer/ui/jasmine/js/backbone.modelbinding/radioButtonConventionBinding.spec.js +0 -41
- data/lib/appetizer/ui/jasmine/js/backbone.modelbinding/selectboxConventionBindings.spec.js +0 -60
- data/lib/appetizer/ui/jasmine/js/backbone.modelbinding/textareaConventionBinding.spec.js +0 -29
- data/lib/appetizer/ui/jasmine/js/backbone.modelbinding/textboxConventionBinding.spec.js +0 -66
- data/lib/appetizer/ui/vendor/js/backbone.js +0 -1290
- data/lib/appetizer/ui/vendor/js/backbone.modelbinding.js +0 -624
- data/lib/appetizer/ui/vendor/js/jquery.js +0 -9266
- data/lib/appetizer/ui/vendor/js/json2.js +0 -480
- data/lib/appetizer/ui/vendor/js/underscore.js +0 -999
- data/lib/appetizer/ui/vendor/js/underscore.string.js +0 -480
data/lib/appetizer/ui/spec.rb
CHANGED
@@ -7,8 +7,7 @@ module Appetizer
|
|
7
7
|
def self.registered app
|
8
8
|
return if App.production?
|
9
9
|
|
10
|
-
%w(css img js views).each do |d|
|
11
|
-
App.assets.append_path "./spec/#{d}"
|
10
|
+
%w(css img js views fonts).each do |d|
|
12
11
|
App.assets.append_path File.expand_path("../jasmine/#{d}", __FILE__)
|
13
12
|
end
|
14
13
|
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: appetizer-ui
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.9.
|
4
|
+
version: 0.9.1
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,11 +9,11 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date:
|
12
|
+
date: 2014-03-14 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: appetizer
|
16
|
-
requirement:
|
16
|
+
requirement: !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ~>
|
@@ -21,10 +21,15 @@ dependencies:
|
|
21
21
|
version: '0.0'
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
version_requirements:
|
24
|
+
version_requirements: !ruby/object:Gem::Requirement
|
25
|
+
none: false
|
26
|
+
requirements:
|
27
|
+
- - ~>
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
version: '0.0'
|
25
30
|
- !ruby/object:Gem::Dependency
|
26
31
|
name: coffee-script
|
27
|
-
requirement:
|
32
|
+
requirement: !ruby/object:Gem::Requirement
|
28
33
|
none: false
|
29
34
|
requirements:
|
30
35
|
- - ~>
|
@@ -32,10 +37,15 @@ dependencies:
|
|
32
37
|
version: '2.2'
|
33
38
|
type: :runtime
|
34
39
|
prerelease: false
|
35
|
-
version_requirements:
|
40
|
+
version_requirements: !ruby/object:Gem::Requirement
|
41
|
+
none: false
|
42
|
+
requirements:
|
43
|
+
- - ~>
|
44
|
+
- !ruby/object:Gem::Version
|
45
|
+
version: '2.2'
|
36
46
|
- !ruby/object:Gem::Dependency
|
37
47
|
name: eco
|
38
|
-
requirement:
|
48
|
+
requirement: !ruby/object:Gem::Requirement
|
39
49
|
none: false
|
40
50
|
requirements:
|
41
51
|
- - ~>
|
@@ -43,10 +53,15 @@ dependencies:
|
|
43
53
|
version: '1.0'
|
44
54
|
type: :runtime
|
45
55
|
prerelease: false
|
46
|
-
version_requirements:
|
56
|
+
version_requirements: !ruby/object:Gem::Requirement
|
57
|
+
none: false
|
58
|
+
requirements:
|
59
|
+
- - ~>
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '1.0'
|
47
62
|
- !ruby/object:Gem::Dependency
|
48
63
|
name: rack-contrib
|
49
|
-
requirement:
|
64
|
+
requirement: !ruby/object:Gem::Requirement
|
50
65
|
none: false
|
51
66
|
requirements:
|
52
67
|
- - ~>
|
@@ -54,10 +69,15 @@ dependencies:
|
|
54
69
|
version: '1.1'
|
55
70
|
type: :runtime
|
56
71
|
prerelease: false
|
57
|
-
version_requirements:
|
72
|
+
version_requirements: !ruby/object:Gem::Requirement
|
73
|
+
none: false
|
74
|
+
requirements:
|
75
|
+
- - ~>
|
76
|
+
- !ruby/object:Gem::Version
|
77
|
+
version: '1.1'
|
58
78
|
- !ruby/object:Gem::Dependency
|
59
79
|
name: rack-ssl
|
60
|
-
requirement:
|
80
|
+
requirement: !ruby/object:Gem::Requirement
|
61
81
|
none: false
|
62
82
|
requirements:
|
63
83
|
- - ~>
|
@@ -65,10 +85,15 @@ dependencies:
|
|
65
85
|
version: '1.3'
|
66
86
|
type: :runtime
|
67
87
|
prerelease: false
|
68
|
-
version_requirements:
|
88
|
+
version_requirements: !ruby/object:Gem::Requirement
|
89
|
+
none: false
|
90
|
+
requirements:
|
91
|
+
- - ~>
|
92
|
+
- !ruby/object:Gem::Version
|
93
|
+
version: '1.3'
|
69
94
|
- !ruby/object:Gem::Dependency
|
70
95
|
name: sass
|
71
|
-
requirement:
|
96
|
+
requirement: !ruby/object:Gem::Requirement
|
72
97
|
none: false
|
73
98
|
requirements:
|
74
99
|
- - ~>
|
@@ -76,10 +101,15 @@ dependencies:
|
|
76
101
|
version: '3.1'
|
77
102
|
type: :runtime
|
78
103
|
prerelease: false
|
79
|
-
version_requirements:
|
104
|
+
version_requirements: !ruby/object:Gem::Requirement
|
105
|
+
none: false
|
106
|
+
requirements:
|
107
|
+
- - ~>
|
108
|
+
- !ruby/object:Gem::Version
|
109
|
+
version: '3.1'
|
80
110
|
- !ruby/object:Gem::Dependency
|
81
111
|
name: sinatra
|
82
|
-
requirement:
|
112
|
+
requirement: !ruby/object:Gem::Requirement
|
83
113
|
none: false
|
84
114
|
requirements:
|
85
115
|
- - ~>
|
@@ -87,43 +117,95 @@ dependencies:
|
|
87
117
|
version: '1.3'
|
88
118
|
type: :runtime
|
89
119
|
prerelease: false
|
90
|
-
version_requirements:
|
120
|
+
version_requirements: !ruby/object:Gem::Requirement
|
121
|
+
none: false
|
122
|
+
requirements:
|
123
|
+
- - ~>
|
124
|
+
- !ruby/object:Gem::Version
|
125
|
+
version: '1.3'
|
91
126
|
- !ruby/object:Gem::Dependency
|
92
127
|
name: sprockets
|
93
|
-
requirement:
|
128
|
+
requirement: !ruby/object:Gem::Requirement
|
94
129
|
none: false
|
95
130
|
requirements:
|
96
131
|
- - ~>
|
97
132
|
- !ruby/object:Gem::Version
|
98
|
-
version: '2.
|
133
|
+
version: '2.11'
|
99
134
|
type: :runtime
|
100
135
|
prerelease: false
|
101
|
-
version_requirements:
|
136
|
+
version_requirements: !ruby/object:Gem::Requirement
|
137
|
+
none: false
|
138
|
+
requirements:
|
139
|
+
- - ~>
|
140
|
+
- !ruby/object:Gem::Version
|
141
|
+
version: '2.11'
|
102
142
|
- !ruby/object:Gem::Dependency
|
103
143
|
name: sprockets-sass
|
104
|
-
requirement:
|
144
|
+
requirement: !ruby/object:Gem::Requirement
|
145
|
+
none: false
|
146
|
+
requirements:
|
147
|
+
- - ~>
|
148
|
+
- !ruby/object:Gem::Version
|
149
|
+
version: '1.0'
|
150
|
+
type: :runtime
|
151
|
+
prerelease: false
|
152
|
+
version_requirements: !ruby/object:Gem::Requirement
|
105
153
|
none: false
|
106
154
|
requirements:
|
107
155
|
- - ~>
|
108
156
|
- !ruby/object:Gem::Version
|
109
|
-
version: '0
|
157
|
+
version: '1.0'
|
158
|
+
- !ruby/object:Gem::Dependency
|
159
|
+
name: sprockets-helpers
|
160
|
+
requirement: !ruby/object:Gem::Requirement
|
161
|
+
none: false
|
162
|
+
requirements:
|
163
|
+
- - ~>
|
164
|
+
- !ruby/object:Gem::Version
|
165
|
+
version: '1.1'
|
110
166
|
type: :runtime
|
111
167
|
prerelease: false
|
112
|
-
version_requirements:
|
168
|
+
version_requirements: !ruby/object:Gem::Requirement
|
169
|
+
none: false
|
170
|
+
requirements:
|
171
|
+
- - ~>
|
172
|
+
- !ruby/object:Gem::Version
|
173
|
+
version: '1.1'
|
113
174
|
- !ruby/object:Gem::Dependency
|
114
175
|
name: uglifier
|
115
|
-
requirement:
|
176
|
+
requirement: !ruby/object:Gem::Requirement
|
177
|
+
none: false
|
178
|
+
requirements:
|
179
|
+
- - ~>
|
180
|
+
- !ruby/object:Gem::Version
|
181
|
+
version: '1.0'
|
182
|
+
type: :runtime
|
183
|
+
prerelease: false
|
184
|
+
version_requirements: !ruby/object:Gem::Requirement
|
116
185
|
none: false
|
117
186
|
requirements:
|
118
187
|
- - ~>
|
119
188
|
- !ruby/object:Gem::Version
|
120
189
|
version: '1.0'
|
190
|
+
- !ruby/object:Gem::Dependency
|
191
|
+
name: vendorer
|
192
|
+
requirement: !ruby/object:Gem::Requirement
|
193
|
+
none: false
|
194
|
+
requirements:
|
195
|
+
- - ~>
|
196
|
+
- !ruby/object:Gem::Version
|
197
|
+
version: '0.1'
|
121
198
|
type: :runtime
|
122
199
|
prerelease: false
|
123
|
-
version_requirements:
|
200
|
+
version_requirements: !ruby/object:Gem::Requirement
|
201
|
+
none: false
|
202
|
+
requirements:
|
203
|
+
- - ~>
|
204
|
+
- !ruby/object:Gem::Version
|
205
|
+
version: '0.1'
|
124
206
|
- !ruby/object:Gem::Dependency
|
125
207
|
name: yajl-ruby
|
126
|
-
requirement:
|
208
|
+
requirement: !ruby/object:Gem::Requirement
|
127
209
|
none: false
|
128
210
|
requirements:
|
129
211
|
- - ~>
|
@@ -131,10 +213,15 @@ dependencies:
|
|
131
213
|
version: '1.0'
|
132
214
|
type: :runtime
|
133
215
|
prerelease: false
|
134
|
-
version_requirements:
|
216
|
+
version_requirements: !ruby/object:Gem::Requirement
|
217
|
+
none: false
|
218
|
+
requirements:
|
219
|
+
- - ~>
|
220
|
+
- !ruby/object:Gem::Version
|
221
|
+
version: '1.0'
|
135
222
|
- !ruby/object:Gem::Dependency
|
136
223
|
name: yui-compressor
|
137
|
-
requirement:
|
224
|
+
requirement: !ruby/object:Gem::Requirement
|
138
225
|
none: false
|
139
226
|
requirements:
|
140
227
|
- - ~>
|
@@ -142,7 +229,12 @@ dependencies:
|
|
142
229
|
version: '0.9'
|
143
230
|
type: :runtime
|
144
231
|
prerelease: false
|
145
|
-
version_requirements:
|
232
|
+
version_requirements: !ruby/object:Gem::Requirement
|
233
|
+
none: false
|
234
|
+
requirements:
|
235
|
+
- - ~>
|
236
|
+
- !ruby/object:Gem::Version
|
237
|
+
version: '0.9'
|
146
238
|
description: A painfully opinionated Appetizer extension for web apps.
|
147
239
|
email:
|
148
240
|
- tech@audiosocket.com
|
@@ -156,48 +248,17 @@ files:
|
|
156
248
|
- Rakefile
|
157
249
|
- appetizer-ui.gemspec
|
158
250
|
- lib/appetizer/ui.rb
|
159
|
-
- lib/appetizer/ui/app/js/appetizer.coffee
|
160
|
-
- lib/appetizer/ui/app/js/appetizer/core.coffee
|
161
|
-
- lib/appetizer/ui/app/js/appetizer/model.coffee
|
162
|
-
- lib/appetizer/ui/app/js/appetizer/router.coffee
|
163
|
-
- lib/appetizer/ui/app/js/appetizer/view.coffee
|
164
|
-
- lib/appetizer/ui/app/js/appetizer/xdr.coffee
|
165
|
-
- lib/appetizer/ui/app/views/client/appetizer/missing.jst.eco
|
166
251
|
- lib/appetizer/ui/assets.rb
|
167
252
|
- lib/appetizer/ui/assets/delivery.rb
|
168
253
|
- lib/appetizer/ui/jasmine/css/jasmine.css
|
169
|
-
- lib/appetizer/ui/jasmine/js/backbone.modelbinding/appetizerExtensions.spec.js
|
170
|
-
- lib/appetizer/ui/jasmine/js/backbone.modelbinding/checkboxConventionBindings.spec.js
|
171
|
-
- lib/appetizer/ui/jasmine/js/backbone.modelbinding/configurableBindingAttributes.spec.js
|
172
|
-
- lib/appetizer/ui/jasmine/js/backbone.modelbinding/configureAllBindingAttributes.spec.js
|
173
|
-
- lib/appetizer/ui/jasmine/js/backbone.modelbinding/customConvention.spec.js
|
174
|
-
- lib/appetizer/ui/jasmine/js/backbone.modelbinding/dataBindConvention.spec.js
|
175
|
-
- lib/appetizer/ui/jasmine/js/backbone.modelbinding/dataBindMultiple.spec.js
|
176
|
-
- lib/appetizer/ui/jasmine/js/backbone.modelbinding/dataBindSubstitutions.spec.js
|
177
|
-
- lib/appetizer/ui/jasmine/js/backbone.modelbinding/globalConfiguraAllBindingAttributes.spec.js
|
178
|
-
- lib/appetizer/ui/jasmine/js/backbone.modelbinding/globalConfigurableBindingAttributes.spec.js
|
179
|
-
- lib/appetizer/ui/jasmine/js/backbone.modelbinding/helpers/SpecHelper.js
|
180
|
-
- lib/appetizer/ui/jasmine/js/backbone.modelbinding/helpers/sample.backbone.app.js
|
181
|
-
- lib/appetizer/ui/jasmine/js/backbone.modelbinding/html5inputConventionBinding.spec.js
|
182
|
-
- lib/appetizer/ui/jasmine/js/backbone.modelbinding/modelUnbinding.spec.js
|
183
|
-
- lib/appetizer/ui/jasmine/js/backbone.modelbinding/noConflict.spec.js
|
184
|
-
- lib/appetizer/ui/jasmine/js/backbone.modelbinding/radioButtonConventionBinding.spec.js
|
185
|
-
- lib/appetizer/ui/jasmine/js/backbone.modelbinding/selectboxConventionBindings.spec.js
|
186
|
-
- lib/appetizer/ui/jasmine/js/backbone.modelbinding/textareaConventionBinding.spec.js
|
187
|
-
- lib/appetizer/ui/jasmine/js/backbone.modelbinding/textboxConventionBinding.spec.js
|
188
254
|
- lib/appetizer/ui/jasmine/js/jasmine-html.js
|
189
255
|
- lib/appetizer/ui/jasmine/js/jasmine-jquery-matchers.js
|
190
256
|
- lib/appetizer/ui/jasmine/js/jasmine.js
|
257
|
+
- lib/appetizer/ui/jasmine/js/jquery-jasmine.js
|
191
258
|
- lib/appetizer/ui/jasmine/js/spec-runner.coffee
|
192
259
|
- lib/appetizer/ui/jasmine/views/specs.erb
|
193
260
|
- lib/appetizer/ui/rake.rb
|
194
261
|
- lib/appetizer/ui/spec.rb
|
195
|
-
- lib/appetizer/ui/vendor/js/backbone.js
|
196
|
-
- lib/appetizer/ui/vendor/js/backbone.modelbinding.js
|
197
|
-
- lib/appetizer/ui/vendor/js/jquery.js
|
198
|
-
- lib/appetizer/ui/vendor/js/json2.js
|
199
|
-
- lib/appetizer/ui/vendor/js/underscore.js
|
200
|
-
- lib/appetizer/ui/vendor/js/underscore.string.js
|
201
262
|
homepage: https://github.com/audiosocket/appetizer-ui
|
202
263
|
licenses: []
|
203
264
|
post_install_message:
|
@@ -218,7 +279,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
218
279
|
version: '0'
|
219
280
|
requirements: []
|
220
281
|
rubyforge_project:
|
221
|
-
rubygems_version: 1.8.
|
282
|
+
rubygems_version: 1.8.23
|
222
283
|
signing_key:
|
223
284
|
specification_version: 3
|
224
285
|
summary: Helpers for rich clients using Sinatra, Sass, and CoffeeScript.
|
@@ -1,15 +0,0 @@
|
|
1
|
-
#= require json2
|
2
|
-
#= require jquery
|
3
|
-
#= require underscore
|
4
|
-
#= require underscore.string
|
5
|
-
|
6
|
-
#= require backbone
|
7
|
-
#= require backbone.modelbinding
|
8
|
-
|
9
|
-
#= require appetizer/core
|
10
|
-
#= require appetizer/model
|
11
|
-
#= require appetizer/view
|
12
|
-
|
13
|
-
# Mixin non-conflicting methods to underscore.
|
14
|
-
|
15
|
-
_.mixin _.str.exports()
|
@@ -1,20 +0,0 @@
|
|
1
|
-
window.Appetizer ||= {}
|
2
|
-
|
3
|
-
# All Backbone's classes that inherit from Backbone.Event
|
4
|
-
# are also given a "one" method, which can be used to fire
|
5
|
-
# a callback only on the next occurence of a given event.
|
6
|
-
|
7
|
-
one =
|
8
|
-
one: (ev, callback, context) ->
|
9
|
-
self = this
|
10
|
-
|
11
|
-
fn = ->
|
12
|
-
callback.apply this, arguments
|
13
|
-
self.unbind.apply self, [ev, fn]
|
14
|
-
|
15
|
-
this.bind ev, fn, context
|
16
|
-
|
17
|
-
_.extend Backbone.Model.prototype, one
|
18
|
-
_.extend Backbone.Collection.prototype, one
|
19
|
-
_.extend Backbone.View.prototype, one
|
20
|
-
_.extend Backbone.Router.prototype, one
|
@@ -1 +0,0 @@
|
|
1
|
-
class Appetizer.Model extends Backbone.Model
|
@@ -1,70 +0,0 @@
|
|
1
|
-
# A superclass for Backbone.router. It adds the following features:
|
2
|
-
# * Register dynamic routes: the method @dynamicRoutes, if present,
|
3
|
-
# is executed when initializing the router. Using the provided @register
|
4
|
-
# method, it is then possible to register routes within the @dynamicRoutes
|
5
|
-
# method.
|
6
|
-
#
|
7
|
-
# * Components facilities: the property @components should contain an
|
8
|
-
# array of components used in the application, such as "page", "panel",
|
9
|
-
# "sidebar", etc..
|
10
|
-
# For each component, a method showFoo is created, which can then be used
|
11
|
-
# to show a component. For instance, showPage App.View.Page, options. Upon
|
12
|
-
# calling showFoo App.View.Bar the following is performed:
|
13
|
-
# - Call @foo.hide true if @foo exists
|
14
|
-
# - Instanciate a fresh @foo = new App.View.Bar options
|
15
|
-
# - Save current route in @foo.currentRoute
|
16
|
-
# - Emit "foo:showing", @foo
|
17
|
-
# - Call @foo.show()
|
18
|
-
# - Emit "foo:shown", @foo when @foo has been shown
|
19
|
-
#
|
20
|
-
# Component facilites can be used to properly implement your application's
|
21
|
-
# logic. For instance, you can do the following:
|
22
|
-
# components: ["page", "sidebar"]
|
23
|
-
#
|
24
|
-
# initialize: ->
|
25
|
-
# # Show the sidebar corresponding to current shown page.
|
26
|
-
# @bind "page:shown", (page) -> @showSidebar @findSidebarForPage(page)
|
27
|
-
|
28
|
-
class Appetizer.Router extends Backbone.Router
|
29
|
-
initialize: ->
|
30
|
-
@children = []
|
31
|
-
|
32
|
-
@dynamicRoutes() if @dynamicRoutes?
|
33
|
-
|
34
|
-
# Create showItem functions
|
35
|
-
|
36
|
-
if @components?
|
37
|
-
@addShowFunction item for item in @components
|
38
|
-
|
39
|
-
register: (route, name) =>
|
40
|
-
@route route, name, this[name]
|
41
|
-
|
42
|
-
# Create an instance of a view, set this as the view's parent, and
|
43
|
-
# add the view to the router's list of children.
|
44
|
-
|
45
|
-
createChild: (kind, options) ->
|
46
|
-
child = new kind options
|
47
|
-
child.parent = this
|
48
|
-
@children.push child
|
49
|
-
child
|
50
|
-
|
51
|
-
# Required for Appetizer.View hierarchy management.
|
52
|
-
|
53
|
-
removeChild: (view) ->
|
54
|
-
@children.splice _.indexOf(@children, view), 1
|
55
|
-
this
|
56
|
-
|
57
|
-
addShowFunction: (item) ->
|
58
|
-
fn = "show#{item.charAt(0).toUpperCase()}#{item.slice 1}"
|
59
|
-
|
60
|
-
this[fn] = (kind, options) ->
|
61
|
-
if this[item]?
|
62
|
-
this[item].hide true
|
63
|
-
@removeChild this[item]
|
64
|
-
|
65
|
-
this[item] = @createChild(kind, options)
|
66
|
-
this[item].currentRoute = Backbone.history.getFragment()
|
67
|
-
|
68
|
-
@trigger "#{item}:showing", this[item]
|
69
|
-
this[item].bind "shown", => @trigger "#{item}:shown", this[item]
|
70
|
-
this[item].show()
|
@@ -1,139 +0,0 @@
|
|
1
|
-
# Shockingly enough, a superclass for views. Provides hooks and
|
2
|
-
# abstractions for incoming and outgoing bindings, parent and child
|
3
|
-
# views, default template rendering, async actions before show, and
|
4
|
-
# show()/hide()/makeVisible() helpers on top of render() and remove().
|
5
|
-
|
6
|
-
class Appetizer.View extends Backbone.View
|
7
|
-
|
8
|
-
# Subclasses must always call `super` in their initializers:
|
9
|
-
# Important binding, parent, and child relationships get created.
|
10
|
-
|
11
|
-
initialize: (options) ->
|
12
|
-
@bindings = []
|
13
|
-
@children = []
|
14
|
-
@parent = options.parent if options?.parent?
|
15
|
-
@route = options?.route or @constructor.route
|
16
|
-
|
17
|
-
@bind "ancestor:shown", ->
|
18
|
-
child.trigger "ancestor:shown" for child in @children
|
19
|
-
@shown = true
|
20
|
-
|
21
|
-
# true if the element or its ancestor have already been shown.
|
22
|
-
# Can be used at rendering time to execute operations that
|
23
|
-
# need the element to be hooked-up in the DOM, such as computing
|
24
|
-
# its height.
|
25
|
-
|
26
|
-
shown: false
|
27
|
-
|
28
|
-
# Add a child `view`. Its `parent` will be set to `this`, and it
|
29
|
-
# will be dismissed when this view is dismissed.
|
30
|
-
|
31
|
-
addChild: (view) ->
|
32
|
-
view.parent = this
|
33
|
-
@children.push view
|
34
|
-
this
|
35
|
-
|
36
|
-
# Hook to allow async processes to occur before and after showing
|
37
|
-
# the view. A bound callback `fn` is passed to this method by
|
38
|
-
# `show`, and should be called when the view is ready to be shown.
|
39
|
-
|
40
|
-
aroundShow: (fn) -> fn()
|
41
|
-
|
42
|
-
# Bind `fn` to an `event` on `src`, remembering that we've bound it
|
43
|
-
# for future unbinding. Use this instead of calling `bind` directly
|
44
|
-
# on other sources. Returns `this`.
|
45
|
-
|
46
|
-
bindTo: (src, event, fn) ->
|
47
|
-
src.bind event, fn, this
|
48
|
-
@bindings.push evt: event, fn: fn, src: src
|
49
|
-
this
|
50
|
-
|
51
|
-
# Create and return a new instance of `kind`, passing along
|
52
|
-
# `options` to the constructor. Add it as a child view.
|
53
|
-
|
54
|
-
createChild: (kind, options) ->
|
55
|
-
child = new kind options
|
56
|
-
@addChild child
|
57
|
-
child
|
58
|
-
|
59
|
-
# Indicate that this view is no longer necessary. Optionally takes a
|
60
|
-
# DOM event `e` and calls `preventDefault` on it to make wiring
|
61
|
-
# easier. Unbinds all incoming and outgoing events, calls `dismiss`
|
62
|
-
# on all children, and removes this view from any parent it might
|
63
|
-
# have. Returns `this`.
|
64
|
-
|
65
|
-
hide: (e) ->
|
66
|
-
e.preventDefault() if e?.preventDefault?
|
67
|
-
|
68
|
-
@trigger "hiding"
|
69
|
-
@remove()
|
70
|
-
|
71
|
-
@trigger "hidden"
|
72
|
-
@unbind()
|
73
|
-
|
74
|
-
_(@children).chain().clone().each (c) -> c.hide() if c.hide?
|
75
|
-
@parent.removeChild this if @parent?.removeChild
|
76
|
-
|
77
|
-
this
|
78
|
-
|
79
|
-
# Hook to provide actual DOM insertion/manipulation for the
|
80
|
-
# view. The default implementation logs an error message to the
|
81
|
-
# console.
|
82
|
-
|
83
|
-
makeVisible: ->
|
84
|
-
console.log "Can't make #{this.constructor.name} visible."
|
85
|
-
|
86
|
-
# Remove `view` from this view's list of children. Returns `this`.
|
87
|
-
|
88
|
-
removeChild: (view) ->
|
89
|
-
@children.splice _.indexOf(@children, view), 1
|
90
|
-
this
|
91
|
-
|
92
|
-
# Render the contents of the view. Updates the view element's
|
93
|
-
# contents, but doesn't do any other manipulation. Uses a JST based
|
94
|
-
# on either the view class' `template` default value or a `template`
|
95
|
-
# key passed in to the constructor. Triggers a "rendered" event
|
96
|
-
# after the element's contents are in place. Returns `this`.
|
97
|
-
#
|
98
|
-
# Assumes that views are under a "client/" prefix and that their
|
99
|
-
# template functions are available on a "JST" global.
|
100
|
-
|
101
|
-
render: =>
|
102
|
-
template = @options.template || @template || "appetizer/missing"
|
103
|
-
renderer = JST["client/#{template}"] or JST["client/appetizer/missing"]
|
104
|
-
|
105
|
-
@trigger "rendering"
|
106
|
-
$(@el).html renderer this
|
107
|
-
@trigger "rendered"
|
108
|
-
|
109
|
-
this
|
110
|
-
|
111
|
-
# Display this view. Possibly asynchronous: Passes a bound callback
|
112
|
-
# to `beforeShow` that will call `makeVisible` when the view is
|
113
|
-
# ready for display. The default implementation of `makeVisible`
|
114
|
-
# calls the callback immediately. Returns `this`.
|
115
|
-
|
116
|
-
show: ->
|
117
|
-
@aroundShow =>
|
118
|
-
@trigger "showing"
|
119
|
-
@makeVisible()
|
120
|
-
@trigger "shown"
|
121
|
-
|
122
|
-
@shown = true
|
123
|
-
child.trigger "ancestor:shown" for child in @children
|
124
|
-
|
125
|
-
this
|
126
|
-
|
127
|
-
# Unbind any listeners who have bound themselves to us, and unbind
|
128
|
-
# any listeners we've bound to others. Returns `this`.
|
129
|
-
|
130
|
-
unbind: ->
|
131
|
-
super # from Backbone.Events
|
132
|
-
b.src.unbind b.evt, b.fn for b in @bindings
|
133
|
-
this
|
134
|
-
|
135
|
-
# Unbind all events we may have bound on `src`. Returns `this`.
|
136
|
-
|
137
|
-
unbindFrom: (src) ->
|
138
|
-
b.src.unbind b.evt, b.fn for b in @bindings when b.src is src
|
139
|
-
this
|