tree.js 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159
  1. // Licensed Materials - Property of IBM
  2. //
  3. // IBM Cognos Products: ps
  4. //
  5. // (C) Copyright IBM Corp. 2005, 2011
  6. //
  7. // US Government Users Restricted Rights - Use, duplication or disclosure restricted by GSA ADP Schedule Contract with IBM Corp.
  8. // Copyright (C) 2008 Cognos ULC, an IBM Company. All rights reserved.
  9. // Cognos (R) is a trademark of Cognos ULC, (formerly Cognos Incorporated).
  10. var treeMetadata;
  11. var treeRoot;
  12. var treeArray = new Array();
  13. var currentlySelectedNode = null;
  14. var currentValue = "";
  15. var currentName = "";
  16. var sTreeWebRoot = ".."; // default this to a relative location
  17. if (window.g_PS_getWebRoot)
  18. {
  19. if (g_PS_getWebRoot() != "")
  20. sTreeWebRoot = g_PS_getWebRoot(); // set up the official path to the C8 web root
  21. }
  22. function initTree(rootName, rootCaption, rootIcon)
  23. {
  24. try
  25. {
  26. if (typeof oCV == "undefined") {
  27. oCV = window;
  28. }
  29. }
  30. catch (e)
  31. {
  32. oCV = window;
  33. }
  34. oCV.preProcessControlArray=[];
  35. oCV.p_sSkinFolder= sTreeWebRoot + "/prompting/reportskin";
  36. oCV.bCanFinish=true;
  37. oCV.bNextPage=true;
  38. oCV.pageNavigationObserverArray=[];
  39. oCV.rangeObserverArray=[];
  40. oCV.multipleObserverArray=[];
  41. oCV.datePickerObserverArray=[];
  42. oCV.hasPromptKeyDown=false;
  43. //addHiddenInputHTML("pform", "p_[MULTIPLE]", "");
  44. var treeDiv = document.getElementById("LWMTreeOuterPane");
  45. treeMetadata = new CTree (treeDiv, "", false, false, "treeRoot", null, null, "");
  46. treeRoot = treeMetadata.getRootNode();
  47. var tNode = new CTreeNodeType(TREE_ROOT, true, rootIcon, rootIcon);
  48. tNode.setSelectable(true);
  49. treeMetadata.setRootNodeType(tNode);
  50. treeMetadata.setSelectionMode(SINGLE_TREE_SELECTION);
  51. treeMetadata.setForceSelectionAtLowestLevel(true);
  52. treeMetadata.setNodesCanHaveChildren(true);
  53. treeMetadata.setDisabled(false);
  54. treeMetadata.setRootNodeShowing(true);
  55. treeMetadata.getRootNode().setName(rootCaption);
  56. treeMetadata.setLoadOnTheFlyFunction(null);
  57. treeMetadata.setContextMenu(treeContextMenuFunc);
  58. treeMetadata.setSingleClickFunc(treeContextMenuFunc);
  59. treeMetadata.setRecursiveSelect(false);
  60. treeMetadata.setHideOuterTable(false);
  61. }
  62. function getSelectedNode()
  63. {
  64. if (currentlySelectedNode != null)
  65. {
  66. return currentlySelectedNode.getValue();
  67. }
  68. }
  69. function getSelectedValue()
  70. {
  71. return currentValue;
  72. }
  73. function getSelectedName()
  74. {
  75. return currentName;
  76. }
  77. function treeFocus () {
  78. //no-op
  79. }
  80. function treeContextMenuFunc(evt)
  81. {
  82. //get the event in a cross-browser fashion
  83. evt = (evt) ? evt : ((event) ? event : null);
  84. if ((evt !== null) && (evt.keyCode != null) && (evt.keyCode != 13) && (evt.keyCode !== 0))
  85. {
  86. return false;
  87. }
  88. //cancel any text selection
  89. clearSelection();
  90. //prevent the event from bubbling to other elements
  91. cancelBub(evt);
  92. //get UI Node
  93. var uiNode = getUINode(evt);
  94. var uiNodeTreeRef = uiNode.getAttribute(gsCTREE_treeRef).toString();
  95. //get the tree object
  96. var tree = uiNode.getAttribute(gsCTREE_tree).toString();
  97. //get tree Node
  98. var node = getTreeNode(tree, uiNodeTreeRef);
  99. var oTree = node.getTree();
  100. currentValue = node.getValue();
  101. currentName = node.getName();
  102. currentlySelectedNode = node;
  103. }
  104. function addNode(typeNode, level, name, value, icon, parentName, parentCaption, prevSelectedName, prevSelectedValue)
  105. {
  106. if (typeNode == 'itemGroup')
  107. {
  108. var nodeType = new CTreeNodeType(TREE_FOLDER, false, icon, icon);
  109. nodeType.setSelectable(true);
  110. var node = null;
  111. var parentNode = treeRoot;
  112. if (level > 0 && parentName != 'undefined' && treeArray[parentName] != null)
  113. {
  114. parentNode = treeArray[parentName];
  115. node = new CTreeNode(parentNode, nodeType, false, name, value, false);
  116. parentNode.getTree().childrenReadyForNode(parentNode);
  117. } else {
  118. node = new CTreeNode(treeRoot, nodeType, false, name, value, false);
  119. }
  120. node.setTooltip(name);
  121. node.setCanHaveChildren(true);
  122. node.setOpen(true);
  123. treeArray[value] = node;
  124. } else if (typeNode == 'item')
  125. {
  126. var nodeType = new CTreeNodeType(TREE_ITEM, false, icon, icon);
  127. nodeType.setSelectable(true);
  128. var parentNode = treeRoot;
  129. var node = null;
  130. var selected = false;
  131. if (prevSelectedName != '' && prevSelectedValue != '' && prevSelectedName == name && prevSelectedValue == value)
  132. {
  133. selected = true;
  134. //set the current value and name
  135. currentValue = prevSelectedValue;
  136. currentName = prevSelectedName;
  137. }
  138. if (level > 0 && parentName != 'undefined' && treeArray[parentName] != null)
  139. {
  140. parentNode = treeArray[parentName];
  141. node = new CTreeNode(parentNode, nodeType, false, name, value, selected);
  142. } else {
  143. node = new CTreeNode(treeRoot, nodeType, false, name, value, selected);
  144. }
  145. node.setCanHaveChildren(false);
  146. }
  147. }