@next-libs/cmdb-instances 6.48.0 → 6.49.0
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/dist/cjs/attribute-form-control-url/AttributeFormControlUrl.js +8 -23
- package/dist/cjs/attribute-form-control-url/AttributeFormControlUrl.js.map +1 -1
- package/dist/cjs/cmdb-instances-input-form/CmdbInstancesInputFormItem.js +3 -43
- package/dist/cjs/cmdb-instances-input-form/CmdbInstancesInputFormItem.js.map +1 -1
- package/dist/cjs/cmdb-instances-select-panel/CmdbInstancesSelectPanel.js +6 -45
- package/dist/cjs/cmdb-instances-select-panel/CmdbInstancesSelectPanel.js.map +1 -1
- package/dist/cjs/cmdb-url-link/CmdbUrlLink.js +0 -11
- package/dist/cjs/cmdb-url-link/CmdbUrlLink.js.map +1 -1
- package/dist/cjs/components/index.js +0 -4
- package/dist/cjs/components/index.js.map +1 -1
- package/dist/cjs/components/instance-format/index.js +0 -15
- package/dist/cjs/components/instance-format/index.js.map +1 -1
- package/dist/cjs/components/user-or-user-group-select/UserOrUserGroupSelect.js +33 -92
- package/dist/cjs/components/user-or-user-group-select/UserOrUserGroupSelect.js.map +1 -1
- package/dist/cjs/data-providers/fetchCmdbInstanceDetail.js +0 -3
- package/dist/cjs/data-providers/fetchCmdbInstanceDetail.js.map +1 -1
- package/dist/cjs/data-providers/fetchCmdbInstanceSearch.js +0 -2
- package/dist/cjs/data-providers/fetchCmdbInstanceSearch.js.map +1 -1
- package/dist/cjs/data-providers/fetchCmdbObjectDetail.js +0 -2
- package/dist/cjs/data-providers/fetchCmdbObjectDetail.js.map +1 -1
- package/dist/cjs/data-providers/fetchCmdbObjectList.js +0 -2
- package/dist/cjs/data-providers/fetchCmdbObjectList.js.map +1 -1
- package/dist/cjs/data-providers/fetchCmdbObjectRef.js +0 -2
- package/dist/cjs/data-providers/fetchCmdbObjectRef.js.map +1 -1
- package/dist/cjs/data-providers/index.js +0 -10
- package/dist/cjs/data-providers/index.js.map +1 -1
- package/dist/cjs/float-display-brick/FloatDisplayBrick.js +0 -7
- package/dist/cjs/float-display-brick/FloatDisplayBrick.js.map +1 -1
- package/dist/cjs/i18n/constants.js +0 -1
- package/dist/cjs/i18n/constants.js.map +1 -1
- package/dist/cjs/i18n/index.js +0 -7
- package/dist/cjs/i18n/index.js.map +1 -1
- package/dist/cjs/i18n/locales/en.js +0 -2
- package/dist/cjs/i18n/locales/en.js.map +1 -1
- package/dist/cjs/i18n/locales/zh.js +0 -2
- package/dist/cjs/i18n/locales/zh.js.map +1 -1
- package/dist/cjs/index.js +0 -29
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/instance-attribute-form/InstanceAttributeForm.js +4 -25
- package/dist/cjs/instance-attribute-form/InstanceAttributeForm.js.map +1 -1
- package/dist/cjs/instance-detail/InstanceDetail.js +42 -124
- package/dist/cjs/instance-detail/InstanceDetail.js.map +1 -1
- package/dist/cjs/instance-detail/components/instance-relation-field-display/constants.js.map +1 -1
- package/dist/cjs/instance-detail/components/instance-relation-field-display/instance-relation-field-display.js +4 -19
- package/dist/cjs/instance-detail/components/instance-relation-field-display/instance-relation-field-display.js.map +1 -1
- package/dist/cjs/instance-detail/components/instance-relation-table-show/instance-relation-table-show.js +4 -11
- package/dist/cjs/instance-detail/components/instance-relation-table-show/instance-relation-table-show.js.map +1 -1
- package/dist/cjs/instance-detail/constants/index.js.map +1 -1
- package/dist/cjs/instance-list/IconButton.js +0 -18
- package/dist/cjs/instance-list/IconButton.js.map +1 -1
- package/dist/cjs/instance-list/InstanceList.js +47 -212
- package/dist/cjs/instance-list/InstanceList.js.map +1 -1
- package/dist/cjs/instance-list/constants.js +0 -7
- package/dist/cjs/instance-list/constants.js.map +1 -1
- package/dist/cjs/instance-list-modal/InstanceListModal.js +8 -32
- package/dist/cjs/instance-list-modal/InstanceListModal.js.map +1 -1
- package/dist/cjs/instance-list-table/AdvancedSearch.js +12 -133
- package/dist/cjs/instance-list-table/AdvancedSearch.js.map +1 -1
- package/dist/cjs/instance-list-table/AdvancedSearchCondition.js +3 -45
- package/dist/cjs/instance-list-table/AdvancedSearchCondition.js.map +1 -1
- package/dist/cjs/instance-list-table/DisplaySettings.js +0 -24
- package/dist/cjs/instance-list-table/DisplaySettings.js.map +1 -1
- package/dist/cjs/instance-list-table/DisplaySettingsModal.js +0 -10
- package/dist/cjs/instance-list-table/DisplaySettingsModal.js.map +1 -1
- package/dist/cjs/instance-list-table/DynamicSearch.js +4 -44
- package/dist/cjs/instance-list-table/DynamicSearch.js.map +1 -1
- package/dist/cjs/instance-list-table/InstanceListTable.js +30 -151
- package/dist/cjs/instance-list-table/InstanceListTable.js.map +1 -1
- package/dist/cjs/instance-list-table/MoreButtonsContainer.js +0 -15
- package/dist/cjs/instance-list-table/MoreButtonsContainer.js.map +1 -1
- package/dist/cjs/instance-list-table/constants.js +0 -2
- package/dist/cjs/instance-list-table/constants.js.map +1 -1
- package/dist/cjs/instance-list-table/data-providers/fetchCmdbInstanceAggregateCount.js +0 -2
- package/dist/cjs/instance-list-table/data-providers/fetchCmdbInstanceAggregateCount.js.map +1 -1
- package/dist/cjs/instance-list-table/data-providers/fetchCmdbInstanceCount.js +0 -2
- package/dist/cjs/instance-list-table/data-providers/fetchCmdbInstanceCount.js.map +1 -1
- package/dist/cjs/instance-list-table/data-providers/fetchCmdbInstanceDetail.js +0 -2
- package/dist/cjs/instance-list-table/data-providers/fetchCmdbInstanceDetail.js.map +1 -1
- package/dist/cjs/instance-list-table/data-providers/fetchCmdbObjectDetail.js +0 -2
- package/dist/cjs/instance-list-table/data-providers/fetchCmdbObjectDetail.js.map +1 -1
- package/dist/cjs/instance-list-table/data-providers/fetchPermRoleList.js +0 -2
- package/dist/cjs/instance-list-table/data-providers/fetchPermRoleList.js.map +1 -1
- package/dist/cjs/instance-list-table/data-providers/fetchPermissionList.js +0 -2
- package/dist/cjs/instance-list-table/data-providers/fetchPermissionList.js.map +1 -1
- package/dist/cjs/instance-list-table/data-providers/getDefaultValueTemplate.js +1 -2
- package/dist/cjs/instance-list-table/data-providers/getDefaultValueTemplate.js.map +1 -1
- package/dist/cjs/instance-list-table/data-providers/index.js +0 -16
- package/dist/cjs/instance-list-table/data-providers/index.js.map +1 -1
- package/dist/cjs/instance-list-table/data-providers/searchCmdbInstances.js +0 -2
- package/dist/cjs/instance-list-table/data-providers/searchCmdbInstances.js.map +1 -1
- package/dist/cjs/instance-list-table/index.js +0 -12
- package/dist/cjs/instance-list-table/index.js.map +1 -1
- package/dist/cjs/instance-list-table/utils.js +0 -24
- package/dist/cjs/instance-list-table/utils.js.map +1 -1
- package/dist/cjs/model-attribute-form/ModelAttributeForm.js +27 -99
- package/dist/cjs/model-attribute-form/ModelAttributeForm.js.map +1 -1
- package/dist/cjs/model-attribute-form/constants.js.map +1 -1
- package/dist/cjs/model-attribute-form-control/ModelAttributeFormControl.js +13 -94
- package/dist/cjs/model-attribute-form-control/ModelAttributeFormControl.js.map +1 -1
- package/dist/cjs/model-relation-form/ModelRelationForm.js +0 -18
- package/dist/cjs/model-relation-form/ModelRelationForm.js.map +1 -1
- package/dist/cjs/processors.js +2 -21
- package/dist/cjs/processors.js.map +1 -1
- package/dist/cjs/struct-components/AddStruct.js +4 -15
- package/dist/cjs/struct-components/AddStruct.js.map +1 -1
- package/dist/cjs/struct-components/AddStructModal.js +0 -48
- package/dist/cjs/struct-components/AddStructModal.js.map +1 -1
- package/dist/cjs/struct-components/StructTable.js +2 -32
- package/dist/cjs/struct-components/StructTable.js.map +1 -1
- package/dist/cjs/struct-components/index.js +0 -8
- package/dist/cjs/struct-components/index.js.map +1 -1
- package/dist/cjs/struct-components/interfaces.js +0 -1
- package/dist/cjs/struct-components/interfaces.js.map +1 -1
- package/dist/cjs/struct-components/mockData.js.map +1 -1
- package/dist/esm/attribute-form-control-url/AttributeFormControlUrl.js +8 -18
- package/dist/esm/attribute-form-control-url/AttributeFormControlUrl.js.map +1 -1
- package/dist/esm/cmdb-instances-input-form/CmdbInstancesInputFormItem.js +3 -35
- package/dist/esm/cmdb-instances-input-form/CmdbInstancesInputFormItem.js.map +1 -1
- package/dist/esm/cmdb-instances-select-panel/CmdbInstancesSelectPanel.js +4 -32
- package/dist/esm/cmdb-instances-select-panel/CmdbInstancesSelectPanel.js.map +1 -1
- package/dist/esm/cmdb-url-link/CmdbUrlLink.js +0 -3
- package/dist/esm/cmdb-url-link/CmdbUrlLink.js.map +1 -1
- package/dist/esm/components/index.js.map +1 -1
- package/dist/esm/components/instance-format/index.js +0 -5
- package/dist/esm/components/instance-format/index.js.map +1 -1
- package/dist/esm/components/user-or-user-group-select/UserOrUserGroupSelect.js +19 -74
- package/dist/esm/components/user-or-user-group-select/UserOrUserGroupSelect.js.map +1 -1
- package/dist/esm/data-providers/fetchCmdbInstanceDetail.js.map +1 -1
- package/dist/esm/data-providers/fetchCmdbInstanceSearch.js.map +1 -1
- package/dist/esm/data-providers/fetchCmdbObjectDetail.js.map +1 -1
- package/dist/esm/data-providers/fetchCmdbObjectList.js.map +1 -1
- package/dist/esm/data-providers/fetchCmdbObjectRef.js.map +1 -1
- package/dist/esm/data-providers/index.js.map +1 -1
- package/dist/esm/float-display-brick/FloatDisplayBrick.js +0 -1
- package/dist/esm/float-display-brick/FloatDisplayBrick.js.map +1 -1
- package/dist/esm/i18n/constants.js +0 -1
- package/dist/esm/i18n/constants.js.map +1 -1
- package/dist/esm/i18n/index.js +2 -1
- package/dist/esm/i18n/index.js.map +1 -1
- package/dist/esm/i18n/locales/en.js.map +1 -1
- package/dist/esm/i18n/locales/zh.js.map +1 -1
- package/dist/esm/index.js +2 -2
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/instance-attribute-form/InstanceAttributeForm.js +4 -10
- package/dist/esm/instance-attribute-form/InstanceAttributeForm.js.map +1 -1
- package/dist/esm/instance-detail/InstanceDetail.js +36 -111
- package/dist/esm/instance-detail/InstanceDetail.js.map +1 -1
- package/dist/esm/instance-detail/components/instance-relation-field-display/constants.js.map +1 -1
- package/dist/esm/instance-detail/components/instance-relation-field-display/instance-relation-field-display.js +4 -10
- package/dist/esm/instance-detail/components/instance-relation-field-display/instance-relation-field-display.js.map +1 -1
- package/dist/esm/instance-detail/components/instance-relation-table-show/instance-relation-table-show.js +2 -2
- package/dist/esm/instance-detail/components/instance-relation-table-show/instance-relation-table-show.js.map +1 -1
- package/dist/esm/instance-detail/constants/index.js.map +1 -1
- package/dist/esm/instance-list/IconButton.js +0 -8
- package/dist/esm/instance-list/IconButton.js.map +1 -1
- package/dist/esm/instance-list/InstanceList.js +41 -182
- package/dist/esm/instance-list/InstanceList.js.map +1 -1
- package/dist/esm/instance-list/constants.js +0 -2
- package/dist/esm/instance-list/constants.js.map +1 -1
- package/dist/esm/instance-list-modal/InstanceListModal.js +8 -20
- package/dist/esm/instance-list-modal/InstanceListModal.js.map +1 -1
- package/dist/esm/instance-list-table/AdvancedSearch.js +10 -119
- package/dist/esm/instance-list-table/AdvancedSearch.js.map +1 -1
- package/dist/esm/instance-list-table/AdvancedSearchCondition.js +1 -31
- package/dist/esm/instance-list-table/AdvancedSearchCondition.js.map +1 -1
- package/dist/esm/instance-list-table/DisplaySettings.js +0 -16
- package/dist/esm/instance-list-table/DisplaySettings.js.map +1 -1
- package/dist/esm/instance-list-table/DisplaySettingsModal.js +0 -3
- package/dist/esm/instance-list-table/DisplaySettingsModal.js.map +1 -1
- package/dist/esm/instance-list-table/DynamicSearch.js +0 -34
- package/dist/esm/instance-list-table/DynamicSearch.js.map +1 -1
- package/dist/esm/instance-list-table/InstanceListTable.js +23 -138
- package/dist/esm/instance-list-table/InstanceListTable.js.map +1 -1
- package/dist/esm/instance-list-table/MoreButtonsContainer.js +0 -7
- package/dist/esm/instance-list-table/MoreButtonsContainer.js.map +1 -1
- package/dist/esm/instance-list-table/constants.js +0 -2
- package/dist/esm/instance-list-table/constants.js.map +1 -1
- package/dist/esm/instance-list-table/data-providers/fetchCmdbInstanceAggregateCount.js.map +1 -1
- package/dist/esm/instance-list-table/data-providers/fetchCmdbInstanceCount.js.map +1 -1
- package/dist/esm/instance-list-table/data-providers/fetchCmdbInstanceDetail.js.map +1 -1
- package/dist/esm/instance-list-table/data-providers/fetchCmdbObjectDetail.js.map +1 -1
- package/dist/esm/instance-list-table/data-providers/fetchPermRoleList.js.map +1 -1
- package/dist/esm/instance-list-table/data-providers/fetchPermissionList.js.map +1 -1
- package/dist/esm/instance-list-table/data-providers/getDefaultValueTemplate.js +1 -1
- package/dist/esm/instance-list-table/data-providers/getDefaultValueTemplate.js.map +1 -1
- package/dist/esm/instance-list-table/data-providers/index.js.map +1 -1
- package/dist/esm/instance-list-table/data-providers/searchCmdbInstances.js.map +1 -1
- package/dist/esm/instance-list-table/index.js.map +1 -1
- package/dist/esm/instance-list-table/utils.js +0 -15
- package/dist/esm/instance-list-table/utils.js.map +1 -1
- package/dist/esm/model-attribute-form/ModelAttributeForm.js +19 -92
- package/dist/esm/model-attribute-form/ModelAttributeForm.js.map +1 -1
- package/dist/esm/model-attribute-form/constants.js.map +1 -1
- package/dist/esm/model-attribute-form-control/ModelAttributeFormControl.js +27 -102
- package/dist/esm/model-attribute-form-control/ModelAttributeFormControl.js.map +1 -1
- package/dist/esm/model-relation-form/ModelRelationForm.js +0 -10
- package/dist/esm/model-relation-form/ModelRelationForm.js.map +1 -1
- package/dist/esm/processors.js +2 -7
- package/dist/esm/processors.js.map +1 -1
- package/dist/esm/struct-components/AddStruct.js +4 -9
- package/dist/esm/struct-components/AddStruct.js.map +1 -1
- package/dist/esm/struct-components/AddStructModal.js +0 -36
- package/dist/esm/struct-components/AddStructModal.js.map +1 -1
- package/dist/esm/struct-components/StructTable.js +2 -26
- package/dist/esm/struct-components/StructTable.js.map +1 -1
- package/dist/esm/struct-components/index.js.map +1 -1
- package/dist/esm/struct-components/interfaces.js +0 -1
- package/dist/esm/struct-components/interfaces.js.map +1 -1
- package/dist/esm/struct-components/mockData.js.map +1 -1
- package/package.json +9 -9
- package/CHANGELOG.md +0 -3687
|
@@ -1,41 +1,25 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
|
|
4
|
-
|
|
5
4
|
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
|
6
|
-
|
|
7
5
|
Object.defineProperty(exports, "__esModule", {
|
|
8
6
|
value: true
|
|
9
7
|
});
|
|
10
8
|
exports.boolOptions = exports.ModelAttributeValueType = exports.ModelAttributeValueModeType = exports.ModelAttributeFormControl = exports.FormControlTypeEnum = void 0;
|
|
11
|
-
|
|
12
9
|
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
|
|
13
|
-
|
|
14
10
|
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
15
|
-
|
|
16
11
|
var _react = _interopRequireWildcard(require("react"));
|
|
17
|
-
|
|
18
12
|
var _i18next = _interopRequireDefault(require("i18next"));
|
|
19
|
-
|
|
20
13
|
var _constants = require("../i18n/constants");
|
|
21
|
-
|
|
22
14
|
var _antd = require("antd");
|
|
23
|
-
|
|
24
15
|
var _structComponents = require("../struct-components");
|
|
25
|
-
|
|
26
16
|
var _AttributeFormControlUrl = require("../attribute-form-control-url/AttributeFormControlUrl");
|
|
27
|
-
|
|
28
17
|
var _processors = require("../processors");
|
|
29
|
-
|
|
30
18
|
var _constants2 = require("../instance-list-table/constants");
|
|
31
|
-
|
|
32
19
|
var _codeEditorComponents = require("@next-libs/code-editor-components");
|
|
33
|
-
|
|
34
20
|
var _lodash = require("lodash");
|
|
35
|
-
|
|
36
21
|
let ModelAttributeValueType;
|
|
37
22
|
exports.ModelAttributeValueType = ModelAttributeValueType;
|
|
38
|
-
|
|
39
23
|
(function (ModelAttributeValueType) {
|
|
40
24
|
ModelAttributeValueType["STRING"] = "str";
|
|
41
25
|
ModelAttributeValueType["INTEGER"] = "int";
|
|
@@ -53,20 +37,16 @@ exports.ModelAttributeValueType = ModelAttributeValueType;
|
|
|
53
37
|
ModelAttributeValueType["BOOLEAN"] = "bool";
|
|
54
38
|
ModelAttributeValueType["JSON"] = "json";
|
|
55
39
|
})(ModelAttributeValueType || (exports.ModelAttributeValueType = ModelAttributeValueType = {}));
|
|
56
|
-
|
|
57
40
|
let ModelAttributeValueModeType;
|
|
58
41
|
exports.ModelAttributeValueModeType = ModelAttributeValueModeType;
|
|
59
|
-
|
|
60
42
|
(function (ModelAttributeValueModeType) {
|
|
61
43
|
ModelAttributeValueModeType["MULTIPLE_LINES"] = "multiple-lines";
|
|
62
44
|
ModelAttributeValueModeType["DEFAULT"] = "default";
|
|
63
45
|
ModelAttributeValueModeType["MARKDOWN"] = "markdown";
|
|
64
46
|
ModelAttributeValueModeType["URL"] = "url";
|
|
65
47
|
})(ModelAttributeValueModeType || (exports.ModelAttributeValueModeType = ModelAttributeValueModeType = {}));
|
|
66
|
-
|
|
67
48
|
let FormControlTypeEnum;
|
|
68
49
|
exports.FormControlTypeEnum = FormControlTypeEnum;
|
|
69
|
-
|
|
70
50
|
(function (FormControlTypeEnum) {
|
|
71
51
|
FormControlTypeEnum["TEXT"] = "text";
|
|
72
52
|
FormControlTypeEnum["NUMBER"] = "number";
|
|
@@ -83,7 +63,6 @@ exports.FormControlTypeEnum = FormControlTypeEnum;
|
|
|
83
63
|
FormControlTypeEnum["URL"] = "url";
|
|
84
64
|
FormControlTypeEnum["CODE_EDITOR"] = "code_editor";
|
|
85
65
|
})(FormControlTypeEnum || (exports.FormControlTypeEnum = FormControlTypeEnum = {}));
|
|
86
|
-
|
|
87
66
|
const boolOptions = [{
|
|
88
67
|
id: true,
|
|
89
68
|
text: "true"
|
|
@@ -92,7 +71,6 @@ const boolOptions = [{
|
|
|
92
71
|
text: "false"
|
|
93
72
|
}];
|
|
94
73
|
exports.boolOptions = boolOptions;
|
|
95
|
-
|
|
96
74
|
class ModelAttributeFormControl extends _react.Component {
|
|
97
75
|
componentDidUpdate(prevProps, prevState, snapshot) {
|
|
98
76
|
if (this.props.value !== prevProps.value || this.props.type !== prevProps.type || this.props.attribute.id !== prevProps.attribute.id || this.props.attribute.name !== prevProps.attribute.name || this.props.attribute.value.type !== prevProps.attribute.value.type) {
|
|
@@ -102,17 +80,14 @@ class ModelAttributeFormControl extends _react.Component {
|
|
|
102
80
|
});
|
|
103
81
|
}
|
|
104
82
|
}
|
|
105
|
-
|
|
106
83
|
constructor(_props) {
|
|
107
84
|
super(_props);
|
|
108
85
|
(0, _defineProperty2.default)(this, "computeFormControl", (attribute, id, type, isClusterType) => {
|
|
109
86
|
const formControlType = ModelAttributeFormControl.computeFormControlType(attribute, type, this.props.isSupportMultiStringValue);
|
|
110
87
|
let items = this.computeFormControlItems(attribute, isClusterType);
|
|
111
|
-
|
|
112
88
|
if (attribute.value.type === ModelAttributeValueType.BOOLEAN) {
|
|
113
89
|
items = boolOptions;
|
|
114
90
|
}
|
|
115
|
-
|
|
116
91
|
const result = {
|
|
117
92
|
type: formControlType,
|
|
118
93
|
items,
|
|
@@ -124,23 +99,19 @@ class ModelAttributeFormControl extends _react.Component {
|
|
|
124
99
|
unique: attribute.unique === "true",
|
|
125
100
|
pattern: ModelAttributeFormControl.computePattern(attribute)
|
|
126
101
|
};
|
|
127
|
-
|
|
128
102
|
if (result.type === FormControlTypeEnum.STRUCT) {
|
|
129
103
|
result["maxlength"] = 1;
|
|
130
104
|
}
|
|
131
|
-
|
|
132
105
|
result["placeholder"] = ModelAttributeFormControl.computePlaceholder(result);
|
|
133
106
|
return result;
|
|
134
107
|
});
|
|
135
108
|
(0, _defineProperty2.default)(this, "onChange", event => {
|
|
136
109
|
let value;
|
|
137
|
-
|
|
138
110
|
if (event && event.target) {
|
|
139
111
|
value = event.target.value;
|
|
140
112
|
} else {
|
|
141
113
|
value = event;
|
|
142
114
|
}
|
|
143
|
-
|
|
144
115
|
const {
|
|
145
116
|
onChange
|
|
146
117
|
} = this.props;
|
|
@@ -154,7 +125,6 @@ class ModelAttributeFormControl extends _react.Component {
|
|
|
154
125
|
});
|
|
155
126
|
(0, _defineProperty2.default)(this, "validateJson", err => {
|
|
156
127
|
var _this$props$jsonValid, _this$props;
|
|
157
|
-
|
|
158
128
|
const error = (0, _lodash.some)(err, ["type", "error"]);
|
|
159
129
|
(_this$props$jsonValid = (_this$props = this.props).jsonValidateCollection) === null || _this$props$jsonValid === void 0 ? void 0 : _this$props$jsonValid.call(_this$props, error);
|
|
160
130
|
this.setState({
|
|
@@ -163,7 +133,6 @@ class ModelAttributeFormControl extends _react.Component {
|
|
|
163
133
|
});
|
|
164
134
|
(0, _defineProperty2.default)(this, "FormControlTypeMap", () => {
|
|
165
135
|
var _attribute$value, _attribute$value2;
|
|
166
|
-
|
|
167
136
|
const {
|
|
168
137
|
attribute
|
|
169
138
|
} = this.props;
|
|
@@ -174,20 +143,17 @@ class ModelAttributeFormControl extends _react.Component {
|
|
|
174
143
|
...restProps
|
|
175
144
|
},
|
|
176
145
|
errorMessage
|
|
177
|
-
} = this.state;
|
|
146
|
+
} = this.state;
|
|
147
|
+
// const unsupportText = `"${type}"类型暂时不支持编辑`;
|
|
178
148
|
// const unsupportText = i18n.t(
|
|
179
149
|
// `${NS_LIBS_CMDB_INSTANCES}:${K.TYPE_NO_SUPPORT_EDIT}`,
|
|
180
150
|
// { type }
|
|
181
151
|
// );
|
|
182
|
-
|
|
183
152
|
let jsonSchema;
|
|
184
|
-
|
|
185
153
|
if ((attribute === null || attribute === void 0 ? void 0 : (_attribute$value = attribute.value) === null || _attribute$value === void 0 ? void 0 : _attribute$value.type) === "json" && attribute !== null && attribute !== void 0 && (_attribute$value2 = attribute.value) !== null && _attribute$value2 !== void 0 && _attribute$value2.regex) {
|
|
186
154
|
var _attribute$value3;
|
|
187
|
-
|
|
188
155
|
jsonSchema = JSON.parse(attribute === null || attribute === void 0 ? void 0 : (_attribute$value3 = attribute.value) === null || _attribute$value3 === void 0 ? void 0 : _attribute$value3.regex);
|
|
189
156
|
}
|
|
190
|
-
|
|
191
157
|
switch (type) {
|
|
192
158
|
case FormControlTypeEnum.TEXT:
|
|
193
159
|
{
|
|
@@ -206,7 +172,6 @@ class ModelAttributeFormControl extends _react.Component {
|
|
|
206
172
|
style: this.props.style
|
|
207
173
|
}));
|
|
208
174
|
}
|
|
209
|
-
|
|
210
175
|
case FormControlTypeEnum.URL:
|
|
211
176
|
{
|
|
212
177
|
const {
|
|
@@ -222,7 +187,6 @@ class ModelAttributeFormControl extends _react.Component {
|
|
|
222
187
|
onChange: e => this.onChange(e)
|
|
223
188
|
});
|
|
224
189
|
}
|
|
225
|
-
|
|
226
190
|
case FormControlTypeEnum.NUMBER:
|
|
227
191
|
{
|
|
228
192
|
const {
|
|
@@ -237,7 +201,6 @@ class ModelAttributeFormControl extends _react.Component {
|
|
|
237
201
|
style: this.props.style
|
|
238
202
|
}));
|
|
239
203
|
}
|
|
240
|
-
|
|
241
204
|
case FormControlTypeEnum.CODE_EDITOR:
|
|
242
205
|
return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_codeEditorComponents.CodeEditor, (0, _extends2.default)({
|
|
243
206
|
value: value,
|
|
@@ -260,7 +223,6 @@ class ModelAttributeFormControl extends _react.Component {
|
|
|
260
223
|
color: "#fc5043"
|
|
261
224
|
}
|
|
262
225
|
}, _i18next.default.t(`${_constants.NS_LIBS_CMDB_INSTANCES}:${_constants.K.NOT_MEET_JSON}`)));
|
|
263
|
-
|
|
264
226
|
case FormControlTypeEnum.TEXTAREA:
|
|
265
227
|
case FormControlTypeEnum.MARKDOWN:
|
|
266
228
|
{
|
|
@@ -273,7 +235,6 @@ class ModelAttributeFormControl extends _react.Component {
|
|
|
273
235
|
rows: 5
|
|
274
236
|
}));
|
|
275
237
|
}
|
|
276
|
-
|
|
277
238
|
case FormControlTypeEnum.STRUCT:
|
|
278
239
|
case FormControlTypeEnum.LEGACY_STRUCT:
|
|
279
240
|
return /*#__PURE__*/_react.default.createElement(_structComponents.AddStruct, {
|
|
@@ -285,25 +246,23 @@ class ModelAttributeFormControl extends _react.Component {
|
|
|
285
246
|
style: this.props.style,
|
|
286
247
|
isCreate: this.props.isCreate
|
|
287
248
|
});
|
|
288
|
-
|
|
289
249
|
case FormControlTypeEnum.RADIO:
|
|
290
250
|
{
|
|
291
251
|
let {
|
|
292
252
|
items,
|
|
293
253
|
required,
|
|
294
254
|
readOnly
|
|
295
|
-
} = restProps;
|
|
255
|
+
} = restProps;
|
|
296
256
|
|
|
257
|
+
// NODE: 对非必填单选为空的特殊处理 BY @robertman
|
|
297
258
|
const unselected = {
|
|
298
259
|
id: null,
|
|
299
260
|
// text: "暂不选择",
|
|
300
261
|
text: _i18next.default.t(`${_constants.NS_LIBS_CMDB_INSTANCES}:${_constants.K.TEMPORARILY_NOT_CHOOSE}`)
|
|
301
262
|
};
|
|
302
|
-
|
|
303
263
|
if (!required) {
|
|
304
264
|
items = [...items, unselected];
|
|
305
265
|
}
|
|
306
|
-
|
|
307
266
|
return /*#__PURE__*/_react.default.createElement(_antd.Radio.Group, {
|
|
308
267
|
onChange: e => this.onChange(e),
|
|
309
268
|
value: value !== undefined ? value : unselected.id,
|
|
@@ -315,7 +274,6 @@ class ModelAttributeFormControl extends _react.Component {
|
|
|
315
274
|
key: String(item.id)
|
|
316
275
|
}, item.text)));
|
|
317
276
|
}
|
|
318
|
-
|
|
319
277
|
case FormControlTypeEnum.TAGS:
|
|
320
278
|
{
|
|
321
279
|
const {
|
|
@@ -325,7 +283,8 @@ class ModelAttributeFormControl extends _react.Component {
|
|
|
325
283
|
return /*#__PURE__*/_react.default.createElement(_antd.Select, {
|
|
326
284
|
allowClear: true,
|
|
327
285
|
mode: "tags",
|
|
328
|
-
style: {
|
|
286
|
+
style: {
|
|
287
|
+
...this.props.style,
|
|
329
288
|
width: "100%"
|
|
330
289
|
},
|
|
331
290
|
disabled: readOnly,
|
|
@@ -335,18 +294,15 @@ class ModelAttributeFormControl extends _react.Component {
|
|
|
335
294
|
className: this.props.className
|
|
336
295
|
});
|
|
337
296
|
}
|
|
338
|
-
|
|
339
297
|
case FormControlTypeEnum.DATE:
|
|
340
298
|
case FormControlTypeEnum.DATETIME:
|
|
341
299
|
{
|
|
342
300
|
let dateConfig = {};
|
|
343
|
-
|
|
344
301
|
if (type === FormControlTypeEnum.DATETIME) {
|
|
345
302
|
dateConfig = {
|
|
346
303
|
showTime: true
|
|
347
304
|
};
|
|
348
305
|
}
|
|
349
|
-
|
|
350
306
|
const {
|
|
351
307
|
readOnly,
|
|
352
308
|
placeholder
|
|
@@ -363,7 +319,6 @@ class ModelAttributeFormControl extends _react.Component {
|
|
|
363
319
|
style: this.props.style
|
|
364
320
|
}));
|
|
365
321
|
}
|
|
366
|
-
|
|
367
322
|
case FormControlTypeEnum.SELECT:
|
|
368
323
|
{
|
|
369
324
|
const {
|
|
@@ -387,7 +342,6 @@ class ModelAttributeFormControl extends _react.Component {
|
|
|
387
342
|
key: id
|
|
388
343
|
}, text)));
|
|
389
344
|
}
|
|
390
|
-
|
|
391
345
|
default:
|
|
392
346
|
return (
|
|
393
347
|
/*#__PURE__*/
|
|
@@ -415,7 +369,6 @@ class ModelAttributeFormControl extends _react.Component {
|
|
|
415
369
|
objectId
|
|
416
370
|
} = _props;
|
|
417
371
|
const is = objectId;
|
|
418
|
-
|
|
419
372
|
try {
|
|
420
373
|
this.state = {
|
|
421
374
|
value: _value,
|
|
@@ -433,24 +386,20 @@ class ModelAttributeFormControl extends _react.Component {
|
|
|
433
386
|
};
|
|
434
387
|
}
|
|
435
388
|
}
|
|
436
|
-
|
|
437
389
|
static computePattern(attribute) {
|
|
438
390
|
try {
|
|
439
391
|
if (attribute.value.type !== ModelAttributeValueType.ENUM && attribute.value.type !== ModelAttributeValueType.ENUMS && attribute.value.regex !== undefined && attribute.value.regex !== null) {
|
|
440
392
|
// todo(jhuang): use `u` flag for compliance until https://github.com/angular/angular/pull/20819 is resolved
|
|
441
393
|
return new RegExp(attribute.value.regex, "u");
|
|
442
394
|
}
|
|
443
|
-
|
|
444
395
|
return undefined;
|
|
445
396
|
} catch (error) {
|
|
446
397
|
return undefined;
|
|
447
398
|
}
|
|
448
399
|
}
|
|
449
|
-
|
|
450
400
|
computeFormControlItems(attribute, isClusterType) {
|
|
451
401
|
if (attribute.value.type === ModelAttributeValueType.ENUM || attribute.value.type === ModelAttributeValueType.ENUMS) {
|
|
452
402
|
var _attribute$value$rege;
|
|
453
|
-
|
|
454
403
|
// The backend guys are notorious to use `regex` as enum candidates. 😢
|
|
455
404
|
return (_attribute$value$rege = attribute.value.regex) === null || _attribute$value$rege === void 0 ? void 0 : _attribute$value$rege.map(enumValue => ({
|
|
456
405
|
id: enumValue,
|
|
@@ -458,7 +407,6 @@ class ModelAttributeFormControl extends _react.Component {
|
|
|
458
407
|
}));
|
|
459
408
|
}
|
|
460
409
|
}
|
|
461
|
-
|
|
462
410
|
static computeFormControlType(attribute, type, isSupportMultiStringValue) {
|
|
463
411
|
switch (attribute.value.type) {
|
|
464
412
|
case ModelAttributeValueType.STRING:
|
|
@@ -466,134 +414,108 @@ class ModelAttributeFormControl extends _react.Component {
|
|
|
466
414
|
if (attribute.value.mode === ModelAttributeValueModeType.MULTIPLE_LINES) {
|
|
467
415
|
return FormControlTypeEnum.TEXTAREA;
|
|
468
416
|
}
|
|
469
|
-
|
|
470
417
|
if (attribute.value.mode === ModelAttributeValueModeType.MARKDOWN) {
|
|
471
418
|
return FormControlTypeEnum.MARKDOWN;
|
|
472
419
|
}
|
|
473
|
-
|
|
474
420
|
if (attribute.value.mode === ModelAttributeValueModeType.URL) {
|
|
475
421
|
return FormControlTypeEnum.URL;
|
|
476
422
|
}
|
|
477
423
|
}
|
|
478
|
-
|
|
479
424
|
/* falls through */
|
|
480
|
-
|
|
481
425
|
case ModelAttributeValueType.IP:
|
|
482
426
|
if (isSupportMultiStringValue) {
|
|
483
427
|
return FormControlTypeEnum.TAGS;
|
|
484
428
|
}
|
|
485
|
-
|
|
486
429
|
return FormControlTypeEnum.TEXT;
|
|
487
|
-
|
|
488
430
|
case ModelAttributeValueType.JSON:
|
|
489
431
|
// return FormControlTypeEnum.TEXTAREA;
|
|
490
432
|
return FormControlTypeEnum.CODE_EDITOR;
|
|
491
|
-
|
|
492
433
|
case ModelAttributeValueType.ENUM:
|
|
493
434
|
if (!attribute.value.regex || attribute.value.regex.length === 0) {
|
|
494
|
-
throw new Error(
|
|
435
|
+
throw new Error(
|
|
436
|
+
// "请在资源模型管理中添加枚举值, 属性: " + attribute.name
|
|
495
437
|
_i18next.default.t(`${_constants.NS_LIBS_CMDB_INSTANCES}:${_constants.K.ENUM_ERROR_TIP}`, {
|
|
496
438
|
attribute: attribute.name
|
|
497
439
|
}));
|
|
498
440
|
}
|
|
499
|
-
|
|
500
441
|
if (attribute.value.regex && attribute.value.regex.length <= 5 && (!type || type === FormControlTypeEnum.RADIO)) {
|
|
501
442
|
return FormControlTypeEnum.RADIO;
|
|
502
443
|
}
|
|
503
|
-
|
|
504
444
|
return FormControlTypeEnum.SELECT;
|
|
505
|
-
|
|
506
445
|
case ModelAttributeValueType.INTEGER:
|
|
507
446
|
case ModelAttributeValueType.FLOAT:
|
|
508
447
|
return FormControlTypeEnum.NUMBER;
|
|
509
|
-
|
|
510
448
|
case ModelAttributeValueType.DATE:
|
|
511
449
|
return FormControlTypeEnum.DATE;
|
|
512
|
-
|
|
513
450
|
case ModelAttributeValueType.DATETIME:
|
|
514
451
|
return FormControlTypeEnum.DATETIME;
|
|
515
|
-
|
|
516
452
|
case ModelAttributeValueType.ARR:
|
|
517
453
|
return FormControlTypeEnum.TAGS;
|
|
518
|
-
|
|
519
454
|
case ModelAttributeValueType.STRUCT:
|
|
520
455
|
if (attribute.value.struct_define.length === 0) {
|
|
521
|
-
throw new Error(
|
|
456
|
+
throw new Error(
|
|
457
|
+
// "请在资源模型中添加结构体属性, 属性: " + attribute.name
|
|
522
458
|
_i18next.default.t(`${_constants.NS_LIBS_CMDB_INSTANCES}:${_constants.K.STRUCT_ERROR_TIP}`, {
|
|
523
459
|
attribute: attribute.name
|
|
524
460
|
}));
|
|
525
461
|
}
|
|
526
|
-
|
|
527
462
|
return FormControlTypeEnum.LEGACY_STRUCT;
|
|
528
|
-
|
|
529
463
|
case ModelAttributeValueType.STRUCT_LIST:
|
|
530
464
|
if (attribute.value.struct_define.length === 0) {
|
|
531
|
-
throw new Error(
|
|
465
|
+
throw new Error(
|
|
466
|
+
// "请在资源模型中添加结构体属性, 属性: " + attribute.name
|
|
532
467
|
_i18next.default.t(`${_constants.NS_LIBS_CMDB_INSTANCES}:${_constants.K.STRUCT_ERROR_TIP}`, {
|
|
533
468
|
attribute: attribute.name
|
|
534
469
|
}));
|
|
535
470
|
}
|
|
536
|
-
|
|
537
471
|
return FormControlTypeEnum.STRUCT;
|
|
538
|
-
|
|
539
472
|
case ModelAttributeValueType.BOOLEAN:
|
|
540
473
|
return FormControlTypeEnum.SELECT;
|
|
541
|
-
|
|
542
474
|
case ModelAttributeValueType.ENUMS:
|
|
543
475
|
return FormControlTypeEnum.SELECT;
|
|
544
|
-
|
|
545
476
|
default:
|
|
546
477
|
throw new Error(_i18next.default.t(`${_constants.NS_LIBS_CMDB_INSTANCES}:${_constants.K.TYPE_NO_SUPPORT_EDIT}`, {
|
|
547
478
|
type: attribute.value.type
|
|
548
479
|
}));
|
|
549
480
|
}
|
|
550
481
|
}
|
|
551
|
-
|
|
552
482
|
static computePlaceholder(formControl) {
|
|
553
483
|
if (formControl.id === "ip" && formControl.name === "ip") {
|
|
554
484
|
return _i18next.default.t(`${_constants.NS_LIBS_CMDB_INSTANCES}:${_constants.K.IP_PLACEHOLDER}`);
|
|
555
485
|
}
|
|
556
|
-
|
|
557
486
|
const placeholders = [];
|
|
558
|
-
|
|
559
487
|
switch (formControl.type) {
|
|
560
488
|
case FormControlTypeEnum.SELECT:
|
|
561
489
|
placeholders.push(_i18next.default.t(`${_constants.NS_LIBS_CMDB_INSTANCES}:${_constants.K.CLICK_TO_SELECT}`));
|
|
562
490
|
break;
|
|
563
|
-
|
|
564
491
|
case FormControlTypeEnum.DATETIME:
|
|
565
492
|
case FormControlTypeEnum.DATE:
|
|
566
493
|
placeholders.push(_i18next.default.t(`${_constants.NS_LIBS_CMDB_INSTANCES}:${_constants.K.CLICK_TO_SELECT}`));
|
|
567
494
|
break;
|
|
568
|
-
|
|
569
495
|
case FormControlTypeEnum.TAGS:
|
|
570
496
|
placeholders.push(_i18next.default.t(`${_constants.NS_LIBS_CMDB_INSTANCES}:${_constants.K.ENTER_MULTIPLE_STRING_WITH_ENTER_KEY_AS_THE_SEPARATOR}`));
|
|
571
497
|
break;
|
|
572
|
-
|
|
573
498
|
case FormControlTypeEnum.NUMBER:
|
|
574
499
|
placeholders.push(_i18next.default.t(`${_constants.NS_LIBS_CMDB_INSTANCES}:${_constants.K.NUMBER_INPUT_PLACEHOLDER}`));
|
|
575
500
|
break;
|
|
576
|
-
|
|
577
501
|
default:
|
|
578
502
|
placeholders.push(_i18next.default.t(`${_constants.NS_LIBS_CMDB_INSTANCES}:${_constants.K.ADVANCE_SEARCH_SINGLE_INPUT_PLACEHOLDER}`));
|
|
579
503
|
}
|
|
580
|
-
|
|
581
504
|
if (formControl.pattern !== undefined) {
|
|
582
505
|
// placeholders.push(`匹配正则 ${formControl.pattern}`);
|
|
583
506
|
placeholders.push(_i18next.default.t(`${_constants.NS_LIBS_CMDB_INSTANCES}:${_constants.K.MATCHING_REGULAR}`, {
|
|
584
507
|
regexp: formControl.pattern
|
|
585
508
|
}));
|
|
586
509
|
}
|
|
587
|
-
|
|
588
510
|
if (formControl.unique) {
|
|
589
511
|
// placeholders.push(`${formControl.label}唯一不能重复`);
|
|
590
512
|
placeholders.push(_i18next.default.t(`${_constants.NS_LIBS_CMDB_INSTANCES}:${_constants.K.UNIQUE_NO_REPEAT}`, {
|
|
591
513
|
label: formControl.label
|
|
592
514
|
}));
|
|
593
515
|
}
|
|
594
|
-
|
|
595
516
|
return placeholders.join(",");
|
|
596
517
|
}
|
|
518
|
+
|
|
597
519
|
/*computeFormControlAndCatchError = () => {
|
|
598
520
|
const { attribute, objectId } = this.props;
|
|
599
521
|
try {
|
|
@@ -612,12 +534,9 @@ class ModelAttributeFormControl extends _react.Component {
|
|
|
612
534
|
}
|
|
613
535
|
};*/
|
|
614
536
|
|
|
615
|
-
|
|
616
537
|
render() {
|
|
617
538
|
return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, this.FormControlTypeMap());
|
|
618
539
|
}
|
|
619
|
-
|
|
620
540
|
}
|
|
621
|
-
|
|
622
541
|
exports.ModelAttributeFormControl = ModelAttributeFormControl;
|
|
623
542
|
//# sourceMappingURL=ModelAttributeFormControl.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ModelAttributeFormControl.js","names":["ModelAttributeValueType","ModelAttributeValueModeType","FormControlTypeEnum","boolOptions","id","text","ModelAttributeFormControl","Component","componentDidUpdate","prevProps","prevState","snapshot","props","value","type","attribute","name","setState","formControl","computeFormControl","objectId","constructor","isClusterType","formControlType","computeFormControlType","isSupportMultiStringValue","items","computeFormControlItems","BOOLEAN","result","label","required","readOnly","isCreate","readonly","unique","pattern","computePattern","STRUCT","computePlaceholder","event","target","onChange","date","dateString","undefined","err","error","some","jsonValidateCollection","showError","restProps","errorMessage","state","jsonSchema","regex","JSON","parse","TEXT","placeholder","e","className","style","URL","NUMBER","CODE_EDITOR","validateJson","display","color","i18n","t","NS_LIBS_CMDB_INSTANCES","K","NOT_MEET_JSON","TEXTAREA","MARKDOWN","LEGACY_STRUCT","formData","RADIO","unselected","TEMPORARILY_NOT_CHOOSE","map","item","String","TAGS","width","DATE","DATETIME","dateConfig","showTime","formater","computeDateFormat","format","handleDateChange","SELECT","newValue","multiSelect","is","message","_PLAIN_TEXT","ENUM","ENUMS","RegExp","enumValue","clusterMap","STRING","mode","MULTIPLE_LINES","IP","length","Error","ENUM_ERROR_TIP","INTEGER","FLOAT","ARR","struct_define","STRUCT_ERROR_TIP","STRUCT_LIST","TYPE_NO_SUPPORT_EDIT","IP_PLACEHOLDER","placeholders","push","CLICK_TO_SELECT","ENTER_MULTIPLE_STRING_WITH_ENTER_KEY_AS_THE_SEPARATOR","NUMBER_INPUT_PLACEHOLDER","ADVANCE_SEARCH_SINGLE_INPUT_PLACEHOLDER","MATCHING_REGULAR","regexp","UNIQUE_NO_REPEAT","join","render","FormControlTypeMap"],"sources":["../../../src/model-attribute-form-control/ModelAttributeFormControl.tsx"],"sourcesContent":["import React, { Component, ReactNode } from \"react\";\nimport { CmdbModels } from \"@next-sdk/cmdb-sdk\";\nimport i18n from \"i18next\";\nimport { NS_LIBS_CMDB_INSTANCES, K } from \"../i18n/constants\";\nimport { DatePicker, Input, InputNumber, Radio, Select } from \"antd\";\nimport { AddStruct } from \"../struct-components\";\nimport moment, { Moment } from \"moment\";\nimport { AttributeFormControlUrl } from \"../attribute-form-control-url/AttributeFormControlUrl\";\nimport { computeDateFormat } from \"../processors\";\nimport { clusterMap } from \"../instance-list-table/constants\";\nimport { CodeEditor } from \"@next-libs/code-editor-components\";\nimport { some } from \"lodash\";\nexport interface FormControlSelectItem {\n id: any;\n text: string;\n}\n\nexport enum ModelAttributeValueType {\n STRING = \"str\",\n INTEGER = \"int\",\n ENUM = \"enum\",\n ENUMS = \"enums\",\n ARR = \"arr\",\n DATE = \"date\",\n DATETIME = \"datetime\",\n STRUCT = \"struct\",\n STRUCT_LIST = \"structs\",\n FOREIGN_KEY = \"FK\",\n FOREIGN_KEYS = \"FKs\",\n IP = \"ip\",\n FLOAT = \"float\",\n BOOLEAN = \"bool\",\n JSON = \"json\",\n}\n\nexport enum ModelAttributeValueModeType {\n MULTIPLE_LINES = \"multiple-lines\",\n DEFAULT = \"default\",\n MARKDOWN = \"markdown\",\n URL = \"url\",\n}\n\nexport enum FormControlTypeEnum {\n TEXT = \"text\",\n NUMBER = \"number\",\n SELECT = \"select\",\n RADIO = \"radio\",\n TEXTAREA = \"textarea\",\n DATE = \"date\",\n DATETIME = \"datetime\",\n TAGS = \"tags\",\n STRUCT = \"struct\",\n /**\n * @deprecated supported for compatibility only\n * @type {string}\n */\n LEGACY_STRUCT = \"legacy-struct\",\n // fallback to show a plain text span\n _PLAIN_TEXT = \"_plain_text\",\n MARKDOWN = \"markdown\",\n URL = \"url\",\n CODE_EDITOR = \"code_editor\",\n}\n\nexport interface FormControl {\n id: string;\n type: FormControlTypeEnum;\n items?: FormControlSelectItem[];\n name: string;\n label?: string;\n required?: boolean;\n readOnly?: boolean;\n unique?: boolean;\n pattern?: RegExp;\n placeholder?: string;\n maxlength?: number; // 结构体数组的最大长度,如果是结构体,就是1,\n}\n\nexport interface ModelAttributeFormControlProps {\n // ant-design initialValue\n id?: string;\n value?: any;\n isCreate?: boolean;\n onChange?: (value: any) => void;\n attribute: Partial<CmdbModels.ModelObjectAttr>;\n type?: string;\n multiSelect?: boolean;\n className?: string;\n style?: React.CSSProperties;\n objectId?: string;\n jsonValidateCollection?: (err: boolean) => void;\n isSupportMultiStringValue?: boolean;\n}\n\nexport interface ModelAttributeFormControlState {\n value?: any;\n formControl: FormControl;\n errorMessage: string;\n showError?: boolean;\n}\n\nexport const boolOptions: FormControlSelectItem[] = [\n {\n id: true,\n text: \"true\",\n },\n {\n id: false,\n text: \"false\",\n },\n];\n\nexport class ModelAttributeFormControl extends Component<\n ModelAttributeFormControlProps,\n ModelAttributeFormControlState\n> {\n componentDidUpdate(\n prevProps: Readonly<ModelAttributeFormControlProps>,\n prevState: Readonly<ModelAttributeFormControlState>,\n snapshot?: any\n ): void {\n if (\n this.props.value !== prevProps.value ||\n this.props.type !== prevProps.type ||\n this.props.attribute.id !== prevProps.attribute.id ||\n this.props.attribute.name !== prevProps.attribute.name ||\n this.props.attribute.value.type !== prevProps.attribute.value.type\n ) {\n this.setState({\n value: this.props.value,\n formControl: this.computeFormControl(\n this.props.attribute,\n this.props.id,\n this.props.type,\n this.props.objectId === \"CLUSTER\" &&\n this.props.attribute.id === \"type\"\n ),\n });\n }\n }\n\n constructor(props: ModelAttributeFormControlProps) {\n super(props);\n const { attribute, id, value, type, objectId } = props;\n const is = objectId;\n try {\n this.state = {\n value,\n errorMessage: null,\n formControl: this.computeFormControl(\n attribute,\n id,\n type,\n this.props.objectId === \"CLUSTER\" &&\n this.props.attribute.id === \"type\"\n ),\n };\n } catch (error) {\n this.state = {\n errorMessage: error.message,\n formControl: {\n type: FormControlTypeEnum._PLAIN_TEXT,\n name: attribute.name,\n id: \"\",\n },\n };\n }\n }\n\n static computePattern(\n attribute: Partial<CmdbModels.ModelObjectAttr>\n ): RegExp | undefined {\n try {\n if (\n attribute.value.type !== ModelAttributeValueType.ENUM &&\n attribute.value.type !== ModelAttributeValueType.ENUMS &&\n attribute.value.regex !== undefined &&\n attribute.value.regex !== null\n ) {\n // todo(jhuang): use `u` flag for compliance until https://github.com/angular/angular/pull/20819 is resolved\n return new RegExp(attribute.value.regex as string, \"u\");\n }\n return undefined;\n } catch (error) {\n return undefined;\n }\n }\n\n computeFormControlItems(\n attribute: Partial<CmdbModels.ModelObjectAttr>,\n isClusterType?: boolean\n ): FormControlSelectItem[] {\n if (\n attribute.value.type === ModelAttributeValueType.ENUM ||\n attribute.value.type === ModelAttributeValueType.ENUMS\n ) {\n // The backend guys are notorious to use `regex` as enum candidates. 😢\n return (attribute.value.regex as string[])?.map((enumValue) => ({\n id: enumValue,\n text: isClusterType ? clusterMap[enumValue] : enumValue,\n }));\n }\n }\n\n static computeFormControlType(\n attribute: Partial<CmdbModels.ModelObjectAttr>,\n type?: string,\n isSupportMultiStringValue?: boolean\n ): FormControlTypeEnum {\n switch (attribute.value.type) {\n case ModelAttributeValueType.STRING: {\n if (\n attribute.value.mode === ModelAttributeValueModeType.MULTIPLE_LINES\n ) {\n return FormControlTypeEnum.TEXTAREA;\n }\n if (attribute.value.mode === ModelAttributeValueModeType.MARKDOWN) {\n return FormControlTypeEnum.MARKDOWN;\n }\n if (attribute.value.mode === ModelAttributeValueModeType.URL) {\n return FormControlTypeEnum.URL;\n }\n }\n /* falls through */\n case ModelAttributeValueType.IP:\n if (isSupportMultiStringValue) {\n return FormControlTypeEnum.TAGS;\n }\n return FormControlTypeEnum.TEXT;\n case ModelAttributeValueType.JSON:\n // return FormControlTypeEnum.TEXTAREA;\n return FormControlTypeEnum.CODE_EDITOR;\n case ModelAttributeValueType.ENUM:\n if (\n !attribute.value.regex ||\n (attribute.value.regex as string[]).length === 0\n ) {\n throw new Error(\n // \"请在资源模型管理中添加枚举值, 属性: \" + attribute.name\n i18n.t(`${NS_LIBS_CMDB_INSTANCES}:${K.ENUM_ERROR_TIP}`, {\n attribute: attribute.name,\n })\n );\n }\n if (\n attribute.value.regex &&\n (attribute.value.regex as string[]).length <= 5 &&\n (!type || type === FormControlTypeEnum.RADIO)\n ) {\n return FormControlTypeEnum.RADIO;\n }\n return FormControlTypeEnum.SELECT;\n case ModelAttributeValueType.INTEGER:\n case ModelAttributeValueType.FLOAT:\n return FormControlTypeEnum.NUMBER;\n case ModelAttributeValueType.DATE:\n return FormControlTypeEnum.DATE;\n case ModelAttributeValueType.DATETIME:\n return FormControlTypeEnum.DATETIME;\n case ModelAttributeValueType.ARR:\n return FormControlTypeEnum.TAGS;\n case ModelAttributeValueType.STRUCT:\n if (attribute.value.struct_define.length === 0) {\n throw new Error(\n // \"请在资源模型中添加结构体属性, 属性: \" + attribute.name\n i18n.t(`${NS_LIBS_CMDB_INSTANCES}:${K.STRUCT_ERROR_TIP}`, {\n attribute: attribute.name,\n })\n );\n }\n return FormControlTypeEnum.LEGACY_STRUCT;\n case ModelAttributeValueType.STRUCT_LIST:\n if (attribute.value.struct_define.length === 0) {\n throw new Error(\n // \"请在资源模型中添加结构体属性, 属性: \" + attribute.name\n i18n.t(`${NS_LIBS_CMDB_INSTANCES}:${K.STRUCT_ERROR_TIP}`, {\n attribute: attribute.name,\n })\n );\n }\n return FormControlTypeEnum.STRUCT;\n case ModelAttributeValueType.BOOLEAN:\n return FormControlTypeEnum.SELECT;\n case ModelAttributeValueType.ENUMS:\n return FormControlTypeEnum.SELECT;\n default:\n throw new Error(\n i18n.t(`${NS_LIBS_CMDB_INSTANCES}:${K.TYPE_NO_SUPPORT_EDIT}`, {\n type: attribute.value.type,\n })\n );\n }\n }\n\n computeFormControl = (\n attribute: Partial<CmdbModels.ModelObjectAttr>,\n id?: string,\n type?: string,\n isClusterType?: boolean\n ): FormControl => {\n const formControlType = ModelAttributeFormControl.computeFormControlType(\n attribute,\n type,\n this.props.isSupportMultiStringValue\n );\n let items = this.computeFormControlItems(attribute, isClusterType);\n\n if (attribute.value.type === ModelAttributeValueType.BOOLEAN) {\n items = boolOptions;\n }\n\n const result: FormControl = {\n type: formControlType,\n items,\n id: id || attribute.id,\n name: attribute.id,\n label: attribute.name,\n required: attribute.required === \"true\",\n readOnly: !this.props.isCreate && attribute.readonly === \"true\",\n unique: attribute.unique === \"true\",\n pattern: ModelAttributeFormControl.computePattern(attribute),\n };\n\n if (result.type === FormControlTypeEnum.STRUCT) {\n result[\"maxlength\"] = 1;\n }\n result[\"placeholder\"] =\n ModelAttributeFormControl.computePlaceholder(result);\n return result;\n };\n\n static computePlaceholder(formControl: FormControl): string {\n if (formControl.id === \"ip\" && formControl.name === \"ip\") {\n return i18n.t(`${NS_LIBS_CMDB_INSTANCES}:${K.IP_PLACEHOLDER}`);\n }\n\n const placeholders = [];\n switch (formControl.type) {\n case FormControlTypeEnum.SELECT:\n placeholders.push(\n i18n.t(`${NS_LIBS_CMDB_INSTANCES}:${K.CLICK_TO_SELECT}`)\n );\n break;\n case FormControlTypeEnum.DATETIME:\n case FormControlTypeEnum.DATE:\n placeholders.push(\n i18n.t(`${NS_LIBS_CMDB_INSTANCES}:${K.CLICK_TO_SELECT}`)\n );\n break;\n case FormControlTypeEnum.TAGS:\n placeholders.push(\n i18n.t(\n `${NS_LIBS_CMDB_INSTANCES}:${K.ENTER_MULTIPLE_STRING_WITH_ENTER_KEY_AS_THE_SEPARATOR}`\n )\n );\n break;\n case FormControlTypeEnum.NUMBER:\n placeholders.push(\n i18n.t(`${NS_LIBS_CMDB_INSTANCES}:${K.NUMBER_INPUT_PLACEHOLDER}`)\n );\n break;\n default:\n placeholders.push(\n i18n.t(\n `${NS_LIBS_CMDB_INSTANCES}:${K.ADVANCE_SEARCH_SINGLE_INPUT_PLACEHOLDER}`\n )\n );\n }\n\n if (formControl.pattern !== undefined) {\n // placeholders.push(`匹配正则 ${formControl.pattern}`);\n placeholders.push(\n i18n.t(`${NS_LIBS_CMDB_INSTANCES}:${K.MATCHING_REGULAR}`, {\n regexp: formControl.pattern,\n })\n );\n }\n if (formControl.unique) {\n // placeholders.push(`${formControl.label}唯一不能重复`);\n placeholders.push(\n i18n.t(`${NS_LIBS_CMDB_INSTANCES}:${K.UNIQUE_NO_REPEAT}`, {\n label: formControl.label,\n })\n );\n }\n return placeholders.join(\",\");\n }\n\n /*computeFormControlAndCatchError = () => {\n const { attribute, objectId } = this.props;\n try {\n this.setState({\n formControl: this.computeFormControl(attribute, objectId)\n });\n } catch (error) {\n this.setState({\n errorMessage: error.message,\n formControl: {\n type: FormControlTypeEnum._PLAIN_TEXT,\n name: attribute.name,\n id: \"\"\n }\n });\n }\n };*/\n\n onChange = (event: any) => {\n let value;\n if (event && event.target) {\n value = event.target.value;\n } else {\n value = event;\n }\n\n const { onChange } = this.props;\n this.setState({ value });\n onChange && onChange(value);\n };\n\n handleDateChange = (date: Moment, dateString: string) => {\n this.onChange(dateString || undefined);\n };\n validateJson = (err: any) => {\n const error = some(err, [\"type\", \"error\"]);\n this.props.jsonValidateCollection?.(error);\n this.setState({ showError: error });\n };\n\n FormControlTypeMap = (): ReactNode => {\n const { attribute } = this.props;\n const {\n value,\n formControl: { type, ...restProps },\n errorMessage,\n } = this.state;\n // const unsupportText = `\"${type}\"类型暂时不支持编辑`;\n // const unsupportText = i18n.t(\n // `${NS_LIBS_CMDB_INSTANCES}:${K.TYPE_NO_SUPPORT_EDIT}`,\n // { type }\n // );\n let jsonSchema: any;\n if (attribute?.value?.type === \"json\" && attribute?.value?.regex) {\n jsonSchema = JSON.parse(attribute?.value?.regex);\n }\n\n switch (type) {\n case FormControlTypeEnum.TEXT: {\n const { pattern, placeholder, ...props } = restProps;\n return (\n <Input\n value={value}\n type=\"text\"\n {...props}\n placeholder={placeholder}\n onChange={(e) => this.onChange(e)}\n className={this.props.className}\n style={this.props.style}\n />\n );\n }\n\n case FormControlTypeEnum.URL: {\n const { readOnly, required, placeholder } = restProps;\n\n return (\n <AttributeFormControlUrl\n readOnly={readOnly}\n required={required}\n placeholder={placeholder}\n value={value}\n onChange={(e) => this.onChange(e)}\n />\n );\n }\n\n case FormControlTypeEnum.NUMBER: {\n const { pattern, ...props } = restProps;\n return (\n <InputNumber\n value={value}\n {...props}\n onChange={(e: any) => this.onChange(e)}\n className={this.props.className}\n style={this.props.style}\n />\n );\n }\n case FormControlTypeEnum.CODE_EDITOR:\n return (\n <>\n <CodeEditor\n value={value}\n mode={\"json\"}\n maxLines={\"Infinity\"}\n highlightActiveLine={true}\n onChange={(e: any) => this.onChange(e)}\n minLines={3}\n showLineNumbers={true}\n showPrintMargin={false}\n validateJsonSchemaMode={\"error\"}\n {...(jsonSchema ? { jsonSchema: jsonSchema } : {})}\n theme=\"tomorrow\"\n onValidate={(err: any) => this.validateJson(err)}\n />\n <label\n style={{\n display: this.state.showError ? \"block\" : \"none\",\n color: \"#fc5043\",\n }}\n >\n {i18n.t(`${NS_LIBS_CMDB_INSTANCES}:${K.NOT_MEET_JSON}`)}\n </label>\n </>\n );\n case FormControlTypeEnum.TEXTAREA:\n case FormControlTypeEnum.MARKDOWN: {\n return (\n <Input.TextArea\n value={value}\n {...restProps}\n onChange={(e: any) => this.onChange(e)}\n className={this.props.className}\n style={this.props.style}\n rows={5}\n />\n );\n }\n\n case FormControlTypeEnum.STRUCT:\n case FormControlTypeEnum.LEGACY_STRUCT:\n return (\n <AddStruct\n isLegacy={type === FormControlTypeEnum.LEGACY_STRUCT}\n attribute={attribute}\n structData={value}\n handleStoreFunction={(formData: any) => this.onChange(formData)}\n className={this.props.className}\n style={this.props.style}\n isCreate={this.props.isCreate}\n />\n );\n\n case FormControlTypeEnum.RADIO: {\n let { items, required, readOnly } = restProps;\n\n // NODE: 对非必填单选为空的特殊处理 BY @robertman\n const unselected = {\n id: null as string,\n // text: \"暂不选择\",\n text: i18n.t(`${NS_LIBS_CMDB_INSTANCES}:${K.TEMPORARILY_NOT_CHOOSE}`),\n };\n\n if (!required) {\n items = [...items, unselected];\n }\n\n return (\n <Radio.Group\n onChange={(e: any) => this.onChange(e)}\n value={value !== undefined ? value : unselected.id}\n className={this.props.className}\n style={this.props.style}\n disabled={readOnly}\n >\n {items.map((item) => (\n <Radio value={item.id} key={String(item.id)}>\n {item.text}\n </Radio>\n ))}\n </Radio.Group>\n );\n }\n\n case FormControlTypeEnum.TAGS: {\n const { placeholder, readOnly } = restProps;\n return (\n <Select\n allowClear={true}\n mode=\"tags\"\n style={{ ...this.props.style, width: \"100%\" }}\n disabled={readOnly}\n placeholder={placeholder}\n value={value || []}\n onChange={(e: any) => this.onChange(e)}\n className={this.props.className}\n />\n );\n }\n\n case FormControlTypeEnum.DATE:\n case FormControlTypeEnum.DATETIME: {\n let dateConfig = {};\n if (type === FormControlTypeEnum.DATETIME) {\n dateConfig = {\n showTime: true,\n };\n }\n const { readOnly, placeholder } = restProps;\n const formater = computeDateFormat(type, value);\n return (\n <DatePicker\n value={formater.value}\n placeholder={placeholder}\n disabled={readOnly}\n format={formater.format}\n {...dateConfig}\n onChange={(date, dateString) =>\n this.handleDateChange(date, dateString)\n }\n className={this.props.className}\n style={this.props.style}\n />\n );\n }\n\n case FormControlTypeEnum.SELECT: {\n const { readOnly, placeholder } = restProps;\n const newValue =\n typeof value === \"boolean\" ? value : value ? value : [];\n return (\n <Select\n placeholder={placeholder}\n mode={this.props.multiSelect ? \"multiple\" : undefined}\n value={newValue}\n onChange={(e: any) => this.onChange(e)}\n disabled={readOnly}\n className={this.props.className}\n style={this.props.style}\n >\n {restProps.items &&\n restProps.items.map(({ id, text }) => (\n <Select.Option value={id} key={id}>\n {text}\n </Select.Option>\n ))}\n </Select>\n );\n }\n\n default:\n return (\n // <Input\n // value={errorMessage}\n // readOnly\n // disabled\n // className={this.props.className}\n // style={this.props.style}\n // />\n <div\n style={{\n color: \"var(--theme-red-color)\",\n ...this.props.style,\n }}\n >\n {errorMessage}\n </div>\n );\n }\n };\n\n render(): ReactNode {\n return <>{this.FormControlTypeMap()}</>;\n }\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ModelAttributeFormControl.js","names":["ModelAttributeValueType","ModelAttributeValueModeType","FormControlTypeEnum","boolOptions","id","text","ModelAttributeFormControl","Component","componentDidUpdate","prevProps","prevState","snapshot","props","value","type","attribute","name","setState","formControl","computeFormControl","objectId","constructor","isClusterType","formControlType","computeFormControlType","isSupportMultiStringValue","items","computeFormControlItems","BOOLEAN","result","label","required","readOnly","isCreate","readonly","unique","pattern","computePattern","STRUCT","computePlaceholder","event","target","onChange","date","dateString","undefined","err","error","some","jsonValidateCollection","showError","restProps","errorMessage","state","jsonSchema","regex","JSON","parse","TEXT","placeholder","e","className","style","URL","NUMBER","CODE_EDITOR","validateJson","display","color","i18n","t","NS_LIBS_CMDB_INSTANCES","K","NOT_MEET_JSON","TEXTAREA","MARKDOWN","LEGACY_STRUCT","formData","RADIO","unselected","TEMPORARILY_NOT_CHOOSE","map","item","String","TAGS","width","DATE","DATETIME","dateConfig","showTime","formater","computeDateFormat","format","handleDateChange","SELECT","newValue","multiSelect","is","message","_PLAIN_TEXT","ENUM","ENUMS","RegExp","enumValue","clusterMap","STRING","mode","MULTIPLE_LINES","IP","length","Error","ENUM_ERROR_TIP","INTEGER","FLOAT","ARR","struct_define","STRUCT_ERROR_TIP","STRUCT_LIST","TYPE_NO_SUPPORT_EDIT","IP_PLACEHOLDER","placeholders","push","CLICK_TO_SELECT","ENTER_MULTIPLE_STRING_WITH_ENTER_KEY_AS_THE_SEPARATOR","NUMBER_INPUT_PLACEHOLDER","ADVANCE_SEARCH_SINGLE_INPUT_PLACEHOLDER","MATCHING_REGULAR","regexp","UNIQUE_NO_REPEAT","join","render","FormControlTypeMap"],"sources":["../../../src/model-attribute-form-control/ModelAttributeFormControl.tsx"],"sourcesContent":["import React, { Component, ReactNode } from \"react\";\nimport { CmdbModels } from \"@next-sdk/cmdb-sdk\";\nimport i18n from \"i18next\";\nimport { NS_LIBS_CMDB_INSTANCES, K } from \"../i18n/constants\";\nimport { DatePicker, Input, InputNumber, Radio, Select } from \"antd\";\nimport { AddStruct } from \"../struct-components\";\nimport moment, { Moment } from \"moment\";\nimport { AttributeFormControlUrl } from \"../attribute-form-control-url/AttributeFormControlUrl\";\nimport { computeDateFormat } from \"../processors\";\nimport { clusterMap } from \"../instance-list-table/constants\";\nimport { CodeEditor } from \"@next-libs/code-editor-components\";\nimport { some } from \"lodash\";\nexport interface FormControlSelectItem {\n id: any;\n text: string;\n}\n\nexport enum ModelAttributeValueType {\n STRING = \"str\",\n INTEGER = \"int\",\n ENUM = \"enum\",\n ENUMS = \"enums\",\n ARR = \"arr\",\n DATE = \"date\",\n DATETIME = \"datetime\",\n STRUCT = \"struct\",\n STRUCT_LIST = \"structs\",\n FOREIGN_KEY = \"FK\",\n FOREIGN_KEYS = \"FKs\",\n IP = \"ip\",\n FLOAT = \"float\",\n BOOLEAN = \"bool\",\n JSON = \"json\",\n}\n\nexport enum ModelAttributeValueModeType {\n MULTIPLE_LINES = \"multiple-lines\",\n DEFAULT = \"default\",\n MARKDOWN = \"markdown\",\n URL = \"url\",\n}\n\nexport enum FormControlTypeEnum {\n TEXT = \"text\",\n NUMBER = \"number\",\n SELECT = \"select\",\n RADIO = \"radio\",\n TEXTAREA = \"textarea\",\n DATE = \"date\",\n DATETIME = \"datetime\",\n TAGS = \"tags\",\n STRUCT = \"struct\",\n /**\n * @deprecated supported for compatibility only\n * @type {string}\n */\n LEGACY_STRUCT = \"legacy-struct\",\n // fallback to show a plain text span\n _PLAIN_TEXT = \"_plain_text\",\n MARKDOWN = \"markdown\",\n URL = \"url\",\n CODE_EDITOR = \"code_editor\",\n}\n\nexport interface FormControl {\n id: string;\n type: FormControlTypeEnum;\n items?: FormControlSelectItem[];\n name: string;\n label?: string;\n required?: boolean;\n readOnly?: boolean;\n unique?: boolean;\n pattern?: RegExp;\n placeholder?: string;\n maxlength?: number; // 结构体数组的最大长度,如果是结构体,就是1,\n}\n\nexport interface ModelAttributeFormControlProps {\n // ant-design initialValue\n id?: string;\n value?: any;\n isCreate?: boolean;\n onChange?: (value: any) => void;\n attribute: Partial<CmdbModels.ModelObjectAttr>;\n type?: string;\n multiSelect?: boolean;\n className?: string;\n style?: React.CSSProperties;\n objectId?: string;\n jsonValidateCollection?: (err: boolean) => void;\n isSupportMultiStringValue?: boolean;\n}\n\nexport interface ModelAttributeFormControlState {\n value?: any;\n formControl: FormControl;\n errorMessage: string;\n showError?: boolean;\n}\n\nexport const boolOptions: FormControlSelectItem[] = [\n {\n id: true,\n text: \"true\",\n },\n {\n id: false,\n text: \"false\",\n },\n];\n\nexport class ModelAttributeFormControl extends Component<\n ModelAttributeFormControlProps,\n ModelAttributeFormControlState\n> {\n componentDidUpdate(\n prevProps: Readonly<ModelAttributeFormControlProps>,\n prevState: Readonly<ModelAttributeFormControlState>,\n snapshot?: any\n ): void {\n if (\n this.props.value !== prevProps.value ||\n this.props.type !== prevProps.type ||\n this.props.attribute.id !== prevProps.attribute.id ||\n this.props.attribute.name !== prevProps.attribute.name ||\n this.props.attribute.value.type !== prevProps.attribute.value.type\n ) {\n this.setState({\n value: this.props.value,\n formControl: this.computeFormControl(\n this.props.attribute,\n this.props.id,\n this.props.type,\n this.props.objectId === \"CLUSTER\" &&\n this.props.attribute.id === \"type\"\n ),\n });\n }\n }\n\n constructor(props: ModelAttributeFormControlProps) {\n super(props);\n const { attribute, id, value, type, objectId } = props;\n const is = objectId;\n try {\n this.state = {\n value,\n errorMessage: null,\n formControl: this.computeFormControl(\n attribute,\n id,\n type,\n this.props.objectId === \"CLUSTER\" &&\n this.props.attribute.id === \"type\"\n ),\n };\n } catch (error) {\n this.state = {\n errorMessage: error.message,\n formControl: {\n type: FormControlTypeEnum._PLAIN_TEXT,\n name: attribute.name,\n id: \"\",\n },\n };\n }\n }\n\n static computePattern(\n attribute: Partial<CmdbModels.ModelObjectAttr>\n ): RegExp | undefined {\n try {\n if (\n attribute.value.type !== ModelAttributeValueType.ENUM &&\n attribute.value.type !== ModelAttributeValueType.ENUMS &&\n attribute.value.regex !== undefined &&\n attribute.value.regex !== null\n ) {\n // todo(jhuang): use `u` flag for compliance until https://github.com/angular/angular/pull/20819 is resolved\n return new RegExp(attribute.value.regex as string, \"u\");\n }\n return undefined;\n } catch (error) {\n return undefined;\n }\n }\n\n computeFormControlItems(\n attribute: Partial<CmdbModels.ModelObjectAttr>,\n isClusterType?: boolean\n ): FormControlSelectItem[] {\n if (\n attribute.value.type === ModelAttributeValueType.ENUM ||\n attribute.value.type === ModelAttributeValueType.ENUMS\n ) {\n // The backend guys are notorious to use `regex` as enum candidates. 😢\n return (attribute.value.regex as string[])?.map((enumValue) => ({\n id: enumValue,\n text: isClusterType ? clusterMap[enumValue] : enumValue,\n }));\n }\n }\n\n static computeFormControlType(\n attribute: Partial<CmdbModels.ModelObjectAttr>,\n type?: string,\n isSupportMultiStringValue?: boolean\n ): FormControlTypeEnum {\n switch (attribute.value.type) {\n case ModelAttributeValueType.STRING: {\n if (\n attribute.value.mode === ModelAttributeValueModeType.MULTIPLE_LINES\n ) {\n return FormControlTypeEnum.TEXTAREA;\n }\n if (attribute.value.mode === ModelAttributeValueModeType.MARKDOWN) {\n return FormControlTypeEnum.MARKDOWN;\n }\n if (attribute.value.mode === ModelAttributeValueModeType.URL) {\n return FormControlTypeEnum.URL;\n }\n }\n /* falls through */\n case ModelAttributeValueType.IP:\n if (isSupportMultiStringValue) {\n return FormControlTypeEnum.TAGS;\n }\n return FormControlTypeEnum.TEXT;\n case ModelAttributeValueType.JSON:\n // return FormControlTypeEnum.TEXTAREA;\n return FormControlTypeEnum.CODE_EDITOR;\n case ModelAttributeValueType.ENUM:\n if (\n !attribute.value.regex ||\n (attribute.value.regex as string[]).length === 0\n ) {\n throw new Error(\n // \"请在资源模型管理中添加枚举值, 属性: \" + attribute.name\n i18n.t(`${NS_LIBS_CMDB_INSTANCES}:${K.ENUM_ERROR_TIP}`, {\n attribute: attribute.name,\n })\n );\n }\n if (\n attribute.value.regex &&\n (attribute.value.regex as string[]).length <= 5 &&\n (!type || type === FormControlTypeEnum.RADIO)\n ) {\n return FormControlTypeEnum.RADIO;\n }\n return FormControlTypeEnum.SELECT;\n case ModelAttributeValueType.INTEGER:\n case ModelAttributeValueType.FLOAT:\n return FormControlTypeEnum.NUMBER;\n case ModelAttributeValueType.DATE:\n return FormControlTypeEnum.DATE;\n case ModelAttributeValueType.DATETIME:\n return FormControlTypeEnum.DATETIME;\n case ModelAttributeValueType.ARR:\n return FormControlTypeEnum.TAGS;\n case ModelAttributeValueType.STRUCT:\n if (attribute.value.struct_define.length === 0) {\n throw new Error(\n // \"请在资源模型中添加结构体属性, 属性: \" + attribute.name\n i18n.t(`${NS_LIBS_CMDB_INSTANCES}:${K.STRUCT_ERROR_TIP}`, {\n attribute: attribute.name,\n })\n );\n }\n return FormControlTypeEnum.LEGACY_STRUCT;\n case ModelAttributeValueType.STRUCT_LIST:\n if (attribute.value.struct_define.length === 0) {\n throw new Error(\n // \"请在资源模型中添加结构体属性, 属性: \" + attribute.name\n i18n.t(`${NS_LIBS_CMDB_INSTANCES}:${K.STRUCT_ERROR_TIP}`, {\n attribute: attribute.name,\n })\n );\n }\n return FormControlTypeEnum.STRUCT;\n case ModelAttributeValueType.BOOLEAN:\n return FormControlTypeEnum.SELECT;\n case ModelAttributeValueType.ENUMS:\n return FormControlTypeEnum.SELECT;\n default:\n throw new Error(\n i18n.t(`${NS_LIBS_CMDB_INSTANCES}:${K.TYPE_NO_SUPPORT_EDIT}`, {\n type: attribute.value.type,\n })\n );\n }\n }\n\n computeFormControl = (\n attribute: Partial<CmdbModels.ModelObjectAttr>,\n id?: string,\n type?: string,\n isClusterType?: boolean\n ): FormControl => {\n const formControlType = ModelAttributeFormControl.computeFormControlType(\n attribute,\n type,\n this.props.isSupportMultiStringValue\n );\n let items = this.computeFormControlItems(attribute, isClusterType);\n\n if (attribute.value.type === ModelAttributeValueType.BOOLEAN) {\n items = boolOptions;\n }\n\n const result: FormControl = {\n type: formControlType,\n items,\n id: id || attribute.id,\n name: attribute.id,\n label: attribute.name,\n required: attribute.required === \"true\",\n readOnly: !this.props.isCreate && attribute.readonly === \"true\",\n unique: attribute.unique === \"true\",\n pattern: ModelAttributeFormControl.computePattern(attribute),\n };\n\n if (result.type === FormControlTypeEnum.STRUCT) {\n result[\"maxlength\"] = 1;\n }\n result[\"placeholder\"] =\n ModelAttributeFormControl.computePlaceholder(result);\n return result;\n };\n\n static computePlaceholder(formControl: FormControl): string {\n if (formControl.id === \"ip\" && formControl.name === \"ip\") {\n return i18n.t(`${NS_LIBS_CMDB_INSTANCES}:${K.IP_PLACEHOLDER}`);\n }\n\n const placeholders = [];\n switch (formControl.type) {\n case FormControlTypeEnum.SELECT:\n placeholders.push(\n i18n.t(`${NS_LIBS_CMDB_INSTANCES}:${K.CLICK_TO_SELECT}`)\n );\n break;\n case FormControlTypeEnum.DATETIME:\n case FormControlTypeEnum.DATE:\n placeholders.push(\n i18n.t(`${NS_LIBS_CMDB_INSTANCES}:${K.CLICK_TO_SELECT}`)\n );\n break;\n case FormControlTypeEnum.TAGS:\n placeholders.push(\n i18n.t(\n `${NS_LIBS_CMDB_INSTANCES}:${K.ENTER_MULTIPLE_STRING_WITH_ENTER_KEY_AS_THE_SEPARATOR}`\n )\n );\n break;\n case FormControlTypeEnum.NUMBER:\n placeholders.push(\n i18n.t(`${NS_LIBS_CMDB_INSTANCES}:${K.NUMBER_INPUT_PLACEHOLDER}`)\n );\n break;\n default:\n placeholders.push(\n i18n.t(\n `${NS_LIBS_CMDB_INSTANCES}:${K.ADVANCE_SEARCH_SINGLE_INPUT_PLACEHOLDER}`\n )\n );\n }\n\n if (formControl.pattern !== undefined) {\n // placeholders.push(`匹配正则 ${formControl.pattern}`);\n placeholders.push(\n i18n.t(`${NS_LIBS_CMDB_INSTANCES}:${K.MATCHING_REGULAR}`, {\n regexp: formControl.pattern,\n })\n );\n }\n if (formControl.unique) {\n // placeholders.push(`${formControl.label}唯一不能重复`);\n placeholders.push(\n i18n.t(`${NS_LIBS_CMDB_INSTANCES}:${K.UNIQUE_NO_REPEAT}`, {\n label: formControl.label,\n })\n );\n }\n return placeholders.join(\",\");\n }\n\n /*computeFormControlAndCatchError = () => {\n const { attribute, objectId } = this.props;\n try {\n this.setState({\n formControl: this.computeFormControl(attribute, objectId)\n });\n } catch (error) {\n this.setState({\n errorMessage: error.message,\n formControl: {\n type: FormControlTypeEnum._PLAIN_TEXT,\n name: attribute.name,\n id: \"\"\n }\n });\n }\n };*/\n\n onChange = (event: any) => {\n let value;\n if (event && event.target) {\n value = event.target.value;\n } else {\n value = event;\n }\n\n const { onChange } = this.props;\n this.setState({ value });\n onChange && onChange(value);\n };\n\n handleDateChange = (date: Moment, dateString: string) => {\n this.onChange(dateString || undefined);\n };\n validateJson = (err: any) => {\n const error = some(err, [\"type\", \"error\"]);\n this.props.jsonValidateCollection?.(error);\n this.setState({ showError: error });\n };\n\n FormControlTypeMap = (): ReactNode => {\n const { attribute } = this.props;\n const {\n value,\n formControl: { type, ...restProps },\n errorMessage,\n } = this.state;\n // const unsupportText = `\"${type}\"类型暂时不支持编辑`;\n // const unsupportText = i18n.t(\n // `${NS_LIBS_CMDB_INSTANCES}:${K.TYPE_NO_SUPPORT_EDIT}`,\n // { type }\n // );\n let jsonSchema: any;\n if (attribute?.value?.type === \"json\" && attribute?.value?.regex) {\n jsonSchema = JSON.parse(attribute?.value?.regex);\n }\n\n switch (type) {\n case FormControlTypeEnum.TEXT: {\n const { pattern, placeholder, ...props } = restProps;\n return (\n <Input\n value={value}\n type=\"text\"\n {...props}\n placeholder={placeholder}\n onChange={(e) => this.onChange(e)}\n className={this.props.className}\n style={this.props.style}\n />\n );\n }\n\n case FormControlTypeEnum.URL: {\n const { readOnly, required, placeholder } = restProps;\n\n return (\n <AttributeFormControlUrl\n readOnly={readOnly}\n required={required}\n placeholder={placeholder}\n value={value}\n onChange={(e) => this.onChange(e)}\n />\n );\n }\n\n case FormControlTypeEnum.NUMBER: {\n const { pattern, ...props } = restProps;\n return (\n <InputNumber\n value={value}\n {...props}\n onChange={(e: any) => this.onChange(e)}\n className={this.props.className}\n style={this.props.style}\n />\n );\n }\n case FormControlTypeEnum.CODE_EDITOR:\n return (\n <>\n <CodeEditor\n value={value}\n mode={\"json\"}\n maxLines={\"Infinity\"}\n highlightActiveLine={true}\n onChange={(e: any) => this.onChange(e)}\n minLines={3}\n showLineNumbers={true}\n showPrintMargin={false}\n validateJsonSchemaMode={\"error\"}\n {...(jsonSchema ? { jsonSchema: jsonSchema } : {})}\n theme=\"tomorrow\"\n onValidate={(err: any) => this.validateJson(err)}\n />\n <label\n style={{\n display: this.state.showError ? \"block\" : \"none\",\n color: \"#fc5043\",\n }}\n >\n {i18n.t(`${NS_LIBS_CMDB_INSTANCES}:${K.NOT_MEET_JSON}`)}\n </label>\n </>\n );\n case FormControlTypeEnum.TEXTAREA:\n case FormControlTypeEnum.MARKDOWN: {\n return (\n <Input.TextArea\n value={value}\n {...restProps}\n onChange={(e: any) => this.onChange(e)}\n className={this.props.className}\n style={this.props.style}\n rows={5}\n />\n );\n }\n\n case FormControlTypeEnum.STRUCT:\n case FormControlTypeEnum.LEGACY_STRUCT:\n return (\n <AddStruct\n isLegacy={type === FormControlTypeEnum.LEGACY_STRUCT}\n attribute={attribute}\n structData={value}\n handleStoreFunction={(formData: any) => this.onChange(formData)}\n className={this.props.className}\n style={this.props.style}\n isCreate={this.props.isCreate}\n />\n );\n\n case FormControlTypeEnum.RADIO: {\n let { items, required, readOnly } = restProps;\n\n // NODE: 对非必填单选为空的特殊处理 BY @robertman\n const unselected = {\n id: null as string,\n // text: \"暂不选择\",\n text: i18n.t(`${NS_LIBS_CMDB_INSTANCES}:${K.TEMPORARILY_NOT_CHOOSE}`),\n };\n\n if (!required) {\n items = [...items, unselected];\n }\n\n return (\n <Radio.Group\n onChange={(e: any) => this.onChange(e)}\n value={value !== undefined ? value : unselected.id}\n className={this.props.className}\n style={this.props.style}\n disabled={readOnly}\n >\n {items.map((item) => (\n <Radio value={item.id} key={String(item.id)}>\n {item.text}\n </Radio>\n ))}\n </Radio.Group>\n );\n }\n\n case FormControlTypeEnum.TAGS: {\n const { placeholder, readOnly } = restProps;\n return (\n <Select\n allowClear={true}\n mode=\"tags\"\n style={{ ...this.props.style, width: \"100%\" }}\n disabled={readOnly}\n placeholder={placeholder}\n value={value || []}\n onChange={(e: any) => this.onChange(e)}\n className={this.props.className}\n />\n );\n }\n\n case FormControlTypeEnum.DATE:\n case FormControlTypeEnum.DATETIME: {\n let dateConfig = {};\n if (type === FormControlTypeEnum.DATETIME) {\n dateConfig = {\n showTime: true,\n };\n }\n const { readOnly, placeholder } = restProps;\n const formater = computeDateFormat(type, value);\n return (\n <DatePicker\n value={formater.value}\n placeholder={placeholder}\n disabled={readOnly}\n format={formater.format}\n {...dateConfig}\n onChange={(date, dateString) =>\n this.handleDateChange(date, dateString)\n }\n className={this.props.className}\n style={this.props.style}\n />\n );\n }\n\n case FormControlTypeEnum.SELECT: {\n const { readOnly, placeholder } = restProps;\n const newValue =\n typeof value === \"boolean\" ? value : value ? value : [];\n return (\n <Select\n placeholder={placeholder}\n mode={this.props.multiSelect ? \"multiple\" : undefined}\n value={newValue}\n onChange={(e: any) => this.onChange(e)}\n disabled={readOnly}\n className={this.props.className}\n style={this.props.style}\n >\n {restProps.items &&\n restProps.items.map(({ id, text }) => (\n <Select.Option value={id} key={id}>\n {text}\n </Select.Option>\n ))}\n </Select>\n );\n }\n\n default:\n return (\n // <Input\n // value={errorMessage}\n // readOnly\n // disabled\n // className={this.props.className}\n // style={this.props.style}\n // />\n <div\n style={{\n color: \"var(--theme-red-color)\",\n ...this.props.style,\n }}\n >\n {errorMessage}\n </div>\n );\n }\n };\n\n render(): ReactNode {\n return <>{this.FormControlTypeMap()}</>;\n }\n}\n"],"mappings":"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"}
|