Display existing attributes at csv import

This commit is contained in:
Adina Țeudan 2021-04-18 01:53:09 +03:00
parent b83e41da77
commit 18ed62c1c9
3 changed files with 23 additions and 7 deletions

View File

@ -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<FileAttributesCsvImportDialogComponent>,
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 = <any>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];
}

View File

@ -75,7 +75,7 @@ export class FileAttributesListingScreenComponent extends BaseListingComponent<F
const csvFile = files[0];
this._fileInput.nativeElement.value = null;
this._dialogService.openImportFileAttributeCSVDialog(csvFile, this._appStateService.activeRuleSetId, async () => {
this._dialogService.openImportFileAttributeCSVDialog(csvFile, this._appStateService.activeRuleSetId, this.attributes, async () => {
await this._loadData();
});
}

View File

@ -124,10 +124,15 @@ export class AdminDialogService {
return ref;
}
public openImportFileAttributeCSVDialog(csv: File, ruleSetId: string, cb?: Function): MatDialogRef<FileAttributesCsvImportDialogComponent> {
public openImportFileAttributeCSVDialog(
csv: File,
ruleSetId: string,
existingAttributes: FileAttributeConfig[],
cb?: Function
): MatDialogRef<FileAttributesCsvImportDialogComponent> {
const ref = this._dialog.open(FileAttributesCsvImportDialogComponent, {
...largeDialogConfig,
data: { csv, ruleSetId }
data: { csv, ruleSetId, existingAttributes }
});
ref.afterClosed().subscribe((result) => {