@bgroup/wise-form 1.0.1
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/README.md +34 -0
- package/dist/components/ui/Checkbox.d.ts +14 -0
- package/dist/components/ui/Checkbox.d.ts.map +1 -0
- package/dist/components/ui/Checkbox.js +43 -0
- package/dist/components/ui/Checkbox.js.map +1 -0
- package/dist/components/ui/CheckboxGroup.d.ts +15 -0
- package/dist/components/ui/CheckboxGroup.d.ts.map +1 -0
- package/dist/components/ui/CheckboxGroup.js +33 -0
- package/dist/components/ui/CheckboxGroup.js.map +1 -0
- package/dist/components/ui/Input.d.ts +14 -0
- package/dist/components/ui/Input.d.ts.map +1 -0
- package/dist/components/ui/Input.js +49 -0
- package/dist/components/ui/Input.js.map +1 -0
- package/dist/components/ui/Radio.d.ts +14 -0
- package/dist/components/ui/Radio.d.ts.map +1 -0
- package/dist/components/ui/Radio.js +43 -0
- package/dist/components/ui/Radio.js.map +1 -0
- package/dist/components/ui/Select.d.ts +18 -0
- package/dist/components/ui/Select.d.ts.map +1 -0
- package/dist/components/ui/Select.js +44 -0
- package/dist/components/ui/Select.js.map +1 -0
- package/dist/components/ui/Textarea.d.ts +13 -0
- package/dist/components/ui/Textarea.d.ts.map +1 -0
- package/dist/components/ui/Textarea.js +42 -0
- package/dist/components/ui/Textarea.js.map +1 -0
- package/dist/components/ui/index.d.ts +13 -0
- package/dist/components/ui/index.d.ts.map +1 -0
- package/dist/components/ui/index.js +7 -0
- package/dist/components/ui/index.js.map +1 -0
- package/dist/form/index.d.ts +10 -0
- package/dist/form/index.d.ts.map +1 -0
- package/dist/form/index.js +5 -0
- package/dist/form/index.js.map +1 -0
- package/dist/form/interfaces/field-container.d.ts +8 -0
- package/dist/form/interfaces/field-container.d.ts.map +1 -0
- package/dist/form/interfaces/field-container.js +2 -0
- package/dist/form/interfaces/field-container.js.map +1 -0
- package/dist/form/interfaces/interfaces.d.ts +8 -0
- package/dist/form/interfaces/interfaces.d.ts.map +1 -0
- package/dist/form/interfaces/interfaces.js +2 -0
- package/dist/form/interfaces/interfaces.js.map +1 -0
- package/dist/form/interfaces/settings.d.ts +10 -0
- package/dist/form/interfaces/settings.d.ts.map +1 -0
- package/dist/form/interfaces/settings.js +2 -0
- package/dist/form/interfaces/settings.js.map +1 -0
- package/dist/form/interfaces/template.d.ts +6 -0
- package/dist/form/interfaces/template.d.ts.map +1 -0
- package/dist/form/interfaces/template.js +2 -0
- package/dist/form/interfaces/template.js.map +1 -0
- package/dist/form/interfaces/wise-form-specs.d.ts +9 -0
- package/dist/form/interfaces/wise-form-specs.d.ts.map +1 -0
- package/dist/form/interfaces/wise-form-specs.js +2 -0
- package/dist/form/interfaces/wise-form-specs.js.map +1 -0
- package/dist/form/view/components/containers/index.d.ts +3 -0
- package/dist/form/view/components/containers/index.d.ts.map +1 -0
- package/dist/form/view/components/containers/index.js +12 -0
- package/dist/form/view/components/containers/index.js.map +1 -0
- package/dist/form/view/components/error.d.ts +5 -0
- package/dist/form/view/components/error.d.ts.map +1 -0
- package/dist/form/view/components/error.js +8 -0
- package/dist/form/view/components/error.js.map +1 -0
- package/dist/form/view/components/field/container.d.ts +5 -0
- package/dist/form/view/components/field/container.d.ts.map +1 -0
- package/dist/form/view/components/field/container.js +5 -0
- package/dist/form/view/components/field/container.js.map +1 -0
- package/dist/form/view/components/field/index.d.ts +18 -0
- package/dist/form/view/components/field/index.d.ts.map +1 -0
- package/dist/form/view/components/field/index.js +89 -0
- package/dist/form/view/components/field/index.js.map +1 -0
- package/dist/form/view/components/field/selection.d.ts +2 -0
- package/dist/form/view/components/field/selection.d.ts.map +1 -0
- package/dist/form/view/components/field/selection.js +35 -0
- package/dist/form/view/components/field/selection.js.map +1 -0
- package/dist/form/view/components/field/use-field.d.ts +4 -0
- package/dist/form/view/components/field/use-field.d.ts.map +1 -0
- package/dist/form/view/components/field/use-field.js +41 -0
- package/dist/form/view/components/field/use-field.js.map +1 -0
- package/dist/form/view/components/rows/row-container.d.ts +18 -0
- package/dist/form/view/components/rows/row-container.d.ts.map +1 -0
- package/dist/form/view/components/rows/row-container.js +89 -0
- package/dist/form/view/components/rows/row-container.js.map +1 -0
- package/dist/form/view/components/rows/wrapper.d.ts +12 -0
- package/dist/form/view/components/rows/wrapper.d.ts.map +1 -0
- package/dist/form/view/components/rows/wrapper.js +27 -0
- package/dist/form/view/components/rows/wrapper.js.map +1 -0
- package/dist/form/view/components/wrapped-form.d.ts +6 -0
- package/dist/form/view/components/wrapped-form.d.ts.map +1 -0
- package/dist/form/view/components/wrapped-form.js +26 -0
- package/dist/form/view/components/wrapped-form.js.map +1 -0
- package/dist/form/view/context.d.ts +23 -0
- package/dist/form/view/context.d.ts.map +1 -0
- package/dist/form/view/context.js +7 -0
- package/dist/form/view/context.js.map +1 -0
- package/dist/form/view/hooks/use-model.d.ts +10 -0
- package/dist/form/view/hooks/use-model.d.ts.map +1 -0
- package/dist/form/view/hooks/use-model.js +31 -0
- package/dist/form/view/hooks/use-model.js.map +1 -0
- package/dist/form/view/hooks/use-template.d.ts +14 -0
- package/dist/form/view/hooks/use-template.d.ts.map +1 -0
- package/dist/form/view/hooks/use-template.js +57 -0
- package/dist/form/view/hooks/use-template.js.map +1 -0
- package/dist/form/view/hooks/use-types.d.ts +2 -0
- package/dist/form/view/hooks/use-types.d.ts.map +1 -0
- package/dist/form/view/hooks/use-types.js +19 -0
- package/dist/form/view/hooks/use-types.js.map +1 -0
- package/dist/form/view/index.d.ts +3 -0
- package/dist/form/view/index.d.ts.map +1 -0
- package/dist/form/view/index.js +38 -0
- package/dist/form/view/index.js.map +1 -0
- package/dist/formulas/helpers/condition-types.d.ts +5 -0
- package/dist/formulas/helpers/condition-types.d.ts.map +1 -0
- package/dist/formulas/helpers/condition-types.js +5 -0
- package/dist/formulas/helpers/condition-types.js.map +1 -0
- package/dist/formulas/helpers/evaluations.d.ts +15 -0
- package/dist/formulas/helpers/evaluations.d.ts.map +1 -0
- package/dist/formulas/helpers/evaluations.js +44 -0
- package/dist/formulas/helpers/evaluations.js.map +1 -0
- package/dist/formulas/helpers/formula.d.ts +6 -0
- package/dist/formulas/helpers/formula.d.ts.map +1 -0
- package/dist/formulas/helpers/formula.js +26 -0
- package/dist/formulas/helpers/formula.js.map +1 -0
- package/dist/formulas/helpers/lexer.d.ts +10 -0
- package/dist/formulas/helpers/lexer.d.ts.map +1 -0
- package/dist/formulas/helpers/lexer.js +73 -0
- package/dist/formulas/helpers/lexer.js.map +1 -0
- package/dist/formulas/helpers/parser.d.ts +24 -0
- package/dist/formulas/helpers/parser.d.ts.map +1 -0
- package/dist/formulas/helpers/parser.js +48 -0
- package/dist/formulas/helpers/parser.js.map +1 -0
- package/dist/formulas/helpers/token.d.ts +14 -0
- package/dist/formulas/helpers/token.d.ts.map +1 -0
- package/dist/formulas/helpers/token.js +14 -0
- package/dist/formulas/helpers/token.js.map +1 -0
- package/dist/formulas/index.d.ts +59 -0
- package/dist/formulas/index.d.ts.map +1 -0
- package/dist/formulas/index.js +186 -0
- package/dist/formulas/index.js.map +1 -0
- package/dist/formulas/types/formulas.d.ts +68 -0
- package/dist/formulas/types/formulas.d.ts.map +1 -0
- package/dist/formulas/types/formulas.js +2 -0
- package/dist/formulas/types/formulas.js.map +1 -0
- package/dist/formulas/types/index.d.ts +5 -0
- package/dist/formulas/types/index.d.ts.map +1 -0
- package/dist/formulas/types/index.js +2 -0
- package/dist/formulas/types/index.js.map +1 -0
- package/dist/formulas/variants/array-formula.d.ts +24 -0
- package/dist/formulas/variants/array-formula.d.ts.map +1 -0
- package/dist/formulas/variants/array-formula.js +142 -0
- package/dist/formulas/variants/array-formula.js.map +1 -0
- package/dist/formulas/variants/base.d.ts +6 -0
- package/dist/formulas/variants/base.d.ts.map +1 -0
- package/dist/formulas/variants/base.js +3 -0
- package/dist/formulas/variants/base.js.map +1 -0
- package/dist/formulas/variants/basic.d.ts +18 -0
- package/dist/formulas/variants/basic.d.ts.map +1 -0
- package/dist/formulas/variants/basic.js +128 -0
- package/dist/formulas/variants/basic.js.map +1 -0
- package/dist/formulas/variants/comparison.d.ts +25 -0
- package/dist/formulas/variants/comparison.d.ts.map +1 -0
- package/dist/formulas/variants/comparison.js +153 -0
- package/dist/formulas/variants/comparison.js.map +1 -0
- package/dist/formulas/variants/conditional.d.ts +18 -0
- package/dist/formulas/variants/conditional.d.ts.map +1 -0
- package/dist/formulas/variants/conditional.js +183 -0
- package/dist/formulas/variants/conditional.js.map +1 -0
- package/dist/formulas/variants/iterative-array.d.ts +20 -0
- package/dist/formulas/variants/iterative-array.d.ts.map +1 -0
- package/dist/formulas/variants/iterative-array.js +155 -0
- package/dist/formulas/variants/iterative-array.js.map +1 -0
- package/dist/formulas/variants/per-value.d.ts +20 -0
- package/dist/formulas/variants/per-value.d.ts.map +1 -0
- package/dist/formulas/variants/per-value.js +154 -0
- package/dist/formulas/variants/per-value.js.map +1 -0
- package/dist/index.d.ts +5 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +6 -0
- package/dist/index.js.map +1 -0
- package/dist/models/base.d.ts +55 -0
- package/dist/models/base.d.ts.map +1 -0
- package/dist/models/base.js +146 -0
- package/dist/models/base.js.map +1 -0
- package/dist/models/callback-manager.d.ts +7 -0
- package/dist/models/callback-manager.d.ts.map +1 -0
- package/dist/models/callback-manager.js +89 -0
- package/dist/models/callback-manager.js.map +1 -0
- package/dist/models/field.d.ts +121 -0
- package/dist/models/field.d.ts.map +1 -0
- package/dist/models/field.js +374 -0
- package/dist/models/field.js.map +1 -0
- package/dist/models/index.d.ts +13 -0
- package/dist/models/index.d.ts.map +1 -0
- package/dist/models/index.js +7 -0
- package/dist/models/index.js.map +1 -0
- package/dist/models/model.d.ts +37 -0
- package/dist/models/model.d.ts.map +1 -0
- package/dist/models/model.js +245 -0
- package/dist/models/model.js.map +1 -0
- package/dist/models/plugins/base.d.ts +9 -0
- package/dist/models/plugins/base.d.ts.map +1 -0
- package/dist/models/plugins/base.js +3 -0
- package/dist/models/plugins/base.js.map +1 -0
- package/dist/models/plugins/formula.d.ts +18 -0
- package/dist/models/plugins/formula.d.ts.map +1 -0
- package/dist/models/plugins/formula.js +82 -0
- package/dist/models/plugins/formula.js.map +1 -0
- package/dist/models/plugins/index.d.ts +11 -0
- package/dist/models/plugins/index.d.ts.map +1 -0
- package/dist/models/plugins/index.js +52 -0
- package/dist/models/plugins/index.js.map +1 -0
- package/dist/models/plugins/plugins.d.ts +7 -0
- package/dist/models/plugins/plugins.d.ts.map +1 -0
- package/dist/models/plugins/plugins.js +7 -0
- package/dist/models/plugins/plugins.js.map +1 -0
- package/dist/models/types/base-wise-model.d.ts +7 -0
- package/dist/models/types/base-wise-model.d.ts.map +1 -0
- package/dist/models/types/base-wise-model.js +2 -0
- package/dist/models/types/base-wise-model.js.map +1 -0
- package/dist/models/types/callbacks.d.ts +19 -0
- package/dist/models/types/callbacks.d.ts.map +1 -0
- package/dist/models/types/callbacks.js +2 -0
- package/dist/models/types/callbacks.js.map +1 -0
- package/dist/models/types/disabled.d.ts +8 -0
- package/dist/models/types/disabled.d.ts.map +1 -0
- package/dist/models/types/disabled.js +2 -0
- package/dist/models/types/disabled.js.map +1 -0
- package/dist/models/types/form-field.d.ts +25 -0
- package/dist/models/types/form-field.d.ts.map +1 -0
- package/dist/models/types/form-field.js +2 -0
- package/dist/models/types/form-field.js.map +1 -0
- package/dist/models/types/model.d.ts +13 -0
- package/dist/models/types/model.d.ts.map +1 -0
- package/dist/models/types/model.js +2 -0
- package/dist/models/types/model.js.map +1 -0
- package/dist/models/types/plugins.d.ts +13 -0
- package/dist/models/types/plugins.d.ts.map +1 -0
- package/dist/models/types/plugins.js +2 -0
- package/dist/models/types/plugins.js.map +1 -0
- package/dist/models/types/wrapped-form-model-props.d.ts +11 -0
- package/dist/models/types/wrapped-form-model-props.d.ts.map +1 -0
- package/dist/models/types/wrapped-form-model-props.js +2 -0
- package/dist/models/types/wrapped-form-model-props.js.map +1 -0
- package/dist/models/wrapper.d.ts +30 -0
- package/dist/models/wrapper.d.ts.map +1 -0
- package/dist/models/wrapper.js +213 -0
- package/dist/models/wrapper.js.map +1 -0
- package/dist/settings/index.d.ts +7 -0
- package/dist/settings/index.d.ts.map +1 -0
- package/dist/settings/index.js +26 -0
- package/dist/settings/index.js.map +1 -0
- package/dist/utils/pending-promise.d.ts +6 -0
- package/dist/utils/pending-promise.d.ts.map +1 -0
- package/dist/utils/pending-promise.js +24 -0
- package/dist/utils/pending-promise.js.map +1 -0
- package/package.json +38 -0
- package/src/components/ui/Checkbox.tsx +68 -0
- package/src/components/ui/CheckboxGroup.tsx +60 -0
- package/src/components/ui/Input.tsx +72 -0
- package/src/components/ui/Radio.tsx +68 -0
- package/src/components/ui/Select.tsx +73 -0
- package/src/components/ui/Textarea.tsx +63 -0
- package/src/components/ui/index.ts +14 -0
- package/src/form/index.ts +11 -0
- package/src/form/interfaces/field-container.ts +9 -0
- package/src/form/interfaces/interfaces.ts +12 -0
- package/src/form/interfaces/settings.ts +11 -0
- package/src/form/interfaces/template.ts +7 -0
- package/src/form/interfaces/wise-form-specs.ts +10 -0
- package/src/form/styles.css +40 -0
- package/src/form/view/components/containers/index.tsx +18 -0
- package/src/form/view/components/error.tsx +9 -0
- package/src/form/view/components/field/container.tsx +6 -0
- package/src/form/view/components/field/index.tsx +107 -0
- package/src/form/view/components/field/selection.tsx +39 -0
- package/src/form/view/components/field/use-field.tsx +49 -0
- package/src/form/view/components/rows/row-container.tsx +96 -0
- package/src/form/view/components/rows/wrapper.tsx +28 -0
- package/src/form/view/components/wrapped-form.tsx +32 -0
- package/src/form/view/context.tsx +26 -0
- package/src/form/view/hooks/use-model.ts +37 -0
- package/src/form/view/hooks/use-template.tsx +64 -0
- package/src/form/view/hooks/use-types.ts +21 -0
- package/src/form/view/index.tsx +48 -0
- package/src/formulas/helpers/condition-types.ts +5 -0
- package/src/formulas/helpers/evaluations.ts +48 -0
- package/src/formulas/helpers/formula.ts +27 -0
- package/src/formulas/helpers/lexer.ts +82 -0
- package/src/formulas/helpers/parser.ts +55 -0
- package/src/formulas/helpers/token.ts +22 -0
- package/src/formulas/index.ts +198 -0
- package/src/formulas/types/formulas.ts +72 -0
- package/src/formulas/types/index.ts +5 -0
- package/src/formulas/variants/array-formula.ts +138 -0
- package/src/formulas/variants/base.ts +6 -0
- package/src/formulas/variants/basic.ts +141 -0
- package/src/formulas/variants/comparison.ts +156 -0
- package/src/formulas/variants/conditional.ts +208 -0
- package/src/formulas/variants/iterative-array.ts +152 -0
- package/src/formulas/variants/per-value.ts +152 -0
- package/src/index.ts +6 -0
- package/src/models/base.ts +164 -0
- package/src/models/callback-manager.ts +102 -0
- package/src/models/field.ts +426 -0
- package/src/models/index.ts +14 -0
- package/src/models/model.ts +260 -0
- package/src/models/plugins/base.ts +11 -0
- package/src/models/plugins/formula.ts +80 -0
- package/src/models/plugins/index.ts +48 -0
- package/src/models/plugins/plugins.ts +8 -0
- package/src/models/types/base-wise-model.ts +7 -0
- package/src/models/types/callbacks.ts +23 -0
- package/src/models/types/disabled.ts +8 -0
- package/src/models/types/form-field.ts +22 -0
- package/src/models/types/model.ts +14 -0
- package/src/models/types/plugins.ts +15 -0
- package/src/models/types/wrapped-form-model-props.ts +9 -0
- package/src/models/wrapper.ts +242 -0
- package/src/settings/index.ts +11 -0
- package/src/utils/pending-promise.ts +29 -0
- package/tsconfig.json +39 -0
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
|
|
2
|
+
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
|
|
3
|
+
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
|
|
4
|
+
return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
|
|
5
|
+
};
|
|
6
|
+
var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {
|
|
7
|
+
if (kind === "m") throw new TypeError("Private method is not writable");
|
|
8
|
+
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
|
|
9
|
+
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
|
|
10
|
+
return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
|
|
11
|
+
};
|
|
12
|
+
var _FormulaBasic_plugin, _FormulaBasic_specs, _FormulaBasic_tokens, _FormulaBasic_value, _FormulaBasic_emptyValue, _FormulaBasic_variables, _FormulaBasic_round, _FormulaBasic_ceil, _FormulaBasic_parent, _FormulaBasic_isNotListenToChanges;
|
|
13
|
+
import { parse } from 'mathjs';
|
|
14
|
+
export class FormulaBasic {
|
|
15
|
+
get formula() {
|
|
16
|
+
return __classPrivateFieldGet(this, _FormulaBasic_specs, "f").formula;
|
|
17
|
+
}
|
|
18
|
+
get base() {
|
|
19
|
+
const formula = __classPrivateFieldGet(this, _FormulaBasic_specs, "f").formula;
|
|
20
|
+
return formula.base;
|
|
21
|
+
}
|
|
22
|
+
get value() {
|
|
23
|
+
return __classPrivateFieldGet(this, _FormulaBasic_value, "f");
|
|
24
|
+
}
|
|
25
|
+
get name() {
|
|
26
|
+
return __classPrivateFieldGet(this, _FormulaBasic_specs, "f").name;
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Represents the fields defined in the plugin settings
|
|
30
|
+
*/
|
|
31
|
+
get fields() {
|
|
32
|
+
const formula = this.formula;
|
|
33
|
+
return typeof formula?.fields === 'string'
|
|
34
|
+
? [formula?.fields]
|
|
35
|
+
: formula?.fields;
|
|
36
|
+
}
|
|
37
|
+
get conditions() {
|
|
38
|
+
if (typeof __classPrivateFieldGet(this, _FormulaBasic_specs, "f").formula === 'string')
|
|
39
|
+
return;
|
|
40
|
+
const formula = __classPrivateFieldGet(this, _FormulaBasic_specs, "f").formula;
|
|
41
|
+
return formula.conditions;
|
|
42
|
+
}
|
|
43
|
+
get variables() {
|
|
44
|
+
return __classPrivateFieldGet(this, _FormulaBasic_variables, "f");
|
|
45
|
+
}
|
|
46
|
+
constructor(parent, plugin, specs) {
|
|
47
|
+
_FormulaBasic_plugin.set(this, void 0);
|
|
48
|
+
_FormulaBasic_specs.set(this, void 0);
|
|
49
|
+
_FormulaBasic_tokens.set(this, void 0);
|
|
50
|
+
_FormulaBasic_value.set(this, void 0);
|
|
51
|
+
_FormulaBasic_emptyValue.set(this, void 0);
|
|
52
|
+
_FormulaBasic_variables.set(this, []);
|
|
53
|
+
_FormulaBasic_round.set(this, void 0);
|
|
54
|
+
_FormulaBasic_ceil.set(this, void 0);
|
|
55
|
+
_FormulaBasic_parent.set(this, void 0);
|
|
56
|
+
_FormulaBasic_isNotListenToChanges.set(this, false);
|
|
57
|
+
__classPrivateFieldSet(this, _FormulaBasic_parent, parent, "f");
|
|
58
|
+
__classPrivateFieldSet(this, _FormulaBasic_plugin, plugin, "f");
|
|
59
|
+
__classPrivateFieldSet(this, _FormulaBasic_specs, specs, "f");
|
|
60
|
+
__classPrivateFieldSet(this, _FormulaBasic_round, specs.round, "f");
|
|
61
|
+
__classPrivateFieldSet(this, _FormulaBasic_ceil, specs.ceil, "f");
|
|
62
|
+
__classPrivateFieldSet(this, _FormulaBasic_emptyValue, specs.emptyValue, "f");
|
|
63
|
+
__classPrivateFieldSet(this, _FormulaBasic_isNotListenToChanges, specs.isNotListenToChanges, "f");
|
|
64
|
+
}
|
|
65
|
+
initialize() {
|
|
66
|
+
const { tokens } = __classPrivateFieldGet(this, _FormulaBasic_parent, "f").getParser(__classPrivateFieldGet(this, _FormulaBasic_specs, "f"));
|
|
67
|
+
__classPrivateFieldSet(this, _FormulaBasic_tokens, tokens, "f");
|
|
68
|
+
const variables = __classPrivateFieldGet(this, _FormulaBasic_tokens, "f")
|
|
69
|
+
.filter((token) => token.type === 'variable')
|
|
70
|
+
.map((item) => item.value);
|
|
71
|
+
__classPrivateFieldSet(this, _FormulaBasic_variables, variables, "f");
|
|
72
|
+
const models = __classPrivateFieldGet(this, _FormulaBasic_parent, "f").getModels(variables);
|
|
73
|
+
if (!__classPrivateFieldGet(this, _FormulaBasic_isNotListenToChanges, "f"))
|
|
74
|
+
models.forEach((model) => {
|
|
75
|
+
if ([undefined].includes(model)) {
|
|
76
|
+
return;
|
|
77
|
+
}
|
|
78
|
+
model.on('change', this.calculate.bind(this));
|
|
79
|
+
});
|
|
80
|
+
if (!Array.isArray(__classPrivateFieldGet(this, _FormulaBasic_variables, "f")) || !__classPrivateFieldGet(this, _FormulaBasic_variables, "f").length) {
|
|
81
|
+
__classPrivateFieldSet(this, _FormulaBasic_value, parse(this.formula).evaluate(), "f");
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
async calculate() {
|
|
85
|
+
const variables = __classPrivateFieldGet(this, _FormulaBasic_variables, "f");
|
|
86
|
+
const formulaField = __classPrivateFieldGet(this, _FormulaBasic_plugin, "f").form.getField(this.name);
|
|
87
|
+
let params = await __classPrivateFieldGet(this, _FormulaBasic_parent, "f").getParams(variables);
|
|
88
|
+
const models = __classPrivateFieldGet(this, _FormulaBasic_parent, "f").getModels(variables);
|
|
89
|
+
const empty = models.every((model) => [null, undefined, ''].includes(model.value));
|
|
90
|
+
if (empty) {
|
|
91
|
+
// If all models are empty, set the input to empty if exists.
|
|
92
|
+
if (formulaField)
|
|
93
|
+
formulaField.set({ value: __classPrivateFieldGet(this, _FormulaBasic_emptyValue, "f") || '' });
|
|
94
|
+
__classPrivateFieldSet(this, _FormulaBasic_value, undefined, "f");
|
|
95
|
+
return;
|
|
96
|
+
}
|
|
97
|
+
try {
|
|
98
|
+
let result = models.length === 1 &&
|
|
99
|
+
!['+', '-', '*', '/'].some((item) => this.formula.toString().includes(item))
|
|
100
|
+
? models[0].value
|
|
101
|
+
: parse(this.formula).evaluate(params);
|
|
102
|
+
const isInvalidResult = [
|
|
103
|
+
-Infinity,
|
|
104
|
+
Infinity,
|
|
105
|
+
undefined,
|
|
106
|
+
null,
|
|
107
|
+
NaN,
|
|
108
|
+
].includes(result);
|
|
109
|
+
if (__classPrivateFieldGet(this, _FormulaBasic_round, "f") && !isInvalidResult)
|
|
110
|
+
result = Math.round(result);
|
|
111
|
+
if (__classPrivateFieldGet(this, _FormulaBasic_ceil, "f") && !isInvalidResult)
|
|
112
|
+
result = Math.ceil(result);
|
|
113
|
+
__classPrivateFieldSet(this, _FormulaBasic_value, isInvalidResult
|
|
114
|
+
? __classPrivateFieldGet(this, _FormulaBasic_emptyValue, "f")
|
|
115
|
+
: Number(result.toFixed(2)), "f");
|
|
116
|
+
if (formulaField)
|
|
117
|
+
formulaField.set({ value: __classPrivateFieldGet(this, _FormulaBasic_value, "f") });
|
|
118
|
+
__classPrivateFieldGet(this, _FormulaBasic_parent, "f").trigger('change');
|
|
119
|
+
}
|
|
120
|
+
catch (e) {
|
|
121
|
+
console.log('formula', this.name, this.formula, params);
|
|
122
|
+
console.trace(e);
|
|
123
|
+
throw new Error(`Error calculating the formula: ${e.message} ${this.name}`);
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
_FormulaBasic_plugin = new WeakMap(), _FormulaBasic_specs = new WeakMap(), _FormulaBasic_tokens = new WeakMap(), _FormulaBasic_value = new WeakMap(), _FormulaBasic_emptyValue = new WeakMap(), _FormulaBasic_variables = new WeakMap(), _FormulaBasic_round = new WeakMap(), _FormulaBasic_ceil = new WeakMap(), _FormulaBasic_parent = new WeakMap(), _FormulaBasic_isNotListenToChanges = new WeakMap();
|
|
128
|
+
//# sourceMappingURL=basic.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"basic.js","sourceRoot":"","sources":["../../../src/formulas/variants/basic.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { IComplexCondition, IConditionalField } from "../types/formulas";
|
|
2
|
+
export declare class FormulaComparison {
|
|
3
|
+
#private;
|
|
4
|
+
get formula(): string | IComplexCondition;
|
|
5
|
+
get base(): string;
|
|
6
|
+
get value(): string | number;
|
|
7
|
+
get name(): string;
|
|
8
|
+
/**
|
|
9
|
+
* Represents the fields defined in the plugin settings
|
|
10
|
+
*/
|
|
11
|
+
get fields(): string[];
|
|
12
|
+
get conditions(): IConditionalField | IConditionalField[];
|
|
13
|
+
get variables(): string[];
|
|
14
|
+
get observers(): string[];
|
|
15
|
+
constructor(parent: any, plugin: any, specs: any);
|
|
16
|
+
initialize(): void;
|
|
17
|
+
start(): void;
|
|
18
|
+
evaluate(): {
|
|
19
|
+
name: any;
|
|
20
|
+
value: any;
|
|
21
|
+
};
|
|
22
|
+
calculate(): Promise<number>;
|
|
23
|
+
calculateUpper(models: any): any;
|
|
24
|
+
}
|
|
25
|
+
//# sourceMappingURL=comparison.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"comparison.d.ts","sourceRoot":"","sources":["../../../src/formulas/variants/comparison.ts"],"names":[],"mappings":"AAIA,OAAO,EAAmB,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAG1F,qBAAa,iBAAiB;;IAK7B,IAAI,OAAO,+BAEV;IACD,IAAI,IAAI,WAGP;IAED,IAAI,KAAK,oBAER;IACD,IAAI,IAAI,WAEP;IACD;;OAEG;IACH,IAAI,MAAM,aAGT;IAED,IAAI,UAAU,4CAIb;IAGD,IAAI,SAAS,aAEZ;IAGD,IAAI,SAAS,aAEZ;gBAKW,MAAM,KAAA,EAAE,MAAM,KAAA,EAAE,KAAK,KAAA;IAQjC,UAAU;IAgBV,KAAK;IAEL,QAAQ;;;;IAkCF,SAAS;IAiCf,cAAc,CAAC,MAAM,KAAA;CAQrB"}
|
|
@@ -0,0 +1,153 @@
|
|
|
1
|
+
var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
|
|
2
|
+
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
|
|
3
|
+
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
|
|
4
|
+
return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
|
|
5
|
+
};
|
|
6
|
+
var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {
|
|
7
|
+
if (kind === "m") throw new TypeError("Private method is not writable");
|
|
8
|
+
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
|
|
9
|
+
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
|
|
10
|
+
return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
|
|
11
|
+
};
|
|
12
|
+
var _FormulaComparison_plugin, _FormulaComparison_specs, _FormulaComparison_emptyValue, _FormulaComparison_tokens, _FormulaComparison_value, _FormulaComparison_variables, _FormulaComparison_observers, _FormulaComparison_isNotListenToChanges, _FormulaComparison_parent;
|
|
13
|
+
import { EvaluationsManager } from "../helpers/evaluations";
|
|
14
|
+
import { parse } from "mathjs";
|
|
15
|
+
export class FormulaComparison {
|
|
16
|
+
get formula() {
|
|
17
|
+
return __classPrivateFieldGet(this, _FormulaComparison_specs, "f").formula;
|
|
18
|
+
}
|
|
19
|
+
get base() {
|
|
20
|
+
const formula = __classPrivateFieldGet(this, _FormulaComparison_specs, "f").formula;
|
|
21
|
+
return formula.base;
|
|
22
|
+
}
|
|
23
|
+
get value() {
|
|
24
|
+
return __classPrivateFieldGet(this, _FormulaComparison_value, "f");
|
|
25
|
+
}
|
|
26
|
+
get name() {
|
|
27
|
+
return __classPrivateFieldGet(this, _FormulaComparison_specs, "f").name;
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Represents the fields defined in the plugin settings
|
|
31
|
+
*/
|
|
32
|
+
get fields() {
|
|
33
|
+
const formula = this.formula;
|
|
34
|
+
return typeof formula?.fields === "string" ? [formula?.fields] : formula?.fields;
|
|
35
|
+
}
|
|
36
|
+
get conditions() {
|
|
37
|
+
if (typeof __classPrivateFieldGet(this, _FormulaComparison_specs, "f").formula === "string")
|
|
38
|
+
return;
|
|
39
|
+
const formula = __classPrivateFieldGet(this, _FormulaComparison_specs, "f").formula;
|
|
40
|
+
return formula.conditions;
|
|
41
|
+
}
|
|
42
|
+
get variables() {
|
|
43
|
+
return __classPrivateFieldGet(this, _FormulaComparison_variables, "f");
|
|
44
|
+
}
|
|
45
|
+
;
|
|
46
|
+
get observers() {
|
|
47
|
+
return __classPrivateFieldGet(this, _FormulaComparison_observers, "f");
|
|
48
|
+
}
|
|
49
|
+
constructor(parent, plugin, specs) {
|
|
50
|
+
_FormulaComparison_plugin.set(this, void 0);
|
|
51
|
+
_FormulaComparison_specs.set(this, void 0);
|
|
52
|
+
_FormulaComparison_emptyValue.set(this, void 0);
|
|
53
|
+
_FormulaComparison_tokens.set(this, void 0);
|
|
54
|
+
_FormulaComparison_value.set(this, void 0);
|
|
55
|
+
_FormulaComparison_variables.set(this, []);
|
|
56
|
+
_FormulaComparison_observers.set(this, void 0);
|
|
57
|
+
_FormulaComparison_isNotListenToChanges.set(this, false);
|
|
58
|
+
_FormulaComparison_parent.set(this, void 0);
|
|
59
|
+
__classPrivateFieldSet(this, _FormulaComparison_parent, parent, "f");
|
|
60
|
+
__classPrivateFieldSet(this, _FormulaComparison_plugin, plugin, "f");
|
|
61
|
+
__classPrivateFieldSet(this, _FormulaComparison_specs, specs, "f");
|
|
62
|
+
__classPrivateFieldSet(this, _FormulaComparison_isNotListenToChanges, specs.isNotListenToChanges, "f");
|
|
63
|
+
__classPrivateFieldSet(this, _FormulaComparison_observers, specs.formula.observers, "f");
|
|
64
|
+
}
|
|
65
|
+
initialize() {
|
|
66
|
+
if (!Array.isArray(__classPrivateFieldGet(this, _FormulaComparison_specs, "f").fields)) {
|
|
67
|
+
throw new Error("The fields property must be an array");
|
|
68
|
+
}
|
|
69
|
+
if (!__classPrivateFieldGet(this, _FormulaComparison_isNotListenToChanges, "f") && __classPrivateFieldGet(this, _FormulaComparison_observers, "f") && Array.isArray(__classPrivateFieldGet(this, _FormulaComparison_observers, "f")) && !!__classPrivateFieldGet(this, _FormulaComparison_observers, "f").length) {
|
|
70
|
+
const fields = __classPrivateFieldGet(this, _FormulaComparison_parent, "f").getModels(__classPrivateFieldGet(this, _FormulaComparison_observers, "f"));
|
|
71
|
+
fields.forEach(field => {
|
|
72
|
+
if (!field)
|
|
73
|
+
return;
|
|
74
|
+
field.on('change', this.calculate.bind(this));
|
|
75
|
+
});
|
|
76
|
+
}
|
|
77
|
+
const models = __classPrivateFieldGet(this, _FormulaComparison_parent, "f").getModels(__classPrivateFieldGet(this, _FormulaComparison_specs, "f").fields);
|
|
78
|
+
if (!__classPrivateFieldGet(this, _FormulaComparison_isNotListenToChanges, "f"))
|
|
79
|
+
models.forEach(model => model.on("change", this.calculate.bind(this)));
|
|
80
|
+
}
|
|
81
|
+
start() { }
|
|
82
|
+
evaluate() {
|
|
83
|
+
const formula = __classPrivateFieldGet(this, _FormulaComparison_specs, "f").formula;
|
|
84
|
+
if (typeof formula === "string" || !formula.conditions) {
|
|
85
|
+
console.error("Invalid formula configuration");
|
|
86
|
+
return null;
|
|
87
|
+
}
|
|
88
|
+
const models = __classPrivateFieldGet(this, _FormulaComparison_parent, "f").getModels(__classPrivateFieldGet(this, _FormulaComparison_specs, "f").fields);
|
|
89
|
+
let fieldValues = models.map(fieldModel => {
|
|
90
|
+
if (!fieldModel)
|
|
91
|
+
return;
|
|
92
|
+
return { name: fieldModel.name, value: fieldModel ? fieldModel.value : null };
|
|
93
|
+
});
|
|
94
|
+
// Utilizar reduce para comparar cada par de valores consecutivos y determinar cuál cumple la condición
|
|
95
|
+
const resultField = fieldValues.reduce((prevField, currentField) => {
|
|
96
|
+
if (!prevField)
|
|
97
|
+
return currentField;
|
|
98
|
+
// Si el campo previo cumple la condición con respecto al actual, se mantiene como el campo elegido
|
|
99
|
+
if (EvaluationsManager.validate(formula.condition, prevField.value, currentField.value)) {
|
|
100
|
+
return prevField;
|
|
101
|
+
}
|
|
102
|
+
// De lo contrario, el campo actual se convierte en el nuevo campo elegido
|
|
103
|
+
return currentField;
|
|
104
|
+
}, null);
|
|
105
|
+
if (resultField) {
|
|
106
|
+
// Ajustar según la lógica específica deseada, como devolver una fórmula particular basada en el resultado
|
|
107
|
+
return resultField;
|
|
108
|
+
}
|
|
109
|
+
else {
|
|
110
|
+
// Manejar el caso de que ninguno cumpla la condición
|
|
111
|
+
return null;
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
async calculate() {
|
|
115
|
+
let applied = this.evaluate();
|
|
116
|
+
if (!applied || !applied?.value) {
|
|
117
|
+
// any formula apply, so we need to reset the value
|
|
118
|
+
__classPrivateFieldSet(this, _FormulaComparison_value, 0, "f");
|
|
119
|
+
return;
|
|
120
|
+
}
|
|
121
|
+
/**
|
|
122
|
+
* Get the formula analyzer
|
|
123
|
+
*/
|
|
124
|
+
const specsFormula = __classPrivateFieldGet(this, _FormulaComparison_specs, "f").formula;
|
|
125
|
+
const formulaString = specsFormula.conditions[applied.name];
|
|
126
|
+
const formula = __classPrivateFieldGet(this, _FormulaComparison_parent, "f").getParser({ formula: formulaString });
|
|
127
|
+
const variables = formula.tokens.filter(token => token.type === "variable").map(item => item.value);
|
|
128
|
+
const params = await __classPrivateFieldGet(this, _FormulaComparison_parent, "f").getParams(variables);
|
|
129
|
+
try {
|
|
130
|
+
const keys = Object.keys(params);
|
|
131
|
+
const result = keys.length === 1 ? params[keys[0]] : parse(this.formula).evaluate(params);
|
|
132
|
+
__classPrivateFieldSet(this, _FormulaComparison_value, [-Infinity, Infinity, undefined, null, NaN].includes(result)
|
|
133
|
+
? __classPrivateFieldGet(this, _FormulaComparison_emptyValue, "f")
|
|
134
|
+
: Number(result.toFixed(2)), "f");
|
|
135
|
+
__classPrivateFieldGet(this, _FormulaComparison_parent, "f").trigger("change");
|
|
136
|
+
return __classPrivateFieldGet(this, _FormulaComparison_value, "f");
|
|
137
|
+
}
|
|
138
|
+
catch (e) {
|
|
139
|
+
console.log("formula", this.name, this.formula, params);
|
|
140
|
+
throw new Error("Error calculating the formula");
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
calculateUpper(models) {
|
|
144
|
+
let glue;
|
|
145
|
+
models.forEach(item => {
|
|
146
|
+
if (Number(item.value) > Number(glue?.value ?? 0))
|
|
147
|
+
glue = item;
|
|
148
|
+
});
|
|
149
|
+
return glue;
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
_FormulaComparison_plugin = new WeakMap(), _FormulaComparison_specs = new WeakMap(), _FormulaComparison_emptyValue = new WeakMap(), _FormulaComparison_tokens = new WeakMap(), _FormulaComparison_value = new WeakMap(), _FormulaComparison_variables = new WeakMap(), _FormulaComparison_observers = new WeakMap(), _FormulaComparison_isNotListenToChanges = new WeakMap(), _FormulaComparison_parent = new WeakMap();
|
|
153
|
+
//# sourceMappingURL=comparison.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"comparison.js","sourceRoot":"","sources":["../../../src/formulas/variants/comparison.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { IComplexCondition, IConditionalField } from '../types/formulas';
|
|
2
|
+
export declare class FormulaConditional {
|
|
3
|
+
#private;
|
|
4
|
+
get formula(): string | IComplexCondition;
|
|
5
|
+
get base(): string;
|
|
6
|
+
get value(): string | number;
|
|
7
|
+
get name(): string;
|
|
8
|
+
/**
|
|
9
|
+
* Represents the fields defined in the plugin settings
|
|
10
|
+
*/
|
|
11
|
+
get fields(): string[];
|
|
12
|
+
get conditions(): IConditionalField | IConditionalField[];
|
|
13
|
+
constructor(parent: any, plugin: any, specs: any);
|
|
14
|
+
initialize(): void;
|
|
15
|
+
evaluate(): any;
|
|
16
|
+
calculate(): Promise<string | number>;
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=conditional.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"conditional.d.ts","sourceRoot":"","sources":["../../../src/formulas/variants/conditional.ts"],"names":[],"mappings":"AAGA,OAAO,EAGH,iBAAiB,EACjB,iBAAiB,EACpB,MAAM,mBAAmB,CAAC;AAG3B,qBAAa,kBAAkB;;IAI3B,IAAI,OAAO,+BAEV;IACD,IAAI,IAAI,WAGP;IAED,IAAI,KAAK,oBAER;IACD,IAAI,IAAI,WAEP;IACD;;OAEG;IACH,IAAI,MAAM,aAKT;IAED,IAAI,UAAU,4CAIb;gBAWW,MAAM,KAAA,EAAE,MAAM,KAAA,EAAE,KAAK,KAAA;IAYjC,UAAU;IA6BV,QAAQ;IAyDF,SAAS;CAsDlB"}
|
|
@@ -0,0 +1,183 @@
|
|
|
1
|
+
var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
|
|
2
|
+
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
|
|
3
|
+
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
|
|
4
|
+
return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
|
|
5
|
+
};
|
|
6
|
+
var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {
|
|
7
|
+
if (kind === "m") throw new TypeError("Private method is not writable");
|
|
8
|
+
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
|
|
9
|
+
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
|
|
10
|
+
return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
|
|
11
|
+
};
|
|
12
|
+
var _FormulaConditional_plugin, _FormulaConditional_specs, _FormulaConditional_emptyValue, _FormulaConditional_value, _FormulaConditional_fields, _FormulaConditional_parent, _FormulaConditional_ceil, _FormulaConditional_round, _FormulaConditional_isNotListenToChanges;
|
|
13
|
+
import { conditionsTypes } from '../helpers/condition-types';
|
|
14
|
+
import { EvaluationsManager } from '../helpers/evaluations';
|
|
15
|
+
import { parse } from 'mathjs';
|
|
16
|
+
export class FormulaConditional {
|
|
17
|
+
get formula() {
|
|
18
|
+
return __classPrivateFieldGet(this, _FormulaConditional_specs, "f").formula;
|
|
19
|
+
}
|
|
20
|
+
get base() {
|
|
21
|
+
const formula = __classPrivateFieldGet(this, _FormulaConditional_specs, "f").formula;
|
|
22
|
+
return formula.base;
|
|
23
|
+
}
|
|
24
|
+
get value() {
|
|
25
|
+
return __classPrivateFieldGet(this, _FormulaConditional_value, "f");
|
|
26
|
+
}
|
|
27
|
+
get name() {
|
|
28
|
+
return __classPrivateFieldGet(this, _FormulaConditional_specs, "f").name;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Represents the fields defined in the plugin settings
|
|
32
|
+
*/
|
|
33
|
+
get fields() {
|
|
34
|
+
const formula = this.formula;
|
|
35
|
+
return typeof formula?.fields === 'string'
|
|
36
|
+
? [formula?.fields]
|
|
37
|
+
: formula?.fields;
|
|
38
|
+
}
|
|
39
|
+
get conditions() {
|
|
40
|
+
if (typeof __classPrivateFieldGet(this, _FormulaConditional_specs, "f").formula === 'string')
|
|
41
|
+
return;
|
|
42
|
+
const formula = __classPrivateFieldGet(this, _FormulaConditional_specs, "f").formula;
|
|
43
|
+
return formula.conditions;
|
|
44
|
+
}
|
|
45
|
+
constructor(parent, plugin, specs) {
|
|
46
|
+
_FormulaConditional_plugin.set(this, void 0);
|
|
47
|
+
_FormulaConditional_specs.set(this, void 0);
|
|
48
|
+
_FormulaConditional_emptyValue.set(this, void 0);
|
|
49
|
+
_FormulaConditional_value.set(this, void 0);
|
|
50
|
+
/**
|
|
51
|
+
* FormField type
|
|
52
|
+
*/
|
|
53
|
+
_FormulaConditional_fields.set(this, void 0);
|
|
54
|
+
_FormulaConditional_parent.set(this, void 0);
|
|
55
|
+
_FormulaConditional_ceil.set(this, void 0);
|
|
56
|
+
_FormulaConditional_round.set(this, void 0);
|
|
57
|
+
_FormulaConditional_isNotListenToChanges.set(this, false);
|
|
58
|
+
__classPrivateFieldSet(this, _FormulaConditional_parent, parent, "f");
|
|
59
|
+
__classPrivateFieldSet(this, _FormulaConditional_plugin, plugin, "f");
|
|
60
|
+
__classPrivateFieldSet(this, _FormulaConditional_specs, specs, "f");
|
|
61
|
+
__classPrivateFieldSet(this, _FormulaConditional_round, specs.round, "f");
|
|
62
|
+
__classPrivateFieldSet(this, _FormulaConditional_ceil, specs.ceil, "f");
|
|
63
|
+
__classPrivateFieldSet(this, _FormulaConditional_emptyValue, specs.emptyValue, "f");
|
|
64
|
+
if (specs.isNotListenToChanges)
|
|
65
|
+
__classPrivateFieldSet(this, _FormulaConditional_isNotListenToChanges, specs.isNotListenToChanges, "f");
|
|
66
|
+
}
|
|
67
|
+
initialize() {
|
|
68
|
+
try {
|
|
69
|
+
const { form } = __classPrivateFieldGet(this, _FormulaConditional_plugin, "f");
|
|
70
|
+
if (!this.fields) {
|
|
71
|
+
throw new Error(`Fields not found in formula ${this.name}`);
|
|
72
|
+
}
|
|
73
|
+
const fields = this.fields.map((name) => {
|
|
74
|
+
const formula = __classPrivateFieldGet(this, _FormulaConditional_plugin, "f").formulas.get(name);
|
|
75
|
+
if (formula)
|
|
76
|
+
return formula;
|
|
77
|
+
const field = form.getField(name);
|
|
78
|
+
return field;
|
|
79
|
+
});
|
|
80
|
+
__classPrivateFieldSet(this, _FormulaConditional_fields, fields, "f");
|
|
81
|
+
if (this.name === 'costoTotalGrafico') {
|
|
82
|
+
console.log('fields', fields);
|
|
83
|
+
}
|
|
84
|
+
if (!__classPrivateFieldGet(this, _FormulaConditional_isNotListenToChanges, "f"))
|
|
85
|
+
fields.forEach((field) => {
|
|
86
|
+
if (!field) {
|
|
87
|
+
throw new Error(`Field ${this.name} not found in form ${form.name}`);
|
|
88
|
+
}
|
|
89
|
+
field.on('change', this.calculate.bind(this));
|
|
90
|
+
});
|
|
91
|
+
}
|
|
92
|
+
catch (e) { }
|
|
93
|
+
}
|
|
94
|
+
evaluate() {
|
|
95
|
+
const formula = __classPrivateFieldGet(this, _FormulaConditional_specs, "f").formula;
|
|
96
|
+
let evaluatedFormula = { formula: formula.base }; // Use the base formula by default
|
|
97
|
+
if (formula.conditions) {
|
|
98
|
+
const conditionsArray = Array.isArray(formula.conditions) ? formula.conditions : [formula.conditions];
|
|
99
|
+
for (const condition of conditionsArray) {
|
|
100
|
+
let conditionMet = false;
|
|
101
|
+
if (condition.conditions) {
|
|
102
|
+
// If there are nested conditions, all must be met
|
|
103
|
+
conditionMet = condition.conditions.every((subCondition) => {
|
|
104
|
+
const fieldValues = subCondition.fields.map((fieldName) => {
|
|
105
|
+
const field = __classPrivateFieldGet(this, _FormulaConditional_fields, "f").find((f) => f.name === fieldName);
|
|
106
|
+
return field
|
|
107
|
+
? field.value
|
|
108
|
+
: __classPrivateFieldGet(this, _FormulaConditional_emptyValue, "f");
|
|
109
|
+
});
|
|
110
|
+
return EvaluationsManager.validateAll(subCondition.condition, fieldValues, subCondition.value);
|
|
111
|
+
});
|
|
112
|
+
}
|
|
113
|
+
else {
|
|
114
|
+
const fieldValues = condition.fields.map((fieldName) => {
|
|
115
|
+
const field = __classPrivateFieldGet(this, _FormulaConditional_fields, "f").find((f) => f.name === fieldName);
|
|
116
|
+
return field ? field.value : __classPrivateFieldGet(this, _FormulaConditional_emptyValue, "f");
|
|
117
|
+
});
|
|
118
|
+
const conditionType = !!condition.type && conditionsTypes[condition.type]
|
|
119
|
+
? conditionsTypes[condition.type]
|
|
120
|
+
: conditionsTypes.some;
|
|
121
|
+
// Check if any of the specified fields meet the condition
|
|
122
|
+
conditionMet = EvaluationsManager[conditionType](condition.condition, fieldValues, condition.value);
|
|
123
|
+
}
|
|
124
|
+
if (conditionMet) {
|
|
125
|
+
evaluatedFormula.formula = condition.formula;
|
|
126
|
+
evaluatedFormula.fi = condition;
|
|
127
|
+
break;
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
return evaluatedFormula;
|
|
132
|
+
}
|
|
133
|
+
async calculate() {
|
|
134
|
+
/**
|
|
135
|
+
* the formula is taken from the evaluate method since the conditions are evaluated there and
|
|
136
|
+
* can change the formula to be applied
|
|
137
|
+
*/
|
|
138
|
+
const model = __classPrivateFieldGet(this, _FormulaConditional_plugin, "f").form.getField(this.name);
|
|
139
|
+
const formula = this.evaluate();
|
|
140
|
+
if (!formula.formula) {
|
|
141
|
+
__classPrivateFieldSet(this, _FormulaConditional_value, __classPrivateFieldGet(this, _FormulaConditional_emptyValue, "f") !== undefined ? __classPrivateFieldGet(this, _FormulaConditional_emptyValue, "f") : '', "f");
|
|
142
|
+
model && model.set({ value: __classPrivateFieldGet(this, _FormulaConditional_value, "f") });
|
|
143
|
+
__classPrivateFieldGet(this, _FormulaConditional_parent, "f").trigger('change');
|
|
144
|
+
return __classPrivateFieldGet(this, _FormulaConditional_value, "f");
|
|
145
|
+
}
|
|
146
|
+
// todo: Review if this section can be replaced by formulaManager.variables property.
|
|
147
|
+
const { tokens } = __classPrivateFieldGet(this, _FormulaConditional_parent, "f").getParser(formula);
|
|
148
|
+
const variables = tokens
|
|
149
|
+
.filter((token) => token.type === 'variable')
|
|
150
|
+
.map((item) => item.value);
|
|
151
|
+
const params = await __classPrivateFieldGet(this, _FormulaConditional_parent, "f").getParams(variables);
|
|
152
|
+
try {
|
|
153
|
+
const keys = Object.keys(params);
|
|
154
|
+
let result = keys.length === 1
|
|
155
|
+
? params[keys[0]]
|
|
156
|
+
: parse(formula.formula).evaluate(params);
|
|
157
|
+
const isInvalidResult = [
|
|
158
|
+
-Infinity,
|
|
159
|
+
Infinity,
|
|
160
|
+
undefined,
|
|
161
|
+
null,
|
|
162
|
+
NaN,
|
|
163
|
+
].includes(result);
|
|
164
|
+
if (__classPrivateFieldGet(this, _FormulaConditional_round, "f") && !isInvalidResult)
|
|
165
|
+
result = Math.round(result);
|
|
166
|
+
if (__classPrivateFieldGet(this, _FormulaConditional_ceil, "f") && !isInvalidResult)
|
|
167
|
+
result = Math.ceil(result);
|
|
168
|
+
__classPrivateFieldSet(this, _FormulaConditional_value, isInvalidResult || typeof result === 'object'
|
|
169
|
+
? __classPrivateFieldGet(this, _FormulaConditional_emptyValue, "f")
|
|
170
|
+
: Number(result.toFixed(2)), "f");
|
|
171
|
+
__classPrivateFieldGet(this, _FormulaConditional_parent, "f").trigger('change');
|
|
172
|
+
model && model.set({ value: __classPrivateFieldGet(this, _FormulaConditional_value, "f") });
|
|
173
|
+
return __classPrivateFieldGet(this, _FormulaConditional_value, "f");
|
|
174
|
+
}
|
|
175
|
+
catch (e) {
|
|
176
|
+
console.log('formula', this.name, formula.formula, params);
|
|
177
|
+
console.error(e);
|
|
178
|
+
throw new Error('Error calculating the formula');
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
_FormulaConditional_plugin = new WeakMap(), _FormulaConditional_specs = new WeakMap(), _FormulaConditional_emptyValue = new WeakMap(), _FormulaConditional_value = new WeakMap(), _FormulaConditional_fields = new WeakMap(), _FormulaConditional_parent = new WeakMap(), _FormulaConditional_ceil = new WeakMap(), _FormulaConditional_round = new WeakMap(), _FormulaConditional_isNotListenToChanges = new WeakMap();
|
|
183
|
+
//# sourceMappingURL=conditional.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"conditional.js","sourceRoot":"","sources":["../../../src/formulas/variants/conditional.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { IComplexCondition } from '../types/formulas';
|
|
2
|
+
export declare class IterativeArrayFormula {
|
|
3
|
+
#private;
|
|
4
|
+
get formula(): string | IComplexCondition;
|
|
5
|
+
get base(): string;
|
|
6
|
+
get value(): string | number;
|
|
7
|
+
get name(): string;
|
|
8
|
+
/**
|
|
9
|
+
* Represents the fields defined in the plugin settings
|
|
10
|
+
*/
|
|
11
|
+
get fields(): string[];
|
|
12
|
+
get conditions(): import("../types/formulas").IConditionalField | import("../types/formulas").IConditionalField[];
|
|
13
|
+
get variables(): string[];
|
|
14
|
+
constructor(parent: any, plugin: any, specs: any);
|
|
15
|
+
initialize(): void;
|
|
16
|
+
calculate(): Promise<void>;
|
|
17
|
+
private sanitizeData;
|
|
18
|
+
private sanitizeValue;
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=iterative-array.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"iterative-array.d.ts","sourceRoot":"","sources":["../../../src/formulas/variants/iterative-array.ts"],"names":[],"mappings":"AAGA,OAAO,EAAmB,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAGvE,qBAAa,qBAAqB;;IAIjC,IAAI,OAAO,+BAEV;IACD,IAAI,IAAI,WAGP;IAED,IAAI,KAAK,oBAER;IACD,IAAI,IAAI,WAEP;IACD;;OAEG;IACH,IAAI,MAAM,aAGT;IAED,IAAI,UAAU,oGAIb;IAID,IAAI,SAAS,aAEZ;gBAQW,MAAM,KAAA,EAAE,MAAM,KAAA,EAAE,KAAK,KAAA;IAUjC,UAAU;IASJ,SAAS;IA8Df,OAAO,CAAC,YAAY;IAgBpB,OAAO,CAAC,aAAa;CAGrB"}
|