-
Notifications
You must be signed in to change notification settings - Fork 0
Open
Labels
enhancementNew feature or requestNew feature or request
Description
Contexte
L'ATO actuel est fonctionnel mais l'UX est très limitée : formulaire Symfony classique avec soumission serveur à chaque ajout de flight/slot, pas de drag-and-drop, champ mission en texte libre, pas de base départ/retour.
Objectif
Enrichir les données du modèle Flight et remplacer l'interface par un éditeur JS interactif avec drag-and-drop des joueurs.
Approche retenue
- Enrichir les entités existantes (Flight/Slot) — pas de JSON
- Interface drag-and-drop avec SortableJS depuis CDN
- Types de mission prédéfinis (constantes int, pattern identique à
Choice::TASKS) - Sauvegarde AJAX sans rechargement de page
Changements prévus
Backend
- Entité Flight : ajouter constantes
MISSION_*(CAP, CAS, SEAD, Escort, Transport, Recon, CSAR, Tanker, AWACS, FAC), changermissionde string à integer, ajouterdepartureBaseetreturnBase(string, nullable) - Migration BDD : ALTER TABLE flight pour les nouvelles colonnes + conversion des valeurs texte existantes vers integer
- Formulaire CalendarFlightType : mission passe de TextType à ChoiceType, ajout des champs departureBase/returnBase
- Nouveau contrôleur API (
Api/AtoController) :GET /calendar/api/ato/{event}/data— charge l'ATO + joueurs disponibles (votants oui/peut-être) + liste appareils + types de missionsPOST /calendar/api/ato/{event}/save— sauvegarde complète de l'ATO en JSON avec protection CSRF
- Simplification de
CalendarController::editAto()— plus de formulaire Symfony, uniquement rendu du template
Frontend
- Nouveau fichier JS (
public/js/ato-editor.js) : éditeur state-driven en vanilla JS- Pool de joueurs draggables (votants oui/peut-être)
- Drag-and-drop via SortableJS (clone depuis pool vers slots)
- Ajout/suppression dynamique de flights
- Support des joueurs invités (non inscrits)
- Sauvegarde AJAX
- Refonte template
edit-ato.html.twig: remplacement du formulaire Symfony par l'éditeur JS - Amélioration affichage lecture (
view.html.twig) : cartes Bootstrap avec badges mission/appareil, bases départ/retour, indicateurs visuels slots remplis/vides - Ajout SortableJS dans
base.html.twig(conditionnellibSortable) - Styles CSS dans
custom.csssous namespace.ato-editor
Tests
- Tests unitaires
FlightTest.php(constantes, getMissionAsString) - Tests fonctionnels
AtoControllerTest.php(routes API)
Fichiers à créer (5)
migrations/VersionXXXX.phpsrc/Controller/Api/AtoController.phppublic/js/ato-editor.jstests/Unit/Entity/Calendar/FlightTest.phptests/Functional/Controller/Api/AtoControllerTest.php
Fichiers à modifier (7)
src/Entity/Calendar/Flight.phpsrc/Form/CalendarFlightType.phpsrc/Controller/CalendarController.phptemplates/calendar/edit-ato.html.twigtemplates/calendar/view.html.twigtemplates/website/base.html.twigpublic/css/custom.css
Vérification
- Lancer la migration
- Vérifier la conversion des missions existantes
- Tester le drag-and-drop sur
/calendar/edit/{event}/ato - Ajouter/supprimer des flights, assigner des joueurs, sauvegarder
- Vérifier l'affichage amélioré sur la page de vue
- Lancer les tests
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
enhancementNew feature or requestNew feature or request