-- Module documentation MS1 (overlay paginé) — distinct de la table info / info_aide.
-- Terminologie : doc_mod = module, doc_page = page HTML, doc_anchor = clé d'appel.
-- Exécuter sur la BD client (inscription).

-- Réimport propre (optionnel)
-- DELETE FROM doc_page WHERE doc_mod_clef = 'bib_assignment';
-- DELETE FROM doc_anchor WHERE doc_mod_clef = 'bib_assignment';
-- DELETE FROM doc_mod WHERE doc_mod_clef = 'bib_assignment';

-- ---------------------------------------------------------------------------
-- doc_mod — registre des modules de documentation
-- ---------------------------------------------------------------------------
CREATE TABLE IF NOT EXISTS `doc_mod` (
  `pk_doc_mod` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `doc_mod_clef` varchar(45) NOT NULL,
  `doc_mod_prg` varchar(100) NOT NULL DEFAULT 'global',
  `doc_mod_titre` varchar(255) NOT NULL DEFAULT '',
  `doc_mod_actif` tinyint(1) NOT NULL DEFAULT '1',
  `doc_mod_tri` int(10) unsigned NOT NULL DEFAULT '0',
  `doc_mod_creation` datetime DEFAULT NULL,
  `doc_mod_maj` datetime DEFAULT NULL,
  PRIMARY KEY (`pk_doc_mod`),
  UNIQUE KEY `uk_doc_mod` (`doc_mod_clef`,`doc_mod_prg`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

-- ---------------------------------------------------------------------------
-- doc_page — pages HTML (équivalent info_texte + info_aide, mais long / riche)
-- ---------------------------------------------------------------------------
CREATE TABLE IF NOT EXISTS `doc_page` (
  `pk_doc_page` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `doc_mod_clef` varchar(45) NOT NULL,
  `doc_page_clef` varchar(45) NOT NULL,
  `doc_langue` varchar(2) NOT NULL DEFAULT 'fr',
  `doc_titre` varchar(255) NOT NULL DEFAULT '',
  `doc_sous_titre` varchar(255) NOT NULL DEFAULT '',
  `doc_html` text NOT NULL,
  `doc_prg` varchar(100) NOT NULL DEFAULT 'global',
  `doc_tri` int(10) unsigned NOT NULL DEFAULT '0',
  `doc_actif` tinyint(1) NOT NULL DEFAULT '1',
  `doc_creation` datetime DEFAULT NULL,
  `doc_maj` datetime DEFAULT NULL,
  PRIMARY KEY (`pk_doc_page`),
  UNIQUE KEY `uk_doc_page` (`doc_page_clef`,`doc_langue`,`doc_prg`),
  KEY `idx_doc_mod` (`doc_mod_clef`,`doc_langue`,`doc_prg`,`doc_tri`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

-- ---------------------------------------------------------------------------
-- doc_anchor — clé d'appel (comme info_clef) → module à ouvrir
-- ---------------------------------------------------------------------------
CREATE TABLE IF NOT EXISTS `doc_anchor` (
  `pk_doc_anchor` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `doc_anchor_clef` varchar(45) NOT NULL,
  `doc_mod_clef` varchar(45) NOT NULL,
  `doc_prg` varchar(100) NOT NULL DEFAULT 'global',
  `doc_actif` tinyint(1) NOT NULL DEFAULT '1',
  `doc_creation` datetime DEFAULT NULL,
  PRIMARY KEY (`pk_doc_anchor`),
  UNIQUE KEY `uk_doc_anchor` (`doc_anchor_clef`,`doc_prg`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

-- ---------------------------------------------------------------------------
-- Données initiales — assignation de dossard (bib_assignment)
-- ---------------------------------------------------------------------------

INSERT INTO `doc_mod` (`doc_mod_clef`, `doc_mod_prg`, `doc_mod_titre`, `doc_mod_actif`, `doc_mod_tri`, `doc_mod_creation`)
VALUES ('bib_assignment', 'compte.php', 'Assignation de dossard', 1, 10, NOW());

INSERT INTO `doc_anchor` (`doc_anchor_clef`, `doc_mod_clef`, `doc_prg`, `doc_actif`, `doc_creation`)
VALUES ('bib_v4_assign_doc', 'bib_assignment', 'compte.php', 1, NOW());

-- FR — pages du guide (contenu composé depuis les clés info bib_v4_*)
INSERT INTO `doc_page` (`doc_mod_clef`, `doc_page_clef`, `doc_langue`, `doc_titre`, `doc_sous_titre`, `doc_html`, `doc_prg`, `doc_tri`, `doc_actif`, `doc_creation`) VALUES
('bib_assignment', 'bib_doc_overview', 'fr', 'Assignation de dossard', 'Vue d''ensemble du module',
'<article class="ms1-doc-article"><p>Définissez les <strong>séquences de dossards</strong> et assignez les numéros aux participants inscrits sur chaque épreuve.</p><h3>À quoi sert ce bloc ?</h3><p>Ce panneau regroupe tout ce qui touche l''<strong>assignation des dossards</strong> : création des séquences, assignation groupée (batch), assignation automatique à l''inscription et réinitialisation.</p><h3>Workflow recommandé</h3><ol><li>Créer une ou plusieurs <strong>séquences</strong> (numéros de début et de fin).</li><li>Optionnel : activer l''<strong>assignation automatique</strong> pour les nouvelles inscriptions.</li><li>Pour les participants déjà inscrits sans dossard : <strong>Assigner par séquence</strong>, puis <strong>Simuler</strong>, puis <strong>GO</strong>.</li></ol><blockquote>Utilisez toujours <strong>Simuler</strong> avant <strong>GO</strong> pour vérifier le résultat sans modifier la base de données.</blockquote></article>',
'compte.php', 10, 1, NOW()),
('bib_assignment', 'bib_doc_sequences', 'fr', 'Séquences de dossards', 'Tableau des séquences',
'<article class="ms1-doc-article"><p>Chaque ligne du tableau représente une <strong>séquence de dossards</strong> (plage de numéros disponibles pour l''épreuve).</p><h3>Colonnes et actions</h3><table><tr><th>Icône œil</th><td>Voir la grille des dossards de cette séquence (occupés / libres).</td></tr><tr><th>Début</th><td>Premier numéro de la séquence.</td></tr><tr><th>Fin</th><td>Dernier numéro de la séquence.</td></tr><tr><th>OK</th><td>Enregistrer cette séquence après modification.</td></tr><tr><th>Suppr.</th><td>Supprimer la séquence.</td></tr><tr><th>Dernier</th><td>Dernier dossard assigné dans la séquence.</td></tr><tr><th>Utilisé</th><td>Nombre de dossards déjà assignés.</td></tr><tr><th>Dispo</th><td>Dossards encore disponibles dans la séquence.</td></tr></table><h3>+ Ajouter</h3><p>Ajoute une nouvelle séquence de dossards pour cette épreuve. Indiquez le numéro de <strong>début</strong> et de <strong>fin</strong>, puis cliquez <strong>OK</strong>.</p><p>La case à gauche de chaque ligne permet de <strong>sélectionner</strong> la séquence pour l''assignation batch ou l''assignation automatique.</p></article>',
'compte.php', 20, 1, NOW()),
('bib_assignment', 'bib_doc_batch', 'fr', 'Assigner par séquence', 'Mode batch — Simuler puis GO',
'<article class="ms1-doc-article"><p>Le bouton <strong>Assigner par séquence</strong> ouvre le mode batch : il assigne tous les participants <em>sans dossard</em> en une seule opération.</p><h3>Étapes</h3><ol><li><strong>Cochez</strong> une ou plusieurs séquences de dossards.</li><li>Choisissez l''<strong>ordre d''assignation</strong> : critère pour trier les participants avant d''attribuer les dossards (nom, date d''inscription, équipe, etc.).</li><li><strong>Simuler</strong> — affiche qui recevrait quel dossard sans modifier la base de données.</li><li><strong>GO</strong> — lance l''assignation batch pour de vrai.</li></ol><p>Le résumé (disponibles / à assigner / manquants) s''affiche après simulation ou GO.</p><h3>Réinitialiser</h3><p>Retire les dossards déjà assignés pour les séquences concernées. <strong>Attention :</strong> vérifiez l''impact avant de confirmer. Ce bouton n''apparaît que s''il existe déjà des dossards assignés sur l''épreuve.</p></article>',
'compte.php', 30, 1, NOW()),
('bib_assignment', 'bib_doc_auto', 'fr', 'Assignation automatique', 'Dossard à chaque nouvelle inscription',
'<article class="ms1-doc-article"><p><strong>Assignation automatique</strong> : active l''assignation d''un dossard à chaque nouvelle inscription, en utilisant les séquences choisies.</p><h3>Activation</h3><ol><li>Cliquez <strong>Assignation automatique</strong> (ou <strong>Auto — configurer</strong> si déjà actif).</li><li>Cochez les séquences à utiliser pour l''assignation auto.</li><li>Cliquez <strong>Accepter</strong> pour enregistrer la configuration.</li></ol><p>Le badge <strong>Auto actif</strong> confirme que l''assignation automatique est activée pour cette épreuve.</p><h3>Annuler / Désactiver</h3><ul><li><strong>Annuler</strong> — quitte le mode édition sans enregistrer.</li><li><strong>Désactiver l''auto</strong> — désactive l''assignation automatique. Les séquences de dossards restent en place.</li></ul><blockquote>L''auto et le batch peuvent coexister : l''auto gère les nouveaux inscrits ; le batch rattrape les participants sans dossard.</blockquote></article>',
'compte.php', 40, 1, NOW()),
('bib_assignment', 'bib_doc_solo', 'fr', 'Épreuve individuelle', 'Participants solo',
'<article class="ms1-doc-article"><p>Sur une épreuve <strong>individuelle</strong> (solo), chaque participant reçoit son propre numéro de dossard.</p><h3>Ordre d''assignation</h3><p>Lors d''un assignation par séquence, choisissez le critère de tri dans la liste <strong>Ordre d''assignation</strong> : nom de famille, prénom, date d''inscription, date de naissance, etc.</p><p>L''option liée au <strong>nom d''équipe</strong> est masquée sur une épreuve solo — elle n''a pas de sens sans épreuve en équipe.</p><h3>Grille des dossards</h3><p>L''icône <strong>œil</strong> sur une séquence ouvre la grille visuelle. Un numéro peut y être modifié manuellement ; le système vérifie les doublons sur l''événement.</p></article>',
'compte.php', 50, 1, NOW()),
('bib_assignment', 'bib_doc_equipe', 'fr', 'Épreuve en équipe', 'Dossards individuels vs 1 équipe = 1 dossard',
'<article class="ms1-doc-article"><p>Sur une épreuve <strong>en équipe</strong>, choisissez la <strong>méthode d''assignation</strong> dans le panneau de gauche, <em>avant le premier dossard assigné</em>. Le choix est verrouillé ensuite.</p><h3>Dossards individuels</h3><p>Chaque membre de l''équipe reçoit un numéro distinct, comme en solo. L''ordre d''assignation <strong>Nom d''équipe</strong> devient disponible pour grouper l''assignation.</p><h3>1 équipe = 1 dossard</h3><p>Tous les membres d''une équipe partagent le <strong>même numéro</strong>. L''assignation batch traite les équipes, pas chaque personne individuellement.</p><blockquote>Changer de méthode après des dossards assignés nécessite une réinitialisation — planifiez le mode avant le premier GO.</blockquote><p>La grille des dossards (icône œil) regroupe visuellement les membres par équipe pour faciliter la lecture.</p></article>',
'compte.php', 60, 1, NOW());

-- EN — contenu aligné sur les clés info bib_v4_*
INSERT INTO `doc_page` (`doc_mod_clef`, `doc_page_clef`, `doc_langue`, `doc_titre`, `doc_sous_titre`, `doc_html`, `doc_prg`, `doc_tri`, `doc_actif`, `doc_creation`) VALUES
('bib_assignment', 'bib_doc_overview', 'en', 'Bib assignment', 'Module overview',
'<article class="ms1-doc-article"><p>Define <strong>bib sequences</strong> and assign numbers to registered participants for each race.</p><h3>Recommended workflow</h3><ol><li>Create one or more <strong>sequences</strong> (start and end numbers).</li><li>Optionally enable <strong>automatic assignment</strong> for new registrations.</li><li>For participants already without a bib: <strong>Assign by sequence</strong>, then <strong>Simulate</strong>, then <strong>GO</strong>.</li></ol><blockquote>Always <strong>Simulate</strong> before <strong>GO</strong> to preview without changing the database.</blockquote></article>',
'compte.php', 10, 1, NOW()),
('bib_assignment', 'bib_doc_sequences', 'en', 'Bib sequences', 'Sequence table',
'<article class="ms1-doc-article"><p>Each row is a <strong>bib sequence</strong> (range of numbers for this race).</p><table><tr><th>Eye icon</th><td>View the bib grid for this sequence.</td></tr><tr><th>Start / End</th><td>First and last number in the sequence.</td></tr><tr><th>OK</th><td>Save this sequence.</td></tr><tr><th>Delete</th><td>Remove the sequence.</td></tr><tr><th>Last / Used / Avail.</th><td>Statistics: last assigned bib, count used, count available.</td></tr></table><h3>+ Add</h3><p>Adds a new bib sequence. Enter start and end numbers, then click <strong>OK</strong>.</p></article>',
'compte.php', 20, 1, NOW()),
('bib_assignment', 'bib_doc_batch', 'en', 'Assign by sequence', 'Batch mode — Simulate then GO',
'<article class="ms1-doc-article"><p><strong>Assign by sequence</strong> opens batch mode: assign all participants <em>without a bib</em> in one operation.</p><ol><li>Check one or more sequences.</li><li>Choose <strong>Assignment order</strong> (name, registration date, team, etc.).</li><li><strong>Simulate</strong> — preview without saving.</li><li><strong>GO</strong> — run the batch assignment.</li></ol><p><strong>Reset</strong> removes assigned bibs. Check the impact before confirming.</p></article>',
'compte.php', 30, 1, NOW()),
('bib_assignment', 'bib_doc_auto', 'en', 'Automatic assignment', 'Bib on each new registration',
'<article class="ms1-doc-article"><p><strong>Automatic assignment</strong> assigns a bib on each new registration using the selected sequences.</p><p>Click <strong>Accept</strong> to save. The <strong>Auto on</strong> badge confirms the mode is active.</p><p><strong>Disable auto</strong> turns off automatic assignment but keeps bib sequences.</p></article>',
'compte.php', 40, 1, NOW()),
('bib_assignment', 'bib_doc_solo', 'en', 'Individual race', 'Solo participants',
'<article class="ms1-doc-article"><p>On an <strong>individual</strong> race, each participant gets their own bib number. Team name sort order is hidden on solo races.</p></article>',
'compte.php', 50, 1, NOW()),
('bib_assignment', 'bib_doc_equipe', 'en', 'Team race', 'Individual bibs vs one bib per team',
'<article class="ms1-doc-article"><p>On a <strong>team</strong> race, choose the assignment method <em>before the first bib</em> — then it is locked.</p><ul><li><strong>Individual bibs</strong> — each member gets a number.</li><li><strong>1 team = 1 bib</strong> — all members share the same number.</li></ul></article>',
'compte.php', 60, 1, NOW());
