[ADD] interface: application shell — banner, sections, theme, about
The window showed only a banner; it now holds the application. App mounts
the session, the facade and the generation, settles the working folder
and lists its events before it reports ready, re-reading the list once a
question is answered or a refused determination succeeds. The banner
carries version, mode and the event list command; an open event shows its
sections in their first form; the theme follows the system at each start
and the operator's choice lasts the session; À propos names the build.
Errors are collected for a report, and Electron removes the session's
locks at exit.
Checked: 2189 node, 193 browser, 60 node-long; the Electron start check.
--- FR ---
[ADD] interface : coquille — bandeau, sections, thème, À propos
La fenêtre ne montrait qu'un bandeau ; elle tient désormais l'application.
App monte la séance, la façade et la génération, règle le dossier de
travail et liste ses événements avant de se dire prête, et relit la liste
une fois une question répondue ou une détermination refusée réussie. Le
bandeau porte version, mode et la commande de la liste ; un événement
ouvert montre ses sections dans leur première forme ; le thème suit le
système à chaque démarrage et le choix de l'opérateur vaut pour la séance ;
À propos nomme la construction. Les erreurs se collectent pour un
signalement, et Electron efface à la sortie les verrous de la séance.
Vérifié : 2189 node, 193 navigateur, 60 node-long ; démarrage d'Electron.
Assisted-by: Claude Opus 5.5
2026-10-07 07:22:05 -04:00
|
|
|
<!-- © 2026 TechnoLibre (http://www.technolibre.ca)
|
|
|
|
|
License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl) -->
|
|
|
|
|
|
|
|
|
|
<script>
|
[ADD] interface: propositions — ranked table, retain, clear
The operator chooses among the generated plans. The ranked table orders
propositions by the criteria of § 5.4 and shows, for encounters, the
minimum only — the mean is the same for every proposition at full tables
— with redundancy read through its sum. A proposition is retained or the
list cleared through named commands; clearing spares the retained one,
and a proposition that broke is shown apart, not ranked.
Checked: 2400 node and 406 browser tests.
--- FR ---
[ADD] interface : propositions — tableau classé, retenir, effacer
L'opérateur choisit parmi les plans générés. Le tableau classé ordonne les
propositions selon les critères du § 5.4 et ne montre, pour les
rencontres, que le minimum — la moyenne est la même pour toute
proposition à tables pleines —, la redondance se lisant par sa somme. Une
proposition se retient, ou la liste s'efface, par des commandes nommées ;
effacer épargne la retenue, et une proposition abîmée se montre à part,
hors classement.
Vérifié : 2400 node et 406 navigateur.
Assisted-by: Claude Opus 5.5
2026-10-07 09:10:39 -04:00
|
|
|
// La section des propositions (§ 2.1 étape 10, § 5.7, § 9) : la phrase de
|
|
|
|
|
// l'ordre du classement, le tableau, et la commande qui efface la liste en
|
|
|
|
|
// épargnant le retenu. Regarder n'écrit jamais (§ 8.4) : le tableau se lit
|
|
|
|
|
// en lecture et sur un plan bloqué, où la séance refuse elle-même
|
|
|
|
|
// « Retenir » et « Effacer », le refus posé à côté du bouton.
|
|
|
|
|
//
|
|
|
|
|
// La table d'évaluation se lit dans la charge de l'état observable, par
|
|
|
|
|
// evaluation (modele.js) : une seule mesure, celle d'evaluer (A6), refaite
|
|
|
|
|
// à chaque charge écrite ; les indicateurs du retenu suivent donc
|
|
|
|
|
// l'ajustement (§ 2.1 étape 11).
|
|
|
|
|
//
|
|
|
|
|
// « Voir sur le plan » demande la proposition au plan par l'état de
|
|
|
|
|
// navigation, sans écriture, et ouvre la section du plan ; voir(null) y
|
|
|
|
|
// montre le retenu. « Retenir » exécute retenirProposition, puis remet la
|
|
|
|
|
// demande à null : le plan montre le retenu. Quand le retenu est ajusté et
|
|
|
|
|
// que la séance accepterait le geste, retenir détruit ces ajustements : la
|
|
|
|
|
// fenêtre à confirmer le dit d'abord, nommant le retenu ajusté et la
|
|
|
|
|
// proposition qui le remplace (§ 2.1). Un geste que la séance refuserait
|
|
|
|
|
// s'exécute sans fenêtre, et son refus s'affiche. « Effacer » ne détruit
|
|
|
|
|
// aucune saisie — chaque proposition se régénère de sa graine, et le geste
|
|
|
|
|
// se défait — : il s'exécute sans fenêtre.
|
[ADD] interface: application shell — banner, sections, theme, about
The window showed only a banner; it now holds the application. App mounts
the session, the facade and the generation, settles the working folder
and lists its events before it reports ready, re-reading the list once a
question is answered or a refused determination succeeds. The banner
carries version, mode and the event list command; an open event shows its
sections in their first form; the theme follows the system at each start
and the operator's choice lasts the session; À propos names the build.
Errors are collected for a report, and Electron removes the session's
locks at exit.
Checked: 2189 node, 193 browser, 60 node-long; the Electron start check.
--- FR ---
[ADD] interface : coquille — bandeau, sections, thème, À propos
La fenêtre ne montrait qu'un bandeau ; elle tient désormais l'application.
App monte la séance, la façade et la génération, règle le dossier de
travail et liste ses événements avant de se dire prête, et relit la liste
une fois une question répondue ou une détermination refusée réussie. Le
bandeau porte version, mode et la commande de la liste ; un événement
ouvert montre ses sections dans leur première forme ; le thème suit le
système à chaque démarrage et le choix de l'opérateur vaut pour la séance ;
À propos nomme la construction. Les erreurs se collectent pour un
signalement, et Electron efface à la sortie les verrous de la séance.
Vérifié : 2189 node, 193 navigateur, 60 node-long ; démarrage d'Electron.
Assisted-by: Claude Opus 5.5
2026-10-07 07:22:05 -04:00
|
|
|
import { getContext } from 'svelte';
|
[ADD] interface: propositions — ranked table, retain, clear
The operator chooses among the generated plans. The ranked table orders
propositions by the criteria of § 5.4 and shows, for encounters, the
minimum only — the mean is the same for every proposition at full tables
— with redundancy read through its sum. A proposition is retained or the
list cleared through named commands; clearing spares the retained one,
and a proposition that broke is shown apart, not ranked.
Checked: 2400 node and 406 browser tests.
--- FR ---
[ADD] interface : propositions — tableau classé, retenir, effacer
L'opérateur choisit parmi les plans générés. Le tableau classé ordonne les
propositions selon les critères du § 5.4 et ne montre, pour les
rencontres, que le minimum — la moyenne est la même pour toute
proposition à tables pleines —, la redondance se lisant par sa somme. Une
proposition se retient, ou la liste s'efface, par des commandes nommées ;
effacer épargne la retenue, et une proposition abîmée se montre à part,
hors classement.
Vérifié : 2400 node et 406 navigateur.
Assisted-by: Claude Opus 5.5
2026-10-07 09:10:39 -04:00
|
|
|
import Commande from '../primitives/Commande.svelte';
|
|
|
|
|
import Confirmation from '../primitives/Confirmation.svelte';
|
|
|
|
|
import Refus from '../primitives/Refus.svelte';
|
|
|
|
|
import TableauPropositions from './TableauPropositions.svelte';
|
|
|
|
|
import { demandeConfirmation, evaluation, nomDe, retenuAjuste, tableau } from './modele.js';
|
[ADD] interface: application shell — banner, sections, theme, about
The window showed only a banner; it now holds the application. App mounts
the session, the facade and the generation, settles the working folder
and lists its events before it reports ready, re-reading the list once a
question is answered or a refused determination succeeds. The banner
carries version, mode and the event list command; an open event shows its
sections in their first form; the theme follows the system at each start
and the operator's choice lasts the session; À propos names the build.
Errors are collected for a report, and Electron removes the session's
locks at exit.
Checked: 2189 node, 193 browser, 60 node-long; the Electron start check.
--- FR ---
[ADD] interface : coquille — bandeau, sections, thème, À propos
La fenêtre ne montrait qu'un bandeau ; elle tient désormais l'application.
App monte la séance, la façade et la génération, règle le dossier de
travail et liste ses événements avant de se dire prête, et relit la liste
une fois une question répondue ou une détermination refusée réussie. Le
bandeau porte version, mode et la commande de la liste ; un événement
ouvert montre ses sections dans leur première forme ; le thème suit le
système à chaque démarrage et le choix de l'opérateur vaut pour la séance ;
À propos nomme la construction. Les erreurs se collectent pour un
signalement, et Electron efface à la sortie les verrous de la séance.
Vérifié : 2189 node, 193 navigateur, 60 node-long ; démarrage d'Electron.
Assisted-by: Claude Opus 5.5
2026-10-07 07:22:05 -04:00
|
|
|
|
|
|
|
|
const t = getContext('t');
|
[ADD] interface: propositions — ranked table, retain, clear
The operator chooses among the generated plans. The ranked table orders
propositions by the criteria of § 5.4 and shows, for encounters, the
minimum only — the mean is the same for every proposition at full tables
— with redundancy read through its sum. A proposition is retained or the
list cleared through named commands; clearing spares the retained one,
and a proposition that broke is shown apart, not ranked.
Checked: 2400 node and 406 browser tests.
--- FR ---
[ADD] interface : propositions — tableau classé, retenir, effacer
L'opérateur choisit parmi les plans générés. Le tableau classé ordonne les
propositions selon les critères du § 5.4 et ne montre, pour les
rencontres, que le minimum — la moyenne est la même pour toute
proposition à tables pleines —, la redondance se lisant par sa somme. Une
proposition se retient, ou la liste s'efface, par des commandes nommées ;
effacer épargne la retenue, et une proposition abîmée se montre à part,
hors classement.
Vérifié : 2400 node et 406 navigateur.
Assisted-by: Claude Opus 5.5
2026-10-07 09:10:39 -04:00
|
|
|
const seance = getContext('seance');
|
|
|
|
|
const ui = getContext('ui');
|
|
|
|
|
|
|
|
|
|
const charge = $derived($seance.charge);
|
|
|
|
|
const evaluee = $derived(charge === null ? { table: null, refus: null } : evaluation(charge));
|
|
|
|
|
const ajuste = $derived(charge !== null && retenuAjuste(charge));
|
|
|
|
|
const vue = $derived(evaluee.table === null ? null : tableau(evaluee.table, { ajuste }));
|
|
|
|
|
|
|
|
|
|
// La retenue en attente de confirmation, telle que demandeConfirmation la
|
|
|
|
|
// rend : la proposition demandée, le titre et les éléments de la fenêtre ;
|
|
|
|
|
// null sans fenêtre.
|
|
|
|
|
let aConfirmer = $state(null);
|
|
|
|
|
|
|
|
|
|
function voir(id) {
|
|
|
|
|
ui.montrerProposition(id);
|
|
|
|
|
ui.allerA('plan');
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
async function retenirSansQuestion(id) {
|
|
|
|
|
await seance.executer('retenirProposition', { id });
|
|
|
|
|
ui.montrerProposition(null);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
async function retenir(id) {
|
|
|
|
|
const demande = demandeConfirmation(seance.etat(), id);
|
|
|
|
|
if (demande !== null) {
|
|
|
|
|
aConfirmer = demande;
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
await retenirSansQuestion(id);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
async function confirmer() {
|
|
|
|
|
await retenirSansQuestion(aConfirmer.id);
|
|
|
|
|
aConfirmer = null;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
const effacer = () => seance.executer('effacerPropositions', {});
|
|
|
|
|
const nommer = (id) => nomDe(charge, id);
|
[ADD] interface: application shell — banner, sections, theme, about
The window showed only a banner; it now holds the application. App mounts
the session, the facade and the generation, settles the working folder
and lists its events before it reports ready, re-reading the list once a
question is answered or a refused determination succeeds. The banner
carries version, mode and the event list command; an open event shows its
sections in their first form; the theme follows the system at each start
and the operator's choice lasts the session; À propos names the build.
Errors are collected for a report, and Electron removes the session's
locks at exit.
Checked: 2189 node, 193 browser, 60 node-long; the Electron start check.
--- FR ---
[ADD] interface : coquille — bandeau, sections, thème, À propos
La fenêtre ne montrait qu'un bandeau ; elle tient désormais l'application.
App monte la séance, la façade et la génération, règle le dossier de
travail et liste ses événements avant de se dire prête, et relit la liste
une fois une question répondue ou une détermination refusée réussie. Le
bandeau porte version, mode et la commande de la liste ; un événement
ouvert montre ses sections dans leur première forme ; le thème suit le
système à chaque démarrage et le choix de l'opérateur vaut pour la séance ;
À propos nomme la construction. Les erreurs se collectent pour un
signalement, et Electron efface à la sortie les verrous de la séance.
Vérifié : 2189 node, 193 navigateur, 60 node-long ; démarrage d'Electron.
Assisted-by: Claude Opus 5.5
2026-10-07 07:22:05 -04:00
|
|
|
</script>
|
|
|
|
|
|
|
|
|
|
<section data-section="propositions">
|
|
|
|
|
<h2>{t('coquille.section.propositions')}</h2>
|
[ADD] interface: propositions — ranked table, retain, clear
The operator chooses among the generated plans. The ranked table orders
propositions by the criteria of § 5.4 and shows, for encounters, the
minimum only — the mean is the same for every proposition at full tables
— with redundancy read through its sum. A proposition is retained or the
list cleared through named commands; clearing spares the retained one,
and a proposition that broke is shown apart, not ranked.
Checked: 2400 node and 406 browser tests.
--- FR ---
[ADD] interface : propositions — tableau classé, retenir, effacer
L'opérateur choisit parmi les plans générés. Le tableau classé ordonne les
propositions selon les critères du § 5.4 et ne montre, pour les
rencontres, que le minimum — la moyenne est la même pour toute
proposition à tables pleines —, la redondance se lisant par sa somme. Une
proposition se retient, ou la liste s'efface, par des commandes nommées ;
effacer épargne la retenue, et une proposition abîmée se montre à part,
hors classement.
Vérifié : 2400 node et 406 navigateur.
Assisted-by: Claude Opus 5.5
2026-10-07 09:10:39 -04:00
|
|
|
|
|
|
|
|
{#if charge !== null && charge.propositions.length === 0}
|
|
|
|
|
<p>{t('propositions.aucune')}</p>
|
|
|
|
|
{/if}
|
|
|
|
|
|
|
|
|
|
{#if evaluee.refus !== null}
|
|
|
|
|
<Refus refus={evaluee.refus} />
|
|
|
|
|
{/if}
|
|
|
|
|
|
|
|
|
|
{#if vue !== null}
|
|
|
|
|
<div class="ordre" data-ordre>
|
|
|
|
|
{#each vue.ordre as phrase (phrase.cle)}
|
|
|
|
|
<p>{t(phrase.cle, phrase.details)}</p>
|
|
|
|
|
{/each}
|
|
|
|
|
</div>
|
|
|
|
|
<TableauPropositions {vue} {nommer} {voir} {retenir} />
|
|
|
|
|
{/if}
|
|
|
|
|
|
|
|
|
|
{#if charge !== null && charge.propositions.length > 0}
|
|
|
|
|
<div class="effacer">
|
|
|
|
|
<Commande cle="propositions.commande.effacer" executer={effacer} />
|
|
|
|
|
</div>
|
|
|
|
|
{/if}
|
|
|
|
|
|
|
|
|
|
{#if aConfirmer !== null}
|
|
|
|
|
<Confirmation
|
|
|
|
|
titre={aConfirmer.titre.cle}
|
|
|
|
|
details={aConfirmer.titre.details}
|
|
|
|
|
elements={aConfirmer.elements.map((element) => t(element.cle, element.details))}
|
|
|
|
|
surConfirmer={confirmer}
|
|
|
|
|
surAnnuler={() => (aConfirmer = null)}
|
|
|
|
|
/>
|
|
|
|
|
{/if}
|
[ADD] interface: application shell — banner, sections, theme, about
The window showed only a banner; it now holds the application. App mounts
the session, the facade and the generation, settles the working folder
and lists its events before it reports ready, re-reading the list once a
question is answered or a refused determination succeeds. The banner
carries version, mode and the event list command; an open event shows its
sections in their first form; the theme follows the system at each start
and the operator's choice lasts the session; À propos names the build.
Errors are collected for a report, and Electron removes the session's
locks at exit.
Checked: 2189 node, 193 browser, 60 node-long; the Electron start check.
--- FR ---
[ADD] interface : coquille — bandeau, sections, thème, À propos
La fenêtre ne montrait qu'un bandeau ; elle tient désormais l'application.
App monte la séance, la façade et la génération, règle le dossier de
travail et liste ses événements avant de se dire prête, et relit la liste
une fois une question répondue ou une détermination refusée réussie. Le
bandeau porte version, mode et la commande de la liste ; un événement
ouvert montre ses sections dans leur première forme ; le thème suit le
système à chaque démarrage et le choix de l'opérateur vaut pour la séance ;
À propos nomme la construction. Les erreurs se collectent pour un
signalement, et Electron efface à la sortie les verrous de la séance.
Vérifié : 2189 node, 193 navigateur, 60 node-long ; démarrage d'Electron.
Assisted-by: Claude Opus 5.5
2026-10-07 07:22:05 -04:00
|
|
|
</section>
|
[ADD] interface: propositions — ranked table, retain, clear
The operator chooses among the generated plans. The ranked table orders
propositions by the criteria of § 5.4 and shows, for encounters, the
minimum only — the mean is the same for every proposition at full tables
— with redundancy read through its sum. A proposition is retained or the
list cleared through named commands; clearing spares the retained one,
and a proposition that broke is shown apart, not ranked.
Checked: 2400 node and 406 browser tests.
--- FR ---
[ADD] interface : propositions — tableau classé, retenir, effacer
L'opérateur choisit parmi les plans générés. Le tableau classé ordonne les
propositions selon les critères du § 5.4 et ne montre, pour les
rencontres, que le minimum — la moyenne est la même pour toute
proposition à tables pleines —, la redondance se lisant par sa somme. Une
proposition se retient, ou la liste s'efface, par des commandes nommées ;
effacer épargne la retenue, et une proposition abîmée se montre à part,
hors classement.
Vérifié : 2400 node et 406 navigateur.
Assisted-by: Claude Opus 5.5
2026-10-07 09:10:39 -04:00
|
|
|
|
|
|
|
|
<style>
|
|
|
|
|
section {
|
|
|
|
|
display: flex;
|
|
|
|
|
flex-direction: column;
|
|
|
|
|
gap: var(--espace-3);
|
|
|
|
|
min-width: 0;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
h2 {
|
|
|
|
|
margin: 0;
|
|
|
|
|
font-size: var(--taille-titre);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
p {
|
|
|
|
|
margin: 0;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.ordre {
|
|
|
|
|
display: flex;
|
|
|
|
|
flex-direction: column;
|
|
|
|
|
gap: var(--espace-1);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.effacer {
|
|
|
|
|
display: flex;
|
|
|
|
|
}
|
|
|
|
|
</style>
|