diff --git a/dmp-backend/src/main/java/models/components/commons/datafield/CheckBoxData.java b/dmp-backend/src/main/java/models/components/commons/datafield/CheckBoxData.java index aea083a39..d6719874d 100644 --- a/dmp-backend/src/main/java/models/components/commons/datafield/CheckBoxData.java +++ b/dmp-backend/src/main/java/models/components/commons/datafield/CheckBoxData.java @@ -1,27 +1,42 @@ package models.components.commons.datafield; +import java.util.Map; + import org.w3c.dom.Document; import org.w3c.dom.Element; import utilities.XmlSerializable; public class CheckBoxData extends FieldData{ + private String label; + + + public String getLabel() { + return label; + } + + public void setLabel(String label) { + this.label = label; + } @Override public Element toXml(Document doc) { - // TODO Auto-generated method stub - return doc.createElement("data"); + Element root = doc.createElement("data"); + root.setAttribute("label", this.label); + return root; } @Override public CheckBoxData fromXml(Element item) { - // TODO Auto-generated method stub + this.label = item.getAttribute("label"); return this; } @Override public CheckBoxData fromData(Object data) { - // TODO Auto-generated method stub + if(data!=null){ + this.label= (String)((Map)data).get("label"); + } return this; } diff --git a/dmp-backend/src/main/java/rest/entities/Admin.java b/dmp-backend/src/main/java/rest/entities/Admin.java index dc1349e16..38ea376ba 100644 --- a/dmp-backend/src/main/java/rest/entities/Admin.java +++ b/dmp-backend/src/main/java/rest/entities/Admin.java @@ -76,13 +76,13 @@ public class Admin { datasetProfileViewstyleDao.update(oldviewStyle); - if(!datasetprofile.getDataset().isEmpty())throw new Exception ("Cannot edit a Profile that has Datasets assigned"); + //if(!datasetprofile.getDataset().isEmpty())throw new Exception ("Cannot edit a Profile that has Datasets assigned"); datasetprofile.setViewstyle(oldviewStyle); datasetprofile.setDefinition(modelDefinition.getDefinition()); datasetProfileDao.update(datasetprofile); - return ResponseEntity.status(HttpStatus.OK).body(datasetprofile); + return ResponseEntity.status(HttpStatus.OK).body(null); }catch(Exception ex){ ex.printStackTrace(); return ResponseEntity.status(HttpStatus.BAD_REQUEST).body("{\"reason\":\""+ex.getMessage()+"\"}"); diff --git a/dmp-backend/src/main/java/utilities/builders/ModelBuilder.java b/dmp-backend/src/main/java/utilities/builders/ModelBuilder.java index 09524d9ab..d7b094568 100644 --- a/dmp-backend/src/main/java/utilities/builders/ModelBuilder.java +++ b/dmp-backend/src/main/java/utilities/builders/ModelBuilder.java @@ -5,6 +5,7 @@ import java.util.List; import entities.xmlmodels.modeldefinition.DatabaseModelDefinition; import entities.xmlmodels.viewstyledefinition.DatabaseViewStyleDefinition; +import models.components.commons.datafield.CheckBoxData; import models.components.commons.datafield.ComboBoxData; import models.components.commons.datafield.FieldData; import models.components.commons.datafield.RadioBoxData; @@ -66,7 +67,7 @@ public class ModelBuilder { if(type.equals("combobox")) return (U) new ComboBoxData().fromData(data); if(type.equals("booleanDecision"))return null; if(type.equals("radiobox"))return (U) new RadioBoxData().fromData(data); - if(type.equals("checkBox"))return null; + if(type.equals("checkBox"))return (U) new CheckBoxData().fromData(data); if(type.equals("freetext"))return null; return null; } diff --git a/dmp-frontend/src/app/form/dynamic-form.component.ts b/dmp-frontend/src/app/form/dynamic-form.component.ts index c5e130a81..73954be82 100644 --- a/dmp-frontend/src/app/form/dynamic-form.component.ts +++ b/dmp-frontend/src/app/form/dynamic-form.component.ts @@ -56,23 +56,23 @@ declare var PerfectScrollbar: any; export class DynamicFormComponent implements OnInit { @Input() dataModel: DatasetModel = new DatasetModel(); - @Input() path:string; + @Input() path: string; form: FormGroup; id: string; datasetId: string; pathName: string; - - stepperItems: MenuItem[]; + pages: Set; + stepperItems: MenuItem[] = new Array(); activeStepperIndex: number = 1; visibleSidebar: boolean = false; - private progressbar:boolean = false; + private progressbar: boolean = false; - private fragment:string; + private fragment: string; constructor(private qcs: FieldControlService, private serverService: ServerService, private router: Router, private pdfService: PDFService, private _location: Location, private route: ActivatedRoute, private pagerService: PaginationService, private tokenService: TokenService, private visibilityRulesService: VisibilityRulesService) { - this.datasetId = route.snapshot.params['id']; - } + this.datasetId = route.snapshot.params['id']; + } getSubForm(subformName) { return this.form.controls[subformName]; @@ -81,64 +81,59 @@ export class DynamicFormComponent implements OnInit { ngOnInit() { - this.stepperItems = [{ - label: 'Personal', - command: (event: any) => { - this.activeStepperIndex = 0; + this.serverService.getDmp(this.datasetId).subscribe( + response => { + this.dataModel = new JsonSerializer().fromJSONObject(response, DatasetModel); + this.pages = this.getPages(this.dataModel); + this.createPagination(); + this.form = this.dataModel.buildForm(); + this.visibilityRulesService.formGroup = this.form; + let rules: Rule[] = new JsonSerializer().fromJSONArray(response.rules, Rule); + this.visibilityRulesService.buildVisibilityRules(rules) + this.progressbar = true; + }, + error => { + console.log("Could not load dmp"); } - }, - { - label: 'Seat', - command: (event: any) => { - this.activeStepperIndex = 1; - } - }, - { - label: 'Payment', - command: (event: any) => { - this.activeStepperIndex = 2; - } - }, - { - label: 'Confirmation', - command: (event: any) => { - this.activeStepperIndex = 3; - } - } -]; + ) - this.serverService.getDmp(this.datasetId).subscribe( - response => { - this.dataModel = new JsonSerializer().fromJSONObject(response, DatasetModel); - this.form = this.dataModel.buildForm(); - this.visibilityRulesService.formGroup = this.form; - let rules:Rule[] = new JsonSerializer().fromJSONArray(response.rules,Rule); - this.visibilityRulesService.buildVisibilityRules(rules) - this.progressbar = true; - }, - error => { - console.log("Could not load dmp"); - } - ) - - /* else{ - - this.addSection(); - } - this.dataModel = new JsonSerializer().fromJSONObject(TestModel,DatasetModel); - this.form = this.dataModel.buildForm(); - this.visibilityRulesService.formGroup = this.form; - let rules:Rule[] = new JsonSerializer().fromJSONArray(TestModel.rules,Rule); - this.visibilityRulesService.buildVisibilityRules(rules) */ + /* else{ + + this.addSection(); + } + this.dataModel = new JsonSerializer().fromJSONObject(TestModel,DatasetModel); + this.form = this.dataModel.buildForm(); + this.visibilityRulesService.formGroup = this.form; + let rules:Rule[] = new JsonSerializer().fromJSONArray(TestModel.rules,Rule); + this.visibilityRulesService.buildVisibilityRules(rules) */ } - submit(){ - this.serverService.updateDataset(this.datasetId,this.form.value).subscribe() + submit() { + this.serverService.updateDataset(this.datasetId, this.form.value).subscribe() } toggleSidebar() { this.visibleSidebar = !this.visibleSidebar; } + + getPages(model: DatasetModel): Set { + let pageSet = new Set(); + model.sections.forEach(section => { + pageSet.add(section.page); + }) + return pageSet; + } + + createPagination() { + this.pages.forEach(item => { + this.stepperItems.push({ + label: '', + command: (event: any) => { + this.activeStepperIndex = item; + } + }) + }) + } /* scrollToElemID(elemID) { scroll("#" + elemID); } @@ -212,9 +207,9 @@ export class DynamicFormComponent implements OnInit { } */ - createPDF(elementID : string, pdffilename : string){ - this.pdfService.toPDF(elementID, pdffilename); - } + createPDF(elementID: string, pdffilename: string) { + this.pdfService.toPDF(elementID, pdffilename); + } } \ No newline at end of file diff --git a/dmp-frontend/src/app/form/tableOfContents/table-of-content-field/table-of-content-field.component.ts b/dmp-frontend/src/app/form/tableOfContents/table-of-content-field/table-of-content-field.component.ts index c98811255..34e141ebf 100644 --- a/dmp-frontend/src/app/form/tableOfContents/table-of-content-field/table-of-content-field.component.ts +++ b/dmp-frontend/src/app/form/tableOfContents/table-of-content-field/table-of-content-field.component.ts @@ -1,3 +1,4 @@ +import { VisibilityRulesService } from '../../../visibility-rules/visibility-rules.service'; import { BaseTableOfContent } from '../base-table-of-content.component'; import { CompositeField } from '../../../models/CompositeField'; import { Field } from '../../../models/Field'; @@ -16,7 +17,7 @@ export class TableOfContentsFieldComponent extends BaseTableOfContent{ @Input() index:number; @Input() public path:string; - constructor(public router: Router, public route: ActivatedRoute) { + constructor(public router: Router, public route: ActivatedRoute,private visibilityRulesService: VisibilityRulesService) { super(router, route) } } \ No newline at end of file diff --git a/dmp-frontend/src/app/form/tableOfContents/table-of-content-fieldset/table-of-content-fieldset.component.html b/dmp-frontend/src/app/form/tableOfContents/table-of-content-fieldset/table-of-content-fieldset.component.html index 902d178af..f685911fc 100644 --- a/dmp-frontend/src/app/form/tableOfContents/table-of-content-fieldset/table-of-content-fieldset.component.html +++ b/dmp-frontend/src/app/form/tableOfContents/table-of-content-fieldset/table-of-content-fieldset.component.html @@ -1,7 +1,10 @@
    -
  • - -
  • +
    +
  • + + +
  • +
\ No newline at end of file diff --git a/dmp-frontend/src/app/form/tableOfContents/table-of-content-fieldset/table-of-content-fieldset.component.ts b/dmp-frontend/src/app/form/tableOfContents/table-of-content-fieldset/table-of-content-fieldset.component.ts index f412d411c..c52977995 100644 --- a/dmp-frontend/src/app/form/tableOfContents/table-of-content-fieldset/table-of-content-fieldset.component.ts +++ b/dmp-frontend/src/app/form/tableOfContents/table-of-content-fieldset/table-of-content-fieldset.component.ts @@ -1,3 +1,4 @@ +import { VisibilityRulesService } from '../../../visibility-rules/visibility-rules.service'; import { BaseTableOfContent } from '../base-table-of-content.component'; import { CompositeField } from '../../../models/CompositeField'; import { FieldGroup } from '../../../models/FieldGroup'; @@ -19,7 +20,7 @@ export class TableOfContentsFieldSetComponent extends BaseTableOfContent { @Input() index: number; @Input() public path: string; - constructor(public router: Router, public route: ActivatedRoute) { + constructor(public router: Router, public route: ActivatedRoute,private visibilityRulesService: VisibilityRulesService) { super(router, route) } } diff --git a/dmp-frontend/src/app/form/tableOfContents/table-of-content-group/table-of-content-group.component.ts b/dmp-frontend/src/app/form/tableOfContents/table-of-content-group/table-of-content-group.component.ts index f44e073fb..4431738a1 100644 --- a/dmp-frontend/src/app/form/tableOfContents/table-of-content-group/table-of-content-group.component.ts +++ b/dmp-frontend/src/app/form/tableOfContents/table-of-content-group/table-of-content-group.component.ts @@ -1,3 +1,4 @@ +import { VisibilityRulesService } from '../../../visibility-rules/visibility-rules.service'; import { BaseTableOfContent } from '../base-table-of-content.component'; import { FieldGroup } from '../../../models/FieldGroup'; import { Section } from '../../../models/Section'; @@ -21,7 +22,7 @@ export class TableOfContentsGroupComponent extends BaseTableOfContent { setPage:EventEmitter = new EventEmitter(); */ - constructor(public router: Router, public route: ActivatedRoute) { + constructor(public router: Router, public route: ActivatedRoute,private visibilityRulesService: VisibilityRulesService) { super(router, route) } diff --git a/dmp-frontend/src/app/form/tableOfContents/table-of-content-section/table-of-content-section.component.html b/dmp-frontend/src/app/form/tableOfContents/table-of-content-section/table-of-content-section.component.html index f073dff1e..41da8ffec 100644 --- a/dmp-frontend/src/app/form/tableOfContents/table-of-content-section/table-of-content-section.component.html +++ b/dmp-frontend/src/app/form/tableOfContents/table-of-content-section/table-of-content-section.component.html @@ -8,7 +8,7 @@
    -
  • - -
  • -
\ No newline at end of file +
  • + +
  • + \ No newline at end of file diff --git a/dmp-frontend/src/app/form/tableOfContents/table-of-content-section/table-of-content-section.component.ts b/dmp-frontend/src/app/form/tableOfContents/table-of-content-section/table-of-content-section.component.ts index c4ee2f115..dda835ba0 100644 --- a/dmp-frontend/src/app/form/tableOfContents/table-of-content-section/table-of-content-section.component.ts +++ b/dmp-frontend/src/app/form/tableOfContents/table-of-content-section/table-of-content-section.component.ts @@ -1,3 +1,4 @@ +import { VisibilityRulesService } from '../../../visibility-rules/visibility-rules.service'; import { BaseTableOfContent } from '../base-table-of-content.component'; import { Section } from '../../../models/Section'; import { Component, OnInit, Input, Output, EventEmitter } from '@angular/core'; @@ -17,7 +18,7 @@ export class TableOfContentsSectionComponent extends BaseTableOfContent implemen @Input() index: number; @Input() public path: string; - constructor(public router: Router,public route:ActivatedRoute){ + constructor(public router: Router,public route:ActivatedRoute,private visibilityRulesService: VisibilityRulesService){ super(router,route) } ngOnInit() { diff --git a/dmp-frontend/src/app/visibility-rules/visibility-rules.service.ts b/dmp-frontend/src/app/visibility-rules/visibility-rules.service.ts index ac22b1e47..048e29020 100644 --- a/dmp-frontend/src/app/visibility-rules/visibility-rules.service.ts +++ b/dmp-frontend/src/app/visibility-rules/visibility-rules.service.ts @@ -9,9 +9,9 @@ export class VisibilityRulesService { public formGroup: FormGroup; public visibilityRuleContext: VisibilityRulesContext; public fieldsPathMemory: any = {}; - + public isElementVisible(pathKey: string, id: string) { - if (!this.fieldsPathMemory[id]) this.fieldsPathMemory[id] = pathKey; + if (!this.fieldsPathMemory[id] && pathKey) this.fieldsPathMemory[id] = pathKey; let visibilityRule = this.visibilityRuleContext.getRulesFromKey(id); if (!visibilityRule) return true; return this.checkElementVisibility(visibilityRule); @@ -21,8 +21,8 @@ export class VisibilityRulesService { let sourceVisibilityRules = visibilityRule.sourceVisibilityRules; for (let i = 0; i < sourceVisibilityRules.length; i++) { let sourceVisibilityRule = sourceVisibilityRules[i]; - if (!this.formGroup.get( this.fieldsPathMemory[sourceVisibilityRule.sourceControlId] + '.value'))return false; //TODO - if(sourceVisibilityRule.sourceControlValue != ''+this.formGroup.get( this.fieldsPathMemory[sourceVisibilityRule.sourceControlId] + '.value').value) return false; + if (!this.formGroup.get(this.fieldsPathMemory[sourceVisibilityRule.sourceControlId] + '.value')) return false; //TODO + if (sourceVisibilityRule.sourceControlValue != '' + this.formGroup.get(this.fieldsPathMemory[sourceVisibilityRule.sourceControlId] + '.value').value) return false; } return true; }