blob: b49cec7fa8d878198f730f5f186b4803ef8c08c7 [file] [log] [blame]
Yoshie Muranaka09e8b5d2020-06-08 07:36:59 -07001<template>
Sandeepa Singh7affc522021-07-06 16:29:10 +05302 <page-section :section-title="$t('pageInventory.chassis')">
SurenNeware307382e2020-07-27 20:45:14 +05303 <b-table
4 responsive="md"
Sukanya Pandeyfde429e2020-09-14 20:48:39 +05305 hover
SurenNeware307382e2020-07-27 20:45:14 +05306 :items="chassis"
7 :fields="fields"
8 show-empty
9 :empty-text="$t('global.table.emptyMessage')"
Kenneth Fullbright41057852021-12-27 16:19:37 -060010 :busy="isBusy"
SurenNeware307382e2020-07-27 20:45:14 +053011 >
Yoshie Muranaka09e8b5d2020-06-08 07:36:59 -070012 <!-- Expand chevron icon -->
Derick Montague602e98a2020-10-21 16:20:00 -050013 <template #cell(expandRow)="row">
Dixsie Wolmers83133762020-07-15 08:45:19 -050014 <b-button
15 variant="link"
16 data-test-id="hardwareStatus-button-expandChassis"
Dixsie Wolmers30f11f82020-11-10 16:07:56 -060017 :title="expandRowLabel"
18 class="btn-icon-only"
Dixsie Wolmersb53e0862020-09-08 14:13:38 -050019 @click="toggleRowDetails(row)"
Dixsie Wolmers83133762020-07-15 08:45:19 -050020 >
Dixsie Wolmers30f11f82020-11-10 16:07:56 -060021 <icon-chevron />
SurenNeware6e2cb972020-12-24 20:58:16 +053022 <span class="sr-only">{{ expandRowLabel }}</span>
Yoshie Muranaka09e8b5d2020-06-08 07:36:59 -070023 </b-button>
24 </template>
25
26 <!-- Health -->
Derick Montague602e98a2020-10-21 16:20:00 -050027 <template #cell(health)="{ value }">
Yoshie Muranaka09e8b5d2020-06-08 07:36:59 -070028 <status-icon :status="statusIcon(value)" />
29 {{ value }}
30 </template>
Sandeepa Singh240c0562021-05-06 21:59:20 +053031 <!-- Toggle identify LED -->
32 <template #cell(identifyLed)="row">
33 <b-form-checkbox
34 v-if="hasIdentifyLed(row.item.identifyLed)"
35 v-model="row.item.identifyLed"
36 name="switch"
37 switch
38 @change="toggleIdentifyLedValue(row.item)"
39 >
40 <span v-if="row.item.identifyLed">
41 {{ $t('global.status.on') }}
42 </span>
43 <span v-else> {{ $t('global.status.off') }} </span>
44 </b-form-checkbox>
45 <div v-else>--</div>
46 </template>
Derick Montague602e98a2020-10-21 16:20:00 -050047 <template #row-details="{ item }">
Yoshie Muranaka09e8b5d2020-06-08 07:36:59 -070048 <b-container fluid>
49 <b-row>
Sandeepa Singh240c0562021-05-06 21:59:20 +053050 <b-col class="mt-2" sm="6" xl="6">
Yoshie Muranaka09e8b5d2020-06-08 07:36:59 -070051 <dl>
Sandeepa Singh240c0562021-05-06 21:59:20 +053052 <!-- Name -->
Sandeepa Singh7affc522021-07-06 16:29:10 +053053 <dt>{{ $t('pageInventory.table.name') }}:</dt>
Dixsie Wolmers9726f9a2021-09-07 15:33:16 -050054 <dd>{{ dataFormatter(item.name) }}</dd>
Sandeepa Singh240c0562021-05-06 21:59:20 +053055 <!-- Part number -->
Sandeepa Singh7affc522021-07-06 16:29:10 +053056 <dt>{{ $t('pageInventory.table.partNumber') }}:</dt>
Dixsie Wolmers9726f9a2021-09-07 15:33:16 -050057 <dd>{{ dataFormatter(item.partNumber) }}</dd>
Sandeepa Singh240c0562021-05-06 21:59:20 +053058 <!-- Serial Number -->
Sandeepa Singh7affc522021-07-06 16:29:10 +053059 <dt>{{ $t('pageInventory.table.serialNumber') }}:</dt>
Dixsie Wolmers9726f9a2021-09-07 15:33:16 -050060 <dd>{{ dataFormatter(item.serialNumber) }}</dd>
Sandeepa Singh240c0562021-05-06 21:59:20 +053061 <!-- Model -->
Sandeepa Singh7affc522021-07-06 16:29:10 +053062 <dt>{{ $t('pageInventory.table.model') }}:</dt>
Sandeepa Singh240c0562021-05-06 21:59:20 +053063 <dd class="mb-2">
Dixsie Wolmers9726f9a2021-09-07 15:33:16 -050064 {{ dataFormatter(item.model) }}
Sandeepa Singh240c0562021-05-06 21:59:20 +053065 </dd>
66 <!-- Asset tag -->
Sandeepa Singh7affc522021-07-06 16:29:10 +053067 <dt>{{ $t('pageInventory.table.assetTag') }}:</dt>
Sandeepa Singh240c0562021-05-06 21:59:20 +053068 <dd class="mb-2">
Dixsie Wolmers9726f9a2021-09-07 15:33:16 -050069 {{ dataFormatter(item.assetTag) }}
Sandeepa Singh240c0562021-05-06 21:59:20 +053070 </dd>
Yoshie Muranaka09e8b5d2020-06-08 07:36:59 -070071 </dl>
72 </b-col>
Sandeepa Singh240c0562021-05-06 21:59:20 +053073 <b-col class="mt-2" sm="6" xl="6">
Yoshie Muranaka09e8b5d2020-06-08 07:36:59 -070074 <dl>
Yoshie Muranaka09e8b5d2020-06-08 07:36:59 -070075 <!-- Status state -->
Sandeepa Singh7affc522021-07-06 16:29:10 +053076 <dt>{{ $t('pageInventory.table.statusState') }}:</dt>
Dixsie Wolmers9726f9a2021-09-07 15:33:16 -050077 <dd>{{ dataFormatter(item.statusState) }}</dd>
Sandeepa Singh240c0562021-05-06 21:59:20 +053078 <!-- Power state -->
Sandeepa Singh7affc522021-07-06 16:29:10 +053079 <dt>{{ $t('pageInventory.table.power') }}:</dt>
Dixsie Wolmers9726f9a2021-09-07 15:33:16 -050080 <dd>{{ dataFormatter(item.power) }}</dd>
Sandeepa Singh240c0562021-05-06 21:59:20 +053081 <!-- Health rollup -->
Sandeepa Singh7affc522021-07-06 16:29:10 +053082 <dt>{{ $t('pageInventory.table.healthRollup') }}:</dt>
Dixsie Wolmers9726f9a2021-09-07 15:33:16 -050083 <dd>{{ dataFormatter(item.healthRollup) }}</dd>
Sandeepa Singh240c0562021-05-06 21:59:20 +053084 </dl>
85 </b-col>
86 </b-row>
87 <div class="section-divider mb-3 mt-3"></div>
88 <b-row>
89 <b-col class="mt-2" sm="6" xl="6">
90 <dl>
91 <!-- Manufacturer -->
Sandeepa Singh7affc522021-07-06 16:29:10 +053092 <dt>{{ $t('pageInventory.table.manufacturer') }}:</dt>
Dixsie Wolmers9726f9a2021-09-07 15:33:16 -050093 <dd>{{ dataFormatter(item.manufacturer) }}</dd>
Sandeepa Singh240c0562021-05-06 21:59:20 +053094 <!-- Chassis Type -->
Sandeepa Singh7affc522021-07-06 16:29:10 +053095 <dt>{{ $t('pageInventory.table.chassisType') }}:</dt>
Dixsie Wolmers9726f9a2021-09-07 15:33:16 -050096 <dd>{{ dataFormatter(item.chassisType) }}</dd>
Sandeepa Singh240c0562021-05-06 21:59:20 +053097 </dl>
98 </b-col>
99 <b-col class="mt-2" sm="6" xl="6">
100 <dl>
101 <!-- Min power -->
Sandeepa Singh7affc522021-07-06 16:29:10 +0530102 <dt>{{ $t('pageInventory.table.minPowerWatts') }}:</dt>
Dixsie Wolmers9726f9a2021-09-07 15:33:16 -0500103 <dd>{{ dataFormatter(item.minPowerWatts) }}</dd>
Sandeepa Singh240c0562021-05-06 21:59:20 +0530104 <!-- Max power -->
Sandeepa Singh7affc522021-07-06 16:29:10 +0530105 <dt>{{ $t('pageInventory.table.maxPowerWatts') }}:</dt>
Dixsie Wolmers9726f9a2021-09-07 15:33:16 -0500106 <dd>{{ dataFormatter(item.maxPowerWatts) }}</dd>
Yoshie Muranaka09e8b5d2020-06-08 07:36:59 -0700107 </dl>
108 </b-col>
109 </b-row>
110 </b-container>
111 </template>
112 </b-table>
113 </page-section>
114</template>
115
116<script>
117import PageSection from '@/components/Global/PageSection';
118import IconChevron from '@carbon/icons-vue/es/chevron--down/20';
Sandeepa Singh240c0562021-05-06 21:59:20 +0530119import BVToastMixin from '@/components/Mixins/BVToastMixin';
Yoshie Muranaka09e8b5d2020-06-08 07:36:59 -0700120import StatusIcon from '@/components/Global/StatusIcon';
Dixsie Wolmersb53e0862020-09-08 14:13:38 -0500121
SurenNewareba91c492020-10-27 14:18:54 +0530122import TableRowExpandMixin, {
123 expandRowLabel,
124} from '@/components/Mixins/TableRowExpandMixin';
Dixsie Wolmers9726f9a2021-09-07 15:33:16 -0500125import DataFormatterMixin from '@/components/Mixins/DataFormatterMixin';
Yoshie Muranaka09e8b5d2020-06-08 07:36:59 -0700126
127export default {
128 components: { IconChevron, PageSection, StatusIcon },
Dixsie Wolmers9726f9a2021-09-07 15:33:16 -0500129 mixins: [BVToastMixin, TableRowExpandMixin, DataFormatterMixin],
Yoshie Muranaka09e8b5d2020-06-08 07:36:59 -0700130 data() {
131 return {
Kenneth Fullbright41057852021-12-27 16:19:37 -0600132 isBusy: true,
Yoshie Muranaka09e8b5d2020-06-08 07:36:59 -0700133 fields: [
134 {
135 key: 'expandRow',
136 label: '',
Derick Montague602e98a2020-10-21 16:20:00 -0500137 tdClass: 'table-row-expand',
Yoshie Muranaka09e8b5d2020-06-08 07:36:59 -0700138 },
139 {
140 key: 'id',
Sandeepa Singh7affc522021-07-06 16:29:10 +0530141 label: this.$t('pageInventory.table.id'),
Dixsie Wolmers9726f9a2021-09-07 15:33:16 -0500142 formatter: this.dataFormatter,
Yoshie Muranaka09e8b5d2020-06-08 07:36:59 -0700143 },
144 {
145 key: 'health',
Sandeepa Singh7affc522021-07-06 16:29:10 +0530146 label: this.$t('pageInventory.table.health'),
Dixsie Wolmers9726f9a2021-09-07 15:33:16 -0500147 formatter: this.dataFormatter,
Derick Montague602e98a2020-10-21 16:20:00 -0500148 tdClass: 'text-nowrap',
Yoshie Muranaka09e8b5d2020-06-08 07:36:59 -0700149 },
150 {
Sandeepa Singh240c0562021-05-06 21:59:20 +0530151 key: 'locationNumber',
Sandeepa Singh7affc522021-07-06 16:29:10 +0530152 label: this.$t('pageInventory.table.locationNumber'),
Dixsie Wolmers9726f9a2021-09-07 15:33:16 -0500153 formatter: this.dataFormatter,
Yoshie Muranaka09e8b5d2020-06-08 07:36:59 -0700154 },
155 {
Sandeepa Singh240c0562021-05-06 21:59:20 +0530156 key: 'identifyLed',
Sandeepa Singh7affc522021-07-06 16:29:10 +0530157 label: this.$t('pageInventory.table.identifyLed'),
Dixsie Wolmers9726f9a2021-09-07 15:33:16 -0500158 formatter: this.dataFormatter,
Derick Montague602e98a2020-10-21 16:20:00 -0500159 },
160 ],
SurenNewareba91c492020-10-27 14:18:54 +0530161 expandRowLabel: expandRowLabel,
Yoshie Muranaka09e8b5d2020-06-08 07:36:59 -0700162 };
163 },
164 computed: {
165 chassis() {
166 return this.$store.getters['chassis/chassis'];
Derick Montague602e98a2020-10-21 16:20:00 -0500167 },
Yoshie Muranaka09e8b5d2020-06-08 07:36:59 -0700168 },
169 created() {
170 this.$store.dispatch('chassis/getChassisInfo').finally(() => {
Gunnar Millsdefc9e22020-07-07 20:29:03 -0500171 // Emit initial data fetch complete to parent component
Sukanya Pandeyedb8a772020-10-29 11:33:42 +0530172 this.$root.$emit('hardware-status-chassis-complete');
Kenneth Fullbright41057852021-12-27 16:19:37 -0600173 this.isBusy = false;
Yoshie Muranaka09e8b5d2020-06-08 07:36:59 -0700174 });
Derick Montague602e98a2020-10-21 16:20:00 -0500175 },
Sandeepa Singh240c0562021-05-06 21:59:20 +0530176 methods: {
177 toggleIdentifyLedValue(row) {
178 this.$store
179 .dispatch('chassis/updateIdentifyLedValue', {
180 uri: row.uri,
181 identifyLed: row.identifyLed,
182 })
183 .catch(({ message }) => this.errorToast(message));
184 },
185 // TO DO: Remove this method when the LocationIndicatorActive is added from backend.
186 hasIdentifyLed(identifyLed) {
187 return typeof identifyLed === 'boolean';
188 },
189 },
Yoshie Muranaka09e8b5d2020-06-08 07:36:59 -0700190};
191</script>