X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/40df5992d4d8071a6e10a20ecdeb0470a80764cc..2f13152e6e81dada55b7e14f9cd981156d60d561:/apps/workbench/app/helpers/application_helper.rb diff --git a/apps/workbench/app/helpers/application_helper.rb b/apps/workbench/app/helpers/application_helper.rb index 66267e028d..c3856c2f29 100644 --- a/apps/workbench/app/helpers/application_helper.rb +++ b/apps/workbench/app/helpers/application_helper.rb @@ -100,7 +100,7 @@ module ApplicationHelper else link_name = object_for_dataclass(resource_class, link_uuid).andand.friendly_link_name end - rescue RuntimeError + rescue ArvadosApiClient::NotFoundException # If that lookup failed, the link will too. So don't make one. return attrvalue end @@ -306,7 +306,7 @@ module ApplicationHelper selectables = [] attrtext = attrvalue - if dataclass and dataclass.is_a? Class + if dataclass.is_a? Class and dataclass < ArvadosBase objects = get_n_objects_of_class dataclass, 10 objects.each do |item| items << item @@ -392,39 +392,40 @@ module ApplicationHelper render opts.merge(partial: "application/#{partial}") end end - - def fa_icon_class_for_object object - case object.class.to_s.to_sym - when :User - 'fa-user' - when :Group + + RESOURCE_CLASS_ICONS = { + "Collection" => "fa-archive", + "Group" => "fa-users", + "Human" => "fa-male", # FIXME: Use a more inclusive icon. + "Job" => "fa-gears", + "KeepDisk" => "fa-hdd-o", + "KeepService" => "fa-exchange", + "Link" => "fa-arrows-h", + "Node" => "fa-cloud", + "PipelineInstance" => "fa-gears", + "PipelineTemplate" => "fa-gears", + "Repository" => "fa-code-fork", + "Specimen" => "fa-flask", + "Trait" => "fa-clipboard", + "User" => "fa-user", + "VirtualMachine" => "fa-terminal", + } + DEFAULT_ICON_CLASS = "fa-cube" + + def fa_icon_class_for_class(resource_class, default=DEFAULT_ICON_CLASS) + RESOURCE_CLASS_ICONS.fetch(resource_class.to_s, default) + end + + def fa_icon_class_for_uuid(uuid, default=DEFAULT_ICON_CLASS) + fa_icon_class_for_class(resource_class_for_uuid(uuid), default) + end + + def fa_icon_class_for_object(object, default=DEFAULT_ICON_CLASS) + case class_name = object.class.to_s + when "Group" object.group_class ? 'fa-folder' : 'fa-users' - when :Job, :PipelineInstance, :PipelineTemplate - 'fa-gears' - when :Collection - 'fa-archive' - when :Specimen - 'fa-flask' - when :Trait - 'fa-clipboard' - when :Human - 'fa-male' - when :VirtualMachine - 'fa-terminal' - when :Repository - 'fa-code-fork' - when :Link - 'fa-arrows-h' - when :User - 'fa-user' - when :Node - 'fa-cloud' - when :KeepService - 'fa-exchange' - when :KeepDisk - 'fa-hdd-o' else - 'fa-cube' + RESOURCE_CLASS_ICONS.fetch(class_name, default) end end end