17affc529SSandeepa Singh<template> 27affc529SSandeepa Singh <page-section :section-title="$t('pageInventory.bmcManager')"> 37affc529SSandeepa Singh <b-table 47affc529SSandeepa Singh responsive="md" 57affc529SSandeepa Singh hover 67affc529SSandeepa Singh :items="items" 77affc529SSandeepa Singh :fields="fields" 87affc529SSandeepa Singh show-empty 97affc529SSandeepa Singh :empty-text="$t('global.table.emptyMessage')" 1041057853SKenneth Fullbright :busy="isBusy" 117affc529SSandeepa Singh > 127affc529SSandeepa Singh <!-- Expand chevron icon --> 137affc529SSandeepa Singh <template #cell(expandRow)="row"> 147affc529SSandeepa Singh <b-button 157affc529SSandeepa Singh variant="link" 167affc529SSandeepa Singh data-test-id="hardwareStatus-button-expandBmc" 177affc529SSandeepa Singh :title="expandRowLabel" 187affc529SSandeepa Singh class="btn-icon-only" 197affc529SSandeepa Singh @click="toggleRowDetails(row)" 207affc529SSandeepa Singh > 217affc529SSandeepa Singh <icon-chevron /> 227affc529SSandeepa Singh <span class="sr-only">{{ expandRowLabel }}</span> 237affc529SSandeepa Singh </b-button> 247affc529SSandeepa Singh </template> 257affc529SSandeepa Singh 267affc529SSandeepa Singh <!-- Health --> 277affc529SSandeepa Singh <template #cell(health)="{ value }"> 287affc529SSandeepa Singh <status-icon :status="statusIcon(value)" /> 297affc529SSandeepa Singh {{ value }} 307affc529SSandeepa Singh </template> 317affc529SSandeepa Singh 327affc529SSandeepa Singh <!-- Toggle identify LED --> 337affc529SSandeepa Singh <template #cell(identifyLed)="row"> 347affc529SSandeepa Singh <b-form-checkbox 357affc529SSandeepa Singh v-if="hasIdentifyLed(row.item.identifyLed)" 367affc529SSandeepa Singh v-model="row.item.identifyLed" 377affc529SSandeepa Singh name="switch" 387affc529SSandeepa Singh switch 397affc529SSandeepa Singh @change="toggleIdentifyLedValue(row.item)" 407affc529SSandeepa Singh > 417affc529SSandeepa Singh <span v-if="row.item.identifyLed"> 427affc529SSandeepa Singh {{ $t('global.status.on') }} 437affc529SSandeepa Singh </span> 447affc529SSandeepa Singh <span v-else> {{ $t('global.status.off') }} </span> 457affc529SSandeepa Singh </b-form-checkbox> 467affc529SSandeepa Singh <div v-else>--</div> 477affc529SSandeepa Singh </template> 487affc529SSandeepa Singh 497affc529SSandeepa Singh <template #row-details="{ item }"> 507affc529SSandeepa Singh <b-container fluid> 517affc529SSandeepa Singh <b-row> 527affc529SSandeepa Singh <b-col class="mt-2" sm="6" xl="6"> 537affc529SSandeepa Singh <dl> 547affc529SSandeepa Singh <!-- Name --> 557affc529SSandeepa Singh <dt>{{ $t('pageInventory.table.name') }}:</dt> 569726f9a7SDixsie Wolmers <dd>{{ dataFormatter(item.name) }}</dd> 577affc529SSandeepa Singh <!-- Part number --> 587affc529SSandeepa Singh <dt>{{ $t('pageInventory.table.partNumber') }}:</dt> 599726f9a7SDixsie Wolmers <dd>{{ dataFormatter(item.partNumber) }}</dd> 607affc529SSandeepa Singh <!-- Serial number --> 617affc529SSandeepa Singh <dt>{{ $t('pageInventory.table.serialNumber') }}:</dt> 629726f9a7SDixsie Wolmers <dd>{{ dataFormatter(item.serialNumber) }}</dd> 637affc529SSandeepa Singh <!-- Spare part number --> 647affc529SSandeepa Singh <dt>{{ $t('pageInventory.table.sparePartNumber') }}:</dt> 659726f9a7SDixsie Wolmers <dd>{{ dataFormatter(item.sparePartNumber) }}</dd> 667affc529SSandeepa Singh <!-- Model --> 677affc529SSandeepa Singh <dt>{{ $t('pageInventory.table.model') }}:</dt> 689726f9a7SDixsie Wolmers <dd>{{ dataFormatter(item.model) }}</dd> 697affc529SSandeepa Singh <!-- UUID --> 707affc529SSandeepa Singh <dt>{{ $t('pageInventory.table.uuid') }}:</dt> 719726f9a7SDixsie Wolmers <dd>{{ dataFormatter(item.uuid) }}</dd> 727affc529SSandeepa Singh <!-- Service entry point UUID --> 737affc529SSandeepa Singh <dt>{{ $t('pageInventory.table.serviceEntryPointUuid') }}:</dt> 749726f9a7SDixsie Wolmers <dd>{{ dataFormatter(item.serviceEntryPointUuid) }}</dd> 757affc529SSandeepa Singh </dl> 767affc529SSandeepa Singh </b-col> 777affc529SSandeepa Singh <b-col class="mt-2" sm="6" xl="6"> 787affc529SSandeepa Singh <dl> 797affc529SSandeepa Singh <!-- Status state --> 807affc529SSandeepa Singh <dt>{{ $t('pageInventory.table.statusState') }}:</dt> 819726f9a7SDixsie Wolmers <dd>{{ dataFormatter(item.statusState) }}</dd> 827affc529SSandeepa Singh <!-- Power state --> 837affc529SSandeepa Singh <dt>{{ $t('pageInventory.table.power') }}:</dt> 849726f9a7SDixsie Wolmers <dd>{{ dataFormatter(item.powerState) }}</dd> 857affc529SSandeepa Singh <!-- Health rollup --> 867affc529SSandeepa Singh <dt>{{ $t('pageInventory.table.healthRollup') }}:</dt> 879726f9a7SDixsie Wolmers <dd>{{ dataFormatter(item.healthRollup) }}</dd> 887affc529SSandeepa Singh <!-- BMC date and time --> 897affc529SSandeepa Singh <dt>{{ $t('pageInventory.table.bmcDateTime') }}:</dt> 907affc529SSandeepa Singh <dd> 91*de23ea23SSurya V {{ $filters.formatDate(item.dateTime) }} 92*de23ea23SSurya V {{ $filters.formatTime(item.dateTime) }} 937affc529SSandeepa Singh </dd> 947affc529SSandeepa Singh <!-- Reset date and time --> 957affc529SSandeepa Singh <dt>{{ $t('pageInventory.table.lastResetTime') }}:</dt> 967affc529SSandeepa Singh <dd> 97*de23ea23SSurya V {{ $filters.formatDate(item.lastResetTime) }} 98*de23ea23SSurya V {{ $filters.formatTime(item.lastResetTime) }} 997affc529SSandeepa Singh </dd> 1007affc529SSandeepa Singh </dl> 1017affc529SSandeepa Singh </b-col> 1027affc529SSandeepa Singh </b-row> 1037affc529SSandeepa Singh <div class="section-divider mb-3 mt-3"></div> 1047affc529SSandeepa Singh <b-row> 1057affc529SSandeepa Singh <b-col class="mt-2" sm="6" xl="6"> 1067affc529SSandeepa Singh <dl> 1077affc529SSandeepa Singh <!-- Manufacturer --> 1087affc529SSandeepa Singh <dt>{{ $t('pageInventory.table.manufacturer') }}:</dt> 1099726f9a7SDixsie Wolmers <dd>{{ dataFormatter(item.manufacturer) }}</dd> 1107affc529SSandeepa Singh <!-- Description --> 1117affc529SSandeepa Singh <dt>{{ $t('pageInventory.table.description') }}:</dt> 1129726f9a7SDixsie Wolmers <dd>{{ dataFormatter(item.description) }}</dd> 1137affc529SSandeepa Singh <!-- Manager type --> 1147affc529SSandeepa Singh <dt>{{ $t('pageInventory.table.managerType') }}:</dt> 1159726f9a7SDixsie Wolmers <dd>{{ dataFormatter(item.managerType) }}</dd> 1167affc529SSandeepa Singh </dl> 1177affc529SSandeepa Singh </b-col> 1187affc529SSandeepa Singh <b-col class="mt-2" sm="6" xl="6"> 1197affc529SSandeepa Singh <!-- Firmware Version --> 1207affc529SSandeepa Singh <dl> 1215287a8b4SSandeepa Singh <dt>{{ $t('pageInventory.table.firmwareVersion') }}:</dt> 1227affc529SSandeepa Singh <dd>{{ item.firmwareVersion }}</dd> 1237affc529SSandeepa Singh </dl> 1247affc529SSandeepa Singh <!-- Graphical console --> 1257affc529SSandeepa Singh <p class="mt-1 mb-2 h6 float-none m-0"> 1265287a8b4SSandeepa Singh {{ $t('pageInventory.table.graphicalConsole') }} 1277affc529SSandeepa Singh </p> 1287affc529SSandeepa Singh <dl class="ml-4"> 1297affc529SSandeepa Singh <dt>{{ $t('pageInventory.table.connectTypesSupported') }}:</dt> 1307affc529SSandeepa Singh <dd> 1319726f9a7SDixsie Wolmers {{ dataFormatterArray(item.graphicalConsoleConnectTypes) }} 1327affc529SSandeepa Singh </dd> 1337affc529SSandeepa Singh <dt>{{ $t('pageInventory.table.maxConcurrentSessions') }}:</dt> 1347affc529SSandeepa Singh <dd> 1359726f9a7SDixsie Wolmers {{ dataFormatter(item.graphicalConsoleMaxSessions) }} 1367affc529SSandeepa Singh </dd> 1377affc529SSandeepa Singh <dt>{{ $t('pageInventory.table.serviceEnabled') }}:</dt> 1387affc529SSandeepa Singh <dd> 1399726f9a7SDixsie Wolmers {{ dataFormatter(item.graphicalConsoleEnabled) }} 1407affc529SSandeepa Singh </dd> 1417affc529SSandeepa Singh </dl> 1427affc529SSandeepa Singh </b-col> 1437affc529SSandeepa Singh </b-row> 1447affc529SSandeepa Singh </b-container> 1457affc529SSandeepa Singh </template> 1467affc529SSandeepa Singh </b-table> 1477affc529SSandeepa Singh </page-section> 1487affc529SSandeepa Singh</template> 1497affc529SSandeepa Singh 1507affc529SSandeepa Singh<script> 1517affc529SSandeepa Singhimport PageSection from '@/components/Global/PageSection'; 1527affc529SSandeepa Singhimport IconChevron from '@carbon/icons-vue/es/chevron--down/20'; 1537affc529SSandeepa Singhimport StatusIcon from '@/components/Global/StatusIcon'; 1547affc529SSandeepa Singhimport BVToastMixin from '@/components/Mixins/BVToastMixin'; 1557affc529SSandeepa Singhimport TableRowExpandMixin, { 1567affc529SSandeepa Singh expandRowLabel, 1577affc529SSandeepa Singh} from '@/components/Mixins/TableRowExpandMixin'; 1589726f9a7SDixsie Wolmersimport DataFormatterMixin from '@/components/Mixins/DataFormatterMixin'; 159*de23ea23SSurya Vimport { useI18n } from 'vue-i18n'; 160*de23ea23SSurya Vimport i18n from '@/i18n'; 1617affc529SSandeepa Singh 1627affc529SSandeepa Singhexport default { 1637affc529SSandeepa Singh components: { IconChevron, PageSection, StatusIcon }, 1649726f9a7SDixsie Wolmers mixins: [BVToastMixin, TableRowExpandMixin, DataFormatterMixin], 1657affc529SSandeepa Singh data() { 1667affc529SSandeepa Singh return { 167*de23ea23SSurya V $t: useI18n().t, 16841057853SKenneth Fullbright isBusy: true, 1697affc529SSandeepa Singh fields: [ 1707affc529SSandeepa Singh { 1717affc529SSandeepa Singh key: 'expandRow', 1727affc529SSandeepa Singh label: '', 1737affc529SSandeepa Singh tdClass: 'table-row-expand', 1747affc529SSandeepa Singh }, 1757affc529SSandeepa Singh { 1767affc529SSandeepa Singh key: 'id', 177*de23ea23SSurya V label: i18n.global.t('pageInventory.table.id'), 1789726f9a7SDixsie Wolmers formatter: this.dataFormatter, 1797affc529SSandeepa Singh }, 1807affc529SSandeepa Singh { 1817affc529SSandeepa Singh key: 'health', 182*de23ea23SSurya V label: i18n.global.t('pageInventory.table.health'), 1839726f9a7SDixsie Wolmers formatter: this.dataFormatter, 1847affc529SSandeepa Singh }, 1857affc529SSandeepa Singh { 1867affc529SSandeepa Singh key: 'locationNumber', 187*de23ea23SSurya V label: i18n.global.t('pageInventory.table.locationNumber'), 1889726f9a7SDixsie Wolmers formatter: this.dataFormatter, 1897affc529SSandeepa Singh }, 1907affc529SSandeepa Singh { 1917affc529SSandeepa Singh key: 'identifyLed', 192*de23ea23SSurya V label: i18n.global.t('pageInventory.table.identifyLed'), 1939726f9a7SDixsie Wolmers formatter: this.dataFormatter, 1947affc529SSandeepa Singh }, 1957affc529SSandeepa Singh ], 1967affc529SSandeepa Singh expandRowLabel: expandRowLabel, 1977affc529SSandeepa Singh }; 1987affc529SSandeepa Singh }, 1997affc529SSandeepa Singh computed: { 2007affc529SSandeepa Singh bmc() { 2017affc529SSandeepa Singh return this.$store.getters['bmc/bmc']; 2027affc529SSandeepa Singh }, 2037affc529SSandeepa Singh items() { 2047affc529SSandeepa Singh if (this.bmc) { 2057affc529SSandeepa Singh return [this.bmc]; 2067affc529SSandeepa Singh } else { 2077affc529SSandeepa Singh return []; 2087affc529SSandeepa Singh } 2097affc529SSandeepa Singh }, 2107affc529SSandeepa Singh }, 2117affc529SSandeepa Singh created() { 2127affc529SSandeepa Singh this.$store.dispatch('bmc/getBmcInfo').finally(() => { 2137affc529SSandeepa Singh // Emit initial data fetch complete to parent component 2147affc529SSandeepa Singh this.$root.$emit('hardware-status-bmc-manager-complete'); 21541057853SKenneth Fullbright this.isBusy = false; 2167affc529SSandeepa Singh }); 2177affc529SSandeepa Singh }, 2187affc529SSandeepa Singh methods: { 2197affc529SSandeepa Singh toggleIdentifyLedValue(row) { 2207affc529SSandeepa Singh this.$store 2217affc529SSandeepa Singh .dispatch('bmc/updateIdentifyLedValue', { 2227affc529SSandeepa Singh uri: row.uri, 2237affc529SSandeepa Singh identifyLed: row.identifyLed, 2247affc529SSandeepa Singh }) 225f11a1901SNikhil Ashoka .then((message) => this.successToast(message)) 2267affc529SSandeepa Singh .catch(({ message }) => this.errorToast(message)); 2277affc529SSandeepa Singh }, 2287affc529SSandeepa Singh // TO DO: remove hasIdentifyLed method once the following story is merged: 2297affc529SSandeepa Singh // https://gerrit.openbmc-project.xyz/c/openbmc/bmcweb/+/43179 2307affc529SSandeepa Singh hasIdentifyLed(identifyLed) { 2317affc529SSandeepa Singh return typeof identifyLed === 'boolean'; 2327affc529SSandeepa Singh }, 2337affc529SSandeepa Singh }, 2347affc529SSandeepa Singh}; 2357affc529SSandeepa Singh</script> 236