diff --git a/php/chronotrack_api/fx_chronotrack_admin.php b/php/chronotrack_api/fx_chronotrack_admin.php index e1b241a..ae5a040 100644 --- a/php/chronotrack_api/fx_chronotrack_admin.php +++ b/php/chronotrack_api/fx_chronotrack_admin.php @@ -101,18 +101,37 @@ function fxChronotrackApiAdminRenderEventPage($intEveId, $strLangue = 'fr', $bln fxChronotrackApiAdminRenderEventLinkPicker($blnClosed); } - if ($arrConfig !== null) { - fxChronotrackApiAdminRenderStatusActions($intEveId, $strStatus, $blnEventLinked); - } - - if ($arrConfig !== null) { - fxChronotrackApiAdminRenderRaceMapping($intEveId, $arrConfig, $strLangue, $blnClosed, $blnEventLinked); - } - + // Sync d’abord (usage courant) ; config repliable ensuite. MSIN-4328 if ($arrConfig !== null && $blnEventLinked && $blnConfigured) { fxChronotrackApiAdminRenderPushPanel($intEveId, $blnClosed); } + if ($arrConfig !== null && $blnEventLinked) { + $blnHasSavedMapping = false; + $arrMapRows = fxChronotrackApiRaceMapGetForEvent($intEveId); + foreach ($arrMapRows as $arrMapRow) { + if (intval($arrMapRow['ct_race_id'] ?? 0) > 0) { + $blnHasSavedMapping = true; + break; + } + } + $strConfigExpanded = $blnHasSavedMapping ? '' : ' show'; + echo '
'; + echo '
'; + echo ''; + echo 'Configuration (cycle de vie, mapping épreuves)'; + echo '
'; + echo '
'; + fxChronotrackApiAdminRenderStatusActions($intEveId, $strStatus, $blnEventLinked); + fxChronotrackApiAdminRenderRaceMapping($intEveId, $arrConfig, $strLangue, $blnClosed, $blnEventLinked); + echo '
'; + } elseif ($arrConfig !== null) { + fxChronotrackApiAdminRenderStatusActions($intEveId, $strStatus, $blnEventLinked); + fxChronotrackApiAdminRenderRaceMapping($intEveId, $arrConfig, $strLangue, $blnClosed, $blnEventLinked); + } + if ($blnEventLinked && $blnConfigured) { fxChronotrackApiAdminRenderDiagnosticPanel(intval($arrConfig['ct_event_id'])); } @@ -127,9 +146,9 @@ function fxChronotrackApiAdminRenderEventPage($intEveId, $strLangue = 'fr', $bln } function fxChronotrackApiAdminRenderStatusActions($intEveId, $strStatus, $blnEventLinked = true) { - $strStep = $blnEventLinked ? '1' : '2'; - echo '
' . $strStep . '. Cycle de vie sync
'; - echo '

Activer avant la course ; Terminer après la course pour bloquer la sync auto et les changements de config.

'; + echo '
Cycle de vie sync
'; + echo '

Activer avant la course ; Terminer après pour bloquer la sync auto ' + . 'et les changements de config. (La sync auto différentielle viendra ensuite.)

'; echo '
'; if ($strStatus === MSIN_API_CHRONOTRACK_SYNC_LIE) { echo ''; @@ -160,8 +179,7 @@ function fxChronotrackApiAdminRenderRaceMapping($intEveId, $arrConfig, $strLangu } } - $strStep = $blnEventLinked ? '2' : '3'; - echo '
' . $strStep . '. Mapping épreuves MS1 → races ChronoTrack
'; + echo '
Mapping épreuves MS1 → races ChronoTrack
'; if ($arrEpreuves === null || count($arrEpreuves) === 0) { echo '

Aucune épreuve MS1 pour cet événement.

'; return; @@ -227,26 +245,23 @@ function fxChronotrackApiAdminRenderRaceMapping($intEveId, $arrConfig, $strLangu } function fxChronotrackApiAdminRenderPushPanel($intEveId, $blnClosed = false) { - global $vDomaine; echo '
'; - echo '
3. Synchronisation manuelle (participants)
'; + echo '
Synchronisation manuelle (participants)
'; echo '
'; if ($blnClosed) { echo '
Événement fermé — push manuel autorisé pour tests ou rattrapage.
'; } - echo '

Push manuel · External ID = par_id_original · Pas de sync auto.

'; + echo '

Push différentiel MS1 → ChronoTrack ' + . '(nouveaux / modifiés depuis le dernier push OK). External ID = par_id_original.

'; echo '
Cliquez Actualiser.
'; echo '
'; - echo '
'; echo '
'; echo ' '; + echo ' Pousser le différentiel '; echo ' '; - echo ' '; - echo ''; + echo ''; echo '
'; echo '
'; echo '
'; @@ -258,14 +273,15 @@ function fxChronotrackApiAdminRenderDiagnosticPanel($intCtEventId) { echo 'Diagnostic API ChronoTrack (support — event ID ' . intval($intCtEventId) . ')'; echo '
'; echo '
'; - echo '

Utilise les credentials MS1 déjà configurés (OAuth en cache). '; - echo 'Sonde event/{id}/race, entry (5 premières inscriptions), '; - echo 'event et reg_choice. Copie le rapport pour le développement.

'; + echo '

Outils de support (credentials MS1 / OAuth en cache). ' + . 'Pas nécessaire pour une course en production.

'; echo ' '; + echo ' '; echo ''; - echo '
Cliquez sur « Lancer le diagnostic API ».
'; + echo '
Cliquez sur « Lancer le diagnostic API » ou « Sonde ».
'; echo '
'; } @@ -285,16 +301,14 @@ function fxChronotrackApiAdminRenderPageScript($intEveId, $arrConfig, $blnClosed } ?>