blob: 5a27cca71352d13b903acb2c6d866c0efc52f56e [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"
36 @click="row.toggleDetails"
37 >
38 <icon-chevron />
39 </b-button>
40 </template>
41 <!-- Health -->
42 <template v-slot:cell(health)="{ value }">
43 <status-icon :status="statusIcon(value)" />
44 {{ value }}
45 </template>
46 <template v-slot:row-details="{ item }">
47 <b-container fluid>
48 <b-row>
49 <b-col sm="6" xl="4">
50 <dl>
51 <!-- Name -->
52 <dt>{{ $t('pageHardwareStatus.table.name') }}:</dt>
53 <dd>{{ tableFormatter(item.name) }}</dd>
54 <br />
55 <!-- Model -->
56 <dt>{{ $t('pageHardwareStatus.table.model') }}:</dt>
57 <dd>{{ tableFormatter(item.model) }}</dd>
58 <br />
59 <!-- Instruction set -->
60 <dt>{{ $t('pageHardwareStatus.table.instructionSet') }}:</dt>
61 <dd>{{ tableFormatter(item.instructionSet) }}</dd>
62 <br />
63 <!-- Manufacturer -->
64 <dt>{{ $t('pageHardwareStatus.table.manufacturer') }}:</dt>
65 <dd>{{ tableFormatter(item.manufacturer) }}</dd>
66 </dl>
67 </b-col>
68 <b-col sm="6" xl="4">
69 <dl>
70 <!-- Architecture -->
71 <dt>
72 {{ $t('pageHardwareStatus.table.processorArchitecture') }}:
73 </dt>
74 <dd>{{ tableFormatter(item.processorArchitecture) }}</dd>
75 <br />
76 <!-- Type -->
77 <dt>{{ $t('pageHardwareStatus.table.processorType') }}:</dt>
78 <dd>{{ tableFormatter(item.processorType) }}</dd>
79 <br />
80 <!-- Total cores -->
81 <dt>{{ $t('pageHardwareStatus.table.totalCores') }}:</dt>
82 <dd>{{ tableFormatter(item.totalCores) }}</dd>
83 <br />
84 <!-- Status state -->
85 <dt>{{ $t('pageHardwareStatus.table.statusState') }}:</dt>
86 <dd>{{ tableFormatter(item.statusState) }}</dd>
87 </dl>
88 </b-col>
89 </b-row>
90 </b-container>
91 </template>
92 </b-table>
93 </page-section>
94</template>
95
96<script>
97import PageSection from '@/components/Global/PageSection';
98import IconChevron from '@carbon/icons-vue/es/chevron--down/20';
99import StatusIcon from '@/components/Global/StatusIcon';
Sukanya Pandey99010962020-07-27 21:44:47 +0530100import TableCellCount from '@/components/Global/TableCellCount';
SurenNewaredc3fa2e2020-08-04 20:45:25 +0530101
102import TableSortMixin from '@/components/Mixins/TableSortMixin';
103import TableDataFormatterMixin from '@/components/Mixins/TableDataFormatterMixin';
104import Search from '@/components/Global/Search';
Dixsie Wolmers9b22b492020-09-07 21:26:06 -0500105import SearchFilterMixin from '@/components/Mixins/SearchFilterMixin';
SurenNewaredc3fa2e2020-08-04 20:45:25 +0530106
107export default {
Sukanya Pandey99010962020-07-27 21:44:47 +0530108 components: { PageSection, IconChevron, TableCellCount, StatusIcon, Search },
Dixsie Wolmers9b22b492020-09-07 21:26:06 -0500109 mixins: [TableDataFormatterMixin, TableSortMixin, SearchFilterMixin],
SurenNewaredc3fa2e2020-08-04 20:45:25 +0530110 data() {
111 return {
112 fields: [
113 {
114 key: 'expandRow',
115 label: '',
116 tdClass: 'table-row-expand',
117 sortable: false
118 },
119 {
120 key: 'id',
121 label: this.$t('pageHardwareStatus.table.id'),
122 formatter: this.tableFormatter,
123 sortable: true
124 },
125 {
126 key: 'health',
127 label: this.$t('pageHardwareStatus.table.health'),
128 formatter: this.tableFormatter,
129 sortable: true
130 },
131 {
132 key: 'partNumber',
133 label: this.$t('pageHardwareStatus.table.partNumber'),
134 formatter: this.tableFormatter,
135 sortable: true
136 },
137 {
138 key: 'serialNumber',
139 label: this.$t('pageHardwareStatus.table.serialNumber'),
140 formatter: this.tableFormatter,
141 sortable: true
142 }
143 ],
Sukanya Pandey99010962020-07-27 21:44:47 +0530144 searchTotalFilteredRows: 0
SurenNewaredc3fa2e2020-08-04 20:45:25 +0530145 };
146 },
147 computed: {
Sukanya Pandey99010962020-07-27 21:44:47 +0530148 filteredRows() {
149 return this.searchFilter
150 ? this.searchTotalFilteredRows
151 : this.processors.length;
152 },
SurenNewaredc3fa2e2020-08-04 20:45:25 +0530153 processors() {
154 return this.$store.getters['processors/processors'];
155 }
156 },
157 created() {
158 this.$store.dispatch('processors/getProcessorsInfo').finally(() => {
159 // Emit initial data fetch complete to parent component
160 this.$root.$emit('hardwareStatus::processors::complete');
161 });
162 },
163 methods: {
Sukanya Pandey99010962020-07-27 21:44:47 +0530164 onFiltered(filteredItems) {
165 this.searchTotalFilteredRows = filteredItems.length;
SurenNewaredc3fa2e2020-08-04 20:45:25 +0530166 }
167 }
168};
169</script>