Write browse element icons as <img>
This commit is contained in:
parent
7b05c1c060
commit
f051a7c1f5
12 changed files with 282 additions and 306 deletions
|
@ -1,15 +1,38 @@
|
|||
module BrowseHelper
|
||||
def element_icon(type, object)
|
||||
selected_icon_data = { :filename => "#{type}.svg" }
|
||||
|
||||
unless object.redacted?
|
||||
target_tags = object.tags.find_all { |k, _v| BROWSE_ICONS.key? k }.sort
|
||||
title = target_tags.map { |k, v| "#{k}=#{v}" }.to_sentence unless target_tags.empty?
|
||||
|
||||
target_tags.each do |k, v|
|
||||
icon_data = BROWSE_ICONS[k][v] || BROWSE_ICONS[k][:*]
|
||||
selected_icon_data = icon_data if icon_data
|
||||
end
|
||||
end
|
||||
|
||||
image_tag "browse/#{selected_icon_data[:filename]}",
|
||||
:size => 20,
|
||||
:class => ["align-bottom object-fit-none", { "browse-icon-invertible" => selected_icon_data[:invert] }],
|
||||
:title => title
|
||||
end
|
||||
|
||||
def element_single_current_link(type, object)
|
||||
link_to object, { :class => element_class(type, object), :title => element_title(object), :rel => (link_follow(object) if type == "node") } do
|
||||
link_to object, { :rel => (link_follow(object) if type == "node") } do
|
||||
element_strikethrough object do
|
||||
printable_element_name object
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
def element_list_item(type, object, &block)
|
||||
tag.li :class => element_class(type, object), :title => element_title(object) do
|
||||
element_strikethrough object, &block
|
||||
def element_list_item(type, object, &)
|
||||
tag.li(tag.div(element_icon(type, object) + tag.div(&), :class => "d-flex gap-1"))
|
||||
end
|
||||
|
||||
def element_list_item_with_strikethrough(type, object, &)
|
||||
element_list_item type, object do
|
||||
element_strikethrough object, &
|
||||
end
|
||||
end
|
||||
|
||||
|
@ -52,20 +75,6 @@ module BrowseHelper
|
|||
end
|
||||
end
|
||||
|
||||
def element_class(type, object)
|
||||
classes = [type]
|
||||
classes += icon_tags(object).flatten.map { |t| h(t) } unless object.redacted?
|
||||
classes.join(" ")
|
||||
end
|
||||
|
||||
def element_title(object)
|
||||
if object.redacted?
|
||||
""
|
||||
else
|
||||
h(icon_tags(object).map { |k, v| "#{k}=#{v}" }.to_sentence)
|
||||
end
|
||||
end
|
||||
|
||||
def link_follow(object)
|
||||
"nofollow" if object.tags.empty?
|
||||
end
|
||||
|
@ -107,12 +116,6 @@ module BrowseHelper
|
|||
|
||||
private
|
||||
|
||||
ICON_TAGS = %w[aeroway amenity barrier building highway historic landuse leisure man_made natural office railway shop tourism waterway].freeze
|
||||
|
||||
def icon_tags(object)
|
||||
object.tags.find_all { |k, _v| ICON_TAGS.include? k }.sort
|
||||
end
|
||||
|
||||
def name_locales(object)
|
||||
object.tags.keys.map { |k| Regexp.last_match(1) if k =~ /^name:(.*)$/ }.flatten
|
||||
end
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue