blob: 948721170d22f19a276f378a8896b679c4e1fcc1 [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">
Dixsie Wolmers7e2ba542021-06-03 07:38:12 -05005 <b-col sm="8" xl="6" class="d-sm-flex align-items-end mb-4">
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" />
Dixsie Wolmers7e2ba542021-06-03 07:38:12 -050026 <b-button
27 variant="link"
28 :disabled="allLogs.length === 0"
29 @click="deleteAllLogs"
30 >
31 <icon-delete /> {{ $t('global.action.deleteAll') }}
32 </b-button>
33 <b-button
34 variant="primary"
35 :class="{ disabled: allLogs.length === 0 }"
36 :download="exportFileNameByDate()"
37 :href="href"
38 >
39 <icon-export /> {{ $t('global.action.exportAll') }}
40 </b-button>
Yoshie Muranaka6f102342020-05-05 09:45:39 -070041 </b-col>
42 </b-row>
43 <b-row>
44 <b-col>
Yoshie Muranakabe3af332020-05-11 08:23:04 -070045 <table-toolbar
46 ref="toolbar"
47 :selected-items-count="selectedRows.length"
48 :actions="batchActions"
Sukanya Pandeyedb8a772020-10-29 11:33:42 +053049 @clear-selected="clearSelectedRows($refs.table)"
50 @batch-action="onBatchAction"
Yoshie Muranakabe3af332020-05-11 08:23:04 -070051 >
Dixsie Wolmers27d68af2021-05-02 18:20:27 -050052 <template #toolbar-buttons>
53 <b-button variant="primary" @click="resolveLogs">
54 {{ $t('pageEventLogs.resolve') }}
55 </b-button>
56 <b-button variant="primary" @click="unresolveLogs">
57 {{ $t('pageEventLogs.unresolve') }}
58 </b-button>
Yoshie Muranakabe3af332020-05-11 08:23:04 -070059 <table-toolbar-export
60 :data="batchExportData"
SurenNeware96ebb0d2020-09-08 17:42:39 +053061 :file-name="exportFileNameByDate()"
Yoshie Muranakabe3af332020-05-11 08:23:04 -070062 />
63 </template>
64 </table-toolbar>
Yoshie Muranaka6f102342020-05-05 09:45:39 -070065 <b-table
Yoshie Muranakaf9832b02020-05-12 12:04:46 -070066 id="table-event-logs"
Yoshie Muranakabe3af332020-05-11 08:23:04 -070067 ref="table"
SurenNeware5e25e282020-07-08 15:57:23 +053068 responsive="md"
Yoshie Muranakabe3af332020-05-11 08:23:04 -070069 selectable
70 no-select-on-click
Yoshie Muranaka6f102342020-05-05 09:45:39 -070071 sort-icon-left
Sukanya Pandeyfde429e2020-09-14 20:48:39 +053072 hover
Yoshie Muranaka6f102342020-05-05 09:45:39 -070073 no-sort-reset
74 sort-desc
75 show-empty
Derick Montague6b140ba2020-09-03 16:26:33 -050076 sort-by="id"
Yoshie Muranakabe3af332020-05-11 08:23:04 -070077 :fields="fields"
78 :items="filteredLogs"
Yoshie Muranaka6f102342020-05-05 09:45:39 -070079 :sort-compare="onSortCompare"
SurenNeware307382e2020-07-27 20:45:14 +053080 :empty-text="$t('global.table.emptyMessage')"
SurenNeware156a0e62020-08-28 19:20:03 +053081 :empty-filtered-text="$t('global.table.emptySearchMessage')"
Yoshie Muranakaf9832b02020-05-12 12:04:46 -070082 :per-page="perPage"
83 :current-page="currentPage"
Yoshie Muranaka193c22a2020-06-30 20:54:10 -070084 :filter="searchFilter"
Kenneth Fullbright41057852021-12-27 16:19:37 -060085 :busy="isBusy"
Sukanya Pandey99010962020-07-27 21:44:47 +053086 @filtered="onFiltered"
Yoshie Muranakabe3af332020-05-11 08:23:04 -070087 @row-selected="onRowSelected($event, filteredLogs.length)"
Yoshie Muranaka6f102342020-05-05 09:45:39 -070088 >
Yoshie Muranakabe3af332020-05-11 08:23:04 -070089 <!-- Checkbox column -->
Derick Montague602e98a2020-10-21 16:20:00 -050090 <template #head(checkbox)>
Yoshie Muranakabe3af332020-05-11 08:23:04 -070091 <b-form-checkbox
92 v-model="tableHeaderCheckboxModel"
Yoshie Muranakaed06dc12020-06-16 12:12:27 -070093 data-test-id="eventLogs-checkbox-selectAll"
Yoshie Muranakabe3af332020-05-11 08:23:04 -070094 :indeterminate="tableHeaderCheckboxIndeterminate"
95 @change="onChangeHeaderCheckbox($refs.table)"
Dixsie Wolmersc42ad712020-11-19 17:29:24 -060096 >
97 <span class="sr-only">{{ $t('global.table.selectAll') }}</span>
98 </b-form-checkbox>
Yoshie Muranakabe3af332020-05-11 08:23:04 -070099 </template>
Derick Montague602e98a2020-10-21 16:20:00 -0500100 <template #cell(checkbox)="row">
Yoshie Muranakabe3af332020-05-11 08:23:04 -0700101 <b-form-checkbox
102 v-model="row.rowSelected"
Yoshie Muranakaed06dc12020-06-16 12:12:27 -0700103 :data-test-id="`eventLogs-checkbox-selectRow-${row.index}`"
Yoshie Muranakabe3af332020-05-11 08:23:04 -0700104 @change="toggleSelectRow($refs.table, row.index)"
Dixsie Wolmersc42ad712020-11-19 17:29:24 -0600105 >
106 <span class="sr-only">{{ $t('global.table.selectItem') }}</span>
107 </b-form-checkbox>
Yoshie Muranakabe3af332020-05-11 08:23:04 -0700108 </template>
109
Sukanya Pandey47b047c2020-12-23 13:18:55 +0530110 <!-- Expand chevron icon -->
111 <template #cell(expandRow)="row">
112 <b-button
113 variant="link"
114 :aria-label="expandRowLabel"
115 :title="expandRowLabel"
116 class="btn-icon-only"
117 @click="toggleRowDetails(row)"
118 >
119 <icon-chevron />
120 </b-button>
121 </template>
122
123 <template #row-details="{ item }">
124 <b-container fluid>
125 <b-row>
Dixsie Wolmers8b1beff2021-06-14 11:29:44 -0500126 <b-col>
Sukanya Pandey47b047c2020-12-23 13:18:55 +0530127 <dl>
128 <!-- Name -->
129 <dt>{{ $t('pageEventLogs.table.name') }}:</dt>
Dixsie Wolmers9726f9a2021-09-07 15:33:16 -0500130 <dd>{{ dataFormatter(item.name) }}</dd>
Sukanya Pandey47b047c2020-12-23 13:18:55 +0530131 </dl>
Dixsie Wolmers27d68af2021-05-02 18:20:27 -0500132 <dl>
133 <!-- Type -->
134 <dt>{{ $t('pageEventLogs.table.type') }}:</dt>
Dixsie Wolmers9726f9a2021-09-07 15:33:16 -0500135 <dd>{{ dataFormatter(item.type) }}</dd>
Dixsie Wolmers27d68af2021-05-02 18:20:27 -0500136 </dl>
Sukanya Pandey47b047c2020-12-23 13:18:55 +0530137 </b-col>
Dixsie Wolmers8b1beff2021-06-14 11:29:44 -0500138 <b-col>
Sukanya Pandey47b047c2020-12-23 13:18:55 +0530139 <dl>
140 <!-- Modified date -->
141 <dt>{{ $t('pageEventLogs.table.modifiedDate') }}:</dt>
142 <dd v-if="item.modifiedDate">
143 {{ item.modifiedDate | formatDate }}
144 {{ item.modifiedDate | formatTime }}
145 </dd>
146 <dd v-else>--</dd>
147 </dl>
148 </b-col>
Dixsie Wolmers8b1beff2021-06-14 11:29:44 -0500149 <b-col class="text-nowrap">
150 <b-button
151 class="btn btn-secondary float-right"
152 :href="item.additionalDataUri"
153 target="_blank"
154 >
155 <icon-download />{{ $t('pageEventLogs.additionalDataUri') }}
156 </b-button>
157 </b-col>
Sukanya Pandey47b047c2020-12-23 13:18:55 +0530158 </b-row>
159 </b-container>
160 </template>
161
Yoshie Muranakabe3af332020-05-11 08:23:04 -0700162 <!-- Severity column -->
Derick Montague602e98a2020-10-21 16:20:00 -0500163 <template #cell(severity)="{ value }">
Mateusz Gapskib1f12532020-07-24 08:15:23 +0200164 <status-icon v-if="value" :status="statusIcon(value)" />
Yoshie Muranaka6f102342020-05-05 09:45:39 -0700165 {{ value }}
166 </template>
Yoshie Muranakabe3af332020-05-11 08:23:04 -0700167 <!-- Date column -->
Derick Montague602e98a2020-10-21 16:20:00 -0500168 <template #cell(date)="{ value }">
Dixsie Wolmers949cdd52020-08-24 21:36:37 -0500169 <p class="mb-0">{{ value | formatDate }}</p>
170 <p class="mb-0">{{ value | formatTime }}</p>
Yoshie Muranaka6f102342020-05-05 09:45:39 -0700171 </template>
Yoshie Muranakabe3af332020-05-11 08:23:04 -0700172
Dixsie Wolmers27d68af2021-05-02 18:20:27 -0500173 <!-- Status column -->
174 <template #cell(status)="row">
175 <b-form-checkbox
176 v-model="row.item.status"
177 name="switch"
178 switch
179 @change="changelogStatus(row.item)"
180 >
181 <span v-if="row.item.status">
182 {{ $t('pageEventLogs.resolved') }}
183 </span>
184 <span v-else> {{ $t('pageEventLogs.unresolved') }} </span>
185 </b-form-checkbox>
186 </template>
187 <template #cell(filterByStatus)="{ value }">
188 {{ value }}
189 </template>
190
Yoshie Muranakabe3af332020-05-11 08:23:04 -0700191 <!-- Actions column -->
Derick Montague602e98a2020-10-21 16:20:00 -0500192 <template #cell(actions)="row">
Yoshie Muranakabe3af332020-05-11 08:23:04 -0700193 <table-row-action
Yoshie Muranakaed06dc12020-06-16 12:12:27 -0700194 v-for="(action, index) in row.item.actions"
Yoshie Muranakabe3af332020-05-11 08:23:04 -0700195 :key="index"
196 :value="action.value"
197 :title="action.title"
Yoshie Muranakaed06dc12020-06-16 12:12:27 -0700198 :row-data="row.item"
Dixsie Wolmers7e2ba542021-06-03 07:38:12 -0500199 :export-name="exportFileNameByDate('export')"
Yoshie Muranakaed06dc12020-06-16 12:12:27 -0700200 :data-test-id="`eventLogs-button-deleteRow-${row.index}`"
Sukanya Pandeyedb8a772020-10-29 11:33:42 +0530201 @click-table-action="onTableRowAction($event, row.item)"
Yoshie Muranakabe3af332020-05-11 08:23:04 -0700202 >
Derick Montague602e98a2020-10-21 16:20:00 -0500203 <template #icon>
Yoshie Muranakabe3af332020-05-11 08:23:04 -0700204 <icon-export v-if="action.value === 'export'" />
205 <icon-trashcan v-if="action.value === 'delete'" />
206 </template>
207 </table-row-action>
208 </template>
Yoshie Muranaka6f102342020-05-05 09:45:39 -0700209 </b-table>
210 </b-col>
211 </b-row>
Yoshie Muranakaf9832b02020-05-12 12:04:46 -0700212
213 <!-- Table pagination -->
214 <b-row>
SurenNewarea35b5a12020-10-13 17:08:20 +0530215 <b-col sm="6">
Yoshie Muranakaf9832b02020-05-12 12:04:46 -0700216 <b-form-group
217 class="table-pagination-select"
218 :label="$t('global.table.itemsPerPage')"
219 label-for="pagination-items-per-page"
220 >
221 <b-form-select
222 id="pagination-items-per-page"
223 v-model="perPage"
224 :options="itemsPerPageOptions"
225 />
226 </b-form-group>
SurenNewarea35b5a12020-10-13 17:08:20 +0530227 </b-col>
228 <b-col sm="6">
Yoshie Muranakaf9832b02020-05-12 12:04:46 -0700229 <b-pagination
230 v-model="currentPage"
231 first-number
232 last-number
233 :per-page="perPage"
Sukanya Pandeyf7000cd2021-08-26 18:34:49 +0530234 :total-rows="getTotalRowCount(filteredRows)"
Yoshie Muranakaf9832b02020-05-12 12:04:46 -0700235 aria-controls="table-event-logs"
236 />
237 </b-col>
238 </b-row>
Yoshie Muranaka6f102342020-05-05 09:45:39 -0700239 </b-container>
240</template>
241
242<script>
Dixsie Wolmers7e2ba542021-06-03 07:38:12 -0500243import IconDelete from '@carbon/icons-vue/es/trash-can/20';
Yoshie Muranakabe3af332020-05-11 08:23:04 -0700244import IconTrashcan from '@carbon/icons-vue/es/trash-can/20';
Sukanya Pandeyb2ca0c02020-07-20 23:23:29 +0530245import IconExport from '@carbon/icons-vue/es/document--export/20';
Sukanya Pandey47b047c2020-12-23 13:18:55 +0530246import IconChevron from '@carbon/icons-vue/es/chevron--down/20';
Dixsie Wolmers8b1beff2021-06-14 11:29:44 -0500247import IconDownload from '@carbon/icons-vue/es/download/20';
Yoshie Muranakabe3af332020-05-11 08:23:04 -0700248import { omit } from 'lodash';
249
Yoshie Muranaka6f102342020-05-05 09:45:39 -0700250import PageTitle from '@/components/Global/PageTitle';
251import StatusIcon from '@/components/Global/StatusIcon';
Derick Montagued853fba2020-07-16 11:24:10 -0500252import Search from '@/components/Global/Search';
Sukanya Pandey99010962020-07-27 21:44:47 +0530253import TableCellCount from '@/components/Global/TableCellCount';
Yoshie Muranaka68bbba22020-05-18 09:49:37 -0700254import TableDateFilter from '@/components/Global/TableDateFilter';
Yoshie Muranaka6f102342020-05-05 09:45:39 -0700255import TableFilter from '@/components/Global/TableFilter';
Yoshie Muranakabe3af332020-05-11 08:23:04 -0700256import TableRowAction from '@/components/Global/TableRowAction';
257import TableToolbar from '@/components/Global/TableToolbar';
258import TableToolbarExport from '@/components/Global/TableToolbarExport';
Yoshie Muranaka6f102342020-05-05 09:45:39 -0700259
260import LoadingBarMixin from '@/components/Mixins/LoadingBarMixin';
261import TableFilterMixin from '@/components/Mixins/TableFilterMixin';
SurenNewareba91c492020-10-27 14:18:54 +0530262import BVPaginationMixin, {
263 currentPage,
264 perPage,
265 itemsPerPageOptions,
266} from '@/components/Mixins/BVPaginationMixin';
267import BVTableSelectableMixin, {
268 selectedRows,
269 tableHeaderCheckboxModel,
270 tableHeaderCheckboxIndeterminate,
271} from '@/components/Mixins/BVTableSelectableMixin';
Yoshie Muranakabe3af332020-05-11 08:23:04 -0700272import BVToastMixin from '@/components/Mixins/BVToastMixin';
Dixsie Wolmers9726f9a2021-09-07 15:33:16 -0500273import DataFormatterMixin from '@/components/Mixins/DataFormatterMixin';
Yoshie Muranaka73e419a2020-06-18 13:08:19 -0700274import TableSortMixin from '@/components/Mixins/TableSortMixin';
Sukanya Pandey47b047c2020-12-23 13:18:55 +0530275import TableRowExpandMixin, {
276 expandRowLabel,
277} from '@/components/Mixins/TableRowExpandMixin';
SurenNewareba91c492020-10-27 14:18:54 +0530278import SearchFilterMixin, {
279 searchFilter,
280} from '@/components/Mixins/SearchFilterMixin';
Yoshie Muranaka6f102342020-05-05 09:45:39 -0700281
282export default {
Yoshie Muranakaf9832b02020-05-12 12:04:46 -0700283 components: {
Dixsie Wolmers7e2ba542021-06-03 07:38:12 -0500284 IconDelete,
Yoshie Muranakabe3af332020-05-11 08:23:04 -0700285 IconExport,
286 IconTrashcan,
Sukanya Pandey47b047c2020-12-23 13:18:55 +0530287 IconChevron,
Dixsie Wolmers8b1beff2021-06-14 11:29:44 -0500288 IconDownload,
Yoshie Muranakaf9832b02020-05-12 12:04:46 -0700289 PageTitle,
Yoshie Muranaka193c22a2020-06-30 20:54:10 -0700290 Search,
Yoshie Muranakaf9832b02020-05-12 12:04:46 -0700291 StatusIcon,
Sukanya Pandey99010962020-07-27 21:44:47 +0530292 TableCellCount,
Yoshie Muranakabe3af332020-05-11 08:23:04 -0700293 TableFilter,
294 TableRowAction,
295 TableToolbar,
Yoshie Muranaka68bbba22020-05-18 09:49:37 -0700296 TableToolbarExport,
Derick Montague602e98a2020-10-21 16:20:00 -0500297 TableDateFilter,
Yoshie Muranakaf9832b02020-05-12 12:04:46 -0700298 },
Yoshie Muranakabe3af332020-05-11 08:23:04 -0700299 mixins: [
300 BVPaginationMixin,
301 BVTableSelectableMixin,
302 BVToastMixin,
303 LoadingBarMixin,
Yoshie Muranaka73e419a2020-06-18 13:08:19 -0700304 TableFilterMixin,
Dixsie Wolmers9726f9a2021-09-07 15:33:16 -0500305 DataFormatterMixin,
Dixsie Wolmers9b22b492020-09-07 21:26:06 -0500306 TableSortMixin,
Sukanya Pandey47b047c2020-12-23 13:18:55 +0530307 TableRowExpandMixin,
Derick Montague602e98a2020-10-21 16:20:00 -0500308 SearchFilterMixin,
Yoshie Muranakabe3af332020-05-11 08:23:04 -0700309 ],
Derick Montague602e98a2020-10-21 16:20:00 -0500310 beforeRouteLeave(to, from, next) {
311 // Hide loader if the user navigates to another page
312 // before request is fulfilled.
313 this.hideLoader();
314 next();
315 },
Yoshie Muranaka6f102342020-05-05 09:45:39 -0700316 data() {
317 return {
Kenneth Fullbright41057852021-12-27 16:19:37 -0600318 isBusy: true,
Yoshie Muranaka6f102342020-05-05 09:45:39 -0700319 fields: [
320 {
Sukanya Pandey47b047c2020-12-23 13:18:55 +0530321 key: 'expandRow',
322 label: '',
323 tdClass: 'table-row-expand',
324 },
325 {
Yoshie Muranakabe3af332020-05-11 08:23:04 -0700326 key: 'checkbox',
Derick Montague602e98a2020-10-21 16:20:00 -0500327 sortable: false,
Yoshie Muranakabe3af332020-05-11 08:23:04 -0700328 },
329 {
Yoshie Muranaka6f102342020-05-05 09:45:39 -0700330 key: 'id',
331 label: this.$t('pageEventLogs.table.id'),
Derick Montague602e98a2020-10-21 16:20:00 -0500332 sortable: true,
Yoshie Muranaka6f102342020-05-05 09:45:39 -0700333 },
334 {
335 key: 'severity',
336 label: this.$t('pageEventLogs.table.severity'),
Dixsie Wolmersa04d46f2020-10-22 06:34:56 -0500337 sortable: true,
Derick Montague602e98a2020-10-21 16:20:00 -0500338 tdClass: 'text-nowrap',
Yoshie Muranaka6f102342020-05-05 09:45:39 -0700339 },
340 {
Yoshie Muranaka6f102342020-05-05 09:45:39 -0700341 key: 'date',
342 label: this.$t('pageEventLogs.table.date'),
Derick Montague602e98a2020-10-21 16:20:00 -0500343 sortable: true,
Dixsie Wolmers27d68af2021-05-02 18:20:27 -0500344 tdClass: 'text-nowrap',
Yoshie Muranaka6f102342020-05-05 09:45:39 -0700345 },
346 {
347 key: 'description',
Derick Montague602e98a2020-10-21 16:20:00 -0500348 label: this.$t('pageEventLogs.table.description'),
Dixsie Wolmers27d68af2021-05-02 18:20:27 -0500349 tdClass: 'text-break',
350 },
351 {
352 key: 'status',
353 label: this.$t('pageEventLogs.table.status'),
Yoshie Muranakabe3af332020-05-11 08:23:04 -0700354 },
355 {
356 key: 'actions',
357 sortable: false,
358 label: '',
Derick Montague602e98a2020-10-21 16:20:00 -0500359 tdClass: 'text-right text-nowrap',
360 },
Yoshie Muranaka6f102342020-05-05 09:45:39 -0700361 ],
362 tableFilters: [
363 {
Yoshie Muranaka00454002020-06-22 09:14:05 -0700364 key: 'severity',
Yoshie Muranaka6f102342020-05-05 09:45:39 -0700365 label: this.$t('pageEventLogs.table.severity'),
Derick Montague602e98a2020-10-21 16:20:00 -0500366 values: ['OK', 'Warning', 'Critical'],
367 },
Dixsie Wolmers27d68af2021-05-02 18:20:27 -0500368 {
369 key: 'filterByStatus',
370 label: this.$t('pageEventLogs.table.status'),
371 values: ['Resolved', 'Unresolved'],
372 },
Yoshie Muranaka6f102342020-05-05 09:45:39 -0700373 ],
Sukanya Pandey47b047c2020-12-23 13:18:55 +0530374 expandRowLabel,
Yoshie Muranakabe3af332020-05-11 08:23:04 -0700375 activeFilters: [],
376 batchActions: [
377 {
378 value: 'delete',
Derick Montague602e98a2020-10-21 16:20:00 -0500379 label: this.$t('global.action.delete'),
380 },
Yoshie Muranaka68bbba22020-05-18 09:49:37 -0700381 ],
SurenNewareba91c492020-10-27 14:18:54 +0530382 currentPage: currentPage,
Yoshie Muranaka68bbba22020-05-18 09:49:37 -0700383 filterStartDate: null,
Yoshie Muranaka193c22a2020-06-30 20:54:10 -0700384 filterEndDate: null,
SurenNewareba91c492020-10-27 14:18:54 +0530385 itemsPerPageOptions: itemsPerPageOptions,
386 perPage: perPage,
387 searchFilter: searchFilter,
Derick Montague602e98a2020-10-21 16:20:00 -0500388 searchTotalFilteredRows: 0,
SurenNewareba91c492020-10-27 14:18:54 +0530389 selectedRows: selectedRows,
390 tableHeaderCheckboxModel: tableHeaderCheckboxModel,
391 tableHeaderCheckboxIndeterminate: tableHeaderCheckboxIndeterminate,
Yoshie Muranaka6f102342020-05-05 09:45:39 -0700392 };
393 },
394 computed: {
Dixsie Wolmers7e2ba542021-06-03 07:38:12 -0500395 href() {
396 return `data:text/json;charset=utf-8,${this.exportAllLogs()}`;
397 },
Sukanya Pandey99010962020-07-27 21:44:47 +0530398 filteredRows() {
399 return this.searchFilter
400 ? this.searchTotalFilteredRows
401 : this.filteredLogs.length;
402 },
Yoshie Muranaka6f102342020-05-05 09:45:39 -0700403 allLogs() {
Derick Montague602e98a2020-10-21 16:20:00 -0500404 return this.$store.getters['eventLog/allEvents'].map((event) => {
Yoshie Muranakabe3af332020-05-11 08:23:04 -0700405 return {
406 ...event,
407 actions: [
408 {
409 value: 'export',
Derick Montague602e98a2020-10-21 16:20:00 -0500410 title: this.$t('global.action.export'),
Yoshie Muranakabe3af332020-05-11 08:23:04 -0700411 },
412 {
413 value: 'delete',
Derick Montague602e98a2020-10-21 16:20:00 -0500414 title: this.$t('global.action.delete'),
415 },
416 ],
Yoshie Muranakabe3af332020-05-11 08:23:04 -0700417 };
418 });
Yoshie Muranaka6f102342020-05-05 09:45:39 -0700419 },
Yoshie Muranakabe3af332020-05-11 08:23:04 -0700420 batchExportData() {
Derick Montague602e98a2020-10-21 16:20:00 -0500421 return this.selectedRows.map((row) => omit(row, 'actions'));
Yoshie Muranaka68bbba22020-05-18 09:49:37 -0700422 },
423 filteredLogsByDate() {
424 return this.getFilteredTableDataByDate(
425 this.allLogs,
426 this.filterStartDate,
427 this.filterEndDate
428 );
429 },
430 filteredLogs() {
431 return this.getFilteredTableData(
432 this.filteredLogsByDate,
433 this.activeFilters
434 );
Derick Montague602e98a2020-10-21 16:20:00 -0500435 },
Yoshie Muranaka6f102342020-05-05 09:45:39 -0700436 },
437 created() {
438 this.startLoader();
Kenneth Fullbright41057852021-12-27 16:19:37 -0600439 this.$store.dispatch('eventLog/getEventLogData').finally(() => {
440 this.endLoader();
441 this.isBusy = false;
442 });
Yoshie Muranaka6f102342020-05-05 09:45:39 -0700443 },
Yoshie Muranaka6f102342020-05-05 09:45:39 -0700444 methods: {
Dixsie Wolmers27d68af2021-05-02 18:20:27 -0500445 changelogStatus(row) {
446 this.$store
447 .dispatch('eventLog/updateEventLogStatus', {
448 uri: row.uri,
449 status: row.status,
450 })
451 .then((success) => {
452 this.successToast(success);
453 })
454 .catch(({ message }) => this.errorToast(message));
455 },
Dixsie Wolmers7e2ba542021-06-03 07:38:12 -0500456 deleteAllLogs() {
457 this.$bvModal
458 .msgBoxConfirm(this.$t('pageEventLogs.modal.deleteAllMessage'), {
459 title: this.$t('pageEventLogs.modal.deleteAllTitle'),
460 okTitle: this.$t('global.action.delete'),
461 okVariant: 'danger',
462 cancelTitle: this.$t('global.action.cancel'),
463 })
464 .then((deleteConfirmed) => {
465 if (deleteConfirmed) {
466 this.$store
467 .dispatch('eventLog/deleteAllEventLogs', this.allLogs)
468 .then((message) => this.successToast(message))
469 .catch(({ message }) => this.errorToast(message));
470 }
471 });
472 },
Yoshie Muranakabe3af332020-05-11 08:23:04 -0700473 deleteLogs(uris) {
Derick Montague602e98a2020-10-21 16:20:00 -0500474 this.$store
475 .dispatch('eventLog/deleteEventLogs', uris)
476 .then((messages) => {
477 messages.forEach(({ type, message }) => {
478 if (type === 'success') {
479 this.successToast(message);
480 } else if (type === 'error') {
481 this.errorToast(message);
482 }
483 });
Yoshie Muranakabe3af332020-05-11 08:23:04 -0700484 });
Yoshie Muranakabe3af332020-05-11 08:23:04 -0700485 },
Dixsie Wolmers7e2ba542021-06-03 07:38:12 -0500486 exportAllLogs() {
487 {
488 return this.$store.getters['eventLog/allEvents'].map((eventLogs) => {
489 const allEventLogsString = JSON.stringify(eventLogs);
490 return allEventLogsString;
491 });
492 }
493 },
Yoshie Muranaka6f102342020-05-05 09:45:39 -0700494 onFilterChange({ activeFilters }) {
495 this.activeFilters = activeFilters;
Yoshie Muranaka6f102342020-05-05 09:45:39 -0700496 },
497 onSortCompare(a, b, key) {
498 if (key === 'severity') {
Yoshie Muranaka73e419a2020-06-18 13:08:19 -0700499 return this.sortStatus(a, b, key);
Yoshie Muranaka6f102342020-05-05 09:45:39 -0700500 }
Yoshie Muranakabe3af332020-05-11 08:23:04 -0700501 },
502 onTableRowAction(action, { uri }) {
503 if (action === 'delete') {
504 this.$bvModal
505 .msgBoxConfirm(this.$tc('pageEventLogs.modal.deleteMessage'), {
506 title: this.$tc('pageEventLogs.modal.deleteTitle'),
Derick Montague602e98a2020-10-21 16:20:00 -0500507 okTitle: this.$t('global.action.delete'),
Sukanya Pandey38357132020-12-22 13:40:59 +0530508 cancelTitle: this.$t('global.action.cancel'),
Yoshie Muranakabe3af332020-05-11 08:23:04 -0700509 })
Derick Montague602e98a2020-10-21 16:20:00 -0500510 .then((deleteConfirmed) => {
Yoshie Muranakabe3af332020-05-11 08:23:04 -0700511 if (deleteConfirmed) this.deleteLogs([uri]);
512 });
513 }
514 },
515 onBatchAction(action) {
516 if (action === 'delete') {
Derick Montague602e98a2020-10-21 16:20:00 -0500517 const uris = this.selectedRows.map((row) => row.uri);
Yoshie Muranakabe3af332020-05-11 08:23:04 -0700518 this.$bvModal
519 .msgBoxConfirm(
520 this.$tc(
521 'pageEventLogs.modal.deleteMessage',
522 this.selectedRows.length
523 ),
524 {
525 title: this.$tc(
526 'pageEventLogs.modal.deleteTitle',
527 this.selectedRows.length
528 ),
Derick Montague602e98a2020-10-21 16:20:00 -0500529 okTitle: this.$t('global.action.delete'),
Sukanya Pandey38357132020-12-22 13:40:59 +0530530 cancelTitle: this.$t('global.action.cancel'),
Yoshie Muranakabe3af332020-05-11 08:23:04 -0700531 }
532 )
Derick Montague602e98a2020-10-21 16:20:00 -0500533 .then((deleteConfirmed) => {
Sukanya Pandey2f6d5522020-10-28 10:38:00 +0530534 if (deleteConfirmed) {
535 if (this.selectedRows.length === this.allLogs.length) {
536 this.$store
537 .dispatch(
538 'eventLog/deleteAllEventLogs',
539 this.selectedRows.length
540 )
541 .then((message) => this.successToast(message))
542 .catch(({ message }) => this.errorToast(message));
543 } else {
544 this.deleteLogs(uris);
545 }
546 }
Yoshie Muranakabe3af332020-05-11 08:23:04 -0700547 });
548 }
Yoshie Muranaka68bbba22020-05-18 09:49:37 -0700549 },
550 onChangeDateTimeFilter({ fromDate, toDate }) {
551 this.filterStartDate = fromDate;
552 this.filterEndDate = toDate;
Yoshie Muranaka193c22a2020-06-30 20:54:10 -0700553 },
Sukanya Pandey99010962020-07-27 21:44:47 +0530554 onFiltered(filteredItems) {
555 this.searchTotalFilteredRows = filteredItems.length;
556 },
SurenNeware96ebb0d2020-09-08 17:42:39 +0530557 // Create export file name based on date
Dixsie Wolmers7e2ba542021-06-03 07:38:12 -0500558 exportFileNameByDate(value) {
SurenNeware96ebb0d2020-09-08 17:42:39 +0530559 let date = new Date();
560 date =
561 date.toISOString().slice(0, 10) +
562 '_' +
Derick Montague602e98a2020-10-21 16:20:00 -0500563 date.toString().split(':').join('-').split(' ')[4];
Dixsie Wolmers7e2ba542021-06-03 07:38:12 -0500564 let fileName;
565 if (value === 'export') {
566 fileName = 'event_log_';
567 } else {
568 fileName = 'all_event_logs_';
569 }
570 return fileName + date;
Derick Montague602e98a2020-10-21 16:20:00 -0500571 },
Dixsie Wolmers27d68af2021-05-02 18:20:27 -0500572 resolveLogs() {
573 this.$store
574 .dispatch('eventLog/resolveEventLogs', this.selectedRows)
575 .then((messages) => {
576 messages.forEach(({ type, message }) => {
577 if (type === 'success') {
578 this.successToast(message);
579 } else if (type === 'error') {
580 this.errorToast(message);
581 }
582 });
583 });
584 },
585 unresolveLogs() {
586 this.$store
587 .dispatch('eventLog/unresolveEventLogs', this.selectedRows)
588 .then((messages) => {
589 messages.forEach(({ type, message }) => {
590 if (type === 'success') {
591 this.successToast(message);
592 } else if (type === 'error') {
593 this.errorToast(message);
594 }
595 });
596 });
597 },
Derick Montague602e98a2020-10-21 16:20:00 -0500598 },
Yoshie Muranaka6f102342020-05-05 09:45:39 -0700599};
600</script>