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(', '); }