@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
|
-
|
|
40
|
+
if(inited){
|
|
41
|
+
return _change(Object.assign(newDocument, {_previousName: newDocument.name}));
|
|
42
|
+
}
|
|
34
43
|
},
|
|
35
44
|
changed: function (newDocument, oldDocument) {
|
|
36
|
-
|
|
45
|
+
if(inited){
|
|
46
|
+
return _change(Object.assign(newDocument, {_previousName: oldDocument.name}));
|
|
47
|
+
}
|
|
37
48
|
},
|
|
38
49
|
removed: function (oldDocument) {
|
|
39
|
-
|
|
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
|
-
|
|
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.
|
|
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": "
|
|
18
|
+
"gitHead": "9051772a001ba99aeaf026680ef171d508e92b8f"
|
|
19
19
|
}
|