Merge branch 'master' into VM/RED-2614

This commit is contained in:
Valentin Mihai 2022-01-26 13:27:45 +02:00
commit d15c569456
7 changed files with 62 additions and 41 deletions

View File

@ -12,7 +12,7 @@
></redaction-file-download-btn>
<iqser-circle-button
(action)="exportFilesAsCSV()"
(action)="downloadDossierAsCSV()"
[disabled]="listingService.areSomeSelected$ | async"
[tooltip]="'dossier-overview.header-actions.download-csv' | translate"
icon="iqser:csv"

View File

@ -11,7 +11,7 @@ import {
SortingService,
Toaster,
} from '@iqser/common-ui';
import { Dossier, File } from '@red/domain';
import { Dossier, File, IFile } from '@red/domain';
import { PermissionsService } from '@services/permissions.service';
import { marker as _ } from '@biesbjerg/ngx-translate-extract-marker';
import { ReanalysisService } from '@services/reanalysis.service';
@ -20,6 +20,7 @@ import { saveAsCSV } from '@utils/csv-utils';
import { UserService } from '@services/user.service';
import { ConfigService } from '../../config.service';
import { firstValueFrom } from 'rxjs';
import { PrimaryFileAttributeService } from '../../../../../../services/primary-file-attribute.service';
@Component({
selector: 'redaction-screen-header',
@ -45,6 +46,7 @@ export class ScreenHeaderComponent implements OnInit {
readonly routerHistoryService: RouterHistoryService,
private readonly _reanalysisService: ReanalysisService,
private readonly _loadingService: LoadingService,
private readonly _primaryFileAttributeService: PrimaryFileAttributeService,
) {}
ngOnInit() {
@ -62,33 +64,34 @@ export class ScreenHeaderComponent implements OnInit {
this._loadingService.stop();
}
exportFilesAsCSV() {
downloadDossierAsCSV() {
const sortedEntities$ = this.listingService.displayed$.pipe(map(entities => this.sortingService.defaultSort(entities)));
sortedEntities$.pipe(take(1)).subscribe(entities => {
const fileName = this.dossier.dossierName + '.export.csv';
saveAsCSV(
fileName,
entities,
[
'dossierId',
'fileId',
'filename',
'primaryAttribute',
'numberOfPages',
'assignee',
'workflowStatus',
'processingStatus',
'lastUpdated',
'lastUploaded',
'lastProcessed',
'hasHints',
'hasImages',
'hasRedactions',
'hasUpdates',
'excluded',
],
fsv => ({ ...fsv, assignee: this._userService.getNameForId(fsv.assignee) }),
);
const mapper = (file?: IFile) => ({
...file,
assignee: this._userService.getNameForId(file.assignee),
primaryAttribute: this._primaryFileAttributeService.getPrimaryFileAttributeValue(file, this.dossier.dossierTemplateId),
});
const fileFields = [
'dossierId',
'fileId',
'filename',
'primaryAttribute',
'numberOfPages',
'assignee',
'workflowStatus',
'processingStatus',
'lastUpdated',
'lastUploaded',
'lastProcessed',
'hasHints',
'hasImages',
'hasRedactions',
'hasUpdates',
'excluded',
];
saveAsCSV(fileName, entities, fileFields, mapper);
});
}
}

View File

@ -1,6 +1,6 @@
import { ChangeDetectionStrategy, Component, Input, OnChanges } from '@angular/core';
import { File } from '@red/domain';
import { FileAttributesService } from '@services/entity-services/file-attributes.service';
import { PrimaryFileAttributeService } from '../../../../../../../services/primary-file-attribute.service';
@Component({
selector: 'redaction-file-name-column',
@ -13,19 +13,9 @@ export class FileNameColumnComponent implements OnChanges {
@Input() dossierTemplateId: string;
primaryAttribute: string;
constructor(private readonly _fileAttributesService: FileAttributesService) {}
constructor(private readonly _primaryFileAttributeService: PrimaryFileAttributeService) {}
ngOnChanges() {
const fileAttributesConfig = this._fileAttributesService.getFileAttributeConfig(this.dossierTemplateId);
if (fileAttributesConfig) {
const primary = fileAttributesConfig.fileAttributeConfigs?.find(c => c.primaryAttribute);
if (primary && this.file.fileAttributes?.attributeIdToValue) {
this.primaryAttribute = this.file.fileAttributes?.attributeIdToValue[primary.id];
}
if (!this.primaryAttribute) {
this.primaryAttribute = '-';
}
}
this.primaryAttribute = this._primaryFileAttributeService.getPrimaryFileAttributeValue(this.file, this.dossierTemplateId);
}
}

View File

@ -0,0 +1,29 @@
import { Injectable } from '@angular/core';
import { FileAttributesService } from './entity-services/file-attributes.service';
import { IFile } from '@red/domain';
@Injectable({
providedIn: 'root',
})
export class PrimaryFileAttributeService {
constructor(private readonly _fileAttributesService: FileAttributesService) {}
getPrimaryFileAttributeValue(file: IFile, dossierTemplateId: string) {
const fileAttributesConfig = this._fileAttributesService.getFileAttributeConfig(dossierTemplateId);
let primaryAttribute;
if (fileAttributesConfig) {
const primary = fileAttributesConfig.fileAttributeConfigs?.find(c => c.primaryAttribute);
if (primary && file.fileAttributes?.attributeIdToValue) {
primaryAttribute = file.fileAttributes?.attributeIdToValue[primary.id];
}
}
if (!primaryAttribute) {
primaryAttribute = '-';
}
return primaryAttribute;
}
}

View File

@ -39,7 +39,6 @@ export class File extends Entity<IFile> implements IFile {
readonly processingStatus: ProcessingFileStatus;
readonly workflowStatus: WorkflowFileStatus;
readonly primaryAttribute?: string;
readonly statusSort: number;
readonly cacheIdentifier?: string;
readonly hintsOnly: boolean;

View File

@ -1,6 +1,6 @@
{
"name": "redaction",
"version": "3.181.0",
"version": "3.182.0",
"private": true,
"license": "MIT",
"scripts": {

Binary file not shown.