2018-01-03 15:19:38 +01:00
|
|
|
|
import { Section } from '../../models/DataSetProfile/Section';
|
|
|
|
|
import { JsonSerializer } from '../../utilities/JsonSerializer';
|
|
|
|
|
import { DatasetProfileService } from '../../services/dataset-profile.service';
|
|
|
|
|
import { RestBase } from '../../services/rest-base';
|
|
|
|
|
import { DatasetProfileModel } from '../../models/DataSetProfile/DatasetProfileModel';
|
|
|
|
|
import { Page } from '../../models/DataSetProfile/Page';
|
2017-11-27 14:35:00 +01:00
|
|
|
|
import { Component, OnInit } from '@angular/core';
|
2017-12-07 14:57:20 +01:00
|
|
|
|
import { FormGroup, FormControl } from '@angular/forms';
|
2017-11-27 14:35:00 +01:00
|
|
|
|
import { SectionFormComponent } from '../section-form/section-form.component';
|
|
|
|
|
import { FormArray } from '@angular/forms/src/model';
|
2017-11-30 11:10:42 +01:00
|
|
|
|
import { Router, ActivatedRoute, ParamMap, Params } from '@angular/router';
|
2017-12-20 17:46:52 +01:00
|
|
|
|
import { PageFormComponent } from '../page-form/page-component'
|
2017-11-27 14:35:00 +01:00
|
|
|
|
|
|
|
|
|
@Component({
|
|
|
|
|
selector: 'form-comp',
|
|
|
|
|
templateUrl: './form.component.html',
|
|
|
|
|
styleUrls: []
|
|
|
|
|
})
|
|
|
|
|
|
|
|
|
|
export class FormComponent {
|
|
|
|
|
|
2017-11-30 11:10:42 +01:00
|
|
|
|
dataModel: DatasetProfileModel;
|
2017-11-27 14:35:00 +01:00
|
|
|
|
form: FormGroup;
|
2017-11-30 11:10:42 +01:00
|
|
|
|
private profileID: string;
|
2017-11-27 14:35:00 +01:00
|
|
|
|
|
2017-11-30 11:10:42 +01:00
|
|
|
|
constructor(public restBase: RestBase, private datasetProfileService: DatasetProfileService, private route: ActivatedRoute) {
|
|
|
|
|
this.profileID = route.snapshot.params['id'];
|
2017-11-27 14:35:00 +01:00
|
|
|
|
}
|
2017-11-30 11:10:42 +01:00
|
|
|
|
|
|
|
|
|
ngOnInit() {
|
|
|
|
|
|
2018-01-31 16:46:32 +01:00
|
|
|
|
this.dataModel = JsonSerializer.fromJSONObject(new DatasetProfileModel(), DatasetProfileModel);
|
2018-01-19 10:31:05 +01:00
|
|
|
|
this.form = this.dataModel.buildForm();
|
2017-11-30 11:10:42 +01:00
|
|
|
|
if (this.profileID) {
|
|
|
|
|
this.datasetProfileService.getDatasetProfileById(this.profileID).subscribe((data) => {
|
2018-01-31 16:46:32 +01:00
|
|
|
|
this.dataModel = JsonSerializer.fromJSONObject(data, DatasetProfileModel);
|
2017-11-30 11:10:42 +01:00
|
|
|
|
this.form = this.dataModel.buildForm();
|
|
|
|
|
});
|
|
|
|
|
}
|
2018-01-19 10:31:05 +01:00
|
|
|
|
else {
|
|
|
|
|
this.addSection();
|
|
|
|
|
this.addPage(0);
|
2017-11-30 11:10:42 +01:00
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
2017-12-07 14:57:20 +01:00
|
|
|
|
onIsMultiplicityEnabledChange(isMultiplicityEnabled: boolean) {
|
|
|
|
|
if (!isMultiplicityEnabled) {
|
|
|
|
|
(<FormControl>this.form.get('multiplicity').get("min")).setValue(0);
|
|
|
|
|
(<FormControl>this.form.get('multiplicity').get("max")).setValue(0);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
2017-11-30 11:10:42 +01:00
|
|
|
|
addSection() {
|
|
|
|
|
let section: Section = new Section();
|
2017-11-27 14:35:00 +01:00
|
|
|
|
this.dataModel.sections.push(section);
|
|
|
|
|
(<FormArray>this.form.get("sections")).push(section.buildForm());
|
|
|
|
|
}
|
2017-11-29 17:51:28 +01:00
|
|
|
|
|
2017-12-20 17:46:52 +01:00
|
|
|
|
addPage(number) {
|
2018-01-19 10:31:05 +01:00
|
|
|
|
let page: Page = new Page(this.dataModel.pages.length);
|
|
|
|
|
this.dataModel.pages.push(page);
|
|
|
|
|
(<FormArray>this.form.get("pages")).push(page.buildForm());
|
2017-12-20 17:46:52 +01:00
|
|
|
|
}
|
|
|
|
|
|
2017-11-30 11:10:42 +01:00
|
|
|
|
DeleteSection(index) {
|
2018-01-19 10:31:05 +01:00
|
|
|
|
this.dataModel.sections.splice(index, 1);
|
2017-11-29 17:51:28 +01:00
|
|
|
|
(<FormArray>this.form.get("sections")).removeAt(index)
|
|
|
|
|
}
|
|
|
|
|
|
2017-12-20 17:46:52 +01:00
|
|
|
|
DeletePage(index) {
|
2018-01-19 10:31:05 +01:00
|
|
|
|
this.dataModel.pages.splice(index, 1);
|
|
|
|
|
(<FormArray>this.form.get("pages")).removeAt(index)
|
2017-12-20 17:46:52 +01:00
|
|
|
|
}
|
|
|
|
|
|
2017-12-07 14:44:17 +01:00
|
|
|
|
createForm(data) {
|
2017-12-01 15:00:37 +01:00
|
|
|
|
return this.restBase.post("/admin/addDmp", data);
|
2017-11-29 17:51:28 +01:00
|
|
|
|
}
|
2018-01-19 10:31:05 +01:00
|
|
|
|
updateForm(id, data) {
|
|
|
|
|
return this.restBase.post("/admin/addDmp/" + id, data);
|
2017-12-07 14:44:17 +01:00
|
|
|
|
}
|
2017-11-30 11:10:42 +01:00
|
|
|
|
onSubmit() {
|
2017-12-01 15:00:37 +01:00
|
|
|
|
let data = this.form.value;
|
2018-01-19 10:31:05 +01:00
|
|
|
|
|
|
|
|
|
if (this.profileID) this.updateForm(this.profileID, data).subscribe();
|
2017-12-07 14:44:17 +01:00
|
|
|
|
else this.createForm(data).subscribe();
|
2017-11-29 17:51:28 +01:00
|
|
|
|
}
|
2017-11-30 11:10:42 +01:00
|
|
|
|
|
2017-11-27 14:35:00 +01:00
|
|
|
|
}
|