Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'app/assets/javascripts/ci/job_details/store/getters.js')
-rw-r--r--app/assets/javascripts/ci/job_details/store/getters.js50
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;