From 293c84d871d8c8d80959bd8972d576967752cd96 Mon Sep 17 00:00:00 2001
From: shamoon <4887959+shamoon@users.noreply.github.com>
Date: Wed, 23 Jul 2025 22:07:13 -0700
Subject: [PATCH] Enhancement: display saved view counts (#10246)
---
.../admin/settings/settings.component.html | 1 +
.../admin/settings/settings.component.spec.ts | 15 +++++-
.../admin/settings/settings.component.ts | 11 +++++
.../app-frame/app-frame.component.html | 9 +++-
.../app-frame/app-frame.component.spec.ts | 14 +++++-
.../app-frame/app-frame.component.ts | 8 +++-
.../saved-view-widget.component.html | 1 +
.../saved-view-widget.component.ts | 3 ++
.../widget-frame/widget-frame.component.html | 5 +-
.../widget-frame/widget-frame.component.ts | 3 ++
.../document-detail.component.ts | 4 ++
.../bulk-editor/bulk-editor.component.ts | 3 ++
src-ui/src/app/data/ui-settings.ts | 7 +++
.../services/rest/saved-view.service.spec.ts | 45 ++++++++++++++++--
.../app/services/rest/saved-view.service.ts | 46 +++++++++++++++++--
15 files changed, 162 insertions(+), 13 deletions(-)
diff --git a/src-ui/src/app/components/admin/settings/settings.component.html b/src-ui/src/app/components/admin/settings/settings.component.html
index 9d235a0f3..ccd3cc7e3 100644
--- a/src-ui/src/app/components/admin/settings/settings.component.html
+++ b/src-ui/src/app/components/admin/settings/settings.component.html
@@ -176,6 +176,7 @@
diff --git a/src-ui/src/app/components/app-frame/app-frame.component.spec.ts b/src-ui/src/app/components/app-frame/app-frame.component.spec.ts
index f1d54ba70..0c1de7891 100644
--- a/src-ui/src/app/components/app-frame/app-frame.component.spec.ts
+++ b/src-ui/src/app/components/app-frame/app-frame.component.spec.ts
@@ -92,6 +92,7 @@ describe('AppFrameComponent', () => {
let router: Router
let savedViewSpy
let modalService: NgbModal
+ let maybeRefreshSpy
beforeEach(async () => {
TestBed.configureTestingModule({
@@ -113,7 +114,11 @@ describe('AppFrameComponent', () => {
{
provide: SavedViewService,
useValue: {
- reload: () => {},
+ reload: (fn: any) => {
+ if (fn) {
+ fn()
+ }
+ },
listAll: () =>
of({
all: [saved_views.map((v) => v.id)],
@@ -121,6 +126,8 @@ describe('AppFrameComponent', () => {
results: saved_views,
}),
sidebarViews: saved_views.filter((v) => v.show_in_sidebar),
+ getDocumentCount: (view: SavedView) => 5,
+ maybeRefreshDocumentCounts: () => {},
},
},
PermissionsService,
@@ -169,6 +176,7 @@ describe('AppFrameComponent', () => {
jest.spyOn(permissionsService, 'currentUserCan').mockReturnValue(true)
savedViewSpy = jest.spyOn(savedViewService, 'reload')
+ maybeRefreshSpy = jest.spyOn(savedViewService, 'maybeRefreshDocumentCounts')
fixture = TestBed.createComponent(AppFrameComponent)
component = fixture.componentInstance
@@ -359,4 +367,8 @@ describe('AppFrameComponent', () => {
expect(toastErrorSpy).toHaveBeenCalledTimes(2)
expect(toastInfoSpy).toHaveBeenCalledTimes(3)
})
+
+ it('should call maybeRefreshDocumentCounts after saved views reload', () => {
+ expect(maybeRefreshSpy).toHaveBeenCalled()
+ })
})
diff --git a/src-ui/src/app/components/app-frame/app-frame.component.ts b/src-ui/src/app/components/app-frame/app-frame.component.ts
index df3732969..35b5b5bdc 100644
--- a/src-ui/src/app/components/app-frame/app-frame.component.ts
+++ b/src-ui/src/app/components/app-frame/app-frame.component.ts
@@ -102,7 +102,9 @@ export class AppFrameComponent
PermissionType.SavedView
)
) {
- this.savedViewService.reload()
+ this.savedViewService.reload(() => {
+ this.savedViewService.maybeRefreshDocumentCounts()
+ })
}
}
@@ -283,4 +285,8 @@ export class AppFrameComponent
onLogout() {
this.openDocumentsService.closeAll()
}
+
+ get showSidebarCounts(): boolean {
+ return this.settingsService.get(SETTINGS_KEYS.SIDEBAR_VIEWS_SHOW_COUNT)
+ }
}
diff --git a/src-ui/src/app/components/dashboard/widgets/saved-view-widget/saved-view-widget.component.html b/src-ui/src/app/components/dashboard/widgets/saved-view-widget/saved-view-widget.component.html
index 53fa86dd3..ef82a96a3 100644
--- a/src-ui/src/app/components/dashboard/widgets/saved-view-widget/saved-view-widget.component.html
+++ b/src-ui/src/app/components/dashboard/widgets/saved-view-widget/saved-view-widget.component.html
@@ -1,6 +1,7 @@
diff --git a/src-ui/src/app/components/dashboard/widgets/saved-view-widget/saved-view-widget.component.ts b/src-ui/src/app/components/dashboard/widgets/saved-view-widget/saved-view-widget.component.ts
index 3a808bf9a..f24e988f4 100644
--- a/src-ui/src/app/components/dashboard/widgets/saved-view-widget/saved-view-widget.component.ts
+++ b/src-ui/src/app/components/dashboard/widgets/saved-view-widget/saved-view-widget.component.ts
@@ -118,6 +118,8 @@ export class SavedViewWidgetComponent
displayFields: DisplayField[] = DEFAULT_DASHBOARD_DISPLAY_FIELDS
+ count: number
+
ngOnInit(): void {
this.reload()
this.displayMode = this.savedView.display_mode ?? DisplayMode.TABLE
@@ -178,6 +180,7 @@ export class SavedViewWidgetComponent
tap((result) => {
this.show = true
this.documents = result.results
+ this.count = result.count
}),
delay(500)
)
diff --git a/src-ui/src/app/components/dashboard/widgets/widget-frame/widget-frame.component.html b/src-ui/src/app/components/dashboard/widgets/widget-frame/widget-frame.component.html
index 101a489b9..45dcdf7d8 100644
--- a/src-ui/src/app/components/dashboard/widgets/widget-frame/widget-frame.component.html
+++ b/src-ui/src/app/components/dashboard/widgets/widget-frame/widget-frame.component.html
@@ -2,13 +2,16 @@