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'; 43import { useModal } from 'bootstrap-vue-next'; 44 45export default { 46 name: 'RebootBmc', 47 components: { PageTitle, PageSection }, 48 mixins: [BVToastMixin, LoadingBarMixin], 49 beforeRouteLeave(to, from, next) { 50 this.hideLoader(); 51 next(); 52 }, 53 setup() { 54 const bvModal = useModal(); 55 return { bvModal }; 56 }, 57 data() { 58 return { 59 $t: useI18n().t, 60 }; 61 }, 62 computed: { 63 lastBmcRebootTime() { 64 return this.$store.getters['controls/lastBmcRebootTime']; 65 }, 66 }, 67 created() { 68 this.startLoader(); 69 this.$store 70 .dispatch('controls/getLastBmcRebootTime') 71 .finally(() => this.endLoader()); 72 }, 73 methods: { 74 onClick() { 75 this.$confirm(i18n.global.t('pageRebootBmc.modal.confirmMessage'), { 76 title: i18n.global.t('pageRebootBmc.modal.confirmTitle'), 77 okTitle: i18n.global.t('global.action.confirm'), 78 cancelTitle: i18n.global.t('global.action.cancel'), 79 autoFocusButton: 'ok', 80 }).then((confirmed) => { 81 if (confirmed) this.rebootBmc(); 82 }); 83 }, 84 rebootBmc() { 85 this.$store 86 .dispatch('controls/rebootBmc') 87 .then((message) => this.successToast(message)) 88 .catch(({ message }) => this.errorToast(message)); 89 }, 90 }, 91}; 92</script> 93 94<style lang="scss" scoped></style> 95