📄 ig_webtree.js
字号:
// public - Returns the selected Node for the Tree
function igtree_selectedNode(tn)
{
return igtree_treeState[tn].selectedNodeElement;
}
// private - Implements the setSelectedNode method for the tree
function igtreem_setSelectedNode(node)
{
var uniqueId = this.getClientUniqueId();
var id=null;
if(node!=null)
id=node.Id;
igtree_setSelectedNode(uniqueId, id);
}
// private - Implements the getSelectedNode method for the tree
function igtreem_getSelectedNode()
{
var uniqueId = this.getClientUniqueId();
var node=igtree_selectedNode(uniqueId);
if(node)
return igtree_getNodeById(node.id);
return null;
}
// private
function igtree_getClientUniqueId() {
var u = this.UniqueId.replace(/:/gi, "");
u = u.replace(/_/gi, "");
return u;
}
// private
// Inserts a node to the tree
function igtree_insertChild(parentNode, index, text, className) {
// obtain the Nodes collection for the operation
var nodes;
var nodeElements;
var parentId;
var insert = false;
if(index!=-1)
insert = true;
if(parentNode == null) {
//nodes = this.getNodes(true);
nodes = this.getNodes(false);
if(this.nodes)
this.nodes = null;
parentId = this.Id;
}
else {
nodes = parentNode.getChildNodes();
if(parentNode.nodes)
parentNode.nodes = null;
parentId = parentNode.Id;
if(nodes == null || nodes.length == 0) { // create childNodes div
var mdiv = window.document.createElement("DIV");
mdiv.id = "M_"+parentId;
var next = parentNode.Element.nextSibling;
if(next != null)
parentNode.Element.parentNode.insertBefore(mdiv, next);
else
parentNode.Element.parentNode.appendChild(mdiv);
var span = parentNode.Element.firstChild;
span.style.width = '0px';
if(!this.ClassicTree && this.Expandable) {
var ig = window.document.createElement("IMG");
ig.imgType = "exp";
ig.src = this.CollapseImage;
parentNode.Element.insertBefore(ig, parentNode.Element.childNodes[1]);
ig = window.document.createElement("SPAN");
ig.style.width="5px";
ig.innerHTML=" ";
parentNode.Element.insertBefore(ig, parentNode.Element.childNodes[2]);
}
igtree_updateNodeToggle(this, parentId, true);
if(ig_csom.notEmpty(this.ParentNodeClass))
if(parentNode.getParent() != null || ig_csom.isEmpty(this.RootNodeClass))
parentNode.setClass(this.ParentNodeClass);
}
}
if(index == null || index == -1 || index > nodes.length)
index = nodes.length;
// create the node DOM structure
var div = window.document.createElement("DIV");
var mrgn = 0;
var parentLevel = null;
var levelIndex;
if(parentNode) {
levelIndex = parentNode.getLevel();
parentLevel = this.Levels.getItem(levelIndex);
levelIndex++;
mrgn = levelIndex * this.Indentation;
}
else {
levelIndex = 0;
}
var level = this.Levels.getItem(levelIndex);
var html;
if(this.ClassicTree) {
marginHtml = "<span igl='1'></span>";
}
else {
var marginHtml = "<span style='width:16px;margin-left:%MARGIN%;'></span>";
marginHtml = marginHtml.replace("%MARGIN%", mrgn);
}
html = marginHtml;
var bCheck = false;
var checkboxHtml = "<input class='igt_align' type='checkbox' igchk='1'>";
if(level && level.LevelCheckBoxes==2)
bCheck = true;
else
if(level && level.LevelCheckBoxes==1)
bCheck = false;
else
bCheck = this.CheckBoxes;
if(bCheck)
html += checkboxHtml;
var img = "<img igimg='1' style='margin-right:4px' align='absmiddle' src='%IMAGE%'>";
var imgurl = "";
if(level && ig_csom.notEmpty(level.LevelImage))
imgurl = level.LevelImage;
else
if(parentNode == null && ig_csom.notEmpty(this.RootNodeImageUrl)) { // Root Node
imgurl = this.RootNodeImageUrl;
}
else
if(ig_csom.notEmpty(this.LeafNodeImageUrl)) {
imgurl = this.LeafNodeImageUrl;
}
else
if(ig_csom.notEmpty(this.DefaultImage)) {
imgurl = this.DefaultImage;
}
if(imgurl.length > 0) {
img = img.replace("%IMAGE%", imgurl);
html += img;
}
var cls = null;
if(className != null)
cls = className;
else
if(level && level.ClassName != null)
cls = level.ClassName;
else
if(levelIndex == 0 && ig_csom.notEmpty(this.RootNodeClass))
cls = this.RootNodeClass;
else
if(ig_csom.notEmpty(this.LeafNodeClass))
cls = this.LeafNodeClass;
var txt = "<span %CLASS%igtxt='1'>%TEXT%</span>";
if(ig_csom.notEmpty(cls))
txt = txt.replace("%CLASS%", "class='"+cls+"' ");
else
txt = txt.replace("%CLASS%", "");
txt = txt.replace("%TEXT%", text);
html += txt;
div.innerHTML = html;
var parentElem = ig_csom.getElementById("M_"+parentId);
if(parentElem == null) return;
if(insert && parentElem.childNodes.length <= index) // convert to an Add operation
insert = false;
// construct the nodeId
div.id = parentId + '_' + (index+1);
var nodeId = div.id;
// insert the node into the tree DOM
if(insert) { // Perform insert
if(parentNode == null) {
nodeElements = igtree_getChildNodeElements(this, null);
}
else {
nodeElements = igtree_getChildNodeElements(this, parentNode.Element);
}
var beforeElem = nodeElements[index];
div.id = this.Id + "_ig_temp";
parentElem.insertBefore(div, beforeElem);
if(parentNode == null) {
nodeElements = igtree_getChildNodeElements(this, null);
}
else {
nodeElements = igtree_getChildNodeElements(this, parentNode.Element);
}
div.id = nodeId;
var parId = div.id;
var ptr = parId.lastIndexOf("_");
parId = parId.substring(0, ptr);
igtree_setChildIds(this, nodeElements, index+1, parId);
}
else
parentElem.appendChild(div);
var node = igtree_getNodeById(nodeId);
if(this.ClassicTree) {
if(parentNode)
igtree_updateNodeLines(this, parentNode, null);
igtree_updateNodeLines(this, node, levelIndex);
}
if(node.WebTree == null)
node.WebTree = this;
if(insert)
node.update("Add", index.toString());
else
node.update("Add", "-1");
if(text)
node.update("Text", text);
if(className)
node.update("CssClass", className);
return node;
}
function igtree_setChildIds(tree, nodeElements, index, parentId) {
var len = nodeElements.length;
if(index==null || index>=len)
index=0;
var i;
for(i=index;i<len;i++) {
var nodeElement = nodeElements[i];
var id = parentId;
x = i+1;
id += "_" + x.toString();
var childNodeElements;
var bSetChildren = igtree_hasChildrenElements(nodeElement);
if(bSetChildren)
childNodeElements = igtree_getChildNodeElements(tree, nodeElement);
nodeElement.id = id;
if(nodeElement.oNode != null)
nodeElement.oNode.Id = id;
if(bSetChildren) {
igtree_setChildIds(tree, childNodeElements, 0, id);
}
var nextSibling = nodeElement.nextSibling;
if(nextSibling != null && nextSibling.id.substr(0,2)=="M_") {
nextSibling.id = "M_" + id;
}
}
}
function igtree_getChildNodeElements(tree, parentNodeElement) {
elements=new Array();
var nodeCount=0;
var childNodeElement=igtree_getFirstChildNodeElement(tree, parentNodeElement);
while(childNodeElement) {
elements[nodeCount++]=childNodeElement;
childNodeElement=igtree_getNextChildNodeElement(tree, childNodeElement);
}
return elements;
}
function igtree_getFirstChildNodeElement(tree,parentNodeElement) {
var sibling;
if(!parentNodeElement) {
sibling=tree.treeElement.childNodes[0].childNodes[0].childNodes[0];
return sibling;
}
sibling = parentNodeElement.nextSibling;
if(!sibling)
return null;
if(sibling.id.substr(0,2)!="M_")
return null;
var firstChild = sibling.firstChild;
return firstChild;
}
function igtree_getNextChildNodeElement(tree,nodeElement) {
if(!nodeElement)
return;
var sibling = nodeElement.nextSibling;
while(sibling && (sibling.tagName!="DIV" || sibling.id.substr(0,2)=="M_"))
sibling=sibling.nextSibling;
return sibling;
}
function igtree_updateNodeLines(tree, node, levelIndex) {
var parent = node.getParent();
if(levelIndex == null)
levelIndex = node.getLevel();
if(parent)
igtree_updateNodeDescendantLines(tree, parent)
igtree_updateLines(tree, node, levelIndex);
igtree_updateNodeDescendantLines(tree, node)
var prev = node.getPrevSibling();
if(prev) {
igtree_updateLines(tree, prev, levelIndex);
igtree_updateNodeDescendantLines(tree, prev)
}
var next = node.getNextSibling();
if(next) {
igtree_updateLines(tree, next, levelIndex);
igtree_updateNodeDescendantLines(tree, next)
}
}
function igtree_updateNodeDescendantLines(tree, parentNode) {
var node = parentNode.getFirstChild();
while(node) {
igtree_updateLines(tree, node, node.getLevel());
if(node.getFirstChild())
igtree_updateNodeDescendantLines(tree, node)
node = node.getNextSibling();
}
}
// private
function igtree_updateLines(tree, node, levelIndex) {
var eLines = igtree_getLinesElement(node);
var html = igtree_WriteLines(tree, node, levelIndex);
eLines.innerHTML = html;
}
// private
function igtree_getLinesElement(node) {
var e = node.Element;
var eLine = e.firstChild;
if(eLine.igl == '1')
return eLine;
}
// private
function igtree_WriteLines(tree, node, level) {
// write the level line images
var s;
if(node.getFirstChild() && tree.Expandable) {
s = igtree_WriteLineLevelImage(tree, node, level);
if(node.getExpanded())
s += igtree_WriteCollapseImage(tree, node)
else
s += igtree_WriteExpandImage(tree, node)
}
else {
s = igtree_WriteLineLevelImage(tree, node, level);
s += igtree_WriteJoinerImage(tree, node);
}
return s;
}
// private
function igtree_WriteLineLevelImage(tree, node, level) {
var list = new Array();
var parent = node.getParent();
var s = "";
var i = 0;
while(parent != null) {
list[i++] = parent;
parent = parent.getParent();
}
for(j = list.length-1; j >= 0; j--) {
parent = list[j];
s += "<img align='absmiddle' ";
s += "src='";
if(parent.getNextSibling() != null && !parent.getNextSibling().Hidden)
s += igtree_resolveImage(tree, "ig_treeI.gif");
else
s += igtree_resolveImage(tree, "ig_treewhite.gif");
s += "'>";
}
return s;
}
function igtree_WriteCollapseImage(tree, node) {
var s = "<img style='vertical-align:middle;' src='";
if(node.getParent() == null) {
if((node.getPrevSibling() == null) &&
(node.getNextSibling() == null)) {
s += igtree_resolveImage(tree, "ig_treeominus.gif");
}
else
if(node.getPrevSibling() == null) {
s += igtree_resolveImage(tree, "ig_treefminus.gif");
}
else
if(node.getNextSibling() == null)
s += igtree_resolveImage(tree, "ig_treelminus.gif");
else
s += igtree_resolveImage(tree, "ig_treemminus.gif");
}
else
if(node.getPrevSibling() == null) {
if(node.getNextSibling() == null)
s += igtree_resolveImage(tree, "ig_treelminus.gif");
else
s += igtree_resolveImage(tree, "ig_treemminus.gif");
}
else
if(node.getNextSibling() == null)
s += igtree_resolveImage(tree, "ig_treelminus.gif");
else
s += igtree_resolveImage(tree, "ig_treemminus.gif");
s += "' imgType='exp'>";
return s;
}
function igtree_WriteExpandImage(tree, node) {
var s = "<img style='vertical-align:middle;' src='";
if(node.getParent() == null) {
if((node.getPrevSibling() == null || node.getPrevSibling().Hidden) &&
(node.getNextSibling() == null || node.getNextSibling().Hidden) ) {
s += igtree_resolveImage(tree, "ig_treeoplus.gif");
}
else
if(node.getPrevSibling() == null || node.getPrevSibling().Hidden) {
if(node.getNextSibling() == null || node.getNextSibling().Hidden)
s += igtree_resolveImage(tree, "ig_treelplus.gif");
else
s += igtree_resolveImage(tree, "ig_treefplus.gif");
}
else
if(node.getNextSibling() == null || node.getNextSibling().Hidden)
s += igtree_resolveImage(tree, "ig_treelplus.gif");
else
s += igtree_resolveImage(tree, "ig_treemplus.gif");
}
else
if(node.getPrevSibling() == null || node.getPrevSibling().Hidden) {
if(node.getNextSibling() == null || node.getNextSibling().Hidden)
s += igtree_resolveImage(tree, "ig_treelplus.gif");
else
s += igtree_resolveImage(tree, "ig_treemplus.gif");
}
else
if(node.getNextSibling() == null || node.getNextSibling().Hidden)
s += igtree_resolveImage(tree, "ig_treelplus.gif");
else
s += igtree_resolveImage(tree, "ig_treemplus.gif");
s += "' imgType='exp'>";
return s;
}
function igtree_WriteJoinerImage(tree, node) {
var s = "<img style=\"vertical-align:middle;\" src='";
// The image to render can be either for the first node, a middle node, or the last node of a collection
if (null==node.getParent()&&null==node.getPrevSibling()&&null==node.getNextSibling()&&null==node.getChildNodes())
s += igtree_resolveImage(tree, "ig_treeS.gif");
else
if(no
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -