1<template> 2 <b-container fluid="xl"> 3 <page-title /> 4 <div class="quicklinks-section"> 5 <overview-quick-links /> 6 </div> 7 <b-row> 8 <b-col> 9 <page-section :section-title="$t('pageOverview.bmcInformation')"> 10 <b-row> 11 <b-col> 12 <dl> 13 <dt>{{ $t('pageOverview.firmwareVersion') }}</dt> 14 <dd>{{ bmcFirmwareVersion }}</dd> 15 </dl> 16 </b-col> 17 </b-row> 18 </page-section> 19 <b-row> 20 <b-col> 21 <page-section 22 :section-title="$t('pageOverview.networkInformation')" 23 > 24 <overview-network /> 25 </page-section> 26 </b-col> 27 </b-row> 28 </b-col> 29 <b-col> 30 <page-section :section-title="$t('pageOverview.serverInformation')"> 31 <b-row> 32 <b-col lg="6"> 33 <dl> 34 <dt>{{ $t('pageOverview.model') }}</dt> 35 <dd>{{ serverModel }}</dd> 36 </dl> 37 </b-col> 38 <b-col lg="6"> 39 <dl> 40 <dt>{{ $t('pageOverview.manufacturer') }}</dt> 41 <dd>{{ serverManufacturer }}</dd> 42 </dl> 43 </b-col> 44 <b-col lg="6"> 45 <dl> 46 <dt>{{ $t('pageOverview.serialNumber') }}</dt> 47 <dd>{{ serverSerialNumber }}</dd> 48 </dl> 49 </b-col> 50 <b-col lg="6"> 51 <dl> 52 <dt>{{ $t('pageOverview.firmwareVersion') }}</dt> 53 <dd>{{ hostFirmwareVersion }}</dd> 54 </dl> 55 </b-col> 56 </b-row> 57 </page-section> 58 <page-section :section-title="$t('pageOverview.powerConsumption')"> 59 <b-row> 60 <b-col sm="6"> 61 <dl> 62 <dt>{{ $t('pageOverview.powerConsumption') }}</dt> 63 <dd v-if="powerConsumptionValue == null"> 64 {{ $t('global.status.notAvailable') }} 65 </dd> 66 <dd v-else>{{ powerConsumptionValue }} W</dd> 67 </dl> 68 </b-col> 69 <b-col sm="6"> 70 <dl> 71 <dt>{{ $t('pageOverview.powerCap') }}</dt> 72 <dd v-if="powerCapValue == null"> 73 {{ $t('global.status.disabled') }} 74 </dd> 75 <dd v-else>{{ powerCapValue }} W</dd> 76 </dl> 77 </b-col> 78 </b-row> 79 </page-section> 80 </b-col> 81 </b-row> 82 <page-section :section-title="$t('pageOverview.highPriorityEvents')"> 83 <overview-events /> 84 </page-section> 85 </b-container> 86</template> 87 88<script> 89import OverviewQuickLinks from './OverviewQuickLinks'; 90import OverviewEvents from './OverviewEvents'; 91import OverviewNetwork from './OverviewNetwork'; 92import PageTitle from '@/components/Global/PageTitle'; 93import PageSection from '@/components/Global/PageSection'; 94import { mapState } from 'vuex'; 95import LoadingBarMixin from '@/components/Mixins/LoadingBarMixin'; 96 97export default { 98 name: 'Overview', 99 components: { 100 OverviewQuickLinks, 101 OverviewEvents, 102 OverviewNetwork, 103 PageTitle, 104 PageSection, 105 }, 106 mixins: [LoadingBarMixin], 107 computed: { 108 ...mapState({ 109 server: (state) => state.system.systems[0], 110 powerCapValue: (state) => state.powerControl.powerCapValue, 111 powerConsumptionValue: (state) => 112 state.powerControl.powerConsumptionValue, 113 serverManufacturer() { 114 if (this.server) return this.server.manufacturer || '--'; 115 return '--'; 116 }, 117 serverModel() { 118 if (this.server) return this.server.model || '--'; 119 return '--'; 120 }, 121 serverSerialNumber() { 122 if (this.server) return this.server.serialNumber || '--'; 123 return '--'; 124 }, 125 }), 126 activeHostFirmware() { 127 return this.$store.getters[`firmware/activeHostFirmware`]; 128 }, 129 hostFirmwareVersion() { 130 return this.activeHostFirmware?.version || '--'; 131 }, 132 activeBmcFirmware() { 133 return this.$store.getters[`firmware/activeBmcFirmware`]; 134 }, 135 bmcFirmwareVersion() { 136 return this.activeBmcFirmware?.version || '--'; 137 }, 138 }, 139 created() { 140 this.startLoader(); 141 const quicklinksPromise = new Promise((resolve) => { 142 this.$root.$on('overview-quicklinks-complete', () => resolve()); 143 }); 144 const networkPromise = new Promise((resolve) => { 145 this.$root.$on('overview-network-complete', () => resolve()); 146 }); 147 const eventsPromise = new Promise((resolve) => { 148 this.$root.$on('overview-events-complete', () => resolve()); 149 }); 150 Promise.all([ 151 this.$store.dispatch('system/getSystem'), 152 this.$store.dispatch(`firmware/getFirmwareInformation`), 153 this.$store.dispatch('powerControl/getPowerControl'), 154 quicklinksPromise, 155 networkPromise, 156 eventsPromise, 157 ]).finally(() => this.endLoader()); 158 }, 159}; 160</script> 161 162<style lang="scss" scoped> 163.quicklinks-section { 164 margin-bottom: $spacer * 2; 165 margin-left: $spacer * -1; 166} 167</style> 168