@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
|
@@ -3,8 +3,8 @@ import _extends from "@babel/runtime/helpers/extends";
|
|
|
3
3
|
import _objectWithoutProperties from "@babel/runtime/helpers/objectWithoutProperties";
|
|
4
4
|
import _defineProperty from "@babel/runtime/helpers/defineProperty";
|
|
5
5
|
var _excluded = ["type"],
|
|
6
|
-
|
|
7
|
-
|
|
6
|
+
_excluded2 = ["pattern", "placeholder"],
|
|
7
|
+
_excluded3 = ["pattern"];
|
|
8
8
|
import React, { Component } from "react";
|
|
9
9
|
import i18n from "i18next";
|
|
10
10
|
import { NS_LIBS_CMDB_INSTANCES, K } from "../i18n/constants";
|
|
@@ -16,7 +16,6 @@ import { clusterMap } from "../instance-list-table/constants";
|
|
|
16
16
|
import { CodeEditor } from "@next-libs/code-editor-components";
|
|
17
17
|
import { some } from "lodash";
|
|
18
18
|
export var ModelAttributeValueType;
|
|
19
|
-
|
|
20
19
|
(function (ModelAttributeValueType) {
|
|
21
20
|
ModelAttributeValueType["STRING"] = "str";
|
|
22
21
|
ModelAttributeValueType["INTEGER"] = "int";
|
|
@@ -34,18 +33,14 @@ export var ModelAttributeValueType;
|
|
|
34
33
|
ModelAttributeValueType["BOOLEAN"] = "bool";
|
|
35
34
|
ModelAttributeValueType["JSON"] = "json";
|
|
36
35
|
})(ModelAttributeValueType || (ModelAttributeValueType = {}));
|
|
37
|
-
|
|
38
36
|
export var ModelAttributeValueModeType;
|
|
39
|
-
|
|
40
37
|
(function (ModelAttributeValueModeType) {
|
|
41
38
|
ModelAttributeValueModeType["MULTIPLE_LINES"] = "multiple-lines";
|
|
42
39
|
ModelAttributeValueModeType["DEFAULT"] = "default";
|
|
43
40
|
ModelAttributeValueModeType["MARKDOWN"] = "markdown";
|
|
44
41
|
ModelAttributeValueModeType["URL"] = "url";
|
|
45
42
|
})(ModelAttributeValueModeType || (ModelAttributeValueModeType = {}));
|
|
46
|
-
|
|
47
43
|
export var FormControlTypeEnum;
|
|
48
|
-
|
|
49
44
|
(function (FormControlTypeEnum) {
|
|
50
45
|
FormControlTypeEnum["TEXT"] = "text";
|
|
51
46
|
FormControlTypeEnum["NUMBER"] = "number";
|
|
@@ -62,7 +57,6 @@ export var FormControlTypeEnum;
|
|
|
62
57
|
FormControlTypeEnum["URL"] = "url";
|
|
63
58
|
FormControlTypeEnum["CODE_EDITOR"] = "code_editor";
|
|
64
59
|
})(FormControlTypeEnum || (FormControlTypeEnum = {}));
|
|
65
|
-
|
|
66
60
|
export var boolOptions = [{
|
|
67
61
|
id: true,
|
|
68
62
|
text: "true"
|
|
@@ -79,18 +73,14 @@ export class ModelAttributeFormControl extends Component {
|
|
|
79
73
|
});
|
|
80
74
|
}
|
|
81
75
|
}
|
|
82
|
-
|
|
83
76
|
constructor(_props) {
|
|
84
77
|
super(_props);
|
|
85
|
-
|
|
86
78
|
_defineProperty(this, "computeFormControl", (attribute, id, type, isClusterType) => {
|
|
87
79
|
var formControlType = ModelAttributeFormControl.computeFormControlType(attribute, type, this.props.isSupportMultiStringValue);
|
|
88
80
|
var items = this.computeFormControlItems(attribute, isClusterType);
|
|
89
|
-
|
|
90
81
|
if (attribute.value.type === ModelAttributeValueType.BOOLEAN) {
|
|
91
82
|
items = boolOptions;
|
|
92
83
|
}
|
|
93
|
-
|
|
94
84
|
var result = {
|
|
95
85
|
type: formControlType,
|
|
96
86
|
items,
|
|
@@ -102,24 +92,19 @@ export class ModelAttributeFormControl extends Component {
|
|
|
102
92
|
unique: attribute.unique === "true",
|
|
103
93
|
pattern: ModelAttributeFormControl.computePattern(attribute)
|
|
104
94
|
};
|
|
105
|
-
|
|
106
95
|
if (result.type === FormControlTypeEnum.STRUCT) {
|
|
107
96
|
result["maxlength"] = 1;
|
|
108
97
|
}
|
|
109
|
-
|
|
110
98
|
result["placeholder"] = ModelAttributeFormControl.computePlaceholder(result);
|
|
111
99
|
return result;
|
|
112
100
|
});
|
|
113
|
-
|
|
114
101
|
_defineProperty(this, "onChange", event => {
|
|
115
102
|
var value;
|
|
116
|
-
|
|
117
103
|
if (event && event.target) {
|
|
118
104
|
value = event.target.value;
|
|
119
105
|
} else {
|
|
120
106
|
value = event;
|
|
121
107
|
}
|
|
122
|
-
|
|
123
108
|
var {
|
|
124
109
|
onChange
|
|
125
110
|
} = this.props;
|
|
@@ -128,60 +113,49 @@ export class ModelAttributeFormControl extends Component {
|
|
|
128
113
|
});
|
|
129
114
|
onChange && onChange(value);
|
|
130
115
|
});
|
|
131
|
-
|
|
132
116
|
_defineProperty(this, "handleDateChange", (date, dateString) => {
|
|
133
117
|
this.onChange(dateString || undefined);
|
|
134
118
|
});
|
|
135
|
-
|
|
136
119
|
_defineProperty(this, "validateJson", err => {
|
|
137
120
|
var _this$props$jsonValid, _this$props;
|
|
138
|
-
|
|
139
121
|
var error = some(err, ["type", "error"]);
|
|
140
122
|
(_this$props$jsonValid = (_this$props = this.props).jsonValidateCollection) === null || _this$props$jsonValid === void 0 ? void 0 : _this$props$jsonValid.call(_this$props, error);
|
|
141
123
|
this.setState({
|
|
142
124
|
showError: error
|
|
143
125
|
});
|
|
144
126
|
});
|
|
145
|
-
|
|
146
127
|
_defineProperty(this, "FormControlTypeMap", () => {
|
|
147
128
|
var _attribute$value, _attribute$value2;
|
|
148
|
-
|
|
149
129
|
var {
|
|
150
130
|
attribute
|
|
151
131
|
} = this.props;
|
|
152
|
-
|
|
153
132
|
var _this$state = this.state,
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
133
|
+
{
|
|
134
|
+
value,
|
|
135
|
+
formControl: {
|
|
136
|
+
type
|
|
137
|
+
},
|
|
138
|
+
errorMessage
|
|
139
|
+
} = _this$state,
|
|
140
|
+
restProps = _objectWithoutProperties(_this$state.formControl, _excluded);
|
|
141
|
+
// const unsupportText = `"${type}"类型暂时不支持编辑`;
|
|
162
142
|
// const unsupportText = i18n.t(
|
|
163
143
|
// `${NS_LIBS_CMDB_INSTANCES}:${K.TYPE_NO_SUPPORT_EDIT}`,
|
|
164
144
|
// { type }
|
|
165
145
|
// );
|
|
166
|
-
|
|
167
|
-
|
|
168
146
|
var jsonSchema;
|
|
169
|
-
|
|
170
147
|
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) {
|
|
171
148
|
var _attribute$value3;
|
|
172
|
-
|
|
173
149
|
jsonSchema = JSON.parse(attribute === null || attribute === void 0 ? void 0 : (_attribute$value3 = attribute.value) === null || _attribute$value3 === void 0 ? void 0 : _attribute$value3.regex);
|
|
174
150
|
}
|
|
175
|
-
|
|
176
151
|
switch (type) {
|
|
177
152
|
case FormControlTypeEnum.TEXT:
|
|
178
153
|
{
|
|
179
154
|
var {
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
155
|
+
pattern,
|
|
156
|
+
placeholder
|
|
157
|
+
} = restProps,
|
|
158
|
+
props = _objectWithoutProperties(restProps, _excluded2);
|
|
185
159
|
return /*#__PURE__*/React.createElement(Input, _extends({
|
|
186
160
|
value: value,
|
|
187
161
|
type: "text"
|
|
@@ -192,7 +166,6 @@ export class ModelAttributeFormControl extends Component {
|
|
|
192
166
|
style: this.props.style
|
|
193
167
|
}));
|
|
194
168
|
}
|
|
195
|
-
|
|
196
169
|
case FormControlTypeEnum.URL:
|
|
197
170
|
{
|
|
198
171
|
var {
|
|
@@ -208,14 +181,12 @@ export class ModelAttributeFormControl extends Component {
|
|
|
208
181
|
onChange: e => this.onChange(e)
|
|
209
182
|
});
|
|
210
183
|
}
|
|
211
|
-
|
|
212
184
|
case FormControlTypeEnum.NUMBER:
|
|
213
185
|
{
|
|
214
186
|
var {
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
187
|
+
pattern: _pattern
|
|
188
|
+
} = restProps,
|
|
189
|
+
props = _objectWithoutProperties(restProps, _excluded3);
|
|
219
190
|
return /*#__PURE__*/React.createElement(InputNumber, _extends({
|
|
220
191
|
value: value
|
|
221
192
|
}, props, {
|
|
@@ -224,7 +195,6 @@ export class ModelAttributeFormControl extends Component {
|
|
|
224
195
|
style: this.props.style
|
|
225
196
|
}));
|
|
226
197
|
}
|
|
227
|
-
|
|
228
198
|
case FormControlTypeEnum.CODE_EDITOR:
|
|
229
199
|
return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(CodeEditor, _extends({
|
|
230
200
|
value: value,
|
|
@@ -247,7 +217,6 @@ export class ModelAttributeFormControl extends Component {
|
|
|
247
217
|
color: "#fc5043"
|
|
248
218
|
}
|
|
249
219
|
}, i18n.t("".concat(NS_LIBS_CMDB_INSTANCES, ":").concat(K.NOT_MEET_JSON))));
|
|
250
|
-
|
|
251
220
|
case FormControlTypeEnum.TEXTAREA:
|
|
252
221
|
case FormControlTypeEnum.MARKDOWN:
|
|
253
222
|
{
|
|
@@ -260,7 +229,6 @@ export class ModelAttributeFormControl extends Component {
|
|
|
260
229
|
rows: 5
|
|
261
230
|
}));
|
|
262
231
|
}
|
|
263
|
-
|
|
264
232
|
case FormControlTypeEnum.STRUCT:
|
|
265
233
|
case FormControlTypeEnum.LEGACY_STRUCT:
|
|
266
234
|
return /*#__PURE__*/React.createElement(AddStruct, {
|
|
@@ -272,25 +240,23 @@ export class ModelAttributeFormControl extends Component {
|
|
|
272
240
|
style: this.props.style,
|
|
273
241
|
isCreate: this.props.isCreate
|
|
274
242
|
});
|
|
275
|
-
|
|
276
243
|
case FormControlTypeEnum.RADIO:
|
|
277
244
|
{
|
|
278
245
|
var {
|
|
279
246
|
items,
|
|
280
247
|
required: _required,
|
|
281
248
|
readOnly: _readOnly
|
|
282
|
-
} = restProps;
|
|
249
|
+
} = restProps;
|
|
283
250
|
|
|
251
|
+
// NODE: 对非必填单选为空的特殊处理 BY @robertman
|
|
284
252
|
var unselected = {
|
|
285
253
|
id: null,
|
|
286
254
|
// text: "暂不选择",
|
|
287
255
|
text: i18n.t("".concat(NS_LIBS_CMDB_INSTANCES, ":").concat(K.TEMPORARILY_NOT_CHOOSE))
|
|
288
256
|
};
|
|
289
|
-
|
|
290
257
|
if (!_required) {
|
|
291
258
|
items = [...items, unselected];
|
|
292
259
|
}
|
|
293
|
-
|
|
294
260
|
return /*#__PURE__*/React.createElement(Radio.Group, {
|
|
295
261
|
onChange: e => this.onChange(e),
|
|
296
262
|
value: value !== undefined ? value : unselected.id,
|
|
@@ -302,7 +268,6 @@ export class ModelAttributeFormControl extends Component {
|
|
|
302
268
|
key: String(item.id)
|
|
303
269
|
}, item.text)));
|
|
304
270
|
}
|
|
305
|
-
|
|
306
271
|
case FormControlTypeEnum.TAGS:
|
|
307
272
|
{
|
|
308
273
|
var {
|
|
@@ -322,18 +287,15 @@ export class ModelAttributeFormControl extends Component {
|
|
|
322
287
|
className: this.props.className
|
|
323
288
|
});
|
|
324
289
|
}
|
|
325
|
-
|
|
326
290
|
case FormControlTypeEnum.DATE:
|
|
327
291
|
case FormControlTypeEnum.DATETIME:
|
|
328
292
|
{
|
|
329
293
|
var dateConfig = {};
|
|
330
|
-
|
|
331
294
|
if (type === FormControlTypeEnum.DATETIME) {
|
|
332
295
|
dateConfig = {
|
|
333
296
|
showTime: true
|
|
334
297
|
};
|
|
335
298
|
}
|
|
336
|
-
|
|
337
299
|
var {
|
|
338
300
|
readOnly: _readOnly3,
|
|
339
301
|
placeholder: _placeholder3
|
|
@@ -350,7 +312,6 @@ export class ModelAttributeFormControl extends Component {
|
|
|
350
312
|
style: this.props.style
|
|
351
313
|
}));
|
|
352
314
|
}
|
|
353
|
-
|
|
354
315
|
case FormControlTypeEnum.SELECT:
|
|
355
316
|
{
|
|
356
317
|
var {
|
|
@@ -377,7 +338,6 @@ export class ModelAttributeFormControl extends Component {
|
|
|
377
338
|
}, text);
|
|
378
339
|
}));
|
|
379
340
|
}
|
|
380
|
-
|
|
381
341
|
default:
|
|
382
342
|
return (
|
|
383
343
|
/*#__PURE__*/
|
|
@@ -396,7 +356,6 @@ export class ModelAttributeFormControl extends Component {
|
|
|
396
356
|
);
|
|
397
357
|
}
|
|
398
358
|
});
|
|
399
|
-
|
|
400
359
|
var {
|
|
401
360
|
attribute: _attribute,
|
|
402
361
|
id: _id,
|
|
@@ -405,7 +364,6 @@ export class ModelAttributeFormControl extends Component {
|
|
|
405
364
|
objectId
|
|
406
365
|
} = _props;
|
|
407
366
|
var is = objectId;
|
|
408
|
-
|
|
409
367
|
try {
|
|
410
368
|
this.state = {
|
|
411
369
|
value: _value,
|
|
@@ -423,24 +381,20 @@ export class ModelAttributeFormControl extends Component {
|
|
|
423
381
|
};
|
|
424
382
|
}
|
|
425
383
|
}
|
|
426
|
-
|
|
427
384
|
static computePattern(attribute) {
|
|
428
385
|
try {
|
|
429
386
|
if (attribute.value.type !== ModelAttributeValueType.ENUM && attribute.value.type !== ModelAttributeValueType.ENUMS && attribute.value.regex !== undefined && attribute.value.regex !== null) {
|
|
430
387
|
// todo(jhuang): use `u` flag for compliance until https://github.com/angular/angular/pull/20819 is resolved
|
|
431
388
|
return new RegExp(attribute.value.regex, "u");
|
|
432
389
|
}
|
|
433
|
-
|
|
434
390
|
return undefined;
|
|
435
391
|
} catch (error) {
|
|
436
392
|
return undefined;
|
|
437
393
|
}
|
|
438
394
|
}
|
|
439
|
-
|
|
440
395
|
computeFormControlItems(attribute, isClusterType) {
|
|
441
396
|
if (attribute.value.type === ModelAttributeValueType.ENUM || attribute.value.type === ModelAttributeValueType.ENUMS) {
|
|
442
397
|
var _attribute$value$rege;
|
|
443
|
-
|
|
444
398
|
// The backend guys are notorious to use `regex` as enum candidates. 😢
|
|
445
399
|
return (_attribute$value$rege = attribute.value.regex) === null || _attribute$value$rege === void 0 ? void 0 : _attribute$value$rege.map(enumValue => ({
|
|
446
400
|
id: enumValue,
|
|
@@ -448,7 +402,6 @@ export class ModelAttributeFormControl extends Component {
|
|
|
448
402
|
}));
|
|
449
403
|
}
|
|
450
404
|
}
|
|
451
|
-
|
|
452
405
|
static computeFormControlType(attribute, type, isSupportMultiStringValue) {
|
|
453
406
|
switch (attribute.value.type) {
|
|
454
407
|
case ModelAttributeValueType.STRING:
|
|
@@ -456,134 +409,108 @@ export class ModelAttributeFormControl extends Component {
|
|
|
456
409
|
if (attribute.value.mode === ModelAttributeValueModeType.MULTIPLE_LINES) {
|
|
457
410
|
return FormControlTypeEnum.TEXTAREA;
|
|
458
411
|
}
|
|
459
|
-
|
|
460
412
|
if (attribute.value.mode === ModelAttributeValueModeType.MARKDOWN) {
|
|
461
413
|
return FormControlTypeEnum.MARKDOWN;
|
|
462
414
|
}
|
|
463
|
-
|
|
464
415
|
if (attribute.value.mode === ModelAttributeValueModeType.URL) {
|
|
465
416
|
return FormControlTypeEnum.URL;
|
|
466
417
|
}
|
|
467
418
|
}
|
|
468
|
-
|
|
469
419
|
/* falls through */
|
|
470
|
-
|
|
471
420
|
case ModelAttributeValueType.IP:
|
|
472
421
|
if (isSupportMultiStringValue) {
|
|
473
422
|
return FormControlTypeEnum.TAGS;
|
|
474
423
|
}
|
|
475
|
-
|
|
476
424
|
return FormControlTypeEnum.TEXT;
|
|
477
|
-
|
|
478
425
|
case ModelAttributeValueType.JSON:
|
|
479
426
|
// return FormControlTypeEnum.TEXTAREA;
|
|
480
427
|
return FormControlTypeEnum.CODE_EDITOR;
|
|
481
|
-
|
|
482
428
|
case ModelAttributeValueType.ENUM:
|
|
483
429
|
if (!attribute.value.regex || attribute.value.regex.length === 0) {
|
|
484
|
-
throw new Error(
|
|
430
|
+
throw new Error(
|
|
431
|
+
// "请在资源模型管理中添加枚举值, 属性: " + attribute.name
|
|
485
432
|
i18n.t("".concat(NS_LIBS_CMDB_INSTANCES, ":").concat(K.ENUM_ERROR_TIP), {
|
|
486
433
|
attribute: attribute.name
|
|
487
434
|
}));
|
|
488
435
|
}
|
|
489
|
-
|
|
490
436
|
if (attribute.value.regex && attribute.value.regex.length <= 5 && (!type || type === FormControlTypeEnum.RADIO)) {
|
|
491
437
|
return FormControlTypeEnum.RADIO;
|
|
492
438
|
}
|
|
493
|
-
|
|
494
439
|
return FormControlTypeEnum.SELECT;
|
|
495
|
-
|
|
496
440
|
case ModelAttributeValueType.INTEGER:
|
|
497
441
|
case ModelAttributeValueType.FLOAT:
|
|
498
442
|
return FormControlTypeEnum.NUMBER;
|
|
499
|
-
|
|
500
443
|
case ModelAttributeValueType.DATE:
|
|
501
444
|
return FormControlTypeEnum.DATE;
|
|
502
|
-
|
|
503
445
|
case ModelAttributeValueType.DATETIME:
|
|
504
446
|
return FormControlTypeEnum.DATETIME;
|
|
505
|
-
|
|
506
447
|
case ModelAttributeValueType.ARR:
|
|
507
448
|
return FormControlTypeEnum.TAGS;
|
|
508
|
-
|
|
509
449
|
case ModelAttributeValueType.STRUCT:
|
|
510
450
|
if (attribute.value.struct_define.length === 0) {
|
|
511
|
-
throw new Error(
|
|
451
|
+
throw new Error(
|
|
452
|
+
// "请在资源模型中添加结构体属性, 属性: " + attribute.name
|
|
512
453
|
i18n.t("".concat(NS_LIBS_CMDB_INSTANCES, ":").concat(K.STRUCT_ERROR_TIP), {
|
|
513
454
|
attribute: attribute.name
|
|
514
455
|
}));
|
|
515
456
|
}
|
|
516
|
-
|
|
517
457
|
return FormControlTypeEnum.LEGACY_STRUCT;
|
|
518
|
-
|
|
519
458
|
case ModelAttributeValueType.STRUCT_LIST:
|
|
520
459
|
if (attribute.value.struct_define.length === 0) {
|
|
521
|
-
throw new Error(
|
|
460
|
+
throw new Error(
|
|
461
|
+
// "请在资源模型中添加结构体属性, 属性: " + attribute.name
|
|
522
462
|
i18n.t("".concat(NS_LIBS_CMDB_INSTANCES, ":").concat(K.STRUCT_ERROR_TIP), {
|
|
523
463
|
attribute: attribute.name
|
|
524
464
|
}));
|
|
525
465
|
}
|
|
526
|
-
|
|
527
466
|
return FormControlTypeEnum.STRUCT;
|
|
528
|
-
|
|
529
467
|
case ModelAttributeValueType.BOOLEAN:
|
|
530
468
|
return FormControlTypeEnum.SELECT;
|
|
531
|
-
|
|
532
469
|
case ModelAttributeValueType.ENUMS:
|
|
533
470
|
return FormControlTypeEnum.SELECT;
|
|
534
|
-
|
|
535
471
|
default:
|
|
536
472
|
throw new Error(i18n.t("".concat(NS_LIBS_CMDB_INSTANCES, ":").concat(K.TYPE_NO_SUPPORT_EDIT), {
|
|
537
473
|
type: attribute.value.type
|
|
538
474
|
}));
|
|
539
475
|
}
|
|
540
476
|
}
|
|
541
|
-
|
|
542
477
|
static computePlaceholder(formControl) {
|
|
543
478
|
if (formControl.id === "ip" && formControl.name === "ip") {
|
|
544
479
|
return i18n.t("".concat(NS_LIBS_CMDB_INSTANCES, ":").concat(K.IP_PLACEHOLDER));
|
|
545
480
|
}
|
|
546
|
-
|
|
547
481
|
var placeholders = [];
|
|
548
|
-
|
|
549
482
|
switch (formControl.type) {
|
|
550
483
|
case FormControlTypeEnum.SELECT:
|
|
551
484
|
placeholders.push(i18n.t("".concat(NS_LIBS_CMDB_INSTANCES, ":").concat(K.CLICK_TO_SELECT)));
|
|
552
485
|
break;
|
|
553
|
-
|
|
554
486
|
case FormControlTypeEnum.DATETIME:
|
|
555
487
|
case FormControlTypeEnum.DATE:
|
|
556
488
|
placeholders.push(i18n.t("".concat(NS_LIBS_CMDB_INSTANCES, ":").concat(K.CLICK_TO_SELECT)));
|
|
557
489
|
break;
|
|
558
|
-
|
|
559
490
|
case FormControlTypeEnum.TAGS:
|
|
560
491
|
placeholders.push(i18n.t("".concat(NS_LIBS_CMDB_INSTANCES, ":").concat(K.ENTER_MULTIPLE_STRING_WITH_ENTER_KEY_AS_THE_SEPARATOR)));
|
|
561
492
|
break;
|
|
562
|
-
|
|
563
493
|
case FormControlTypeEnum.NUMBER:
|
|
564
494
|
placeholders.push(i18n.t("".concat(NS_LIBS_CMDB_INSTANCES, ":").concat(K.NUMBER_INPUT_PLACEHOLDER)));
|
|
565
495
|
break;
|
|
566
|
-
|
|
567
496
|
default:
|
|
568
497
|
placeholders.push(i18n.t("".concat(NS_LIBS_CMDB_INSTANCES, ":").concat(K.ADVANCE_SEARCH_SINGLE_INPUT_PLACEHOLDER)));
|
|
569
498
|
}
|
|
570
|
-
|
|
571
499
|
if (formControl.pattern !== undefined) {
|
|
572
500
|
// placeholders.push(`匹配正则 ${formControl.pattern}`);
|
|
573
501
|
placeholders.push(i18n.t("".concat(NS_LIBS_CMDB_INSTANCES, ":").concat(K.MATCHING_REGULAR), {
|
|
574
502
|
regexp: formControl.pattern
|
|
575
503
|
}));
|
|
576
504
|
}
|
|
577
|
-
|
|
578
505
|
if (formControl.unique) {
|
|
579
506
|
// placeholders.push(`${formControl.label}唯一不能重复`);
|
|
580
507
|
placeholders.push(i18n.t("".concat(NS_LIBS_CMDB_INSTANCES, ":").concat(K.UNIQUE_NO_REPEAT), {
|
|
581
508
|
label: formControl.label
|
|
582
509
|
}));
|
|
583
510
|
}
|
|
584
|
-
|
|
585
511
|
return placeholders.join(",");
|
|
586
512
|
}
|
|
513
|
+
|
|
587
514
|
/*computeFormControlAndCatchError = () => {
|
|
588
515
|
const { attribute, objectId } = this.props;
|
|
589
516
|
try {
|
|
@@ -602,10 +529,8 @@ export class ModelAttributeFormControl extends Component {
|
|
|
602
529
|
}
|
|
603
530
|
};*/
|
|
604
531
|
|
|
605
|
-
|
|
606
532
|
render() {
|
|
607
533
|
return /*#__PURE__*/React.createElement(React.Fragment, null, this.FormControlTypeMap());
|
|
608
534
|
}
|
|
609
|
-
|
|
610
535
|
}
|
|
611
536
|
//# sourceMappingURL=ModelAttributeFormControl.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ModelAttributeFormControl.js","names":["React","Component","i18n","NS_LIBS_CMDB_INSTANCES","K","DatePicker","Input","InputNumber","Radio","Select","AddStruct","AttributeFormControlUrl","computeDateFormat","clusterMap","CodeEditor","some","ModelAttributeValueType","ModelAttributeValueModeType","FormControlTypeEnum","boolOptions","id","text","ModelAttributeFormControl","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","jsonValidateCollection","showError","state","errorMessage","restProps","jsonSchema","regex","JSON","parse","TEXT","placeholder","e","className","style","URL","NUMBER","CODE_EDITOR","validateJson","display","color","t","NOT_MEET_JSON","TEXTAREA","MARKDOWN","LEGACY_STRUCT","formData","RADIO","unselected","TEMPORARILY_NOT_CHOOSE","map","item","String","TAGS","width","DATE","DATETIME","dateConfig","showTime","formater","format","handleDateChange","SELECT","newValue","multiSelect","is","message","_PLAIN_TEXT","ENUM","ENUMS","RegExp","enumValue","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":["React","Component","i18n","NS_LIBS_CMDB_INSTANCES","K","DatePicker","Input","InputNumber","Radio","Select","AddStruct","AttributeFormControlUrl","computeDateFormat","clusterMap","CodeEditor","some","ModelAttributeValueType","ModelAttributeValueModeType","FormControlTypeEnum","boolOptions","id","text","ModelAttributeFormControl","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","jsonValidateCollection","showError","state","errorMessage","restProps","jsonSchema","regex","JSON","parse","TEXT","placeholder","e","className","style","URL","NUMBER","CODE_EDITOR","validateJson","display","color","t","NOT_MEET_JSON","TEXTAREA","MARKDOWN","LEGACY_STRUCT","formData","RADIO","unselected","TEMPORARILY_NOT_CHOOSE","map","item","String","TAGS","width","DATE","DATETIME","dateConfig","showTime","formater","format","handleDateChange","SELECT","newValue","multiSelect","is","message","_PLAIN_TEXT","ENUM","ENUMS","RegExp","enumValue","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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"}
|