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