205 lines
11 KiB
TypeScript
205 lines
11 KiB
TypeScript
import { Component, Inject, OnInit } from "@angular/core";
|
|
import { UntypedFormBuilder, UntypedFormGroup, Validators } from "@angular/forms";
|
|
import { MAT_DIALOG_DATA, MatDialog, MatDialogRef } from "@angular/material/dialog";
|
|
import { DescriptionTemplate } from "@app/core/model/description-template/description-template";
|
|
import { Dmp } from "@app/core/model/dmp/dmp";
|
|
import { DmpBlueprintService } from "@app/core/services/dmp/dmp-blueprint.service";
|
|
import { PrefillingService } from "@app/core/services/prefilling.service";
|
|
import { ProgressIndicationService } from "@app/core/services/progress-indication/progress-indication-service";
|
|
import { BaseComponent } from "@common/base/base.component";
|
|
import { Guid } from "@common/types/guid";
|
|
import { TranslateService } from "@ngx-translate/core";
|
|
import { UUID } from "crypto";
|
|
import { takeUntil } from "rxjs/operators";
|
|
|
|
@Component({
|
|
selector: 'prefill-description-component',
|
|
templateUrl: 'prefill-description.component.html',
|
|
styleUrls: ['prefill-description.component.scss']
|
|
})
|
|
export class PrefillDescriptionDialogComponent extends BaseComponent implements OnInit {
|
|
|
|
progressIndication = false;
|
|
// prefillAutoCompleteConfiguration: SingleAutoCompleteConfiguration;
|
|
prefillSelected: boolean = false;
|
|
prefillForm: UntypedFormGroup;
|
|
|
|
dmp: Dmp;
|
|
dmpSectionId: Guid;
|
|
availableDescriptionTempaltes: DescriptionTemplate[] = [];
|
|
|
|
constructor(public dialogRef: MatDialogRef<PrefillDescriptionDialogComponent>,
|
|
// private prefillingService: PrefillingService,
|
|
// private dmpBlueprintService: DmpBlueprintService,
|
|
// private dialog: MatDialog,
|
|
// private language: TranslateService,
|
|
private progressIndicationService: ProgressIndicationService,
|
|
private fb: UntypedFormBuilder,
|
|
@Inject(MAT_DIALOG_DATA) public data: any) {
|
|
super();
|
|
|
|
this.dmp = data.dmp;
|
|
this.dmpSectionId = data.dmpSectionId;
|
|
this.availableDescriptionTempaltes = this.dmp.dmpDescriptionTemplates.filter(x => x.sectionId == this.dmpSectionId).map(x => x.currentDescriptionTemplate);
|
|
}
|
|
|
|
ngOnInit() {
|
|
this.progressIndicationService.getProgressIndicationObservable().pipe(takeUntil(this._destroyed)).subscribe(x => {
|
|
setTimeout(() => { this.progressIndication = x; });
|
|
});
|
|
this.prefillForm = this.fb.group({
|
|
type: this.fb.control(false),
|
|
descriptionTempalte: this.fb.control('', Validators.required),
|
|
prefill: this.fb.control(null, Validators.required)
|
|
})
|
|
// if (this.data.availableProfiles && this.data.availableProfiles.length === 1) {
|
|
// this.addProfileIfUsedLessThanMax(this.data.availableProfiles[0]);
|
|
// }
|
|
// this.prefillAutoCompleteConfiguration = {
|
|
// filterFn: this.searchDescriptions.bind(this),
|
|
// loadDataOnStart: false,
|
|
// displayFn: (item) => (item['name'].length > 60) ? (item['name'].substr(0, 60) + "...") : item['name'],
|
|
// titleFn: (item) => item['name'],
|
|
// subtitleFn: (item) => item['pid']
|
|
// };
|
|
}
|
|
|
|
// addProfileIfUsedLessThanMax(profile: DescriptionProfileModel) {
|
|
// const dmpSectionIndex = this.data.datasetFormGroup.get('dmpSectionIndex').value;
|
|
// const blueprintId = this.data.datasetFormGroup.get('dmp').value.profile.id;
|
|
// this.dmpBlueprintService.getSingle(blueprintId, this.getBlueprintDefinitionFields())
|
|
// .pipe(takeUntil(this._destroyed))
|
|
// .subscribe(result => {
|
|
// const section = result.definition.sections[dmpSectionIndex];
|
|
// if (section.hasTemplates) {
|
|
// const foundTemplate = section.descriptionTemplates.find(template => template.descriptionTemplateId === Guid.parse(profile.id));
|
|
// if (foundTemplate !== undefined) {
|
|
// let count = 0;
|
|
// if (this.data.datasetFormGroup.get('dmp').value.datasets != null) {
|
|
// for (let dataset of this.data.datasetFormGroup.get('dmp').value.datasets) {
|
|
// if (dataset.dmpSectionIndex === dmpSectionIndex && dataset.profile.id === foundTemplate.descriptionTemplateId) {
|
|
// count++;
|
|
// }
|
|
// }
|
|
// if (count < foundTemplate.maxMultiplicity) {
|
|
// this.prefillForm.get('profile').patchValue(profile);
|
|
// }
|
|
// }
|
|
// }
|
|
// else {
|
|
// this.prefillForm.get('profile').patchValue(profile);
|
|
// }
|
|
// }
|
|
// else {
|
|
// this.prefillForm.get('profile').patchValue(profile);
|
|
// }
|
|
// });
|
|
// }
|
|
|
|
// checkMinMax(event, profile: DescriptionProfileModel) {
|
|
// event.stopPropagation();
|
|
// const dmpSectionIndex = this.data.datasetFormGroup.get('dmpSectionIndex').value;
|
|
// const blueprintId = this.data.datasetFormGroup.get('dmp').value.profile.id;
|
|
// this.dmpBlueprintService.getSingle(blueprintId, this.getBlueprintDefinitionFields())
|
|
// .pipe(takeUntil(this._destroyed))
|
|
// .subscribe(result => {
|
|
// const section = result.definition.sections[dmpSectionIndex];
|
|
// if (section.hasTemplates) {
|
|
// const foundTemplate = section.descriptionTemplates.find(template => template.descriptionTemplateId === Guid.parse(profile.id));
|
|
// if (foundTemplate !== undefined) {
|
|
// let count = 0;
|
|
// if (this.data.datasetFormGroup.get('dmp').value.datasets != null) {
|
|
// for (let dataset of this.data.datasetFormGroup.get('dmp').value.datasets) {
|
|
// if (dataset.dmpSectionIndex === dmpSectionIndex && dataset.profile.id === foundTemplate.descriptionTemplateId) {
|
|
// count++;
|
|
// }
|
|
// }
|
|
// if (count === foundTemplate.maxMultiplicity) {
|
|
// this.dialog.open(PopupNotificationDialogComponent, {
|
|
// data: {
|
|
// title: this.language.instant('DATASET-EDITOR.MAX-DESCRIPTION-DIALOG.TITLE'),
|
|
// message: this.language.instant('DATASET-EDITOR.MAX-DESCRIPTION-DIALOG.MESSAGE')
|
|
// }, maxWidth: '30em'
|
|
// });
|
|
// }
|
|
// else {
|
|
// this.prefillForm.get('profile').setValue(profile);
|
|
// }
|
|
// }
|
|
// }
|
|
// else {
|
|
// this.prefillForm.get('profile').setValue(profile);
|
|
// }
|
|
// }
|
|
// else {
|
|
// this.prefillForm.get('profile').setValue(profile);
|
|
// }
|
|
// });
|
|
// }
|
|
|
|
// private getBlueprintDefinitionFields() {
|
|
// return [
|
|
// [nameof<DmpBlueprint>(x => x.definition), nameof<DmpBlueprintDefinition>(x => x.sections), nameof<DmpBlueprintDefinitionSection>(x => x.id)].join('.'),
|
|
// [nameof<DmpBlueprint>(x => x.definition), nameof<DmpBlueprintDefinition>(x => x.sections), nameof<DmpBlueprintDefinitionSection>(x => x.label)].join('.'),
|
|
// [nameof<DmpBlueprint>(x => x.definition), nameof<DmpBlueprintDefinition>(x => x.sections), nameof<DmpBlueprintDefinitionSection>(x => x.description)].join('.'),
|
|
// [nameof<DmpBlueprint>(x => x.definition), nameof<DmpBlueprintDefinition>(x => x.sections), nameof<DmpBlueprintDefinitionSection>(x => x.ordinal)].join('.'),
|
|
// [nameof<DmpBlueprint>(x => x.definition), nameof<DmpBlueprintDefinition>(x => x.sections), nameof<DmpBlueprintDefinitionSection>(x => x.hasTemplates)].join('.'),
|
|
|
|
// [nameof<DmpBlueprint>(x => x.definition), nameof<DmpBlueprintDefinition>(x => x.sections), nameof<DmpBlueprintDefinitionSection>(x => x.fields), nameof<FieldInSection>(x => x.id)].join('.'),
|
|
// [nameof<DmpBlueprint>(x => x.definition), nameof<DmpBlueprintDefinition>(x => x.sections), nameof<DmpBlueprintDefinitionSection>(x => x.fields), nameof<FieldInSection>(x => x.category)].join('.'),
|
|
// [nameof<DmpBlueprint>(x => x.definition), nameof<DmpBlueprintDefinition>(x => x.sections), nameof<DmpBlueprintDefinitionSection>(x => x.fields), nameof<FieldInSection>(x => x.dataType)].join('.'),
|
|
// [nameof<DmpBlueprint>(x => x.definition), nameof<DmpBlueprintDefinition>(x => x.sections), nameof<DmpBlueprintDefinitionSection>(x => x.fields), nameof<FieldInSection>(x => x.systemFieldType)].join('.'),
|
|
// [nameof<DmpBlueprint>(x => x.definition), nameof<DmpBlueprintDefinition>(x => x.sections), nameof<DmpBlueprintDefinitionSection>(x => x.fields), nameof<FieldInSection>(x => x.label)].join('.'),
|
|
// [nameof<DmpBlueprint>(x => x.definition), nameof<DmpBlueprintDefinition>(x => x.sections), nameof<DmpBlueprintDefinitionSection>(x => x.fields), nameof<FieldInSection>(x => x.placeholder)].join('.'),
|
|
// [nameof<DmpBlueprint>(x => x.definition), nameof<DmpBlueprintDefinition>(x => x.sections), nameof<DmpBlueprintDefinitionSection>(x => x.fields), nameof<FieldInSection>(x => x.description)].join('.'),
|
|
// [nameof<DmpBlueprint>(x => x.definition), nameof<DmpBlueprintDefinition>(x => x.sections), nameof<DmpBlueprintDefinitionSection>(x => x.fields), nameof<FieldInSection>(x => x.required)].join('.'),
|
|
// [nameof<DmpBlueprint>(x => x.definition), nameof<DmpBlueprintDefinition>(x => x.sections), nameof<DmpBlueprintDefinitionSection>(x => x.fields), nameof<FieldInSection>(x => x.ordinal)].join('.'),
|
|
|
|
// [nameof<DmpBlueprint>(x => x.definition), nameof<DmpBlueprintDefinition>(x => x.sections), nameof<DmpBlueprintDefinitionSection>(x => x.descriptionTemplates), nameof<DescriptionTemplatesInSection>(x => x.id)].join('.'),
|
|
// [nameof<DmpBlueprint>(x => x.definition), nameof<DmpBlueprintDefinition>(x => x.sections), nameof<DmpBlueprintDefinitionSection>(x => x.descriptionTemplates), nameof<DescriptionTemplatesInSection>(x => x.descriptionTemplateId)].join('.'),
|
|
// [nameof<DmpBlueprint>(x => x.definition), nameof<DmpBlueprintDefinition>(x => x.sections), nameof<DmpBlueprintDefinitionSection>(x => x.descriptionTemplates), nameof<DescriptionTemplatesInSection>(x => x.label)].join('.'),
|
|
// [nameof<DmpBlueprint>(x => x.definition), nameof<DmpBlueprintDefinition>(x => x.sections), nameof<DmpBlueprintDefinitionSection>(x => x.descriptionTemplates), nameof<DescriptionTemplatesInSection>(x => x.minMultiplicity)].join('.'),
|
|
// [nameof<DmpBlueprint>(x => x.definition), nameof<DmpBlueprintDefinition>(x => x.sections), nameof<DmpBlueprintDefinitionSection>(x => x.descriptionTemplates), nameof<DescriptionTemplatesInSection>(x => x.maxMultiplicity)].join('.'),
|
|
// ]
|
|
// }
|
|
|
|
public compareWith(object1: any, object2: any) {
|
|
return object1 && object2 && object1.id === object2.id;
|
|
}
|
|
|
|
// searchDescriptions(query: string): Observable<Prefilling[]> {
|
|
// return this.prefillingService.getPrefillingList(query).pipe(map(prefilling => prefilling.sort((a, b) => {
|
|
// if (a.name > b.name) {
|
|
// return 1;
|
|
// } else if (a.name < b.name) {
|
|
// return -1;
|
|
// } else {
|
|
// return 0;
|
|
// }
|
|
// })));
|
|
// }
|
|
|
|
next() {
|
|
// if (this.isPrefilled) {
|
|
// if (this.prefillForm.get('prefill').value.data == null) {
|
|
// this.prefillingService.getPrefillingDescription(this.prefillForm.get('prefill').value.pid, this.prefillForm.get('profile').value.id, this.prefillForm.get('prefill').value.key).subscribe(wizard => {
|
|
// wizard.profile = this.prefillForm.get('profile').value;
|
|
// this.closeDialog(wizard);
|
|
// });
|
|
// }
|
|
// else {
|
|
// this.prefillingService.getPrefillingDescriptionUsingData(this.prefillForm.get('prefill').value.data, this.prefillForm.get('profile').value.id, this.prefillForm.get('prefill').value.key).subscribe(wizard => {
|
|
// wizard.profile = this.prefillForm.get('profile').value;
|
|
// this.closeDialog(wizard);
|
|
// });
|
|
// }
|
|
// } else {
|
|
// this.closeDialog();
|
|
// }
|
|
}
|
|
|
|
closeDialog(result = null): void {
|
|
this.dialogRef.close(result);
|
|
}
|
|
}
|