@riil-frontend/component-topology 12.1.0-dev.9 → 13.0.0-dev.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 (56) hide show
  1. package/build/1.js +1 -1
  2. package/build/index.css +1 -1
  3. package/build/index.js +14 -14
  4. package/es/components/ResourceSelectDrawer/ResourceSelectDrawer.js +1 -1
  5. package/es/core/components/TopoView/topoView.js +7 -4
  6. package/es/core/editor/components/Sidebar/views/ImagePanel/ImagePanel.js +11 -3
  7. package/es/core/editor/components/settings/core/updateElementProperty.js +3 -2
  8. package/es/core/editor/components/settings/propertyViews/view/GlobalEdgeToggle.js +2 -2
  9. package/es/core/editor/hooks/useNewElementTheme.js +20 -16
  10. package/es/core/hooks/useGraphAlarmDisplay.js +4 -0
  11. package/es/core/hooks/usePolling.js +2 -1
  12. package/es/core/hooks/useTopoEdit.js +206 -244
  13. package/es/core/models/AttributeMetricDisplay.js +4 -3
  14. package/es/core/models/HistoryManager.js +11 -9
  15. package/es/core/models/TopoApp.js +17 -15
  16. package/es/core/models/topoData.js +7 -14
  17. package/es/core/models/utils/linkUtils.js +2 -2
  18. package/es/core/store/models/topoConfig.js +14 -17
  19. package/es/core/utils/edgeUtil.js +7 -11
  20. package/es/core/viewer/components/plugins/ResourceDetail/components/ResourceOverview/EventsCard.js +1 -1
  21. package/es/core/viewer/components/plugins/ResourceDetail/components/ResourceOverview/components/LinkTopo/LinkTopo.module.scss +1 -1
  22. package/es/networkTopo/models/LinkDynamicStyleExecutor.js +7 -63
  23. package/es/networkTopo/services/topo/basic.js +4 -2
  24. package/es/networkTopo/utils/exitLinkUtil.js +23 -11
  25. package/es/networkTopo/utils/relateTopoDataUtil.js +38 -0
  26. package/es/style.js +1 -1
  27. package/es/utils/clusterUtil.js +3 -3
  28. package/es/utils/htElementUtils.js +8 -108
  29. package/lib/components/ResourceSelectDrawer/ResourceSelectDrawer.js +1 -1
  30. package/lib/core/components/TopoView/topoView.js +15 -19
  31. package/lib/core/editor/components/Sidebar/views/ImagePanel/ImagePanel.js +12 -3
  32. package/lib/core/editor/components/settings/core/updateElementProperty.js +7 -2
  33. package/lib/core/editor/components/settings/propertyViews/view/GlobalEdgeToggle.js +2 -2
  34. package/lib/core/editor/hooks/useNewElementTheme.js +20 -16
  35. package/lib/core/hooks/useGraphAlarmDisplay.js +4 -0
  36. package/lib/core/hooks/usePolling.js +6 -5
  37. package/lib/core/hooks/useTopoEdit.js +212 -268
  38. package/lib/core/models/AttributeMetricDisplay.js +6 -6
  39. package/lib/core/models/HistoryManager.js +13 -17
  40. package/lib/core/models/TopoApp.js +18 -15
  41. package/lib/core/models/topoData.js +7 -14
  42. package/lib/core/models/utils/linkUtils.js +1 -1
  43. package/lib/core/store/models/topoConfig.js +20 -31
  44. package/lib/core/utils/edgeUtil.js +6 -10
  45. package/lib/core/viewer/components/plugins/ResourceDetail/components/ResourceOverview/EventsCard.js +1 -1
  46. package/lib/core/viewer/components/plugins/ResourceDetail/components/ResourceOverview/components/LinkTopo/LinkTopo.module.scss +1 -1
  47. package/lib/networkTopo/models/LinkDynamicStyleExecutor.js +6 -64
  48. package/lib/networkTopo/services/topo/basic.js +4 -2
  49. package/lib/networkTopo/utils/exitLinkUtil.js +23 -11
  50. package/lib/networkTopo/utils/relateTopoDataUtil.js +49 -0
  51. package/lib/style.js +1 -1
  52. package/lib/utils/clusterUtil.js +2 -2
  53. package/lib/utils/htElementUtils.js +9 -119
  54. package/package.json +2 -2
  55. package/es/networkTopo/models/LinkTagsTipsBuilder.js +0 -235
  56. package/lib/networkTopo/models/LinkTagsTipsBuilder.js +0 -245
@@ -4,19 +4,19 @@ import _Button from "@alifd/next/es/button";
4
4
  import _Dialog from "@alifd/next/es/dialog";
5
5
  import _asyncToGenerator from "@babel/runtime/helpers/asyncToGenerator";
6
6
  import _regeneratorRuntime from "@babel/runtime/regenerator";
7
- import React, { useCallback, useEffect, useMemo, useState } from "react";
8
- import _ from "lodash";
9
- import rlog from "@riil-frontend/component-topology-utils/es/rlog";
7
+ import React, { useCallback, useState } from "react";
8
+ import Logger from 'loglevel';
10
9
  import { TopoEvent } from "@riil-frontend/component-topology-graph";
11
10
  import { TPL_BLANK, TPL_TREE } from "../../utils/template";
12
- import { getGroupElementByTag, isEdge, isExistedElement, isGroup, isLayer, isNode, getGroupChildren } from "../../utils/htElementUtils";
11
+ import { getGroupElementByTag, isEdge, containsElement, isGroup, isLayer, isNode, getGroupChildren, getElements } from "../../utils/htElementUtils";
13
12
  import useResourceConfig from "./useResourceConfig";
14
13
  import useGroupAddResource from "./useGroupAddResource";
15
14
  import { findGroupChildren } from "../../utils/topoData";
16
15
  import { isResourceElement } from "../../utils/htElementDataUtil";
17
16
  import { isClusterHtElement, isClusterMemberHtElement } from "../../utils/clusterUtil";
18
- import { isExitLink, mergeExportLinkData } from "../models/utils/linkUtils";
17
+ import { isExitLink } from "../models/utils/linkUtils";
19
18
  import { isUniqueIp, buildIpNode } from "../../networkTopo/utils/exitLinkUtil";
19
+ var rlog = Logger.getLogger('topo');
20
20
 
21
21
  var useTopoEdit = function useTopoEdit(params) {
22
22
  var topo = params.topo,
@@ -193,48 +193,7 @@ var useTopoEdit = function useTopoEdit(params) {
193
193
  return onOk;
194
194
  }()
195
195
  });
196
- }; // const deleteGroupFooterBtn = () => {
197
- // return (
198
- // <div>
199
- // <Button type="primary" onClick={doDeleteOnlyGroup()}>
200
- // 仅删除区域
201
- // </Button>
202
- // <Button type="primary" onClick={doDeleteOnlyGroup()}>
203
- // 确定
204
- // </Button>
205
- // </div>
206
- // );
207
- // };
208
- // const [groupDeleteVisible, setGroupDeleteVisible] = useState(false);
209
- // function doDeleteOnlyGroup(data,group) {
210
- // topo.historyManager.beginTransaction();
211
- // console.log("仅删除区域", topo.view.topoClient, data);
212
- // const children = getGroupChildren(group);
213
- // children.map((child) => {
214
- // child.setParent(null);
215
- // // var viewRect = topo.getGraphView().getViewRect();
216
- // // var nodeRect = child.getRect();
217
- // // child.setPosition(
218
- // // viewRect.x + nodeRect.width + 2,
219
- // // viewRect.y + nodeRect.height + 4
220
- // // ); // 解决集群从区域内移出时,连线位置未更新的问题
221
- // setTimeout(function () {
222
- // child.iv();
223
- // topo.historyManager.endTransaction();
224
- // }, 50);
225
- // });
226
- // topo.view.topoClient.deleteGroup(data);
227
- // topo.historyManager.endTransaction();
228
- // setGroupDeleteVisible(false);
229
- // // console.log("仅删除区域", children, group);
230
- // }
231
- // function doDelete(data) {
232
- // topo.historyManager.beginTransaction();
233
- // // FIXME 。如果命中其他的动态条件,则立即显示
234
- // topo.view.topoClient.deleteGroup(data);
235
- // setGroupDeleteVisible(false);
236
- // }
237
-
196
+ };
238
197
  /**
239
198
  * 删除容器。
240
199
  *
@@ -265,21 +224,17 @@ var useTopoEdit = function useTopoEdit(params) {
265
224
  // content: "若执行相关操作,此区域包含的内容也会一同被删除,确定删除吗?",
266
225
  content: "是否仅删除区域或将区域包含的内容一同删除?",
267
226
  footer: [/*#__PURE__*/React.createElement(_Button, {
227
+ key: "1",
268
228
  type: "normal",
269
229
  onClick: doDeleteOnlyGroup,
270
230
  style: {
271
231
  marginRight: "15px"
272
232
  }
273
233
  }, "\u4EC5\u5220\u9664\u533A\u57DF"), /*#__PURE__*/React.createElement(_Button, {
234
+ key: "2",
274
235
  type: "normal",
275
236
  onClick: doDelete
276
237
  }, "\u5168\u90E8\u5220\u9664")],
277
- // okProps: {
278
- // children: "仅删除区域",
279
- // type: "normal",
280
- // className: "next-btn-normal",
281
- // },
282
- // cancelProps: { children: "全部删除" },
283
238
  messageProps: {
284
239
  type: "warning"
285
240
  }
@@ -290,13 +245,7 @@ var useTopoEdit = function useTopoEdit(params) {
290
245
  console.log("仅删除区域", topo.view.topoClient, data);
291
246
  var children = getGroupChildren(group);
292
247
  children.map(function (child) {
293
- child.setParent(null); // var viewRect = topo.getGraphView().getViewRect();
294
- // var nodeRect = child.getRect();
295
- // child.setPosition(
296
- // viewRect.x + nodeRect.width + 2,
297
- // viewRect.y + nodeRect.height + 4
298
- // ); // 解决集群从区域内移出时,连线位置未更新的问题
299
-
248
+ child.setParent(null);
300
249
  setTimeout(function () {
301
250
  child.iv();
302
251
  topo.historyManager.endTransaction();
@@ -315,10 +264,6 @@ var useTopoEdit = function useTopoEdit(params) {
315
264
  }
316
265
  };
317
266
 
318
- var deleteNode = function deleteNode(node) {
319
- emitEvent(TopoEvent.EVENT_TRIGGER_DELETE, node);
320
- };
321
-
322
267
  var handleDeleteNode = function handleDeleteNode(element) {
323
268
  var _topo$options$editor;
324
269
 
@@ -335,46 +280,32 @@ var useTopoEdit = function useTopoEdit(params) {
335
280
  if (typeof onNodeDelete === "function") {
336
281
  onNodeDelete(data);
337
282
  } else {
338
- deleteNode(data);
283
+ emitEvent(TopoEvent.EVENT_TRIGGER_DELETE, data);
339
284
  }
340
285
  }
341
286
  }; // 删除关联在节点上的出口链路
342
287
 
343
288
 
344
- var deleteExLink = /*#__PURE__*/function () {
345
- var _ref4 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee4(node) {
346
- var _node$getEdges$toArra, _node$getEdges;
347
-
348
- var edges;
349
- return _regeneratorRuntime.wrap(function _callee4$(_context4) {
350
- while (1) switch (_context4.prev = _context4.next) {
351
- case 0:
352
- // console.log("删除关联在节点上的出口链路- node, config", node, config);
353
- edges = (_node$getEdges$toArra = (_node$getEdges = node.getEdges()) === null || _node$getEdges === void 0 ? void 0 : _node$getEdges.toArray()) !== null && _node$getEdges$toArra !== void 0 ? _node$getEdges$toArra : [];
289
+ var deleteExLink = function deleteExLink(node) {
290
+ var _node$getEdges$toArra, _node$getEdges;
354
291
 
355
- if (edges.length > 0) {
356
- edges.map(function (edge) {
357
- if (edge.getTag()) {
358
- var link = topo.dataModel.getDataById(edge.getTag());
292
+ rlog.debug("删除关联在节点上的出口链路", {
293
+ node: node
294
+ });
295
+ var edges = (_node$getEdges$toArra = (_node$getEdges = node.getEdges()) === null || _node$getEdges === void 0 ? void 0 : _node$getEdges.toArray()) !== null && _node$getEdges$toArra !== void 0 ? _node$getEdges$toArra : [];
359
296
 
360
- if (link && isExitLink(link)) {
361
- topo.getGraphView().dm().remove(edge);
362
- }
363
- }
364
- });
365
- }
297
+ if (edges.length > 0) {
298
+ edges.map(function (edge) {
299
+ if (edge.getTag()) {
300
+ var link = topo.dataModel.getDataById(edge.getTag());
366
301
 
367
- case 2:
368
- case "end":
369
- return _context4.stop();
302
+ if (link && isExitLink(link)) {
303
+ topo.getGraphView().dm().remove(edge);
304
+ }
370
305
  }
371
- }, _callee4);
372
- }));
373
-
374
- return function deleteExLink(_x3) {
375
- return _ref4.apply(this, arguments);
376
- };
377
- }();
306
+ });
307
+ }
308
+ };
378
309
 
379
310
  var onDeleteElement = function onDeleteElement(data) {
380
311
  var dtype = data.dtype;
@@ -425,7 +356,7 @@ var useTopoEdit = function useTopoEdit(params) {
425
356
  function findUNExistedLinkElements(elements) {
426
357
  var dm = topo.getDataModel();
427
358
  var newLinkElements = elements.filter(function (element) {
428
- return (element.type === "link" || element.type === "linkGroup") && !isExistedElement(topo.getHtTopo(), dm, element);
359
+ return (element.type === "link" || element.type === "linkGroup") && !containsElement(dm, element);
429
360
  });
430
361
  return newLinkElements;
431
362
  }
@@ -438,41 +369,56 @@ var useTopoEdit = function useTopoEdit(params) {
438
369
 
439
370
  function findUNExistedElements(elements) {
440
371
  var dm = topo.getDataModel();
441
- var newLinkElements = elements.filter(function (element) {
442
- return !isExistedElement(topo.getHtTopo(), dm, element);
372
+ var unExistedElements = elements.filter(function (element) {
373
+ return !containsElement(dm, element);
443
374
  });
444
- return newLinkElements;
375
+ return unExistedElements;
445
376
  }
446
377
  /**
447
- * 关联容器的资源
378
+ * 区域关联资源
379
+ * @param {{ id, tag }} group
380
+ * @param {*} resources
448
381
  */
449
382
 
450
383
 
451
- function bindGroupResources(_x4, _x5) {
384
+ function bindGroupResources(_x3, _x4) {
452
385
  return _bindGroupResources.apply(this, arguments);
453
386
  }
454
387
 
455
388
  function _bindGroupResources() {
456
- _bindGroupResources = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee10(group, resources) {
457
- var id, tag, _yield$editDispatcher2, elements, nodeElements, newLinkElements, updateElements;
389
+ _bindGroupResources = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee9(group, resources) {
390
+ var _yield$editDispatcher2, elements, dm, needDeleteHtDatas, nodeElements, newLinkElements, updateElements;
458
391
 
459
- return _regeneratorRuntime.wrap(function _callee10$(_context10) {
460
- while (1) switch (_context10.prev = _context10.next) {
392
+ return _regeneratorRuntime.wrap(function _callee9$(_context9) {
393
+ while (1) switch (_context9.prev = _context9.next) {
461
394
  case 0:
462
- id = group.id, tag = group.tag;
463
- rlog.debug("bindGroupResources--id, tag", id, tag);
395
+ rlog.debug("区域关联资源", {
396
+ group: group,
397
+ resources: resources
398
+ });
464
399
  topo.historyManager.beginTransaction();
465
- _context10.next = 5;
400
+ _context9.next = 4;
466
401
  return resourceConfig.updateGroupResources(group, resources);
467
402
 
468
- case 5:
469
- _context10.next = 7;
403
+ case 4:
404
+ _context9.next = 6;
470
405
  return editDispatchers.fetchDataByConfig();
471
406
 
472
- case 7:
473
- _yield$editDispatcher2 = _context10.sent;
407
+ case 6:
408
+ _yield$editDispatcher2 = _context9.sent;
474
409
  elements = _yield$editDispatcher2.elements;
475
- // 区域里的子区域及子区域的节点、新增的链路
410
+ rlog.debug("区域关联资源: 元素列表", elements); // 先删除多余的元素
411
+
412
+ dm = topo.getDataModel();
413
+ needDeleteHtDatas = getElements(dm).filter(function (htData) {
414
+ return htData.a('id') && !elements.find(function (ele) {
415
+ return ele.id === htData.a('id');
416
+ });
417
+ });
418
+ needDeleteHtDatas.forEach(function (htData) {
419
+ return dm.remove(htData);
420
+ }); // 区域里的所有子节点子区域、新增的链路
421
+
476
422
  nodeElements = findGroupChildren(elements, group);
477
423
  newLinkElements = findUNExistedLinkElements(elements);
478
424
  updateElements = [].concat(nodeElements, newLinkElements);
@@ -487,16 +433,16 @@ var useTopoEdit = function useTopoEdit(params) {
487
433
 
488
434
  topo.historyManager.endTransaction();
489
435
 
490
- case 14:
436
+ case 17:
491
437
  case "end":
492
- return _context10.stop();
438
+ return _context9.stop();
493
439
  }
494
- }, _callee10);
440
+ }, _callee9);
495
441
  }));
496
442
  return _bindGroupResources.apply(this, arguments);
497
443
  }
498
444
 
499
- function addGroupResources(_x6, _x7) {
445
+ function addGroupResources(_x5, _x6) {
500
446
  return _addGroupResources.apply(this, arguments);
501
447
  }
502
448
  /**
@@ -505,10 +451,10 @@ var useTopoEdit = function useTopoEdit(params) {
505
451
 
506
452
 
507
453
  function _addGroupResources() {
508
- _addGroupResources = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee11(group, newResourceIds) {
454
+ _addGroupResources = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee10(group, newResourceIds) {
509
455
  var groupConfig, resources, groupData;
510
- return _regeneratorRuntime.wrap(function _callee11$(_context11) {
511
- while (1) switch (_context11.prev = _context11.next) {
456
+ return _regeneratorRuntime.wrap(function _callee10$(_context10) {
457
+ while (1) switch (_context10.prev = _context10.next) {
512
458
  case 0:
513
459
  groupConfig = resourceConfig.getGroupConfigByElement(group);
514
460
  resources = {
@@ -518,19 +464,19 @@ var useTopoEdit = function useTopoEdit(params) {
518
464
  id: group.getTag(),
519
465
  tag: group.a("tag")
520
466
  };
521
- _context11.next = 5;
467
+ _context10.next = 5;
522
468
  return bindGroupResources(groupData, resources);
523
469
 
524
470
  case 5:
525
471
  case "end":
526
- return _context11.stop();
472
+ return _context10.stop();
527
473
  }
528
- }, _callee11);
474
+ }, _callee10);
529
475
  }));
530
476
  return _addGroupResources.apply(this, arguments);
531
477
  }
532
478
 
533
- function bindViewResources(_x8) {
479
+ function bindViewResources(_x7) {
534
480
  return _bindViewResources.apply(this, arguments);
535
481
  }
536
482
  /**
@@ -542,24 +488,24 @@ var useTopoEdit = function useTopoEdit(params) {
542
488
 
543
489
 
544
490
  function _bindViewResources() {
545
- _bindViewResources = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee12(data) {
491
+ _bindViewResources = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee11(data) {
546
492
  var config, result, _elements;
547
493
 
548
- return _regeneratorRuntime.wrap(function _callee12$(_context12) {
549
- while (1) switch (_context12.prev = _context12.next) {
494
+ return _regeneratorRuntime.wrap(function _callee11$(_context11) {
495
+ while (1) switch (_context11.prev = _context11.next) {
550
496
  case 0:
551
497
  // console.log("关联视图的资源", data);
552
498
  config = resourceConfig.getConfig();
553
499
  config.resources = data;
554
- _context12.next = 4;
500
+ _context11.next = 4;
555
501
  return resourceConfig.updateConfig(config);
556
502
 
557
503
  case 4:
558
- _context12.next = 6;
504
+ _context11.next = 6;
559
505
  return editDispatchers.fetchDataByConfig();
560
506
 
561
507
  case 6:
562
- result = _context12.sent;
508
+ result = _context11.sent;
563
509
  console.log("fetchDataByConfig", result);
564
510
 
565
511
  if (result) {
@@ -573,35 +519,35 @@ var useTopoEdit = function useTopoEdit(params) {
573
519
 
574
520
  case 9:
575
521
  case "end":
576
- return _context12.stop();
522
+ return _context11.stop();
577
523
  }
578
- }, _callee12);
524
+ }, _callee11);
579
525
  }));
580
526
  return _bindViewResources.apply(this, arguments);
581
527
  }
582
528
 
583
- function addLayerResources(_x9, _x10) {
529
+ function addLayerResources(_x8, _x9) {
584
530
  return _addLayerResources.apply(this, arguments);
585
531
  }
586
532
 
587
533
  function _addLayerResources() {
588
- _addLayerResources = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee13(group, newResourceIds) {
534
+ _addLayerResources = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee12(group, newResourceIds) {
589
535
  var _yield$editDispatcher3, elements, newElements;
590
536
 
591
- return _regeneratorRuntime.wrap(function _callee13$(_context13) {
592
- while (1) switch (_context13.prev = _context13.next) {
537
+ return _regeneratorRuntime.wrap(function _callee12$(_context12) {
538
+ while (1) switch (_context12.prev = _context12.next) {
593
539
  case 0:
594
540
  topo.historyManager.beginTransaction(); // 构造新的配置
595
541
 
596
- _context13.next = 3;
542
+ _context12.next = 3;
597
543
  return resourceConfig.addLayerStaticResources(group, newResourceIds);
598
544
 
599
545
  case 3:
600
- _context13.next = 5;
546
+ _context12.next = 5;
601
547
  return editDispatchers.fetchDataByConfig();
602
548
 
603
549
  case 5:
604
- _yield$editDispatcher3 = _context13.sent;
550
+ _yield$editDispatcher3 = _context12.sent;
605
551
  elements = _yield$editDispatcher3.elements;
606
552
  // 2022-11-10 修复 添加资源后分层重新布局问题,仅布局新增资源。替换api topo.updateElements(data)
607
553
  newElements = findUNExistedElements(elements);
@@ -624,32 +570,32 @@ var useTopoEdit = function useTopoEdit(params) {
624
570
 
625
571
  case 14:
626
572
  case "end":
627
- return _context13.stop();
573
+ return _context12.stop();
628
574
  }
629
- }, _callee13);
575
+ }, _callee12);
630
576
  }));
631
577
  return _addLayerResources.apply(this, arguments);
632
578
  }
633
579
 
634
- function addResourceToFirstLayer(_x11) {
580
+ function addResourceToFirstLayer(_x10) {
635
581
  return _addResourceToFirstLayer.apply(this, arguments);
636
582
  }
637
583
 
638
584
  function _addResourceToFirstLayer() {
639
- _addResourceToFirstLayer = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee14(data) {
585
+ _addResourceToFirstLayer = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee13(data) {
640
586
  var group;
641
- return _regeneratorRuntime.wrap(function _callee14$(_context14) {
642
- while (1) switch (_context14.prev = _context14.next) {
587
+ return _regeneratorRuntime.wrap(function _callee13$(_context13) {
588
+ while (1) switch (_context13.prev = _context13.next) {
643
589
  case 0:
644
590
  group = resourceConfig.getGroups()[0];
645
- _context14.next = 3;
591
+ _context13.next = 3;
646
592
  return addLayerResources(group, data);
647
593
 
648
594
  case 3:
649
595
  case "end":
650
- return _context14.stop();
596
+ return _context13.stop();
651
597
  }
652
- }, _callee14);
598
+ }, _callee13);
653
599
  }));
654
600
  return _addResourceToFirstLayer.apply(this, arguments);
655
601
  }
@@ -681,27 +627,27 @@ var useTopoEdit = function useTopoEdit(params) {
681
627
 
682
628
 
683
629
  var onSaveComboRes = /*#__PURE__*/function () {
684
- var _ref5 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee5(data) {
685
- return _regeneratorRuntime.wrap(function _callee5$(_context5) {
686
- while (1) switch (_context5.prev = _context5.next) {
630
+ var _ref4 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee4(data) {
631
+ return _regeneratorRuntime.wrap(function _callee4$(_context4) {
632
+ while (1) switch (_context4.prev = _context4.next) {
687
633
  case 0:
688
634
  rlog.debug("关联资源-----onSaveComboRes", data);
689
635
  topo.historyManager.beginTransaction();
690
636
 
691
637
  if (!(getAddResourceType() === "addToFirstLayer")) {
692
- _context5.next = 7;
638
+ _context4.next = 7;
693
639
  break;
694
640
  }
695
641
 
696
- _context5.next = 5;
642
+ _context4.next = 5;
697
643
  return addResourceToFirstLayer(data);
698
644
 
699
645
  case 5:
700
- _context5.next = 9;
646
+ _context4.next = 9;
701
647
  break;
702
648
 
703
649
  case 7:
704
- _context5.next = 9;
650
+ _context4.next = 9;
705
651
  return bindViewResources(data);
706
652
 
707
653
  case 9:
@@ -713,22 +659,22 @@ var useTopoEdit = function useTopoEdit(params) {
713
659
 
714
660
  case 12:
715
661
  case "end":
716
- return _context5.stop();
662
+ return _context4.stop();
717
663
  }
718
- }, _callee5);
664
+ }, _callee4);
719
665
  }));
720
666
 
721
- return function onSaveComboRes(_x12) {
722
- return _ref5.apply(this, arguments);
667
+ return function onSaveComboRes(_x11) {
668
+ return _ref4.apply(this, arguments);
723
669
  };
724
670
  }();
725
671
 
726
672
  var onSaveTopo = /*#__PURE__*/function () {
727
- var _ref6 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee7(data) {
673
+ var _ref5 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee6(data) {
728
674
  var id, config, serialize, _config$layout, template, layout, saveConfig;
729
675
 
730
- return _regeneratorRuntime.wrap(function _callee7$(_context7) {
731
- while (1) switch (_context7.prev = _context7.next) {
676
+ return _regeneratorRuntime.wrap(function _callee6$(_context6) {
677
+ while (1) switch (_context6.prev = _context6.next) {
732
678
  case 0:
733
679
  id = data.id, config = data.config, serialize = data.serialize;
734
680
  _config$layout = config === null || config === void 0 ? void 0 : config.layout, template = _config$layout.type, layout = _config$layout.layout;
@@ -736,11 +682,11 @@ var useTopoEdit = function useTopoEdit(params) {
736
682
  if (onSave) {
737
683
  // 自定义保存
738
684
  saveConfig = /*#__PURE__*/function () {
739
- var _ref7 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee6() {
740
- return _regeneratorRuntime.wrap(function _callee6$(_context6) {
741
- while (1) switch (_context6.prev = _context6.next) {
685
+ var _ref6 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee5() {
686
+ return _regeneratorRuntime.wrap(function _callee5$(_context5) {
687
+ while (1) switch (_context5.prev = _context5.next) {
742
688
  case 0:
743
- _context6.next = 2;
689
+ _context5.next = 2;
744
690
  return editDispatchers.saveTopo({
745
691
  id: id,
746
692
  layout: layout,
@@ -749,13 +695,13 @@ var useTopoEdit = function useTopoEdit(params) {
749
695
 
750
696
  case 2:
751
697
  case "end":
752
- return _context6.stop();
698
+ return _context5.stop();
753
699
  }
754
- }, _callee6);
700
+ }, _callee5);
755
701
  }));
756
702
 
757
703
  return function saveConfig() {
758
- return _ref7.apply(this, arguments);
704
+ return _ref6.apply(this, arguments);
759
705
  };
760
706
  }();
761
707
 
@@ -768,13 +714,13 @@ var useTopoEdit = function useTopoEdit(params) {
768
714
 
769
715
  case 3:
770
716
  case "end":
771
- return _context7.stop();
717
+ return _context6.stop();
772
718
  }
773
- }, _callee7);
719
+ }, _callee6);
774
720
  }));
775
721
 
776
- return function onSaveTopo(_x13) {
777
- return _ref6.apply(this, arguments);
722
+ return function onSaveTopo(_x12) {
723
+ return _ref5.apply(this, arguments);
778
724
  };
779
725
  }();
780
726
 
@@ -783,7 +729,7 @@ var useTopoEdit = function useTopoEdit(params) {
783
729
  type: type,
784
730
  data: data
785
731
  };
786
- rlog.debug("TopoCenter:onSaveBind", eventData);
732
+ rlog.debug("=> ht: saveBind", eventData);
787
733
  emitEvent(TopoEvent.EVENT_DATA_RESULT, eventData);
788
734
  };
789
735
  /**
@@ -800,11 +746,11 @@ var useTopoEdit = function useTopoEdit(params) {
800
746
 
801
747
 
802
748
  var bindNodeResource = /*#__PURE__*/function () {
803
- var _ref8 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee9(params) {
749
+ var _ref7 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee8(params) {
804
750
  var id, oldResId, newResId, node, parentGroupElement, htTopo, config, groupId, groupTag, _yield$editDispatcher, elements, newData, doBind, _doBind, replaceOrAddRes;
805
751
 
806
- return _regeneratorRuntime.wrap(function _callee9$(_context9) {
807
- while (1) switch (_context9.prev = _context9.next) {
752
+ return _regeneratorRuntime.wrap(function _callee8$(_context8) {
753
+ while (1) switch (_context8.prev = _context8.next) {
808
754
  case 0:
809
755
  replaceOrAddRes = function _replaceOrAddRes(resources, oldResId, newResId) {
810
756
  return _extends({}, resources, {
@@ -815,14 +761,23 @@ var useTopoEdit = function useTopoEdit(params) {
815
761
  };
816
762
 
817
763
  _doBind = function _doBind3() {
818
- _doBind = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee8() {
819
- var dm, newLinkElements, createElementsData, groupChildren, newGroupChildren, existedGroupChildren, groupElement, newElement, sm;
820
- return _regeneratorRuntime.wrap(function _callee8$(_context8) {
821
- while (1) switch (_context8.prev = _context8.next) {
764
+ _doBind = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee7() {
765
+ var dm, needDeleteHtDatas, newLinkElements, createElementsData, groupChildren, newGroupChildren, existedGroupChildren, groupElement, newElement, sm;
766
+ return _regeneratorRuntime.wrap(function _callee7$(_context7) {
767
+ while (1) switch (_context7.prev = _context7.next) {
822
768
  case 0:
823
769
  dm = htTopo.getGraphView().dm(); // 移除旧节点。先删除后创建,解决ip节点替换ping资源后链路丢失问题
824
770
 
825
- dm.remove(node); // 创建
771
+ dm.remove(node); // 先删除多余的元素。解决 区域子节点关联ping,未更新显示链路及删除ip节点
772
+
773
+ needDeleteHtDatas = getElements(dm).filter(function (htData) {
774
+ return htData.a('id') && !elements.find(function (ele) {
775
+ return ele.id === htData.a('id');
776
+ });
777
+ });
778
+ needDeleteHtDatas.forEach(function (htData) {
779
+ return dm.remove(htData);
780
+ }); // 创建
826
781
 
827
782
  newLinkElements = findUNExistedLinkElements(elements);
828
783
  createElementsData = null;
@@ -871,7 +826,7 @@ var useTopoEdit = function useTopoEdit(params) {
871
826
  htTopo.createElements(createElementsData);
872
827
  }
873
828
 
874
- rlog.debug("批量创建元素", createElementsData); // 恢复图标、大小、位置
829
+ rlog.debug("批量创建元素", createElementsData); // 恢复图标、大小、位置、父区域
875
830
 
876
831
  newElement = dm.getDataByTag(newData.id);
877
832
 
@@ -879,21 +834,18 @@ var useTopoEdit = function useTopoEdit(params) {
879
834
  newElement.setSize(node.getSize());
880
835
  newElement.setPosition(node.getPosition());
881
836
  newElement.setImage(node.getImage());
837
+ newElement.setParent(parentGroupElement);
882
838
  } // 选中
883
839
 
884
840
 
885
841
  sm = htTopo.getGraphView().sm();
886
- sm.setSelection([newElement]); // 临时放这里,仅拓扑中心有
842
+ sm.setSelection([newElement]);
887
843
 
888
- if (topo.linkDynamicStyleExecutor) {
889
- topo.linkDynamicStyleExecutor.execute();
890
- }
891
-
892
- case 11:
844
+ case 12:
893
845
  case "end":
894
- return _context8.stop();
846
+ return _context7.stop();
895
847
  }
896
- }, _callee8);
848
+ }, _callee7);
897
849
  }));
898
850
  return _doBind.apply(this, arguments);
899
851
  };
@@ -933,48 +885,55 @@ var useTopoEdit = function useTopoEdit(params) {
933
885
  config.resources = replaceOrAddRes(config.resources, oldResId, newResId);
934
886
  }
935
887
 
936
- _context9.next = 13;
888
+ _context8.next = 13;
937
889
  return resourceConfig.updateConfig(config);
938
890
 
939
891
  case 13:
940
- _context9.next = 15;
892
+ _context8.next = 15;
941
893
  return editDispatchers.fetchDataByConfig();
942
894
 
943
895
  case 15:
944
- _yield$editDispatcher = _context9.sent;
896
+ _yield$editDispatcher = _context8.sent;
945
897
  elements = _yield$editDispatcher.elements;
946
898
  newData = elements.find(function (item) {
947
899
  return item.id === newResId;
948
900
  });
949
901
 
950
- if (newData) {
951
- _context9.next = 23;
902
+ if (!newData) {
903
+ _context8.next = 25;
952
904
  break;
953
905
  }
954
906
 
955
- topo.historyManager.endTransaction();
907
+ _context8.next = 21;
908
+ return doBind();
956
909
 
957
- _Message.error("关联资源失败");
910
+ case 21:
911
+ topo.historyManager.endTransaction(); // 临时放这里,仅拓扑中心有
958
912
 
959
- rlog.error("关联资源失败");
960
- return _context9.abrupt("return", false);
913
+ if (topo.linkDynamicStyleExecutor) {
914
+ topo.linkDynamicStyleExecutor.execute();
915
+ }
961
916
 
962
- case 23:
963
- _context9.next = 25;
964
- return doBind();
917
+ _context8.next = 29;
918
+ break;
965
919
 
966
920
  case 25:
967
921
  topo.historyManager.endTransaction();
968
922
 
969
- case 26:
923
+ _Message.error("关联资源失败");
924
+
925
+ rlog.error("关联资源失败");
926
+ return _context8.abrupt("return", false);
927
+
928
+ case 29:
970
929
  case "end":
971
- return _context9.stop();
930
+ return _context8.stop();
972
931
  }
973
- }, _callee9);
932
+ }, _callee8);
974
933
  }));
975
934
 
976
- return function bindNodeResource(_x14) {
977
- return _ref8.apply(this, arguments);
935
+ return function bindNodeResource(_x13) {
936
+ return _ref7.apply(this, arguments);
978
937
  };
979
938
  }();
980
939
  /**
@@ -982,93 +941,96 @@ var useTopoEdit = function useTopoEdit(params) {
982
941
  */
983
942
 
984
943
 
985
- function relateNodeIp(_x15, _x16) {
944
+ function relateNodeIp(_x14, _x15, _x16) {
986
945
  return _relateNodeIp.apply(this, arguments);
987
946
  }
988
947
 
989
948
  function _relateNodeIp() {
990
- _relateNodeIp = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee15(txtValue, nodeElement) {
991
- var dm, isUnique, ipNodeData, configObj, configData, _elements2, newLinkElements, newLink, newLinkGroup, createElementsData, _htTopo;
949
+ _relateNodeIp = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee14(txtValue, nodeElement, disableHistory) {
950
+ var dm, isUnique, ipNodeData, configObj, configData, elements, newLinkElements, newLink, newLinkGroup, createElementsData, _htTopo;
992
951
 
993
- return _regeneratorRuntime.wrap(function _callee15$(_context15) {
994
- while (1) switch (_context15.prev = _context15.next) {
952
+ return _regeneratorRuntime.wrap(function _callee14$(_context14) {
953
+ while (1) switch (_context14.prev = _context14.next) {
995
954
  case 0:
955
+ if (disableHistory === void 0) {
956
+ disableHistory = false;
957
+ }
958
+
996
959
  if (txtValue) {
997
- _context15.next = 2;
960
+ _context14.next = 3;
998
961
  break;
999
962
  }
1000
963
 
1001
- return _context15.abrupt("return");
964
+ return _context14.abrupt("return");
1002
965
 
1003
- case 2:
1004
- // if (txtValue === nodeElement.a('bindIp')) {
1005
- // return;
1006
- // }
966
+ case 3:
1007
967
  // 根据配置查询拓扑数据
1008
968
  dm = topo.getDataModel(); // 执行唯一性验证
1009
969
 
1010
- isUnique = isUniqueIp(dm, txtValue, nodeElement); // 获取关联链路
970
+ isUnique = isUniqueIp(dm, txtValue, nodeElement);
1011
971
 
1012
- if (!isUnique) {
1013
- _context15.next = 24;
972
+ if (isUnique) {
973
+ _context14.next = 7;
1014
974
  break;
1015
975
  }
1016
976
 
1017
- ipNodeData = buildIpNode(txtValue);
1018
- _context15.next = 8;
1019
- return deleteExLink(nodeElement);
977
+ return _context14.abrupt("return");
1020
978
 
1021
- case 8:
979
+ case 7:
980
+ disableHistory && topo.historyManager.setDisabled(true, '关联IP: 删除关联出口链路、节点绑定IP'); // 删除关联出口链路
981
+
982
+ deleteExLink(nodeElement); // 节点绑定IP
983
+
984
+ ipNodeData = buildIpNode(txtValue);
1022
985
  nodeElement.a(ipNodeData);
1023
986
  nodeElement.setName(txtValue);
1024
- nodeElement.setTag("ip:" + txtValue); // 获取配置
987
+ nodeElement.setTag("ip:" + txtValue);
988
+ disableHistory && topo.historyManager.setDisabled(false, '关联IP: 删除关联出口链路、节点绑定IP'); // 获取配置
1025
989
 
1026
990
  configObj = topo.resourceConfig.getConfig();
1027
- _context15.next = 14;
991
+ _context14.next = 17;
1028
992
  return resourceConfig.updateConfig(configObj);
1029
993
 
1030
- case 14:
1031
- _context15.next = 16;
994
+ case 17:
995
+ _context14.next = 19;
1032
996
  return editDispatchers.fetchDataByConfig();
1033
997
 
1034
- case 16:
1035
- configData = _context15.sent;
1036
- // console.log("configData",configObj, configData);
1037
- _elements2 = configData.elements;
1038
- newLinkElements = findUNExistedLinkElements(_elements2); // console.log("configData", configData, newLinkElements);
1039
-
998
+ case 19:
999
+ configData = _context14.sent;
1000
+ elements = configData.elements;
1001
+ newLinkElements = findUNExistedLinkElements(elements);
1040
1002
  newLink = newLinkElements.filter(function (item) {
1041
1003
  return item.type === "link";
1042
1004
  });
1043
1005
  newLinkGroup = newLinkElements.filter(function (item) {
1044
1006
  return item.type === "linkGroup";
1045
- }); // const newData = elements.find((item) => item.id === `ip:${txtValue}`);
1046
- // console.log("newData",newLinkElements, newLink);
1047
-
1007
+ });
1048
1008
  createElementsData = {
1049
1009
  groups: [],
1050
1010
  nodes: [],
1051
1011
  links: newLink,
1052
1012
  linkGroups: newLinkGroup
1053
1013
  };
1054
- console.log("createElementsData", createElementsData);
1014
+ rlog.debug("createElementsData", createElementsData);
1055
1015
 
1056
1016
  if ([].concat(newLink, newLinkGroup).length > 0) {
1057
1017
  _htTopo = topo.getHtTopo();
1018
+ disableHistory && topo.historyManager.setDisabled(true, '关联IP: 创建链路');
1058
1019
 
1059
- _htTopo.createElements(createElementsData); // 临时放这里,仅拓扑中心有
1020
+ _htTopo.createElements(createElementsData);
1060
1021
 
1022
+ disableHistory && topo.historyManager.setDisabled(false, '关联IP: 创建链路'); // 临时放这里,仅拓扑中心有
1061
1023
 
1062
1024
  if (topo.linkDynamicStyleExecutor) {
1063
1025
  topo.linkDynamicStyleExecutor.execute();
1064
1026
  }
1065
1027
  }
1066
1028
 
1067
- case 24:
1029
+ case 27:
1068
1030
  case "end":
1069
- return _context15.stop();
1031
+ return _context14.stop();
1070
1032
  }
1071
- }, _callee15);
1033
+ }, _callee14);
1072
1034
  }));
1073
1035
  return _relateNodeIp.apply(this, arguments);
1074
1036
  }