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};
+        });
+      });
+  }
 }