summaryrefslogtreecommitdiff
path: root/app/assets/javascripts/runner/components/runner_bulk_delete.vue
diff options
context:
space:
mode:
Diffstat (limited to 'app/assets/javascripts/runner/components/runner_bulk_delete.vue')
-rw-r--r--app/assets/javascripts/runner/components/runner_bulk_delete.vue196
1 files changed, 0 insertions, 196 deletions
diff --git a/app/assets/javascripts/runner/components/runner_bulk_delete.vue b/app/assets/javascripts/runner/components/runner_bulk_delete.vue
deleted file mode 100644
index 703da01d9c8..00000000000
--- a/app/assets/javascripts/runner/components/runner_bulk_delete.vue
+++ /dev/null
@@ -1,196 +0,0 @@
-<script>
-import { GlButton, GlModalDirective, GlModal, GlSprintf } from '@gitlab/ui';
-import { createAlert } from '~/flash';
-import { __, s__, n__, sprintf } from '~/locale';
-import checkedRunnerIdsQuery from '../graphql/list/checked_runner_ids.query.graphql';
-import BulkRunnerDelete from '../graphql/list/bulk_runner_delete.mutation.graphql';
-import { RUNNER_TYPENAME } from '../constants';
-
-export default {
- components: {
- GlButton,
- GlModal,
- GlSprintf,
- },
- directives: {
- GlModal: GlModalDirective,
- },
- inject: ['localMutations'],
- props: {
- runners: {
- type: Array,
- default: () => [],
- required: false,
- },
- },
- data() {
- return {
- isDeleting: false,
- checkedRunnerIds: [],
- };
- },
- apollo: {
- checkedRunnerIds: {
- query: checkedRunnerIdsQuery,
- },
- },
- computed: {
- currentCheckedRunnerIds() {
- return this.runners
- .map(({ id }) => id)
- .filter((id) => this.checkedRunnerIds.indexOf(id) >= 0);
- },
- checkedCount() {
- return this.currentCheckedRunnerIds.length || 0;
- },
- bannerMessage() {
- return sprintf(
- n__(
- 'Runners|%{strongStart}%{count}%{strongEnd} runner selected',
- 'Runners|%{strongStart}%{count}%{strongEnd} runners selected',
- this.checkedCount,
- ),
- {
- count: this.checkedCount,
- },
- );
- },
- modalTitle() {
- return n__('Runners|Delete %d runner', 'Runners|Delete %d runners', this.checkedCount);
- },
- modalActionPrimary() {
- return {
- text: n__(
- 'Runners|Permanently delete %d runner',
- 'Runners|Permanently delete %d runners',
- this.checkedCount,
- ),
- attributes: {
- loading: this.isDeleting,
- variant: 'danger',
- },
- };
- },
- modalActionCancel() {
- return {
- text: __('Cancel'),
- attributes: {
- loading: this.isDeleting,
- },
- };
- },
- modalMessage() {
- return sprintf(
- n__(
- 'Runners|%{strongStart}%{count}%{strongEnd} runner will be permanently deleted and no longer available for projects or groups in the instance. Are you sure you want to continue?',
- 'Runners|%{strongStart}%{count}%{strongEnd} runners will be permanently deleted and no longer available for projects or groups in the instance. Are you sure you want to continue?',
- this.checkedCount,
- ),
- { count: this.checkedCount },
- );
- },
- },
- methods: {
- toastConfirmationMessage(deletedCount) {
- return n__(
- 'Runners|%d selected runner deleted',
- 'Runners|%d selected runners deleted',
- deletedCount,
- );
- },
- onClearChecked() {
- this.localMutations.clearChecked();
- },
- async onConfirmDelete(e) {
- this.isDeleting = true;
- e.preventDefault(); // don't close modal until deletion is complete
-
- try {
- await this.$apollo.mutate({
- mutation: BulkRunnerDelete,
- variables: {
- input: {
- ids: this.currentCheckedRunnerIds,
- },
- },
- update: (cache, { data }) => {
- const { errors, deletedIds } = data.bulkRunnerDelete;
-
- if (errors?.length) {
- this.onError(new Error(errors.join(' ')));
- this.$refs.modal.hide();
- return;
- }
-
- this.$emit('deleted', {
- message: this.toastConfirmationMessage(deletedIds.length),
- });
-
- // Clean up
-
- // Remove deleted runners from the cache
- deletedIds.forEach((id) => {
- const cacheId = cache.identify({ __typename: RUNNER_TYPENAME, id });
- cache.evict({ id: cacheId });
- });
- cache.gc();
-
- this.$refs.modal.hide();
- },
- });
- } catch (error) {
- this.onError(error);
- } finally {
- this.isDeleting = false;
- }
- },
- onError(error) {
- createAlert({
- message: s__(
- 'Runners|Something went wrong while deleting. Please refresh the page to try again.',
- ),
- captureError: true,
- error,
- });
- },
- },
- BULK_DELETE_MODAL_ID: 'bulk-delete-modal',
-};
-</script>
-
-<template>
- <div v-if="checkedCount" class="gl-my-4 gl-p-4 gl-border-1 gl-border-solid gl-border-gray-100">
- <div class="gl-display-flex gl-align-items-center">
- <div>
- <gl-sprintf :message="bannerMessage">
- <template #strong="{ content }">
- <strong>{{ content }}</strong>
- </template>
- </gl-sprintf>
- </div>
- <div class="gl-ml-auto">
- <gl-button variant="default" @click="onClearChecked">{{
- s__('Runners|Clear selection')
- }}</gl-button>
- <gl-button v-gl-modal="$options.BULK_DELETE_MODAL_ID" variant="danger">{{
- s__('Runners|Delete selected')
- }}</gl-button>
- </div>
- </div>
- <gl-modal
- ref="modal"
- size="sm"
- :modal-id="$options.BULK_DELETE_MODAL_ID"
- :title="modalTitle"
- :action-primary="modalActionPrimary"
- :action-cancel="modalActionCancel"
- @primary="onConfirmDelete"
- >
- <gl-sprintf :message="modalMessage">
- <template #strong="{ content }">
- <strong>{{ content }}</strong>
- </template>
- </gl-sprintf>
- </gl-modal>
- </div>
-</template>