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