From 149b1538acc67d0f883d15ab3122ffcff3211f1c Mon Sep 17 00:00:00 2001
From: shamoon <4887959+shamoon@users.noreply.github.com>
Date: Wed, 17 Apr 2024 23:46:57 -0700
Subject: [PATCH] Basic display of custom fields
---
.../document-card-small.component.html | 8 ++++
.../document-card-small.component.ts | 2 +-
.../document-list.component.html | 14 ++++++-
.../document-list/document-list.component.ts | 37 ++++++++++++++++++-
4 files changed, 56 insertions(+), 5 deletions(-)
diff --git a/src-ui/src/app/components/document-list/document-card-small/document-card-small.component.html b/src-ui/src/app/components/document-list/document-card-small/document-card-small.component.html
index 8333e3f30..2df502884 100644
--- a/src-ui/src/app/components/document-list/document-card-small/document-card-small.component.html
+++ b/src-ui/src/app/components/document-list/document-card-small/document-card-small.component.html
@@ -94,6 +94,14 @@
Shared
}
+ @for (field of document.custom_fields; track field.id) {
+ @if (displayFields.has(DocumentDisplayField.CUSTOM_FIELD + field.field)) {
+
diff --git a/src-ui/src/app/components/document-list/document-card-small/document-card-small.component.ts b/src-ui/src/app/components/document-list/document-card-small/document-card-small.component.ts
index 3d9c3b610..148639d69 100644
--- a/src-ui/src/app/components/document-list/document-card-small/document-card-small.component.ts
+++ b/src-ui/src/app/components/document-list/document-card-small/document-card-small.component.ts
@@ -39,7 +39,7 @@ export class DocumentCardSmallComponent extends ComponentWithPermissions {
document: Document
@Input()
- displayFields: Set
+ displayFields: Set
@Output()
dblClickDocument = new EventEmitter()
diff --git a/src-ui/src/app/components/document-list/document-list.component.html b/src-ui/src/app/components/document-list/document-list.component.html
index f9ec9cd53..fed33ed60 100644
--- a/src-ui/src/app/components/document-list/document-list.component.html
+++ b/src-ui/src/app/components/document-list/document-list.component.html
@@ -234,7 +234,7 @@
i18n>Created
}
@if (activeDisplayFields.has(DocumentDisplayField.ADDED)) {
- Added |
}
+ @for (field of activeDisplayCustomFields; track field) {
+
+ {{getDisplayCustomFieldTitle(field)}}
+ |
+ }
@for (d of list.documents; track trackByDocumentId($index, d)) {
@@ -310,10 +315,15 @@
}
@if (activeDisplayFields.has(DocumentDisplayField.ADDED)) {
-
+ |
{{d.added | customDate}}
|
}
+ @for (field of activeDisplayCustomFields; track field) {
+
+ {{getCustomFieldValue(d, field)}}
+ |
+ }
}
diff --git a/src-ui/src/app/components/document-list/document-list.component.ts b/src-ui/src/app/components/document-list/document-list.component.ts
index 2ccfa4e5e..e80a930a5 100644
--- a/src-ui/src/app/components/document-list/document-list.component.ts
+++ b/src-ui/src/app/components/document-list/document-list.component.ts
@@ -72,8 +72,9 @@ export class DocumentListComponent
@ViewChildren(SortableDirective) headers: QueryList
- displayMode: string = DisplayMode.SMALL_CARDS // largeCards, smallCards, details
- activeDisplayFields: Set = new Set([
+ displayMode: string = DisplayMode.SMALL_CARDS // largeCards, smallCards, table
+
+ _activeDisplayFields: Set = new Set([
DocumentDisplayField.TITLE,
DocumentDisplayField.CORRESPONDENT,
DocumentDisplayField.CREATED,
@@ -86,6 +87,26 @@ export class DocumentListComponent
DocumentDisplayField.SHARED,
])
+ get activeDisplayFields(): Set {
+ return this._activeDisplayFields
+ }
+
+ set activeDisplayFields(fields: Set) {
+ this._activeDisplayFields = fields
+ this.updateDisplayCustomFields()
+ }
+ activeDisplayCustomFields: Set = new Set()
+
+ public updateDisplayCustomFields() {
+ this.activeDisplayCustomFields = new Set(
+ Array.from(this.activeDisplayFields).filter(
+ (field) =>
+ typeof field === 'string' &&
+ field.startsWith(DocumentDisplayField.CUSTOM_FIELD)
+ )
+ )
+ }
+
unmodifiedFilterRules: FilterRule[] = []
private unmodifiedSavedView: SavedView
@@ -162,9 +183,21 @@ export class DocumentListComponent
} else {
this.activeDisplayFields.add(field)
}
+ this.updateDisplayCustomFields()
this.saveDisplayFields()
}
+ public getDisplayCustomFieldTitle(field: string) {
+ return this.settingsService.allDocumentDisplayFields.find(
+ (f) => f.id === field
+ )?.name
+ }
+
+ public getCustomFieldValue(document: Document, field: string) {
+ const fieldId = parseInt(field.split('_')[2])
+ return document.custom_fields.find((f) => f.field === fieldId)?.value
+ }
+
ngOnInit(): void {
if (localStorage.getItem('document-list:displayMode') != null) {
this.displayMode = localStorage.getItem('document-list:displayMode')