Class: Tasks
Overview
The tasks class provides an interface to call tasks on the backend server.
Instance Method Summary collapse
- #call(class_name, method_name, *args, &callback) ⇒ Object
-
#initialize(page) ⇒ Tasks
constructor
A new instance of Tasks.
- #received_message(name, callback_id, *args) ⇒ Object
- #reload ⇒ Object
- #response(callback_id, *args) ⇒ Object
- #update(model_id, data) ⇒ Object
Constructor Details
#initialize(page) ⇒ Tasks
Returns a new instance of Tasks.
4 5 6 7 8 9 10 11 12 |
# File 'lib/volt/page/tasks.rb', line 4 def initialize(page) @page = page @callback_id = 0 @callbacks = {} page.channel.on('message') do |_, *args| (*args) end end |
Instance Method Details
#call(class_name, method_name, *args, &callback) ⇒ Object
14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
# File 'lib/volt/page/tasks.rb', line 14 def call(class_name, method_name, *args, &callback) if callback callback_id = @callback_id @callback_id += 1 # Track the callback # TODO: Timeout on these callbacks @callbacks[callback_id] = callback else callback_id = nil end @page.channel.([callback_id, class_name, method_name, *args]) end |
#received_message(name, callback_id, *args) ⇒ Object
30 31 32 33 34 35 36 37 38 39 |
# File 'lib/volt/page/tasks.rb', line 30 def (name, callback_id, *args) case name when 'response' response(callback_id, *args) when 'update' update(*args) when 'reload' reload end end |
#reload ⇒ Object
56 57 58 59 60 |
# File 'lib/volt/page/tasks.rb', line 56 def reload puts "RELOAD" $page.page._reloading = true `window.location.reload(false);` end |
#response(callback_id, *args) ⇒ Object
41 42 43 44 45 46 47 |
# File 'lib/volt/page/tasks.rb', line 41 def response(callback_id, *args) callback = @callbacks.delete(callback_id) if callback callback.call(*args) end end |