@steedos/standard-object-database 2.5.5 → 2.6.1-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.
@@ -1,154 +1,12 @@
1
+ /*
2
+ * @Author: baozhoutao@steedos.com
3
+ * @Date: 2022-08-05 14:17:44
4
+ * @LastEditors: baozhoutao@steedos.com
5
+ * @LastEditTime: 2023-06-09 14:42:12
6
+ * @Description:
7
+ */
1
8
  Steedos.ObjectFieldManager = {};
2
9
 
3
- // Steedos.ObjectFieldManager.__lastDoc = null;
4
-
5
- // const baseFieldsName = [{ "name": "object", "required": true }, { "name": "label", "required": true }, {name: '_name', required: true}, { "name": "type", "required": true }, { "name": "defaultValue" }, { "name": "group" }, { "name": "sort_no" }, { "name": "is_name" }, { "name": "required" }, { "name": "is_wide" }, { "name": "readonly" }, { "name": "hidden" }, { "name": "omit" }, { "name": "index" }, { "name": "sortable" }, { "name": "searchable" }, { "name": "filterable" }, {"name":"inlineHelpText"},{"name":"description"}];
6
-
7
- // function getFieldsByType(doc, type, dataType) {
8
- // let fields = [];
9
- // if(dataType){
10
- // fields = fields.concat(getFieldsByType(doc, dataType))
11
- // }
12
- // switch (type) {
13
- // case 'textarea':{
14
- // fields.push({ name: 'rows', required: true });
15
- // break;
16
- // }
17
- // case 'select':{
18
- // fields.push({ name: 'options', required: true });
19
- // fields.push({ name: 'options.$', required: true });
20
- // fields.push({ name: 'options.$.label', required: true });
21
- // fields.push({ name: 'options.$.value', required: true });
22
- // fields.push({ name: 'options.$.color', required: false });
23
- // fields.push({ name: 'options.$.description', required: false });
24
- // fields.push({ name: 'multiple'});
25
- // break;
26
- // }
27
- // case 'number':{
28
- // fields.push({ name: 'precision', required: true });
29
- // fields.push({ name: 'scale', required: true });
30
- // break;
31
- // }
32
- // case 'currency':{
33
- // fields.push({ name: 'precision', required: true });
34
- // fields.push({ name: 'scale', required: true });
35
- // break;
36
- // }
37
- // case 'percent':{
38
- // fields.push({ name: 'precision', required: true });
39
- // fields.push({ name: 'scale', required: true });
40
- // break;
41
- // }
42
- // case 'lookup': {
43
- // fields.push({ name: 'reference_to'});
44
- // fields.push({ name: 'filtersFunction'});
45
- // fields.push({ name: 'optionsFunction'});
46
- // fields.push({ name: 'multiple'});
47
- // break;
48
- // }
49
- // case 'master_detail': {
50
- // fields.push({ name: 'reference_to'});
51
- // fields.push({ name: 'filtersFunction'});
52
- // fields.push({ name: 'optionsFunction'});
53
- // fields.push({ name: 'write_requires_master_read'});
54
- // break;
55
- // }
56
- // case 'autonumber': {
57
- // fields.push({ name: 'formula', required: true });
58
- // break;
59
- // }
60
- // case 'formula': {
61
- // fields.push({ name: 'formula', required: true });
62
- // fields.push({ name: 'data_type', required: true });
63
- // fields.push({ name: 'formula_blank_value', required: true });
64
- // break;
65
- // }
66
- // case 'summary': {
67
- // fields.push({ name: 'summary_object', required: true });
68
- // fields.push({ name: 'summary_type', required: true });
69
- // if(doc.summary_type != 'count'){
70
- // fields.push({ name: 'summary_field', required: true });
71
- // }
72
- // // fields.push({ name: 'data_type', required: true });
73
- // fields.push({ name: 'precision', required: true });
74
- // fields.push({ name: 'scale', required: true });
75
- // fields.push({ name: 'summary_filters' });
76
- // fields.push({ name: 'summary_filters.$' });
77
- // fields.push({ name: 'summary_filters.$.field' });
78
- // fields.push({ name: 'summary_filters.$.operation' });
79
- // fields.push({ name: 'summary_filters.$.value' });
80
- // break;
81
- // }
82
- // case 'image': {
83
- // // fields.push({ name: 'multiple'}); image多选时,单个字段编辑窗口样式异常,暂时不支持
84
- // break;
85
- // }
86
- // case 'url': {
87
- // fields.push({ name: 'show_as_qr'});
88
- // break;
89
- // }
90
- // default:
91
- // break;
92
- // }
93
- // return fields;
94
- // }
95
- // Meteor.startup(function(){
96
- // $('body').on('hidden.bs.modal', '#afModal', function(){
97
- // Steedos.ObjectFieldManager.__lastDoc = null;
98
- // });
99
- // });
100
-
101
- // Steedos.ObjectFieldManager.changeSchema = function (doc, schema, when) {
102
- // var __lastDoc = Steedos.ObjectFieldManager.__lastDoc;
103
- // var noChange = doc.type && __lastDoc && __lastDoc._id == doc._id && __lastDoc.type == doc.type && __lastDoc.data_type == doc.data_type;
104
- // if(noChange && doc.type == "summary" && __lastDoc.summary_type != doc.summary_type){
105
- // // 当字段类型为汇总时,汇总类型如果有变更,有可能“要聚合的字段”属性不一定必填,所以这里强制重新计算Schema
106
- // noChange = false;
107
- // }
108
- // if(noChange){
109
- // return false;
110
- // }else{
111
- // Steedos.ObjectFieldManager.__lastDoc = doc;
112
- // }
113
-
114
- // var clone = require('clone');
115
- // var fields = clone(Creator.getObject("object_fields").fields);
116
- // var showFields = baseFieldsName.concat(getFieldsByType(doc, doc.type, doc.data_type));
117
- // if(when === 'view'){
118
- // showFields.push({ "name": "name" })
119
- // }else if(when === 'edit' && false){
120
- // showFields.push({name: '_name', required: true})
121
- // }
122
- // var objectName = doc.object;
123
- // if(_.isObject(objectName)){
124
- // objectName = objectName.name
125
- // }
126
- // var _object = Creator.getObject(objectName);
127
- // if(!_object){
128
- // var _objects = Steedos.authRequest(`/api/v4/objects`, { type: 'get', async: false, data: { $filter: "name eq '"+objectName+"'" } });
129
- // _object = _objects && _objects.value && _objects.value.length > 0 ? _objects.value[0] : null;
130
- // }
131
- // // 外部数据源对象必须启用后,才可正常显示对象字段属性
132
- // if(_object && (_object.database_name || _object.datasource)){
133
- // showFields.push({"name":"column_name"})
134
- // showFields.push({"name":"primary"})
135
- // showFields.push({"name":"generated"})
136
- // }
137
- // _.map(fields, function(field, fname){
138
- // var showField = _.find(showFields, function(item){
139
- // return item && item.name === fname;
140
- // })
141
- // if(showField){
142
- // Object.assign(field, showField)
143
- // }else{
144
- // Object.assign(field, {omit: true, hidden: true})
145
- // }
146
- // })
147
-
148
- // var objectSchema = Creator.getObjectSchema({fields: fields});
149
- // Object.assign(schema, new SimpleSchema(objectSchema))
150
- // }
151
-
152
10
  Steedos.ObjectFieldManager.getSummaryFiltersOperation = function(field_type) {
153
11
  var operations, optionals;
154
12
  optionals = {
@@ -1,8 +1,15 @@
1
+ /*
2
+ * @Author: baozhoutao@steedos.com
3
+ * @Date: 2022-08-05 14:17:44
4
+ * @LastEditors: baozhoutao@steedos.com
5
+ * @LastEditTime: 2023-06-27 09:32:45
6
+ * @Description:
7
+ */
1
8
  var objectql = require('@steedos/objectql');
2
9
  var objectCore = require('./objects.core.js');
3
10
  var lodash = require('lodash');
4
11
  Meteor.startup(function () {
5
- var _change, _remove;
12
+ var _change, _remove, inited = false;
6
13
  _change = function (document) {
7
14
  // 防止visible默认值丢失
8
15
  if(!document.visible && !lodash.isBoolean(document.visible)){
@@ -30,14 +37,21 @@ Meteor.startup(function () {
30
37
  }
31
38
  }).observe({
32
39
  added: function (newDocument) {
33
- return _change(Object.assign(newDocument, {_previousName: newDocument.name}));
40
+ if(inited){
41
+ return _change(Object.assign(newDocument, {_previousName: newDocument.name}));
42
+ }
34
43
  },
35
44
  changed: function (newDocument, oldDocument) {
36
- return _change(Object.assign(newDocument, {_previousName: oldDocument.name}));
45
+ if(inited){
46
+ return _change(Object.assign(newDocument, {_previousName: oldDocument.name}));
47
+ }
37
48
  },
38
49
  removed: function (oldDocument) {
39
- return _remove(oldDocument);
50
+ if(inited){
51
+ return _remove(oldDocument);
52
+ }
40
53
  }
41
54
  });
55
+ inited=true;
42
56
  }
43
57
  });
@@ -141,13 +141,39 @@ function loadDBObject(object){
141
141
  }
142
142
 
143
143
 
144
+ let _objectConfigs = [];
145
+ let _setTimeoutId = null;
146
+ function _sendObjectMeta(objectConfig){
147
+
148
+ if(_setTimeoutId){
149
+ clearTimeout(_setTimeoutId);
150
+ }
151
+
152
+ _objectConfigs.push(objectConfig);
153
+
154
+ _setTimeoutId = setTimeout(function(){
155
+ var length = _objectConfigs.length
156
+ register.MetadataRegister.addObjectConfigs(DB_OBJECT_SERVICE_NAME, _objectConfigs).then(function(res){
157
+ if(res){
158
+ // console.log('send object meta success', length);
159
+ broker.broadcast("$packages.statisticsActivatedPackages", {});
160
+ }
161
+ })
162
+ _objectConfigs = [];
163
+ _setTimeoutId = null;
164
+ }, 300)
165
+
166
+
167
+ }
168
+
169
+
144
170
  function loadObject(doc, oldDoc) {
145
171
  try {
146
172
  if (!canLoadObject(doc.name, doc.datasource)) {
147
173
  console.warn('warn: Not loaded. Invalid custom object -> ', doc.name);
148
174
  return;
149
175
  }
150
-
176
+
151
177
  var datasourceDoc = getDataSource(doc);
152
178
  if (doc.datasource && !_.include(defaultDatasourcesName, doc.datasource) && (!datasourceDoc || !datasourceDoc.is_enable)) {
153
179
  console.warn('warn: Not loaded. Invalid custom object -> ', doc.name, doc.datasource);
@@ -200,25 +226,7 @@ function loadObject(doc, oldDoc) {
200
226
  //获取到继承后的对象
201
227
  // const _doc = objectql.getObjectConfig(doc.name);
202
228
  // console.log(`loadObject===>`, doc.name)
203
- register.MetadataRegister.addObjectConfig(DB_OBJECT_SERVICE_NAME, originalObject).then(function(res){
204
- if(res){
205
- // datasource.setObject(doc.name, _doc);
206
- // try {
207
- // if (!datasourceName || datasourceName == defaultDatasourceName) {
208
- // Creator.Objects[doc.name] = _doc;
209
- // Creator.loadObjects(_doc, _doc.name);
210
- // }
211
- // } catch (error) {
212
- // console.log('error', error);
213
- // }
214
- // if (!oldDoc || (oldDoc && oldDoc.is_enable === false && doc.is_enable)) {
215
- // loadObjectTriggers(doc);
216
- // loadObjectPermission(doc);
217
- // }
218
-
219
- broker.broadcast("$packages.statisticsActivatedPackages", {});
220
- }
221
- })
229
+ _sendObjectMeta(originalObject);
222
230
 
223
231
 
224
232
  } catch (error) {
@@ -355,6 +363,7 @@ function triggerReloadObject(objectName, type, value, event){
355
363
  })
356
364
  if(objectRecord){
357
365
  //TODO 待支持动态加载related_list后, 删除此行代码
366
+ // console.log(`triggerReloadObject===>`, objectName)
358
367
  Creator.getCollection("objects").update({name: objectName}, {$set: {reload_time: new Date()}})
359
368
  }else{
360
369
  Creator.getCollection("_object_reload_logs").insert({
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@steedos/standard-object-database",
3
- "version": "2.5.5",
3
+ "version": "2.6.1-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": "f1e15b667da1e140e3003bf836d56cd6e36c79e3"
18
+ "gitHead": "9051772a001ba99aeaf026680ef171d508e92b8f"
19
19
  }