cartodb/app/controllers/carto/api/layer_vizjson_adapter.rb
2020-06-15 10:58:47 +08:00

74 lines
2.3 KiB
Ruby

module Carto
module Api
class LayerVizJSONAdapter
extend Forwardable
TEMPLATES_MAP = {
'table/views/infowindow_light' => 'infowindow_light',
'table/views/infowindow_dark' => 'infowindow_dark',
'table/views/infowindow_light_header_blue' => 'infowindow_light_header_blue',
'table/views/infowindow_light_header_yellow' => 'infowindow_light_header_yellow',
'table/views/infowindow_light_header_orange' => 'infowindow_light_header_orange',
'table/views/infowindow_light_header_green' => 'infowindow_light_header_green',
'table/views/infowindow_header_with_image' => 'infowindow_header_with_image'
}
delegate [:options, :kind, :id, :order, :legend, :user] => :layer
attr_reader :layer
def initialize(layer)
@layer = layer
end
def public_values
{
'options' => options,
# TODO: kind should be renamed to type
# rename once a new layer presenter is written. See CartoDB::LayerModule::Presenter#with_kind_as_type
# TODO: use symbols instead of strings
'kind' => kind,
'infowindow' => infowindow,
'tooltip' => tooltip,
'id' => id,
'order' => order
}
end
def get_presenter(options, configuration)
Carto::Api::LayerPresenter.new(self, options, configuration)
end
def infowindow
@layer.infowindow
end
def tooltip
@layer.tooltip
end
def infowindow_template_path
if infowindow.present? && infowindow['template_name'].present?
template_name = TEMPLATES_MAP.fetch(infowindow['template_name'], self.infowindow['template_name'])
Rails.root.join("lib/assets/javascripts/cartodb/table/views/infowindow/templates/#{template_name}.jst.mustache")
else
nil
end
end
def tooltip_template_path
if tooltip.present? && tooltip['template_name'].present?
template_name = TEMPLATES_MAP.fetch(tooltip['template_name'], tooltip['template_name'])
Rails.root.join("lib/assets/javascripts/cartodb/table/views/tooltip/templates/#{template_name}.jst.mustache")
else
nil
end
end
end
end
end