diff --git a/client/src/components/job-lifecycle/job-lifecycle.component.jsx b/client/src/components/job-lifecycle/job-lifecycle.component.jsx
index 42bf53827..30d03efd1 100644
--- a/client/src/components/job-lifecycle/job-lifecycle.component.jsx
+++ b/client/src/components/job-lifecycle/job-lifecycle.component.jsx
@@ -13,7 +13,7 @@ require('./job-lifecycle.styles.scss');
export function JobLifecycleComponent({job, statuses, ...rest}) {
const [loading, setLoading] = useState(true);
const [lifecycleData, setLifecycleData] = useState(null);
- const { t } = useTranslation(); // Used for tracking external state changes.
+ const {t} = useTranslation(); // Used for tracking external state changes.
const {data} = useQuery(gql`
query get_job_test($id: uuid!){
@@ -157,7 +157,7 @@ export function JobLifecycleComponent({job, statuses, ...rest}) {
title={`${key.status} | ${key.roundedPercentage} | ${key.humanReadable}`}
>
- {key.percentage > 5 ?
+ {key.percentage > 15 ?
<>
{key.roundedPercentage}
-
+
{lifecycleData.durations.summations.map((key) => (
@@ -194,16 +195,25 @@ export function JobLifecycleComponent({job, statuses, ...rest}) {
))}
-
-
- -
- {t('job_lifecycle.content.previous_status_accumulated_time')}: {lifecycleData.durations.humanReadableTotal}
-
- -
- {t('job_lifecycle.content.current_status_accumulated_time')} ({lifecycleData.lifecycle[0].value}): {lifecycleData.durations.totalCurrentStatusDuration.humanReadable}
-
-
-
+ {(lifecycleData?.durations?.humanReadableTotal) ||
+ (lifecycleData.lifecycle[0] && lifecycleData.lifecycle[0].value && lifecycleData?.durations?.totalCurrentStatusDuration?.humanReadable) ?
+
+
+ {lifecycleData.durations && lifecycleData.durations.humanReadableTotal &&
+ -
+ {t('job_lifecycle.content.previous_status_accumulated_time')}: {lifecycleData.durations.humanReadableTotal}
+
+ }
+ {lifecycleData.lifecycle[0] && lifecycleData.lifecycle[0].value && lifecycleData?.durations?.totalCurrentStatusDuration?.humanReadable &&
+ -
+ {t('job_lifecycle.content.current_status_accumulated_time')} ({lifecycleData.lifecycle[0].value}): {lifecycleData.durations.totalCurrentStatusDuration.humanReadable}
+
+ }
+
+
+ : null}
@@ -213,7 +223,10 @@ export function JobLifecycleComponent({job, statuses, ...rest}) {
>
)}>
-
+
) : (
diff --git a/client/src/translations/en_us/common.json b/client/src/translations/en_us/common.json
index becddf9eb..7679ffeed 100644
--- a/client/src/translations/en_us/common.json
+++ b/client/src/translations/en_us/common.json
@@ -1231,7 +1231,7 @@
"not_available": "N/A",
"previous_status_accumulated_time": "Previous Status Accumulated Time",
"title": "Job Lifecycle Component",
- "title_durations": "Historical Status Duration's",
+ "title_durations": "Historical Status Durations",
"title_loading": "Loading",
"title_transitions": "Transitions"
},
diff --git a/server/utils/calculateStatusDuration.js b/server/utils/calculateStatusDuration.js
index 75b30c54c..16165d001 100644
--- a/server/utils/calculateStatusDuration.js
+++ b/server/utils/calculateStatusDuration.js
@@ -87,7 +87,6 @@ const calculateStatusDuration = (transitions, statuses) => {
const humanReadableTotal = durationToHumanReadable(moment.duration(totalDuration));
-
return {
summations: _.isArray(statuses) && !_.isEmpty(statuses) ? summations.sort((a, b) => {
return statuses.indexOf(a.status) - statuses.indexOf(b.status);
diff --git a/server/utils/durationToHumanReadable.js b/server/utils/durationToHumanReadable.js
index f13e24c98..e6820c9bf 100644
--- a/server/utils/durationToHumanReadable.js
+++ b/server/utils/durationToHumanReadable.js
@@ -15,7 +15,7 @@ const durationToHumanReadable = (duration) => {
if (days) parts.push(days + ' day' + (days > 1 ? 's' : ''));
if (hours) parts.push(hours + ' hour' + (hours > 1 ? 's' : ''));
if (minutes) parts.push(minutes + ' minute' + (minutes > 1 ? 's' : ''));
- if (!minutes && !hours && !days && !months && !years && seconds) parts.push(seconds + ' second' + (seconds > 1 ? 's' : ''));
+ if (seconds) parts.push(seconds + ' second' + (seconds > 1 ? 's' : ''));
return parts.join(', ');
}