add-group-grade.component.ts 4.04 KB
Newer Older
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113
import { Component, EventEmitter, Input, Output, OnInit } from '@angular/core';
import { ToastrService } from 'ngx-toastr';

@Component({
  selector: 'app-add-group-grade',
  templateUrl: './add-group-grade.component.html',
  styleUrls: ['./add-group-grade.component.scss']
})
export class AddGroupGradeComponent implements OnInit {
  @Input() statusGroup = 'add' ;
  @Output() sendEdit: EventEmitter<boolean> = new EventEmitter<boolean>();
  activeTab: string = 'details-add';
  isChecked: boolean = false;

  // ข้อมูลที่จะใช้แสดงในตาราง
  @Input() items: any[] = [
    ['1', '', 'CC'],
    ['2', '', 'MC'],
    ['3', '', 'PC']
  ];

  // ฟังก์ชันในการเปลี่ยนแท็บ
  changeTab(tab: { id: string, text: string }) {
    this.activeTab = tab.id;
  }

  onEdit() {
    this.sendEdit.emit(false);
  }

  // ฟังก์ชันในการบันทึกข้อมูลที่แก้ไข
  saveData(event: any, id: any): void {
    const updatedText = event.target.innerText;  // ข้อความที่พิมพ์เข้าไป

    // เก็บข้อมูลใน localStorage
    localStorage.setItem(`item-${id}`, updatedText);

    // ฟังก์ชันอัปเดตข้อมูล (หากต้องการส่งไปยัง API)
    this.updateItem(id, updatedText);
  }

  // ฟังก์ชันในการอัพเดตข้อมูล
  updateItem(id: any, updatedText: string): void {
    // ส่งข้อมูลไปยัง API เพื่อบันทึกข้อมูลในฐานข้อมูล
    // ตัวอย่างเช่น:
    // this.myService.updateItem(id, updatedText).subscribe(response => {
    //   this.showSuccessEdit(); // เรียกฟังก์ชันแจ้งเตือน
    // });
  }

  // เมื่อหน้าเว็บโหลดใหม่ดึงข้อมูลจาก localStorage
  ngOnInit(): void {
    this.items.forEach(item => {
      const savedText = localStorage.getItem(`item-${item[0]}`);
      if (savedText) {
        item[1] = savedText;  // ใช้ข้อมูลที่เก็บไว้
      }
    });
  }

  modalOptions: {
    [nameModal: string]: {
      isModalOpen: boolean;
      modalSize: string;
      backdropClose: boolean;
    };
  } = {
      "add": { isModalOpen: false, modalSize: 'm', backdropClose: true },
      "edit": { 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;
    this.currentModal = name;
    document.body.style.overflow = 'hidden';
  }

  closeModal(name: string) {
    this.modalOptions[name].isModalOpen = false;
    if (!this.isAnyModalOpen()) {
      document.body.style.overflow = '';
    }
  }

  isAnyModalOpen(): boolean {
    return Object.values(this.modalOptions).some(modal => modal.isModalOpen);
  }

  // ฟังก์ชันสำหรับการเพิ่ม ลบ หรือแก้ไข ข้อมูล
  addUser() {

  }


  currentModal = "";

  constructor(private toastr: ToastrService) { }

  // แสดงข้อความแจ้งเตือนเมื่อการบันทึกสำเร็จ
  showSuccessAdd() {
    this.toastr.success('บันทึกข้อมูลสำเร็จ', 'เเจ้งเตือน', { timeOut: 3000, positionClass: 'toast-top-right' });
  }

  showSuccessEdit() {
    this.toastr.success('เเก้ไขข้อมูลสำเร็จ', 'เเจ้งเตือน', { timeOut: 3000, positionClass: 'toast-top-right' });
  }

  showSuccessDelete() {
    this.toastr.success('ลบข้อมูลสำเร็จ', 'เเจ้งเตือน', { timeOut: 3000, positionClass: 'toast-top-right' });
  }
}