import { Component, Input, OnInit, SimpleChanges } from '@angular/core'; import { UntypedFormGroup } from '@angular/forms'; import { DescriptionTemplate } from '@app/core/model/description-template/description-template'; import { DescriptionTemplatePersist } from '@app/core/model/description-template/description-template-persist'; import { Description } from '@app/core/model/description/description'; import { DescriptionEditorModel } from '@app/ui/description/editor/description-editor.model'; import { VisibilityRulesService } from '@app/ui/description/editor/description-form/visibility-rules/visibility-rules.service'; @Component({ selector: 'app-final-preview-component', templateUrl: './final-preview.component.html', styleUrls: ['./final-preview.component.scss'], providers: [VisibilityRulesService] }) export class FinalPreviewComponent implements OnInit { @Input() descriptionTemplatePersist: DescriptionTemplatePersist; descriptionTemplate: DescriptionTemplate; previewPropertiesFormGroup @Input() formGroup = null; constructor(private visibilityRulesService: VisibilityRulesService) { } private generatePreviewForm() { this.descriptionTemplate = this.buildDescriptionTemplate(this.descriptionTemplatePersist); const mockDescription: Description = { descriptionTemplate: this.descriptionTemplate } const descriptionEditorModel = new DescriptionEditorModel().fromModel(mockDescription, mockDescription.descriptionTemplate); this.previewPropertiesFormGroup = descriptionEditorModel.properties.buildForm() as UntypedFormGroup; this.visibilityRulesService.setContext(this.descriptionTemplate.definition, this.previewPropertiesFormGroup); } private buildDescriptionTemplate(persist: DescriptionTemplatePersist) : DescriptionTemplate{ if (persist == null) return null; return { id: persist.id, label: persist.label, description: persist.description, groupId: undefined, version: undefined, language: persist.language, type: undefined, status: persist.status, definition: persist.definition, users: persist.users } } ngOnInit(): void { this.generatePreviewForm(); } // ngOnChanges(changes: SimpleChanges) { // if(changes['descriptionTemplatePersist']) this.generatePreviewForm(); // } }