dropdown lists connected with sources

This commit is contained in:
annampak 2017-09-22 14:38:53 +03:00
parent 2e3b3cb1ad
commit 9a545bcf24
5 changed files with 38 additions and 21 deletions

View File

@ -19,14 +19,10 @@ export class DataModel {
} }
public buildIndex(){ public buildIndex(){
this.fIndex = new Map<string, FieldBase<any>>(); this.fIndex = new Map<string, FieldBase<any>>();
this.fIndSources = new Map<string, Source>();
this.fields.forEach((field) => { this.fields.forEach((field) => {
console.log("fieldid:" +field.key); console.log("fieldid:" +field.key);
@ -40,24 +36,12 @@ export class DataModel {
}); });
}); });
this.semanticAttr.forEach((attr) => {
attr.sources.forEach(src => {
this.fIndSources.set(attr.id, src);
console.log("fieldid: "+attr.id + "attr:" +src);
});
});
} }
public getFieldByKey(key){ public getFieldByKey(key){
return this.fIndex.get(key); return this.fIndex.get(key);
} }
public getFieldSourceByKey(key){
return this.fIndSources.get(key);
}

View File

@ -2,6 +2,10 @@ import { Injectable } from '@angular/core';
@Injectable() @Injectable()
export class Param { export class Param {
id: string; key: string;
value: string; value: string;
constructor(){
}
} }

View File

@ -1,9 +1,10 @@
import { DataModel } from '../../entities/DataModel'; import { DataModel } from '../../entities/DataModel';
import { Component, Input } from '@angular/core'; import { Component, Input, OnInit } from '@angular/core';
import { FormGroup } from '@angular/forms'; import { FormGroup } from '@angular/forms';
import { FieldBase } from './field-base'; import { FieldBase } from './field-base';
import { GroupBase } from '../../form/dynamic-form-group/group-base'; import { GroupBase } from '../../form/dynamic-form-group/group-base';
import { DropdownField } from '../../form/fields/dropdown/field-dropdown';
@Component({ @Component({
@ -20,7 +21,17 @@ export class DynamicFormFieldComponent {
return true; //return this.form.controls[this.field.key].valid; return true; //return this.form.controls[this.field.key].valid;
} }
public ngOnInit() { //dropdown lists take only one of the available sources
for (var i=0, len = this.dataModel.groups.length; i<len; i++){
let dropdownField:any;
dropdownField = this.dataModel.groups[i].groupFields.find(x=>x.controlType == "dropdown");
if(dropdownField != undefined){
if(dropdownField.attributes.sources != undefined)
dropdownField.options = dropdownField.attributes.sources[0].params;
}
}
}
ruleVisibleMethod(field, rule, dataModel){ //visibility rule -- checks if target field is visible ruleVisibleMethod(field, rule, dataModel){ //visibility rule -- checks if target field is visible
dataModel.fields.forEach(fld => { dataModel.fields.forEach(fld => {

View File

@ -1,4 +1,6 @@
import { Rule } from '../../entities/common/rule'; import { Rule } from '../../entities/common/rule';
import { Attribute } from '../../entities/model/attribute';
export class FieldBase<T>{ export class FieldBase<T>{
value: T; value: T;
key: string; key: string;
@ -10,6 +12,7 @@ export class FieldBase<T>{
controlType:string; controlType:string;
group:string; group:string;
description:string; description:string;
attributes: Attribute;
constructor(options: { constructor(options: {
value?: T, value?: T,
@ -22,6 +25,7 @@ export class FieldBase<T>{
controlType?: string controlType?: string
group?: string group?: string
description?: string, description?: string,
attributes?: Attribute
} = {}) { } = {}) {
this.value = options.value; this.value = options.value;
this.key = options.key || ''; this.key = options.key || '';
@ -33,5 +37,6 @@ export class FieldBase<T>{
this.controlType = options.controlType || ''; this.controlType = options.controlType || '';
this.group = options.group || ''; this.group = options.group || '';
this.description = options.description || ''; this.description = options.description || '';
this.attributes = options.attributes || new Attribute();
} }
} }

View File

@ -8,6 +8,7 @@ import { DataModel } from '../entities/DataModel';
import {Rule} from '../entities/common/rule'; import {Rule} from '../entities/common/rule';
import { GroupBase } from '../form/dynamic-form-group/group-base'; import { GroupBase } from '../form/dynamic-form-group/group-base';
import { Attribute } from '../entities/model/attribute'; import { Attribute } from '../entities/model/attribute';
import { Param } from '../entities/model/param';
@Injectable() @Injectable()
export class dataModelBuilder { export class dataModelBuilder {
@ -213,11 +214,23 @@ export class dataModelBuilder {
newAttribute.multiplicityMin = attr.multiplicity._min; newAttribute.multiplicityMin = attr.multiplicity._min;
newAttribute.ordinal = attr._ordinal; newAttribute.ordinal = attr._ordinal;
newAttribute.sources = new Array(); newAttribute.sources = new Array();
newAttribute.sources.push(attr.sources.source) newAttribute.sources.push(attr.sources.source);
newAttribute.sources.forEach(src => {
src.params=new Array();
for (var i=0, len=attr.sources.source.value.length; i<len; i++){
let prm = new Param();
prm.key= attr.sources.source.value[i]._value;
prm.value= attr.sources.source.value[i]._label;
src.params.push(prm);
}
});
newAttribute.validation = attr.validation; newAttribute.validation = attr.validation;
console.log(newAttribute); console.log(newAttribute);
attribute.push(newAttribute); attribute.push(newAttribute);
fields.find(x => x.key == newAttribute.id).attributes.sources = newAttribute.sources;
}); });