Populating select field in forms
Change-Id: I78306706c4ad9560286d27fa1c2879916eb07614
diff --git a/src/app/core/services/helpers/config.helpers.ts b/src/app/core/services/helpers/config.helpers.ts
index b2d966a..93ae064 100644
--- a/src/app/core/services/helpers/config.helpers.ts
+++ b/src/app/core/services/helpers/config.helpers.ts
@@ -172,6 +172,17 @@
public modelFieldToInputCfg(fields: IXosModelDefsField[]): IXosFormInput[] {
return _.map(fields, f => {
+ if (f.relation) {
+ const input = {
+ name: f.name,
+ label: this.toLabel(f.name),
+ type: 'select',
+ validators: f.validators
+ };
+ this.populateSelectField(f, input);
+ return input;
+ }
+
return {
name: f.name,
label: this.toLabel(f.name),
@@ -248,4 +259,14 @@
}
});
}
+
+ // augment a select field with related model informations
+ private populateSelectField(field: IXosModelDefsField, input: IXosFormInput): void {
+ this.ModelStore.query(field.relation.model)
+ .subscribe(res => {
+ input.options = _.map(res, item => {
+ return {id: item.id, label: item.humanReadableName ? item.humanReadableName : item.name};
+ });
+ });
+ }
}