mjon_git/src/main/webapp/js/EgovMainMenu.js
2023-06-12 11:15:02 +09:00

182 lines
4.9 KiB
JavaScript

/*
* 노드 , 트리 구성 정보 선언
*/
var treeNodes = new Array();;
var openTreeNodes = new Array();
var treeIcons = new Array(6);
var imgpath = "/images/egovframework/com/cmm/utl/";
var treeYeobu = false;
var chkValue = "";
var vHtmlCode = "";
/*
* 노드 , 트리 구성 이미지 정보
*/
function preloadIcons() {
treeIcons[0] = new Image();
treeIcons[0].src = imgpath+"menu_plus.gif";
treeIcons[1] = new Image();
treeIcons[1].src = imgpath+"menu_plusbottom.gif";
treeIcons[2] = new Image();
treeIcons[2].src = imgpath+"menu_minus.gif";
treeIcons[3] = new Image();
treeIcons[3].src = imgpath+"menu_minusbottom.gif";
treeIcons[4] = new Image();
treeIcons[4].src = imgpath+"menu_folder.gif";
treeIcons[5] = new Image();
treeIcons[5].src = imgpath+"menu_folderopen.gif";
}
/*
* 트리생성함수
*/
function createTree(arrName, vYeobu, checkValue) {
var startNode, openNode;
treeNodes = arrName;
treeYeobu = vYeobu;
chkValue = checkValue;//"2000000"
startNode = chkValue;
if (treeNodes.length > 0) {
preloadIcons();
if (startNode == null) startNode = 0;
if (openNode != 0 || openNode != null) setOpenTreeNodes(openNode);
if (startNode !=0) {
var _getTreeArrayId = getTreeArrayId(startNode)
var nodeValues = treeNodes[getTreeArrayId(startNode)].split("|");
} else {
}
var recursedNodes = new Array();
addTreeNode(startNode, recursedNodes);
document.write(vHtmlCode);
}
}
/*
* 노드위치 확인
*/
function getTreeArrayId(node) {
for (i=0; i<treeNodes.length; i++) {
var nodeValues = treeNodes[i].split("|");
if (nodeValues[0]==node) return i;
}
return 0;
}
/*
* 트리 노드 열기
*/
function setOpenTreeNodes(openNode) {
for (i=0; i<treeNodes.length; i++) {
var nodeValues = treeNodes[i].split("|");
if (nodeValues[0]==openNode) {
openTreeNodes.push(nodeValues[0]);
setOpenTreeNodes(nodeValues[1]);
}
}
}
/*
* 트리노드 오픈 여부 확인
*/
function isTreeNodeOpen(node) {
if (treeYeobu){ return true; }
for (i=0; i<openTreeNodes.length; i++){
if (openTreeNodes[i]==node){ return true; }
}
return false;
}
/*
* 하위 트리노드 존재여부 확인
*/
function hasChildTreeNode(parentNode) {
for (i=0; i< treeNodes.length; i++) {
var nodeValues = treeNodes[i].split("|");
if (nodeValues[1] == parentNode) return true;
}
return false;
}
/*
* 트리노드 최하위 여부 확인
*/
function lastTreeSibling (node, parentNode) {
var lastChild = 0;
for (i=0; i< treeNodes.length; i++) {
var nodeValues = treeNodes[i].split("|");
if (nodeValues[1] == parentNode)
lastChild = nodeValues[0];
}
if (lastChild==node) return true;
return false;
}
/*
* 신규 트리노드 추가
*/
function addTreeNode(parentNode, recursedNodes) {
for (var i = 0; i < treeNodes.length; i++) {
var nodeValues = treeNodes[i].split("|");
if (nodeValues[1] == parentNode) {
var lastSibling = lastTreeSibling(nodeValues[0], nodeValues[1]);
var hasChildNode = hasChildTreeNode(nodeValues[0]);
var isNodeOpen = isTreeNodeOpen(nodeValues[0]);
vHtmlCodeBg ="<li class='left_li1'>";
vHtmlCodeBgList ="<li class='left_sub_li'>";
vHtmlCodeEmpty = "";
// Write out line | empty treeIcons
for (g=0; g<recursedNodes.length; g++) {
vHtmlCodeEmpty +="<img src='"+imgpath+"menu_empty.gif' border='0' align='absbottom' alt='' >";
}
if (lastSibling) recursedNodes.push(0);
else recursedNodes.push(1);
if (hasChildNode) {
vHtmlCode +="<div class='body_top_head'>"+"<a href='#'>"+nodeValues[2]+"</a>";
} else{
// Start link
if(recursedNodes.length==1){
vHtmlCode +="<div class='body_top_head' style='background:none;'>"+"<a id='body_top_head_"+i+"' href=javascript:fn_MovePage('" + i + "');>"+nodeValues[2]+"</a>";
//vHtmlCode +=vHtmlCodeBg+"<a href=javascript:fn_MovePage('" + i + "');>"+nodeValues[2]+"</a></li>";
}else{
if(sessionStorage.getItem("leftItemNo") == nodeValues[0]){
vHtmlCode +="<li><a id='leftSelLink' href=\"#\" onclick=\"fn_MovePage('" + i + "');\">"+nodeValues[2]+"</a></li>";
}else{
vHtmlCode +="<li><a href=\"#\" onclick=\"fn_MovePage('" + i + "');\">"+nodeValues[2]+"</a></li>";
//vHtmlCode +="<li><a href=\"#\">ddd</a></li>";
}
}
}
if (hasChildNode) {
vHtmlCode +="</div>";
vHtmlCode +="<ul class='left_ul'>";
addTreeNode(nodeValues[0], recursedNodes);
vHtmlCode +="</ul>";
}else{
if(recursedNodes.length==1){
vHtmlCode +="</div>";
}
}
recursedNodes.pop();
}
}
}
if(!Array.prototype.push) {
function fnArrayPush() {
for(var i=0;i<arguments.length;i++)
this[this.length]=arguments[i];
return this.length;
}
Array.prototype.push = fnArrayPush;
}
if(!Array.prototype.pop) {
function fnArrayPop(){
lastElement = this[this.length-1];
this.length = Math.max(this.length-1,0);
return lastElement;
}
Array.prototype.pop = fnArrayPop;
}