class Ecoportal::API::V2::Page::Component

Public Class Methods

get_class(doc) click to toggle source
# File lib/ecoportal/api/v2/page/component.rb, line 41
def get_class(doc)
  if doc.is_a?(Hash)
    case doc["type"]
    when "tag_field"
      tag_field_class
    when "geo"
      geo_field_class
    when "select"
      selection_field_class
    when "date"
      date_field_class
    when "number"
      number_field_class
    when "gauge"
      gauge_field_class
    when "plain_text"
      plain_text_field_class
    when "rich_text"
      rich_text_field_class
    when "people"
      people_field_class
    when "checklist"
      checklist_field_class
    when "page_action","checklist_task"
      action_field_class
    when "file"
      files_field_class
    when "image_gallery"
      images_field_class
    when "signature"
      signature_field_class
    when "cross_reference"
      reference_field_class
    when "law"
      law_field_class
    when "chart"
      chart_field_class
    when "frequency_rate_chart"
      chart_fr_field_class
    else
      self
    end
  end
end
new_doc(type: nil) click to toggle source
# File lib/ecoportal/api/v2/page/component.rb, line 28
def new_doc(type: nil)
  {
    "id"         => new_uuid
  }.tap do |base_doc|
    if type
      base_doc.merge!({"type" => type})
      if klass = get_class(base_doc)
        base_doc.merge!(klass.new_doc || {})
      end
    end
  end
end

Public Instance Methods

configure(*conf) click to toggle source

Quick config helper @param conf [Symbol, Array<Symbol>]

- `:required`
- `:hide_view` to hide in view mode
- `:hide_mobile` to hide in mobile app
- `:hide_reports` to hide in reports
- `:global` to define a global binding
# File lib/ecoportal/api/v2/page/component.rb, line 121
def configure(*conf)
  conf.each_with_object([]) do |cnf, unused|
    case cnf
    when :required
      self.required  = true
    when :hide_view
      self.hide_view = true
    when :hide_mobile
      self.hidden_on_mobile = true
    when :hide_reports
      self.hidden_on_reports = true
    when Hash
      if cnf.key?(:global)
        self.global_binding = cnf[:global]
      end
    else
      unused.push(cnf)
    end
  end.tap do |unused|
    raise "Unsupported configuration options '#{unused}' for #{self.class}" unless unused.empty?
  end
end
create_event=(value) click to toggle source
# File lib/ecoportal/api/v2/page/component/date_field.rb, line 32
def create_event=(value)
  self.past_only = false
  doc["create_event"] = !!value
end
indexable_label() click to toggle source
# File lib/ecoportal/api/v2/page/component.rb, line 110
def indexable_label
  self.class.indexable_label(label)
end
ref() click to toggle source
# File lib/ecoportal/api/v2/page/component.rb, line 100
def ref
  if digest = self.class.hash_label(label)
    [type, digest].join(".")
  end
end
ref_backend() click to toggle source
# File lib/ecoportal/api/v2/page/component.rb, line 96
def ref_backend
  refs.first
end
section() click to toggle source
# File lib/ecoportal/api/v2/page/component.rb, line 106
def section
  root.sections.find {|sec| sec.component?(id)}
end

Private Instance Methods

configure_reminder(value) click to toggle source
# File lib/ecoportal/api/v2/page/component/date_field.rb, line 77
def configure_reminder(value)
  case value
  when :never, NilClass
    self.remind_me_in = "never"
  when :one_day
    self.remind_me_in = "1.day"
  when :three_days
    self.remind_me_in = "3.days"
  when :one_week
    self.remind_me_in = "1.week"
  when :two_weeks
    self.remind_me_in = "2.weeks"
  when :one_month
    self.remind_me_in = "1.month"
  else
    # Unsupported
  end
end