class ReactiveRecord::WhileLoading

To notify React that something is loading use React::WhileLoading.loading! once everything is loaded then do React::WhileLoading.loaded_at message (typically a time stamp just for debug purposes)

Public Class Methods

add_style_sheet() click to toggle source
# File lib/reactive_record/active_record/reactive_record/while_loading.rb, line 147
def add_style_sheet
  @style_sheet ||= %x{
    $('<style type="text/css">'+
      '  .reactive_record_is_loading > .reactive_record_show_when_loaded { display: none; }'+
      '  .reactive_record_is_loaded > .reactive_record_show_while_loading { display: none; }'+
      '</style>').appendTo("head")
  }
end
get_next_while_loading_counter() click to toggle source
# File lib/reactive_record/active_record/reactive_record/while_loading.rb, line 86
def self.get_next_while_loading_counter
  @while_loading_counter += 1
end
has_observers?() click to toggle source
# File lib/reactive_record/active_record/reactive_record/while_loading.rb, line 94
def self.has_observers?
  React::State.has_observers?(self, :loaded_at)
end
loaded_at(loaded_at) click to toggle source
# File lib/reactive_record/active_record/reactive_record/while_loading.rb, line 128
def loaded_at(loaded_at)
  React::State.set_state(self, :loaded_at, loaded_at)
  @is_loading = false
end
loading!() click to toggle source
# File lib/reactive_record/active_record/reactive_record/while_loading.rb, line 121
def loading!
  React::RenderingContext.waiting_on_resources = true
  React::State.get_state(self, :loaded_at)
  React::State.set_state(self, :quiet, false)
  @is_loading = true
end
loading?() click to toggle source
# File lib/reactive_record/active_record/reactive_record/while_loading.rb, line 117
def loading?
  @is_loading
end
page_loaded?() click to toggle source
# File lib/reactive_record/active_record/reactive_record/while_loading.rb, line 137
def page_loaded?
  React::State.get_state(self, :page_loaded)
end
preload_css(css) click to toggle source
# File lib/reactive_record/active_record/reactive_record/while_loading.rb, line 90
def self.preload_css(css)
  @css_to_preload += "#{css}\n"
end
quiet!() click to toggle source
# File lib/reactive_record/active_record/reactive_record/while_loading.rb, line 141
def quiet!
  React::State.set_state(self, :quiet, true)
  after(1) { React::State.set_state(self, :page_loaded, true) } unless on_opal_server? or @page_loaded
  @page_loaded = true
end
quiet?() click to toggle source
# File lib/reactive_record/active_record/reactive_record/while_loading.rb, line 133
def quiet?
  React::State.get_state(self, :quiet)
end

Public Instance Methods

render() click to toggle source
# File lib/reactive_record/active_record/reactive_record/while_loading.rb, line 181
def render
  props = params.element_props.dup
  classes = [props[:class], props[:className], "reactive_record_while_loading_container_#{@uniq_id}"].compact.join(" ")
  props.merge!({
    "data-reactive_record_while_loading_container_id" => @uniq_id,
    "data-reactive_record_enclosing_while_loading_container_id" => @uniq_id,
    class: classes
  })
  React.create_element(params.element_type[0], props) do
    params.loaded_children + params.loading_children
  end.tap { |e| e.waiting_on_resources = params.loading }
end