Basic display of custom fields
This commit is contained in:
parent
af94eed042
commit
149b1538ac
@ -94,6 +94,14 @@
|
|||||||
<small i18n>Shared</small>
|
<small i18n>Shared</small>
|
||||||
</div>
|
</div>
|
||||||
}
|
}
|
||||||
|
@for (field of document.custom_fields; track field.id) {
|
||||||
|
@if (displayFields.has(DocumentDisplayField.CUSTOM_FIELD + field.field)) {
|
||||||
|
<div class="ps-0 p-1">
|
||||||
|
<i-bs width="1em" height="1em" class="me-2 text-muted" name="info-circle"></i-bs>
|
||||||
|
<small>{{field.value}}</small>
|
||||||
|
</div>
|
||||||
|
}
|
||||||
|
}
|
||||||
</div>
|
</div>
|
||||||
<div class="d-flex justify-content-between align-items-center">
|
<div class="d-flex justify-content-between align-items-center">
|
||||||
<div class="btn-group w-100">
|
<div class="btn-group w-100">
|
||||||
|
@ -39,7 +39,7 @@ export class DocumentCardSmallComponent extends ComponentWithPermissions {
|
|||||||
document: Document
|
document: Document
|
||||||
|
|
||||||
@Input()
|
@Input()
|
||||||
displayFields: Set<DocumentDisplayField>
|
displayFields: Set<DocumentDisplayField | string>
|
||||||
|
|
||||||
@Output()
|
@Output()
|
||||||
dblClickDocument = new EventEmitter()
|
dblClickDocument = new EventEmitter()
|
||||||
|
@ -234,7 +234,7 @@
|
|||||||
i18n>Created</th>
|
i18n>Created</th>
|
||||||
}
|
}
|
||||||
@if (activeDisplayFields.has(DocumentDisplayField.ADDED)) {
|
@if (activeDisplayFields.has(DocumentDisplayField.ADDED)) {
|
||||||
<th class="d-none d-xl-table-cell"
|
<th
|
||||||
pngxSortable="added"
|
pngxSortable="added"
|
||||||
title="Sort by added date" i18n-title
|
title="Sort by added date" i18n-title
|
||||||
[currentSortField]="list.sortField"
|
[currentSortField]="list.sortField"
|
||||||
@ -242,6 +242,11 @@
|
|||||||
(sort)="onSort($event)"
|
(sort)="onSort($event)"
|
||||||
i18n>Added</th>
|
i18n>Added</th>
|
||||||
}
|
}
|
||||||
|
@for (field of activeDisplayCustomFields; track field) {
|
||||||
|
<th>
|
||||||
|
{{getDisplayCustomFieldTitle(field)}}
|
||||||
|
</th>
|
||||||
|
}
|
||||||
</thead>
|
</thead>
|
||||||
<tbody>
|
<tbody>
|
||||||
@for (d of list.documents; track trackByDocumentId($index, d)) {
|
@for (d of list.documents; track trackByDocumentId($index, d)) {
|
||||||
@ -310,10 +315,15 @@
|
|||||||
</td>
|
</td>
|
||||||
}
|
}
|
||||||
@if (activeDisplayFields.has(DocumentDisplayField.ADDED)) {
|
@if (activeDisplayFields.has(DocumentDisplayField.ADDED)) {
|
||||||
<td class="d-none d-xl-table-cell">
|
<td>
|
||||||
{{d.added | customDate}}
|
{{d.added | customDate}}
|
||||||
</td>
|
</td>
|
||||||
}
|
}
|
||||||
|
@for (field of activeDisplayCustomFields; track field) {
|
||||||
|
<td>
|
||||||
|
{{getCustomFieldValue(d, field)}}
|
||||||
|
</td>
|
||||||
|
}
|
||||||
</tr>
|
</tr>
|
||||||
}
|
}
|
||||||
</tbody>
|
</tbody>
|
||||||
|
@ -72,8 +72,9 @@ export class DocumentListComponent
|
|||||||
|
|
||||||
@ViewChildren(SortableDirective) headers: QueryList<SortableDirective>
|
@ViewChildren(SortableDirective) headers: QueryList<SortableDirective>
|
||||||
|
|
||||||
displayMode: string = DisplayMode.SMALL_CARDS // largeCards, smallCards, details
|
displayMode: string = DisplayMode.SMALL_CARDS // largeCards, smallCards, table
|
||||||
activeDisplayFields: Set<string> = new Set([
|
|
||||||
|
_activeDisplayFields: Set<DocumentDisplayField | string> = new Set([
|
||||||
DocumentDisplayField.TITLE,
|
DocumentDisplayField.TITLE,
|
||||||
DocumentDisplayField.CORRESPONDENT,
|
DocumentDisplayField.CORRESPONDENT,
|
||||||
DocumentDisplayField.CREATED,
|
DocumentDisplayField.CREATED,
|
||||||
@ -86,6 +87,26 @@ export class DocumentListComponent
|
|||||||
DocumentDisplayField.SHARED,
|
DocumentDisplayField.SHARED,
|
||||||
])
|
])
|
||||||
|
|
||||||
|
get activeDisplayFields(): Set<DocumentDisplayField | string> {
|
||||||
|
return this._activeDisplayFields
|
||||||
|
}
|
||||||
|
|
||||||
|
set activeDisplayFields(fields: Set<DocumentDisplayField | string>) {
|
||||||
|
this._activeDisplayFields = fields
|
||||||
|
this.updateDisplayCustomFields()
|
||||||
|
}
|
||||||
|
activeDisplayCustomFields: Set<string> = new Set()
|
||||||
|
|
||||||
|
public updateDisplayCustomFields() {
|
||||||
|
this.activeDisplayCustomFields = new Set(
|
||||||
|
Array.from(this.activeDisplayFields).filter(
|
||||||
|
(field) =>
|
||||||
|
typeof field === 'string' &&
|
||||||
|
field.startsWith(DocumentDisplayField.CUSTOM_FIELD)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
unmodifiedFilterRules: FilterRule[] = []
|
unmodifiedFilterRules: FilterRule[] = []
|
||||||
private unmodifiedSavedView: SavedView
|
private unmodifiedSavedView: SavedView
|
||||||
|
|
||||||
@ -162,9 +183,21 @@ export class DocumentListComponent
|
|||||||
} else {
|
} else {
|
||||||
this.activeDisplayFields.add(field)
|
this.activeDisplayFields.add(field)
|
||||||
}
|
}
|
||||||
|
this.updateDisplayCustomFields()
|
||||||
this.saveDisplayFields()
|
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 {
|
ngOnInit(): void {
|
||||||
if (localStorage.getItem('document-list:displayMode') != null) {
|
if (localStorage.getItem('document-list:displayMode') != null) {
|
||||||
this.displayMode = localStorage.getItem('document-list:displayMode')
|
this.displayMode = localStorage.getItem('document-list:displayMode')
|
||||||
|
Loading…
x
Reference in New Issue
Block a user