import { Injectable, TemplateRef } from '@angular/core';
import { NzSafeAny } from 'ng-zorro-antd/core/types';
import { EBixiCustomTplType } from '../table.type';

interface IColTemplateRows {
  [key: string]: TemplateRef<NzSafeAny>;
}

@Injectable()
export class ColTemplateService {
  headerRows: Partial<IColTemplateRows> = {};
  bodyRows: Partial<IColTemplateRows> = {};


  add(colName: string, ref: TemplateRef<NzSafeAny>, type: EBixiCustomTplType) {
    switch (type) {
      case EBixiCustomTplType.header:
        this.headerRows[colName] = ref;
        break;
      case EBixiCustomTplType.body:
        this.bodyRows[colName] = ref;
        break;
    }
  }

  getTemplateRef(refName: string, type: EBixiCustomTplType): TemplateRef<NzSafeAny> | undefined {
    switch (type) {
      case EBixiCustomTplType.header:
        return this.headerRows[refName];
      case EBixiCustomTplType.body:
        return this.bodyRows[refName];
    }
  }
}
