Class: AspaceFormHelper::FormContext::JSONModelDefinition

Inherits:
BaseDefinition
  • Object
show all
Defined in:
frontend/app/helpers/aspace_form_helper.rb

Instance Method Summary (collapse)

Constructor Details

- (JSONModelDefinition) initialize(jsonmodel, root)

Returns a new instance of JSONModelDefinition



591
592
593
594
# File 'frontend/app/helpers/aspace_form_helper.rb', line 591

def initialize(jsonmodel, root)
  @jsonmodel = jsonmodel
  @root = root
end

Instance Method Details

- (Object) allowable_types_for(name)



619
620
621
622
623
624
625
626
627
628
629
630
# File 'frontend/app/helpers/aspace_form_helper.rb', line 619

def allowable_types_for(name)
  defn = jsonmodel_schema_definition(name)

  if defn
    ASUtils.extract_nested_strings(defn).map {|s|
      ref = JSONModel.parse_jsonmodel_ref(s)
      ref.first.to_s if ref
    }.compact
  else
    []
  end
end

- (Object) default_for(name)



603
604
605
606
607
608
609
610
611
612
613
614
615
616
# File 'frontend/app/helpers/aspace_form_helper.rb', line 603

def default_for(name)
  if jsonmodel_schema_definition(name)
    if jsonmodel_schema_definition(name).has_key?('dynamic_enum')
      if jsonmodel_schema_definition(name)['default']
        Rails.logger.warn("Superfluous default value at: #{@jsonmodel}.#{name} ")
      end
      JSONModel.enum_default_value(jsonmodel_schema_definition(name)['dynamic_enum'])
    else
      jsonmodel_schema_definition(name)['default']
    end
  else
    nil
  end
end

- (Object) options_for(context, property, add_empty_options = false, opts = {})



633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
# File 'frontend/app/helpers/aspace_form_helper.rb', line 633

def options_for(context, property, add_empty_options = false, opts = {})
  options = []
  options.push([(opts[:empty_label] || ""),""]) if add_empty_options

  defn = jsonmodel_schema_definition(property)

  jsonmodel_enum_for(property).each do |v|
    if opts[:include] && !opts[:include].include?(v)
      next
    end
    if opts[:exclude] && opts[:exclude].include?(v)
      next
    end
    if opts.has_key?(:i18n_path_for) && opts[:i18n_path_for].has_key?(v)
      i18n_path = opts[:i18n_path_for][v]
    elsif opts.has_key?(:i18n_prefix)
      i18n_path =  "#{opts[:i18n_prefix]}.#{v}"
    elsif defn.has_key?('dynamic_enum')
      i18n_path = {
        :enumeration =>  defn['dynamic_enum'],
        :value => v
      }
    else
      i18n_path = context.i18n_for("#{Array(property).last}_#{v}")
    end
    options.push([I18n.t(i18n_path, :default => v), v])
  end
  options
  #options.sort {|a,b| a[0] <=> b[0]}
end

- (Boolean) required?(name)

Returns:

  • (Boolean)


597
598
599
600
# File 'frontend/app/helpers/aspace_form_helper.rb', line 597

def required?(name)
  (jsonmodel_schema_definition(name) &&
   jsonmodel_schema_definition(name)['ifmissing'] === 'error')
end