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 98dc94f16..2cce1a848 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
@@ -9,8 +9,9 @@
Show all
}
+
@if (displayMode === DisplayMode.TABLE) {
-
+
@for (field of displayFields; track field; let i = $index) {
@@ -28,71 +29,59 @@
- @if (loading) {
- @for (i of [].constructor(pageSize); track i) {
-
- @for (field of displayFields; track field; let j = $index) {
- 1 }">
-
-
-
- |
- }
-
- }
- }
- @for (doc of documents; track doc.id) {
+ @for (doc of documents; track doc.id; let i = $index) {
- @for (field of displayFields; track field; let i = $index) {
- 1 }">
- @switch (field) {
- @case (DisplayField.ADDED) {
- {{doc.added | customDate}}
- }
- @case (DisplayField.CREATED) {
- {{doc.created_date | customDate}}
- }
- @case (DisplayField.TITLE) {
- {{doc.title | documentTitle}}
- }
- @case (DisplayField.CORRESPONDENT) {
- @if (doc.correspondent) {
- {{(doc.correspondent$ | async)?.name}}
- }
- }
- @case (DisplayField.TAGS) {
- @for (t of doc.tags$ | async; track t) {
-
- }
- }
- @case (DisplayField.DOCUMENT_TYPE) {
- @if (doc.document_type) {
- {{(doc.document_type$ | async)?.name}}
- }
- }
- @case (DisplayField.STORAGE_PATH) {
- @if (doc.storage_path) {
- {{(doc.storage_path$ | async)?.name}}
- }
- }
- }
- @if (field.startsWith(DisplayField.CUSTOM_FIELD)) {
-
- }
- @if (i === displayFields.length - 1) {
- |
} @else if (displayMode === DisplayMode.SMALL_CARDS) {
-
- @if (loading) {
- @for (i of [].constructor(pageSize); track i) {
-
- }
- }
- @for (d of documents; track d.id) {
+
+ @for (d of documents; track d.id; let i = $index) {
} @else if (displayMode === DisplayMode.LARGE_CARDS) {
-
- @if (loading) {
- @for (i of [].constructor(pageSize); track i) {
-
- }
- }
- @for (d of documents; track d.id) {
+
+ @for (d of documents; track d.id; let i = $index) {
} @else {
- No documents
+ No documents
}
-
+
diff --git a/src-ui/src/app/components/dashboard/widgets/saved-view-widget/saved-view-widget.component.scss b/src-ui/src/app/components/dashboard/widgets/saved-view-widget/saved-view-widget.component.scss
index 8c445f18e..54156b448 100644
--- a/src-ui/src/app/components/dashboard/widgets/saved-view-widget/saved-view-widget.component.scss
+++ b/src-ui/src/app/components/dashboard/widgets/saved-view-widget/saved-view-widget.component.scss
@@ -1,3 +1,17 @@
+.wrapper {
+ transition: all .3s ease-out;
+ overflow: hidden;
+ max-height: 0;
+ opacity: .1;
+ width: 100%;
+}
+
+.reveal {
+ max-height: 1000px;
+ opacity: 1;
+ overflow: visible;
+}
+
table {
overflow-wrap: anywhere;
table-layout: fixed;
diff --git a/src-ui/src/app/components/dashboard/widgets/saved-view-widget/saved-view-widget.component.spec.ts b/src-ui/src/app/components/dashboard/widgets/saved-view-widget/saved-view-widget.component.spec.ts
index ef36b0806..aa82cf765 100644
--- a/src-ui/src/app/components/dashboard/widgets/saved-view-widget/saved-view-widget.component.spec.ts
+++ b/src-ui/src/app/components/dashboard/widgets/saved-view-widget/saved-view-widget.component.spec.ts
@@ -187,7 +187,7 @@ describe('SavedViewWidgetComponent', () => {
fixture.detectChanges()
})
- it('should show a list of documents', () => {
+ it('should show a list of documents', fakeAsync(() => {
jest.spyOn(documentService, 'listFiltered').mockReturnValue(
of({
all: [2, 3],
@@ -196,43 +196,17 @@ describe('SavedViewWidgetComponent', () => {
})
)
component.ngOnInit()
+ tick(500)
fixture.detectChanges()
expect(fixture.debugElement.nativeElement.textContent).toContain('doc2')
expect(fixture.debugElement.nativeElement.textContent).toContain('doc3')
// preview + download buttons
expect(
fixture.debugElement.queryAll(By.css('td a.btn'))[0].attributes['href']
- ).toEqual(component.getPreviewUrl(documentResults[0]))
+ ).toEqual(documentService.getPreviewUrl(documentResults[0].id))
expect(
fixture.debugElement.queryAll(By.css('td a.btn'))[1].attributes['href']
).toEqual(component.getDownloadUrl(documentResults[0]))
- })
-
- it('should show preview on mouseover after delay to preload content', fakeAsync(() => {
- jest.spyOn(documentService, 'listFiltered').mockReturnValue(
- of({
- all: [2, 3],
- count: 2,
- results: documentResults,
- })
- )
- component.ngOnInit()
- fixture.detectChanges()
- component.mouseEnterPreviewButton(documentResults[0])
- expect(component.popover.isOpen()).toBeTruthy()
- expect(component.popoverHidden).toBeTruthy()
- tick(600)
- expect(component.popoverHidden).toBeFalsy()
- component.maybeClosePopover()
-
- component.mouseEnterPreviewButton(documentResults[1])
- tick(100)
- component.mouseLeavePreviewButton()
- component.mouseEnterPreview()
- expect(component.popover.isOpen()).toBeTruthy()
- component.mouseLeavePreview()
- tick(600)
- expect(component.popover.isOpen()).toBeFalsy()
}))
it('should call api endpoint and load results', () => {
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 7531a7615..fe12d879c 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
@@ -7,7 +7,7 @@ import {
ViewChildren,
} from '@angular/core'
import { Router } from '@angular/router'
-import { Subject, takeUntil } from 'rxjs'
+import { delay, Subject, takeUntil, tap } from 'rxjs'
import {
DEFAULT_DASHBOARD_DISPLAY_FIELDS,
DEFAULT_DASHBOARD_VIEW_PAGE_SIZE,
@@ -52,7 +52,8 @@ export class SavedViewWidgetComponent
public DisplayField = DisplayField
public CustomFieldDataType = CustomFieldDataType
- loading: boolean = true
+ public loading: boolean = true
+ public reveal: boolean = false
private customFields: CustomField[] = []
@@ -137,16 +138,22 @@ export class SavedViewWidgetComponent
this.documentService
.listFiltered(
1,
- this.pageSize,
+ this.savedView?.page_size ?? DEFAULT_DASHBOARD_VIEW_PAGE_SIZE,
this.savedView.sort_field,
this.savedView.sort_reverse,
this.savedView.filter_rules,
{ truncate_content: true }
)
- .pipe(takeUntil(this.unsubscribeNotifier))
+ .pipe(
+ takeUntil(this.unsubscribeNotifier),
+ tap((result) => {
+ this.reveal = true
+ this.documents = result.results
+ }),
+ delay(500)
+ )
.subscribe((result) => {
this.loading = false
- this.documents = result.results
})
}
@@ -206,55 +213,10 @@ export class SavedViewWidgetComponent
this.router.navigate(['documents', document.id])
}
- getPreviewUrl(document: Document): string {
- return this.documentService.getPreviewUrl(document.id)
- }
-
getDownloadUrl(document: Document): string {
return this.documentService.getDownloadUrl(document.id)
}
- mouseEnterPreviewButton(doc: Document) {
- const newPopover = this.popovers.get(this.documents.indexOf(doc))
- if (this.popover !== newPopover && this.popover?.isOpen())
- this.popover.close()
- this.popover = newPopover
- this.mouseOnPreview = true
- if (!this.popover.isOpen()) {
- // we're going to open but hide to pre-load content during hover delay
- this.popover.open()
- this.popoverHidden = true
- setTimeout(() => {
- if (this.mouseOnPreview) {
- // show popover
- this.popoverHidden = false
- } else {
- this.popover.close()
- }
- }, 600)
- }
- }
-
- mouseEnterPreview() {
- this.mouseOnPreview = true
- }
-
- mouseLeavePreview() {
- this.mouseOnPreview = false
- this.maybeClosePopover()
- }
-
- mouseLeavePreviewButton() {
- this.mouseOnPreview = false
- this.maybeClosePopover()
- }
-
- maybeClosePopover() {
- setTimeout(() => {
- if (!this.mouseOnPreview) this.popover?.close()
- }, 300)
- }
-
public getColumnTitle(field: DisplayField): string {
if (field.startsWith(DisplayField.CUSTOM_FIELD)) {
const id = field.split('_')[2]
diff --git a/src-ui/src/app/components/dashboard/widgets/statistics-widget/statistics-widget.component.html b/src-ui/src/app/components/dashboard/widgets/statistics-widget/statistics-widget.component.html
index ba318b8e2..718edf4ea 100644
--- a/src-ui/src/app/components/dashboard/widgets/statistics-widget/statistics-widget.component.html
+++ b/src-ui/src/app/components/dashboard/widgets/statistics-widget/statistics-widget.component.html
@@ -1,6 +1,6 @@
-
+
@if (loading) {
-
+
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 b64d5e567..5f0091dc5 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
@@ -1,4 +1,4 @@
- |