# Conflicts:
#	dmp-frontend/src/app/form/dynamic-fields/dynamic-field-checkbox/dynamic-field-checkbox.html
This commit is contained in:
Diamantis Tziotzios 2017-12-06 14:45:35 +02:00
commit e8d9190648
11 changed files with 99 additions and 81 deletions

View File

@ -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<CheckBoxData>{
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<String,Object>)data).get("label");
}
return this;
}

View File

@ -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()+"\"}");

View File

@ -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;
}

View File

@ -61,8 +61,8 @@ export class DynamicFormComponent implements OnInit {
id: string;
datasetId: string;
pathName: string;
stepperItems: MenuItem[];
pages: Set<number>;
stepperItems: MenuItem[] = new Array<MenuItem>();
activeStepperIndex: number = 1;
visibleSidebar: boolean = false;
@ -81,35 +81,11 @@ export class DynamicFormComponent implements OnInit {
ngOnInit() {
this.stepperItems = [{
label: 'Personal',
command: (event: any) => {
this.activeStepperIndex = 0;
}
},
{
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<DatasetModel>().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<Rule>().fromJSONArray(response.rules, Rule);
@ -139,6 +115,25 @@ export class DynamicFormComponent implements OnInit {
toggleSidebar() {
this.visibleSidebar = !this.visibleSidebar;
}
getPages(model: DatasetModel): Set<number> {
let pageSet = new Set<number>();
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);
}

View File

@ -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)
}
}

View File

@ -1,7 +1,10 @@
<!-- All contents in the first page -->
<ul>
<li *ngFor="let field of model.fields let i = index">
<table-of-contents-field [model]="field" [index]="i" [path]="path"> </table-of-contents-field>
<div *ngFor="let field of model.fields let i = index">
<li *ngIf="visibilityRulesService.isElementVisible(null,field.id)">
<table-of-contents-field [model]="field" [index]="i" [path]="path">
</table-of-contents-field>
</li>
</div>
</ul>

View File

@ -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)
}
}

View File

@ -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<number> = new EventEmitter<number>();
*/
constructor(public router: Router, public route: ActivatedRoute) {
constructor(public router: Router, public route: ActivatedRoute,private visibilityRulesService: VisibilityRulesService) {
super(router, route)
}

View File

@ -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() {

View File

@ -11,7 +11,7 @@ export class VisibilityRulesService {
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);