xref: /openbmc/webui-vue/src/views/Operations/FactoryReset/FactoryReset.vue (revision d36ac8a8be8636ddd0e64ce005d507b21bcdeb00)
1<template>
2  <b-container fluid="xl">
3    <page-title :description="$t('pageFactoryReset.description')" />
4
5    <!-- Reset Form -->
6    <b-form id="factory-reset" @submit.prevent="onResetSubmit">
7      <b-row>
8        <b-col md="8">
9          <b-form-group :label="$t('pageFactoryReset.form.resetOptionsLabel')">
10            <b-form-radio-group
11              id="factory-reset-options"
12              v-model="resetOption"
13              stacked
14            >
15              <b-form-radio
16                class="mb-1"
17                value="resetBios"
18                aria-describedby="reset-bios"
19                data-test-id="factoryReset-radio-resetBios"
20              >
21                {{ $t('pageFactoryReset.form.resetBiosOptionLabel') }}
22              </b-form-radio>
23              <b-form-text id="reset-bios" class="ms-4 mb-3">
24                {{ $t('pageFactoryReset.form.resetBiosOptionHelperText') }}
25              </b-form-text>
26
27              <b-form-radio
28                class="mb-1"
29                value="resetToDefaults"
30                aria-describedby="reset-to-defaults"
31                data-test-id="factoryReset-radio-resetToDefaults"
32              >
33                {{ $t('pageFactoryReset.form.resetToDefaultsOptionLabel') }}
34              </b-form-radio>
35              <b-form-text id="reset-to-defaults" class="ms-4 mb-3">
36                {{
37                  $t('pageFactoryReset.form.resetToDefaultsOptionHelperText')
38                }}
39              </b-form-text>
40            </b-form-radio-group>
41          </b-form-group>
42          <b-button
43            type="submit"
44            variant="primary"
45            data-test-id="factoryReset-button-submit"
46          >
47            {{ $t('global.action.reset') }}
48          </b-button>
49        </b-col>
50      </b-row>
51    </b-form>
52
53    <!-- Modals -->
54    <modal-reset
55      v-model="showResetModal"
56      :reset-type="resetOption"
57      @ok-confirm="onOkConfirm"
58    />
59  </b-container>
60</template>
61
62<script>
63import PageTitle from '@/components/Global/PageTitle';
64import BVToastMixin from '@/components/Mixins/BVToastMixin';
65import LoadingBarMixin from '@/components/Mixins/LoadingBarMixin';
66import ModalReset from './FactoryResetModal';
67import { useI18n } from 'vue-i18n';
68
69export default {
70  name: 'FactoryReset',
71  components: { PageTitle, ModalReset },
72  mixins: [LoadingBarMixin, BVToastMixin],
73  data() {
74    return {
75      $t: useI18n().t,
76      showResetModal: false,
77      resetOption: 'resetBios',
78    };
79  },
80  created() {
81    this.hideLoader();
82  },
83  methods: {
84    onResetSubmit() {
85      this.showResetModal = true;
86    },
87    onOkConfirm() {
88      if (this.resetOption == 'resetBios') {
89        this.onResetBiosConfirm();
90      } else {
91        this.onResetToDefaultsConfirm();
92      }
93    },
94    onResetBiosConfirm() {
95      this.$store
96        .dispatch('factoryReset/resetBios')
97        .then((title) => {
98          this.successToast('', {
99            title,
100          });
101        })
102        .catch(({ message }) => {
103          this.errorToast('', {
104            title: message,
105          });
106        });
107    },
108    onResetToDefaultsConfirm() {
109      this.$store
110        .dispatch('factoryReset/resetToDefaults')
111        .then((title) => {
112          this.successToast('', {
113            title,
114          });
115        })
116        .catch(({ message }) => {
117          this.errorToast('', {
118            title: message,
119          });
120        });
121    },
122  },
123};
124</script>
125