feat(planner): implement cancellation for planning calculations

- Refactor leave-planner.worker.ts to support cancellation of ongoing calculations.
- Introduce `calculatePlanningAsyncInternal` for asynchronous planning calculations.
- Add cancellation handling in the worker message event.
- Update planning-date.ts with new utility functions for date manipulation.
- Extend translation-service.ts and translation files (en.json, de.json, es.json, fr.json) to include new strings related to planning horizon and cancellation.
- Create documentation for the cancellation feature in planner-cancellation.md.
- Add unit tests for cancellation functionality in leave-planner-cancellation.spec.ts and leave-planner.worker.spec.ts.

#57 #58
This commit is contained in:
nessar committed 2026-10-05 15:34:07 +02:00
1 parent 5c35a59805
commit 2edf2004f5
31 files changed
+2275 -304

No files matched your search

+12 -1
View File
@@ -48,7 +48,14 @@
"selectLanguage": "Langue",
"selectTheme": "Thème",
"themeOptions": { "system": "Système", "light": "Clair", "dark": "Sombre" },
"systemAppearance": "Apparence actuelle du système"
"systemAppearance": "Apparence actuelle du système",
"planningHorizon": "Horizon de planification",
"planningStart": "Date de début (incluse)",
"lastPlanningDate": "Dernière date de planification (incluse)",
"planningDatesHelp": "Choisissez vos dates, même passées. Le calendrier est mis à jour lorsque vous cliquez sur Calculer le planning.",
"invalidDate": "Saisissez deux dates calendaires valides.",
"horizonOrder": "La dernière date de planification doit être égale ou postérieure à la date de début.",
"invalidHorizon": "Corrigez les dates de planification dans les paramètres avant de calculer."
},
"rules": {
"title": "Règles de planification",
@@ -109,6 +116,10 @@
"invalidInput": "Les données de planification sont invalides.",
"conflict": "Les obligations ne peuvent pas être satisfaites ensemble.",
"incomplete": "Le calcul s’est arrêté avant la fin des critères de qualité.",
"cancel": "Annuler",
"cancelling": "Annulation en cours…",
"cancelled": "Calcul annulé",
"cancelledPartial": "Calcul annulé — plan partiel",
"error": "Le planificateur a rencontré une erreur inattendue.",
"complete": "Plan calculé.",
"whyPlacement": "Comprendre vos jours de congé",