diff --git a/apps/red-ui/src/app/app.component.ts b/apps/red-ui/src/app/app.component.ts
index 168178363..b6d58256f 100644
--- a/apps/red-ui/src/app/app.component.ts
+++ b/apps/red-ui/src/app/app.component.ts
@@ -1,4 +1,5 @@
import { Component, ViewContainerRef } from '@angular/core';
+import { RouterHistoryService } from '@services/router-history.service';
@Component({
selector: 'redaction-root',
@@ -6,6 +7,7 @@ import { Component, ViewContainerRef } from '@angular/core';
styleUrls: ['./app.component.scss'],
})
export class AppComponent {
- // View container ref needs to be injected for the color picker to work
- constructor(public viewContainerRef: ViewContainerRef) {}
+ // ViewContainerRef needs to be injected for the color picker to work
+ // RouterHistoryService needs to be injected for last dossiers screen to be updated on first app load
+ constructor(public viewContainerRef: ViewContainerRef, private readonly _routerHistoryService: RouterHistoryService) {}
}
diff --git a/apps/red-ui/src/app/components/downloads-list-screen/downloads-list-screen.component.html b/apps/red-ui/src/app/components/downloads-list-screen/downloads-list-screen.component.html
index 34f0ea2c1..3249bd3fa 100644
--- a/apps/red-ui/src/app/components/downloads-list-screen/downloads-list-screen.component.html
+++ b/apps/red-ui/src/app/components/downloads-list-screen/downloads-list-screen.component.html
@@ -8,6 +8,7 @@
[itemSize]="80"
[noDataText]="'downloads-list.no-data.title' | translate"
[selectionEnabled]="true"
+ [tableColumnConfigs]="tableColumnConfigs"
noDataIcon="iqser:download"
>
diff --git a/apps/red-ui/src/app/modules/admin/dialogs/file-attributes-csv-import-dialog/active-fields-listing/active-fields-listing.component.html b/apps/red-ui/src/app/modules/admin/dialogs/file-attributes-csv-import-dialog/active-fields-listing/active-fields-listing.component.html
index 536e40188..9a15c7caa 100644
--- a/apps/red-ui/src/app/modules/admin/dialogs/file-attributes-csv-import-dialog/active-fields-listing/active-fields-listing.component.html
+++ b/apps/red-ui/src/app/modules/admin/dialogs/file-attributes-csv-import-dialog/active-fields-listing/active-fields-listing.component.html
@@ -5,6 +5,7 @@
[itemSize]="50"
[noDataText]="'file-attributes-csv-import.no-data.title' | translate"
[selectionEnabled]="true"
+ [tableColumnConfigs]="tableColumnConfigs"
emptyColumnWidth="auto"
noDataIcon="red:attribute"
>
diff --git a/apps/red-ui/src/app/modules/admin/screens/audit/audit-screen.component.html b/apps/red-ui/src/app/modules/admin/screens/audit/audit-screen.component.html
index 1587c511c..296eb49c8 100644
--- a/apps/red-ui/src/app/modules/admin/screens/audit/audit-screen.component.html
+++ b/apps/red-ui/src/app/modules/admin/screens/audit/audit-screen.component.html
@@ -25,6 +25,7 @@
[itemSize]="80"
[noDataIcon]="'iqser:document'"
[noDataText]="'audit-screen.no-data.title' | translate"
+ [tableColumnConfigs]="tableColumnConfigs"
[totalSize]="logs?.totalHits || 0"
>
diff --git a/apps/red-ui/src/app/modules/admin/screens/default-colors/default-colors-screen.component.html b/apps/red-ui/src/app/modules/admin/screens/default-colors/default-colors-screen.component.html
index 1fb70d6d1..8e7cd2833 100644
--- a/apps/red-ui/src/app/modules/admin/screens/default-colors/default-colors-screen.component.html
+++ b/apps/red-ui/src/app/modules/admin/screens/default-colors/default-colors-screen.component.html
@@ -20,7 +20,7 @@
-
+
diff --git a/apps/red-ui/src/app/modules/admin/screens/dictionary-listing/dictionary-listing-screen.component.html b/apps/red-ui/src/app/modules/admin/screens/dictionary-listing/dictionary-listing-screen.component.html
index d311fb1ad..b30f090a1 100644
--- a/apps/red-ui/src/app/modules/admin/screens/dictionary-listing/dictionary-listing-screen.component.html
+++ b/apps/red-ui/src/app/modules/admin/screens/dictionary-listing/dictionary-listing-screen.component.html
@@ -30,6 +30,7 @@
[noMatchText]="'dictionary-listing.no-match.title' | translate"
[selectionEnabled]="true"
[showNoDataButton]="currentUser.isAdmin"
+ [tableColumnConfigs]="tableColumnConfigs"
emptyColumnWidth="1fr"
noDataIcon="red:dictionary"
>
diff --git a/apps/red-ui/src/app/modules/admin/screens/dossier-attributes-listing/dossier-attributes-listing-screen.component.html b/apps/red-ui/src/app/modules/admin/screens/dossier-attributes-listing/dossier-attributes-listing-screen.component.html
index 999b7e161..97115261d 100644
--- a/apps/red-ui/src/app/modules/admin/screens/dossier-attributes-listing/dossier-attributes-listing-screen.component.html
+++ b/apps/red-ui/src/app/modules/admin/screens/dossier-attributes-listing/dossier-attributes-listing-screen.component.html
@@ -30,6 +30,7 @@
[noMatchText]="'dossier-attributes-listing.no-match.title' | translate"
[selectionEnabled]="true"
[showNoDataButton]="currentUser.isAdmin"
+ [tableColumnConfigs]="tableColumnConfigs"
emptyColumnWidth="1fr"
noDataIcon="red:attribute"
>
diff --git a/apps/red-ui/src/app/modules/admin/screens/dossier-template-listing/dossier-templates-listing-screen.component.html b/apps/red-ui/src/app/modules/admin/screens/dossier-template-listing/dossier-templates-listing-screen.component.html
index 00cb18b89..f32777255 100644
--- a/apps/red-ui/src/app/modules/admin/screens/dossier-template-listing/dossier-templates-listing-screen.component.html
+++ b/apps/red-ui/src/app/modules/admin/screens/dossier-template-listing/dossier-templates-listing-screen.component.html
@@ -19,6 +19,7 @@
[noDataText]="'dossier-templates-listing.no-data.title' | translate"
[noMatchText]="'dossier-templates-listing.no-match.title' | translate"
[selectionEnabled]="true"
+ [tableColumnConfigs]="tableColumnConfigs"
noDataIcon="red:template"
>
diff --git a/apps/red-ui/src/app/modules/admin/screens/file-attributes-listing/file-attributes-listing-screen.component.html b/apps/red-ui/src/app/modules/admin/screens/file-attributes-listing/file-attributes-listing-screen.component.html
index 78ad18174..f820ff322 100644
--- a/apps/red-ui/src/app/modules/admin/screens/file-attributes-listing/file-attributes-listing-screen.component.html
+++ b/apps/red-ui/src/app/modules/admin/screens/file-attributes-listing/file-attributes-listing-screen.component.html
@@ -27,6 +27,7 @@
[noDataText]="'file-attributes-listing.no-data.title' | translate"
[noMatchText]="'file-attributes-listing.no-match.title' | translate"
[selectionEnabled]="true"
+ [tableColumnConfigs]="tableColumnConfigs"
emptyColumnWidth="1fr"
noDataIcon="red:attribute"
>
diff --git a/apps/red-ui/src/app/modules/admin/screens/justifications/justifications-screen/justifications-screen.component.html b/apps/red-ui/src/app/modules/admin/screens/justifications/justifications-screen/justifications-screen.component.html
index 2feb42084..9d77bbc85 100644
--- a/apps/red-ui/src/app/modules/admin/screens/justifications/justifications-screen/justifications-screen.component.html
+++ b/apps/red-ui/src/app/modules/admin/screens/justifications/justifications-screen/justifications-screen.component.html
@@ -4,6 +4,7 @@
[itemSize]="80"
[noDataText]="'justifications-listing.no-data.title' | translate"
[selectionEnabled]="true"
+ [tableColumnConfigs]="tableColumnConfigs"
noDataIcon="iqser:document"
>
diff --git a/apps/red-ui/src/app/modules/admin/screens/trash/trash-screen.component.html b/apps/red-ui/src/app/modules/admin/screens/trash/trash-screen.component.html
index 4b28fb1c3..2d69a12d1 100644
--- a/apps/red-ui/src/app/modules/admin/screens/trash/trash-screen.component.html
+++ b/apps/red-ui/src/app/modules/admin/screens/trash/trash-screen.component.html
@@ -15,6 +15,7 @@
[noDataText]="'trash.no-data.title' | translate"
[noMatchText]="'trash.no-match.title' | translate"
[selectionEnabled]="true"
+ [tableColumnConfigs]="tableColumnConfigs"
[tableItemClasses]="{ disabled: disabledFn }"
noDataIcon="red:template"
>
diff --git a/apps/red-ui/src/app/modules/admin/screens/user-listing/user-listing-screen.component.html b/apps/red-ui/src/app/modules/admin/screens/user-listing/user-listing-screen.component.html
index e81873d9d..99891428b 100644
--- a/apps/red-ui/src/app/modules/admin/screens/user-listing/user-listing-screen.component.html
+++ b/apps/red-ui/src/app/modules/admin/screens/user-listing/user-listing-screen.component.html
@@ -37,6 +37,7 @@
[itemSize]="80"
[noMatchText]="'user-listing.no-match.title' | translate"
[selectionEnabled]="true"
+ [tableColumnConfigs]="tableColumnConfigs"
emptyColumnWidth="1fr"
>
diff --git a/apps/red-ui/src/app/modules/dossier/dialogs/edit-dossier-dialog/deleted-documents/edit-dossier-deleted-documents.component.html b/apps/red-ui/src/app/modules/dossier/dialogs/edit-dossier-dialog/deleted-documents/edit-dossier-deleted-documents.component.html
index 3c4108bcc..7319b9040 100644
--- a/apps/red-ui/src/app/modules/dossier/dialogs/edit-dossier-dialog/deleted-documents/edit-dossier-deleted-documents.component.html
+++ b/apps/red-ui/src/app/modules/dossier/dialogs/edit-dossier-dialog/deleted-documents/edit-dossier-deleted-documents.component.html
@@ -4,6 +4,7 @@
[itemSize]="50"
[noDataText]="'edit-dossier-dialog.deleted-documents.no-data.title' | translate"
[selectionEnabled]="true"
+ [tableColumnConfigs]="tableColumnConfigs"
[tableItemClasses]="{ disabled: disabledFn }"
noDataIcon="iqser:document"
>
diff --git a/apps/red-ui/src/app/modules/dossier/screens/dossier-overview/screen/dossier-overview-screen.component.html b/apps/red-ui/src/app/modules/dossier/screens/dossier-overview/screen/dossier-overview-screen.component.html
index 1010b0c02..7074f226c 100644
--- a/apps/red-ui/src/app/modules/dossier/screens/dossier-overview/screen/dossier-overview-screen.component.html
+++ b/apps/red-ui/src/app/modules/dossier/screens/dossier-overview/screen/dossier-overview-screen.component.html
@@ -23,6 +23,7 @@
[noMatchText]="'dossier-overview.no-match.title' | translate"
[selectionEnabled]="true"
[showNoDataButton]="true"
+ [tableColumnConfigs]="tableColumnConfigs"
[tableItemClasses]="{ disabled: disabledFn, 'last-opened': lastOpenedFn }"
helpModeKey="document-list"
>
diff --git a/apps/red-ui/src/app/modules/dossier/screens/dossier-overview/screen/dossier-overview-screen.component.ts b/apps/red-ui/src/app/modules/dossier/screens/dossier-overview/screen/dossier-overview-screen.component.ts
index 147dba9b7..bf8865bdd 100644
--- a/apps/red-ui/src/app/modules/dossier/screens/dossier-overview/screen/dossier-overview-screen.component.ts
+++ b/apps/red-ui/src/app/modules/dossier/screens/dossier-overview/screen/dossier-overview-screen.component.ts
@@ -17,7 +17,7 @@ import { FileUploadService } from '@upload-download/services/file-upload.service
import { StatusOverlayService } from '@upload-download/services/status-overlay.service';
import * as moment from 'moment';
import { Observable, timer } from 'rxjs';
-import { filter, switchMap, tap } from 'rxjs/operators';
+import { filter, skip, switchMap, tap } from 'rxjs/operators';
import { convertFiles, Files, handleFileDrop } from '@utils/index';
import {
CircleButtonTypes,
@@ -73,6 +73,7 @@ export class DossierOverviewScreenComponent extends ListingComponent imple
private readonly _needsWorkFilterTemplate: TemplateRef;
@ViewChild('fileInput', { static: true }) private readonly _fileInput: ElementRef;
@ViewChild(TableComponent) private readonly _tableComponent: TableComponent;
+ private _fileAttributeConfigs: IFileAttributeConfig[];
constructor(
protected readonly _injector: Injector,
@@ -99,19 +100,7 @@ export class DossierOverviewScreenComponent extends ListingComponent imple
.getEntityChanged$(this.dossierId)
.pipe(tap(dossier => (this.dossierTemplateId = dossier.dossierTemplateId)));
this.currentDossier = this._dossiersService.find(this.dossierId);
-
- this.fileAttributeConfigs = this._fileAttributesService.getFileAttributeConfig(
- this.currentDossier.dossierTemplateId,
- )?.fileAttributeConfigs;
- this.tableColumnConfigs = this.configService.tableConfig(this.displayedAttributes);
- }
-
- private _fileAttributeConfigs: IFileAttributeConfig[];
-
- set fileAttributeConfigs(value: IFileAttributeConfig[]) {
- this._fileAttributeConfigs = value || [];
- this.displayedInFileListAttributes = this._fileAttributeConfigs.filter(config => config.displayedInFileList);
- this.displayedAttributes = this.displayedInFileListAttributes.filter(c => c.displayedInFileList);
+ this._updateFileAttributes();
}
get checkedRequiredFilters(): NestedFilter[] {
@@ -123,6 +112,7 @@ export class DossierOverviewScreenComponent extends ListingComponent imple
}
disabledFn = (file: File) => file.excluded;
+
lastOpenedFn = (file: File) => this._userPreferenceService.getLastOpenedFileForDossier(file.dossierId) === file.id;
async ngOnInit(): Promise {
@@ -150,11 +140,15 @@ export class DossierOverviewScreenComponent extends ListingComponent imple
this._computeAllFilters();
});
- this.addSubscription = this._dossierTemplatesService.entityChanged$.subscribe(() => {
- this.fileAttributeConfigs = this._fileAttributesService.getFileAttributeConfig(
- this.currentDossier.dossierTemplateId,
- )?.fileAttributeConfigs;
- });
+ this.addSubscription = this._dossierTemplatesService
+ .getEntityChanged$(this.currentDossier.dossierTemplateId)
+ .pipe(
+ skip(1),
+ tap(() => {
+ this._updateFileAttributes();
+ }),
+ )
+ .subscribe();
try {
this.dossierAttributes = await this._dossierAttributesService.getWithValues(this.currentDossier);
@@ -170,14 +164,12 @@ export class DossierOverviewScreenComponent extends ListingComponent imple
super.ngOnDestroy();
}
- async ngOnAttach() {
- await this.ngOnInit();
+ ngOnAttach() {
+ this._fileDropOverlayService.initFileDropHandling(this.dossierId);
this._tableComponent?.scrollToLastIndex();
}
- ngOnDetach() {
- this.ngOnDestroy();
- }
+ ngOnDetach() {}
forceReanalysisAction($event: LongPressEvent) {
this.analysisForced = !$event.touchEnd && this._userPreferenceService.areDevFeaturesEnabled;
@@ -203,6 +195,15 @@ export class DossierOverviewScreenComponent extends ListingComponent imple
recentlyModifiedChecker = (file: File) =>
moment(file.lastUpdated).add(this._appConfigService.values.RECENT_PERIOD_IN_HOURS, 'hours').isAfter(moment());
+ private _updateFileAttributes(): void {
+ this._fileAttributeConfigs =
+ this._fileAttributesService.getFileAttributeConfig(this.currentDossier.dossierTemplateId)?.fileAttributeConfigs || [];
+ this.displayedInFileListAttributes = this._fileAttributeConfigs.filter(config => config.displayedInFileList);
+ this.displayedAttributes = this.displayedInFileListAttributes.filter(c => c.displayedInFileList);
+ this.tableColumnConfigs = this.configService.tableConfig(this.displayedAttributes);
+ this._computeAllFilters();
+ }
+
private async _reloadFiles() {
await this._filesService.loadAll(this.dossierId).toPromise();
this._computeAllFilters();
diff --git a/apps/red-ui/src/app/modules/dossier/screens/dossiers-listing/screen/dossiers-listing-screen.component.html b/apps/red-ui/src/app/modules/dossier/screens/dossiers-listing/screen/dossiers-listing-screen.component.html
index 16f8d9509..a0cd34fa2 100644
--- a/apps/red-ui/src/app/modules/dossier/screens/dossiers-listing/screen/dossiers-listing-screen.component.html
+++ b/apps/red-ui/src/app/modules/dossier/screens/dossiers-listing/screen/dossiers-listing-screen.component.html
@@ -13,6 +13,7 @@
[noDataText]="'dossier-listing.no-data.title' | translate"
[noMatchText]="'dossier-listing.no-match.title' | translate"
[showNoDataButton]="currentUser.isManager"
+ [tableColumnConfigs]="tableColumnConfigs"
helpModeKey="dossier-list"
noDataIcon="red:folder"
>
diff --git a/apps/red-ui/src/app/modules/dossier/screens/file-preview-screen/services/document-info.service.ts b/apps/red-ui/src/app/modules/dossier/screens/file-preview-screen/services/document-info.service.ts
index 94b0625fd..156fcd7c6 100644
--- a/apps/red-ui/src/app/modules/dossier/screens/file-preview-screen/services/document-info.service.ts
+++ b/apps/red-ui/src/app/modules/dossier/screens/file-preview-screen/services/document-info.service.ts
@@ -27,9 +27,9 @@ export class DocumentInfoService {
fileAttributes$(fileId: string, dossierId: string, dossierTemplateId: string) {
const getAttributes = () => this._fileAttributesService.getFileAttributeConfig(dossierTemplateId).fileAttributeConfigs;
- const dossierTemplateChange$ = this._dossierTemplatesService.entityChanged$.pipe(
- filter(template => template.dossierTemplateId === dossierTemplateId),
- );
+ const dossierTemplateChange$ = this._dossierTemplatesService
+ .getEntityChanged$(dossierTemplateId)
+ .pipe(filter(template => template.dossierTemplateId === dossierTemplateId));
const fileChange$ = this._filesMapService.watch$(dossierId, fileId);
return merge(dossierTemplateChange$, fileChange$).pipe(
map(getAttributes),
diff --git a/apps/red-ui/src/app/modules/dossier/screens/search-screen/search-screen.component.html b/apps/red-ui/src/app/modules/dossier/screens/search-screen/search-screen.component.html
index 76b7bdbbf..16bf74fde 100644
--- a/apps/red-ui/src/app/modules/dossier/screens/search-screen/search-screen.component.html
+++ b/apps/red-ui/src/app/modules/dossier/screens/search-screen/search-screen.component.html
@@ -16,6 +16,7 @@
[itemSize]="85"
[noDataText]="'search-screen.no-data' | translate"
[noMatchText]="'search-screen.no-match' | translate"
+ [tableColumnConfigs]="tableColumnConfigs"
noDataIcon="iqser:search"
>
diff --git a/libs/common-ui b/libs/common-ui
index c3244477c..e0de29cb6 160000
--- a/libs/common-ui
+++ b/libs/common-ui
@@ -1 +1 @@
-Subproject commit c3244477c0479dd174fa7d17c2a7e3621f26bd6d
+Subproject commit e0de29cb68bc171b2737f613eafb162a43ca32ca