xref: /openbmc/webui-vue/src/views/Operations/RebootBmc/RebootBmc.vue (revision ce7db82c9582c4dac04ac81d9af6b557ae7965e3)
1<template>
2  <b-container fluid="xl">
3    <page-title />
4    <b-row>
5      <b-col md="8" lg="8" xl="6">
6        <page-section>
7          <b-row>
8            <b-col>
9              <dl>
10                <dt>
11                  {{ $t('pageRebootBmc.lastReboot') }}
12                </dt>
13                <dd v-if="lastBmcRebootTime">
14                  {{ $filters.formatDate(lastBmcRebootTime) }}
15                  {{ $filters.formatTime(lastBmcRebootTime) }}
16                </dd>
17                <dd v-else>--</dd>
18              </dl>
19            </b-col>
20          </b-row>
21          {{ $t('pageRebootBmc.rebootInformation') }}
22          <b-button
23            variant="primary"
24            class="d-block mt-5"
25            data-test-id="rebootBmc-button-reboot"
26            @click="onClick"
27          >
28            {{ $t('pageRebootBmc.rebootBmc') }}
29          </b-button>
30        </page-section>
31      </b-col>
32    </b-row>
33  </b-container>
34</template>
35
36<script>
37import PageTitle from '@/components/Global/PageTitle';
38import PageSection from '@/components/Global/PageSection';
39import BVToastMixin from '@/components/Mixins/BVToastMixin';
40import LoadingBarMixin from '@/components/Mixins/LoadingBarMixin';
41import { useI18n } from 'vue-i18n';
42import i18n from '@/i18n';
43
44export default {
45  name: 'RebootBmc',
46  components: { PageTitle, PageSection },
47  mixins: [BVToastMixin, LoadingBarMixin],
48  beforeRouteLeave(to, from, next) {
49    this.hideLoader();
50    next();
51  },
52  data() {
53    return {
54      $t: useI18n().t,
55    };
56  },
57  computed: {
58    lastBmcRebootTime() {
59      return this.$store.getters['controls/lastBmcRebootTime'];
60    },
61  },
62  created() {
63    this.startLoader();
64    this.$store
65      .dispatch('controls/getLastBmcRebootTime')
66      .finally(() => this.endLoader());
67  },
68  methods: {
69    onClick() {
70      this.$bvModal
71        .msgBoxConfirm(i18n.global.t('pageRebootBmc.modal.confirmMessage'), {
72          title: i18n.global.t('pageRebootBmc.modal.confirmTitle'),
73          okTitle: i18n.global.t('global.action.confirm'),
74          cancelTitle: i18n.global.t('global.action.cancel'),
75          autoFocusButton: 'ok',
76        })
77        .then((confirmed) => {
78          if (confirmed) this.rebootBmc();
79        });
80    },
81    rebootBmc() {
82      this.$store
83        .dispatch('controls/rebootBmc')
84        .then((message) => this.successToast(message))
85        .catch(({ message }) => this.errorToast(message));
86    },
87  },
88};
89</script>
90
91<style lang="scss" scoped>
92@import '@/assets/styles/bmc/helpers/_index.scss';
93@import '@/assets/styles/bootstrap/_helpers.scss';
94</style>
95