-
+
diff --git a/css/style.css b/css/style.css index c831396..2aa785b 100644 --- a/css/style.css +++ b/css/style.css @@ -1073,17 +1073,144 @@ ul.ms1-menu-compte li a:hover, ul.ms1-menu-compte li a:active { margin-top:10px; } -/* MSIN-4440 — Grille boutons outils bib v4 (3+2) + panneau de détail unique. */ +/* MSIN-4467 — Espaces de travail de la gestion des dossards. */ #module-bib .bib-tool-hub{ margin-top:10px; } +#module-bib .bib-workspace-nav{ + display:flex; + align-items:stretch; + gap:4px; + padding:4px; + border:1px solid #c8d6e5; + border-radius:8px; + background:#f4f8fc; + overflow-x:auto; +} + +#module-bib .bib-workspace-tab{ + display:inline-flex; + align-items:center; + justify-content:center; + gap:5px; + min-height:42px; + padding:8px 16px; + border:0; + border-radius:6px; + background:transparent; + color:#495057; + font-size:13px; + font-weight:600; + line-height:1.25; + white-space:nowrap; + cursor:pointer; +} + +#module-bib .bib-workspace-tab:hover, +#module-bib .bib-workspace-tab:focus{ + background:#e8f0f8; + color:#1e4a9e; + outline:none; +} + +#module-bib .bib-workspace-tab.is-active{ + background:#2f5fd0; + color:#fff; +} + +#module-bib .bib-workspace-tab .btn-aide-trad, +#module-bib .bib-workspace-tab .btn-trad-admin{ + margin:0; +} + +#module-bib .bib-workspace-panel{ + margin-top:8px; + padding:16px; + border:1px solid #c8d6e5; + border-radius:8px; + background:#fff; +} + +#module-bib .bib-workspace-panel-heading{ + margin-bottom:14px; +} + +#module-bib .bib-workspace-panel-heading p{ + margin:0; + color:#495057; +} + +#module-bib .bib-preparation-overview{ + margin-bottom:16px; +} + +#module-bib .bib-preparation-stats{ + display:grid; + grid-template-columns:repeat(4, minmax(0, 1fr)); + gap:1px; + margin:0; + overflow:hidden; + border:1px solid #dee2e6; + border-radius:6px; + background:#dee2e6; +} + +#module-bib .bib-preparation-stat{ + margin:0; + padding:12px 14px; + background:#fff; +} + +#module-bib .bib-preparation-stat dd{ + margin:0 0 2px; + color:#212529; + font-size:22px; + font-weight:700; + line-height:1.15; +} + +#module-bib .bib-preparation-stat dt{ + margin:0; + color:#6c757d; + font-size:11px; + font-weight:600; + line-height:1.3; + text-transform:uppercase; +} + +#module-bib .bib-preparation-stat--success dd{ + color:#218838; +} + +#module-bib .bib-preparation-stat--warning dd{ + color:#a36b00; +} + +#module-bib .bib-preparation-races{ + display:flex; + flex-direction:column; + gap:6px; + margin-top:10px; +} + +/* MSIN-4440 — Outils contextuels + panneau de détail unique. */ #module-bib .bib-tool-nav{ display:grid; grid-template-columns:repeat(3, minmax(0, 1fr)); gap:8px; } +#module-bib .bib-tool-nav--preparation, +#module-bib .bib-tool-nav--operations{ + grid-template-columns:repeat(2, minmax(0, 1fr)); +} + +#module-bib .bib-tool-nav--settings{ + grid-template-columns:minmax(0, 1fr); + max-width:520px; +} + #module-bib .bib-tool-btn:nth-child(4){ grid-column:1; } @@ -1365,7 +1492,149 @@ ul.ms1-menu-compte li a:hover, ul.ms1-menu-compte li a:active { display:none; } +/* MSIN-4467 — Aperçu du futur parcours de production physique. */ +#module-bib .bib-production-planned{ + display:inline-flex; + margin-top:8px; + padding:3px 8px; + border:1px solid #d8b45a; + border-radius:999px; + background:#fff8e1; + color:#664d03; + font-size:11px; + font-weight:600; +} + +#module-bib .bib-production-steps{ + display:grid; + grid-template-columns:repeat(4, minmax(0, 1fr)); + gap:8px; + margin:0 0 20px; + padding:0; + list-style:none; +} + +#module-bib .bib-production-steps li{ + display:flex; + align-items:center; + gap:8px; + min-width:0; + padding:10px; + border:1px solid #dee2e6; + border-radius:6px; + background:#f8f9fa; + color:#495057; + font-size:12px; + font-weight:600; +} + +#module-bib .bib-production-step-number{ + display:inline-flex; + align-items:center; + justify-content:center; + flex:0 0 24px; + width:24px; + height:24px; + border-radius:999px; + background:#2f5fd0; + color:#fff; + font-size:12px; +} + +#module-bib .bib-production-category-heading h3{ + margin:0 0 8px; + color:#212529; + font-size:15px; +} + +#module-bib .bib-production-category-list{ + display:flex; + flex-direction:column; + border:1px solid #dee2e6; + border-radius:6px; + overflow:hidden; +} + +#module-bib .bib-production-category{ + display:grid; + grid-template-columns:minmax(180px, 1.2fr) minmax(300px, 2fr) auto; + gap:16px; + align-items:center; + padding:12px 14px; + background:#fff; +} + +#module-bib .bib-production-category + .bib-production-category{ + border-top:1px solid #dee2e6; +} + +#module-bib .bib-production-category__identity{ + display:flex; + flex-direction:column; + gap:2px; + min-width:0; +} + +#module-bib .bib-production-category__identity strong{ + color:#212529; + font-size:13px; +} + +#module-bib .bib-production-category__identity span{ + color:#6c757d; + font-size:11px; +} + +#module-bib .bib-production-category__fields{ + display:grid; + grid-template-columns:repeat(3, minmax(0, 1fr)); + gap:12px; + margin:0; +} + +#module-bib .bib-production-category__fields > div{ + min-width:0; +} + +#module-bib .bib-production-category__fields dt{ + margin:0 0 2px; + color:#6c757d; + font-size:10px; + font-weight:600; + text-transform:uppercase; +} + +#module-bib .bib-production-category__fields dd{ + margin:0; + color:#212529; + font-size:12px; + font-weight:600; +} + +#module-bib .bib-production-category__status{ + padding:3px 8px; + border:1px solid #d8b45a; + border-radius:999px; + background:#fff8e1; + color:#664d03; + font-size:11px; + font-weight:600; + white-space:nowrap; +} + @media (max-width:768px){ + #module-bib .bib-workspace-nav{ + align-items:stretch; + } + + #module-bib .bib-workspace-tab{ + flex:1 0 auto; + } + + #module-bib .bib-preparation-stats{ + grid-template-columns:repeat(2, minmax(0, 1fr)); + } + #module-bib .bib-tool-nav{ grid-template-columns:1fr; } @@ -1374,6 +1643,18 @@ ul.ms1-menu-compte li a:hover, ul.ms1-menu-compte li a:active { #module-bib .bib-tool-btn:nth-child(5){ grid-column:auto; } + + #module-bib .bib-production-steps{ + grid-template-columns:1fr; + } + + #module-bib .bib-production-category{ + grid-template-columns:1fr; + } + + #module-bib .bib-production-category__fields{ + grid-template-columns:1fr; + } } @@ -1658,14 +1939,130 @@ ul.ms1-menu-compte li a:hover, ul.ms1-menu-compte li a:active { /* MSIN-4379 — Refonte layout dossards v4 : 2 colonnes, Tippy, gestion masquée. */ /* CONTENEUR 2 BLOCS — colonne identité étroite + séparation blanche avec la droite. */ .epr-row{ + display:block; + border:1px solid #b8c9e8; + border-radius:6px; + background:#fff; + overflow:hidden; +} + +.epr-row-detail{ display:grid; grid-template-columns:minmax(148px, 178px) minmax(0, 1fr); gap:12px; align-items:start; - border:1px solid #b8c9e8; - border-radius:6px; padding:12px; + border-top:1px solid #dbe4f3; +} + +.epr-row:not(.is-expanded) .epr-row-detail{ + display:none; +} + +.bib-race-summary{ + display:grid; + grid-template-columns:minmax(220px, 1.4fr) minmax(300px, 1.4fr) auto 32px; + gap:14px; + align-items:center; + min-height:64px; + padding:10px 12px; background:#fff; + cursor:pointer; +} + +.bib-race-summary:hover, +.bib-race-summary:focus{ + background:#f4f8fc; + outline:none; +} + +.epr-row.is-expanded .bib-race-summary{ + background:#f4f8fc; +} + +.bib-race-summary__identity{ + display:flex; + flex-direction:column; + gap:2px; + min-width:0; +} + +.bib-race-summary__identity strong{ + color:#1e3a6e; + font-size:14px; + line-height:1.3; +} + +.bib-race-summary__identity span{ + overflow:hidden; + color:#6c757d; + font-size:11px; + text-overflow:ellipsis; + white-space:nowrap; +} + +.bib-race-summary__stats{ + display:grid; + grid-template-columns:repeat(3, minmax(0, 1fr)); + gap:12px; + margin:0; +} + +.bib-race-summary__stats > div{ + min-width:0; +} + +.bib-race-summary__stats dd{ + margin:0 0 2px; + color:#212529; + font-size:13px; + font-weight:700; +} + +.bib-race-summary__stats dt{ + margin:0; + color:#6c757d; + font-size:9px; + font-weight:600; + line-height:1.2; + text-transform:uppercase; +} + +.bib-race-summary__status{ + padding:3px 8px; + border:1px solid #d8b45a; + border-radius:999px; + background:#fff8e1; + color:#664d03; + font-size:11px; + font-weight:600; + white-space:nowrap; +} + +.bib-race-summary__status.is-ready{ + border-color:#8bc49a; + background:#edf8f0; + color:#17652c; +} + +.bib-race-toggle{ + display:inline-flex; + align-items:center; + justify-content:center; + width:30px; + height:30px; + padding:0; + border:1px solid #8fa8d8; + border-radius:4px; + background:#fff; + color:#2f5fd0; + cursor:pointer; +} + +.bib-race-toggle:hover, +.bib-race-toggle:focus{ + background:#e8f0fc; + outline:none; } .epr-row .epr-block{ @@ -2802,11 +3199,156 @@ a.ms1-trad-link.btn-aide-trad{ padding-top:2px; } +/* MSIN-4467 — Parcours progressif dans le détail d'une épreuve. */ +.bib-assignment-step{ + display:flex; + flex-direction:column; + gap:12px; +} + +.bib-assignment-step__header{ + display:flex; + align-items:flex-start; + gap:10px; +} + +.bib-assignment-step__number{ + display:inline-flex; + align-items:center; + justify-content:center; + flex:0 0 26px; + width:26px; + height:26px; + border-radius:999px; + background:#2f5fd0; + color:#fff; + font-size:12px; + font-weight:700; +} + +.bib-assignment-step__header h3{ + margin:1px 0 2px; + color:#1e3a6e; + font-size:14px; + font-weight:700; +} + +.bib-assignment-step__header p{ + margin:0; + color:#6c757d; + font-size:12px; +} + +.bib-assignment-methods{ + display:grid; + grid-template-columns:repeat(auto-fit, minmax(240px, 1fr)); + gap:10px; +} + +.bib-assignment-method{ + display:flex; + flex-direction:column; + align-items:flex-start; + min-width:0; + padding:12px; + border:1px solid #c8d6e5; + border-radius:6px; + background:#f8fbfe; +} + +.bib-assignment-method h4{ + margin:0 0 4px; + color:#212529; + font-size:13px; + font-weight:700; +} + +.bib-assignment-method p{ + min-height:34px; + margin:0 0 10px; + color:#6c757d; + font-size:11px; + line-height:1.45; +} + +.bib-assignment-method .epr-action-group{ + margin-top:auto; +} + +#module-bib .bib-assignment-method .btn-bib-auto:not(.btn-bib-auto--active){ + border-color:#2f5fd0; + background:#fff; + color:#2f5fd0; +} + +#module-bib .bib-assignment-method .btn-bib-auto:not(.btn-bib-auto--active):hover, +#module-bib .bib-assignment-method .btn-bib-auto:not(.btn-bib-auto--active):focus{ + border-color:#1e4a9e; + background:#e8f0fc; + color:#1e4a9e; +} + +#module-bib .bib-assignment-method .btn-bib-auto:not(.btn-bib-auto--active) + .btn-aide-bib{ + border-color:#2f5fd0; + background:#2f5fd0; +} + +#module-bib .bib-assignment-method .btn-bib-auto--active, +#module-bib .bib-assignment-method .btn-bib-auto--active:hover, +#module-bib .bib-assignment-method .btn-bib-auto--active:focus{ + border-color:#218838; + background:#28a745; + color:#fff; +} + +.bib-advanced-actions{ + display:flex; + align-items:center; + gap:10px; + padding-top:10px; + border-top:1px solid #dee2e6; +} + +.bib-advanced-actions__title{ + color:#6c757d; + font-size:11px; + font-weight:600; + text-transform:uppercase; +} + /* MOBILE */ @media (max-width:768px){ - .epr-row{ + .epr-row-detail{ grid-template-columns: 1fr; } + + .bib-race-summary{ + grid-template-columns:minmax(0, 1fr) auto; + } + + .bib-race-summary__stats{ + grid-column:1 / -1; + grid-row:2; + } + + .bib-race-summary__status{ + grid-column:1; + grid-row:3; + justify-self:start; + } + + .bib-race-toggle{ + grid-column:2; + grid-row:1; + } + + .bib-assignment-methods{ + grid-template-columns:1fr; + } + + .bib-assignment-method p{ + min-height:0; + } } .bib-view { diff --git a/js/v2/bib-assignments.js b/js/v2/bib-assignments.js index 06f458b..ea4ba12 100644 --- a/js/v2/bib-assignments.js +++ b/js/v2/bib-assignments.js @@ -498,8 +498,54 @@ // MSIN-4440 — Grille outils : un panneau de détail, contenu déplacé depuis #bib-tool-store. var bibActiveTool = null; + // MSIN-4467 — Espace principal : préparation, production, opérations ou réglages. + var bibActiveWorkspace = 'preparation'; var bibToolContentSlots = {}; + function bibSetWorkspace(workspaceId, options) { + options = options || {}; + if (!workspaceId) { + return; + } + + var panel = moduleBib.querySelector('[data-bib-workspace-panel="' + workspaceId + '"]'); + if (!panel) { + return; + } + + if (options.keepTool !== true) { + bibCloseTool(); + } + + bibActiveWorkspace = workspaceId; + moduleBib.querySelectorAll('.bib-workspace-tab').forEach(function (tab) { + var active = tab.getAttribute('data-bib-workspace') === workspaceId; + tab.classList.toggle('is-active', active); + tab.setAttribute('aria-selected', active ? 'true' : 'false'); + }); + moduleBib.querySelectorAll('[data-bib-workspace-panel]').forEach(function (workspacePanel) { + workspacePanel.classList.toggle( + 'bib-ui-hidden', + workspacePanel.getAttribute('data-bib-workspace-panel') !== workspaceId + ); + }); + + var races = document.getElementById('bib-preparation-races'); + if (races) { + races.classList.toggle('bib-ui-hidden', workspaceId !== 'preparation'); + } + } + + function bibWorkspaceForTool(toolId) { + if (toolId === 'event_config') { + return 'settings'; + } + if (toolId === 'anomalies' || toolId === 'dist_print') { + return 'operations'; + } + return 'preparation'; + } + function bibGetToolPanel(toolId) { return document.querySelector('#bib-tool-store [data-bib-tool="' + toolId + '"]'); } @@ -718,6 +764,11 @@ return Promise.resolve(); } + var workspaceId = bibWorkspaceForTool(toolId); + if (bibActiveWorkspace !== workspaceId) { + bibSetWorkspace(workspaceId, { keepTool: true }); + } + if (bibActiveTool === toolId) { bibCloseTool(); return Promise.resolve(); @@ -1918,6 +1969,12 @@ if (e.key !== 'Enter' && e.key !== ' ') { return; } + var workspaceTab = e.target.closest('.bib-workspace-tab[role="tab"]'); + if (workspaceTab && moduleBib.contains(workspaceTab)) { + e.preventDefault(); + bibSetWorkspace(workspaceTab.getAttribute('data-bib-workspace')); + return; + } var toolBtn = e.target.closest('.bib-tool-btn[role="button"]'); if (!toolBtn || !moduleBib.contains(toolBtn)) { return; @@ -1927,6 +1984,16 @@ }); moduleBib.addEventListener('click', function (e) { + var workspaceTab = e.target.closest('.bib-workspace-tab'); + if (workspaceTab && moduleBib.contains(workspaceTab)) { + if (e.target.closest('.btn-aide-trad, .btn-trad-admin, .ms1-trad-link')) { + return; + } + e.preventDefault(); + bibSetWorkspace(workspaceTab.getAttribute('data-bib-workspace')); + return; + } + if (e.target.closest('.btn-global-batch-complete-reload')) { e.preventDefault(); location.reload(); @@ -2124,22 +2191,71 @@ return parseInt(row.dataset.bibAAssigner || '0', 10) || 0; } + function bibRefreshPreparationOverview() { + var rows = Array.from(moduleBib.querySelectorAll('.epr-row[data-epr-id]')); + var total = 0; + var assigned = 0; + var pending = 0; + + rows.forEach(function (raceRow) { + total += parseInt((raceRow.querySelector('.bib-race-summary-total') || {}).textContent || '0', 10) || 0; + assigned += parseInt((raceRow.querySelector('.bib-race-summary-assigned') || {}).textContent || '0', 10) || 0; + pending += parseInt((raceRow.querySelector('.bib-race-summary-pending') || {}).textContent || '0', 10) || 0; + }); + + var values = { + bib_v5_stat_races: rows.length, + bib_v5_stat_registered: total, + bib_v5_stat_assigned: assigned, + bib_v5_stat_pending: pending + }; + Object.keys(values).forEach(function (key) { + var el = moduleBib.querySelector('[data-bib-overview-stat="' + key + '"]'); + if (el) { + el.textContent = values[key]; + } + }); + } + + function bibSyncRaceSummaryStatus(row) { + if (!row) return; + var pendingEl = row.querySelector('.bib-race-summary-pending'); + var rangesEl = row.querySelector('.bib-race-summary-ranges'); + var statusEl = row.querySelector('.bib-race-summary__status'); + var pending = parseInt(pendingEl ? pendingEl.textContent : '0', 10) || 0; + var ranges = parseInt(rangesEl ? rangesEl.textContent : '0', 10) || 0; + var ready = pending === 0 && ranges > 0; + + if (statusEl) { + statusEl.classList.toggle('is-ready', ready); + statusEl.textContent = statusEl.getAttribute(ready ? 'data-label-ready' : 'data-label-incomplete') || ''; + } + bibRefreshPreparationOverview(); + } + function bibSyncEprBibStats(row, info) { if (!row || !info) return; if (info.total !== undefined) { let totalEl = row.querySelector('.bib-total'); if (totalEl) totalEl.textContent = info.total; + let summaryTotal = row.querySelector('.bib-race-summary-total'); + if (summaryTotal) summaryTotal.textContent = info.total; } if (info.avec_bib !== undefined) { let avecEl = row.querySelector('.bib-avec'); if (avecEl) avecEl.textContent = info.avec_bib; + let summaryAssigned = row.querySelector('.bib-race-summary-assigned'); + if (summaryAssigned) summaryAssigned.textContent = info.avec_bib; } let pending = (info.a_assigner !== undefined && info.a_assigner !== null) ? info.a_assigner : (info.sans_bib || 0); row.dataset.bibAAssigner = String(parseInt(pending, 10) || 0); + let summaryPending = row.querySelector('.bib-race-summary-pending'); + if (summaryPending) summaryPending.textContent = parseInt(pending, 10) || 0; + bibSyncRaceSummaryStatus(row); } function bibAlertAutoPendingBibs(row) { @@ -2267,6 +2383,45 @@ } // MSIN-4379 — Réduire / développer les blocs gestion, assignation et sections anomalies. + function bibSetRaceRowExpanded(row, expanded) { + if (!row) { + return; + } + row.classList.toggle('is-expanded', expanded); + var summary = row.querySelector('.bib-race-summary'); + var button = row.querySelector('.bib-race-toggle'); + if (summary) { + summary.setAttribute('aria-expanded', expanded ? 'true' : 'false'); + } + if (button) { + var label = button.getAttribute(expanded ? 'data-label-collapse' : 'data-label-expand') || ''; + if (label) { + button.setAttribute('aria-label', label); + button.setAttribute('title', label); + } + var icon = button.querySelector('.fa'); + if (icon) { + icon.classList.toggle('fa-chevron-up', expanded); + icon.classList.toggle('fa-chevron-down', !expanded); + } + } + } + + function bibToggleRaceRow(row) { + if (!row) { + return; + } + var willExpand = !row.classList.contains('is-expanded'); + if (willExpand) { + moduleBib.querySelectorAll('.epr-row.is-expanded').forEach(function (otherRow) { + if (otherRow !== row) { + bibSetRaceRowExpanded(otherRow, false); + } + }); + } + bibSetRaceRowExpanded(row, willExpand); + } + function bibToggleCollapsibleBlock(block, btnToggle) { if (!block || !btnToggle) { return; @@ -2341,6 +2496,16 @@ return; } + let raceSummary = e.target.closest('.bib-race-summary'); + if (raceSummary && moduleBib.contains(raceSummary)) { + if (e.target.closest('a, input, select, textarea, button:not(.bib-race-toggle)')) { + return; + } + e.preventDefault(); + bibToggleRaceRow(raceSummary.closest('.epr-row')); + return; + } + let anomalyHdr = e.target.closest('.bib-anomaly-block-header'); if (anomalyHdr && moduleBib.contains(anomalyHdr) && !e.target.closest('.epr-block-toggle')) { e.preventDefault(); @@ -2407,6 +2572,16 @@ return; } + let raceSummary = e.target.closest('.bib-race-summary'); + if (raceSummary && moduleBib.contains(raceSummary)) { + if (e.target !== raceSummary && !e.target.closest('.bib-race-toggle')) { + return; + } + e.preventDefault(); + bibToggleRaceRow(raceSummary.closest('.epr-row')); + return; + } + let globalBatchHdr = e.target.closest('.bib-global-batch__section-header'); if (globalBatchHdr && moduleBib.contains(globalBatchHdr)) { e.preventDefault(); @@ -2527,6 +2702,19 @@ } if (el) { el.classList.toggle('bib-ui-hidden', !show); + if (el.classList.contains('epr-action-reset-group')) { + let advanced = el.closest('.bib-advanced-actions'); + if (advanced) { + advanced.classList.toggle('bib-ui-hidden', !show); + } + } + if (el.classList.contains('epr-action-batch-group') + || el.classList.contains('epr-action-auto-group')) { + let method = el.closest('.bib-assignment-method'); + if (method) { + method.classList.toggle('bib-ui-hidden', !show); + } + } } } @@ -2598,6 +2786,7 @@ return; } + bibSetWorkspace(bibWorkspaceForTool(toolId), { keepTool: true }); bibOpenTool(toolId).then(function () { let detail = document.getElementById('bib-tool-detail'); if (detail) { @@ -2799,6 +2988,19 @@ summaries.innerHTML = opts.summaryHtml; } } + if (typeof opts.seqCount !== 'undefined') { + let summaryRanges = row.querySelector('.bib-race-summary-ranges'); + if (summaryRanges) { + summaryRanges.textContent = parseInt(opts.seqCount, 10) || 0; + } + let productionRanges = moduleBib.querySelector( + '.bib-production-category[data-epr-id="' + row.dataset.eprId + '"] .bib-production-range-count' + ); + if (productionRanges) { + productionRanges.textContent = parseInt(opts.seqCount, 10) || 0; + } + bibSyncRaceSummaryStatus(row); + } if (typeof opts.autoActive !== 'undefined') { let blnAuto = !!opts.autoActive && opts.autoActive !== '0' && opts.autoActive !== 0; row.dataset.autoActive = blnAuto ? '1' : '0'; @@ -2824,6 +3026,9 @@ if (data && data.summary_html != null) { opts.summaryHtml = data.summary_html; } + if (data && typeof data.seq_count !== 'undefined') { + opts.seqCount = data.seq_count; + } if (data && typeof data.auto_active !== 'undefined') { opts.autoActive = data.auto_active; } diff --git a/php/inc_fx_promoteur.php b/php/inc_fx_promoteur.php index abbd72c..4b23fb0 100644 --- a/php/inc_fx_promoteur.php +++ b/php/inc_fx_promoteur.php @@ -3559,6 +3559,41 @@ function fxBibStaticFallback($clef) { 'bib_v4_batch_order_none' => ['fr' => '— Aucun —', 'en' => '— None —'], 'bib_v4_batch_sort_group_fixed' => ['fr' => 'Critères fixes', 'en' => 'Fixed criteria'], 'bib_v4_summary_teams_unit' => ['fr' => 'équipes', 'en' => 'teams'], + // MSIN-4467 — Nouvelle architecture visuelle du module. + 'bib_v5_workspace_label' => ['fr' => 'Gestion des dossards', 'en' => 'Bib management'], + 'bib_v5_workspace_preparation' => ['fr' => 'Préparation', 'en' => 'Preparation'], + 'bib_v5_workspace_production' => ['fr' => 'Production de dossards', 'en' => 'Bib production'], + 'bib_v5_workspace_operations' => ['fr' => 'Opérations', 'en' => 'Operations'], + 'bib_v5_workspace_settings' => ['fr' => 'Réglages', 'en' => 'Settings'], + 'bib_v5_preparation_intro' => ['fr' => 'Préparez les épreuves et attribuez les dossards aux inscriptions.', 'en' => 'Prepare races and assign bibs to registrations.'], + 'bib_v5_stat_races' => ['fr' => 'Épreuves actives', 'en' => 'Active races'], + 'bib_v5_stat_registered' => ['fr' => 'Inscriptions', 'en' => 'Registrations'], + 'bib_v5_stat_assigned' => ['fr' => 'Dossards attribués', 'en' => 'Assigned bibs'], + 'bib_v5_stat_pending' => ['fr' => 'À attribuer', 'en' => 'To assign'], + 'bib_v5_race_ready' => ['fr' => 'Prête', 'en' => 'Ready'], + 'bib_v5_race_incomplete' => ['fr' => 'À compléter', 'en' => 'To complete'], + 'bib_v5_ranges_title' => ['fr' => 'Plages de numéros', 'en' => 'Number ranges'], + 'bib_v5_ranges_hint' => ['fr' => 'Définissez les numéros disponibles pour cette épreuve.', 'en' => 'Define the numbers available for this race.'], + 'bib_v5_method_title' => ['fr' => 'Méthode d’attribution', 'en' => 'Assignment method'], + 'bib_v5_batch_title' => ['fr' => 'Attribuer maintenant', 'en' => 'Assign now'], + 'bib_v5_batch_hint' => ['fr' => 'Attribuer en lot aux inscriptions qui n’ont pas encore de dossard.', 'en' => 'Assign in bulk to registrations that do not have a bib yet.'], + 'bib_v5_auto_title' => ['fr' => 'Nouvelles inscriptions', 'en' => 'New registrations'], + 'bib_v5_auto_hint' => ['fr' => 'Attribuer automatiquement un dossard lors des prochaines inscriptions.', 'en' => 'Automatically assign a bib to future registrations.'], + 'bib_v5_advanced_actions' => ['fr' => 'Actions avancées', 'en' => 'Advanced actions'], + 'bib_v5_production_intro' => ['fr' => 'Préparez les informations nécessaires à l’impression des dossards à partir des plages déjà configurées.', 'en' => 'Prepare the information required to print bibs using the ranges already configured.'], + 'bib_v5_production_planned' => ['fr' => 'Fonctionnalité prévue — aucune donnée ne sera enregistrée pour le moment.', 'en' => 'Planned feature — no data will be saved yet.'], + 'bib_v5_production_step_ranges' => ['fr' => 'Choisir les plages', 'en' => 'Choose ranges'], + 'bib_v5_production_step_answers' => ['fr' => 'Répondre par catégorie', 'en' => 'Answer by category'], + 'bib_v5_production_step_review' => ['fr' => 'Réviser la production', 'en' => 'Review production'], + 'bib_v5_production_step_printer' => ['fr' => 'Transmettre à l’imprimeur', 'en' => 'Send to printer'], + 'bib_v5_production_categories' => ['fr' => 'Préparation par épreuve et catégorie', 'en' => 'Preparation by race and category'], + 'bib_v5_production_ranges' => ['fr' => 'Plages existantes', 'en' => 'Existing ranges'], + 'bib_v5_production_color' => ['fr' => 'Couleur du dossard', 'en' => 'Bib colour'], + 'bib_v5_production_questions' => ['fr' => 'Questions de production', 'en' => 'Production questions'], + 'bib_v5_production_to_define' => ['fr' => 'À définir', 'en' => 'To be defined'], + 'bib_v5_production_status' => ['fr' => 'À préparer', 'en' => 'To prepare'], + 'bib_v5_operations_intro' => ['fr' => 'Contrôlez les anomalies et préparez les documents pour la distribution.', 'en' => 'Review anomalies and prepare distribution documents.'], + 'bib_v5_settings_intro' => ['fr' => 'Gérez les règles qui s’appliquent à l’ensemble de l’événement.', 'en' => 'Manage rules that apply to the entire event.'], 'bib_v4_event_config_title' => ['fr' => "Configuration globale pour l'assignation de dossard", 'en' => 'Global bib assignment settings'], 'bib_v4_event_config_inter_epr_on' => ['fr' => 'Inter épreuve', 'en' => 'Inter-race'], 'bib_v4_anomalies_nav_todo' => ['fr' => 'Élément à valider', 'en' => 'Item to review'], @@ -4500,16 +4535,37 @@ function renderBibAssignActions($epr_id, $eve_id, $strLangue, $infoBib, $blnAuto ob_start(); ?>