refactor : 메뉴렌더링 자바스크립트 함수 별도 파일로 생성
parent
6601c0dc02
commit
9fe48cc8e9
@ -0,0 +1,155 @@
|
|||||||
|
/* ====================
|
||||||
|
* 2023.03.22 이범준
|
||||||
|
* 동적 메뉴 렌더링 함수
|
||||||
|
====================*/
|
||||||
|
function MenuRender() {
|
||||||
|
let _self = this;
|
||||||
|
_self.template = null;
|
||||||
|
|
||||||
|
_self.rootUlAttrDraw = null;
|
||||||
|
_self.ulAttrDraw = null;
|
||||||
|
_self.liAttrDraw = null;
|
||||||
|
_self.liContentDraw = null;
|
||||||
|
|
||||||
|
//메뉴 렌더링 설정 초기화
|
||||||
|
this.init = function(){
|
||||||
|
|
||||||
|
switch(_self.template){
|
||||||
|
case "sneat" :
|
||||||
|
_self.rootUlAttrDraw = function(element){
|
||||||
|
element.className = "menu-inner";
|
||||||
|
};
|
||||||
|
_self.ulAttrDraw = function(element, menuObj){
|
||||||
|
element.className = "menu-sub";
|
||||||
|
};
|
||||||
|
_self.liAttrDraw = function(element, menuObj){
|
||||||
|
element.className = "menu-item";
|
||||||
|
};
|
||||||
|
_self.liContentDraw = function(element, menuObj){
|
||||||
|
|
||||||
|
let a = document.createElement("a");
|
||||||
|
a.href = "javascript:void(0)";
|
||||||
|
a.classList.add("menu-link");
|
||||||
|
if(menuObj.childCnt > 0){ //하위메뉴가 있으면
|
||||||
|
a.classList.add("menu-toggle");
|
||||||
|
} else {
|
||||||
|
a.setAttribute("onclick", "openMenu('"+menuObj.menuSid+"', '"+menuObj.menuName+"', '"+menuObj.menuUrl+"')");
|
||||||
|
}
|
||||||
|
|
||||||
|
// 아이콘
|
||||||
|
let i = document.createElement("i");
|
||||||
|
i.classList.add("menu-icon");
|
||||||
|
i.classList.add("bx");
|
||||||
|
if(menuObj.iconClass != null && menuObj.iconClass != ""){
|
||||||
|
i.classList.add(menuObj.iconClass);
|
||||||
|
} else {
|
||||||
|
menuObj.childCnt > 0 ? i.classList.add("bx-folder-plus") : i.classList.add("bx-file");
|
||||||
|
}
|
||||||
|
|
||||||
|
a.appendChild(i);
|
||||||
|
|
||||||
|
let div = document.createElement("div");
|
||||||
|
let text = document.createTextNode(menuObj.menuName);
|
||||||
|
div.appendChild(text);
|
||||||
|
a.appendChild(div);
|
||||||
|
element.appendChild(a);
|
||||||
|
};
|
||||||
|
break;
|
||||||
|
default :
|
||||||
|
_self.rootUlAttrDraw = function(element){};
|
||||||
|
_self.ulAttrDraw = function(element, menuObj){};
|
||||||
|
_self.liAttrDraw = function(element, menuObj){};
|
||||||
|
_self.liContentDraw = function(element, menuObj){};
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
//메뉴 렌더링
|
||||||
|
this.menuDraw = function(allMenuList){
|
||||||
|
let rootUl = document.getElementById("sneatMenuUl");
|
||||||
|
_self.rootUlAttrDraw(rootUl);
|
||||||
|
|
||||||
|
for(let status1 = 0; status1 < allMenuList.length; status1++){
|
||||||
|
let dep1 = allMenuList[status1];
|
||||||
|
if(dep1.menuDepth == 1){
|
||||||
|
let li = document.createElement("li");
|
||||||
|
_self.liAttrDraw(li,dep1);
|
||||||
|
_self.liContentDraw(li,dep1);
|
||||||
|
|
||||||
|
if(Number(dep1.childCnt) > 0){
|
||||||
|
let ul = document.createElement("ul");
|
||||||
|
_self.ulAttrDraw(ul,dep1);
|
||||||
|
li.appendChild(ul);
|
||||||
|
|
||||||
|
for(let status2 = 0; status2 < allMenuList.length; status2++){
|
||||||
|
let dep2 = allMenuList[status2];
|
||||||
|
if(dep2.menuDepth == 2 && dep1.menuSid == dep2.parentSid) {
|
||||||
|
let li = document.createElement("li");
|
||||||
|
_self.liAttrDraw(li,dep2);
|
||||||
|
_self.liContentDraw(li,dep2);
|
||||||
|
|
||||||
|
if(Number(dep2.childCnt) > 0){
|
||||||
|
let ul = document.createElement("ul");
|
||||||
|
_self.ulAttrDraw(ul,dep2);
|
||||||
|
li.appendChild(ul);
|
||||||
|
|
||||||
|
for(let status3 = 0; status3 < allMenuList.length; status3++){
|
||||||
|
let dep3 = allMenuList[status3];
|
||||||
|
if(dep3.menuDepth == 3 && dep2.menuSid == dep3.parentSid) {
|
||||||
|
let li = document.createElement("li");
|
||||||
|
_self.liAttrDraw(li,dep3);
|
||||||
|
_self.liContentDraw(li,dep3);
|
||||||
|
|
||||||
|
if(Number(dep3.childCnt) > 0){
|
||||||
|
let ul = document.createElement("ul");
|
||||||
|
_self.ulAttrDraw(ul,dep3);
|
||||||
|
li.appendChild(ul);
|
||||||
|
|
||||||
|
for(let status4 = 0; status4 < allMenuList.length; status4++) {
|
||||||
|
let dep4 = allMenuList[status4];
|
||||||
|
if(dep4.menuDepth == 4 && dep3.menuSid == dep4.parentSid){
|
||||||
|
let li = document.createElement("li");
|
||||||
|
_self.liAttrDraw(li,dep4);
|
||||||
|
_self.liContentDraw(li,dep4);
|
||||||
|
|
||||||
|
ul.appendChild(li);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
ul.appendChild(li);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
ul.appendChild(li);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
rootUl.append(li);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if(_self.template == "sneat"){
|
||||||
|
|
||||||
|
const menu1 = document.querySelector("#sneatMenu");
|
||||||
|
menu1.classList.add("menu");
|
||||||
|
menu1.classList.add("menu-vertical");
|
||||||
|
menu1.classList.add("bg-menu-theme");
|
||||||
|
menu1.classList.add("overflow-hidden");
|
||||||
|
|
||||||
|
if (menu1) {
|
||||||
|
new Menu(menu1 , { closeChildren : false, accordion : false });
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
//스크롤바 추가
|
||||||
|
new PerfectScrollbar(document.querySelector('.menu-inner'), {
|
||||||
|
wheelPropagation: false
|
||||||
|
});
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue