From 7615bb26f3331a84e663af28045e07d2575c2a1d Mon Sep 17 00:00:00 2001 From: Thijn Date: Tue, 31 Mar 2026 11:31:41 +0200 Subject: [PATCH 1/4] converted webhooks and webhook logs --- src/views/webhooks/WebhookLogsIndex.vue | 503 ++++++----------- src/views/webhooks/WebhooksIndex.vue | 693 ++++++++---------------- 2 files changed, 371 insertions(+), 825 deletions(-) diff --git a/src/views/webhooks/WebhookLogsIndex.vue b/src/views/webhooks/WebhookLogsIndex.vue index e5fd24a5f..024aa57de 100644 --- a/src/views/webhooks/WebhookLogsIndex.vue +++ b/src/views/webhooks/WebhookLogsIndex.vue @@ -1,155 +1,104 @@ @@ -164,14 +113,12 @@ import { NcActions, NcActionButton, NcButton, - NcLoadingIcon, - NcEmptyContent, NcSelect, } from '@nextcloud/vue' +import { CnIndexPage, CnStatusBadge } from '@conduction/nextcloud-vue' + import ArrowLeft from 'vue-material-design-icons/ArrowLeft.vue' -import Refresh from 'vue-material-design-icons/Refresh.vue' -import FileDocumentOutline from 'vue-material-design-icons/FileDocumentOutline.vue' import Eye from 'vue-material-design-icons/Eye.vue' /** @@ -184,12 +131,10 @@ export default { NcActions, NcActionButton, NcButton, - NcLoadingIcon, - NcEmptyContent, NcSelect, + CnIndexPage, + CnStatusBadge, ArrowLeft, - Refresh, - FileDocumentOutline, Eye, }, data() { @@ -197,29 +142,35 @@ export default { logsList: [], webhooksList: [], loading: false, + isRefreshing: false, totalLogs: 0, - limit: 50, - offset: 0, selectedWebhookId: null, + pagination: { + page: 1, + limit: 50, + }, } }, computed: { - /** - * Get current page number - * - * @return {number} Current page - */ - currentPage() { - return Math.floor(this.offset / this.limit) + 1 + tableColumns() { + return [ + { key: 'webhook', label: t('openregister', 'Webhook') }, + { key: 'eventClass', label: t('openregister', 'Event') }, + { key: 'success', label: t('openregister', 'Status') }, + { key: 'statusCode', label: t('openregister', 'Status Code') }, + { key: 'attempt', label: t('openregister', 'Attempt') }, + { key: 'created', label: t('openregister', 'Created') }, + { key: 'errorMessage', label: t('openregister', 'Error') }, + ] }, - /** - * Get total number of pages - * - * @return {number} Total pages - */ - totalPages() { - return Math.ceil(this.totalLogs / this.limit) + paginationData() { + return { + page: this.pagination.page, + pages: Math.ceil(this.totalLogs / this.pagination.limit), + total: this.totalLogs, + limit: this.pagination.limit, + } }, /** @@ -256,6 +207,8 @@ export default { window.removeEventListener('webhook-log-retried', this.loadLogs) }, methods: { + t, + /** * Load webhooks list * @@ -281,8 +234,8 @@ export default { this.loading = true try { const params = { - limit: this.limit, - offset: this.offset, + limit: this.pagination.limit, + offset: (this.pagination.page - 1) * this.pagination.limit, } if (this.selectedWebhookId) { params.webhook_id = this.selectedWebhookId @@ -302,48 +255,52 @@ export default { }, /** - * Handle webhook filter change + * Handle refresh * - * @param {number|null} webhookId - Selected webhook ID - * @return {void} + * @return {Promise} */ - handleWebhookFilterChange(webhookId) { - this.selectedWebhookId = webhookId - this.offset = 0 - this.loadLogs() + async handleRefresh() { + this.isRefreshing = true + try { + await this.loadLogs() + } finally { + this.isRefreshing = false + } }, /** - * Refresh logs + * Handle webhook filter change * + * @param {number|null} webhookId - Selected webhook ID * @return {void} */ - refreshLogs() { + handleWebhookFilterChange(webhookId) { + this.selectedWebhookId = webhookId + this.pagination.page = 1 this.loadLogs() }, /** - * Go to previous page + * Handle page change * + * @param {number} page - New page number * @return {void} */ - previousPage() { - if (this.offset > 0) { - this.offset -= this.limit - this.loadLogs() - } + onPageChanged(page) { + this.pagination.page = page + this.loadLogs() }, /** - * Go to next page + * Handle page size change * + * @param {number} pageSize - New page size * @return {void} */ - nextPage() { - if (this.offset + this.limit < this.totalLogs) { - this.offset += this.limit - this.loadLogs() - } + onPageSizeChanged(pageSize) { + this.pagination.page = 1 + this.pagination.limit = pageSize + this.loadLogs() }, /** @@ -418,151 +375,6 @@ export default { diff --git a/src/views/webhooks/WebhooksIndex.vue b/src/views/webhooks/WebhooksIndex.vue index 33d5ccd9f..54120fc0a 100644 --- a/src/views/webhooks/WebhooksIndex.vue +++ b/src/views/webhooks/WebhooksIndex.vue @@ -1,198 +1,141 @@