cartodb/lib/carto/form.rb

49 lines
1.1 KiB
Ruby
Raw Normal View History

2020-06-15 10:58:47 +08:00
require_relative './definition'
module Carto
class Form
DEFAULT_FORMS_DEFINITION_LOCATION =
"#{Rails.root}/lib/assets/javascripts/builder/data/default-form-styles.json".freeze
def initialize(geometry_type)
@geometry_type = geometry_type
end
def to_hash
return @hash if @hash
merged_definition = forms_definition
merged_definition.keys.each do |key|
style_value = style_definition[key]
merged_definition[key] = style_value if style_value
end
@hash = merged_definition
end
private
def forms_definition
@forms_definition ||= Carto::Definition.instance
.load_from_file(DEFAULT_FORMS_DEFINITION_LOCATION)
end
def style_definition
@style_definition ||= style.default_definition
end
def style_class
return @style_class if @style_class
proposed_style_class = Carto::Styles::Style.style_for_geometry_type(@geometry_type)
@style_class = proposed_style_class || Carto::Styles::Point
end
def style
@style ||= style_class.new
end
end
end