argos/dmp-frontend/src/app/ui/admin/description-template/editor/components/final-preview/final-preview.component.ts

70 lines
2.2 KiB
TypeScript

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();
// }
}