2018-03-29 21:55:26 +08:00
|
|
|
# frozen_string_literal: true
|
|
|
|
|
|
|
|
module SmartAnnotations
|
2018-04-24 20:53:49 +08:00
|
|
|
class HtmlPreview
|
2018-03-29 21:55:26 +08:00
|
|
|
class << self
|
|
|
|
def html(name, type, object)
|
|
|
|
send("generate_#{type}_snippet", name, object)
|
|
|
|
end
|
|
|
|
|
|
|
|
private
|
|
|
|
|
|
|
|
ROUTES = Rails.application.routes.url_helpers
|
|
|
|
|
|
|
|
def generate_prj_snippet(_, object)
|
|
|
|
if object.archived?
|
2018-04-23 18:38:54 +08:00
|
|
|
return "<span class='sa-type'>Prj</span> <a href='" \
|
2018-03-29 21:55:26 +08:00
|
|
|
"#{ROUTES.projects_archive_path}'>#{object.name}</a>" \
|
|
|
|
"#{I18n.t('atwho.res.archived')}"
|
|
|
|
end
|
2018-04-23 18:38:54 +08:00
|
|
|
"<span class='sa-type'>Prj</span> " \
|
2018-03-29 21:55:26 +08:00
|
|
|
"<a href='#{ROUTES.project_path(object)}'>#{object.name}</a>"
|
|
|
|
end
|
|
|
|
|
|
|
|
def generate_exp_snippet(_, object)
|
|
|
|
if object.archived?
|
2018-04-23 18:38:54 +08:00
|
|
|
return "<span class='sa-type'>Exp</span> <a href='" \
|
2018-03-29 22:11:21 +08:00
|
|
|
"#{ROUTES.experiment_archive_project_path(object.project)}'>" \
|
|
|
|
"#{object.name}</a> #{I18n.t('atwho.res.archived')}"
|
2018-03-29 21:55:26 +08:00
|
|
|
end
|
2018-04-23 18:38:54 +08:00
|
|
|
"<span class='sa-type'>Exp</span> " \
|
2018-03-29 21:55:26 +08:00
|
|
|
"<a href='#{ROUTES.canvas_experiment_path(object)}'>#{object.name}</a>"
|
|
|
|
end
|
|
|
|
|
|
|
|
def generate_tsk_snippet(_, object)
|
|
|
|
if object.archived?
|
2018-04-23 18:38:54 +08:00
|
|
|
return "<span class='sa-type'>Tsk</span> <a href='" \
|
2018-03-29 22:11:21 +08:00
|
|
|
"#{ROUTES.module_archive_experiment_path(
|
|
|
|
object.experiment
|
|
|
|
)}'>#{object.name}</a> #{I18n.t('atwho.res.archived')}"
|
2018-03-29 21:55:26 +08:00
|
|
|
end
|
2018-04-23 18:38:54 +08:00
|
|
|
"<span class='sa-type'>Tsk</span> " \
|
2018-03-29 21:55:26 +08:00
|
|
|
"<a href='#{ROUTES.protocols_my_module_path(object)}'>" \
|
|
|
|
"#{object.name}</a>"
|
|
|
|
end
|
|
|
|
|
|
|
|
def generate_rep_item_snippet(name, object)
|
|
|
|
if object
|
2018-05-25 17:41:43 +08:00
|
|
|
repository_name = fetch_repository_name(object)
|
2018-03-29 21:55:26 +08:00
|
|
|
return "<span class='sa-type'>" \
|
2018-04-23 18:38:54 +08:00
|
|
|
"#{trim_repository_name(repository_name)}</span> " \
|
2020-05-18 20:12:06 +08:00
|
|
|
"<a href='#{ROUTES.repository_repository_row_path(object.repository, object)}' " \
|
2018-03-29 22:11:21 +08:00
|
|
|
"class='record-info-link'>#{object.name}</a>"
|
2018-03-29 21:55:26 +08:00
|
|
|
end
|
2018-05-25 17:41:43 +08:00
|
|
|
"<span class='sa-type'>Inv</span> " \
|
2018-03-29 21:55:26 +08:00
|
|
|
"#{name} #{I18n.t('atwho.res.deleted')}"
|
|
|
|
end
|
|
|
|
|
|
|
|
def trim_repository_name(name)
|
2018-05-04 16:44:23 +08:00
|
|
|
splited_name = name.split
|
|
|
|
size = splited_name.size
|
|
|
|
return name.strip.slice(0..2).capitalize if size == 1
|
|
|
|
generate_name_from_array(splited_name, size).capitalize
|
|
|
|
end
|
|
|
|
|
|
|
|
def generate_name_from_array(names, size)
|
|
|
|
return "#{names[0].slice(0..1)}#{names[1][0]}" if size == 2
|
|
|
|
"#{names[0][0]}#{names[1][0]}#{names[2][0]}"
|
2018-03-29 21:55:26 +08:00
|
|
|
end
|
2018-05-25 17:41:43 +08:00
|
|
|
|
|
|
|
def fetch_repository_name(object)
|
|
|
|
return object.repository.name if object.repository
|
|
|
|
repository = Repository.with_discarded.find_by_id(object.repository_id)
|
|
|
|
return 'Inv' unless repository
|
|
|
|
repository.name
|
|
|
|
end
|
2018-03-29 21:55:26 +08:00
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|