// Please see documentation at https://learn.microsoft.com/aspnet/core/client-side/bundling-and-minification
// for details on configuring this project to bundle and minify static web assets.

// Write your JavaScript code.

class Aside {
    constructor() {
        this.body = document.body;
        this.aside = document.getElementById("aside");
        this.btnAsideToggle = document.getElementById("btnAsideToggle");
    }

    // 사이드 바 토글 시
    toggleAside(e) {
        let isHidden = this.isHidden();

        if (isHidden) {
            aside.showAside();
        } else {
            aside.hideAside();
        }
        setCookie("hidden-aside", isHidden ? "visible" : "hidden", 7);
    }

    // 사이드 바 토글 시 아이콘 변경
    toggleAsideIcon (isHidden) {
        let icon = this.btnAsideToggle.querySelector("i");
        if (isHidden) {
            icon.classList.remove("bi-arrow-left");
            icon.classList.add("bi-arrow-right");
        } else {
            icon.classList.remove("bi-arrow-right");
            icon.classList.add("bi-arrow-left");
        }
    };

    // 숨김 여부 확인
    isHidden() {
        let isHidden = getCookie("hidden-aside") ;
        if (isHidden == "") {
            isHidden = this.body.classList.contains("hidden-aside");
        }
        return (isHidden === "hidden");
    }

    // 보이기
    showAside() {
        this.body.classList.remove("hidden-aside");
        this.toggleAsideIcon(0);
        setCookie("hidden-aside", "visible", 7);
    }

    // 숨기기
    hideAside() {
        this.body.classList.add("hidden-aside");
        this.toggleAsideIcon(1);
        setCookie("hidden-aside", "hidden", 7);
    }
}

const aside = new Aside();

$(function () {
    // 사이드 바 토글 유지
    let isHidden = aside.isHidden();

    if (isHidden) {
        aside.hideAside();
    } else {
        aside.showAside();
    }
});

document.getElementById("btnAsideToggle").addEventListener("click", (e) => aside.toggleAside(e));

// 화면이 작아지면
window.addEventListener("resize", function () {
    if (window.innerWidth > 768) {
        aside.showAside(0);
    } else {
        aside.hideAside(1);
    }
});

// 메뉴 토글 유지
const collapseElementList = document.querySelectorAll('.collapse');
collapseElementList.forEach(collapseEl => {
    const collapseID = collapseEl.id;
    const collapseState = getCookie(collapseID);

    if (collapseState === 'open') {
        new bootstrap.Collapse(collapseEl, { show: true });
    } else if (collapseState === 'closed') {
        new bootstrap.Collapse(collapseEl, { toggle: false });
    }
    collapseEl.addEventListener('show.bs.collapse', () => {
        setCookie(collapseID, 'open', 7);
    });

    collapseEl.addEventListener('hide.bs.collapse', () => {
        setCookie(collapseID, 'closed', 7);
    });
});

// 드롭박스 적용
const dropdownElementList = document.querySelectorAll('.dropdown-toggle');
const dropdownList = [...dropdownElementList].map(dropdownToggleEl => new bootstrap.Dropdown(dropdownToggleEl));

// 삭제 처리
$(document).on("click", ".btn-delete-row", function (e) {
    e.preventDefault();
    if (confirm("삭제하시겠습니까?")) {
        location.href = e.target.closest("a").href;
    }
});