1a02c6f94SSneha Patel<template> 2a02c6f94SSneha Patel <page-section :section-title="$t('pageInventory.assemblies')"> 3a02c6f94SSneha Patel <b-table 4a02c6f94SSneha Patel sort-icon-left 5a02c6f94SSneha Patel no-sort-reset 6a02c6f94SSneha Patel hover 7a02c6f94SSneha Patel responsive="md" 8a02c6f94SSneha Patel :items="items" 9a02c6f94SSneha Patel :fields="fields" 10a02c6f94SSneha Patel show-empty 11a02c6f94SSneha Patel :empty-text="$t('global.table.emptyMessage')" 1241057853SKenneth Fullbright :busy="isBusy" 13a02c6f94SSneha Patel > 14a02c6f94SSneha Patel <!-- Expand chevron icon --> 15a02c6f94SSneha Patel <template #cell(expandRow)="row"> 16a02c6f94SSneha Patel <b-button 17a02c6f94SSneha Patel variant="link" 18a02c6f94SSneha Patel data-test-id="hardwareStatus-button-expandAssembly" 19a02c6f94SSneha Patel :title="expandRowLabel" 20a02c6f94SSneha Patel class="btn-icon-only" 21a02c6f94SSneha Patel @click="toggleRowDetails(row)" 22a02c6f94SSneha Patel > 23a02c6f94SSneha Patel <icon-chevron /> 24a02c6f94SSneha Patel <span class="sr-only">{{ expandRowLabel }}</span> 25a02c6f94SSneha Patel </b-button> 26a02c6f94SSneha Patel </template> 27a02c6f94SSneha Patel 28a02c6f94SSneha Patel <!-- Toggle identify LED --> 29a02c6f94SSneha Patel <template #cell(identifyLed)="row"> 30a02c6f94SSneha Patel <b-form-checkbox 31a02c6f94SSneha Patel v-if="hasIdentifyLed(row.item.identifyLed)" 32a02c6f94SSneha Patel v-model="row.item.identifyLed" 33a02c6f94SSneha Patel name="switch" 34a02c6f94SSneha Patel switch 35a02c6f94SSneha Patel @change="toggleIdentifyLedValue(row.item)" 36a02c6f94SSneha Patel > 37a02c6f94SSneha Patel <span v-if="row.item.identifyLed"> 38a02c6f94SSneha Patel {{ $t('global.status.on') }} 39a02c6f94SSneha Patel </span> 40a02c6f94SSneha Patel <span v-else> {{ $t('global.status.off') }} </span> 41a02c6f94SSneha Patel </b-form-checkbox> 42a02c6f94SSneha Patel <div v-else>--</div> 43a02c6f94SSneha Patel </template> 44a02c6f94SSneha Patel 45a02c6f94SSneha Patel <template #row-details="{ item }"> 46a02c6f94SSneha Patel <b-container fluid> 47a02c6f94SSneha Patel <b-row> 48a02c6f94SSneha Patel <b-col class="mt-2" sm="6" xl="6"> 49a02c6f94SSneha Patel <!-- Nmae --> 50a02c6f94SSneha Patel <dt>{{ $t('pageInventory.table.name') }}:</dt> 517511045cSDixsie Wolmers <dd>{{ dataFormatter(item.name) }}</dd> 52a02c6f94SSneha Patel <!-- Serial number --> 53a02c6f94SSneha Patel <dt>{{ $t('pageInventory.table.serialNumber') }}:</dt> 547511045cSDixsie Wolmers <dd>{{ dataFormatter(item.serialNumber) }}</dd> 55a02c6f94SSneha Patel </b-col> 56a02c6f94SSneha Patel <b-col class="mt-2" sm="6" xl="6"> 57a02c6f94SSneha Patel <!-- Model--> 58a02c6f94SSneha Patel <dt>Model</dt> 597511045cSDixsie Wolmers <dd>{{ dataFormatter(item.model) }}</dd> 60a02c6f94SSneha Patel <!-- Spare Part Number --> 61a02c6f94SSneha Patel <dt>Spare Part Number</dt> 627511045cSDixsie Wolmers <dd>{{ dataFormatter(item.sparePartNumber) }}</dd> 63a02c6f94SSneha Patel </b-col> 64a02c6f94SSneha Patel </b-row> 65a02c6f94SSneha Patel </b-container> 66a02c6f94SSneha Patel </template> 67a02c6f94SSneha Patel </b-table> 68a02c6f94SSneha Patel </page-section> 69a02c6f94SSneha Patel</template> 70a02c6f94SSneha Patel 71a02c6f94SSneha Patel<script> 72a02c6f94SSneha Patelimport PageSection from '@/components/Global/PageSection'; 73a02c6f94SSneha Patelimport IconChevron from '@carbon/icons-vue/es/chevron--down/20'; 74a02c6f94SSneha Patelimport BVToastMixin from '@/components/Mixins/BVToastMixin'; 75a02c6f94SSneha Patelimport TableRowExpandMixin, { 76a02c6f94SSneha Patel expandRowLabel, 77a02c6f94SSneha Patel} from '@/components/Mixins/TableRowExpandMixin'; 789726f9a7SDixsie Wolmersimport DataFormatterMixin from '@/components/Mixins/DataFormatterMixin'; 79*de23ea23SSurya Vimport { useI18n } from 'vue-i18n'; 80*de23ea23SSurya Vimport i18n from '@/i18n'; 81a02c6f94SSneha Patel 82a02c6f94SSneha Patelexport default { 83a02c6f94SSneha Patel components: { IconChevron, PageSection }, 849726f9a7SDixsie Wolmers mixins: [BVToastMixin, TableRowExpandMixin, DataFormatterMixin], 85a02c6f94SSneha Patel data() { 86a02c6f94SSneha Patel return { 87*de23ea23SSurya V $t: useI18n().t, 8841057853SKenneth Fullbright isBusy: true, 89a02c6f94SSneha Patel fields: [ 90a02c6f94SSneha Patel { 91a02c6f94SSneha Patel key: 'expandRow', 92a02c6f94SSneha Patel label: '', 93a02c6f94SSneha Patel tdClass: 'table-row-expand', 94a02c6f94SSneha Patel }, 95a02c6f94SSneha Patel { 96799bcd3fSKenneth Fullbright key: 'name', 97*de23ea23SSurya V label: i18n.global.t('pageInventory.table.id'), 987511045cSDixsie Wolmers formatter: this.dataFormatter, 99a02c6f94SSneha Patel sortable: true, 100a02c6f94SSneha Patel }, 101a02c6f94SSneha Patel { 102a02c6f94SSneha Patel key: 'partNumber', 103*de23ea23SSurya V label: i18n.global.t('pageInventory.table.partNumber'), 1047511045cSDixsie Wolmers formatter: this.dataFormatter, 105a02c6f94SSneha Patel sortable: true, 106a02c6f94SSneha Patel }, 107a02c6f94SSneha Patel { 108a02c6f94SSneha Patel key: 'locationNumber', 109*de23ea23SSurya V label: i18n.global.t('pageInventory.table.locationNumber'), 1107511045cSDixsie Wolmers formatter: this.dataFormatter, 111a02c6f94SSneha Patel sortable: true, 112a02c6f94SSneha Patel }, 113a02c6f94SSneha Patel { 114a02c6f94SSneha Patel key: 'identifyLed', 115*de23ea23SSurya V label: i18n.global.t('pageInventory.table.identifyLed'), 1167511045cSDixsie Wolmers formatter: this.dataFormatter, 117a02c6f94SSneha Patel }, 118a02c6f94SSneha Patel ], 119a02c6f94SSneha Patel expandRowLabel: expandRowLabel, 120a02c6f94SSneha Patel }; 121a02c6f94SSneha Patel }, 122a02c6f94SSneha Patel computed: { 123a02c6f94SSneha Patel assemblies() { 124a02c6f94SSneha Patel return this.$store.getters['assemblies/assemblies']; 125a02c6f94SSneha Patel }, 126a02c6f94SSneha Patel items() { 127a02c6f94SSneha Patel if (this.assemblies) { 128a02c6f94SSneha Patel return this.assemblies; 129a02c6f94SSneha Patel } else { 130a02c6f94SSneha Patel return []; 131a02c6f94SSneha Patel } 132a02c6f94SSneha Patel }, 133a02c6f94SSneha Patel }, 134a02c6f94SSneha Patel created() { 135a02c6f94SSneha Patel this.$store.dispatch('assemblies/getAssemblyInfo').finally(() => { 136a02c6f94SSneha Patel // Emit initial data fetch complete to parent component 137a02c6f94SSneha Patel this.$root.$emit('hardware-status-assembly-complete'); 13841057853SKenneth Fullbright this.isBusy = false; 139a02c6f94SSneha Patel }); 140a02c6f94SSneha Patel }, 141a02c6f94SSneha Patel methods: { 142a02c6f94SSneha Patel toggleIdentifyLedValue(row) { 143a02c6f94SSneha Patel this.$store 144a02c6f94SSneha Patel .dispatch('assemblies/updateIdentifyLedValue', { 145a02c6f94SSneha Patel uri: row.uri, 146d600bb52SKenneth Fullbright memberId: row.id, 147a02c6f94SSneha Patel identifyLed: row.identifyLed, 148a02c6f94SSneha Patel }) 149f11a1901SNikhil Ashoka .then((message) => this.successToast(message)) 150a02c6f94SSneha Patel .catch(({ message }) => this.errorToast(message)); 151a02c6f94SSneha Patel }, 152a02c6f94SSneha Patel hasIdentifyLed(identifyLed) { 153a02c6f94SSneha Patel return typeof identifyLed === 'boolean'; 154a02c6f94SSneha Patel }, 155a02c6f94SSneha Patel }, 156a02c6f94SSneha Patel}; 157a02c6f94SSneha Patel</script> 158