volt 0.3.7 → 0.3.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/VERSION +1 -1
- data/app/volt/assets/css/notices.css.scss +8 -0
- data/app/volt/tasks/channel_tasks.rb +33 -0
- data/app/volt/tasks/store_tasks.rb +45 -0
- data/app/volt/views/notices/index.html +11 -0
- data/lib/volt/controllers/model_controller.rb +4 -0
- data/lib/volt/models/array_model.rb +11 -1
- data/lib/volt/models/model.rb +22 -14
- data/lib/volt/models/model_wrapper.rb +13 -6
- data/lib/volt/models/params.rb +6 -1
- data/lib/volt/models/params_array.rb +9 -0
- data/lib/volt/models/store.rb +164 -0
- data/lib/volt/models/store_array.rb +15 -0
- data/lib/volt/models/url.rb +0 -4
- data/lib/volt/models.rb +1 -0
- data/lib/volt/{templates → page/bindings}/attribute_binding.rb +8 -7
- data/lib/volt/{templates → page/bindings}/base_binding.rb +6 -1
- data/lib/volt/{templates → page/bindings}/content_binding.rb +1 -1
- data/lib/volt/{templates → page/bindings}/each_binding.rb +15 -6
- data/lib/volt/{templates → page/bindings}/event_binding.rb +1 -5
- data/lib/volt/{templates → page/bindings}/if_binding.rb +1 -1
- data/lib/volt/{templates → page/bindings}/template_binding.rb +16 -7
- data/lib/volt/page/channel.rb +105 -0
- data/lib/volt/{templates → page}/document_events.rb +0 -0
- data/lib/volt/{templates → page}/memory_test.rb +0 -0
- data/lib/volt/{templates → page}/page.rb +22 -21
- data/lib/volt/{templates → page}/reactive_template.rb +0 -0
- data/lib/volt/{templates → page}/render_queue.rb +0 -0
- data/lib/volt/{templates → page}/sub_context.rb +0 -0
- data/lib/volt/{templates → page}/targets/attribute_section.rb +1 -1
- data/lib/volt/{templates → page}/targets/attribute_target.rb +4 -4
- data/lib/volt/{templates → page}/targets/base_section.rb +0 -0
- data/lib/volt/{templates → page}/targets/binding_document/base_node.rb +0 -0
- data/lib/volt/{templates → page}/targets/binding_document/component_node.rb +1 -1
- data/lib/volt/{templates → page}/targets/binding_document/html_node.rb +1 -1
- data/lib/volt/{templates → page}/targets/dom_section.rb +1 -1
- data/lib/volt/{templates → page}/targets/dom_target.rb +2 -2
- data/lib/volt/page/tasks.rb +61 -0
- data/lib/volt/{templates → page}/template_renderer.rb +1 -1
- data/lib/volt/reactive/destructive_methods.rb +19 -0
- data/lib/volt/reactive/event_chain.rb +13 -19
- data/lib/volt/reactive/events.rb +30 -116
- data/lib/volt/reactive/object_tracker.rb +29 -22
- data/lib/volt/reactive/reactive_array.rb +2 -3
- data/lib/volt/reactive/reactive_tags.rb +7 -0
- data/lib/volt/reactive/reactive_value.rb +86 -81
- data/lib/volt/reactive/string_extensions.rb +0 -3
- data/lib/volt/router/routes.rb +2 -2
- data/lib/volt/server/channel_handler.rb +24 -4
- data/lib/volt/server/component_handler.rb +2 -1
- data/lib/volt/server/rack/component_files.rb +3 -2
- data/lib/volt/server/rack/component_paths.rb +11 -1
- data/lib/volt/server/rack/index_files.rb +1 -1
- data/lib/volt/server.rb +16 -0
- data/lib/volt/store/mongo.rb +1 -1
- data/lib/volt/tasks/dispatcher.rb +25 -0
- data/spec/models/model_spec.rb +90 -15
- data/spec/models/params_spec.rb +16 -0
- data/spec/models/reactive_array_spec.rb +17 -18
- data/spec/models/reactive_value_spec.rb +11 -0
- data/spec/models/store_spec.rb +16 -0
- data/spec/server/rack/component_files_spec.rb +18 -16
- data/spec/server/rack/component_paths_spec.rb +21 -19
- data/spec/templates/targets/binding_document/component_node_spec.rb +1 -1
- data/spec/templates/template_binding_spec.rb +1 -1
- data/templates/project/app/home/views/index/index.html +2 -0
- data/volt.gemspec +2 -0
- metadata +67 -25
- data/lib/volt/templates/channel.rb +0 -47
data/spec/models/model_spec.rb
CHANGED
@@ -228,19 +228,19 @@ describe Model do
|
|
228
228
|
expect(model._item._lists.cur.class).to eq(ArrayModel)
|
229
229
|
end
|
230
230
|
|
231
|
-
|
232
|
-
|
233
|
-
|
234
|
-
|
235
|
-
|
236
|
-
|
237
|
-
|
238
|
-
|
239
|
-
|
240
|
-
|
241
|
-
|
242
|
-
|
243
|
-
|
231
|
+
it "should call changed when a the reference to a submodel is assigned to another value" do
|
232
|
+
a = ReactiveValue.new(Model.new)
|
233
|
+
|
234
|
+
count = 0
|
235
|
+
a._blue._green.on('changed') { count += 1 }
|
236
|
+
expect(count).to eq(0)
|
237
|
+
|
238
|
+
a._blue._green = 5
|
239
|
+
expect(count).to eq(1)
|
240
|
+
|
241
|
+
a._blue = 22
|
242
|
+
expect(count).to eq(2)
|
243
|
+
end
|
244
244
|
|
245
245
|
it "should trigger changed when a value is deleted" do
|
246
246
|
a = ReactiveValue.new(Model.new)
|
@@ -260,6 +260,11 @@ describe Model do
|
|
260
260
|
|
261
261
|
end
|
262
262
|
|
263
|
+
it "should let you append nested hashes" do
|
264
|
+
a = Model.new
|
265
|
+
# TODO: Fails
|
266
|
+
# a._items << {_name: {_text: 'Name'}}
|
267
|
+
end
|
263
268
|
|
264
269
|
it "should work" do
|
265
270
|
store = ReactiveValue.new(Model.new)
|
@@ -319,8 +324,6 @@ describe Model do
|
|
319
324
|
expect(count).to eq(0)
|
320
325
|
expect(passed_count).to eq(0)
|
321
326
|
|
322
|
-
# puts a._list.cur.event_followers.inspect
|
323
|
-
|
324
327
|
a._list << 2
|
325
328
|
expect(count).to eq(1)
|
326
329
|
expect(passed_count).to eq(0)
|
@@ -336,4 +339,76 @@ describe Model do
|
|
336
339
|
a._new_item._name = 'Testing'
|
337
340
|
# expect(count).to eq(1)
|
338
341
|
end
|
342
|
+
|
343
|
+
describe "paths" do
|
344
|
+
it "should store the path" do
|
345
|
+
a = Model.new
|
346
|
+
expect(a._test.path).to eq([:_test])
|
347
|
+
a._test = {_name: 'Yes'}
|
348
|
+
expect(a._test.path).to eq([:_test])
|
349
|
+
|
350
|
+
a._items << {_name: 'Yes'}
|
351
|
+
expect(a._items.path).to eq([:_items])
|
352
|
+
expect(a._items[0].path).to eq([:_items, :[]])
|
353
|
+
end
|
354
|
+
|
355
|
+
it "should store the paths when assigned" do
|
356
|
+
a = Model.new
|
357
|
+
|
358
|
+
a._items = [{_name: 'Cool'}]
|
359
|
+
|
360
|
+
expect(a._items.path).to eq([:_items])
|
361
|
+
expect(a._items[0].path).to eq([:_items, :[]])
|
362
|
+
end
|
363
|
+
|
364
|
+
it "should handle nested paths" do
|
365
|
+
a = Model.new
|
366
|
+
|
367
|
+
a._items << {_name: 'Cool', _lists: [{_name: 'One'}, {_name: 'Two'}]}
|
368
|
+
|
369
|
+
expect(a._items[0]._lists.path).to eq([:_items, :[], :_lists])
|
370
|
+
expect(a._items[0]._lists[1].path).to eq([:_items, :[], :_lists, :[]])
|
371
|
+
end
|
372
|
+
|
373
|
+
it "should trigger added when added" do
|
374
|
+
a = ReactiveValue.new(Model.new)
|
375
|
+
count = 0
|
376
|
+
b = a._items
|
377
|
+
|
378
|
+
b.on('added') { count += 1 }
|
379
|
+
expect(count).to eq(0)
|
380
|
+
|
381
|
+
c = b.cur
|
382
|
+
c << {_name: 'one'}
|
383
|
+
|
384
|
+
# TODO: Without fetching this again, this fails.
|
385
|
+
c = b.cur
|
386
|
+
|
387
|
+
c << {_name: 'two'}
|
388
|
+
|
389
|
+
expect(count).to eq(2)
|
390
|
+
end
|
391
|
+
end
|
392
|
+
|
393
|
+
it "should trigger on false assign" do
|
394
|
+
a = ReactiveValue.new(Model.new)
|
395
|
+
|
396
|
+
count1 = 0
|
397
|
+
count2 = 0
|
398
|
+
|
399
|
+
b = a._complete
|
400
|
+
c = a._complete
|
401
|
+
b.on('changed') { count1 += 1 }
|
402
|
+
c.on('changed') { count2 += 1 }
|
403
|
+
expect(count1).to eq(0)
|
404
|
+
|
405
|
+
b._complete = true
|
406
|
+
expect(count1).to eq(1)
|
407
|
+
expect(count2).to eq(1)
|
408
|
+
|
409
|
+
b._complete = false
|
410
|
+
expect(count1).to eq(2)
|
411
|
+
expect(count2).to eq(2)
|
412
|
+
|
413
|
+
end
|
339
414
|
end
|
@@ -0,0 +1,16 @@
|
|
1
|
+
require 'volt/models'
|
2
|
+
|
3
|
+
describe Params do
|
4
|
+
it "should stay as params classes when used" do
|
5
|
+
a = Params.new
|
6
|
+
expect(a._test.class).to eq(Params)
|
7
|
+
|
8
|
+
expect(a._test._cool.class).to eq(Params)
|
9
|
+
|
10
|
+
a._items << {_name: 'Test'}
|
11
|
+
|
12
|
+
expect(a._items.class).to eq(ParamsArray)
|
13
|
+
expect(a._items[0].class).to eq(Params)
|
14
|
+
expect(a._items[0]._name.class).to eq(String)
|
15
|
+
end
|
16
|
+
end
|
@@ -180,24 +180,23 @@ describe ReactiveArray do
|
|
180
180
|
|
181
181
|
end
|
182
182
|
|
183
|
-
|
184
|
-
|
185
|
-
|
186
|
-
|
187
|
-
|
188
|
-
|
189
|
-
|
190
|
-
|
191
|
-
|
192
|
-
|
193
|
-
|
194
|
-
|
195
|
-
|
196
|
-
|
197
|
-
|
198
|
-
|
199
|
-
|
200
|
-
end
|
183
|
+
# TODO: Needs to be fixed
|
184
|
+
# it "should call added through an index from one array to a sub array" do
|
185
|
+
# model = ReactiveValue.new(Model.new)
|
186
|
+
# index = ReactiveValue.new(nil)
|
187
|
+
#
|
188
|
+
# count = 0
|
189
|
+
# model._current_todo._todos.on('added') { count += 1 }
|
190
|
+
# expect(count).to eq(0)
|
191
|
+
#
|
192
|
+
# model._todo_lists << Model.new(_name: 'One', _todos: [])
|
193
|
+
# model._todo_lists << Model.new(_name: 'Two', _todos: [])
|
194
|
+
#
|
195
|
+
# model._current_todo = model._todo_lists[0]
|
196
|
+
#
|
197
|
+
# model._current_todo._todos << "Svoltle todo"
|
198
|
+
# expect(count).to eq(1)
|
199
|
+
# end
|
201
200
|
|
202
201
|
it "should trigger changed when an item is deleted" do
|
203
202
|
model = ReactiveValue.new(Model.new)
|
@@ -141,6 +141,17 @@ describe ReactiveValue do
|
|
141
141
|
expect(b.reactive?).to eq(true)
|
142
142
|
expect(a.cur).not_to eq(nil)
|
143
143
|
end
|
144
|
+
|
145
|
+
it "should only chain one event up" do
|
146
|
+
a = ReactiveValue.new('1')
|
147
|
+
b = a.to_i
|
148
|
+
|
149
|
+
count = 0
|
150
|
+
b.on('changed') { count += 1 }
|
151
|
+
b.on('changed') { count += 1 }
|
152
|
+
|
153
|
+
expect(a.reactive_manager.listeners[:changed].size).to eq(1)
|
154
|
+
end
|
144
155
|
end
|
145
156
|
|
146
157
|
describe "events" do
|
@@ -0,0 +1,16 @@
|
|
1
|
+
require 'volt/models'
|
2
|
+
|
3
|
+
describe Store do
|
4
|
+
it "should stay as store classes when used" do
|
5
|
+
a = Store.new
|
6
|
+
expect(a._test.class).to eq(Store)
|
7
|
+
|
8
|
+
expect(a._test._cool.class).to eq(Store)
|
9
|
+
|
10
|
+
a._items << {_name: 'Test'}
|
11
|
+
|
12
|
+
expect(a._items.class).to eq(StoreArray)
|
13
|
+
expect(a._items[0].class).to eq(Store)
|
14
|
+
expect(a._items[0]._name.class).to eq(String)
|
15
|
+
end
|
16
|
+
end
|
@@ -1,23 +1,25 @@
|
|
1
|
-
|
1
|
+
if RUBY_PLATFORM != 'opal'
|
2
|
+
require 'volt/server/rack/component_files'
|
2
3
|
|
3
|
-
describe ComponentFiles do
|
4
|
-
|
5
|
-
|
4
|
+
describe ComponentFiles do
|
5
|
+
before do
|
6
|
+
spec_app_root = File.join(File.dirname(__FILE__), "../..")
|
6
7
|
|
7
|
-
|
8
|
-
|
9
|
-
|
8
|
+
path_to_main = File.join(File.dirname(__FILE__), "../../app/main")
|
9
|
+
@component_paths = ComponentPaths.new(spec_app_root)
|
10
|
+
end
|
10
11
|
|
11
|
-
|
12
|
-
|
12
|
+
it "should return the dependencies list" do
|
13
|
+
main = ComponentFiles.new("main", @component_paths)
|
13
14
|
|
14
|
-
|
15
|
-
|
16
|
-
|
15
|
+
components = main.components
|
16
|
+
expect(components).to eq(['main', 'shared', 'bootstrap', "slideshow"])
|
17
|
+
end
|
17
18
|
|
18
|
-
|
19
|
-
|
19
|
+
it "should list all JS files" do
|
20
|
+
main = ComponentFiles.new("main", @component_paths)
|
20
21
|
|
21
|
-
|
22
|
+
expect(main.javascript_files(nil)).to eq(["/assets/js/test2.js", "/assets/js/bootstrap.js", "/assets/volt/page/page.js", "/components/home.js", "/assets/js/test3.js", "/assets/js/test1.js"])
|
23
|
+
end
|
22
24
|
end
|
23
|
-
end
|
25
|
+
end
|
@@ -1,26 +1,28 @@
|
|
1
|
-
|
1
|
+
if RUBY_PLATFORM != 'opal'
|
2
|
+
require 'volt/server/rack/component_paths'
|
2
3
|
|
3
|
-
describe ComponentPaths do
|
4
|
-
|
5
|
-
|
4
|
+
describe ComponentPaths do
|
5
|
+
before do
|
6
|
+
spec_app_root = File.join(File.dirname(__FILE__), "../..")
|
6
7
|
|
7
|
-
|
8
|
-
|
9
|
-
|
8
|
+
path_to_main = File.join(File.dirname(__FILE__), "../../app/main")
|
9
|
+
@component_paths = ComponentPaths.new(spec_app_root)
|
10
|
+
end
|
10
11
|
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
12
|
+
it "should return the paths to all app folders" do
|
13
|
+
match_count = 0
|
14
|
+
@component_paths.app_folders do |app_folder|
|
15
|
+
if app_folder[/spec\/app$/] || app_folder[/spec\/vendor\/app$/]
|
16
|
+
match_count += 1
|
17
|
+
end
|
16
18
|
end
|
17
|
-
end
|
18
19
|
|
19
|
-
|
20
|
-
|
20
|
+
expect(match_count).to eq(2)
|
21
|
+
end
|
21
22
|
|
22
|
-
|
23
|
-
|
24
|
-
|
23
|
+
it "should return the path to a component" do
|
24
|
+
main_path = @component_paths.component_path('main')
|
25
|
+
expect(main_path).to match(/spec\/app\/main$/)
|
26
|
+
end
|
25
27
|
end
|
26
|
-
end
|
28
|
+
end
|
data/volt.gemspec
CHANGED
@@ -27,10 +27,12 @@ Gem::Specification.new do |spec|
|
|
27
27
|
spec.add_dependency "sprockets-sass", "~> 1.0.0"
|
28
28
|
spec.add_dependency "sass", "~> 3.2.5"
|
29
29
|
spec.add_dependency "mongo", "~> 1.9.0"
|
30
|
+
spec.add_dependency "bson_ext", "~> 1.9.0"
|
30
31
|
spec.add_dependency "thin", "~> 1.6.0"
|
31
32
|
spec.add_dependency "multi_json", "~> 1.8.2"
|
32
33
|
spec.add_dependency "oj", "~> 2.5.0"
|
33
34
|
spec.add_dependency "rake", "~> 10.0.4"
|
35
|
+
spec.add_dependency "listen", "~> 2.4.0"
|
34
36
|
|
35
37
|
|
36
38
|
spec.add_development_dependency "bundler", "~> 1.5"
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: volt
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.3.
|
4
|
+
version: 0.3.8
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ryan Stout
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-01-
|
11
|
+
date: 2014-01-21 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: thor
|
@@ -122,6 +122,20 @@ dependencies:
|
|
122
122
|
- - "~>"
|
123
123
|
- !ruby/object:Gem::Version
|
124
124
|
version: 1.9.0
|
125
|
+
- !ruby/object:Gem::Dependency
|
126
|
+
name: bson_ext
|
127
|
+
requirement: !ruby/object:Gem::Requirement
|
128
|
+
requirements:
|
129
|
+
- - "~>"
|
130
|
+
- !ruby/object:Gem::Version
|
131
|
+
version: 1.9.0
|
132
|
+
type: :runtime
|
133
|
+
prerelease: false
|
134
|
+
version_requirements: !ruby/object:Gem::Requirement
|
135
|
+
requirements:
|
136
|
+
- - "~>"
|
137
|
+
- !ruby/object:Gem::Version
|
138
|
+
version: 1.9.0
|
125
139
|
- !ruby/object:Gem::Dependency
|
126
140
|
name: thin
|
127
141
|
requirement: !ruby/object:Gem::Requirement
|
@@ -178,6 +192,20 @@ dependencies:
|
|
178
192
|
- - "~>"
|
179
193
|
- !ruby/object:Gem::Version
|
180
194
|
version: 10.0.4
|
195
|
+
- !ruby/object:Gem::Dependency
|
196
|
+
name: listen
|
197
|
+
requirement: !ruby/object:Gem::Requirement
|
198
|
+
requirements:
|
199
|
+
- - "~>"
|
200
|
+
- !ruby/object:Gem::Version
|
201
|
+
version: 2.4.0
|
202
|
+
type: :runtime
|
203
|
+
prerelease: false
|
204
|
+
version_requirements: !ruby/object:Gem::Requirement
|
205
|
+
requirements:
|
206
|
+
- - "~>"
|
207
|
+
- !ruby/object:Gem::Version
|
208
|
+
version: 2.4.0
|
181
209
|
- !ruby/object:Gem::Dependency
|
182
210
|
name: bundler
|
183
211
|
requirement: !ruby/object:Gem::Requirement
|
@@ -266,8 +294,12 @@ files:
|
|
266
294
|
- Rakefile
|
267
295
|
- Readme.md
|
268
296
|
- VERSION
|
297
|
+
- app/volt/assets/css/notices.css.scss
|
269
298
|
- app/volt/assets/js/jquery-2.0.3.js
|
270
299
|
- app/volt/assets/js/sockjs-0.2.1.min.js
|
300
|
+
- app/volt/tasks/channel_tasks.rb
|
301
|
+
- app/volt/tasks/store_tasks.rb
|
302
|
+
- app/volt/views/notices/index.html
|
271
303
|
- bin/volt
|
272
304
|
- docs/GETTING_STARTED.md
|
273
305
|
- lib/volt.rb
|
@@ -290,9 +322,37 @@ files:
|
|
290
322
|
- lib/volt/models/model.rb
|
291
323
|
- lib/volt/models/model_wrapper.rb
|
292
324
|
- lib/volt/models/params.rb
|
325
|
+
- lib/volt/models/params_array.rb
|
326
|
+
- lib/volt/models/store.rb
|
327
|
+
- lib/volt/models/store_array.rb
|
293
328
|
- lib/volt/models/url.rb
|
329
|
+
- lib/volt/page/bindings/attribute_binding.rb
|
330
|
+
- lib/volt/page/bindings/base_binding.rb
|
331
|
+
- lib/volt/page/bindings/content_binding.rb
|
332
|
+
- lib/volt/page/bindings/each_binding.rb
|
333
|
+
- lib/volt/page/bindings/event_binding.rb
|
334
|
+
- lib/volt/page/bindings/if_binding.rb
|
335
|
+
- lib/volt/page/bindings/template_binding.rb
|
336
|
+
- lib/volt/page/channel.rb
|
337
|
+
- lib/volt/page/document_events.rb
|
338
|
+
- lib/volt/page/memory_test.rb
|
339
|
+
- lib/volt/page/page.rb
|
340
|
+
- lib/volt/page/reactive_template.rb
|
341
|
+
- lib/volt/page/render_queue.rb
|
342
|
+
- lib/volt/page/sub_context.rb
|
343
|
+
- lib/volt/page/targets/attribute_section.rb
|
344
|
+
- lib/volt/page/targets/attribute_target.rb
|
345
|
+
- lib/volt/page/targets/base_section.rb
|
346
|
+
- lib/volt/page/targets/binding_document/base_node.rb
|
347
|
+
- lib/volt/page/targets/binding_document/component_node.rb
|
348
|
+
- lib/volt/page/targets/binding_document/html_node.rb
|
349
|
+
- lib/volt/page/targets/dom_section.rb
|
350
|
+
- lib/volt/page/targets/dom_target.rb
|
351
|
+
- lib/volt/page/tasks.rb
|
352
|
+
- lib/volt/page/template_renderer.rb
|
294
353
|
- lib/volt/page/url_tracker.rb
|
295
354
|
- lib/volt/reactive/array_extensions.rb
|
355
|
+
- lib/volt/reactive/destructive_methods.rb
|
296
356
|
- lib/volt/reactive/event_chain.rb
|
297
357
|
- lib/volt/reactive/events.rb
|
298
358
|
- lib/volt/reactive/object_tracker.rb
|
@@ -316,29 +376,7 @@ files:
|
|
316
376
|
- lib/volt/server/scope.rb
|
317
377
|
- lib/volt/server/template_parser.rb
|
318
378
|
- lib/volt/store/mongo.rb
|
319
|
-
- lib/volt/
|
320
|
-
- lib/volt/templates/base_binding.rb
|
321
|
-
- lib/volt/templates/channel.rb
|
322
|
-
- lib/volt/templates/content_binding.rb
|
323
|
-
- lib/volt/templates/document_events.rb
|
324
|
-
- lib/volt/templates/each_binding.rb
|
325
|
-
- lib/volt/templates/event_binding.rb
|
326
|
-
- lib/volt/templates/if_binding.rb
|
327
|
-
- lib/volt/templates/memory_test.rb
|
328
|
-
- lib/volt/templates/page.rb
|
329
|
-
- lib/volt/templates/reactive_template.rb
|
330
|
-
- lib/volt/templates/render_queue.rb
|
331
|
-
- lib/volt/templates/sub_context.rb
|
332
|
-
- lib/volt/templates/targets/attribute_section.rb
|
333
|
-
- lib/volt/templates/targets/attribute_target.rb
|
334
|
-
- lib/volt/templates/targets/base_section.rb
|
335
|
-
- lib/volt/templates/targets/binding_document/base_node.rb
|
336
|
-
- lib/volt/templates/targets/binding_document/component_node.rb
|
337
|
-
- lib/volt/templates/targets/binding_document/html_node.rb
|
338
|
-
- lib/volt/templates/targets/dom_section.rb
|
339
|
-
- lib/volt/templates/targets/dom_target.rb
|
340
|
-
- lib/volt/templates/template_binding.rb
|
341
|
-
- lib/volt/templates/template_renderer.rb
|
379
|
+
- lib/volt/tasks/dispatcher.rb
|
342
380
|
- lib/volt/volt/environment.rb
|
343
381
|
- spec/app/bootstrap/assets/js/bootstrap.js
|
344
382
|
- spec/app/main/assets/js/test1.js
|
@@ -349,9 +387,11 @@ files:
|
|
349
387
|
- spec/models/event_chain_spec.rb
|
350
388
|
- spec/models/model_spec.rb
|
351
389
|
- spec/models/old_model_spec.rb
|
390
|
+
- spec/models/params_spec.rb
|
352
391
|
- spec/models/reactive_array_spec.rb
|
353
392
|
- spec/models/reactive_tags_spec.rb
|
354
393
|
- spec/models/reactive_value_spec.rb
|
394
|
+
- spec/models/store_spec.rb
|
355
395
|
- spec/models/string_extensions_spec.rb
|
356
396
|
- spec/router/routes_spec.rb
|
357
397
|
- spec/server/rack/component_files_spec.rb
|
@@ -429,9 +469,11 @@ test_files:
|
|
429
469
|
- spec/models/event_chain_spec.rb
|
430
470
|
- spec/models/model_spec.rb
|
431
471
|
- spec/models/old_model_spec.rb
|
472
|
+
- spec/models/params_spec.rb
|
432
473
|
- spec/models/reactive_array_spec.rb
|
433
474
|
- spec/models/reactive_tags_spec.rb
|
434
475
|
- spec/models/reactive_value_spec.rb
|
476
|
+
- spec/models/store_spec.rb
|
435
477
|
- spec/models/string_extensions_spec.rb
|
436
478
|
- spec/router/routes_spec.rb
|
437
479
|
- spec/server/rack/component_files_spec.rb
|
@@ -1,47 +0,0 @@
|
|
1
|
-
# The channel is the connection between the front end and the backend.
|
2
|
-
|
3
|
-
require 'volt/reactive/events'
|
4
|
-
require 'json'
|
5
|
-
|
6
|
-
class Channel
|
7
|
-
include Events
|
8
|
-
|
9
|
-
def initialize
|
10
|
-
@socket = nil
|
11
|
-
%x{
|
12
|
-
this.socket = new SockJS('http://localhost:3000/channel');//, {reconnect: true});
|
13
|
-
|
14
|
-
this.socket.onopen = function() {
|
15
|
-
self['$trigger!']("open");
|
16
|
-
};
|
17
|
-
|
18
|
-
this.socket.onmessage = function(message) {
|
19
|
-
console.log('received: ', message);
|
20
|
-
self['$message_received'](message.data);
|
21
|
-
};
|
22
|
-
}
|
23
|
-
end
|
24
|
-
|
25
|
-
def message_received(message)
|
26
|
-
message = JSON.parse(message)
|
27
|
-
puts "Got #{message.inspect}"
|
28
|
-
|
29
|
-
trigger!('message', message)
|
30
|
-
end
|
31
|
-
|
32
|
-
def send(message)
|
33
|
-
# TODO: Temp: wrap message in an array, so we're sure its valid JSON
|
34
|
-
message = JSON.dump([message])
|
35
|
-
%x{
|
36
|
-
//message = window.JSON.parse(message);
|
37
|
-
console.log('send: ', message);
|
38
|
-
this.socket.send(message);
|
39
|
-
}
|
40
|
-
end
|
41
|
-
|
42
|
-
def close
|
43
|
-
%x{
|
44
|
-
this.socket.close();
|
45
|
-
}
|
46
|
-
end
|
47
|
-
end
|