@riil-frontend/component-topology 3.4.0 → 3.5.0-a.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 (44) hide show
  1. package/build/index.js +7 -7
  2. package/es/constants/ResourceTypeLimit.js +28 -2
  3. package/es/core/components/AlarmListPanel/components/AlarmListItem.js +6 -1
  4. package/es/core/components/TopoView/topoView.js +7 -3
  5. package/es/core/editor/components/titlebar/TopoEditorTitleBar.js +29 -1
  6. package/es/core/models/Alarm.js +1 -4
  7. package/es/core/models/DataModel.js +20 -0
  8. package/es/core/models/TopoApp.js +1 -1
  9. package/es/hooks/useManageStatus.js +43 -0
  10. package/es/hooks/useTopoEdit.js +0 -5
  11. package/es/models/topoAlarm.js +1 -4
  12. package/es/models/topoConfig.js +2 -2
  13. package/es/topoCenter/components/editor/propertyViews/edge/LinkPropertyView/Data/index.js +1 -3
  14. package/es/topoCenter/components/editor/propertyViews/edge/LinkPropertyView/LinkPropertyView.js +1 -3
  15. package/es/topoCenter/components/editor/propertyViews/edge/addLinkDrawer/AddLinkDrawer.js +64 -32
  16. package/es/topoCenter/getTopoData.js +53 -9
  17. package/es/topoCenter/hooks/editor/useDeleteEdges.js +2 -0
  18. package/es/topoCenter/store/topoTreeMod.js +6 -19
  19. package/es/topoCenter/utils/linPermissionUtil.js +3 -17
  20. package/es/topoCenter/utils/resourcePermissionUtil.js +84 -0
  21. package/es/utils/ResourceConfigUtil.js +1 -1
  22. package/es/utils/htElementUtils.js +11 -0
  23. package/lib/constants/ResourceTypeLimit.js +37 -3
  24. package/lib/core/components/AlarmListPanel/components/AlarmListItem.js +6 -1
  25. package/lib/core/components/TopoView/topoView.js +7 -2
  26. package/lib/core/editor/components/titlebar/TopoEditorTitleBar.js +32 -1
  27. package/lib/core/models/Alarm.js +1 -4
  28. package/lib/core/models/DataModel.js +20 -0
  29. package/lib/core/models/TopoApp.js +1 -1
  30. package/lib/hooks/useManageStatus.js +50 -0
  31. package/lib/hooks/useTopoEdit.js +0 -5
  32. package/lib/models/topoAlarm.js +0 -6
  33. package/lib/models/topoConfig.js +1 -1
  34. package/lib/topoCenter/components/editor/propertyViews/edge/LinkPropertyView/Data/index.js +1 -4
  35. package/lib/topoCenter/components/editor/propertyViews/edge/LinkPropertyView/LinkPropertyView.js +1 -3
  36. package/lib/topoCenter/components/editor/propertyViews/edge/addLinkDrawer/AddLinkDrawer.js +64 -32
  37. package/lib/topoCenter/getTopoData.js +55 -9
  38. package/lib/topoCenter/hooks/editor/useDeleteEdges.js +2 -0
  39. package/lib/topoCenter/store/topoTreeMod.js +7 -20
  40. package/lib/topoCenter/utils/linPermissionUtil.js +4 -18
  41. package/lib/topoCenter/utils/resourcePermissionUtil.js +98 -0
  42. package/lib/utils/ResourceConfigUtil.js +1 -1
  43. package/lib/utils/htElementUtils.js +19 -6
  44. package/package.json +3 -3
@@ -1,21 +1,13 @@
1
- var isWriteable = function isWriteable(link, source, target, linkType) {
2
- if (linkType === "exit") {
3
- return ["write", "delete"].indexOf(source === null || source === void 0 ? void 0 : source.operation) !== -1;
4
- } else {
5
- return [source, target].filter(function (node) {
6
- return ["write", "delete"].indexOf(node === null || node === void 0 ? void 0 : node.operation) !== -1;
7
- }).length === 2;
8
- }
9
- };
1
+ import { getLinkPermissionByConnectType } from "./resourcePermissionUtil";
10
2
  /**
11
3
  * 获得链路权限
12
4
  *
13
5
  * @param {*} link
14
6
  * @param {*} nodes
7
+ * @deprecated
15
8
  * @returns
16
9
  */
17
10
 
18
-
19
11
  export function getLinkPermission(edge, nodes, link) {
20
12
  var source = nodes.find(function (node) {
21
13
  return node.id === edge.getSource().getTag();
@@ -25,11 +17,5 @@ export function getLinkPermission(edge, nodes, link) {
25
17
  }); // console.log("getLinkPermission", edge, source, target, link);
26
18
 
27
19
  var linkType = link ? link.attributes["network_link.connect_type"] : edge.a("network_link.connect_type");
28
- return {
29
- readable: (source === null || source === void 0 ? void 0 : source.operation) || (target === null || target === void 0 ? void 0 : target.operation),
30
- writeable: isWriteable(edge, source, target, linkType),
31
- deleteable: [source, target].filter(function (node) {
32
- return ["write", "delete"].indexOf(node === null || node === void 0 ? void 0 : node.operation) !== -1;
33
- }).length >= 1
34
- };
20
+ return getLinkPermissionByConnectType(linkType, source, target);
35
21
  }
@@ -0,0 +1,84 @@
1
+ import _extends from "@babel/runtime/helpers/extends";
2
+ export function getNodePermission(node) {
3
+ return {
4
+ readable: !!(node !== null && node !== void 0 && node.operation),
5
+ writeable: ['write', 'delete'].includes(node === null || node === void 0 ? void 0 : node.operation),
6
+ deleteable: ['delete'].includes(node === null || node === void 0 ? void 0 : node.operation)
7
+ };
8
+ }
9
+ /**
10
+ * 获得链路权限
11
+ *
12
+ * @param {*} link
13
+ * @param {*} source
14
+ * @param {*} target
15
+ * @returns
16
+ */
17
+
18
+ export function getLinkPermission(link, source, target) {
19
+ var linkType = link.attributes['network_link.connect_type'];
20
+
21
+ var isWriteable = function isWriteable() {
22
+ if (linkType === 'exit') {
23
+ return ['write', 'delete'].indexOf(source === null || source === void 0 ? void 0 : source.operation) !== -1;
24
+ } else {
25
+ return [source, target].filter(function (node) {
26
+ return ['write', 'delete'].indexOf(node === null || node === void 0 ? void 0 : node.operation) !== -1;
27
+ }).length === 2;
28
+ }
29
+ };
30
+
31
+ return {
32
+ readable: !!(source !== null && source !== void 0 && source.operation) || !!(target !== null && target !== void 0 && target.operation),
33
+ writeable: isWriteable(),
34
+ deleteable: [source, target].filter(function (node) {
35
+ return ['write', 'delete'].includes(node === null || node === void 0 ? void 0 : node.operation);
36
+ }).length >= 1
37
+ };
38
+ }
39
+ /**
40
+ * 适配接口
41
+ *
42
+ * @param {*} connectType
43
+ * @param {*} source
44
+ * @param {*} target
45
+ * @returns
46
+ */
47
+
48
+ export function getLinkPermissionByConnectType(connectType, source, target) {
49
+ var link = {
50
+ attributes: {
51
+ 'network_link.connect_type': connectType
52
+ }
53
+ };
54
+ return getLinkPermission(link, source, target);
55
+ }
56
+ export function addTopoDataResourcePermission(data) {
57
+ var nodes = data.nodes,
58
+ links = data.links,
59
+ linkGroups = data.linkGroups;
60
+
61
+ var addLinksPermission = function addLinksPermission(linkList) {
62
+ return linkList.map(function (link) {
63
+ var source = nodes.find(function (n) {
64
+ return n.id === link.source;
65
+ });
66
+ var target = nodes.find(function (n) {
67
+ return n.id === link.target;
68
+ });
69
+ return _extends({}, link, {
70
+ permission: getLinkPermission(link, source, target)
71
+ });
72
+ });
73
+ };
74
+
75
+ return _extends({}, data, {
76
+ nodes: nodes.map(function (node) {
77
+ return _extends({}, node, {
78
+ permission: getNodePermission(node)
79
+ });
80
+ }),
81
+ links: addLinksPermission(links),
82
+ linkGroups: addLinksPermission(linkGroups)
83
+ });
84
+ }
@@ -57,7 +57,7 @@ function getResourceConfigFromHt(topo) {
57
57
 
58
58
  if (id) {
59
59
  var linkData = topo.dataModel.getDataById(id);
60
- var connectType = linkData === null || linkData === void 0 ? void 0 : linkData.attributes["network_link.connect_type"];
60
+ var connectType = linkData !== null && linkData !== void 0 && linkData.attributes ? linkData === null || linkData === void 0 ? void 0 : linkData.attributes["network_link.connect_type"] : undefined;
61
61
 
62
62
  if (connectType === "exit" && !exportLinkIdList.includes(id)) {
63
63
  exportLinkIdList.push(id);
@@ -263,4 +263,15 @@ export function getGroupChildrenNodes(group) {
263
263
 
264
264
  export function getGroupChildrenData(group) {
265
265
  return getGroupChildren(group).map(getNodeData);
266
+ }
267
+ export function setElementRuntimeStyle(element, name, value) {
268
+ var _extends2;
269
+
270
+ var runtimeStyle = _extends({}, element.a('runtimeStyles') || {}, (_extends2 = {}, _extends2[name] = value, _extends2));
271
+
272
+ if (value === undefined) {
273
+ delete runtimeStyle[name];
274
+ }
275
+
276
+ element.a('runtimeStyles', runtimeStyle);
266
277
  }
@@ -1,11 +1,45 @@
1
1
  "use strict";
2
2
 
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
3
5
  exports.__esModule = true;
4
- exports.getNetworkTopoCommonResListProps = exports.filterCiTypes = exports.RESOURCE_LIMIT_TYPES = void 0;
6
+ exports.filterCiTypes = exports.RESOURCE_LIMIT_TYPES = void 0;
7
+ exports.filterModelTree = filterModelTree;
8
+ exports.getCiModels = getCiModels;
9
+ exports.getNetworkTopoCommonResListProps = void 0;
10
+
11
+ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
12
+
13
+ var excludeTypes = ['data_center', 'manage_assets', 'network_link', 'access_link']; // 过滤模型树
14
+
15
+ function filterModelTree(modelTree) {
16
+ return modelTree.filter(function (node) {
17
+ return !excludeTypes.includes(node.code);
18
+ }).map(function (node) {
19
+ return (0, _extends2["default"])({}, node, {
20
+ childs: filterModelTree(node.childs || []).filter(function (child) {
21
+ return child.monitorable;
22
+ })
23
+ });
24
+ });
25
+ }
26
+
27
+ function getCiModels(modelTree) {
28
+ var list = [];
29
+ filterModelTree(modelTree).forEach(function (domainModel) {
30
+ list.push.apply(list, domainModel.childs);
31
+ });
32
+ return list;
33
+ } // 资源选择组件过滤类型
34
+
5
35
 
6
36
  var filterCiTypes = function filterCiTypes(tree) {
7
- return tree.filter(function (item) {
8
- return item.value !== 'data_center';
37
+ return tree.filter(function (node) {
38
+ return !excludeTypes.includes(node.value);
39
+ }).map(function (node) {
40
+ return (0, _extends2["default"])({}, node, {
41
+ children: filterCiTypes(node.children || [])
42
+ });
9
43
  });
10
44
  };
11
45
 
@@ -21,6 +21,11 @@ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "functio
21
21
 
22
22
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
23
23
 
24
+ var alarmLink = function alarmLink(alarmInfo) {
25
+ console.log("alarmLink", alarmInfo);
26
+ return "/default/pagecenter/" + _uicbb.PAGE_TYPE.ALERT_DETAIL + "/view/" + alarmInfo.alertId + "?alertId=" + alarmInfo.alertId + "&resId=" + alarmInfo.ciId + "&title=" + alarmInfo.alertObject + "&ruleId=" + alarmInfo.ruleId + "&ciCode=" + alarmInfo.ciTypeCode + "&ciType=" + alarmInfo.ciType;
27
+ };
28
+
24
29
  function AlarmListItem(props) {
25
30
  // 传入参数
26
31
  var topo = props.topo,
@@ -33,7 +38,7 @@ function AlarmListItem(props) {
33
38
  className: _indexModule["default"]["alarm-color-icon"] + " alarm-color-icon-lv" + alarmInfo.alertLevel
34
39
  })
35
40
  }, /*#__PURE__*/_react["default"].createElement(_reactRouterDom.Link, {
36
- to: "/default/pagecenter/" + _uicbb.PAGE_TYPE.ALERT_DETAIL + "/view/" + alarmInfo.alertId + "?alertId=" + alarmInfo.alertId + "&resId=" + alarmInfo.ciId + "&title=" + alarmInfo.alertObject
41
+ to: alarmLink(alarmInfo)
37
42
  }, "" + alarmInfo.alertObject + alarmInfo.alertTitle));
38
43
  }
39
44
 
@@ -41,6 +41,8 @@ var _edgeUtil = require("../../utils/edgeUtil");
41
41
 
42
42
  var _TopoViewModule = _interopRequireDefault(require("./TopoView.module.scss"));
43
43
 
44
+ var _useManageStatus = _interopRequireDefault(require("../../../hooks/useManageStatus"));
45
+
44
46
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
45
47
 
46
48
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
@@ -93,7 +95,6 @@ var Topology = function Topology(props) {
93
95
  tData = _useState[0],
94
96
  setTData = _useState[1];
95
97
 
96
- var titleBarRef = (0, _react.useRef)();
97
98
  var topoEdit = (0, _useTopoEdit["default"])({
98
99
  topo: topo,
99
100
  topoId: topoId,
@@ -109,10 +110,14 @@ var Topology = function Topology(props) {
109
110
  var onExitEdit = topoEdit.onExitEdit,
110
111
  onBindData = topoEdit.onBindData,
111
112
  onDeleteElement = topoEdit.onDeleteElement,
112
- onSaveTopo = topoEdit.onSaveTopo; // useAlarm({
113
+ onSaveTopo = topoEdit.onSaveTopo;
114
+ var titleBarRef = (0, _react.useRef)(); // useAlarm({
113
115
  // topo,
114
116
  // });
115
117
 
118
+ (0, _useManageStatus["default"])({
119
+ topo: topo
120
+ });
116
121
  (0, _componentRiilEventEmitter.useCbbEventListener)("topo", {
117
122
  name: "topo",
118
123
  onMessage: function onMessage(data) {
@@ -5,8 +5,14 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
5
5
  exports.__esModule = true;
6
6
  exports["default"] = TopoEditorTitleBar;
7
7
 
8
+ var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
9
+
8
10
  var _box = _interopRequireDefault(require("@alifd/next/lib/box"));
9
11
 
12
+ var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
13
+
14
+ var _dialog = _interopRequireDefault(require("@alifd/next/lib/dialog"));
15
+
10
16
  var _button = _interopRequireDefault(require("@alifd/next/lib/button"));
11
17
 
12
18
  var _react = _interopRequireDefault(require("react"));
@@ -45,7 +51,32 @@ function TopoEditorTitleBar(props) {
45
51
  }, "\u4FDD\u5B58"), /*#__PURE__*/_react["default"].createElement(_button["default"], {
46
52
  className: _TitleBarModule["default"].button,
47
53
  onClick: function onClick() {
48
- topo.exitEditMode();
54
+ _dialog["default"].confirm({
55
+ title: "提示",
56
+ content: "若现在退出,图上修改的内容将不会保存!",
57
+ onOk: function () {
58
+ var _onOk = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee() {
59
+ return _regenerator["default"].wrap(function _callee$(_context) {
60
+ while (1) {
61
+ switch (_context.prev = _context.next) {
62
+ case 0:
63
+ topo.exitEditMode();
64
+
65
+ case 1:
66
+ case "end":
67
+ return _context.stop();
68
+ }
69
+ }
70
+ }, _callee);
71
+ }));
72
+
73
+ function onOk() {
74
+ return _onOk.apply(this, arguments);
75
+ }
76
+
77
+ return onOk;
78
+ }()
79
+ });
49
80
  }
50
81
  }, "\u9000\u51FA"))));
51
82
  }
@@ -528,10 +528,7 @@ var Alarm = /*#__PURE__*/function () {
528
528
  return handleAlarmEvent;
529
529
  }();
530
530
 
531
- _proto.setAlarms = function setAlarms(alarmList) {
532
- // rlog.debug("alart----------------alarmList", alarmList);
533
- this.topo.topoClient.loadAlarm(alarmList);
534
- };
531
+ _proto.updateGraphAlarm = function updateGraphAlarm() {};
535
532
 
536
533
  _proto.getState = function getState() {
537
534
  return this.topo.store.getModelState("topoAlarm");
@@ -27,6 +27,26 @@ var DataModel = /*#__PURE__*/function () {
27
27
  return [].concat(this.getGroups(), this.getNodes(), this.getEdges(), this.getEdgeGroups());
28
28
  };
29
29
 
30
+ _proto.useDatas = function useDatas() {
31
+ var topo = this.topo;
32
+
33
+ var _topo$store$useModelS = topo.store.useModelState('topoMod'),
34
+ data = _topo$store$useModelS.data;
35
+
36
+ if (data) {
37
+ return this.getDatas();
38
+ }
39
+
40
+ return [];
41
+ };
42
+
43
+ _proto.useResources = function useResources() {
44
+ var datas = this.useDatas();
45
+ return datas.filter(function (item) {
46
+ return item.type !== 'group';
47
+ });
48
+ };
49
+
30
50
  _proto.getDataById = function getDataById(id) {
31
51
  return this.getDatas().find(function (item) {
32
52
  return item.id === id;
@@ -48,7 +48,7 @@ var _PluginManager = _interopRequireDefault(require("./PluginManager"));
48
48
  var _topoFactory = _interopRequireDefault(require("./topoFactory"));
49
49
 
50
50
  // eslint-disable-next-line no-undef
51
- var version = typeof "3.4.0" === 'string' ? "3.4.0" : null;
51
+ var version = typeof "3.5.0-a.2" === 'string' ? "3.5.0-a.2" : null;
52
52
  console.info("\u62D3\u6251\u7248\u672C: " + version);
53
53
  /**
54
54
  * 拓扑显示和编辑
@@ -0,0 +1,50 @@
1
+ "use strict";
2
+
3
+ exports.__esModule = true;
4
+ exports["default"] = useManageStatus;
5
+
6
+ var _react = require("react");
7
+
8
+ var _htElementUtils = require("../utils/htElementUtils");
9
+
10
+ var _componentRiilEventEmitter = require("@riil-frontend/component-riil-event-emitter");
11
+
12
+ /**
13
+ * 监听监控状态推送
14
+ * 节点、连线监控状态置灰
15
+ *
16
+ * @param {*} props
17
+ */
18
+ function useManageStatus(props) {
19
+ var topo = props.topo;
20
+ var topoModState = topo.store.useModelState('topoMod');
21
+ var graphLoaded = topoModState.graphLoaded;
22
+ var resources = topo.dataModel.useResources();
23
+ (0, _react.useEffect)(function () {
24
+ // 启动监听
25
+ return function () {// 注销监听
26
+ };
27
+ }, []);
28
+ (0, _react.useEffect)(function () {
29
+ // 首次加载和监控状态变化后,更新节点和连线置灰状态
30
+ if (graphLoaded) {
31
+ resources.forEach(function (resource) {
32
+ var type = resource.type,
33
+ id = resource.id,
34
+ manageStatus = resource.manageStatus,
35
+ permission = resource.permission;
36
+ var isMonite = manageStatus === 3;
37
+ var readable = !!(permission !== null && permission !== void 0 && permission.readable);
38
+ var showNotMoniteStatus = !isMonite && readable;
39
+ var element = topo.getDataModel().getDataByTag(id);
40
+ if (!element) return;
41
+
42
+ if (type === 'node') {
43
+ (0, _htElementUtils.setElementRuntimeStyle)(element, 'opacity', showNotMoniteStatus ? 0.3 : undefined);
44
+ } else {
45
+ (0, _htElementUtils.setElementRuntimeStyle)(element, 'color', showNotMoniteStatus ? '#C9CED2' : undefined);
46
+ }
47
+ });
48
+ }
49
+ }, [graphLoaded, resources]);
50
+ }
@@ -363,11 +363,6 @@ var useTopoEdit = function useTopoEdit(params) {
363
363
  case 'link':
364
364
  if (onLineDelete) {
365
365
  onLineDelete(data);
366
- } // 临时放这里,仅拓扑中心有
367
-
368
-
369
- if (topo.linkDynamicStyleExecutor) {
370
- topo.linkDynamicStyleExecutor.execute();
371
366
  }
372
367
 
373
368
  break;
@@ -11,12 +11,6 @@ var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/
11
11
 
12
12
  var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
13
13
 
14
- var _topo = _interopRequireDefault(require("@riil-frontend/component-topology-common/es/services/topo"));
15
-
16
- var _metric = require("@riil-frontend/component-topology-common/es/services/metric");
17
-
18
- var _model = require("@riil-frontend/component-topology-common/es/services/model");
19
-
20
14
  var _rlog = _interopRequireDefault(require("@riil-frontend/component-topology-utils/es/rlog"));
21
15
 
22
16
  var _lodash = _interopRequireDefault(require("lodash"));
@@ -358,7 +358,7 @@ function _default(topoApp) {
358
358
  _rlog["default"].debug("getTopoByConditions--------data", data);
359
359
 
360
360
  _context4.next = 11;
361
- return (0, _getTopoData.addLinkData)(data);
361
+ return (0, _getTopoData.buildData)(data);
362
362
 
363
363
  case 11:
364
364
  data = _context4.sent;
@@ -36,11 +36,8 @@ function LinkDataTab(props) {
36
36
  linkGroups = _topo$store$useModelS.linkGroups;
37
37
  var linkData = [].concat(links, linkGroups).find(function (item) {
38
38
  return item.id === edge.getTag();
39
- }); // rlog.debug("LinkDataTab-------linkData", linkData);
40
-
39
+ });
41
40
  (0, _react.useEffect)(function () {
42
- _rlog["default"].debug("LinkDataTab--edge-linkData", edge, linkData);
43
-
44
41
  setLink(linkData);
45
42
  }, [edge, linkData]);
46
43
  var permission = (0, _linPermissionUtil.getLinkPermission)(edge, nodes, link);
@@ -21,9 +21,7 @@ var _htElementUtils = require("../../../../../../utils/htElementUtils.js");
21
21
 
22
22
  function LinkPropertyView(props) {
23
23
  var edge = props.edge,
24
- topo = props.topo;
25
- console.log("LinkPropertyView-----", edge, edge.getSource()); // 无权限不显示数据页签
26
- // const operation = props.edge.a('operation');
24
+ topo = props.topo; // 无权限不显示数据页签
27
25
 
28
26
  var _topo$store$useModelS = topo.store.useModelState("topoMod").data,
29
27
  links = _topo$store$useModelS.links,
@@ -51,6 +51,10 @@ function AddLinkDrawer(props) {
51
51
  lineData = props.lineData;
52
52
  var store = topo.store;
53
53
 
54
+ var _topo$store$useModel = topo.store.useModel("topoMod"),
55
+ topoState = _topo$store$useModel[0],
56
+ topoDispatchers = _topo$store$useModel[1];
57
+
54
58
  var _store$useModel = store.useModel("topoConfig"),
55
59
  editState = _store$useModel[0],
56
60
  editDispatchers = _store$useModel[1];
@@ -61,8 +65,6 @@ function AddLinkDrawer(props) {
61
65
 
62
66
  var addLinkIsOpen = editState.addLinkIsOpen,
63
67
  currentLink = editState.currentLink;
64
- var ciConnectable = linkState.ciConnectable; // // rlog.debug("addLinkDrawer--init-addLinkIsOpen", addLinkIsOpen, currentLink);
65
- // const [visible, { setTrue, setFalse }] = useBoolean();
66
68
 
67
69
  var _useState = (0, _react.useState)(),
68
70
  link = _useState[0],
@@ -74,12 +76,16 @@ function AddLinkDrawer(props) {
74
76
 
75
77
  var _useState3 = (0, _react.useState)(false),
76
78
  loading = _useState3[0],
77
- setLoading = _useState3[1]; // 保存后更新拓扑图状态
79
+ setLoading = _useState3[1];
80
+
81
+ var _useState4 = (0, _react.useState)(),
82
+ sourceIFDoc = _useState4[0],
83
+ setSourceIFDoc = _useState4[1]; // 保存后更新拓扑图状态
78
84
 
79
85
 
80
- var _useState4 = (0, _react.useState)([]),
81
- ciIdsConnectable = _useState4[0],
82
- setCiIdsConnectable = _useState4[1];
86
+ var _useState5 = (0, _react.useState)([]),
87
+ ciIdsConnectable = _useState5[0],
88
+ setCiIdsConnectable = _useState5[1];
83
89
 
84
90
  var linkNodesRef = (0, _react.useRef)();
85
91
 
@@ -222,6 +228,7 @@ function AddLinkDrawer(props) {
222
228
 
223
229
  case 6:
224
230
  targetPorts = _context3.sent;
231
+ setSourceIFDoc(sourcePorts.portsDoc);
225
232
  connect_type = currentLink.attributes["network_link.connect_type"] === "exit" ? "exit" : "phy";
226
233
  setLink({
227
234
  source: {
@@ -249,7 +256,7 @@ function AddLinkDrawer(props) {
249
256
  })
250
257
  });
251
258
 
252
- case 9:
259
+ case 10:
253
260
  case "end":
254
261
  return _context3.stop();
255
262
  }
@@ -272,23 +279,17 @@ function AddLinkDrawer(props) {
272
279
 
273
280
  var getCiTypesConnectable = /*#__PURE__*/function () {
274
281
  var _ref4 = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee4() {
275
- var notifier, ciTypesConnectable, nodes, ciIds, ciNodes;
282
+ var ciTypesConnectable, nodes, ciIds, ciNodes;
276
283
  return _regenerator["default"].wrap(function _callee4$(_context4) {
277
284
  while (1) {
278
285
  switch (_context4.prev = _context4.next) {
279
286
  case 0:
280
- notifier = topo.view.topoClient.notifier; // rlog.debug("加载哪些ci类型可创建链路-getCiTypesConnectable");
281
- // 加载哪些ci类型可创建链路
282
-
283
- _context4.next = 3;
287
+ _context4.next = 2;
284
288
  return _topo["default"].networkLink.getCiTypesConnectable(_ResourceTypeLimit.RESOURCE_LIMIT_TYPES);
285
289
 
286
- case 3:
290
+ case 2:
287
291
  ciTypesConnectable = _context4.sent;
288
- nodes = (0, _htElementUtils.getNodes)(topo.getDataModel()); // rlog.debug("getCiTypesConnectable", nodes);
289
- // const tags = topo.getTag();
290
- // rlog.debug("加载哪些ci类型可创建链路", ciTypesConnectable, topo, nodes);
291
-
292
+ nodes = (0, _htElementUtils.getNodes)(topo.getDataModel());
292
293
  ciIds = [];
293
294
  ciNodes = [];
294
295
  nodes.map(function (node) {
@@ -304,7 +305,7 @@ function AddLinkDrawer(props) {
304
305
  setCiIdsConnectable(ciIds);
305
306
  return _context4.abrupt("return", ciNodes);
306
307
 
307
- case 11:
308
+ case 10:
308
309
  case "end":
309
310
  return _context4.stop();
310
311
  }
@@ -404,9 +405,36 @@ function AddLinkDrawer(props) {
404
405
  }
405
406
  };
406
407
 
408
+ var mergeExitLinkData = function mergeExitLinkData(data, attributes) {
409
+ return {
410
+ id: data.id,
411
+ name: data.name,
412
+ source: data["network_link.source_device_id"],
413
+ target: data["network_link.destination_device_id"],
414
+ operation: data.operation,
415
+ interfaceSource: data["source_id"],
416
+ interfaceTarget: data["destination_id"],
417
+ ciType: data.ciType,
418
+ attributes: (0, _extends2["default"])({}, attributes, {
419
+ display_name: data.display_name,
420
+ name: data.name,
421
+ "network_link.actual_bandwidth": data["network_link.actual_bandwidth"],
422
+ "network_link.connect_type": data["network_link.connect_type"],
423
+ "network_link.destination_ipv4": data["network_link.destination_ipv4"],
424
+ "network_link.source_device_id": data["network_link.source_device_id"],
425
+ source_id: data.source_id,
426
+ support_templates: data.support_templates,
427
+ use: data.use,
428
+ source_id_object: {
429
+ displayName: sourceIFDoc[data.source_id].label
430
+ }
431
+ })
432
+ };
433
+ };
434
+
407
435
  var onSave = /*#__PURE__*/function () {
408
436
  var _ref6 = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee5(data) {
409
- var parm, result, linkType, config, exportLinkIdList, _yield$editDispatcher, elements, linkData, edge, aobj, target;
437
+ var parm, result, linkType, config, exportLinkIdList, _yield$editDispatcher, elements, linkData, edge, aobj, target, links, linkAttrKey, newLinkData, newLinks, newData;
410
438
 
411
439
  return _regenerator["default"].wrap(function _callee5$(_context5) {
412
440
  while (1) {
@@ -442,10 +470,7 @@ function AddLinkDrawer(props) {
442
470
  result = _context5.sent;
443
471
 
444
472
  case 13:
445
- setLoading(false); // if (result) {
446
- // Message.success("保存成功");
447
- // }
448
-
473
+ setLoading(false);
449
474
  linkType = data["network_link.connect_type"];
450
475
  _context5.prev = 15;
451
476
 
@@ -454,9 +479,7 @@ function AddLinkDrawer(props) {
454
479
  break;
455
480
  }
456
481
 
457
- config = topo.resourceConfig.getConfigFromHt(); // rlog.debug("getConfigFromHt", config, topo.resourceConfig);
458
- // console.log("save success", data, result);
459
- // 新建后显示到图上
482
+ config = topo.resourceConfig.getConfigFromHt(); // 新建后显示到图上
460
483
 
461
484
  if (!isAddMode) {
462
485
  _context5.next = 31;
@@ -494,12 +517,7 @@ function AddLinkDrawer(props) {
494
517
  break;
495
518
 
496
519
  case 31:
497
- // console.log(
498
- // "保存编辑信息",
499
- // data,
500
- // linkType,
501
- // topo.getGraphView().dm().sm().ld()
502
- // );
520
+ // console.log("保存编辑信息", data, linkType);
503
521
  if (linkType === "exit") {
504
522
  edge = topo.getGraphView().dm().sm().ld();
505
523
  aobj = edge.getAttrObject();
@@ -509,6 +527,20 @@ function AddLinkDrawer(props) {
509
527
  if (target.getTag() === undefined) {
510
528
  target.a("name", data["network_link.destination_ipv4"]);
511
529
  }
530
+
531
+ links = topoState.data.links;
532
+ linkAttrKey = links.findIndex(function (item) {
533
+ return item.id === aobj.id;
534
+ });
535
+ newLinkData = mergeExitLinkData(edge.getAttrObject(), links[linkAttrKey]);
536
+ newLinks = (0, _copyUtil.clone)(links);
537
+ newLinks.splice(linkAttrKey, 1, newLinkData);
538
+ newData = (0, _extends2["default"])({}, topoState.data, {
539
+ links: newLinks
540
+ });
541
+ topoDispatchers.update({
542
+ data: newData
543
+ });
512
544
  }
513
545
 
514
546
  _message["default"].success("保存成功");