@steedos/objectql 2.1.82 → 2.1.86
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/lib/actions/field_updates.js +15 -15
- package/lib/actions/field_updates.js.map +1 -1
- package/lib/actions/index.js +3 -3
- package/lib/actions/index.js.map +1 -1
- package/lib/actions/workflow_notifications.js +10 -10
- package/lib/actions/workflow_notifications.js.map +1 -1
- package/lib/actions/workflow_rule.js +19 -19
- package/lib/actions/workflow_rule.js.map +1 -1
- package/lib/driver/index.js +1 -0
- package/lib/driver/index.js.map +1 -1
- package/lib/driver/metadata.js +3 -3
- package/lib/driver/metadata.js.map +1 -1
- package/lib/driver/meteorMongo.js +36 -36
- package/lib/driver/meteorMongo.js.map +1 -1
- package/lib/driver/mongo.js +43 -43
- package/lib/driver/mongo.js.map +1 -1
- package/lib/driver/mysql.js +2 -2
- package/lib/driver/mysql.js.map +1 -1
- package/lib/driver/oracle.js +5 -5
- package/lib/driver/oracle.js.map +1 -1
- package/lib/driver/postgres.js +2 -2
- package/lib/driver/postgres.js.map +1 -1
- package/lib/driver/sqlite3.js +2 -2
- package/lib/driver/sqlite3.js.map +1 -1
- package/lib/driver/sqlserver.js +4 -4
- package/lib/driver/sqlserver.js.map +1 -1
- package/lib/dynamic-load/actions.js +22 -18
- package/lib/dynamic-load/actions.js.map +1 -1
- package/lib/dynamic-load/approval_process.js +15 -10
- package/lib/dynamic-load/approval_process.js.map +1 -1
- package/lib/dynamic-load/button.js +25 -18
- package/lib/dynamic-load/button.js.map +1 -1
- package/lib/dynamic-load/chart.js +20 -23
- package/lib/dynamic-load/chart.js.map +1 -1
- package/lib/dynamic-load/field.js +21 -16
- package/lib/dynamic-load/field.js.map +1 -1
- package/lib/dynamic-load/flow_role.js +12 -8
- package/lib/dynamic-load/flow_role.js.map +1 -1
- package/lib/dynamic-load/index.d.ts +1 -0
- package/lib/dynamic-load/index.js +20 -19
- package/lib/dynamic-load/index.js.map +1 -1
- package/lib/dynamic-load/layout.js +19 -14
- package/lib/dynamic-load/layout.js.map +1 -1
- package/lib/dynamic-load/listview.js +14 -11
- package/lib/dynamic-load/listview.js.map +1 -1
- package/lib/dynamic-load/method.js +9 -6
- package/lib/dynamic-load/method.js.map +1 -1
- package/lib/dynamic-load/object_translations.js +29 -51
- package/lib/dynamic-load/object_translations.js.map +1 -1
- package/lib/dynamic-load/originalObject.js +1 -1
- package/lib/dynamic-load/originalObject.js.map +1 -1
- package/lib/dynamic-load/package.d.ts +9 -0
- package/lib/dynamic-load/package.js +507 -0
- package/lib/dynamic-load/package.js.map +1 -0
- package/lib/dynamic-load/page.js +20 -23
- package/lib/dynamic-load/page.js.map +1 -1
- package/lib/dynamic-load/permission.js +61 -65
- package/lib/dynamic-load/permission.js.map +1 -1
- package/lib/dynamic-load/permissionset.js +30 -25
- package/lib/dynamic-load/permissionset.js.map +1 -1
- package/lib/dynamic-load/preload_data.js +55 -74
- package/lib/dynamic-load/preload_data.js.map +1 -1
- package/lib/dynamic-load/profile.js +33 -28
- package/lib/dynamic-load/profile.js.map +1 -1
- package/lib/dynamic-load/query.js +20 -23
- package/lib/dynamic-load/query.js.map +1 -1
- package/lib/dynamic-load/restrictionRules.js +18 -23
- package/lib/dynamic-load/restrictionRules.js.map +1 -1
- package/lib/dynamic-load/role.js +12 -8
- package/lib/dynamic-load/role.js.map +1 -1
- package/lib/dynamic-load/shareRules.js +18 -23
- package/lib/dynamic-load/shareRules.js.map +1 -1
- package/lib/dynamic-load/tab.js +4 -3
- package/lib/dynamic-load/tab.js.map +1 -1
- package/lib/dynamic-load/tabs.js +9 -7
- package/lib/dynamic-load/tabs.js.map +1 -1
- package/lib/dynamic-load/translations.js +23 -17
- package/lib/dynamic-load/translations.js.map +1 -1
- package/lib/dynamic-load/trigger.js +14 -10
- package/lib/dynamic-load/trigger.js.map +1 -1
- package/lib/dynamic-load/validation_rule.js +13 -8
- package/lib/dynamic-load/validation_rule.js.map +1 -1
- package/lib/dynamic-load/workflow.js +38 -25
- package/lib/dynamic-load/workflow.js.map +1 -1
- package/lib/errors/index.js +2 -1
- package/lib/errors/index.js.map +1 -1
- package/lib/formula/core.js +105 -91
- package/lib/formula/core.js.map +1 -1
- package/lib/formula/field_formula.js +26 -20
- package/lib/formula/field_formula.js.map +1 -1
- package/lib/formula/index.js +26 -26
- package/lib/formula/index.js.map +1 -1
- package/lib/formula/params.js +1 -1
- package/lib/formula/params.js.map +1 -1
- package/lib/formula/recompute.js +27 -25
- package/lib/formula/recompute.js.map +1 -1
- package/lib/formula/simple_params.js +2 -2
- package/lib/formula/simple_params.js.map +1 -1
- package/lib/formula/util.js +33 -23
- package/lib/formula/util.js.map +1 -1
- package/lib/index.js +15 -15
- package/lib/index.js.map +1 -1
- package/lib/metadata-register/_base.d.ts +1 -0
- package/lib/metadata-register/_base.js +45 -15
- package/lib/metadata-register/_base.js.map +1 -1
- package/lib/metadata-register/app.js +8 -8
- package/lib/metadata-register/chart.js +1 -1
- package/lib/metadata-register/chart.js.map +1 -1
- package/lib/metadata-register/index.js +72 -72
- package/lib/metadata-register/index.js.map +1 -1
- package/lib/metadata-register/layout.js +18 -16
- package/lib/metadata-register/layout.js.map +1 -1
- package/lib/metadata-register/object.d.ts +0 -1
- package/lib/metadata-register/object.js +17 -35
- package/lib/metadata-register/object.js.map +1 -1
- package/lib/metadata-register/page.js +1 -1
- package/lib/metadata-register/page.js.map +1 -1
- package/lib/metadata-register/permissionFields.js +2 -2
- package/lib/metadata-register/permissionFields.js.map +1 -1
- package/lib/metadata-register/permissionset.js +6 -6
- package/lib/metadata-register/profile.js +6 -6
- package/lib/metadata-register/query.js +1 -1
- package/lib/metadata-register/query.js.map +1 -1
- package/lib/metadata-register/restrictionRules.js +2 -2
- package/lib/metadata-register/restrictionRules.js.map +1 -1
- package/lib/metadata-register/shareRules.js +2 -2
- package/lib/metadata-register/shareRules.js.map +1 -1
- package/lib/metadata-register/tab.js +1 -1
- package/lib/metadata-register/tab.js.map +1 -1
- package/lib/metadata-register/tabs.js +18 -16
- package/lib/metadata-register/tabs.js.map +1 -1
- package/lib/services/datasourceServiceFactory.d.ts +1 -0
- package/lib/services/datasourceServiceFactory.js +51 -0
- package/lib/services/datasourceServiceFactory.js.map +1 -0
- package/lib/services/helpers/graphql.js +86 -87
- package/lib/services/helpers/graphql.js.map +1 -1
- package/lib/services/helpers/index.js +2 -2
- package/lib/services/helpers/index.js.map +1 -1
- package/lib/services/helpers/rest.js +1 -1
- package/lib/services/helpers/rest.js.map +1 -1
- package/lib/services/index.d.ts +3 -0
- package/lib/services/index.js +10 -4
- package/lib/services/index.js.map +1 -1
- package/lib/services/objectService.js +143 -143
- package/lib/services/objectService.js.map +1 -1
- package/lib/services/objectServiceDispatcher.js +92 -92
- package/lib/services/objectServiceDispatcher.js.map +1 -1
- package/lib/{metadata-register/objectServiceManager.d.ts → services/objectServiceFactory.d.ts} +0 -0
- package/lib/{metadata-register/objectServiceManager.js → services/objectServiceFactory.js} +5 -5
- package/lib/services/objectServiceFactory.js.map +1 -0
- package/lib/summary/core.js +51 -44
- package/lib/summary/core.js.map +1 -1
- package/lib/summary/field_summary.js +21 -16
- package/lib/summary/field_summary.js.map +1 -1
- package/lib/summary/index.js +25 -22
- package/lib/summary/index.js.map +1 -1
- package/lib/summary/recompute.js +13 -11
- package/lib/summary/recompute.js.map +1 -1
- package/lib/ts-types/index.js +3 -3
- package/lib/ts-types/index.js.map +1 -1
- package/lib/typeorm/driver.js +58 -58
- package/lib/typeorm/driver.js.map +1 -1
- package/lib/typeorm/index.js +2 -1
- package/lib/typeorm/index.js.map +1 -1
- package/lib/typeorm/util.js +2 -2
- package/lib/typeorm/util.js.map +1 -1
- package/lib/types/app.js +41 -35
- package/lib/types/app.js.map +1 -1
- package/lib/types/config.js +52 -45
- package/lib/types/config.js.map +1 -1
- package/lib/types/connection.js +20 -18
- package/lib/types/connection.js.map +1 -1
- package/lib/types/dashboard.js +10 -7
- package/lib/types/dashboard.js.map +1 -1
- package/lib/types/datasource.d.ts +14 -1
- package/lib/types/datasource.js +205 -192
- package/lib/types/datasource.js.map +1 -1
- package/lib/types/field.d.ts +2 -2
- package/lib/types/field.js +6 -6
- package/lib/types/field.js.map +1 -1
- package/lib/types/field_permission.js +8 -8
- package/lib/types/field_permission.js.map +1 -1
- package/lib/types/index.js +11 -10
- package/lib/types/index.js.map +1 -1
- package/lib/types/list_view.d.ts +1 -1
- package/lib/types/list_view.js +1 -1
- package/lib/types/list_view.js.map +1 -1
- package/lib/types/object.d.ts +11 -11
- package/lib/types/object.js +208 -201
- package/lib/types/object.js.map +1 -1
- package/lib/types/object_dynamic_load.js +105 -155
- package/lib/types/object_dynamic_load.js.map +1 -1
- package/lib/types/object_events.js +5 -5
- package/lib/types/object_events.js.map +1 -1
- package/lib/types/object_layouts.js +7 -7
- package/lib/types/object_layouts.js.map +1 -1
- package/lib/types/object_permission.d.ts +1 -1
- package/lib/types/object_permission.js +1 -1
- package/lib/types/object_permission.js.map +1 -1
- package/lib/types/report.js +10 -7
- package/lib/types/report.js.map +1 -1
- package/lib/types/restrictionRule.js +11 -11
- package/lib/types/restrictionRule.js.map +1 -1
- package/lib/types/schema.d.ts +1 -1
- package/lib/types/schema.js +41 -19
- package/lib/types/schema.js.map +1 -1
- package/lib/types/shareRule.js +11 -11
- package/lib/types/shareRule.js.map +1 -1
- package/lib/types/trigger.js +2 -2
- package/lib/types/trigger.js.map +1 -1
- package/lib/types/validation_rules.js +5 -5
- package/lib/types/validation_rules.js.map +1 -1
- package/lib/util/convert.d.ts +2 -0
- package/lib/util/convert.js +130 -0
- package/lib/util/convert.js.map +1 -0
- package/lib/util/field.js +5 -3
- package/lib/util/field.js.map +1 -1
- package/lib/util/function_expression.js +5 -3
- package/lib/util/function_expression.js.map +1 -1
- package/lib/util/index.d.ts +2 -7
- package/lib/util/index.js +86 -166
- package/lib/util/index.js.map +1 -1
- package/lib/util/locale.js +5 -3
- package/lib/util/locale.js.map +1 -1
- package/lib/util/permission_shares.js +2 -2
- package/lib/util/permission_shares.js.map +1 -1
- package/lib/util/suffix.js +22 -16
- package/lib/util/suffix.js.map +1 -1
- package/lib/util/transform.js +11 -11
- package/lib/util/transform.js.map +1 -1
- package/lib/validators/index.js +3 -2
- package/lib/validators/index.js.map +1 -1
- package/package.json +13 -13
- package/src/dynamic-load/chart.ts +6 -1
- package/src/dynamic-load/index.ts +1 -0
- package/src/dynamic-load/object_translations.ts +19 -10
- package/src/dynamic-load/package.ts +303 -0
- package/src/dynamic-load/page.ts +7 -1
- package/src/dynamic-load/permission.ts +1 -5
- package/src/dynamic-load/preload_data.ts +2 -3
- package/src/dynamic-load/query.ts +6 -1
- package/src/dynamic-load/restrictionRules.ts +6 -2
- package/src/dynamic-load/shareRules.ts +5 -1
- package/src/dynamic-load/translations.ts +3 -1
- package/src/metadata-register/_base.ts +23 -0
- package/src/metadata-register/object.ts +1 -20
- package/src/services/datasourceServiceFactory.ts +37 -0
- package/src/services/helpers/graphql.ts +5 -3
- package/src/services/index.ts +7 -0
- package/src/services/objectService.ts +5 -4
- package/src/{metadata-register/objectServiceManager.ts → services/objectServiceFactory.ts} +4 -4
- package/src/types/datasource.ts +81 -72
- package/src/types/field.ts +2 -2
- package/src/types/list_view.ts +1 -1
- package/src/types/object.ts +11 -11
- package/src/types/object_dynamic_load.ts +5 -47
- package/src/types/object_permission.ts +1 -1
- package/src/types/schema.ts +11 -1
- package/src/util/convert.ts +130 -0
- package/src/util/index.ts +6 -120
- package/lib/metadata-register/objectServiceManager.js.map +0 -1
package/lib/formula/core.js
CHANGED
|
@@ -17,29 +17,31 @@ var simple_params_1 = require("./simple_params");
|
|
|
17
17
|
* 根据公式内容,取出其中{}中的变量
|
|
18
18
|
* @param formula
|
|
19
19
|
*/
|
|
20
|
-
|
|
21
|
-
return formula_1.extract(formula);
|
|
20
|
+
var pickFormulaVars = function (formula) {
|
|
21
|
+
return (0, formula_1.extract)(formula);
|
|
22
22
|
};
|
|
23
|
+
exports.pickFormulaVars = pickFormulaVars;
|
|
23
24
|
/**
|
|
24
25
|
* 根据公式内容,取出其中{}中的变量,并进一步取出这些变量中引用了当前对象的哪些字段
|
|
25
26
|
* @param fieldFormulaConfig
|
|
26
27
|
*/
|
|
27
|
-
|
|
28
|
+
var pickFieldFormulaVarFields = function (fieldFormulaConfigs) {
|
|
28
29
|
if (!_.isArray(fieldFormulaConfigs)) {
|
|
29
30
|
fieldFormulaConfigs = [fieldFormulaConfigs];
|
|
30
31
|
}
|
|
31
32
|
var result = ["space"]; //space字段作为基础字段不能少
|
|
32
33
|
fieldFormulaConfigs.forEach(function (fieldFormulaConfig) {
|
|
33
34
|
var vars = fieldFormulaConfig.vars;
|
|
34
|
-
result = _.union(result, exports.pickFormulaVarFields(vars));
|
|
35
|
+
result = _.union(result, (0, exports.pickFormulaVarFields)(vars));
|
|
35
36
|
});
|
|
36
37
|
return _.uniq(result);
|
|
37
38
|
};
|
|
39
|
+
exports.pickFieldFormulaVarFields = pickFieldFormulaVarFields;
|
|
38
40
|
/**
|
|
39
41
|
* 根据公式内容已取出的{}中的变量,进一步取出这些变量中引用了当前对象的哪些字段
|
|
40
42
|
* @param vars
|
|
41
43
|
*/
|
|
42
|
-
|
|
44
|
+
var pickFormulaVarFields = function (vars) {
|
|
43
45
|
var result = ["space"]; //space字段作为基础字段不能少
|
|
44
46
|
vars.forEach(function (varItem) {
|
|
45
47
|
if (varItem.paths.length) {
|
|
@@ -51,16 +53,17 @@ exports.pickFormulaVarFields = function (vars) {
|
|
|
51
53
|
});
|
|
52
54
|
return _.uniq(result);
|
|
53
55
|
};
|
|
56
|
+
exports.pickFormulaVarFields = pickFormulaVarFields;
|
|
54
57
|
/**
|
|
55
58
|
* 根据公式中的变量值,计算出跨对象引用的记录对应的字段值,作为公式运算的参数返回
|
|
56
59
|
* @param doc
|
|
57
60
|
* @param vars
|
|
58
61
|
* return Array<SteedosFormulaParamTypeConfig>
|
|
59
62
|
*/
|
|
60
|
-
|
|
63
|
+
var computeFormulaParams = function (doc, vars, currentUserId) { return (0, tslib_1.__awaiter)(void 0, void 0, void 0, function () {
|
|
61
64
|
var params, spaceId, _loop_1, vars_1, vars_1_1, _a, key, paths, isUserVar, isSimpleVar;
|
|
62
65
|
var e_1, _b;
|
|
63
|
-
return tslib_1.__generator(this, function (_c) {
|
|
66
|
+
return (0, tslib_1.__generator)(this, function (_c) {
|
|
64
67
|
params = [];
|
|
65
68
|
spaceId = doc.space;
|
|
66
69
|
if (vars && vars.length) {
|
|
@@ -70,10 +73,10 @@ exports.computeFormulaParams = function (doc, vars, currentUserId) { return tsli
|
|
|
70
73
|
var tempValue = void 0;
|
|
71
74
|
if (isUserVar) {
|
|
72
75
|
if (!currentUserId) {
|
|
73
|
-
throw new Error("computeFormulaParams:The param 'currentUserId' is required for the formula var key "
|
|
76
|
+
throw new Error("computeFormulaParams:The param 'currentUserId' is required for the formula var key ".concat(key, " while running"));
|
|
74
77
|
}
|
|
75
78
|
if (!spaceId) {
|
|
76
|
-
throw new Error("computeFormulaParams:The 'space' property is required for the doc of the formula var key "
|
|
79
|
+
throw new Error("computeFormulaParams:The 'space' property is required for the doc of the formula var key ".concat(key, " while running"));
|
|
77
80
|
}
|
|
78
81
|
// if (!currentUserId) {
|
|
79
82
|
// throw new Error(`computeFormulaParams:The param 'currentUserId' is required for the formula var key ${key}`);
|
|
@@ -98,8 +101,8 @@ exports.computeFormulaParams = function (doc, vars, currentUserId) { return tsli
|
|
|
98
101
|
if (index === 0) {
|
|
99
102
|
if (isUserVar) {
|
|
100
103
|
// $user变量也要按查相关表记录的方式取值,第一个path为根据id取出对应的space_users记录
|
|
101
|
-
var sus = util_2.wrapAsync(function () {
|
|
102
|
-
return index_1.getSteedosSchema().getObject("space_users").find({
|
|
104
|
+
var sus = (0, util_2.wrapAsync)(function () {
|
|
105
|
+
return (0, index_1.getSteedosSchema)().getObject("space_users").find({
|
|
103
106
|
filters: [["user", "=", currentUserId], ["space", "=", spaceId]],
|
|
104
107
|
fields: [next.field_name]
|
|
105
108
|
});
|
|
@@ -121,8 +124,8 @@ exports.computeFormulaParams = function (doc, vars, currentUserId) { return tsli
|
|
|
121
124
|
// 当上一轮返回空值或0时,直接返回
|
|
122
125
|
return reslut;
|
|
123
126
|
}
|
|
124
|
-
reslut = util_2.wrapAsync(function () {
|
|
125
|
-
return index_1.getSteedosSchema().getObject(next.reference_from).findOne(reslut, { fields: [next.field_name] });
|
|
127
|
+
reslut = (0, util_2.wrapAsync)(function () {
|
|
128
|
+
return (0, index_1.getSteedosSchema)().getObject(next.reference_from).findOne(reslut, { fields: [next.field_name] });
|
|
126
129
|
}, {});
|
|
127
130
|
if (reslut) {
|
|
128
131
|
return reslut[next.field_name];
|
|
@@ -139,7 +142,7 @@ exports.computeFormulaParams = function (doc, vars, currentUserId) { return tsli
|
|
|
139
142
|
});
|
|
140
143
|
};
|
|
141
144
|
try {
|
|
142
|
-
for (vars_1 = tslib_1.__values(vars), vars_1_1 = vars_1.next(); !vars_1_1.done; vars_1_1 = vars_1.next()) {
|
|
145
|
+
for (vars_1 = (0, tslib_1.__values)(vars), vars_1_1 = vars_1.next(); !vars_1_1.done; vars_1_1 = vars_1.next()) {
|
|
143
146
|
_a = vars_1_1.value, key = _a.key, paths = _a.paths, isUserVar = _a.is_user_var, isSimpleVar = _a.is_simple_var;
|
|
144
147
|
_loop_1(key, paths, isUserVar, isSimpleVar);
|
|
145
148
|
}
|
|
@@ -155,38 +158,41 @@ exports.computeFormulaParams = function (doc, vars, currentUserId) { return tsli
|
|
|
155
158
|
return [2 /*return*/, params];
|
|
156
159
|
});
|
|
157
160
|
}); };
|
|
158
|
-
exports.
|
|
161
|
+
exports.computeFormulaParams = computeFormulaParams;
|
|
162
|
+
var computeFieldFormulaValue = function (doc, fieldFormulaConfig, currentUserId) { return (0, tslib_1.__awaiter)(void 0, void 0, void 0, function () {
|
|
159
163
|
var formula, vars, data_type, formula_blank_value, params;
|
|
160
|
-
return tslib_1.__generator(this, function (_a) {
|
|
164
|
+
return (0, tslib_1.__generator)(this, function (_a) {
|
|
161
165
|
switch (_a.label) {
|
|
162
166
|
case 0:
|
|
163
167
|
if (!currentUserId) {
|
|
164
|
-
util_1.checkCurrentUserIdNotRequiredForFieldFormulas(fieldFormulaConfig);
|
|
168
|
+
(0, util_1.checkCurrentUserIdNotRequiredForFieldFormulas)(fieldFormulaConfig);
|
|
165
169
|
}
|
|
166
170
|
formula = fieldFormulaConfig.formula, vars = fieldFormulaConfig.vars, data_type = fieldFormulaConfig.data_type, formula_blank_value = fieldFormulaConfig.formula_blank_value;
|
|
167
|
-
return [4 /*yield*/, exports.computeFormulaParams(doc, vars, currentUserId)];
|
|
171
|
+
return [4 /*yield*/, (0, exports.computeFormulaParams)(doc, vars, currentUserId)];
|
|
168
172
|
case 1:
|
|
169
173
|
params = _a.sent();
|
|
170
|
-
return [2 /*return*/, exports.runFormula(formula, params, {
|
|
174
|
+
return [2 /*return*/, (0, exports.runFormula)(formula, params, {
|
|
171
175
|
returnType: data_type,
|
|
172
176
|
blankValue: formula_blank_value
|
|
173
177
|
}, fieldFormulaConfig)];
|
|
174
178
|
}
|
|
175
179
|
});
|
|
176
180
|
}); };
|
|
177
|
-
exports.
|
|
181
|
+
exports.computeFieldFormulaValue = computeFieldFormulaValue;
|
|
182
|
+
var evalFieldFormula = function (formula, formulaParams) {
|
|
178
183
|
try {
|
|
179
184
|
// let formulaFun = `module.exports = function (__params) { ${formula} }`;
|
|
180
185
|
// console.log("==evalFieldFormula==formulaFun===", formulaFun);
|
|
181
186
|
// console.log("==evalFieldFormula==formulaParams===", formulaParams);
|
|
182
187
|
// return _eval(formulaFun)(formulaParams);
|
|
183
|
-
return formula_1.parse(formula, formulaParams);
|
|
188
|
+
return (0, formula_1.parse)(formula, formulaParams);
|
|
184
189
|
}
|
|
185
190
|
catch (ex) {
|
|
186
191
|
formulaParams[type_1.FormulaUserKey] = "{...}"; //$user简化,打出的日志看得清楚点
|
|
187
|
-
throw new Error("evalFieldFormula:Catch an error \""
|
|
192
|
+
throw new Error("evalFieldFormula:Catch an error \"".concat(ex, "\" while eval formula \"").concat(formula, "\" with params \"").concat(JSON.stringify(formulaParams), "\""));
|
|
188
193
|
}
|
|
189
194
|
};
|
|
195
|
+
exports.evalFieldFormula = evalFieldFormula;
|
|
190
196
|
/**
|
|
191
197
|
* 运行公式
|
|
192
198
|
* @param formula 公式脚本内容
|
|
@@ -194,7 +200,7 @@ exports.evalFieldFormula = function (formula, formulaParams) {
|
|
|
194
200
|
* @param options 公式返回类型,及空值配置
|
|
195
201
|
* @param messageTag 用于显示错误日志的标识信息,可以是一个json对象
|
|
196
202
|
*/
|
|
197
|
-
|
|
203
|
+
var runFormula = function (formula, params, options, messageTag) {
|
|
198
204
|
if (!options) {
|
|
199
205
|
options = {};
|
|
200
206
|
}
|
|
@@ -208,22 +214,22 @@ exports.runFormula = function (formula, params, options, messageTag) {
|
|
|
208
214
|
// 把{}括起来的变量替换为计算得到的变量值
|
|
209
215
|
// formula = formula.replace(`{${key}}`, `__params["${key}"]`);
|
|
210
216
|
if (path) {
|
|
211
|
-
formulaParams[key] = params_1.getFieldSubstitution(path.reference_from, path.field_name, value, blankValue);
|
|
217
|
+
formulaParams[key] = (0, params_1.getFieldSubstitution)(path.reference_from, path.field_name, value, blankValue);
|
|
212
218
|
}
|
|
213
219
|
else {
|
|
214
220
|
// 变量中没有path属性说明是普通变量
|
|
215
|
-
formulaParams[key] = simple_params_1.getSimpleParamSubstitution(value, blankValue);
|
|
221
|
+
formulaParams[key] = (0, simple_params_1.getSimpleParamSubstitution)(value, blankValue);
|
|
216
222
|
}
|
|
217
223
|
});
|
|
218
224
|
// console.log("===runFormula===formula====", formula);
|
|
219
225
|
// console.log("===runFormula===formulaParams====", formulaParams);
|
|
220
|
-
var result = exports.evalFieldFormula(formula, formulaParams);
|
|
226
|
+
var result = (0, exports.evalFieldFormula)(formula, formulaParams);
|
|
221
227
|
// console.log("===runFormula===result====", result);
|
|
222
228
|
var formulaValue = result.value;
|
|
223
229
|
var formulaValueType = result.dataType;
|
|
224
230
|
if (result.type === 'error') {
|
|
225
231
|
console.error(formula, formulaParams);
|
|
226
|
-
throw new Error("runFormula:Catch an error \""
|
|
232
|
+
throw new Error("runFormula:Catch an error \"".concat(result.message, "\" while eval formula \"").concat(formula, "\" with params: \"").concat(JSON.stringify(formulaParams), "\" for \"").concat(JSON.stringify(messageTag), "\""));
|
|
227
233
|
// if(blankValue === SteedosFormulaBlankValue.blanks && result.errorType === "ArgumentError"){
|
|
228
234
|
// // 配置了空参数视为空值时会直接返回空值类型,这里就会报错,直接返回空值,而不是抛错
|
|
229
235
|
// // TODO:result.errorType === "ArgumentError"不够细化,下一版本应该视错误情况优化返回空值的条件
|
|
@@ -241,39 +247,39 @@ exports.runFormula = function (formula, params, options, messageTag) {
|
|
|
241
247
|
switch (returnType) {
|
|
242
248
|
case "boolean":
|
|
243
249
|
if (formulaValueType !== "checkbox" /* Checkbox */) {
|
|
244
|
-
throw new Error("runFormula:The field formula \""
|
|
250
|
+
throw new Error("runFormula:The field formula \"".concat(formula, "\" with params \"").concat(JSON.stringify(formulaParams), "\" should return a boolean type result but got a ").concat(formulaValueType, " type value '").concat(formulaValue, "'."));
|
|
245
251
|
}
|
|
246
252
|
break;
|
|
247
253
|
case "number":
|
|
248
254
|
if (formulaValueType !== "number" /* Number */) {
|
|
249
|
-
throw new Error("runFormula:The field formula \""
|
|
255
|
+
throw new Error("runFormula:The field formula \"".concat(formula, "\" with params \"").concat(JSON.stringify(formulaParams), "\" should return a number type result but got a ").concat(formulaValueType, " type value '").concat(formulaValue, "'."));
|
|
250
256
|
}
|
|
251
257
|
break;
|
|
252
258
|
case "currency":
|
|
253
259
|
if (formulaValueType !== "number" /* Number */) {
|
|
254
|
-
throw new Error("runFormula:The field formula \""
|
|
260
|
+
throw new Error("runFormula:The field formula \"".concat(formula, "\" with params \"").concat(JSON.stringify(formulaParams), "\" should return a number type result but got a ").concat(formulaValueType, " type value '").concat(formulaValue, "'."));
|
|
255
261
|
}
|
|
256
262
|
break;
|
|
257
263
|
case "percent":
|
|
258
264
|
if (formulaValueType !== "number" /* Number */) {
|
|
259
|
-
throw new Error("runFormula:The field formula \""
|
|
265
|
+
throw new Error("runFormula:The field formula \"".concat(formula, "\" with params \"").concat(JSON.stringify(formulaParams), "\" should return a number type result but got a ").concat(formulaValueType, " type value '").concat(formulaValue, "'."));
|
|
260
266
|
}
|
|
261
267
|
break;
|
|
262
268
|
case "text":
|
|
263
269
|
if (formulaValueType !== "text" /* Text */) {
|
|
264
|
-
throw new Error("runFormula:The field formula \""
|
|
270
|
+
throw new Error("runFormula:The field formula \"".concat(formula, "\" with params \"").concat(JSON.stringify(formulaParams), "\" should return a string type result but got a ").concat(formulaValueType, " type value '").concat(formulaValue, "'."));
|
|
265
271
|
}
|
|
266
272
|
break;
|
|
267
273
|
case "date":
|
|
268
274
|
if (formulaValueType !== "date" /* Date */) {
|
|
269
275
|
// 这里不可以直接用result.constructor == Date或result instanceof Date,因为eval后的同一个基础类型的构造函数指向的不是同一个
|
|
270
|
-
throw new Error("runFormula:The field formula \""
|
|
276
|
+
throw new Error("runFormula:The field formula \"".concat(formula, "\" with params \"").concat(JSON.stringify(formulaParams), "\" should return a date type result but got a ").concat(formulaValueType, " type value '").concat(formulaValue, "'."));
|
|
271
277
|
}
|
|
272
278
|
break;
|
|
273
279
|
case "datetime":
|
|
274
280
|
if (formulaValueType !== "datetime" /* Datetime */) {
|
|
275
281
|
// 这里不可以直接用result.constructor == Date或result instanceof Date,因为eval后的同一个基础类型的构造函数指向的不是同一个
|
|
276
|
-
throw new Error("runFormula:The field formula \""
|
|
282
|
+
throw new Error("runFormula:The field formula \"".concat(formula, "\" with params \"").concat(JSON.stringify(formulaParams), "\" should return a date type result but got a ").concat(formulaValueType, " type value '").concat(formulaValue, "'."));
|
|
277
283
|
}
|
|
278
284
|
break;
|
|
279
285
|
}
|
|
@@ -281,6 +287,7 @@ exports.runFormula = function (formula, params, options, messageTag) {
|
|
|
281
287
|
// console.log("===runFormula===formulaValue====", formulaValue);
|
|
282
288
|
return formulaValue;
|
|
283
289
|
};
|
|
290
|
+
exports.runFormula = runFormula;
|
|
284
291
|
var addToAggregatePaths = function (varItemToAggregatePaths, toAggregatePaths) {
|
|
285
292
|
// 当引用了同一个对象的不同属性时,只需要记录其中一个,因为一个公式里面引用的字段变更后,只需要重算一次,比如以下两个都将只有第一条会加入到toAggregatePaths中
|
|
286
293
|
// [{"key":"account.website","paths":[{"field_name":"account","reference_from":"contacts"},{"field_name":"website","reference_from":"accounts"}]}]
|
|
@@ -303,18 +310,18 @@ var addToAggregatePaths = function (varItemToAggregatePaths, toAggregatePaths) {
|
|
|
303
310
|
* @param options.escapeConfigs 传入该参数时,将额外跳过这些公式字段配置的运算,提高性能
|
|
304
311
|
* @param options.quotedByConfigs 如果已经根据objectName和fieldNames查过相关配置了,请直接传入,可以避免重复查找,提高性能
|
|
305
312
|
*/
|
|
306
|
-
|
|
313
|
+
var runQuotedByObjectFieldFormulas = function (objectName, recordId, userSession, options) {
|
|
307
314
|
if (options === void 0) { options = {}; }
|
|
308
|
-
return tslib_1.__awaiter(this, void 0, void 0, function () {
|
|
315
|
+
return (0, tslib_1.__awaiter)(this, void 0, void 0, function () {
|
|
309
316
|
var currentUserId, fieldNames, escapeConfigs, quotedByConfigs, _a, _b, config, e_2_1;
|
|
310
317
|
var e_2, _c;
|
|
311
|
-
return tslib_1.__generator(this, function (_d) {
|
|
318
|
+
return (0, tslib_1.__generator)(this, function (_d) {
|
|
312
319
|
switch (_d.label) {
|
|
313
320
|
case 0:
|
|
314
321
|
currentUserId = userSession ? userSession.userId : undefined;
|
|
315
322
|
fieldNames = options.fieldNames, escapeConfigs = options.escapeConfigs, quotedByConfigs = options.quotedByConfigs;
|
|
316
323
|
if (!!quotedByConfigs) return [3 /*break*/, 2];
|
|
317
|
-
return [4 /*yield*/, field_formula_1.getObjectQuotedByFieldFormulaConfigs(objectName, fieldNames, escapeConfigs)];
|
|
324
|
+
return [4 /*yield*/, (0, field_formula_1.getObjectQuotedByFieldFormulaConfigs)(objectName, fieldNames, escapeConfigs)];
|
|
318
325
|
case 1:
|
|
319
326
|
quotedByConfigs = _d.sent();
|
|
320
327
|
_d.label = 2;
|
|
@@ -323,17 +330,17 @@ exports.runQuotedByObjectFieldFormulas = function (objectName, recordId, userSes
|
|
|
323
330
|
return [2 /*return*/];
|
|
324
331
|
}
|
|
325
332
|
if (!currentUserId) {
|
|
326
|
-
util_1.checkCurrentUserIdNotRequiredForFieldFormulas(quotedByConfigs.allConfigs);
|
|
333
|
+
(0, util_1.checkCurrentUserIdNotRequiredForFieldFormulas)(quotedByConfigs.allConfigs);
|
|
327
334
|
}
|
|
328
335
|
_d.label = 3;
|
|
329
336
|
case 3:
|
|
330
337
|
_d.trys.push([3, 8, 9, 10]);
|
|
331
|
-
_a = tslib_1.__values(quotedByConfigs.allConfigs), _b = _a.next();
|
|
338
|
+
_a = (0, tslib_1.__values)(quotedByConfigs.allConfigs), _b = _a.next();
|
|
332
339
|
_d.label = 4;
|
|
333
340
|
case 4:
|
|
334
341
|
if (!!_b.done) return [3 /*break*/, 7];
|
|
335
342
|
config = _b.value;
|
|
336
|
-
return [4 /*yield*/, exports.updateQuotedByObjectFieldFormulaValue(objectName, recordId, config, userSession, quotedByConfigs.ownConfigs)];
|
|
343
|
+
return [4 /*yield*/, (0, exports.updateQuotedByObjectFieldFormulaValue)(objectName, recordId, config, userSession, quotedByConfigs.ownConfigs)];
|
|
337
344
|
case 5:
|
|
338
345
|
_d.sent();
|
|
339
346
|
_d.label = 6;
|
|
@@ -356,6 +363,7 @@ exports.runQuotedByObjectFieldFormulas = function (objectName, recordId, userSes
|
|
|
356
363
|
});
|
|
357
364
|
});
|
|
358
365
|
};
|
|
366
|
+
exports.runQuotedByObjectFieldFormulas = runQuotedByObjectFieldFormulas;
|
|
359
367
|
/**
|
|
360
368
|
* 找到当前正在insert/update的对象中的公式字段并更新其字段值
|
|
361
369
|
* @param objectName
|
|
@@ -365,15 +373,15 @@ exports.runQuotedByObjectFieldFormulas = function (objectName, recordId, userSes
|
|
|
365
373
|
* @param needRefetchDoc 当doc不可信赖时,需要从数据库中重新抓取doc,请传入true值
|
|
366
374
|
* @param configs 如果已经根据objectName查过相关配置了,请直接传入,可以避免重复查找,提高性能
|
|
367
375
|
*/
|
|
368
|
-
|
|
369
|
-
return tslib_1.__awaiter(this, void 0, void 0, function () {
|
|
376
|
+
var runCurrentObjectFieldFormulas = function (objectName, recordId, doc, currentUserId, needRefetchDoc, configs) {
|
|
377
|
+
return (0, tslib_1.__awaiter)(this, void 0, void 0, function () {
|
|
370
378
|
var formulaVarFields, setDoc, configs_1, configs_1_1, config, _a, _b, e_3_1;
|
|
371
379
|
var e_3, _c;
|
|
372
|
-
return tslib_1.__generator(this, function (_d) {
|
|
380
|
+
return (0, tslib_1.__generator)(this, function (_d) {
|
|
373
381
|
switch (_d.label) {
|
|
374
382
|
case 0:
|
|
375
383
|
if (!!configs) return [3 /*break*/, 2];
|
|
376
|
-
return [4 /*yield*/, field_formula_1.getObjectFieldFormulaConfigs(objectName)];
|
|
384
|
+
return [4 /*yield*/, (0, field_formula_1.getObjectFieldFormulaConfigs)(objectName)];
|
|
377
385
|
case 1:
|
|
378
386
|
configs = _d.sent();
|
|
379
387
|
_d.label = 2;
|
|
@@ -382,11 +390,11 @@ exports.runCurrentObjectFieldFormulas = function (objectName, recordId, doc, cur
|
|
|
382
390
|
return [2 /*return*/];
|
|
383
391
|
}
|
|
384
392
|
if (!currentUserId) {
|
|
385
|
-
util_1.checkCurrentUserIdNotRequiredForFieldFormulas(configs);
|
|
393
|
+
(0, util_1.checkCurrentUserIdNotRequiredForFieldFormulas)(configs);
|
|
386
394
|
}
|
|
387
395
|
if (!(needRefetchDoc !== false)) return [3 /*break*/, 4];
|
|
388
|
-
formulaVarFields = exports.pickFieldFormulaVarFields(configs);
|
|
389
|
-
return [4 /*yield*/, index_1.getSteedosSchema().getObject(objectName).findOne(recordId, { fields: formulaVarFields })];
|
|
396
|
+
formulaVarFields = (0, exports.pickFieldFormulaVarFields)(configs);
|
|
397
|
+
return [4 /*yield*/, (0, index_1.getSteedosSchema)().getObject(objectName).findOne(recordId, { fields: formulaVarFields })];
|
|
390
398
|
case 3:
|
|
391
399
|
doc = _d.sent();
|
|
392
400
|
_d.label = 4;
|
|
@@ -395,7 +403,7 @@ exports.runCurrentObjectFieldFormulas = function (objectName, recordId, doc, cur
|
|
|
395
403
|
_d.label = 5;
|
|
396
404
|
case 5:
|
|
397
405
|
_d.trys.push([5, 10, 11, 12]);
|
|
398
|
-
configs_1 = tslib_1.__values(configs), configs_1_1 = configs_1.next();
|
|
406
|
+
configs_1 = (0, tslib_1.__values)(configs), configs_1_1 = configs_1.next();
|
|
399
407
|
_d.label = 6;
|
|
400
408
|
case 6:
|
|
401
409
|
if (!!configs_1_1.done) return [3 /*break*/, 9];
|
|
@@ -403,7 +411,7 @@ exports.runCurrentObjectFieldFormulas = function (objectName, recordId, doc, cur
|
|
|
403
411
|
doc = Object.assign({}, doc, setDoc); //setDoc中计算得到的结果应该重新并到doc中支持计算
|
|
404
412
|
_a = setDoc;
|
|
405
413
|
_b = config.field_name;
|
|
406
|
-
return [4 /*yield*/, exports.computeFieldFormulaValue(doc, config, currentUserId)];
|
|
414
|
+
return [4 /*yield*/, (0, exports.computeFieldFormulaValue)(doc, config, currentUserId)];
|
|
407
415
|
case 7:
|
|
408
416
|
_a[_b] = _d.sent();
|
|
409
417
|
_d.label = 8;
|
|
@@ -421,7 +429,7 @@ exports.runCurrentObjectFieldFormulas = function (objectName, recordId, doc, cur
|
|
|
421
429
|
}
|
|
422
430
|
finally { if (e_3) throw e_3.error; }
|
|
423
431
|
return [7 /*endfinally*/];
|
|
424
|
-
case 12: return [4 /*yield*/, index_1.getSteedosSchema().getObject(objectName).directUpdate(recordId, setDoc)];
|
|
432
|
+
case 12: return [4 /*yield*/, (0, index_1.getSteedosSchema)().getObject(objectName).directUpdate(recordId, setDoc)];
|
|
425
433
|
case 13:
|
|
426
434
|
_d.sent();
|
|
427
435
|
return [2 /*return*/];
|
|
@@ -429,40 +437,41 @@ exports.runCurrentObjectFieldFormulas = function (objectName, recordId, doc, cur
|
|
|
429
437
|
});
|
|
430
438
|
});
|
|
431
439
|
};
|
|
440
|
+
exports.runCurrentObjectFieldFormulas = runCurrentObjectFieldFormulas;
|
|
432
441
|
/**
|
|
433
442
|
* 找到当前正在update的对象多条记录的公式字段并更新其字段值
|
|
434
443
|
* @param objectName
|
|
435
444
|
* @param filters
|
|
436
445
|
* @param currentUserId
|
|
437
446
|
*/
|
|
438
|
-
|
|
439
|
-
return tslib_1.__awaiter(this, void 0, void 0, function () {
|
|
447
|
+
var runManyCurrentObjectFieldFormulas = function (objectName, filters, currentUserId) {
|
|
448
|
+
return (0, tslib_1.__awaiter)(this, void 0, void 0, function () {
|
|
440
449
|
var configs, formulaVarFields, docs, docs_1, docs_1_1, doc, e_4_1;
|
|
441
450
|
var e_4, _a;
|
|
442
|
-
return tslib_1.__generator(this, function (_b) {
|
|
451
|
+
return (0, tslib_1.__generator)(this, function (_b) {
|
|
443
452
|
switch (_b.label) {
|
|
444
|
-
case 0: return [4 /*yield*/, field_formula_1.getObjectFieldFormulaConfigs(objectName)];
|
|
453
|
+
case 0: return [4 /*yield*/, (0, field_formula_1.getObjectFieldFormulaConfigs)(objectName)];
|
|
445
454
|
case 1:
|
|
446
455
|
configs = _b.sent();
|
|
447
456
|
if (!configs.length) {
|
|
448
457
|
return [2 /*return*/];
|
|
449
458
|
}
|
|
450
459
|
if (!currentUserId) {
|
|
451
|
-
util_1.checkCurrentUserIdNotRequiredForFieldFormulas(configs);
|
|
460
|
+
(0, util_1.checkCurrentUserIdNotRequiredForFieldFormulas)(configs);
|
|
452
461
|
}
|
|
453
|
-
formulaVarFields = exports.pickFieldFormulaVarFields(configs);
|
|
454
|
-
return [4 /*yield*/, index_1.getSteedosSchema().getObject(objectName).find({ filters: filters, fields: formulaVarFields })];
|
|
462
|
+
formulaVarFields = (0, exports.pickFieldFormulaVarFields)(configs);
|
|
463
|
+
return [4 /*yield*/, (0, index_1.getSteedosSchema)().getObject(objectName).find({ filters: filters, fields: formulaVarFields })];
|
|
455
464
|
case 2:
|
|
456
465
|
docs = _b.sent();
|
|
457
466
|
_b.label = 3;
|
|
458
467
|
case 3:
|
|
459
468
|
_b.trys.push([3, 8, 9, 10]);
|
|
460
|
-
docs_1 = tslib_1.__values(docs), docs_1_1 = docs_1.next();
|
|
469
|
+
docs_1 = (0, tslib_1.__values)(docs), docs_1_1 = docs_1.next();
|
|
461
470
|
_b.label = 4;
|
|
462
471
|
case 4:
|
|
463
472
|
if (!!docs_1_1.done) return [3 /*break*/, 7];
|
|
464
473
|
doc = docs_1_1.value;
|
|
465
|
-
return [4 /*yield*/, exports.runCurrentObjectFieldFormulas(objectName, doc._id, doc, currentUserId, false, configs)];
|
|
474
|
+
return [4 /*yield*/, (0, exports.runCurrentObjectFieldFormulas)(objectName, doc._id, doc, currentUserId, false, configs)];
|
|
466
475
|
case 5:
|
|
467
476
|
_b.sent();
|
|
468
477
|
_b.label = 6;
|
|
@@ -485,28 +494,29 @@ exports.runManyCurrentObjectFieldFormulas = function (objectName, filters, curre
|
|
|
485
494
|
});
|
|
486
495
|
});
|
|
487
496
|
};
|
|
497
|
+
exports.runManyCurrentObjectFieldFormulas = runManyCurrentObjectFieldFormulas;
|
|
488
498
|
/**
|
|
489
499
|
* 修改记录时,根据查到的引用了该记录相关字段公式配置,重新计算字段公式,并把计算结果更新到数据库相关记录中
|
|
490
500
|
* @param objectName 当前修改的记录所属对象名称
|
|
491
501
|
* @param recordId 当前修改的记录ID
|
|
492
502
|
* @param fieldFormulaConfig 查到的引用了该记录所属对象的相关字段公式配置之一
|
|
493
503
|
*/
|
|
494
|
-
|
|
504
|
+
var updateQuotedByObjectFieldFormulaValue = function (objectName, recordId, fieldFormulaConfig, userSession, escapeConfigs) { return (0, tslib_1.__awaiter)(void 0, void 0, void 0, function () {
|
|
495
505
|
var vars, fieldFormulaObjectName, toAggregatePaths, vars_2, vars_2_1, varItem, paths, isInPaths, varItemToAggregatePaths, paths_1, paths_1_1, pathItem, formulaVarFields, toAggregatePaths_1, toAggregatePaths_1_1, toAggregatePathsItem, tempPath, doc, docs, aggregateLookups, lastLookupAs, aggregateFilters, docs, e_5_1;
|
|
496
506
|
var e_6, _a, e_7, _b, e_5, _c;
|
|
497
|
-
return tslib_1.__generator(this, function (_d) {
|
|
507
|
+
return (0, tslib_1.__generator)(this, function (_d) {
|
|
498
508
|
switch (_d.label) {
|
|
499
509
|
case 0:
|
|
500
510
|
vars = fieldFormulaConfig.vars, fieldFormulaObjectName = fieldFormulaConfig.object_name;
|
|
501
511
|
toAggregatePaths = [];
|
|
502
512
|
try {
|
|
503
|
-
for (vars_2 = tslib_1.__values(vars), vars_2_1 = vars_2.next(); !vars_2_1.done; vars_2_1 = vars_2.next()) {
|
|
513
|
+
for (vars_2 = (0, tslib_1.__values)(vars), vars_2_1 = vars_2.next(); !vars_2_1.done; vars_2_1 = vars_2.next()) {
|
|
504
514
|
varItem = vars_2_1.value;
|
|
505
515
|
paths = varItem.paths;
|
|
506
516
|
isInPaths = false;
|
|
507
517
|
varItemToAggregatePaths = [];
|
|
508
518
|
try {
|
|
509
|
-
for (paths_1 = (e_7 = void 0, tslib_1.__values(paths)), paths_1_1 = paths_1.next(); !paths_1_1.done; paths_1_1 = paths_1.next()) {
|
|
519
|
+
for (paths_1 = (e_7 = void 0, (0, tslib_1.__values)(paths)), paths_1_1 = paths_1.next(); !paths_1_1.done; paths_1_1 = paths_1.next()) {
|
|
510
520
|
pathItem = paths_1_1.value;
|
|
511
521
|
varItemToAggregatePaths.push(pathItem);
|
|
512
522
|
if (pathItem.reference_from === objectName) {
|
|
@@ -535,11 +545,11 @@ exports.updateQuotedByObjectFieldFormulaValue = function (objectName, recordId,
|
|
|
535
545
|
}
|
|
536
546
|
finally { if (e_6) throw e_6.error; }
|
|
537
547
|
}
|
|
538
|
-
formulaVarFields = exports.pickFieldFormulaVarFields(fieldFormulaConfig);
|
|
548
|
+
formulaVarFields = (0, exports.pickFieldFormulaVarFields)(fieldFormulaConfig);
|
|
539
549
|
_d.label = 1;
|
|
540
550
|
case 1:
|
|
541
551
|
_d.trys.push([1, 14, 15, 16]);
|
|
542
|
-
toAggregatePaths_1 = tslib_1.__values(toAggregatePaths), toAggregatePaths_1_1 = toAggregatePaths_1.next();
|
|
552
|
+
toAggregatePaths_1 = (0, tslib_1.__values)(toAggregatePaths), toAggregatePaths_1_1 = toAggregatePaths_1.next();
|
|
543
553
|
_d.label = 2;
|
|
544
554
|
case 2:
|
|
545
555
|
if (!!toAggregatePaths_1_1.done) return [3 /*break*/, 13];
|
|
@@ -547,32 +557,32 @@ exports.updateQuotedByObjectFieldFormulaValue = function (objectName, recordId,
|
|
|
547
557
|
if (!(toAggregatePathsItem.length < 3)) return [3 /*break*/, 9];
|
|
548
558
|
tempPath = toAggregatePathsItem[0];
|
|
549
559
|
if (!(fieldFormulaObjectName === objectName && tempPath.reference_from === objectName)) return [3 /*break*/, 5];
|
|
550
|
-
return [4 /*yield*/, index_1.getSteedosSchema().getObject(fieldFormulaObjectName).findOne(recordId, { fields: formulaVarFields })];
|
|
560
|
+
return [4 /*yield*/, (0, index_1.getSteedosSchema)().getObject(fieldFormulaObjectName).findOne(recordId, { fields: formulaVarFields })];
|
|
551
561
|
case 3:
|
|
552
562
|
doc = _d.sent();
|
|
553
|
-
return [4 /*yield*/, exports.updateDocsFieldFormulaValue(doc, fieldFormulaConfig, userSession, escapeConfigs)];
|
|
563
|
+
return [4 /*yield*/, (0, exports.updateDocsFieldFormulaValue)(doc, fieldFormulaConfig, userSession, escapeConfigs)];
|
|
554
564
|
case 4:
|
|
555
565
|
_d.sent();
|
|
556
566
|
return [3 /*break*/, 8];
|
|
557
|
-
case 5: return [4 /*yield*/, index_1.getSteedosSchema().getObject(fieldFormulaObjectName).find({ filters: [[tempPath.field_name, "=", recordId]], fields: formulaVarFields })];
|
|
567
|
+
case 5: return [4 /*yield*/, (0, index_1.getSteedosSchema)().getObject(fieldFormulaObjectName).find({ filters: [[tempPath.field_name, "=", recordId]], fields: formulaVarFields })];
|
|
558
568
|
case 6:
|
|
559
569
|
docs = _d.sent();
|
|
560
|
-
return [4 /*yield*/, exports.updateDocsFieldFormulaValue(docs, fieldFormulaConfig, userSession, escapeConfigs)];
|
|
570
|
+
return [4 /*yield*/, (0, exports.updateDocsFieldFormulaValue)(docs, fieldFormulaConfig, userSession, escapeConfigs)];
|
|
561
571
|
case 7:
|
|
562
572
|
_d.sent();
|
|
563
573
|
_d.label = 8;
|
|
564
574
|
case 8: return [3 /*break*/, 12];
|
|
565
575
|
case 9:
|
|
566
|
-
aggregateLookups = util_1.getFormulaVarPathsAggregateLookups(toAggregatePathsItem);
|
|
576
|
+
aggregateLookups = (0, util_1.getFormulaVarPathsAggregateLookups)(toAggregatePathsItem);
|
|
567
577
|
lastLookupAs = aggregateLookups[aggregateLookups.length - 1]["$lookup"].as;
|
|
568
|
-
aggregateFilters = [[lastLookupAs
|
|
569
|
-
return [4 /*yield*/, index_1.getSteedosSchema().getObject(fieldFormulaObjectName).directAggregatePrefixalPipeline({
|
|
578
|
+
aggregateFilters = [["".concat(lastLookupAs, "._id"), "=", recordId]];
|
|
579
|
+
return [4 /*yield*/, (0, index_1.getSteedosSchema)().getObject(fieldFormulaObjectName).directAggregatePrefixalPipeline({
|
|
570
580
|
filters: aggregateFilters,
|
|
571
581
|
fields: formulaVarFields
|
|
572
582
|
}, aggregateLookups)];
|
|
573
583
|
case 10:
|
|
574
584
|
docs = _d.sent();
|
|
575
|
-
return [4 /*yield*/, exports.updateDocsFieldFormulaValue(docs, fieldFormulaConfig, userSession, escapeConfigs)];
|
|
585
|
+
return [4 /*yield*/, (0, exports.updateDocsFieldFormulaValue)(docs, fieldFormulaConfig, userSession, escapeConfigs)];
|
|
576
586
|
case 11:
|
|
577
587
|
_d.sent();
|
|
578
588
|
_d.label = 12;
|
|
@@ -594,10 +604,11 @@ exports.updateQuotedByObjectFieldFormulaValue = function (objectName, recordId,
|
|
|
594
604
|
}
|
|
595
605
|
});
|
|
596
606
|
}); };
|
|
597
|
-
exports.
|
|
607
|
+
exports.updateQuotedByObjectFieldFormulaValue = updateQuotedByObjectFieldFormulaValue;
|
|
608
|
+
var updateDocsFieldFormulaValue = function (docs, fieldFormulaConfig, userSession, escapeConfigs) { return (0, tslib_1.__awaiter)(void 0, void 0, void 0, function () {
|
|
598
609
|
var fieldFormulaObjectName, currentUserId, docs_2, docs_2_1, doc, value, setDoc, e_8_1;
|
|
599
610
|
var e_8, _a;
|
|
600
|
-
return tslib_1.__generator(this, function (_b) {
|
|
611
|
+
return (0, tslib_1.__generator)(this, function (_b) {
|
|
601
612
|
switch (_b.label) {
|
|
602
613
|
case 0:
|
|
603
614
|
fieldFormulaObjectName = fieldFormulaConfig.object_name;
|
|
@@ -608,17 +619,17 @@ exports.updateDocsFieldFormulaValue = function (docs, fieldFormulaConfig, userSe
|
|
|
608
619
|
_b.label = 1;
|
|
609
620
|
case 1:
|
|
610
621
|
_b.trys.push([1, 7, 8, 9]);
|
|
611
|
-
docs_2 = tslib_1.__values(docs), docs_2_1 = docs_2.next();
|
|
622
|
+
docs_2 = (0, tslib_1.__values)(docs), docs_2_1 = docs_2.next();
|
|
612
623
|
_b.label = 2;
|
|
613
624
|
case 2:
|
|
614
625
|
if (!!docs_2_1.done) return [3 /*break*/, 6];
|
|
615
626
|
doc = docs_2_1.value;
|
|
616
|
-
return [4 /*yield*/, exports.computeFieldFormulaValue(doc, fieldFormulaConfig, currentUserId)];
|
|
627
|
+
return [4 /*yield*/, (0, exports.computeFieldFormulaValue)(doc, fieldFormulaConfig, currentUserId)];
|
|
617
628
|
case 3:
|
|
618
629
|
value = _b.sent();
|
|
619
630
|
setDoc = {};
|
|
620
631
|
setDoc[fieldFormulaConfig.field_name] = value;
|
|
621
|
-
return [4 /*yield*/, index_1.getSteedosSchema().getObject(fieldFormulaObjectName).directUpdate(doc._id, setDoc)];
|
|
632
|
+
return [4 /*yield*/, (0, index_1.getSteedosSchema)().getObject(fieldFormulaObjectName).directUpdate(doc._id, setDoc)];
|
|
622
633
|
case 4:
|
|
623
634
|
_b.sent();
|
|
624
635
|
_b.label = 5;
|
|
@@ -638,7 +649,7 @@ exports.updateDocsFieldFormulaValue = function (docs, fieldFormulaConfig, userSe
|
|
|
638
649
|
return [7 /*endfinally*/];
|
|
639
650
|
case 9:
|
|
640
651
|
// 这里特意重新遍历一次docs而不是直接在当前函数中每次更新一条记录后立即处理被引用字段的级联变更,见:公式或汇总触发级联重算时,数据类型变更可能会造成无法重算 #965
|
|
641
|
-
return [4 /*yield*/, exports.updateQuotedByDocsForFormulaType(docs, fieldFormulaConfig, userSession, escapeConfigs)];
|
|
652
|
+
return [4 /*yield*/, (0, exports.updateQuotedByDocsForFormulaType)(docs, fieldFormulaConfig, userSession, escapeConfigs)];
|
|
642
653
|
case 10:
|
|
643
654
|
// 这里特意重新遍历一次docs而不是直接在当前函数中每次更新一条记录后立即处理被引用字段的级联变更,见:公式或汇总触发级联重算时,数据类型变更可能会造成无法重算 #965
|
|
644
655
|
_b.sent();
|
|
@@ -646,10 +657,11 @@ exports.updateDocsFieldFormulaValue = function (docs, fieldFormulaConfig, userSe
|
|
|
646
657
|
}
|
|
647
658
|
});
|
|
648
659
|
}); };
|
|
649
|
-
exports.
|
|
660
|
+
exports.updateDocsFieldFormulaValue = updateDocsFieldFormulaValue;
|
|
661
|
+
var updateQuotedByDocsForFormulaType = function (docs, fieldFormulaConfig, userSession, escapeConfigs) { return (0, tslib_1.__awaiter)(void 0, void 0, void 0, function () {
|
|
650
662
|
var fieldFormulaObjectName, fieldNames, formulaQuotedByConfigs, summaryQuotedByConfigs, docs_3, docs_3_1, doc, e_9_1;
|
|
651
663
|
var e_9, _a;
|
|
652
|
-
return tslib_1.__generator(this, function (_b) {
|
|
664
|
+
return (0, tslib_1.__generator)(this, function (_b) {
|
|
653
665
|
switch (_b.label) {
|
|
654
666
|
case 0:
|
|
655
667
|
fieldFormulaObjectName = fieldFormulaConfig.object_name;
|
|
@@ -657,22 +669,22 @@ exports.updateQuotedByDocsForFormulaType = function (docs, fieldFormulaConfig, u
|
|
|
657
669
|
docs = [docs];
|
|
658
670
|
}
|
|
659
671
|
fieldNames = [fieldFormulaConfig.field_name];
|
|
660
|
-
return [4 /*yield*/, field_formula_1.getObjectQuotedByFieldFormulaConfigs(fieldFormulaObjectName, fieldNames, escapeConfigs)];
|
|
672
|
+
return [4 /*yield*/, (0, field_formula_1.getObjectQuotedByFieldFormulaConfigs)(fieldFormulaObjectName, fieldNames, escapeConfigs)];
|
|
661
673
|
case 1:
|
|
662
674
|
formulaQuotedByConfigs = _b.sent();
|
|
663
|
-
return [4 /*yield*/, summary_1.getObjectQuotedByFieldSummaryConfigs(fieldFormulaObjectName, fieldNames)];
|
|
675
|
+
return [4 /*yield*/, (0, summary_1.getObjectQuotedByFieldSummaryConfigs)(fieldFormulaObjectName, fieldNames)];
|
|
664
676
|
case 2:
|
|
665
677
|
summaryQuotedByConfigs = _b.sent();
|
|
666
678
|
_b.label = 3;
|
|
667
679
|
case 3:
|
|
668
680
|
_b.trys.push([3, 9, 10, 11]);
|
|
669
|
-
docs_3 = tslib_1.__values(docs), docs_3_1 = docs_3.next();
|
|
681
|
+
docs_3 = (0, tslib_1.__values)(docs), docs_3_1 = docs_3.next();
|
|
670
682
|
_b.label = 4;
|
|
671
683
|
case 4:
|
|
672
684
|
if (!!docs_3_1.done) return [3 /*break*/, 8];
|
|
673
685
|
doc = docs_3_1.value;
|
|
674
686
|
// 公式字段修改后,需要找到引用了该公式字段的其他公式字段并更新其值
|
|
675
|
-
return [4 /*yield*/, exports.runQuotedByObjectFieldFormulas(fieldFormulaObjectName, doc._id, userSession, {
|
|
687
|
+
return [4 /*yield*/, (0, exports.runQuotedByObjectFieldFormulas)(fieldFormulaObjectName, doc._id, userSession, {
|
|
676
688
|
fieldNames: fieldNames,
|
|
677
689
|
quotedByConfigs: formulaQuotedByConfigs,
|
|
678
690
|
escapeConfigs: escapeConfigs
|
|
@@ -683,7 +695,7 @@ exports.updateQuotedByDocsForFormulaType = function (docs, fieldFormulaConfig, u
|
|
|
683
695
|
// 公式字段修改后,需要找到引用了该公式字段的其他公式字段并更新其值
|
|
684
696
|
_b.sent();
|
|
685
697
|
// 公式字段修改后,需要找到引用了该公式字段的其他汇总字段并更新其值
|
|
686
|
-
return [4 /*yield*/, summary_1.runQuotedByObjectFieldSummaries(fieldFormulaObjectName, doc._id, null, userSession, {
|
|
698
|
+
return [4 /*yield*/, (0, summary_1.runQuotedByObjectFieldSummaries)(fieldFormulaObjectName, doc._id, null, userSession, {
|
|
687
699
|
fieldNames: fieldNames,
|
|
688
700
|
quotedByConfigs: summaryQuotedByConfigs
|
|
689
701
|
})];
|
|
@@ -709,6 +721,7 @@ exports.updateQuotedByDocsForFormulaType = function (docs, fieldFormulaConfig, u
|
|
|
709
721
|
}
|
|
710
722
|
});
|
|
711
723
|
}); };
|
|
724
|
+
exports.updateQuotedByDocsForFormulaType = updateQuotedByDocsForFormulaType;
|
|
712
725
|
/**
|
|
713
726
|
* 某个对象上的公式字段是否引用了某个对象和字段
|
|
714
727
|
* @param formulaObjectName 公式字段在所在对象名称
|
|
@@ -716,15 +729,15 @@ exports.updateQuotedByDocsForFormulaType = function (docs, fieldFormulaConfig, u
|
|
|
716
729
|
* @param object_name 是否引用了该对象
|
|
717
730
|
* @param field_name 是否引用了该字段
|
|
718
731
|
*/
|
|
719
|
-
|
|
732
|
+
var isFormulaFieldQuotingObjectAndFields = function (formulaObjectName, formulaFieldName, objectName, fieldNames) { return (0, tslib_1.__awaiter)(void 0, void 0, void 0, function () {
|
|
720
733
|
var configs;
|
|
721
|
-
return tslib_1.__generator(this, function (_a) {
|
|
734
|
+
return (0, tslib_1.__generator)(this, function (_a) {
|
|
722
735
|
switch (_a.label) {
|
|
723
|
-
case 0: return [4 /*yield*/, field_formula_1.getObjectFieldFormulaConfigs(formulaObjectName, formulaFieldName)];
|
|
736
|
+
case 0: return [4 /*yield*/, (0, field_formula_1.getObjectFieldFormulaConfigs)(formulaObjectName, formulaFieldName)];
|
|
724
737
|
case 1:
|
|
725
738
|
configs = _a.sent();
|
|
726
739
|
if (configs && configs.length) {
|
|
727
|
-
return [2 /*return*/, util_1.isFieldFormulaConfigQuotingObjectAndFields(configs[0], objectName, fieldNames)];
|
|
740
|
+
return [2 /*return*/, (0, util_1.isFieldFormulaConfigQuotingObjectAndFields)(configs[0], objectName, fieldNames)];
|
|
728
741
|
}
|
|
729
742
|
else {
|
|
730
743
|
// 没找到公式字段配置说明传入的参数不是公式字段
|
|
@@ -734,4 +747,5 @@ exports.isFormulaFieldQuotingObjectAndFields = function (formulaObjectName, form
|
|
|
734
747
|
}
|
|
735
748
|
});
|
|
736
749
|
}); };
|
|
750
|
+
exports.isFormulaFieldQuotingObjectAndFields = isFormulaFieldQuotingObjectAndFields;
|
|
737
751
|
//# sourceMappingURL=core.js.map
|