@steedos/service-core-objects 3.0.0-beta.13 → 3.0.0-beta.132

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.
Files changed (195) hide show
  1. package/main/default/applications/.gitkeep +0 -0
  2. package/main/default/applications/admin.app.yml +179 -0
  3. package/main/default/client/{topic.client.js → css.client.js} +2 -1
  4. package/main/default/client/socket.client.js +118 -0
  5. package/main/default/objectTranslations/announcements.en/announcements.en.objectTranslation.yml +37 -0
  6. package/main/default/objectTranslations/announcements.zh-CN/announcements.zh-CN.objectTranslation.yml +37 -0
  7. package/main/default/objectTranslations/audit_records.en/audit_records.en.objectTranslation.yml +1 -1
  8. package/main/default/objectTranslations/base.en/base.en.objectTranslation.yml +6 -0
  9. package/main/default/objectTranslations/base.zh-CN/base.zh-CN.objectTranslation.yml +6 -0
  10. package/main/default/objectTranslations/cms_files.en/cms_files.en.objectTranslation.yml +7 -1
  11. package/main/default/objectTranslations/cms_files.zh-CN/cms_files.zh-CN.objectTranslation.yml +7 -1
  12. package/main/default/objectTranslations/company.en/company.en.objectTranslation.yml +6 -1
  13. package/main/default/objectTranslations/company.zh-CN/company.zh-CN.objectTranslation.yml +5 -0
  14. package/main/default/objectTranslations/datasources.zh-CN/datasources.zh-CN.objectTranslation.yml +1 -1
  15. package/main/default/objectTranslations/license.en/license.en.objectTranslation.yml +1 -1
  16. package/main/default/objectTranslations/logs.en/logs.en.objectTranslation.yml +1 -1
  17. package/main/default/objectTranslations/object_actions.en/object_actions.en.objectTranslation.yml +5 -0
  18. package/main/default/objectTranslations/object_actions.zh-CN/object_actions.zh-CN.objectTranslation.yml +6 -1
  19. package/main/default/objectTranslations/object_fields.en/object_fields.en.objectTranslation.yml +4 -8
  20. package/main/default/objectTranslations/object_fields.zh-CN/object_fields.zh-CN.objectTranslation.yml +4 -4
  21. package/main/default/objectTranslations/object_functions.en/object_functions.en.objectTranslation.yml +1 -5
  22. package/main/default/objectTranslations/object_functions.zh-CN/object_functions.zh-CN.objectTranslation.yml +2 -6
  23. package/main/default/objectTranslations/object_layouts.zh-CN/object_layouts.zh-CN.objectTranslation.yml +1 -1
  24. package/main/default/objectTranslations/object_listviews.en/object_listviews.en.objectTranslation.yml +3 -1
  25. package/main/default/objectTranslations/object_listviews.zh-CN/object_listviews.zh-CN.objectTranslation.yml +5 -3
  26. package/main/default/objectTranslations/object_triggers.en/object_triggers.en.objectTranslation.yml +9 -0
  27. package/main/default/objectTranslations/object_triggers.zh-CN/object_triggers.zh-CN.objectTranslation.yml +9 -0
  28. package/main/default/objectTranslations/object_validation_rules.en/object_validation_rules.en.objectTranslation.yml +3 -3
  29. package/main/default/objectTranslations/object_webhooks.en/object_webhooks.en.objectTranslation.yml +12 -6
  30. package/main/default/objectTranslations/object_webhooks.zh-CN/object_webhooks.zh-CN.objectTranslation.yml +12 -6
  31. package/main/default/objectTranslations/objects.en/objects.en.objectTranslation.yml +44 -19
  32. package/main/default/objectTranslations/objects.zh-CN/objects.zh-CN.objectTranslation.yml +59 -25
  33. package/main/default/objectTranslations/operation_logs.en/operation_logs.en.objectTranslation.yml +66 -0
  34. package/main/default/objectTranslations/operation_logs.zh-CN/operation_logs.zh-CN.objectTranslation.yml +66 -0
  35. package/main/default/objectTranslations/organizations.en/organizations.en.objectTranslation.yml +1 -1
  36. package/main/default/objectTranslations/process_delegation_rules.en/process_delegation_rules.en.objectTranslation.yml +1 -1
  37. package/main/default/objectTranslations/sessions.en/sessions.en.objectTranslation.yml +1 -1
  38. package/main/default/objectTranslations/settings.en/settings.en.objectTranslation.yml +10 -1
  39. package/main/default/objectTranslations/settings.zh-CN/settings.zh-CN.objectTranslation.yml +9 -0
  40. package/main/default/objectTranslations/space_users.en/space_users.en.objectTranslation.yml +18 -1
  41. package/main/default/objectTranslations/space_users.zh-CN/space_users.zh-CN.objectTranslation.yml +17 -1
  42. package/main/default/objects/_base/base.client.js +124 -124
  43. package/main/default/objects/_base/base.object.js +502 -320
  44. package/main/default/objects/_base/base.object.yml +8 -0
  45. package/main/default/objects/_base/base.recordFieldAudit.trigger.js +3 -0
  46. package/main/default/objects/announcements.object.yml +68 -0
  47. package/main/default/objects/api_keys/buttons/copy.button.yml +1 -1
  48. package/main/default/objects/apps/apps.object.yml +25 -69
  49. package/main/default/objects/apps/buttons/disable.button.js +9 -7
  50. package/main/default/objects/apps/buttons/enable.button.js +9 -7
  51. package/main/default/objects/audit_records.object.yml +2 -2
  52. package/main/default/objects/cms_files/buttons/download.button.yml +1 -1
  53. package/main/default/objects/cms_files/cms_files.object.yml +7 -6
  54. package/main/default/objects/company/buttons/updateOrgs.button.yml +3 -6
  55. package/main/default/objects/company/company.object.yml +1 -1
  56. package/main/default/objects/favorites.object.yml +65 -0
  57. package/main/default/objects/keyvalue/keyvalue.object.yml +1 -0
  58. package/main/default/objects/logs/logs.object.yml +2 -1
  59. package/main/default/objects/object_actions/buttons/showDesign.button.js +5 -1
  60. package/main/default/objects/object_actions/fields/is_system.field.yml +1 -1
  61. package/main/default/objects/object_fields/buttons/recomputeFormulaValues.button.js +6 -2
  62. package/main/default/objects/object_fields/buttons/recomputeSummaryValues.button.js +6 -2
  63. package/main/default/objects/object_fields/buttons/standard_new.button.js +1 -1
  64. package/main/default/objects/object_fields/fields/_name.field.yml +1 -0
  65. package/main/default/objects/object_fields/fields/auto_fill_mapping.$.to.field.yml +28 -13
  66. package/main/default/objects/object_fields/fields/description.field.yml +11 -2
  67. package/main/default/objects/object_fields/fields/name.field.yml +1 -0
  68. package/main/default/objects/object_fields/fields/options.field.yml +1 -0
  69. package/main/default/objects/object_fields/fields/required.field.yml +1 -1
  70. package/main/default/objects/object_fields/fields/summary_filters.$.field.field.yml +16 -9
  71. package/main/default/objects/object_fields/fields/summary_filters.$.operation.field.yml +26 -29
  72. package/main/default/objects/object_fields/listviews/all.listview.yml +3 -1
  73. package/main/default/objects/object_fields/listviews/customize.listview.yml +3 -1
  74. package/main/default/objects/object_functions/buttons/open_api.button.yml +1 -3
  75. package/main/default/objects/object_functions/fields/script.field.yml +3 -2
  76. package/main/default/objects/object_functions/listviews/all.listview.yml +0 -1
  77. package/main/default/objects/object_functions/listviews/customize.listview.yml +0 -1
  78. package/main/default/objects/object_functions/object_functions.object.yml +1 -1
  79. package/main/default/objects/object_listviews/buttons/customize.button.js +36 -30
  80. package/main/default/objects/object_listviews/buttons/showDesign.button.js +6 -6
  81. package/main/default/objects/object_listviews/fields/adaptor.field.yml +2 -2
  82. package/main/default/objects/object_listviews/fields/crudDataFilter.field.yml +10 -0
  83. package/main/default/objects/object_listviews/fields/enable_amis_schema.field.yml +1 -0
  84. package/main/default/objects/object_listviews/fields/extra_columns.field.yml +18 -0
  85. package/main/default/objects/object_listviews/fields/requestAdaptor.field.yml +2 -2
  86. package/main/default/objects/object_listviews/object_listviews.object.yml +1 -1
  87. package/main/default/objects/object_triggers/fields/handler.field.yml +3 -2
  88. package/main/default/objects/object_webhooks/fields/fields.field.yml +1 -1
  89. package/main/default/objects/object_webhooks/object_webhooks.object.yml +2 -1
  90. package/main/default/objects/objects/buttons/custom.button.js +6 -35
  91. package/main/default/objects/objects/buttons/custom.button.yml +81 -1
  92. package/main/default/objects/objects/buttons/delete_object.button.yml +5 -4
  93. package/main/default/objects/objects/buttons/design_fields_layout.button.js +5 -2
  94. package/main/default/objects/objects/buttons/design_fields_layout.button.yml +1 -1
  95. package/main/default/objects/objects/buttons/reset.button.yml +6 -5
  96. package/main/default/objects/objects/buttons/show_object.button.js +2 -29
  97. package/main/default/objects/objects/fields/compactLayouts.field.yml +2 -2
  98. package/main/default/objects/objects/fields/enable_audit.field.yml +5 -0
  99. package/main/default/objects/objects/fields/enable_chatter.field.yml +5 -4
  100. package/main/default/objects/objects/fields/enable_dataloader.field.yml +0 -1
  101. package/main/default/objects/objects/fields/enable_enhanced_lookup.field.yml +0 -4
  102. package/main/default/objects/objects/fields/enable_events.field.yml +2 -2
  103. package/main/default/objects/objects/fields/enable_files.field.yml +1 -1
  104. package/main/default/objects/objects/fields/enable_form_tabs.field.yml +1 -2
  105. package/main/default/objects/objects/fields/enable_inline_edit.field.yml +1 -1
  106. package/main/default/objects/objects/fields/enable_instances.field.yml +2 -2
  107. package/main/default/objects/objects/fields/enable_lock_detail.field.yml +0 -1
  108. package/main/default/objects/objects/fields/enable_notes.field.yml +2 -2
  109. package/main/default/objects/objects/fields/enable_tasks.field.yml +1 -1
  110. package/main/default/objects/objects/fields/enable_tree.field.yml +0 -1
  111. package/main/default/objects/objects/fields/field_groups.field.yml +1 -1
  112. package/main/default/objects/objects/fields/in_development.field.yml +0 -1
  113. package/main/default/objects/objects/fields/is_deleted.field.yml +1 -0
  114. package/main/default/objects/objects/fields/name.field.yml +1 -4
  115. package/main/default/objects/objects/fields/table_name.field.yml +0 -1
  116. package/main/default/objects/objects/listviews/all.listview.yml +4 -1
  117. package/main/default/objects/objects/listviews/customize.listview.yml +3 -1
  118. package/main/default/objects/objects/listviews/deleted.listview.yml +3 -1
  119. package/main/default/objects/objects/listviews/metadata.listview.yml +3 -1
  120. package/main/default/objects/objects/listviews/system.listview.yml +3 -1
  121. package/main/default/objects/objects/objects.object.yml +1 -1
  122. package/main/default/objects/permission_set/buttons/copy.button.yml +114 -0
  123. package/main/default/objects/permission_set/buttons/set_permission_tabs.button.yml +166 -0
  124. package/main/default/objects/{permission_set.object.yml → permission_set/permission_set.object.yml} +1 -5
  125. package/main/default/objects/queue_import.object.yml +16 -1
  126. package/main/default/objects/roles.object.yml +1 -5
  127. package/main/default/objects/sessions.object.yml +1 -1
  128. package/main/default/objects/space_users/buttons/clear_login_tokens.button.yml +4 -7
  129. package/main/default/objects/space_users/buttons/disable.button.yml +3 -7
  130. package/main/default/objects/space_users/buttons/enable.button.yml +3 -7
  131. package/main/default/objects/space_users/buttons/lockout.button.yml +3 -7
  132. package/main/default/objects/space_users/buttons/standard_edit.button.js +0 -1
  133. package/main/default/objects/space_users/buttons/unlock.button.yml +3 -7
  134. package/main/default/objects/space_users/fields/locale.field.yml +2 -1
  135. package/main/default/objects/space_users/fields/password_expired.field.yml +1 -1
  136. package/main/default/pages/about.page.amis.json +21 -4
  137. package/main/default/pages/ai_chatbots_detail.page.amis.json +393 -0
  138. package/main/default/pages/ai_chatbots_detail.page.yml +13 -0
  139. package/main/default/pages/apps_form.page.amis.json +334 -0
  140. package/main/default/pages/apps_form.page.yml +12 -0
  141. package/main/default/pages/cfs_files_record_preview.page.amis.json +4 -4
  142. package/main/default/pages/cms_files_preview.page.amis.json +25 -6
  143. package/main/default/pages/object_detail.page.amis.json +17 -11
  144. package/main/default/pages/object_fields_form.page.amis.json +1 -12
  145. package/main/default/pages/object_form.page.amis.json +1 -1
  146. package/main/default/pages/object_validation_rules_form.page.amis.json +38 -0
  147. package/main/default/pages/object_validation_rules_form.page.yml +13 -0
  148. package/main/default/pages/object_webhooks_form.page.amis.json +1 -1
  149. package/main/default/pages/organizations.page.amis.json +0 -4
  150. package/main/default/pages/space_users_list.page.amis.json +134 -19
  151. package/main/default/routes/amis_button_design.ejs +4 -1
  152. package/main/default/routes/amis_button_design.router.js +4 -3
  153. package/main/default/routes/importRecords.router.js +87 -0
  154. package/main/default/routes/notifications.router.js +113 -0
  155. package/main/default/routes/object_fields_design.ejs +23 -9
  156. package/main/default/routes/object_fields_design.router.js +5 -4
  157. package/main/default/services/app-design.service.js +2 -1
  158. package/main/default/services/notifications.service.js +190 -0
  159. package/main/default/services/spaces.service.js +1 -1
  160. package/main/default/services/users.service.js +6 -3
  161. package/main/default/tabs/admin_bull_dashboard.tab.yml +22 -0
  162. package/main/default/tabs/{admin_process_delegation_rules.tab.yml → admin_object_functions.tab.yml} +5 -8
  163. package/main/default/tabs/admin_swagger.tab.yml +22 -0
  164. package/main/default/translations/en.translation.yml +5 -4
  165. package/main/default/translations/zh-CN.translation.yml +3 -2
  166. package/main/default/triggers/objects_set_default_object_properties_trigger.trigger.yml +9 -6
  167. package/main/default/triggers/queue_import.trigger.js +16 -0
  168. package/main/default/triggers/space_users.trigger.js +3 -3
  169. package/package.json +4 -4
  170. package/package.service.js +3 -2
  171. package/public/platform.css +67 -0
  172. package/public/topic.css +17 -37
  173. package/main/default/objectTranslations/flow_positions.en/flow_positions.en.objectTranslation.yml +0 -19
  174. package/main/default/objectTranslations/flow_positions.zh-CN/flow_positions.zh-CN.objectTranslation.yml +0 -19
  175. package/main/default/objectTranslations/flow_roles.en/flow_roles.en.objectTranslation.yml +0 -11
  176. package/main/default/objectTranslations/flow_roles.zh-CN/flow_roles.zh-CN.objectTranslation.yml +0 -14
  177. package/main/default/objectTranslations/flows.en/flows.en.objectTranslation.yml +0 -317
  178. package/main/default/objectTranslations/flows.zh-CN/flows.zh-CN.objectTranslation.yml +0 -314
  179. package/main/default/objectTranslations/forms.en/forms.en.objectTranslation.yml +0 -191
  180. package/main/default/objectTranslations/forms.zh-CN/forms.zh-CN.objectTranslation.yml +0 -194
  181. package/main/default/objectTranslations/instances.en/instances.en.objectTranslation.yml +0 -155
  182. package/main/default/objectTranslations/instances.zh-CN/instances.zh-CN.objectTranslation.yml +0 -155
  183. package/main/default/objects/apps/buttons/amis_edit.button.yml +0 -39
  184. package/main/default/objects/apps/buttons/amis_new.button.yml +0 -43
  185. package/main/default/objects/flows/flows.object.yml +0 -1089
  186. package/main/default/objects/object_actions/buttons/customize.button.js +0 -33
  187. package/main/default/objects/object_actions/buttons/customize.button.yml +0 -3
  188. package/main/default/objects/object_functions/fields/is_rest.field.yml +0 -5
  189. package/main/default/objects/object_listviews/buttons/copy.button.js +0 -58
  190. package/main/default/objects/object_listviews/buttons/copy.button.yml +0 -3
  191. package/main/default/objects/object_listviews/buttons/customize.button.yml +0 -3
  192. package/main/default/objects/objects/buttons/design_field_layout.button.js +0 -28
  193. package/main/default/objects/objects/buttons/design_field_layout.button.yml +0 -5
  194. package/main/default/objects/process_definition.object.yml +0 -323
  195. package/main/default/objects/space_users/fields/zoom.field.yml +0 -16
@@ -21,7 +21,8 @@ filtersFunction: !<tag:yaml.org,2002:js/function> |-
21
21
  "email": ["email", "text", "textarea"]
22
22
  };
23
23
  var currentFilter = [];
24
- var referenceObject = BuilderAmisObject && BuilderAmisObject.AmisLib && BuilderAmisObject.AmisLib.getUISchemaSync(values.reference_to);
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 && fromField.data_type) {
41
- currentFilter.push(['type', 'in', fieldFilters[fromField.data_type] || fromField.data_type.split()]);
42
- }else if (fromField) {
43
- currentFilter.push(['type', 'in', fieldFilters[fromField.type] || fromField.type.split()]);
44
- if (fromField.type == "lookup" || fromField.type == "master_detail") {
45
- if(fromField.reference_to === "users"){
46
- currentFilter.push([['reference_to', '=', "users"],"or", ['reference_to', '=', "space_users"]]);
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
- if (fromField.reference_to) {
50
- currentFilter.push(['reference_to', '=', fromField.reference_to]);
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
- if (fromField.reference_to_field) {
53
- currentFilter.push(['reference_to_field', '=', fromField.reference_to_field]);
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
  }
@@ -2,6 +2,15 @@ name: description
2
2
  hidden: false
3
3
  is_wide: true
4
4
  label: Description
5
- sort_no: 340
5
+ sort_no: 380
6
6
  type: textarea
7
- inlineHelpText: 在字段下方增加解释说明
7
+ inlineHelpText: 在字段下方增加解释说明
8
+ amis:
9
+ type: input-rich-text
10
+ name: rich
11
+ options:
12
+ menubar: false
13
+ height: 200
14
+ plugins:
15
+ - lists
16
+ toolbar: undo redo | formatselect | bold italic forecolor backcolor | alignleft aligncenter alignright alignjustify | bullist numlist outdent indent | removeformat
@@ -1,6 +1,7 @@
1
1
  name: name
2
2
  amis:
3
3
  disabledOn: '${is_system == true}'
4
+ copyable: true
4
5
  hidden: false
5
6
  index: true
6
7
  inlineHelpText: >-
@@ -3,6 +3,7 @@ amis:
3
3
  showIndex: true
4
4
  disabledOn: '${is_system == true}'
5
5
  enableDialog: false
6
+ draggable: true
6
7
  columns:
7
8
  - label
8
9
  - value
@@ -1,7 +1,7 @@
1
1
  name: required
2
2
  hidden: false
3
3
  label: Required
4
- sort_no: 380
4
+ sort_no: 340
5
5
  type: boolean
6
6
  visible_on: >-
7
7
  {{['autonumber','summary','formula'].indexOf(formData.type) > -1 ? false:
@@ -4,17 +4,24 @@ label: Field
4
4
  optionsFunction: !<tag:yaml.org,2002:js/function> |-
5
5
  function(values
6
6
  ) {
7
-
8
-
9
-
10
- if(values.summary_object){
11
- return Creator.getObjectFilterFieldOptions(values.summary_object)
7
+ var summaryObject = BuilderAmisObject && BuilderAmisObject.AmisLib && BuilderAmisObject.AmisLib.getUISchemaSync(values.summary_object, false);
8
+ var fields = summaryObject && summaryObject.fields;
9
+ let options = [];
10
+ if (fields) {
11
+ _.forEach(fields, function(f, k){
12
+ /*hidden,grid等类型的字段,不需要过滤*/
13
+ if(!_.includes(["grid","object", "[Object]", "[object]", "Object", "avatar", "image", "markdown", "html"], f.type) && !f.hidden){
14
+ /*filters.$.field及flow.current等子字段也不需要过滤*/
15
+ if(k.indexOf(".") < 0){
16
+ options.push({label: f.label || k, value: k})
17
+ }
18
+ }
19
+ })
12
20
  }
13
- return []
14
-
15
-
16
-
21
+ return options;
17
22
  }
23
+ depend_on:
24
+ - summary_object
18
25
  showIcon: false
19
26
  sort_no: 300
20
27
  type: lookup
@@ -4,39 +4,36 @@ label: Operator
4
4
  optionsFunction: !<tag:yaml.org,2002:js/function> |-
5
5
  function(values
6
6
  ) {
7
-
8
-
9
-
10
- if(values.summary_object){
11
- if(!this.template){
12
- let options = Steedos.ObjectFieldManager.getSummaryFiltersOperation();
13
- return options;
14
- }
15
- const filter = _.find(values.summary_filters, function (item) {
16
- return item._id === values._grid_row_id
17
- })
18
- if(filter){
19
- var field = filter.field;
20
- if(field){
21
- var object_fields = Creator.getObject(values.summary_object).fields
22
- var filter_field_type;
23
- if(object_fields[field]){
24
- if(Creator.getFieldDataType){
25
- filter_field_type = Creator.getFieldDataType(object_fields, field);
26
- }
27
- else{
28
- filter_field_type = object_fields[field].type;
29
- }
30
- return Steedos.ObjectFieldManager.getSummaryFiltersOperation(filter_field_type);
31
- }
7
+ var summaryObject = BuilderAmisObject && BuilderAmisObject.AmisLib && BuilderAmisObject.AmisLib.getUISchemaSync(values.summary_object, false);
8
+ var fields = summaryObject && summaryObject.fields;
9
+ var getFieldDataType = function(objectFields, key){
10
+ if (objectFields && key){
11
+ var currentField = objectFields[key];
12
+ var result = currentField && currentField.type;
13
+ if (["formula", "summary"].indexOf(result) > -1){
14
+ result = currentField.data_type;
32
15
  }
16
+ return result;
17
+ }
18
+ else{
19
+ return "text";
33
20
  }
34
21
  }
35
- return [];
36
-
37
-
38
-
22
+
23
+ let options = [];
24
+ if (fields) {
25
+ const field = api.context.field;
26
+ if(field){
27
+ var filter_field_type = getFieldDataType(fields, field);
28
+ options = Steedos.ObjectFieldManager.getSummaryFiltersOperation(filter_field_type);
29
+ }
30
+ }
31
+ return options;
39
32
  }
33
+
34
+ depend_on:
35
+ - summary_object
36
+ - field
40
37
  showIcon: false
41
38
  sort_no: 310
42
39
  type: lookup
@@ -1,7 +1,9 @@
1
1
  name: all
2
2
  columns:
3
3
  - label
4
- - name
4
+ - field: name
5
+ amis:
6
+ copyable: true
5
7
  - group
6
8
  - type
7
9
  - object
@@ -1,7 +1,9 @@
1
1
  name: customize
2
2
  columns:
3
3
  - label
4
- - name
4
+ - field: name
5
+ amis:
6
+ copyable: true
5
7
  - group
6
8
  - type
7
9
  - object
@@ -6,9 +6,7 @@ amis_schema: >-
6
6
  objectApiName__expand{\n name\n }\n }\n}\n
7
7
  `\n}","adaptor":"","messages":{}}},{"ignoreError":false,"actionType":"custom","script":"const
8
8
  record =
9
- event.data.object_function;\nwindow.open(`/api/v1/${record.object.name}/functions/${record.name}`)\n"}]}},"hidden":false,"visibleOn":"${is_rest
10
- ==
11
- true}"}],"data":{"context":{},"dataComponentId":"","record_id":"","record":{},"permissions":{}},"bodyClassName":"p-0","id":"u:05f888280584","dsType":"api"}
9
+ event.data.object_function;\nwindow.open(`/api/v1/${record.object.name}/functions/${record.name}`)\n"}]}},"hidden":false,"visibleOn":"${true}"}],"data":{"context":{},"dataComponentId":"","record_id":"","record":{},"permissions":{}},"bodyClassName":"p-0","id":"u:05f888280584","dsType":"api"}
12
10
  is_enable: true
13
11
  label: 请求API
14
12
  locked: false
@@ -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, axios, formData, mongodb, sequelize}
11
12
  editorDidMount: >-
12
13
  if(window._registerCompletionItemProviderFunction){
13
14
  return ;
@@ -3,7 +3,6 @@ columns:
3
3
  - name
4
4
  - objectApiName
5
5
  - isEnabled
6
- - is_rest
7
6
  - is_system
8
7
  label: All
9
8
  filter_scope: space
@@ -3,7 +3,6 @@ columns:
3
3
  - name
4
4
  - objectApiName
5
5
  - isEnabled
6
- - is_rest
7
6
  - is_system
8
7
  label: 自定义
9
8
  filters:
@@ -1,5 +1,5 @@
1
1
  name: object_functions
2
- icon: code_playground
2
+ icon: formula
3
3
  label: Object Functions
4
4
  version: 2
5
5
  hidden: true
@@ -1,31 +1,37 @@
1
- module.exports = {
2
- customize:function (object_name, record_id, fields) {
3
- let doc = Creator.odata.get(object_name, record_id);
4
- if(!doc.columns || !doc.columns.length){
5
- const objectName_label = record_id.split('.');
6
- let columns = Creator.getListView(objectName_label[0], objectName_label[1], true).columns;
7
- doc.columns = columns || [];
8
- }
9
- doc.columns = doc.columns.map((item)=>{
10
- if(typeof item === 'string'){
11
- return { field: item }
12
- }
13
- return item;
14
- })
15
- var newRecord = _.pick(doc, Creator.getObjectFieldsName(object_name));
16
- delete newRecord.is_system;
17
- delete newRecord._id;
18
- delete newRecord.record_permissions;
19
- newRecord.from_code_id = record_id;
20
- Creator.odata.insert(object_name, newRecord, function(result, error){
21
- if(result){
22
- FlowRouter.go(`/app/-/${object_name}/view/${result._id}`)
23
- }
24
- });
1
+ /*
2
+ * @Author: 殷亮辉 yinlianghui@hotoa.com
3
+ * @Date: 2025-07-07 16:57:37
4
+ * @LastEditors: 殷亮辉 yinlianghui@hotoa.com
5
+ * @LastEditTime: 2025-08-19 18:20:44
6
+ */
7
+ // module.exports = {
8
+ // customize:function (object_name, record_id, fields) {
9
+ // let doc = Creator.odata.get(object_name, record_id);
10
+ // if(!doc.columns || !doc.columns.length){
11
+ // const objectName_label = record_id.split('.');
12
+ // let columns = Creator.getListView(objectName_label[0], objectName_label[1], true).columns;
13
+ // doc.columns = columns || [];
14
+ // }
15
+ // doc.columns = doc.columns.map((item)=>{
16
+ // if(typeof item === 'string'){
17
+ // return { field: item }
18
+ // }
19
+ // return item;
20
+ // })
21
+ // var newRecord = _.pick(doc, Creator.getObjectFieldsName(object_name));
22
+ // delete newRecord.is_system;
23
+ // delete newRecord._id;
24
+ // delete newRecord.record_permissions;
25
+ // newRecord.from_code_id = record_id;
26
+ // Creator.odata.insert(object_name, newRecord, function(result, error){
27
+ // if(result){
28
+ // FlowRouter.go(`/app/-/${object_name}/view/${result._id}`)
29
+ // }
30
+ // });
25
31
 
26
- },
27
- customizeVisible:function(object_name, record_id, record_permissions, data){
28
- var record = data && data.record;
29
- return Steedos.Object.base.actions.standard_new.visible(object_name) && record.is_system;
30
- }
31
- }
32
+ // },
33
+ // customizeVisible:function(object_name, record_id, record_permissions, data){
34
+ // var record = data && data.record;
35
+ // return Steedos.Object.base.actions.standard_new.visible(object_name) && record.is_system;
36
+ // }
37
+ // }
@@ -2,9 +2,12 @@ module.exports = {
2
2
  showDesign:function (object_name, record_id) {
3
3
  document.location = Steedos.absoluteUrl(`/api/amisListviewDesign?id=${record_id}&object=${this.record.object_name}&assetUrls=${Builder.settings.assetUrls}&locale=${Builder.settings.locale}`);
4
4
  },
5
- showDesignVisible:function (object_name, record_id, record_permissions) {
5
+ showDesignVisible:function (object_name, record_id, record_permissions, data) {
6
6
  var perms= {};
7
- var record = Creator.getObjectRecord(object_name, record_id);
7
+ var record = data && data.record;
8
+ if (!Steedos.isSpaceAdmin()) {
9
+ return false
10
+ }
8
11
  if(!record){
9
12
  return false;
10
13
  }
@@ -14,10 +17,7 @@ showDesignVisible:function (object_name, record_id, record_permissions) {
14
17
  if (record_permissions) {
15
18
  perms = record_permissions;
16
19
  } else {
17
- record_permissions = Creator.getRecordPermissions(object_name, record, Meteor.userId());
18
- if (record_permissions) {
19
- perms = record_permissions;
20
- }
20
+ return false
21
21
  }
22
22
  return perms["allowEdit"];
23
23
  }
@@ -4,5 +4,5 @@ type: code
4
4
  language: javascript
5
5
  is_wide: true
6
6
  inlineHelpText: '函数签名: (payload, response, api) => payload'
7
- group: data_interface
8
- sort_no: 450
7
+ group: advanced
8
+ sort_no: 400
@@ -0,0 +1,10 @@
1
+ name: crudDataFilter
2
+ label: 重写表格
3
+ type: code
4
+ language: javascript
5
+ is_wide: true
6
+ inlineHelpText: |
7
+ 重写列表crud配置,函数签名:(crud, env, data) => crud
8
+ group: advanced
9
+ sort_no: 420
10
+
@@ -4,3 +4,4 @@ type: boolean
4
4
  group: advanced
5
5
  required: false
6
6
  sort_no: 420
7
+ hidden: true
@@ -0,0 +1,18 @@
1
+ name: extra_columns
2
+ label: Extra Columns
3
+ type: lookup
4
+ multiple: true
5
+ is_wide: false
6
+ required: false
7
+ depend_on:
8
+ - object_name
9
+ reference_to: object_fields
10
+ reference_to_field: name
11
+ enable_enhanced_lookup: false
12
+ filtersFunction: !<tag:yaml.org,2002:js/function> |-
13
+ function anonymous(filters,values
14
+ ) {
15
+ return ['object', '=', values.object_name]
16
+ }
17
+ sort_no: 355
18
+ group: show_columns
@@ -4,5 +4,5 @@ type: code
4
4
  language: javascript
5
5
  is_wide: true
6
6
  inlineHelpText: 函数签名:(api) => api, 数据在 api.data 中,修改后返回 api 对象。
7
- group: data_interface
8
- sort_no: 440
7
+ group: advanced
8
+ sort_no: 410
@@ -6,4 +6,4 @@ enable_dataloader: false
6
6
  isMetadata: true
7
7
  hidden: true
8
8
  paging:
9
- enabled: false
9
+ enabled: false
@@ -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, axios, formData, mongodb, sequelize}
12
13
  editorDidMount: >-
13
14
  if(window._registerCompletionItemProviderTrigger){
14
15
  return ;
@@ -15,7 +15,7 @@ optionsFunction: !!js/function |
15
15
  return [];
16
16
  }
17
17
  _options = [];
18
- _object = Creator.getObject(object_name);
18
+ _object = getUISchemaSync(object_name);
19
19
  fields = _object.fields;
20
20
  icon = _object.icon;
21
21
  _.forEach(fields, function(f, k) {
@@ -1,5 +1,6 @@
1
1
  name: object_webhooks
2
- label: Object Webhook
2
+ label: Object Webhooks
3
3
  icon: output
4
4
  hidden: true
5
+ isMetadata: true
5
6
  version: 2
@@ -1,39 +1,10 @@
1
+ /*
2
+ * @Author: 殷亮辉 yinlianghui@hotoa.com
3
+ * @Date: 2025-08-12 17:48:56
4
+ * @LastEditors: 殷亮辉 yinlianghui@hotoa.com
5
+ * @LastEditTime: 2025-08-12 17:50:22
6
+ */
1
7
  module.exports = {
2
-
3
- custom: function(object_name, record_id) {
4
- $(document.body).addClass('loading');
5
- let url = `/graphql`;
6
- const obj = Creator.odata.get("objects", record_id);
7
- delete obj.record_permissions;
8
- delete obj["@odata.context"]
9
- delete obj["@odata.editLink"]
10
- delete obj["@odata.etag"]
11
- delete obj["@odata.id"]
12
- delete obj.idFieldName;
13
- let options = {
14
- type: 'post',
15
- async: true,
16
- data: JSON.stringify({
17
- query: `mutation{objects__upsert(id: "${obj.name}", doc: ${JSON.stringify(JSON.stringify(obj))}){_id,name}}`
18
- }),
19
- success: function(data) {
20
- SteedosUI.notification.success({
21
- message: '对象已自定义。'
22
- });
23
- // SteedosUI.router.go({}, "/app/" + Session.get("app_id") + "/" + object_name + "/view/" + data.data.objects__upsert._id);
24
- FlowRouter.reload()
25
- $(document.body).removeClass('loading');
26
- },
27
- error: function(XMLHttpRequest, textStatus, errorThrown) {
28
- SteedosUI.notification.error({
29
- message: '操作失败',
30
- description: t(XMLHttpRequest.responseJSON.error),
31
- });
32
- $(document.body).removeClass('loading');
33
- }
34
- };
35
- Steedos.authRequest(url, options);
36
- },
37
8
  customVisible: function(object_name, record_id, permission, data) {
38
9
  if (Steedos.settings.public.enable_saas) {
39
10
  return false;
@@ -1,5 +1,85 @@
1
1
  name: custom
2
+ amis_schema: |-
3
+ {
4
+ "type": "service",
5
+ "body": [
6
+ {
7
+ "id": "u:custom",
8
+ "type": "button",
9
+ "label": "${'CustomAction.objects.custom' | t}",
10
+ "onEvent": {
11
+ "click": {
12
+ "actions": [
13
+ {
14
+ "actionType": "ajax",
15
+ "ignoreError": false,
16
+ "outputVar": "docForCustomize",
17
+ "options": {},
18
+ "api": {
19
+ "url": "${context.rootUrl}/api/v1/objects/${recordId}",
20
+ "method": "get",
21
+ "adaptor": "",
22
+ "messages": {}
23
+ }
24
+ },
25
+ {
26
+ "ignoreError": false,
27
+ "actionType": "ajax",
28
+ "outputVar": "customizeResponseResult",
29
+ "options": {},
30
+ "api": {
31
+ "url": "${context.rootUrl}/graphql",
32
+ "method": "post",
33
+ "sendOn": "docForCustomize",
34
+ "requestAdaptor": "var doc = context.docForCustomize;\ndoc.is_customize = true;\ndoc.is_enable = true;\ndoc.in_development = \"0\";\n// delete doc.is_system;\ndelete doc.record_permissions;\ndelete doc.NAME_FIELD_KEY;\ndelete doc.idFieldName;\ndelete doc.idFieldNames;\ndelete doc.table_name;\ndelete doc.originalFields;\ndelete doc.extend;\ndelete doc.listeners;\ndelete doc.responseData;\ndelete doc.responseNsg;\ndelete doc.responseStatus;\ndelete doc.__filename;\ndelete doc.__timestamp;\nvar data = {\n query: `mutation{objects__upsert(id: \"${doc.name}\", doc: ${JSON.stringify(JSON.stringify(doc))}){_id,name}}`\n};\nreturn {\n ...api,\n data\n};",
35
+ "adaptor": "return payload.data.objects__upsert ? {...payload, status: 0, msg: t('CustomLabels.objects_actions_custom_success')} : {...payload, status: 1, msg: t('CustomLabels.objects_actions_custom_failed')};"
36
+ }
37
+ },
38
+ {
39
+ "actionType": "broadcast",
40
+ "args": {
41
+ "eventName": "@data.changed.objects"
42
+ },
43
+ "data": {
44
+ "objectName": "objects"
45
+ },
46
+ "expression": "${_inDrawer != true}"
47
+ },
48
+ {
49
+ "actionType": "url",
50
+ "expression": "${_inDrawer == true}",
51
+ "args": {
52
+ "link": "${context.rootUrl}/app/${appId}/objects/view/${_id}",
53
+ "blank": true
54
+ }
55
+ },
56
+ {
57
+ "actionType": "closeDrawer",
58
+ "expression": "${_inDrawer == true}"
59
+ }
60
+ ],
61
+ "weight": 0
62
+ }
63
+ },
64
+ "editorState": "default"
65
+ }
66
+ ],
67
+ "regions": [
68
+ "body"
69
+ ],
70
+ "data": {
71
+ "context": {},
72
+ "dataComponentId": "",
73
+ "record_id": "",
74
+ "record": {},
75
+ "permissions": {}
76
+ },
77
+ "id": "u:be6e9cd18e15",
78
+ "bodyClassName": "p-0",
79
+ "dsType": "api"
80
+ }
2
81
  is_enable: true
3
82
  label: 自定义
4
83
  'on': record_only
5
- sort: 200
84
+ type: amis_button
85
+ visible: true
@@ -5,7 +5,7 @@ amis_schema: |-
5
5
  "body": [
6
6
  {
7
7
  "type": "button",
8
- "label": "删除",
8
+ "label": "${'CustomAction.objects.delete_object' | t}",
9
9
  "id": "u:delete_object",
10
10
  "onEvent": {
11
11
  "click": {
@@ -14,11 +14,11 @@ amis_schema: |-
14
14
  "actionType": "dialog",
15
15
  "dialog": {
16
16
  "type": "dialog",
17
- "title": "删除对象: ${record.label}",
17
+ "title": "${'CustomLabels.objects_actions_delete_object_dialog_title_prefix' | t} ${record.label}",
18
18
  "body": [
19
19
  {
20
20
  "type": "tpl",
21
- "tpl": "<div>\n<div style=\"text-align: left;\">删除一个自定义对象进行以下操作:</div>\n<ul>\n<li style=\"text-align: left;\">删除对象的字段和按钮</li>\n<li style=\"text-align: left;\">删除对象的选项卡和列表视图删除对象的页面布局</li>\n<li style=\"text-align: left;\">删除对象的权限</li>\n<li style=\"text-align: left;\">删除对象的验证规则</li>\n<li style=\"text-align: left;\">删除对象的限制规则</li>\n<li style=\"text-align: left;\">删除对象的共享规则</li>\n<li style=\"text-align: left;\">删除使用该对象的流程映射</li>\n<li style=\"text-align: left;\">删除使用该对象的开放流程</li>\n<li style=\"text-align: left;\">删除使用该对象的页面</li>\n</ul>\n</div>",
21
+ "tpl": "${'CustomLabels.objects_actions_delete_object_dialog_content' | t}",
22
22
  "inline": true,
23
23
  "id": "u:6d0819fc0bda"
24
24
  }
@@ -29,7 +29,8 @@ amis_schema: |-
29
29
  "showCloseButton": true,
30
30
  "data": {
31
31
  "&": "$$",
32
- "recordId": "${recordId}"
32
+ "recordId": "${recordId}",
33
+ "record": "${record}"
33
34
  },
34
35
  "onEvent": {
35
36
  "confirm": {