285 lines
6.5 KiB
JavaScript
285 lines
6.5 KiB
JavaScript
//菜单的节点
|
||
function Node(object,fulldata)
|
||
{
|
||
this.object=object;
|
||
this.fulldata=fulldata;
|
||
if(object!=null)
|
||
{
|
||
this.evaluate1();
|
||
this.evaluate2();
|
||
}else
|
||
{
|
||
this.Name="院系管理";
|
||
this.Id=0;
|
||
this.evaluate2();
|
||
}
|
||
}
|
||
//取菜单项的名称,如果为空,则为null
|
||
Node.prototype.Name="null";
|
||
//节点的id
|
||
Node.prototype.Id=0;
|
||
//菜单的类型,item为菜单项,link为超链接,line为分隔符
|
||
Node.prototype.Type="item";
|
||
//导航地址
|
||
Node.prototype.Link="#";
|
||
//颜色
|
||
Node.prototype.Color="#000000";
|
||
//字体
|
||
Node.prototype.Font ="宋体";
|
||
//是否粗体
|
||
Node.prototype.IsBold=false;
|
||
//是否斜体
|
||
Node.prototype.IsItalic=false;
|
||
//节点的状态,如果为true则,在页面显示时为展开状态
|
||
Node.prototype.State=true;
|
||
//菜单项的父节点id
|
||
Node.prototype.PatId=0;
|
||
//菜单树的id
|
||
Node.prototype.Root=0;
|
||
//排序号
|
||
Node.prototype.Tax=0;
|
||
//菜单项是否启用,默认为true
|
||
Node.prototype.IsUse=true;
|
||
//该菜单是否显示,默认为true
|
||
Node.prototype.IsShow=true;
|
||
//该菜单是为根节点
|
||
Node.prototype.IsRoot=true;
|
||
//小图标
|
||
Node.prototype.IcoS="";
|
||
//大图标
|
||
Node.prototype.IcoB="";
|
||
//菜单项的介绍或说明
|
||
Node.prototype.Intro="";
|
||
//
|
||
//该节点的子节点
|
||
Node.prototype.Childs=null;
|
||
//该节点的兄弟节点
|
||
Node.prototype.Siblings=null;
|
||
//该节点,是否有子级
|
||
Node.prototype.IsChilds=false;
|
||
//该节点,是否是第一个节点
|
||
Node.prototype.IsFirst=false;
|
||
//当前节点的上一个
|
||
Node.prototype.Pre=null;
|
||
//该节点,是否是最后一个节点
|
||
Node.prototype.IsLast=false;
|
||
//当前节点的下一个;
|
||
Node.prototype.Next=null;
|
||
//当前节点的上一级
|
||
Node.prototype.Parent=null;
|
||
//节点相对于根节点的路,路径名为中文,分隔符为逗号
|
||
Node.prototype.Path="";
|
||
//给各个属性赋值
|
||
Node.prototype.evaluate1=function()
|
||
{
|
||
//属性参数
|
||
this.Name=this.getValue("MM_Name");
|
||
this.Id=Number(this.getValue("MM_Id"));
|
||
this.Type=this.getValue("MM_Type");
|
||
this.Link=this.getValue("MM_Link");
|
||
this.Color=this.getValue("MM_Color");
|
||
this.Font=this.getValue("MM_Font ");
|
||
this.IsBold=this.getValue("MM_IsBold")=="false" ? false : true;
|
||
this.IsItalic=this.getValue("MM_IsItalic")=="false" ? false : true;
|
||
this.PatId=Number(this.getValue("MM_PatId"));
|
||
this.IsRoot=this.PatId==0 ? true : false;
|
||
this.State=this.getValue("MM_State")=="false" ? false : true;
|
||
this.Root=Number(this.getValue("MM_Root"));
|
||
this.Tax=Number(this.getValue("MM_Tax"));
|
||
this.IsUse=this.getValue("MM_IsUse")=="false" ? false : true;;
|
||
this.IsShow=this.getValue("MM_IsShow")=="false" ? false : true;
|
||
this.IcoS=this.getValue("IcoS");
|
||
this.IcoB=this.getValue("IcoB");
|
||
this.Intro=this.getValue("MM_Intro");
|
||
};
|
||
Node.prototype.evaluate2=function()
|
||
{
|
||
//特性参数
|
||
this.State=this.PatId==0 ? true : this.State;
|
||
this.IsBold=this.PatId==0 ? true : this.IsBold;
|
||
this.Childs=this.GetChilds();
|
||
this.Siblings=this.GetSiblings();
|
||
this.Parent=this.GetParent();
|
||
this.IsChilds=this.Childs.length>0 ? true : false;
|
||
this.IsFirst=this.SetIsFirst();
|
||
this.IsLast=this.SetIsLast();
|
||
this.Pre=this.GetPre();
|
||
this.Next=this.GetNext();
|
||
}
|
||
//获取节点的相关属性
|
||
//keyName:属性名
|
||
Node.prototype.getValue=function(keyName)
|
||
{
|
||
var node=this.object.find(">"+keyName);
|
||
if(node==null||node.length<1)
|
||
{
|
||
return "";
|
||
}
|
||
return node.text().toLowerCase();
|
||
}
|
||
//获取子级
|
||
Node.prototype.GetChilds=function()
|
||
{
|
||
var fulldata=this.fulldata;
|
||
var nodes=this.fulldata.find("ManageMenu");
|
||
var id=this.Id;
|
||
//alert(id);
|
||
var arr=new Array();
|
||
nodes.each(
|
||
function()
|
||
{
|
||
var n=Number($(this).find("MM_PatId").text().toLowerCase());
|
||
if(n==id)
|
||
{
|
||
arr.push($(this));
|
||
}
|
||
}
|
||
);
|
||
arr=this.SetOrder(arr);
|
||
return arr;
|
||
}
|
||
//获取上级,xml对象,非node对象
|
||
Node.prototype.GetParent=function()
|
||
{
|
||
var fulldata=this.fulldata;
|
||
var nodes=this.fulldata.find("ManageMenu");
|
||
var pid=this.PatId;
|
||
//alert(pid);
|
||
var arr=new Array();
|
||
nodes.each(
|
||
function()
|
||
{
|
||
var n=Number($(this).find("MM_Id").text().toLowerCase());
|
||
if(n==pid)
|
||
{
|
||
arr.push($(this));
|
||
}
|
||
}
|
||
);
|
||
if(arr.length>0)return arr[0];
|
||
return null;
|
||
}
|
||
//获取兄弟子级
|
||
Node.prototype.GetSiblings=function()
|
||
{
|
||
var nodes=this.fulldata.find("ManageMenu");
|
||
var pid=this.PatId;
|
||
//alert(id);
|
||
var arr=new Array();
|
||
nodes.each(
|
||
function()
|
||
{
|
||
var n=Number($(this).find("MM_PatId").text().toLowerCase());
|
||
if(n==pid)
|
||
{
|
||
arr.push($(this));
|
||
}
|
||
}
|
||
);
|
||
arr=this.SetOrder(arr);
|
||
return arr;
|
||
}
|
||
//将数组类的列排序
|
||
Node.prototype.SetOrder=function(array)
|
||
{
|
||
for (var i = 0; i <= array.length - 1; i++)
|
||
{
|
||
for (var j = array.length - 1; j > i; j--)
|
||
{
|
||
var jj=Number(array[j].find("MM_Tax").text().toLowerCase());
|
||
var jn=Number(array[j-1].find("MM_Tax").text().toLowerCase());
|
||
if (jj < jn )
|
||
{
|
||
var temp = array[j];
|
||
array[j] = array[j - 1];
|
||
array[j - 1] = temp;
|
||
}
|
||
}
|
||
}
|
||
for (var i = 0; i < array.length; i++)
|
||
{
|
||
array[i].find("MM_Tax").text((i+1)*10);
|
||
}
|
||
return array;
|
||
}
|
||
//是不是第一个节点
|
||
Node.prototype.SetIsFirst=function()
|
||
{
|
||
var arr=this.Siblings;
|
||
var len=arr.length;
|
||
if(arr.length>0)
|
||
{
|
||
var id=Number(arr[0].find("MM_Id").text().toLowerCase());
|
||
if(id==this.Id)
|
||
{
|
||
return true;
|
||
}
|
||
}
|
||
return false;
|
||
}
|
||
//是不是最后一个节点
|
||
Node.prototype.SetIsLast=function()
|
||
{
|
||
var arr=this.Siblings;
|
||
var len=arr.length;
|
||
if(arr.length>0)
|
||
{
|
||
var id=Number(arr[len-1].find("MM_Id").text().toLowerCase());
|
||
if(id==this.Id)
|
||
{
|
||
return true;
|
||
}
|
||
}
|
||
return false;
|
||
}
|
||
//当前节点的上一个节点
|
||
Node.prototype.GetPre=function()
|
||
{
|
||
//如果自身是第一个节点,则返回Null
|
||
if(this.IsFirst)return null;
|
||
var arr=this.Siblings;
|
||
var len=arr.length;
|
||
for(var i=0;i<len;i++)
|
||
{
|
||
var id=Number(arr[i].find("MM_Id").text().toLowerCase());
|
||
if(id==this.Id)
|
||
{
|
||
return arr[i-1];
|
||
}
|
||
}
|
||
return null;
|
||
}
|
||
//当前节点的下一个节点
|
||
Node.prototype.GetNext=function()
|
||
{
|
||
//如果自身是第一个节点,则返回Null
|
||
if(this.IsLast)return null;
|
||
var arr=this.Siblings;
|
||
var len=arr.length;
|
||
for(var i=0;i<len;i++)
|
||
{
|
||
var id=Number(arr[i].find("MM_Id").text().toLowerCase());
|
||
if(id==this.Id)
|
||
{
|
||
return arr[i+1];
|
||
}
|
||
}
|
||
return null;
|
||
}
|
||
//获取当前节点从根节点的路径,路径名为中文,分隔符为,号;
|
||
Node.prototype.GetPath=function()
|
||
{
|
||
var tm="";
|
||
var p=this.GetParent(this.Id);
|
||
if(p==null)return tm;
|
||
var pid=p.find("MM_PatId").text();
|
||
while(Number(pid)!=0)
|
||
{
|
||
tm=p.find("MM_Name").text()+","+tm;
|
||
var pid=p.find("MM_PatId").text();
|
||
pid=Number(pid);
|
||
p=this.GetParent(pid);
|
||
}
|
||
tm=tm.substring(0,tm.lastIndexOf(","));
|
||
return tm;
|
||
} |