<template>
  <div class="pagetitle">
    <h2>부서관리</h2>
  </div>
  <!-- End Page Title -->
  <section class="section">
    <div class="row">


      <div class="col-lg-12">
        <div class="card">
          <div class="card-body">
            <h5 class="card-title">부서관리</h5>
            <div class="d-flex pb-3 justify-content-end ">

              <div class="d-flex justify-content-end ">
                <button @click="onClickSubmit">api 요청하기</button>
                <button type="button" class="btn btn-outline-primary" @click="registerLeave">
                  등록
                </button>
                <button type="button" class="btn btn-outline-success" @click="saveChanges">
                  저장
                </button>
                <button type="button" class="btn btn-outline-secondary" @click="deletePending">
                  삭제
                </button>
              </div>

            </div>
            <!-- Table  -->
            <table id="myTable" class="table datatable table-hover">
              <!-- 동적으로 <th> 생성 -->
              <thead>
                <tr>
                  <th>No </th>
                  <th>부서명</th>
                  <th>인원</th>
                </tr>
              </thead>
              <!-- 동적으로 <td> 생성 -->
              <tbody>
                <tr v-for="(item, index) in DeptData">
                  <td>
                    <div class="form-check">
                      <label class="form-check-label" for="acceptTerms">{{ index + 1 }}</label>
                      <input v-model="item.acceptTerms" class="form-check-input" type="checkbox" />
                    </div>
                  </td>
                  <td><input type="text" v-model="item.deptNM" /></td>
                  <td><input type="text" v-model="item.member" /></td>

                </tr>
              </tbody>
            </table>

            <!-- End Table -->
          </div>
        </div>
      </div>
    </div>
  </section>
</template>

<script>
import { ref } from 'vue';

export default {
  data() {
    return {
      // 데이터 초기화
      years: [2023, 2024, 2025], // 연도 목록
      months: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12], // 월 목록
      selectedYear: '',
      selectedMonth: '',
      DeptData: [
        { member: '', deptNM: '', acceptTerms: false },
        // 더 많은 데이터 추가...
      ],
      filteredData: [],
    };
  },
  computed: {
  },
  methods: {
    async onClickSubmit() {
      // `useMutation` 훅을 사용하여 mutation 함수 가져오기
      const { mutate, onDone, onError } = useMutation(mygql);

      try {
        const result = await mutate();
        console.log(result);
      } catch (error) {
        console.error('Mutation error:', error);
      }
    },
    registerLeave() {
      console.log("등록 버튼 클릭됨");

      // Vue의 반응성 문제를 피하기 위해, 새로운 객체를 추가합니다.
      this.DeptData = [
        ...this.DeptData,
        { member: '', deptNM: '', acceptTerms: false }
      ];

      console.log(this.DeptData); // 배열 상태 출력
    },
    saveChanges() {
      // 로컬스토리지에 DeptData 저장
      localStorage.setItem('DeptData', JSON.stringify(this.DeptData));
      console.log('데이터가 로컬스토리지에 저장되었습니다.');
    },
    deletePending() {
      // 선택된 항목만 필터링하여 삭제
      const selectedItems = this.DeptData.filter(item => item.acceptTerms);

      // 승인된 항목이 없으면 삭제 진행
      if (selectedItems.length > 0) {
        this.DeptData = this.DeptData.filter(item => !item.acceptTerms);
        alert(`${selectedItems.length}개의 항목이 삭제되었습니다.`);
      } else {
        alert("선택된 항목이 없습니다.");
      }
    },
    // 날짜 필터 적용
    filterData() {
      this.filteredData = this.DeptData.filter(item => {
        const itemYear = new Date(item.startDate).getFullYear();
        const itemMonth = new Date(item.startDate).getMonth() + 1; // 월은 0부터 시작하므로 1을 더해줍니다.

        return (
          (!this.selectedYear || itemYear === parseInt(this.selectedYear)) &&
          (!this.selectedMonth || itemMonth === parseInt(this.selectedMonth))
        );
      });
    },

    // 페이지 변경
    changePage(page) {
      this.currentPage = page;
    },
  },
  created() {
    // 로컬스토리지에서 기존 데이터가 있으면 불러오기
    const storedData = localStorage.getItem('DeptData');
    console.log(storedData);
    if (storedData) {
      this.DeptData = JSON.parse(storedData);
    }
  },
  mounted() {

    // 처음에는 모든 데이터를 표시
    this.filteredData = this.DeptData;

  },
};
</script>

<style scoped></style>
