summaryrefslogtreecommitdiff
path: root/app/assets/javascripts/environments/components/rollback_modal_manager.vue
blob: 6aa7d96fdfd77cb6c87a20c56a32cb7fabb95de5 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
<script>
import { parseBoolean } from '~/lib/utils/common_utils';
import ConfirmRollbackModal from './confirm_rollback_modal.vue';

export default {
  components: {
    ConfirmRollbackModal,
  },
  props: {
    selector: {
      type: String,
      required: true,
    },
  },
  data() {
    return {
      environment: null,
      retryPath: '',
      visible: false,
    };
  },
  mounted() {
    document.querySelectorAll(this.selector).forEach((button) => {
      button.addEventListener('click', (e) => {
        e.preventDefault();
        const {
          environmentName,
          commitShortSha,
          commitUrl,
          isLastDeployment,
          retryPath,
        } = button.dataset;

        this.environment = {
          name: environmentName,
          commitShortSha,
          commitUrl,
          isLastDeployment: parseBoolean(isLastDeployment),
        };
        this.retryPath = retryPath;
        this.visible = true;
      });
    });
  },
};
</script>

<template>
  <confirm-rollback-modal
    v-if="environment"
    v-model="visible"
    :environment="environment"
    :has-multiple-commits="false"
    :retry-url="retryPath"
  />
  <div v-else></div>
</template>