{"version":3,"file":"yunzai-dept-tree.mjs","sources":["../../../../packages/bcs/yunzai-dept-tree/yunzai-dept-tree.schema.ts","../../../../packages/bcs/yunzai-dept-tree/yunzai-dept-tree.service.ts","../../../../packages/bcs/yunzai-dept-tree/yunzai-dept-tree.component.ts","../../../../packages/bcs/yunzai-dept-tree/yunzai-dept-tree.module.ts","../../../../packages/bcs/yunzai-dept-tree/yunzai-dept-tree.types.ts","../../../../packages/bcs/yunzai-dept-tree/yunzai-dept-tree.ts"],"sourcesContent":["import { Observable, of } from 'rxjs';\n\nimport { SFSchema, SFSchemaEnumType } from '@yelon/form';\n\nexport function generateSchema(\n  ic: boolean,\n  ich: boolean,\n  gra: boolean,\n  data?: Observable<SFSchemaEnumType[]>\n): SFSchema {\n  let schema: SFSchema = {\n    properties: {\n      search: {\n        title: 'search',\n        type: 'string',\n        ui: {\n          i18n: 'input.search',\n          widget: 'string'\n        }\n      }\n    }\n  };\n  if (ic) {\n    schema.properties = Object.defineProperty(schema.properties, 'includeCLass', {\n      value: {\n        title: 'includeClass',\n        type: 'boolean',\n        enum: [\n          { label: 'true', value: true },\n          { label: 'false', value: false }\n        ],\n        default: true,\n        ui: {\n          i18n: 'radio.class',\n          widget: 'radio'\n        }\n      },\n      configurable: true,\n      enumerable: true,\n      writable: true\n    });\n  }\n  if (ich) {\n    schema.properties = Object.defineProperty(schema.properties, 'includeClassHistory', {\n      value: {\n        title: 'includeClassHistory',\n        type: 'boolean',\n        enum: [\n          { label: 'true', value: true },\n          { label: 'false', value: false }\n        ],\n        default: true,\n        ui: {\n          i18n: 'radio.history',\n          widget: 'radio'\n        }\n      },\n      configurable: true,\n      enumerable: true,\n      writable: true\n    });\n  }\n  if (gra) {\n    schema.properties = Object.defineProperty(schema.properties, 'gradeId', {\n      value: {\n        title: 'gradeId',\n        type: 'string',\n        ui: {\n          i18n: 'grade',\n          widget: 'select',\n          asyncData: () => data || of([])\n        }\n      } as SFSchema,\n      configurable: true,\n      enumerable: true,\n      writable: true\n    });\n  }\n  return schema;\n}\n","import { inject, Injectable } from '@angular/core';\nimport { catchError, map, Observable, throwError } from 'rxjs';\n\nimport { _HttpClient } from '@yelon/theme';\nimport { YunzaiResponse } from '@yelon/util';\n\nimport { YUNZAI_DEPT_TYPES, YunzaiDeptTree } from './yunzai-dept-tree.types';\n\n@Injectable()\nexport class YunzaiDeptTreeService {\n  private readonly http: _HttpClient = inject(_HttpClient);\n\n  /**\n   * @param includeClass include class\n   * @param history include history class\n   */\n  tree(includeClass: boolean, history: boolean): Observable<YunzaiDeptTree[]>;\n\n  /**\n   * @param includeClass include class\n   * @param history include history class\n   * @param types dept types\n   */\n  tree(includeClass: boolean, history: boolean, types?: YUNZAI_DEPT_TYPES[]): Observable<YunzaiDeptTree[]>;\n\n  /**\n   * @param includeClass include class\n   * @param history include history class\n   * @param types dept types\n   * @param gradeId gradeId\n   */\n  tree(includeClass: boolean, history: boolean, types?: YUNZAI_DEPT_TYPES[], gradeId?: string): Observable<YunzaiDeptTree[]>;\n\n  /**\n   * @param includeClass include class\n   * @param history include history class\n   * @param types dept types\n   * @param gradeId gradeId\n   */\n  tree(includeClass: boolean, history: boolean, types?: YUNZAI_DEPT_TYPES[], gradeId?: string): Observable<YunzaiDeptTree[]> {\n    let params = Object.create({});\n    if (includeClass) {\n      params['includeClass'] = true;\n    }\n    if (history) {\n      params['includeHisClass'] = true;\n    }\n    if (types) {\n      params['deptType'] = types.join(',');\n    }\n    if (gradeId) {\n      params['gradeId'] = gradeId;\n    }\n    return this.http.get('/auth/baseDepartMent/tree', params).pipe(\n      map((response: YunzaiResponse<YunzaiDeptTree[]>) => {\n        return response.data;\n      }),\n      catchError(error => {\n        return throwError(error);\n      })\n    );\n  }\n}\n","import { CommonModule } from '@angular/common';\nimport { AfterViewInit, Component, EventEmitter, inject, Input, OnDestroy, OnInit, Output, ViewChild } from '@angular/core';\nimport { catchError, debounceTime, map, of, Subject, switchMap, takeUntil, throwError, zip } from 'rxjs';\n\nimport { YunzaiGrade, YunzaiGradeService } from '@yelon/bcs/yunzai-grade';\nimport { SFComponent, SFValueChange, YelonFormModule } from '@yelon/form';\nimport { NzCardModule } from 'ng-zorro-antd/card';\nimport { NzEmptyModule } from 'ng-zorro-antd/empty';\nimport { NzIconModule } from 'ng-zorro-antd/icon';\nimport { NzSpinModule } from 'ng-zorro-antd/spin';\nimport { NzFormatEmitEvent, NzTreeModule, NzTreeNode } from 'ng-zorro-antd/tree';\n\nimport { generateSchema } from './yunzai-dept-tree.schema';\nimport { YunzaiDeptTreeService } from './yunzai-dept-tree.service';\nimport { YUNZAI_DEPT_TYPES, YunzaiDeptTree, YunzaiDeptTreeProps, YunzaiDeptTreeState } from './yunzai-dept-tree.types';\n\n@Component({\n  selector: `yunzai-dept-tree`,\n  template: `\n    <nz-spin [nzSpinning]=\"state.loading\">\n      @if (isWrapped) {\n        <nz-card>\n          <ng-container [ngTemplateOutlet]=\"content\" />\n        </nz-card>\n      } @else {\n        <ng-container [ngTemplateOutlet]=\"content\" />\n      }\n    </nz-spin>\n\n    <ng-template #content>\n      <ng-container [ngTemplateOutlet]=\"deptForm\" />\n      @if (nodes.length > 0) {\n        <nz-tree\n          (nzClick)=\"activeNode($event)\"\n          [nzExpandedKeys]=\"state.expandKeys\"\n          [nzData]=\"nodes\"\n          [nzShowLine]=\"true\"\n          [nzMultiple]=\"isMultiple\"\n          [nzExpandedIcon]=\"blank\"\n          [nzBlockNode]=\"true\"\n          [nzHideUnMatched]=\"true\"\n          [nzTreeTemplate]=\"treeTemplate\"\n        />\n      } @else {\n        <nz-empty />\n      }\n    </ng-template>\n\n    <ng-template #treeTemplate let-node let-origin=\"origin\">\n      @if (!node.isLeaf) {\n        <span [title]=\"node.title\">\n          <i nz-icon nzTheme=\"twotone\" [nzType]=\"node.isExpanded ? 'minus-square' : 'plus-square'\" (click)=\"open(node)\"></i>\n          <span class=\"leaf-name\">{{ node.title }}</span>\n        </span>\n      } @else {\n        <span [title]=\"node.title\">\n          <span nz-icon nzType=\"file\" nzTheme=\"twotone\"></span>\n          <span class=\"leaf-name\">{{ node.title }}</span>\n        </span>\n      }\n    </ng-template>\n\n    <ng-template #deptForm>\n      <sf #form layout=\"inline\" [button]=\"'none'\" [schema]=\"state.schema\" />\n    </ng-template>\n    <ng-template #blank />\n  `,\n\n  imports: [NzSpinModule, NzCardModule, CommonModule, YelonFormModule, NzIconModule, NzEmptyModule, NzTreeModule],\n  providers: [YunzaiDeptTreeService, YunzaiGradeService]\n})\nexport class YunzaiDeptTreeComponent implements OnInit, OnDestroy, AfterViewInit {\n  @ViewChild('form') sf!: SFComponent;\n  @Input() props?: YunzaiDeptTreeProps;\n\n  @Output() readonly onQueryComplete: EventEmitter<YunzaiDeptTree[]> = new EventEmitter<YunzaiDeptTree[]>();\n\n  @Output() readonly onSelect: EventEmitter<YunzaiDeptTree[]> = new EventEmitter<YunzaiDeptTree[]>();\n  private readonly deptTreeService: YunzaiDeptTreeService = inject(YunzaiDeptTreeService);\n  private readonly gradeService: YunzaiGradeService = inject(YunzaiGradeService);\n  private $destroy = new Subject();\n\n  state: YunzaiDeptTreeState = {\n    loading: false,\n    schema: { properties: {} },\n    data: [],\n    dataBackup: [],\n    expandKeys: []\n  };\n\n  get data(): YunzaiDeptTree[] {\n    if (this.props && this.props.data) {\n      return this.props.data;\n    }\n    return this.state.data;\n  }\n\n  set data(depts: YunzaiDeptTree[]) {\n    if (this.props && this.props.data) {\n      this.props.data = depts;\n    } else {\n      this.state.data = depts;\n    }\n  }\n\n  get nodes(): NzTreeNode[] {\n    return this.data as any[];\n  }\n\n  get isMultiple(): boolean {\n    if (this.props) {\n      return !!this.props.multiple;\n    }\n    return false;\n  }\n\n  get includeClass(): boolean {\n    if (this.props) {\n      return !!this.props.class;\n    }\n    return false;\n  }\n\n  get includeClassHistory(): boolean {\n    if (this.props) {\n      return !!this.props.historyClass;\n    }\n    return false;\n  }\n\n  get includeGrade(): boolean {\n    if (this.props) {\n      return !!this.props.grade;\n    }\n    return false;\n  }\n\n  get deptTypes(): YUNZAI_DEPT_TYPES[] {\n    if (this.props) {\n      return this.props.types || [];\n    }\n    return [];\n  }\n\n  get isWrapped(): boolean {\n    if (this.props) {\n      return !!this.props.wrap;\n    }\n    return false;\n  }\n\n  get isExpanded(): boolean {\n    if (this.props) {\n      return !!this.props.expand;\n    }\n    return false;\n  }\n\n  get gradeId(): string | undefined {\n    return this.props?.gradeId;\n  }\n\n  ngOnInit(): void {\n    if (!this.props?.data) {\n      this.query();\n    } else {\n      this.state.dataBackup = this.data;\n      this.mapDeptTree(this.data as any);\n    }\n  }\n\n  ngAfterViewInit(): void {\n    this.hookFormChange();\n    this.setupSchema();\n  }\n\n  setupSchema(): void {\n    const grades = this.gradeService.grades().pipe(\n      takeUntil(this.$destroy),\n      map((grades: YunzaiGrade[]) => {\n        return grades.map(grade => {\n          return { label: grade.name, value: grade.openId };\n        });\n      })\n    );\n    this.sf.refreshSchema(generateSchema(this.includeClass, this.includeClassHistory, this.includeGrade, grades));\n  }\n\n  hookFormChange(): void {\n    this.sf.formValueChange\n      .pipe(\n        debounceTime(1000),\n        map(value => {\n          this.load();\n          return value;\n        }),\n        switchMap((valueChange: SFValueChange) => {\n          const {\n            value: { search, includeClass, includeClassHistory, gradeId }\n          } = valueChange;\n          if (this.props && this.props.data) {\n            return zip(of(search), of(this.state.dataBackup));\n          }\n          return zip(of(search), this.deptTreeService.tree(!!includeClass, !!includeClassHistory, this.deptTypes, gradeId));\n        }),\n        map(([search, depts]) => {\n          this.state.expandKeys = [];\n          if (search && search.trim() !== '') {\n            depts = this.recursionSearch(search, depts);\n            this.onQueryComplete.emit(depts);\n          }\n          this.mapDeptTree(depts as any);\n          this.data = depts;\n        }),\n        catchError(error => {\n          this.unload();\n          return throwError(error);\n        })\n      )\n      .subscribe(() => {\n        this.unload();\n      });\n  }\n\n  mapDeptTree(tree: NzTreeNode[]): void {\n    if (tree && tree.length && tree.length > 0) {\n      tree.forEach(item => {\n        if (this.isExpanded && !this.state.expandKeys.includes(item.key)) {\n          this.state.expandKeys.push(item.key);\n        }\n        item.isExpanded = this.isExpanded;\n        item.isLeaf = item.children === null || item.children.length === 0;\n        this.mapDeptTree(item.children);\n      });\n    }\n  }\n\n  recursionSearch(search: string, depts: YunzaiDeptTree[]): YunzaiDeptTree[] {\n    const results: YunzaiDeptTree[] = [];\n    const searchInDept = (dept: YunzaiDeptTree): void => {\n      if (dept.title.includes(search)) {\n        results.push(dept);\n      }\n      if (dept.children && dept.children.length > 0) {\n        for (const child of dept.children) {\n          searchInDept(child);\n        }\n      }\n    };\n    for (const dept of depts) {\n      searchInDept(dept);\n    }\n    return results;\n  }\n\n  activeNode(data: NzFormatEmitEvent): void {\n    if (data.node) {\n      this.onSelect.emit([data.node.origin as YunzaiDeptTree]);\n    } else if (data.nodes) {\n      const depts: YunzaiDeptTree[] = data.nodes.map(n => n.origin as YunzaiDeptTree);\n      this.onSelect.emit(depts);\n    }\n  }\n\n  query(): void {\n    this.load();\n    this.deptTreeService\n      .tree(this.includeClass, this.includeClassHistory, this.deptTypes, this.gradeId)\n      .pipe(\n        takeUntil(this.$destroy),\n        map((depts: YunzaiDeptTree[]) => {\n          this.state.expandKeys = [];\n          this.onQueryComplete.emit(depts);\n          this.mapDeptTree(depts as any);\n          this.data = depts;\n        }),\n        catchError(error => {\n          this.unload();\n          return throwError(error);\n        })\n      )\n      .subscribe(() => {\n        this.unload();\n      });\n  }\n\n  load(): void {\n    this.state.loading = true;\n  }\n\n  unload(): void {\n    this.state.loading = false;\n  }\n\n  open(data: NzTreeNode | NzFormatEmitEvent): void {\n    if (data instanceof NzTreeNode) {\n      data.isExpanded = !data.isExpanded;\n    } else {\n      const node = data.node;\n      if (node) {\n        node.isExpanded = !node.isExpanded;\n      }\n    }\n  }\n\n  ngOnDestroy(): void {\n    this.$destroy.complete();\n  }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { YunzaiGradeService } from '@yelon/bcs/yunzai-grade';\nimport { YelonFormModule } from '@yelon/form';\nimport { NzCardModule } from 'ng-zorro-antd/card';\nimport { NzEmptyModule } from 'ng-zorro-antd/empty';\nimport { NzIconModule } from 'ng-zorro-antd/icon';\nimport { NzSpinModule } from 'ng-zorro-antd/spin';\nimport { NzTreeModule } from 'ng-zorro-antd/tree';\n\nimport { YunzaiDeptTreeComponent } from './yunzai-dept-tree.component';\nimport { YunzaiDeptTreeService } from './yunzai-dept-tree.service';\n\nconst COMPONENTS = [YunzaiDeptTreeComponent];\n@NgModule({\n  imports: [\n    NzSpinModule,\n    NzCardModule,\n    CommonModule,\n    YelonFormModule,\n    NzIconModule,\n    NzEmptyModule,\n    NzTreeModule,\n    ...COMPONENTS\n  ],\n  providers: [YunzaiDeptTreeService, YunzaiGradeService],\n  exports: COMPONENTS\n})\nexport class YunzaiDeptTreeModule {}\n","import { SFSchema } from '@yelon/form';\n\nexport interface YunzaiDeptTree {\n  children: YunzaiDeptTree[];\n  icon: string;\n  key: string;\n  title: string;\n  value: string;\n}\n\nexport interface YunzaiDeptTreeProps {\n  multiple?: boolean;\n  // has nzcard\n  wrap?: boolean;\n  // expand\n  expand?: boolean;\n  // deptTypes = []\n  types?: YUNZAI_DEPT_TYPES[];\n  // grade\n  grade?: boolean;\n  gradeId?: string;\n  // includeClass\n  class?: boolean;\n  // includeHistoryClass\n  historyClass?: boolean;\n  data?: YunzaiDeptTree[];\n}\n\nexport interface YunzaiDeptTreeState {\n  loading: boolean;\n  schema: SFSchema;\n  data: YunzaiDeptTree[];\n  dataBackup: YunzaiDeptTree[];\n  expandKeys: string[];\n}\n\nexport enum YUNZAI_DEPT_TYPES {\n  DEPT = 2,\n  CLASS = 'class'\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}