17affc529SSandeepa Singh<template> 27affc529SSandeepa Singh <b-container fluid="xl"> 37affc529SSandeepa Singh <page-title /> 47affc529SSandeepa Singh <b-row class="align-items-end"> 57affc529SSandeepa Singh <b-col sm="6" md="5" xl="4"> 67affc529SSandeepa Singh <search 77affc529SSandeepa Singh :placeholder="$t('pageSensors.searchForSensors')" 87affc529SSandeepa Singh data-test-id="sensors-input-searchForSensors" 97affc529SSandeepa Singh @change-search="onChangeSearchInput" 107affc529SSandeepa Singh @clear-search="onClearSearchInput" 117affc529SSandeepa Singh /> 127affc529SSandeepa Singh </b-col> 137affc529SSandeepa Singh <b-col sm="3" md="3" xl="2"> 147affc529SSandeepa Singh <table-cell-count 157affc529SSandeepa Singh :filtered-items-count="filteredRows" 167affc529SSandeepa Singh :total-number-of-cells="allSensors.length" 177affc529SSandeepa Singh ></table-cell-count> 187affc529SSandeepa Singh </b-col> 197affc529SSandeepa Singh <b-col sm="3" md="4" xl="6" class="text-right"> 207affc529SSandeepa Singh <table-filter :filters="tableFilters" @filter-change="onFilterChange" /> 217affc529SSandeepa Singh </b-col> 227affc529SSandeepa Singh </b-row> 237affc529SSandeepa Singh <b-row> 247affc529SSandeepa Singh <b-col xl="12"> 257affc529SSandeepa Singh <table-toolbar 267affc529SSandeepa Singh ref="toolbar" 277affc529SSandeepa Singh :selected-items-count="selectedRows.length" 287affc529SSandeepa Singh @clear-selected="clearSelectedRows($refs.table)" 297affc529SSandeepa Singh > 307affc529SSandeepa Singh <template #toolbar-buttons> 317affc529SSandeepa Singh <table-toolbar-export 327affc529SSandeepa Singh :data="selectedRows" 337affc529SSandeepa Singh :file-name="exportFileNameByDate()" 347affc529SSandeepa Singh /> 357affc529SSandeepa Singh </template> 367affc529SSandeepa Singh </table-toolbar> 377affc529SSandeepa Singh <b-table 387affc529SSandeepa Singh ref="table" 397affc529SSandeepa Singh responsive="md" 407affc529SSandeepa Singh selectable 417affc529SSandeepa Singh no-select-on-click 427affc529SSandeepa Singh sort-icon-left 437affc529SSandeepa Singh hover 447affc529SSandeepa Singh no-sort-reset 457affc529SSandeepa Singh sticky-header="75vh" 467affc529SSandeepa Singh sort-by="status" 477affc529SSandeepa Singh show-empty 487affc529SSandeepa Singh :no-border-collapse="true" 497affc529SSandeepa Singh :items="filteredSensors" 507affc529SSandeepa Singh :fields="fields" 517affc529SSandeepa Singh :sort-desc="true" 527affc529SSandeepa Singh :sort-compare="sortCompare" 537affc529SSandeepa Singh :filter="searchFilter" 547affc529SSandeepa Singh :empty-text="$t('global.table.emptyMessage')" 557affc529SSandeepa Singh :empty-filtered-text="$t('global.table.emptySearchMessage')" 5641057853SKenneth Fullbright :busy="isBusy" 577affc529SSandeepa Singh @filtered="onFiltered" 587affc529SSandeepa Singh @row-selected="onRowSelected($event, filteredSensors.length)" 597affc529SSandeepa Singh > 607affc529SSandeepa Singh <!-- Checkbox column --> 617affc529SSandeepa Singh <template #head(checkbox)> 627affc529SSandeepa Singh <b-form-checkbox 637affc529SSandeepa Singh v-model="tableHeaderCheckboxModel" 647affc529SSandeepa Singh :indeterminate="tableHeaderCheckboxIndeterminate" 657affc529SSandeepa Singh @change="onChangeHeaderCheckbox($refs.table)" 667affc529SSandeepa Singh > 677affc529SSandeepa Singh <span class="sr-only">{{ $t('global.table.selectAll') }}</span> 687affc529SSandeepa Singh </b-form-checkbox> 697affc529SSandeepa Singh </template> 707affc529SSandeepa Singh <template #cell(checkbox)="row"> 717affc529SSandeepa Singh <b-form-checkbox 727affc529SSandeepa Singh v-model="row.rowSelected" 737affc529SSandeepa Singh @change="toggleSelectRow($refs.table, row.index)" 747affc529SSandeepa Singh > 757affc529SSandeepa Singh <span class="sr-only">{{ $t('global.table.selectItem') }}</span> 767affc529SSandeepa Singh </b-form-checkbox> 777affc529SSandeepa Singh </template> 787affc529SSandeepa Singh 797affc529SSandeepa Singh <template #cell(status)="{ value }"> 807affc529SSandeepa Singh <status-icon :status="statusIcon(value)" /> {{ value }} 817affc529SSandeepa Singh </template> 827affc529SSandeepa Singh <template #cell(currentValue)="data"> 837affc529SSandeepa Singh {{ data.value }} {{ data.item.units }} 847affc529SSandeepa Singh </template> 857affc529SSandeepa Singh <template #cell(lowerCaution)="data"> 867affc529SSandeepa Singh {{ data.value }} {{ data.item.units }} 877affc529SSandeepa Singh </template> 887affc529SSandeepa Singh <template #cell(upperCaution)="data"> 897affc529SSandeepa Singh {{ data.value }} {{ data.item.units }} 907affc529SSandeepa Singh </template> 917affc529SSandeepa Singh <template #cell(lowerCritical)="data"> 927affc529SSandeepa Singh {{ data.value }} {{ data.item.units }} 937affc529SSandeepa Singh </template> 947affc529SSandeepa Singh <template #cell(upperCritical)="data"> 957affc529SSandeepa Singh {{ data.value }} {{ data.item.units }} 967affc529SSandeepa Singh </template> 977affc529SSandeepa Singh </b-table> 987affc529SSandeepa Singh </b-col> 997affc529SSandeepa Singh </b-row> 1007affc529SSandeepa Singh </b-container> 1017affc529SSandeepa Singh</template> 1027affc529SSandeepa Singh 1037affc529SSandeepa Singh<script> 1047affc529SSandeepa Singhimport PageTitle from '@/components/Global/PageTitle'; 1057affc529SSandeepa Singhimport Search from '@/components/Global/Search'; 1067affc529SSandeepa Singhimport StatusIcon from '@/components/Global/StatusIcon'; 1077affc529SSandeepa Singhimport TableFilter from '@/components/Global/TableFilter'; 1087affc529SSandeepa Singhimport TableToolbar from '@/components/Global/TableToolbar'; 1097affc529SSandeepa Singhimport TableToolbarExport from '@/components/Global/TableToolbarExport'; 1107affc529SSandeepa Singhimport TableCellCount from '@/components/Global/TableCellCount'; 1117affc529SSandeepa Singh 1127affc529SSandeepa Singhimport BVTableSelectableMixin, { 1137affc529SSandeepa Singh selectedRows, 1147affc529SSandeepa Singh tableHeaderCheckboxModel, 1157affc529SSandeepa Singh tableHeaderCheckboxIndeterminate, 1167affc529SSandeepa Singh} from '@/components/Mixins/BVTableSelectableMixin'; 1177affc529SSandeepa Singhimport LoadingBarMixin from '@/components/Mixins/LoadingBarMixin'; 1187affc529SSandeepa Singhimport TableFilterMixin from '@/components/Mixins/TableFilterMixin'; 1199726f9a7SDixsie Wolmersimport DataFormatterMixin from '@/components/Mixins/DataFormatterMixin'; 1207affc529SSandeepa Singhimport TableSortMixin from '@/components/Mixins/TableSortMixin'; 1217affc529SSandeepa Singhimport SearchFilterMixin, { 1227affc529SSandeepa Singh searchFilter, 1237affc529SSandeepa Singh} from '@/components/Mixins/SearchFilterMixin'; 124*de23ea23SSurya Vimport { useI18n } from 'vue-i18n'; 125*de23ea23SSurya Vimport i18n from '@/i18n'; 1267affc529SSandeepa Singh 1277affc529SSandeepa Singhexport default { 1287affc529SSandeepa Singh name: 'Sensors', 1297affc529SSandeepa Singh components: { 1307affc529SSandeepa Singh PageTitle, 1317affc529SSandeepa Singh Search, 1327affc529SSandeepa Singh StatusIcon, 1337affc529SSandeepa Singh TableCellCount, 1347affc529SSandeepa Singh TableFilter, 1357affc529SSandeepa Singh TableToolbar, 1367affc529SSandeepa Singh TableToolbarExport, 1377affc529SSandeepa Singh }, 1387affc529SSandeepa Singh mixins: [ 1397affc529SSandeepa Singh TableFilterMixin, 1407affc529SSandeepa Singh BVTableSelectableMixin, 1417affc529SSandeepa Singh LoadingBarMixin, 1429726f9a7SDixsie Wolmers DataFormatterMixin, 1437affc529SSandeepa Singh TableSortMixin, 1447affc529SSandeepa Singh SearchFilterMixin, 1457affc529SSandeepa Singh ], 1467affc529SSandeepa Singh beforeRouteLeave(to, from, next) { 1477affc529SSandeepa Singh this.hideLoader(); 1487affc529SSandeepa Singh next(); 1497affc529SSandeepa Singh }, 1507affc529SSandeepa Singh data() { 1517affc529SSandeepa Singh return { 152*de23ea23SSurya V $t: useI18n().t, 15341057853SKenneth Fullbright isBusy: true, 1547affc529SSandeepa Singh fields: [ 1557affc529SSandeepa Singh { 1567affc529SSandeepa Singh key: 'checkbox', 1577affc529SSandeepa Singh sortable: false, 1587affc529SSandeepa Singh label: '', 1597affc529SSandeepa Singh }, 1607affc529SSandeepa Singh { 1617affc529SSandeepa Singh key: 'name', 1627affc529SSandeepa Singh sortable: true, 163*de23ea23SSurya V label: i18n.global.t('pageSensors.table.name'), 1647affc529SSandeepa Singh }, 1657affc529SSandeepa Singh { 1667affc529SSandeepa Singh key: 'status', 1677affc529SSandeepa Singh sortable: true, 168*de23ea23SSurya V label: i18n.global.t('pageSensors.table.status'), 1697affc529SSandeepa Singh tdClass: 'text-nowrap', 1707affc529SSandeepa Singh }, 1717affc529SSandeepa Singh { 1727affc529SSandeepa Singh key: 'lowerCritical', 1739726f9a7SDixsie Wolmers formatter: this.dataFormatter, 174*de23ea23SSurya V label: i18n.global.t('pageSensors.table.lowerCritical'), 1757affc529SSandeepa Singh }, 1767affc529SSandeepa Singh { 1777affc529SSandeepa Singh key: 'lowerCaution', 1789726f9a7SDixsie Wolmers formatter: this.dataFormatter, 179*de23ea23SSurya V label: i18n.global.t('pageSensors.table.lowerWarning'), 1807affc529SSandeepa Singh }, 1817affc529SSandeepa Singh 1827affc529SSandeepa Singh { 1837affc529SSandeepa Singh key: 'currentValue', 1849726f9a7SDixsie Wolmers formatter: this.dataFormatter, 185*de23ea23SSurya V label: i18n.global.t('pageSensors.table.currentValue'), 1867affc529SSandeepa Singh }, 1877affc529SSandeepa Singh { 1887affc529SSandeepa Singh key: 'upperCaution', 1899726f9a7SDixsie Wolmers formatter: this.dataFormatter, 190*de23ea23SSurya V label: i18n.global.t('pageSensors.table.upperWarning'), 1917affc529SSandeepa Singh }, 1927affc529SSandeepa Singh { 1937affc529SSandeepa Singh key: 'upperCritical', 1949726f9a7SDixsie Wolmers formatter: this.dataFormatter, 195*de23ea23SSurya V label: i18n.global.t('pageSensors.table.upperCritical'), 1967affc529SSandeepa Singh }, 1977affc529SSandeepa Singh ], 1987affc529SSandeepa Singh tableFilters: [ 1997affc529SSandeepa Singh { 2007affc529SSandeepa Singh key: 'status', 201*de23ea23SSurya V label: i18n.global.t('pageSensors.table.status'), 2023bf966a7Skirankumarb07 values: [ 203*de23ea23SSurya V i18n.global.t('global.action.ok'), 204*de23ea23SSurya V i18n.global.t('global.action.warning'), 205*de23ea23SSurya V i18n.global.t('global.action.critical'), 2063bf966a7Skirankumarb07 ], 2077affc529SSandeepa Singh }, 2087affc529SSandeepa Singh ], 2097affc529SSandeepa Singh activeFilters: [], 2107affc529SSandeepa Singh searchFilter: searchFilter, 2117affc529SSandeepa Singh searchTotalFilteredRows: 0, 2127affc529SSandeepa Singh selectedRows: selectedRows, 2137affc529SSandeepa Singh tableHeaderCheckboxModel: tableHeaderCheckboxModel, 2147affc529SSandeepa Singh tableHeaderCheckboxIndeterminate: tableHeaderCheckboxIndeterminate, 2157affc529SSandeepa Singh }; 2167affc529SSandeepa Singh }, 2177affc529SSandeepa Singh computed: { 2187affc529SSandeepa Singh allSensors() { 2197affc529SSandeepa Singh return this.$store.getters['sensors/sensors']; 2207affc529SSandeepa Singh }, 2217affc529SSandeepa Singh filteredRows() { 2227affc529SSandeepa Singh return this.searchFilter 2237affc529SSandeepa Singh ? this.searchTotalFilteredRows 2247affc529SSandeepa Singh : this.filteredSensors.length; 2257affc529SSandeepa Singh }, 2267affc529SSandeepa Singh filteredSensors() { 2277affc529SSandeepa Singh return this.getFilteredTableData(this.allSensors, this.activeFilters); 2287affc529SSandeepa Singh }, 2297affc529SSandeepa Singh }, 2307affc529SSandeepa Singh created() { 2317affc529SSandeepa Singh this.startLoader(); 23241057853SKenneth Fullbright this.$store.dispatch('sensors/getAllSensors').finally(() => { 23341057853SKenneth Fullbright this.endLoader(); 23441057853SKenneth Fullbright this.isBusy = false; 23541057853SKenneth Fullbright }); 2367affc529SSandeepa Singh }, 2377affc529SSandeepa Singh methods: { 2387affc529SSandeepa Singh sortCompare(a, b, key) { 2397affc529SSandeepa Singh if (key === 'status') { 2407affc529SSandeepa Singh return this.sortStatus(a, b, key); 2417affc529SSandeepa Singh } 2427affc529SSandeepa Singh }, 2437affc529SSandeepa Singh onFilterChange({ activeFilters }) { 2447affc529SSandeepa Singh this.activeFilters = activeFilters; 2457affc529SSandeepa Singh }, 2467affc529SSandeepa Singh onFiltered(filteredItems) { 2477affc529SSandeepa Singh this.searchTotalFilteredRows = filteredItems.length; 2487affc529SSandeepa Singh }, 2497affc529SSandeepa Singh onChangeSearchInput(event) { 2507affc529SSandeepa Singh this.searchFilter = event; 2517affc529SSandeepa Singh }, 2527affc529SSandeepa Singh exportFileNameByDate() { 2537affc529SSandeepa Singh // Create export file name based on date 2547affc529SSandeepa Singh let date = new Date(); 2557affc529SSandeepa Singh date = 2567affc529SSandeepa Singh date.toISOString().slice(0, 10) + 2577affc529SSandeepa Singh '_' + 2587affc529SSandeepa Singh date.toString().split(':').join('-').split(' ')[4]; 259*de23ea23SSurya V return i18n.global.t('pageSensors.exportFilePrefix') + date; 2607affc529SSandeepa Singh }, 2617affc529SSandeepa Singh }, 2627affc529SSandeepa Singh}; 2637affc529SSandeepa Singh</script> 264