dcim-topology2d 2.2.3 → 2.2.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (191) hide show
  1. package/chart-diagram/src/echarts/index.js +2 -1
  2. package/chart-diagram/src/utils/conversion.js +12 -3
  3. package/core/src/activeLayer.d.ts +2 -0
  4. package/core/src/activeLayer.js +13 -0
  5. package/core/src/common.d.ts +1 -1
  6. package/core/src/common.js +109 -47
  7. package/core/src/core.d.ts +1 -1
  8. package/core/src/core.js +389 -317
  9. package/core/src/divLayer.js +65 -28
  10. package/core/src/element/select.js +2 -1
  11. package/core/src/healps/changeData.d.ts +0 -1
  12. package/core/src/healps/changeData.js +0 -4
  13. package/core/src/middles/default.js +8 -3
  14. package/core/src/middles/index.d.ts +1 -0
  15. package/core/src/middles/index.js +1 -0
  16. package/core/src/middles/nodes/{arbitrarygraph.anchor.d.ts → basic/arbitrarygraph.anchor.d.ts} +1 -1
  17. package/core/src/middles/nodes/{arbitrarygraph.anchor.js → basic/arbitrarygraph.anchor.js} +1 -1
  18. package/core/src/middles/nodes/{arbitrarygraph.d.ts → basic/arbitrarygraph.d.ts} +1 -1
  19. package/core/src/middles/nodes/{arrow.anchor.d.ts → basic/arrow.anchor.d.ts} +1 -1
  20. package/core/src/middles/nodes/{arrow.anchor.js → basic/arrow.anchor.js} +2 -2
  21. package/core/src/middles/nodes/{arrow.d.ts → basic/arrow.d.ts} +1 -1
  22. package/core/src/middles/nodes/{arrow.rect.d.ts → basic/arrow.rect.d.ts} +1 -1
  23. package/core/src/middles/nodes/{arrow.rect.js → basic/arrow.rect.js} +1 -1
  24. package/core/src/middles/nodes/{circle.anchor.d.ts → basic/circle.anchor.d.ts} +1 -1
  25. package/core/src/middles/nodes/{circle.anchor.js → basic/circle.anchor.js} +2 -2
  26. package/core/src/middles/nodes/{circle.d.ts → basic/circle.d.ts} +1 -1
  27. package/core/src/middles/nodes/basic/circle.js +8 -0
  28. package/core/src/middles/nodes/{circle.rect.d.ts → basic/circle.rect.d.ts} +1 -1
  29. package/core/src/middles/nodes/{circle.rect.js → basic/circle.rect.js} +1 -1
  30. package/core/src/middles/nodes/{cloud.anchor.d.ts → basic/cloud.anchor.d.ts} +1 -1
  31. package/core/src/middles/nodes/{cloud.anchor.js → basic/cloud.anchor.js} +2 -2
  32. package/core/src/middles/nodes/{cloud.d.ts → basic/cloud.d.ts} +1 -1
  33. package/core/src/middles/nodes/{cloud.rect.d.ts → basic/cloud.rect.d.ts} +1 -1
  34. package/core/src/middles/nodes/{cloud.rect.js → basic/cloud.rect.js} +1 -1
  35. package/core/src/middles/nodes/{cube.anchor.d.ts → basic/cube.anchor.d.ts} +1 -1
  36. package/core/src/middles/nodes/{cube.anchor.js → basic/cube.anchor.js} +2 -2
  37. package/core/src/middles/nodes/{cube.d.ts → basic/cube.d.ts} +1 -1
  38. package/core/src/middles/nodes/{cube.model.d.ts → basic/cube.model.d.ts} +2 -2
  39. package/core/src/middles/nodes/{cube.model.js → basic/cube.model.js} +2 -2
  40. package/core/src/middles/nodes/{cube.rect.d.ts → basic/cube.rect.d.ts} +1 -1
  41. package/core/src/middles/nodes/{cube.rect.js → basic/cube.rect.js} +1 -1
  42. package/core/src/middles/nodes/{diamond.d.ts → basic/diamond.d.ts} +1 -1
  43. package/core/src/middles/nodes/{diamond.rect.d.ts → basic/diamond.rect.d.ts} +1 -1
  44. package/core/src/middles/nodes/{diamond.rect.js → basic/diamond.rect.js} +1 -1
  45. package/core/src/middles/nodes/{file.d.ts → basic/file.d.ts} +1 -1
  46. package/core/src/middles/nodes/{iframe.d.ts → basic/iframe.d.ts} +1 -1
  47. package/core/src/middles/nodes/{iframe.js → basic/iframe.js} +7 -5
  48. package/core/src/middles/nodes/{image.anchor.d.ts → basic/image.anchor.d.ts} +1 -1
  49. package/core/src/middles/nodes/{image.anchor.js → basic/image.anchor.js} +2 -2
  50. package/core/src/middles/nodes/{image.rect.d.ts → basic/image.rect.d.ts} +1 -1
  51. package/core/src/middles/nodes/{image.rect.js → basic/image.rect.js} +1 -1
  52. package/core/src/middles/nodes/{line.anchor.d.ts → basic/line.anchor.d.ts} +1 -1
  53. package/core/src/middles/nodes/{line.anchor.js → basic/line.anchor.js} +2 -2
  54. package/core/src/middles/nodes/{line.d.ts → basic/line.d.ts} +1 -1
  55. package/core/src/middles/nodes/{line.rect.d.ts → basic/line.rect.d.ts} +1 -1
  56. package/core/src/middles/nodes/{line.rect.js → basic/line.rect.js} +1 -1
  57. package/core/src/middles/nodes/{message.anchor.d.ts → basic/message.anchor.d.ts} +1 -1
  58. package/core/src/middles/nodes/{message.anchor.js → basic/message.anchor.js} +2 -2
  59. package/core/src/middles/nodes/{message.d.ts → basic/message.d.ts} +1 -1
  60. package/core/src/middles/nodes/{message.rect.d.ts → basic/message.rect.d.ts} +1 -1
  61. package/core/src/middles/nodes/{message.rect.js → basic/message.rect.js} +1 -1
  62. package/core/src/middles/nodes/{pentagon.anchor.d.ts → basic/pentagon.anchor.d.ts} +1 -1
  63. package/core/src/middles/nodes/{pentagon.anchor.js → basic/pentagon.anchor.js} +2 -2
  64. package/core/src/middles/nodes/{pentagon.d.ts → basic/pentagon.d.ts} +1 -1
  65. package/core/src/middles/nodes/{pentagon.rect.d.ts → basic/pentagon.rect.d.ts} +1 -1
  66. package/core/src/middles/nodes/{pentagon.rect.js → basic/pentagon.rect.js} +1 -1
  67. package/core/src/middles/nodes/{pentagram.anchor.d.ts → basic/pentagram.anchor.d.ts} +1 -1
  68. package/core/src/middles/nodes/{pentagram.anchor.js → basic/pentagram.anchor.js} +2 -2
  69. package/core/src/middles/nodes/{pentagram.d.ts → basic/pentagram.d.ts} +1 -1
  70. package/core/src/middles/nodes/{pentagram.rect.d.ts → basic/pentagram.rect.d.ts} +1 -1
  71. package/core/src/middles/nodes/{pentagram.rect.js → basic/pentagram.rect.js} +1 -1
  72. package/core/src/middles/nodes/{people.d.ts → basic/people.d.ts} +1 -1
  73. package/core/src/middles/nodes/{people.rect.d.ts → basic/people.rect.d.ts} +1 -1
  74. package/core/src/middles/nodes/{people.rect.js → basic/people.rect.js} +1 -1
  75. package/core/src/middles/nodes/{rectangle.d.ts → basic/rectangle.d.ts} +1 -1
  76. package/core/src/middles/nodes/{rectangle.js → basic/rectangle.js} +1 -1
  77. package/core/src/middles/nodes/{rectangle.rect.d.ts → basic/rectangle.rect.d.ts} +1 -1
  78. package/core/src/middles/nodes/{rectangle.rect.js → basic/rectangle.rect.js} +1 -1
  79. package/core/src/middles/nodes/{text.d.ts → basic/text.d.ts} +3 -2
  80. package/core/src/middles/nodes/{triangle.anchor.d.ts → basic/triangle.anchor.d.ts} +1 -1
  81. package/core/src/middles/nodes/{triangle.anchor.js → basic/triangle.anchor.js} +2 -2
  82. package/core/src/middles/nodes/{triangle.d.ts → basic/triangle.d.ts} +1 -1
  83. package/core/src/middles/nodes/{triangle.rect.d.ts → basic/triangle.rect.d.ts} +1 -1
  84. package/core/src/middles/nodes/{triangle.rect.js → basic/triangle.rect.js} +1 -1
  85. package/core/src/middles/nodes/custom/humiture.d.ts +2 -0
  86. package/core/src/middles/nodes/custom/humiture.js +24 -0
  87. package/core/src/middles/nodes/{hexagon.anchor.d.ts → flow/hexagon.anchor.d.ts} +1 -1
  88. package/core/src/middles/nodes/{hexagon.anchor.js → flow/hexagon.anchor.js} +2 -2
  89. package/core/src/middles/nodes/{hexagon.d.ts → flow/hexagon.d.ts} +1 -1
  90. package/core/src/middles/nodes/{hexagon.rect.d.ts → flow/hexagon.rect.d.ts} +1 -1
  91. package/core/src/middles/nodes/{hexagon.rect.js → flow/hexagon.rect.js} +1 -1
  92. package/core/src/middles/nodes/form/formDatePicker.d.ts +2 -0
  93. package/core/src/middles/nodes/{formDatePicker.js → form/formDatePicker.js} +12 -5
  94. package/core/src/middles/nodes/{formoverflow.js → form/formoverflow.js} +11 -8
  95. package/core/src/middles/nodes/{formselect.d.ts → form/formselect.d.ts} +1 -1
  96. package/core/src/middles/nodes/{formselect.js → form/formselect.js} +6 -7
  97. package/core/src/middles/nodes/{formtable.d.ts → form/formtable.d.ts} +1 -1
  98. package/core/src/middles/nodes/{progress.d.ts → form/progress.d.ts} +2 -2
  99. package/core/src/middles/nodes/{tablePagination.d.ts → form/tablePagination.d.ts} +1 -1
  100. package/core/src/middles/nodes/{time.d.ts → form/time.d.ts} +1 -1
  101. package/core/src/middles/nodes/icon/echartLine.d.ts +2 -0
  102. package/core/src/middles/nodes/icon/echartLine.js +99 -0
  103. package/core/src/middles/nodes/index.d.ts +54 -52
  104. package/core/src/middles/nodes/index.js +54 -53
  105. package/core/src/models/line.js +1 -1
  106. package/core/src/models/node.js +16 -12
  107. package/core/src/models/pen.d.ts +6 -0
  108. package/core/src/models/rect.d.ts +1 -0
  109. package/core/src/models/rect.js +13 -7
  110. package/core/src/options.js +5 -1
  111. package/core/src/preview.js +55 -23
  112. package/core/src/renderLayer.js +5 -0
  113. package/core/src/store/data.d.ts +0 -1
  114. package/core/src/store/data.js +3 -46
  115. package/core/src/utils/assignment.js +41 -43
  116. package/core/src/utils/construction.d.ts +18 -0
  117. package/core/src/utils/construction.js +23 -0
  118. package/core/src/utils/conversion.d.ts +5 -7
  119. package/core/src/utils/conversion.js +212 -25
  120. package/core/src/utils/params.js +1 -0
  121. package/myShape-diagram/index.js +1 -2
  122. package/package.json +1 -1
  123. package/static/icon.js +10 -0
  124. package/static/index.js +2 -1
  125. package/store/actions.js +15 -1
  126. package/store/clear.js +67 -4
  127. package/core/src/middles/nodes/circle.js +0 -7
  128. package/core/src/middles/nodes/formDatePicker.d.ts +0 -2
  129. /package/core/src/middles/nodes/{arbitrarygraph.js → basic/arbitrarygraph.js} +0 -0
  130. /package/core/src/middles/nodes/{arrow.anchor.js.map → basic/arrow.anchor.js.map} +0 -0
  131. /package/core/src/middles/nodes/{arrow.js → basic/arrow.js} +0 -0
  132. /package/core/src/middles/nodes/{arrow.js.map → basic/arrow.js.map} +0 -0
  133. /package/core/src/middles/nodes/{arrow.rect.js.map → basic/arrow.rect.js.map} +0 -0
  134. /package/core/src/middles/nodes/{circle.anchor.js.map → basic/circle.anchor.js.map} +0 -0
  135. /package/core/src/middles/nodes/{circle.js.map → basic/circle.js.map} +0 -0
  136. /package/core/src/middles/nodes/{circle.rect.js.map → basic/circle.rect.js.map} +0 -0
  137. /package/core/src/middles/nodes/{cloud.anchor.js.map → basic/cloud.anchor.js.map} +0 -0
  138. /package/core/src/middles/nodes/{cloud.js → basic/cloud.js} +0 -0
  139. /package/core/src/middles/nodes/{cloud.js.map → basic/cloud.js.map} +0 -0
  140. /package/core/src/middles/nodes/{cloud.rect.js.map → basic/cloud.rect.js.map} +0 -0
  141. /package/core/src/middles/nodes/{cube.anchor.js.map → basic/cube.anchor.js.map} +0 -0
  142. /package/core/src/middles/nodes/{cube.js → basic/cube.js} +0 -0
  143. /package/core/src/middles/nodes/{cube.js.map → basic/cube.js.map} +0 -0
  144. /package/core/src/middles/nodes/{cube.model.js.map → basic/cube.model.js.map} +0 -0
  145. /package/core/src/middles/nodes/{cube.rect.js.map → basic/cube.rect.js.map} +0 -0
  146. /package/core/src/middles/nodes/{diamond.js → basic/diamond.js} +0 -0
  147. /package/core/src/middles/nodes/{diamond.js.map → basic/diamond.js.map} +0 -0
  148. /package/core/src/middles/nodes/{diamond.rect.js.map → basic/diamond.rect.js.map} +0 -0
  149. /package/core/src/middles/nodes/{file.js → basic/file.js} +0 -0
  150. /package/core/src/middles/nodes/{file.js.map → basic/file.js.map} +0 -0
  151. /package/core/src/middles/nodes/{image.anchor.js.map → basic/image.anchor.js.map} +0 -0
  152. /package/core/src/middles/nodes/{image.rect.js.map → basic/image.rect.js.map} +0 -0
  153. /package/core/src/middles/nodes/{line.anchor.js.map → basic/line.anchor.js.map} +0 -0
  154. /package/core/src/middles/nodes/{line.js → basic/line.js} +0 -0
  155. /package/core/src/middles/nodes/{line.js.map → basic/line.js.map} +0 -0
  156. /package/core/src/middles/nodes/{line.rect.js.map → basic/line.rect.js.map} +0 -0
  157. /package/core/src/middles/nodes/{message.anchor.js.map → basic/message.anchor.js.map} +0 -0
  158. /package/core/src/middles/nodes/{message.js → basic/message.js} +0 -0
  159. /package/core/src/middles/nodes/{message.js.map → basic/message.js.map} +0 -0
  160. /package/core/src/middles/nodes/{message.rect.js.map → basic/message.rect.js.map} +0 -0
  161. /package/core/src/middles/nodes/{pentagon.anchor.js.map → basic/pentagon.anchor.js.map} +0 -0
  162. /package/core/src/middles/nodes/{pentagon.js → basic/pentagon.js} +0 -0
  163. /package/core/src/middles/nodes/{pentagon.js.map → basic/pentagon.js.map} +0 -0
  164. /package/core/src/middles/nodes/{pentagon.rect.js.map → basic/pentagon.rect.js.map} +0 -0
  165. /package/core/src/middles/nodes/{pentagram.anchor.js.map → basic/pentagram.anchor.js.map} +0 -0
  166. /package/core/src/middles/nodes/{pentagram.js → basic/pentagram.js} +0 -0
  167. /package/core/src/middles/nodes/{pentagram.js.map → basic/pentagram.js.map} +0 -0
  168. /package/core/src/middles/nodes/{pentagram.rect.js.map → basic/pentagram.rect.js.map} +0 -0
  169. /package/core/src/middles/nodes/{people.js → basic/people.js} +0 -0
  170. /package/core/src/middles/nodes/{people.js.map → basic/people.js.map} +0 -0
  171. /package/core/src/middles/nodes/{people.rect.js.map → basic/people.rect.js.map} +0 -0
  172. /package/core/src/middles/nodes/{rectangle.js.map → basic/rectangle.js.map} +0 -0
  173. /package/core/src/middles/nodes/{rectangle.rect.js.map → basic/rectangle.rect.js.map} +0 -0
  174. /package/core/src/middles/nodes/{text.js → basic/text.js} +0 -0
  175. /package/core/src/middles/nodes/{text.js.map → basic/text.js.map} +0 -0
  176. /package/core/src/middles/nodes/{triangle.anchor.js.map → basic/triangle.anchor.js.map} +0 -0
  177. /package/core/src/middles/nodes/{triangle.js → basic/triangle.js} +0 -0
  178. /package/core/src/middles/nodes/{triangle.js.map → basic/triangle.js.map} +0 -0
  179. /package/core/src/middles/nodes/{triangle.rect.js.map → basic/triangle.rect.js.map} +0 -0
  180. /package/core/src/middles/nodes/{hexagon.anchor.js.map → flow/hexagon.anchor.js.map} +0 -0
  181. /package/core/src/middles/nodes/{hexagon.js → flow/hexagon.js} +0 -0
  182. /package/core/src/middles/nodes/{hexagon.js.map → flow/hexagon.js.map} +0 -0
  183. /package/core/src/middles/nodes/{hexagon.rect.js.map → flow/hexagon.rect.js.map} +0 -0
  184. /package/core/src/middles/nodes/{formtable.js → form/formtable.js} +0 -0
  185. /package/core/src/middles/nodes/{progress.js → form/progress.js} +0 -0
  186. /package/core/src/middles/nodes/{progress.js.map → form/progress.js.map} +0 -0
  187. /package/core/src/middles/nodes/{switchs.d.ts → form/switchs.d.ts} +0 -0
  188. /package/core/src/middles/nodes/{switchs.js → form/switchs.js} +0 -0
  189. /package/core/src/middles/nodes/{tablePagination.js → form/tablePagination.js} +0 -0
  190. /package/core/src/middles/nodes/{time.js → form/time.js} +0 -0
  191. /package/static/{echartsDefaultData.js → echarts.js} +0 -0
@@ -17,7 +17,7 @@ export function setInitNodeDataValidat(node, TID, type, order, options) {
17
17
 
18
18
  node.TID = TID;
19
19
 
20
- if(options.pageId){
20
+ if(options && options.pageId){
21
21
  // tabs页面元件偏移量计算
22
22
  node.rect.x += options.x;
23
23
  node.rect.y += options.y;
@@ -56,10 +56,8 @@ export function setInitNodeDataValidat(node, TID, type, order, options) {
56
56
  // 初始化默认节点值
57
57
  export function initDefaultValidat(node, retData) {
58
58
  node.defaultFillStyle = node.fillStyle;
59
- node.defaultFontColor = node.font.color;
60
- if (node.name === 'line') {
61
- node.defaultStrokeStyle = node.strokeStyle;
62
- }
59
+ node.defaultFontColor = node.font && node.font.color;
60
+ node.defaultStrokeStyle = node.strokeStyle;
63
61
  setPickerDateConnectData(node);
64
62
  setVarBranchData(node, retData);
65
63
  }
@@ -80,51 +78,51 @@ function setPickerDateConnectData(node) {
80
78
  }
81
79
  // 设置变量类型和支路地址的异步数据
82
80
  function setVarBranchData(node, retData) {
83
- if(!retData) return;
84
- const componentData = retData.componentData;
85
- let varData = null;
86
- let branchNameData = null;
87
- if(componentData && Object.keys(componentData).length) {
88
- varData = componentData[node.id] || {};
89
- branchNameData = componentData[node.id] || {};
90
- }else {
91
- varData = retData.varData;
92
- branchNameData = retData.branchNameData;
93
- }
94
- const dataDictionary = {...varData, ...branchNameData};
81
+ if(!retData || !Array.isArray(node.data)) return;
95
82
  // 变量类型数据展示,不需要实时更新
96
- if(Array.isArray(node.data) && Object.keys(dataDictionary).length) {
97
- let typeName = '';
98
- let imgs = '';
99
- const assetId = retData.asset && retData.asset.assetId;
100
- node.data.map((vd) => {
101
- const varNode = dataDictionary[vd.value] || dataDictionary[`${assetId}_${vd.value}`];
102
- if((vd.key.includes('varValue') || vd.key.includes('branchVal')) && varNode){
103
- const showType = varNode.showType ? parseInt(varNode.showType) : 1;
104
- if(showType === 1 && varNode.value) typeName += typeName ? `,${varNode.value}` : varNode.value;
105
- if(showType === 2 && varNode.value) console.log('显示图标>>>');
106
- if(showType === 3 && varNode.value) imgs = `/dcim-api${varNode.value}`; //imgs += imgs ? `,${varData.value}` : varData.value;
107
- }
108
- });
109
- if(typeName) node.text = typeName;
110
- if(imgs) {
111
- node.text = '';
112
- node.image = imgs;
113
- node.paddingBottom = 0;
114
- node.paddingBottomNum = 0;
115
- node.paddingLeft = 0;
116
- node.paddingLeftNum = 0;
117
- node.paddingRight = 0;
118
- node.paddingRightNum = 0;
119
- node.paddingTop = 0;
120
- node.paddingTopNum = 0;
83
+ let varData = retData.varData || {};
84
+ let branchNameData = retData.branchNameData || {};
85
+ const dataDictionary = {...varData, ...branchNameData};
86
+ if(!Object.keys(dataDictionary).length) return;
87
+ let typeName = '';
88
+ let imgs = '';
89
+ const assetId = retData.asset && retData.asset.assetId;
90
+ node.data.forEach((vd) => {
91
+ const varNode = dataDictionary[vd.value] || dataDictionary[`${assetId}_${vd.value}`];
92
+ if(!varNode || !varNode.value || !['varValue', 'branchVal'].includes(vd.key)) return;
93
+ const showType = varNode.showType ? parseInt(varNode.showType) : 1;
94
+ if(showType === 1) {
95
+
96
+ typeName += typeName ? `,${varNode.value}` : varNode.value;
97
+
98
+ } else if(showType === 2) {
99
+
100
+ console.log('显示图标>>>');
101
+
102
+ } else if(showType === 3) {
103
+
104
+ imgs = `/dcim-api${varNode.value}`; //imgs += imgs ? `,${varData.value}` : varData.value;
105
+
121
106
  }
107
+ });
108
+ if(typeName) node.text = typeName;
109
+ if(imgs) {
110
+ node.text = '';
111
+ node.image = imgs;
112
+ node.paddingBottom = 0;
113
+ node.paddingBottomNum = 0;
114
+ node.paddingLeft = 0;
115
+ node.paddingLeftNum = 0;
116
+ node.paddingRight = 0;
117
+ node.paddingRightNum = 0;
118
+ node.paddingTop = 0;
119
+ node.paddingTopNum = 0;
122
120
  }
123
121
  }
124
122
  // 初始化mqtt实时值
125
123
  export function setDefaultNodeValidat(node, retData) {
126
124
  //const item = JSON.parse(JSON.stringify(node));
127
- if (!retData) return;
125
+ if (!node.events || !node.events.length || !retData) return;
128
126
  //const node = detailData.length > 0 ? detailData : syncData
129
127
  const functionData = node.events.filter((ev) => {
130
128
  return ev.action === EventAction.Function
@@ -64,6 +64,23 @@ export interface ConfAssociateDateValueShowType {
64
64
  real?:number; // 实时值
65
65
  date?:number; // 日期值
66
66
  }
67
+ export enum DateBindType {
68
+ // 字符串别名
69
+ TAG = 'tag', // 测点
70
+ KPI = 'kpi', // 指标
71
+ ASSET = 'asset', // 资产
72
+ AREA = 'area', // 区域
73
+ VAR_TYPE = 'varType', // 变量类型
74
+ BRANCH = 'branch', // 支路地址
75
+ VIDEO = 'video', // 视频
76
+ // 数字值
77
+ tag = 0, // 测点
78
+ kpi = 1, // 指标
79
+ asset = 2, // 资产
80
+ area = 3, // 区域
81
+ varType = 4, // 变量类型
82
+ branch = 5 // 支路地址
83
+ }
67
84
  export const moveDataType: MoveDataType;
68
85
  export const downDataType: DownDataType;
69
86
  export const previewType: PreviewType;
@@ -72,3 +89,4 @@ export const selectStaticType: SelectStaticType;
72
89
  export const datePickerBindType: DatePickerBindType;
73
90
  export const confBindValueType: ConfBindValueType;
74
91
  export const confAssociateDateValueShowType: ConfAssociateDateValueShowType;
92
+ export const dataBindType: DateBindType;
@@ -61,4 +61,27 @@ export const confBindValueType = {
61
61
  export const confAssociateDateValueShowType = {
62
62
  real: 1, // 实时值
63
63
  date: 2 // 日期值
64
+ };
65
+ export const dataBindType = {
66
+ // 字符串别名
67
+ TAG: 'tag', // 测点
68
+ KPI: 'kpi', // 指标
69
+ ASSET: 'asset', // 资产
70
+ AREA: 'area', // 区域
71
+ VAR_TYPE: 'varType', // 变量类型
72
+ BRANCH: 'branch', // 支路地址
73
+ VIDEO: 'video', // 视频
74
+ // 数字值
75
+ tag: 0, // 测点
76
+ '0': 'tag',
77
+ kpi: 1, // 指标
78
+ '1': 'kpi',
79
+ asset: 2, // 资产
80
+ '2': 'asset',
81
+ area: 3, // 区域
82
+ '3': 'area',
83
+ varType: 4, // 变量类型
84
+ '4': 'varType',
85
+ branch: 5, // 支路地址
86
+ '5': 'branch'
64
87
  };
@@ -6,10 +6,8 @@ export declare function tabStaticOperation(type: string, node: Node, areaData: a
6
6
  export declare function tabHideShowOperation(node: any, areaData: any, visible: boolean): void;
7
7
  export declare function getEchartsRealData(node: {}, data: []): void;
8
8
  export declare function setInitConfData(id: string, data: object): void;
9
- export declare function setTagIdData(data: any): [];
10
- export declare function setKpiAddrData(data: any): [];
11
- export declare function setAssetIdData(data: any): [];
12
- export declare function setAreaIdData(data: any): [];
13
- export declare function setVarValueData(data: any): [];
14
- export declare function setBranchAddressData(data: any): [];
15
- export declare function setThreeCategoryIdData(pen: Node, data: any): [];
9
+ export declare function setConfBindPointMonitorData(type: number, eventNode: object, data: any): {};
10
+ export declare function createEchartsLineIcon(type: number, pen: Node, data: any): {};
11
+ export declare function bindDataConfig(item: object, type: number): {};
12
+ // @ts-ignore
13
+ export declare function hasBoundData(boundData: Set<string>, item: object, type: number): boolean;
@@ -1,7 +1,9 @@
1
1
  import {commonStore} from '../store';
2
2
  import {setElementSwitchTabState} from '../element';
3
- import {echartsStaticType} from '../utils';
3
+ import {echartsStaticType, dataBindType} from '../utils';
4
4
  import {datePickerType, datePickerTypeList} from "../../../store";
5
+ import {echartsInitRealDataPoll} from "../../../store";
6
+ import {svgEchartsLineData} from "../../../static";
5
7
 
6
8
  /**
7
9
  * yyyy-MM-dd 格式转换
@@ -147,28 +149,35 @@ export function getTabConnectSHConf(node) {
147
149
  * Tab 数据统计
148
150
  * @param type 统计类型
149
151
  * @param node 元件数据
150
- * @param areaData tab展示区域数据
152
+ * @param index tab展示区域索引
151
153
  * @param params Tab 切换选中参数
152
154
  */
153
- export function tabStaticOperation(type, node, areaData, params) {
154
- if(!node.bindStaticId || !(echartsStaticType.includes(type) || type === 'OTHER')) return;
155
- const curentEchart = areaData && areaData[node.bindStaticId]; // 获取当前点中的节点绑定的统计图表数据
156
- if(!curentEchart || !curentEchart.data.params) return console.log('未能找到匹配的echarts图表>>>');
155
+ export function tabStaticOperation(type, node, index, params) {
156
+ if(!(echartsStaticType.includes(type) || type === 'OTHER')) return;
157
157
  const currentStore = commonStore[node.TID];
158
- const echartNode = currentStore.data.pens[curentEchart.order]; // 获取tab 绑定的图表元件数据
159
- if(type === 'OTHER') {
158
+ const echartNode = currentStore.data.pens[index]; // 获取tab 绑定的图表元件数据
159
+ if(type === 'OTHER' || type === 'CUSTOMIZE') {
160
160
  const tabCorrelationType = currentStore.echartsDataPool[node.bindStaticId].tabCorrelationType; // 获取select与tab关联的标识
161
161
  const optionNode = currentStore.echartsOptionsPool[node.bindStaticId];
162
+ const order = params.order;
162
163
  if(tabCorrelationType === 'select') {
163
164
  // tab类型为包含在select下的切换则执行下面的逻辑
164
- echartNode.data.params['tabVisitOrder'] = params.order;
165
+ echartNode.data.params['tabVisitOrder'] = order;
165
166
  }else {
166
167
  // 非 年、月、日、周、实时类型的切换
167
- const groupData = currentStore.selectRealDataPool[node.bindStaticId];
168
- if (optionNode) currentStore.echartsRealDataPool[optionNode.data.id] = currentStore.echartsRealDataPool[groupData[params.order].id];
168
+ let echartsRealData = null;
169
+ if(node.formData.dateId) {
170
+ // 绑定了日期元件的逻辑处理
171
+ echartsRealData = echartsInitRealDataPoll[node.bindStaticId][order];
172
+ }else {
173
+ const groupData = currentStore.selectRealDataPool[node.bindStaticId];
174
+ echartsRealData = currentStore.echartsRealDataPool[groupData[order].id];
175
+ }
176
+ if (optionNode) currentStore.echartsRealDataPool[optionNode.data.id] = echartsRealData;
169
177
  }
170
178
  if(optionNode) optionNode.data.tabData = {
171
179
  type,
180
+ index: order,
172
181
  data: params.data
173
182
  };
174
183
  }
@@ -200,6 +209,8 @@ export function tabHideShowOperation(node, areaData, isActive) {
200
209
  * @param data 实时数据
201
210
  */
202
211
  export function getEchartsRealData(node, data){
212
+ if(!data.length) return;
213
+ if(!echartsInitRealDataPoll[node.id]) echartsInitRealDataPoll[node.id] = data;
203
214
  const currentStore = commonStore[node.TID];
204
215
  if(!currentStore.selectRealDataPool[node.id]) {
205
216
  const selectData = [];
@@ -216,13 +227,16 @@ export function getEchartsRealData(node, data){
216
227
  currentStore.selectRealDataPool[node.id] = selectData;
217
228
  }else {
218
229
  const selectId = currentStore.echartsDataPool[node.id] && currentStore.echartsDataPool[node.id].bindId;
219
- const selected = selectId && currentStore.selectDataPool[selectId] && currentStore.selectDataPool[selectId].node.selected;
220
- if(selected && selected.id) {
221
- // 如有选中的数据
222
- currentStore.echartsRealDataPool[node.id] = currentStore.echartsRealDataPool[selected.id];
230
+ if(selectId) {
231
+ const selected = currentStore.selectDataPool[selectId] && currentStore.selectDataPool[selectId].node.selected;
232
+ const id = selected && selected.id; // 选中的下拉节点id
233
+ currentStore.echartsRealDataPool[node.id] = currentStore.echartsRealDataPool[id];
223
234
  }else {
224
- currentStore.echartsRealDataPool[node.id] = data[0];
235
+ const echartsOptionsData = currentStore.echartsOptionsPool[node.id].data;
236
+ const id = echartsOptionsData.tabData && echartsOptionsData.tabData.index || 0; // 实时数据索引id
237
+ currentStore.echartsRealDataPool[node.id] = data[id];
225
238
  }
239
+ currentStore.echartsOptionsPool[node.id].data.targetChange = false;
226
240
  }
227
241
  }
228
242
  export function setInitConfData(id, data){
@@ -242,8 +256,175 @@ export function setInitConfData(id, data){
242
256
  if(data.name === 'echarts') initNode.data = data.data;
243
257
  commonStore[id].initConfNode[data.id] = initNode;
244
258
  }
245
- export function setTagIdData(data) {
246
- return [{
259
+ export function setConfBindPointMonitorData(type, eventNode, data) {
260
+ if(eventNode.action !== 14) return;
261
+ eventNode.data.type = type;
262
+ if(type === 0) {
263
+ // 测点
264
+ const { tagId, tagName, assetId } = data;
265
+ eventNode.data.name = tagName;
266
+ eventNode.data.id = tagId;
267
+ eventNode.data.assetId = assetId;
268
+ }else if(type === 1) {
269
+ // 指标
270
+ const { kpiId, kpiAddr, devId, kpiName } = data;
271
+ eventNode.data.name = kpiName;
272
+ eventNode.data.id = kpiId;
273
+ eventNode.data.kpiAddr = kpiAddr;
274
+ eventNode.data.assetId = devId;
275
+ }
276
+ }
277
+ /**
278
+ * 生成echartsLine小图标节点数据
279
+ * @param type 绑定的数据类型
280
+ * @param pen 元件节点数据
281
+ * @param data 绑定的数据
282
+ * @returns {{rect: {width: number, height: number}, path: string[], strokeStyle: string, name: string, lineWidth: number}}
283
+ */
284
+ export function createEchartsLineIcon(type, pen, data) {
285
+ const node = {...svgEchartsLineData};
286
+ let eventNode = {
287
+ action: 14,
288
+ type: 0,
289
+ data: {}
290
+ };
291
+ setConfBindPointMonitorData(type, eventNode, data);
292
+ node.events = [eventNode];
293
+ node.rect.x = pen.rect.x + pen.rect.width;
294
+ if(pen.name === 'text') {
295
+ node.rect.height = pen.rect.height - 12;
296
+ node.rect.y = pen.rect.y + (pen.rect.height - node.rect.height)/2;
297
+ }else {
298
+ node.rect.y = pen.rect.y;
299
+ node.rect.height = pen.rect.height;
300
+ }
301
+ node.rect.width = node.rect.height;
302
+ return node;
303
+ }
304
+ /**
305
+ * 绑定类型 -> 配置映射(
306
+ */
307
+ const BIND_CONFIG_MAP = {
308
+ [dataBindType.TAG]: {
309
+ nameKey: 'tagName',
310
+ dataFn: setTagIdData,
311
+ titleKey: 'touchpname',
312
+ },
313
+ [dataBindType.KPI]: {
314
+ nameKey: 'kpiName',
315
+ dataFn: setKpiAddrData,
316
+ },
317
+ [dataBindType.ASSET]: {
318
+ nameKey: 'name',
319
+ dataFn: setAssetIdData,
320
+ titleKey: 'bak',
321
+ hasChildren: true,
322
+ },
323
+ [dataBindType.AREA]: {
324
+ nameKey: 'name',
325
+ dataFn: setAreaIdData,
326
+ },
327
+ [dataBindType.VAR_TYPE]: {
328
+ nameKey: 'name',
329
+ dataFn: setVarValueData,
330
+ },
331
+ [dataBindType.BRANCH]: {
332
+ nameKey: 'value',
333
+ dataFn: setBranchAddressData,
334
+ },
335
+ };
336
+ export function bindDataConfig(item, type) {
337
+ const itemNode = item && item.default || item;
338
+ const node = {
339
+ data: [],
340
+ events: [],
341
+ children: [],
342
+ title: '',
343
+ bindName: ''
344
+ };
345
+
346
+ // 视频类型单独处理
347
+ if (type === dataBindType.VIDEO) {
348
+ node.title = itemNode.params.name || '';
349
+ node.events = itemNode ? [itemNode] : [];
350
+ return node;
351
+ }
352
+
353
+ const key = dataBindType[type];
354
+ const config = BIND_CONFIG_MAP[key];
355
+ if (!config) return node;
356
+
357
+ // 绑定名称
358
+ node.bindName = itemNode[config.nameKey] || '';
359
+
360
+ // 绑定数据
361
+ const dataList = config.dataFn(itemNode) || [];
362
+ node.data.push(...dataList);
363
+
364
+ // 绑定标题
365
+ if (config.titleKey) node.title = itemNode[config.titleKey] || '';
366
+
367
+ // 资产:温湿度子节点
368
+ if (config.hasChildren && item.isHumiture) node.children = setHumitureBindData(item, type) || [];
369
+
370
+ return node;
371
+ }
372
+
373
+ /**
374
+ * 校验:即将绑定的数据中是否存在已绑定的数据
375
+ * @param boundData 已绑定的数据
376
+ * @param item 绑定节点数据
377
+ * @param type 绑定的数据类型
378
+ */
379
+ export function hasBoundData(boundData, item, type) {
380
+ let isSkip = false;
381
+ switch (type) {
382
+ case dataBindType.tag:
383
+ isSkip = boundData.has(item.tagId);
384
+ break;
385
+ case dataBindType.kpi:
386
+ isSkip = boundData.has(`${item.kpiId}_${item.kpiAddr}`);
387
+ break;
388
+ case dataBindType.asset:
389
+ case dataBindType.area:
390
+ case dataBindType.varType:
391
+ isSkip = boundData.has(item.id);
392
+ break;
393
+ case dataBindType.branch:
394
+ isSkip = boundData.has(item.value);
395
+ break;
396
+ }
397
+ return isSkip;
398
+ }
399
+ function setHumitureBindData(item, type) {
400
+ // 初始化子节点列表
401
+ const children = [];
402
+
403
+ // 通讯状态节点
404
+ children.push(bindDataConfig(item.default, type));
405
+
406
+ // 温度节点
407
+ if (item.temperature) children.push({ data: setTagIdData(item.temperature) });
408
+
409
+ // 湿度节点(存在才添加)
410
+ if (item.dampness) children.push({ data: setTagIdData(item.dampness) });
411
+
412
+ // 统一给所有子节点设置 MQTT 事件
413
+ const mqttEvent = [{ type: 3, action: 2, value: '', show: true }];
414
+ children.forEach(sub => {
415
+ if (sub) sub.events = mqttEvent;
416
+ });
417
+
418
+ return children;
419
+ }
420
+ // 测点数据配置
421
+ function setTagIdData(data) {
422
+ //用于处理场地监控,点击一个资产类别后,隐藏掉这个类别下的所有元件
423
+ const threeCategory = [{
424
+ "key": "threeCategoryId",
425
+ "value": data.threeCategoryId
426
+ }];
427
+ return [...threeCategory, {
247
428
  "key": "tagId",
248
429
  "value": data.tagId,
249
430
  "isControlDis": data.isControlDis,
@@ -256,7 +437,8 @@ export function setTagIdData(data) {
256
437
  "value": data.tagName
257
438
  }];
258
439
  }
259
- export function setKpiAddrData(data) {
440
+ // 指标数据配置
441
+ function setKpiAddrData(data) {
260
442
  return [{
261
443
  "key": "kpiAddr",
262
444
  "value": data.kpiId + '_' + data.kpiAddr,
@@ -267,7 +449,8 @@ export function setKpiAddrData(data) {
267
449
  "value": data.kpiName
268
450
  }];
269
451
  }
270
- export function setAssetIdData(data) {
452
+ // 资产数据配置
453
+ function setAssetIdData(data) {
271
454
  return [{
272
455
  "key": "assetId",
273
456
  "value": data.id
@@ -276,7 +459,8 @@ export function setAssetIdData(data) {
276
459
  "value": data.name
277
460
  }];
278
461
  }
279
- export function setAreaIdData(data) {
462
+ // 区域数据配置
463
+ function setAreaIdData(data) {
280
464
  return [{
281
465
  "key": "areaId",
282
466
  "value": data.id
@@ -285,7 +469,8 @@ export function setAreaIdData(data) {
285
469
  "value": data.name
286
470
  }];
287
471
  }
288
- export function setVarValueData(data) {
472
+ // 变量类型数据配置
473
+ function setVarValueData(data) {
289
474
  return [{
290
475
  "key": "varId",
291
476
  "value": data.id
@@ -297,7 +482,8 @@ export function setVarValueData(data) {
297
482
  "value": data.name
298
483
  }];
299
484
  }
300
- export function setBranchAddressData(data) {
485
+ // 支路地址数据配置
486
+ function setBranchAddressData(data) {
301
487
  return [{
302
488
  "key": "branchVal",
303
489
  "value": data.value
@@ -306,7 +492,8 @@ export function setBranchAddressData(data) {
306
492
  "value": data.key
307
493
  }];
308
494
  }
309
- export function setThreeCategoryIdData(pen, data) {
495
+ // 类别数据配置
496
+ function setThreeCategoryIdData(pen, data) {
310
497
  let params = [];
311
498
  const hasThreeCategoryId = pen.data.find((tc) => {
312
499
  return tc.key === 'threeCategoryId' && tc.value === data.threeCategoryId;
@@ -316,4 +503,4 @@ export function setThreeCategoryIdData(pen, data) {
316
503
  "value": data.threeCategoryId
317
504
  }];
318
505
  return params;
319
- }
506
+ }
@@ -18,6 +18,7 @@ export function getParams(id, data) {
18
18
  }
19
19
  // 过滤出参数
20
20
  export function filterParams(id, node) {
21
+ if(!node.events || !node.events.length) return;
21
22
  let tagIds = [];
22
23
  let kpiAddrs = [];
23
24
  let assetIds = [];
@@ -1,6 +1,6 @@
1
1
  // 源码版写法
2
2
  import { registerNode } from '../core'
3
- import { formOverflow } from '../core/src/middles/nodes/formoverflow'
3
+ import { formOverflow } from '../core/src/middles/nodes/form/formoverflow'
4
4
 
5
5
 
6
6
  // 组件版写法和bundle一致
@@ -155,7 +155,6 @@ export function pool(ctx, node) {
155
155
  export function electricFan(ctx, node) {
156
156
  var wwr = node.rect.width / 2;
157
157
  var hwr = node.rect.height / 2;
158
- var hwr = node.rect.height / 2;
159
158
  var x0 = node.rect.x + node.rect.width /2
160
159
  var y0 = node.rect.y + node.rect.height / 2
161
160
  var withinRadius = wwr < hwr ? wwr : hwr;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "dcim-topology2d",
3
- "version": "2.2.3",
3
+ "version": "2.2.5",
4
4
  "description": "",
5
5
  "main": "-",
6
6
  "scripts": {
package/static/icon.js ADDED
@@ -0,0 +1,10 @@
1
+ export const svgEchartsLineData = {
2
+ rect: {
3
+ width: 16,
4
+ height: 16
5
+ },
6
+ name: 'svgEchartsLine',
7
+ strokeStyle: '#3b82f6',
8
+ lineWidth: 1,
9
+ path: ['M85.333333 128a42.666667 42.666667 0 0 0-85.333333 0v682.666667a128 128 0 0 0 128 128h853.333333a42.666667 42.666667 0 1 0 0-85.333334H128a42.666667 42.666667 0 0 1-42.666667-42.666666V128z', 'M886.485333 332.672a42.666667 42.666667 0 1 0-63.232-57.344l-255.957333 282.24-115.498667-107.776a85.333333 85.333333 0 0 0-121.941333 5.632l-154.709333 173.653333a42.666667 42.666667 0 0 0 63.744 56.746667l154.709333-173.653333 115.498667 107.776a85.333333 85.333333 0 0 0 121.429333-5.077334l255.957333-282.197333z'],
10
+ }
package/static/index.js CHANGED
@@ -1,3 +1,4 @@
1
- export * from './echartsDefaultData';
1
+ export * from './icon';
2
+ export * from './echarts';
2
3
  export * from './form';
3
4
  export * from './element';
package/store/actions.js CHANGED
@@ -1,2 +1,16 @@
1
1
  export const plugsPool = {};
2
- export const tabsPageContentData = {};
2
+ export const tabsPageContentData = {};
3
+ export const echartsInitRealDataPoll = {}; // echarts 初始数据
4
+ // 单个或者批量为元件绑定数据时,若勾选了“点位监控”,则绑定数据的元件会与自动生成的图标进行关联,
5
+ // 1、移动时图标会跟随/2、元件被删除时图标会跟着一起删除;3、元件修改绑定的测点或指标数据,关联的图标也会自动修改绑定数据;
6
+ // 4、若元件修改绑定了除 “指标”或“测点”的其他数据,则关联的小图标会自动删除;
7
+ export const bindDataWithIconAssociationPool = new Map();
8
+ // 支持小图标跟随关联元件移动的属性
9
+ export const iconMotionData = {
10
+ width: true,
11
+ height: true,
12
+ x: true,
13
+ y: true
14
+ };
15
+ // SVG path实例数据
16
+ export const svgPathInstance = new Map();
package/store/clear.js CHANGED
@@ -1,9 +1,24 @@
1
1
  import {setEventListener} from "../core";
2
- import {tabsPageContentData} from "./actions";
3
- export const removeAllElement = function (){
4
- for (let key of Object.keys(tabsPageContentData)) {
5
- delete tabsPageContentData[key];
2
+ import {
3
+ tabsPageContentData,
4
+ echartsInitRealDataPoll,
5
+ bindDataWithIconAssociationPool,
6
+ svgPathInstance
7
+ } from "./actions";
8
+ function removeDomNodeElement(domNode) {
9
+ for (let ele of Object.keys(domNode)) {
10
+ ele.parentNode.removeChild(ele);
6
11
  }
12
+ }
13
+ function deleteDataPoolNode(domNode) {
14
+ if(!Object.keys(domNode).length) return;
15
+ for (let [key, node] of Object.entries(domNode)) {
16
+ node.dom && removeDomNodeElement(node.dom);
17
+ delete domNode[key];
18
+ }
19
+ }
20
+ export const removeDefineElement = function (){
21
+ deleteDataPoolNode(tabsPageContentData);
7
22
  const documentDefineEle = document.querySelectorAll('.documentDefine');
8
23
  if(documentDefineEle) {
9
24
  documentDefineEle.forEach(function(element) {
@@ -11,4 +26,52 @@ export const removeAllElement = function (){
11
26
  element.parentNode.removeChild(element);
12
27
  });
13
28
  }
29
+ }
30
+ export function clearElementDataPool(data) {
31
+ bindDataWithIconAssociationPool.clear();
32
+ svgPathInstance.clear();
33
+ const {
34
+ echartsDataPool,
35
+ selectDataPool,
36
+ iframeDataPool,
37
+ formoverDataPool,
38
+ formoverCanvasDataPool,
39
+ timeDataPool
40
+ } = data;
41
+ for (let [key, node] of Object.entries(echartsDataPool)) {
42
+ if(node) {
43
+ clearInterval(node.timeTicket);
44
+ if(node.chart) {
45
+ node.chart.off('mouseover');
46
+ node.chart.off('mouseout');
47
+ node.chart.off('globalout');
48
+ node.chart.dispose();
49
+ }
50
+ if(node.div && node.div.parentNode) node.div.parentNode.removeChild(node.div);
51
+ }
52
+ delete data.echartsDataPool[key];
53
+ }
54
+ if(Object.keys(selectDataPool).length) {
55
+ let dropdownEle = null,
56
+ dropdownListEle = null;
57
+ for (let [key, node] of Object.entries(selectDataPool)) {
58
+ if(!dropdownEle) {
59
+ dropdownEle = node.dom.selectDropdown;
60
+ dropdownListEle = node.dom.selectDropdownUl;
61
+ }
62
+ if(node.dom.selectEle && node.dom.selectEle.parentNode) node.dom.selectEle.parentNode.removeChild(node.dom.selectEle);
63
+ delete data.selectDataPool[key];
64
+ }
65
+ if(dropdownEle) dropdownEle.style.display = 'none';
66
+ if(dropdownListEle) dropdownListEle.innerHTML = '';
67
+ }
68
+ deleteDataPoolNode(iframeDataPool);
69
+ for (let key of Object.keys(formoverCanvasDataPool)) {
70
+ const elementNode = document.getElementById(key);
71
+ elementNode && elementNode.parentNode.removeChild(elementNode);
72
+ delete formoverCanvasDataPool[key];
73
+ }
74
+ deleteDataPoolNode(formoverDataPool);
75
+ deleteDataPoolNode(timeDataPool);
76
+ deleteDataPoolNode(echartsInitRealDataPoll);
14
77
  }