blob: 0b2ee60ea3d8a5d3e84f63449699e00729716fe9 [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
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 -->
33 <template v-slot:cell(expandRow)="row">
34 <b-button
35 variant="link"
36 data-test-id="hardwareStatus-button-expandProcessors"
Dixsie Wolmersb53e0862020-09-08 14:13:38 -050037 :aria-label="expandRowLabel"
38 @click="toggleRowDetails(row)"
SurenNewaredc3fa2e2020-08-04 20:45:25 +053039 >
Dixsie Wolmersb53e0862020-09-08 14:13:38 -050040 <icon-chevron :title="expandRowLabel" />
SurenNewaredc3fa2e2020-08-04 20:45:25 +053041 </b-button>
42 </template>
43 <!-- Health -->
44 <template v-slot:cell(health)="{ value }">
45 <status-icon :status="statusIcon(value)" />
46 {{ value }}
47 </template>
48 <template v-slot:row-details="{ item }">
49 <b-container fluid>
50 <b-row>
51 <b-col sm="6" xl="4">
52 <dl>
53 <!-- Name -->
54 <dt>{{ $t('pageHardwareStatus.table.name') }}:</dt>
55 <dd>{{ tableFormatter(item.name) }}</dd>
56 <br />
57 <!-- Model -->
58 <dt>{{ $t('pageHardwareStatus.table.model') }}:</dt>
59 <dd>{{ tableFormatter(item.model) }}</dd>
60 <br />
61 <!-- Instruction set -->
62 <dt>{{ $t('pageHardwareStatus.table.instructionSet') }}:</dt>
63 <dd>{{ tableFormatter(item.instructionSet) }}</dd>
64 <br />
65 <!-- Manufacturer -->
66 <dt>{{ $t('pageHardwareStatus.table.manufacturer') }}:</dt>
67 <dd>{{ tableFormatter(item.manufacturer) }}</dd>
68 </dl>
69 </b-col>
70 <b-col sm="6" xl="4">
71 <dl>
72 <!-- Architecture -->
73 <dt>
74 {{ $t('pageHardwareStatus.table.processorArchitecture') }}:
75 </dt>
76 <dd>{{ tableFormatter(item.processorArchitecture) }}</dd>
77 <br />
78 <!-- Type -->
79 <dt>{{ $t('pageHardwareStatus.table.processorType') }}:</dt>
80 <dd>{{ tableFormatter(item.processorType) }}</dd>
81 <br />
82 <!-- Total cores -->
83 <dt>{{ $t('pageHardwareStatus.table.totalCores') }}:</dt>
84 <dd>{{ tableFormatter(item.totalCores) }}</dd>
85 <br />
86 <!-- Status state -->
87 <dt>{{ $t('pageHardwareStatus.table.statusState') }}:</dt>
88 <dd>{{ tableFormatter(item.statusState) }}</dd>
89 </dl>
90 </b-col>
91 </b-row>
92 </b-container>
93 </template>
94 </b-table>
95 </page-section>
96</template>
97
98<script>
99import PageSection from '@/components/Global/PageSection';
100import IconChevron from '@carbon/icons-vue/es/chevron--down/20';
101import StatusIcon from '@/components/Global/StatusIcon';
Sukanya Pandey99010962020-07-27 21:44:47 +0530102import TableCellCount from '@/components/Global/TableCellCount';
SurenNewaredc3fa2e2020-08-04 20:45:25 +0530103
104import TableSortMixin from '@/components/Mixins/TableSortMixin';
105import TableDataFormatterMixin from '@/components/Mixins/TableDataFormatterMixin';
106import Search from '@/components/Global/Search';
Dixsie Wolmers9b22b492020-09-07 21:26:06 -0500107import SearchFilterMixin from '@/components/Mixins/SearchFilterMixin';
Dixsie Wolmersb53e0862020-09-08 14:13:38 -0500108import TableRowExpandMixin from '@/components/Mixins/TableRowExpandMixin';
SurenNewaredc3fa2e2020-08-04 20:45:25 +0530109
110export default {
Dixsie Wolmersb53e0862020-09-08 14:13:38 -0500111 components: { IconChevron, PageSection, StatusIcon, Search, TableCellCount },
112 mixins: [
113 TableRowExpandMixin,
114 TableDataFormatterMixin,
115 TableSortMixin,
116 SearchFilterMixin
117 ],
SurenNewaredc3fa2e2020-08-04 20:45:25 +0530118 data() {
119 return {
120 fields: [
121 {
122 key: 'expandRow',
123 label: '',
124 tdClass: 'table-row-expand',
125 sortable: false
126 },
127 {
128 key: 'id',
129 label: this.$t('pageHardwareStatus.table.id'),
130 formatter: this.tableFormatter,
131 sortable: true
132 },
133 {
134 key: 'health',
135 label: this.$t('pageHardwareStatus.table.health'),
136 formatter: this.tableFormatter,
137 sortable: true
138 },
139 {
140 key: 'partNumber',
141 label: this.$t('pageHardwareStatus.table.partNumber'),
142 formatter: this.tableFormatter,
143 sortable: true
144 },
145 {
146 key: 'serialNumber',
147 label: this.$t('pageHardwareStatus.table.serialNumber'),
148 formatter: this.tableFormatter,
149 sortable: true
150 }
151 ],
Sukanya Pandey99010962020-07-27 21:44:47 +0530152 searchTotalFilteredRows: 0
SurenNewaredc3fa2e2020-08-04 20:45:25 +0530153 };
154 },
155 computed: {
Sukanya Pandey99010962020-07-27 21:44:47 +0530156 filteredRows() {
157 return this.searchFilter
158 ? this.searchTotalFilteredRows
159 : this.processors.length;
160 },
SurenNewaredc3fa2e2020-08-04 20:45:25 +0530161 processors() {
162 return this.$store.getters['processors/processors'];
163 }
164 },
165 created() {
166 this.$store.dispatch('processors/getProcessorsInfo').finally(() => {
167 // Emit initial data fetch complete to parent component
168 this.$root.$emit('hardwareStatus::processors::complete');
169 });
170 },
171 methods: {
Sukanya Pandey99010962020-07-27 21:44:47 +0530172 onFiltered(filteredItems) {
173 this.searchTotalFilteredRows = filteredItems.length;
SurenNewaredc3fa2e2020-08-04 20:45:25 +0530174 }
175 }
176};
177</script>