@riil-frontend/component-topology 2.15.9 → 2.15.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 +4 -4
- package/es/core/editor/components/settings/propertyViews/layer/DataTab/NodeList.js +4 -1
- package/es/core/models/TopoApp.js +1 -1
- package/es/topoCenter/components/editor/propertyViews/edge/LinkPropertyView/Data/index.js +10 -4
- package/es/topoCenter/components/editor/propertyViews/edge/addLinkDrawer/AddLinkDrawer.js +6 -4
- package/es/topoCenter/components/editor/propertyViews/edge/addLinkDrawer/components/editLinkInfo.js +59 -44
- package/es/topoCenter/hooks/editor/useDeleteEdges.js +19 -2
- package/es/topoCenter/utils/linPermissionUtil.js +24 -0
- package/es/utils/copyUtil.js +6 -0
- package/lib/core/editor/components/settings/propertyViews/layer/DataTab/NodeList.js +4 -1
- package/lib/core/models/TopoApp.js +1 -1
- package/lib/topoCenter/components/editor/propertyViews/edge/LinkPropertyView/Data/index.js +12 -4
- package/lib/topoCenter/components/editor/propertyViews/edge/addLinkDrawer/AddLinkDrawer.js +7 -4
- package/lib/topoCenter/components/editor/propertyViews/edge/addLinkDrawer/components/editLinkInfo.js +61 -44
- package/lib/topoCenter/hooks/editor/useDeleteEdges.js +21 -3
- package/lib/topoCenter/utils/linPermissionUtil.js +29 -0
- package/lib/utils/copyUtil.js +13 -0
- package/package.json +2 -3
package/lib/topoCenter/components/editor/propertyViews/edge/addLinkDrawer/components/editLinkInfo.js
CHANGED
|
@@ -49,6 +49,7 @@ function EditLinkInfo(props) {
|
|
|
49
49
|
var topo = props.topo,
|
|
50
50
|
lineData = props.lineData,
|
|
51
51
|
onClose = props.onClose,
|
|
52
|
+
addLinkIsOpen = props.addLinkIsOpen,
|
|
52
53
|
onSave = props.onSave,
|
|
53
54
|
isAdd = props.isAdd,
|
|
54
55
|
loading = props.loading;
|
|
@@ -65,47 +66,61 @@ function EditLinkInfo(props) {
|
|
|
65
66
|
|
|
66
67
|
var source = lineData.source,
|
|
67
68
|
target = lineData.target,
|
|
68
|
-
attributes = lineData.attributes;
|
|
69
|
+
attributes = lineData.attributes; // rlog.debug("lineData-----init", source, target, targetValue.portsDoc);
|
|
69
70
|
|
|
70
71
|
var _useState = (0, _react.useState)(attributes),
|
|
71
72
|
valus = _useState[0],
|
|
72
73
|
setValus = _useState[1];
|
|
73
74
|
|
|
74
|
-
var
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
onChange: function onChange(name, value) {
|
|
78
|
-
if (name === "source_id" || name === "destination_id") {
|
|
79
|
-
var _parseInt, _source$portsDoc$sour, _parseInt2, _target$portsDoc$targ;
|
|
75
|
+
var _useState2 = (0, _react.useState)(source),
|
|
76
|
+
sourceValue = _useState2[0],
|
|
77
|
+
setSource = _useState2[1];
|
|
80
78
|
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
79
|
+
var _useState3 = (0, _react.useState)(target),
|
|
80
|
+
targetValue = _useState3[0],
|
|
81
|
+
setTarget = _useState3[1];
|
|
84
82
|
|
|
85
|
-
|
|
86
|
-
|
|
83
|
+
var fieldOnChange = function fieldOnChange(name, value) {
|
|
84
|
+
if (name === "source_id" || name === "destination_id") {
|
|
85
|
+
var _parseInt, _sourceValue$portsDoc, _parseInt2, _targetValue$portsDoc;
|
|
87
86
|
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
87
|
+
var nowValues = field.getValues();
|
|
88
|
+
var sourceId = nowValues["source_id"];
|
|
89
|
+
var targetId = nowValues["destination_id"];
|
|
90
|
+
var sourceRb = (_parseInt = parseInt((_sourceValue$portsDoc = sourceValue.portsDoc[sourceId]) === null || _sourceValue$portsDoc === void 0 ? void 0 : _sourceValue$portsDoc.ratedBandwidth, 10)) !== null && _parseInt !== void 0 ? _parseInt : 0;
|
|
91
|
+
var targetRb = (_parseInt2 = parseInt((_targetValue$portsDoc = targetValue.portsDoc[targetId]) === null || _targetValue$portsDoc === void 0 ? void 0 : _targetValue$portsDoc.ratedBandwidth, 10)) !== null && _parseInt2 !== void 0 ? _parseInt2 : null;
|
|
92
|
+
|
|
93
|
+
if (sourceRb && targetRb) {
|
|
94
|
+
field.setValue("network_link.actual_bandwidth", Math.min(sourceRb, targetRb));
|
|
95
|
+
} else {
|
|
96
|
+
field.setValue("network_link.actual_bandwidth", sourceRb || targetRb);
|
|
93
97
|
}
|
|
98
|
+
}
|
|
94
99
|
|
|
95
|
-
|
|
100
|
+
var newValues = field.getValues();
|
|
96
101
|
|
|
97
|
-
|
|
102
|
+
_rlog["default"].debug("Field-onChange", newValues, name, value);
|
|
98
103
|
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
104
|
+
setValus(newValues); // if (values[name] !== value) {
|
|
105
|
+
// onChange(name, value, newValues);
|
|
106
|
+
// }
|
|
107
|
+
};
|
|
108
|
+
|
|
109
|
+
var field = _field["default"].useField({
|
|
110
|
+
autoUnmount: false,
|
|
111
|
+
values: parseValues(attributes),
|
|
112
|
+
onChange: fieldOnChange
|
|
103
113
|
});
|
|
104
114
|
|
|
105
115
|
(0, _react.useEffect)(function () {
|
|
106
116
|
setValus(attributes);
|
|
117
|
+
|
|
118
|
+
_rlog["default"].debug("useEffect", source, target);
|
|
119
|
+
|
|
120
|
+
setSource(source);
|
|
121
|
+
setTarget(target);
|
|
107
122
|
field.setValues(attributes);
|
|
108
|
-
}, [
|
|
123
|
+
}, [addLinkIsOpen]); // const [editState, editDispatchers] = store.useModel("topoCreateMod");
|
|
109
124
|
|
|
110
125
|
var labelAlign = "top";
|
|
111
126
|
var formItemLayout = {
|
|
@@ -140,23 +155,23 @@ function EditLinkInfo(props) {
|
|
|
140
155
|
if (errors) {
|
|
141
156
|
_rlog["default"].debug("saveHandleChange-error", errors, values);
|
|
142
157
|
} else {
|
|
143
|
-
var
|
|
158
|
+
var _sourceValue$portsDoc2, _sourceValue$portsDoc3, _targetValue$portsDoc2, _targetValue$portsDoc3, _sourceValue$ipAddres, _targetValue$ipAddres;
|
|
144
159
|
|
|
145
160
|
_rlog["default"].debug("saveHandleChange", valus, source, target);
|
|
146
161
|
|
|
147
162
|
var sourceId = valus["source_id"];
|
|
148
163
|
var destinationId = valus["destination_id"];
|
|
149
|
-
var sourceType = (
|
|
150
|
-
var destinationType = (
|
|
164
|
+
var sourceType = (_sourceValue$portsDoc2 = (_sourceValue$portsDoc3 = sourceValue.portsDoc[sourceId]) === null || _sourceValue$portsDoc3 === void 0 ? void 0 : _sourceValue$portsDoc3.type) !== null && _sourceValue$portsDoc2 !== void 0 ? _sourceValue$portsDoc2 : "";
|
|
165
|
+
var destinationType = (_targetValue$portsDoc2 = (_targetValue$portsDoc3 = targetValue.portsDoc[destinationId]) === null || _targetValue$portsDoc3 === void 0 ? void 0 : _targetValue$portsDoc3.type) !== null && _targetValue$portsDoc2 !== void 0 ? _targetValue$portsDoc2 : "";
|
|
151
166
|
var typeJudge = linkTypeJudge(sourceType, destinationType);
|
|
152
167
|
var obj = {
|
|
153
168
|
display_name: valus["display_name"],
|
|
154
169
|
// 链路名称
|
|
155
170
|
name: valus["display_name"],
|
|
156
171
|
// 链路名称
|
|
157
|
-
"network_link.source_ipv4": (
|
|
172
|
+
"network_link.source_ipv4": (_sourceValue$ipAddres = sourceValue.ipAddress) !== null && _sourceValue$ipAddres !== void 0 ? _sourceValue$ipAddres : valus["network_link.source_ipv4"],
|
|
158
173
|
// 源IP
|
|
159
|
-
"network_link.destination_ipv4": (
|
|
174
|
+
"network_link.destination_ipv4": (_targetValue$ipAddres = targetValue.ipAddress) !== null && _targetValue$ipAddres !== void 0 ? _targetValue$ipAddres : valus["network_link.destination_ipv4"],
|
|
160
175
|
// 目的IP
|
|
161
176
|
// source_id, // 源端口
|
|
162
177
|
// destination_id, // 目的端口
|
|
@@ -166,9 +181,9 @@ function EditLinkInfo(props) {
|
|
|
166
181
|
// 用途
|
|
167
182
|
// source_type, // 必须
|
|
168
183
|
// destination_type, // 必须
|
|
169
|
-
"network_link.source_device_id":
|
|
184
|
+
"network_link.source_device_id": sourceValue.id,
|
|
170
185
|
// 必须
|
|
171
|
-
"network_link.destination_device_id":
|
|
186
|
+
"network_link.destination_device_id": targetValue.id,
|
|
172
187
|
// 必须
|
|
173
188
|
"network_link.connect_type": typeJudge.connect,
|
|
174
189
|
// 必须
|
|
@@ -234,23 +249,23 @@ function EditLinkInfo(props) {
|
|
|
234
249
|
label: "\u6E90\u8282\u70B9\u540D\u79F0"
|
|
235
250
|
}), /*#__PURE__*/_react["default"].createElement("div", {
|
|
236
251
|
className: _indexModule["default"].label
|
|
237
|
-
},
|
|
252
|
+
}, sourceValue.name))), /*#__PURE__*/_react["default"].createElement(Col, {
|
|
238
253
|
span: "12"
|
|
239
254
|
}, /*#__PURE__*/_react["default"].createElement(FormItem, (0, _extends2["default"])({}, formItemLayout, {
|
|
240
255
|
labelAlign: labelAlign,
|
|
241
256
|
label: "\u76EE\u7684\u8282\u70B9\u540D\u79F0"
|
|
242
257
|
}), /*#__PURE__*/_react["default"].createElement("div", {
|
|
243
258
|
className: _indexModule["default"].label
|
|
244
|
-
},
|
|
259
|
+
}, targetValue.name)))), /*#__PURE__*/_react["default"].createElement(Row, {
|
|
245
260
|
gutter: "4"
|
|
246
261
|
}, /*#__PURE__*/_react["default"].createElement(Col, {
|
|
247
262
|
span: "12"
|
|
248
263
|
}, /*#__PURE__*/_react["default"].createElement(FormItem, (0, _extends2["default"])({}, formItemLayout, {
|
|
249
264
|
labelAlign: labelAlign,
|
|
250
265
|
label: "\u6E90\u8282\u70B9IP"
|
|
251
|
-
}),
|
|
266
|
+
}), sourceValue.ipAddress ? /*#__PURE__*/_react["default"].createElement("div", {
|
|
252
267
|
className: _indexModule["default"].label
|
|
253
|
-
},
|
|
268
|
+
}, sourceValue.ipAddress) : /*#__PURE__*/_react["default"].createElement(_input["default"], {
|
|
254
269
|
placeholder: "\u8BF7\u8F93\u5165",
|
|
255
270
|
name: "network_link.source_ipv4",
|
|
256
271
|
maxLength: 128
|
|
@@ -259,9 +274,9 @@ function EditLinkInfo(props) {
|
|
|
259
274
|
}, /*#__PURE__*/_react["default"].createElement(FormItem, (0, _extends2["default"])({}, formItemLayout, {
|
|
260
275
|
labelAlign: labelAlign,
|
|
261
276
|
label: "\u76EE\u7684\u8282\u70B9IP"
|
|
262
|
-
}),
|
|
277
|
+
}), targetValue.ipAddress ? /*#__PURE__*/_react["default"].createElement("div", {
|
|
263
278
|
className: _indexModule["default"].label
|
|
264
|
-
},
|
|
279
|
+
}, targetValue.ipAddress) : /*#__PURE__*/_react["default"].createElement(_input["default"], {
|
|
265
280
|
placeholder: "\u8BF7\u8F93\u5165",
|
|
266
281
|
name: "network_link.destination_ipv4",
|
|
267
282
|
maxLength: 128
|
|
@@ -274,11 +289,12 @@ function EditLinkInfo(props) {
|
|
|
274
289
|
label: "\u6E90\u7AEF\u53E3",
|
|
275
290
|
required: true,
|
|
276
291
|
requiredMessage: "\u6E90\u7AEF\u53E3\u4E0D\u80FD\u4E3A\u7A7A"
|
|
277
|
-
}),
|
|
292
|
+
}), sourceValue.ipAddress ? /*#__PURE__*/_react["default"].createElement(_select["default"], {
|
|
278
293
|
name: "source_id",
|
|
294
|
+
disabled: sourceValue.ports.length === 0,
|
|
279
295
|
className: _indexModule["default"].selectList,
|
|
280
296
|
onChange: portsHandleChange,
|
|
281
|
-
dataSource:
|
|
297
|
+
dataSource: sourceValue.ports
|
|
282
298
|
}) : "-")), /*#__PURE__*/_react["default"].createElement(Col, {
|
|
283
299
|
span: "12"
|
|
284
300
|
}, /*#__PURE__*/_react["default"].createElement(FormItem, (0, _extends2["default"])({}, formItemLayout, {
|
|
@@ -286,11 +302,12 @@ function EditLinkInfo(props) {
|
|
|
286
302
|
label: "\u76EE\u7684\u7AEF\u53E3",
|
|
287
303
|
required: true,
|
|
288
304
|
requiredMessage: "\u76EE\u7684\u7AEF\u53E3\u4E0D\u80FD\u4E3A\u7A7A"
|
|
289
|
-
}),
|
|
305
|
+
}), targetValue.ipAddress ? /*#__PURE__*/_react["default"].createElement(_select["default"], {
|
|
290
306
|
name: "destination_id",
|
|
307
|
+
disabled: targetValue.ports.length === 0,
|
|
291
308
|
className: _indexModule["default"].selectList,
|
|
292
309
|
onChange: portsHandleChange,
|
|
293
|
-
dataSource:
|
|
310
|
+
dataSource: targetValue.ports
|
|
294
311
|
}) : "-"))), /*#__PURE__*/_react["default"].createElement(Row, {
|
|
295
312
|
gutter: "4"
|
|
296
313
|
}, /*#__PURE__*/_react["default"].createElement(Col, {
|
|
@@ -300,14 +317,14 @@ function EditLinkInfo(props) {
|
|
|
300
317
|
label: "\u8D44\u6E90\u7C7B\u578B"
|
|
301
318
|
}), /*#__PURE__*/_react["default"].createElement("div", {
|
|
302
319
|
className: _indexModule["default"].label
|
|
303
|
-
},
|
|
320
|
+
}, sourceValue.ciName))), /*#__PURE__*/_react["default"].createElement(Col, {
|
|
304
321
|
span: "12"
|
|
305
322
|
}, /*#__PURE__*/_react["default"].createElement(FormItem, (0, _extends2["default"])({}, formItemLayout, {
|
|
306
323
|
labelAlign: labelAlign,
|
|
307
324
|
label: "\u8D44\u6E90\u7C7B\u578B"
|
|
308
325
|
}), /*#__PURE__*/_react["default"].createElement("div", {
|
|
309
326
|
className: _indexModule["default"].label
|
|
310
|
-
},
|
|
327
|
+
}, targetValue.ciName)))), /*#__PURE__*/_react["default"].createElement(Row, {
|
|
311
328
|
gutter: "4"
|
|
312
329
|
}, /*#__PURE__*/_react["default"].createElement(Col, {
|
|
313
330
|
span: "24"
|
|
@@ -357,7 +374,7 @@ function EditLinkInfo(props) {
|
|
|
357
374
|
className: _indexModule["default"].footer
|
|
358
375
|
}, /*#__PURE__*/_react["default"].createElement(_button["default"], {
|
|
359
376
|
className: _indexModule["default"].button,
|
|
360
|
-
disabled: !
|
|
377
|
+
disabled: !sourceValue.ipAddress,
|
|
361
378
|
type: "primary",
|
|
362
379
|
loading: loading,
|
|
363
380
|
onClick: saveHandleChange
|
|
@@ -9,16 +9,18 @@ var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"))
|
|
|
9
9
|
|
|
10
10
|
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
|
|
11
11
|
|
|
12
|
-
var _message = _interopRequireDefault(require("@alifd/next/lib/message"));
|
|
13
|
-
|
|
14
12
|
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
|
|
15
13
|
|
|
14
|
+
var _message = _interopRequireDefault(require("@alifd/next/lib/message"));
|
|
15
|
+
|
|
16
16
|
var _dialog = _interopRequireDefault(require("@alifd/next/lib/dialog"));
|
|
17
17
|
|
|
18
18
|
var _rlog = _interopRequireDefault(require("@riil-frontend/component-topology-utils/es/rlog"));
|
|
19
19
|
|
|
20
20
|
var _link = _interopRequireDefault(require("../../services/link"));
|
|
21
21
|
|
|
22
|
+
var _linPermissionUtil = require("../../utils/linPermissionUtil");
|
|
23
|
+
|
|
22
24
|
/**
|
|
23
25
|
* 删除连线
|
|
24
26
|
*/
|
|
@@ -39,11 +41,24 @@ var _default = function _default(_ref) {
|
|
|
39
41
|
});
|
|
40
42
|
};
|
|
41
43
|
|
|
44
|
+
function checkLinkDeleteable(link) {
|
|
45
|
+
var _getLinkPermission = (0, _linPermissionUtil.getLinkPermission)(link, topo.dataModel.getNodes()),
|
|
46
|
+
deleteable = _getLinkPermission.deleteable;
|
|
47
|
+
|
|
48
|
+
if (deleteable) {
|
|
49
|
+
return deleteable;
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
_message["default"].notice('无删除权限');
|
|
53
|
+
|
|
54
|
+
return deleteable;
|
|
55
|
+
}
|
|
56
|
+
|
|
42
57
|
var deleteLink = function deleteLink(edge) {
|
|
43
58
|
var id = edge.getTag();
|
|
44
59
|
var link = topo.dataModel.getDataById(id);
|
|
45
60
|
|
|
46
|
-
if (!link
|
|
61
|
+
if (!checkLinkDeleteable(link)) {
|
|
47
62
|
return;
|
|
48
63
|
}
|
|
49
64
|
|
|
@@ -150,6 +165,9 @@ var _default = function _default(_ref) {
|
|
|
150
165
|
} else if (!htTopo.isEdgeGroupAgent(edge)) {
|
|
151
166
|
// 判断当前状态是子连线
|
|
152
167
|
deleteNoBindEdge(edge);
|
|
168
|
+
} else {
|
|
169
|
+
// 删除连线组
|
|
170
|
+
_message["default"].notice('连线组无法删除');
|
|
153
171
|
}
|
|
154
172
|
};
|
|
155
173
|
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
exports.__esModule = true;
|
|
4
|
+
exports.getLinkPermission = getLinkPermission;
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* 获得链路权限
|
|
8
|
+
*
|
|
9
|
+
* @param {*} link
|
|
10
|
+
* @param {*} nodes
|
|
11
|
+
* @returns
|
|
12
|
+
*/
|
|
13
|
+
function getLinkPermission(link, nodes) {
|
|
14
|
+
var source = nodes.find(function (node) {
|
|
15
|
+
return node.id === link.source;
|
|
16
|
+
});
|
|
17
|
+
var target = nodes.find(function (node) {
|
|
18
|
+
return node.id === link.target;
|
|
19
|
+
});
|
|
20
|
+
return {
|
|
21
|
+
readable: source.operation || target.operation,
|
|
22
|
+
writeable: [source, target].filter(function (node) {
|
|
23
|
+
return ['write', 'delete'].indexOf(node.operation) !== -1;
|
|
24
|
+
}).length === 2,
|
|
25
|
+
deleteable: [source, target].filter(function (node) {
|
|
26
|
+
return ['write', 'delete'].indexOf(node.operation) !== -1;
|
|
27
|
+
}).length >= 1
|
|
28
|
+
};
|
|
29
|
+
}
|
package/package.json
CHANGED
|
@@ -1,10 +1,9 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@riil-frontend/component-topology",
|
|
3
|
-
"version": "2.15.
|
|
3
|
+
"version": "2.15.12",
|
|
4
4
|
"description": "拓扑",
|
|
5
5
|
"scripts": {
|
|
6
6
|
"start": "build-scripts start",
|
|
7
|
-
"start:warch": "build-scripts start --watch",
|
|
8
7
|
"build": "build-scripts build --config build.config.js",
|
|
9
8
|
"build:warch": "build-scripts build --watch",
|
|
10
9
|
"test": "build-scripts test",
|
|
@@ -111,6 +110,6 @@
|
|
|
111
110
|
"access": "public"
|
|
112
111
|
},
|
|
113
112
|
"license": "MIT",
|
|
114
|
-
"homepage": "https://unpkg.com/@riil-frontend/component-topology@2.15.
|
|
113
|
+
"homepage": "https://unpkg.com/@riil-frontend/component-topology@2.15.12/build/index.html",
|
|
115
114
|
"gitHead": "2da19ffccbb7ca60a8acf396e39f542c68bb33f5"
|
|
116
115
|
}
|