import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core'; import { ToastrService } from 'ngx-toastr'; import { EmpGroupModel, MyEmpGroupModel } from 'src/app/shared/model/emp_group.model'; import { EmpGroupService } from 'src/app/shared/services/emp_group.service'; @Component({ selector: 'app-employee-group-unit', templateUrl: './employee-group-unit.component.html', styleUrls: ['./employee-group-unit.component.scss'] }) export class EmployeeGroupUnit implements OnInit { @Input() pathTitle = ['การจัดการข้อมูลองค์กร', 'ข้อมูลลักษณะงาน', 'กลุ่มพนักงาน'] @Output() sendPathTitle: EventEmitter<string[]> = new EventEmitter<string[]>(); activeTab: string = 'tab1'; // กำหนด tab เริ่มต้น currentPage = 1 page = Array.from({ length: 1 }, (_, i) => i + 1); emp_groupList: EmpGroupModel[] = [] emp_group: EmpGroupModel = new MyEmpGroupModel({}) search = "" constructor(private EmpGroupService: EmpGroupService, private toastr: ToastrService ) { } // ฟังก์ชันในการเปลี่ยนแท็บ changeTab(tab: { id: string, text: string }) { this.sendPathTitle.emit(['การจัดการข้อมูลองค์กร', 'ข้อมูลลักษณะงาน', tab.text]) this.activeTab = tab.id; } ngOnInit(): void { this.getEmpGroupList() } modalOptions: { [nameModal: string]: { // ชื่อตรวจสอบการเปิดปิด isModalOpen: boolean; // เปิด/ปิด modalSize: string; // ขนาดของ Modal (s,m,l,vw10-vw100 ) backdropClose: boolean; // (คลิก Backdrop แล้ว true ปิด false ไม่ปิด ) } } = { "add": { isModalOpen: false, modalSize: 'm', backdropClose: true, }, "edit": { isModalOpen: false, modalSize: 'm', backdropClose: true, }, "upload":{ isModalOpen: false, modalSize: 'm', backdropClose: true, } } openModal(name: string, size: string, closeOnBackdrop?: boolean) { this.modalOptions[name].modalSize = size; this.modalOptions[name].backdropClose = closeOnBackdrop || false; this.modalOptions[name].isModalOpen = true; document.body.style.overflow = 'hidden'; // ล็อก Scroll } closeModal(name: string) { this.modalOptions[name].isModalOpen = false; // ตรวจสอบว่ามี Modal อื่นเปิดอยู่หรือไม่ if (!this.isAnyModalOpen()) { document.body.style.overflow = ''; // คืนค่าการ Scroll เฉพาะเมื่อ Modal ทั้งหมดปิดแล้ว } } isAnyModalOpen(): boolean { // Logic ตรวจสอบว่า Modal อื่นยังเปิดอยู่หรือไม่ return Object.values(this.modalOptions).some(modal => modal.isModalOpen); // หากไม่มี Modal อื่นเปิด } getEmpGroupList() { this.EmpGroupService.getList().subscribe(response => { this.emp_groupList = response this.searchChange() }) } searchChange() { this.currentPage = 1 this.page = Array.from({ length: Math.ceil(this.emp_groupListFilter().length / 10) }, (_, i) => i + 1); } emp_groupListFilter() { return this.emp_groupList.filter(x => x.groupId.toLowerCase().includes(this.search) || x.tdesc.toLowerCase().includes(this.search) || x.edesc.toLowerCase().includes(this.search)) } selectEmp_group(emp_group: EmpGroupModel) { // this.showSuccess() this.emp_group = new MyEmpGroupModel(emp_group) } showSuccess() { this.toastr.success('บันทึกข้อมูลสำเร็จ', 'เเจ้งเตือน', { timeOut: 3000, positionClass: 'toast-top-right', }); } showSuccesssEdit() { this.toastr.success('เเก้ไขข้อมูลสำเร็จ', 'เเจ้งเตือน', { timeOut: 3000, positionClass: 'toast-top-right', }); } showSuccessDelete() { this.toastr.success('ลบข้อมูลสำเร็จ', 'เเจ้งเตือน', { timeOut: 3000, positionClass: 'toast-top-right', }); } addEmp_group() { // this.emp_groupService.post(this.emp_group).subscribe((response:any) => { // if (response.success) { // this.getemp_groupList() // } // }) } deleteEmp_group(emp_group: EmpGroupModel) { // this.emp_groupService.delete(new MyEmpGroupModel(emp_group)).subscribe((response:any) => { // if (response.success) { // this.getemp_groupList() // } // }) } }