82 lines
3.3 KiB
TypeScript
82 lines
3.3 KiB
TypeScript
import { Component, Inject, OnInit } from '@angular/core';
|
|
import { UntypedFormGroup } from '@angular/forms';
|
|
import { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';
|
|
import { DescriptionTemplate } from '@app/core/model/description-template/description-template';
|
|
import { DescriptionTemplateService } from '@app/core/services/description-template/description-template.service';
|
|
import { LoggingService } from '@app/core/services/logging/logging-service';
|
|
import { SnackBarNotificationLevel, UiNotificationService } from '@app/core/services/notification/ui-notification-service';
|
|
import { ProgressIndicationService } from '@app/core/services/progress-indication/progress-indication-service';
|
|
import { DescriptionEditorModel } from '@app/ui/description/editor/description-editor.model';
|
|
import { DescriptionEditorResolver } from '@app/ui/description/editor/description-editor.resolver';
|
|
import { VisibilityRulesService } from '@app/ui/description/editor/description-form/visibility-rules/visibility-rules.service';
|
|
import { BaseComponent } from '@common/base/base.component';
|
|
import { TranslateService } from '@ngx-translate/core';
|
|
import { takeUntil } from 'rxjs/operators';
|
|
|
|
@Component({
|
|
selector: 'app-description-template-preview-dialog-component',
|
|
templateUrl: 'description-template-preview-dialog.component.html',
|
|
styleUrls: ['./description-template-preview-dialog.component.scss'],
|
|
})
|
|
export class DescriptionTemplatePreviewDialogComponent extends BaseComponent implements OnInit {
|
|
|
|
datasetProfileDefinitionFormGroup: UntypedFormGroup;
|
|
progressIndication = false;
|
|
editorModel: DescriptionEditorModel;
|
|
formGroup: UntypedFormGroup;
|
|
descriptionTemplate: DescriptionTemplate;
|
|
|
|
constructor(
|
|
public dialogRef: MatDialogRef<DescriptionTemplatePreviewDialogComponent>,
|
|
private progressIndicationService: ProgressIndicationService,
|
|
private descriptionTemplateService: DescriptionTemplateService,
|
|
private uiNotificationService: UiNotificationService,
|
|
private logger: LoggingService,
|
|
private language: TranslateService,
|
|
public visibilityRulesService: VisibilityRulesService,
|
|
@Inject(MAT_DIALOG_DATA) public data: any
|
|
) {
|
|
super();
|
|
}
|
|
|
|
ngOnInit(): void {
|
|
this.progressIndicationService.getProgressIndicationObservable().pipe(takeUntil(this._destroyed)).subscribe(x => {
|
|
setTimeout(() => { this.progressIndication = x; });
|
|
});
|
|
|
|
if (this.data && this.data.descriptionTemplateId) {
|
|
|
|
this.descriptionTemplateService.getSingle(this.data.descriptionTemplateId, DescriptionEditorResolver.descriptionTemplateLookupFields())
|
|
.pipe(takeUntil(this._destroyed))
|
|
.subscribe(item => {
|
|
this.descriptionTemplate = item;
|
|
this.prepareForm(this.descriptionTemplate);
|
|
});
|
|
}
|
|
}
|
|
|
|
prepareForm(data: DescriptionTemplate) {
|
|
try {
|
|
this.editorModel = new DescriptionEditorModel();
|
|
this.buildForm();
|
|
} catch (error) {
|
|
this.logger.error('Could not parse Description item: ' + data + error);
|
|
this.uiNotificationService.snackBarNotification(this.language.instant('COMMONS.ERRORS.DEFAULT'), SnackBarNotificationLevel.Error);
|
|
}
|
|
}
|
|
|
|
buildForm() {
|
|
this.formGroup = this.editorModel.buildForm(null, true);
|
|
this.visibilityRulesService.setContext(this.descriptionTemplate.definition, this.formGroup.get('properties'));
|
|
}
|
|
|
|
select(): void {
|
|
this.dialogRef.close(true);
|
|
}
|
|
|
|
closeDialog(): void {
|
|
this.dialogRef.close();
|
|
}
|
|
|
|
}
|