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 @@
-
-
+
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[];
}