# frozen_string_literal: true module SmartAnnotations class HtmlPreview class << self def html(name, type, object, preview_repository = false) if preview_repository send('generate_rep_snippet', name, object) else send("generate_#{type}_snippet", name, object) end end private ROUTES = Rails.application.routes.url_helpers def generate_prj_snippet(_, object) return "Prj#{object.name} #{I18n.t('atwho.res.archived')}" if object.archived? "" \ "Prj#{object.name}" end def generate_exp_snippet(_, object) if object.archived? || object.project.archived? return "Exp#{object.name} #{I18n.t('atwho.res.archived')}" end "" \ "Exp#{object.name}" end def generate_tsk_snippet(_, object) if object.archived? || object.experiment.archived? || object.experiment.project.archived? return "Tsk#{object.name} #{I18n.t('atwho.res.archived')}" end "" \ "Tsk#{object.name}" end def generate_rep_item_snippet(name, object) if object&.repository repository_name = fetch_repository_name(object) "#{trim_repository_name(repository_name)}" \ "#{object.name} #{object.archived? ? I18n.t('atwho.res.archived') : ''}" else "Inv #{name} #{I18n.t('atwho.res.deleted')}" end end def generate_rep_snippet(name, object) if object&.repository repository_name = fetch_repository_name(object) "#{trim_repository_name(repository_name)}" \ "#{object.name} #{object.archived? ? I18n.t('atwho.res.archived') : ''}" else "Inv #{name} #{I18n.t('atwho.res.deleted')}" end end def trim_repository_name(name) 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]}" end 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 end end end