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:
authorGitLab Bot <gitlab-bot@gitlab.com>2022-03-20 06:08:51 +0300
committerGitLab Bot <gitlab-bot@gitlab.com>2022-03-20 06:08:51 +0300
commitcfe9b4b6e386155d67b57b14d5121fa5f7a85488 (patch)
tree4be3971bfd58db114e3c5896b88b18e8460eedac /app/assets/javascripts/runner
parentb6a77bc2229e2a6d27bf03a1af6d5d0d83daa1c5 (diff)
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'app/assets/javascripts/runner')
-rw-r--r--app/assets/javascripts/runner/components/cells/runner_actions_cell.vue7
-rw-r--r--app/assets/javascripts/runner/components/runner_delete_button.vue53
-rw-r--r--app/assets/javascripts/runner/constants.js6
-rw-r--r--app/assets/javascripts/runner/graphql/list/group_runners.query.graphql1
4 files changed, 53 insertions, 14 deletions
diff --git a/app/assets/javascripts/runner/components/cells/runner_actions_cell.vue b/app/assets/javascripts/runner/components/cells/runner_actions_cell.vue
index c69321de001..d3535f89427 100644
--- a/app/assets/javascripts/runner/components/cells/runner_actions_cell.vue
+++ b/app/assets/javascripts/runner/components/cells/runner_actions_cell.vue
@@ -44,6 +44,11 @@ export default {
<gl-button-group>
<runner-edit-button v-if="canUpdate && editUrl" :href="editUrl" />
<runner-pause-button v-if="canUpdate" :runner="runner" :compact="true" />
- <runner-delete-button v-if="canDelete" :runner="runner" :compact="true" @deleted="onDeleted" />
+ <runner-delete-button
+ :disabled="!canDelete"
+ :runner="runner"
+ :compact="true"
+ @deleted="onDeleted"
+ />
</gl-button-group>
</template>
diff --git a/app/assets/javascripts/runner/components/runner_delete_button.vue b/app/assets/javascripts/runner/components/runner_delete_button.vue
index 854c983f4da..a546a2788de 100644
--- a/app/assets/javascripts/runner/components/runner_delete_button.vue
+++ b/app/assets/javascripts/runner/components/runner_delete_button.vue
@@ -5,7 +5,12 @@ import { createAlert } from '~/flash';
import { sprintf } from '~/locale';
import { captureException } from '~/runner/sentry_utils';
import { getIdFromGraphQLId } from '~/graphql_shared/utils';
-import { I18N_DELETE_RUNNER, I18N_DELETED_TOAST } from '../constants';
+import {
+ I18N_DELETE_DISABLED_MANY_PROJECTS,
+ I18N_DELETE_DISABLED_UNKNOWN_REASON,
+ I18N_DELETE_RUNNER,
+ I18N_DELETED_TOAST,
+} from '../constants';
import RunnerDeleteModal from './runner_delete_modal.vue';
export default {
@@ -26,6 +31,11 @@ export default {
return runner?.id && runner?.shortSha;
},
},
+ disabled: {
+ type: Boolean,
+ required: false,
+ default: false,
+ },
compact: {
type: Boolean,
required: false,
@@ -75,7 +85,14 @@ export default {
return null;
},
tooltip() {
- // Only show tooltip when compact.
+ if (this.disabled && this.runner.projectCount > 1) {
+ return I18N_DELETE_DISABLED_MANY_PROJECTS;
+ }
+ if (this.disabled) {
+ return I18N_DELETE_DISABLED_UNKNOWN_REASON;
+ }
+
+ // Only show basic "delete" tooltip when compact.
// Also prevent a "sticky" tooltip: If this button is
// disabled, mouseout listeners don't run leaving the tooltip stuck
if (this.compact && !this.deleting) {
@@ -83,6 +100,14 @@ export default {
}
return '';
},
+ wrapperTabindex() {
+ if (this.disabled) {
+ // Trigger tooltip on keyboard-focusable wrapper
+ // See https://bootstrap-vue.org/docs/directives/tooltip
+ return '0';
+ }
+ return null;
+ },
},
methods: {
async onDelete() {
@@ -125,20 +150,22 @@ export default {
</script>
<template>
- <gl-button
- v-gl-tooltip.hover.viewport="tooltip"
- v-gl-modal="runnerDeleteModalId"
- :aria-label="ariaLabel"
- :icon="icon"
- :class="buttonClass"
- :loading="deleting"
- variant="danger"
- >
- {{ buttonContent }}
+ <div v-gl-tooltip="tooltip" class="btn-group" :tabindex="wrapperTabindex">
+ <gl-button
+ v-gl-modal="runnerDeleteModalId"
+ :aria-label="ariaLabel"
+ :icon="icon"
+ :class="buttonClass"
+ :loading="deleting"
+ :disabled="disabled"
+ variant="danger"
+ >
+ {{ buttonContent }}
+ </gl-button>
<runner-delete-modal
:modal-id="runnerDeleteModalId"
:runner-name="runnerName"
@primary="onDelete"
/>
- </gl-button>
+ </div>
</template>
diff --git a/app/assets/javascripts/runner/constants.js b/app/assets/javascripts/runner/constants.js
index bd5be2175ad..1e6f9d7c669 100644
--- a/app/assets/javascripts/runner/constants.js
+++ b/app/assets/javascripts/runner/constants.js
@@ -46,6 +46,12 @@ export const I18N_RESUME = __('Resume');
export const I18N_RESUME_TOOLTIP = s__('Runners|Resume accepting jobs');
export const I18N_DELETE_RUNNER = s__('Runners|Delete runner');
+export const I18N_DELETE_DISABLED_MANY_PROJECTS = s__(
+ 'Runners|Multi-project runners cannot be deleted',
+);
+export const I18N_DELETE_DISABLED_UNKNOWN_REASON = s__(
+ 'Runners|Runner cannot be deleted, please contact your administrator',
+);
export const I18N_DELETED_TOAST = s__('Runners|Runner %{name} was deleted');
export const I18N_LOCKED_RUNNER_DESCRIPTION = s__('Runners|You cannot assign to other projects');
diff --git a/app/assets/javascripts/runner/graphql/list/group_runners.query.graphql b/app/assets/javascripts/runner/graphql/list/group_runners.query.graphql
index b517f5e89a8..7aac2c1d4f2 100644
--- a/app/assets/javascripts/runner/graphql/list/group_runners.query.graphql
+++ b/app/assets/javascripts/runner/graphql/list/group_runners.query.graphql
@@ -30,6 +30,7 @@ query getGroupRunners(
editUrl
node {
...ListItem
+ projectCount # Used to determine why some project runners can't be deleted
}
}
pageInfo {