The quality page gets its section, its data and its building blocks. The engine details a placement (percentages floored, worst case as a count, three table-mix counts with their orders, per-round floors); a Qualité tab, loaded as its own chunk, follows the proposition the plan shows; charts and their twin tables share one component set. The search course goes to a companion file written only when propositions change, keyed by proposition identity, timestamp and placement fingerprint, so a gesture costs what it did and a stale course never reaches the page. Checked: node 4929, navigateur 1016, node-long 128; main chunk 689 ko. --- FR --- [ADD] base de la qualité : onglet, détail, graphiques, compagnon La page de qualité reçoit sa section, ses données et ses briques. Le moteur détaille un placement (pourcentages arrondis vers le bas, pire cas en compte, trois comptes du mélange par table et leurs ordres, planchers par tour) ; un onglet Qualité, chargé à part, suit la proposition que montre le plan ; graphiques et tableaux jumeaux partagent leurs composants. La course de la recherche va dans un fichier compagnon écrit quand les propositions changent, clé : identité, horodatage, empreinte du placement ; un geste coûte ce qu'il coûtait, aucune course périmée. Vérifié : node 4929, navigateur 1016, longues 128 ; entrée à 689 ko. Assisted-by: Claude Opus 5.5
76 lines
3.1 KiB
JavaScript
76 lines
3.1 KiB
JavaScript
// © 2026 TechnoLibre (http://www.technolibre.ca)
|
|
// License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl)
|
|
|
|
// L'assemblage des textes des écrans (§ 14.6). Un composant n'écrit aucune
|
|
// chaîne visible en dur : il les lit par la traduction, dont les tables
|
|
// d'écran sont sous libelles/, une par écran, réunies ici dans l'ordre
|
|
// alphabétique de leurs fichiers ; aucune table n'importe cet assemblage.
|
|
//
|
|
// libelleProvenance, aUnLibelle et titreAvecVersion lisent en français la
|
|
// table de la coquille : le bandeau, le titre de la fenêtre, l'essai de
|
|
// démarrage et le livrable les appellent sans connaître la traduction.
|
|
import { creerTraduction } from '../application/traduction.js';
|
|
import { TABLE as ACCUEIL } from './libelles/accueil.js';
|
|
import { TABLE as BADGES } from './libelles/badges.js';
|
|
import { TABLE as COMMUNS } from './libelles/communs.js';
|
|
import { TABLE as COQUILLE } from './libelles/coquille.js';
|
|
import { TABLE as DIAGNOSTIC } from './libelles/diagnostic.js';
|
|
import { TABLE as EVENEMENT } from './libelles/evenement.js';
|
|
import { TABLE as FEUILLES } from './libelles/feuilles.js';
|
|
import { TABLE as GENERATION } from './libelles/generation.js';
|
|
import { TABLE as GRAPHIQUES } from './libelles/graphiques.js';
|
|
import { TABLE as IMPORT } from './libelles/import.js';
|
|
import { TABLE as IMPRESSION } from './libelles/impression.js';
|
|
import { TABLE as PARTICIPANTS } from './libelles/participants.js';
|
|
import { TABLE as PLAN } from './libelles/plan.js';
|
|
import { TABLE as PROPOSITIONS } from './libelles/propositions.js';
|
|
import { TABLE as QUALITE } from './libelles/qualite.js';
|
|
import { TABLE as RACCOURCIS } from './libelles/raccourcis.js';
|
|
import { TABLE as TABLES } from './libelles/tables.js';
|
|
|
|
/** Les tables de libelles/, dans l'ordre alphabétique de leurs fichiers. */
|
|
export const TABLES_INTERFACE = Object.freeze([
|
|
ACCUEIL,
|
|
BADGES,
|
|
COMMUNS,
|
|
COQUILLE,
|
|
DIAGNOSTIC,
|
|
EVENEMENT,
|
|
FEUILLES,
|
|
GENERATION,
|
|
GRAPHIQUES,
|
|
IMPORT,
|
|
IMPRESSION,
|
|
PARTICIPANTS,
|
|
PLAN,
|
|
PROPOSITIONS,
|
|
QUALITE,
|
|
RACCOURCIS,
|
|
TABLES,
|
|
]);
|
|
|
|
const { t } = creerTraduction(TABLES_INTERFACE);
|
|
|
|
// La clé de la provenance d'un mode de Vite (§ 18.6). La table est une Map :
|
|
// elle ne répond qu'aux clés qu'on y a posées, et un mode nommé comme une
|
|
// propriété héritée d'Object n'en trouve aucune.
|
|
const cleProvenance = (mode) => `coquille.provenance.${mode}`;
|
|
|
|
// Vrai quand le mode a un libellé déclaré. Comparer libelleProvenance(mode) à
|
|
// mode ne le dit pas : « livraison » et « documentation » ont un libellé
|
|
// identique à leur nom.
|
|
export function aUnLibelle(mode) {
|
|
return COQUILLE.has(cleProvenance(mode));
|
|
}
|
|
|
|
// Libellé de la provenance pour un mode de Vite. Un mode sans libellé, comme
|
|
// celui d'un « vite build » lancé sans --mode, s'affiche sous son propre nom.
|
|
export function libelleProvenance(mode) {
|
|
return aUnLibelle(mode) ? t(cleProvenance(mode)) : mode;
|
|
}
|
|
|
|
// Nom de l'application suivi de la version affichée : texte du bandeau et
|
|
// titre de la fenêtre (§ 18.6).
|
|
export function titreAvecVersion(version) {
|
|
return t('coquille.titre', { version });
|
|
}
|