From 5766368239dbba3452cbecf11b88e5745e9c6827 Mon Sep 17 00:00:00 2001 From: Thijn Date: Mon, 30 Mar 2026 16:57:04 +0200 Subject: [PATCH 1/2] feat: Migrate deleted items views to @conduction/nextcloud-vue components Refactors the deleted items management interface to use the standardized CnIndexPage and CnStatsPanel components. This update replaces manual table and statistics implementations with a schema-driven approach, including support for bulk restoration and purging of soft-deleted items. Fixes REGISTERS-487 --- src/sidebars/deleted/DeletedSideBar.vue | 198 +++----- src/views/deleted/DeletedIndex.vue | 586 ++++++------------------ 2 files changed, 204 insertions(+), 580 deletions(-) diff --git a/src/sidebars/deleted/DeletedSideBar.vue b/src/sidebars/deleted/DeletedSideBar.vue index c82a270a9..6950cdec7 100644 --- a/src/sidebars/deleted/DeletedSideBar.vue +++ b/src/sidebars/deleted/DeletedSideBar.vue @@ -83,76 +83,13 @@ import { deletedStore, navigationStore, registerStore, schemaStore } from '../.. - -
-

{{ t('openregister', 'Deletion Statistics') }}

- -
- -

{{ t('openregister', 'Loading statistics...') }}

-
- -
-
-
- {{ deletedStore.statistics.totalDeleted }} -
-
- {{ t('openregister', 'Total Deleted Items') }} -
-
-
-
- {{ deletedStore.statistics.deletedToday }} -
-
- {{ t('openregister', 'Deleted Today') }} -
-
-
-
- {{ deletedStore.statistics.deletedThisWeek }} -
-
- {{ t('openregister', 'Deleted This Week') }} -
-
-
-
- {{ deletedStore.statistics.oldestDays }} -
-
- {{ t('openregister', 'Oldest Item (days)') }} -
-
-
-
- - -
-

{{ t('openregister', 'Top Deleters') }}

- -
- -
- -
-

{{ t('openregister', 'No deletion data available') }}

-
- - - - - -
+ + + @@ -163,13 +100,16 @@ import { NcAppSidebarTab, NcSelect, NcNoteCard, - NcListItem, NcDateTimePickerNative, - NcLoadingIcon, } from '@nextcloud/vue' +import { CnStatsPanel } from '@conduction/nextcloud-vue' import FilterOutline from 'vue-material-design-icons/FilterOutline.vue' import ChartLine from 'vue-material-design-icons/ChartLine.vue' import AccountCircle from 'vue-material-design-icons/AccountCircle.vue' +import DeleteEmpty from 'vue-material-design-icons/DeleteEmpty.vue' +import CalendarToday from 'vue-material-design-icons/CalendarToday.vue' +import CalendarWeek from 'vue-material-design-icons/CalendarWeek.vue' +import ClockOutline from 'vue-material-design-icons/ClockOutline.vue' export default { name: 'DeletedSideBar', @@ -178,9 +118,8 @@ export default { NcAppSidebarTab, NcSelect, NcNoteCard, - NcListItem, NcDateTimePickerNative, - NcLoadingIcon, + CnStatsPanel, FilterOutline, ChartLine, AccountCircle, @@ -249,6 +188,57 @@ export default { schema, } }, + deletionStatsSections() { + return [ + { + type: 'stats', + id: 'overview', + title: t('openregister', 'Deletion Statistics'), + layout: 'grid', + columns: 2, + items: [ + { + title: t('openregister', 'Total Deleted Items'), + count: deletedStore.statistics.totalDeleted, + countLabel: t('openregister', 'items'), + variant: 'primary', + icon: DeleteEmpty, + }, + { + title: t('openregister', 'Deleted Today'), + count: deletedStore.statistics.deletedToday, + countLabel: t('openregister', 'items'), + variant: 'warning', + icon: CalendarToday, + }, + { + title: t('openregister', 'Deleted This Week'), + count: deletedStore.statistics.deletedThisWeek, + countLabel: t('openregister', 'items'), + icon: CalendarWeek, + }, + { + title: t('openregister', 'Oldest Item'), + count: deletedStore.statistics.oldestDays, + countLabel: t('openregister', 'days'), + icon: ClockOutline, + }, + ], + }, + { + type: 'list', + id: 'topDeleters', + title: t('openregister', 'Top Deleters'), + loading: deletedStore.topDeletersLoading, + emptyLabel: t('openregister', 'No deletion data available'), + items: deletedStore.topDeleters.map((deleter, index) => ({ + key: deleter.user || String(index), + name: deleter.user, + subname: t('openregister', '{count} deletions', { count: deleter.count }), + })), + }, + ] + }, userOptions() { // Get unique users from deleted items or provide default options const users = new Set() @@ -482,19 +472,16 @@ export default { From 71d36679d1dcdabe88e696897b00bdb8cc8218d6 Mon Sep 17 00:00:00 2001 From: Thijn Date: Mon, 30 Mar 2026 17:00:18 +0200 Subject: [PATCH 2/2] fixed lint issue --- src/sidebars/deleted/DeletedSideBar.vue | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/sidebars/deleted/DeletedSideBar.vue b/src/sidebars/deleted/DeletedSideBar.vue index 6950cdec7..d913b779a 100644 --- a/src/sidebars/deleted/DeletedSideBar.vue +++ b/src/sidebars/deleted/DeletedSideBar.vue @@ -86,7 +86,7 @@ import { deletedStore, navigationStore, registerStore, schemaStore } from '../.. -