Arvados-DCO-1.1-Signed-off-by: Radhika Chippada <radhika@curoverse.com>
[arvados.git] / apps / workbench / app / helpers / pipeline_instances_helper.rb
index 939ddcb43ef062c8e9a5b5accd54855b0daaa52d..214237522635d1e0b1e628c1f353ba2d2f736d7a 100644 (file)
@@ -1,3 +1,7 @@
+# Copyright (C) The Arvados Authors. All rights reserved.
+#
+# SPDX-License-Identifier: AGPL-3.0
+
 module PipelineInstancesHelper
 
   def pipeline_jobs object=nil
@@ -63,15 +67,14 @@ module PipelineInstancesHelper
     timestamps << [started_at, finished_at]
   end
 
-  # Accept a list of objects with [:started_at] and [:finshed_at] keys and
+  # Accept a list of objects with [:started_at] and [:finished_at] keys and
   # merge overlapping ranges to compute the time spent running after periods of
   # overlapping execution are factored out.
   def determine_wallclock_runtime jobs
     timestamps = []
     jobs.each do |j|
-      insert_at = 0
-      started_at = j[:started_at]
-      finished_at = (if j[:finished_at] then j[:finished_at] else Time.now end)
+      started_at = (j.started_at if j.respond_to?(:started_at)) || (j[:started_at] if j.is_a?(Hash))
+      finished_at = (j.finished_at if j.respond_to?(:finished_at)) || (j[:finished_at] if j.is_a?(Hash)) || Time.now
       if started_at
         timestamps = merge_range timestamps, started_at, finished_at
       end
@@ -289,7 +292,7 @@ module PipelineInstancesHelper
     else
       s = ""
       if days > 0
-        s += "#{days}<span class='time-label-divider'>d</span> "
+        s += "#{days}<span class='time-label-divider'>d</span>"
       end
 
       if (hours > 0)
@@ -298,7 +301,7 @@ module PipelineInstancesHelper
 
       s += "#{minutes}<span class='time-label-divider'>m</span>"
 
-      if not round_to_min
+      if not round_to_min or (days == 0 and hours == 0 and minutes == 0)
         s += "#{seconds}<span class='time-label-divider'>s</span>"
       end
     end
@@ -306,19 +309,6 @@ module PipelineInstancesHelper
     raw(s)
   end
 
-  def render_runtime_compact duration
-    if duration >= DAY
-      "#{(duration / DAY.to_f).round(2)} days"
-    elsif duration >= HOUR
-      "#{(duration / HOUR.to_f).round(2)} hours"
-    elsif duration >= MINUTE
-      "#{(duration / MINUTE.to_f).round(2)} minutes"
-    else
-      seconds = duration.round(2)
-      "#{seconds} second#{'s' if seconds != 1}"
-    end
-  end
-
   def render_unreadable_inputs_present
     if current_user and controller.class.name.eql?('PipelineInstancesController') and unreadable_inputs_present?
       raw('<div class="alert alert-danger unreadable-inputs-present">' +