49 lines
1.1 KiB
Ruby
49 lines
1.1 KiB
Ruby
|
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
|