The event list shows only the retained plan's redundancy gap and the id of the best proposal, yet its summaries still carried cumulative collisions and redundancy totals. They now carry what the list reads. The mode frame is gone from the screen, so its names go too: the mode surface component, the mode colour tokens and the bar's mode label are named for what they are. Values, pixels and captures are unchanged. Checked: node 4039, navigateur 884 with the walkthrough, node-long 105. --- FR --- [REF] écran d'événement : sans noms de cadre, résumés de liste réduits La liste des événements ne montre que l'écart de redondance du retenu et l'identifiant de la meilleure proposition, mais ses résumés portaient encore les collisions cumulées et les totaux de redondance. Ils portent désormais ce que la liste lit. Le cadre de mode a quitté l'écran, ses noms aussi : le composant de surface, les jetons de couleur du mode et le libellé de mode de la barre portent le nom de ce qu'ils sont. Valeurs, pixels et captures inchangés. Vérifié : node 4039, navigateur 884 avec le parcours, node-long 105. Assisted-by: Claude Opus 5.5
82 lines
4.3 KiB
JavaScript
82 lines
4.3 KiB
JavaScript
// © 2026 TechnoLibre (http://www.technolibre.ca)
|
|
// License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl)
|
|
|
|
// Les libellés de l'événement ouvert : son en-tête et son résumé chiffré,
|
|
// ses états, la bande de mode et la place fixe de sa barre, les phases de
|
|
// sa navigation, la reprise d'un verrou, ses avertissements, le support
|
|
// rompu (§ 8.3 à § 8.9, § 9, § 14.6). Chaque clé commence par
|
|
// « evenement. ». Une donnée qui désigne — un numéro, une séance, un
|
|
// instant, une date — n'entre dans aucun de ces textes : l'écran la pose
|
|
// dans son propre nœud, à côté. Les comptes du résumé, eux, entrent dans le
|
|
// leur, qui s'accorde au nombre et l'écrit par creerFormat.
|
|
import { creerFormat } from '../../application/format.js';
|
|
import { cite } from '../../application/libelles/aides.js';
|
|
|
|
// Un compte en chiffres, par le format de la traduction, suivi de son nom au
|
|
// singulier jusqu'à un, au pluriel au-delà.
|
|
const compteEcrit = (n, singulier, pluriel, texte) => `${creerFormat(texte).nombre(n)} ${n <= 1 ? singulier : pluriel}`;
|
|
|
|
export const TABLE = new Map([
|
|
// --- L'en-tête et les états du plan (§ 9) -----------------------------------
|
|
['evenement.etat.titre', 'État du plan'],
|
|
['evenement.etat.brouillon', 'Brouillon'],
|
|
['evenement.etat.propose', 'Proposé'],
|
|
['evenement.etat.retenu', 'Retenu'],
|
|
['evenement.etat.bloque', 'Bloqué'],
|
|
|
|
// --- Le résumé chiffré de l'en-tête ------------------------------------------
|
|
['evenement.resume.participants', ({ participants }, texte) => compteEcrit(participants, 'participant', 'participants', texte)],
|
|
[
|
|
'evenement.resume.tables',
|
|
({ tables, sieges }, texte) =>
|
|
`${compteEcrit(tables, 'table', 'tables', texte)} \u{00B7} ${compteEcrit(sieges, 'siège', 'sièges', texte)}`,
|
|
],
|
|
['evenement.resume.tours', ({ tours }, texte) => compteEcrit(tours, 'tour', 'tours', texte)],
|
|
|
|
// --- La bande de mode, sous le bandeau (§ 8.4, § 8.5) ------------------------
|
|
// Chaque phrase cite la commande qui sort du mode par son propre libellé,
|
|
// sauf lectureSeule : devant un format plus récent, la place fixe n'offre
|
|
// aucune commande (§ 8.8), et la phrase n'en nomme aucune.
|
|
['evenement.bande.lecture', (_, texte) => `Rien ne change ; ${cite(texte('communs.commande.modifier'))} passe en écriture.`],
|
|
[
|
|
'evenement.bande.ecriture',
|
|
(_, texte) => `Chaque geste s\u{2019}enregistre aussitôt ; ${cite(texte('communs.commande.lecture'))} arrête l\u{2019}écriture.`,
|
|
],
|
|
[
|
|
'evenement.bande.bloque',
|
|
(_, texte) => `Rien ne change tant que le plan est bloqué ; ${cite(texte('communs.commande.debloquer'))} le rouvre.`,
|
|
],
|
|
['evenement.bande.lectureSeule', 'Rien ne change ; ce fichier ne s\u{2019}ouvre qu\u{2019}en lecture.'],
|
|
|
|
// --- Les phases de la navigation des sections ---------------------------------
|
|
['evenement.phase.preparer', 'Préparer'],
|
|
['evenement.phase.placer', 'Placer'],
|
|
['evenement.phase.produire', 'Produire'],
|
|
|
|
// --- La barre de l'événement et sa place fixe (§ 8.3, § 8.4, § 8.5) ------
|
|
['evenement.barre.commandes', 'Commandes de l\u{2019}événement'],
|
|
['evenement.commande.defaire', 'Défaire'],
|
|
['evenement.commande.refaire', 'Refaire'],
|
|
|
|
// --- La reprise d'un verrou dont la vie ne se prouve pas (§ 8.8) ----------
|
|
['evenement.verrou.titre', 'Le verrou qui tient cet événement'],
|
|
['evenement.verrou.seance', 'Séance'],
|
|
['evenement.verrou.depuis', 'Pris le'],
|
|
['evenement.verrou.inconnu', 'illisible'],
|
|
[
|
|
'evenement.verrou.avis',
|
|
"Reprendre ce verrou n'est sûr que si cette séance est arrêtée : deux séances qui écrivent le même événement se contrediraient.",
|
|
],
|
|
['evenement.verrou.confirmerReprise', 'Confirmer la reprise de ce verrou'],
|
|
|
|
// --- Les avertissements (§ 8.6, § 8.9, § 9) -------------------------------
|
|
['evenement.avertissements', 'Avertissements'],
|
|
['evenement.fautive.numero', 'Proposition n°'],
|
|
['evenement.fautive.rang', 'Proposition illisible, au rang'],
|
|
['evenement.derive.retenu', 'Placement retenu'],
|
|
['evenement.derive.proposition', 'Proposition n°'],
|
|
|
|
// --- Le support rompu (§ 8.6) ----------------------------------------------
|
|
['evenement.supportRompu.abandonner', 'Fermer sans écrire ailleurs'],
|
|
['evenement.supportRompu.confirmerAbandon', "Confirmer : fermer sans l'écrire ailleurs"],
|
|
]);
|