PlotPanel.js 8.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248
  1. /* Copyright© 2000 - 2021 SuperMap Software Co.Ltd. All rights reserved.*/
  2. L.supermap.plotting.initPlotPanel = function(div, serverUrl, drawControl){
  3. var plotPanel = document.getElementById(div);
  4. var treeNodeStyle = document.createElement("div");
  5. treeNodeStyle.style.height = '50%';
  6. treeNodeStyle.style.width = '100%';
  7. treeNodeStyle.style.border = '1px solid #617775';
  8. treeNodeStyle.style.overflow ='scroll';
  9. var treeNode = document.createElement("div");
  10. treeNode.id = "tree";
  11. treeNode.className = "ztree";
  12. var iconNodeStyle = document.createElement("div");
  13. iconNodeStyle.style.height = '50%';
  14. iconNodeStyle.style.width = '100%';
  15. var iconNode = document.createElement("div");
  16. iconNode.id = "icon";
  17. iconNode.style.height = '100%';
  18. iconNode.style.width = '100%';
  19. iconNode.style.border = '1px solid #617775';
  20. iconNode.style.overflow ='scroll';
  21. treeNodeStyle.appendChild(treeNode);
  22. iconNodeStyle.appendChild(iconNode);
  23. plotPanel.appendChild(treeNodeStyle);
  24. plotPanel.appendChild(iconNodeStyle);
  25. function beforeClickTreeNode(treeId, treeNode){
  26. var tree = $.fn.zTree.getZTreeObj(treeId);
  27. if (treeNode.isParent) {
  28. tree.expandNode(treeNode);
  29. return false;
  30. } else {
  31. var iconNode = document.getElementById("icon");
  32. iconNode.innerHTML = "";
  33. createDrawNodes(treeNode, iconNode, drawControl, serverUrl);
  34. }
  35. }
  36. var setting = {
  37. view: {
  38. dblClickExpand: false,
  39. showLine: true,
  40. selectedMulti: false
  41. },
  42. data: {
  43. simpleData: {
  44. enable:true,
  45. idKey: "id",
  46. pIdKey: "pId",
  47. rootPId: 0
  48. }
  49. },
  50. callback: {
  51. beforeClick: beforeClickTreeNode
  52. }
  53. };
  54. var symbolLibManager = L.supermap.plotting.symbolLibManager(serverUrl);
  55. if(symbolLibManager.isInitializeOK()){
  56. var symbolTreeData = analysisSymbolTree(symbolLibManager);
  57. $.fn.zTree.init($("#tree"), setting, symbolTreeData);
  58. } else {
  59. symbolLibManager.on(SuperMap.Plot.Event.initializecompleted, function(result){
  60. if(result.libIDs.length !== 0){
  61. var symbolTreeData = analysisSymbolTree(symbolLibManager);
  62. $.fn.zTree.init($("#tree"), setting, symbolTreeData);
  63. }});
  64. symbolLibManager.initializeAsync();
  65. }
  66. }
  67. function analysisSymbolTree(symbolLibManager) {
  68. var treeData = [];
  69. var idIndex = addBasicCellTreeNodes(treeData);
  70. var idIndex = addRouteTreeNodes(treeData);
  71. for(var i = 0; i < symbolLibManager.getSymbolLibNumber(); i++){
  72. var symbolLib = symbolLibManager.getSymbolLibByIndex(i);
  73. var rootSymbolInfo = symbolLib.getRootSymbolInfo();
  74. var rootSymbolIconUrl = symbolLib.getRootSymbolIconUrl();
  75. if(rootSymbolInfo.symbolNodeType === "SYMBOL_GROUP"){
  76. var rootNode = new Object();
  77. rootNode.id = idIndex+i;
  78. rootNode.pId = 0;
  79. rootNode.name = rootSymbolInfo.symbolName;
  80. rootNode.fullName = rootSymbolInfo.symbolName +"/";
  81. treeData.push(rootNode);
  82. idIndex = innerAnalysisSymbolTree(rootSymbolInfo.childNodes, treeData, rootNode, rootSymbolIconUrl);
  83. }
  84. }
  85. return treeData;
  86. }
  87. function createDrawNodes(treeNode, iconNode, drawControl, serverUrl){
  88. var drawNodeClick = function(){
  89. if(drawControl !== null){
  90. drawControl.handler.libID = this.libID;
  91. drawControl.handler.code = this.symbolCode;
  92. drawControl.handler.serverUrl = this.serverUrl;
  93. drawControl.handler.disable();
  94. drawControl.handler.enable();
  95. }
  96. }
  97. var me = this;
  98. var drawData = treeNode.drawData;
  99. var table = document.createElement("table");
  100. table.style.height = "100%";
  101. table.style.width = "100%";
  102. var i = 0;
  103. var rowLength = (drawData.length%3 === 0) ? drawData.length/3 : drawData.length/3+1;
  104. for(var j = 0; j < rowLength; j++){
  105. var tr = document.createElement("tr");
  106. for(var k = 0; k < 3; k++){
  107. if(drawData[i]){
  108. //存储菜单信息
  109. var td = document.createElement("td");
  110. var drawNode = document.createElement("div");
  111. drawNode.onclick = drawNodeClick;
  112. drawNode.style.textAlign = "center";
  113. drawNode.id = drawData[i].libID+ ""+ drawData[i].symbolCode;
  114. drawNode.libID = drawData[i].libID;
  115. drawNode.symbolCode = drawData[i].symbolCode;
  116. drawNode.serverUrl = serverUrl;
  117. //图片
  118. var img = document.createElement("img");
  119. img.src = drawData[i].icon;
  120. //文本
  121. var text = document.createElement("div");
  122. text.innerHTML = drawData[i].symbolName;
  123. drawNode.appendChild(img);
  124. drawNode.appendChild(text);
  125. td.appendChild(drawNode);
  126. tr.appendChild(td);
  127. }
  128. i++;
  129. }
  130. table.appendChild(tr);
  131. }
  132. iconNode.appendChild(table);
  133. }
  134. function addBasicCellTreeNodes(treeData){
  135. var cellRootNode = new Object();
  136. cellRootNode.id = 1;
  137. cellRootNode.pId = 0;
  138. cellRootNode.name = "基本标号";
  139. cellRootNode.fullName = "BasicCell" +"/";
  140. cellRootNode.drawData = [];
  141. treeData.push(cellRootNode);
  142. var symbolCode = [24, 28, 29, 31, 34, 410, 32, 590, 360, 390, 400, 350, 26, 370, 380, 44, 48, 320
  143. , 1019, 1022,1024,321,1023,1025
  144. ,1013, 1014, 1016, 1017,1026
  145. ,1001, 1003, 1004,1028];
  146. var symbolName = ["折线", "平行四边形", "圆", "椭圆", "注记", "正多边形", "多边形", "贝赛尔曲线", "闭合贝赛尔曲线"
  147. , "集结地", "大括号", "梯形", "矩形", "弓形", "扇形", "弧线", "平行线", "注记指示框"
  148. , "同心圆", "组合圆","标注框","多角标注框","自由线", "节点链"
  149. , "跑道形", "八字形", "箭头线", "沿线注记","线型标注"
  150. , "对象间连线", "多边形区域","扇形区域","铁丝网"];
  151. var cellId = cellRootNode.id + 1;
  152. for(var i = 0; i < symbolCode.length; i++){
  153. var drawCellNode = {
  154. id: cellId++,
  155. pId: 0,
  156. icon:"../img/plottingPanel/" + cellRootNode.fullName + symbolCode[i] + ".png",
  157. symbolCode: symbolCode[i],
  158. libID: 0,
  159. symbolName: symbolName[i]
  160. };
  161. cellRootNode.drawData.push(drawCellNode);
  162. }
  163. return cellId;
  164. }
  165. function addRouteTreeNodes(treeData){
  166. var cellRootNode = new Object();
  167. cellRootNode.id = 1;
  168. cellRootNode.pId = 0;
  169. cellRootNode.name = "航线对象";
  170. cellRootNode.drawData = [];
  171. treeData.push(cellRootNode);
  172. var symbolCode = [1005,1006,1007];
  173. var symbolName = ["航线1","航线2","航线3"];
  174. var cellId = cellRootNode.id + 1;
  175. for(var i = 0; i < symbolCode.length; i++){
  176. var drawCellNode = {
  177. id: cellId++,
  178. pId: 0,
  179. icon:"../img/plottingPanel/BasicCell/RouteIcon/" + symbolCode[i] + ".png",
  180. symbolCode: symbolCode[i],
  181. libID: 0,
  182. symbolName: symbolName[i]
  183. };
  184. cellRootNode.drawData.push(drawCellNode);
  185. }
  186. return cellId;
  187. }
  188. function innerAnalysisSymbolTree(childSymbolInfos, treeData, parentNode, rootSymbolIconUrl){
  189. var drawData = [];
  190. var treeNodeId = parentNode.id+1;
  191. for(var i = 0; i < childSymbolInfos.length; i++){
  192. if(childSymbolInfos[i].symbolNodeType === "SYMBOL_GROUP"){
  193. var treeNode = new Object();
  194. treeNode.id = treeNodeId++;
  195. treeNode.pId = parentNode.id;
  196. treeNode.name = childSymbolInfos[i].symbolName;
  197. treeNode.fullName = parentNode.fullName + childSymbolInfos[i].symbolName+"/";
  198. treeData.push(treeNode);
  199. treeNodeId = innerAnalysisSymbolTree(childSymbolInfos[i].childNodes, treeData, treeNode, rootSymbolIconUrl);
  200. } else if(childSymbolInfos[i].symbolNodeType === "SYMBOL_NODE"){
  201. var drawNode = new Object();
  202. drawNode.id = treeNodeId++;
  203. drawNode.pId = parentNode.id;
  204. drawNode.icon = rootSymbolIconUrl + parentNode.fullName + childSymbolInfos[i].symbolCode + ".png";
  205. drawNode.symbolCode = childSymbolInfos[i].symbolCode;
  206. drawNode.libID = childSymbolInfos[i].libID;
  207. drawNode.symbolName = childSymbolInfos[i].symbolName + "_" + childSymbolInfos[i].symbolCode;
  208. drawData.push(drawNode);
  209. }
  210. }
  211. if(drawData.length !== 0){
  212. parentNode.drawData = drawData;
  213. }
  214. return treeNodeId;
  215. }