📄 ig_webtree.js
字号:
igtree_lastActiveTree=tn;
if(igtxt || igimg)
{
var node=igtree_getNodeById(eNode.id);
if(node!=null) {
if(node.getEnabled() == false)
return;
}
if(tree.Selectable) {
igtree_navigate(tree, node)
igtree_setSelectedNode(tn,eNode.id);
}
}
else if(src.tagName=="IMG")
igtree_toggle(tn,eNode.id);
else if(igchk) {
igtree_checkboxClick(tn, eNode.id, src);
}
return false;
}
var igtree_treeName;
var igtree_nodeId;
var igtree_postCanceled = false;
var igtree_clickCounter = 0;
// private - Handles posting node click events to the server
function igtree_postNodeClick(treeName, nodeId)
{
igtree_treeName = treeName;
igtree_nodeId = nodeId;
var src;
src = igtree_getElementById(nodeId);
igtree_clickCounter++;
if(igtree_clickCounter == 1)
setTimeout('igtree_onTimerPostNodeClick()', 300);
}
// private - Posts node click events on time expiration
function igtree_onTimerPostNodeClick()
{
var tree = igtree_getTreeById(igtree_treeName);
tree.update("SelectedNode", igtree_nodeId);
if(igtree_postCanceled == false) {
tree.NeedPostBack=false;
__doPostBack(tree.UniqueId, igtree_nodeId+":Clicked");
}
igtree_postCanceled = false;
igtree_clickCounter = 0;
}
// private - Handles the scrolling of the tree
function igtree_onscroll(src)
{
var treeName = src;
var ts = igtree_getTreeById(src);
var treeControl = igtree_getElementById("T_" + treeName);
ts.update("ScrollTopPos", treeControl.scrollTop);
return true;
}
// private - Updates the PostBackData field
function igtree_updatePostField(treeName, nodeId, oldNodeId)
{
var formControl = igtree_getElementById(igtree_getUniqueId(treeName));
if(!formControl)
return;
formControl.value = treeState;
}
// private - Handles the double click event for a node
function igtree_dblclick(evnt,tn)
{
var src=igtree_getSrcNodeElement(evnt,tn);
if(!src)
return;
var tree=igtree_treeState[tn];
var eNode = igtree_getNodeElement(src);
var igtxt = src.getAttribute("igtxt")!=null && src.getAttribute("igtxt").length>0;
var igimg = src.getAttribute("igimg")!=null && src.getAttribute("igimg").length>0;
if(igtxt && tree.Editable)
{
igtree_postCanceled = true;
igtree_beginedit(tn,eNode.id);
return;
}
if(igimg || igtxt) {
if(!tree.Enabled)
return;
var node=igtree_getNodeById(eNode.id);
if(node.getFirstChild() != null || tree.LoadOnDemand>=1) {
igtree_toggle(tn,eNode.id);
}
}
}
var igtree_editControl = null;
// private - Retrieves the in-place edit control for an editable tree
function igtree_getEditControl(src)
{
var strArray;
if(!src)
return null;
if(igtree_IE)
strArray = src.parentElement.id.split("_");
else
strArray = src.parentNode.id.split("_");
var treeName = strArray[0];
return igtree_getElementById(treeName+"_tb");
}
// private - Handles mouse clicks within the edit control
function igtree_editClickHandler()
{
event.cancelBubble = true;
}
// private - Handles selection events for the tree
var igtree_bDragSelect = false;
function igtree_selectStart()
{
if(window.event.srcElement.tagName == "INPUT")
return;
if(igtree_bDragSelect)
return;
window.event.cancelBubble = true;
window.event.returnValue = false;
return false;
}
// private - Updates internal buffer for node expansion/collapse data
function igtree_updateNodeToggle(ts, nodeId, bExpanded)
{
nodeId = nodeId.replace("M_", "");
var node = igtree_getNodeById(nodeId);
node.update("Expanded", bExpanded);
}
// private - Updates internal buffer for node checked status
function igtree_updateNodeCheck(ts, nodeId, bChecked){
var node = igtree_getNodeById(nodeId);
node.update("Checked", bChecked);
}
// private - Handles key down events
function igtree_keydown(evnt, treeID)
{
var ts=igtree_treeState[treeID];
var tree=ts.treeElement;
var processed=false;
var igtree_currentNode = igtree_selectedNode(treeID);
if(igtree_fireEvent(treeID,ts.Events.KeyDown,"(\""+treeID+"\","+evnt.keyCode+")"))
return;
if(evnt.keyCode == 13){ // Enter
if(igtree_currentNode != null) {
processed=true;
igtree_navigate(ts, ts.getSelectedNode());
}
}
if(evnt.keyCode == 113){ // F2
if(igtree_currentNode != null) {
processed=true;
if(ts.Editable)
igtree_beginedit(treeID,igtree_currentNode.id);
}
}
if(evnt.keyCode == 107 || evnt.keyCode == 109 || evnt.keyCode == 37 || evnt.keyCode == 39)
{ // plus/minus key
if(igtree_currentNode == null)
return;
var ns=igtree_getElementById("M_"+igtree_currentNode.id);
if(!ns && ts.LoadOnDemand>0) {
if(evnt.keyCode==107 || evnt.keyCode==39)
igtree_toggle(treeID,igtree_currentNode.id);
processed=true;
}
else
if(ns) {
var toggle=((evnt.keyCode == 107 || evnt.keyCode == 39) && ns.style.display=="none" || (evnt.keyCode == 109 || evnt.keyCode == 37) && ns.style.display=="");
if(toggle)
igtree_toggle(treeID,igtree_currentNode.id);
processed=true;
}
}
if(evnt.keyCode == 35){ // end key
if(igtree_currentNode) {
var last = igtree_lastNode(treeID);
if(last){
last=igtree_setSelectedNode(treeID,last.id);
igtree_scrollToView(tree,last);
processed=true;
}
}
}
if(evnt.keyCode == 36){ // home key
if(igtree_currentNode){
var first = igtree_firstNode(treeID);
if(first){
first=igtree_setSelectedNode(treeID,first.id);
igtree_scrollToView(tree,first);
processed=true;
}
}
}
if(evnt.keyCode == 38) { // up arrow
if(igtree_currentNode) {
var sibling = igtree_prevVisibleNode(treeID,igtree_currentNode);
if(sibling) {
while(sibling && sibling.getAttribute("nodeDisabled"))
sibling = igtree_prevVisibleNode(treeID,sibling);
if(!sibling)
return;
sibling=igtree_setSelectedNode(treeID,sibling.id);
igtree_scrollToView(tree,sibling);
processed=true;
}
}
}
if(evnt.keyCode == 40)
{ // down arrow
if(igtree_currentNode){
var sibling = igtree_nextVisibleNode(treeID,igtree_currentNode);
if(sibling) {
while(sibling && sibling.getAttribute("nodeDisabled"))
sibling = igtree_nextVisibleNode(treeID,sibling);
if(!sibling)
return;
sibling=igtree_setSelectedNode(treeID,sibling.id);
igtree_scrollToView(tree,sibling);
processed=true;
}
}
}
if(processed) {
// [KV 10/29/2004, 4:27 PM] Corrected spelling mistake, Babble to Bubble
//evnt.cancelBabble=true;
evnt.cancelBubble=true;
evnt.returnValue=false;
return false;
}
}
// private - Handles key up events
function igtree_keyup(evnt, tn)
{
if(igtree_fireEvent(tn,igtree_treeState[tn].Events.KeyUp,"(\""+tn+"\","+evnt.keyCode+")"))
return;
}
// private
function igtree_nextSibling(tn,node,all) {
var ts=igtree_treeState[tn];
var sibling;
if(!node) {
var tree=ts.treeElement;
var first=tree.childNodes[0].childNodes[0].childNodes[0];
while(first && first.tagName!="DIV")
first=first.nextSibling;
if(!first)
return null;
sibling=first;
while(sibling && (sibling.tagName!="DIV" || sibling.id.substr(0,2)=="M_"))
sibling=sibling.nextSibling;
return sibling;
}
else
sibling = node.nextSibling;
while(sibling && (sibling.tagName!="DIV" || sibling.style.display=="none" || all && sibling.id.substr(0,2)=="M_"))
sibling=sibling.nextSibling;
if(!sibling && all)
return null;
var parentNode = node.parentNode;
while(!sibling && parentNode && parentNode.id.substr(0,2)=="M_"){
sibling=parentNode.nextSibling;
while(sibling && (sibling.tagName!="DIV" || sibling.style.display=="none"))
sibling=sibling.nextSibling;
parentNode=parentNode.parentNode;
}
if(sibling && sibling.id.substr(0,2)=="M_")
sibling=sibling.childNodes[0];
while(sibling && (sibling.tagName!="DIV" || sibling.style.display=="none"))
sibling=sibling.nextSibling;
return sibling;
}
// private
function igtree_nextSiblingAll(tn,node,all) {
var ts=igtree_treeState[tn];
var sibling;
if(!node) {
var tree=ts.treeElement;
var first=tree.childNodes[0].childNodes[0].childNodes[0];
while(first && first.tagName!="DIV")
first=first.nextSibling;
if(!first)
return null;
sibling=first;
while(sibling && (sibling.tagName!="DIV" || sibling.id.substr(0,2)=="M_"))
sibling=sibling.nextSibling;
return sibling;
}
else
sibling = node.nextSibling;
while(sibling && (sibling.tagName!="DIV" || all && sibling.id.substr(0,2)=="M_"))
sibling=sibling.nextSibling;
if(!sibling && all)
return null;
var parentNode = node.parentNode;
while(!sibling && parentNode && parentNode.id.substr(0,2)=="M_"){
sibling=parentNode.nextSibling;
while(sibling && (sibling.tagName!="DIV" ))
sibling=sibling.nextSibling;
parentNode=parentNode.parentNode;
}
if(sibling && sibling.id.substr(0,2)=="M_")
sibling=sibling.childNodes[0];
while(sibling && (sibling.tagName!="DIV" ))
sibling=sibling.nextSibling;
return sibling;
}
function igtree_prevSibling(tn,node,all)
{
var ts=igtree_treeState[tn];
var sibling;
if(!node) {
var tree=ts.treeElement;
var last=tree.childNodes[0].childNodes[tree.childNodes[0].childNodes.length-1];
while(last && last.tagName!="DIV")
last=last.previousSibling;
if(!last)
return null;
sibling=last;
while(sibling && (sibling.tagName!="DIV" || sibling.id.substr(0,2)=="M_"))
sibling=sibling.previousSibling;
return sibling;
}
else
sibling = node.previousSibling;
while(sibling && (sibling.tagName!="DIV" || sibling.style.display=="none" || all && sibling.id.substr(0,2)=="M_"))
sibling=sibling.previousSibling;
if(!sibling && all)
return null;
var parentNode = node.parentNode;
while(!sibling && parentNode && parentNode.id.substr(0,2)=="M_"){
sibling=parentNode.previousSibling;
while(sibling && (sibling.tagName!="DIV" || sibling.style.display=="none"))
sibling=sibling.previousSibling;
parentNode=parentNode.parentNode;
}
while(sibling && sibling.id.substr(0,2)=="M_") {
sibling=sibling.childNodes[sibling.childNodes.length-1];
while(sibling && (sibling.tagName!="DIV" || sibling.style.display=="none"))
sibling=sibling.previousSibling;
}
return sibling;
}
function igtree_fnGetLeftPos(e)
{
x = e.offsetLeft;
tmpE = e.offsetParent;
while (tmpE != null)
{
x += tmpE.offsetLeft;
if(tmpE.tagName=="DIV" && tmpE.style.borderLeftWidth)
x += parseInt(tmpE.style.borderLeftWidth);
if(igtree_IE && tmpE.tagName!="BODY") {
x-=tmpE.scrollLeft;
}
tmpE = tmpE.offsetParent;
}
return x;
}
// Returns top position of some element
function igtree_fnGetTopPos(e)
{
y = e.offsetTop;
tmpE = e.offsetParent;
while (tmpE != null) {
y += tmpE.offsetTop;
if(tmpE.tagName=="DIV" && tmpE.style.borderTopWidth)
y += parseInt(tmpE.style.borderTopWidth);
if(igtree_IE && tmpE.tagName!="BODY")
y-=tmpE.scrollTop;
tmpE = tmpE.offsetParent;
}
return y;
}
function igtree_scrollToView(parent,child)
{
if(parent.scrollWidth<=parent.offsetWidth && parent.scrollHeight<=parent.offsetHeight)
return;
var childLeft=igtree_fnGetLeftPos(child);
var parentLeft=igtree_fnGetLeftPos(parent);
var childTop=igtree_fnGetTopPos(child);
var parentTop=igtree_fnGetTopPos(parent);
var childRight=childLeft+child.offsetWidth;
var parentRight=parentLeft+parent.offsetWidth;
var childBottom=childTop+child.offsetHeight;
var parentBottom=parentTop+parent.offsetHeight;
var hsw=(parent.scrollWidth>parent.offsetWidth?18:0);
var vsw=(parent.scrollWidth>parent.offsetWidth || parent.scrollHeight>parent.offsetHeight?18:0);
if(childRight>parentRight-vsw && childLeft-(childRight-parentRight)>parentLeft)
parent.scrollLeft+=childRight-parentRight+vsw;
if(childBottom>parentBottom-hsw && childTop-(parentTop-childTop)>parentTop)
parent.scrollTop+=childBottom-parentBottom+hsw;
if(childLeft<parentLeft)
parent.scrollLeft-=parentLeft-childLeft;
if(childTop<parentTop)
parent.scrollTop-=parentTop-childTop;
}
function igtree_editKeyDown(evnt,tn)
{
if(!igtree_editControl)
return;
var src=igtree_getElementById(igtree_editControl.getAttribute("currentNode"));
var node=igtree_getNodeById(src.id);
src=igtree_getNodeSpan(src);
if(igtree_fireEvent(tn,igtree_treeState[tn].Events.EditKeyDown,"(\""+tn+"\",\""+node.getElement().id+"\","+evnt.keyCode+")")){
evnt.cancelBubble = true;
evnt.returnValue = false;
return;
}
if(igtree_IE) {
evnt.cancelBubble=true;
if(evnt.keyCode==13)
{
event.returnValue=false;
igtree_endedit(true);
return false;
}
else if(evnt.keyCode==27)
igtree_endedit(false);
}
else {
if(evnt.keyCode==13){
evnt.stopPropagation();
igtree_endedit(true);
return false;
}
else if(evnt.keyCode==27)
igtree_endedit(false);
}
}
function igtree_editKeyUp(evnt,tn)
{
if(!igtree_editControl)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -