The 6 px mode frame around the event screen read as a dashed box that narrowed the work surface, and the screen stopped at the 87rem page width. The event screen now spans the window; the mode band under the app header, the header label and the pill beside « Modifier » carry the mode. The event list drops both « Collisions cumulées » columns, which repeated a measure the proposals screen already shows: 7 columns, not 9. Checked: node 4009, browser 872, long 105; full width at 1366 and 1920. --- FR --- [IMP] interface : événement pleine fenêtre, sans cadre, liste allégée Le cadre de mode de 6 px autour de l'écran d'événement se lisait comme un encadré pointillé qui rétrécissait la surface, et l'écran s'arrêtait à 87rem. L'écran de l'événement occupe la fenêtre ; la bande sous le bandeau, le libellé du bandeau et la pastille près de « Modifier » portent le mode. La liste des événements perd ses deux colonnes « Collisions cumulées », déjà montrées par les propositions : 7 colonnes au lieu de 9. Vérifié : node 4009, navigateur 872, long 105 ; pleine largeur à 1366 et 1920. Assisted-by: Claude Opus 5.5
66 lines
2.8 KiB
JavaScript
66 lines
2.8 KiB
JavaScript
// © 2026 TechnoLibre (http://www.technolibre.ca)
|
|
// License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl)
|
|
|
|
// La clé du libellé de mode (§ 8.4, § 8.5), que lisent le bandeau, la bande
|
|
// de mode et la barre de l'événement : aucune sans événement ; le plan
|
|
// bloqué avant le mode, qu'il force en lecture ; sinon le mode de la séance. Et la clé de l'annonce de
|
|
// format du bandeau (§ 18.6), une par annonce de la séance.
|
|
import assert from 'node:assert/strict';
|
|
import { describe, test } from '../../test/lanceur.js';
|
|
import { TABLE as COQUILLE } from './libelles/coquille.js';
|
|
import { cleAnnonceFormat, cleDeMode } from './mode.js';
|
|
|
|
// Un EtatSeance réduit à ce que lit cleDeMode.
|
|
const etat = (mode, etatDuPlan, annonceFormat = null) => ({
|
|
mode,
|
|
evenement: etatDuPlan === null ? null : { base: 'bal', id: 'evt-1', nom: 'Bal', etat: etatDuPlan, revision: 1, annonceFormat },
|
|
});
|
|
|
|
describe('cleDeMode (§ 8.4)', () => {
|
|
test('null sans événement, dans les deux modes', () => {
|
|
assert.equal(cleDeMode(etat('lecture', null)), null);
|
|
assert.equal(cleDeMode(etat('ecriture', null)), null);
|
|
});
|
|
|
|
test('un plan bloqué rend coquille.mode.bloque, quel que soit le mode', () => {
|
|
assert.equal(cleDeMode(etat('lecture', 'bloque')), 'coquille.mode.bloque');
|
|
assert.equal(cleDeMode(etat('ecriture', 'bloque')), 'coquille.mode.bloque');
|
|
});
|
|
|
|
test('sinon le mode de la séance, pour chaque état non bloqué', () => {
|
|
const etats = ['brouillon', 'propose', 'retenu'];
|
|
assert.ok(etats.length > 0);
|
|
for (const etatDuPlan of etats) {
|
|
assert.equal(cleDeMode(etat('lecture', etatDuPlan)), 'coquille.mode.lecture', etatDuPlan);
|
|
assert.equal(cleDeMode(etat('ecriture', etatDuPlan)), 'coquille.mode.ecriture', etatDuPlan);
|
|
}
|
|
});
|
|
|
|
test('chaque clé rendue a son texte dans la table de la coquille', () => {
|
|
for (const cle of ['coquille.mode.lecture', 'coquille.mode.ecriture', 'coquille.mode.bloque']) {
|
|
assert.equal(typeof COQUILLE.get(cle), 'string', cle);
|
|
}
|
|
});
|
|
});
|
|
|
|
describe('cleAnnonceFormat (§ 18.6)', () => {
|
|
test('null sans événement, ou au format courant', () => {
|
|
assert.equal(cleAnnonceFormat(etat('lecture', null)), null);
|
|
assert.equal(cleAnnonceFormat(etat('lecture', 'brouillon')), null);
|
|
});
|
|
|
|
test('une clé par annonce, chacune avec son texte', () => {
|
|
const cas = [
|
|
['plusRecent', 'coquille.format.plusRecent'],
|
|
['plusAncien', 'coquille.format.plusAncien'],
|
|
];
|
|
for (const [annonce, cle] of cas) {
|
|
assert.equal(cleAnnonceFormat(etat('lecture', 'brouillon', annonce)), cle, annonce);
|
|
assert.equal(typeof COQUILLE.get(cle), 'string', cle);
|
|
}
|
|
});
|
|
|
|
test('une annonce inconnue lève RangeError', () => {
|
|
assert.throws(() => cleAnnonceFormat(etat('lecture', 'brouillon', 'plusVieux')), RangeError);
|
|
});
|
|
});
|