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(){
this.fIndex = new Map<string, FieldBase<any>>();
this.fIndSources = new Map<string, Source>();
this.fields.forEach((field) => {
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){
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()
export class Param {
id: string;
key: string;
value: string;
constructor(){
}
}

View File

@ -1,9 +1,10 @@
import { DataModel } from '../../entities/DataModel';
import { Component, Input } from '@angular/core';
import { Component, Input, OnInit } from '@angular/core';
import { FormGroup } from '@angular/forms';
import { FieldBase } from './field-base';
import { GroupBase } from '../../form/dynamic-form-group/group-base';
import { DropdownField } from '../../form/fields/dropdown/field-dropdown';
@Component({
@ -20,7 +21,17 @@ export class DynamicFormFieldComponent {
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
dataModel.fields.forEach(fld => {

View File

@ -1,4 +1,6 @@
import { Rule } from '../../entities/common/rule';
import { Attribute } from '../../entities/model/attribute';
export class FieldBase<T>{
value: T;
key: string;
@ -10,6 +12,7 @@ export class FieldBase<T>{
controlType:string;
group:string;
description:string;
attributes: Attribute;
constructor(options: {
value?: T,
@ -22,6 +25,7 @@ export class FieldBase<T>{
controlType?: string
group?: string
description?: string,
attributes?: Attribute
} = {}) {
this.value = options.value;
this.key = options.key || '';
@ -33,5 +37,6 @@ export class FieldBase<T>{
this.controlType = options.controlType || '';
this.group = options.group || '';
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 { GroupBase } from '../form/dynamic-form-group/group-base';
import { Attribute } from '../entities/model/attribute';
import { Param } from '../entities/model/param';
@Injectable()
export class dataModelBuilder {
@ -213,11 +214,23 @@ export class dataModelBuilder {
newAttribute.multiplicityMin = attr.multiplicity._min;
newAttribute.ordinal = attr._ordinal;
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;
console.log(newAttribute);
attribute.push(newAttribute);
fields.find(x => x.key == newAttribute.id).attributes.sources = newAttribute.sources;
});