@steedos/standard-object-database 2.7.27-beta.6 → 2.7.28-beta.1
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/LICENSE.txt +12 -652
- package/main/default/client/object_fields.client.js +14 -1
- package/main/default/objectTranslations/objects.en/objects.en.objectTranslation.yml +4 -1
- package/main/default/objectTranslations/objects.zh-CN/objects.zh-CN.objectTranslation.yml +5 -2
- package/main/default/objects/object_fields/fields/auto_fill_mapping.$.to.field.yml +28 -13
- package/main/default/objects/object_fields/fields/is_name.field.yml +1 -1
- package/main/default/objects/object_fields/listviews/all.listview.yml +1 -0
- package/main/default/objects/object_functions/fields/script.field.yml +3 -2
- package/main/default/objects/object_triggers/fields/handler.field.yml +3 -2
- package/main/default/objects/objects/fields/datasource.field.yml +3 -4
- package/main/default/objects/objects/fields/enable_audit.field.yml +6 -0
- package/main/default/objects/objects/fields/enable_chatter.field.yml +1 -0
- package/main/default/objects/objects/fields/table_name.field.yml +6 -3
- package/main/default/objects/objects/fields/table_pk_generated.field.yml +8 -0
- package/main/default/objects/objects/fields/table_pk_is_name.field.yml +8 -0
- package/main/default/objects/objects/fields/table_pk_name.field.yml +12 -0
- package/main/default/objects/objects/fields/table_pk_type.field.yml +14 -0
- package/main/default/objects/objects/objects.object.yml +8 -0
- package/main/default/pages/object_detail.page.amis.json +2 -1
- package/main/default/pages/object_form.page.amis.json +1 -1
- package/main/default/server/object_fields.object.js +5 -2
- package/main/default/server/objects.object.js +163 -114
- package/main/default/services/suggestions.service.js +1 -0
- package/main/default/triggers/object_fields.trigger.js +8 -0
- package/main/default/triggers/objects.trigger.js +36 -0
- package/package.json +5 -5
|
@@ -243,12 +243,25 @@ Steedos.ObjectFieldManager.getSummaryFiltersOperation = function(field_type) {
|
|
|
243
243
|
flex-grow: 0;
|
|
244
244
|
}
|
|
245
245
|
|
|
246
|
+
.defaultValue_field .defaultValue_field_formula_hidden > .antd-Form-label {
|
|
247
|
+
display: none;
|
|
248
|
+
}
|
|
249
|
+
.defaultValue_field .defaultValue_field_formula_hidden > .antd-Form-value .antd-FormulaPicker .antd-InputBox {
|
|
250
|
+
display: none;
|
|
251
|
+
}
|
|
252
|
+
|
|
246
253
|
.defaultValue_field .defaultValue_field_formula_hidden {
|
|
247
254
|
margin-left: 0.5rem;
|
|
248
255
|
}
|
|
249
256
|
|
|
250
257
|
.defaultValue_field.steedos-defaultValue-html-edit .defaultValue_field_formula_hidden {
|
|
251
|
-
margin-left:
|
|
258
|
+
margin-left: 7rem;
|
|
259
|
+
}
|
|
260
|
+
|
|
261
|
+
@media (max-width: 767px) {
|
|
262
|
+
.defaultValue_field.steedos-defaultValue-html-edit .defaultValue_field_formula_hidden {
|
|
263
|
+
margin-left: 0rem;
|
|
264
|
+
}
|
|
252
265
|
}
|
|
253
266
|
</style>`);
|
|
254
267
|
$("head").append(styleCss);
|
|
@@ -19,7 +19,6 @@ fields:
|
|
|
19
19
|
description:
|
|
20
20
|
table_name:
|
|
21
21
|
label: Table Name
|
|
22
|
-
help: The default data source does not support this property
|
|
23
22
|
description:
|
|
24
23
|
icon:
|
|
25
24
|
label: Icon
|
|
@@ -78,6 +77,10 @@ fields:
|
|
|
78
77
|
label: Enable Instances
|
|
79
78
|
help:
|
|
80
79
|
description:
|
|
80
|
+
enable_audit:
|
|
81
|
+
label: Enable Audit
|
|
82
|
+
help:
|
|
83
|
+
description:
|
|
81
84
|
enable_chatter:
|
|
82
85
|
label: Enable Comments
|
|
83
86
|
help:
|
|
@@ -15,8 +15,7 @@ fields:
|
|
|
15
15
|
help: API 名称只能包含小写字母、数字,必须以字母开头,不能以下划线字符结尾或包含两个连续的下划线字符
|
|
16
16
|
description:
|
|
17
17
|
table_name:
|
|
18
|
-
label:
|
|
19
|
-
help: 默认数据源不支持此属性
|
|
18
|
+
label: 表名称
|
|
20
19
|
description:
|
|
21
20
|
icon:
|
|
22
21
|
label: 图标
|
|
@@ -75,6 +74,10 @@ fields:
|
|
|
75
74
|
label: 显示审批单子表
|
|
76
75
|
help:
|
|
77
76
|
description:
|
|
77
|
+
enable_audit:
|
|
78
|
+
label: 记录字段历史
|
|
79
|
+
help:
|
|
80
|
+
description:
|
|
78
81
|
enable_chatter:
|
|
79
82
|
label: 允许添加评论
|
|
80
83
|
help:
|
|
@@ -21,7 +21,8 @@ filtersFunction: !<tag:yaml.org,2002:js/function> |-
|
|
|
21
21
|
"email": ["email", "text", "textarea"]
|
|
22
22
|
};
|
|
23
23
|
var currentFilter = [];
|
|
24
|
-
|
|
24
|
+
//这里调用getUISchemaSync时传入true强制抓取最新schema是因为:设置自动填充时,如果from中选择了一个刚新建的字段,下面的fromField变量会取不到刚新建的字段,造成设置to属性会报错
|
|
25
|
+
var referenceObject = BuilderAmisObject && BuilderAmisObject.AmisLib && BuilderAmisObject.AmisLib.getUISchemaSync(values.reference_to, true);
|
|
25
26
|
var fromField = referenceObject && referenceObject.fields[values.from];
|
|
26
27
|
|
|
27
28
|
if (values.multiple) {
|
|
@@ -37,20 +38,34 @@ filtersFunction: !<tag:yaml.org,2002:js/function> |-
|
|
|
37
38
|
currentFilter.push(['multiple', '!=', true]);
|
|
38
39
|
}
|
|
39
40
|
}
|
|
40
|
-
if (fromField
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
if(
|
|
46
|
-
currentFilter.push([['
|
|
41
|
+
if (fromField) {
|
|
42
|
+
if(fromField.type == "select"){
|
|
43
|
+
//要注意下拉框字段类型有data_type属性,可能为boolean/number/text/null,默认值为null,表示text类型
|
|
44
|
+
var fromFieldDataType = fromField.data_type || "text";
|
|
45
|
+
currentFilter.push(['type', '=', 'select']);
|
|
46
|
+
if (fromFieldDataType === "text") {
|
|
47
|
+
currentFilter.push([['data_type', '=', 'text'], 'or', ['data_type', '=', null]]);
|
|
47
48
|
}
|
|
48
|
-
else{
|
|
49
|
-
|
|
50
|
-
|
|
49
|
+
else {
|
|
50
|
+
currentFilter.push(['data_type', '=', fromFieldDataType]);
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
else if (fromField.data_type) {
|
|
54
|
+
// 公式字段类型按data_type属性处理
|
|
55
|
+
currentFilter.push(['type', 'in', fieldFilters[fromField.data_type] || fromField.data_type.split()]);
|
|
56
|
+
} else {
|
|
57
|
+
currentFilter.push(['type', 'in', fieldFilters[fromField.type] || fromField.type.split()]);
|
|
58
|
+
if (fromField.type == "lookup" || fromField.type == "master_detail") {
|
|
59
|
+
if(fromField.reference_to === "users"){
|
|
60
|
+
currentFilter.push([['reference_to', '=', "users"],"or", ['reference_to', '=', "space_users"]]);
|
|
51
61
|
}
|
|
52
|
-
|
|
53
|
-
|
|
62
|
+
else{
|
|
63
|
+
if (fromField.reference_to) {
|
|
64
|
+
currentFilter.push(['reference_to', '=', fromField.reference_to]);
|
|
65
|
+
}
|
|
66
|
+
if (fromField.reference_to_field) {
|
|
67
|
+
currentFilter.push(['reference_to_field', '=', fromField.reference_to_field]);
|
|
68
|
+
}
|
|
54
69
|
}
|
|
55
70
|
}
|
|
56
71
|
}
|
|
@@ -6,4 +6,4 @@ hidden: false
|
|
|
6
6
|
label: Is Name
|
|
7
7
|
sort_no: 650
|
|
8
8
|
type: boolean
|
|
9
|
-
visible_on: ${ARRAYSOME(['text', 'textarea', 'autonumber', 'date', 'datetime', 'time', 'formula', 'lookup', 'master_detail'], item => item === type) && !multiple}
|
|
9
|
+
visible_on: ${ARRAYSOME(['text', 'textarea', 'autonumber', 'date', 'datetime', 'time', 'formula', 'lookup', 'master_detail', 'number', 'select'], item => item === type) && !multiple}
|
|
@@ -5,9 +5,10 @@ language: javascript
|
|
|
5
5
|
is_wide: true
|
|
6
6
|
required: true
|
|
7
7
|
defaultValue: |-
|
|
8
|
-
// global: {_:lodash, moment, validator, filters}
|
|
9
|
-
// objects
|
|
10
8
|
// ctx: {input, params, broker, getObject, getUser}
|
|
9
|
+
// objects: all steedos objects
|
|
10
|
+
// db: mongodb client instance
|
|
11
|
+
// npm: {_, moment, validator, filters}
|
|
11
12
|
editorDidMount: >-
|
|
12
13
|
if(window._registerCompletionItemProviderFunction){
|
|
13
14
|
return ;
|
|
@@ -5,10 +5,11 @@ language: javascript
|
|
|
5
5
|
is_wide: true
|
|
6
6
|
required: true
|
|
7
7
|
defaultValue: |-
|
|
8
|
-
// global: {_:lodash, moment, validator, filters}
|
|
9
8
|
// ctx
|
|
10
|
-
// objects
|
|
9
|
+
// objects: all steedos objects
|
|
10
|
+
// db: mongodb client instance
|
|
11
11
|
// services
|
|
12
|
+
// npm: {_, moment, validator, filters}
|
|
12
13
|
editorDidMount: >-
|
|
13
14
|
if(window._registerCompletionItemProviderTrigger){
|
|
14
15
|
return ;
|
|
@@ -1,13 +1,12 @@
|
|
|
1
1
|
name: datasource
|
|
2
2
|
amis:
|
|
3
|
-
disabledOn: '${is_system == true}'
|
|
3
|
+
disabledOn: '${is_system == true || !!recordId}'
|
|
4
4
|
defaultValue: default
|
|
5
5
|
filters: []
|
|
6
|
-
group: advanced
|
|
7
6
|
hidden: false
|
|
8
7
|
label: Datasource
|
|
9
8
|
reference_to: datasources
|
|
10
9
|
required: false
|
|
11
10
|
showIcon: false
|
|
12
|
-
sort_no:
|
|
13
|
-
type:
|
|
11
|
+
sort_no: 5
|
|
12
|
+
type: lookup
|
|
@@ -1,11 +1,14 @@
|
|
|
1
1
|
name: table_name
|
|
2
2
|
amis:
|
|
3
3
|
disabledOn: '${is_system == true}'
|
|
4
|
-
|
|
4
|
+
requiredOn: ${datasource != null &&(datasource != "meteor") &&(datasource != "default")}
|
|
5
|
+
group: 外部数据源
|
|
5
6
|
hidden: false
|
|
6
7
|
index: true
|
|
7
|
-
inlineHelpText: The default data source does not support this property
|
|
8
8
|
label: Table Name
|
|
9
9
|
searchable: true
|
|
10
|
-
sort_no:
|
|
10
|
+
sort_no: 51
|
|
11
11
|
type: text
|
|
12
|
+
description: 数据库中表的名称
|
|
13
|
+
visible_on: >-
|
|
14
|
+
${datasource != null &&(datasource != "meteor") &&(datasource != "default")}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
name: table_pk_name
|
|
2
|
+
group: 外部数据源
|
|
3
|
+
hidden: false
|
|
4
|
+
index: true
|
|
5
|
+
label: 主键字段名
|
|
6
|
+
searchable: true
|
|
7
|
+
sort_no: 191
|
|
8
|
+
type: text
|
|
9
|
+
required: true
|
|
10
|
+
description: 数据库表的主键字段名
|
|
11
|
+
visible_on: >-
|
|
12
|
+
${datasource != null &&(datasource != "meteor") &&(datasource != "default")}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
name: table_pk_type
|
|
2
|
+
group: 外部数据源
|
|
3
|
+
hidden: false
|
|
4
|
+
label: 主键值类型
|
|
5
|
+
sort_no: 192
|
|
6
|
+
type: select
|
|
7
|
+
required: true
|
|
8
|
+
options:
|
|
9
|
+
- label: 字符串
|
|
10
|
+
value: text
|
|
11
|
+
- label: 数值
|
|
12
|
+
value: number
|
|
13
|
+
visible_on: >-
|
|
14
|
+
${datasource != null &&(datasource != "meteor") &&(datasource != "default")}
|
|
@@ -3,7 +3,15 @@ custom: true
|
|
|
3
3
|
enable_dataloader: false
|
|
4
4
|
field_groups:
|
|
5
5
|
- group_name: switch
|
|
6
|
+
collapsed: true
|
|
7
|
+
- group_name: 外部数据源
|
|
8
|
+
collapsed: false
|
|
6
9
|
- group_name: advanced
|
|
10
|
+
collapsed: true
|
|
11
|
+
- group_name: 高级
|
|
12
|
+
collapsed: true
|
|
13
|
+
- group_name: 界面
|
|
14
|
+
collapsed: true
|
|
7
15
|
hidden: true
|
|
8
16
|
icon: orders
|
|
9
17
|
label: Objects
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
"objectApiName": "objects",
|
|
8
8
|
"recordId": "${recordId}",
|
|
9
9
|
"className": "",
|
|
10
|
-
"enableTabs":
|
|
10
|
+
"enableTabs": false,
|
|
11
11
|
"mode": "edit",
|
|
12
12
|
"layout": "horizontal",
|
|
13
13
|
"apiRequestAdaptor": "console.log('api.data.query===', api.data.query);api.data.query = api.data.query.replace('objects__update', 'objects__upsert')",
|
|
@@ -279,6 +279,9 @@ function onChangeName(oldName, newDoc){
|
|
|
279
279
|
//[Task]: 字段名允许输入大写字母 #6702
|
|
280
280
|
//只能包含字母、数字,必须以字母开头,不能以下划线字符结尾或包含两个连续的下划线字符 TODO 支持表格
|
|
281
281
|
function checkName(name){
|
|
282
|
+
if(name === '_id'){
|
|
283
|
+
return true;
|
|
284
|
+
}
|
|
282
285
|
var reg = new RegExp('^[a-zA-Z]([A-Za-z0-9]|_(?!_))*[A-Za-z0-9]$'); //支持表格类型的验证表达式(待优化.$.限制只能出现一次): new RegExp('^[a-z]([a-z0-9]|_(?!_))*(\\.\\$\\.\\w+)*[a-z0-9]$')
|
|
283
286
|
//TODO 撤销注释
|
|
284
287
|
if(!reg.test(name)){
|
|
@@ -300,8 +303,8 @@ function allowChangeObject(){
|
|
|
300
303
|
}
|
|
301
304
|
|
|
302
305
|
function checkNameField(nameField){
|
|
303
|
-
if(["text", "textarea", "autonumber", "date", "datetime", "time", "formula", "lookup", "master_detail"].indexOf(nameField.type) < 0){
|
|
304
|
-
throw new Error("
|
|
306
|
+
if(["text", "textarea", "autonumber", "date", "datetime", "time", "formula", "lookup", "master_detail", 'number', 'select'].indexOf(nameField.type) < 0){
|
|
307
|
+
throw new Error("只有文本、长文本、自动编号、日期、日期时间、时间、公式、相关表、数值这些类型的字段可以被设置为名称字段");
|
|
305
308
|
} else if(nameField.type == "lookup" && nameField.multiple) {
|
|
306
309
|
throw new Error("多选的相关表字段不可以被设置为名称字段");
|
|
307
310
|
}
|
|
@@ -304,121 +304,170 @@ let objectTriggers = {
|
|
|
304
304
|
on: "server",
|
|
305
305
|
when: "after.insert",
|
|
306
306
|
todo: function (userId, doc) {
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
307
|
+
if(doc.datasource != 'meteor' && doc.datasource != 'default' && doc.datasource){
|
|
308
|
+
let { table_pk_name, table_pk_type, table_pk_generated, table_pk_is_name } = doc;
|
|
309
|
+
|
|
310
|
+
if(!table_pk_name){
|
|
311
|
+
table_pk_name = 'id'
|
|
312
|
+
}
|
|
313
|
+
|
|
314
|
+
if(!table_pk_type){
|
|
315
|
+
table_pk_type = 'number'
|
|
316
|
+
}
|
|
317
|
+
|
|
318
|
+
Creator.getCollection("object_fields").insert({
|
|
319
|
+
object: doc.name,
|
|
320
|
+
owner: userId,
|
|
321
|
+
_name: "_id",
|
|
322
|
+
name: '_id',
|
|
323
|
+
label: "ID",
|
|
324
|
+
column_name: table_pk_name,
|
|
325
|
+
primary: true,
|
|
326
|
+
generated: table_pk_generated,
|
|
327
|
+
space: doc.space,
|
|
328
|
+
type: table_pk_type,
|
|
329
|
+
searchable: true,
|
|
330
|
+
filterable: true,
|
|
331
|
+
sort_no: 5,
|
|
332
|
+
is_name: table_pk_is_name,
|
|
333
|
+
locked: true
|
|
334
|
+
});
|
|
335
|
+
|
|
336
|
+
Creator.getCollection("object_listviews").insert({
|
|
337
|
+
name: "all",
|
|
338
|
+
label: "所有",
|
|
339
|
+
space: doc.space,
|
|
340
|
+
owner: userId,
|
|
341
|
+
object_name: doc.name,
|
|
342
|
+
shared_to: "space",
|
|
343
|
+
filter_scope: "space",
|
|
344
|
+
crud_mode: 'table',
|
|
345
|
+
columns: [{field: '_id'}],
|
|
346
|
+
"sort" : [
|
|
347
|
+
{
|
|
348
|
+
"field_name" : "_id",
|
|
349
|
+
"order" : "asc"
|
|
350
|
+
}
|
|
351
|
+
]
|
|
352
|
+
});
|
|
353
|
+
|
|
354
|
+
}else{
|
|
355
|
+
//新增object时,默认新建一个name字段
|
|
356
|
+
Creator.getCollection("object_fields").insert({
|
|
357
|
+
object: doc.name,
|
|
358
|
+
owner: userId,
|
|
359
|
+
_name: "name",
|
|
360
|
+
label: "名称",
|
|
361
|
+
space: doc.space,
|
|
362
|
+
type: "text",
|
|
363
|
+
required: true,
|
|
364
|
+
index: true,
|
|
365
|
+
searchable: true,
|
|
366
|
+
filterable: true,
|
|
367
|
+
sort_no: 10
|
|
368
|
+
});
|
|
369
|
+
Creator.getCollection("object_fields").insert({
|
|
370
|
+
object: doc.name,
|
|
371
|
+
owner: userId,
|
|
372
|
+
_name: "created",
|
|
373
|
+
name: "created",
|
|
374
|
+
label: "创建时间",
|
|
375
|
+
space: doc.space,
|
|
376
|
+
type: "datetime",
|
|
377
|
+
group: '',
|
|
378
|
+
sort_no: 9999,
|
|
379
|
+
readonly: true,
|
|
380
|
+
disabled: true,
|
|
381
|
+
sortable: true
|
|
382
|
+
});
|
|
383
|
+
Creator.getCollection("object_fields").insert({
|
|
384
|
+
object: doc.name,
|
|
385
|
+
owner: userId,
|
|
386
|
+
_name: "created_by",
|
|
387
|
+
name: "created_by",
|
|
388
|
+
label: "创建人",
|
|
389
|
+
space: doc.space,
|
|
390
|
+
type: "lookup",
|
|
391
|
+
reference_to: 'users',
|
|
392
|
+
group: '',
|
|
393
|
+
sort_no: 9999,
|
|
394
|
+
readonly: true,
|
|
395
|
+
disabled: true,
|
|
396
|
+
});
|
|
397
|
+
Creator.getCollection("object_fields").insert({
|
|
398
|
+
object: doc.name,
|
|
399
|
+
owner: userId,
|
|
400
|
+
_name: "modified",
|
|
401
|
+
name: "modified",
|
|
402
|
+
label: "修改时间",
|
|
403
|
+
space: doc.space,
|
|
404
|
+
type: "datetime",
|
|
405
|
+
group: '',
|
|
406
|
+
sort_no: 9999,
|
|
407
|
+
readonly: true,
|
|
408
|
+
disabled: true,
|
|
409
|
+
sortable: true
|
|
410
|
+
});
|
|
411
|
+
Creator.getCollection("object_fields").insert({
|
|
412
|
+
object: doc.name,
|
|
413
|
+
owner: userId,
|
|
414
|
+
_name: "modified_by",
|
|
415
|
+
name: "modified_by",
|
|
416
|
+
label: "修改人",
|
|
417
|
+
space: doc.space,
|
|
418
|
+
type: "lookup",
|
|
419
|
+
reference_to: 'users',
|
|
420
|
+
group: '',
|
|
421
|
+
sort_no: 9999,
|
|
422
|
+
readonly: true,
|
|
423
|
+
disabled: true,
|
|
424
|
+
});
|
|
425
|
+
// Creator.getCollection("object_fields").insert({
|
|
426
|
+
// object: doc.name,
|
|
427
|
+
// owner: userId,
|
|
428
|
+
// _name: "owner",
|
|
429
|
+
// label: "所有者",
|
|
430
|
+
// space: doc.space,
|
|
431
|
+
// type: "lookup",
|
|
432
|
+
// reference_to: "users",
|
|
433
|
+
// sortable: true,
|
|
434
|
+
// index: true,
|
|
435
|
+
// defaultValue: "{userId}",
|
|
436
|
+
// omit: true,
|
|
437
|
+
// hidden: true
|
|
438
|
+
// });
|
|
439
|
+
Creator.getCollection("object_listviews").insert({
|
|
440
|
+
name: "all",
|
|
441
|
+
label: "所有",
|
|
442
|
+
space: doc.space,
|
|
443
|
+
owner: userId,
|
|
444
|
+
object_name: doc.name,
|
|
445
|
+
shared_to: "space",
|
|
446
|
+
filter_scope: "space",
|
|
447
|
+
crud_mode: 'table',
|
|
448
|
+
columns: [{field: 'name'}, {field: 'created_by'}, {field: 'created'}],
|
|
449
|
+
"sort" : [
|
|
450
|
+
{
|
|
451
|
+
"field_name" : "created",
|
|
452
|
+
"order" : "desc"
|
|
453
|
+
}
|
|
454
|
+
]
|
|
455
|
+
});
|
|
456
|
+
Creator.getCollection("object_listviews").insert({
|
|
457
|
+
name: "recent",
|
|
458
|
+
label: "最近查看",
|
|
459
|
+
space: doc.space,
|
|
460
|
+
owner: userId,
|
|
461
|
+
object_name: doc.name,
|
|
462
|
+
shared_to: "space",
|
|
463
|
+
filter_scope: "space",
|
|
464
|
+
crud_mode: 'table',
|
|
465
|
+
columns: [{field: 'name'}]
|
|
466
|
+
});
|
|
467
|
+
}
|
|
420
468
|
initObjectPermission(userId, doc);
|
|
421
469
|
}
|
|
470
|
+
|
|
422
471
|
},
|
|
423
472
|
"before.update.server.objects": {
|
|
424
473
|
on: "server",
|
|
@@ -467,7 +516,7 @@ let objectTriggers = {
|
|
|
467
516
|
var set = modifier.$set || {}
|
|
468
517
|
if((set.name || set.datasource) && this.previous.name != doc.name){
|
|
469
518
|
onChangeObjectName(this.previous.name, doc);
|
|
470
|
-
}
|
|
519
|
+
};
|
|
471
520
|
}
|
|
472
521
|
},
|
|
473
522
|
"before.remove.server.objects": {
|
|
@@ -124,6 +124,7 @@ module.exports = {
|
|
|
124
124
|
directDelete(id: SteedosIDType, userSession?: SteedosUserSession): Promise<any>;
|
|
125
125
|
count(query: SteedosQueryOptions, userSession?: SteedosUserSession): Promise<any>;
|
|
126
126
|
_makeNewID(): Promise<any>;
|
|
127
|
+
sql(sql: string, param?: any): Promise<any>;
|
|
127
128
|
}
|
|
128
129
|
${objectsTypes}
|
|
129
130
|
${servicesTypes}
|