blob: 6b2648b5573bc6824c63e063fde2b03872ff6437 [file] [log] [blame]
SurenNewaredc3fa2e2020-08-04 20:45:25 +05301<template>
2 <page-section :section-title="$t('pageHardwareStatus.processors')">
3 <!-- Search -->
4 <b-row>
5 <b-col sm="6" md="5" xl="4">
Dixsie Wolmers9b22b492020-09-07 21:26:06 -05006 <search
7 @changeSearch="onChangeSearchInput"
8 @clearSearch="onClearSearchInput"
9 />
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
21 responsive="md"
SurenNeware10fe2762020-08-19 12:01:32 +053022 show-empty
SurenNewaredc3fa2e2020-08-04 20:45:25 +053023 :items="processors"
24 :fields="fields"
25 :sort-desc="true"
26 :filter="searchFilter"
SurenNeware10fe2762020-08-19 12:01:32 +053027 :empty-text="$t('global.table.emptyMessage')"
SurenNeware156a0e62020-08-28 19:20:03 +053028 :empty-filtered-text="$t('global.table.emptySearchMessage')"
Sukanya Pandey99010962020-07-27 21:44:47 +053029 @filtered="onFiltered"
SurenNewaredc3fa2e2020-08-04 20:45:25 +053030 >
31 <!-- Expand button -->
32 <template v-slot:cell(expandRow)="row">
33 <b-button
34 variant="link"
35 data-test-id="hardwareStatus-button-expandProcessors"
Dixsie Wolmersb53e0862020-09-08 14:13:38 -050036 :aria-label="expandRowLabel"
37 @click="toggleRowDetails(row)"
SurenNewaredc3fa2e2020-08-04 20:45:25 +053038 >
Dixsie Wolmersb53e0862020-09-08 14:13:38 -050039 <icon-chevron :title="expandRowLabel" />
SurenNewaredc3fa2e2020-08-04 20:45:25 +053040 </b-button>
41 </template>
42 <!-- Health -->
43 <template v-slot:cell(health)="{ value }">
44 <status-icon :status="statusIcon(value)" />
45 {{ value }}
46 </template>
47 <template v-slot:row-details="{ item }">
48 <b-container fluid>
49 <b-row>
50 <b-col sm="6" xl="4">
51 <dl>
52 <!-- Name -->
53 <dt>{{ $t('pageHardwareStatus.table.name') }}:</dt>
54 <dd>{{ tableFormatter(item.name) }}</dd>
55 <br />
56 <!-- Model -->
57 <dt>{{ $t('pageHardwareStatus.table.model') }}:</dt>
58 <dd>{{ tableFormatter(item.model) }}</dd>
59 <br />
60 <!-- Instruction set -->
61 <dt>{{ $t('pageHardwareStatus.table.instructionSet') }}:</dt>
62 <dd>{{ tableFormatter(item.instructionSet) }}</dd>
63 <br />
64 <!-- Manufacturer -->
65 <dt>{{ $t('pageHardwareStatus.table.manufacturer') }}:</dt>
66 <dd>{{ tableFormatter(item.manufacturer) }}</dd>
67 </dl>
68 </b-col>
69 <b-col sm="6" xl="4">
70 <dl>
71 <!-- Architecture -->
72 <dt>
73 {{ $t('pageHardwareStatus.table.processorArchitecture') }}:
74 </dt>
75 <dd>{{ tableFormatter(item.processorArchitecture) }}</dd>
76 <br />
77 <!-- Type -->
78 <dt>{{ $t('pageHardwareStatus.table.processorType') }}:</dt>
79 <dd>{{ tableFormatter(item.processorType) }}</dd>
80 <br />
81 <!-- Total cores -->
82 <dt>{{ $t('pageHardwareStatus.table.totalCores') }}:</dt>
83 <dd>{{ tableFormatter(item.totalCores) }}</dd>
84 <br />
85 <!-- Status state -->
86 <dt>{{ $t('pageHardwareStatus.table.statusState') }}:</dt>
87 <dd>{{ tableFormatter(item.statusState) }}</dd>
88 </dl>
89 </b-col>
90 </b-row>
91 </b-container>
92 </template>
93 </b-table>
94 </page-section>
95</template>
96
97<script>
98import PageSection from '@/components/Global/PageSection';
99import IconChevron from '@carbon/icons-vue/es/chevron--down/20';
100import StatusIcon from '@/components/Global/StatusIcon';
Sukanya Pandey99010962020-07-27 21:44:47 +0530101import TableCellCount from '@/components/Global/TableCellCount';
SurenNewaredc3fa2e2020-08-04 20:45:25 +0530102
103import TableSortMixin from '@/components/Mixins/TableSortMixin';
104import TableDataFormatterMixin from '@/components/Mixins/TableDataFormatterMixin';
105import Search from '@/components/Global/Search';
Dixsie Wolmers9b22b492020-09-07 21:26:06 -0500106import SearchFilterMixin from '@/components/Mixins/SearchFilterMixin';
Dixsie Wolmersb53e0862020-09-08 14:13:38 -0500107import TableRowExpandMixin from '@/components/Mixins/TableRowExpandMixin';
SurenNewaredc3fa2e2020-08-04 20:45:25 +0530108
109export default {
Dixsie Wolmersb53e0862020-09-08 14:13:38 -0500110 components: { IconChevron, PageSection, StatusIcon, Search, TableCellCount },
111 mixins: [
112 TableRowExpandMixin,
113 TableDataFormatterMixin,
114 TableSortMixin,
115 SearchFilterMixin
116 ],
SurenNewaredc3fa2e2020-08-04 20:45:25 +0530117 data() {
118 return {
119 fields: [
120 {
121 key: 'expandRow',
122 label: '',
123 tdClass: 'table-row-expand',
124 sortable: false
125 },
126 {
127 key: 'id',
128 label: this.$t('pageHardwareStatus.table.id'),
129 formatter: this.tableFormatter,
130 sortable: true
131 },
132 {
133 key: 'health',
134 label: this.$t('pageHardwareStatus.table.health'),
135 formatter: this.tableFormatter,
136 sortable: true
137 },
138 {
139 key: 'partNumber',
140 label: this.$t('pageHardwareStatus.table.partNumber'),
141 formatter: this.tableFormatter,
142 sortable: true
143 },
144 {
145 key: 'serialNumber',
146 label: this.$t('pageHardwareStatus.table.serialNumber'),
147 formatter: this.tableFormatter,
148 sortable: true
149 }
150 ],
Sukanya Pandey99010962020-07-27 21:44:47 +0530151 searchTotalFilteredRows: 0
SurenNewaredc3fa2e2020-08-04 20:45:25 +0530152 };
153 },
154 computed: {
Sukanya Pandey99010962020-07-27 21:44:47 +0530155 filteredRows() {
156 return this.searchFilter
157 ? this.searchTotalFilteredRows
158 : this.processors.length;
159 },
SurenNewaredc3fa2e2020-08-04 20:45:25 +0530160 processors() {
161 return this.$store.getters['processors/processors'];
162 }
163 },
164 created() {
165 this.$store.dispatch('processors/getProcessorsInfo').finally(() => {
166 // Emit initial data fetch complete to parent component
167 this.$root.$emit('hardwareStatus::processors::complete');
168 });
169 },
170 methods: {
Sukanya Pandey99010962020-07-27 21:44:47 +0530171 onFiltered(filteredItems) {
172 this.searchTotalFilteredRows = filteredItems.length;
SurenNewaredc3fa2e2020-08-04 20:45:25 +0530173 }
174 }
175};
176</script>