You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

220 lines
9.2 KiB

4 years ago
  1. //CdnPath=http://ajax.aspnetcdn.com/ajax/4.5.1/1/TreeView.js
  2. function TreeView_HoverNode(data, node) {
  3. if (!data) {
  4. return;
  5. }
  6. node.hoverClass = data.hoverClass;
  7. WebForm_AppendToClassName(node, data.hoverClass);
  8. if (__nonMSDOMBrowser) {
  9. node = node.childNodes[node.childNodes.length - 1];
  10. }
  11. else {
  12. node = node.children[node.children.length - 1];
  13. }
  14. node.hoverHyperLinkClass = data.hoverHyperLinkClass;
  15. WebForm_AppendToClassName(node, data.hoverHyperLinkClass);
  16. }
  17. function TreeView_GetNodeText(node) {
  18. var trNode = WebForm_GetParentByTagName(node, "TR");
  19. var outerNodes;
  20. if (trNode.childNodes[trNode.childNodes.length - 1].getElementsByTagName) {
  21. outerNodes = trNode.childNodes[trNode.childNodes.length - 1].getElementsByTagName("A");
  22. if (!outerNodes || outerNodes.length == 0) {
  23. outerNodes = trNode.childNodes[trNode.childNodes.length - 1].getElementsByTagName("SPAN");
  24. }
  25. }
  26. var textNode = (outerNodes && outerNodes.length > 0) ?
  27. outerNodes[0].childNodes[0] :
  28. trNode.childNodes[trNode.childNodes.length - 1].childNodes[0];
  29. return (textNode && textNode.nodeValue) ? textNode.nodeValue : "";
  30. }
  31. function TreeView_PopulateNode(data, index, node, selectNode, selectImageNode, lineType, text, path, databound, datapath, parentIsLast) {
  32. if (!data) {
  33. return;
  34. }
  35. var context = new Object();
  36. context.data = data;
  37. context.node = node;
  38. context.selectNode = selectNode;
  39. context.selectImageNode = selectImageNode;
  40. context.lineType = lineType;
  41. context.index = index;
  42. context.isChecked = "f";
  43. var tr = WebForm_GetParentByTagName(node, "TR");
  44. if (tr) {
  45. var checkbox = tr.getElementsByTagName("INPUT");
  46. if (checkbox && (checkbox.length > 0)) {
  47. for (var i = 0; i < checkbox.length; i++) {
  48. if (checkbox[i].type.toLowerCase() == "checkbox") {
  49. if (checkbox[i].checked) {
  50. context.isChecked = "t";
  51. }
  52. break;
  53. }
  54. }
  55. }
  56. }
  57. var param = index + "|" + data.lastIndex + "|" + databound + context.isChecked + parentIsLast + "|" +
  58. text.length + "|" + text + datapath.length + "|" + datapath + path;
  59. TreeView_PopulateNodeDoCallBack(context, param);
  60. }
  61. function TreeView_ProcessNodeData(result, context) {
  62. var treeNode = context.node;
  63. if (result.length > 0) {
  64. var ci = result.indexOf("|", 0);
  65. context.data.lastIndex = result.substring(0, ci);
  66. ci = result.indexOf("|", ci + 1);
  67. var newExpandState = result.substring(context.data.lastIndex.length + 1, ci);
  68. context.data.expandState.value += newExpandState;
  69. var chunk = result.substr(ci + 1);
  70. var newChildren, table;
  71. if (__nonMSDOMBrowser) {
  72. var newDiv = document.createElement("div");
  73. newDiv.innerHTML = chunk;
  74. table = WebForm_GetParentByTagName(treeNode, "TABLE");
  75. newChildren = null;
  76. if ((typeof(table.nextSibling) == "undefined") || (table.nextSibling == null)) {
  77. table.parentNode.insertBefore(newDiv.firstChild, table.nextSibling);
  78. newChildren = table.previousSibling;
  79. }
  80. else {
  81. table = table.nextSibling;
  82. table.parentNode.insertBefore(newDiv.firstChild, table);
  83. newChildren = table.previousSibling;
  84. }
  85. newChildren = document.getElementById(treeNode.id + "Nodes");
  86. }
  87. else {
  88. table = WebForm_GetParentByTagName(treeNode, "TABLE");
  89. table.insertAdjacentHTML("afterEnd", chunk);
  90. newChildren = document.all[treeNode.id + "Nodes"];
  91. }
  92. if ((typeof(newChildren) != "undefined") && (newChildren != null)) {
  93. TreeView_ToggleNode(context.data, context.index, treeNode, context.lineType, newChildren);
  94. treeNode.href = document.getElementById ?
  95. "javascript:TreeView_ToggleNode(" + context.data.name + "," + context.index + ",document.getElementById('" + treeNode.id + "'),'" + context.lineType + "',document.getElementById('" + newChildren.id + "'))" :
  96. "javascript:TreeView_ToggleNode(" + context.data.name + "," + context.index + "," + treeNode.id + ",'" + context.lineType + "'," + newChildren.id + ")";
  97. if ((typeof(context.selectNode) != "undefined") && (context.selectNode != null) && context.selectNode.href &&
  98. (context.selectNode.href.indexOf("javascript:TreeView_PopulateNode", 0) == 0)) {
  99. context.selectNode.href = treeNode.href;
  100. }
  101. if ((typeof(context.selectImageNode) != "undefined") && (context.selectImageNode != null) && context.selectNode.href &&
  102. (context.selectImageNode.href.indexOf("javascript:TreeView_PopulateNode", 0) == 0)) {
  103. context.selectImageNode.href = treeNode.href;
  104. }
  105. }
  106. context.data.populateLog.value += context.index + ",";
  107. }
  108. else {
  109. var img = treeNode.childNodes ? treeNode.childNodes[0] : treeNode.children[0];
  110. if ((typeof(img) != "undefined") && (img != null)) {
  111. var lineType = context.lineType;
  112. if (lineType == "l") {
  113. img.src = context.data.images[13];
  114. }
  115. else if (lineType == "t") {
  116. img.src = context.data.images[10];
  117. }
  118. else if (lineType == "-") {
  119. img.src = context.data.images[16];
  120. }
  121. else {
  122. img.src = context.data.images[3];
  123. }
  124. var pe;
  125. if (__nonMSDOMBrowser) {
  126. pe = treeNode.parentNode;
  127. pe.insertBefore(img, treeNode);
  128. pe.removeChild(treeNode);
  129. }
  130. else {
  131. pe = treeNode.parentElement;
  132. treeNode.style.visibility="hidden";
  133. treeNode.style.display="none";
  134. pe.insertAdjacentElement("afterBegin", img);
  135. }
  136. }
  137. }
  138. }
  139. function TreeView_SelectNode(data, node, nodeId) {
  140. if (!data) {
  141. return;
  142. }
  143. if ((typeof(data.selectedClass) != "undefined") && (data.selectedClass != null)) {
  144. var id = data.selectedNodeID.value;
  145. if (id.length > 0) {
  146. var selectedNode = document.getElementById(id);
  147. if ((typeof(selectedNode) != "undefined") && (selectedNode != null)) {
  148. WebForm_RemoveClassName(selectedNode, data.selectedHyperLinkClass);
  149. selectedNode = WebForm_GetParentByTagName(selectedNode, "TD");
  150. WebForm_RemoveClassName(selectedNode, data.selectedClass);
  151. }
  152. }
  153. WebForm_AppendToClassName(node, data.selectedHyperLinkClass);
  154. node = WebForm_GetParentByTagName(node, "TD");
  155. WebForm_AppendToClassName(node, data.selectedClass)
  156. }
  157. data.selectedNodeID.value = nodeId;
  158. }
  159. function TreeView_ToggleNode(data, index, node, lineType, children) {
  160. if (!data) {
  161. return;
  162. }
  163. var img = node.childNodes[0];
  164. var newExpandState;
  165. try {
  166. if (children.style.display == "none") {
  167. children.style.display = "block";
  168. newExpandState = "e";
  169. if ((typeof(img) != "undefined") && (img != null)) {
  170. if (lineType == "l") {
  171. img.src = data.images[15];
  172. }
  173. else if (lineType == "t") {
  174. img.src = data.images[12];
  175. }
  176. else if (lineType == "-") {
  177. img.src = data.images[18];
  178. }
  179. else {
  180. img.src = data.images[5];
  181. }
  182. img.alt = data.collapseToolTip.replace(/\{0\}/, TreeView_GetNodeText(node));
  183. }
  184. }
  185. else {
  186. children.style.display = "none";
  187. newExpandState = "c";
  188. if ((typeof(img) != "undefined") && (img != null)) {
  189. if (lineType == "l") {
  190. img.src = data.images[14];
  191. }
  192. else if (lineType == "t") {
  193. img.src = data.images[11];
  194. }
  195. else if (lineType == "-") {
  196. img.src = data.images[17];
  197. }
  198. else {
  199. img.src = data.images[4];
  200. }
  201. img.alt = data.expandToolTip.replace(/\{0\}/, TreeView_GetNodeText(node));
  202. }
  203. }
  204. }
  205. catch(e) {}
  206. data.expandState.value = data.expandState.value.substring(0, index) + newExpandState + data.expandState.value.slice(index + 1);
  207. }
  208. function TreeView_UnhoverNode(node) {
  209. if (!node.hoverClass) {
  210. return;
  211. }
  212. WebForm_RemoveClassName(node, node.hoverClass);
  213. if (__nonMSDOMBrowser) {
  214. node = node.childNodes[node.childNodes.length - 1];
  215. }
  216. else {
  217. node = node.children[node.children.length - 1];
  218. }
  219. WebForm_RemoveClassName(node, node.hoverHyperLinkClass);
  220. }