diff options
Diffstat (limited to 'app/assets/javascripts/ci/job_details/store/getters.js')
-rw-r--r-- | app/assets/javascripts/ci/job_details/store/getters.js | 50 |
1 files changed, 50 insertions, 0 deletions
diff --git a/app/assets/javascripts/ci/job_details/store/getters.js b/app/assets/javascripts/ci/job_details/store/getters.js new file mode 100644 index 00000000000..a0f9db7409d --- /dev/null +++ b/app/assets/javascripts/ci/job_details/store/getters.js @@ -0,0 +1,50 @@ +import { isEmpty } from 'lodash'; +import { isScrolledToBottom } from '~/lib/utils/scroll_utils'; + +export const headerTime = (state) => state.job.started_at || state.job.created_at; + +export const hasForwardDeploymentFailure = (state) => + state?.job?.failure_reason === 'forward_deployment_failure'; + +export const hasUnmetPrerequisitesFailure = (state) => + state?.job?.failure_reason === 'unmet_prerequisites'; + +export const shouldRenderCalloutMessage = (state) => + !isEmpty(state.job.status) && !isEmpty(state.job.callout_message); + +/** + * When the job has not started the value of job.started_at will be null + * When job has started the value of job.started_at will be a string with a date. + */ +export const shouldRenderTriggeredLabel = (state) => Boolean(state.job.started_at); + +export const hasEnvironment = (state) => !isEmpty(state.job.deployment_status); + +/** + * Checks if it the job has a log. + * Used to check if it should render the job log or the empty state + * @returns {Boolean} + */ +export const hasJobLog = (state) => + // update has_trace once BE compeletes trace re-naming in #340626 + state.job.has_trace || (!isEmpty(state.job.status) && state.job.status.group === 'running'); + +export const emptyStateIllustration = (state) => state?.job?.status?.illustration || {}; + +export const emptyStateAction = (state) => state?.job?.status?.action || null; + +/** + * Shared runners limit is only rendered when + * used quota is bigger or equal than the limit + * + * @returns {Boolean} + */ +export const shouldRenderSharedRunnerLimitWarning = (state) => + !isEmpty(state.job.runners) && + !isEmpty(state.job.runners.quota) && + state.job.runners.quota.used >= state.job.runners.quota.limit; + +export const isScrollingDown = (state) => isScrolledToBottom() && !state.isJobLogComplete; + +export const hasOfflineRunnersForProject = (state) => + state?.job?.runners?.available && !state?.job?.runners?.online; |