⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 tree.js

📁 找了很久才找到到源代码
💻 JS
📖 第 1 页 / 共 2 页
字号:
	} else {
		// windowed version
		return false;
	}
}


function showTree(doc, nodeId) {
	if (nodeId != null) {
		setCurrentFolder(nodeId);
		if ((tree.nodes[nodeId] != null) && (tree.nodes[nodeId].childs == null)) {
			tree.nodes[nodeId].childs = new Array();
		}
	}
	doc.open();
	doc.write(treeHeadHtml1);
	doc.write(vr.encoding);
	doc.write(treeHeadHtml2);
	dfsTree(doc, tree.root, 0, false, new Array());
	doc.writeln(treeFootHtml);
	doc.close();
}


function showLoadedNodes(doc, id) {
	if (vr.actDirId == null) {
		setCurrentFolder(id);
	}
	if (! tree.nodes[id].open) {
		toggleNode(doc, id);
	} else {
		saveScroll(doc);
		showTree(doc);
		restoreScroll(doc, vr.scrollTop);
	}
}


function setNoChilds(nodeId) {
    var node = tree.nodes[nodeId];
    if (node != null) {
        tree.nodes[nodeId].childs = new Array();
    }
}


// returns the node id from a given name
function getNodeIdByName(nodeName) {
	var result = "";
	var node = tree.root;
	if (nodeName != "/") {
		while ((node != null) && (result != nodeName)) {
			result += "/";
			var subnode = null;
			var childs = node.childs;
				if (childs != null) {
				for (i=0; i<childs.length; i++) {
					subnode = tree.nodes[childs[i]];
					var subname = result + subnode.name;
					if ((subnode != null) && ((nodeName == subname) || (nodeName.indexOf(subname + "/") == 0))) {
						result = result + subnode.name;
						i = childs.length;
					}
				}
			}
			node = subnode;
		}
	}
	if (node  != null) {
		return node.id;
	} else {
		return null;
	}
}


// returns the node name from a given id
function getNodeNameById(nodeId) {
	var node = tree.nodes[nodeId];
	var result = "";
	if (node != null) {
		if (node.id == tree.root.id) {
			return "/";
		} else {
			var isFolder = (node.folder);
			do {
				result = ("/" + node.name + result);
				node = tree.nodes[node.parentId];
			} while ((node != null) && (node != tree.root));
			if (isFolder && result.charAt(result.length-1) != '/') {
				result += "/";
			}
			return result;
		}
	} else {
		return null;
	}
}


function aC(name, type, folder, id, parentId, state, grey) {
	var theParent = tree.nodes[parentId];
	var oldNode = tree.nodes[id];

	if (oldNode == null) {
		// the node is not already present in the tree, so insert it
		if (theParent == null) {
			// this is the "root" node
			tree.nodes[id] = new nodeObject(name, type, folder, id, null, state, grey, false);
			tree.root = tree.nodes[id];
		} else {
			// this is a regular subnode
			tree.nodes[id] = new nodeObject(name, type, folder, id, parentId, state, grey, false);
			if (theParent.childs == null) {
				theParent.childs = new Array();
			}
			theParent.childs[theParent.childs.length] = id;
		}
	} else {
		// the node is already part of the tree, so just update it
		newNode = new nodeObject(name, type, folder, id, parentId, oldNode.state, oldNode.grey, oldNode.open);
		newNode.childs = oldNode.childs;
		tree.nodes[id] = newNode;
		// the parents "child node list" must have been cleared before adding new nodes
		theParent.childs[theParent.childs.length] = id;
	}
}


var m_includeFiles = false;


function includeFiles() {
	return m_includeFiles;
}


function setIncludeFiles(value) {
	m_includeFiles = value;
}


var m_projectAware = true;


function isProjectAware() {
	return m_projectAware;
}


function setProjectAware(value) {
	m_projectAware = value;
}


var m_treeType = null;

function getTreeType() {
	return m_treeType;
}


function setTreeType(value) {
	m_treeType = value;
}


var m_sitePrefix = null;

function getSitePrefix() {
	return m_sitePrefix;
}


function setSitePrefix(value) {
	m_sitePrefix = value;
}

var m_rootFolder = null;

function getRootFolder() {
	if (m_rootFolder == null) {
		return "/";
	} else {
		return m_rootFolder;
	}
}

function setRootFolder(value) {
	m_rootFolder = value;
}

// called if the folder name is clicked in the tree
function doAction(doc, nodeId) {
    if (inExplorer()) {
        doActionFolderOpen(doc, nodeId);
    } else {
        doActionInsertSelected(doc, nodeId);
        doActionFolderOpen(doc, nodeId);
    }
}


function doActionFolderOpen(doc, nodeId) {
    setCurrentFolder(nodeId);
    nodeId = vr.actDirId;
    var params = "";
    if (includeFiles()) {
    	params += "&includefiles=true"
    }
    if (!isProjectAware()) {
    	params += "&projectaware=false"
    }
    if (tree.nodes[nodeId].childs != null) {
        setNoChilds(nodeId);
    }
    var nodeName = "";
    if (tree.nodes[nodeId].id == tree.root.id) {
        nodeName = "/";
        params += "&rootloaded=true";
    } else {
        nodeName = getNodeNameById(nodeId);
    }
    if (getTreeType() != null) {
    	params += "&type=" + getTreeType();
    }
    if (m_rootFolder != null) {
    	nodeName = m_rootFolder + nodeName.substring(1);    	
    }
    var target = "views/explorer/tree_files.jsp?resource=" + nodeName + params;
    tree_files.location.href = vr.contextPath + vr.workplacePath + target;
    if (inExplorer()) {
    	top.cancelNextOpen = false;
        top.openFolder(nodeName);
    }
}

function doActionInsertSelected(doc, nodeId) {
	var filePrefix = "";
	if (getSitePrefix() != null) {
		filePrefix = getSitePrefix();
	}
	window.opener.setFormValue(filePrefix + getNodeNameById(nodeId));
}


// called if a new folder is loded from the explorer file list
function updateCurrentFolder(doc, folderName) {
	if ((folderName != "/") && (folderName.charAt(folderName.length-1) == '/')) {
			folderName = folderName.substring(0, folderName.length-1);
	}
	if (m_rootFolder != null) {
		folderName = folderName.substring(m_rootFolder.length-1);
	}
	var nodeId = getNodeIdByName(folderName);
	var nodeName = null;
	var params = null;
	if (nodeId != null) {
		// node was already loaded, update it
		if (vr.actDirId != nodeId) {
			setCurrentFolder(nodeId);
			params = "&rootloaded=true";
		}
	} else {
		// node not loaded (or invalid), check last node that is loaded
		vr.actDirId = null;
		var lastKnown = folderName;
		var known = false;
		var lastKnownId = null;
		while (!known && (lastKnown != null) && !("/" == lastKnown)) {
			lastKnown = lastKnown.substring(0, lastKnown.lastIndexOf("/"));
			if (lastKnown == "") {
				lastKnown = "/";
			}
			lastKnownId = getNodeIdByName(lastKnown);
			known = (lastKnownId != null);
		}
		nodeId = lastKnownId;
		nodeName = folderName;
		params = "&lastknown=" + lastKnown;
	}
	if (params != null) {
		addNodeToLoad(nodeId, nodeName);
		loadNodeList(doc, params);
	}
}

function addNodeToLoad(nodeId, nodeName) {
	if (nodeName == null) {
		nodeName = getNodeNameById(nodeId);
	} else if (nodeId == null) {
		if ((nodeName != "/") && (nodeName.charAt(nodeName.length-1) == '/')) {
			nodeName = nodeName.substring(0, nodeName.length-1);
		}
		nodeId = getNodeIdByName(nodeName);
	}
	if (nodeName.charAt(nodeName.length-1) != '/') {
		nodeName += "/";
	}
	if (m_rootFolder != null) {
    	nodeName = m_rootFolder + nodeName.substring(1);    	
    }
	node = new nodeToLoad(nodeId, nodeName);	
	if (nodeListToLoad == null) {
		nodeListToLoad = new Array();
	}
	nodeListToLoad[nodeListToLoad.length] = node;
}

function loadNodeList(doc, params) {
	if (nodeListToLoad.length <= 0) {
		return;
	}	
	if (params == null) {
		params = "";
	}
    if (includeFiles()) {
    	params += "&includefiles=true"
    }
    if (!isProjectAware()) {
    	params += "&projectaware=false"
    }
   	if (getTreeType() != null) {
    		params += "&type=" + getTreeType();
    	}    	
	var nodeNames = "";
	for (i=0; i < nodeListToLoad.length; i++) {
		node = nodeListToLoad[i];
		if ((node.id != null) && (tree.nodes[node.id].childs != null)) {
			setNoChilds(node.id);
		}		
		nodeNames += node.name;	
		if (i < nodeListToLoad.length-1) {
			nodeNames += "|";
		}
	}		
	nodeListToLoad = null;
	var target = "views/explorer/tree_files.jsp?resource=" + nodeNames + params;
	tree_files.location.href = vr.contextPath + vr.workplacePath + target;	
}

// called if a +/- is clicked in the tree, or from updateCurrentFolder
function loadNode(doc, nodeId, nodeName, params) {
	addNodeToLoad(nodeId, nodeName);
	loadNodeList(doc, params);
}


// ensures that all folders up to the current folder are open
function setCurrentFolder(nodeId) {
	node = tree.nodes[nodeId];
	if ((node != null) && (! node.folder) && (node.parentId != null)) {
		// if a file is selected set it's parent folder
		node = tree.nodes[node.parentId];
	}
	if (node != null) {
		vr.actDirId = node.id;
		while ((node != null) && (node.id != tree.root.id)) {
			node.open = true;
			node = tree.nodes[node.parentId];
		}
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -