9043: Complete support for editing basic parameter types.
[arvados.git] / apps / workbench / app / models / proxy_work_unit.rb
index d817bba3a4a7ef29d9cd6f0d90db48f5cf3455fd..feab5d8eb4a22e599bc328978d2ad5e0dcae4781 100644 (file)
@@ -23,21 +23,31 @@ class ProxyWorkUnit < WorkUnit
     get(:modified_by_user_uuid)
   end
 
+  def owner_uuid
+    get(:owner_uuid)
+  end
+
   def created_at
     t = get(:created_at)
-    t = Time.parse(t) if (t.andand.class == String)
+    t = Time.parse(t) if (t.is_a? String)
     t
   end
 
   def started_at
     t = get(:started_at)
-    t = Time.parse(t) if (t.andand.class == String)
+    t = Time.parse(t) if (t.is_a? String)
+    t
+  end
+
+  def modified_at
+    t = get(:modified_at)
+    t = Time.parse(t) if (t.is_a? String)
     t
   end
 
   def finished_at
     t = get(:finished_at)
-    t = Time.parse(t) if (t.andand.class == String)
+    t = Time.parse(t) if (t.is_a? String)
     t
   end
 
@@ -45,13 +55,15 @@ class ProxyWorkUnit < WorkUnit
     state = get(:state)
     if ["Running", "RunningOnServer", "RunningOnClient"].include? state
       "Running"
+    elsif state == 'New'
+      "Not started"
     else
       state
     end
   end
 
   def state_bootstrap_class
-    state = get(:state)
+    state = state_label
     case state
     when 'Complete'
       'success'
@@ -65,7 +77,7 @@ class ProxyWorkUnit < WorkUnit
   end
 
   def success?
-    state = get(:state)
+    state = state_label
     if state == 'Complete'
       true
     elsif state == 'Failed' or state == 'Cancelled'
@@ -123,7 +135,7 @@ class ProxyWorkUnit < WorkUnit
   end
 
   def progress
-    state = get(:state)
+    state = state_label
     if state == 'Complete'
       return 1.0
     elsif state == 'Failed' or state == 'Cancelled'
@@ -150,14 +162,7 @@ class ProxyWorkUnit < WorkUnit
   end
 
   def outputs
-    items = []
-    children.each do |c|
-      items << c.output if c.output
-    end
-    if !items.any?
-      items << get(:output) if get(:output)
-    end
-    items
+    []
   end
 
   def title
@@ -215,14 +220,6 @@ class ProxyWorkUnit < WorkUnit
     end
   end
 
-  def show_child_summary
-    if state_label == "Running"
-      if child_summary
-        child_summary_str
-      end
-    end
-  end
-
   def is_running?
     state_label == 'Running'
   end
@@ -239,39 +236,8 @@ class ProxyWorkUnit < WorkUnit
     state_label == 'Failed'
   end
 
-  def ran_for_str
-    ran_for = nil
-    if state_label
-      ran_for = "It "
-      if state_label == 'Running'
-        ran_for << "has run"
-      else
-        ran_for << "ran"
-      end
-      ran_for << " for"
-    end
-    ran_for
-  end
-
-  def started_and_active_for_str
-    active_for = nil
-
-    if started_at
-      active_for_1 = "This #{title} started at "
-      active_for_2 = "It "
-      if state_label == 'Complete'
-        active_for_2 << "completed in "
-      elsif state_label == 'Failed'
-        active_for_2 << "failed after "
-      else
-        active_for_2 << "has been active for "
-      end
-      [active_for_1, active_for_2]
-    end
-  end
-
   def show_runtime
-    runningtime = ApplicationController.helpers.determine_wallclock_runtime(children)
+    runningtime = ApplicationController.helpers.determine_wallclock_runtime(if children.any? then children else [self] end)
 
     walltime = 0
     if started_at
@@ -326,13 +292,20 @@ class ProxyWorkUnit < WorkUnit
       end
       resp << " for "
 
-      cpu_time = children.map { |c|
-        if c.started_at
-           (c.runtime_constraints.andand[:min_nodes] || 1) * ((c.finished_at || Time.now()) - c.started_at)
-        else
-          0
+      cpu_time = 0
+      if children.any?
+        cpu_time = children.map { |c|
+          if c.started_at
+             (c.runtime_constraints.andand[:min_nodes] || 1) * ((c.finished_at || Time.now()) - c.started_at)
+          else
+            0
+          end
+        }.reduce(:+) || 0
+      else
+        if started_at
+          cpu_time = (runtime_constraints.andand[:min_nodes] || 1) * ((finished_at || Time.now()) - started_at)
         end
-      }.reduce(:+) || 0
+      end
 
       resp << ApplicationController.helpers.render_time(runningtime, false)
       if (walltime - runningtime) > 0
@@ -355,13 +328,17 @@ class ProxyWorkUnit < WorkUnit
     resp
   end
 
+  def log_object_uuids
+    [uuid]
+  end
+
   protected
 
-  def get key
-    if @proxied.respond_to? key
-      @proxied.send(key)
-    elsif @proxied.is_a?(Hash)
-      @proxied[key]
+  def get key, obj=@proxied
+    if obj.respond_to? key
+      obj.send(key)
+    elsif obj.is_a?(Hash)
+      obj[key]
     end
   end
 end