TreePanel.js 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183
  1. /**
  2. *
  3. * Class: SuperMap.Plotting.PlotPanel
  4. * 标绘面板类。
  5. *
  6. */
  7. SuperMap.Plotting.TreePanel = new SuperMap.Class({
  8. /**
  9. * Constant: EVENT_TYPES
  10. * {Array(String)}
  11. *
  12. * 此类支持的事件类型:
  13. * - *clickTreeNode* 点击态势图文件列表上节点时触发。
  14. */
  15. EVENT_TYPES: ["clickTreeNode"],
  16. /**
  17. * APIProperty: events
  18. * {<SuperMap.Events>} 在 TreePanel 类中处理所有事件的对象,支持两种事件 initializeCompleted ,初始化完成时触发 initializeCompleted 事件。
  19. *
  20. * 例如:
  21. * (start code)
  22. * var treePanel = SuperMap.Plotting.TreePanel(url);
  23. * treePanel.events.on({
  24. * "clickTreeNode": clickTreeNode
  25. * }
  26. * );
  27. * treePanel.initializeTree(smlInfos);
  28. * (end)
  29. */
  30. events: null,
  31. /**
  32. * APIProperty: eventListeners
  33. * {Object} 监听器对象,在构造函数中设置此参数(可选),对 TreePanel 支持的两个事件 initializeCompleted 进行监听,相当于调用 SuperMap.Events.on(eventListeners)。
  34. */
  35. eventListeners: null,
  36. /**
  37. * APIProperty: 点击的节点态势图文件名
  38. */
  39. clickSmlFileName: "",
  40. /**
  41. * Constructor: SuperMap.Plotting.TreePanel
  42. * 态势图列表UI面板。
  43. *
  44. * Parameters:
  45. * div - {String} 态势图列表UI面板div
  46. *
  47. * Returns:
  48. * {<SuperMap.Plotting.TreePanel>} 结果类型对象。
  49. */
  50. initialize : function(div){
  51. this.events = new SuperMap.Events(
  52. this, null, this.EVENT_TYPES, true
  53. );
  54. if (this.eventListeners instanceof Object) {
  55. this.events.on(this.eventListeners);
  56. }
  57. var plotPanel = document.getElementById(div);
  58. var treeNodeStyle = document.createElement("div");
  59. treeNodeStyle.style.height = '100%';
  60. treeNodeStyle.style.width = '100%';
  61. treeNodeStyle.style.border = '1px solid #617775';
  62. treeNodeStyle.style.overflow ='scroll';
  63. var treeNode = document.createElement("div");
  64. treeNode.id = "tree";
  65. treeNode.className = "ztree";
  66. treeNodeStyle.appendChild(treeNode);
  67. plotPanel.appendChild(treeNodeStyle);
  68. },
  69. /**
  70. * APIMethod: initializeTree
  71. * 初始化态势图列表UI面板。
  72. *
  73. * Parameters:
  74. * smlInfos - {Array(Object)} 需要展示的态势图列表。
  75. */
  76. initializeTree : function(smlInfos){
  77. function beforeClickTreeNode(treeId, treeNode){
  78. var tree = $.fn.zTree.getZTreeObj(treeId);
  79. if (treeNode.isParent) {
  80. tree.expandNode(treeNode);
  81. if (treeNode.pId===1) {
  82. me.clickSmlFileName = treeNode.name;
  83. me.events.triggerEvent("clickTreeNode");
  84. }
  85. return false;
  86. }
  87. }
  88. var me = this;
  89. var setting = {
  90. view: {
  91. dblClickExpand: false,
  92. showLine: true,
  93. selectedMulti: false,
  94. showIcon:false
  95. },
  96. data: {
  97. simpleData: {
  98. enable:true,
  99. idKey: "id",
  100. pIdKey: "pId",
  101. rootPId: 0
  102. }
  103. },
  104. callback: {
  105. beforeClick: beforeClickTreeNode
  106. }
  107. };
  108. var symbolTreeData = this.analysisSMLInfos(smlInfos);
  109. $.fn.zTree.init($("#tree"), setting, symbolTreeData);
  110. },
  111. /**
  112. * Method: analysisSMLInfos
  113. * 初始化态势图列表UI面板的树节点信息。
  114. *
  115. * Parameters:
  116. * smlInfos - {Array(Object)} 需要展示的态势图列表。
  117. */
  118. analysisSMLInfos:function(smlInfos){
  119. var treeData = [];
  120. var cellRootNode = new Object();
  121. cellRootNode.id = 1;
  122. cellRootNode.pId = 0;
  123. cellRootNode.name = "态势图文件列表";
  124. cellRootNode.fullName = "态势图文件列表" +"/";
  125. treeData.push(cellRootNode);
  126. var cellId = cellRootNode.id + 1;
  127. var nid= cellId+1;
  128. for(var i = 0; i < smlInfos.length; i++){
  129. var info = new SuperMap.Plot.SMLInfoStruct(smlInfos[i]);
  130. var result = info;
  131. var rootNode = new Object();
  132. rootNode.id = cellId++;
  133. rootNode.pId = 1;
  134. rootNode.name = smlInfos[i].SMLFileName;
  135. treeData.push(rootNode);
  136. cellId = rootNode.id + 1;
  137. var key = ["SMLAuthor","SMLDepat","SMLDesc","SMLName","SMLSeclevel","SMLTime"];
  138. var value = [result.SMLAuthor,result.SMLDepat,result.SMLDesc,result.SMLName,result.SMLSeclevel,result.SMLTime];
  139. for(var j = 0; j < 6; j++){
  140. var chrootNode = new Object();
  141. chrootNode.id = cellId++;
  142. chrootNode.pId = rootNode.id;
  143. chrootNode.name = key[j]+":"+value[j];
  144. treeData.push(chrootNode);
  145. }
  146. }
  147. return treeData;
  148. },
  149. CLASS_NAME: "SuperMap.Plotting.TreePanel"
  150. });