From 18365de1d491d6a524fc1145ea1ca05833d74728 Mon Sep 17 00:00:00 2001 From: Sofia Papacharalampous Date: Wed, 24 Apr 2024 12:01:29 +0300 Subject: [PATCH] fix on table-of-content validation trigger --- .../editor/description-editor.component.ts | 7 +++++++ .../table-of-contents-validation-service.ts | 13 +++++++++++++ .../table-of-contents-internal.ts | 6 +++--- .../table-of-contents/table-of-contents.module.ts | 5 +++-- 4 files changed, 26 insertions(+), 5 deletions(-) create mode 100644 dmp-frontend/src/app/ui/description/editor/table-of-contents/services/table-of-contents-validation-service.ts diff --git a/dmp-frontend/src/app/ui/description/editor/description-editor.component.ts b/dmp-frontend/src/app/ui/description/editor/description-editor.component.ts index 6f74eabd5..c6f723845 100644 --- a/dmp-frontend/src/app/ui/description/editor/description-editor.component.ts +++ b/dmp-frontend/src/app/ui/description/editor/description-editor.component.ts @@ -49,6 +49,7 @@ import { DmpDescriptionTemplate } from '@app/core/model/dmp/dmp'; import { FileTransformerEntityType } from '@app/core/common/enum/file-transformer-entity-type'; import { nameof } from 'ts-simple-nameof'; import { AbstractControl, UntypedFormArray, UntypedFormGroup } from '@angular/forms'; +import { TableOfContentsValidationService } from './table-of-contents/services/table-of-contents-validation-service'; @Component({ selector: 'app-description-editor-component', @@ -99,6 +100,7 @@ export class DescriptionEditorComponent extends BaseEditor this.prepareForm(data)); + this.tocValidationService.validateForm(); } refreshOnNavigateToData(id?: Guid): void { @@ -1015,6 +1018,10 @@ export class DescriptionEditorComponent extends BaseEditor this.tocValidationService.validateForm()); // // const labelSubscription = // this.formGroup.get('label').valueChanges diff --git a/dmp-frontend/src/app/ui/description/editor/table-of-contents/services/table-of-contents-validation-service.ts b/dmp-frontend/src/app/ui/description/editor/table-of-contents/services/table-of-contents-validation-service.ts new file mode 100644 index 000000000..c90ed33ca --- /dev/null +++ b/dmp-frontend/src/app/ui/description/editor/table-of-contents/services/table-of-contents-validation-service.ts @@ -0,0 +1,13 @@ +import { EventEmitter, Injectable } from "@angular/core"; + +@Injectable() +export class TableOfContentsValidationService { + private _validateFormEvent: EventEmitter = new EventEmitter(); + get validateFormEvent(): EventEmitter { + return this._validateFormEvent; + } + + validateForm(): void { + this._validateFormEvent.emit(); + } +} diff --git a/dmp-frontend/src/app/ui/description/editor/table-of-contents/table-of-contents-internal/table-of-contents-internal.ts b/dmp-frontend/src/app/ui/description/editor/table-of-contents/table-of-contents-internal/table-of-contents-internal.ts index ecf0ca556..e191fed12 100644 --- a/dmp-frontend/src/app/ui/description/editor/table-of-contents/table-of-contents-internal/table-of-contents-internal.ts +++ b/dmp-frontend/src/app/ui/description/editor/table-of-contents/table-of-contents-internal/table-of-contents-internal.ts @@ -6,6 +6,7 @@ import { ToCEntry } from '../models/toc-entry'; import { ToCEntryType } from '../models/toc-entry-type.enum'; import { DescriptionFieldIndicator } from '../../description-editor.model'; import { Observable, Subscription, map } from 'rxjs'; +import { TableOfContentsValidationService } from '../services/table-of-contents-validation-service'; @Component({ selector: 'table-of-contents-internal', @@ -34,8 +35,7 @@ export class TableOfContentsInternal implements OnInit, OnDestroy { tocEntriesStateSubscriptions: Subscription[] = []; tocEntriesStateMap: Map = new Map(); - constructor() { - } + constructor(private tocValidationService: TableOfContentsValidationService) { } ngOnInit(): void { // console.log('component created' + JSON.stringify(this.tocentries)); @@ -93,7 +93,7 @@ export class TableOfContentsInternal implements OnInit, OnDestroy { this.tocEntriesStateMap.set(entry.id, false); this.tocEntriesStateSubscriptions.push( - this.propertiesFormGroup.statusChanges + this.tocValidationService.validateFormEvent .pipe(map(() => this.hasErrors(entry.id))) .subscribe(next => { this.tocEntriesStateMap.set(entry.id, next); diff --git a/dmp-frontend/src/app/ui/description/editor/table-of-contents/table-of-contents.module.ts b/dmp-frontend/src/app/ui/description/editor/table-of-contents/table-of-contents.module.ts index 2a7bc3749..413bfde9a 100644 --- a/dmp-frontend/src/app/ui/description/editor/table-of-contents/table-of-contents.module.ts +++ b/dmp-frontend/src/app/ui/description/editor/table-of-contents/table-of-contents.module.ts @@ -1,15 +1,16 @@ import {CommonModule} from '@angular/common'; -import {NgModule} from '@angular/core'; +import { NgModule} from '@angular/core'; import {RouterModule} from '@angular/router'; import { TableOfContentsInternal } from './table-of-contents-internal/table-of-contents-internal'; import { MatIconModule } from '@angular/material/icon'; import { VisibilityRulesService } from '@app/ui/description/editor/description-form/visibility-rules/visibility-rules.service'; import { TableOfContentsComponent } from './table-of-contents.component'; +import { TableOfContentsValidationService } from './services/table-of-contents-validation-service'; @NgModule({ imports: [CommonModule, RouterModule, MatIconModule], declarations: [TableOfContentsComponent, TableOfContentsInternal], exports: [TableOfContentsComponent], - providers: [VisibilityRulesService] + providers: [VisibilityRulesService, TableOfContentsValidationService] }) export class TableOfContentsModule { }