@byteluck-fe/model-driven-engine 2.7.0-alpha.15a → 2.7.0-alpha.15c

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,12 +1,12 @@
1
- function _arrayLikeToArray(arr, len) {
1
+ function _array_like_to_array(arr, len) {
2
2
  if (len == null || len > arr.length) len = arr.length;
3
3
  for(var i = 0, arr2 = new Array(len); i < len; i++)arr2[i] = arr[i];
4
4
  return arr2;
5
5
  }
6
- function _arrayWithoutHoles(arr) {
7
- if (Array.isArray(arr)) return _arrayLikeToArray(arr);
6
+ function _array_without_holes(arr) {
7
+ if (Array.isArray(arr)) return _array_like_to_array(arr);
8
8
  }
9
- function _classCallCheck(instance, Constructor) {
9
+ function _class_call_check(instance, Constructor) {
10
10
  if (!(instance instanceof Constructor)) {
11
11
  throw new TypeError("Cannot call a class as a function");
12
12
  }
@@ -20,30 +20,43 @@ function _defineProperties(target, props) {
20
20
  Object.defineProperty(target, descriptor.key, descriptor);
21
21
  }
22
22
  }
23
- function _createClass(Constructor, protoProps, staticProps) {
23
+ function _create_class(Constructor, protoProps, staticProps) {
24
24
  if (protoProps) _defineProperties(Constructor.prototype, protoProps);
25
25
  if (staticProps) _defineProperties(Constructor, staticProps);
26
26
  return Constructor;
27
27
  }
28
- function _iterableToArray(iter) {
28
+ function _define_property(obj, key, value) {
29
+ if (key in obj) {
30
+ Object.defineProperty(obj, key, {
31
+ value: value,
32
+ enumerable: true,
33
+ configurable: true,
34
+ writable: true
35
+ });
36
+ } else {
37
+ obj[key] = value;
38
+ }
39
+ return obj;
40
+ }
41
+ function _iterable_to_array(iter) {
29
42
  if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter);
30
43
  }
31
- function _nonIterableSpread() {
44
+ function _non_iterable_spread() {
32
45
  throw new TypeError("Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
33
46
  }
34
- function _toConsumableArray(arr) {
35
- return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread();
47
+ function _to_consumable_array(arr) {
48
+ return _array_without_holes(arr) || _iterable_to_array(arr) || _unsupported_iterable_to_array(arr) || _non_iterable_spread();
36
49
  }
37
- function _unsupportedIterableToArray(o, minLen) {
50
+ function _unsupported_iterable_to_array(o, minLen) {
38
51
  if (!o) return;
39
- if (typeof o === "string") return _arrayLikeToArray(o, minLen);
52
+ if (typeof o === "string") return _array_like_to_array(o, minLen);
40
53
  var n = Object.prototype.toString.call(o).slice(8, -1);
41
54
  if (n === "Object" && o.constructor) n = o.constructor.name;
42
55
  if (n === "Map" || n === "Set") return Array.from(n);
43
- if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);
56
+ if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _array_like_to_array(o, minLen);
44
57
  }
45
- import { CONTROL_TYPE, CALC_TOKEN_TYPE, CALC_AGGREGATE_TYPE } from '@byteluck-fe/model-driven-shared';
46
- import { format } from 'mathjs';
58
+ import { CONTROL_TYPE, CALC_TOKEN_TYPE, CALC_AGGREGATE_TYPE } from "@byteluck-fe/model-driven-shared";
59
+ import { format } from "mathjs";
47
60
  var DisplayType;
48
61
  (function(DisplayType) {
49
62
  DisplayType[/**
@@ -56,38 +69,40 @@ var DisplayType;
56
69
  export var CalcPlugin = /*#__PURE__*/ function() {
57
70
  "use strict";
58
71
  function CalcPlugin(options) {
59
- _classCallCheck(this, CalcPlugin);
72
+ _class_call_check(this, CalcPlugin);
73
+ _define_property(this, "engine", void 0);
74
+ _define_property(this, "options", void 0);
60
75
  /**
61
76
  * 所有的计算公式控件
62
77
  * */ // @ts-ignore
63
- this.calcControls = [];
78
+ _define_property(this, "calcControls", []);
64
79
  /**
65
80
  * key=控件id value=控件修改后需要触发重新计算的计算公式控件组成的数组
66
81
  * 存储为一个Map,用于在控件change的时候,重新计算依赖的calc
67
- * */ this.dependenciesTriggerMap = new Map();
82
+ * */ _define_property(this, "dependenciesTriggerMap", new Map());
68
83
  /**
69
84
  * 隐藏以后需要被计算的控件
70
- * */ this.hideNotRememberControlIds = [];
71
- this.dontHasPermissionControlIds = [];
72
- this.cacheComputedResult = {};
85
+ * */ _define_property(this, "hideNotRememberControlIds", []);
86
+ _define_property(this, "dontHasPermissionControlIds", []);
87
+ _define_property(this, "cacheComputedResult", {});
73
88
  this.options = options;
74
89
  this.getDontHasPermissionControlIds();
75
90
  this.getNeedHideRememberControlIds();
76
91
  }
77
- _createClass(CalcPlugin, [
92
+ _create_class(CalcPlugin, [
78
93
  {
79
94
  key: "getNeedHideRememberControlIds",
80
95
  value: /**
81
96
  * @description 获取显隐控制的需要被记住值的控件id
82
97
  * */ function getNeedHideRememberControlIds() {
83
- var ref;
84
- if (!((ref = this.options) === null || ref === void 0 ? void 0 : ref.displayBoList)) {
98
+ var _this_options;
99
+ if (!((_this_options = this.options) === null || _this_options === void 0 ? void 0 : _this_options.displayBoList)) {
85
100
  return;
86
101
  }
87
102
  this.hideNotRememberControlIds = this.options.displayBoList.reduce(function(result, current) {
88
103
  if (!current.is_remember) {
89
104
  var _result;
90
- (_result = result).push.apply(_result, _toConsumableArray(current.hide_controls));
105
+ (_result = result).push.apply(_result, _to_consumable_array(current.hide_controls));
91
106
  }
92
107
  return result;
93
108
  }, []);
@@ -98,8 +113,8 @@ export var CalcPlugin = /*#__PURE__*/ function() {
98
113
  value: /**
99
114
  * @description 获取权限控制的隐藏的字段,不需要参与计算
100
115
  * */ function getDontHasPermissionControlIds() {
101
- var ref;
102
- if (!((ref = this.options) === null || ref === void 0 ? void 0 : ref.behavior)) {
116
+ var _this_options;
117
+ if (!((_this_options = this.options) === null || _this_options === void 0 ? void 0 : _this_options.behavior)) {
103
118
  return;
104
119
  }
105
120
  this.dontHasPermissionControlIds = this.options.behavior.reduce(function(result, current) {
@@ -141,7 +156,7 @@ export var CalcPlugin = /*#__PURE__*/ function() {
141
156
  if (control.props.isHide) {
142
157
  return true;
143
158
  }
144
- if (control.parent === null) {
159
+ if (control.parent === null || control.parent === undefined) {
145
160
  return false;
146
161
  }
147
162
  return this.getControlIsHide(control.parent);
@@ -156,7 +171,7 @@ export var CalcPlugin = /*#__PURE__*/ function() {
156
171
  this.watchControlChange();
157
172
  this.watchSubtableChange();
158
173
  this.watchSchemaHideChange();
159
- this.engine.on('engine-mounted', function() {
174
+ this.engine.on("engine-mounted", function() {
160
175
  _this.allCalcControlComputed();
161
176
  });
162
177
  }
@@ -201,16 +216,15 @@ export var CalcPlugin = /*#__PURE__*/ function() {
201
216
  * */ function getCalcDependencies() {
202
217
  var _this = this;
203
218
  this.calcControls.forEach(function(item) {
204
- var _this1 = _this;
205
219
  var scriptEcho = item.props.scriptEcho;
206
220
  scriptEcho.forEach(function(scriptItem) {
207
221
  if (scriptItem.type === CALC_TOKEN_TYPE.VariableInMainTable || scriptItem.type === CALC_TOKEN_TYPE.VariableInCurrentSubTable || scriptItem.type === CALC_TOKEN_TYPE.VariableInOtherSubTable) {
208
222
  // 当前是一个变量,存储依赖于当前变量的计算公式
209
- _this1.setDependenciesTriggerMapItem(scriptItem.id, item);
223
+ _this.setDependenciesTriggerMapItem(scriptItem.id, item);
210
224
  }
211
225
  // 依赖明细子表的计算公式控件,不收集自己表内的,而是主表或者其他明细子表的控件
212
226
  if (scriptItem.type === CALC_TOKEN_TYPE.VariableInOtherSubTable && scriptItem.subTableId) {
213
- _this1.setDependenciesTriggerMapItem(scriptItem.subTableId, item);
227
+ _this.setDependenciesTriggerMapItem(scriptItem.subTableId, item);
214
228
  }
215
229
  });
216
230
  });
@@ -235,12 +249,11 @@ export var CalcPlugin = /*#__PURE__*/ function() {
235
249
  subtableRows) {
236
250
  var _this = this;
237
251
  return subtableRows.reduce(function(result, current) {
238
- var _this2 = _this;
239
252
  // @ts-ignore
240
253
  current.children.forEach(function(item) {
241
254
  var control = item.children[0];
242
255
  // @ts-ignore
243
- if (control && _this2.engine.assertInstance(control, CONTROL_TYPE.CALC)) {
256
+ if (control && _this.engine.assertInstance(control, CONTROL_TYPE.CALC)) {
244
257
  result.push(control);
245
258
  }
246
259
  });
@@ -255,13 +268,12 @@ export var CalcPlugin = /*#__PURE__*/ function() {
255
268
  * @description 监听控件的显隐事件,把显隐会影响的控件触发一遍计算
256
269
  * */ function watchSchemaHideChange() {
257
270
  var _this = this;
258
- this.engine.on('schema-change', function(payload) {
259
- if (payload.props === 'isHide') {
260
- var _this3 = _this;
261
- var ref;
262
- var calcControls = (ref = _this.dependenciesTriggerMap.get(payload.instance.id)) !== null && ref !== void 0 ? ref : [];
271
+ this.engine.on("schema-change", function(payload) {
272
+ if (payload.props === "isHide") {
273
+ var _this_dependenciesTriggerMap_get;
274
+ var calcControls = (_this_dependenciesTriggerMap_get = _this.dependenciesTriggerMap.get(payload.instance.id)) !== null && _this_dependenciesTriggerMap_get !== void 0 ? _this_dependenciesTriggerMap_get : [];
263
275
  calcControls.forEach(function(calc) {
264
- _this3.computedCalcValue(calc);
276
+ _this.computedCalcValue(calc);
265
277
  });
266
278
  }
267
279
  });
@@ -273,23 +285,22 @@ export var CalcPlugin = /*#__PURE__*/ function() {
273
285
  * @description 监听明细子表的change事件,把明细表会影响的控件触发一遍计算
274
286
  * */ function watchSubtableChange() {
275
287
  var _this = this;
276
- this.engine.on('list-change', function(payload) {
277
- var _this5 = _this;
278
- var ref;
288
+ this.engine.on("list-change", function(payload) {
289
+ var _payload_options;
279
290
  _this.resetDependencies();
280
- var ref1;
281
- var changedRows = (ref1 = (ref = payload.options) === null || ref === void 0 ? void 0 : ref.changed) !== null && ref1 !== void 0 ? ref1 : [];
291
+ var _payload_options_changed;
292
+ var changedRows = (_payload_options_changed = (_payload_options = payload.options) === null || _payload_options === void 0 ? void 0 : _payload_options.changed) !== null && _payload_options_changed !== void 0 ? _payload_options_changed : [];
282
293
  // 对发生改变的行进行重新计算
283
294
  var changedCalc = _this.getCalcControlsFromSubtableRows(changedRows);
284
295
  // @ts-ignore
285
296
  changedCalc.forEach(function(calcControl) {
286
- _this5.computedCalcValue(calcControl);
297
+ _this.computedCalcValue(calcControl);
287
298
  });
288
- var ref2;
289
- var calcControls = (ref2 = _this.dependenciesTriggerMap.get(payload.instance.id)) !== null && ref2 !== void 0 ? ref2 : [];
299
+ var _this_dependenciesTriggerMap_get;
300
+ var calcControls = (_this_dependenciesTriggerMap_get = _this.dependenciesTriggerMap.get(payload.instance.id)) !== null && _this_dependenciesTriggerMap_get !== void 0 ? _this_dependenciesTriggerMap_get : [];
290
301
  // @ts-ignore
291
302
  calcControls.forEach(function(calcControl) {
292
- _this5.computedCalcValue(calcControl);
303
+ _this.computedCalcValue(calcControl);
293
304
  });
294
305
  });
295
306
  }
@@ -300,31 +311,29 @@ export var CalcPlugin = /*#__PURE__*/ function() {
300
311
  * @description 监听控件的change事件,当控件change的时候,取到控件会影响的计算公式,然后执行对应的计算
301
312
  * */ function watchControlChange() {
302
313
  var _this = this;
303
- this.engine.on('change', function(payload) {
314
+ this.engine.on("change", function(payload) {
304
315
  var instance = payload.instance;
305
316
  if (!_this.dependenciesTriggerMap.has(instance.id)) {
306
317
  return;
307
318
  }
308
- var ref;
309
- var calcControls = (ref = _this.dependenciesTriggerMap.get(instance.id)) !== null && ref !== void 0 ? ref : [];
319
+ var _this_dependenciesTriggerMap_get;
320
+ var calcControls = (_this_dependenciesTriggerMap_get = _this.dependenciesTriggerMap.get(instance.id)) !== null && _this_dependenciesTriggerMap_get !== void 0 ? _this_dependenciesTriggerMap_get : [];
310
321
  // 在明细子表中的控件,如果计算公式也在明细子表,那只触发同一行的计算公式的计算
311
322
  if (payload.rowIndex !== undefined && payload.rowIndex > -1) {
312
- var _this7 = _this;
313
323
  // @ts-ignore
314
324
  calcControls.forEach(function(calcControl) {
315
- if (_this7.controlInSubtable(calcControl)) {
316
- var calcIndex = _this7.engine.getInstanceRowIndex(calcControl);
325
+ if (_this.controlInSubtable(calcControl)) {
326
+ var calcIndex = _this.engine.getInstanceRowIndex(calcControl);
317
327
  if (calcIndex !== payload.rowIndex) {
318
328
  return;
319
329
  }
320
330
  }
321
- _this7.computedCalcValue(calcControl);
331
+ _this.computedCalcValue(calcControl);
322
332
  });
323
333
  } else {
324
- var _this6 = _this;
325
334
  // @ts-ignore
326
335
  calcControls.forEach(function(calcControl) {
327
- _this6.computedCalcValue(calcControl);
336
+ _this.computedCalcValue(calcControl);
328
337
  });
329
338
  }
330
339
  });
@@ -335,8 +344,8 @@ export var CalcPlugin = /*#__PURE__*/ function() {
335
344
  value: /**
336
345
  * @description 控件在明细子表内
337
346
  * */ function controlInSubtable(control) {
338
- var ref;
339
- return ((ref = control.parent) === null || ref === void 0 ? void 0 : ref.type) === CONTROL_TYPE.SUBTABLE_COLUMN;
347
+ var _control_parent;
348
+ return ((_control_parent = control.parent) === null || _control_parent === void 0 ? void 0 : _control_parent.type) === CONTROL_TYPE.SUBTABLE_COLUMN;
340
349
  }
341
350
  },
342
351
  {
@@ -346,6 +355,7 @@ export var CalcPlugin = /*#__PURE__*/ function() {
346
355
  * */ // @ts-ignore
347
356
  function computedCalcValue(control) {
348
357
  var _this = this;
358
+ var _oldValue, _oldValue1;
349
359
  var scriptEcho = control.props.scriptEcho;
350
360
  if (!scriptEcho || scriptEcho.length === 0) {
351
361
  return;
@@ -380,10 +390,9 @@ export var CalcPlugin = /*#__PURE__*/ function() {
380
390
  }
381
391
  case CALC_TOKEN_TYPE.VariableInOtherSubTable:
382
392
  {
383
- var _this8 = _this;
384
393
  var states = _this.engine.getState(current.id);
385
394
  var values = Array.isArray(states) ? states.map(function(item) {
386
- return _this8.getNumberValue(item);
395
+ return _this.getNumberValue(item);
387
396
  }) : [];
388
397
  var value2 = _this.getAggregateTypeValue(values, current.aggregateType);
389
398
  instance = _this.engine.getInstance(current.subTableId);
@@ -398,17 +407,17 @@ export var CalcPlugin = /*#__PURE__*/ function() {
398
407
  result += 0;
399
408
  }
400
409
  return result;
401
- }, '');
402
- var value3;
410
+ }, "");
411
+ var value;
403
412
  // 有缓存的话取缓存,没有缓存再执行eval
404
413
  if (this.cacheComputedResult[scriptText] !== undefined) {
405
- value3 = this.cacheComputedResult[scriptText];
414
+ value = this.cacheComputedResult[scriptText];
406
415
  } else {
407
416
  // 解决js精准度问题
408
- value3 = Number(format(new Function("return ".concat(scriptText))(), {
417
+ value = Number(format(new Function("return ".concat(scriptText))(), {
409
418
  precision: 16
410
419
  }));
411
- this.cacheComputedResult[scriptText] = value3;
420
+ this.cacheComputedResult[scriptText] = value;
412
421
  }
413
422
  // let rowIndex = undefined
414
423
  if (this.controlInSubtable(control)) {
@@ -419,15 +428,15 @@ export var CalcPlugin = /*#__PURE__*/ function() {
419
428
  }
420
429
  }
421
430
  var oldValue = this.engine.getState(control.id, rowIndex);
422
- var result1 = !value3 || value3 === Infinity || value3 === -Infinity ? 0 : control.props.precision === '' ? value3 : Number(value3.toFixed(control.props.precision));
431
+ var result = !value || value === Infinity || value === -Infinity ? 0 : control.props.precision === "" ? value : Number(value.toFixed(control.props.precision));
423
432
  // 如果值没变的话,不触发修改
424
- if (result1 === (oldValue === null || oldValue === void 0 ? void 0 : oldValue.result)) {
433
+ if (result === ((_oldValue = oldValue) === null || _oldValue === void 0 ? void 0 : _oldValue.result)) {
425
434
  return;
426
435
  }
427
- var ref;
436
+ var _oldValue_unit;
428
437
  this.engine.setState(control.id, {
429
- result: result1,
430
- unit: (ref = oldValue === null || oldValue === void 0 ? void 0 : oldValue.unit) !== null && ref !== void 0 ? ref : ''
438
+ result: result,
439
+ unit: (_oldValue_unit = (_oldValue1 = oldValue) === null || _oldValue1 === void 0 ? void 0 : _oldValue1.unit) !== null && _oldValue_unit !== void 0 ? _oldValue_unit : ""
431
440
  }, rowIndex);
432
441
  }
433
442
  },
@@ -436,14 +445,14 @@ export var CalcPlugin = /*#__PURE__*/ function() {
436
445
  value: /**
437
446
  * @description 获取数字值,因为计算公式可以依赖计算公式和金额,所以需要从value中取到对应的值
438
447
  * */ function getNumberValue(value) {
439
- if (typeof value === 'object' && value) {
440
- if ('result' in value) {
448
+ if (typeof value === "object" && value) {
449
+ if ("result" in value) {
441
450
  return value.result;
442
- } else if ('amount' in value) {
451
+ } else if ("amount" in value) {
443
452
  return value.amount;
444
453
  }
445
454
  }
446
- if (typeof value === 'number') {
455
+ if (typeof value === "number") {
447
456
  return value;
448
457
  }
449
458
  return 0;
@@ -458,10 +467,10 @@ export var CalcPlugin = /*#__PURE__*/ function() {
458
467
  switch(type){
459
468
  case CALC_AGGREGATE_TYPE.MAX:
460
469
  var _Math;
461
- return (_Math = Math).max.apply(_Math, _toConsumableArray(values));
470
+ return (_Math = Math).max.apply(_Math, _to_consumable_array(values));
462
471
  case CALC_AGGREGATE_TYPE.MIN:
463
472
  var _Math1;
464
- return (_Math1 = Math).min.apply(_Math1, _toConsumableArray(values));
473
+ return (_Math1 = Math).min.apply(_Math1, _to_consumable_array(values));
465
474
  case CALC_AGGREGATE_TYPE.SUM:
466
475
  return values.reduce(function(a, b) {
467
476
  return a + b;