@riil-frontend/component-topology 9.0.0-a.11 → 9.0.0-a.12
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.
- package/build/index.js +9 -9
- package/es/core/editor/components/settings/core/updateElementProperty.js +6 -1
- package/es/core/editor/components/settings/propertyViews/node/data/BindIpInput.js +61 -0
- package/es/core/editor/components/settings/propertyViews/node/data/Data.js +27 -8
- package/es/core/hooks/useTopoEdit.js +133 -16
- package/es/core/models/TopoApp.js +1 -1
- package/es/core/models/utils/linkUtils.js +18 -0
- package/es/core/store/models/topoConfig.js +36 -7
- package/es/core/test/Test.js +52 -0
- package/es/core/viewer/components/plugins/ResourceDetail/components/ResourceOverview/ResourceOverview.js +7 -78
- package/es/core/viewer/components/plugins/ResourceDetail/components/ResourceOverview/components/LinkTopo/hooks/useMetricPolling.js +27 -37
- package/es/core/viewer/components/plugins/ResourceDetail/components/ResourceOverview/components/LinkTopo/services/index.js +57 -1
- package/es/networkTopo/services/link.js +1 -1
- package/es/networkTopo/services/topo/basic.js +4 -3
- package/es/networkTopo/services/topo/networkLink.js +45 -3
- package/es/networkTopo/utils/exitLinkUtil.js +110 -0
- package/es/utils/htElementUtils.js +43 -21
- package/lib/core/editor/components/settings/core/updateElementProperty.js +6 -1
- package/lib/core/editor/components/settings/propertyViews/node/data/BindIpInput.js +74 -0
- package/lib/core/editor/components/settings/propertyViews/node/data/Data.js +28 -8
- package/lib/core/hooks/useTopoEdit.js +133 -15
- package/lib/core/models/TopoApp.js +1 -1
- package/lib/core/models/utils/linkUtils.js +21 -1
- package/lib/core/store/models/topoConfig.js +37 -7
- package/lib/core/test/Test.js +52 -0
- package/lib/core/viewer/components/plugins/ResourceDetail/components/ResourceOverview/ResourceOverview.js +6 -78
- package/lib/core/viewer/components/plugins/ResourceDetail/components/ResourceOverview/components/LinkTopo/hooks/useMetricPolling.js +27 -36
- package/lib/core/viewer/components/plugins/ResourceDetail/components/ResourceOverview/components/LinkTopo/services/index.js +58 -1
- package/lib/networkTopo/services/topo/basic.js +5 -3
- package/lib/networkTopo/services/topo/networkLink.js +45 -3
- package/lib/networkTopo/utils/exitLinkUtil.js +115 -0
- package/lib/utils/htElementUtils.js +45 -21
- package/package.json +2 -2
@@ -15,7 +15,7 @@ function getElementData(element) {
|
|
15
15
|
styleMap: element.getStyleMap()
|
16
16
|
};
|
17
17
|
|
18
|
-
if (className ===
|
18
|
+
if (className === "ht.Edge") {
|
19
19
|
return _extends({}, commonData);
|
20
20
|
}
|
21
21
|
|
@@ -27,7 +27,7 @@ function getElementData(element) {
|
|
27
27
|
export function isNode(element) {
|
28
28
|
// HT为了支持区域内无节点可展开增加了站位节点,因此 节点的layer等于container_blank的过滤掉就可以了
|
29
29
|
// eslint-disable-next-line no-underscore-dangle
|
30
|
-
return element instanceof ht.Node && !isLayer(element) && element._layer !==
|
30
|
+
return element instanceof ht.Node && !isLayer(element) && element._layer !== "container_blank";
|
31
31
|
}
|
32
32
|
export function isEdge(element) {
|
33
33
|
return element instanceof ht.Edge;
|
@@ -38,7 +38,7 @@ export function isValidEdge(element) {
|
|
38
38
|
}
|
39
39
|
|
40
40
|
if (!element.getSource() || !element.getTarget()) {
|
41
|
-
rlog.error(
|
41
|
+
rlog.error("isValidEdge 连线异常:源或目的为空", element);
|
42
42
|
return false;
|
43
43
|
}
|
44
44
|
|
@@ -51,7 +51,29 @@ export function isLayer(element) {
|
|
51
51
|
return element instanceof ht.Grid;
|
52
52
|
}
|
53
53
|
export function isText(element) {
|
54
|
-
return element instanceof ht.Text && element.a(
|
54
|
+
return element instanceof ht.Text && element.a("isText");
|
55
|
+
}
|
56
|
+
export function isUniqueIp(dataModel, ip) {
|
57
|
+
console.log("isUniqueIp", ip);
|
58
|
+
var nodes = getNodes(dataModel);
|
59
|
+
var isUnique = true;
|
60
|
+
|
61
|
+
for (var i = 0; i < nodes.length; i++) {
|
62
|
+
var element = nodes[i];
|
63
|
+
var tagTxt = element.getTag();
|
64
|
+
console.log("isUniqueIp-element", tagTxt, ip);
|
65
|
+
|
66
|
+
if (tagTxt !== null && tagTxt !== void 0 && tagTxt.startsWith("ip_")) {
|
67
|
+
var ipTxt = tagTxt.replace("ip_", '');
|
68
|
+
|
69
|
+
if (ipTxt === ip) {
|
70
|
+
isUnique = false;
|
71
|
+
break;
|
72
|
+
}
|
73
|
+
}
|
74
|
+
}
|
75
|
+
|
76
|
+
return isUnique;
|
55
77
|
}
|
56
78
|
export function getElements(dataModel) {
|
57
79
|
// console.error(111, dataModel.getDatas().getArray())
|
@@ -72,7 +94,7 @@ export function getGroupDatas(dataModel) {
|
|
72
94
|
}
|
73
95
|
export function getGroupElementByTag(dataModel, tag) {
|
74
96
|
return dataModel.getDataByTag(tag) || dataModel.getDatas().toArray().filter(function (item) {
|
75
|
-
return item.a(
|
97
|
+
return item.a("tag") === tag;
|
76
98
|
})[0];
|
77
99
|
}
|
78
100
|
export function getGroupData(element) {
|
@@ -83,14 +105,14 @@ export function getGroupData(element) {
|
|
83
105
|
var parent = element.getParent();
|
84
106
|
var groupInfo = parent ? {
|
85
107
|
groupId: parent.getTag(),
|
86
|
-
groupTag: parent.a(
|
108
|
+
groupTag: parent.a("tag") // 父容器
|
87
109
|
|
88
110
|
} : {};
|
89
111
|
return _extends({
|
90
112
|
name: element.getStyleMap().label
|
91
113
|
}, element.getAttrObject(), {
|
92
114
|
id: element.getTag(),
|
93
|
-
tag: element.a(
|
115
|
+
tag: element.a("tag"),
|
94
116
|
image: element.getImage()
|
95
117
|
}, groupInfo);
|
96
118
|
}
|
@@ -104,7 +126,7 @@ export function getNodeData(element) {
|
|
104
126
|
var parent = element.getParent();
|
105
127
|
var groupInfo = parent ? {
|
106
128
|
groupId: parent.getTag(),
|
107
|
-
groupTag: parent.a(
|
129
|
+
groupTag: parent.a("tag") // 父容器
|
108
130
|
|
109
131
|
} : {};
|
110
132
|
return _extends({}, element.getAttrObject(), {
|
@@ -116,12 +138,12 @@ export function getEdges(dataModel) {
|
|
116
138
|
return getElements(dataModel).filter(isValidEdge);
|
117
139
|
}
|
118
140
|
export function isEdgeGroupExpanded(edge) {
|
119
|
-
return isEdge(edge) && edge.getEdgeGroup() && !!edge.s(
|
141
|
+
return isEdge(edge) && edge.getEdgeGroup() && !!edge.s("edge.expanded");
|
120
142
|
}
|
121
143
|
/**
|
122
144
|
* 是否连线组代理
|
123
|
-
* @param {*} edge
|
124
|
-
* @returns
|
145
|
+
* @param {*} edge
|
146
|
+
* @returns
|
125
147
|
*/
|
126
148
|
|
127
149
|
export function isEdgeGroupAgent(edge) {
|
@@ -129,9 +151,9 @@ export function isEdgeGroupAgent(edge) {
|
|
129
151
|
}
|
130
152
|
/**
|
131
153
|
* 获得两个节点间的连线列表
|
132
|
-
* @param {*} node1
|
133
|
-
* @param {*} node2
|
134
|
-
* @returns
|
154
|
+
* @param {*} node1
|
155
|
+
* @param {*} node2
|
156
|
+
* @returns
|
135
157
|
*/
|
136
158
|
|
137
159
|
export function getEdgesBetweenNodes(node1, node2) {
|
@@ -153,7 +175,7 @@ export function getEdgesBetweenNodes(node1, node2) {
|
|
153
175
|
}
|
154
176
|
/**
|
155
177
|
* 获得节点间的连线组,连线<=1时返回null
|
156
|
-
* @returns
|
178
|
+
* @returns
|
157
179
|
*/
|
158
180
|
|
159
181
|
export function getEdgeGroupByNodes(node1, node2) {
|
@@ -172,7 +194,7 @@ export function getEdgeGroupByNodes(node1, node2) {
|
|
172
194
|
}
|
173
195
|
/**
|
174
196
|
* 获得节点间的连线组,连线<=1时返回null
|
175
|
-
* @returns
|
197
|
+
* @returns
|
176
198
|
*/
|
177
199
|
|
178
200
|
export function getEdgeGroupByNodeTags(dataModel, nodeTag1, nodeTag2) {
|
@@ -180,7 +202,7 @@ export function getEdgeGroupByNodeTags(dataModel, nodeTag1, nodeTag2) {
|
|
180
202
|
var node2 = dataModel.getDataByTag(nodeTag2);
|
181
203
|
|
182
204
|
if (!node1 || !node2) {
|
183
|
-
console.warn(
|
205
|
+
console.warn("getEdgeGroupByNodes 未找到节点", {
|
184
206
|
node1: node1,
|
185
207
|
node2: node2,
|
186
208
|
nodeTag1: nodeTag1,
|
@@ -261,7 +283,7 @@ export function getGroupChildren(group) {
|
|
261
283
|
|
262
284
|
|
263
285
|
return group.getChildren().getArray().filter(function (node) {
|
264
|
-
return node._layer !==
|
286
|
+
return node._layer !== "container_blank";
|
265
287
|
});
|
266
288
|
}
|
267
289
|
/**
|
@@ -291,7 +313,7 @@ export function getGroupChildrenData(group) {
|
|
291
313
|
export function setElementRuntimeStyle(element, name, value) {
|
292
314
|
var _extends2;
|
293
315
|
|
294
|
-
var prevRuntimeStyle = element.a(
|
316
|
+
var prevRuntimeStyle = element.a("runtimeStyles") || {};
|
295
317
|
|
296
318
|
var runtimeStyle = _extends({}, prevRuntimeStyle, (_extends2 = {}, _extends2[name] = value, _extends2)); // if (prevRuntimeStyle[name] === undefined && value === undefined) {
|
297
319
|
// return
|
@@ -302,7 +324,7 @@ export function setElementRuntimeStyle(element, name, value) {
|
|
302
324
|
runtimeStyle[name] = undefined; // delete runtimeStyle[name]
|
303
325
|
}
|
304
326
|
|
305
|
-
element.a(
|
327
|
+
element.a("runtimeStyles", runtimeStyle);
|
306
328
|
}
|
307
329
|
/**
|
308
330
|
* 判断拓扑图是否存在元素
|
@@ -315,7 +337,7 @@ export function isExistedElement(htTopo, dataModel, data) {
|
|
315
337
|
|
316
338
|
|
317
339
|
var element = getElements(dataModel).find(function (item) {
|
318
|
-
return data.tag && item.a(
|
340
|
+
return data.tag && item.a("tag") === data.tag;
|
319
341
|
});
|
320
342
|
|
321
343
|
if (element) {
|
@@ -5,7 +5,12 @@ exports["default"] = updateElementProperty;
|
|
5
5
|
|
6
6
|
function updateElementProperty(topo, name, value) {
|
7
7
|
// const element = topo.getDataModel().getDataById(selection[0].id);
|
8
|
-
var element = topo.getSelectionModel().getFirstData();
|
8
|
+
var element = topo.getSelectionModel().getFirstData();
|
9
|
+
console.info("updateElementProperty", topo.getSelectionModel().getSelection(), {
|
10
|
+
element: element,
|
11
|
+
name: name,
|
12
|
+
value: value
|
13
|
+
});
|
9
14
|
|
10
15
|
if (name.startsWith('attrObject.')) {
|
11
16
|
element.setAttr(name.replace('attrObject.', ''), value);
|
@@ -0,0 +1,74 @@
|
|
1
|
+
"use strict";
|
2
|
+
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
4
|
+
|
5
|
+
exports.__esModule = true;
|
6
|
+
exports["default"] = BindIpInput;
|
7
|
+
|
8
|
+
var _button = _interopRequireDefault(require("@alifd/next/lib/button"));
|
9
|
+
|
10
|
+
var _input = _interopRequireDefault(require("@alifd/next/lib/input"));
|
11
|
+
|
12
|
+
var _react = _interopRequireWildcard(require("react"));
|
13
|
+
|
14
|
+
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); }
|
15
|
+
|
16
|
+
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; }
|
17
|
+
|
18
|
+
/**
|
19
|
+
* @return {React.ReactNode | null}
|
20
|
+
*/
|
21
|
+
function BindIpInput(props) {
|
22
|
+
var _node$attrObjectIpv;
|
23
|
+
|
24
|
+
var nodeElement = props.nodeElement,
|
25
|
+
topo = props.topo,
|
26
|
+
topoEditApi = props.topoEditApi,
|
27
|
+
node = props.node,
|
28
|
+
onChange = props.onChange,
|
29
|
+
value = props.value; // const currentResId = node.tag;
|
30
|
+
|
31
|
+
console.log("nodeElement, topo, topoEditApi, node", nodeElement, topo, topoEditApi, node, value);
|
32
|
+
|
33
|
+
var _useState = (0, _react.useState)(''),
|
34
|
+
error = _useState[0],
|
35
|
+
setError = _useState[1];
|
36
|
+
|
37
|
+
var _useState2 = (0, _react.useState)((_node$attrObjectIpv = node["attrObject.ipv4"]) !== null && _node$attrObjectIpv !== void 0 ? _node$attrObjectIpv : ""),
|
38
|
+
txtValue = _useState2[0],
|
39
|
+
setTxtValue = _useState2[1];
|
40
|
+
|
41
|
+
var saveIp = function saveIp(v) {
|
42
|
+
console.log("saveIp", txtValue);
|
43
|
+
var rex = /^((25[0-5]|2[0-4]\d|((1\d{2})|([1-9]?\d)))\.){3}(25[0-5]|2[0-4]\d|((1\d{2})|([1-9]?\d)))$/;
|
44
|
+
var reg = txtValue.match(rex);
|
45
|
+
|
46
|
+
if (reg === null) {
|
47
|
+
setError('error');
|
48
|
+
} else {
|
49
|
+
setError('');
|
50
|
+
onChange(txtValue);
|
51
|
+
topoEditApi.relateNodeIp(txtValue, nodeElement);
|
52
|
+
}
|
53
|
+
};
|
54
|
+
|
55
|
+
return /*#__PURE__*/_react["default"].createElement("div", {
|
56
|
+
style: {
|
57
|
+
display: "flex"
|
58
|
+
}
|
59
|
+
}, /*#__PURE__*/_react["default"].createElement(_input["default"], {
|
60
|
+
placeholder: "\u8BF7\u8F93\u5165Ip\u5730\u5740",
|
61
|
+
name: "attrObject.ipv4",
|
62
|
+
state: error,
|
63
|
+
value: txtValue,
|
64
|
+
maxLength: 128,
|
65
|
+
onChange: setTxtValue
|
66
|
+
}), /*#__PURE__*/_react["default"].createElement(_button["default"], {
|
67
|
+
type: "primary",
|
68
|
+
text: true,
|
69
|
+
onClick: saveIp,
|
70
|
+
style: {
|
71
|
+
marginLeft: 10
|
72
|
+
}
|
73
|
+
}, "\u4FDD\u5B58"));
|
74
|
+
}
|
@@ -27,6 +27,8 @@ var _NodeRelateResourceButton = _interopRequireDefault(require("./NodeRelateReso
|
|
27
27
|
|
28
28
|
var _PlatformDisplay = _interopRequireDefault(require("./PlatformDisplay"));
|
29
29
|
|
30
|
+
var _BindIpInput = _interopRequireDefault(require("./BindIpInput"));
|
31
|
+
|
30
32
|
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); }
|
31
33
|
|
32
34
|
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; }
|
@@ -37,13 +39,14 @@ var CollapsePanel = _collapse["default"].Panel;
|
|
37
39
|
function parseValues(values) {
|
38
40
|
return (0, _extends2["default"])({}, values, {
|
39
41
|
"attrObject.customName": values["attrObject.customName"] || values["attrObject.name"],
|
40
|
-
"attrObject.bindTopo": values["attrObject.bindTopo"] || ""
|
41
|
-
|
42
|
+
"attrObject.bindTopo": values["attrObject.bindTopo"] || "",
|
43
|
+
// 解决切换节点时关联拓扑选项未重置
|
44
|
+
"attrObject.ipv4": values["attrObject.ipv4"] || ""
|
42
45
|
});
|
43
46
|
}
|
44
47
|
|
45
48
|
function getBindType(values) {
|
46
|
-
if (values.tag) {
|
49
|
+
if (values.tag && !values.tag.startsWith('Ip_')) {
|
47
50
|
return "resource";
|
48
51
|
}
|
49
52
|
|
@@ -62,6 +65,7 @@ function Data(props) {
|
|
62
65
|
_onChange = props.onChange,
|
63
66
|
editorProps = props.editorProps;
|
64
67
|
var bindType = getBindType(values);
|
68
|
+
console.log("node, values", node, values);
|
65
69
|
|
66
70
|
var field = _field["default"].useField({
|
67
71
|
autoUnmount: false,
|
@@ -129,7 +133,7 @@ function Data(props) {
|
|
129
133
|
}, /*#__PURE__*/_react["default"].createElement(_form["default"], {
|
130
134
|
field: field,
|
131
135
|
labelAlign: "top"
|
132
|
-
}, !values.tag && /*#__PURE__*/_react["default"].createElement(_form["default"].Item, {
|
136
|
+
}, (!values.tag || bindType === "ip") && /*#__PURE__*/_react["default"].createElement(_form["default"].Item, {
|
133
137
|
label: "\u5173\u8054\u7C7B\u578B"
|
134
138
|
}, /*#__PURE__*/_react["default"].createElement(_select["default"], {
|
135
139
|
name: "bindType",
|
@@ -143,7 +147,9 @@ function Data(props) {
|
|
143
147
|
value: "none"
|
144
148
|
}, "\u672A\u5173\u8054"), /*#__PURE__*/_react["default"].createElement(Option, {
|
145
149
|
value: "resource"
|
146
|
-
}, "\u5173\u8054\u8D44\u6E90"),
|
150
|
+
}, "\u5173\u8054\u8D44\u6E90"), /*#__PURE__*/_react["default"].createElement(Option, {
|
151
|
+
value: "ip"
|
152
|
+
}, "\u5173\u8054IP"), RelateTopoTree && /*#__PURE__*/_react["default"].createElement(Option, {
|
147
153
|
value: "topo"
|
148
154
|
}, "\u5173\u8054\u62D3\u6251"))), bindType === "resource" && /*#__PURE__*/_react["default"].createElement(_form["default"].Item, {
|
149
155
|
label: "\u5173\u8054\u8D44\u6E90"
|
@@ -157,7 +163,7 @@ function Data(props) {
|
|
157
163
|
flex: 1,
|
158
164
|
paddingRight: 16,
|
159
165
|
color: "#4D6277",
|
160
|
-
lineHeight:
|
166
|
+
lineHeight: "20px"
|
161
167
|
},
|
162
168
|
title: values.tag ? values.name : null
|
163
169
|
}, values.tag ? values.name : "—"), /*#__PURE__*/_react["default"].createElement(_NodeRelateResourceButton["default"], {
|
@@ -166,13 +172,27 @@ function Data(props) {
|
|
166
172
|
topo: topo,
|
167
173
|
topoEditApi: topoEditApi,
|
168
174
|
nodeBindResourceDrawerComponent: editorProps.nodeBindResourceDrawerComponent
|
169
|
-
}))), bindType === "
|
175
|
+
}))), bindType === "ip" && /*#__PURE__*/_react["default"].createElement(_form["default"].Item, {
|
176
|
+
label: "\u5173\u8054IP" // style={{ display: "flex" }}
|
177
|
+
,
|
178
|
+
pattern: /^((25[0-5]|2[0-4]\d|((1\d{2})|([1-9]?\d)))\.){3}(25[0-5]|2[0-4]\d|((1\d{2})|([1-9]?\d)))$/,
|
179
|
+
patternTrigger: "onBlur",
|
180
|
+
patternMessage: "IP\u5730\u5740\u683C\u5F0F\u4E0D\u6B63\u786E"
|
181
|
+
}, /*#__PURE__*/_react["default"].createElement(_BindIpInput["default"], {
|
182
|
+
nodeElement: node,
|
183
|
+
node: values,
|
184
|
+
topo: topo,
|
185
|
+
topoEditApi: topoEditApi,
|
186
|
+
placeholder: "\u8BF7\u8F93\u5165",
|
187
|
+
name: "attrObject.ipv4",
|
188
|
+
maxLength: 128
|
189
|
+
})), bindType === "topo" && RelateTopoTree && /*#__PURE__*/_react["default"].createElement(_form["default"].Item, {
|
170
190
|
label: "\u5173\u8054\u62D3\u6251"
|
171
191
|
}, /*#__PURE__*/_react["default"].createElement(RelateTopoTree, {
|
172
192
|
name: "attrObject.bindTopo",
|
173
193
|
topo: topo,
|
174
194
|
onChange: handleBindTopoChange
|
175
|
-
})), (editorProps === null || editorProps === void 0 ? void 0 : editorProps.topoType) ===
|
195
|
+
})), (editorProps === null || editorProps === void 0 ? void 0 : editorProps.topoType) === "cmpTopo" && node.getTag() && /*#__PURE__*/_react["default"].createElement(_form["default"].Item, {
|
176
196
|
label: "\u6240\u5C5E\u5E73\u53F0"
|
177
197
|
}, /*#__PURE__*/_react["default"].createElement(_PlatformDisplay["default"], props)))));
|
178
198
|
}
|
@@ -37,6 +37,8 @@ var _htElementDataUtil = require("../../utils/htElementDataUtil");
|
|
37
37
|
|
38
38
|
var _clusterUtil = require("../../utils/clusterUtil");
|
39
39
|
|
40
|
+
var _linkUtils = require("../models/utils/linkUtils");
|
41
|
+
|
40
42
|
var useTopoEdit = function useTopoEdit(params) {
|
41
43
|
var topo = params.topo,
|
42
44
|
topoId = params.topoId,
|
@@ -342,7 +344,7 @@ var useTopoEdit = function useTopoEdit(params) {
|
|
342
344
|
|
343
345
|
edges.map(function (edge) {
|
344
346
|
if (edge.a("dtype") === "link" && exportLinkIdList.indexOf(edge.getTag()) >= 0) {
|
345
|
-
// exLink.push(edge);
|
347
|
+
// exLink.push(edge);
|
346
348
|
topo.getGraphView().dm().remove(edge);
|
347
349
|
exportLinkIdList.splice(config.exportLinkIdList.indexOf(edge.getTag()), 1);
|
348
350
|
}
|
@@ -406,8 +408,8 @@ var useTopoEdit = function useTopoEdit(params) {
|
|
406
408
|
};
|
407
409
|
/**
|
408
410
|
* 获得未存在的连线元素
|
409
|
-
* @param {*} elements
|
410
|
-
* @returns
|
411
|
+
* @param {*} elements
|
412
|
+
* @returns
|
411
413
|
*/
|
412
414
|
|
413
415
|
|
@@ -420,8 +422,8 @@ var useTopoEdit = function useTopoEdit(params) {
|
|
420
422
|
}
|
421
423
|
/**
|
422
424
|
* 获得未存在的元素
|
423
|
-
* @param {Array} elements
|
424
|
-
* @returns
|
425
|
+
* @param {Array} elements
|
426
|
+
* @returns
|
425
427
|
*/
|
426
428
|
|
427
429
|
|
@@ -600,7 +602,7 @@ var useTopoEdit = function useTopoEdit(params) {
|
|
600
602
|
// 2022-11-10 修复 添加资源后分层重新布局问题,仅布局新增资源。替换api topo.updateElements(data)
|
601
603
|
newElements = findUNExistedElements(elements);
|
602
604
|
|
603
|
-
_rlog["default"].debug(
|
605
|
+
_rlog["default"].debug("添加分层资源", {
|
604
606
|
layer: group,
|
605
607
|
newElements: newElements
|
606
608
|
});
|
@@ -674,8 +676,8 @@ var useTopoEdit = function useTopoEdit(params) {
|
|
674
676
|
}
|
675
677
|
/**
|
676
678
|
* 未选中元素添加资源
|
677
|
-
*
|
678
|
-
* @param {*} data
|
679
|
+
*
|
680
|
+
* @param {*} data
|
679
681
|
*/
|
680
682
|
|
681
683
|
|
@@ -835,7 +837,7 @@ var useTopoEdit = function useTopoEdit(params) {
|
|
835
837
|
newLinkElements = findUNExistedLinkElements(elements);
|
836
838
|
createElementsData = null;
|
837
839
|
|
838
|
-
if (newData.type ===
|
840
|
+
if (newData.type === "group") {
|
839
841
|
groupChildren = (0, _topoData.findGroupChildren)(elements, newData);
|
840
842
|
newGroupChildren = [];
|
841
843
|
existedGroupChildren = [];
|
@@ -852,10 +854,10 @@ var useTopoEdit = function useTopoEdit(params) {
|
|
852
854
|
groups: [newData],
|
853
855
|
nodes: newGroupChildren,
|
854
856
|
links: newLinkElements.filter(function (item) {
|
855
|
-
return item.type ===
|
857
|
+
return item.type === "link";
|
856
858
|
}),
|
857
859
|
linkGroups: newLinkElements.filter(function (item) {
|
858
|
-
return item.type ===
|
860
|
+
return item.type === "linkGroup";
|
859
861
|
})
|
860
862
|
};
|
861
863
|
htTopo.createElements(createElementsData); // 切换前图上如果存在集群内的节点,切换节点为集群后,移到集群内
|
@@ -870,16 +872,16 @@ var useTopoEdit = function useTopoEdit(params) {
|
|
870
872
|
groups: [],
|
871
873
|
nodes: [newData],
|
872
874
|
links: newLinkElements.filter(function (item) {
|
873
|
-
return item.type ===
|
875
|
+
return item.type === "link";
|
874
876
|
}),
|
875
877
|
linkGroups: newLinkElements.filter(function (item) {
|
876
|
-
return item.type ===
|
878
|
+
return item.type === "linkGroup";
|
877
879
|
})
|
878
880
|
};
|
879
881
|
htTopo.createElements(createElementsData);
|
880
882
|
}
|
881
883
|
|
882
|
-
_rlog["default"].debug(
|
884
|
+
_rlog["default"].debug("批量创建元素", createElementsData); // 恢复图标、大小、位置
|
883
885
|
|
884
886
|
|
885
887
|
newElement = dm.getDataByTag(newData.id);
|
@@ -999,6 +1001,117 @@ var useTopoEdit = function useTopoEdit(params) {
|
|
999
1001
|
return _ref8.apply(this, arguments);
|
1000
1002
|
};
|
1001
1003
|
}();
|
1004
|
+
/**
|
1005
|
+
* 关联IP的图片节点
|
1006
|
+
*/
|
1007
|
+
|
1008
|
+
|
1009
|
+
function relateNodeIp(_x15, _x16) {
|
1010
|
+
return _relateNodeIp.apply(this, arguments);
|
1011
|
+
}
|
1012
|
+
|
1013
|
+
function _relateNodeIp() {
|
1014
|
+
_relateNodeIp = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee16(txtValue, nodeElement) {
|
1015
|
+
var dm, htTopo, elements, _yield$editDispatcher5, elementDatas, isUnique, ipTxt, ids, ip, re, config, linksData, createElementsData;
|
1016
|
+
|
1017
|
+
return _regenerator["default"].wrap(function _callee16$(_context16) {
|
1018
|
+
while (1) {
|
1019
|
+
switch (_context16.prev = _context16.next) {
|
1020
|
+
case 0:
|
1021
|
+
// console.log("bindIPtoNode", data);
|
1022
|
+
// 根据配置查询拓扑数据
|
1023
|
+
dm = topo.getDataModel();
|
1024
|
+
htTopo = topo.getHtTopo();
|
1025
|
+
elements = (0, _htElementUtils.getNodes)(dm);
|
1026
|
+
_context16.next = 5;
|
1027
|
+
return editDispatchers.fetchDataByConfig();
|
1028
|
+
|
1029
|
+
case 5:
|
1030
|
+
_yield$editDispatcher5 = _context16.sent;
|
1031
|
+
elementDatas = _yield$editDispatcher5.elementDatas;
|
1032
|
+
console.log("bindIPtoNode", txtValue, nodeElement, elements);
|
1033
|
+
console.log("elementDatas", elementDatas);
|
1034
|
+
isUnique = true;
|
1035
|
+
ipTxt = txtValue;
|
1036
|
+
ids = []; // 执行唯一性验证
|
1037
|
+
|
1038
|
+
elements.map(function (element) {
|
1039
|
+
// if (node.getId() !== element.getId()) {
|
1040
|
+
// }
|
1041
|
+
if (element.getTag()) {
|
1042
|
+
ids.push(element.getTag());
|
1043
|
+
}
|
1044
|
+
});
|
1045
|
+
ip = {
|
1046
|
+
id: "ip_1.1.1.1",
|
1047
|
+
name: "1.1.1.1",
|
1048
|
+
customName: null,
|
1049
|
+
// 'groupId': null,
|
1050
|
+
// 'groupTag': null,
|
1051
|
+
ipAddress: "1.1.1.1",
|
1052
|
+
// 'attributes': [],
|
1053
|
+
// 'metrics': [],
|
1054
|
+
type: "node" // 'dtype': 'device'
|
1055
|
+
|
1056
|
+
}; // 获取关联链路
|
1057
|
+
|
1058
|
+
if (!isUnique) {
|
1059
|
+
_context16.next = 27;
|
1060
|
+
break;
|
1061
|
+
}
|
1062
|
+
|
1063
|
+
nodeElement.a(ip);
|
1064
|
+
nodeElement.setName(txtValue);
|
1065
|
+
nodeElement.a("name", txtValue);
|
1066
|
+
nodeElement.a("customName", null);
|
1067
|
+
nodeElement.setTag("ip_" + txtValue);
|
1068
|
+
_context16.next = 22;
|
1069
|
+
return editDispatchers.queryAllLinkByIp({
|
1070
|
+
ids: ids,
|
1071
|
+
ip: txtValue
|
1072
|
+
});
|
1073
|
+
|
1074
|
+
case 22:
|
1075
|
+
re = _context16.sent;
|
1076
|
+
console.log("queryAllLinkByIp", re);
|
1077
|
+
config = resourceConfig.getConfig();
|
1078
|
+
console.log("resourceConfig.getConfig", config);
|
1079
|
+
|
1080
|
+
if (re && re.length > 0) {
|
1081
|
+
linksData = [];
|
1082
|
+
re.map(function (link) {
|
1083
|
+
var sourceId = link.attributes["network_link.source_device_id"];
|
1084
|
+
var source = dm.getDataByTag(sourceId);
|
1085
|
+
var target = nodeElement; // console.log("source, nodeElement, link", source, target, link);
|
1086
|
+
|
1087
|
+
if (source && target) {
|
1088
|
+
var linkData = (0, _linkUtils.mergeExportLinkData)({
|
1089
|
+
source: source,
|
1090
|
+
target: target,
|
1091
|
+
link: link
|
1092
|
+
});
|
1093
|
+
console.log("linkData", linkData);
|
1094
|
+
linksData.push(linkData); // htTopo.createEdge(source, target, link);
|
1095
|
+
}
|
1096
|
+
});
|
1097
|
+
createElementsData = {
|
1098
|
+
groups: [],
|
1099
|
+
nodes: [],
|
1100
|
+
links: [].concat(linksData),
|
1101
|
+
linkGroups: []
|
1102
|
+
};
|
1103
|
+
htTopo.createElements(createElementsData); // htTopo.addElements({ lines: [...re] });
|
1104
|
+
}
|
1105
|
+
|
1106
|
+
case 27:
|
1107
|
+
case "end":
|
1108
|
+
return _context16.stop();
|
1109
|
+
}
|
1110
|
+
}
|
1111
|
+
}, _callee16);
|
1112
|
+
}));
|
1113
|
+
return _relateNodeIp.apply(this, arguments);
|
1114
|
+
}
|
1002
1115
|
|
1003
1116
|
var onEvent = function onEvent(e) {
|
1004
1117
|
var map = {};
|
@@ -1016,7 +1129,7 @@ var useTopoEdit = function useTopoEdit(params) {
|
|
1016
1129
|
*/
|
1017
1130
|
|
1018
1131
|
var setViewMouseMode = function setViewMouseMode(mode) {
|
1019
|
-
_rlog["default"].debug(
|
1132
|
+
_rlog["default"].debug("设置视图鼠标模式", mode);
|
1020
1133
|
|
1021
1134
|
topo.getHtTopo().setViewMouseMode(mode);
|
1022
1135
|
topoEditDispatchers.update({
|
@@ -1095,6 +1208,11 @@ var useTopoEdit = function useTopoEdit(params) {
|
|
1095
1208
|
*/
|
1096
1209
|
onDeleteElement: onDeleteElement,
|
1097
1210
|
|
1211
|
+
/**
|
1212
|
+
* 绑定图片ip
|
1213
|
+
*/
|
1214
|
+
relateNodeIp: relateNodeIp,
|
1215
|
+
|
1098
1216
|
/**
|
1099
1217
|
* 拓扑图保存回调
|
1100
1218
|
*/
|
@@ -56,7 +56,7 @@ var _SelectionModel = _interopRequireDefault(require("./SelectionModel"));
|
|
56
56
|
var _CiCache = _interopRequireDefault(require("./cache/CiCache"));
|
57
57
|
|
58
58
|
// eslint-disable-next-line no-undef
|
59
|
-
var version = typeof "9.0.0-a.
|
59
|
+
var version = typeof "9.0.0-a.12" === 'string' ? "9.0.0-a.12" : null;
|
60
60
|
console.info("\u62D3\u6251\u7248\u672C: " + version);
|
61
61
|
/**
|
62
62
|
* 拓扑显示和编辑
|
@@ -8,6 +8,7 @@ exports.compatibleWith = void 0;
|
|
8
8
|
exports.getLinksDetail = getLinksDetail;
|
9
9
|
exports.isCrucialLink = isCrucialLink;
|
10
10
|
exports.isExitLink = isExitLink;
|
11
|
+
exports.mergeExportLinkData = void 0;
|
11
12
|
exports.mergeLinksData = mergeLinksData;
|
12
13
|
exports.showLinkByConfig = exports.plurals = void 0;
|
13
14
|
|
@@ -218,4 +219,23 @@ var showLinkByConfig = function showLinkByConfig(props) {
|
|
218
219
|
}
|
219
220
|
};
|
220
221
|
|
221
|
-
exports.showLinkByConfig = showLinkByConfig;
|
222
|
+
exports.showLinkByConfig = showLinkByConfig;
|
223
|
+
|
224
|
+
var mergeExportLinkData = function mergeExportLinkData(props) {
|
225
|
+
var source = props.source,
|
226
|
+
target = props.target,
|
227
|
+
link = props.link;
|
228
|
+
var attrObj = link.attributes;
|
229
|
+
var linkData = (0, _extends2["default"])({}, link, {
|
230
|
+
name: attrObj.name,
|
231
|
+
source: attrObj["network_link.source_device_id"],
|
232
|
+
target: attrObj.destination_type === 'ip' ? target.getTag() : attrObj["network_link.destination_device_id"],
|
233
|
+
operation: attrObj.operation,
|
234
|
+
interfaceSource: attrObj["source_id"],
|
235
|
+
interfaceTarget: attrObj["destination_id"],
|
236
|
+
ciType: link.typeCode
|
237
|
+
});
|
238
|
+
return linkData;
|
239
|
+
};
|
240
|
+
|
241
|
+
exports.mergeExportLinkData = mergeExportLinkData;
|