@servicetitan/dte-pdf-editor 1.38.0 → 1.39.0
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 +7 -4
- package/dist/components/field-config-panel/advanced-settings.d.ts.map +1 -1
- package/dist/components/field-config-panel/advanced-settings.js +1 -6
- package/dist/components/field-config-panel/advanced-settings.js.map +1 -1
- package/dist/components/field-config-panel/formula-modal.d.ts.map +1 -1
- package/dist/components/field-config-panel/formula-modal.js +20 -41
- package/dist/components/field-config-panel/formula-modal.js.map +1 -1
- package/dist/components/pdf-view/pdf-view-calculated.d.ts.map +1 -1
- package/dist/components/pdf-view/pdf-view-calculated.js +2 -16
- package/dist/components/pdf-view/pdf-view-calculated.js.map +1 -1
- package/dist/constants/field.constants.d.ts +7 -1
- package/dist/constants/field.constants.d.ts.map +1 -1
- package/dist/constants/field.constants.js +20 -0
- package/dist/constants/field.constants.js.map +1 -1
- package/dist/interface/types.d.ts +11 -5
- package/dist/interface/types.d.ts.map +1 -1
- package/dist/interface/types.js.map +1 -1
- package/dist/utils/formula/evaluate-formula.utils.d.ts +5 -4
- package/dist/utils/formula/evaluate-formula.utils.d.ts.map +1 -1
- package/dist/utils/formula/evaluate-formula.utils.js +20 -9
- package/dist/utils/formula/evaluate-formula.utils.js.map +1 -1
- package/dist/utils/formula/expression.utils.d.ts +1 -1
- package/dist/utils/formula/expression.utils.d.ts.map +1 -1
- package/dist/utils/formula/expression.utils.js +3 -1
- package/dist/utils/formula/expression.utils.js.map +1 -1
- package/dist/utils/formula/format-calculated-result.utils.d.ts.map +1 -1
- package/dist/utils/formula/format-calculated-result.utils.js.map +1 -1
- package/package.json +1 -1
- package/src/components/field-config-panel/advanced-settings.tsx +4 -10
- package/src/components/field-config-panel/formula-modal.tsx +24 -42
- package/src/components/pdf-view/pdf-view-calculated.tsx +2 -15
- package/src/constants/field.constants.ts +28 -0
- package/src/interface/types.ts +13 -6
- package/src/utils/formula/evaluate-formula.utils.ts +21 -10
- package/src/utils/formula/expression.utils.ts +7 -1
- package/src/utils/formula/format-calculated-result.utils.ts +2 -2
package/README.md
CHANGED
|
@@ -27,8 +27,9 @@ integration, e-signature support, fillable form fields, and calculated fields wi
|
|
|
27
27
|
- **Date result type**: New `date` option in the result type selector. When the formula contains date fields, the result
|
|
28
28
|
type is automatically set to `date`. Advanced settings show a customizable date format (tokens: `YYYY`, `YY`, `MMMM`,
|
|
29
29
|
`MMM`, `MM`, `M`, `DD`, `D`) instead of numeric rounding/separator controls.
|
|
30
|
-
- **CalculatedFieldFormat**: Extended with `dateFormat?: string` (custom format pattern)
|
|
31
|
-
|
|
30
|
+
- **CalculatedFieldFormat**: Extended with `dateFormat?: string` (custom format pattern).
|
|
31
|
+
- **FormulaToken**: Field tokens now carry `fieldType?: 'date' | 'number'` to indicate whether a field is date- or
|
|
32
|
+
number-typed, replacing the previously separate `dateFieldPaths` array on `CalculatedFieldFormat`.
|
|
32
33
|
- **SchemaFieldType**: New `fieldType` on `FieldTypeOption` tracks whether a schema field is `'number'` or `'date'`.
|
|
33
34
|
- **Validation**: Date formulas are restricted to `+`, `-`, and parentheses only. Numeric literals are capped at
|
|
34
35
|
365 days.
|
|
@@ -186,7 +187,7 @@ interface PdfField {
|
|
|
186
187
|
description?: string;
|
|
187
188
|
data?: FieldDataType; // for generic fields (table/text)
|
|
188
189
|
formula?: StructuredFormula; // for calculated fields
|
|
189
|
-
formulaFormat?: CalculatedFieldFormat; // for calculated fields (includes dateFormat
|
|
190
|
+
formulaFormat?: CalculatedFieldFormat; // for calculated fields (includes dateFormat)
|
|
190
191
|
}
|
|
191
192
|
```
|
|
192
193
|
|
|
@@ -246,7 +247,9 @@ Calculated fields use a structured formula and optional display format:
|
|
|
246
247
|
and safe editing.
|
|
247
248
|
- **CalculatedFieldFormat**: Controls result display: `resultType` (`number` | `currency` | `percent` | `date`),
|
|
248
249
|
rounding mode, decimal places, thousands/decimal separators, prefix/postfix text, `dateFormat` (custom pattern using
|
|
249
|
-
`YYYY`, `MM`, `DD`, etc.)
|
|
250
|
+
`YYYY`, `MM`, `DD`, etc.).
|
|
251
|
+
- **FormulaToken (field)**: Field tokens carry `fieldType?: 'date' | 'number'` to support date-aware evaluation
|
|
252
|
+
directly from the formula structure.
|
|
250
253
|
|
|
251
254
|
Date fields in formulas use day-based arithmetic: `date + number` adds days, `date - date` yields a day count. Only `+`,
|
|
252
255
|
`-`, and parentheses are allowed when date fields are present.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"advanced-settings.d.ts","sourceRoot":"","sources":["../../../src/components/field-config-panel/advanced-settings.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,cAAc,EAAE,MAAM,OAAO,CAAC;AAErD,OAAO,EAAE,qBAAqB,
|
|
1
|
+
{"version":3,"file":"advanced-settings.d.ts","sourceRoot":"","sources":["../../../src/components/field-config-panel/advanced-settings.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,cAAc,EAAE,MAAM,OAAO,CAAC;AAErD,OAAO,EAAE,qBAAqB,EAA6B,MAAM,uBAAuB,CAAC;AAEzF,UAAU,qBAAqB;IAC3B,MAAM,EAAE,qBAAqB,CAAC;IAC9B,SAAS,EAAE,QAAQ,CAAC,cAAc,CAAC,qBAAqB,CAAC,CAAC,CAAC;CAC9D;AAqBD,eAAO,MAAM,gBAAgB,EAAE,EAAE,CAAC,qBAAqB,CA+GtD,CAAC"}
|
|
@@ -1,11 +1,6 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
2
|
import { Flex, SegmentedControl, Switch, Text } from '@servicetitan/anvil2';
|
|
3
|
-
import { DEFAULT_DATE_FORMAT } from '../../constants';
|
|
4
|
-
const ROUNDING_OPTIONS = [
|
|
5
|
-
{ label: 'Round', value: 'round' },
|
|
6
|
-
{ label: 'Floor', value: 'floor' },
|
|
7
|
-
{ label: 'Ceil', value: 'ceil' },
|
|
8
|
-
];
|
|
3
|
+
import { DEFAULT_DATE_FORMAT, ROUNDING_OPTIONS } from '../../constants';
|
|
9
4
|
const DateFormatSettings = ({ format, setFormat }) => {
|
|
10
5
|
var _a;
|
|
11
6
|
return (_jsxs("div", { className: "dte-formula-advanced", children: [_jsx(Text, { variant: "body", size: "small", children: "Date format" }), _jsx("input", { type: "text", className: "dte-formula-advanced-input", style: { width: '100%' }, value: (_a = format.dateFormat) !== null && _a !== void 0 ? _a : DEFAULT_DATE_FORMAT, placeholder: DEFAULT_DATE_FORMAT, onChange: e => setFormat(prev => ({ ...prev, dateFormat: e.target.value })) }), _jsx(Text, { variant: "body", size: "small", color: "tertiary", children: "Tokens: YYYY, YY, MMMM, MMM, MM, M, DD, D" })] }));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"advanced-settings.js","sourceRoot":"","sources":["../../../src/components/field-config-panel/advanced-settings.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,IAAI,EAAE,gBAAgB,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAC;AAE5E,OAAO,EAAE,mBAAmB,EAAE,
|
|
1
|
+
{"version":3,"file":"advanced-settings.js","sourceRoot":"","sources":["../../../src/components/field-config-panel/advanced-settings.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"formula-modal.d.ts","sourceRoot":"","sources":["../../../src/components/field-config-panel/formula-modal.tsx"],"names":[],"mappings":"AAGA,OAAO,EAAE,EAAE,EAA6C,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"formula-modal.d.ts","sourceRoot":"","sources":["../../../src/components/field-config-panel/formula-modal.tsx"],"names":[],"mappings":"AAGA,OAAO,EAAE,EAAE,EAA6C,MAAM,OAAO,CAAC;AAOtE,OAAO,EACH,qBAAqB,EACrB,mBAAmB,EACnB,eAAe,EACf,iBAAiB,EACpB,MAAM,uBAAuB,CAAC;AA8B/B,MAAM,WAAW,iBAAiB;IAC9B,cAAc,EAAE,iBAAiB,GAAG,SAAS,CAAC;IAC9C,aAAa,CAAC,EAAE,qBAAqB,CAAC;IACtC,eAAe,EAAE,mBAAmB,EAAE,CAAC;IACvC,0BAA0B,CAAC,EAAE,eAAe,EAAE,CAAC;IAC/C,OAAO,IAAI,IAAI,CAAC;IAChB,MAAM,CAAC,OAAO,EAAE,iBAAiB,EAAE,MAAM,EAAE,qBAAqB,GAAG,IAAI,CAAC;CAC3E;AAED,eAAO,MAAM,YAAY,EAAE,EAAE,CAAC,iBAAiB,CA4L9C,CAAC"}
|
|
@@ -3,21 +3,11 @@ import { Button, Dialog, Divider, Flex } from '@servicetitan/anvil2';
|
|
|
3
3
|
import IconRedo from '@servicetitan/anvil2/assets/icons/material/round/redo.svg';
|
|
4
4
|
import IconUndo from '@servicetitan/anvil2/assets/icons/material/round/undo.svg';
|
|
5
5
|
import { useCallback, useEffect, useMemo, useState } from 'react';
|
|
6
|
-
import {
|
|
6
|
+
import { DEFAULT_DATE_CALCULATED_FORMAT, DEFAULT_NUMBER_FORMAT, MODAL_CONTENT_MAX_HEIGHT, } from '../../constants';
|
|
7
7
|
import { useFormulaEditor } from '../../hooks';
|
|
8
8
|
import { parseExpression, tokenizeExpression, tokensToExpression, validateFormula, } from '../../utils';
|
|
9
9
|
import { FieldSidebar } from './field-sidebar';
|
|
10
10
|
import { FormulaWorkspace } from './formula-workspace';
|
|
11
|
-
const DEFAULT_CALCULATED_FIELD_FORMAT = {
|
|
12
|
-
resultType: 'number',
|
|
13
|
-
thousandsSeparator: false,
|
|
14
|
-
decimals: 2,
|
|
15
|
-
roundingMode: 'round',
|
|
16
|
-
decimalSeparatorEnabled: false,
|
|
17
|
-
decimalSeparator: '.',
|
|
18
|
-
prefixText: '',
|
|
19
|
-
postfixText: '',
|
|
20
|
-
};
|
|
21
11
|
function getAllFields(groups) {
|
|
22
12
|
const list = [];
|
|
23
13
|
for (const g of groups) {
|
|
@@ -79,7 +69,7 @@ export const FormulaModal = ({ dataModelGroups, fillableFieldsFromDocument = [],
|
|
|
79
69
|
}, [allFields, fillableFieldsFromDocument]);
|
|
80
70
|
const currentExpression = useMemo(() => tokensToExpression(initialFormula), [initialFormula]);
|
|
81
71
|
const [highlightElementPath, setHighlightElementPath] = useState('');
|
|
82
|
-
const [format, setFormat] = useState(() => initialFormat !== null && initialFormat !== void 0 ? initialFormat :
|
|
72
|
+
const [format, setFormat] = useState(() => initialFormat !== null && initialFormat !== void 0 ? initialFormat : DEFAULT_NUMBER_FORMAT);
|
|
83
73
|
const [advancedOpen, setAdvancedOpen] = useState(false);
|
|
84
74
|
const formulaEditor = useFormulaEditor({
|
|
85
75
|
currentExpression,
|
|
@@ -89,24 +79,13 @@ export const FormulaModal = ({ dataModelGroups, fillableFieldsFromDocument = [],
|
|
|
89
79
|
});
|
|
90
80
|
useEffect(() => {
|
|
91
81
|
if (formulaEditor.expressionHasDateFields && format.resultType !== 'date') {
|
|
92
|
-
setFormat(
|
|
93
|
-
var _a;
|
|
94
|
-
return ({
|
|
95
|
-
...prev,
|
|
96
|
-
resultType: 'date',
|
|
97
|
-
dateFormat: (_a = prev.dateFormat) !== null && _a !== void 0 ? _a : DEFAULT_DATE_FORMAT,
|
|
98
|
-
});
|
|
99
|
-
});
|
|
100
|
-
setAdvancedOpen(true);
|
|
82
|
+
setFormat(DEFAULT_DATE_CALCULATED_FORMAT);
|
|
101
83
|
}
|
|
102
84
|
else if (!formulaEditor.expressionHasDateFields && format.resultType === 'date') {
|
|
103
|
-
setFormat(
|
|
104
|
-
...prev,
|
|
105
|
-
resultType: 'number',
|
|
106
|
-
}));
|
|
85
|
+
setFormat(DEFAULT_NUMBER_FORMAT);
|
|
107
86
|
}
|
|
108
87
|
}, [formulaEditor.expressionHasDateFields, format.resultType]);
|
|
109
|
-
const parsedTokens = useMemo(() => parseExpression(formulaEditor.draftExpression, validPaths), [formulaEditor.draftExpression, validPaths]);
|
|
88
|
+
const parsedTokens = useMemo(() => parseExpression(formulaEditor.draftExpression, validPaths, knownDateFields), [formulaEditor.draftExpression, validPaths, knownDateFields]);
|
|
110
89
|
const formulaValidation = useMemo(() => validateFormula({ tokens: parsedTokens }, validPaths, knownDateFields, pathToLabel), [parsedTokens, validPaths, knownDateFields, pathToLabel]);
|
|
111
90
|
const unknownFieldErrors = useMemo(() => {
|
|
112
91
|
const parts = tokenizeExpression(formulaEditor.draftExpression);
|
|
@@ -122,27 +101,27 @@ export const FormulaModal = ({ dataModelGroups, fillableFieldsFromDocument = [],
|
|
|
122
101
|
onClose();
|
|
123
102
|
}, [onClose]);
|
|
124
103
|
const handleSave = useCallback(() => {
|
|
125
|
-
|
|
126
|
-
.filter(t => t.type === 'field' && knownDateFields.has(t.path))
|
|
127
|
-
.map(t => t.path);
|
|
128
|
-
const savedFormat = {
|
|
129
|
-
...format,
|
|
130
|
-
dateFieldPaths: usedDatePaths.length > 0 ? [...new Set(usedDatePaths)] : undefined,
|
|
131
|
-
};
|
|
132
|
-
onSave({ tokens: parsedTokens }, savedFormat);
|
|
104
|
+
onSave({ tokens: parsedTokens }, format);
|
|
133
105
|
onClose();
|
|
134
|
-
}, [format,
|
|
106
|
+
}, [format, onClose, onSave, parsedTokens]);
|
|
135
107
|
const validationError = (_b = (_a = unknownFieldErrors[0]) !== null && _a !== void 0 ? _a : formulaValidation.errors[0]) !== null && _b !== void 0 ? _b : '';
|
|
136
108
|
const isInvalid = !formulaValidation.valid || unknownFieldErrors.length > 0;
|
|
137
109
|
const canSave = formulaValidation.valid && unknownFieldErrors.length === 0 && parsedTokens.length > 0;
|
|
138
110
|
return (_jsxs(Dialog, { open: true, onClose: handleClose, size: "xlarge", children: [_jsx(Dialog.Header, { children: "Formula Builder" }), _jsx(Divider, {}), _jsx(Dialog.Content, { children: _jsxs(Flex, { flex: 1, alignItems: "stretch", gap: 2, style: {
|
|
139
111
|
height: MODAL_CONTENT_MAX_HEIGHT,
|
|
140
112
|
overflowY: 'auto',
|
|
141
|
-
}, children: [_jsx(FieldSidebar, { fillableOptions: fillableFieldsFromDocument, mergeTagOptions: allFields, highlightElementPath: highlightElementPath, onHover: setHighlightElementPath, onSelect: formulaEditor.insertField, selectedPaths: formulaEditor.selectedFieldPaths }), _jsx(FormulaWorkspace, { disabledOperators: formulaEditor.disabledOperators, editorRef: formulaEditor.editorRef, isInvalid: isInvalid && formulaEditor.isDirty, validationError: validationError, format: format, onResultTypeChange: nextType =>
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
113
|
+
}, children: [_jsx(FieldSidebar, { fillableOptions: fillableFieldsFromDocument, mergeTagOptions: allFields, highlightElementPath: highlightElementPath, onHover: setHighlightElementPath, onSelect: formulaEditor.insertField, selectedPaths: formulaEditor.selectedFieldPaths }), _jsx(FormulaWorkspace, { disabledOperators: formulaEditor.disabledOperators, editorRef: formulaEditor.editorRef, isInvalid: isInvalid && formulaEditor.isDirty, validationError: validationError, format: format, onResultTypeChange: nextType => {
|
|
114
|
+
if (nextType === 'date') {
|
|
115
|
+
setFormat(DEFAULT_DATE_CALCULATED_FORMAT);
|
|
116
|
+
}
|
|
117
|
+
else {
|
|
118
|
+
setFormat({
|
|
119
|
+
...DEFAULT_NUMBER_FORMAT,
|
|
120
|
+
resultType: nextType,
|
|
121
|
+
prefixText: nextType === 'currency' ? '$' : '',
|
|
122
|
+
postfixText: nextType === 'percent' ? '%' : '',
|
|
123
|
+
});
|
|
124
|
+
}
|
|
125
|
+
}, advancedOpen: advancedOpen, onToggleAdvanced: () => setAdvancedOpen(prev => !prev), setFormat: setFormat, onInput: formulaEditor.handleEditorInput, onKeyDown: formulaEditor.handleKeyDown, onClick: () => { }, onMouseUp: formulaEditor.handleEditorInput, onPaste: formulaEditor.handlePaste, onOperatorSelect: formulaEditor.insertOperator, onRemoveField: formulaEditor.removeFieldAtIndex, actions: _jsxs(Flex, { gap: "1", alignItems: "center", children: [_jsx(Button, { appearance: "ghost", size: "small", onClick: formulaEditor.undo, disabled: !formulaEditor.canUndo, "aria-label": "Undo", icon: IconUndo }), _jsx(Button, { appearance: "ghost", size: "small", onClick: formulaEditor.redo, disabled: !formulaEditor.canRedo, "aria-label": "Redo", icon: IconRedo })] }) })] }) }), _jsx(Divider, {}), _jsxs(Dialog.Footer, { sticky: true, children: [_jsx(Dialog.CancelButton, { onClick: handleClose, children: "Cancel" }), _jsx(Button, { onClick: handleSave, appearance: "primary", disabled: !canSave, children: "Save" })] })] }));
|
|
147
126
|
};
|
|
148
127
|
//# sourceMappingURL=formula-modal.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"formula-modal.js","sourceRoot":"","sources":["../../../src/components/field-config-panel/formula-modal.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAC;AACrE,OAAO,QAAQ,MAAM,2DAA2D,CAAC;AACjF,OAAO,QAAQ,MAAM,2DAA2D,CAAC;AACjF,OAAO,EAAM,WAAW,EAAE,SAAS,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACtE,OAAO,
|
|
1
|
+
{"version":3,"file":"formula-modal.js","sourceRoot":"","sources":["../../../src/components/field-config-panel/formula-modal.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pdf-view-calculated.d.ts","sourceRoot":"","sources":["../../../src/components/pdf-view/pdf-view-calculated.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAW,MAAM,OAAO,CAAC;AACpC,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAGlE,UAAU,sBAAsB;IAC5B,KAAK,EAAE,QAAQ,CAAC;IAChB,IAAI,CAAC,EAAE,eAAe,CAAC;IACvB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;CACvB;AAED,eAAO,MAAM,iBAAiB,EAAE,EAAE,CAAC,sBAAsB,
|
|
1
|
+
{"version":3,"file":"pdf-view-calculated.d.ts","sourceRoot":"","sources":["../../../src/components/pdf-view/pdf-view-calculated.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAW,MAAM,OAAO,CAAC;AACpC,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAGlE,UAAU,sBAAsB;IAC5B,KAAK,EAAE,QAAQ,CAAC;IAChB,IAAI,CAAC,EAAE,eAAe,CAAC;IACvB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;CACvB;AAED,eAAO,MAAM,iBAAiB,EAAE,EAAE,CAAC,sBAAsB,CAgBxD,CAAC"}
|
|
@@ -2,16 +2,10 @@ import { jsx as _jsx } from "react/jsx-runtime";
|
|
|
2
2
|
import { useMemo } from 'react';
|
|
3
3
|
import { evaluateFormula, formatCalculatedResult, resolvePdfDataValues } from '../../utils';
|
|
4
4
|
export const PdfViewCalculated = ({ data, field, holidays }) => {
|
|
5
|
-
var _a;
|
|
6
|
-
const dateFieldPaths = useMemo(() => {
|
|
7
|
-
var _a;
|
|
8
|
-
const paths = (_a = field.formulaFormat) === null || _a === void 0 ? void 0 : _a.dateFieldPaths;
|
|
9
|
-
return (paths === null || paths === void 0 ? void 0 : paths.length) ? new Set(paths) : undefined;
|
|
10
|
-
}, [(_a = field.formulaFormat) === null || _a === void 0 ? void 0 : _a.dateFieldPaths]);
|
|
11
5
|
const displayValue = useMemo(() => {
|
|
12
6
|
var _a, _b, _c, _d;
|
|
13
7
|
if ((_b = (_a = field.formula) === null || _a === void 0 ? void 0 : _a.tokens) === null || _b === void 0 ? void 0 : _b.length) {
|
|
14
|
-
const value = evaluateFormula(field.formula, data,
|
|
8
|
+
const value = evaluateFormula(field.formula, data, holidays);
|
|
15
9
|
if (value === null) {
|
|
16
10
|
return '';
|
|
17
11
|
}
|
|
@@ -21,15 +15,7 @@ export const PdfViewCalculated = ({ data, field, holidays }) => {
|
|
|
21
15
|
return (_c = resolvePdfDataValues(data, field.path)) !== null && _c !== void 0 ? _c : '';
|
|
22
16
|
}
|
|
23
17
|
return (_d = field.label) !== null && _d !== void 0 ? _d : '';
|
|
24
|
-
}, [
|
|
25
|
-
data,
|
|
26
|
-
dateFieldPaths,
|
|
27
|
-
field.formula,
|
|
28
|
-
field.formulaFormat,
|
|
29
|
-
field.label,
|
|
30
|
-
field.path,
|
|
31
|
-
holidays,
|
|
32
|
-
]);
|
|
18
|
+
}, [data, field.formula, field.formulaFormat, field.label, field.path, holidays]);
|
|
33
19
|
return _jsx("div", { className: "dte-pdf-field-value", children: displayValue });
|
|
34
20
|
};
|
|
35
21
|
//# sourceMappingURL=pdf-view-calculated.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pdf-view-calculated.js","sourceRoot":"","sources":["../../../src/components/pdf-view/pdf-view-calculated.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAM,OAAO,EAAE,MAAM,OAAO,CAAC;AAEpC,OAAO,EAAE,eAAe,EAAE,sBAAsB,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AAQ5F,MAAM,CAAC,MAAM,iBAAiB,GAA+B,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,EAAE
|
|
1
|
+
{"version":3,"file":"pdf-view-calculated.js","sourceRoot":"","sources":["../../../src/components/pdf-view/pdf-view-calculated.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAM,OAAO,EAAE,MAAM,OAAO,CAAC;AAEpC,OAAO,EAAE,eAAe,EAAE,sBAAsB,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AAQ5F,MAAM,CAAC,MAAM,iBAAiB,GAA+B,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,EAAE;IACvF,MAAM,YAAY,GAAG,OAAO,CAAC,GAAG,EAAE;;QAC9B,IAAI,MAAA,MAAA,KAAK,CAAC,OAAO,0CAAE,MAAM,0CAAE,MAAM,EAAE,CAAC;YAChC,MAAM,KAAK,GAAG,eAAe,CAAC,KAAK,CAAC,OAAO,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;YAC7D,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;gBACjB,OAAO,EAAE,CAAC;YACd,CAAC;YACD,OAAO,sBAAsB,CAAC,KAAK,EAAE,KAAK,CAAC,aAAa,CAAC,CAAC;QAC9D,CAAC;QACD,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC;YACb,OAAO,MAAA,oBAAoB,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,mCAAI,EAAE,CAAC;QACxD,CAAC;QACD,OAAO,MAAA,KAAK,CAAC,KAAK,mCAAI,EAAE,CAAC;IAC7B,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,aAAa,EAAE,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC;IAElF,OAAO,cAAK,SAAS,EAAC,qBAAqB,YAAE,YAAY,GAAO,CAAC;AACrE,CAAC,CAAC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { ESignFieldType, FieldTypeEnum, FieldTypeOption, PdfFieldSubType } from '../interface/types';
|
|
1
|
+
import { CalculatedFormatForDate, CalculatedFormatForNumber, ESignFieldType, FieldTypeEnum, FieldTypeOption, PdfFieldSubType } from '../interface/types';
|
|
2
2
|
export declare const FIELD_CONSTANTS: {
|
|
3
3
|
readonly defaultWidth: 200;
|
|
4
4
|
readonly defaultHeight: 25;
|
|
@@ -28,4 +28,10 @@ export declare const DISABLE_FIELD_RESIZE: Record<FieldTypeEnum, Partial<Record<
|
|
|
28
28
|
disableHorizontal?: boolean;
|
|
29
29
|
disableVertical?: boolean;
|
|
30
30
|
}>>>;
|
|
31
|
+
export declare const ROUNDING_OPTIONS: {
|
|
32
|
+
label: string;
|
|
33
|
+
value: CalculatedFormatForNumber["roundingMode"];
|
|
34
|
+
}[];
|
|
35
|
+
export declare const DEFAULT_NUMBER_FORMAT: CalculatedFormatForNumber;
|
|
36
|
+
export declare const DEFAULT_DATE_CALCULATED_FORMAT: CalculatedFormatForDate;
|
|
31
37
|
//# sourceMappingURL=field.constants.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"field.constants.d.ts","sourceRoot":"","sources":["../../src/constants/field.constants.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,cAAc,EACd,aAAa,EACb,eAAe,EACf,eAAe,EAClB,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"field.constants.d.ts","sourceRoot":"","sources":["../../src/constants/field.constants.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,uBAAuB,EACvB,yBAAyB,EACzB,cAAc,EACd,aAAa,EACb,eAAe,EACf,eAAe,EAClB,MAAM,oBAAoB,CAAC;AAI5B,eAAO,MAAM,eAAe;;;;;;;CAOlB,CAAC;AAEX,eAAO,MAAM,4BAA4B,EAKpC,MAAM,CAAC,eAAe,EAAE;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC,CAAC;AAEhE,eAAO,MAAM,8BAA8B,KAAK,CAAC;AAEjD,eAAO,MAAM,2BAA2B,EAGnC,MAAM,CAAC,eAAe,EAAE;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC,CAAC;AAEhE,eAAO,MAAM,yBAAyB,EAAE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,cAAc,CAAA;CAAE,EAK3E,CAAC;AAEF,eAAO,MAAM,oBAAoB,EAAE,eAAe,EAMjD,CAAC;AAEF,eAAO,MAAM,kBAAkB,EAAE,eAAe,EAM/C,CAAC;AAEF,eAAO,MAAM,sBAAsB,EAAE,eAAe,EAKnD,CAAC;AAEF,eAAO,MAAM,mBAAmB,EAAE,eAAe,EAWhD,CAAC;AAEF,eAAO,MAAM,oBAAoB,EAM5B,MAAM,CACP,aAAa,EACb,OAAO,CAAC,MAAM,CAAC,eAAe,EAAE;IAAE,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAAC,eAAe,CAAC,EAAE,OAAO,CAAA;CAAE,CAAC,CAAC,CAC/F,CAAC;AAEF,eAAO,MAAM,gBAAgB,EAIxB;IACD,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,yBAAyB,CAAC,cAAc,CAAC,CAAC;CACpD,EAAE,CAAC;AAEJ,eAAO,MAAM,qBAAqB,EAAE,yBASnC,CAAC;AAEF,eAAO,MAAM,8BAA8B,EAAE,uBAG5C,CAAC"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { ESignFieldType, FieldTypeEnum, } from '../interface/types';
|
|
2
|
+
import { DEFAULT_DATE_FORMAT } from './calculated.constants';
|
|
2
3
|
import { BASE_PAGE_WIDTH } from './pdf-editor.constants';
|
|
3
4
|
export const FIELD_CONSTANTS = {
|
|
4
5
|
defaultWidth: 200,
|
|
@@ -64,4 +65,23 @@ export const DISABLE_FIELD_RESIZE = {
|
|
|
64
65
|
},
|
|
65
66
|
},
|
|
66
67
|
};
|
|
68
|
+
export const ROUNDING_OPTIONS = [
|
|
69
|
+
{ label: 'Round', value: 'round' },
|
|
70
|
+
{ label: 'Floor', value: 'floor' },
|
|
71
|
+
{ label: 'Ceil', value: 'ceil' },
|
|
72
|
+
];
|
|
73
|
+
export const DEFAULT_NUMBER_FORMAT = {
|
|
74
|
+
resultType: 'number',
|
|
75
|
+
thousandsSeparator: false,
|
|
76
|
+
decimals: 2,
|
|
77
|
+
roundingMode: 'round',
|
|
78
|
+
decimalSeparatorEnabled: false,
|
|
79
|
+
decimalSeparator: '.',
|
|
80
|
+
prefixText: '',
|
|
81
|
+
postfixText: '',
|
|
82
|
+
};
|
|
83
|
+
export const DEFAULT_DATE_CALCULATED_FORMAT = {
|
|
84
|
+
resultType: 'date',
|
|
85
|
+
dateFormat: DEFAULT_DATE_FORMAT,
|
|
86
|
+
};
|
|
67
87
|
//# sourceMappingURL=field.constants.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"field.constants.js","sourceRoot":"","sources":["../../src/constants/field.constants.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"field.constants.js","sourceRoot":"","sources":["../../src/constants/field.constants.ts"],"names":[],"mappings":"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"}
|
|
@@ -97,14 +97,15 @@ export type FormulaToken = {
|
|
|
97
97
|
} | {
|
|
98
98
|
type: 'field';
|
|
99
99
|
path: string;
|
|
100
|
+
fieldType: SchemaFieldType;
|
|
100
101
|
};
|
|
101
102
|
/** Structured formula representation (AST-like token list) for validation and safe editing */
|
|
102
103
|
export interface StructuredFormula {
|
|
103
104
|
tokens: FormulaToken[];
|
|
104
105
|
}
|
|
105
|
-
/** Format options for a calculated field result (
|
|
106
|
-
export interface
|
|
107
|
-
resultType: 'number' | 'currency' | 'percent'
|
|
106
|
+
/** Format options for a calculated field with a numeric result (number, currency, percent) */
|
|
107
|
+
export interface CalculatedFormatForNumber {
|
|
108
|
+
resultType: 'number' | 'currency' | 'percent';
|
|
108
109
|
thousandsSeparator: boolean;
|
|
109
110
|
decimals: number;
|
|
110
111
|
roundingMode: 'round' | 'floor' | 'ceil';
|
|
@@ -113,9 +114,14 @@ export interface CalculatedFieldFormat {
|
|
|
113
114
|
prefixText: string;
|
|
114
115
|
postfixText: string;
|
|
115
116
|
dateFormat?: string;
|
|
116
|
-
/** Paths of date-typed fields used in the formula, persisted for date-aware evaluation */
|
|
117
|
-
dateFieldPaths?: string[];
|
|
118
117
|
}
|
|
118
|
+
/** Format options for a calculated field with a date result */
|
|
119
|
+
export interface CalculatedFormatForDate {
|
|
120
|
+
resultType: 'date';
|
|
121
|
+
dateFormat: string;
|
|
122
|
+
}
|
|
123
|
+
/** Format options for a calculated field result (display and rounding) */
|
|
124
|
+
export type CalculatedFieldFormat = CalculatedFormatForDate | CalculatedFormatForNumber;
|
|
119
125
|
export interface SchemaFieldBaseOptions {
|
|
120
126
|
placeholder?: any;
|
|
121
127
|
description?: any;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/interface/types.ts"],"names":[],"mappings":"AAAA,oBAAY,aAAa;IACrB,SAAS,cAAc;IACvB,KAAK,UAAU;IACf,QAAQ,aAAa;IACrB,UAAU,eAAe;IACzB,OAAO,YAAY;CACtB;AAED,oBAAY,cAAc;IACtB,SAAS,cAAc;IACvB,QAAQ,aAAa;IACrB,UAAU,eAAe;IACzB,QAAQ,aAAa;CACxB;AAED,MAAM,MAAM,iBAAiB,GAAG,MAAM,GAAG,MAAM,GAAG,UAAU,GAAG,OAAO,GAAG,QAAQ,CAAC;AAElF,MAAM,MAAM,gBAAgB,GAAG,OAAO,GAAG,MAAM,CAAC;AAEhD,MAAM,MAAM,eAAe,GAAG,iBAAiB,GAAG,cAAc,GAAG,gBAAgB,CAAC;AAEpF,MAAM,WAAW,yBAAyB;IACtC,UAAU,EAAE,OAAO,CAAC;IACpB,MAAM,EAAE;QACJ,MAAM,EAAE,MAAM,CAAC;QACf,KAAK,EAAE;YACH,KAAK,EAAE,MAAM,CAAC;SACjB,EAAE,CAAC;KACP,CAAC;IACF,IAAI,EAAE;QACF,MAAM,EAAE,MAAM,CAAC;QACf,KAAK,EAAE;YACH,KAAK,EAAE,MAAM,CAAC;SACjB,EAAE,CAAC;KACP,EAAE,CAAC;CACP;AAED,MAAM,WAAW,wBAAwB;IACrC,KAAK,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,MAAM,aAAa,GAAG,yBAAyB,GAAG,wBAAwB,CAAC;AAEjF,MAAM,WAAW,qBAAqB;IAClC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAAC;IAC1B,MAAM,EAAE,qBAAqB,EAAE,CAAC;CACnC;AAED,MAAM,WAAW,qBAAqB;IAClC,EAAE,EAAE,MAAM,CAAC;IACX,eAAe,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC;IAC/B,UAAU,EAAE,sBAAsB,EAAE,CAAC;CACxC;AAED,MAAM,WAAW,sBAAsB;IACnC,EAAE,EAAE,MAAM,CAAC;IACX,YAAY,EAAE,MAAM,CAAC;IACrB,eAAe,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC;IAC/B,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,QAAQ;IACrB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,aAAa,CAAC;IACpB,OAAO,CAAC,EAAE,eAAe,CAAC;IAC1B,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,aAAa,CAAC;IACrB,OAAO,CAAC,EAAE,iBAAiB,CAAC;IAC5B,aAAa,CAAC,EAAE,qBAAqB,CAAC;IACtC,gBAAgB,CAAC,EAAE,qBAAqB,GAAG,IAAI,CAAC;CACnD;AAED,MAAM,MAAM,eAAe,GAAG,QAAQ,GAAG,MAAM,CAAC;AAEhD,MAAM,WAAW,eAAe;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,aAAa,CAAC;IACpB,OAAO,CAAC,EAAE,eAAe,CAAC;IAC1B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,eAAe,CAAC;CAC/B;AAED,MAAM,WAAW,mBAAmB;IAChC,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,eAAe,EAAE,CAAC;CAC7B;AAED,kCAAkC;AAClC,eAAO,MAAM,iBAAiB,UAAuB,CAAC;AACtD,MAAM,MAAM,eAAe,GAAG,CAAC,OAAO,iBAAiB,CAAC,CAAC,MAAM,CAAC,CAAC;AAEjE,yFAAyF;AACzF,MAAM,MAAM,YAAY,GAClB;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GACjC;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,KAAK,EAAE,eAAe,CAAA;CAAE,GAC5C;IAAE,IAAI,EAAE,QAAQ,CAAA;CAAE,GAClB;IAAE,IAAI,EAAE,QAAQ,CAAA;CAAE,GAClB;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/interface/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/interface/types.ts"],"names":[],"mappings":"AAAA,MAAM,CAAN,IAAY,aAMX;AAND,WAAY,aAAa;IACrB,wCAAuB,CAAA;IACvB,gCAAe,CAAA;IACf,sCAAqB,CAAA;IACrB,0CAAyB,CAAA;IACzB,oCAAmB,CAAA;AACvB,CAAC,EANW,aAAa,KAAb,aAAa,QAMxB;AAED,MAAM,CAAN,IAAY,cAKX;AALD,WAAY,cAAc;IACtB,yCAAuB,CAAA;IACvB,uCAAqB,CAAA;IACrB,2CAAyB,CAAA;IACzB,uCAAqB,CAAA;AACzB,CAAC,EALW,cAAc,KAAd,cAAc,QAKzB;AAoFD,kCAAkC;AAClC,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/interface/types.ts"],"names":[],"mappings":"AAAA,MAAM,CAAN,IAAY,aAMX;AAND,WAAY,aAAa;IACrB,wCAAuB,CAAA;IACvB,gCAAe,CAAA;IACf,sCAAqB,CAAA;IACrB,0CAAyB,CAAA;IACzB,oCAAmB,CAAA;AACvB,CAAC,EANW,aAAa,KAAb,aAAa,QAMxB;AAED,MAAM,CAAN,IAAY,cAKX;AALD,WAAY,cAAc;IACtB,yCAAuB,CAAA;IACvB,uCAAqB,CAAA;IACrB,2CAAyB,CAAA;IACzB,uCAAqB,CAAA;AACzB,CAAC,EALW,cAAc,KAAd,cAAc,QAKzB;AAoFD,kCAAkC;AAClC,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;AA4GtD;;GAEG;AAEH,wCAAwC;AACxC,MAAM,CAAC,MAAM,gBAAgB,GAAG;IAC5B,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,UAAU,EAAE;IACxC,EAAE,KAAK,EAAE,kBAAkB,EAAE,KAAK,EAAE,kBAAkB,EAAE;IACxD,EAAE,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,aAAa,EAAE;IAC9C,EAAE,KAAK,EAAE,iBAAiB,EAAE,KAAK,EAAE,iBAAiB,EAAE;IACtD,EAAE,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,aAAa,EAAE;IAC9C,EAAE,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,WAAW,EAAE;IAC1C,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,UAAU,EAAE;IACxC,EAAE,KAAK,EAAE,cAAc,EAAE,KAAK,EAAE,cAAc,EAAE;CAC1C,CAAC;AAEX,wCAAwC;AACxC,MAAM,CAAC,MAAM,gBAAgB,GAAG;IAC5B,EAAE,KAAK,EAAE,eAAe,EAAE,KAAK,EAAE,QAAQ,EAAE;IAC3C,EAAE,KAAK,EAAE,mBAAmB,EAAE,KAAK,EAAE,SAAS,EAAE;IAChD,EAAE,KAAK,EAAE,kBAAkB,EAAE,KAAK,EAAE,QAAQ,EAAE;IAC9C,EAAE,KAAK,EAAE,eAAe,EAAE,KAAK,EAAE,QAAQ,EAAE;IAC3C,EAAE,KAAK,EAAE,+BAA+B,EAAE,KAAK,EAAE,SAAS,EAAE;IAC5D,EAAE,KAAK,EAAE,4BAA4B,EAAE,KAAK,EAAE,SAAS,EAAE;CACnD,CAAC;AAMX,iEAAiE;AACjE,MAAM,CAAC,MAAM,oBAAoB,GAAwB,CAAC,UAAU,EAAE,cAAc,CAAC,CAAC"}
|
|
@@ -13,9 +13,10 @@ export declare function valueToNumber(raw: unknown): number;
|
|
|
13
13
|
* to null / undefined / empty / non-numeric (non-date) — making the entire
|
|
14
14
|
* calculation blank instead of silently substituting 0.
|
|
15
15
|
*
|
|
16
|
-
*
|
|
17
|
-
* arithmetic follows business-day semantics — weekends and
|
|
18
|
-
* when adding/subtracting days, and date diffs count only
|
|
16
|
+
* Date fields are identified by `fieldType: 'date'` on field tokens. When date
|
|
17
|
+
* fields are present, arithmetic follows business-day semantics — weekends and
|
|
18
|
+
* holidays are skipped when adding/subtracting days, and date diffs count only
|
|
19
|
+
* business days.
|
|
19
20
|
*/
|
|
20
|
-
export declare function evaluateFormula(formula: StructuredFormula | undefined | null, data: DataModelValues | undefined,
|
|
21
|
+
export declare function evaluateFormula(formula: StructuredFormula | undefined | null, data: DataModelValues | undefined, holidays?: string[]): number | null;
|
|
21
22
|
//# sourceMappingURL=evaluate-formula.utils.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"evaluate-formula.utils.d.ts","sourceRoot":"","sources":["../../../src/utils/formula/evaluate-formula.utils.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,eAAe,EAGf,iBAAiB,EACpB,MAAM,uBAAuB,CAAC;AAG/B;;;GAGG;AACH,wBAAgB,aAAa,CAAC,GAAG,EAAE,OAAO,GAAG,MAAM,CAgBlD;
|
|
1
|
+
{"version":3,"file":"evaluate-formula.utils.d.ts","sourceRoot":"","sources":["../../../src/utils/formula/evaluate-formula.utils.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,eAAe,EAGf,iBAAiB,EACpB,MAAM,uBAAuB,CAAC;AAG/B;;;GAGG;AACH,wBAAgB,aAAa,CAAC,GAAG,EAAE,OAAO,GAAG,MAAM,CAgBlD;AAiXD;;;;;;;;;;;;;GAaG;AACH,wBAAgB,eAAe,CAC3B,OAAO,EAAE,iBAAiB,GAAG,SAAS,GAAG,IAAI,EAC7C,IAAI,EAAE,eAAe,GAAG,SAAS,EACjC,QAAQ,CAAC,EAAE,MAAM,EAAE,GACpB,MAAM,GAAG,IAAI,CAoBf"}
|
|
@@ -20,6 +20,15 @@ export function valueToNumber(raw) {
|
|
|
20
20
|
const n = Number(s);
|
|
21
21
|
return Number.isNaN(n) ? 0 : n;
|
|
22
22
|
}
|
|
23
|
+
function collectDateFieldPaths(formula) {
|
|
24
|
+
const set = new Set();
|
|
25
|
+
for (const t of formula.tokens) {
|
|
26
|
+
if (t.type === 'field' && t.fieldType === 'date') {
|
|
27
|
+
set.add(t.path);
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
return set;
|
|
31
|
+
}
|
|
23
32
|
function hasAllFieldValues(formula, data, dateFieldPaths) {
|
|
24
33
|
return formula.tokens.every((t) => {
|
|
25
34
|
if (t.type !== 'field') {
|
|
@@ -29,7 +38,7 @@ function hasAllFieldValues(formula, data, dateFieldPaths) {
|
|
|
29
38
|
if (raw === '') {
|
|
30
39
|
return false;
|
|
31
40
|
}
|
|
32
|
-
if (dateFieldPaths
|
|
41
|
+
if (dateFieldPaths.has(t.path)) {
|
|
33
42
|
return !isNaN(new Date(raw).getTime());
|
|
34
43
|
}
|
|
35
44
|
return !isNaN(Number(raw.trim()));
|
|
@@ -214,11 +223,11 @@ function businessDayDiff(fromMs, toMs, holidaySet) {
|
|
|
214
223
|
}
|
|
215
224
|
return count * direction;
|
|
216
225
|
}
|
|
217
|
-
function resolveDateAwareTokens(formula, data
|
|
226
|
+
function resolveDateAwareTokens(formula, data) {
|
|
218
227
|
return formula.tokens.map((t) => {
|
|
219
228
|
if (t.type === 'field') {
|
|
220
229
|
const raw = resolvePdfDataValues(data, t.path);
|
|
221
|
-
if (
|
|
230
|
+
if (t.fieldType === 'date') {
|
|
222
231
|
const ms = parseDateValue(raw);
|
|
223
232
|
return { kind: 'date', value: isNaN(ms) ? 0 : ms };
|
|
224
233
|
}
|
|
@@ -311,20 +320,22 @@ function evalDateAwareTokens(tokens, holidaySet) {
|
|
|
311
320
|
* to null / undefined / empty / non-numeric (non-date) — making the entire
|
|
312
321
|
* calculation blank instead of silently substituting 0.
|
|
313
322
|
*
|
|
314
|
-
*
|
|
315
|
-
* arithmetic follows business-day semantics — weekends and
|
|
316
|
-
* when adding/subtracting days, and date diffs count only
|
|
323
|
+
* Date fields are identified by `fieldType: 'date'` on field tokens. When date
|
|
324
|
+
* fields are present, arithmetic follows business-day semantics — weekends and
|
|
325
|
+
* holidays are skipped when adding/subtracting days, and date diffs count only
|
|
326
|
+
* business days.
|
|
317
327
|
*/
|
|
318
|
-
export function evaluateFormula(formula, data,
|
|
328
|
+
export function evaluateFormula(formula, data, holidays) {
|
|
319
329
|
var _a;
|
|
320
330
|
if (!((_a = formula === null || formula === void 0 ? void 0 : formula.tokens) === null || _a === void 0 ? void 0 : _a.length)) {
|
|
321
331
|
return null;
|
|
322
332
|
}
|
|
333
|
+
const dateFieldPaths = collectDateFieldPaths(formula);
|
|
323
334
|
if (!hasAllFieldValues(formula, data, dateFieldPaths)) {
|
|
324
335
|
return null;
|
|
325
336
|
}
|
|
326
|
-
if (dateFieldPaths
|
|
327
|
-
const resolved = resolveDateAwareTokens(formula, data
|
|
337
|
+
if (dateFieldPaths.size) {
|
|
338
|
+
const resolved = resolveDateAwareTokens(formula, data);
|
|
328
339
|
const holidaySet = buildHolidaySet(holidays);
|
|
329
340
|
const result = evalDateAwareTokens(resolved, holidaySet);
|
|
330
341
|
return result.value;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"evaluate-formula.utils.js","sourceRoot":"","sources":["../../../src/utils/formula/evaluate-formula.utils.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"evaluate-formula.utils.js","sourceRoot":"","sources":["../../../src/utils/formula/evaluate-formula.utils.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AAErD;;;GAGG;AACH,MAAM,UAAU,aAAa,CAAC,GAAY;IACtC,IAAI,GAAG,KAAK,IAAI,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;QACpC,OAAO,CAAC,CAAC;IACb,CAAC;IACD,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;QAChD,OAAO,GAAG,CAAC;IACf,CAAC;IACD,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;QAC1B,OAAO,CAAC,CAAC;IACb,CAAC;IACD,MAAM,CAAC,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC;IACrB,IAAI,CAAC,KAAK,EAAE,EAAE,CAAC;QACX,OAAO,CAAC,CAAC;IACb,CAAC;IACD,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;IACpB,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACnC,CAAC;AAED,SAAS,qBAAqB,CAAC,OAA0B;IACrD,MAAM,GAAG,GAAG,IAAI,GAAG,EAAU,CAAC;IAC9B,KAAK,MAAM,CAAC,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;QAC7B,IAAI,CAAC,CAAC,IAAI,KAAK,OAAO,IAAI,CAAC,CAAC,SAAS,KAAK,MAAM,EAAE,CAAC;YAC/C,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QACpB,CAAC;IACL,CAAC;IACD,OAAO,GAAG,CAAC;AACf,CAAC;AAED,SAAS,iBAAiB,CACtB,OAA0B,EAC1B,IAAiC,EACjC,cAA2B;IAE3B,OAAO,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAe,EAAE,EAAE;QAC5C,IAAI,CAAC,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;YACrB,OAAO,IAAI,CAAC;QAChB,CAAC;QACD,MAAM,GAAG,GAAG,oBAAoB,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;QAC/C,IAAI,GAAG,KAAK,EAAE,EAAE,CAAC;YACb,OAAO,KAAK,CAAC;QACjB,CAAC;QACD,IAAI,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;YAC7B,OAAO,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;QAC3C,CAAC;QACD,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;IACtC,CAAC,CAAC,CAAC;AACP,CAAC;AAQD,SAAS,aAAa,CAClB,OAA0B,EAC1B,IAAiC;IAEjC,OAAO,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAe,EAAiB,EAAE;QACzD,IAAI,CAAC,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;YACrB,MAAM,GAAG,GAAG,oBAAoB,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;YAC/C,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,aAAa,CAAC,GAAG,CAAC,EAAE,CAAC;QACzD,CAAC;QACD,IAAI,CAAC,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YACtB,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC;QAC7D,CAAC;QACD,OAAO,CAAkB,CAAC;IAC9B,CAAC,CAAC,CAAC;AACP,CAAC;AAED,SAAS,OAAO,CAAC,CAAS,EAAE,EAAmB,EAAE,CAAS;IACtD,QAAQ,EAAE,EAAE,CAAC;QACT,KAAK,GAAG;YACJ,OAAO,CAAC,GAAG,CAAC,CAAC;QACjB,KAAK,GAAG;YACJ,OAAO,CAAC,GAAG,CAAC,CAAC;QACjB,KAAK,GAAG;YACJ,OAAO,CAAC,GAAG,CAAC,CAAC;QACjB,KAAK,GAAG;YACJ,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QAC/B;YACI,OAAO,CAAC,CAAC;IACjB,CAAC;AACL,CAAC;AAED,mFAAmF;AACnF,SAAS,iBAAiB,CAA6B,MAAW,EAAE,SAAiB;IACjF,IAAI,OAAO,GAAG,CAAC,CAAC;IAChB,KAAK,IAAI,CAAC,GAAG,SAAS,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACjD,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;QACpB,IAAI,CAAC,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YACtB,OAAO,EAAE,CAAC;QACd,CAAC;aAAM,IAAI,CAAC,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YAC7B,OAAO,EAAE,CAAC;YACV,IAAI,OAAO,KAAK,CAAC,EAAE,CAAC;gBAChB,OAAO,CAAC,CAAC;YACb,CAAC;QACL,CAAC;IACL,CAAC;IACD,OAAO,CAAC,CAAC,CAAC;AACd,CAAC;AAED,oEAAoE;AACpE,SAAS,QAAQ,CAAC,MAAuB;IACrC,MAAM,IAAI,GAAG,CAAC,GAAG,MAAM,CAAC,CAAC;IACzB,sBAAsB;IACtB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,GAAI,CAAC;QACpC,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,IAAI,CAAC,CAAC,IAAI,KAAK,UAAU,IAAI,CAAC,CAAC,CAAC,KAAK,KAAK,GAAG,IAAI,CAAC,CAAC,KAAK,KAAK,GAAG,CAAC,EAAE,CAAC;YAChE,MAAM,CAAC,GAAI,IAAI,CAAC,CAAC,GAAG,CAAC,CAAuC,CAAC,KAAK,CAAC;YACnE,MAAM,CAAC,GAAI,IAAI,CAAC,CAAC,GAAG,CAAC,CAAuC,CAAC,KAAK,CAAC;YACnE,MAAM,MAAM,GAAG,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;YACtC,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;YACzD,SAAS;QACb,CAAC;QACD,CAAC,IAAI,CAAC,CAAC;IACX,CAAC;IACD,uBAAuB;IACvB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,GAAI,CAAC;QACpC,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,IAAI,CAAC,CAAC,IAAI,KAAK,UAAU,IAAI,CAAC,CAAC,CAAC,KAAK,KAAK,GAAG,IAAI,CAAC,CAAC,KAAK,KAAK,GAAG,CAAC,EAAE,CAAC;YAChE,MAAM,CAAC,GAAI,IAAI,CAAC,CAAC,GAAG,CAAC,CAAuC,CAAC,KAAK,CAAC;YACnE,MAAM,CAAC,GAAI,IAAI,CAAC,CAAC,GAAG,CAAC,CAAuC,CAAC,KAAK,CAAC;YACnE,MAAM,MAAM,GAAG,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;YACtC,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;YACzD,SAAS;QACb,CAAC;QACD,CAAC,IAAI,CAAC,CAAC;IACX,CAAC;IACD,MAAM,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;IACvB,OAAO,CAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,IAAI,MAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AACxD,CAAC;AAED,SAAS,kBAAkB,CAAC,MAAuB;IAC/C,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACtB,OAAO,CAAC,CAAC;IACb,CAAC;IACD,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;QACrD,OAAO,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;IAC3B,CAAC;IAED,MAAM,IAAI,GAAG,CAAC,GAAG,MAAM,CAAC,CAAC;IAEzB,IAAI,GAAG,GAAG,CAAC,CAAC;IACZ,OAAO,GAAG,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;QACvB,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YAC9B,MAAM,KAAK,GAAG,iBAAiB,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;YAC3C,IAAI,KAAK,KAAK,CAAC,CAAC,EAAE,CAAC;gBACf,MAAM;YACV,CAAC;YACD,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,EAAE,KAAK,CAAC,CAAC;YACzC,MAAM,KAAK,GAAG,kBAAkB,CAAC,KAAK,CAAC,CAAC;YACxC,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,KAAK,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC;YAC7D,SAAS;QACb,CAAC;QACD,GAAG,EAAE,CAAC;IACV,CAAC;IAED,OAAO,QAAQ,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAqBD,SAAS,YAAY,CAAC,CAAiB;IACnC,OAAO,MAAM,IAAI,CAAC,CAAC;AACvB,CAAC;AAED,SAAS,cAAc,CAAC,GAAW;IAC/B,MAAM,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC;IACxB,OAAO,KAAK,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;AAClD,CAAC;AAED,SAAS,UAAU,CAAC,EAAU;IAC1B,MAAM,CAAC,GAAG,IAAI,IAAI,CAAC,EAAE,CAAC,CAAC;IACvB,CAAC,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IAC1B,OAAO,CAAC,CAAC;AACb,CAAC;AAED,SAAS,SAAS,CAAC,CAAO;IACtB,MAAM,CAAC,GAAG,CAAC,CAAC,cAAc,EAAE,CAAC;IAC7B,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IACvD,MAAM,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IACpD,OAAO,GAAG,CAAC,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC;AAC9B,CAAC;AAED,SAAS,SAAS,CAAC,CAAO;IACtB,MAAM,GAAG,GAAG,CAAC,CAAC,SAAS,EAAE,CAAC;IAC1B,OAAO,GAAG,KAAK,CAAC,IAAI,GAAG,KAAK,CAAC,CAAC;AAClC,CAAC;AAED,SAAS,eAAe,CAAC,QAAmB;IACxC,IAAI,CAAC,CAAA,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,MAAM,CAAA,EAAE,CAAC;QACpB,OAAO,IAAI,GAAG,EAAE,CAAC;IACrB,CAAC;IACD,MAAM,GAAG,GAAG,IAAI,GAAG,EAAU,CAAC;IAC9B,KAAK,MAAM,CAAC,IAAI,QAAQ,EAAE,CAAC;QACvB,MAAM,CAAC,GAAG,UAAU,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;QAC5C,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC;YACtB,GAAG,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;QAC1B,CAAC;IACL,CAAC;IACD,OAAO,GAAG,CAAC;AACf,CAAC;AAED,SAAS,gBAAgB,CAAC,CAAO,EAAE,UAAuB;IACtD,OAAO,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,GAAG,CAAC,IAAI,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACjF,CAAC;AAED;;;GAGG;AACH,SAAS,eAAe,CAAC,OAAe,EAAE,IAAY,EAAE,UAAuB;IAC3E,MAAM,MAAM,GAAG,UAAU,CAAC,OAAO,CAAC,CAAC;IACnC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC;QAC9B,OAAO,MAAM,CAAC,OAAO,EAAE,CAAC;IAC5B,CAAC;IAED,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACjC,IAAI,OAAO,KAAK,CAAC,EAAE,CAAC;QAChB,OAAO,MAAM,CAAC,OAAO,EAAE,CAAC;IAC5B,CAAC;IAED,MAAM,SAAS,GAAG,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACvC,IAAI,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IAElC,OAAO,SAAS,GAAG,CAAC,EAAE,CAAC;QACnB,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,UAAU,EAAE,GAAG,SAAS,CAAC,CAAC;QACnD,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE,UAAU,CAAC,EAAE,CAAC;YACxC,SAAS,EAAE,CAAC;QAChB,CAAC;IACL,CAAC;IAED,OAAO,MAAM,CAAC,OAAO,EAAE,CAAC;AAC5B,CAAC;AAED;;;GAGG;AACH,SAAS,eAAe,CAAC,MAAc,EAAE,IAAY,EAAE,UAAuB;IAC1E,MAAM,KAAK,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC;IACjC,MAAM,GAAG,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;IAE7B,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC;QACzD,OAAO,CAAC,CAAC;IACb,CAAC;IAED,MAAM,SAAS,GAAG,GAAG,CAAC,OAAO,EAAE,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC5D,MAAM,MAAM,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;IACzC,IAAI,KAAK,GAAG,CAAC,CAAC;IAEd,OAAO,SAAS,CAAC,MAAM,CAAC,KAAK,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC;QAC1C,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,UAAU,EAAE,GAAG,SAAS,CAAC,CAAC;QACnD,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE,UAAU,CAAC,EAAE,CAAC;YACxC,KAAK,EAAE,CAAC;QACZ,CAAC;IACL,CAAC;IAED,OAAO,KAAK,GAAG,SAAS,CAAC;AAC7B,CAAC;AAED,SAAS,sBAAsB,CAC3B,OAA0B,EAC1B,IAAiC;IAEjC,OAAO,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAe,EAAkB,EAAE;QAC1D,IAAI,CAAC,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;YACrB,MAAM,GAAG,GAAG,oBAAoB,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;YAC/C,IAAI,CAAC,CAAC,SAAS,KAAK,MAAM,EAAE,CAAC;gBACzB,MAAM,EAAE,GAAG,cAAc,CAAC,GAAG,CAAC,CAAC;gBAC/B,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;YACvD,CAAC;YACD,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,aAAa,CAAC,GAAG,CAAC,EAAE,CAAC;QACzD,CAAC;QACD,IAAI,CAAC,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YACtB,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC;QAC7D,CAAC;QACD,OAAO,CAAmB,CAAC;IAC/B,CAAC,CAAC,CAAC;AACP,CAAC;AAED;;;;;;;GAOG;AACH,SAAS,WAAW,CAChB,CAAa,EACb,EAAmB,EACnB,CAAa,EACb,UAAuB;IAEvB,IAAI,CAAC,CAAC,IAAI,KAAK,MAAM,IAAI,CAAC,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;QAC3C,IAAI,EAAE,KAAK,GAAG,EAAE,CAAC;YACb,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,eAAe,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,UAAU,CAAC,EAAE,CAAC;QAClF,CAAC;QACD,IAAI,EAAE,KAAK,GAAG,EAAE,CAAC;YACb,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,eAAe,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,KAAK,EAAE,UAAU,CAAC,EAAE,CAAC;QACnF,CAAC;IACL,CAAC;IACD,IAAI,CAAC,CAAC,IAAI,KAAK,QAAQ,IAAI,CAAC,CAAC,IAAI,KAAK,MAAM,IAAI,EAAE,KAAK,GAAG,EAAE,CAAC;QACzD,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,eAAe,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,UAAU,CAAC,EAAE,CAAC;IAClF,CAAC;IACD,IAAI,CAAC,CAAC,IAAI,KAAK,MAAM,IAAI,CAAC,CAAC,IAAI,KAAK,MAAM,IAAI,EAAE,KAAK,GAAG,EAAE,CAAC;QACvD,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,eAAe,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,UAAU,CAAC,EAAE,CAAC;IACpF,CAAC;IACD,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC;AACpE,CAAC;AAED,SAAS,YAAY,CAAC,MAAwB,EAAE,UAAuB;IACnE,MAAM,IAAI,GAAG,CAAC,GAAG,MAAM,CAAC,CAAC;IAEzB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,GAAI,CAAC;QACpC,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,IAAI,MAAM,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,UAAU,IAAI,CAAC,CAAC,CAAC,KAAK,KAAK,GAAG,IAAI,CAAC,CAAC,KAAK,KAAK,GAAG,CAAC,EAAE,CAAC;YAC/E,MAAM,IAAI,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;YACzB,MAAM,KAAK,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;YAC1B,IAAI,YAAY,CAAC,IAAI,CAAC,IAAI,YAAY,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC5C,MAAM,MAAM,GAAG,WAAW,CAAC,IAAI,EAAE,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,UAAU,CAAC,CAAC;gBAC7D,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC;gBAC9B,SAAS;YACb,CAAC;QACL,CAAC;QACD,CAAC,IAAI,CAAC,CAAC;IACX,CAAC;IAED,MAAM,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;IACvB,OAAO,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;AACxE,CAAC;AAED,SAAS,mBAAmB,CAAC,MAAwB,EAAE,UAAuB;IAC1E,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACtB,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;IACxC,CAAC;IACD,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,IAAI,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACjD,OAAO,MAAM,CAAC,CAAC,CAAC,CAAC;IACrB,CAAC;IAED,MAAM,IAAI,GAAG,CAAC,GAAG,MAAM,CAAC,CAAC;IAEzB,IAAI,GAAG,GAAG,CAAC,CAAC;IACZ,OAAO,GAAG,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;QACvB,IAAI,MAAM,IAAI,IAAI,CAAC,GAAG,CAAC,IAAK,IAAI,CAAC,GAAG,CAAsB,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YAC3E,MAAM,KAAK,GAAG,iBAAiB,CAAC,IAA0B,EAAE,GAAG,CAAC,CAAC;YACjE,IAAI,KAAK,KAAK,CAAC,CAAC,EAAE,CAAC;gBACf,MAAM;YACV,CAAC;YACD,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,EAAE,KAAK,CAAC,CAAC;YACzC,MAAM,MAAM,GAAG,mBAAmB,CAAC,KAAyB,EAAE,UAAU,CAAC,CAAC;YAC1E,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,KAAK,GAAG,GAAG,GAAG,CAAC,EAAE,MAAM,CAAC,CAAC;YAC1C,SAAS;QACb,CAAC;QACD,GAAG,EAAE,CAAC;IACV,CAAC;IAED,OAAO,YAAY,CAAC,IAAwB,EAAE,UAAU,CAAC,CAAC;AAC9D,CAAC;AAED;;;;GAIG;AAEH;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,eAAe,CAC3B,OAA6C,EAC7C,IAAiC,EACjC,QAAmB;;IAEnB,IAAI,CAAC,CAAA,MAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,MAAM,0CAAE,MAAM,CAAA,EAAE,CAAC;QAC3B,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,MAAM,cAAc,GAAG,qBAAqB,CAAC,OAAO,CAAC,CAAC;IAEtD,IAAI,CAAC,iBAAiB,CAAC,OAAO,EAAE,IAAI,EAAE,cAAc,CAAC,EAAE,CAAC;QACpD,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,IAAI,cAAc,CAAC,IAAI,EAAE,CAAC;QACtB,MAAM,QAAQ,GAAG,sBAAsB,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QACvD,MAAM,UAAU,GAAG,eAAe,CAAC,QAAQ,CAAC,CAAC;QAC7C,MAAM,MAAM,GAAG,mBAAmB,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;QACzD,OAAO,MAAM,CAAC,KAAK,CAAC;IACxB,CAAC;IAED,MAAM,QAAQ,GAAG,aAAa,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IAC9C,OAAO,kBAAkB,CAAC,QAAQ,CAAC,CAAC;AACxC,CAAC"}
|
|
@@ -14,7 +14,7 @@ export declare function tokenizeExpression(expression: string): ExpressionPart[]
|
|
|
14
14
|
* Parse an expression string into FormulaToken[] using valid paths.
|
|
15
15
|
* Invalid or unknown identifiers are skipped; only known paths become field tokens.
|
|
16
16
|
*/
|
|
17
|
-
export declare function parseExpression(expression: string, validPaths: Set<string>): FormulaToken[];
|
|
17
|
+
export declare function parseExpression(expression: string, validPaths: Set<string>, knownDateFields?: Set<string>): FormulaToken[];
|
|
18
18
|
export interface NormalizeMergeTagsResult {
|
|
19
19
|
normalized: string;
|
|
20
20
|
removed: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"expression.utils.d.ts","sourceRoot":"","sources":["../../../src/utils/formula/expression.utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAExE;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,iBAAiB,GAAG,SAAS,GAAG,MAAM,CAoBjF;AAED,oFAAoF;AACpF,MAAM,WAAW,cAAc;IAC3B,IAAI,EAAE,OAAO,GAAG,QAAQ,GAAG,UAAU,GAAG,OAAO,GAAG,MAAM,CAAC;IACzD,KAAK,EAAE,MAAM,CAAC;CACjB;AAKD,wBAAgB,kBAAkB,CAAC,UAAU,EAAE,MAAM,GAAG,cAAc,EAAE,CAgBvE;AAED;;;GAGG;AACH,wBAAgB,eAAe,
|
|
1
|
+
{"version":3,"file":"expression.utils.d.ts","sourceRoot":"","sources":["../../../src/utils/formula/expression.utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAExE;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,iBAAiB,GAAG,SAAS,GAAG,MAAM,CAoBjF;AAED,oFAAoF;AACpF,MAAM,WAAW,cAAc;IAC3B,IAAI,EAAE,OAAO,GAAG,QAAQ,GAAG,UAAU,GAAG,OAAO,GAAG,MAAM,CAAC;IACzD,KAAK,EAAE,MAAM,CAAC;CACjB;AAKD,wBAAgB,kBAAkB,CAAC,UAAU,EAAE,MAAM,GAAG,cAAc,EAAE,CAgBvE;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAC3B,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,GAAG,CAAC,MAAM,CAAC,EACvB,eAAe,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,GAC9B,YAAY,EAAE,CAsChB;AAED,MAAM,WAAW,wBAAwB;IACrC,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;CAClD;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAC9B,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,GAAG,CAAC,MAAM,CAAC,GACxB,wBAAwB,CAqC1B"}
|
|
@@ -50,7 +50,7 @@ export function tokenizeExpression(expression) {
|
|
|
50
50
|
* Parse an expression string into FormulaToken[] using valid paths.
|
|
51
51
|
* Invalid or unknown identifiers are skipped; only known paths become field tokens.
|
|
52
52
|
*/
|
|
53
|
-
export function parseExpression(expression, validPaths) {
|
|
53
|
+
export function parseExpression(expression, validPaths, knownDateFields) {
|
|
54
54
|
const parts = tokenizeExpression(expression).filter(p => p.type !== 'text' || p.value.trim() !== '');
|
|
55
55
|
const tokens = [];
|
|
56
56
|
for (const part of parts) {
|
|
@@ -59,9 +59,11 @@ export function parseExpression(expression, validPaths) {
|
|
|
59
59
|
}
|
|
60
60
|
if (part.type === 'field') {
|
|
61
61
|
if (validPaths.has(part.value)) {
|
|
62
|
+
const fieldType = (knownDateFields === null || knownDateFields === void 0 ? void 0 : knownDateFields.has(part.value)) ? 'date' : 'number';
|
|
62
63
|
tokens.push({
|
|
63
64
|
type: 'field',
|
|
64
65
|
path: part.value,
|
|
66
|
+
fieldType,
|
|
65
67
|
});
|
|
66
68
|
}
|
|
67
69
|
continue;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"expression.utils.js","sourceRoot":"","sources":["../../../src/utils/formula/expression.utils.ts"],"names":[],"mappings":"AAEA;;;GAGG;AACH,MAAM,UAAU,kBAAkB,CAAC,OAAsC;;IACrE,IAAI,CAAC,CAAA,MAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,MAAM,0CAAE,MAAM,CAAA,EAAE,CAAC;QAC3B,OAAO,EAAE,CAAC;IACd,CAAC;IACD,OAAO,OAAO,CAAC,MAAM;SAChB,GAAG,CAAC,CAAC,CAAC,EAAE;QACL,IAAI,CAAC,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;YACrB,OAAO,CAAC,CAAC,IAAI,CAAC;QAClB,CAAC;QACD,IAAI,CAAC,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YACtB,OAAO,GAAG,CAAC;QACf,CAAC;QACD,IAAI,CAAC,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YACtB,OAAO,GAAG,CAAC;QACf,CAAC;QACD,OAAO,CAAC,CAAC,KAAK,CAAC;IACnB,CAAC,CAAC;SACD,IAAI,CAAC,GAAG,CAAC;SACT,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC;SACpB,IAAI,EAAE,CAAC;AAChB,CAAC;AAQD,6EAA6E;AAC7E,MAAM,gBAAgB,GAAG,yDAAyD,CAAC;AAEnF,MAAM,UAAU,kBAAkB,CAAC,UAAkB;IACjD,MAAM,MAAM,GAAqB,EAAE,CAAC;IACpC,IAAI,KAA6B,CAAC;IAClC,OAAO,CAAC,KAAK,GAAG,gBAAgB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;QAC1D,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QACvB,IAAI,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;YAC3B,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;QAC1C,CAAC;aAAM,IAAI,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;YAC3B,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC;QAC3C,CAAC;aAAM,IAAI,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;YACnC,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,KAAK,KAAK,GAAG,IAAI,KAAK,KAAK,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,UAAU,EAAE,KAAK,EAAE,CAAC,CAAC;QACxF,CAAC;aAAM,CAAC;YACJ,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;QACzC,CAAC;IACL,CAAC;IACD,OAAO,MAAM,CAAC;AAClB,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,eAAe,
|
|
1
|
+
{"version":3,"file":"expression.utils.js","sourceRoot":"","sources":["../../../src/utils/formula/expression.utils.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"format-calculated-result.utils.d.ts","sourceRoot":"","sources":["../../../src/utils/formula/format-calculated-result.utils.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,qBAAqB,
|
|
1
|
+
{"version":3,"file":"format-calculated-result.utils.d.ts","sourceRoot":"","sources":["../../../src/utils/formula/format-calculated-result.utils.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,qBAAqB,EAA6B,MAAM,uBAAuB,CAAC;AA8DzF;;;GAGG;AACH,wBAAgB,sBAAsB,CAClC,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,qBAAqB,GAAG,SAAS,GAC1C,MAAM,CA8BR"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"format-calculated-result.utils.js","sourceRoot":"","sources":["../../../src/utils/formula/format-calculated-result.utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAGtD,SAAS,UAAU,CACf,KAAa,EACb,QAAgB,EAChB,
|
|
1
|
+
{"version":3,"file":"format-calculated-result.utils.js","sourceRoot":"","sources":["../../../src/utils/formula/format-calculated-result.utils.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,19 +1,13 @@
|
|
|
1
1
|
import { Flex, SegmentedControl, Switch, Text } from '@servicetitan/anvil2';
|
|
2
2
|
import { Dispatch, FC, SetStateAction } from 'react';
|
|
3
|
-
import { DEFAULT_DATE_FORMAT } from '../../constants';
|
|
4
|
-
import { CalculatedFieldFormat } from '../../interface/types';
|
|
3
|
+
import { DEFAULT_DATE_FORMAT, ROUNDING_OPTIONS } from '../../constants';
|
|
4
|
+
import { CalculatedFieldFormat, CalculatedFormatForNumber } from '../../interface/types';
|
|
5
5
|
|
|
6
6
|
interface AdvancedSettingsProps {
|
|
7
7
|
format: CalculatedFieldFormat;
|
|
8
8
|
setFormat: Dispatch<SetStateAction<CalculatedFieldFormat>>;
|
|
9
9
|
}
|
|
10
10
|
|
|
11
|
-
const ROUNDING_OPTIONS: { label: string; value: CalculatedFieldFormat['roundingMode'] }[] = [
|
|
12
|
-
{ label: 'Round', value: 'round' },
|
|
13
|
-
{ label: 'Floor', value: 'floor' },
|
|
14
|
-
{ label: 'Ceil', value: 'ceil' },
|
|
15
|
-
];
|
|
16
|
-
|
|
17
11
|
const DateFormatSettings: FC<AdvancedSettingsProps> = ({ format, setFormat }) => (
|
|
18
12
|
<div className="dte-formula-advanced">
|
|
19
13
|
<Text variant="body" size="small">
|
|
@@ -46,7 +40,7 @@ export const AdvancedSettings: FC<AdvancedSettingsProps> = ({ format, setFormat
|
|
|
46
40
|
</Text>
|
|
47
41
|
<SegmentedControl
|
|
48
42
|
selected={format.roundingMode}
|
|
49
|
-
onChange={(roundingMode:
|
|
43
|
+
onChange={(roundingMode: CalculatedFormatForNumber['roundingMode']) =>
|
|
50
44
|
setFormat(prev => ({ ...prev, roundingMode }))
|
|
51
45
|
}
|
|
52
46
|
fill
|
|
@@ -88,7 +82,7 @@ export const AdvancedSettings: FC<AdvancedSettingsProps> = ({ format, setFormat
|
|
|
88
82
|
size="small"
|
|
89
83
|
fill
|
|
90
84
|
selected={format.decimalSeparator}
|
|
91
|
-
onChange={(decimalSeparator:
|
|
85
|
+
onChange={(decimalSeparator: CalculatedFormatForNumber['decimalSeparator']) =>
|
|
92
86
|
setFormat(prev => ({ ...prev, decimalSeparator }))
|
|
93
87
|
}
|
|
94
88
|
>
|
|
@@ -2,7 +2,11 @@ import { Button, Dialog, Divider, Flex } from '@servicetitan/anvil2';
|
|
|
2
2
|
import IconRedo from '@servicetitan/anvil2/assets/icons/material/round/redo.svg';
|
|
3
3
|
import IconUndo from '@servicetitan/anvil2/assets/icons/material/round/undo.svg';
|
|
4
4
|
import { FC, useCallback, useEffect, useMemo, useState } from 'react';
|
|
5
|
-
import {
|
|
5
|
+
import {
|
|
6
|
+
DEFAULT_DATE_CALCULATED_FORMAT,
|
|
7
|
+
DEFAULT_NUMBER_FORMAT,
|
|
8
|
+
MODAL_CONTENT_MAX_HEIGHT,
|
|
9
|
+
} from '../../constants';
|
|
6
10
|
import { useFormulaEditor } from '../../hooks';
|
|
7
11
|
import {
|
|
8
12
|
CalculatedFieldFormat,
|
|
@@ -19,17 +23,6 @@ import {
|
|
|
19
23
|
import { FieldSidebar } from './field-sidebar';
|
|
20
24
|
import { FormulaWorkspace } from './formula-workspace';
|
|
21
25
|
|
|
22
|
-
const DEFAULT_CALCULATED_FIELD_FORMAT: CalculatedFieldFormat = {
|
|
23
|
-
resultType: 'number',
|
|
24
|
-
thousandsSeparator: false,
|
|
25
|
-
decimals: 2,
|
|
26
|
-
roundingMode: 'round',
|
|
27
|
-
decimalSeparatorEnabled: false,
|
|
28
|
-
decimalSeparator: '.',
|
|
29
|
-
prefixText: '',
|
|
30
|
-
postfixText: '',
|
|
31
|
-
};
|
|
32
|
-
|
|
33
26
|
function getAllFields(groups: DataModelFieldGroup[]): FieldTypeOption[] {
|
|
34
27
|
const list: FieldTypeOption[] = [];
|
|
35
28
|
for (const g of groups) {
|
|
@@ -111,7 +104,7 @@ export const FormulaModal: FC<FormulaModalProps> = ({
|
|
|
111
104
|
|
|
112
105
|
const [highlightElementPath, setHighlightElementPath] = useState('');
|
|
113
106
|
const [format, setFormat] = useState<CalculatedFieldFormat>(
|
|
114
|
-
() => initialFormat ??
|
|
107
|
+
() => initialFormat ?? DEFAULT_NUMBER_FORMAT,
|
|
115
108
|
);
|
|
116
109
|
const [advancedOpen, setAdvancedOpen] = useState(false);
|
|
117
110
|
|
|
@@ -124,23 +117,15 @@ export const FormulaModal: FC<FormulaModalProps> = ({
|
|
|
124
117
|
|
|
125
118
|
useEffect(() => {
|
|
126
119
|
if (formulaEditor.expressionHasDateFields && format.resultType !== 'date') {
|
|
127
|
-
setFormat(
|
|
128
|
-
...prev,
|
|
129
|
-
resultType: 'date',
|
|
130
|
-
dateFormat: prev.dateFormat ?? DEFAULT_DATE_FORMAT,
|
|
131
|
-
}));
|
|
132
|
-
setAdvancedOpen(true);
|
|
120
|
+
setFormat(DEFAULT_DATE_CALCULATED_FORMAT);
|
|
133
121
|
} else if (!formulaEditor.expressionHasDateFields && format.resultType === 'date') {
|
|
134
|
-
setFormat(
|
|
135
|
-
...prev,
|
|
136
|
-
resultType: 'number',
|
|
137
|
-
}));
|
|
122
|
+
setFormat(DEFAULT_NUMBER_FORMAT);
|
|
138
123
|
}
|
|
139
124
|
}, [formulaEditor.expressionHasDateFields, format.resultType]);
|
|
140
125
|
|
|
141
126
|
const parsedTokens = useMemo(
|
|
142
|
-
() => parseExpression(formulaEditor.draftExpression, validPaths),
|
|
143
|
-
[formulaEditor.draftExpression, validPaths],
|
|
127
|
+
() => parseExpression(formulaEditor.draftExpression, validPaths, knownDateFields),
|
|
128
|
+
[formulaEditor.draftExpression, validPaths, knownDateFields],
|
|
144
129
|
);
|
|
145
130
|
|
|
146
131
|
const formulaValidation = useMemo(
|
|
@@ -164,16 +149,9 @@ export const FormulaModal: FC<FormulaModalProps> = ({
|
|
|
164
149
|
}, [onClose]);
|
|
165
150
|
|
|
166
151
|
const handleSave = useCallback(() => {
|
|
167
|
-
|
|
168
|
-
.filter(t => t.type === 'field' && knownDateFields.has(t.path))
|
|
169
|
-
.map(t => (t as { type: 'field'; path: string }).path);
|
|
170
|
-
const savedFormat: CalculatedFieldFormat = {
|
|
171
|
-
...format,
|
|
172
|
-
dateFieldPaths: usedDatePaths.length > 0 ? [...new Set(usedDatePaths)] : undefined,
|
|
173
|
-
};
|
|
174
|
-
onSave({ tokens: parsedTokens }, savedFormat);
|
|
152
|
+
onSave({ tokens: parsedTokens }, format);
|
|
175
153
|
onClose();
|
|
176
|
-
}, [format,
|
|
154
|
+
}, [format, onClose, onSave, parsedTokens]);
|
|
177
155
|
|
|
178
156
|
const validationError = unknownFieldErrors[0] ?? formulaValidation.errors[0] ?? '';
|
|
179
157
|
const isInvalid = !formulaValidation.valid || unknownFieldErrors.length > 0;
|
|
@@ -208,14 +186,18 @@ export const FormulaModal: FC<FormulaModalProps> = ({
|
|
|
208
186
|
isInvalid={isInvalid && formulaEditor.isDirty}
|
|
209
187
|
validationError={validationError}
|
|
210
188
|
format={format}
|
|
211
|
-
onResultTypeChange={nextType =>
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
189
|
+
onResultTypeChange={nextType => {
|
|
190
|
+
if (nextType === 'date') {
|
|
191
|
+
setFormat(DEFAULT_DATE_CALCULATED_FORMAT);
|
|
192
|
+
} else {
|
|
193
|
+
setFormat({
|
|
194
|
+
...DEFAULT_NUMBER_FORMAT,
|
|
195
|
+
resultType: nextType,
|
|
196
|
+
prefixText: nextType === 'currency' ? '$' : '',
|
|
197
|
+
postfixText: nextType === 'percent' ? '%' : '',
|
|
198
|
+
});
|
|
199
|
+
}
|
|
200
|
+
}}
|
|
219
201
|
advancedOpen={advancedOpen}
|
|
220
202
|
onToggleAdvanced={() => setAdvancedOpen(prev => !prev)}
|
|
221
203
|
setFormat={setFormat}
|
|
@@ -9,14 +9,9 @@ interface PdfViewCalculatedProps {
|
|
|
9
9
|
}
|
|
10
10
|
|
|
11
11
|
export const PdfViewCalculated: FC<PdfViewCalculatedProps> = ({ data, field, holidays }) => {
|
|
12
|
-
const dateFieldPaths = useMemo(() => {
|
|
13
|
-
const paths = field.formulaFormat?.dateFieldPaths;
|
|
14
|
-
return paths?.length ? new Set(paths) : undefined;
|
|
15
|
-
}, [field.formulaFormat?.dateFieldPaths]);
|
|
16
|
-
|
|
17
12
|
const displayValue = useMemo(() => {
|
|
18
13
|
if (field.formula?.tokens?.length) {
|
|
19
|
-
const value = evaluateFormula(field.formula, data,
|
|
14
|
+
const value = evaluateFormula(field.formula, data, holidays);
|
|
20
15
|
if (value === null) {
|
|
21
16
|
return '';
|
|
22
17
|
}
|
|
@@ -26,15 +21,7 @@ export const PdfViewCalculated: FC<PdfViewCalculatedProps> = ({ data, field, hol
|
|
|
26
21
|
return resolvePdfDataValues(data, field.path) ?? '';
|
|
27
22
|
}
|
|
28
23
|
return field.label ?? '';
|
|
29
|
-
}, [
|
|
30
|
-
data,
|
|
31
|
-
dateFieldPaths,
|
|
32
|
-
field.formula,
|
|
33
|
-
field.formulaFormat,
|
|
34
|
-
field.label,
|
|
35
|
-
field.path,
|
|
36
|
-
holidays,
|
|
37
|
-
]);
|
|
24
|
+
}, [data, field.formula, field.formulaFormat, field.label, field.path, holidays]);
|
|
38
25
|
|
|
39
26
|
return <div className="dte-pdf-field-value">{displayValue}</div>;
|
|
40
27
|
};
|
|
@@ -1,9 +1,12 @@
|
|
|
1
1
|
import {
|
|
2
|
+
CalculatedFormatForDate,
|
|
3
|
+
CalculatedFormatForNumber,
|
|
2
4
|
ESignFieldType,
|
|
3
5
|
FieldTypeEnum,
|
|
4
6
|
FieldTypeOption,
|
|
5
7
|
PdfFieldSubType,
|
|
6
8
|
} from '../interface/types';
|
|
9
|
+
import { DEFAULT_DATE_FORMAT } from './calculated.constants';
|
|
7
10
|
import { BASE_PAGE_WIDTH } from './pdf-editor.constants';
|
|
8
11
|
|
|
9
12
|
export const FIELD_CONSTANTS = {
|
|
@@ -82,3 +85,28 @@ export const DISABLE_FIELD_RESIZE = {
|
|
|
82
85
|
FieldTypeEnum,
|
|
83
86
|
Partial<Record<PdfFieldSubType, { disableHorizontal?: boolean; disableVertical?: boolean }>>
|
|
84
87
|
>;
|
|
88
|
+
|
|
89
|
+
export const ROUNDING_OPTIONS = [
|
|
90
|
+
{ label: 'Round', value: 'round' },
|
|
91
|
+
{ label: 'Floor', value: 'floor' },
|
|
92
|
+
{ label: 'Ceil', value: 'ceil' },
|
|
93
|
+
] as {
|
|
94
|
+
label: string;
|
|
95
|
+
value: CalculatedFormatForNumber['roundingMode'];
|
|
96
|
+
}[];
|
|
97
|
+
|
|
98
|
+
export const DEFAULT_NUMBER_FORMAT: CalculatedFormatForNumber = {
|
|
99
|
+
resultType: 'number',
|
|
100
|
+
thousandsSeparator: false,
|
|
101
|
+
decimals: 2,
|
|
102
|
+
roundingMode: 'round',
|
|
103
|
+
decimalSeparatorEnabled: false,
|
|
104
|
+
decimalSeparator: '.',
|
|
105
|
+
prefixText: '',
|
|
106
|
+
postfixText: '',
|
|
107
|
+
};
|
|
108
|
+
|
|
109
|
+
export const DEFAULT_DATE_CALCULATED_FORMAT: CalculatedFormatForDate = {
|
|
110
|
+
resultType: 'date',
|
|
111
|
+
dateFormat: DEFAULT_DATE_FORMAT,
|
|
112
|
+
};
|
package/src/interface/types.ts
CHANGED
|
@@ -105,16 +105,16 @@ export type FormulaToken =
|
|
|
105
105
|
| { type: 'operator'; value: FormulaOperator }
|
|
106
106
|
| { type: 'lparen' }
|
|
107
107
|
| { type: 'rparen' }
|
|
108
|
-
| { type: 'field'; path: string };
|
|
108
|
+
| { type: 'field'; path: string; fieldType: SchemaFieldType };
|
|
109
109
|
|
|
110
110
|
/** Structured formula representation (AST-like token list) for validation and safe editing */
|
|
111
111
|
export interface StructuredFormula {
|
|
112
112
|
tokens: FormulaToken[];
|
|
113
113
|
}
|
|
114
114
|
|
|
115
|
-
/** Format options for a calculated field result (
|
|
116
|
-
export interface
|
|
117
|
-
resultType: 'number' | 'currency' | 'percent'
|
|
115
|
+
/** Format options for a calculated field with a numeric result (number, currency, percent) */
|
|
116
|
+
export interface CalculatedFormatForNumber {
|
|
117
|
+
resultType: 'number' | 'currency' | 'percent';
|
|
118
118
|
thousandsSeparator: boolean;
|
|
119
119
|
decimals: number;
|
|
120
120
|
roundingMode: 'round' | 'floor' | 'ceil';
|
|
@@ -123,10 +123,17 @@ export interface CalculatedFieldFormat {
|
|
|
123
123
|
prefixText: string;
|
|
124
124
|
postfixText: string;
|
|
125
125
|
dateFormat?: string;
|
|
126
|
-
/** Paths of date-typed fields used in the formula, persisted for date-aware evaluation */
|
|
127
|
-
dateFieldPaths?: string[];
|
|
128
126
|
}
|
|
129
127
|
|
|
128
|
+
/** Format options for a calculated field with a date result */
|
|
129
|
+
export interface CalculatedFormatForDate {
|
|
130
|
+
resultType: 'date';
|
|
131
|
+
dateFormat: string;
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
/** Format options for a calculated field result (display and rounding) */
|
|
135
|
+
export type CalculatedFieldFormat = CalculatedFormatForDate | CalculatedFormatForNumber;
|
|
136
|
+
|
|
130
137
|
export interface SchemaFieldBaseOptions {
|
|
131
138
|
placeholder?: any;
|
|
132
139
|
description?: any;
|
|
@@ -28,10 +28,20 @@ export function valueToNumber(raw: unknown): number {
|
|
|
28
28
|
return Number.isNaN(n) ? 0 : n;
|
|
29
29
|
}
|
|
30
30
|
|
|
31
|
+
function collectDateFieldPaths(formula: StructuredFormula): Set<string> {
|
|
32
|
+
const set = new Set<string>();
|
|
33
|
+
for (const t of formula.tokens) {
|
|
34
|
+
if (t.type === 'field' && t.fieldType === 'date') {
|
|
35
|
+
set.add(t.path);
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
return set;
|
|
39
|
+
}
|
|
40
|
+
|
|
31
41
|
function hasAllFieldValues(
|
|
32
42
|
formula: StructuredFormula,
|
|
33
43
|
data: DataModelValues | undefined,
|
|
34
|
-
dateFieldPaths
|
|
44
|
+
dateFieldPaths: Set<string>,
|
|
35
45
|
): boolean {
|
|
36
46
|
return formula.tokens.every((t: FormulaToken) => {
|
|
37
47
|
if (t.type !== 'field') {
|
|
@@ -41,7 +51,7 @@ function hasAllFieldValues(
|
|
|
41
51
|
if (raw === '') {
|
|
42
52
|
return false;
|
|
43
53
|
}
|
|
44
|
-
if (dateFieldPaths
|
|
54
|
+
if (dateFieldPaths.has(t.path)) {
|
|
45
55
|
return !isNaN(new Date(raw).getTime());
|
|
46
56
|
}
|
|
47
57
|
return !isNaN(Number(raw.trim()));
|
|
@@ -282,12 +292,11 @@ function businessDayDiff(fromMs: number, toMs: number, holidaySet: Set<string>):
|
|
|
282
292
|
function resolveDateAwareTokens(
|
|
283
293
|
formula: StructuredFormula,
|
|
284
294
|
data: DataModelValues | undefined,
|
|
285
|
-
dateFieldPaths: Set<string>,
|
|
286
295
|
): DateAwareToken[] {
|
|
287
296
|
return formula.tokens.map((t: FormulaToken): DateAwareToken => {
|
|
288
297
|
if (t.type === 'field') {
|
|
289
298
|
const raw = resolvePdfDataValues(data, t.path);
|
|
290
|
-
if (
|
|
299
|
+
if (t.fieldType === 'date') {
|
|
291
300
|
const ms = parseDateValue(raw);
|
|
292
301
|
return { kind: 'date', value: isNaN(ms) ? 0 : ms };
|
|
293
302
|
}
|
|
@@ -395,26 +404,28 @@ function evalDateAwareTokens(tokens: DateAwareToken[], holidaySet: Set<string>):
|
|
|
395
404
|
* to null / undefined / empty / non-numeric (non-date) — making the entire
|
|
396
405
|
* calculation blank instead of silently substituting 0.
|
|
397
406
|
*
|
|
398
|
-
*
|
|
399
|
-
* arithmetic follows business-day semantics — weekends and
|
|
400
|
-
* when adding/subtracting days, and date diffs count only
|
|
407
|
+
* Date fields are identified by `fieldType: 'date'` on field tokens. When date
|
|
408
|
+
* fields are present, arithmetic follows business-day semantics — weekends and
|
|
409
|
+
* holidays are skipped when adding/subtracting days, and date diffs count only
|
|
410
|
+
* business days.
|
|
401
411
|
*/
|
|
402
412
|
export function evaluateFormula(
|
|
403
413
|
formula: StructuredFormula | undefined | null,
|
|
404
414
|
data: DataModelValues | undefined,
|
|
405
|
-
dateFieldPaths?: Set<string>,
|
|
406
415
|
holidays?: string[],
|
|
407
416
|
): number | null {
|
|
408
417
|
if (!formula?.tokens?.length) {
|
|
409
418
|
return null;
|
|
410
419
|
}
|
|
411
420
|
|
|
421
|
+
const dateFieldPaths = collectDateFieldPaths(formula);
|
|
422
|
+
|
|
412
423
|
if (!hasAllFieldValues(formula, data, dateFieldPaths)) {
|
|
413
424
|
return null;
|
|
414
425
|
}
|
|
415
426
|
|
|
416
|
-
if (dateFieldPaths
|
|
417
|
-
const resolved = resolveDateAwareTokens(formula, data
|
|
427
|
+
if (dateFieldPaths.size) {
|
|
428
|
+
const resolved = resolveDateAwareTokens(formula, data);
|
|
418
429
|
const holidaySet = buildHolidaySet(holidays);
|
|
419
430
|
const result = evalDateAwareTokens(resolved, holidaySet);
|
|
420
431
|
return result.value;
|
|
@@ -57,7 +57,11 @@ export function tokenizeExpression(expression: string): ExpressionPart[] {
|
|
|
57
57
|
* Parse an expression string into FormulaToken[] using valid paths.
|
|
58
58
|
* Invalid or unknown identifiers are skipped; only known paths become field tokens.
|
|
59
59
|
*/
|
|
60
|
-
export function parseExpression(
|
|
60
|
+
export function parseExpression(
|
|
61
|
+
expression: string,
|
|
62
|
+
validPaths: Set<string>,
|
|
63
|
+
knownDateFields?: Set<string>,
|
|
64
|
+
): FormulaToken[] {
|
|
61
65
|
const parts = tokenizeExpression(expression).filter(
|
|
62
66
|
p => p.type !== 'text' || p.value.trim() !== '',
|
|
63
67
|
);
|
|
@@ -69,9 +73,11 @@ export function parseExpression(expression: string, validPaths: Set<string>): Fo
|
|
|
69
73
|
}
|
|
70
74
|
if (part.type === 'field') {
|
|
71
75
|
if (validPaths.has(part.value)) {
|
|
76
|
+
const fieldType = knownDateFields?.has(part.value) ? 'date' : 'number';
|
|
72
77
|
tokens.push({
|
|
73
78
|
type: 'field',
|
|
74
79
|
path: part.value,
|
|
80
|
+
fieldType,
|
|
75
81
|
});
|
|
76
82
|
}
|
|
77
83
|
continue;
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { DEFAULT_DATE_FORMAT } from '../../constants';
|
|
2
|
-
import { CalculatedFieldFormat } from '../../interface/types';
|
|
2
|
+
import { CalculatedFieldFormat, CalculatedFormatForNumber } from '../../interface/types';
|
|
3
3
|
|
|
4
4
|
function roundValue(
|
|
5
5
|
value: number,
|
|
6
6
|
decimals: number,
|
|
7
|
-
mode:
|
|
7
|
+
mode: CalculatedFormatForNumber['roundingMode'],
|
|
8
8
|
): number {
|
|
9
9
|
const factor = 10 ** decimals;
|
|
10
10
|
const scaled = value * factor;
|