Fixed url_for() so that links/redirects to workbench records work as expected.
[arvados.git] / apps / workbench / app / helpers / provenance_helper.rb
index ef165e86e9eb8be210fcbbf80d93501812d5fb88..6d6ae5516c838ebdfe0556948ee980e8f6782c2b 100644 (file)
@@ -25,16 +25,8 @@ module ProvenanceHelper
     end
 
     def determine_fillcolor(n)
-      bgcolor = ""
-      case n
-      when 1
-        bgcolor = "style=filled,fillcolor=\"#88ff88\""
-      when 2
-        bgcolor = "style=filled,fillcolor=\"#8888ff\""
-      when 3
-        bgcolor = "style=filled,fillcolor=\"#88ffff\""
-      end
-      bgcolor
+      fillcolor = %w(aaaaaa aaffaa aaaaff aaaaaa ffaaaa)[n || 0] || 'aaaaaa'
+      "style=filled,fillcolor=\"##{fillcolor}\""
     end
 
     def describe_node(uuid)
@@ -46,10 +38,10 @@ module ProvenanceHelper
       
         #"\"#{uuid}\" [label=\"#{rsc}\\n#{uuid}\",href=\"#{href}\"];\n"
         if rsc == Collection
-          puts uuid
+          #puts uuid
           if uuid == :"d41d8cd98f00b204e9800998ecf8427e+0"
             # special case
-            puts "empty!"
+            #puts "empty!"
             return "\"#{uuid}\" [label=\"(empty collection)\"];\n"
           end
           if @pdata[uuid] 
@@ -119,46 +111,45 @@ module ProvenanceHelper
 
     def script_param_edges(job, prefix, sp)
       gr = ""
-      if sp and not sp.empty?
-        case sp
-        when Hash
-          sp.each do |k, v|
-            if prefix.size > 0
-              k = prefix + "::" + k.to_s
-            end
-            gr += script_param_edges(job, k.to_s, v)
-          end
-        when Array
-          i = 0
-          node = ""
-          sp.each do |v|
-            if GenerateGraph::collection_uuid(v)
-              gr += script_param_edges(job, "#{prefix}[#{i}]", v)
-            elsif @opts[:all_script_parameters]
-              node += "', '" unless node == ""
-              node = "['" if node == ""
-              node += "#{v}"
-            end
-            i += 1
-          end
-          unless node == ""
-            node += "']"
-            #puts node
-            #id = "#{job[:uuid]}_#{prefix}"
-            gr += "\"#{node}\" [label=\"#{node}\"];\n"
-            gr += edge(job_uuid(job), node, {:label => prefix})        
+      case sp
+      when Hash
+        sp.each do |k, v|
+          if prefix.size > 0
+            k = prefix + "::" + k.to_s
           end
-        else
-          m = GenerateGraph::collection_uuid(sp)
-          #puts "#{m} pdata is #{@pdata[m.intern]}"
-          if m and (@pdata[m.intern] or (not @opts[:pdata_only]))
-            gr += edge(job_uuid(job), m, {:label => prefix})
-            gr += generate_provenance_edges(m)
+          gr += script_param_edges(job, k.to_s, v)
+        end
+      when Array
+        i = 0
+        node = ""
+        sp.each do |v|
+          if GenerateGraph::collection_uuid(v)
+            gr += script_param_edges(job, "#{prefix}[#{i}]", v)
           elsif @opts[:all_script_parameters]
-            #id = "#{job[:uuid]}_#{prefix}"
-            gr += "\"#{sp}\" [label=\"#{sp}\"];\n"
-            gr += edge(job_uuid(job), sp, {:label => prefix})
+            node += "', '" unless node == ""
+            node = "['" if node == ""
+            node += "#{v}"
           end
+          i += 1
+        end
+        unless node == ""
+          node += "']"
+          #puts node
+          #id = "#{job[:uuid]}_#{prefix}"
+          gr += "\"#{node}\" [label=\"#{node}\"];\n"
+          gr += edge(job_uuid(job), node, {:label => prefix})        
+        end
+      when String
+        return '' if sp.empty?
+        m = GenerateGraph::collection_uuid(sp)
+        #puts "#{m} pdata is #{@pdata[m.intern]}"
+        if m and (@pdata[m.intern] or (not @opts[:pdata_only]))
+          gr += edge(job_uuid(job), m, {:label => prefix})
+          gr += generate_provenance_edges(m)
+        elsif @opts[:all_script_parameters]
+          #id = "#{job[:uuid]}_#{prefix}"
+          gr += "\"#{sp}\" [label=\"#{sp}\"];\n"
+          gr += edge(job_uuid(job), sp, {:label => prefix})
         end
       end
       gr
@@ -317,17 +308,17 @@ edge [fontsize=10];
 
   def self.find_collections(sp)
     c = []
-    if sp and not sp.empty?
-      case sp
-      when Hash
-        sp.each do |k, v|
-          c.concat(find_collections(v))
-        end
-      when Array
-        sp.each do |v|
-          c.concat(find_collections(v))
-        end
-      else
+    case sp
+    when Hash
+      sp.each do |k, v|
+        c.concat(find_collections(v))
+      end
+    when Array
+      sp.each do |v|
+        c.concat(find_collections(v))
+      end
+    when String
+      if !sp.empty?
         m = GenerateGraph::collection_uuid(sp)
         if m
           c << m