@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.
@@ -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 field = _field["default"].useField({
75
- autoUnmount: false,
76
- values: parseValues(attributes),
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
- var nowValues = field.getValues();
82
- var sourceId = nowValues["source_id"];
83
- var targetId = nowValues["destination_id"]; // rlog.debug("Field-onChange-otherName", nowValues, sourceId, targetId);
79
+ var _useState3 = (0, _react.useState)(target),
80
+ targetValue = _useState3[0],
81
+ setTarget = _useState3[1];
84
82
 
85
- var sourceRb = (_parseInt = parseInt((_source$portsDoc$sour = source.portsDoc[sourceId]) === null || _source$portsDoc$sour === void 0 ? void 0 : _source$portsDoc$sour.ratedBandwidth, 10)) !== null && _parseInt !== void 0 ? _parseInt : 0;
86
- var targetRb = (_parseInt2 = parseInt((_target$portsDoc$targ = target.portsDoc[targetId]) === null || _target$portsDoc$targ === void 0 ? void 0 : _target$portsDoc$targ.ratedBandwidth, 10)) !== null && _parseInt2 !== void 0 ? _parseInt2 : null;
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
- if (sourceRb && targetRb) {
89
- field.setValue("network_link.actual_bandwidth", Math.min(sourceRb, targetRb));
90
- } else {
91
- field.setValue("network_link.actual_bandwidth", sourceRb || targetRb);
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
- var newValues = field.getValues();
100
+ var newValues = field.getValues();
96
101
 
97
- _rlog["default"].debug("Field-onChange", newValues, name, value);
102
+ _rlog["default"].debug("Field-onChange", newValues, name, value);
98
103
 
99
- setValus(newValues); // if (values[name] !== value) {
100
- // onChange(name, value, newValues);
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
- }, [attributes]); // const [editState, editDispatchers] = store.useModel("topoCreateMod");
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 _source$portsDoc$sour2, _source$portsDoc$sour3, _target$portsDoc$dest, _target$portsDoc$dest2, _source$ipAddress, _target$ipAddress;
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 = (_source$portsDoc$sour2 = (_source$portsDoc$sour3 = source.portsDoc[sourceId]) === null || _source$portsDoc$sour3 === void 0 ? void 0 : _source$portsDoc$sour3.type) !== null && _source$portsDoc$sour2 !== void 0 ? _source$portsDoc$sour2 : "";
150
- var destinationType = (_target$portsDoc$dest = (_target$portsDoc$dest2 = target.portsDoc[destinationId]) === null || _target$portsDoc$dest2 === void 0 ? void 0 : _target$portsDoc$dest2.type) !== null && _target$portsDoc$dest !== void 0 ? _target$portsDoc$dest : "";
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": (_source$ipAddress = source.ipAddress) !== null && _source$ipAddress !== void 0 ? _source$ipAddress : valus["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": (_target$ipAddress = target.ipAddress) !== null && _target$ipAddress !== void 0 ? _target$ipAddress : valus["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": source.id,
184
+ "network_link.source_device_id": sourceValue.id,
170
185
  // 必须
171
- "network_link.destination_device_id": target.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
- }, source.name))), /*#__PURE__*/_react["default"].createElement(Col, {
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
- }, target.name)))), /*#__PURE__*/_react["default"].createElement(Row, {
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
- }), source.ipAddress ? /*#__PURE__*/_react["default"].createElement("div", {
266
+ }), sourceValue.ipAddress ? /*#__PURE__*/_react["default"].createElement("div", {
252
267
  className: _indexModule["default"].label
253
- }, source.ipAddress) : /*#__PURE__*/_react["default"].createElement(_input["default"], {
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
- }), target.ipAddress ? /*#__PURE__*/_react["default"].createElement("div", {
277
+ }), targetValue.ipAddress ? /*#__PURE__*/_react["default"].createElement("div", {
263
278
  className: _indexModule["default"].label
264
- }, target.ipAddress) : /*#__PURE__*/_react["default"].createElement(_input["default"], {
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
- }), source.ipAddress ? /*#__PURE__*/_react["default"].createElement(_select["default"], {
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: source.ports
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
- }), target.ipAddress ? /*#__PURE__*/_react["default"].createElement(_select["default"], {
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: target.ports
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
- }, source.ciName))), /*#__PURE__*/_react["default"].createElement(Col, {
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
- }, target.ciName)))), /*#__PURE__*/_react["default"].createElement(Row, {
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: !source.ipAddress,
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 || link.operation !== 'delete') {
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
+ }
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+
3
+ exports.__esModule = true;
4
+ exports.clone = clone;
5
+ exports.copy = copy;
6
+
7
+ function copy(o) {
8
+ return JSON.parse(JSON.stringify(o));
9
+ }
10
+
11
+ function clone(o) {
12
+ return JSON.parse(JSON.stringify(o));
13
+ }
package/package.json CHANGED
@@ -1,10 +1,9 @@
1
1
  {
2
2
  "name": "@riil-frontend/component-topology",
3
- "version": "2.15.9",
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.9/build/index.html",
113
+ "homepage": "https://unpkg.com/@riil-frontend/component-topology@2.15.12/build/index.html",
115
114
  "gitHead": "2da19ffccbb7ca60a8acf396e39f542c68bb33f5"
116
115
  }