diff options
author | GitLab Bot <gitlab-bot@gitlab.com> | 2020-12-11 12:09:48 +0300 |
---|---|---|
committer | GitLab Bot <gitlab-bot@gitlab.com> | 2020-12-11 12:09:48 +0300 |
commit | 8c59925bbbc05315565cd9eb54c897be69072d65 (patch) | |
tree | 53c6c57e92c65b3b2711703f01eea033352edf82 /app/assets/javascripts/projects | |
parent | 12d3a6f92190feeec2c36262a0344da00f228dcd (diff) |
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'app/assets/javascripts/projects')
-rw-r--r-- | app/assets/javascripts/projects/settings/components/shared_runners_toggle.vue | 79 | ||||
-rw-r--r-- | app/assets/javascripts/projects/settings/mount_shared_runners_toggle.js | 21 |
2 files changed, 100 insertions, 0 deletions
diff --git a/app/assets/javascripts/projects/settings/components/shared_runners_toggle.vue b/app/assets/javascripts/projects/settings/components/shared_runners_toggle.vue new file mode 100644 index 00000000000..a4924033c1e --- /dev/null +++ b/app/assets/javascripts/projects/settings/components/shared_runners_toggle.vue @@ -0,0 +1,79 @@ +<script> +import { GlAlert, GlToggle, GlTooltip } from '@gitlab/ui'; +import { __ } from '~/locale'; +import axios from '~/lib/utils/axios_utils'; + +const DEFAULT_ERROR_MESSAGE = __('An error occurred while updating the configuration.'); + +export default { + components: { + GlAlert, + GlToggle, + GlTooltip, + }, + props: { + isDisabledAndUnoverridable: { + type: Boolean, + required: true, + }, + isEnabled: { + type: Boolean, + required: true, + }, + updatePath: { + type: String, + required: true, + }, + }, + data() { + return { + isLoading: false, + isSharedRunnerEnabled: false, + errorMessage: null, + }; + }, + created() { + this.isSharedRunnerEnabled = this.isEnabled; + }, + methods: { + toggleSharedRunners() { + this.isLoading = true; + this.errorMessage = null; + + axios + .post(this.updatePath) + .then(() => { + this.isLoading = false; + this.isSharedRunnerEnabled = !this.isSharedRunnerEnabled; + }) + .catch(error => { + this.isLoading = false; + this.errorMessage = error.response?.data?.error || DEFAULT_ERROR_MESSAGE; + }); + }, + }, +}; +</script> + +<template> + <div> + <section class="gl-mt-5"> + <gl-alert v-if="errorMessage" class="gl-mb-3" variant="danger" :dismissible="false"> + {{ errorMessage }} + </gl-alert> + <div ref="sharedRunnersToggle"> + <gl-toggle + :disabled="isDisabledAndUnoverridable" + :is-loading="isLoading" + :label="__('Enable shared runners for this project')" + :value="isSharedRunnerEnabled" + data-testid="toggle-shared-runners" + @change="toggleSharedRunners" + /> + </div> + <gl-tooltip v-if="isDisabledAndUnoverridable" :target="() => $refs.sharedRunnersToggle"> + {{ __('Shared runners are disabled on group level') }} + </gl-tooltip> + </section> + </div> +</template> diff --git a/app/assets/javascripts/projects/settings/mount_shared_runners_toggle.js b/app/assets/javascripts/projects/settings/mount_shared_runners_toggle.js new file mode 100644 index 00000000000..c5d45fe6fed --- /dev/null +++ b/app/assets/javascripts/projects/settings/mount_shared_runners_toggle.js @@ -0,0 +1,21 @@ +import Vue from 'vue'; +import SharedRunnersToggle from '~/projects/settings/components/shared_runners_toggle.vue'; +import { parseBoolean } from '~/lib/utils/common_utils'; + +export default (containerId = 'toggle-shared-runners-form') => { + const containerEl = document.getElementById(containerId); + const { isDisabledAndUnoverridable, isEnabled, updatePath } = containerEl.dataset; + + return new Vue({ + el: containerEl, + render(createElement) { + return createElement(SharedRunnersToggle, { + props: { + isDisabledAndUnoverridable: parseBoolean(isDisabledAndUnoverridable), + isEnabled: parseBoolean(isEnabled), + updatePath, + }, + }); + }, + }); +}; |