dcim-topology2d 2.0.8 → 3.0.2

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 (204) hide show
  1. package/activity-diagram/src/final/final.d.ts +1 -1
  2. package/activity-diagram/src/final/final.rect.d.ts +1 -1
  3. package/activity-diagram/src/final/final.rect.js +1 -1
  4. package/activity-diagram/src/fork/fork.anchor.d.ts +1 -1
  5. package/activity-diagram/src/fork/fork.anchor.js +1 -1
  6. package/activity-diagram/src/fork/fork.d.ts +1 -1
  7. package/activity-diagram/src/fork/fork.rect.d.ts +1 -1
  8. package/activity-diagram/src/fork/fork.rect.js +1 -1
  9. package/activity-diagram/src/register.js +1 -1
  10. package/activity-diagram/src/swimlaneH/swimlaneH.d.ts +1 -1
  11. package/activity-diagram/src/swimlaneH/swimlaneH.rect.d.ts +1 -1
  12. package/activity-diagram/src/swimlaneH/swimlaneH.rect.js +1 -1
  13. package/activity-diagram/src/swimlaneV/swimlaneV.d.ts +1 -1
  14. package/activity-diagram/src/swimlaneV/swimlaneV.rect.d.ts +1 -1
  15. package/activity-diagram/src/swimlaneV/swimlaneV.rect.js +1 -1
  16. package/chart-diagram/index.d.ts +1 -3
  17. package/chart-diagram/index.js +1 -2
  18. package/chart-diagram/src/echarts/index.d.ts +2 -1
  19. package/chart-diagram/src/echarts/index.js +104 -109
  20. package/chart-diagram/src/register.js +8 -9
  21. package/class-diagram/src/class/class.d.ts +1 -1
  22. package/class-diagram/src/class/class.rect.d.ts +1 -1
  23. package/class-diagram/src/class/class.rect.js +1 -1
  24. package/class-diagram/src/register.js +1 -1
  25. package/core/index.d.ts +0 -2
  26. package/core/index.js +0 -2
  27. package/core/src/activeLayer.d.ts +10 -2
  28. package/core/src/activeLayer.js +47 -42
  29. package/core/src/animateLayer.d.ts +7 -3
  30. package/core/src/animateLayer.js +12 -10
  31. package/core/src/calling.d.ts +4 -1
  32. package/core/src/calling.js +41 -43
  33. package/core/src/canvas.d.ts +6 -1
  34. package/core/src/canvas.js +21 -22
  35. package/core/src/common.d.ts +7 -6
  36. package/core/src/common.js +673 -332
  37. package/core/src/core.d.ts +4 -3
  38. package/core/src/core.js +367 -466
  39. package/core/src/divLayer.d.ts +36 -2
  40. package/core/src/divLayer.js +305 -33
  41. package/core/src/healps/changeData.d.ts +2 -1
  42. package/core/src/healps/changeData.js +66 -32
  43. package/core/src/hoverLayer.d.ts +9 -2
  44. package/core/src/hoverLayer.js +34 -31
  45. package/core/src/middles/default.d.ts +3 -1
  46. package/core/src/middles/default.js +51 -53
  47. package/core/src/middles/index.js +2 -3
  48. package/core/src/middles/nodes/arbitrarygraph.js +9 -11
  49. package/core/src/middles/nodes/pentagon.rect.js +1 -1
  50. package/core/src/middles/nodes/rectangle.rect.js +1 -1
  51. package/core/src/models/data.d.ts +26 -0
  52. package/core/src/models/data.js +77 -0
  53. package/core/src/models/data.js.map +1 -0
  54. package/core/src/models/index.d.ts +1 -0
  55. package/core/src/models/index.js +1 -0
  56. package/core/src/models/node.d.ts +0 -10
  57. package/core/src/models/node.js +36 -69
  58. package/core/src/models/pen.js +59 -19
  59. package/core/src/models/rect.js +2 -2
  60. package/core/src/mqtt.d.ts +14 -0
  61. package/core/src/mqtt.js +82 -0
  62. package/core/src/mqtt.js.map +1 -0
  63. package/core/src/offscreen.d.ts +4 -1
  64. package/core/src/offscreen.js +8 -10
  65. package/core/src/options.d.ts +1 -3
  66. package/core/src/options.js +0 -2
  67. package/core/src/poll.js +39 -0
  68. package/core/src/preview.d.ts +13 -1
  69. package/core/src/preview.js +43 -111
  70. package/core/src/renderLayer.d.ts +9 -11
  71. package/core/src/renderLayer.js +61 -60
  72. package/core/src/socket.d.ts +10 -0
  73. package/core/src/socket.js +51 -0
  74. package/core/src/socket.js.map +1 -0
  75. package/core/src/utils/canvas.js +1 -1
  76. package/core/src/utils/construction.d.ts +3 -12
  77. package/core/src/utils/construction.js +1 -8
  78. package/core/src/utils/conversion.d.ts +0 -11
  79. package/core/src/utils/conversion.js +0 -168
  80. package/core/src/utils/dom.d.ts +8 -0
  81. package/core/src/utils/dom.js +67 -0
  82. package/core/src/utils/dom.js.map +1 -0
  83. package/core/src/utils/index.d.ts +1 -2
  84. package/core/src/utils/index.js +1 -2
  85. package/core/src/utils/math.d.ts +0 -1
  86. package/core/src/utils/math.js +0 -3
  87. package/core/src/utils/onmousevent.d.ts +0 -3
  88. package/core/src/utils/onmousevent.js +10 -42
  89. package/flow-diagram/src/comment/comment.anchor.d.ts +1 -1
  90. package/flow-diagram/src/comment/comment.anchor.js +1 -1
  91. package/flow-diagram/src/comment/comment.d.ts +1 -1
  92. package/flow-diagram/src/data/data.anchor.d.ts +1 -1
  93. package/flow-diagram/src/data/data.anchor.js +1 -1
  94. package/flow-diagram/src/data/data.d.ts +1 -1
  95. package/flow-diagram/src/data/data.rect.d.ts +1 -1
  96. package/flow-diagram/src/data/data.rect.js +1 -1
  97. package/flow-diagram/src/db/db.d.ts +1 -1
  98. package/flow-diagram/src/db/db.rect.d.ts +1 -1
  99. package/flow-diagram/src/db/db.rect.js +1 -1
  100. package/flow-diagram/src/display/display.anchor.d.ts +1 -1
  101. package/flow-diagram/src/display/display.anchor.js +1 -1
  102. package/flow-diagram/src/display/display.d.ts +1 -1
  103. package/flow-diagram/src/display/display.rect.d.ts +1 -1
  104. package/flow-diagram/src/display/display.rect.js +1 -1
  105. package/flow-diagram/src/document/document.anchor.d.ts +1 -1
  106. package/flow-diagram/src/document/document.anchor.js +1 -1
  107. package/flow-diagram/src/document/document.d.ts +1 -1
  108. package/flow-diagram/src/document/document.rect.d.ts +1 -1
  109. package/flow-diagram/src/document/document.rect.js +1 -1
  110. package/flow-diagram/src/externStorage/externStorage.anchor.d.ts +1 -1
  111. package/flow-diagram/src/externStorage/externStorage.anchor.js +1 -1
  112. package/flow-diagram/src/externStorage/externStorage.d.ts +1 -1
  113. package/flow-diagram/src/externStorage/externStorage.rect.d.ts +1 -1
  114. package/flow-diagram/src/externStorage/externStorage.rect.js +1 -1
  115. package/flow-diagram/src/internalStorage/internalStorage.d.ts +1 -1
  116. package/flow-diagram/src/internalStorage/internalStorage.rect.d.ts +1 -1
  117. package/flow-diagram/src/internalStorage/internalStorage.rect.js +1 -1
  118. package/flow-diagram/src/manually/manually.anchor.d.ts +1 -1
  119. package/flow-diagram/src/manually/manually.anchor.js +1 -1
  120. package/flow-diagram/src/manually/manually.d.ts +1 -1
  121. package/flow-diagram/src/manually/manually.rect.d.ts +1 -1
  122. package/flow-diagram/src/manually/manually.rect.js +1 -1
  123. package/flow-diagram/src/parallel/parallel.anchor.d.ts +1 -1
  124. package/flow-diagram/src/parallel/parallel.anchor.js +1 -1
  125. package/flow-diagram/src/parallel/parallel.d.ts +1 -1
  126. package/flow-diagram/src/queue/queue.d.ts +1 -1
  127. package/flow-diagram/src/queue/queue.rect.d.ts +1 -1
  128. package/flow-diagram/src/queue/queue.rect.js +1 -1
  129. package/flow-diagram/src/register.js +1 -1
  130. package/flow-diagram/src/subprocess/subprocess.d.ts +1 -1
  131. package/flow-diagram/src/subprocess/subprocess.rect.d.ts +1 -1
  132. package/flow-diagram/src/subprocess/subprocess.rect.js +1 -1
  133. package/layout/src/align.d.ts +1 -1
  134. package/layout/src/align.js +1 -1
  135. package/layout/src/layout.d.ts +1 -1
  136. package/layout/src/layout.js +1 -1
  137. package/myShape-diagram/{index.js → myShape.js} +1 -4
  138. package/package.json +1 -1
  139. package/sequence-diagram/src/focus/focus.anchor.d.ts +1 -1
  140. package/sequence-diagram/src/focus/focus.anchor.js +1 -1
  141. package/sequence-diagram/src/focus/focus.d.ts +1 -1
  142. package/sequence-diagram/src/focus/focus.rect.d.ts +1 -1
  143. package/sequence-diagram/src/focus/focus.rect.js +1 -1
  144. package/sequence-diagram/src/lifeline/lifeline.anchor.d.ts +1 -1
  145. package/sequence-diagram/src/lifeline/lifeline.anchor.js +1 -1
  146. package/sequence-diagram/src/lifeline/lifeline.d.ts +1 -1
  147. package/sequence-diagram/src/lifeline/lifeline.rect.d.ts +1 -1
  148. package/sequence-diagram/src/lifeline/lifeline.rect.js +1 -1
  149. package/sequence-diagram/src/register.js +1 -1
  150. package/chart-diagram/src/utils/changeOptions.d.ts +0 -7
  151. package/chart-diagram/src/utils/changeOptions.js +0 -261
  152. package/chart-diagram/src/utils/conversion.d.ts +0 -19
  153. package/chart-diagram/src/utils/conversion.js +0 -432
  154. package/chart-diagram/src/utils/drawGraphic.d.ts +0 -3
  155. package/chart-diagram/src/utils/drawGraphic.js +0 -97
  156. package/chart-diagram/src/utils/formatter.d.ts +0 -1
  157. package/chart-diagram/src/utils/formatter.js +0 -170
  158. package/chart-diagram/src/utils/index.d.ts +0 -4
  159. package/chart-diagram/src/utils/index.js +0 -4
  160. package/chart-diagram/src/utils/render.d.ts +0 -8
  161. package/chart-diagram/src/utils/render.js +0 -228
  162. package/core/src/element/common.d.ts +0 -5
  163. package/core/src/element/common.js +0 -54
  164. package/core/src/element/iframe.d.ts +0 -3
  165. package/core/src/element/iframe.js +0 -12
  166. package/core/src/element/index.d.ts +0 -4
  167. package/core/src/element/index.js +0 -4
  168. package/core/src/element/select.d.ts +0 -11
  169. package/core/src/element/select.js +0 -263
  170. package/core/src/element/tab.d.ts +0 -1
  171. package/core/src/element/tab.js +0 -23
  172. package/core/src/middles/arrows/index.d.ts +0 -4
  173. package/core/src/middles/arrows/index.js +0 -5
  174. package/core/src/middles/lines/index.d.ts +0 -4
  175. package/core/src/middles/lines/index.js +0 -5
  176. package/core/src/middles/nodes/formoverflow.js +0 -61
  177. package/core/src/middles/nodes/formselect.d.ts +0 -2
  178. package/core/src/middles/nodes/formselect.js +0 -95
  179. package/core/src/middles/nodes/iframe.d.ts +0 -2
  180. package/core/src/middles/nodes/iframe.js +0 -29
  181. package/core/src/middles/nodes/index.d.ts +0 -48
  182. package/core/src/middles/nodes/index.js +0 -49
  183. package/core/src/store/common.d.ts +0 -9
  184. package/core/src/store/common.js +0 -5
  185. package/core/src/store/data.d.ts +0 -189
  186. package/core/src/store/data.js +0 -180
  187. package/core/src/store/index.d.ts +0 -2
  188. package/core/src/store/index.js +0 -2
  189. package/core/src/utils/assignment.d.ts +0 -6
  190. package/core/src/utils/assignment.js +0 -173
  191. package/core/src/utils/params.d.ts +0 -2
  192. package/core/src/utils/params.js +0 -60
  193. package/static/echartsDefaultData.js +0 -178
  194. package/static/element.js +0 -14
  195. package/static/form.js +0 -11
  196. package/static/index.js +0 -3
  197. package/store/actions.js +0 -1
  198. package/store/clear.js +0 -10
  199. package/store/index.js +0 -2
  200. package/style/common.css +0 -18
  201. package/style/editor.css +0 -13
  202. package/style/index.css +0 -4
  203. package/style/select.css +0 -143
  204. /package/myShape-diagram/{index.ts → myShape.ts} +0 -0
@@ -3,21 +3,15 @@ import {DivLayer} from './divLayer';
3
3
  import {AnimateLayer} from './animateLayer';
4
4
  import {RenderLayer} from './renderLayer';
5
5
  import {Offscreen} from './offscreen';
6
- import {Line, Node, Point} from './models';
7
- import {
8
- s8,
9
- formatPadding,
10
- getRect,
11
- setInitNodeDataValidat,
12
- setDefaultNodeValidat,
13
- setConnectionTagForConf,
14
- setInitConfData,
15
- getParams,
16
- tabHideShowOperation,
17
- tabStaticOperation
18
- } from './utils';
19
- import {useStore, clearStore, commonStore} from './store'
6
+ import {Socket} from './socket';
7
+ import {Line, Node, Pen, Point, TopologyData, EventAction} from './models';
8
+ import {setConfItemNode} from './healps';
9
+ import {s8, formatPadding, getRect, previewType} from './utils';
10
+ import {DefalutOptions} from './options';
11
+ import {POLL} from './poll';
12
+ import axios from 'axios';
20
13
  import * as mqtt from './mqtt.min';
14
+
21
15
  var MoveInType;
22
16
  (function (MoveInType) {
23
17
  MoveInType[MoveInType["None"] = 0] = "None";
@@ -36,33 +30,27 @@ var Common = /** @class */ (function () {
36
30
  var _this = this;
37
31
  _this.moveInType = MoveInType;
38
32
  this.mouseDown = null;
39
- this.renderTimer = 0;
40
- this.lastRender = 0;
41
- this.pageResizeTim = null;
42
- this.isResize = false;
43
- this.id = s8();
44
- this.store = useStore(this.id);
45
33
  if (typeof parent === 'string') {
46
- this.store.parentElem = document.getElementById(parent);
34
+ this.parentElem = document.getElementById(parent);
47
35
  } else {
48
- this.store.parentElem = parent;
36
+ this.parentElem = parent;
49
37
  }
50
38
  if (!options) {
51
39
  options = {};
52
40
  }
53
- this.store.parentElem.style.position = 'relative';
54
- this.store.parentElem.style.overflow = 'auto';
55
- //var font = Object.assign({}, DefalutOptions.font, options.font);
56
- //options.font = font;
57
- // this.options = Object.assign({}, DefalutOptions, options);
58
- Object.assign(this.store.options, options);
59
- this.store.options.interval = 50;
60
- //Store.set(this.generateStoreKey('topology-data'), this.data);
41
+ this.parentElem.style.position = 'relative';
42
+ this.parentElem.style.overflow = 'auto';
43
+ var font = Object.assign({}, DefalutOptions.font, options.font);
44
+ options.font = font;
45
+ this.options = Object.assign({}, DefalutOptions, options);
46
+ this.data = new TopologyData();
47
+ this.id = s8();
48
+ Store.set(this.generateStoreKey('topology-data'), this.data);
61
49
  var id = this.id;
62
- this.animateLayer = new AnimateLayer(id);
63
- this.offscreen = new Offscreen(id);
64
- this.canvas = new RenderLayer(id);
65
- this.divLayer = new DivLayer(id);
50
+ this.animateLayer = new AnimateLayer(this.options, id);
51
+ this.offscreen = new Offscreen(this.parentElem, this.options, id);
52
+ this.canvas = new RenderLayer(this.parentElem, this.options, id);
53
+ this.divLayer = new DivLayer(this.parentElem, this.options, id);
66
54
  this.divLayer.canvas.tabIndex = 0;
67
55
  this.divLayer.canvas.ondblclick = this.ondblclick;
68
56
  this.divLayer.canvas.onblur = function () {
@@ -92,6 +80,7 @@ var Common = /** @class */ (function () {
92
80
  _this.offscreen.render();
93
81
  break;
94
82
  }
83
+ _this.divLayer.playNext(e.data.nextAnimate);
95
84
  _this.dispatch('animateEnd', e);
96
85
  });
97
86
  this.subcribeTableData = Store.subscribe('SYNC:tableData', function (data) {
@@ -119,6 +108,8 @@ var Common = /** @class */ (function () {
119
108
  }
120
109
  };
121
110
  this.openCount = 0;
111
+ this.timmerByTopology = null;
112
+ this.ratioCord = null;
122
113
  this.lastTranlated = {x: 0, y: 0};
123
114
  this.moveIn = {
124
115
  type: 'None',
@@ -131,9 +122,21 @@ var Common = /** @class */ (function () {
131
122
  lineControlPoint: null,
132
123
  eventNode: null
133
124
  };
125
+ this.initType = ''; // 初始化类型
126
+ this.pathRewrite = '';
127
+ this.initData = null; // 初始化数据
128
+ this.tagParams = {}; // 数据属性的集合,对应不同的事件类型
129
+ this.assetPoperties = {}; // 固定的资产详情的集合
130
+ this.isExistAssetKey = false; // 是否存在固定的资产详情
131
+ this.pollTime = { // 轮询的方式的定时器
132
+ Poll: null,
133
+ Poll1: null,
134
+ Poll2: null,
135
+ };
134
136
  this.tip = '';
135
137
  this.rendering = false;
136
138
  this.isFullScreen = false;
139
+ this.socket = null;
137
140
  this.inputObj = null;
138
141
  this.input = document.createElement('textarea');
139
142
  this.input.style.position = 'absolute';
@@ -144,11 +147,11 @@ var Common = /** @class */ (function () {
144
147
  this.input.style.outline = 'none';
145
148
  this.input.style.border = '1px solid #cdcdcd';
146
149
  this.input.style.resize = 'none';
147
- this.store.parentElem.appendChild(this.input);
150
+ this.parentElem.appendChild(this.input);
148
151
  this.paginationPageListBox = document.createElement('ul');
149
152
  this.pagenationPageInput = document.createElement('input');
150
153
  this.tablePaginationPageStyle();
151
- this.store.parentElem.appendChild(this.paginationPageListBox);
154
+ this.parentElem.appendChild(this.paginationPageListBox);
152
155
  // 列表数据选取
153
156
  this.paginationPageListNode = function (ev) {
154
157
  const node = _this.moveIn.activeNode;
@@ -170,174 +173,110 @@ var Common = /** @class */ (function () {
170
173
  this.createMarkdownTip();
171
174
  window.topology = this;
172
175
  }
173
- Common.prototype.categoryDataParams = function (data){
174
- getParams(this.id, data);
175
- };
176
- Common.prototype.getParams = function (assetId){
177
- const params = {
178
- doorIds: this.store.mqttParams.doorIds,
179
- tagIds: this.store.mqttParams.tagIds.join(","),
180
- assetIds: this.store.mqttParams.assetIds.join(","),
181
- areaIds: this.store.mqttParams.areaIds.join(","),
182
- routingkey: this.store.mqttParams.routingkey,
183
- echart: this.store.mqttParams.tagEcharts.join(","),
184
- echartData: this.store.mqttParams.echartData
185
- }
186
- if (this.store.mqttParams.echartAssemblyData.length) params.echartAssemblyData = [...this.store.mqttParams.echartAssemblyData];
187
- if(assetId) {
188
- params.varValueIds = this.store.mqttParams.varVaule.join(",");
189
- }else {
190
- if(this.store.mqttParams.assetIds.length && this.store.mqttParams.varVaule.length) {
191
- const assetId = this.store.mqttParams.assetIds[this.store.mqttParams.assetIds.length -1];
192
- for(let va = 0; va < this.store.mqttParams.varVaule.length; va++) {
193
- this.store.mqttParams.varVaule[va] = `${assetId}_${this.store.mqttParams.varVaule[va]}`;
194
- }
195
- params.varValueIds = this.store.mqttParams.varVaule.join(",");
196
- }else {
197
- params.varVaule = this.store.mqttParams.varVaule.join(",");
198
- }
199
- }
200
- return params;
201
- };
202
- // 根据图表id数据获取测点数据
203
- Common.prototype.getTagIdsForEchartsIds = function (data){
204
- this.store.mqttParams.echartAssemblyData = data;
205
- };
206
- // 根据指标地址数据获取测点数据
207
- Common.prototype.getTagIdsForKpiAddrs = function (data){
208
- let tagIds = [];
209
- data.map((item) => {
210
- tagIds.push(item.tagId);
211
- });
212
- this.store.mqttParams.tagIds = tagIds;
213
- };
214
- // 获取绑定值类型参数
215
- Common.prototype.getVarValueIdsForVarData = function (data){
216
- const ids = [];
217
- data.map((item) => {
218
- if(item.varVal) ids.push(item.assetVarIds);
219
- })
220
- this.store.mqttParams.varVaule = ids;
221
- };
222
- // 固定资产详情数据赋值
223
- Common.prototype.renderForAssetPoperties = function (asset, data){
224
- if(!Object.keys(asset).length) return;
225
- data.map((node) => {
226
- if (node.data && Array.isArray(node.data) && node.data.length) {
227
- node.data.map((item) => {
228
- if (item.key === 'assetKey' && asset[item.value]) {
229
- if (['imgUrl', 'principleImg'].includes(item.value)) {
230
- node.text = '';
231
- node.image = `${this.store.mqttParams.pathRewrite}${asset[item.value]}`;
232
- } else {
233
- node.text = asset[item.value];
234
- }
235
- }
236
- })
237
- }
238
- if (node.children && node.children.length) {
239
- this.renderForAssetPoperties(asset, node.children);
240
- }
241
- });
242
- };
243
176
 
244
177
  Common.prototype.conversionData = function (obj) {
245
- this.clear();
246
- if (!obj) {
247
- obj = {pens: []};
248
- }
178
+ this.parentElem.scrollLeft = 0;
179
+ this.parentElem.scrollTop = 0;
180
+ this.canvas.clearBkImg();
181
+ this.divLayer.clear();
249
182
  let data = JSON.parse(JSON.stringify(obj));
250
- Object.assign(this.store.data, data);
251
- // pageZoomOnly 表示topology页面只全局缩放,不对局部缩放进行调整
252
- if(this.store.options.type !== 'topology' && this.store.options.type !== 'pageZoomOnly') {
253
- const screenWidth = window.screen.width < 1920 ? 1920 : window.screen.width;
254
- const zoom = window.innerWidth < screenWidth ? document.documentElement.clientWidth / screenWidth : 1;
255
- this.store.data.pageZoom = zoom;
256
- this.store.parentElem.style.transform = `scale(${1/zoom})`;
257
- this.store.parentElem.style.transformOrigin = '0 0';
258
- this.store.parentElem.parentElement.style.overflow = 'hidden';
259
- Store.set('PAGE:zoom', zoom);
260
- }
261
- this.store.data.pens = [];
183
+ if (!data) {
184
+ data = {pens: []};
185
+ }
186
+ Object.assign(this.data, data);
187
+ this.setBKImageRect();
188
+ this.ratioCord = {
189
+ ratio: 1,
190
+ scaleX: 1,
191
+ scaleY: 1
192
+ };
262
193
  this.openCount = 0
263
- const type = this.store.options.type;
194
+ this.data.pens = [];
264
195
  // for old data.
265
196
  if (data.nodes) {
266
197
  for (var _i = 0, _a = data.nodes; _i < _a.length; _i++) {
267
- setInitNodeDataValidat(_a[_i], this.id, type, _i);
268
- const item = new Node(_a[_i]);
269
- this.store.data.pens.push(item);
270
- ///this.store.pens[item.id] = item;
271
- setConnectionTagForConf(item);
198
+ var item = new Node(_a[_i]);
199
+ this.data.pens.push(item);
200
+ this.setSwitchTabData(item, _i);
272
201
  }
273
202
  for (var _b = 0, _c = data.lines; _b < _c.length; _b++) {
274
- _c[_b].TID = this.id;
275
- const item = new Line(_c[_b]);
276
- this.store.data.pens.push(item);
277
- //this.store.pens[item.id] = item;
203
+ var item = _c[_b];
204
+ this.data.pens.push(new Line(item));
278
205
  }
279
206
  }
280
207
  // end.
281
208
  if (data.pens) {
282
209
  for (var _d = 0, _e = data.pens; _d < _e.length; _d++) {
283
- const item = _e[_d];
210
+ var item = _e[_d];
284
211
  if (!item.from) {
285
- setInitNodeDataValidat(item, this.id, type, _d);
286
- const node = new Node(item);
287
- this.store.data.pens.push(node);
288
- //this.store.pens[item.id] = node;
289
- setConnectionTagForConf(node);
212
+ var node = new Node(item);
213
+ this.data.pens.push(node);
214
+ this.setSwitchTabData(node, _d);
290
215
  } else {
291
- const linNode = new Line(item);
292
- this.store.data.pens.push(linNode);
293
- //this.store.pens[item.id] = linNode;
216
+ this.data.pens.push(new Line(item));
294
217
  }
295
218
  }
296
219
  }
297
220
  };
298
- Common.prototype.clear = function (del){
299
- clearStore(this.store, del);
300
- this.canvas.clearBkImg();
301
- this.divLayer.clear();
302
- this.store.parentElem.scrollLeft = 0;
303
- this.store.parentElem.scrollTop = 0;
304
- };
305
- Common.prototype.canvasResize = function (size) {
306
- try {
307
- this.canvas.resize(size);
308
- //this.canvas.bkImgRectResize(size);
309
- this.offscreen.resize(size);
310
- this.divLayer.resize(size);
311
- }catch (err) {
312
- //console.log('resize-----', err)
221
+ Common.prototype.setBKImageRect = function () {
222
+ if (this.data.bkImageRect) {
223
+ this.data.bkImageRect.x = this.data.bkImageRect.x ? Number(this.data.bkImageRect.x) : 0;
224
+ this.data.bkImageRect.y = this.data.bkImageRect.y ? Number(this.data.bkImageRect.y) : 0;
225
+ this.data.bkImageRect.width = this.data.bkImageRect.width ? Number(this.data.bkImageRect.width) : this.canvas.width;
226
+ this.data.bkImageRect.height = this.data.bkImageRect.height ? Number(this.data.bkImageRect.height) : this.canvas.height;
227
+ this.data.bkImageRect.center = {
228
+ x: this.data.bkImageRect.x + this.data.bkImageRect.width / 2,
229
+ y: this.data.bkImageRect.y + this.data.bkImageRect.height / 2
230
+ }
313
231
  }
314
232
  };
315
- // Render or redraw
316
- Common.prototype.render = function (noFocus) {
317
- try {
318
- const _this = this;
319
- const now = performance.now();
320
- if (now - _this.lastRender < _this.store.options.interval && !noFocus) {
321
- if (_this.renderTimer) {
322
- cancelAnimationFrame(_this.renderTimer);
233
+ Common.prototype.setSwitchTabData = function (node, index, type) {
234
+ if (type) {
235
+ let topologyChangeData = Store.get('TCD:topologyChangeData');
236
+ if (topologyChangeData) {
237
+ const switchTabData = node.tags.find((t) => {
238
+ return t.includes('switchTabType');
239
+ });
240
+ const switchTabTypeData = topologyChangeData[`${switchTabData}Data`];
241
+ if (switchTabTypeData) {
242
+ delete switchTabTypeData[node.id];
243
+ for (let switchNode of Object.values(switchTabTypeData)) {
244
+ if (switchNode.tagOrder > index) switchNode.tagOrder--;
245
+ }
323
246
  }
324
- _this.renderTimer = requestAnimationFrame(_this.render);
325
-
326
- return;
327
247
  }
328
- this.renderTimer = 0;
329
- this.lastRender = now;
330
- if (this.rendering) {
331
- return this;
248
+ return;
249
+ }
250
+ if (node.tags && node.tags.length > 0) {
251
+ const tagTypeData = node.tags.find((t) => {
252
+ return t === 'statisticType' || t.includes('switchTabType');
253
+ });
254
+ if (tagTypeData) {
255
+ node.tagOrder = index;
256
+ let topologyChangeData = Store.get('TCD:topologyChangeData');
257
+ if (!topologyChangeData) topologyChangeData = {};
258
+ if (!topologyChangeData[`${tagTypeData}Data`]) topologyChangeData[`${tagTypeData}Data`] = {};
259
+ topologyChangeData[`${tagTypeData}Data`][node.id] = node;
260
+ Store.set('TCD:topologyChangeData', topologyChangeData);
332
261
  }
333
- this.rendering = true;
334
- this.offscreen.render();
335
- this.canvas.render();
336
- this.rendering = false;
337
- }catch (e) {
338
- //console.log(e)
339
262
  }
340
263
  };
264
+ Common.prototype.canvasResize = function (size) {
265
+ this.canvas.resize(size);
266
+ //this.canvas.bkImgRectResize(size);
267
+ this.offscreen.resize(size);
268
+ this.divLayer.resize(size);
269
+ };
270
+ // Render or redraw
271
+ Common.prototype.render = function (noFocus) {
272
+ if (this.rendering) {
273
+ return this;
274
+ }
275
+ this.rendering = true;
276
+ this.offscreen.render();
277
+ this.canvas.render();
278
+ this.rendering = false;
279
+ };
341
280
  Common.prototype.generateStoreKey = function (key) {
342
281
  return this.id + "-" + key;
343
282
  };
@@ -419,7 +358,7 @@ var Common = /** @class */ (function () {
419
358
  this.pagenationPageInput.style.left = node.paginationData.targetPageLocal.x + 'px';
420
359
  this.pagenationPageInput.style.top = node.paginationData.targetPageLocal.y + 'px';
421
360
  this.pagenationPageInput.style.height = node.rect.height + 'px';
422
- this.store.parentElem.appendChild(this.pagenationPageInput);
361
+ this.parentElem.appendChild(this.pagenationPageInput);
423
362
  };
424
363
  // 展开分页列表
425
364
  Common.prototype.spreadPageListHandle = function (node, e) {
@@ -453,65 +392,116 @@ var Common = /** @class */ (function () {
453
392
  };
454
393
  // 获取表格分页数据
455
394
  Common.prototype.getSyncTableDataFromServer = async function (data, node) {
456
- // const path = this.pathRewrite ? mqttEchartApi.replace('/topo-api', this.pathRewrite): mqttEchartApi;
457
- // const ret = await axios.post(path, data);
458
- // //console.log('ret.data==========', ret, ret.data)
459
- // const tableData = {};
460
- // tableData[node.id] = {loading: true};
461
- // Store.set('SYNC:tableData', tableData);
462
- // if (ret.data && ret.data.data) {
463
- // console.log(ret.data.data)
464
- // tableData[node.id] = {
465
- // loading: false,
466
- // tableBody: ret.data.data.rows,
467
- // total: ret.data.data.total
468
- // }
469
- // Store.set('SYNC:tableData', tableData);
470
- // this.render();
471
- // }
472
- // if (ret.error) {
473
- // console.log('获取数据失败==================')
474
- // } else {
475
- // console.log('获取数据成功==================')
476
- // }
395
+ const path = this.pathRewrite ? this.pathRewrite + '/user/cockpit/mqtt-echart' : '/user/cockpit/mqtt-echart';
396
+ const ret = await axios.post(path, data);
397
+ //console.log('ret.data==========', ret, ret.data)
398
+ const tableData = {};
399
+ tableData[node.id] = {loading: true};
400
+ Store.set('SYNC:tableData', tableData);
401
+ if (ret.data && ret.data.data) {
402
+ console.log(ret.data.data)
403
+ tableData[node.id] = {
404
+ loading: false,
405
+ tableBody: ret.data.data.rows,
406
+ total: ret.data.data.total
407
+ }
408
+ Store.set('SYNC:tableData', tableData);
409
+ this.render();
410
+ }
411
+ if (ret.error) {
412
+ console.log('获取数据失败==================')
413
+ } else {
414
+ console.log('获取数据成功==================')
415
+ }
416
+
477
417
  };
478
418
  Common.prototype.switchStaticsCheckType = function (node, staticTypeNode) {
479
- const staticType = staticTypeNode.dcimStaticForType;
480
- if(!staticType || staticType === 'NONE') return;
481
419
  // 点击切换统计图统计类别
482
420
  const switchTabData = node.tags.find((t) => {
483
421
  return t.includes('switchTabType');
484
422
  }); // 获取按钮组类型
485
423
  if(!switchTabData) return;
486
- const topologyChangeData = commonStore[node.TID].switchTabDataPool; // 获取所有按钮组和按类型统计图组数据
424
+ const topologyChangeData = Store.get('TCD:topologyChangeData'); // 获取所有按钮组和按类型统计图组数据
487
425
  const changeNode = topologyChangeData[`${switchTabData}Data`]; // 分别获取按钮组数据
488
- if(!changeNode[node.id]) return;
489
426
  // 如果存在按钮组节点数据
490
- const tabAreaData = topologyChangeData[`${switchTabData}AreaData`];
491
- let tabIndex = 0;
492
- const visitParams = {
493
- order: 0
494
- };
495
- for (let switchNode of Object.values(changeNode)) {
496
- const penNode = this.store.data.pens[switchNode.order];
497
- if(!penNode) return;
498
- const isActive = switchNode.id !== node.id;
499
- if(!isActive) {
500
- visitParams.order = tabIndex;
501
- visitParams.data = switchNode.tabData;
502
- }
503
- penNode.activeImgeIndex = isActive;
504
- tabIndex++;
505
- if(staticType === 'SH') tabHideShowOperation(switchNode, tabAreaData, isActive); // 对显示隐藏的功能进行交互处理
506
- }
507
- // 对绑定的图表进行数据处理
508
- tabStaticOperation(staticType, node, tabAreaData, visitParams);
509
- this.store.data.dataResize = 1;
427
+ if (changeNode[node.id]) {
428
+ for (let switchNode of Object.values(changeNode)) {
429
+ if (this.data.pens[switchNode.tagOrder]) {
430
+ this.data.pens[switchNode.tagOrder].activeImgeIndex = switchNode.id !== node.id;
431
+ }
432
+ }
433
+ }
434
+ if (node.bindStaticId) {
435
+ const statisticTypeData = topologyChangeData.statisticTypeData;
436
+ if(!statisticTypeData) return;
437
+ const findCurentEchart = statisticTypeData[node.bindStaticId]; // 获取当前点中的节点绑定的统计图表数据
438
+ if (findCurentEchart && findCurentEchart.data.params) {
439
+ findCurentEchart.data.params['staticForType'] = staticTypeNode.dcimStaticForType; // 统计类型赋值
440
+ const mqttSyncData = Store.get('mqtt:responseData');
441
+ if (mqttSyncData) setConfItemNode(findCurentEchart, mqttSyncData);
442
+ }
443
+ }
510
444
  this.render();
511
445
  };
512
446
  Common.prototype.s8 = function () {
513
447
  return s8()
514
448
  };
449
+ Common.prototype.openSocket = function (url) {
450
+ this.closeSocket();
451
+ if (url || this.data.websocket) {
452
+ this.socket = new Socket(url || this.data.websocket, this.data);
453
+ }
454
+ };
455
+ Common.prototype.closeSocket = function () {
456
+ if (this.socket) {
457
+ this.socket.close();
458
+ }
459
+ };
460
+ Common.prototype.openMqtt = function (url, options) {
461
+ this.closeMqtt();
462
+ if (url || this.data.mqttUrl) {
463
+ url = url || this.data.mqttUrl;
464
+ const mqttTopics = this.initData && this.initData.mqttTopics ? this.initData.mqttTopics : this.data.mqttTopics;
465
+ options = options || this.data.mqttOptions
466
+ let topics = mqttTopics
467
+ this.isEnd = false;
468
+ // let num = 0; // 记录推送的次数,用于判单丢失情况
469
+ this.mqttClient = mqtt.connect(url, options);
470
+ var _this = this;
471
+ this.mqttClient.on('message', function (topic, message) {
472
+ //console.log('openMqtt11===================', topic, message)
473
+ if (!_this.data.pens.length || !topic || topic != _this.data.mqttTopics) {
474
+ return;
475
+ }
476
+ if (!this.isEnd) {
477
+ _this.doMqttDrow(message.toString())
478
+ }
479
+ });
480
+ if (topics) {
481
+ this.mqttClient.subscribe(topics.split(','));
482
+ }
483
+ }
484
+ };
485
+ Common.prototype.openPoll = function (message, val) {
486
+ if (message) {
487
+ this.poll = new POLL(this.data, message, val);
488
+ }
489
+ };
490
+ Common.prototype.clearInterValAll = function () {
491
+ clearTimeout(this.timmerByTopology);
492
+ this.timmerByTopology = null;
493
+ };
494
+ Common.prototype.closeMqtt = function () {
495
+ if (this.mqttClient) {
496
+ this.isEnd = true
497
+ this.mqttClient.end();
498
+ }
499
+ };
500
+ Common.prototype.closePoll = function () {
501
+ for (let key in this.pollTime) {
502
+ clearInterval(this.pollTime[key])
503
+ }
504
+ };
515
505
  Common.prototype.setNodeText = function () {
516
506
  this.inputObj.text = this.input.value;
517
507
  this.input.style.zIndex = '-1';
@@ -522,10 +512,10 @@ var Common = /** @class */ (function () {
522
512
  this.inputObj = null;
523
513
  };
524
514
  Common.prototype.showInput = function (item) {
525
- if (this.store.data.locked ||
515
+ if (this.data.locked ||
526
516
  item.locked ||
527
517
  item.hideInput ||
528
- this.store.options.hideInput) {
518
+ this.options.hideInput) {
529
519
  return;
530
520
  }
531
521
  this.inputObj = item;
@@ -544,9 +534,9 @@ var Common = /** @class */ (function () {
544
534
  this.input.focus();
545
535
  };
546
536
  Common.prototype.getRect = function (pens) {
547
- if (!this.store || !this.store.data) return;
537
+ if (!this.data) return;
548
538
  if (!pens) {
549
- pens = this.store.data.pens;
539
+ pens = this.data.pens;
550
540
  }
551
541
  return getRect(pens);
552
542
  };
@@ -564,7 +554,7 @@ var Common = /** @class */ (function () {
564
554
  }
565
555
  var offsetX = x - this.lastTranlated.x;
566
556
  var offsetY = y - this.lastTranlated.y;
567
- for (var _i = 0, _a = this.store.data.pens; _i < _a.length; _i++) {
557
+ for (var _i = 0, _a = this.data.pens; _i < _a.length; _i++) {
568
558
  var item = _a[_i];
569
559
  item.translate(offsetX, offsetY);
570
560
  }
@@ -583,7 +573,7 @@ var Common = /** @class */ (function () {
583
573
  var viewCenter = this.getViewCenter(padding);
584
574
  var center = rect.center;
585
575
  this.translate(viewCenter.x - center.x, viewCenter.y - center.y);
586
- var parentElem = this.store.parentElem;
576
+ var parentElem = this.canvas.parentElem;
587
577
  var x = (parentElem.scrollWidth - parentElem.offsetWidth) / 2;
588
578
  var y = (parentElem.scrollHeight - parentElem.offsetHeight) / 2;
589
579
  parentElem.scrollTo(x, y);
@@ -594,7 +584,7 @@ var Common = /** @class */ (function () {
594
584
  return !(rect.width === 99999 || rect.height === 99999);
595
585
  };
596
586
  Common.prototype.getViewCenter = function (viewPadding) {
597
- var padding = formatPadding(viewPadding || this.store.options.viewPadding);
587
+ var padding = formatPadding(viewPadding || this.options.viewPadding);
598
588
  var _a = this.canvas, width = _a.width, height = _a.height;
599
589
  return {
600
590
  x: (width - padding[1] - padding[3]) / 2 + padding[3],
@@ -658,7 +648,7 @@ var Common = /** @class */ (function () {
658
648
  }
659
649
  var tipMarkdownMarginLeft = count * 3 + 11
660
650
 
661
- var parentRect = this.store.parentElem.getBoundingClientRect();
651
+ var parentRect = this.parentElem.getBoundingClientRect();
662
652
  var elemRect = elem.getBoundingClientRect();
663
653
  var x = parentRect.left + dataRect.x;
664
654
  var y = pos.y + parentRect.top;
@@ -666,8 +656,8 @@ var Common = /** @class */ (function () {
666
656
  x = x + dataRect.width / 2 - tipMarkdownMarginLeft
667
657
  y = parentRect.top + dataRect.ey - dataRect.height - 46
668
658
  }
669
- x -= this.store.parentElem.scrollLeft;
670
- y -= this.store.parentElem.scrollTop;
659
+ x -= this.parentElem.scrollLeft;
660
+ y -= this.parentElem.scrollTop;
671
661
  if (x < 0) {
672
662
  x = 0;
673
663
  }
@@ -699,89 +689,460 @@ var Common = /** @class */ (function () {
699
689
  this.tip = '';
700
690
  };
701
691
  Common.prototype.dispatch = function (event, data) {
702
- if(!this.store || !this.store.options) return;
703
- if (this.store.options.on) {
704
- this.store.options.on(event, data);
705
- }
706
- // 先注释掉
707
- // if (event === 'node' && data.name == 'tablePagination' && this.store.options.type !== 'topology') {
708
- // const tableNodes = Store.get('FORM:tableData').data.tableNodes[data.paginationData.bindFromTableId];
709
- // const pageSize = data.paginationData.pageSize;
710
- // const offset = (parseInt(data.paginationData.pageNumber) - 1) * pageSize;
711
- // const params = {
712
- // id: tableNodes.id, // 表格ID
713
- // limit: data.paginationData.pageSize,
714
- // offset: offset
715
- // };
716
- // this.getSyncTableDataFromServer(params, tableNodes);
692
+ if (this.options.on) {
693
+ this.options.on(event, data);
694
+ }
695
+ if (event === 'node' && data.name == 'tablePagination' && this.options.type !== 'topology') {
696
+ const tableNodes = Store.get('FORM:tableData').data.tableNodes[data.paginationData.bindFromTableId];
697
+ const pageSize = data.paginationData.pageSize;
698
+ const offset = (parseInt(data.paginationData.pageNumber) - 1) * pageSize;
699
+ const params = {
700
+ id: tableNodes.id, // 表格ID
701
+ limit: data.paginationData.pageSize,
702
+ offset: offset
703
+ };
704
+ this.getSyncTableDataFromServer(params, tableNodes);
705
+ }
706
+ };
707
+ Common.prototype.onContent = async function (resetDCIM, data, type) {
708
+ //this.shareComponentData = data.shareComponent // 共享组件数据
709
+ if (resetDCIM) {
710
+ if (resetDCIM.pathRewrite != '') {
711
+ this.pathRewrite = resetDCIM.pathRewrite // 路径重写
712
+ }
713
+ if (resetDCIM.mqttUrl) {
714
+ data.mqttUrl = resetDCIM.mqttUrl
715
+ data.mqttOptions.username = resetDCIM.mqttUsername
716
+ data.mqttOptions.password = resetDCIM.mqttPassword
717
+ }
718
+ }
719
+ this.initType = type
720
+ this.initData = data
721
+ const canvasData = data ? data : this.data
722
+ //this.topologyDetailData = initData
723
+ const url = canvasData.mqttUrl
724
+ // if(url && url.indexOf('://') > -1){
725
+ this.onContentForEventType('Mqtt')
717
726
  // }
727
+ if (canvasData.pollUrl) {
728
+ this.onContentForEventType('Poll')
729
+ }
730
+ if (canvasData.pollUrl1) {
731
+ this.onContentForEventType('Poll1')
732
+ }
733
+ if (canvasData.pollUrl2) {
734
+ this.onContentForEventType('Poll2')
735
+ }
718
736
  };
719
- Common.prototype.onContent = function (resetDCIM, data) {
720
- if(!data) data = this.store.data;
721
- let connectParams = {
722
- mqttUrl: data.mqttUrl,
723
- username: data.mqttOptions.username,
724
- password: data.mqttOptions.password,
725
- mqttTopics: data.mqttTopics,
726
- clientId: s8()
727
- };
728
- if (resetDCIM && resetDCIM.mqttUrl) {
729
- connectParams.mqttUrl = resetDCIM.mqttUrl;
730
- connectParams.username = resetDCIM.mqttUsername;
731
- connectParams.password = resetDCIM.mqttPassword;
737
+ Common.prototype.onContentForEventType = async function (eventType) {
738
+ // 获取属性中数据的集合
739
+ if (!this.initType) await this.initTagParams(eventType);
740
+ let tagParams = this.tagParams[eventType]
741
+ if (eventType === 'Mqtt') {
742
+ // 连接测试,MQTT
743
+ this.onMqttContent(tagParams)
744
+ } else if (eventType.indexOf('Poll') > -1) {
745
+ // 连接测试,轮询地址
746
+ this.onPollContent(tagParams, eventType)
732
747
  }
733
- // 连接测试,MQTT
734
- this.openMqtt(connectParams);
735
748
  };
736
- Common.prototype.openMqtt = function (connectParams) {
737
- const _this = this;
738
- _this.closeMqtt();
739
- if(!connectParams.mqttUrl) return;
740
- _this.isEnd = false;
741
- const url = connectParams.mqttUrl.replace('ip', location.hostname);
742
- _this.mqttClient = mqtt.connect(url, connectParams);
743
- _this.mqttClient.on('message', function (topic, message) {
744
- //console.log('openMqtt11===================', topic, message)
745
- if (!topic || topic != connectParams.mqttTopics) return;
746
- if (!this.isEnd) _this.doMqttDrow(message.toString());
747
- });
748
- const topics = connectParams.mqttTopics;
749
- if (topics) {
750
- this.mqttClient.subscribe(topics.split(','));
749
+ Common.prototype.clearTagParams = function (eventType) {
750
+ this.tagParams[eventType] = {};
751
+ this.tagParams[eventType].tagIds = [];
752
+ this.tagParams[eventType].kpiAddrs = [];
753
+ this.tagParams[eventType].tagEcharts = [];
754
+ this.tagParams[eventType].assetIds = [];
755
+ this.tagParams[eventType].areaIds = [];
756
+ // this.tagParams[eventType].cockpitLayoutData = [];//统计图表组件类型ID
757
+ this.tagParams[eventType].echartData = [];//统计图表组件类型ID
758
+ };
759
+ Common.prototype.initTagParams = async function (eventType) {
760
+ this.clearTagParams(eventType)
761
+ const pensData = this.data.pens
762
+ let tagParams = this.getTagParams(pensData, eventType);
763
+ // 详情页面,即URL配置了资产id的页面
764
+ let assetId = this.getUrlParams('assetId')
765
+ // console.log('详情页面,即URL配置了资产id的页面',assetId,eventType, tagParams)
766
+ if (assetId && eventType === 'Mqtt') {
767
+ //if(assetId){
768
+ // 获取属性中绑定指标数据的集合
769
+ await this.getTagParamsForKpiAddrs(assetId, tagParams)
770
+ // 存在固定的资产详情,更新页面数据
771
+ // if(this.assetPoperties && this.isExistAssetKey === true){
772
+ if (this.assetPoperties) {
773
+ // 更新画布上固定的资产详情对应的值
774
+ //const canvasPens = this.pathRewrite ? canvasData.pens : this.canvas.data.pens
775
+ this.renderForAssetPoperties(this.canvas.data.pens);
776
+ }
751
777
  }
752
778
  };
753
- Common.prototype.closeMqtt = function () {
754
- if (this.mqttClient) {
755
- this.isEnd = true
756
- this.mqttClient.end();
779
+ Common.prototype.getTagParams = function (pens, eventType) {
780
+ const _this = this;
781
+ pens.forEach((pen) => {
782
+ if (pen.children != undefined && pen.children.length > 0) {
783
+ _this.getTagParams(pen.children, eventType)
784
+ } else {
785
+ _this.getTagParamsChildren(pen, eventType)
786
+ }
787
+ })
788
+ return this.tagParams[eventType]
789
+ };
790
+ Common.prototype.getTagParamsChildren = function (pen, eventType) {
791
+ let tagIds = []
792
+ let kpiAddrs = []
793
+ let assetIds = []
794
+ let areaIds = []
795
+ let tagEcharts = []
796
+ // let cockpitLayoutData = []
797
+ let echartData = []
798
+ let isEventType = false;
799
+ for (var _b = 0, _c = pen.events; _b < _c.length; _b++) {
800
+ var event_1 = _c[_b];
801
+ if ((event_1.type === 3 && eventType === 'Mqtt') || (event_1.type === 4 && eventType === 'Poll')
802
+ || (event_1.type === 5 && eventType === 'Poll1') || (event_1.type === 6 && eventType === 'Poll2')) {
803
+ isEventType = true;
804
+ }
805
+ }
806
+ if (isEventType === true) {
807
+ if (pen.data != undefined && this.checkType(pen.data) === 'Array' && pen.data.length > 0) {
808
+ pen.data.forEach((item) => {
809
+ if (item.key === 'tagId') {
810
+ tagIds.push(item.value)
811
+ }
812
+ if (item.key === 'kpiAddr') {
813
+ kpiAddrs.push(item.value)
814
+ }
815
+ if (item.key === 'assetKey') {
816
+ this.isExistAssetKey = true
817
+ }
818
+ if (item.key === 'assetId') {
819
+ assetIds.push(item.value)
820
+ }
821
+ if (item.key === 'areaId') {
822
+ areaIds.push(item.value)
823
+ }
824
+ })
825
+ }
826
+ // else if(pen.data != undefined && this.checkType(pen.data) === 'Object' && pen.tags != undefined && this.checkType(pen.tags) === 'Array' && pen.tags.length>0){
827
+ // pen.tags.forEach((item)=>{
828
+ // if( item.indexOf('echart') > -1){
829
+ // tagEcharts.push(item)
830
+ // }
831
+ // })
832
+ // }
833
+ else if (pen.data != undefined && this.checkType(pen.data) === 'Object' && this.checkType(pen.data.params) === 'Object') {
834
+
835
+ // pen.data.echarts && pen.data.echarts.option.series.length > 1 ? echartData.push(pen.data.params.id) : cockpitLayoutData.push(pen.data.params.id)
836
+ echartData.push(pen.data.params.id)
837
+
838
+ }
839
+ this.tagParams[eventType].tagIds = [...new Set(this.tagParams[eventType].tagIds.concat(tagIds))]
840
+ this.tagParams[eventType].kpiAddrs = [...new Set(this.tagParams[eventType].kpiAddrs.concat(kpiAddrs))]
841
+ this.tagParams[eventType].assetIds = [...new Set(this.tagParams[eventType].assetIds.concat(assetIds))]
842
+ this.tagParams[eventType].areaIds = [...new Set(this.tagParams[eventType].areaIds.concat(areaIds))]
843
+ this.tagParams[eventType].tagEcharts = [...new Set(this.tagParams[eventType].tagEcharts.concat(tagEcharts))]
844
+ // this.tagParams[eventType].cockpitLayoutData = [...new Set(this.tagParams[eventType].cockpitLayoutData.concat(cockpitLayoutData))]
845
+ this.tagParams[eventType].echartData = [...new Set(this.tagParams[eventType].echartData.concat(echartData))]
757
846
  }
758
847
  };
759
- Common.prototype.doMqttDrow = function (ret) {
760
- let canvasData = this.store.data;
761
- ret = JSON.parse(ret);
762
- //console.log('处理消息', ret)
763
- this.mqttDataDrawing(canvasData.pens, ret)
848
+ Common.prototype.getMqttData = async function (tagParams, panelData) {
849
+ let ret = {};
850
+ let data = {};
851
+ let path = '';
852
+ let assetData = null;
853
+ let pathRewrite = this.pathRewrite;
854
+ let canvasData = JSON.parse(JSON.stringify(this.canvas.data));
855
+ let mqttTopics = this.data.mqttTopics;
856
+ let tagParamsData = tagParams;
857
+ let detailJson = null;
858
+ Store.set('TIMEOUT:currentPage', `locationPath${this.s8()}`);
859
+ if (panelData) {
860
+ this.data.mqttTopics = mqttTopics
861
+ pathRewrite = panelData.pathRewrite;
862
+ canvasData = JSON.parse(JSON.stringify(panelData.data));
863
+ mqttTopics = panelData.mqttTopics;
864
+ if (panelData.assetId) {
865
+ const detailData = await this.getTagParamsForKpiAddrs(panelData.assetId, tagParams, pathRewrite);
866
+ if (detailData.data) {
867
+ tagParamsData.tagIds = detailData.tagIds;
868
+ assetData = detailData.data.asset;
869
+ detailJson = detailData.data;
870
+ tagParamsData.echartAssemblyData = detailJson.echartAssemblyData;
871
+ }
872
+ }
873
+ }
874
+ tagParamsData.locationPath = Store.get('TIMEOUT:currentPage');
875
+ if (!tagParams) {
876
+ data = this.theData
877
+ path = this.thePath
878
+ } else {
879
+ data = {
880
+ tagIds: tagParamsData.tagIds.join(","),
881
+ assetIds: tagParamsData.assetIds.join(","),
882
+ areaIds: tagParamsData.areaIds.join(","),
883
+ routingkey: mqttTopics,
884
+ echart: tagParamsData.tagEcharts.join(","),
885
+ echartData: tagParamsData.echartData
886
+ }
887
+ if (tagParamsData.echartAssemblyData) {
888
+ data.echartAssemblyData = tagParamsData.echartAssemblyData;
889
+ }
890
+ //const pathRewrite = panelData ? panelData.pathRewrite : this.pathRewrite
891
+ path = pathRewrite ? pathRewrite + '/user/cockpit/mqtt-data' : '/user/cockpit/mqtt-data'
892
+ this.thePath = path
893
+ this.theData = data
894
+ }
895
+ let drawedData = null
896
+ ret = await axios.post(path, data);
897
+ if (ret.data && ret.data.data) {
898
+ if (assetData) ret.data.data.asset = assetData
899
+ drawedData = this.mqttDataDrawing(canvasData, ret.data.data, detailJson)
900
+ }
901
+ this.clearInterValAll();
902
+ this.timmerByTopology = setTimeout(() => {
903
+ const locationPath = Store.get('TIMEOUT:currentPage');
904
+ if (locationPath === tagParamsData.locationPath) {
905
+ this.getMqttData(tagParamsData);
906
+ }
907
+ }, 180000); // 每3分钟定时请求,超过3分钟未收到MQTT将停止推送数据 180000
908
+ if (ret.error) {
909
+ return null;
910
+ } else {
911
+ return {
912
+ mqttData: drawedData,
913
+ detailData: detailJson
914
+ }
915
+ }
764
916
  };
765
- Common.prototype.mqttDataDrawing = function (data, retData) {
917
+ Common.prototype.mqttDataDrawing = function (data, retData, detailJson) {
918
+ const syncData = retData
919
+ const detailData = detailJson ? detailJson.data : [];
766
920
  // console.log('收到消息', syncData)
767
- this.store.monitorAlarm = false;
768
- data.map((item) => {
769
- if(this.store.options.type === 'topology') setInitConfData(this.id, item);
770
- setDefaultNodeValidat(item, retData);
771
- if (item.children && item.children.length) {
772
- this.mqttDataDrawing(item.children, retData);
773
- }
774
- if (item.formData && item.formData.detailPageData && item.formData.detailPageData.pens && item.formData.detailPageData.pens.length) {
775
- this.mqttDataDrawing(item.formData.detailPageData.pens, retData);
921
+ Store.set('mqtt:responseData', syncData);
922
+ data.pens.map((item) => {
923
+ if (item.children != undefined) {
924
+ item.children.map((_item) => {
925
+ item.defaultFillStyle = item.fillStyle;
926
+ item.defaultFontColor = item.font.color;
927
+ if (item.name === 'line') item.defaultLineColor = item.strokeStyle;
928
+ if (!_item.data) return
929
+ //const node = detailData.length > 0 ? detailData : syncData
930
+ const functionData = _item.events.filter((ev) => {
931
+ return ev.action === EventAction.Function
932
+ })
933
+ const dataValue = functionData[0]
934
+ if (functionData.length > 0 && dataValue.value && retData) {
935
+ _item.data.map((d) => {
936
+ const {kpiData, tagData} = retData;
937
+ const key = d.key;
938
+ const value = d.value;
939
+ const _syncItem = key === 'tagId' ? tagData[value] : kpiData[value];
940
+ if ((key === 'tagId' || key === 'kpiAddr') && _syncItem) {
941
+ const isControl = parseInt(_syncItem.isControlDis); // 是否可控,0可控,1不可控
942
+ if (!isControl) {
943
+ d.tagVal = value
944
+ d.controlParams = _syncItem
945
+ // delete _syncItem[value]
946
+ // Object.assign(d, _syncItem)
947
+ }
948
+ }
949
+ })
950
+ //console.log('定制函数=====')
951
+ console.log('定制函数------')
952
+ const func = new Function('pen', 'params', dataValue.value)
953
+ func(_item, JSON.stringify(retData))
954
+ } else {
955
+ // console.log('默认函数')
956
+ setConfItemNode(_item, syncData);
957
+ }
958
+ this.machAnimateReset(item);
959
+ })
960
+ } else {
961
+ item.defaultFillStyle = item.fillStyle;
962
+ item.defaultFontColor = item.font.color;
963
+ if (item.name === 'line') item.defaultLineColor = item.strokeStyle;
964
+ if (!item.data) return
965
+ //const node = detailData.length > 0 ? detailData : syncData
966
+ const functionData = item.events.filter((ev) => {
967
+ return ev.action === EventAction.Function
968
+ })
969
+ const dataValue = functionData[0]
970
+ if (functionData.length > 0 && dataValue.value && retData) {
971
+ item.data.map((d) => {
972
+ const {kpiData, tagData} = retData;
973
+ const key = d.key;
974
+ const value = d.value;
975
+ const _syncItem = key === 'tagId' ? tagData[value] : kpiData[value];
976
+ if ((key === 'tagId' || key === 'kpiAddr') && _syncItem) {
977
+ const isControl = parseInt(_syncItem.isControlDis); // 是否可控,0可控,1不可控
978
+ if (!isControl) {
979
+ d.tagVal = value;
980
+ d.controlParams = _syncItem;
981
+ // delete _syncItem[value]
982
+ // Object.assign(d, _syncItem)
983
+ }
984
+ }
985
+ });
986
+ const func = new Function('pen', 'params', dataValue.value);
987
+ func(item, JSON.stringify(retData));
988
+ //const machData = func(item, JSON.stringify(retData));
989
+ console.log('定制函数------------');
990
+ } else {
991
+ // console.log('默认函数')
992
+ setConfItemNode(item, syncData);
993
+ }
994
+ this.machAnimateReset(item);
776
995
  }
777
- });
778
- //console.log('执行完毕-----', this.store.data.pens)
996
+ })
997
+ // console.log('执行完毕')
779
998
  this.render();
780
999
  this.animate(true);
781
- // 九所的 服务器状态监测功能中用到
782
- if(this.store.options.storeSubscribe) Store.set(this.generateStoreKey('M:monitor'), this.store.monitorAlarm);
783
1000
  return data
784
1001
  };
1002
+ Common.prototype.machAnimateReset = function (pen) {
1003
+ if (!pen.animateFrames || pen.animateFrames.length <= 0) return;
1004
+ for (var _a = 0, _af = pen.animateFrames; _a < _af.length; _a++) {
1005
+ var ani = _af[_a];
1006
+ ani.state.strokeStyle = pen.strokeStyle;
1007
+ ani.state.fillStyle = pen.fillStyle;
1008
+ }
1009
+ };
1010
+ Common.prototype.getTagParamsForKpiAddrs = async function (assetId, tagParams, apiStr) {
1011
+ let params = {
1012
+ assetId: assetId,
1013
+ tagIds: tagParams.tagIds.join(","),
1014
+ kpiAddrs: tagParams.kpiAddrs.join(","),
1015
+ echartAssemblyIds: tagParams.echartData,
1016
+ }
1017
+ let pathRewrite = apiStr ? apiStr : this.pathRewrite
1018
+ const path = pathRewrite ? pathRewrite + '/place/place_monitor/getPlaceAssetDetail' : '/place/place_monitor/getPlaceAssetDetail'
1019
+ let ret = await axios.post(path, params);
1020
+ // 遍历得到属性中绑定指标数据的集合
1021
+ const tagIds = this.getTagIdsForKpiAddrs(ret.data);
1022
+ // 详情页面,固定的资产详情的数据集合
1023
+ this.assetPoperties = ret.asset
1024
+
1025
+ return {
1026
+ data: ret.data,
1027
+ echartAssemblyData: ret.echartAssemblyData,
1028
+ tagIds: tagIds
1029
+ }
1030
+ };
1031
+ Common.prototype.getTagIdsForKpiAddrs = function (data) {
1032
+ let tagIds = [];
1033
+ const delData = this.pathRewrite ? data : data.data;
1034
+ if (delData && delData.length > 0) {
1035
+ delData.forEach((item) => {
1036
+ tagIds.push(item.tagId);
1037
+ })
1038
+ this.tagParams.detailAssetData = data;
1039
+ this.tagParams.Mqtt.tagIds = tagIds;
1040
+ }
1041
+ return tagIds
1042
+ };
1043
+ Common.prototype.renderForAssetPoperties = function (pens) {
1044
+ const _this = this;
1045
+ pens.forEach((pen) => {
1046
+ if (pen.children != undefined) {
1047
+ _this.renderForAssetPoperties(pen.children)
1048
+ } else {
1049
+ _this.renderForAssetPopertiesChildren(pen)
1050
+ }
1051
+ })
1052
+ };
1053
+ Common.prototype.renderForAssetPopertiesChildren = function (pen) {
1054
+ if (pen.data != undefined && pen.data != '' && typeof pen.data === 'object' && Array.isArray(pen.data) && pen.data.length > 0) {
1055
+ pen.data.forEach((item) => {
1056
+ Object.keys(this.assetPoperties).forEach(key => {
1057
+ if (item.key === 'assetKey') {
1058
+ if (item.value === key) {
1059
+ if (key === 'imgUrl' || key === 'principleImg') {
1060
+ pen.text = ''
1061
+ pen.image = this.pathRewrite ? this.pathRewrite + this.assetPoperties[key] : this.assetPoperties[key]
1062
+ } else {
1063
+ pen.text = this.assetPoperties[key]
1064
+ }
1065
+ }
1066
+ }
1067
+ })
1068
+ })
1069
+ }
1070
+ };
1071
+ Common.prototype.onMqttContent = async function (tagParams) {
1072
+ if (!this.initType) this.data.mqttTopics = 'mqtt-' + s8();
1073
+ // 告知MQTT属性中数据的集合
1074
+ const ret = !this.initType ? await this.getMqttData(tagParams) : this.initType;
1075
+ if (ret) {
1076
+ let mqttUrlStr = this.data.mqttUrl, mqttOption = this.data.mqttOptions
1077
+ if (this.initData) {
1078
+ const {mqttUrl, mqttOptions} = this.initData
1079
+ mqttUrlStr = mqttUrl
1080
+ mqttOption = mqttOptions
1081
+ }
1082
+ mqttOption.clientId = s8()
1083
+ this.openMqtt(mqttUrlStr, mqttOption);
1084
+ } else {
1085
+ console.log('请求出错')
1086
+ }
1087
+ };
1088
+ Common.prototype.onPollContent = function (tagParams, eventType) {
1089
+ const index = eventType[4] ? eventType[4] : ''
1090
+ // const url = 'pollUrl'+index;
1091
+ // const second = 'pollSecond'+index;
1092
+ const pollUrl = this.data['pollUrl' + index]
1093
+ const pollSecond = this.data['pollSecond' + index]
1094
+ this.onpollStop(eventType);
1095
+ if (pollUrl && pollSecond) {
1096
+ this.renderForPoll(tagParams, pollUrl, eventType);
1097
+ if (pollSecond != 0) { // 轮询
1098
+ let millisecond = parseInt(pollSecond * 1000)
1099
+ this.pollTime[eventType] = setInterval(() => {
1100
+ this.renderForPoll(tagParams, pollUrl, eventType);
1101
+ }, millisecond);
1102
+ }
1103
+ }
1104
+ };
1105
+ Common.prototype.onpollStop = function (eventType) {
1106
+ if (this.pollTime[eventType]) {
1107
+ clearInterval(this.pollTime[eventType])
1108
+ }
1109
+ };
1110
+ Common.prototype.renderForPoll = async function (tagParams, pollUrl, eventType) {
1111
+ let data = {
1112
+ tagIds: tagParams.tagIds.join(","),
1113
+ // assetIds: tagParams.assetIds.join(","),
1114
+ // echart: tagParams.tagEcharts.join(",")
1115
+ }
1116
+ const _this = this
1117
+ axios.post(pollUrl, data)
1118
+ .then((res) => {
1119
+ _this.openPoll(res, eventType);
1120
+ })
1121
+ .catch((error) => {
1122
+ console.log('轮询地址,连接失败', error)
1123
+ _this.onpollStop(eventType);
1124
+ });
1125
+ };
1126
+ Common.prototype.getUrlParams = function (name) {
1127
+ var reg = new RegExp('(^|&)' + name + '=([^&]*)(&|$)', 'i')
1128
+ var r = window.location.search.substr(1).match(reg)
1129
+ if (r != null) return unescape(r[2])
1130
+ return null
1131
+ };
1132
+ Common.prototype.checkType = function (data) {
1133
+ return Object.prototype.toString.call(data).slice(8, -1)
1134
+ };
1135
+ Common.prototype.mqttLostMessage = function () {
1136
+ // console.log('发送请求mqtt-data')
1137
+ this.getMqttData(this.tagParams.Mqtt);
1138
+ };
1139
+ Common.prototype.doMqttDrow = function (ret) {
1140
+ let canvasData = this.canvas.data;
1141
+ ret = JSON.parse(ret);
1142
+ // console.log('处理消息')
1143
+ // console.log('this.canvas.data',this.canvas.data)
1144
+ this.mqttDataDrawing(canvasData, ret)
1145
+ };
785
1146
  Common.prototype.hidePenByTag = function (pens, val) {
786
1147
  const _this = this;
787
1148
  pens.forEach((pen) => {
@@ -794,11 +1155,11 @@ var Common = /** @class */ (function () {
794
1155
  Common.prototype.hidePenVal = function (pen, val) {
795
1156
  const tags = pen.tags
796
1157
  const obj = val ? JSON.parse(val) : {}
797
- const visibleRange = obj.visibleRange ? obj.visibleRange.trim() : ''
798
- const visibleFnRange = obj.visibleFnRange ? obj.visibleFnRange.trim() : ''
799
- const visibleValue = obj.visibleValue ? obj.visibleValue.trim() : ''
800
- const hiddenRange = obj.hiddenRange ? obj.hiddenRange.trim() : ''
801
- const tabsValue = obj.tabsValue ? obj.tabsValue.trim() : ''
1158
+ const visibleRange = obj.visibleRange
1159
+ const visibleFnRange = obj.visibleFnRange
1160
+ const visibleValue = obj.visibleValue
1161
+ const hiddenRange = obj.hiddenRange
1162
+ const tabsValue = obj.tabsValue
802
1163
  if (tags.length > 0) {
803
1164
  if (visibleRange == '1') {
804
1165
  if (this.openCount % 2 == 0) {
@@ -836,34 +1197,13 @@ var Common = /** @class */ (function () {
836
1197
  }
837
1198
  }
838
1199
  }
839
- };
840
- Common.prototype.formOverflowConversionData = function (obj) {
841
- if (!obj) {
842
- obj = {pens: []};
843
- }
844
- let data = JSON.parse(JSON.stringify(obj));
845
- Object.assign(this.store.data, data);
846
- this.store.data.pens = [];
847
- this.openCount = 0
848
- const type = this.store.options.type;
849
- if (data.pens) {
850
- for (var _d = 0, _e = data.pens; _d < _e.length; _d++) {
851
- const item = _e[_d];
852
- if (!item.from) {
853
- const node = new Node(item);
854
- this.store.data.pens.push(node);
855
- } else {
856
- const linNode = new Line(item);
857
- this.store.data.pens.push(linNode);
858
- }
859
- }
860
- }
1200
+ this.render();
861
1201
  };
862
1202
  Common.prototype.destroyStatic = function () {
863
- this.clear('destroy');
864
- //this.closeSocket();
1203
+ this.clearInterValAll();
1204
+ this.closeSocket();
865
1205
  this.closeMqtt();
866
- cancelAnimationFrame(this.renderTimer);
1206
+ this.closePoll();
867
1207
  this.subcribe.unsubscribe();
868
1208
  this.subcribeRender.unsubscribe();
869
1209
  this.subcribeImage.unsubscribe();
@@ -877,8 +1217,9 @@ var Common = /** @class */ (function () {
877
1217
  this.canvas = null;
878
1218
  this.offscreen.destroy();
879
1219
  this.offscreen = null;
880
- this.store.parentElem = null;
1220
+ this.data = null;
881
1221
  Store.set('form:tableData', null);
1222
+ Store.set('TIMEOUT:currentPage', `empty${this.s8()}`);
882
1223
  Store.set('FORM:tableData', {
883
1224
  data: {
884
1225
  tableNodes: {},