1<template> 2 <b-container fluid="xl"> 3 <page-title /> 4 <alerts-server-power 5 v-if="isServerPowerOffRequired" 6 :is-server-off="isServerOff" 7 /> 8 9 <!-- Firmware cards --> 10 <b-row> 11 <b-col xl="10"> 12 <!-- BMC Firmware --> 13 <bmc-cards 14 :is-page-disabled="isPageDisabled" 15 :is-server-off="isServerOff" 16 /> 17 18 <!-- Host Firmware --> 19 <host-cards v-if="!isSingleFileUploadEnabled" /> 20 </b-col> 21 </b-row> 22 23 <!-- Update firmware--> 24 <page-section 25 :section-title="$t('pageFirmware.sectionTitleUpdateFirmware')" 26 > 27 <b-row> 28 <b-col sm="8" md="6" xl="4"> 29 <!-- Update form --> 30 <form-update 31 :is-server-off="isServerOff" 32 :is-page-disabled="isPageDisabled" 33 /> 34 </b-col> 35 </b-row> 36 </page-section> 37 </b-container> 38</template> 39 40<script> 41import AlertsServerPower from './FirmwareAlertServerPower'; 42import BmcCards from './FirmwareCardsBmc'; 43import FormUpdate from './FirmwareFormUpdate'; 44import HostCards from './FirmwareCardsHost'; 45import PageSection from '@/components/Global/PageSection'; 46import PageTitle from '@/components/Global/PageTitle'; 47 48import LoadingBarMixin, { loading } from '@/components/Mixins/LoadingBarMixin'; 49import { useI18n } from 'vue-i18n'; 50 51export default { 52 name: 'FirmwareSingleImage', 53 components: { 54 AlertsServerPower, 55 BmcCards, 56 FormUpdate, 57 HostCards, 58 PageSection, 59 PageTitle, 60 }, 61 mixins: [LoadingBarMixin], 62 beforeRouteLeave(to, from, next) { 63 this.hideLoader(); 64 next(); 65 }, 66 data() { 67 return { 68 $t: useI18n().t, 69 loading, 70 isServerPowerOffRequired: 71 process.env.VUE_APP_SERVER_OFF_REQUIRED === 'true', 72 }; 73 }, 74 computed: { 75 serverStatus() { 76 return this.$store.getters['global/serverStatus']; 77 }, 78 isServerOff() { 79 return this.serverStatus === 'off' ? true : false; 80 }, 81 isSingleFileUploadEnabled() { 82 return this.$store.getters['firmware/isSingleFileUploadEnabled']; 83 }, 84 isPageDisabled() { 85 if (this.isServerPowerOffRequired) { 86 return !this.isServerOff || this.loading || this.isOperationInProgress; 87 } 88 return this.loading || this.isOperationInProgress; 89 }, 90 }, 91 created() { 92 this.startLoader(); 93 this.$store 94 .dispatch('firmware/getFirmwareInformation') 95 .finally(() => this.endLoader()); 96 }, 97}; 98</script> 99