// 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. $(function () { // 사이드 바 토글 유지 let isHidden = aside.isHidden(); if (isHidden) { aside.hideAside(); } else { aside.showAside(); } }); // 좌측 메뉴 처리 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(); document.getElementById("btnAsideToggle").addEventListener("click", (e) => aside.toggleAside(e)); // 화면이 작아지면 window.addEventListener("resize", function () { if (window.innerWidth > 768) { aside.showAside(0); } else { aside.hideAside(1); } }); // 메뉴 토글 유지 document.querySelectorAll(".collapse").forEach(e => { const collapseID = e.id; const collapseState = getCookie(collapseID); if (collapseState === "open") { new bootstrap.Collapse(e, { show: true }); } else if (collapseState === "closed") { new bootstrap.Collapse(e, { toggle: false }); } e.addEventListener("show.bs.collapse", () => { setCookie(collapseID, "open", 7); }); e.addEventListener("hide.bs.collapse", () => { setCookie(collapseID, "closed", 7); }); }); // 드롭박스 적용 const dropdownList = [...document.querySelectorAll('.dropdown-toggle')].map(e => new bootstrap.Dropdown(e)); // 목록 버튼상자 class ActionButtons { constructor() { this.form = document.getElementById("fAdminList"); } validate() { let checked = $("input:checkbox.list-check-box:checked"); if (checked.length < 1) { alert("자료를 하나 이상 선택하세요."); return false; } return true; } checkout(e) { const action = (e.target.dataset.action || e.target.closest("a").href); if (!action) { alert("처리 주소를 확인하세요."); return false; } this.form.action = action; this.form.submit(); } Update(e) { if (!this.validate()) { return false; } if (confirm("선택한 자료를 정말 수정 하시겠습니까?")) { this.checkout(e); } } Delete(e) { if (!this.validate()) { return false; } if (confirm("선택한 자료를 정말 삭제 하시겠습니까?")) { this.checkout(e); } } Recover(e) { if (!this.validate()) { return false; } if (confirm("선택한 자료를 정말 복원 하시겠습니까?")) { this.checkout(e); } } checkedAll(e) { let chk = document.getElementsByClassName("list-check-box"); for (let i = 0; i < chk.length; i++) { if (e.target.getAttribute("form") == chk[i].getAttribute("form")) { chk[i].checked = e.target.checked; } } if(e.target.checked) { $("[data-action]").prop("disabled", false); } else { $("[data-action]").prop("disabled", true); } } } const actionButtons = new ActionButtons(); $(document).on("click", "#btnListUpdate", (e) => actionButtons.Update(e)); $(document).on("click", "#btnListDelete", (e) => actionButtons.Delete(e)); $(document).on("click", "#btnListRecover", (e) => actionButtons.Recover(e)); $(document).on("click", ".btn-row-delete", () => confirm("정말 삭제 하시겠습니까?")); // 모든 라디오, 체크박스 선택/해제 $(document).on("click", "#checkedAll", (e) => actionButtons.checkedAll(e));