2018-02-02 11:57:24 +01:00
|
|
|
|
import { JsonSerializer } from '../../utilities/JsonSerializer';
|
|
|
|
|
import { DatasetProfileService } from '../../services/dataset-profile.service';
|
|
|
|
|
import { DatasetProfileModelAdmin } from '../../models/datasetProfileAdmin/DatasetProfileModelAdmin';
|
|
|
|
|
import { Page } from '../../models/datasetProfileAdmin/Page';
|
2018-10-19 09:35:35 +02:00
|
|
|
|
import { Component, OnInit, ViewChild, AfterViewInit } from '@angular/core';
|
2018-02-02 11:57:24 +01:00
|
|
|
|
import { FormGroup, FormControl } from '@angular/forms';
|
|
|
|
|
import { FormArray } from '@angular/forms';
|
2018-10-05 17:00:54 +02:00
|
|
|
|
import { Router, ActivatedRoute } from '@angular/router';
|
2018-05-14 08:44:35 +02:00
|
|
|
|
import { DatasetProfileAdmin } from '../../services/datasetProfileAdmin/datasetProfileAfmin.service';
|
|
|
|
|
import { Section } from '../../models/datasetProfileAdmin/Section';
|
2018-10-19 09:35:35 +02:00
|
|
|
|
import { MatDialog, MatHorizontalStepper, MatStepper } from '@angular/material';
|
2018-10-02 16:33:58 +02:00
|
|
|
|
import { DatasetProfilePreviewerComponent } from '../previewer/dataset-profile-previewer.component';
|
2018-10-19 09:35:35 +02:00
|
|
|
|
import { Observable } from 'rxjs';
|
|
|
|
|
import { DatasetWizardModel } from '../../models/datasets/DatasetWizardModel';
|
|
|
|
|
import { DatasetProfileDefinitionModel } from '../../models/DatasetProfileDefinitionModel';
|
2018-02-02 11:57:24 +01:00
|
|
|
|
|
|
|
|
|
@Component({
|
2018-10-16 09:06:43 +02:00
|
|
|
|
selector: 'app-form-component',
|
2018-10-05 17:00:54 +02:00
|
|
|
|
templateUrl: './form.component.html',
|
|
|
|
|
providers: [DatasetProfileAdmin, DatasetProfileService],
|
|
|
|
|
styleUrls: ['./form.component.scss']
|
2018-02-02 11:57:24 +01:00
|
|
|
|
})
|
|
|
|
|
|
2018-10-19 09:35:35 +02:00
|
|
|
|
export class FormComponent implements OnInit, AfterViewInit {
|
|
|
|
|
|
2018-02-02 11:57:24 +01:00
|
|
|
|
|
2018-10-05 17:00:54 +02:00
|
|
|
|
dataModel: DatasetProfileModelAdmin;
|
|
|
|
|
form: FormGroup;
|
2018-10-19 09:35:35 +02:00
|
|
|
|
previewerFormGroup: FormGroup;
|
2018-10-05 17:00:54 +02:00
|
|
|
|
private profileID: string;
|
2018-10-16 13:11:15 +02:00
|
|
|
|
private cloneId: string;
|
2018-10-19 09:35:35 +02:00
|
|
|
|
dataWizardModel: DatasetWizardModel;
|
|
|
|
|
@ViewChild('stepper') stepper: MatHorizontalStepper;
|
2018-10-05 17:00:54 +02:00
|
|
|
|
constructor(
|
|
|
|
|
public datasetprofileAdmin: DatasetProfileAdmin,
|
|
|
|
|
private datasetProfileService: DatasetProfileService,
|
2018-10-19 09:35:35 +02:00
|
|
|
|
private datasetProfileAdminService: DatasetProfileAdmin,
|
2018-10-05 17:00:54 +02:00
|
|
|
|
private route: ActivatedRoute,
|
|
|
|
|
private router: Router,
|
|
|
|
|
public dialog: MatDialog,
|
|
|
|
|
) {
|
|
|
|
|
this.profileID = route.snapshot.params['id'];
|
2018-10-16 13:11:15 +02:00
|
|
|
|
this.cloneId = route.snapshot.params['cloneid'];
|
2018-10-05 17:00:54 +02:00
|
|
|
|
}
|
2018-02-02 11:57:24 +01:00
|
|
|
|
|
2018-10-19 09:35:35 +02:00
|
|
|
|
ngAfterViewInit(): void {
|
|
|
|
|
console.log(this.stepper);
|
|
|
|
|
}
|
|
|
|
|
|
2018-10-05 17:00:54 +02:00
|
|
|
|
ngOnInit() {
|
2018-02-02 11:57:24 +01:00
|
|
|
|
|
2018-10-05 17:00:54 +02:00
|
|
|
|
this.dataModel = JsonSerializer.fromJSONObject(new DatasetProfileModelAdmin(), DatasetProfileModelAdmin);
|
|
|
|
|
if (this.profileID) {
|
|
|
|
|
this.datasetProfileService.getDatasetProfileById(this.profileID).subscribe((data) => {
|
|
|
|
|
this.dataModel = JsonSerializer.fromJSONObject(data, DatasetProfileModelAdmin);
|
|
|
|
|
this.form = this.dataModel.buildForm();
|
2018-10-19 09:35:35 +02:00
|
|
|
|
this.form.valueChanges.subscribe(change => {
|
|
|
|
|
this.datasetProfileAdminService.preview(this.dataModel).subscribe(dataset => {
|
|
|
|
|
const datasetModel = new DatasetWizardModel();
|
|
|
|
|
datasetModel.datasetProfileDefinition = JsonSerializer.fromJSONObject(dataset, DatasetProfileDefinitionModel);
|
|
|
|
|
this.dataWizardModel = datasetModel;
|
|
|
|
|
this.previewerFormGroup = <FormGroup>this.dataWizardModel.buildForm().get('datasetProfileDefinition');
|
|
|
|
|
});
|
|
|
|
|
});
|
|
|
|
|
this.form.updateValueAndValidity();
|
2018-10-05 17:00:54 +02:00
|
|
|
|
});
|
2018-10-16 13:11:15 +02:00
|
|
|
|
} else if (this.cloneId) {
|
|
|
|
|
this.datasetprofileAdmin.clone(this.cloneId).subscribe((data) => {
|
|
|
|
|
this.dataModel = JsonSerializer.fromJSONObject(data, DatasetProfileModelAdmin);
|
|
|
|
|
this.form = this.dataModel.buildForm();
|
2018-10-19 09:35:35 +02:00
|
|
|
|
this.form.valueChanges.subscribe(change => {
|
|
|
|
|
this.datasetProfileAdminService.preview(this.dataModel).subscribe(dataset => {
|
|
|
|
|
const datasetModel = new DatasetWizardModel();
|
|
|
|
|
datasetModel.datasetProfileDefinition = JsonSerializer.fromJSONObject(dataset, DatasetProfileDefinitionModel);
|
|
|
|
|
this.dataWizardModel = datasetModel;
|
|
|
|
|
this.previewerFormGroup = <FormGroup>this.dataWizardModel.buildForm().get('datasetProfileDefinition');
|
|
|
|
|
});
|
|
|
|
|
});
|
|
|
|
|
this.form.updateValueAndValidity();
|
2018-10-16 13:11:15 +02:00
|
|
|
|
});
|
2018-10-05 17:00:54 +02:00
|
|
|
|
} else {
|
|
|
|
|
this.addSection();
|
|
|
|
|
this.addPage();
|
|
|
|
|
}
|
|
|
|
|
}
|
2018-02-02 11:57:24 +01:00
|
|
|
|
|
2018-10-05 17:00:54 +02:00
|
|
|
|
onIsMultiplicityEnabledChange(isMultiplicityEnabled: boolean) {
|
|
|
|
|
if (!isMultiplicityEnabled) {
|
|
|
|
|
(<FormControl>this.form.get('multiplicity').get('min')).setValue(0);
|
|
|
|
|
(<FormControl>this.form.get('multiplicity').get('max')).setValue(0);
|
|
|
|
|
}
|
|
|
|
|
}
|
2018-02-02 11:57:24 +01:00
|
|
|
|
|
2018-10-05 17:00:54 +02:00
|
|
|
|
addSection() {
|
|
|
|
|
const section: Section = new Section();
|
|
|
|
|
this.dataModel.sections.push(section);
|
|
|
|
|
(<FormArray>this.form.get('sections')).push(section.buildForm());
|
|
|
|
|
}
|
2018-02-02 11:57:24 +01:00
|
|
|
|
|
2018-10-05 17:00:54 +02:00
|
|
|
|
addPage() {
|
|
|
|
|
const page: Page = new Page(this.dataModel.pages.length);
|
|
|
|
|
this.dataModel.pages.push(page);
|
|
|
|
|
(<FormArray>this.form.get('pages')).push(page.buildForm());
|
|
|
|
|
}
|
2018-02-02 11:57:24 +01:00
|
|
|
|
|
2018-10-05 17:00:54 +02:00
|
|
|
|
DeleteSection(index) {
|
|
|
|
|
this.dataModel.sections.splice(index, 1);
|
|
|
|
|
(<FormArray>this.form.get('sections')).removeAt(index);
|
|
|
|
|
}
|
2018-02-02 11:57:24 +01:00
|
|
|
|
|
2018-10-05 17:00:54 +02:00
|
|
|
|
DeletePage(index) {
|
|
|
|
|
this.dataModel.pages.splice(index, 1);
|
|
|
|
|
(<FormArray>this.form.get('pages')).removeAt(index);
|
|
|
|
|
}
|
2018-02-02 11:57:24 +01:00
|
|
|
|
|
2018-10-05 17:00:54 +02:00
|
|
|
|
createForm(data) {
|
|
|
|
|
return this.datasetprofileAdmin.createForm(data);
|
|
|
|
|
}
|
|
|
|
|
updateForm(id, data) {
|
|
|
|
|
return this.datasetprofileAdmin.updateForm(id, data);
|
|
|
|
|
}
|
2018-10-16 09:06:43 +02:00
|
|
|
|
|
2018-10-05 17:00:54 +02:00
|
|
|
|
onSubmit() {
|
|
|
|
|
const data = this.form.value;
|
2018-02-02 11:57:24 +01:00
|
|
|
|
|
2018-10-05 17:00:54 +02:00
|
|
|
|
if (this.profileID) {
|
|
|
|
|
this.updateForm(this.profileID, data).subscribe(() => {
|
2018-10-18 11:34:11 +02:00
|
|
|
|
this.router.navigate(['/dataset-profile']);
|
2018-10-05 17:00:54 +02:00
|
|
|
|
});
|
|
|
|
|
} else {
|
|
|
|
|
this.createForm(data).subscribe(() => {
|
2018-10-18 11:34:11 +02:00
|
|
|
|
this.router.navigate(['/dataset-profile']);
|
2018-10-05 17:00:54 +02:00
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
}
|
2018-02-02 11:57:24 +01:00
|
|
|
|
|
2018-10-19 09:35:35 +02:00
|
|
|
|
isStepActive(step: number) {
|
|
|
|
|
return this.stepper && this.stepper.selectedIndex === step;
|
2018-10-05 17:00:54 +02:00
|
|
|
|
}
|
2018-10-02 16:33:58 +02:00
|
|
|
|
}
|