File

assets/angular/shared/form/field-relatedobjectdata.component.ts

Description

Component to display information from related objects within ReDBox

Extends

SimpleComponent

Metadata

selector rb-relatedobjectdata

Index

Properties

Properties

field
field: RelatedObjectDataField
Type : RelatedObjectDataField
import { Input, Component, OnInit, Inject, Injector} from '@angular/core';
import { SimpleComponent } from './field-simple.component';
import { FieldBase } from './field-base';
import { FormGroup, FormControl, Validators } from '@angular/forms';
import * as _ from "lodash-lib";
import { RecordsService } from './records.service';



/**
 * Contributor Model
 *
 *
 * @author <a target='_' href='https://github.com/shilob'>Shilo Banihit</a>
 *
 */
export class RelatedObjectDataField extends FieldBase<any> {

  showHeader: boolean;
  validators: any;
  enabledValidators: boolean;
  relatedObjects: object[];
  hasInit: boolean;
  recordsService: RecordsService;
  columns: object[];

  constructor(options: any, injector: any) {
    super(options, injector);
    this.relatedObjects = [];
    this.columns = options['columns'] || [];

    var relatedObjects = this.relatedObjects;
    this.value = options['value'] || this.setEmptyValue();
    this.recordsService = this.getFromInjector(RecordsService);
    var that = this;
    _.forEach(this.value, (item:any) => {
       this.recordsService.getRecordMeta(item.id).then(function (meta) {
         that.relatedObjects.push(meta);
      });
    });
  }



  createFormModel(valueElem: any = undefined): any {
    if (valueElem) {
      this.value = valueElem;
    }

      this.formModel = new FormControl(this.value || []);

      if (this.value) {
        this.setValue(this.value);
      }

    return this.formModel;
  }

  setValue(value:any) {
    this.formModel.patchValue(value, {emitEvent: false });
    this.formModel.markAsTouched();
  }

  setEmptyValue() {
    this.value = [];
    return this.value;
  }
}

// Setting the template url to a constant rather than directly in the component as the latter breaks document generation
const template = '../angular/shared/form/field-relatedobjectdata.html';
/**
* Component to display information from related objects within ReDBox
*
*
*  
*
*/
@Component({
  selector: 'rb-relatedobjectdata',
  templateUrl: template
})
export class RelatedObjectDataComponent extends SimpleComponent {
  field: RelatedObjectDataField;

}
Legend
Html element
Component
Html element with directive

results matching ""

    No results matching ""