@legalplace/wizardx-core 2.6.3 → 2.7.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/CHANGELOG.md +43 -0
- package/dist/App.js +13 -4
- package/dist/PluginLoader.d.ts +3 -1
- package/dist/PluginLoader.js +12 -0
- package/dist/ThemeLoader.d.ts +2 -2
- package/dist/componentsConnectors/connectBox.d.ts +3 -1
- package/dist/componentsConnectors/connectDocument.d.ts +3 -1
- package/dist/componentsConnectors/connectHeader.d.ts +3 -1
- package/dist/componentsConnectors/connectMetaTitle.d.ts +3 -1
- package/dist/componentsConnectors/connectOption.d.ts +6 -2
- package/dist/componentsConnectors/connectOption.js +1 -1
- package/dist/componentsConnectors/connectPagination.d.ts +3 -1
- package/dist/componentsConnectors/connectPreview.d.ts +3 -1
- package/dist/componentsConnectors/connectProgress.d.ts +3 -1
- package/dist/componentsConnectors/connectRootOption.d.ts +3 -1
- package/dist/componentsConnectors/connectSection.d.ts +3 -1
- package/dist/componentsConnectors/connectSection.js +7 -10
- package/dist/componentsConnectors/connectSummary.d.ts +3 -1
- package/dist/componentsConnectors/connectSummaryItem.d.ts +3 -1
- package/dist/componentsConnectors/connectVariable.d.ts +6 -2
- package/dist/componentsConnectors/connectVariable.js +1 -1
- package/dist/componentsConnectors/connectWizardWrapper.d.ts +3 -1
- package/dist/componentsConnectors/connector/componentConnector.d.ts +5 -1
- package/dist/componentsConnectors/connector/componentConnector.js +44 -4
- package/dist/componentsConnectors/connector/index.d.ts +1 -0
- package/dist/componentsConnectors/connector/index.js +1 -0
- package/dist/componentsConnectors/index.d.ts +17 -0
- package/dist/componentsConnectors/index.js +17 -0
- package/dist/componentsConnectors/library.d.ts +43 -15
- package/dist/constants/phoneValidation.d.ts +0 -1
- package/dist/constants/phoneValidation.js +0 -1
- package/dist/helpers/apiEndpoint.d.ts +1 -0
- package/dist/helpers/apiEndpoint.js +4 -0
- package/dist/helpers/index.d.ts +4 -0
- package/dist/helpers/index.js +4 -0
- package/dist/helpers/propsEqualityCheck.d.ts +1 -0
- package/dist/helpers/propsEqualityCheck.js +9 -0
- package/dist/hooks/index.d.ts +4 -0
- package/dist/hooks/index.js +4 -0
- package/dist/hooks/useActions.d.ts +2 -0
- package/dist/hooks/useActions.js +4 -0
- package/dist/hooks/useDispatch.d.ts +1 -0
- package/dist/hooks/useDispatch.js +4 -0
- package/dist/hooks/useSelectors.d.ts +2 -0
- package/dist/hooks/useSelectors.js +4 -0
- package/dist/index.d.ts +13 -0
- package/dist/index.js +13 -0
- package/dist/libs/EventsTracking.d.ts +0 -1
- package/dist/libs/EventsTracking.js +0 -18
- package/dist/libs/PathReader.d.ts +10 -6
- package/dist/libs/PathReader.js +47 -28
- package/dist/libs/index.d.ts +5 -0
- package/dist/libs/index.js +5 -0
- package/dist/redux/actions/index.d.ts +9 -0
- package/dist/redux/actions/index.js +9 -0
- package/dist/redux/actions/library.d.ts +59 -63
- package/dist/redux/actions/sagas/index.d.ts +3 -0
- package/dist/redux/actions/sagas/index.js +3 -0
- package/dist/redux/actions/sagas/model.d.ts +1 -5
- package/dist/redux/constants/app.d.ts +2 -0
- package/dist/redux/constants/app.js +2 -0
- package/dist/redux/constants/index.d.ts +8 -0
- package/dist/redux/constants/index.js +8 -0
- package/dist/redux/constants/sagas/index.d.ts +3 -0
- package/dist/redux/constants/sagas/index.js +3 -0
- package/dist/redux/index.d.ts +5 -0
- package/dist/redux/index.js +5 -0
- package/dist/redux/middlewares/conditionsWatcherMiddleware.js +11 -5
- package/dist/redux/middlewares/conditionsWatcherMiddleware.test.js +120 -113
- package/dist/redux/middlewares/paginationWatcherMiddleware.js +2 -2
- package/dist/redux/middlewares/smartscriptMiddleware.js +8 -0
- package/dist/redux/reducers/pluginsStore.d.ts +3 -0
- package/dist/redux/reducers/pluginsStore.js +12 -0
- package/dist/redux/routerHistory.js +2 -2
- package/dist/redux/sagas/fetchModel.js +22 -6
- package/dist/redux/sagas/initInputs.js +6 -7
- package/dist/redux/sagas/saveData.js +3 -46
- package/dist/redux/sagas/setUserEmail.js +1 -28
- package/dist/redux/selectors/app.js +13 -18
- package/dist/redux/selectors/cache.d.ts +17 -0
- package/dist/redux/selectors/cache.js +35 -0
- package/dist/redux/selectors/conditions.js +7 -7
- package/dist/redux/selectors/index.d.ts +8 -0
- package/dist/redux/selectors/index.js +8 -0
- package/dist/redux/selectors/inputs.js +3 -3
- package/dist/redux/selectors/library.d.ts +2 -2
- package/dist/redux/selectors/references.js +26 -26
- package/dist/redux/selectors/selectors.d.ts +2 -2
- package/dist/redux/selectors/selectors.js +19 -8
- package/dist/redux/selectors/selectors.test.js +6 -6
- package/dist/redux/selectors/user.js +5 -5
- package/dist/redux/store.d.ts +1 -1
- package/dist/redux/store.js +12 -4
- package/dist/service/api.manager.d.ts +1 -6
- package/dist/service/index.d.ts +3 -0
- package/dist/service/index.js +3 -0
- package/dist/types/PluginConfig.type.d.ts +57 -0
- package/dist/types/PluginConfig.type.js +1 -0
- package/dist/types/State.type.d.ts +6 -0
- package/dist/types/config.type.d.ts +3 -1
- package/dist/types/index.d.ts +11 -0
- package/dist/types/index.js +11 -0
- package/package.json +11 -12
- package/.depcheckrc +0 -1
- package/.eslintignore +0 -2
- package/.eslintrc +0 -5
- package/__mocks__/fileMock.js +0 -1
- package/babel.config.json +0 -3
- package/dist/helpers/sendinblueHelper.d.ts +0 -4
- package/dist/helpers/sendinblueHelper.js +0 -46
- package/dist/libs/Extracts.d.ts +0 -20
- package/dist/libs/Extracts.js +0 -110
- package/jest.config.ts +0 -193
- package/setupJest.ts +0 -8
- package/src/App.test.tsx +0 -41
- package/src/App.tsx +0 -152
- package/src/Globals.ts +0 -69
- package/src/Loader.tsx +0 -8
- package/src/PluginLoader.test.tsx +0 -70
- package/src/PluginLoader.tsx +0 -407
- package/src/Shimmer.tsx +0 -108
- package/src/ThemeLoader.test.tsx +0 -82
- package/src/ThemeLoader.tsx +0 -95
- package/src/components/PluginRoute.tsx +0 -48
- package/src/components/SmartScript.tsx +0 -166
- package/src/components/UserLocked/UserLockedComponent.tsx +0 -33
- package/src/components/View.test.tsx +0 -110
- package/src/components/View.tsx +0 -114
- package/src/componentsConnectors/connectBox.test.tsx +0 -226
- package/src/componentsConnectors/connectBox.tsx +0 -70
- package/src/componentsConnectors/connectDocument.test.tsx +0 -108
- package/src/componentsConnectors/connectDocument.tsx +0 -64
- package/src/componentsConnectors/connectHeader.tsx +0 -21
- package/src/componentsConnectors/connectMetaTitle.test.tsx +0 -40
- package/src/componentsConnectors/connectMetaTitle.tsx +0 -8
- package/src/componentsConnectors/connectOption.tsx +0 -222
- package/src/componentsConnectors/connectPagination.tsx +0 -102
- package/src/componentsConnectors/connectPreview.tsx +0 -5
- package/src/componentsConnectors/connectProgress.tsx +0 -59
- package/src/componentsConnectors/connectRootOption.tsx +0 -95
- package/src/componentsConnectors/connectSection.tsx +0 -79
- package/src/componentsConnectors/connectSummary.tsx +0 -21
- package/src/componentsConnectors/connectSummaryItem.tsx +0 -102
- package/src/componentsConnectors/connectTermsheet.tsx +0 -359
- package/src/componentsConnectors/connectVariable.tsx +0 -191
- package/src/componentsConnectors/connectWizardWrapper.tsx +0 -30
- package/src/componentsConnectors/connector/componentConnector.tsx +0 -219
- package/src/componentsConnectors/library.ts +0 -35
- package/src/config.test.ts +0 -63
- package/src/config.ts +0 -11
- package/src/constants/emailValidation.ts +0 -2
- package/src/constants/phoneValidation.ts +0 -6
- package/src/definitions/path.join.d.ts +0 -4
- package/src/helpers/outputsParsing.ts +0 -412
- package/src/helpers/preloadTheme.ts +0 -17
- package/src/helpers/scriptsLoader.ts +0 -20
- package/src/helpers/sendinblueHelper.ts +0 -65
- package/src/hooks/usePrevious.ts +0 -9
- package/src/libs/ConditionsInitiator.ts +0 -164
- package/src/libs/ConditionsRunner/DataPopulator.ts +0 -266
- package/src/libs/ConditionsRunner.ts +0 -454
- package/src/libs/DocumentsOutputs.ts +0 -171
- package/src/libs/Eval/EvalBase.ts +0 -116
- package/src/libs/Eval/EvalFunctions.ts +0 -724
- package/src/libs/Eval/NumbersToLetters.ts +0 -185
- package/src/libs/EvalVariable.ts +0 -265
- package/src/libs/EventsTracking.ts +0 -276
- package/src/libs/Extracts.ts +0 -159
- package/src/libs/InputsInitiator.ts +0 -136
- package/src/libs/NumAuto.test.ts +0 -55
- package/src/libs/NumAuto.ts +0 -56
- package/src/libs/OvcConverter.ts +0 -285
- package/src/libs/PathReader.ts +0 -272
- package/src/libs/SectionValidity.test.ts +0 -146
- package/src/libs/SectionValidity.ts +0 -110
- package/src/libs/SmartScriptStore.ts +0 -492
- package/src/misc/test_model.ts +0 -14603
- package/src/misc/test_models/connectDocumen.testmodel.json +0 -178
- package/src/misc/test_models/setDefaults.testmodel.json +0 -279
- package/src/misc/test_models/testmodel.json +0 -1
- package/src/polyfills/index.ts +0 -5
- package/src/polyfills/objectValues.ts +0 -4
- package/src/polyfills/prepend.ts +0 -31
- package/src/polyfills/stringRepeat.ts +0 -44
- package/src/redux/actions/app.test.ts +0 -123
- package/src/redux/actions/app.ts +0 -249
- package/src/redux/actions/conditions.test.ts +0 -84
- package/src/redux/actions/conditions.ts +0 -135
- package/src/redux/actions/inputs.test.ts +0 -85
- package/src/redux/actions/inputs.ts +0 -111
- package/src/redux/actions/library.ts +0 -23
- package/src/redux/actions/mandatories.ts +0 -98
- package/src/redux/actions/references.test.ts +0 -48
- package/src/redux/actions/references.ts +0 -37
- package/src/redux/actions/sagas/data.test.ts +0 -11
- package/src/redux/actions/sagas/data.ts +0 -18
- package/src/redux/actions/sagas/model.test.ts +0 -14
- package/src/redux/actions/sagas/model.ts +0 -48
- package/src/redux/actions/sagas/user.ts +0 -25
- package/src/redux/actions/smartscript.ts +0 -55
- package/src/redux/actions/user.test.ts +0 -18
- package/src/redux/actions/user.ts +0 -41
- package/src/redux/constants/app.ts +0 -36
- package/src/redux/constants/conditions.ts +0 -25
- package/src/redux/constants/inputs.ts +0 -15
- package/src/redux/constants/mandatories.ts +0 -11
- package/src/redux/constants/references.ts +0 -7
- package/src/redux/constants/sagas/data.ts +0 -1
- package/src/redux/constants/sagas/model.ts +0 -2
- package/src/redux/constants/sagas/user.ts +0 -2
- package/src/redux/constants/smartscript.ts +0 -9
- package/src/redux/constants/user.ts +0 -6
- package/src/redux/listeners/subscriber.test.ts +0 -45
- package/src/redux/listeners/subscriber.ts +0 -29
- package/src/redux/middlewares/conditionsWatcherMiddleware.test.ts +0 -370
- package/src/redux/middlewares/conditionsWatcherMiddleware.ts +0 -321
- package/src/redux/middlewares/evaluationsWatcherMiddleware.test.ts +0 -323
- package/src/redux/middlewares/evaluationsWatcherMiddleware.ts +0 -250
- package/src/redux/middlewares/mandatoriesWatcherMiddleware.ts +0 -473
- package/src/redux/middlewares/multiplesActionsMiddleware.test.ts +0 -230
- package/src/redux/middlewares/multiplesActionsMiddleware.ts +0 -121
- package/src/redux/middlewares/paginationWatcherMiddleware.ts +0 -251
- package/src/redux/middlewares/pluginsHookMiddleware.ts +0 -24
- package/src/redux/middlewares/prefillerWatcherMiddleware.test.ts +0 -118
- package/src/redux/middlewares/prefillerWatcherMiddleware.ts +0 -462
- package/src/redux/middlewares/smartscriptMiddleware.ts +0 -228
- package/src/redux/middlewares/thirdpartyScriptsMiddleware.ts +0 -41
- package/src/redux/reducers/app/customizations/initCustomizationAutoDefault.ts +0 -16
- package/src/redux/reducers/app/customizations/initCustomizationMeta.ts +0 -16
- package/src/redux/reducers/app/instance/initInstance.ts +0 -29
- package/src/redux/reducers/app/instance/setDataStatus.ts +0 -16
- package/src/redux/reducers/app/instance/updateInstance.ts +0 -30
- package/src/redux/reducers/app/instance/updateInstancePaid.ts +0 -20
- package/src/redux/reducers/app/instance.test.ts +0 -106
- package/src/redux/reducers/app/meta/fetchModelFailed.ts +0 -11
- package/src/redux/reducers/app/meta/fetchModelNonBlocking.ts +0 -11
- package/src/redux/reducers/app/meta/fetchModelSucceeded.ts +0 -11
- package/src/redux/reducers/app/meta/fetchModelUnhealthy.ts +0 -18
- package/src/redux/reducers/app/meta/fetchModelUserLocked.ts +0 -11
- package/src/redux/reducers/app/meta/initMeta.ts +0 -22
- package/src/redux/reducers/app/meta/setModelUuid.ts +0 -17
- package/src/redux/reducers/app/meta.test.ts +0 -90
- package/src/redux/reducers/app/pagination/goNextPage.ts +0 -69
- package/src/redux/reducers/app/pagination/goPage.ts +0 -81
- package/src/redux/reducers/app/pagination/goPreviousPage.ts +0 -60
- package/src/redux/reducers/app/pagination/initPagination.ts +0 -46
- package/src/redux/reducers/app/pagination/updateAvailableAppStates.ts +0 -77
- package/src/redux/reducers/app/pagination.test.ts +0 -363
- package/src/redux/reducers/app/wizard/updateAvailableSections.ts +0 -40
- package/src/redux/reducers/app/wizard.test.ts +0 -84
- package/src/redux/reducers/app.test.ts +0 -336
- package/src/redux/reducers/app.ts +0 -150
- package/src/redux/reducers/conditions/addMultipleOccurency.test.ts +0 -131
- package/src/redux/reducers/conditions/addMultipleOccurency.ts +0 -155
- package/src/redux/reducers/conditions/deleteMultipleOccurency.test.ts +0 -95
- package/src/redux/reducers/conditions/deleteMultipleOccurency.ts +0 -141
- package/src/redux/reducers/conditions/initConditions.ts +0 -18
- package/src/redux/reducers/conditions/updateDocumentConditions.test.ts +0 -47
- package/src/redux/reducers/conditions/updateDocumentConditions.ts +0 -21
- package/src/redux/reducers/conditions/updateOptionConditions.ts +0 -24
- package/src/redux/reducers/conditions/updateOptionValidatorCondition.test.ts +0 -50
- package/src/redux/reducers/conditions/updateOptionValidatorCondition.ts +0 -28
- package/src/redux/reducers/conditions/updatePrefillerConditions.ts +0 -29
- package/src/redux/reducers/conditions/updateSectionConditions.ts +0 -28
- package/src/redux/reducers/conditions/updateVariableConditions.ts +0 -25
- package/src/redux/reducers/conditions/updateVariableValidatorCondition.test.ts +0 -50
- package/src/redux/reducers/conditions/updateVariableValidatorCondition.ts +0 -28
- package/src/redux/reducers/conditions.test.ts +0 -241
- package/src/redux/reducers/conditions.ts +0 -68
- package/src/redux/reducers/inputs/addMultipleOccurency.test.ts +0 -117
- package/src/redux/reducers/inputs/addMultipleOccurency.ts +0 -50
- package/src/redux/reducers/inputs/deleteMultipleOccurency.test.ts +0 -70
- package/src/redux/reducers/inputs/deleteMultipleOccurency.ts +0 -50
- package/src/redux/reducers/inputs/initOption.ts +0 -16
- package/src/redux/reducers/inputs/initVariable.ts +0 -16
- package/src/redux/reducers/inputs/updateOptionInput.ts +0 -24
- package/src/redux/reducers/inputs/updateVariableInput.ts +0 -24
- package/src/redux/reducers/inputs.test.ts +0 -221
- package/src/redux/reducers/inputs.ts +0 -51
- package/src/redux/reducers/mandatories/addMultipleOccurency.ts +0 -52
- package/src/redux/reducers/mandatories/deleteMultipleOccurency.ts +0 -55
- package/src/redux/reducers/mandatories/initMandatoryOption.ts +0 -17
- package/src/redux/reducers/mandatories/initMandatoryVariable.ts +0 -17
- package/src/redux/reducers/mandatories/setMandatoryIgnore.ts +0 -17
- package/src/redux/reducers/mandatories/setMandatoryOption.ts +0 -25
- package/src/redux/reducers/mandatories/setMandatorySection.ts +0 -20
- package/src/redux/reducers/mandatories/setMandatoryVariable.ts +0 -24
- package/src/redux/reducers/mandatories.ts +0 -56
- package/src/redux/reducers/references/initReferences.ts +0 -37
- package/src/redux/reducers/references/updateOptionMeta.ts +0 -73
- package/src/redux/reducers/references/updateVariableMeta.ts +0 -72
- package/src/redux/reducers/references.ts +0 -59
- package/src/redux/reducers/smartscript/enableSmartScript.ts +0 -13
- package/src/redux/reducers/smartscript/initSmartScriptTriggers.ts +0 -14
- package/src/redux/reducers/smartscript/updateSmartscriptOptionHidden.ts +0 -30
- package/src/redux/reducers/smartscript/updateSmartscriptVariableHidden.ts +0 -30
- package/src/redux/reducers/smartscript.ts +0 -47
- package/src/redux/reducers/user/initUser.ts +0 -15
- package/src/redux/reducers/user/setUserStatus.ts +0 -13
- package/src/redux/reducers/user/setUserValidToken.ts +0 -13
- package/src/redux/reducers/user.test.ts +0 -51
- package/src/redux/reducers/user.ts +0 -40
- package/src/redux/routerHistore.test.ts +0 -19
- package/src/redux/routerHistory.ts +0 -26
- package/src/redux/sagas/fetchModel.test.ts +0 -76
- package/src/redux/sagas/fetchModel.ts +0 -683
- package/src/redux/sagas/homogeneousRadioInputsSaga.ts +0 -42
- package/src/redux/sagas/initInputs.ts +0 -110
- package/src/redux/sagas/runner.test.ts +0 -12
- package/src/redux/sagas/runner.ts +0 -26
- package/src/redux/sagas/saveData.test.ts +0 -125
- package/src/redux/sagas/saveData.ts +0 -116
- package/src/redux/sagas/setDefaults.test.ts +0 -100
- package/src/redux/sagas/setDefaults.ts +0 -167
- package/src/redux/sagas/setUserEmail.ts +0 -221
- package/src/redux/selectors/app.test.ts +0 -162
- package/src/redux/selectors/app.ts +0 -331
- package/src/redux/selectors/conditions.test.ts +0 -92
- package/src/redux/selectors/conditions.ts +0 -293
- package/src/redux/selectors/inputs.test.ts +0 -72
- package/src/redux/selectors/inputs.ts +0 -76
- package/src/redux/selectors/library.ts +0 -17
- package/src/redux/selectors/mandatories.ts +0 -83
- package/src/redux/selectors/references.test.ts +0 -660
- package/src/redux/selectors/references.ts +0 -413
- package/src/redux/selectors/selectors.test.ts +0 -21
- package/src/redux/selectors/selectors.ts +0 -87
- package/src/redux/selectors/smartscript.ts +0 -30
- package/src/redux/selectors/user.test.ts +0 -39
- package/src/redux/selectors/user.ts +0 -45
- package/src/redux/store.test.ts +0 -22
- package/src/redux/store.ts +0 -100
- package/src/service/api.manager.ts +0 -261
- package/src/service/auth.service.ts +0 -5
- package/src/service/pardot.service.ts +0 -10
- package/src/tests-misc/plugins/jestTestPlugin/after.tsx +0 -5
- package/src/tests-misc/plugins/jestTestPlugin/before.tsx +0 -11
- package/src/tests-misc/plugins/jestTestPlugin/index.ts +0 -11
- package/src/tests-misc/plugins/jestTestPlugin/title.tsx +0 -8
- package/src/tests-misc/themes/jestTestTheme/components/EmailComponent.tsx +0 -5
- package/src/tests-misc/themes/jestTestTheme/components/TermsheetComponent.tsx +0 -5
- package/src/tests-misc/themes/jestTestTheme/components/WizardComponent.tsx +0 -5
- package/src/tests-misc/themes/jestTestTheme/faltyIndex.ts +0 -3
- package/src/tests-misc/themes/jestTestTheme/faltyIndexLoader.ts +0 -1
- package/src/tests-misc/themes/jestTestTheme/index.ts +0 -13
- package/src/types/Actions.type.ts +0 -612
- package/src/types/Components.type.ts +0 -181
- package/src/types/State.type.ts +0 -323
- package/src/types/Termsheet.type.ts +0 -28
- package/src/types/api.type.ts +0 -37
- package/src/types/config.type.ts +0 -55
- package/src/types/env.type.ts +0 -5
- package/src/types/getActions.type.ts +0 -3
- package/src/types/getConnectors.type.ts +0 -5
- package/src/types/getSelectors.type.ts +0 -3
- package/src/wizard-params.ts +0 -56
- package/tsconfig.json +0 -43
|
@@ -1,724 +0,0 @@
|
|
|
1
|
-
import moment from "moment-business-days";
|
|
2
|
-
import { EvalBase } from "./EvalBase";
|
|
3
|
-
import { NumberToLetter } from "./NumbersToLetters";
|
|
4
|
-
|
|
5
|
-
let holidays: string[] = [];
|
|
6
|
-
|
|
7
|
-
/**
|
|
8
|
-
* Calculates list of french holidays for a given year
|
|
9
|
-
* @param year Year
|
|
10
|
-
*/
|
|
11
|
-
const frenchHolidays = (year: number): string[] => {
|
|
12
|
-
const JourAn = new Date(year, 0, 1);
|
|
13
|
-
const FeteTravail = new Date(year, 4, 1);
|
|
14
|
-
const Victoire1945 = new Date(year, 4, 8);
|
|
15
|
-
const FeteNationale = new Date(year, 6, 14);
|
|
16
|
-
const Assomption = new Date(year, 7, 15);
|
|
17
|
-
const Toussaint = new Date(year, 10, 1);
|
|
18
|
-
const Armistice = new Date(year, 10, 11);
|
|
19
|
-
const Noel = new Date(year, 11, 25);
|
|
20
|
-
// Aslace: const SaintEtienne = new Date(year, 11, 26);
|
|
21
|
-
|
|
22
|
-
const MF = Math.floor;
|
|
23
|
-
const G = year % 19;
|
|
24
|
-
const C = MF(year / 100);
|
|
25
|
-
const H = (C - MF(C / 4) - MF((8 * C + 13) / 25) + 19 * G + 15) % 30;
|
|
26
|
-
const I =
|
|
27
|
-
H - MF(H / 28) * (1 - MF(H / 28) * MF(29 / (H + 1)) * MF((21 - G) / 11));
|
|
28
|
-
const J = (year * 1 + MF(year / 4) + I + 2 - C + MF(C / 4)) % 7;
|
|
29
|
-
const L = I - J;
|
|
30
|
-
const MoisPaques = 3 + MF((L + 40) / 44);
|
|
31
|
-
const JourPaques = L + 28 - 31 * MF(MoisPaques / 4);
|
|
32
|
-
// Aslace: const VendrediSaint = new Date(year, MoisPaques - 1, JourPaques - 2);
|
|
33
|
-
const LundiPaques = new Date(year, MoisPaques - 1, JourPaques + 1);
|
|
34
|
-
const Ascension = new Date(year, MoisPaques - 1, JourPaques + 39);
|
|
35
|
-
const LundiPentecote = new Date(year, MoisPaques - 1, JourPaques + 50);
|
|
36
|
-
|
|
37
|
-
const formatDate = (date: Date): string => {
|
|
38
|
-
const dayIndex = date.getDate();
|
|
39
|
-
const monthIndex = date.getMonth();
|
|
40
|
-
const day = dayIndex < 10 ? `0${dayIndex.toString()}` : dayIndex;
|
|
41
|
-
const month =
|
|
42
|
-
monthIndex + 1 < 10 ? `0${(monthIndex + 1).toString()}` : monthIndex + 1;
|
|
43
|
-
return `${day}/${month}/${date.getFullYear()}`;
|
|
44
|
-
};
|
|
45
|
-
|
|
46
|
-
return [
|
|
47
|
-
JourAn,
|
|
48
|
-
LundiPaques,
|
|
49
|
-
FeteTravail,
|
|
50
|
-
Victoire1945,
|
|
51
|
-
LundiPentecote,
|
|
52
|
-
Ascension,
|
|
53
|
-
FeteNationale,
|
|
54
|
-
Assomption,
|
|
55
|
-
Toussaint,
|
|
56
|
-
Armistice,
|
|
57
|
-
Noel,
|
|
58
|
-
].map((d) => formatDate(d));
|
|
59
|
-
};
|
|
60
|
-
|
|
61
|
-
/**
|
|
62
|
-
* Getting holidays from 2000 to 2050
|
|
63
|
-
*/
|
|
64
|
-
for (let i = 2000; i < 2050; i += 1) {
|
|
65
|
-
holidays = [...holidays, ...frenchHolidays(i)];
|
|
66
|
-
}
|
|
67
|
-
|
|
68
|
-
const dateStringRegex = /^([0-9]{2})\/([0-9]{2})\/([0-9]{4})$/;
|
|
69
|
-
const yearStringRegex = /^([0-9]{4})$/;
|
|
70
|
-
const timestampRegex = /^([0-9]+)$/;
|
|
71
|
-
const varTagRegex = /^\[var:([0-9]+)\]$/;
|
|
72
|
-
|
|
73
|
-
export class EvalFunctions extends EvalBase {
|
|
74
|
-
holidays: string[] = holidays;
|
|
75
|
-
|
|
76
|
-
private parseVariableArgumentDate(varRef: string) {
|
|
77
|
-
let result: string | number = varRef;
|
|
78
|
-
if (varTagRegex.test(varRef)) result = this.getVariableValue(varRef, false);
|
|
79
|
-
|
|
80
|
-
return typeof result === "number" ? result.toString() : result;
|
|
81
|
-
}
|
|
82
|
-
|
|
83
|
-
/**
|
|
84
|
-
* Affiche le jour de la date donné
|
|
85
|
-
* @param varRef Tag variable, date ou timestamp
|
|
86
|
-
*/
|
|
87
|
-
afficherDate = (varRef: string): string => {
|
|
88
|
-
let result = "";
|
|
89
|
-
const date = this.parseVariableArgumentDate(varRef);
|
|
90
|
-
|
|
91
|
-
if (!dateStringRegex.test(date) && !timestampRegex.test(date)) {
|
|
92
|
-
this.doNotEvaluate = true;
|
|
93
|
-
return "";
|
|
94
|
-
}
|
|
95
|
-
if (!dateStringRegex.test(date)) {
|
|
96
|
-
result = moment.unix(parseInt(date, 10)).utc().format("DD/MM/YYYY");
|
|
97
|
-
} else {
|
|
98
|
-
result = moment.utc(date, "DD/MM/YYYY").utc().format("DD/MM/YYYY");
|
|
99
|
-
}
|
|
100
|
-
|
|
101
|
-
if (!dateStringRegex.test(result)) return "";
|
|
102
|
-
|
|
103
|
-
return `'${result}'`;
|
|
104
|
-
};
|
|
105
|
-
|
|
106
|
-
/**
|
|
107
|
-
* Afficher l'année de la date donné
|
|
108
|
-
* @param varRef Tag variable, date ou timestamp
|
|
109
|
-
*/
|
|
110
|
-
afficherAnnee = (varRef: string): string => {
|
|
111
|
-
let result = "";
|
|
112
|
-
const date = this.parseVariableArgumentDate(varRef);
|
|
113
|
-
|
|
114
|
-
if (!dateStringRegex.test(date) && !timestampRegex.test(date)) {
|
|
115
|
-
this.doNotEvaluate = true;
|
|
116
|
-
return "";
|
|
117
|
-
}
|
|
118
|
-
if (!dateStringRegex.test(date)) {
|
|
119
|
-
result = moment.unix(parseInt(date, 10)).utc().format("YYYY");
|
|
120
|
-
} else {
|
|
121
|
-
result = moment.utc(date, "DD/MM/YYYY").utc().format("YYYY");
|
|
122
|
-
}
|
|
123
|
-
|
|
124
|
-
if (!yearStringRegex.test(result)) return "";
|
|
125
|
-
|
|
126
|
-
return `'${result}'`;
|
|
127
|
-
};
|
|
128
|
-
|
|
129
|
-
/**
|
|
130
|
-
* Convertie une date en timestamp
|
|
131
|
-
* @param varRef Tag variable, date ou timestamp
|
|
132
|
-
*/
|
|
133
|
-
date = (varRef: string): number => {
|
|
134
|
-
const date = this.parseVariableArgumentDate(varRef);
|
|
135
|
-
|
|
136
|
-
if (!dateStringRegex.test(date) && !timestampRegex.test(date)) {
|
|
137
|
-
this.doNotEvaluate = true;
|
|
138
|
-
return 0;
|
|
139
|
-
}
|
|
140
|
-
return moment.utc(date, "DD/MM/YYYY").unix();
|
|
141
|
-
};
|
|
142
|
-
|
|
143
|
-
/**
|
|
144
|
-
* Détermine si une date donnée est un jour ouvré ou pas,
|
|
145
|
-
* si c'est le cas elle retourne la date sinon elle
|
|
146
|
-
* retroune la date du jour ouvré suivant
|
|
147
|
-
* @param varRef Tag variable, date ou timestamp
|
|
148
|
-
*/
|
|
149
|
-
jourOuvre = (varRef: string): string => {
|
|
150
|
-
const date = this.parseVariableArgumentDate(varRef);
|
|
151
|
-
|
|
152
|
-
// Defining business days
|
|
153
|
-
moment.updateLocale("en", {
|
|
154
|
-
workingWeekdays: [1, 2, 3, 4, 5],
|
|
155
|
-
holidays,
|
|
156
|
-
holidayFormat: "DD/MM/YYYY",
|
|
157
|
-
});
|
|
158
|
-
|
|
159
|
-
let momentDate: moment.Moment;
|
|
160
|
-
|
|
161
|
-
if (!dateStringRegex.test(date) && !timestampRegex.test(date)) {
|
|
162
|
-
this.doNotEvaluate = true;
|
|
163
|
-
return "";
|
|
164
|
-
}
|
|
165
|
-
if (!dateStringRegex.test(date) && moment.unix(parseInt(date, 10))) {
|
|
166
|
-
momentDate = moment.unix(parseInt(date, 10)).utc();
|
|
167
|
-
} else {
|
|
168
|
-
momentDate = moment.utc(date, "DD/MM/YYYY");
|
|
169
|
-
}
|
|
170
|
-
|
|
171
|
-
if (!momentDate.isBusinessDay()) {
|
|
172
|
-
momentDate = momentDate.nextBusinessDay();
|
|
173
|
-
}
|
|
174
|
-
return momentDate.utc().format("DD/MM/YYYY");
|
|
175
|
-
};
|
|
176
|
-
|
|
177
|
-
/**
|
|
178
|
-
* Détermine si une date donnée est un jour ouvrable ou pas,
|
|
179
|
-
* si c'est le cas elle retourne la date sinon elle
|
|
180
|
-
* retroune la date du jour ouvrable suivant
|
|
181
|
-
* @param varRef Tag variable, date ou timestamp
|
|
182
|
-
*/
|
|
183
|
-
jourOuvrable = (varRef: string): string => {
|
|
184
|
-
const date = this.parseVariableArgumentDate(varRef);
|
|
185
|
-
|
|
186
|
-
// Defining business days
|
|
187
|
-
moment.updateLocale("en", {
|
|
188
|
-
workingWeekdays: [1, 2, 3, 4, 5, 6],
|
|
189
|
-
holidays,
|
|
190
|
-
holidayFormat: "DD/MM/YYYY",
|
|
191
|
-
});
|
|
192
|
-
|
|
193
|
-
let momentDate: moment.Moment;
|
|
194
|
-
|
|
195
|
-
if (!dateStringRegex.test(date) && !timestampRegex.test(date)) {
|
|
196
|
-
this.doNotEvaluate = true;
|
|
197
|
-
return "";
|
|
198
|
-
}
|
|
199
|
-
if (!dateStringRegex.test(date) && moment.unix(parseInt(date, 10))) {
|
|
200
|
-
momentDate = moment.unix(parseInt(date, 10)).utc();
|
|
201
|
-
} else {
|
|
202
|
-
momentDate = moment.utc(date, "DD/MM/YYYY");
|
|
203
|
-
}
|
|
204
|
-
|
|
205
|
-
if (!momentDate.isBusinessDay()) {
|
|
206
|
-
momentDate = momentDate.nextBusinessDay();
|
|
207
|
-
}
|
|
208
|
-
|
|
209
|
-
return momentDate.utc().format("DD/MM/YYYY");
|
|
210
|
-
};
|
|
211
|
-
|
|
212
|
-
/**
|
|
213
|
-
* Ajouter un nombre donné de jours ouvrés à une
|
|
214
|
-
* date donnée
|
|
215
|
-
* @param varRef Tag variable, date ou timestamp
|
|
216
|
-
* @param businessDaysRef Tag variable, Nombre de jours
|
|
217
|
-
*/
|
|
218
|
-
ajouterJoursOuvres = (varRef: string, businessDaysRef: string): string => {
|
|
219
|
-
const date = this.parseVariableArgumentDate(varRef);
|
|
220
|
-
|
|
221
|
-
// Parsing business days if it's a variable
|
|
222
|
-
let businessDays = businessDaysRef;
|
|
223
|
-
if (varTagRegex.test(businessDays))
|
|
224
|
-
businessDays = this.parseVariableArgumentDate(businessDaysRef);
|
|
225
|
-
|
|
226
|
-
// Defining business days
|
|
227
|
-
moment.updateLocale("en", {
|
|
228
|
-
workingWeekdays: [1, 2, 3, 4, 5],
|
|
229
|
-
holidays,
|
|
230
|
-
holidayFormat: "DD/MM/YYYY",
|
|
231
|
-
});
|
|
232
|
-
|
|
233
|
-
if (!dateStringRegex.test(date) && !timestampRegex.test(date)) {
|
|
234
|
-
this.doNotEvaluate = true;
|
|
235
|
-
return "";
|
|
236
|
-
}
|
|
237
|
-
|
|
238
|
-
if (!dateStringRegex.test(date)) {
|
|
239
|
-
return moment
|
|
240
|
-
.unix(parseInt(date, 10))
|
|
241
|
-
.utc()
|
|
242
|
-
.businessAdd(parseInt(businessDays, 10))
|
|
243
|
-
.utc()
|
|
244
|
-
.format("DD/MM/YYYY");
|
|
245
|
-
}
|
|
246
|
-
|
|
247
|
-
return moment
|
|
248
|
-
.utc(date, "DD/MM/YYYY")
|
|
249
|
-
.businessAdd(parseInt(businessDays, 10))
|
|
250
|
-
.utc()
|
|
251
|
-
.format("DD/MM/YYYY");
|
|
252
|
-
};
|
|
253
|
-
|
|
254
|
-
/**
|
|
255
|
-
* Ajouter un nombre donné de jours ouvrables à une
|
|
256
|
-
* date donnée
|
|
257
|
-
* @param varRef Tag variable, date ou timestamp
|
|
258
|
-
* @param businessDaysRef Tag variable, Nombre de jours
|
|
259
|
-
*/
|
|
260
|
-
ajouterJoursOuvrables = (varRef: string, businessDaysRef: string): string => {
|
|
261
|
-
const date = this.parseVariableArgumentDate(varRef);
|
|
262
|
-
|
|
263
|
-
// Parsing business days if it's a variable
|
|
264
|
-
let businessDays = businessDaysRef;
|
|
265
|
-
if (varTagRegex.test(businessDays))
|
|
266
|
-
businessDays = this.parseVariableArgumentDate(businessDaysRef);
|
|
267
|
-
|
|
268
|
-
// Defining business days
|
|
269
|
-
moment.updateLocale("en", {
|
|
270
|
-
workingWeekdays: [1, 2, 3, 4, 5, 6],
|
|
271
|
-
holidays,
|
|
272
|
-
holidayFormat: "DD/MM/YYYY",
|
|
273
|
-
});
|
|
274
|
-
|
|
275
|
-
if (!dateStringRegex.test(date) && !timestampRegex.test(date)) {
|
|
276
|
-
this.doNotEvaluate = true;
|
|
277
|
-
return "";
|
|
278
|
-
}
|
|
279
|
-
|
|
280
|
-
if (!dateStringRegex.test(date)) {
|
|
281
|
-
return moment
|
|
282
|
-
.unix(parseInt(date, 10))
|
|
283
|
-
.utc()
|
|
284
|
-
.businessAdd(parseInt(businessDays, 10))
|
|
285
|
-
.format("DD/MM/YYYY");
|
|
286
|
-
}
|
|
287
|
-
|
|
288
|
-
return moment
|
|
289
|
-
.utc(date, "DD/MM/YYYY")
|
|
290
|
-
.businessAdd(parseInt(businessDays, 10))
|
|
291
|
-
.utc()
|
|
292
|
-
.format("DD/MM/YYYY");
|
|
293
|
-
};
|
|
294
|
-
|
|
295
|
-
/**
|
|
296
|
-
* Ajouter un nombre donné de jours calendaires à une
|
|
297
|
-
* date donnée
|
|
298
|
-
* @param varRef Tag variable, date ou timestamp
|
|
299
|
-
* @param daysRef Tag variable, Nombre de jours
|
|
300
|
-
*/
|
|
301
|
-
ajouterJours = (varRef: string, daysRef: string): string => {
|
|
302
|
-
const date = this.parseVariableArgumentDate(varRef);
|
|
303
|
-
|
|
304
|
-
// Parsing days if it's a variable
|
|
305
|
-
let days = daysRef;
|
|
306
|
-
if (varTagRegex.test(days)) days = this.parseVariableArgumentDate(daysRef);
|
|
307
|
-
|
|
308
|
-
if (!dateStringRegex.test(date) && !timestampRegex.test(date)) {
|
|
309
|
-
this.doNotEvaluate = true;
|
|
310
|
-
return "";
|
|
311
|
-
}
|
|
312
|
-
|
|
313
|
-
if (!dateStringRegex.test(date)) {
|
|
314
|
-
return moment
|
|
315
|
-
.unix(parseInt(date, 10))
|
|
316
|
-
.utc()
|
|
317
|
-
.add(days, "d")
|
|
318
|
-
.format("DD/MM/YYYY");
|
|
319
|
-
}
|
|
320
|
-
|
|
321
|
-
return moment
|
|
322
|
-
.utc(date, "DD/MM/YYYY")
|
|
323
|
-
.add(days, "d")
|
|
324
|
-
.utc()
|
|
325
|
-
.format("DD/MM/YYYY");
|
|
326
|
-
};
|
|
327
|
-
|
|
328
|
-
/**
|
|
329
|
-
* Ajouter un nombre donné de mois calendaires à une
|
|
330
|
-
* date donnée
|
|
331
|
-
* @param varRef Tag variable, date ou timestamp
|
|
332
|
-
* @param monthsRef Tag variable, Nombre de mois
|
|
333
|
-
*/
|
|
334
|
-
ajouterMois = (varRef: string, monthsRef: string): string => {
|
|
335
|
-
const date = this.parseVariableArgumentDate(varRef);
|
|
336
|
-
|
|
337
|
-
// Parsing months if it's a variable
|
|
338
|
-
let months = monthsRef;
|
|
339
|
-
if (varTagRegex.test(months))
|
|
340
|
-
months = this.parseVariableArgumentDate(monthsRef);
|
|
341
|
-
|
|
342
|
-
if (!dateStringRegex.test(date) && !timestampRegex.test(date)) {
|
|
343
|
-
this.doNotEvaluate = true;
|
|
344
|
-
return "";
|
|
345
|
-
}
|
|
346
|
-
|
|
347
|
-
if (!dateStringRegex.test(date)) {
|
|
348
|
-
return moment
|
|
349
|
-
.unix(parseInt(date, 10))
|
|
350
|
-
.utc()
|
|
351
|
-
.add(months, "M")
|
|
352
|
-
.format("DD/MM/YYYY");
|
|
353
|
-
}
|
|
354
|
-
|
|
355
|
-
return moment
|
|
356
|
-
.utc(date, "DD/MM/YYYY")
|
|
357
|
-
.add(months, "M")
|
|
358
|
-
.subtract(1, "d")
|
|
359
|
-
.utc()
|
|
360
|
-
.format("DD/MM/YYYY");
|
|
361
|
-
};
|
|
362
|
-
|
|
363
|
-
/**
|
|
364
|
-
* Ajouter un nombre donné d'années calendaires à une
|
|
365
|
-
* date donnée
|
|
366
|
-
* @param varRef Tag variable, date ou timestamp
|
|
367
|
-
* @param yearsRef Tag variable, Nombre d'années
|
|
368
|
-
*/
|
|
369
|
-
ajouterAnnees = (varRef: string, yearsRef: string): string => {
|
|
370
|
-
const date = this.parseVariableArgumentDate(varRef);
|
|
371
|
-
|
|
372
|
-
// Parsing years ref if it's a variable
|
|
373
|
-
let years = yearsRef;
|
|
374
|
-
if (varTagRegex.test(years))
|
|
375
|
-
years = this.parseVariableArgumentDate(yearsRef);
|
|
376
|
-
|
|
377
|
-
if (!dateStringRegex.test(date) && !timestampRegex.test(date)) {
|
|
378
|
-
this.doNotEvaluate = true;
|
|
379
|
-
return "";
|
|
380
|
-
}
|
|
381
|
-
|
|
382
|
-
if (!dateStringRegex.test(date)) {
|
|
383
|
-
return moment
|
|
384
|
-
.unix(parseInt(date, 10))
|
|
385
|
-
.utc()
|
|
386
|
-
.add(years, "y")
|
|
387
|
-
.utc()
|
|
388
|
-
.format("DD/MM/YYYY");
|
|
389
|
-
}
|
|
390
|
-
|
|
391
|
-
return moment
|
|
392
|
-
.utc(date, "DD/MM/YYYY")
|
|
393
|
-
.add(years, "y")
|
|
394
|
-
.utc()
|
|
395
|
-
.format("DD/MM/YYYY");
|
|
396
|
-
};
|
|
397
|
-
|
|
398
|
-
/**
|
|
399
|
-
* Enlève un nombre donné de jours ouvrables à une
|
|
400
|
-
* date donnée
|
|
401
|
-
* @param varRef Tag variable, date ou timestamp
|
|
402
|
-
* @param businessDaysRef Tag variable, Nombre de jours
|
|
403
|
-
*/
|
|
404
|
-
enleverJoursOuvrables = (varRef: string, businessDaysRef: string): string => {
|
|
405
|
-
const date = this.parseVariableArgumentDate(varRef);
|
|
406
|
-
|
|
407
|
-
// Parsing businessDaysRef if it's a variable
|
|
408
|
-
let businessDays = businessDaysRef;
|
|
409
|
-
if (varTagRegex.test(businessDays))
|
|
410
|
-
businessDays = this.parseVariableArgumentDate(businessDaysRef);
|
|
411
|
-
|
|
412
|
-
// Defining business days
|
|
413
|
-
moment.updateLocale("en", {
|
|
414
|
-
workingWeekdays: [1, 2, 3, 4, 5, 6],
|
|
415
|
-
holidays,
|
|
416
|
-
holidayFormat: "DD/MM/YYYY",
|
|
417
|
-
});
|
|
418
|
-
|
|
419
|
-
if (!dateStringRegex.test(date) && !timestampRegex.test(date)) {
|
|
420
|
-
this.doNotEvaluate = true;
|
|
421
|
-
return "";
|
|
422
|
-
}
|
|
423
|
-
|
|
424
|
-
if (!dateStringRegex.test(date)) {
|
|
425
|
-
return moment
|
|
426
|
-
.unix(parseInt(date, 10))
|
|
427
|
-
.utc()
|
|
428
|
-
.businessSubtract(parseInt(businessDays, 10))
|
|
429
|
-
.format("DD/MM/YYYY");
|
|
430
|
-
}
|
|
431
|
-
|
|
432
|
-
return moment
|
|
433
|
-
.utc(date, "DD/MM/YYYY")
|
|
434
|
-
.businessSubtract(parseInt(businessDays, 10))
|
|
435
|
-
.utc()
|
|
436
|
-
.format("DD/MM/YYYY");
|
|
437
|
-
};
|
|
438
|
-
|
|
439
|
-
/**
|
|
440
|
-
* Enlève un nombre donné de jours ouvrés à une
|
|
441
|
-
* date donnée
|
|
442
|
-
* @param varRef Tag variable, date ou timestamp
|
|
443
|
-
* @param businessDaysRef Tag variable, Nombre de jours
|
|
444
|
-
*/
|
|
445
|
-
enleverJoursOuvres = (varRef: string, businessDaysRef: string): string => {
|
|
446
|
-
const date = this.parseVariableArgumentDate(varRef);
|
|
447
|
-
|
|
448
|
-
// Parsing businessDaysRef if it's a variable
|
|
449
|
-
let businessDays = businessDaysRef;
|
|
450
|
-
if (varTagRegex.test(businessDays))
|
|
451
|
-
businessDays = this.parseVariableArgumentDate(businessDaysRef);
|
|
452
|
-
|
|
453
|
-
// Defining business days
|
|
454
|
-
moment.updateLocale("en", {
|
|
455
|
-
workingWeekdays: [1, 2, 3, 4, 5],
|
|
456
|
-
holidays,
|
|
457
|
-
holidayFormat: "DD/MM/YYYY",
|
|
458
|
-
});
|
|
459
|
-
|
|
460
|
-
if (!dateStringRegex.test(date) && !timestampRegex.test(date)) {
|
|
461
|
-
this.doNotEvaluate = true;
|
|
462
|
-
return "";
|
|
463
|
-
}
|
|
464
|
-
|
|
465
|
-
if (!dateStringRegex.test(date)) {
|
|
466
|
-
return moment
|
|
467
|
-
.unix(parseInt(date, 10))
|
|
468
|
-
.utc()
|
|
469
|
-
.businessSubtract(parseInt(businessDays, 10))
|
|
470
|
-
.format("DD/MM/YYYY");
|
|
471
|
-
}
|
|
472
|
-
|
|
473
|
-
return moment
|
|
474
|
-
.utc(date, "DD/MM/YYYY")
|
|
475
|
-
.businessSubtract(parseInt(businessDays, 10))
|
|
476
|
-
.utc()
|
|
477
|
-
.format("DD/MM/YYYY");
|
|
478
|
-
};
|
|
479
|
-
|
|
480
|
-
/**
|
|
481
|
-
* Enlève un nombre donné de jours calendaires à une
|
|
482
|
-
* date donnée
|
|
483
|
-
* @param varRef Tag variable, date ou timestamp
|
|
484
|
-
* @param daysRef Tag variable, Nombre de jours
|
|
485
|
-
*/
|
|
486
|
-
enleverJours = (varRef: string, daysRef: string): string => {
|
|
487
|
-
const date = this.parseVariableArgumentDate(varRef);
|
|
488
|
-
|
|
489
|
-
// Parsing daysRef if it's a variable
|
|
490
|
-
let days = daysRef;
|
|
491
|
-
if (varTagRegex.test(days)) days = this.parseVariableArgumentDate(daysRef);
|
|
492
|
-
|
|
493
|
-
if (!dateStringRegex.test(date) && !timestampRegex.test(date)) {
|
|
494
|
-
this.doNotEvaluate = true;
|
|
495
|
-
return "";
|
|
496
|
-
}
|
|
497
|
-
|
|
498
|
-
if (!dateStringRegex.test(date)) {
|
|
499
|
-
return moment
|
|
500
|
-
.unix(parseInt(date, 10))
|
|
501
|
-
.utc()
|
|
502
|
-
.subtract(days, "d")
|
|
503
|
-
.format("DD/MM/YYYY");
|
|
504
|
-
}
|
|
505
|
-
|
|
506
|
-
return moment
|
|
507
|
-
.utc(date, "DD/MM/YYYY")
|
|
508
|
-
.subtract(days, "d")
|
|
509
|
-
.utc()
|
|
510
|
-
.format("DD/MM/YYYY");
|
|
511
|
-
};
|
|
512
|
-
|
|
513
|
-
/**
|
|
514
|
-
* Enlève un nombre donné de mois calendaires à une
|
|
515
|
-
* date donnée
|
|
516
|
-
* @param varRef Tag variable, date ou timestamp
|
|
517
|
-
* @param monthsRef Tag variable, Nombre de mois
|
|
518
|
-
*/
|
|
519
|
-
enleverMois = (varRef: string, monthsRef: string): string => {
|
|
520
|
-
const date = this.parseVariableArgumentDate(varRef);
|
|
521
|
-
|
|
522
|
-
// Parsing monthsRef if it's a variable
|
|
523
|
-
let months = monthsRef;
|
|
524
|
-
if (varTagRegex.test(months))
|
|
525
|
-
months = this.parseVariableArgumentDate(monthsRef);
|
|
526
|
-
|
|
527
|
-
if (!dateStringRegex.test(date) && !timestampRegex.test(date)) {
|
|
528
|
-
this.doNotEvaluate = true;
|
|
529
|
-
return "";
|
|
530
|
-
}
|
|
531
|
-
|
|
532
|
-
if (!dateStringRegex.test(date)) {
|
|
533
|
-
return moment
|
|
534
|
-
.unix(parseInt(date, 10))
|
|
535
|
-
.utc()
|
|
536
|
-
.subtract(months, "M")
|
|
537
|
-
.format("DD/MM/YYYY");
|
|
538
|
-
}
|
|
539
|
-
|
|
540
|
-
return moment
|
|
541
|
-
.utc(date, "DD/MM/YYYY")
|
|
542
|
-
.subtract(months, "M")
|
|
543
|
-
.subtract(1, "d")
|
|
544
|
-
.utc()
|
|
545
|
-
.format("DD/MM/YYYY");
|
|
546
|
-
};
|
|
547
|
-
|
|
548
|
-
/**
|
|
549
|
-
* Enlève un nombre donné d'années calendaires à une
|
|
550
|
-
* date donnée
|
|
551
|
-
* @param varRef Tag variable, date ou timestamp
|
|
552
|
-
* @param yearsRef Tag variable, Nombre d'années
|
|
553
|
-
*/
|
|
554
|
-
enleverAnnees = (varRef: string, yearsRef: string): string => {
|
|
555
|
-
const date = this.parseVariableArgumentDate(varRef);
|
|
556
|
-
|
|
557
|
-
// Parsing yearsRef if it's a variable
|
|
558
|
-
let years = yearsRef;
|
|
559
|
-
if (varTagRegex.test(years))
|
|
560
|
-
years = this.parseVariableArgumentDate(yearsRef);
|
|
561
|
-
|
|
562
|
-
if (!dateStringRegex.test(date) && !timestampRegex.test(date)) {
|
|
563
|
-
this.doNotEvaluate = true;
|
|
564
|
-
return "";
|
|
565
|
-
}
|
|
566
|
-
|
|
567
|
-
if (!dateStringRegex.test(date)) {
|
|
568
|
-
return moment
|
|
569
|
-
.unix(parseInt(date, 10))
|
|
570
|
-
.utc()
|
|
571
|
-
.subtract(years, "y")
|
|
572
|
-
.format("DD/MM/YYYY");
|
|
573
|
-
}
|
|
574
|
-
|
|
575
|
-
return moment
|
|
576
|
-
.utc(date, "DD/MM/YYYY")
|
|
577
|
-
.subtract(years, "y")
|
|
578
|
-
.utc()
|
|
579
|
-
.format("DD/MM/YYYY");
|
|
580
|
-
};
|
|
581
|
-
|
|
582
|
-
/**
|
|
583
|
-
* Calcule le nombre de jours passés entre deux dates
|
|
584
|
-
* données
|
|
585
|
-
* @param varRefA Tag variable, date ou timestamp
|
|
586
|
-
* @param varRefB Tag variable, date ou timestamp
|
|
587
|
-
*/
|
|
588
|
-
dureeJours = (varRefA: string, varRefB: string): number => {
|
|
589
|
-
const dateA = this.parseVariableArgumentDate(varRefA);
|
|
590
|
-
const dateB = this.parseVariableArgumentDate(varRefB);
|
|
591
|
-
|
|
592
|
-
if (
|
|
593
|
-
(!dateStringRegex.test(dateA) && !timestampRegex.test(dateA)) ||
|
|
594
|
-
(!dateStringRegex.test(dateB) && !timestampRegex.test(dateB))
|
|
595
|
-
) {
|
|
596
|
-
this.doNotEvaluate = true;
|
|
597
|
-
return 0;
|
|
598
|
-
}
|
|
599
|
-
|
|
600
|
-
// Creating moment instance for date A
|
|
601
|
-
const dateAMoment = !dateStringRegex.test(dateA)
|
|
602
|
-
? moment.unix(parseInt(dateA, 10)).utc()
|
|
603
|
-
: moment.utc(dateA, "DD/MM/YYYY");
|
|
604
|
-
|
|
605
|
-
// Creating moment instance for date B
|
|
606
|
-
const dateBMoment = !dateStringRegex.test(dateB)
|
|
607
|
-
? moment.unix(parseInt(dateB, 10)).utc()
|
|
608
|
-
: moment.utc(dateB, "DD/MM/YYYY");
|
|
609
|
-
|
|
610
|
-
return dateBMoment.diff(dateAMoment, "days");
|
|
611
|
-
};
|
|
612
|
-
|
|
613
|
-
/**
|
|
614
|
-
* Calcule le nombre de mois passés entre deux dates
|
|
615
|
-
* données
|
|
616
|
-
* @param varRefA Tag variable, date ou timestamp
|
|
617
|
-
* @param varRefB Tag variable, date ou timestamp
|
|
618
|
-
*/
|
|
619
|
-
dureeMois = (varRefA: string, varRefB: string): number => {
|
|
620
|
-
const dateA = this.parseVariableArgumentDate(varRefA);
|
|
621
|
-
const dateB = this.parseVariableArgumentDate(varRefB);
|
|
622
|
-
|
|
623
|
-
if (
|
|
624
|
-
(!dateStringRegex.test(dateA) && !timestampRegex.test(dateA)) ||
|
|
625
|
-
(!dateStringRegex.test(dateB) && !timestampRegex.test(dateB))
|
|
626
|
-
) {
|
|
627
|
-
this.doNotEvaluate = true;
|
|
628
|
-
return 0;
|
|
629
|
-
}
|
|
630
|
-
|
|
631
|
-
// Creating moment instance for date A
|
|
632
|
-
const dateAMoment = !dateStringRegex.test(dateA)
|
|
633
|
-
? moment.unix(parseInt(dateA, 10)).utc()
|
|
634
|
-
: moment.utc(dateA, "DD/MM/YYYY");
|
|
635
|
-
|
|
636
|
-
// Creating moment instance for date B
|
|
637
|
-
const dateBMoment = !dateStringRegex.test(dateB)
|
|
638
|
-
? moment.unix(parseInt(dateB, 10)).utc()
|
|
639
|
-
: moment.utc(dateB, "DD/MM/YYYY");
|
|
640
|
-
|
|
641
|
-
return dateBMoment.diff(dateAMoment, "months", true);
|
|
642
|
-
};
|
|
643
|
-
|
|
644
|
-
/**
|
|
645
|
-
* Calcule le nombre d'années passées entre deux dates
|
|
646
|
-
* données
|
|
647
|
-
* @param varRefA Tag variable, date ou timestamp
|
|
648
|
-
* @param varRefB Tag variable, date ou timestamp
|
|
649
|
-
*/
|
|
650
|
-
dureeAnnees = (varRefA: string, varRefB: string): number => {
|
|
651
|
-
const dateA = this.parseVariableArgumentDate(varRefA);
|
|
652
|
-
const dateB = this.parseVariableArgumentDate(varRefB);
|
|
653
|
-
|
|
654
|
-
if (
|
|
655
|
-
(!dateStringRegex.test(dateA) && !timestampRegex.test(dateA)) ||
|
|
656
|
-
(!dateStringRegex.test(dateB) && !timestampRegex.test(dateB))
|
|
657
|
-
) {
|
|
658
|
-
this.doNotEvaluate = true;
|
|
659
|
-
return 0;
|
|
660
|
-
}
|
|
661
|
-
|
|
662
|
-
// Creating moment instance for date A
|
|
663
|
-
const dateAMoment = !dateStringRegex.test(dateA)
|
|
664
|
-
? moment.unix(parseInt(dateA, 10)).utc()
|
|
665
|
-
: moment.utc(dateA, "DD/MM/YYYY");
|
|
666
|
-
|
|
667
|
-
// Creating moment instance for date B
|
|
668
|
-
const dateBMoment = !dateStringRegex.test(dateB)
|
|
669
|
-
? moment.unix(parseInt(dateB, 10)).utc()
|
|
670
|
-
: moment.utc(dateB, "DD/MM/YYYY");
|
|
671
|
-
|
|
672
|
-
return dateBMoment.diff(dateAMoment, "years", true);
|
|
673
|
-
};
|
|
674
|
-
|
|
675
|
-
/**
|
|
676
|
-
* Renvoie la date du jour
|
|
677
|
-
*/
|
|
678
|
-
today = (): string =>
|
|
679
|
-
moment
|
|
680
|
-
.utc()
|
|
681
|
-
.set({
|
|
682
|
-
hour: 0,
|
|
683
|
-
minute: 0,
|
|
684
|
-
second: 0,
|
|
685
|
-
millisecond: 0,
|
|
686
|
-
})
|
|
687
|
-
.format("DD/MM/YYYY");
|
|
688
|
-
|
|
689
|
-
/**
|
|
690
|
-
* Retourne la somme de valeurs d'une variable
|
|
691
|
-
* multiple
|
|
692
|
-
*/
|
|
693
|
-
somme = (varRef: string): number => {
|
|
694
|
-
if (!varTagRegex.test(varRef)) return 0;
|
|
695
|
-
|
|
696
|
-
// Getting variable value
|
|
697
|
-
const values = this.getVariableValue(varRef, true).map((value) => {
|
|
698
|
-
if (typeof value === "number") return value;
|
|
699
|
-
if (!Number.isNaN(parseFloat(value))) return parseFloat(value);
|
|
700
|
-
return 0;
|
|
701
|
-
});
|
|
702
|
-
|
|
703
|
-
return values.reduce((p, c) => p + c, 0);
|
|
704
|
-
};
|
|
705
|
-
|
|
706
|
-
/**
|
|
707
|
-
* Convertis un chiffre en lettres
|
|
708
|
-
*/
|
|
709
|
-
lettres = (varRef: string): string => {
|
|
710
|
-
if (!varTagRegex.test(varRef) && /[0-9]+/.test(varRef)) return "";
|
|
711
|
-
|
|
712
|
-
let result: string | number = varRef;
|
|
713
|
-
if (varTagRegex.test(varRef)) result = this.getVariableValue(varRef, false);
|
|
714
|
-
|
|
715
|
-
// Converting number
|
|
716
|
-
try {
|
|
717
|
-
result = NumberToLetter.French(result);
|
|
718
|
-
} catch (e) {
|
|
719
|
-
result = "";
|
|
720
|
-
}
|
|
721
|
-
|
|
722
|
-
return `D=${result}`;
|
|
723
|
-
};
|
|
724
|
-
}
|