diff --git a/dmp-frontend/src/app/entities/DataModel.ts b/dmp-frontend/src/app/entities/DataModel.ts index c2dde07be..ddf67026a 100644 --- a/dmp-frontend/src/app/entities/DataModel.ts +++ b/dmp-frontend/src/app/entities/DataModel.ts @@ -3,17 +3,49 @@ import { FieldBase } from '../form/fields/field-base'; import { Attribute } from './model/attribute'; export class DataModel { - - groups: GroupBase[] = []; - fields: FieldBase[] = []; - semanticAttr: Attribute[]; - - //need to add more class fields to describe the remaining elements of the json object fetched from the service. - //e.g. the current dataset's metadata information, the DataRepository description information, etc - - - constructor(){ - } - - + + private fIndex : Map>; + + groups: GroupBase[] = []; + fields: FieldBase[] = []; + semanticAttr: Attribute[]; + + //need to add more class fields to describe the remaining elements of the json object fetched from the service. + //e.g. the current dataset's metadata information, the DataRepository description information, etc + + constructor(){ + + } + + + + + public buildIndex(){ + + + this.fIndex = new Map>(); + + this.fields.forEach((field) => { + console.log("fieldid:" +field.key); + this.fIndex.set(field.key, field); + }); + + this.groups.forEach((group) => { + group.groupFields.forEach((field) => { + console.log("groupid: "+group.key + "fieldid:" +field.key); + this.fIndex.set(field.key, field); + }); + }); + + } + + public getFieldByKey(key){ + return this.fIndex.get(key); + } + + + + + + } diff --git a/dmp-frontend/src/app/form/fields/dynamic-form-field.component.html b/dmp-frontend/src/app/form/fields/dynamic-form-field.component.html index 3c49ed2e8..d41023252 100644 --- a/dmp-frontend/src/app/form/fields/dynamic-form-field.component.html +++ b/dmp-frontend/src/app/form/fields/dynamic-form-field.component.html @@ -40,6 +40,22 @@ + + + +
+ +
+ + +
+
+
+ + + diff --git a/dmp-frontend/src/app/form/fields/dynamic-form-field.component.ts b/dmp-frontend/src/app/form/fields/dynamic-form-field.component.ts index bd00e5c49..894a6ff9f 100644 --- a/dmp-frontend/src/app/form/fields/dynamic-form-field.component.ts +++ b/dmp-frontend/src/app/form/fields/dynamic-form-field.component.ts @@ -3,6 +3,8 @@ import { Component, Input } from '@angular/core'; import { FormGroup } from '@angular/forms'; import { FieldBase } from './field-base'; +import { GroupBase } from '../../form/dynamic-form-group/group-base'; + @Component({ selector: 'df-field', @@ -43,9 +45,20 @@ export class DynamicFormFieldComponent { return false; } - toggleVisibility(e, field){ - console.log(this.dataModel.groups.find(x => x.order === field.group)); - console.log(this.dataModel); + toggleVisibility(e, field){ + // let group:GroupBase; + // group = this.dataModel.groups.find(x => x.key === field.group); + // group.groupFields.forEach(element => {debugger; + // if (element.order == (field.order + 1)){ + // element.rules.forEach(element => { + // if (element.target == field.id){ + // console.log (element); + // } + + // }); + // } + // }); + // console.log(this.dataModel); } diff --git a/dmp-frontend/src/app/form/fields/radiobox/field-radiobox.css b/dmp-frontend/src/app/form/fields/radiobox/field-radiobox.css new file mode 100644 index 000000000..bf67b66d0 --- /dev/null +++ b/dmp-frontend/src/app/form/fields/radiobox/field-radiobox.css @@ -0,0 +1 @@ +@CHARSET "UTF-8"; \ No newline at end of file diff --git a/dmp-frontend/src/app/form/fields/radiobox/field-radiobox.html b/dmp-frontend/src/app/form/fields/radiobox/field-radiobox.html new file mode 100644 index 000000000..4782d55a7 --- /dev/null +++ b/dmp-frontend/src/app/form/fields/radiobox/field-radiobox.html @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/dmp-frontend/src/app/form/fields/radiobox/field-radiobox.ts b/dmp-frontend/src/app/form/fields/radiobox/field-radiobox.ts new file mode 100644 index 000000000..94be627eb --- /dev/null +++ b/dmp-frontend/src/app/form/fields/radiobox/field-radiobox.ts @@ -0,0 +1,13 @@ +import {FieldBase} from '../field-base'; + +export class RadioBoxField extends FieldBase{ + controlType = 'radiobox'; + type: "radio"; + answers: Array; + + constructor(options: {} = {}){ + super(options); + this.type = options['type'] || []; + this.answers = options['answers'] || [] + } +} \ No newline at end of file diff --git a/dmp-frontend/src/app/services/dataModelBuilder.service.ts b/dmp-frontend/src/app/services/dataModelBuilder.service.ts index f8545fb6f..57bcf4e6f 100644 --- a/dmp-frontend/src/app/services/dataModelBuilder.service.ts +++ b/dmp-frontend/src/app/services/dataModelBuilder.service.ts @@ -3,6 +3,7 @@ import { DropdownField } from '../../app/form/fields/dropdown/field-dropdown'; import { FieldBase } from '../../app/form/fields/field-base'; import { TextboxField } from '../../app/form/fields/textbox/field-textbox'; import { CheckBoxField } from '../../app/form/fields/checkbox/field-checkbox'; +import { RadioBoxField } from '../../app/form/fields/radiobox/field-radiobox'; import { DataModel } from '../entities/DataModel'; import {Rule} from '../entities/common/rule'; import { GroupBase } from '../form/dynamic-form-group/group-base'; @@ -42,19 +43,10 @@ export class dataModelBuilder { value: 'DMP1', required: true, order:element._ordinal, - rules: new Array(), + rules: element.visible.rule != undefined ? element.visible.rule: rule, visible: element._defaultVisibility, group : element._group }); - if (element.visible.rule) - if(element.visible.rule.length){ - element.visible.rule.forEach(rule => { - newfield.rules.push(rule) - }); - } - else { - newfield.rules.push(element.visible.rule) - } fieldsVisible.push(newfield); } @@ -67,7 +59,7 @@ export class dataModelBuilder { value: 'DMP1', required: true, order:element._ordinal, - rule: element.visible.rule, + rules: element.visible.rule != undefined ? element.visible.rule: rule, visible: element._defaultVisibility, group : element._group }); @@ -82,13 +74,38 @@ export class dataModelBuilder { value: true, required: true, order:element._ordinal, - rule: element.visible.rule != undefined ? element.visible.rule: rule, + rules: element.visible.rule != undefined ? element.visible.rule: rule, visible: element._defaultVisibility, group : element._group, type: "checkbox" }); fieldsVisible.push(newfield); - } + } + else if (element.viewStyle._renderstyle == "booleanDesicion"){ + let newfield:RadioBoxField; + let rule = new Array(); + newfield = new RadioBoxField({ + label: element.title.__cdata, + key:element._id, + value: true, + required: true, + order:element._ordinal, + rules: element.visible.rule != undefined ? element.visible.rule: rule, + visible: element._defaultVisibility, + group : element._group, + type: "radio", + answers: [ + { + id: 1, + answer: "Yes" + }, + { + id: 2, + answer: "No" + }] + }); + fieldsVisible.push(newfield); + } }); fieldsVisible.sort((a, b) => a.order - b.order); return fieldsVisible; @@ -98,7 +115,6 @@ export class dataModelBuilder { let groups :GroupBase[] =[]; let newfldGroup = new GroupBase(); newfldGroup.groupFields = new Array(); - if(fieldGroups.length>1) fieldGroups.forEach(fieldGroup =>{ fields.forEach(field => { @@ -108,6 +124,7 @@ export class dataModelBuilder { this.dataModel.fields.push(field); }); newfldGroup.title = fieldGroup.title.__cdata; + newfldGroup.key = fldGroup._id; groups.push(newfldGroup) }); else{ @@ -118,6 +135,7 @@ export class dataModelBuilder { this.dataModel.fields.push(field); }); newfldGroup.title = fldGroup.title.__cdata; + newfldGroup.key = fldGroup._id; groups.push(newfldGroup) } return groups; diff --git a/dmp-frontend/src/app/services/server.service.ts b/dmp-frontend/src/app/services/server.service.ts index b09db9662..8283562d0 100644 --- a/dmp-frontend/src/app/services/server.service.ts +++ b/dmp-frontend/src/app/services/server.service.ts @@ -19,7 +19,7 @@ export class ServerService { xml2jsonOBJ: any; //fetchURL: string = 'http://dl010.madgik.di.uoa.gr:8080/dmp-backend/rest/DMP/a868dbbb-ee37-4ce6-81c8-27048e0599a9'; //fetchURL: string = 'http://dl010.madgik.di.uoa.gr:8080/dmp-backend/rest/DMP/a71a6a92-5c23-40d7-ab87-e30bc860f5a4';//include rules! - fetchURL: string = 'http://dl010.madgik.di.uoa.gr:8080/dmp-backend/rest/DMP/ccae5e6b-61e5-42b2-ac46-b720770c8148';//include sections! + fetchURL: string = 'http://dl010.madgik.di.uoa.gr:8080/dmp-backend/rest/DMP/d619d418-88be-4f2c-9dcc-db7ad4fc60b3';//include sections! //fetchURL: string = 'http://dl010.madgik.di.uoa.gr:8080/dmp-backend/rest/DMP/6c845c42-dc09-42ed-9959-cceb3b616364'; /*