diff --git a/apps/red-ui/src/app/modules/admin/dialogs/file-attributes-csv-import-dialog/file-attributes-csv-import-dialog.component.ts b/apps/red-ui/src/app/modules/admin/dialogs/file-attributes-csv-import-dialog/file-attributes-csv-import-dialog.component.ts index 64fa985b3..21420dfa7 100644 --- a/apps/red-ui/src/app/modules/admin/dialogs/file-attributes-csv-import-dialog/file-attributes-csv-import-dialog.component.ts +++ b/apps/red-ui/src/app/modules/admin/dialogs/file-attributes-csv-import-dialog/file-attributes-csv-import-dialog.component.ts @@ -3,7 +3,7 @@ import { AbstractControl, FormGroup, ValidatorFn, Validators } from '@angular/fo import { AppStateService } from '../../../../state/app-state.service'; import { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog'; import * as Papa from 'papaparse'; -import { FileAttributesControllerService } from '@redaction/red-ui-http'; +import { FileAttributeConfig, FileAttributesControllerService } from '@redaction/red-ui-http'; import { CdkVirtualScrollViewport } from '@angular/cdk/scrolling'; import { Observable } from 'rxjs'; import { map, startWith } from 'rxjs/operators'; @@ -52,7 +52,7 @@ export class FileAttributesCsvImportDialogComponent extends BaseListingComponent private readonly _fileAttributesControllerService: FileAttributesControllerService, public dialogRef: MatDialogRef, protected readonly _injector: Injector, - @Inject(MAT_DIALOG_DATA) public data: { csv: File; ruleSetId: string } + @Inject(MAT_DIALOG_DATA) public data: { csv: File; ruleSetId: string; existingAttributes: FileAttributeConfig[] } ) { super(_injector); this.csvFile = data.csv; @@ -64,7 +64,7 @@ export class FileAttributesCsvImportDialogComponent extends BaseListingComponent encoding: ['UTF-8', Validators.required] }); - this._readFile(); + this._readFile(data.existingAttributes); } private _autocompleteStringValidator(): ValidatorFn { @@ -76,7 +76,7 @@ export class FileAttributesCsvImportDialogComponent extends BaseListingComponent }; } - private _readFile() { + private _readFile(existingAttributes: FileAttributeConfig[]) { const reader = new FileReader(); reader.addEventListener('load', async (event) => { const parsedCsv = event.target.result; @@ -144,6 +144,17 @@ export class FileAttributesCsvImportDialogComponent extends BaseListingComponent }; } + private _buildExistingAttribute(attribute: FileAttributeConfig) { + return { + csvColumn: attribute.csvColumnHeader, + name: attribute.label, + temporaryName: attribute.label, + type: FieldType.Text, // TODO + readonly: !attribute.editable, + display: attribute.visible + }; + } + public activateAll() { this.activeFields = [...this.allEntities]; } diff --git a/apps/red-ui/src/app/modules/admin/screens/file-attributes-listing/file-attributes-listing-screen.component.ts b/apps/red-ui/src/app/modules/admin/screens/file-attributes-listing/file-attributes-listing-screen.component.ts index 44e4f3040..e98548987 100644 --- a/apps/red-ui/src/app/modules/admin/screens/file-attributes-listing/file-attributes-listing-screen.component.ts +++ b/apps/red-ui/src/app/modules/admin/screens/file-attributes-listing/file-attributes-listing-screen.component.ts @@ -75,7 +75,7 @@ export class FileAttributesListingScreenComponent extends BaseListingComponent { + this._dialogService.openImportFileAttributeCSVDialog(csvFile, this._appStateService.activeRuleSetId, this.attributes, async () => { await this._loadData(); }); } diff --git a/apps/red-ui/src/app/modules/admin/services/admin-dialog.service.ts b/apps/red-ui/src/app/modules/admin/services/admin-dialog.service.ts index ff8e2888d..65a0f9139 100644 --- a/apps/red-ui/src/app/modules/admin/services/admin-dialog.service.ts +++ b/apps/red-ui/src/app/modules/admin/services/admin-dialog.service.ts @@ -124,10 +124,15 @@ export class AdminDialogService { return ref; } - public openImportFileAttributeCSVDialog(csv: File, ruleSetId: string, cb?: Function): MatDialogRef { + public openImportFileAttributeCSVDialog( + csv: File, + ruleSetId: string, + existingAttributes: FileAttributeConfig[], + cb?: Function + ): MatDialogRef { const ref = this._dialog.open(FileAttributesCsvImportDialogComponent, { ...largeDialogConfig, - data: { csv, ruleSetId } + data: { csv, ruleSetId, existingAttributes } }); ref.afterClosed().subscribe((result) => {