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