diff --git a/src-ui/src/app/app.module.ts b/src-ui/src/app/app.module.ts index 8e8ace690..f78340021 100644 --- a/src-ui/src/app/app.module.ts +++ b/src-ui/src/app/app.module.ts @@ -140,6 +140,7 @@ import { calendar, calendarEvent, cardChecklist, + cardHeading, caretDown, caretUp, chatLeftText, @@ -234,6 +235,7 @@ const icons = { calendar, calendarEvent, cardChecklist, + cardHeading, caretDown, caretUp, chatLeftText, 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 d54b02de1..d43a6239f 100644 --- a/src-ui/src/app/components/admin/settings/settings.component.html +++ b/src-ui/src/app/components/admin/settings/settings.component.html @@ -351,23 +351,23 @@ - @if (savedViewGroup.get(view.id.toString()).get('show_on_dashboard').value) { -
-
- -
-
- - -
- @if (savedViewGroup.get(view.id.toString()).get('display_mode').value === DashboardViewMode.TABLE && documentDisplayFields) { +
+ @if (savedViewGroup.get(view.id.toString()).get('show_on_dashboard').value) { +
+ +
+
+ + +
+ } + @if (documentDisplayFields) { }
- }
} diff --git a/src-ui/src/app/components/admin/settings/settings.component.ts b/src-ui/src/app/components/admin/settings/settings.component.ts index 7112c03c5..c3ffa62b6 100644 --- a/src-ui/src/app/components/admin/settings/settings.component.ts +++ b/src-ui/src/app/components/admin/settings/settings.component.ts @@ -117,7 +117,9 @@ export class SettingsComponent savedViews: SavedView[] SettingsNavIDs = SettingsNavIDs - documentDisplayFields: any[] + get documentDisplayFields() { + return this.settings.allDocumentDisplayFields + } store: BehaviorSubject storeSub: Subscription @@ -225,24 +227,6 @@ export class SettingsComponent }) } - if ( - this.permissionsService.currentUserCan( - PermissionAction.View, - PermissionType.CustomField - ) - ) { - this.customFieldsService.listAll().subscribe((r) => { - this.documentDisplayFields = DOCUMENT_DISPLAY_FIELDS.concat( - r.results.map((field) => { - return { - id: `${DocumentDisplayField.CUSTOM_FIELD}${field.id}` as any, - name: field.name, - } - }) - ) - }) - } - this.activatedRoute.paramMap.subscribe((paramMap) => { const section = paramMap.get('section') if (section) { 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 eb6ac003e..3aafe55b8 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 @@ -14,7 +14,7 @@ @for (column of savedView.document_display_fields; track column; let i = $index) { - @if (visibleColumns.includes(column)) { + @if (activeDisplayFields.has(column)) { @switch (column) { @case (DashboardViewTableColumn.ADDED) { @@ -114,7 +114,16 @@ } @else if (documents.length && savedView.display_mode === DashboardViewMode.SMALL_CARDS) {
@for (d of documents; track d.id) { - + + }
} @else { 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 63562b36a..a739b2701 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 @@ -344,51 +344,51 @@ describe('SavedViewWidgetComponent', () => { it('should check if column is visible including permissions', () => { expect( - component.visibleColumns.includes(DocumentDisplayField.TITLE) + component.activeDisplayFields.includes(DocumentDisplayField.TITLE) ).toBeTruthy() expect( - component.visibleColumns.includes(DocumentDisplayField.CREATED) + component.activeDisplayFields.includes(DocumentDisplayField.CREATED) ).toBeTruthy() expect( - component.visibleColumns.includes(DocumentDisplayField.ADDED) + component.activeDisplayFields.includes(DocumentDisplayField.ADDED) ).toBeTruthy() expect( - component.visibleColumns.includes(DocumentDisplayField.TAGS) + component.activeDisplayFields.includes(DocumentDisplayField.TAGS) ).toBeTruthy() expect( - component.visibleColumns.includes(DocumentDisplayField.CORRESPONDENT) + component.activeDisplayFields.includes(DocumentDisplayField.CORRESPONDENT) ).toBeTruthy() expect( - component.visibleColumns.includes(DocumentDisplayField.DOCUMENT_TYPE) + component.activeDisplayFields.includes(DocumentDisplayField.DOCUMENT_TYPE) ).toBeTruthy() expect( - component.visibleColumns.includes(DocumentDisplayField.STORAGE_PATH) + component.activeDisplayFields.includes(DocumentDisplayField.STORAGE_PATH) ).toBeTruthy() expect( - component.visibleColumns.includes( + component.activeDisplayFields.includes( `${DocumentDisplayField.CUSTOM_FIELD}11` as any ) ).toBeTruthy() - component.visibleColumns = [] + component.activeDisplayFields = [] jest .spyOn(component.permissionsService, 'currentUserCan') .mockReturnValue(false) component.ngOnInit() expect( - component.visibleColumns.includes(DocumentDisplayField.TAGS) + component.activeDisplayFields.includes(DocumentDisplayField.TAGS) ).toBeFalsy() expect( - component.visibleColumns.includes(DocumentDisplayField.CORRESPONDENT) + component.activeDisplayFields.includes(DocumentDisplayField.CORRESPONDENT) ).toBeFalsy() expect( - component.visibleColumns.includes(DocumentDisplayField.DOCUMENT_TYPE) + component.activeDisplayFields.includes(DocumentDisplayField.DOCUMENT_TYPE) ).toBeFalsy() expect( - component.visibleColumns.includes(DocumentDisplayField.STORAGE_PATH) + component.activeDisplayFields.includes(DocumentDisplayField.STORAGE_PATH) ).toBeFalsy() expect( - component.visibleColumns.includes( + component.activeDisplayFields.includes( `${DocumentDisplayField.CUSTOM_FIELD}11` as any ) ).toBeFalsy() 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 5d2f68978..bf18d8c6a 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 @@ -79,11 +79,11 @@ export class SavedViewWidgetComponent mouseOnPreview = false popoverHidden = true - visibleColumns: DocumentDisplayField[] = [ + activeDisplayFields: Set = new Set([ DocumentDisplayField.TITLE, DocumentDisplayField.CREATED, DocumentDisplayField.ADDED, - ] + ]) docLinkDocuments: Document[] = [] @@ -122,7 +122,7 @@ export class SavedViewWidgetComponent type && this.permissionsService.currentUserCan(PermissionAction.View, type) ) - this.visibleColumns.push(column) + this.activeDisplayFields.add(column) }) } diff --git a/src-ui/src/app/components/document-list/document-card-large/document-card-large.component.html b/src-ui/src/app/components/document-list/document-card-large/document-card-large.component.html index 81489a40a..0f7e580de 100644 --- a/src-ui/src/app/components/document-list/document-card-large/document-card-large.component.html +++ b/src-ui/src/app/components/document-list/document-card-large/document-card-large.component.html @@ -15,7 +15,7 @@
- @if (document.correspondent) { + @if (displayFields.has(DocumentDisplayField.CORRESPONDENT) && document.correspondent) { @if (clickCorrespondent.observers.length ) { {{(document.correspondent$ | async)?.name}} } @else { @@ -23,9 +23,13 @@ } : } - {{document.title | documentTitle}} - @for (t of document.tags$ | async; track t) { - + @if (displayFields.has(DocumentDisplayField.TITLE)) { + {{document.title | documentTitle}} + } + @if (displayFields.has(DocumentDisplayField.TAGS)) { + @for (t of document.tags$ | async; track t) { + + } }
@@ -66,44 +70,49 @@
- @if (notesEnabled && document.notes.length) { + @if (displayFields.has(DocumentDisplayField.NOTES) && notesEnabled && document.notes.length) { } - @if (document.document_type) { + @if (displayFields.has(DocumentDisplayField.DOCUMENT_TYPE) && document.document_type) { } - @if (document.storage_path) { + @if (displayFields.has(DocumentDisplayField.STORAGE_PATH) && document.storage_path) { } - @if (document.archive_serial_number | isNumber) { + @if (displayFields.has(DocumentDisplayField.ASN) && document.archive_serial_number | isNumber) {
#{{document.archive_serial_number}}
} - -
- Created: {{ document.created | customDate }} - Added: {{ document.added | customDate }} - Modified: {{ document.modified | customDate }} + @if (displayFields.has(DocumentDisplayField.CREATED) || displayFields.has(DocumentDisplayField.ADDED)) { + +
+ Created: {{ document.created | customDate }} + Added: {{ document.added | customDate }} + Modified: {{ document.modified | customDate }} +
+
+
+ + @if (displayFields.has(DocumentDisplayField.CREATED)) { {{document.created_date | customDate:'mediumDate'}} } + @else { {{document.added | customDate:'mediumDate'}} } +
- -
- {{document.created_date | customDate:'mediumDate'}} -
- @if (document.owner && document.owner !== settingsService.currentUser.id) { + } + @if (displayFields.has(DocumentDisplayField.OWNER) && document.owner && document.owner !== settingsService.currentUser.id) {
{{document.owner | username}}
} - @if (document.is_shared_by_requester) { + @if (displayFields.has(DocumentDisplayField.SHARED) && document.is_shared_by_requester) {
Shared
diff --git a/src-ui/src/app/components/document-list/document-card-large/document-card-large.component.ts b/src-ui/src/app/components/document-list/document-card-large/document-card-large.component.ts index 442114767..02da43ea3 100644 --- a/src-ui/src/app/components/document-list/document-card-large/document-card-large.component.ts +++ b/src-ui/src/app/components/document-list/document-card-large/document-card-large.component.ts @@ -11,6 +11,7 @@ import { SettingsService } from 'src/app/services/settings.service' import { NgbPopover } from '@ng-bootstrap/ng-bootstrap' import { SETTINGS_KEYS } from 'src/app/data/ui-settings' import { ComponentWithPermissions } from '../../with-permissions/with-permissions.component' +import { DocumentDisplayField } from 'src/app/data/saved-view' @Component({ selector: 'pngx-document-card-large', @@ -18,6 +19,8 @@ import { ComponentWithPermissions } from '../../with-permissions/with-permission styleUrls: ['./document-card-large.component.scss'], }) export class DocumentCardLargeComponent extends ComponentWithPermissions { + DocumentDisplayField = DocumentDisplayField + constructor( private documentService: DocumentService, public settingsService: SettingsService @@ -28,6 +31,9 @@ export class DocumentCardLargeComponent extends ComponentWithPermissions { @Input() selected = false + @Input() + displayFields: Set + @Output() toggleSelected = new EventEmitter() 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 ea9ba9914..8333e3f30 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 @@ -10,19 +10,21 @@
-
- @for (t of getTagsLimited$() | async; track t) { - - } - @if (moreTags) { -
- + {{moreTags}} -
- } -
+ @if (displayFields?.has(DocumentDisplayField.TAGS)) { +
+ @for (t of getTagsLimited$() | async; track t) { + + } + @if (moreTags) { +
+ + {{moreTags}} +
+ } +
+ } - @if (notesEnabled && document.notes.length) { + @if (displayFields.has(DocumentDisplayField.NOTES) && notesEnabled && document.notes.length) { @@ -32,54 +34,61 @@

- @if (document.correspondent) { + @if (displayFields.has(DocumentDisplayField.CORRESPONDENT) && document.correspondent) { {{(document.correspondent$ | async)?.name ?? privateName}}: } - {{document.title | documentTitle}} + @if (displayFields.has(DocumentDisplayField.TITLE)) { + {{document.title | documentTitle}} + }