blob: 9bc88c1aafbdda15bcbe1ab6255efaf701383951 [file] [log] [blame]
Yoshie Muranaka6f102342020-05-05 09:45:39 -07001<template>
2 <b-container fluid="xl">
3 <page-title />
SurenNeware787635a2020-11-24 22:42:42 +05304 <b-row class="align-items-start">
5 <b-col sm="8" xl="6" class="d-sm-flex align-items-end">
Yoshie Muranaka193c22a2020-06-30 20:54:10 -07006 <search
7 :placeholder="$t('pageEventLogs.table.searchLogs')"
Sandeepa Singh99e20d82021-02-09 17:37:59 +05308 data-test-id="eventLogs-input-searchLogs"
Sukanya Pandeyedb8a772020-10-29 11:33:42 +05309 @change-search="onChangeSearchInput"
10 @clear-search="onClearSearchInput"
Yoshie Muranaka193c22a2020-06-30 20:54:10 -070011 />
SurenNeware787635a2020-11-24 22:42:42 +053012 <div class="ml-sm-4">
13 <table-cell-count
14 :filtered-items-count="filteredRows"
15 :total-number-of-cells="allLogs.length"
16 ></table-cell-count>
17 </div>
Yoshie Muranaka193c22a2020-06-30 20:54:10 -070018 </b-col>
SurenNeware787635a2020-11-24 22:42:42 +053019 <b-col sm="8" md="7" xl="6">
Yoshie Muranaka68bbba22020-05-18 09:49:37 -070020 <table-date-filter @change="onChangeDateTimeFilter" />
21 </b-col>
22 </b-row>
Yoshie Muranaka6f102342020-05-05 09:45:39 -070023 <b-row>
24 <b-col class="text-right">
Sukanya Pandeyedb8a772020-10-29 11:33:42 +053025 <table-filter :filters="tableFilters" @filter-change="onFilterChange" />
Yoshie Muranaka6f102342020-05-05 09:45:39 -070026 </b-col>
27 </b-row>
28 <b-row>
29 <b-col>
Yoshie Muranakabe3af332020-05-11 08:23:04 -070030 <table-toolbar
31 ref="toolbar"
32 :selected-items-count="selectedRows.length"
33 :actions="batchActions"
Sukanya Pandeyedb8a772020-10-29 11:33:42 +053034 @clear-selected="clearSelectedRows($refs.table)"
35 @batch-action="onBatchAction"
Yoshie Muranakabe3af332020-05-11 08:23:04 -070036 >
Dixsie Wolmers27d68af2021-05-02 18:20:27 -050037 <template #toolbar-buttons>
38 <b-button variant="primary" @click="resolveLogs">
39 {{ $t('pageEventLogs.resolve') }}
40 </b-button>
41 <b-button variant="primary" @click="unresolveLogs">
42 {{ $t('pageEventLogs.unresolve') }}
43 </b-button>
Yoshie Muranakabe3af332020-05-11 08:23:04 -070044 <table-toolbar-export
45 :data="batchExportData"
SurenNeware96ebb0d2020-09-08 17:42:39 +053046 :file-name="exportFileNameByDate()"
Yoshie Muranakabe3af332020-05-11 08:23:04 -070047 />
48 </template>
49 </table-toolbar>
Yoshie Muranaka6f102342020-05-05 09:45:39 -070050 <b-table
Yoshie Muranakaf9832b02020-05-12 12:04:46 -070051 id="table-event-logs"
Yoshie Muranakabe3af332020-05-11 08:23:04 -070052 ref="table"
SurenNeware5e25e282020-07-08 15:57:23 +053053 responsive="md"
Yoshie Muranakabe3af332020-05-11 08:23:04 -070054 selectable
55 no-select-on-click
Yoshie Muranaka6f102342020-05-05 09:45:39 -070056 sort-icon-left
Sukanya Pandeyfde429e2020-09-14 20:48:39 +053057 hover
Yoshie Muranaka6f102342020-05-05 09:45:39 -070058 no-sort-reset
59 sort-desc
60 show-empty
Derick Montague6b140ba2020-09-03 16:26:33 -050061 sort-by="id"
Yoshie Muranakabe3af332020-05-11 08:23:04 -070062 :fields="fields"
63 :items="filteredLogs"
Yoshie Muranaka6f102342020-05-05 09:45:39 -070064 :sort-compare="onSortCompare"
SurenNeware307382e2020-07-27 20:45:14 +053065 :empty-text="$t('global.table.emptyMessage')"
SurenNeware156a0e62020-08-28 19:20:03 +053066 :empty-filtered-text="$t('global.table.emptySearchMessage')"
Yoshie Muranakaf9832b02020-05-12 12:04:46 -070067 :per-page="perPage"
68 :current-page="currentPage"
Yoshie Muranaka193c22a2020-06-30 20:54:10 -070069 :filter="searchFilter"
Sukanya Pandey99010962020-07-27 21:44:47 +053070 @filtered="onFiltered"
Yoshie Muranakabe3af332020-05-11 08:23:04 -070071 @row-selected="onRowSelected($event, filteredLogs.length)"
Yoshie Muranaka6f102342020-05-05 09:45:39 -070072 >
Yoshie Muranakabe3af332020-05-11 08:23:04 -070073 <!-- Checkbox column -->
Derick Montague602e98a2020-10-21 16:20:00 -050074 <template #head(checkbox)>
Yoshie Muranakabe3af332020-05-11 08:23:04 -070075 <b-form-checkbox
76 v-model="tableHeaderCheckboxModel"
Yoshie Muranakaed06dc12020-06-16 12:12:27 -070077 data-test-id="eventLogs-checkbox-selectAll"
Yoshie Muranakabe3af332020-05-11 08:23:04 -070078 :indeterminate="tableHeaderCheckboxIndeterminate"
79 @change="onChangeHeaderCheckbox($refs.table)"
Dixsie Wolmersc42ad712020-11-19 17:29:24 -060080 >
81 <span class="sr-only">{{ $t('global.table.selectAll') }}</span>
82 </b-form-checkbox>
Yoshie Muranakabe3af332020-05-11 08:23:04 -070083 </template>
Derick Montague602e98a2020-10-21 16:20:00 -050084 <template #cell(checkbox)="row">
Yoshie Muranakabe3af332020-05-11 08:23:04 -070085 <b-form-checkbox
86 v-model="row.rowSelected"
Yoshie Muranakaed06dc12020-06-16 12:12:27 -070087 :data-test-id="`eventLogs-checkbox-selectRow-${row.index}`"
Yoshie Muranakabe3af332020-05-11 08:23:04 -070088 @change="toggleSelectRow($refs.table, row.index)"
Dixsie Wolmersc42ad712020-11-19 17:29:24 -060089 >
90 <span class="sr-only">{{ $t('global.table.selectItem') }}</span>
91 </b-form-checkbox>
Yoshie Muranakabe3af332020-05-11 08:23:04 -070092 </template>
93
Sukanya Pandey47b047c2020-12-23 13:18:55 +053094 <!-- Expand chevron icon -->
95 <template #cell(expandRow)="row">
96 <b-button
97 variant="link"
98 :aria-label="expandRowLabel"
99 :title="expandRowLabel"
100 class="btn-icon-only"
101 @click="toggleRowDetails(row)"
102 >
103 <icon-chevron />
104 </b-button>
105 </template>
106
107 <template #row-details="{ item }">
108 <b-container fluid>
109 <b-row>
Dixsie Wolmers8b1beff2021-06-14 11:29:44 -0500110 <b-col>
Sukanya Pandey47b047c2020-12-23 13:18:55 +0530111 <dl>
112 <!-- Name -->
113 <dt>{{ $t('pageEventLogs.table.name') }}:</dt>
114 <dd>{{ tableFormatter(item.name) }}</dd>
115 </dl>
Dixsie Wolmers27d68af2021-05-02 18:20:27 -0500116 <dl>
117 <!-- Type -->
118 <dt>{{ $t('pageEventLogs.table.type') }}:</dt>
119 <dd>{{ tableFormatter(item.type) }}</dd>
120 </dl>
Sukanya Pandey47b047c2020-12-23 13:18:55 +0530121 </b-col>
Dixsie Wolmers8b1beff2021-06-14 11:29:44 -0500122 <b-col>
Sukanya Pandey47b047c2020-12-23 13:18:55 +0530123 <dl>
124 <!-- Modified date -->
125 <dt>{{ $t('pageEventLogs.table.modifiedDate') }}:</dt>
126 <dd v-if="item.modifiedDate">
127 {{ item.modifiedDate | formatDate }}
128 {{ item.modifiedDate | formatTime }}
129 </dd>
130 <dd v-else>--</dd>
131 </dl>
132 </b-col>
Dixsie Wolmers8b1beff2021-06-14 11:29:44 -0500133 <b-col class="text-nowrap">
134 <b-button
135 class="btn btn-secondary float-right"
136 :href="item.additionalDataUri"
137 target="_blank"
138 >
139 <icon-download />{{ $t('pageEventLogs.additionalDataUri') }}
140 </b-button>
141 </b-col>
Sukanya Pandey47b047c2020-12-23 13:18:55 +0530142 </b-row>
143 </b-container>
144 </template>
145
Yoshie Muranakabe3af332020-05-11 08:23:04 -0700146 <!-- Severity column -->
Derick Montague602e98a2020-10-21 16:20:00 -0500147 <template #cell(severity)="{ value }">
Mateusz Gapskib1f12532020-07-24 08:15:23 +0200148 <status-icon v-if="value" :status="statusIcon(value)" />
Yoshie Muranaka6f102342020-05-05 09:45:39 -0700149 {{ value }}
150 </template>
Yoshie Muranakabe3af332020-05-11 08:23:04 -0700151 <!-- Date column -->
Derick Montague602e98a2020-10-21 16:20:00 -0500152 <template #cell(date)="{ value }">
Dixsie Wolmers949cdd52020-08-24 21:36:37 -0500153 <p class="mb-0">{{ value | formatDate }}</p>
154 <p class="mb-0">{{ value | formatTime }}</p>
Yoshie Muranaka6f102342020-05-05 09:45:39 -0700155 </template>
Yoshie Muranakabe3af332020-05-11 08:23:04 -0700156
Dixsie Wolmers27d68af2021-05-02 18:20:27 -0500157 <!-- Status column -->
158 <template #cell(status)="row">
159 <b-form-checkbox
160 v-model="row.item.status"
161 name="switch"
162 switch
163 @change="changelogStatus(row.item)"
164 >
165 <span v-if="row.item.status">
166 {{ $t('pageEventLogs.resolved') }}
167 </span>
168 <span v-else> {{ $t('pageEventLogs.unresolved') }} </span>
169 </b-form-checkbox>
170 </template>
171 <template #cell(filterByStatus)="{ value }">
172 {{ value }}
173 </template>
174
Yoshie Muranakabe3af332020-05-11 08:23:04 -0700175 <!-- Actions column -->
Derick Montague602e98a2020-10-21 16:20:00 -0500176 <template #cell(actions)="row">
Yoshie Muranakabe3af332020-05-11 08:23:04 -0700177 <table-row-action
Yoshie Muranakaed06dc12020-06-16 12:12:27 -0700178 v-for="(action, index) in row.item.actions"
Yoshie Muranakabe3af332020-05-11 08:23:04 -0700179 :key="index"
180 :value="action.value"
181 :title="action.title"
Yoshie Muranakaed06dc12020-06-16 12:12:27 -0700182 :row-data="row.item"
SurenNeware96ebb0d2020-09-08 17:42:39 +0530183 :export-name="exportFileNameByDate()"
Yoshie Muranakaed06dc12020-06-16 12:12:27 -0700184 :data-test-id="`eventLogs-button-deleteRow-${row.index}`"
Sukanya Pandeyedb8a772020-10-29 11:33:42 +0530185 @click-table-action="onTableRowAction($event, row.item)"
Yoshie Muranakabe3af332020-05-11 08:23:04 -0700186 >
Derick Montague602e98a2020-10-21 16:20:00 -0500187 <template #icon>
Yoshie Muranakabe3af332020-05-11 08:23:04 -0700188 <icon-export v-if="action.value === 'export'" />
189 <icon-trashcan v-if="action.value === 'delete'" />
190 </template>
191 </table-row-action>
192 </template>
Yoshie Muranaka6f102342020-05-05 09:45:39 -0700193 </b-table>
194 </b-col>
195 </b-row>
Yoshie Muranakaf9832b02020-05-12 12:04:46 -0700196
197 <!-- Table pagination -->
198 <b-row>
SurenNewarea35b5a12020-10-13 17:08:20 +0530199 <b-col sm="6">
Yoshie Muranakaf9832b02020-05-12 12:04:46 -0700200 <b-form-group
201 class="table-pagination-select"
202 :label="$t('global.table.itemsPerPage')"
203 label-for="pagination-items-per-page"
204 >
205 <b-form-select
206 id="pagination-items-per-page"
207 v-model="perPage"
208 :options="itemsPerPageOptions"
209 />
210 </b-form-group>
SurenNewarea35b5a12020-10-13 17:08:20 +0530211 </b-col>
212 <b-col sm="6">
Yoshie Muranakaf9832b02020-05-12 12:04:46 -0700213 <b-pagination
214 v-model="currentPage"
215 first-number
216 last-number
217 :per-page="perPage"
218 :total-rows="getTotalRowCount(filteredLogs.length)"
219 aria-controls="table-event-logs"
220 />
221 </b-col>
222 </b-row>
Yoshie Muranaka6f102342020-05-05 09:45:39 -0700223 </b-container>
224</template>
225
226<script>
Yoshie Muranakabe3af332020-05-11 08:23:04 -0700227import IconTrashcan from '@carbon/icons-vue/es/trash-can/20';
Sukanya Pandeyb2ca0c02020-07-20 23:23:29 +0530228import IconExport from '@carbon/icons-vue/es/document--export/20';
Sukanya Pandey47b047c2020-12-23 13:18:55 +0530229import IconChevron from '@carbon/icons-vue/es/chevron--down/20';
Dixsie Wolmers8b1beff2021-06-14 11:29:44 -0500230import IconDownload from '@carbon/icons-vue/es/download/20';
Yoshie Muranakabe3af332020-05-11 08:23:04 -0700231import { omit } from 'lodash';
232
Yoshie Muranaka6f102342020-05-05 09:45:39 -0700233import PageTitle from '@/components/Global/PageTitle';
234import StatusIcon from '@/components/Global/StatusIcon';
Derick Montagued853fba2020-07-16 11:24:10 -0500235import Search from '@/components/Global/Search';
Sukanya Pandey99010962020-07-27 21:44:47 +0530236import TableCellCount from '@/components/Global/TableCellCount';
Yoshie Muranaka68bbba22020-05-18 09:49:37 -0700237import TableDateFilter from '@/components/Global/TableDateFilter';
Yoshie Muranaka6f102342020-05-05 09:45:39 -0700238import TableFilter from '@/components/Global/TableFilter';
Yoshie Muranakabe3af332020-05-11 08:23:04 -0700239import TableRowAction from '@/components/Global/TableRowAction';
240import TableToolbar from '@/components/Global/TableToolbar';
241import TableToolbarExport from '@/components/Global/TableToolbarExport';
Yoshie Muranaka6f102342020-05-05 09:45:39 -0700242
243import LoadingBarMixin from '@/components/Mixins/LoadingBarMixin';
244import TableFilterMixin from '@/components/Mixins/TableFilterMixin';
SurenNewareba91c492020-10-27 14:18:54 +0530245import BVPaginationMixin, {
246 currentPage,
247 perPage,
248 itemsPerPageOptions,
249} from '@/components/Mixins/BVPaginationMixin';
250import BVTableSelectableMixin, {
251 selectedRows,
252 tableHeaderCheckboxModel,
253 tableHeaderCheckboxIndeterminate,
254} from '@/components/Mixins/BVTableSelectableMixin';
Yoshie Muranakabe3af332020-05-11 08:23:04 -0700255import BVToastMixin from '@/components/Mixins/BVToastMixin';
Yoshie Muranaka73e419a2020-06-18 13:08:19 -0700256import TableDataFormatterMixin from '@/components/Mixins/TableDataFormatterMixin';
257import TableSortMixin from '@/components/Mixins/TableSortMixin';
Sukanya Pandey47b047c2020-12-23 13:18:55 +0530258import TableRowExpandMixin, {
259 expandRowLabel,
260} from '@/components/Mixins/TableRowExpandMixin';
SurenNewareba91c492020-10-27 14:18:54 +0530261import SearchFilterMixin, {
262 searchFilter,
263} from '@/components/Mixins/SearchFilterMixin';
Yoshie Muranaka6f102342020-05-05 09:45:39 -0700264
265export default {
Yoshie Muranakaf9832b02020-05-12 12:04:46 -0700266 components: {
Yoshie Muranakabe3af332020-05-11 08:23:04 -0700267 IconExport,
268 IconTrashcan,
Sukanya Pandey47b047c2020-12-23 13:18:55 +0530269 IconChevron,
Dixsie Wolmers8b1beff2021-06-14 11:29:44 -0500270 IconDownload,
Yoshie Muranakaf9832b02020-05-12 12:04:46 -0700271 PageTitle,
Yoshie Muranaka193c22a2020-06-30 20:54:10 -0700272 Search,
Yoshie Muranakaf9832b02020-05-12 12:04:46 -0700273 StatusIcon,
Sukanya Pandey99010962020-07-27 21:44:47 +0530274 TableCellCount,
Yoshie Muranakabe3af332020-05-11 08:23:04 -0700275 TableFilter,
276 TableRowAction,
277 TableToolbar,
Yoshie Muranaka68bbba22020-05-18 09:49:37 -0700278 TableToolbarExport,
Derick Montague602e98a2020-10-21 16:20:00 -0500279 TableDateFilter,
Yoshie Muranakaf9832b02020-05-12 12:04:46 -0700280 },
Yoshie Muranakabe3af332020-05-11 08:23:04 -0700281 mixins: [
282 BVPaginationMixin,
283 BVTableSelectableMixin,
284 BVToastMixin,
285 LoadingBarMixin,
Yoshie Muranaka73e419a2020-06-18 13:08:19 -0700286 TableFilterMixin,
287 TableDataFormatterMixin,
Dixsie Wolmers9b22b492020-09-07 21:26:06 -0500288 TableSortMixin,
Sukanya Pandey47b047c2020-12-23 13:18:55 +0530289 TableRowExpandMixin,
Derick Montague602e98a2020-10-21 16:20:00 -0500290 SearchFilterMixin,
Yoshie Muranakabe3af332020-05-11 08:23:04 -0700291 ],
Derick Montague602e98a2020-10-21 16:20:00 -0500292 beforeRouteLeave(to, from, next) {
293 // Hide loader if the user navigates to another page
294 // before request is fulfilled.
295 this.hideLoader();
296 next();
297 },
Yoshie Muranaka6f102342020-05-05 09:45:39 -0700298 data() {
299 return {
300 fields: [
301 {
Sukanya Pandey47b047c2020-12-23 13:18:55 +0530302 key: 'expandRow',
303 label: '',
304 tdClass: 'table-row-expand',
305 },
306 {
Yoshie Muranakabe3af332020-05-11 08:23:04 -0700307 key: 'checkbox',
Derick Montague602e98a2020-10-21 16:20:00 -0500308 sortable: false,
Yoshie Muranakabe3af332020-05-11 08:23:04 -0700309 },
310 {
Yoshie Muranaka6f102342020-05-05 09:45:39 -0700311 key: 'id',
312 label: this.$t('pageEventLogs.table.id'),
Derick Montague602e98a2020-10-21 16:20:00 -0500313 sortable: true,
Yoshie Muranaka6f102342020-05-05 09:45:39 -0700314 },
315 {
316 key: 'severity',
317 label: this.$t('pageEventLogs.table.severity'),
Dixsie Wolmersa04d46f2020-10-22 06:34:56 -0500318 sortable: true,
Derick Montague602e98a2020-10-21 16:20:00 -0500319 tdClass: 'text-nowrap',
Yoshie Muranaka6f102342020-05-05 09:45:39 -0700320 },
321 {
Yoshie Muranaka6f102342020-05-05 09:45:39 -0700322 key: 'date',
323 label: this.$t('pageEventLogs.table.date'),
Derick Montague602e98a2020-10-21 16:20:00 -0500324 sortable: true,
Dixsie Wolmers27d68af2021-05-02 18:20:27 -0500325 tdClass: 'text-nowrap',
Yoshie Muranaka6f102342020-05-05 09:45:39 -0700326 },
327 {
328 key: 'description',
Derick Montague602e98a2020-10-21 16:20:00 -0500329 label: this.$t('pageEventLogs.table.description'),
Dixsie Wolmers27d68af2021-05-02 18:20:27 -0500330 tdClass: 'text-break',
331 },
332 {
333 key: 'status',
334 label: this.$t('pageEventLogs.table.status'),
Yoshie Muranakabe3af332020-05-11 08:23:04 -0700335 },
336 {
337 key: 'actions',
338 sortable: false,
339 label: '',
Derick Montague602e98a2020-10-21 16:20:00 -0500340 tdClass: 'text-right text-nowrap',
341 },
Yoshie Muranaka6f102342020-05-05 09:45:39 -0700342 ],
343 tableFilters: [
344 {
Yoshie Muranaka00454002020-06-22 09:14:05 -0700345 key: 'severity',
Yoshie Muranaka6f102342020-05-05 09:45:39 -0700346 label: this.$t('pageEventLogs.table.severity'),
Derick Montague602e98a2020-10-21 16:20:00 -0500347 values: ['OK', 'Warning', 'Critical'],
348 },
Dixsie Wolmers27d68af2021-05-02 18:20:27 -0500349 {
350 key: 'filterByStatus',
351 label: this.$t('pageEventLogs.table.status'),
352 values: ['Resolved', 'Unresolved'],
353 },
Yoshie Muranaka6f102342020-05-05 09:45:39 -0700354 ],
Sukanya Pandey47b047c2020-12-23 13:18:55 +0530355 expandRowLabel,
Yoshie Muranakabe3af332020-05-11 08:23:04 -0700356 activeFilters: [],
357 batchActions: [
358 {
359 value: 'delete',
Derick Montague602e98a2020-10-21 16:20:00 -0500360 label: this.$t('global.action.delete'),
361 },
Yoshie Muranaka68bbba22020-05-18 09:49:37 -0700362 ],
SurenNewareba91c492020-10-27 14:18:54 +0530363 currentPage: currentPage,
Yoshie Muranaka68bbba22020-05-18 09:49:37 -0700364 filterStartDate: null,
Yoshie Muranaka193c22a2020-06-30 20:54:10 -0700365 filterEndDate: null,
SurenNewareba91c492020-10-27 14:18:54 +0530366 itemsPerPageOptions: itemsPerPageOptions,
367 perPage: perPage,
368 searchFilter: searchFilter,
Derick Montague602e98a2020-10-21 16:20:00 -0500369 searchTotalFilteredRows: 0,
SurenNewareba91c492020-10-27 14:18:54 +0530370 selectedRows: selectedRows,
371 tableHeaderCheckboxModel: tableHeaderCheckboxModel,
372 tableHeaderCheckboxIndeterminate: tableHeaderCheckboxIndeterminate,
Yoshie Muranaka6f102342020-05-05 09:45:39 -0700373 };
374 },
375 computed: {
Sukanya Pandey99010962020-07-27 21:44:47 +0530376 filteredRows() {
377 return this.searchFilter
378 ? this.searchTotalFilteredRows
379 : this.filteredLogs.length;
380 },
Yoshie Muranaka6f102342020-05-05 09:45:39 -0700381 allLogs() {
Derick Montague602e98a2020-10-21 16:20:00 -0500382 return this.$store.getters['eventLog/allEvents'].map((event) => {
Yoshie Muranakabe3af332020-05-11 08:23:04 -0700383 return {
384 ...event,
385 actions: [
386 {
387 value: 'export',
Derick Montague602e98a2020-10-21 16:20:00 -0500388 title: this.$t('global.action.export'),
Yoshie Muranakabe3af332020-05-11 08:23:04 -0700389 },
390 {
391 value: 'delete',
Derick Montague602e98a2020-10-21 16:20:00 -0500392 title: this.$t('global.action.delete'),
393 },
394 ],
Yoshie Muranakabe3af332020-05-11 08:23:04 -0700395 };
396 });
Yoshie Muranaka6f102342020-05-05 09:45:39 -0700397 },
Yoshie Muranakabe3af332020-05-11 08:23:04 -0700398 batchExportData() {
Derick Montague602e98a2020-10-21 16:20:00 -0500399 return this.selectedRows.map((row) => omit(row, 'actions'));
Yoshie Muranaka68bbba22020-05-18 09:49:37 -0700400 },
401 filteredLogsByDate() {
402 return this.getFilteredTableDataByDate(
403 this.allLogs,
404 this.filterStartDate,
405 this.filterEndDate
406 );
407 },
408 filteredLogs() {
409 return this.getFilteredTableData(
410 this.filteredLogsByDate,
411 this.activeFilters
412 );
Derick Montague602e98a2020-10-21 16:20:00 -0500413 },
Yoshie Muranaka6f102342020-05-05 09:45:39 -0700414 },
415 created() {
416 this.startLoader();
417 this.$store
418 .dispatch('eventLog/getEventLogData')
419 .finally(() => this.endLoader());
420 },
Yoshie Muranaka6f102342020-05-05 09:45:39 -0700421 methods: {
Dixsie Wolmers27d68af2021-05-02 18:20:27 -0500422 changelogStatus(row) {
423 this.$store
424 .dispatch('eventLog/updateEventLogStatus', {
425 uri: row.uri,
426 status: row.status,
427 })
428 .then((success) => {
429 this.successToast(success);
430 })
431 .catch(({ message }) => this.errorToast(message));
432 },
Yoshie Muranakabe3af332020-05-11 08:23:04 -0700433 deleteLogs(uris) {
Derick Montague602e98a2020-10-21 16:20:00 -0500434 this.$store
435 .dispatch('eventLog/deleteEventLogs', uris)
436 .then((messages) => {
437 messages.forEach(({ type, message }) => {
438 if (type === 'success') {
439 this.successToast(message);
440 } else if (type === 'error') {
441 this.errorToast(message);
442 }
443 });
Yoshie Muranakabe3af332020-05-11 08:23:04 -0700444 });
Yoshie Muranakabe3af332020-05-11 08:23:04 -0700445 },
Yoshie Muranaka6f102342020-05-05 09:45:39 -0700446 onFilterChange({ activeFilters }) {
447 this.activeFilters = activeFilters;
Yoshie Muranaka6f102342020-05-05 09:45:39 -0700448 },
449 onSortCompare(a, b, key) {
450 if (key === 'severity') {
Yoshie Muranaka73e419a2020-06-18 13:08:19 -0700451 return this.sortStatus(a, b, key);
Yoshie Muranaka6f102342020-05-05 09:45:39 -0700452 }
Yoshie Muranakabe3af332020-05-11 08:23:04 -0700453 },
454 onTableRowAction(action, { uri }) {
455 if (action === 'delete') {
456 this.$bvModal
457 .msgBoxConfirm(this.$tc('pageEventLogs.modal.deleteMessage'), {
458 title: this.$tc('pageEventLogs.modal.deleteTitle'),
Derick Montague602e98a2020-10-21 16:20:00 -0500459 okTitle: this.$t('global.action.delete'),
Sukanya Pandey38357132020-12-22 13:40:59 +0530460 cancelTitle: this.$t('global.action.cancel'),
Yoshie Muranakabe3af332020-05-11 08:23:04 -0700461 })
Derick Montague602e98a2020-10-21 16:20:00 -0500462 .then((deleteConfirmed) => {
Yoshie Muranakabe3af332020-05-11 08:23:04 -0700463 if (deleteConfirmed) this.deleteLogs([uri]);
464 });
465 }
466 },
467 onBatchAction(action) {
468 if (action === 'delete') {
Derick Montague602e98a2020-10-21 16:20:00 -0500469 const uris = this.selectedRows.map((row) => row.uri);
Yoshie Muranakabe3af332020-05-11 08:23:04 -0700470 this.$bvModal
471 .msgBoxConfirm(
472 this.$tc(
473 'pageEventLogs.modal.deleteMessage',
474 this.selectedRows.length
475 ),
476 {
477 title: this.$tc(
478 'pageEventLogs.modal.deleteTitle',
479 this.selectedRows.length
480 ),
Derick Montague602e98a2020-10-21 16:20:00 -0500481 okTitle: this.$t('global.action.delete'),
Sukanya Pandey38357132020-12-22 13:40:59 +0530482 cancelTitle: this.$t('global.action.cancel'),
Yoshie Muranakabe3af332020-05-11 08:23:04 -0700483 }
484 )
Derick Montague602e98a2020-10-21 16:20:00 -0500485 .then((deleteConfirmed) => {
Sukanya Pandey2f6d5522020-10-28 10:38:00 +0530486 if (deleteConfirmed) {
487 if (this.selectedRows.length === this.allLogs.length) {
488 this.$store
489 .dispatch(
490 'eventLog/deleteAllEventLogs',
491 this.selectedRows.length
492 )
493 .then((message) => this.successToast(message))
494 .catch(({ message }) => this.errorToast(message));
495 } else {
496 this.deleteLogs(uris);
497 }
498 }
Yoshie Muranakabe3af332020-05-11 08:23:04 -0700499 });
500 }
Yoshie Muranaka68bbba22020-05-18 09:49:37 -0700501 },
502 onChangeDateTimeFilter({ fromDate, toDate }) {
503 this.filterStartDate = fromDate;
504 this.filterEndDate = toDate;
Yoshie Muranaka193c22a2020-06-30 20:54:10 -0700505 },
Sukanya Pandey99010962020-07-27 21:44:47 +0530506 onFiltered(filteredItems) {
507 this.searchTotalFilteredRows = filteredItems.length;
508 },
SurenNeware96ebb0d2020-09-08 17:42:39 +0530509 // Create export file name based on date
510 exportFileNameByDate() {
511 let date = new Date();
512 date =
513 date.toISOString().slice(0, 10) +
514 '_' +
Derick Montague602e98a2020-10-21 16:20:00 -0500515 date.toString().split(':').join('-').split(' ')[4];
SurenNeware96ebb0d2020-09-08 17:42:39 +0530516 return this.$t('pageEventLogs.exportFilePrefix') + date;
Derick Montague602e98a2020-10-21 16:20:00 -0500517 },
Dixsie Wolmers27d68af2021-05-02 18:20:27 -0500518 resolveLogs() {
519 this.$store
520 .dispatch('eventLog/resolveEventLogs', this.selectedRows)
521 .then((messages) => {
522 messages.forEach(({ type, message }) => {
523 if (type === 'success') {
524 this.successToast(message);
525 } else if (type === 'error') {
526 this.errorToast(message);
527 }
528 });
529 });
530 },
531 unresolveLogs() {
532 this.$store
533 .dispatch('eventLog/unresolveEventLogs', this.selectedRows)
534 .then((messages) => {
535 messages.forEach(({ type, message }) => {
536 if (type === 'success') {
537 this.successToast(message);
538 } else if (type === 'error') {
539 this.errorToast(message);
540 }
541 });
542 });
543 },
Derick Montague602e98a2020-10-21 16:20:00 -0500544 },
Yoshie Muranaka6f102342020-05-05 09:45:39 -0700545};
546</script>