15012: Don't show Completed processes as Cancelled when priority=0.
[arvados-workbench2.git] / src / store / processes / process.ts
index ab8093b856c4c259b1bab8992e98293444f7ac78..e5b2c8403cc77d5e8aaeb6b961a59d46a8b27b70 100644 (file)
@@ -56,10 +56,20 @@ export const getSubprocesses = (uuid: string) => (resources: ResourcesState) =>
     return [];
 };
 
-export const getProcessRuntime = ({ container }: Process) =>
-    container
-        ? getTimeDiff(container.finishedAt || '', container.startedAt || '')
-        : 0;
+export const getProcessRuntime = ({ container }: Process) => {
+    if (container) {
+        if (container.startedAt === null) {
+            return 0;
+        }
+        if (container.finishedAt === null) {
+            // Count it from now
+            return new Date().getTime() - new Date(container.startedAt).getTime();
+        }
+        return getTimeDiff(container.finishedAt, container.startedAt);
+    } else {
+        return 0;
+    }
+};
 
 export const getProcessStatusColor = (status: string, { customs, palette }: ArvadosTheme) => {
     switch (status) {
@@ -80,6 +90,9 @@ export const getProcessStatus = ({ containerRequest, container }: Process): Proc
         case containerRequest.state === ContainerRequestState.UNCOMMITTED:
             return ProcessStatus.DRAFT;
 
+        case container && container.state === ContainerState.COMPLETE && container.exitCode === 0:
+            return ProcessStatus.COMPLETED;
+
         case containerRequest.priority === 0:
         case container && container.state === ContainerState.CANCELLED:
             return ProcessStatus.CANCELLED;
@@ -93,9 +106,6 @@ export const getProcessStatus = ({ containerRequest, container }: Process): Proc
         case container && container.state === ContainerState.RUNNING:
             return ProcessStatus.RUNNING;
 
-        case container && container.state === ContainerState.COMPLETE && container.exitCode === 0:
-            return ProcessStatus.COMPLETED;
-
         case container && container.state === ContainerState.COMPLETE && container.exitCode !== 0:
             return ProcessStatus.FAILED;