import { PERSON_TYPES_COLDEF } from '@pages/admin/person-types/person-types-list/person-types-list-column-definition';
import { Component, OnInit } from '@angular/core';
import { BaseList } from '@shared/components/base-components/base.list';
import { SetFilterComponent } from '@shared/filters/ag-grid/set-filter/set-filter.component';
import { PersonTypesSandbox } from '@pages/admin/person-types/person-types.sandbox';


@Component({
  selector: 'app-person-types-list',
  templateUrl: './person-types-list.component.html',
  styleUrls: ['./person-types-list.component.scss']
})
export class PersonTypesListComponent extends BaseList implements OnInit {

  public columnDefinition: any = PERSON_TYPES_COLDEF;
  public frameworkComponents: { setFilterComponent: any };

  constructor(public sandbox: PersonTypesSandbox) {
    super();
    this.frameworkComponents = { setFilterComponent: SetFilterComponent };
  }

  ngOnInit() {

    this.gridOptions.context = {
      ...this.gridOptions.context,
      icons: { edit: true, delete: true }
    };

    this.gridOptions.context.eventSubject.subscribe(event => {
      if (event.type === 'edit') {
        this.sandbox.setDisplayForm();
        this.sandbox.loadPersonType(event.data.id);
      }
      if (event.type === 'delete') {
        this.sandbox.deletePersonType(event.data.id);
      }
    });

  }
}

