Merge branch 'master' into 2871-preload-objects
[arvados.git] / apps / workbench / app / helpers / application_helper.rb
index b03b1093acf5a4d5ed57081990c4bc671006b00c..43c96b55366e8a3a583b57fc82717c58f19c99a1 100644 (file)
@@ -89,7 +89,11 @@ module ApplicationHelper
             link_name = attrvalue.friendly_link_name
           else
             begin
-              link_name = resource_class.find(link_uuid).friendly_link_name
+              if resource_class.name == 'Collection'
+                link_name = collections_for_object(link_uuid).andand.first.andand.friendly_link_name
+              else
+                link_name = object_for_dataclass(resource_class, link_uuid).friendly_link_name
+              end
             rescue RuntimeError
               # If that lookup failed, the link will too. So don't make one.
               return attrvalue
@@ -100,13 +104,15 @@ module ApplicationHelper
           link_name = "#{resource_class.to_s}: #{link_name}"
         end
         if !opts[:no_tags] and resource_class == Collection
-          Link.where(head_uuid: link_uuid, link_class: ["tag", "identifier"]).each do |tag|
-            link_name += ' <span class="label label-info">' + html_escape(tag.name) + '</span>'
+          links_for_object(link_uuid).each do |tag|
+            if tag.link_class.in? ["tag", "identifier"]
+              link_name += ' <span class="label label-info">' + html_escape(tag.name) + '</span>'
+            end
           end
         end
         if opts[:thumbnail] and resource_class == Collection
           # add an image thumbnail if the collection consists of a single image file.
-          Collection.where(uuid: link_uuid).each do |c|
+          collections_for_object(link_uuid).each do |c|
             if c.files.length == 1 and CollectionsHelper::is_image c.files.first[1]
               link_name += " "
               link_name += image_tag "#{url_for c}/#{CollectionsHelper::file_path c.files.first}", style: "height: 4em; width: auto"
@@ -239,13 +245,14 @@ module ApplicationHelper
       dn += '[value]'
     end
 
-    preload_uuids = [attrvalue]
+    # preload data
+    preload_uuids = []
     items = []
     selectables = []
 
     attrtext = attrvalue
     if dataclass and dataclass.is_a? Class
-      objects = get_objects_of_type dataclass, 10
+      objects = get_n_objects_of_class dataclass, 10
       objects.each do |item|
         items << item
         preload_uuids << item.uuid
@@ -268,7 +275,7 @@ module ApplicationHelper
         itemuuids << item.uuid
         selectables.append({name: item.uuid, uuid: item.uuid, type: dataclass.to_s})
       end
-      
+
       itemuuids.each do |itemuuid|
         links_for_object(itemuuid).each do |link|
           if link.link_class.in? ["tag", "identifier"]