Compare commits

...

2 Commits

Author SHA1 Message Date
5c53b475b2 Fusionne la terminologie Block en mode Twice 2026-04-13 20:55:22 +02:00
0db53a42db Uniformise le terme Block en mode Twice 2026-04-13 20:52:38 +02:00
2 changed files with 17 additions and 18 deletions

31
app.js
View File

@@ -32,7 +32,7 @@ const PRESETS = {
const MODES = { const MODES = {
twice: { twice: {
label: "ChessCubing Twice", label: "ChessCubing Twice",
subtitle: "Le gagnant du cube ouvre la partie suivante.", subtitle: "Le gagnant du cube ouvre le Block suivant.",
}, },
time: { time: {
label: "ChessCubing Time", label: "ChessCubing Time",
@@ -298,9 +298,9 @@ function initSetupPage() {
const timeImpact = const timeImpact =
mode === "time" mode === "time"
? `Chronos cumules de ${formatClock(timeInitialMs)} par joueur, ajustes apres chaque phase cube avec plafond de 120 s pris en compte. Aucun temps par coup en mode Time.` ? `Chronos cumules de ${formatClock(timeInitialMs)} par joueur, ajustes apres chaque phase cube avec plafond de 120 s pris en compte. Aucun temps par coup en mode Time.`
: "Le gagnant du cube commence la partie suivante, avec double coup V2 possible."; : "Le gagnant du cube commence le Block suivant, avec double coup V2 possible.";
const timingText = moveLimitActive const timingText = moveLimitActive
? `Temps configures : partie ${formatClock(blockDurationMs)}, coup ${formatClock(moveLimitMs)}.` ? `Temps configures : Block ${formatClock(blockDurationMs)}, coup ${formatClock(moveLimitMs)}.`
: `Temps configures : Block ${formatClock(blockDurationMs)}, temps de chaque joueur ${formatClock(timeInitialMs)}.`; : `Temps configures : Block ${formatClock(blockDurationMs)}, temps de chaque joueur ${formatClock(timeInitialMs)}.`;
const quotaText = moveLimitActive const quotaText = moveLimitActive
? `Quota actif : ${quota} coups par joueur.` ? `Quota actif : ${quota} coups par joueur.`
@@ -325,8 +325,7 @@ function initSetupPage() {
document.body.classList.toggle("time-setup-mode", !moveLimitActive); document.body.classList.toggle("time-setup-mode", !moveLimitActive);
if (blockDurationLabel instanceof HTMLElement) { if (blockDurationLabel instanceof HTMLElement) {
blockDurationLabel.textContent = blockDurationLabel.textContent = "Temps du Block (minutes)";
blockLabel === "Block" ? "Temps du Block (minutes)" : "Temps partie (minutes)";
} }
syncCompetitionFields(); syncCompetitionFields();
@@ -742,7 +741,7 @@ function initChronoPage() {
document.body.classList.toggle("time-mode", timeMode); document.body.classList.toggle("time-mode", timeMode);
refs.title.textContent = match.config.matchLabel; refs.title.textContent = match.config.matchLabel;
refs.subtitle.textContent = `${blockHeading} - ${MODES[match.config.mode].label} - ${renderModeContext(match)}`; refs.subtitle.textContent = `${blockHeading} - ${MODES[match.config.mode].label} - ${renderModeContext(match)}`;
refs.blockTimerLabel.textContent = timeMode ? "Temps Block" : "Temps partie"; refs.blockTimerLabel.textContent = "Temps Block";
refs.blockTimer.textContent = formatClock(match.blockRemainingMs); refs.blockTimer.textContent = formatClock(match.blockRemainingMs);
refs.moveTimer.textContent = usesMoveLimit(match) ? formatClock(match.moveRemainingMs) : "--:--"; refs.moveTimer.textContent = usesMoveLimit(match) ? formatClock(match.moveRemainingMs) : "--:--";
refs.moveTimerCard.hidden = timeMode; refs.moveTimerCard.hidden = timeMode;
@@ -775,8 +774,8 @@ function initChronoPage() {
refs.spineLabel.textContent = timeMode ? "Etat du Block" : "Pret"; refs.spineLabel.textContent = timeMode ? "Etat du Block" : "Pret";
refs.spineHeadline.textContent = blockHeading; refs.spineHeadline.textContent = blockHeading;
refs.spineText.textContent = refs.spineText.textContent =
"Demarrez la partie, puis laissez uniquement les deux grandes zones aux joueurs. La page cube prendra automatiquement le relais."; "Demarrez le Block, puis laissez uniquement les deux grandes zones aux joueurs. La page cube prendra automatiquement le relais.";
refs.primaryButton.textContent = timeMode ? "Demarrer le Block" : "Demarrer la partie"; refs.primaryButton.textContent = "Demarrer le Block";
refs.arbiterStatus.textContent = `${blockHeading} pret. ${playerName(match, match.currentTurn)} commencera.`; refs.arbiterStatus.textContent = `${blockHeading} pret. ${playerName(match, match.currentTurn)} commencera.`;
} }
@@ -1256,10 +1255,10 @@ function initCubePage() {
key: `twice:${match.blockNumber}:${match.cube.round}:${white}:${black}`, key: `twice:${match.blockNumber}:${match.cube.round}:${white}:${black}`,
title: isTie ? "Egalite parfaite" : "Résumé du cube", title: isTie ? "Egalite parfaite" : "Résumé du cube",
winner: winner ? playerName(match, winner) : "Egalite parfaite", winner: winner ? playerName(match, winner) : "Egalite parfaite",
outcome: isTie ? "Rejouer la phase cube" : `${playerName(match, winner)} ouvrira la partie suivante`, outcome: isTie ? "Rejouer la phase cube" : `${playerName(match, winner)} ouvrira le Block suivant`,
summary: isTie summary: isTie
? "Le règlement Twice impose de rejouer immédiatement la phase cube." ? "Le règlement Twice impose de rejouer immédiatement la phase cube."
: "Validez ce résultat pour préparer la partie suivante.", : "Validez ce résultat pour preparer le Block suivant.",
actionLabel: isTie ? "Rejouer la phase cube" : "Appliquer et ouvrir la page chrono", actionLabel: isTie ? "Rejouer la phase cube" : "Appliquer et ouvrir la page chrono",
whiteName, whiteName,
blackName, blackName,
@@ -1353,7 +1352,7 @@ function initCubePage() {
refs.centerValue.textContent = "Phase cube complete"; refs.centerValue.textContent = "Phase cube complete";
refs.spineLabel.textContent = "Suite"; refs.spineLabel.textContent = "Suite";
refs.spineHeadline.textContent = "Ouvrir la page chrono"; refs.spineHeadline.textContent = "Ouvrir la page chrono";
refs.spineText.textContent = "Appliquer le resultat du cube pour preparer la partie suivante."; refs.spineText.textContent = "Appliquer le resultat du cube pour preparer le Block suivant.";
} }
refs.primaryButton.textContent = "Voir le résumé du cube"; refs.primaryButton.textContent = "Voir le résumé du cube";
refs.helpStatus.textContent = refs.spineText.textContent; refs.helpStatus.textContent = refs.spineText.textContent;
@@ -1467,7 +1466,7 @@ function createMatch(config) {
logEvent( logEvent(
newMatch, newMatch,
usesMoveLimit(config.mode) usesMoveLimit(config.mode)
? `Match cree en mode ${MODES[config.mode].label}, cadence ${PRESETS[config.preset].label}, partie ${formatClock(config.blockDurationMs)} et coup ${formatClock(config.moveLimitMs)}.` ? `Match cree en mode ${MODES[config.mode].label}, cadence ${PRESETS[config.preset].label}, Block ${formatClock(config.blockDurationMs)} et coup ${formatClock(config.moveLimitMs)}.`
: `Match cree en mode ${MODES[config.mode].label}, cadence ${PRESETS[config.preset].label}, Block ${formatClock(config.blockDurationMs)} et chrono initial ${formatClock(getTimeInitialMs(config))} par joueur, sans temps par coup.`, : `Match cree en mode ${MODES[config.mode].label}, cadence ${PRESETS[config.preset].label}, Block ${formatClock(config.blockDurationMs)} et chrono initial ${formatClock(getTimeInitialMs(config))} par joueur, sans temps par coup.`,
); );
logEvent(newMatch, `Les Blancs commencent ${formatBlockHeading(config, 1)}.`); logEvent(newMatch, `Les Blancs commencent ${formatBlockHeading(config, 1)}.`);
@@ -1782,7 +1781,7 @@ function applyCubeOutcome(storedMatch) {
function prepareNextTwiceBlock(storedMatch, winner) { function prepareNextTwiceBlock(storedMatch, winner) {
const hadDouble = storedMatch.lastMover !== winner && storedMatch.lastMover !== null; const hadDouble = storedMatch.lastMover !== winner && storedMatch.lastMover !== null;
logEvent(storedMatch, `${playerName(storedMatch, winner)} gagne la phase cube et ouvrira la partie suivante.`); logEvent(storedMatch, `${playerName(storedMatch, winner)} gagne la phase cube et ouvrira le Block suivant.`);
storedMatch.blockNumber += 1; storedMatch.blockNumber += 1;
storedMatch.phase = "block"; storedMatch.phase = "block";
@@ -2264,15 +2263,15 @@ function getTimeInitialMs(matchOrConfig) {
} }
function getBlockLabel(matchOrConfig) { function getBlockLabel(matchOrConfig) {
return isTimeMode(matchOrConfig) ? "Block" : "Partie"; return "Block";
} }
function getBlockPhrase(matchOrConfig) { function getBlockPhrase(matchOrConfig) {
return isTimeMode(matchOrConfig) ? "Le Block" : "La partie"; return "Le Block";
} }
function getBlockGenitivePhrase(matchOrConfig) { function getBlockGenitivePhrase(matchOrConfig) {
return isTimeMode(matchOrConfig) ? "du Block" : "de la partie"; return "du Block";
} }
function formatBlockHeading(matchOrConfig, blockNumber) { function formatBlockHeading(matchOrConfig, blockNumber) {

View File

@@ -129,7 +129,7 @@
<input type="radio" name="mode" value="twice" checked /> <input type="radio" name="mode" value="twice" checked />
<strong>ChessCubing Twice</strong> <strong>ChessCubing Twice</strong>
<span> <span>
Le gagnant du cube ouvre la partie suivante et peut obtenir un Le gagnant du cube ouvre le Block suivant et peut obtenir un
double coup V2. double coup V2.
</span> </span>
</label> </label>
@@ -169,7 +169,7 @@
<legend>Temps personnalisés</legend> <legend>Temps personnalisés</legend>
<div class="timing-grid"> <div class="timing-grid">
<label class="field"> <label class="field">
<span id="blockDurationLabel">Temps partie (minutes)</span> <span id="blockDurationLabel">Temps du Block (minutes)</span>
<input <input
name="blockMinutes" name="blockMinutes"
type="number" type="number"