@steedos/standard-object-database 2.5.18-beta.1 → 2.5.18-beta.2
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/main/default/objectTranslations/object_fields.zh-CN/object_fields.zh-CN.objectTranslation.yml +4 -0
- package/main/default/objects/object_fields.object.yml +2 -0
- package/main/default/pages/design_field_layout.page.amis.json +2 -2
- package/main/default/pages/object_fields_form.page.amis.json +7 -0
- package/main/default/triggers/object_fields.trigger.js +22 -3
- package/package.json +2 -2
- package/package.service.js +11 -2
|
@@ -816,6 +816,7 @@ list_views:
|
|
|
816
816
|
- object
|
|
817
817
|
- sort_no
|
|
818
818
|
- modified
|
|
819
|
+
- is_system
|
|
819
820
|
sort:
|
|
820
821
|
- field_name: sort_no
|
|
821
822
|
order: asc
|
|
@@ -830,6 +831,7 @@ list_views:
|
|
|
830
831
|
- object
|
|
831
832
|
- sort_no
|
|
832
833
|
- modified
|
|
834
|
+
- is_system
|
|
833
835
|
label: 自定义
|
|
834
836
|
filters:
|
|
835
837
|
- ["is_system","<>",true]
|
|
@@ -60,7 +60,7 @@
|
|
|
60
60
|
"actions": [
|
|
61
61
|
{
|
|
62
62
|
"actionType": "custom",
|
|
63
|
-
"script": "//整理分组数据\nlet setting_groups = event.data.setting_groups;\nif (!_.find(setting_groups, { is_default: true })) {\n setting_groups.unshift({\n \"id\": \"未分组\",\n \"group_name\": \"未分组\",\n \"visible_on\": \"\",\n \"is_default\": true\n })\n}\nsetting_groups.forEach(function (group) {\n if (group.is_default) {\n group.group_name = \"未分组\";\n group.visible_on = \"\";\n }\n if (!group.id) {\n group.id = group.group_name;\n }\n})\n\n//整理字段与分组关系的数据\nconst fieldForGroup = {};\nlet oldGroup = event.data.fieldForGroup;\nsetting_groups.forEach(function (group) {\n if (_.has(oldGroup, group.id)) {\n fieldForGroup[group.id] = oldGroup[group.id];\n oldGroup = _.omit(oldGroup, group.id);\n } else {\n fieldForGroup[group.id] = [];\n }\n})\nif (oldGroup && !_.isEmpty(oldGroup)) {\n _.forEach(oldGroup, function (value, key) {\n fieldForGroup[\"未分组\"] = _.unionBy(fieldForGroup[\"未分组\"], value);\n });\n}\nconsole.log(\"setting_groups,fieldForGroup===>\", setting_groups, fieldForGroup);\n\ndoAction({\n actionType: 'setValue',\n componentId: 'service_field_design',\n args: {\n value: {\n groups: setting_groups,\n fieldForGroup\n }\n }\n});"
|
|
63
|
+
"script": "//整理分组数据\nlet setting_groups = event.data.setting_groups;\nif (!_.find(setting_groups, { is_default: true })) {\n setting_groups.unshift({\n \"id\": \"未分组\",\n \"group_name\": \"未分组\",\n \"visible_on\": \"\",\n \"is_default\": true\n })\n}\nsetting_groups.forEach(function (group) {\n if (group.is_default) {\n group.group_name = \"未分组\";\n group.visible_on = \"\";\n }\n if (!group.id) {\n group.id = group.group_name;\n }\n})\n\n//整理字段与分组关系的数据\nconst fieldForGroup = {};\nlet oldGroup = _.cloneDeep(event.data.fieldForGroup);\nsetting_groups.forEach(function (group) {\n if (_.has(oldGroup, group.id)) {\n fieldForGroup[group.id] = oldGroup[group.id];\n oldGroup = _.omit(oldGroup, group.id);\n } else {\n fieldForGroup[group.id] = [];\n }\n})\nif (oldGroup && !_.isEmpty(oldGroup)) {\n _.forEach(oldGroup, function (value, key) {\n fieldForGroup[\"未分组\"] = _.unionBy(fieldForGroup[\"未分组\"], value);\n });\n}\nconsole.log(\"setting_groups,fieldForGroup===>\", setting_groups, fieldForGroup);\n\ndoAction({\n actionType: 'setValue',\n componentId: 'service_field_design',\n args: {\n value: {\n groups: setting_groups,\n fieldForGroup\n }\n }\n});"
|
|
64
64
|
}
|
|
65
65
|
]
|
|
66
66
|
}
|
|
@@ -211,7 +211,7 @@
|
|
|
211
211
|
"actions": [
|
|
212
212
|
{
|
|
213
213
|
"actionType": "custom",
|
|
214
|
-
"script": "const newGroups = _.keys(event.data.value);\nconst lastGroups = _.map(context.props.data.groups, 'group_name');\nif (newGroups != lastGroups) {\n doAction({\n actionType: 'setValue',\n componentId: 'service_field_design',\n args: {\n value: {\n groups: field_groups = _.sortBy(context.props.data.groups, function (group) { return _.findIndex(newGroups, function (group_name) { return group.group_name === group_name; }); })\n }\n }\n });\n}\n"
|
|
214
|
+
"script": "const newGroups = _.keys(event.data.value);\nconst lastGroups = _.map(context.props.data.groups, 'group_name');\nif (newGroups != lastGroups) {\n doAction({\n actionType: 'setValue',\n componentId: 'service_field_design',\n args: {\n value: {\n fieldForGroup: event.data.value, groups: field_groups = _.sortBy(context.props.data.groups, function (group) { return _.findIndex(newGroups, function (group_name) { return group.group_name === group_name; }); })\n }\n }\n });\n}\n"
|
|
215
215
|
}
|
|
216
216
|
]
|
|
217
217
|
}
|
|
@@ -10,6 +10,13 @@
|
|
|
10
10
|
"enableTabs": true,
|
|
11
11
|
"mode": "edit",
|
|
12
12
|
"layout": "normal",
|
|
13
|
+
"fieldsExtend": {
|
|
14
|
+
"type": {
|
|
15
|
+
"amis": {
|
|
16
|
+
"searchable": true
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
},
|
|
13
20
|
"apiRequestAdaptor": "api.data.query = api.data.query.replace('object_fields__update', 'object_fields__upsert')",
|
|
14
21
|
"submitSuccActions": [
|
|
15
22
|
{
|
|
@@ -222,7 +222,7 @@ module.exports = {
|
|
|
222
222
|
if(!objectName && filters._id && filters._id.indexOf(".") > -1){
|
|
223
223
|
objectName = filters._id.split('.')[0];
|
|
224
224
|
}
|
|
225
|
-
if(objectName){
|
|
225
|
+
if(objectName){
|
|
226
226
|
let fields = await InternalData.getObjectFields(objectName, this.userId, filters.name ? true : false);
|
|
227
227
|
if(fields){
|
|
228
228
|
_.each(fields, (field)=>{
|
|
@@ -232,6 +232,20 @@ module.exports = {
|
|
|
232
232
|
this.data.values = objectql.getSteedosSchema().metadataDriver.find(this.data.values, this.query, this.spaceId);
|
|
233
233
|
}
|
|
234
234
|
}
|
|
235
|
+
|
|
236
|
+
const dbSystemField = _.find(this.data.values, (field)=>{return field.is_system && field._id && field._id.indexOf('.') == -1})
|
|
237
|
+
if(dbSystemField){
|
|
238
|
+
const obj = await InternalData.getObject(dbSystemField.object, this.userId)
|
|
239
|
+
if(obj){
|
|
240
|
+
this.data.values = _.map(this.data.values, (item)=>{
|
|
241
|
+
if(item.is_system){
|
|
242
|
+
return Object.assign(item, _.find(obj.fields, (field)=>{return field.name === item.name}))
|
|
243
|
+
}else{
|
|
244
|
+
return item;
|
|
245
|
+
}
|
|
246
|
+
})
|
|
247
|
+
}
|
|
248
|
+
}
|
|
235
249
|
},
|
|
236
250
|
beforeFind: async function(){
|
|
237
251
|
const { query } = this;
|
|
@@ -327,7 +341,12 @@ module.exports = {
|
|
|
327
341
|
}
|
|
328
342
|
if(["parent","children"].indexOf(dbDoc._name) > -1){
|
|
329
343
|
let isImportField = false;
|
|
330
|
-
if(doc._name
|
|
344
|
+
if((doc._name != undefined && doc._name !== dbDoc._name) ||
|
|
345
|
+
(doc.type != undefined && doc.type !== dbDoc.type) ||
|
|
346
|
+
(doc.object != undefined && doc.object !== dbDoc.object) ||
|
|
347
|
+
(doc.reference_to != undefined && doc.reference_to !== dbDoc.reference_to) ||
|
|
348
|
+
(doc.multiple != undefined && !!doc.multiple !== !!dbDoc.multiple) ||
|
|
349
|
+
(doc.omit != undefined && ("children" === dbDoc._name && doc.omit !== true))){
|
|
331
350
|
isImportField = true;
|
|
332
351
|
}
|
|
333
352
|
if(isImportField){
|
|
@@ -362,7 +381,7 @@ module.exports = {
|
|
|
362
381
|
// !!!暂不允许修改字段类型
|
|
363
382
|
if (_.has(doc, 'type')) {
|
|
364
383
|
const newFieldType = doc.type;
|
|
365
|
-
if (newFieldType && (latestDoc.type != newFieldType)) {
|
|
384
|
+
if (latestDoc.type && newFieldType && (latestDoc.type != newFieldType)) {
|
|
366
385
|
throw new Error('禁止修改字段类型。');
|
|
367
386
|
}
|
|
368
387
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@steedos/standard-object-database",
|
|
3
|
-
"version": "2.5.18-beta.
|
|
3
|
+
"version": "2.5.18-beta.2",
|
|
4
4
|
"main": "package.service.js",
|
|
5
5
|
"private": false,
|
|
6
6
|
"publishConfig": {
|
|
@@ -15,5 +15,5 @@
|
|
|
15
15
|
},
|
|
16
16
|
"repository": {},
|
|
17
17
|
"license": "MIT",
|
|
18
|
-
"gitHead": "
|
|
18
|
+
"gitHead": "0f48957d39df17d699a5177f473401362a9916bf"
|
|
19
19
|
}
|
package/package.service.js
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* @Author: sunhaolin@hotoa.com
|
|
3
3
|
* @Date: 1985-10-26 16:15:00
|
|
4
4
|
* @LastEditors: baozhoutao@steedos.com
|
|
5
|
-
* @LastEditTime: 2023-10-
|
|
5
|
+
* @LastEditTime: 2023-10-31 10:25:17
|
|
6
6
|
* @Description:
|
|
7
7
|
*/
|
|
8
8
|
"use strict";
|
|
@@ -57,6 +57,10 @@ module.exports = {
|
|
|
57
57
|
}
|
|
58
58
|
|
|
59
59
|
delete data.space;
|
|
60
|
+
|
|
61
|
+
if(data.is_system){
|
|
62
|
+
data = _.pick(data, ['label', 'icon', 'enable_files', 'enable_tasks', 'enable_notes', 'enable_events', 'enable_workflow', 'enable_instances', 'enable_inline_edit', 'enable_tree', 'enable_enhanced_lookup', 'description', 'is_deleted'])
|
|
63
|
+
}
|
|
60
64
|
|
|
61
65
|
const object = await this.getObject('objects');
|
|
62
66
|
const dbRecord = await object.directFind({filters: ['_id','=',id]});
|
|
@@ -98,6 +102,10 @@ module.exports = {
|
|
|
98
102
|
data = JSON.parse(JSON.stringify(doc));
|
|
99
103
|
}
|
|
100
104
|
delete data.space;
|
|
105
|
+
|
|
106
|
+
if(data.is_system){
|
|
107
|
+
data = _.pick(data, ['label', 'defaultValue', 'group', 'rows', 'sort_no', 'is_wide', 'index', 'sortable', 'searchable', 'filterable', 'visible_on', 'inlineHelpText', 'description', 'amis'])
|
|
108
|
+
}
|
|
101
109
|
|
|
102
110
|
const object = await this.getObject('object_fields');
|
|
103
111
|
if(id.indexOf('.') > 0){
|
|
@@ -119,7 +127,8 @@ module.exports = {
|
|
|
119
127
|
created_by: userSession.userId,
|
|
120
128
|
modified_by: userSession.userId,
|
|
121
129
|
company_id: userSession.company_id,
|
|
122
|
-
company_ids: userSession.company_ids
|
|
130
|
+
company_ids: userSession.company_ids,
|
|
131
|
+
is_system: true
|
|
123
132
|
}));
|
|
124
133
|
id = newId;
|
|
125
134
|
}
|