blob: e3b5735d0fcb58d2589e12c134cd8404d047a450 [file] [log] [blame]
SurenNewaredc3fa2e2020-08-04 20:45:25 +05301<template>
2 <page-section :section-title="$t('pageHardwareStatus.processors')">
3 <!-- Search -->
SurenNeware787635a2020-11-24 22:42:42 +05304 <b-row class="align-items-end">
SurenNewaredc3fa2e2020-08-04 20:45:25 +05305 <b-col sm="6" md="5" xl="4">
Dixsie Wolmers9b22b492020-09-07 21:26:06 -05006 <search
Sukanya Pandeyedb8a772020-10-29 11:33:42 +05307 @change-search="onChangeSearchInput"
8 @clear-search="onClearSearchInput"
Dixsie Wolmers9b22b492020-09-07 21:26:06 -05009 />
SurenNewaredc3fa2e2020-08-04 20:45:25 +053010 </b-col>
Sukanya Pandey99010962020-07-27 21:44:47 +053011 <b-col sm="6" md="3" xl="2">
12 <table-cell-count
13 :filtered-items-count="filteredRows"
14 :total-number-of-cells="processors.length"
15 ></table-cell-count>
16 </b-col>
SurenNewaredc3fa2e2020-08-04 20:45:25 +053017 </b-row>
18 <b-table
19 sort-icon-left
20 no-sort-reset
Sukanya Pandeyfde429e2020-09-14 20:48:39 +053021 hover
SurenNewaredc3fa2e2020-08-04 20:45:25 +053022 responsive="md"
SurenNeware10fe2762020-08-19 12:01:32 +053023 show-empty
SurenNewaredc3fa2e2020-08-04 20:45:25 +053024 :items="processors"
25 :fields="fields"
26 :sort-desc="true"
27 :filter="searchFilter"
SurenNeware10fe2762020-08-19 12:01:32 +053028 :empty-text="$t('global.table.emptyMessage')"
SurenNeware156a0e62020-08-28 19:20:03 +053029 :empty-filtered-text="$t('global.table.emptySearchMessage')"
Sukanya Pandey99010962020-07-27 21:44:47 +053030 @filtered="onFiltered"
SurenNewaredc3fa2e2020-08-04 20:45:25 +053031 >
32 <!-- Expand button -->
Derick Montague602e98a2020-10-21 16:20:00 -050033 <template #cell(expandRow)="row">
SurenNewaredc3fa2e2020-08-04 20:45:25 +053034 <b-button
35 variant="link"
36 data-test-id="hardwareStatus-button-expandProcessors"
Dixsie Wolmers30f11f82020-11-10 16:07:56 -060037 :title="expandRowLabel"
38 class="btn-icon-only"
Dixsie Wolmersb53e0862020-09-08 14:13:38 -050039 @click="toggleRowDetails(row)"
SurenNewaredc3fa2e2020-08-04 20:45:25 +053040 >
Dixsie Wolmers30f11f82020-11-10 16:07:56 -060041 <icon-chevron />
SurenNeware6e2cb972020-12-24 20:58:16 +053042 <span class="sr-only">{{ expandRowLabel }}</span>
SurenNewaredc3fa2e2020-08-04 20:45:25 +053043 </b-button>
44 </template>
45 <!-- Health -->
Derick Montague602e98a2020-10-21 16:20:00 -050046 <template #cell(health)="{ value }">
SurenNewaredc3fa2e2020-08-04 20:45:25 +053047 <status-icon :status="statusIcon(value)" />
48 {{ value }}
49 </template>
Sandeepa Singh55ef76a2021-04-21 15:44:45 +053050
51 <!-- Toggle identify LED -->
52 <template #cell(identifyLed)="row">
53 <b-form-checkbox
54 v-if="hasIdentifyLed(row.item.identifyLed)"
55 v-model="row.item.identifyLed"
56 name="switch"
57 switch
58 @change="toggleIdentifyLedValue(row.item)"
59 >
60 <span v-if="row.item.identifyLed">
61 {{ $t('global.status.on') }}
62 </span>
63 <span v-else> {{ $t('global.status.off') }} </span>
64 </b-form-checkbox>
65 <div v-else>--</div>
66 </template>
67
Derick Montague602e98a2020-10-21 16:20:00 -050068 <template #row-details="{ item }">
SurenNewaredc3fa2e2020-08-04 20:45:25 +053069 <b-container fluid>
70 <b-row>
Sandeepa Singh55ef76a2021-04-21 15:44:45 +053071 <b-col class="mt-2" sm="6" xl="6">
SurenNewaredc3fa2e2020-08-04 20:45:25 +053072 <dl>
73 <!-- Name -->
74 <dt>{{ $t('pageHardwareStatus.table.name') }}:</dt>
75 <dd>{{ tableFormatter(item.name) }}</dd>
Sandeepa Singh55ef76a2021-04-21 15:44:45 +053076 <!-- Part Number -->
77 <dt>{{ $t('pageHardwareStatus.table.partNumber') }}:</dt>
78 <dd>{{ tableFormatter(item.partNumber) }}</dd>
79 <!-- Serial Number -->
80 <dt>{{ $t('pageHardwareStatus.table.serialNumber') }}:</dt>
81 <dd>{{ tableFormatter(item.serialNumber) }}</dd>
82 <!-- Spare Part Number -->
83 <dt>{{ $t('pageHardwareStatus.table.sparePartNumber') }}:</dt>
84 <dd>{{ tableFormatter(item.sparePartNumber) }}</dd>
SurenNewaredc3fa2e2020-08-04 20:45:25 +053085 <!-- Model -->
86 <dt>{{ $t('pageHardwareStatus.table.model') }}:</dt>
87 <dd>{{ tableFormatter(item.model) }}</dd>
Sandeepa Singh55ef76a2021-04-21 15:44:45 +053088 <!-- Asset Tag -->
89 <dt>{{ $t('pageHardwareStatus.table.assetTag') }}:</dt>
90 <dd>{{ tableFormatter(item.assetTag) }}</dd>
91 </dl>
92 </b-col>
93 <b-col class="mt-2" sm="6" xl="6">
94 <dl>
95 <!-- Status state -->
96 <dt>{{ $t('pageHardwareStatus.table.statusState') }}:</dt>
97 <dd>{{ tableFormatter(item.statusState) }}</dd>
98 <!-- Health Rollup -->
99 <dt>{{ $t('pageHardwareStatus.table.healthRollup') }}:</dt>
100 <dd>{{ tableFormatter(item.healthRollup) }}</dd>
101 </dl>
102 </b-col>
103 </b-row>
104 <div class="section-divider mb-3 mt-3"></div>
105 <b-row>
106 <b-col class="mt-1" sm="6" xl="6">
107 <dl>
SurenNewaredc3fa2e2020-08-04 20:45:25 +0530108 <!-- Manufacturer -->
109 <dt>{{ $t('pageHardwareStatus.table.manufacturer') }}:</dt>
110 <dd>{{ tableFormatter(item.manufacturer) }}</dd>
Sandeepa Singh55ef76a2021-04-21 15:44:45 +0530111 <!-- Processor Type -->
112 <dt>{{ $t('pageHardwareStatus.table.processorType') }}:</dt>
113 <dd>{{ tableFormatter(item.processorType) }}</dd>
114 <!-- Processor Architecture -->
SurenNewaredc3fa2e2020-08-04 20:45:25 +0530115 <dt>
116 {{ $t('pageHardwareStatus.table.processorArchitecture') }}:
117 </dt>
118 <dd>{{ tableFormatter(item.processorArchitecture) }}</dd>
Sandeepa Singh55ef76a2021-04-21 15:44:45 +0530119 <!-- Instruction Set -->
120 <dt>{{ $t('pageHardwareStatus.table.instructionSet') }}:</dt>
121 <dd>{{ tableFormatter(item.instructionSet) }}</dd>
122 <!-- Version -->
123 <dt>{{ $t('pageHardwareStatus.table.version') }}:</dt>
124 <dd>{{ tableFormatter(item.version) }}</dd>
125 </dl>
126 </b-col>
127 <b-col class="mt-1" sm="6" xl="6">
128 <dl>
129 <!-- Min Speed MHz -->
130 <dt>{{ $t('pageHardwareStatus.table.minSpeedMHz') }}:</dt>
131 <dd>{{ tableFormatter(item.minSpeedMHz) }}</dd>
132 <!-- Max Speed MHz -->
133 <dt>{{ $t('pageHardwareStatus.table.maxSpeedMHz') }}:</dt>
134 <dd>{{ tableFormatter(item.maxSpeedMHz) }}</dd>
135 <!-- Total Cores -->
SurenNewaredc3fa2e2020-08-04 20:45:25 +0530136 <dt>{{ $t('pageHardwareStatus.table.totalCores') }}:</dt>
137 <dd>{{ tableFormatter(item.totalCores) }}</dd>
Sandeepa Singh55ef76a2021-04-21 15:44:45 +0530138 <!-- Total Threads -->
139 <dt>{{ $t('pageHardwareStatus.table.totalThreads') }}:</dt>
140 <dd>{{ tableFormatter(item.totalThreads) }}</dd>
SurenNewaredc3fa2e2020-08-04 20:45:25 +0530141 </dl>
142 </b-col>
143 </b-row>
144 </b-container>
145 </template>
146 </b-table>
147 </page-section>
148</template>
149
150<script>
151import PageSection from '@/components/Global/PageSection';
152import IconChevron from '@carbon/icons-vue/es/chevron--down/20';
153import StatusIcon from '@/components/Global/StatusIcon';
Sukanya Pandey99010962020-07-27 21:44:47 +0530154import TableCellCount from '@/components/Global/TableCellCount';
Sandeepa Singh55ef76a2021-04-21 15:44:45 +0530155import BVToastMixin from '@/components/Mixins/BVToastMixin';
SurenNewaredc3fa2e2020-08-04 20:45:25 +0530156import TableSortMixin from '@/components/Mixins/TableSortMixin';
157import TableDataFormatterMixin from '@/components/Mixins/TableDataFormatterMixin';
158import Search from '@/components/Global/Search';
SurenNewareba91c492020-10-27 14:18:54 +0530159import SearchFilterMixin, {
160 searchFilter,
161} from '@/components/Mixins/SearchFilterMixin';
162import TableRowExpandMixin, {
163 expandRowLabel,
164} from '@/components/Mixins/TableRowExpandMixin';
SurenNewaredc3fa2e2020-08-04 20:45:25 +0530165
166export default {
Dixsie Wolmersb53e0862020-09-08 14:13:38 -0500167 components: { IconChevron, PageSection, StatusIcon, Search, TableCellCount },
168 mixins: [
Sandeepa Singh55ef76a2021-04-21 15:44:45 +0530169 BVToastMixin,
Dixsie Wolmersb53e0862020-09-08 14:13:38 -0500170 TableRowExpandMixin,
171 TableDataFormatterMixin,
172 TableSortMixin,
Derick Montague602e98a2020-10-21 16:20:00 -0500173 SearchFilterMixin,
Dixsie Wolmersb53e0862020-09-08 14:13:38 -0500174 ],
SurenNewaredc3fa2e2020-08-04 20:45:25 +0530175 data() {
176 return {
177 fields: [
178 {
179 key: 'expandRow',
180 label: '',
181 tdClass: 'table-row-expand',
Derick Montague602e98a2020-10-21 16:20:00 -0500182 sortable: false,
SurenNewaredc3fa2e2020-08-04 20:45:25 +0530183 },
184 {
185 key: 'id',
186 label: this.$t('pageHardwareStatus.table.id'),
187 formatter: this.tableFormatter,
Derick Montague602e98a2020-10-21 16:20:00 -0500188 sortable: true,
SurenNewaredc3fa2e2020-08-04 20:45:25 +0530189 },
190 {
191 key: 'health',
192 label: this.$t('pageHardwareStatus.table.health'),
193 formatter: this.tableFormatter,
Dixsie Wolmersa04d46f2020-10-22 06:34:56 -0500194 sortable: true,
Derick Montague602e98a2020-10-21 16:20:00 -0500195 tdClass: 'text-nowrap',
SurenNewaredc3fa2e2020-08-04 20:45:25 +0530196 },
197 {
Sandeepa Singh55ef76a2021-04-21 15:44:45 +0530198 key: 'locationNumber',
199 label: this.$t('pageHardwareStatus.table.locationNumber'),
SurenNewaredc3fa2e2020-08-04 20:45:25 +0530200 formatter: this.tableFormatter,
Derick Montague602e98a2020-10-21 16:20:00 -0500201 sortable: true,
SurenNewaredc3fa2e2020-08-04 20:45:25 +0530202 },
203 {
Sandeepa Singh55ef76a2021-04-21 15:44:45 +0530204 key: 'identifyLed',
205 label: this.$t('pageHardwareStatus.table.identifyLed'),
SurenNewaredc3fa2e2020-08-04 20:45:25 +0530206 formatter: this.tableFormatter,
Sandeepa Singh55ef76a2021-04-21 15:44:45 +0530207 sortable: false,
Derick Montague602e98a2020-10-21 16:20:00 -0500208 },
SurenNewaredc3fa2e2020-08-04 20:45:25 +0530209 ],
SurenNewareba91c492020-10-27 14:18:54 +0530210 searchFilter: searchFilter,
Derick Montague602e98a2020-10-21 16:20:00 -0500211 searchTotalFilteredRows: 0,
SurenNewareba91c492020-10-27 14:18:54 +0530212 expandRowLabel: expandRowLabel,
SurenNewaredc3fa2e2020-08-04 20:45:25 +0530213 };
214 },
215 computed: {
Sukanya Pandey99010962020-07-27 21:44:47 +0530216 filteredRows() {
217 return this.searchFilter
218 ? this.searchTotalFilteredRows
219 : this.processors.length;
220 },
SurenNewaredc3fa2e2020-08-04 20:45:25 +0530221 processors() {
222 return this.$store.getters['processors/processors'];
Derick Montague602e98a2020-10-21 16:20:00 -0500223 },
SurenNewaredc3fa2e2020-08-04 20:45:25 +0530224 },
225 created() {
226 this.$store.dispatch('processors/getProcessorsInfo').finally(() => {
227 // Emit initial data fetch complete to parent component
Sukanya Pandeyedb8a772020-10-29 11:33:42 +0530228 this.$root.$emit('hardware-status-processors-complete');
SurenNewaredc3fa2e2020-08-04 20:45:25 +0530229 });
230 },
231 methods: {
Sukanya Pandey99010962020-07-27 21:44:47 +0530232 onFiltered(filteredItems) {
233 this.searchTotalFilteredRows = filteredItems.length;
Derick Montague602e98a2020-10-21 16:20:00 -0500234 },
Sandeepa Singh55ef76a2021-04-21 15:44:45 +0530235 toggleIdentifyLedValue(row) {
236 this.$store
237 .dispatch('processors/updateIdentifyLedValue', {
238 uri: row.uri,
239 identifyLed: row.identifyLed,
240 })
241 .catch(({ message }) => this.errorToast(message));
242 },
243 // TO DO: remove hasIdentifyLed when the following is merged:
244 // https://gerrit.openbmc-project.xyz/c/openbmc/bmcweb/+/37045
245 hasIdentifyLed(identifyLed) {
246 return typeof identifyLed === 'boolean';
247 },
Derick Montague602e98a2020-10-21 16:20:00 -0500248 },
SurenNewaredc3fa2e2020-08-04 20:45:25 +0530249};
250</script>