16672: Initial Log viewer placement on process panel. WIP
[arvados-workbench2.git] / src / store / processes / process.ts
index c9e62f943455a2ebaae9b8d8b45c16ff8084a62f..60505be0c4c0f6a20ca160501206b8c28994b9fd 100644 (file)
@@ -4,11 +4,11 @@
 
 import { ContainerRequestResource, ContainerRequestState } from '../../models/container-request';
 import { ContainerResource, ContainerState } from '../../models/container';
-import { ResourcesState, getResource } from '~/store/resources/resources';
+import { ResourcesState, getResource } from 'store/resources/resources';
 import { filterResources } from '../resources/resources';
-import { ResourceKind, Resource, extractUuidKind } from '~/models/resource';
-import { getTimeDiff } from '~/common/formatters';
-import { ArvadosTheme } from '~/common/custom-theme';
+import { ResourceKind, Resource, extractUuidKind } from 'models/resource';
+import { getTimeDiff } from 'common/formatters';
+import { ArvadosTheme } from 'common/custom-theme';
 
 export interface Process {
     containerRequest: ContainerRequestResource;
@@ -56,12 +56,22 @@ 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 }: ArvadosTheme) => {
+export const getProcessStatusColor = (status: string, { customs, palette }: ArvadosTheme) => {
     switch (status) {
         case ProcessStatus.RUNNING:
             return customs.colors.blue500;
@@ -71,7 +81,7 @@ export const getProcessStatusColor = (status: string, { customs }: ArvadosTheme)
         case ProcessStatus.FAILED:
             return customs.colors.red900;
         default:
-            return customs.colors.grey500;
+            return palette.grey["500"];
     }
 };
 
@@ -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;