From 48335773c5360a866f9db89260e4244eb4c833aa Mon Sep 17 00:00:00 2001 From: Valentin Mihai Date: Fri, 28 Jan 2022 22:08:17 +0200 Subject: [PATCH] extended base dialog for file attributes configurations dialog and updated form --- ...butes-configurations-dialog.component.html | 4 +- ...ributes-configurations-dialog.component.ts | 38 ++++++++++++++----- ...e-attribute-encoding-types-translations.ts | 2 +- .../file-attributes/file-attribute-config.ts | 2 +- .../file-attributes/file-attributes-config.ts | 2 +- 5 files changed, 34 insertions(+), 14 deletions(-) diff --git a/apps/red-ui/src/app/modules/admin/dialogs/file-attributes-configurations-dialog/file-attributes-configurations-dialog.component.html b/apps/red-ui/src/app/modules/admin/dialogs/file-attributes-configurations-dialog/file-attributes-configurations-dialog.component.html index 649fc9030..8bdf5db9b 100644 --- a/apps/red-ui/src/app/modules/admin/dialogs/file-attributes-configurations-dialog/file-attributes-configurations-dialog.component.html +++ b/apps/red-ui/src/app/modules/admin/dialogs/file-attributes-configurations-dialog/file-attributes-configurations-dialog.component.html @@ -38,7 +38,7 @@
- @@ -46,5 +46,5 @@
- + diff --git a/apps/red-ui/src/app/modules/admin/dialogs/file-attributes-configurations-dialog/file-attributes-configurations-dialog.component.ts b/apps/red-ui/src/app/modules/admin/dialogs/file-attributes-configurations-dialog/file-attributes-configurations-dialog.component.ts index 6ab62a162..bca5ac377 100644 --- a/apps/red-ui/src/app/modules/admin/dialogs/file-attributes-configurations-dialog/file-attributes-configurations-dialog.component.ts +++ b/apps/red-ui/src/app/modules/admin/dialogs/file-attributes-configurations-dialog/file-attributes-configurations-dialog.component.ts @@ -1,37 +1,57 @@ -import { ChangeDetectionStrategy, Component, Inject } from '@angular/core'; +import { ChangeDetectionStrategy, Component, Inject, Injector } from '@angular/core'; import { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog'; -import { FormBuilder, FormGroup } from '@angular/forms'; +import { FormBuilder, FormGroup, Validators } from '@angular/forms'; import { FileAttributeEncodingTypes, IFileAttributesConfig } from '../../../../../../../../libs/red-domain/src'; import { fileAttributeEncodingTypesTranslations } from '../../translations/file-attribute-encoding-types-translations'; +import { BaseDialogComponent } from '../../../../../../../../libs/common-ui/src'; @Component({ templateUrl: './file-attributes-configurations-dialog.component.html', styleUrls: ['./file-attributes-configurations-dialog.component.scss'], changeDetection: ChangeDetectionStrategy.OnPush, }) -export class FileAttributesConfigurationsDialogComponent { +export class FileAttributesConfigurationsDialogComponent extends BaseDialogComponent { private readonly _configuration: IFileAttributesConfig = this._data; - readonly form: FormGroup; readonly encodingTypeOptions = Object.keys(FileAttributeEncodingTypes); readonly translations = fileAttributeEncodingTypesTranslations; constructor( private readonly _formBuilder: FormBuilder, - readonly dialogRef: MatDialogRef, + protected readonly _injector: Injector, + protected readonly _dialogRef: MatDialogRef, @Inject(MAT_DIALOG_DATA) private _data: IFileAttributesConfig, ) { + super(_injector, _dialogRef); this.form = this._getForm(); + this.initialFormValue = this.form.getRawValue(); } - save() {} + get disabled() { + if (!this.changed) { + return true; + } + if (!this.form.get('supportCsvMapping').value) { + return false; + } + return !this.valid; + } + + save() { + this._configuration.filenameMappingColumnHeaderName = this.form.get('supportCsvMapping').value ? 'Path' : ''; + this._configuration.keyColumn = this.form.get('keyColumn').value; + this._configuration.delimiter = this.form.get('delimiter').value; + this._configuration.encoding = this.form.get('encodingType').value; + + this._dialogRef.close(); + } private _getForm(): FormGroup { return this._formBuilder.group({ supportCsvMapping: [!!this._configuration.filenameMappingColumnHeaderName], - keyColumn: [''], - delimiter: [this._configuration.delimiter], - encodingType: [FileAttributeEncodingTypes.UTF8], + keyColumn: [this._configuration.keyColumn || '', [Validators.required]], + delimiter: [this._configuration.delimiter || '', [Validators.required]], + encodingType: [this._configuration.encoding || FileAttributeEncodingTypes['UTF-8'], [Validators.required]], }); } } diff --git a/apps/red-ui/src/app/modules/admin/translations/file-attribute-encoding-types-translations.ts b/apps/red-ui/src/app/modules/admin/translations/file-attribute-encoding-types-translations.ts index 91a99e3cb..d3f53ecd6 100644 --- a/apps/red-ui/src/app/modules/admin/translations/file-attribute-encoding-types-translations.ts +++ b/apps/red-ui/src/app/modules/admin/translations/file-attribute-encoding-types-translations.ts @@ -2,7 +2,7 @@ import { FileAttributeEncodingType } from '@red/domain'; import { marker as _ } from '@biesbjerg/ngx-translate-extract-marker'; export const fileAttributeEncodingTypesTranslations: { [key in FileAttributeEncodingType]: string } = { - UTF8: _('file-attribute-encoding-types.utf8'), + 'UTF-8': _('file-attribute-encoding-types.utf8'), ASCII: _('file-attribute-encoding-types.ascii'), ISO: _('file-attribute-encoding-types.iso'), }; diff --git a/libs/red-domain/src/lib/file-attributes/file-attribute-config.ts b/libs/red-domain/src/lib/file-attributes/file-attribute-config.ts index d667eb8f1..c6c824f8e 100644 --- a/libs/red-domain/src/lib/file-attributes/file-attribute-config.ts +++ b/libs/red-domain/src/lib/file-attributes/file-attribute-config.ts @@ -19,7 +19,7 @@ export const FileAttributeConfigTypes = { export type FileAttributeConfigType = keyof typeof FileAttributeConfigTypes; export const FileAttributeEncodingTypes = { - UTF8: 'UTF8', + 'UTF-8': 'UTF-8', ASCII: 'ASCII', ISO: 'ISO', } as const; diff --git a/libs/red-domain/src/lib/file-attributes/file-attributes-config.ts b/libs/red-domain/src/lib/file-attributes/file-attributes-config.ts index 7aa96c500..bac991593 100644 --- a/libs/red-domain/src/lib/file-attributes/file-attributes-config.ts +++ b/libs/red-domain/src/lib/file-attributes/file-attributes-config.ts @@ -3,7 +3,7 @@ import { IFileAttributeConfig } from './file-attribute-config'; export interface IFileAttributesConfig { delimiter?: string; encoding?: string; + keyColumn?: string filenameMappingColumnHeaderName?: string; - fileAttributeConfigs?: IFileAttributeConfig[]; }