[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: event list, open event, participants, import, plan
The working screens of an evening. The home screen lists the events of
the working folder, asks its question, loads demos, copies, renames,
imports and deletes, and shows what the trash holds. An open event frames
its mode, offers Modifier, Débloquer and a confirmed lock takeover, and
shows its warnings. Participants get a grid, a form and a file; an import
goes through a preview and a report; tables, the default and tours have
their screens; the plan draws tables, chairs, empty seats and names.
Checked: 2342 node, 356 browser, 60 node-long; the Electron start check.
--- FR ---
[ADD] interface : liste, événement, participants, import, tables, plan
Les écrans de travail d'une soirée. L'accueil liste les événements du
dossier de travail, pose sa question, charge les démonstrations, copie,
renomme, importe et supprime, et montre ce que tient la corbeille. Un
événement ouvert encadre son mode, offre Modifier, Débloquer et une
reprise de verrou confirmée, et montre ses avertissements. Les
participants ont une grille, un formulaire et une fiche ; un import passe
par un aperçu et un rapport ; tables, défaut et tours ont leurs écrans ;
le plan dessine tables, chaises, sièges vides et noms.
Vérifié : 2342 node, 356 navigateur, 60 node-long ; démarrage d'Electron.
Assisted-by: Claude Opus 5.5
2026-10-07 08:12:27 -04:00
|
|
|
|
// La section de l'import des participants (§ 10.1, § 10.2, § 2.1 étape
|
|
|
|
|
|
// 2). Un fichier choisi par le dialogue de la façade, un fichier déposé
|
|
|
|
|
|
// sur la fenêtre, ou un texte que le collage de la grille remet par
|
|
|
|
|
|
// ui.ouvrirImport, ouvre l'aperçu ; rien ne s'importe hors de lui.
|
[ADD] tags and goals: engine measures, CSV column, commands, bridge
Tags on people and goals on tables now reach every layer below the
screens. The engine measures rounds served, never-served people and
facilitators met, with a floor per goal mode at the diagnostic; the CSV
reads and writes an etiquettes column through the shared split and
spelling reconciliation; commands set tags, goals, their rule and the
two optional criteria, each refusal with cause and remedy; facilitators
and the stored priority order reach the engine through one bridge.
Without goals or the facilitator case, plans equal the reference prints.
Checked: node 4373, navigateur 885, node-long 113.
--- FR ---
[ADD] étiquettes et objectifs : mesures, colonne CSV, commandes, pont
Les étiquettes des personnes et les objectifs des tables atteignent toutes
les couches sous les écrans. Le moteur mesure les tours servis, les
personnes jamais servies et les animateurs rencontrés, avec un plancher
par mode au diagnostic ; le CSV lit et écrit une colonne d'étiquettes par
la découpe et la réconciliation communes ; des commandes posent étiquettes,
objectifs, règle et les deux critères facultatifs, chaque refus avec cause
et remède ; animateurs et ordre écrit passent au moteur par un seul pont.
Sans objectif ni case des animateurs, les plans égalent les empreintes.
Vérifié : node 4373, navigateur 885, node-long 113.
Assisted-by: Claude Opus 5.5
2026-10-11 15:03:13 -04:00
|
|
|
|
// L'aperçu se calcule par apercevoir contre les participants et les
|
|
|
|
|
|
// tables de la charge — les étiquettes des objectifs donnent leur
|
|
|
|
|
|
// orthographe à celles du fichier —, sous le mode choisi et le choix des
|
|
|
|
|
|
// colonnes ambiguës : il n'écrit rien, et s'ouvre en lecture comme sur un
|
|
|
|
|
|
// plan bloqué. Seule
|
[ADD] interface: event list, open event, participants, import, plan
The working screens of an evening. The home screen lists the events of
the working folder, asks its question, loads demos, copies, renames,
imports and deletes, and shows what the trash holds. An open event frames
its mode, offers Modifier, Débloquer and a confirmed lock takeover, and
shows its warnings. Participants get a grid, a form and a file; an import
goes through a preview and a report; tables, the default and tours have
their screens; the plan draws tables, chairs, empty seats and names.
Checked: 2342 node, 356 browser, 60 node-long; the Electron start check.
--- FR ---
[ADD] interface : liste, événement, participants, import, tables, plan
Les écrans de travail d'une soirée. L'accueil liste les événements du
dossier de travail, pose sa question, charge les démonstrations, copie,
renomme, importe et supprime, et montre ce que tient la corbeille. Un
événement ouvert encadre son mode, offre Modifier, Débloquer et une
reprise de verrou confirmée, et montre ses avertissements. Les
participants ont une grille, un formulaire et une fiche ; un import passe
par un aperçu et un rapport ; tables, défaut et tours ont leurs écrans ;
le plan dessine tables, chaises, sièges vides et noms.
Vérifié : 2342 node, 356 navigateur, 60 node-long ; démarrage d'Electron.
Assisted-by: Claude Opus 5.5
2026-10-07 08:12:27 -04:00
|
|
|
|
// « Importer » écrit, par seance.executer('importerParticipants', …), et
|
|
|
|
|
|
// son refus se pose à côté d'elle ; « Remplacer » passe d'abord par la
|
|
|
|
|
|
// fenêtre à confirmer, qui porte les quatre comptes de bilanRemplacement,
|
|
|
|
|
|
// et ne l'ouvre que sur un import que la commande accepterait.
|
|
|
|
|
|
// Le rapport lit le résumé que la séance rend.
|
|
|
|
|
|
//
|
[IMP] participants, tables, import: counts, membership pills, messages
Long participant lists were hard to scan by organisation. The list now
opens on counts and a legend of memberships, each with its headcount;
the grid shows a membership as a pill of its tint, the expected title
and the exclusion as icon pills, and row commands wrap without breaking
their labels at 1024 px. The import preview and report class each
message as refus, avis or information. Editing and shortcuts are as
before. Checked: node 144, browser 117, 9 mutations caught.
--- FR ---
[IMP] participants, tables, import : comptes, pastilles, messages
Une longue liste se parcourait mal par organisation. Elle s'ouvre sur
des comptes et une légende des appartenances avec leur effectif ; la
grille montre l'appartenance en pastille de sa teinte, le titre
pressenti et l'exclusion en pastilles à icône, et les commandes de ligne
passent à la ligne sans casser leur libellé à 1024 px. L'aperçu et le
rapport d'import classent chaque message en refus, avis ou information.
L'édition et les raccourcis ne changent pas. Vérifié : node 144,
navigateur 117, 9 mutations prises.
Assisted-by: Claude Opus 5.5
2026-10-11 00:58:07 -04:00
|
|
|
|
// La section est une carte titrée, dont l'en-tête porte la consigne et
|
|
|
|
|
|
// « Choisir un fichier CSV… », son action principale ; l'aperçu, puis le
|
|
|
|
|
|
// rapport, sont des cartes sous elle.
|
|
|
|
|
|
//
|
[ADD] interface: event list, open event, participants, import, plan
The working screens of an evening. The home screen lists the events of
the working folder, asks its question, loads demos, copies, renames,
imports and deletes, and shows what the trash holds. An open event frames
its mode, offers Modifier, Débloquer and a confirmed lock takeover, and
shows its warnings. Participants get a grid, a form and a file; an import
goes through a preview and a report; tables, the default and tours have
their screens; the plan draws tables, chairs, empty seats and names.
Checked: 2342 node, 356 browser, 60 node-long; the Electron start check.
--- FR ---
[ADD] interface : liste, événement, participants, import, tables, plan
Les écrans de travail d'une soirée. L'accueil liste les événements du
dossier de travail, pose sa question, charge les démonstrations, copie,
renomme, importe et supprime, et montre ce que tient la corbeille. Un
événement ouvert encadre son mode, offre Modifier, Débloquer et une
reprise de verrou confirmée, et montre ses avertissements. Les
participants ont une grille, un formulaire et une fiche ; un import passe
par un aperçu et un rapport ; tables, défaut et tours ont leurs écrans ;
le plan dessine tables, chaises, sièges vides et noms.
Vérifié : 2342 node, 356 navigateur, 60 node-long ; démarrage d'Electron.
Assisted-by: Claude Opus 5.5
2026-10-07 08:12:27 -04:00
|
|
|
|
// Le CSV des refus — de l'aperçu, ou du résumé dans le rapport — vient
|
|
|
|
|
|
// d'exporterRefus de src/application/csv.js, dont le motif est celui de
|
|
|
|
|
|
// libelle ; la façade l'enregistre sous ‹base›-refus.csv. La détection
|
|
|
|
|
|
// d'encodage ou de séparateur ne se force pas : l'opérateur ferme l'aperçu
|
|
|
|
|
|
// et corrige le fichier.
|
|
|
|
|
|
import { getContext, untrack } from 'svelte';
|
|
|
|
|
|
import { appliquerCommande } from '../../application/commandes.js';
|
|
|
|
|
|
import { apercevoir, bilanRemplacement, decoder, exporterRefus } from '../../application/csv.js';
|
[IMP] participants, tables, import: counts, membership pills, messages
Long participant lists were hard to scan by organisation. The list now
opens on counts and a legend of memberships, each with its headcount;
the grid shows a membership as a pill of its tint, the expected title
and the exclusion as icon pills, and row commands wrap without breaking
their labels at 1024 px. The import preview and report class each
message as refus, avis or information. Editing and shortcuts are as
before. Checked: node 144, browser 117, 9 mutations caught.
--- FR ---
[IMP] participants, tables, import : comptes, pastilles, messages
Une longue liste se parcourait mal par organisation. Elle s'ouvre sur
des comptes et une légende des appartenances avec leur effectif ; la
grille montre l'appartenance en pastille de sa teinte, le titre
pressenti et l'exclusion en pastilles à icône, et les commandes de ligne
passent à la ligne sans casser leur libellé à 1024 px. L'aperçu et le
rapport d'import classent chaque message en refus, avis ou information.
L'édition et les raccourcis ne changent pas. Vérifié : node 144,
navigateur 117, 9 mutations prises.
Assisted-by: Claude Opus 5.5
2026-10-11 00:58:07 -04:00
|
|
|
|
import Carte from '../primitives/Carte.svelte';
|
[ADD] interface: event list, open event, participants, import, plan
The working screens of an evening. The home screen lists the events of
the working folder, asks its question, loads demos, copies, renames,
imports and deletes, and shows what the trash holds. An open event frames
its mode, offers Modifier, Débloquer and a confirmed lock takeover, and
shows its warnings. Participants get a grid, a form and a file; an import
goes through a preview and a report; tables, the default and tours have
their screens; the plan draws tables, chairs, empty seats and names.
Checked: 2342 node, 356 browser, 60 node-long; the Electron start check.
--- FR ---
[ADD] interface : liste, événement, participants, import, tables, plan
Les écrans de travail d'une soirée. L'accueil liste les événements du
dossier de travail, pose sa question, charge les démonstrations, copie,
renomme, importe et supprime, et montre ce que tient la corbeille. Un
événement ouvert encadre son mode, offre Modifier, Débloquer et une
reprise de verrou confirmée, et montre ses avertissements. Les
participants ont une grille, un formulaire et une fiche ; un import passe
par un aperçu et un rapport ; tables, défaut et tours ont leurs écrans ;
le plan dessine tables, chaises, sièges vides et noms.
Vérifié : 2342 node, 356 navigateur, 60 node-long ; démarrage d'Electron.
Assisted-by: Claude Opus 5.5
2026-10-07 08:12:27 -04:00
|
|
|
|
import Commande from '../primitives/Commande.svelte';
|
|
|
|
|
|
import Confirmation from '../primitives/Confirmation.svelte';
|
|
|
|
|
|
import Apercu from './Apercu.svelte';
|
|
|
|
|
|
import Rapport from './Rapport.svelte';
|
|
|
|
|
|
import { MODES_D_IMPORT, avecEntetesDeLaGrille, modeleApercu, modePropose } 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: event list, open event, participants, import, plan
The working screens of an evening. The home screen lists the events of
the working folder, asks its question, loads demos, copies, renames,
imports and deletes, and shows what the trash holds. An open event frames
its mode, offers Modifier, Débloquer and a confirmed lock takeover, and
shows its warnings. Participants get a grid, a form and a file; an import
goes through a preview and a report; tables, the default and tours have
their screens; the plan draws tables, chairs, empty seats and names.
Checked: 2342 node, 356 browser, 60 node-long; the Electron start check.
--- FR ---
[ADD] interface : liste, événement, participants, import, tables, plan
Les écrans de travail d'une soirée. L'accueil liste les événements du
dossier de travail, pose sa question, charge les démonstrations, copie,
renomme, importe et supprime, et montre ce que tient la corbeille. Un
événement ouvert encadre son mode, offre Modifier, Débloquer et une
reprise de verrou confirmée, et montre ses avertissements. Les
participants ont une grille, un formulaire et une fiche ; un import passe
par un aperçu et un rapport ; tables, défaut et tours ont leurs écrans ;
le plan dessine tables, chaises, sièges vides et noms.
Vérifié : 2342 node, 356 navigateur, 60 node-long ; démarrage d'Electron.
Assisted-by: Claude Opus 5.5
2026-10-07 08:12:27 -04:00
|
|
|
|
const seance = getContext('seance');
|
|
|
|
|
|
const facade = getContext('facade');
|
|
|
|
|
|
const ui = getContext('ui');
|
|
|
|
|
|
const uid = $props.id();
|
|
|
|
|
|
|
|
|
|
|
|
// La source de l'aperçu : { origine: 'fichier'|'collage', nom, encodage,
|
|
|
|
|
|
// texte, refusDecodage } ; texte null sous un refus de decoder.
|
|
|
|
|
|
let source = $state.raw(null);
|
|
|
|
|
|
// { champ: rang } qui tranche une ambiguïté de l'en-tête.
|
|
|
|
|
|
let choix = $state.raw({});
|
|
|
|
|
|
let mode = $state('ajouter');
|
|
|
|
|
|
// Le dernier import appliqué : { modele, source, apercu, resume, libelle }.
|
|
|
|
|
|
let rapport = $state.raw(null);
|
|
|
|
|
|
// La fenêtre de « Remplacer » ouverte : { apercu, elements }.
|
|
|
|
|
|
let confirmation = $state.raw(null);
|
|
|
|
|
|
// Le chemin où le CSV des refus vient d'être enregistré.
|
|
|
|
|
|
let enregistre = $state(null);
|
|
|
|
|
|
|
|
|
|
|
|
const participants = $derived($seance.charge?.participants ?? []);
|
[ADD] tags and goals: engine measures, CSV column, commands, bridge
Tags on people and goals on tables now reach every layer below the
screens. The engine measures rounds served, never-served people and
facilitators met, with a floor per goal mode at the diagnostic; the CSV
reads and writes an etiquettes column through the shared split and
spelling reconciliation; commands set tags, goals, their rule and the
two optional criteria, each refusal with cause and remedy; facilitators
and the stored priority order reach the engine through one bridge.
Without goals or the facilitator case, plans equal the reference prints.
Checked: node 4373, navigateur 885, node-long 113.
--- FR ---
[ADD] étiquettes et objectifs : mesures, colonne CSV, commandes, pont
Les étiquettes des personnes et les objectifs des tables atteignent toutes
les couches sous les écrans. Le moteur mesure les tours servis, les
personnes jamais servies et les animateurs rencontrés, avec un plancher
par mode au diagnostic ; le CSV lit et écrit une colonne d'étiquettes par
la découpe et la réconciliation communes ; des commandes posent étiquettes,
objectifs, règle et les deux critères facultatifs, chaque refus avec cause
et remède ; animateurs et ordre écrit passent au moteur par un seul pont.
Sans objectif ni case des animateurs, les plans égalent les empreintes.
Vérifié : node 4373, navigateur 885, node-long 113.
Assisted-by: Claude Opus 5.5
2026-10-11 15:03:13 -04:00
|
|
|
|
const tables = $derived($seance.charge?.tables ?? []);
|
[ADD] interface: event list, open event, participants, import, plan
The working screens of an evening. The home screen lists the events of
the working folder, asks its question, loads demos, copies, renames,
imports and deletes, and shows what the trash holds. An open event frames
its mode, offers Modifier, Débloquer and a confirmed lock takeover, and
shows its warnings. Participants get a grid, a form and a file; an import
goes through a preview and a report; tables, the default and tours have
their screens; the plan draws tables, chairs, empty seats and names.
Checked: 2342 node, 356 browser, 60 node-long; the Electron start check.
--- FR ---
[ADD] interface : liste, événement, participants, import, tables, plan
Les écrans de travail d'une soirée. L'accueil liste les événements du
dossier de travail, pose sa question, charge les démonstrations, copie,
renomme, importe et supprime, et montre ce que tient la corbeille. Un
événement ouvert encadre son mode, offre Modifier, Débloquer et une
reprise de verrou confirmée, et montre ses avertissements. Les
participants ont une grille, un formulaire et une fiche ; un import passe
par un aperçu et un rapport ; tables, défaut et tours ont leurs écrans ;
le plan dessine tables, chaises, sièges vides et noms.
Vérifié : 2342 node, 356 navigateur, 60 node-long ; démarrage d'Electron.
Assisted-by: Claude Opus 5.5
2026-10-07 08:12:27 -04:00
|
|
|
|
const apercu = $derived(
|
[ADD] tags and goals: engine measures, CSV column, commands, bridge
Tags on people and goals on tables now reach every layer below the
screens. The engine measures rounds served, never-served people and
facilitators met, with a floor per goal mode at the diagnostic; the CSV
reads and writes an etiquettes column through the shared split and
spelling reconciliation; commands set tags, goals, their rule and the
two optional criteria, each refusal with cause and remedy; facilitators
and the stored priority order reach the engine through one bridge.
Without goals or the facilitator case, plans equal the reference prints.
Checked: node 4373, navigateur 885, node-long 113.
--- FR ---
[ADD] étiquettes et objectifs : mesures, colonne CSV, commandes, pont
Les étiquettes des personnes et les objectifs des tables atteignent toutes
les couches sous les écrans. Le moteur mesure les tours servis, les
personnes jamais servies et les animateurs rencontrés, avec un plancher
par mode au diagnostic ; le CSV lit et écrit une colonne d'étiquettes par
la découpe et la réconciliation communes ; des commandes posent étiquettes,
objectifs, règle et les deux critères facultatifs, chaque refus avec cause
et remède ; animateurs et ordre écrit passent au moteur par un seul pont.
Sans objectif ni case des animateurs, les plans égalent les empreintes.
Vérifié : node 4373, navigateur 885, node-long 113.
Assisted-by: Claude Opus 5.5
2026-10-11 15:03:13 -04:00
|
|
|
|
source === null || source.refusDecodage !== null ? null : apercevoir(source.texte, { participants, tables, choix, mode }),
|
[ADD] interface: event list, open event, participants, import, plan
The working screens of an evening. The home screen lists the events of
the working folder, asks its question, loads demos, copies, renames,
imports and deletes, and shows what the trash holds. An open event frames
its mode, offers Modifier, Débloquer and a confirmed lock takeover, and
shows its warnings. Participants get a grid, a form and a file; an import
goes through a preview and a report; tables, the default and tours have
their screens; the plan draws tables, chairs, empty seats and names.
Checked: 2342 node, 356 browser, 60 node-long; the Electron start check.
--- FR ---
[ADD] interface : liste, événement, participants, import, tables, plan
Les écrans de travail d'une soirée. L'accueil liste les événements du
dossier de travail, pose sa question, charge les démonstrations, copie,
renomme, importe et supprime, et montre ce que tient la corbeille. Un
événement ouvert encadre son mode, offre Modifier, Débloquer et une
reprise de verrou confirmée, et montre ses avertissements. Les
participants ont une grille, un formulaire et une fiche ; un import passe
par un aperçu et un rapport ; tables, défaut et tours ont leurs écrans ;
le plan dessine tables, chaises, sièges vides et noms.
Vérifié : 2342 node, 356 navigateur, 60 node-long ; démarrage d'Electron.
Assisted-by: Claude Opus 5.5
2026-10-07 08:12:27 -04:00
|
|
|
|
);
|
|
|
|
|
|
const modele = $derived(
|
|
|
|
|
|
source === null ? null : modeleApercu({ encodage: source.encodage, apercu, refusDecodage: source.refusDecodage }),
|
|
|
|
|
|
);
|
|
|
|
|
|
// Le texte relu dans l'ordre de la grille, offert à un collage seul.
|
|
|
|
|
|
const grille = $derived(source?.origine === 'collage' && apercu !== null ? avecEntetesDeLaGrille(source.texte, apercu) : null);
|
|
|
|
|
|
|
|
|
|
|
|
// Une source neuve : le choix des colonnes repart de rien, le mode
|
|
|
|
|
|
// proposé suit la liste, le rapport précédent se retire.
|
|
|
|
|
|
function ouvrirSource(nouvelle) {
|
|
|
|
|
|
source = nouvelle;
|
|
|
|
|
|
choix = {};
|
|
|
|
|
|
mode = modePropose(untrack(() => participants));
|
|
|
|
|
|
rapport = null;
|
|
|
|
|
|
confirmation = null;
|
|
|
|
|
|
enregistre = null;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// Les octets d'un fichier : leur texte décodé, ou le refus de decoder,
|
|
|
|
|
|
// qui tient lieu d'aperçu. Toute autre erreur est une faute, qui remonte.
|
|
|
|
|
|
function lireFichier({ nom, octets }) {
|
|
|
|
|
|
try {
|
|
|
|
|
|
const { texte, encodage } = decoder(octets);
|
|
|
|
|
|
ouvrirSource({ origine: 'fichier', nom, encodage, texte, refusDecodage: null });
|
|
|
|
|
|
} catch (erreur) {
|
|
|
|
|
|
if (typeof erreur?.code !== 'string') throw erreur;
|
|
|
|
|
|
ouvrirSource({ origine: 'fichier', nom, encodage: null, texte: null, refusDecodage: { code: erreur.code, details: erreur.details } });
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
async function choisirFichier() {
|
|
|
|
|
|
const choisi = await facade.choisirCsv();
|
|
|
|
|
|
if (choisi !== null) lireFichier(choisi);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// Un fichier déposé sur la fenêtre ouvre son aperçu, comme un fichier
|
|
|
|
|
|
// choisi ; un glissement sans fichier n'est pas retenu.
|
|
|
|
|
|
function survoler(evenement) {
|
|
|
|
|
|
if (evenement.dataTransfer?.types?.includes('Files')) evenement.preventDefault();
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
async function deposer(evenement) {
|
|
|
|
|
|
const fichier = evenement.dataTransfer?.files?.[0];
|
|
|
|
|
|
if (fichier === undefined) return;
|
|
|
|
|
|
evenement.preventDefault();
|
|
|
|
|
|
lireFichier({ nom: fichier.name, octets: new Uint8Array(await fichier.arrayBuffer()) });
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// Le texte que le collage de la grille remet : pris une fois, il ouvre
|
|
|
|
|
|
// l'aperçu d'un collage, sans encodage.
|
|
|
|
|
|
$effect(() => {
|
|
|
|
|
|
if ($ui.importEnAttente === null) return;
|
|
|
|
|
|
untrack(() => {
|
|
|
|
|
|
const pris = ui.prendreImport();
|
|
|
|
|
|
if (pris !== null) ouvrirSource({ origine: 'collage', nom: null, encodage: null, texte: pris.texte, refusDecodage: null });
|
|
|
|
|
|
});
|
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
|
|
function choisirColonne(champ, rang) {
|
|
|
|
|
|
choix = { ...choix, [champ]: rang };
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
function lireDansLOrdreDeLaGrille() {
|
|
|
|
|
|
source = { ...source, texte: grille };
|
|
|
|
|
|
choix = {};
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
function fermerApercu() {
|
|
|
|
|
|
source = null;
|
|
|
|
|
|
enregistre = null;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// L'aperçu appliqué par la séance, dans son mode ; le rapport lit le
|
|
|
|
|
|
// résumé rendu, et l'aperçu se ferme.
|
|
|
|
|
|
async function appliquer(applique, sonMode, depuis) {
|
|
|
|
|
|
const { libelle, resume } = await seance.executer('importerParticipants', { apercu: applique, mode: sonMode });
|
|
|
|
|
|
rapport = {
|
|
|
|
|
|
modele: modeleApercu({ encodage: depuis.encodage, apercu: applique }),
|
|
|
|
|
|
source: { origine: depuis.origine, nom: depuis.nom },
|
|
|
|
|
|
apercu: applique,
|
|
|
|
|
|
resume,
|
|
|
|
|
|
libelle,
|
|
|
|
|
|
};
|
|
|
|
|
|
source = null;
|
|
|
|
|
|
enregistre = null;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// « Importer » : l'aperçu montré, dans le mode choisi. « Remplacer »
|
|
|
|
|
|
// ouvre d'abord sa fenêtre, sauf quand le geste serait refusé : le refus
|
|
|
|
|
|
// de la séance, celui de son état, puis celui de la commande essayée sur
|
|
|
|
|
|
// la charge sans rien écrire (appliquerCommande, le calcul même que
|
|
|
|
|
|
// seance.executer applique) — une ambiguïté non tranchée, AMBIGUITE —
|
|
|
|
|
|
// se posent à côté de la commande, et la fenêtre n'annonce jamais une
|
[FIX] interface: ghost labels, keyboard, valid HTML, closed data-* list
The drag ghost names what releasing at the point changes, floor included.
Escape on a seat returns to its table, a refused Tab stays put, the legend
toggle exposes aria-expanded, and the header markup is valid HTML. Every
data-* attribute the interface sets belongs to one closed list that a guard
reads. The tree guards follow helpers a test imports, and the reporter says
the whole series stays watched under coverage on a small machine.
Checked: every new test red first; 3001 node, 635 browser and 63 long tests
green from the index alone.
--- FR ---
[FIX] interface : fantôme nommé, clavier, HTML valide, data-* fermés
Le fantôme du glisser nomme ce que relâcher au point modifie, sol compris.
Échap sur un siège remonte à sa table, un Tab refusé reste en place, la
bascule de la légende expose aria-expanded, et la tête est du HTML valide.
Chaque attribut data-* que l'interface pose appartient à une liste fermée
qu'une garde lit. Les gardes de l'arbre suivent les aides qu'une épreuve
importe, et le rapporteur dit la série entière surveillée sous couverture.
Vérifié : chaque épreuve rouge d'abord ; 3001 node, 635 navigateur et 63
longues vertes depuis l'index seul.
Assisted-by: Claude Opus 5.5
2026-10-09 04:01:57 -04:00
|
|
|
|
// destruction qui n'aura pas lieu. Le refus vaut pour l'aperçu qui l'a
|
|
|
|
|
|
// reçu : un choix de colonne ou de mode, qui en fait un autre, le retire
|
|
|
|
|
|
// (la commande se recrée sous {#key apercu}).
|
[ADD] interface: event list, open event, participants, import, plan
The working screens of an evening. The home screen lists the events of
the working folder, asks its question, loads demos, copies, renames,
imports and deletes, and shows what the trash holds. An open event frames
its mode, offers Modifier, Débloquer and a confirmed lock takeover, and
shows its warnings. Participants get a grid, a form and a file; an import
goes through a preview and a report; tables, the default and tours have
their screens; the plan draws tables, chairs, empty seats and names.
Checked: 2342 node, 356 browser, 60 node-long; the Electron start check.
--- FR ---
[ADD] interface : liste, événement, participants, import, tables, plan
Les écrans de travail d'une soirée. L'accueil liste les événements du
dossier de travail, pose sa question, charge les démonstrations, copie,
renomme, importe et supprime, et montre ce que tient la corbeille. Un
événement ouvert encadre son mode, offre Modifier, Débloquer et une
reprise de verrou confirmée, et montre ses avertissements. Les
participants ont une grille, un formulaire et une fiche ; un import passe
par un aperçu et un rapport ; tables, défaut et tours ont leurs écrans ;
le plan dessine tables, chaises, sièges vides et noms.
Vérifié : 2342 node, 356 navigateur, 60 node-long ; démarrage d'Electron.
Assisted-by: Claude Opus 5.5
2026-10-07 08:12:27 -04:00
|
|
|
|
async function importer() {
|
|
|
|
|
|
const applique = apercu;
|
|
|
|
|
|
const sonMode = mode;
|
|
|
|
|
|
const depuis = source;
|
|
|
|
|
|
if (sonMode !== 'remplacer') {
|
|
|
|
|
|
await appliquer(applique, sonMode, depuis);
|
|
|
|
|
|
return;
|
|
|
|
|
|
}
|
|
|
|
|
|
const { refus, charge } = seance.etat();
|
|
|
|
|
|
if (refus !== null) throw refus;
|
|
|
|
|
|
appliquerCommande('importerParticipants', charge, { apercu: applique, mode: sonMode });
|
|
|
|
|
|
const bilan = bilanRemplacement(charge);
|
|
|
|
|
|
confirmation = {
|
|
|
|
|
|
apercu: applique,
|
|
|
|
|
|
depuis,
|
|
|
|
|
|
elements: [
|
|
|
|
|
|
t('import.remplacer.participants', { n: bilan.participants }),
|
|
|
|
|
|
t('import.remplacer.reservations', { n: bilan.reservations }),
|
|
|
|
|
|
t('import.remplacer.titres', { n: bilan.titresPourvus }),
|
|
|
|
|
|
t('import.remplacer.propositions', { n: bilan.propositions }),
|
|
|
|
|
|
],
|
|
|
|
|
|
};
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
async function confirmerRemplacement() {
|
|
|
|
|
|
await appliquer(confirmation.apercu, 'remplacer', confirmation.depuis);
|
|
|
|
|
|
confirmation = null;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// Le CSV des refus, remis à la façade sous ‹base›-refus.csv.
|
|
|
|
|
|
async function enregistrerRefus(octets) {
|
|
|
|
|
|
enregistre = await facade.enregistrerSous(`${seance.etat().evenement.base}-refus.csv`, octets);
|
|
|
|
|
|
}
|
[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>
|
|
|
|
|
|
|
[ADD] interface: event list, open event, participants, import, plan
The working screens of an evening. The home screen lists the events of
the working folder, asks its question, loads demos, copies, renames,
imports and deletes, and shows what the trash holds. An open event frames
its mode, offers Modifier, Débloquer and a confirmed lock takeover, and
shows its warnings. Participants get a grid, a form and a file; an import
goes through a preview and a report; tables, the default and tours have
their screens; the plan draws tables, chairs, empty seats and names.
Checked: 2342 node, 356 browser, 60 node-long; the Electron start check.
--- FR ---
[ADD] interface : liste, événement, participants, import, tables, plan
Les écrans de travail d'une soirée. L'accueil liste les événements du
dossier de travail, pose sa question, charge les démonstrations, copie,
renomme, importe et supprime, et montre ce que tient la corbeille. Un
événement ouvert encadre son mode, offre Modifier, Débloquer et une
reprise de verrou confirmée, et montre ses avertissements. Les
participants ont une grille, un formulaire et une fiche ; un import passe
par un aperçu et un rapport ; tables, défaut et tours ont leurs écrans ;
le plan dessine tables, chaises, sièges vides et noms.
Vérifié : 2342 node, 356 navigateur, 60 node-long ; démarrage d'Electron.
Assisted-by: Claude Opus 5.5
2026-10-07 08:12:27 -04:00
|
|
|
|
<svelte:window ondragover={survoler} ondrop={deposer} />
|
|
|
|
|
|
|
[IMP] participants, tables, import: counts, membership pills, messages
Long participant lists were hard to scan by organisation. The list now
opens on counts and a legend of memberships, each with its headcount;
the grid shows a membership as a pill of its tint, the expected title
and the exclusion as icon pills, and row commands wrap without breaking
their labels at 1024 px. The import preview and report class each
message as refus, avis or information. Editing and shortcuts are as
before. Checked: node 144, browser 117, 9 mutations caught.
--- FR ---
[IMP] participants, tables, import : comptes, pastilles, messages
Une longue liste se parcourait mal par organisation. Elle s'ouvre sur
des comptes et une légende des appartenances avec leur effectif ; la
grille montre l'appartenance en pastille de sa teinte, le titre
pressenti et l'exclusion en pastilles à icône, et les commandes de ligne
passent à la ligne sans casser leur libellé à 1024 px. L'aperçu et le
rapport d'import classent chaque message en refus, avis ou information.
L'édition et les raccourcis ne changent pas. Vérifié : node 144,
navigateur 117, 9 mutations prises.
Assisted-by: Claude Opus 5.5
2026-10-11 00:58:07 -04:00
|
|
|
|
<div class="import" data-section="import">
|
|
|
|
|
|
<Carte titre={t('coquille.section.import')} sousTitre={t('import.consigne')}>
|
|
|
|
|
|
{#snippet actions()}
|
|
|
|
|
|
<Commande cle="import.commande.choisirFichier" nom="choisirFichier" variante="principale" executer={choisirFichier} />
|
|
|
|
|
|
{/snippet}
|
|
|
|
|
|
</Carte>
|
[ADD] interface: event list, open event, participants, import, plan
The working screens of an evening. The home screen lists the events of
the working folder, asks its question, loads demos, copies, renames,
imports and deletes, and shows what the trash holds. An open event frames
its mode, offers Modifier, Débloquer and a confirmed lock takeover, and
shows its warnings. Participants get a grid, a form and a file; an import
goes through a preview and a report; tables, the default and tours have
their screens; the plan draws tables, chairs, empty seats and names.
Checked: 2342 node, 356 browser, 60 node-long; the Electron start check.
--- FR ---
[ADD] interface : liste, événement, participants, import, tables, plan
Les écrans de travail d'une soirée. L'accueil liste les événements du
dossier de travail, pose sa question, charge les démonstrations, copie,
renomme, importe et supprime, et montre ce que tient la corbeille. Un
événement ouvert encadre son mode, offre Modifier, Débloquer et une
reprise de verrou confirmée, et montre ses avertissements. Les
participants ont une grille, un formulaire et une fiche ; un import passe
par un aperçu et un rapport ; tables, défaut et tours ont leurs écrans ;
le plan dessine tables, chaises, sièges vides et noms.
Vérifié : 2342 node, 356 navigateur, 60 node-long ; démarrage d'Electron.
Assisted-by: Claude Opus 5.5
2026-10-07 08:12:27 -04:00
|
|
|
|
|
|
|
|
|
|
{#if source !== null}
|
|
|
|
|
|
{#key source}
|
[IMP] participants, tables, import: counts, membership pills, messages
Long participant lists were hard to scan by organisation. The list now
opens on counts and a legend of memberships, each with its headcount;
the grid shows a membership as a pill of its tint, the expected title
and the exclusion as icon pills, and row commands wrap without breaking
their labels at 1024 px. The import preview and report class each
message as refus, avis or information. Editing and shortcuts are as
before. Checked: node 144, browser 117, 9 mutations caught.
--- FR ---
[IMP] participants, tables, import : comptes, pastilles, messages
Une longue liste se parcourait mal par organisation. Elle s'ouvre sur
des comptes et une légende des appartenances avec leur effectif ; la
grille montre l'appartenance en pastille de sa teinte, le titre
pressenti et l'exclusion en pastilles à icône, et les commandes de ligne
passent à la ligne sans casser leur libellé à 1024 px. L'aperçu et le
rapport d'import classent chaque message en refus, avis ou information.
L'édition et les raccourcis ne changent pas. Vérifié : node 144,
navigateur 117, 9 mutations prises.
Assisted-by: Claude Opus 5.5
2026-10-11 00:58:07 -04:00
|
|
|
|
<div class="apercu" data-apercu>
|
|
|
|
|
|
<Carte titre={t('import.apercu.titre')} niveau={3}>
|
|
|
|
|
|
<div class="contenu">
|
|
|
|
|
|
{#if modele.global === null}
|
|
|
|
|
|
<fieldset class="modes" data-champ="mode">
|
|
|
|
|
|
<legend>{t('import.mode.titre')}</legend>
|
|
|
|
|
|
{#each MODES_D_IMPORT as { mode: valeur, cle } (valeur)}
|
|
|
|
|
|
<label>
|
|
|
|
|
|
<input type="radio" name={`${uid}-mode`} value={valeur} bind:group={mode} />
|
|
|
|
|
|
<span>{t(cle)}</span>
|
|
|
|
|
|
</label>
|
|
|
|
|
|
{/each}
|
|
|
|
|
|
</fieldset>
|
|
|
|
|
|
{/if}
|
|
|
|
|
|
<Apercu {modele} source={{ origine: source.origine, nom: source.nom }} {participants} choisir={choisirColonne} />
|
|
|
|
|
|
<div class="commandes">
|
|
|
|
|
|
{#if grille !== null}
|
|
|
|
|
|
<Commande cle="import.commande.ordreDeLaGrille" nom="ordreDeLaGrille" executer={lireDansLOrdreDeLaGrille} />
|
|
|
|
|
|
{/if}
|
|
|
|
|
|
{#if modele.global === null}
|
|
|
|
|
|
{#key apercu}
|
|
|
|
|
|
<Commande cle="import.commande.importer" nom="importer" variante="principale" executer={importer} />
|
|
|
|
|
|
{/key}
|
|
|
|
|
|
{/if}
|
|
|
|
|
|
{#if modele.refusees.length > 0}
|
|
|
|
|
|
<Commande
|
|
|
|
|
|
cle="import.commande.enregistrerRefus"
|
|
|
|
|
|
nom="enregistrerRefus"
|
|
|
|
|
|
executer={() => enregistrerRefus(exporterRefus(apercu))}
|
|
|
|
|
|
/>
|
|
|
|
|
|
{/if}
|
|
|
|
|
|
<Commande cle="import.commande.fermerApercu" nom="fermerApercu" executer={fermerApercu} />
|
|
|
|
|
|
</div>
|
|
|
|
|
|
{#if enregistre !== null}
|
|
|
|
|
|
<p><span>{t('import.refusEnregistres')}</span> <span data-enregistre>{enregistre}</span></p>
|
|
|
|
|
|
{/if}
|
|
|
|
|
|
</div>
|
|
|
|
|
|
</Carte>
|
|
|
|
|
|
</div>
|
|
|
|
|
|
{/key}
|
|
|
|
|
|
{/if}
|
|
|
|
|
|
|
|
|
|
|
|
{#if rapport !== null}
|
|
|
|
|
|
<Rapport {rapport} {participants}>
|
|
|
|
|
|
{#snippet commandes()}
|
[ADD] interface: event list, open event, participants, import, plan
The working screens of an evening. The home screen lists the events of
the working folder, asks its question, loads demos, copies, renames,
imports and deletes, and shows what the trash holds. An open event frames
its mode, offers Modifier, Débloquer and a confirmed lock takeover, and
shows its warnings. Participants get a grid, a form and a file; an import
goes through a preview and a report; tables, the default and tours have
their screens; the plan draws tables, chairs, empty seats and names.
Checked: 2342 node, 356 browser, 60 node-long; the Electron start check.
--- FR ---
[ADD] interface : liste, événement, participants, import, tables, plan
Les écrans de travail d'une soirée. L'accueil liste les événements du
dossier de travail, pose sa question, charge les démonstrations, copie,
renomme, importe et supprime, et montre ce que tient la corbeille. Un
événement ouvert encadre son mode, offre Modifier, Débloquer et une
reprise de verrou confirmée, et montre ses avertissements. Les
participants ont une grille, un formulaire et une fiche ; un import passe
par un aperçu et un rapport ; tables, défaut et tours ont leurs écrans ;
le plan dessine tables, chaises, sièges vides et noms.
Vérifié : 2342 node, 356 navigateur, 60 node-long ; démarrage d'Electron.
Assisted-by: Claude Opus 5.5
2026-10-07 08:12:27 -04:00
|
|
|
|
<div class="commandes">
|
[IMP] participants, tables, import: counts, membership pills, messages
Long participant lists were hard to scan by organisation. The list now
opens on counts and a legend of memberships, each with its headcount;
the grid shows a membership as a pill of its tint, the expected title
and the exclusion as icon pills, and row commands wrap without breaking
their labels at 1024 px. The import preview and report class each
message as refus, avis or information. Editing and shortcuts are as
before. Checked: node 144, browser 117, 9 mutations caught.
--- FR ---
[IMP] participants, tables, import : comptes, pastilles, messages
Une longue liste se parcourait mal par organisation. Elle s'ouvre sur
des comptes et une légende des appartenances avec leur effectif ; la
grille montre l'appartenance en pastille de sa teinte, le titre
pressenti et l'exclusion en pastilles à icône, et les commandes de ligne
passent à la ligne sans casser leur libellé à 1024 px. L'aperçu et le
rapport d'import classent chaque message en refus, avis ou information.
L'édition et les raccourcis ne changent pas. Vérifié : node 144,
navigateur 117, 9 mutations prises.
Assisted-by: Claude Opus 5.5
2026-10-11 00:58:07 -04:00
|
|
|
|
{#if rapport.resume.refusees.length > 0}
|
[ADD] interface: event list, open event, participants, import, plan
The working screens of an evening. The home screen lists the events of
the working folder, asks its question, loads demos, copies, renames,
imports and deletes, and shows what the trash holds. An open event frames
its mode, offers Modifier, Débloquer and a confirmed lock takeover, and
shows its warnings. Participants get a grid, a form and a file; an import
goes through a preview and a report; tables, the default and tours have
their screens; the plan draws tables, chairs, empty seats and names.
Checked: 2342 node, 356 browser, 60 node-long; the Electron start check.
--- FR ---
[ADD] interface : liste, événement, participants, import, tables, plan
Les écrans de travail d'une soirée. L'accueil liste les événements du
dossier de travail, pose sa question, charge les démonstrations, copie,
renomme, importe et supprime, et montre ce que tient la corbeille. Un
événement ouvert encadre son mode, offre Modifier, Débloquer et une
reprise de verrou confirmée, et montre ses avertissements. Les
participants ont une grille, un formulaire et une fiche ; un import passe
par un aperçu et un rapport ; tables, défaut et tours ont leurs écrans ;
le plan dessine tables, chaises, sièges vides et noms.
Vérifié : 2342 node, 356 navigateur, 60 node-long ; démarrage d'Electron.
Assisted-by: Claude Opus 5.5
2026-10-07 08:12:27 -04:00
|
|
|
|
<Commande
|
|
|
|
|
|
cle="import.commande.enregistrerRefus"
|
|
|
|
|
|
nom="enregistrerRefus"
|
[IMP] participants, tables, import: counts, membership pills, messages
Long participant lists were hard to scan by organisation. The list now
opens on counts and a legend of memberships, each with its headcount;
the grid shows a membership as a pill of its tint, the expected title
and the exclusion as icon pills, and row commands wrap without breaking
their labels at 1024 px. The import preview and report class each
message as refus, avis or information. Editing and shortcuts are as
before. Checked: node 144, browser 117, 9 mutations caught.
--- FR ---
[IMP] participants, tables, import : comptes, pastilles, messages
Une longue liste se parcourait mal par organisation. Elle s'ouvre sur
des comptes et une légende des appartenances avec leur effectif ; la
grille montre l'appartenance en pastille de sa teinte, le titre
pressenti et l'exclusion en pastilles à icône, et les commandes de ligne
passent à la ligne sans casser leur libellé à 1024 px. L'aperçu et le
rapport d'import classent chaque message en refus, avis ou information.
L'édition et les raccourcis ne changent pas. Vérifié : node 144,
navigateur 117, 9 mutations prises.
Assisted-by: Claude Opus 5.5
2026-10-11 00:58:07 -04:00
|
|
|
|
executer={() => enregistrerRefus(exporterRefus(rapport.apercu, rapport.resume.refusees))}
|
[ADD] interface: event list, open event, participants, import, plan
The working screens of an evening. The home screen lists the events of
the working folder, asks its question, loads demos, copies, renames,
imports and deletes, and shows what the trash holds. An open event frames
its mode, offers Modifier, Débloquer and a confirmed lock takeover, and
shows its warnings. Participants get a grid, a form and a file; an import
goes through a preview and a report; tables, the default and tours have
their screens; the plan draws tables, chairs, empty seats and names.
Checked: 2342 node, 356 browser, 60 node-long; the Electron start check.
--- FR ---
[ADD] interface : liste, événement, participants, import, tables, plan
Les écrans de travail d'une soirée. L'accueil liste les événements du
dossier de travail, pose sa question, charge les démonstrations, copie,
renomme, importe et supprime, et montre ce que tient la corbeille. Un
événement ouvert encadre son mode, offre Modifier, Débloquer et une
reprise de verrou confirmée, et montre ses avertissements. Les
participants ont une grille, un formulaire et une fiche ; un import passe
par un aperçu et un rapport ; tables, défaut et tours ont leurs écrans ;
le plan dessine tables, chaises, sièges vides et noms.
Vérifié : 2342 node, 356 navigateur, 60 node-long ; démarrage d'Electron.
Assisted-by: Claude Opus 5.5
2026-10-07 08:12:27 -04:00
|
|
|
|
/>
|
|
|
|
|
|
{/if}
|
[IMP] participants, tables, import: counts, membership pills, messages
Long participant lists were hard to scan by organisation. The list now
opens on counts and a legend of memberships, each with its headcount;
the grid shows a membership as a pill of its tint, the expected title
and the exclusion as icon pills, and row commands wrap without breaking
their labels at 1024 px. The import preview and report class each
message as refus, avis or information. Editing and shortcuts are as
before. Checked: node 144, browser 117, 9 mutations caught.
--- FR ---
[IMP] participants, tables, import : comptes, pastilles, messages
Une longue liste se parcourait mal par organisation. Elle s'ouvre sur
des comptes et une légende des appartenances avec leur effectif ; la
grille montre l'appartenance en pastille de sa teinte, le titre
pressenti et l'exclusion en pastilles à icône, et les commandes de ligne
passent à la ligne sans casser leur libellé à 1024 px. L'aperçu et le
rapport d'import classent chaque message en refus, avis ou information.
L'édition et les raccourcis ne changent pas. Vérifié : node 144,
navigateur 117, 9 mutations prises.
Assisted-by: Claude Opus 5.5
2026-10-11 00:58:07 -04:00
|
|
|
|
<Commande cle="import.commande.fermerRapport" nom="fermerRapport" executer={() => (rapport = null)} />
|
[ADD] interface: event list, open event, participants, import, plan
The working screens of an evening. The home screen lists the events of
the working folder, asks its question, loads demos, copies, renames,
imports and deletes, and shows what the trash holds. An open event frames
its mode, offers Modifier, Débloquer and a confirmed lock takeover, and
shows its warnings. Participants get a grid, a form and a file; an import
goes through a preview and a report; tables, the default and tours have
their screens; the plan draws tables, chairs, empty seats and names.
Checked: 2342 node, 356 browser, 60 node-long; the Electron start check.
--- FR ---
[ADD] interface : liste, événement, participants, import, tables, plan
Les écrans de travail d'une soirée. L'accueil liste les événements du
dossier de travail, pose sa question, charge les démonstrations, copie,
renomme, importe et supprime, et montre ce que tient la corbeille. Un
événement ouvert encadre son mode, offre Modifier, Débloquer et une
reprise de verrou confirmée, et montre ses avertissements. Les
participants ont une grille, un formulaire et une fiche ; un import passe
par un aperçu et un rapport ; tables, défaut et tours ont leurs écrans ;
le plan dessine tables, chaises, sièges vides et noms.
Vérifié : 2342 node, 356 navigateur, 60 node-long ; démarrage d'Electron.
Assisted-by: Claude Opus 5.5
2026-10-07 08:12:27 -04:00
|
|
|
|
</div>
|
|
|
|
|
|
{#if enregistre !== null}
|
|
|
|
|
|
<p><span>{t('import.refusEnregistres')}</span> <span data-enregistre>{enregistre}</span></p>
|
|
|
|
|
|
{/if}
|
[IMP] participants, tables, import: counts, membership pills, messages
Long participant lists were hard to scan by organisation. The list now
opens on counts and a legend of memberships, each with its headcount;
the grid shows a membership as a pill of its tint, the expected title
and the exclusion as icon pills, and row commands wrap without breaking
their labels at 1024 px. The import preview and report class each
message as refus, avis or information. Editing and shortcuts are as
before. Checked: node 144, browser 117, 9 mutations caught.
--- FR ---
[IMP] participants, tables, import : comptes, pastilles, messages
Une longue liste se parcourait mal par organisation. Elle s'ouvre sur
des comptes et une légende des appartenances avec leur effectif ; la
grille montre l'appartenance en pastille de sa teinte, le titre
pressenti et l'exclusion en pastilles à icône, et les commandes de ligne
passent à la ligne sans casser leur libellé à 1024 px. L'aperçu et le
rapport d'import classent chaque message en refus, avis ou information.
L'édition et les raccourcis ne changent pas. Vérifié : node 144,
navigateur 117, 9 mutations prises.
Assisted-by: Claude Opus 5.5
2026-10-11 00:58:07 -04:00
|
|
|
|
{/snippet}
|
|
|
|
|
|
</Rapport>
|
[ADD] interface: event list, open event, participants, import, plan
The working screens of an evening. The home screen lists the events of
the working folder, asks its question, loads demos, copies, renames,
imports and deletes, and shows what the trash holds. An open event frames
its mode, offers Modifier, Débloquer and a confirmed lock takeover, and
shows its warnings. Participants get a grid, a form and a file; an import
goes through a preview and a report; tables, the default and tours have
their screens; the plan draws tables, chairs, empty seats and names.
Checked: 2342 node, 356 browser, 60 node-long; the Electron start check.
--- FR ---
[ADD] interface : liste, événement, participants, import, tables, plan
Les écrans de travail d'une soirée. L'accueil liste les événements du
dossier de travail, pose sa question, charge les démonstrations, copie,
renomme, importe et supprime, et montre ce que tient la corbeille. Un
événement ouvert encadre son mode, offre Modifier, Débloquer et une
reprise de verrou confirmée, et montre ses avertissements. Les
participants ont une grille, un formulaire et une fiche ; un import passe
par un aperçu et un rapport ; tables, défaut et tours ont leurs écrans ;
le plan dessine tables, chaises, sièges vides et noms.
Vérifié : 2342 node, 356 navigateur, 60 node-long ; démarrage d'Electron.
Assisted-by: Claude Opus 5.5
2026-10-07 08:12:27 -04:00
|
|
|
|
{/if}
|
|
|
|
|
|
|
|
|
|
|
|
{#if confirmation !== null}
|
|
|
|
|
|
<Confirmation
|
|
|
|
|
|
titre="import.remplacer.titre"
|
|
|
|
|
|
elements={confirmation.elements}
|
|
|
|
|
|
surConfirmer={confirmerRemplacement}
|
|
|
|
|
|
surAnnuler={() => (confirmation = null)}
|
|
|
|
|
|
/>
|
|
|
|
|
|
{/if}
|
[IMP] participants, tables, import: counts, membership pills, messages
Long participant lists were hard to scan by organisation. The list now
opens on counts and a legend of memberships, each with its headcount;
the grid shows a membership as a pill of its tint, the expected title
and the exclusion as icon pills, and row commands wrap without breaking
their labels at 1024 px. The import preview and report class each
message as refus, avis or information. Editing and shortcuts are as
before. Checked: node 144, browser 117, 9 mutations caught.
--- FR ---
[IMP] participants, tables, import : comptes, pastilles, messages
Une longue liste se parcourait mal par organisation. Elle s'ouvre sur
des comptes et une légende des appartenances avec leur effectif ; la
grille montre l'appartenance en pastille de sa teinte, le titre
pressenti et l'exclusion en pastilles à icône, et les commandes de ligne
passent à la ligne sans casser leur libellé à 1024 px. L'aperçu et le
rapport d'import classent chaque message en refus, avis ou information.
L'édition et les raccourcis ne changent pas. Vérifié : node 144,
navigateur 117, 9 mutations prises.
Assisted-by: Claude Opus 5.5
2026-10-11 00:58:07 -04:00
|
|
|
|
</div>
|
[ADD] interface: event list, open event, participants, import, plan
The working screens of an evening. The home screen lists the events of
the working folder, asks its question, loads demos, copies, renames,
imports and deletes, and shows what the trash holds. An open event frames
its mode, offers Modifier, Débloquer and a confirmed lock takeover, and
shows its warnings. Participants get a grid, a form and a file; an import
goes through a preview and a report; tables, the default and tours have
their screens; the plan draws tables, chairs, empty seats and names.
Checked: 2342 node, 356 browser, 60 node-long; the Electron start check.
--- FR ---
[ADD] interface : liste, événement, participants, import, tables, plan
Les écrans de travail d'une soirée. L'accueil liste les événements du
dossier de travail, pose sa question, charge les démonstrations, copie,
renomme, importe et supprime, et montre ce que tient la corbeille. Un
événement ouvert encadre son mode, offre Modifier, Débloquer et une
reprise de verrou confirmée, et montre ses avertissements. Les
participants ont une grille, un formulaire et une fiche ; un import passe
par un aperçu et un rapport ; tables, défaut et tours ont leurs écrans ;
le plan dessine tables, chaises, sièges vides et noms.
Vérifié : 2342 node, 356 navigateur, 60 node-long ; démarrage d'Electron.
Assisted-by: Claude Opus 5.5
2026-10-07 08:12:27 -04:00
|
|
|
|
|
|
|
|
|
|
<style>
|
|
|
|
|
|
.import {
|
|
|
|
|
|
display: flex;
|
|
|
|
|
|
flex-direction: column;
|
[IMP] participants, tables, import: counts, membership pills, messages
Long participant lists were hard to scan by organisation. The list now
opens on counts and a legend of memberships, each with its headcount;
the grid shows a membership as a pill of its tint, the expected title
and the exclusion as icon pills, and row commands wrap without breaking
their labels at 1024 px. The import preview and report class each
message as refus, avis or information. Editing and shortcuts are as
before. Checked: node 144, browser 117, 9 mutations caught.
--- FR ---
[IMP] participants, tables, import : comptes, pastilles, messages
Une longue liste se parcourait mal par organisation. Elle s'ouvre sur
des comptes et une légende des appartenances avec leur effectif ; la
grille montre l'appartenance en pastille de sa teinte, le titre
pressenti et l'exclusion en pastilles à icône, et les commandes de ligne
passent à la ligne sans casser leur libellé à 1024 px. L'aperçu et le
rapport d'import classent chaque message en refus, avis ou information.
L'édition et les raccourcis ne changent pas. Vérifié : node 144,
navigateur 117, 9 mutations prises.
Assisted-by: Claude Opus 5.5
2026-10-11 00:58:07 -04:00
|
|
|
|
gap: var(--espace-4);
|
[ADD] interface: event list, open event, participants, import, plan
The working screens of an evening. The home screen lists the events of
the working folder, asks its question, loads demos, copies, renames,
imports and deletes, and shows what the trash holds. An open event frames
its mode, offers Modifier, Débloquer and a confirmed lock takeover, and
shows its warnings. Participants get a grid, a form and a file; an import
goes through a preview and a report; tables, the default and tours have
their screens; the plan draws tables, chairs, empty seats and names.
Checked: 2342 node, 356 browser, 60 node-long; the Electron start check.
--- FR ---
[ADD] interface : liste, événement, participants, import, tables, plan
Les écrans de travail d'une soirée. L'accueil liste les événements du
dossier de travail, pose sa question, charge les démonstrations, copie,
renomme, importe et supprime, et montre ce que tient la corbeille. Un
événement ouvert encadre son mode, offre Modifier, Débloquer et une
reprise de verrou confirmée, et montre ses avertissements. Les
participants ont une grille, un formulaire et une fiche ; un import passe
par un aperçu et un rapport ; tables, défaut et tours ont leurs écrans ;
le plan dessine tables, chaises, sièges vides et noms.
Vérifié : 2342 node, 356 navigateur, 60 node-long ; démarrage d'Electron.
Assisted-by: Claude Opus 5.5
2026-10-07 08:12:27 -04:00
|
|
|
|
}
|
|
|
|
|
|
|
[IMP] participants, tables, import: counts, membership pills, messages
Long participant lists were hard to scan by organisation. The list now
opens on counts and a legend of memberships, each with its headcount;
the grid shows a membership as a pill of its tint, the expected title
and the exclusion as icon pills, and row commands wrap without breaking
their labels at 1024 px. The import preview and report class each
message as refus, avis or information. Editing and shortcuts are as
before. Checked: node 144, browser 117, 9 mutations caught.
--- FR ---
[IMP] participants, tables, import : comptes, pastilles, messages
Une longue liste se parcourait mal par organisation. Elle s'ouvre sur
des comptes et une légende des appartenances avec leur effectif ; la
grille montre l'appartenance en pastille de sa teinte, le titre
pressenti et l'exclusion en pastilles à icône, et les commandes de ligne
passent à la ligne sans casser leur libellé à 1024 px. L'aperçu et le
rapport d'import classent chaque message en refus, avis ou information.
L'édition et les raccourcis ne changent pas. Vérifié : node 144,
navigateur 117, 9 mutations prises.
Assisted-by: Claude Opus 5.5
2026-10-11 00:58:07 -04:00
|
|
|
|
.contenu {
|
[ADD] interface: event list, open event, participants, import, plan
The working screens of an evening. The home screen lists the events of
the working folder, asks its question, loads demos, copies, renames,
imports and deletes, and shows what the trash holds. An open event frames
its mode, offers Modifier, Débloquer and a confirmed lock takeover, and
shows its warnings. Participants get a grid, a form and a file; an import
goes through a preview and a report; tables, the default and tours have
their screens; the plan draws tables, chairs, empty seats and names.
Checked: 2342 node, 356 browser, 60 node-long; the Electron start check.
--- FR ---
[ADD] interface : liste, événement, participants, import, tables, plan
Les écrans de travail d'une soirée. L'accueil liste les événements du
dossier de travail, pose sa question, charge les démonstrations, copie,
renomme, importe et supprime, et montre ce que tient la corbeille. Un
événement ouvert encadre son mode, offre Modifier, Débloquer et une
reprise de verrou confirmée, et montre ses avertissements. Les
participants ont une grille, un formulaire et une fiche ; un import passe
par un aperçu et un rapport ; tables, défaut et tours ont leurs écrans ;
le plan dessine tables, chaises, sièges vides et noms.
Vérifié : 2342 node, 356 navigateur, 60 node-long ; démarrage d'Electron.
Assisted-by: Claude Opus 5.5
2026-10-07 08:12:27 -04:00
|
|
|
|
display: flex;
|
|
|
|
|
|
flex-direction: column;
|
|
|
|
|
|
gap: var(--espace-3);
|
[IMP] participants, tables, import: counts, membership pills, messages
Long participant lists were hard to scan by organisation. The list now
opens on counts and a legend of memberships, each with its headcount;
the grid shows a membership as a pill of its tint, the expected title
and the exclusion as icon pills, and row commands wrap without breaking
their labels at 1024 px. The import preview and report class each
message as refus, avis or information. Editing and shortcuts are as
before. Checked: node 144, browser 117, 9 mutations caught.
--- FR ---
[IMP] participants, tables, import : comptes, pastilles, messages
Une longue liste se parcourait mal par organisation. Elle s'ouvre sur
des comptes et une légende des appartenances avec leur effectif ; la
grille montre l'appartenance en pastille de sa teinte, le titre
pressenti et l'exclusion en pastilles à icône, et les commandes de ligne
passent à la ligne sans casser leur libellé à 1024 px. L'aperçu et le
rapport d'import classent chaque message en refus, avis ou information.
L'édition et les raccourcis ne changent pas. Vérifié : node 144,
navigateur 117, 9 mutations prises.
Assisted-by: Claude Opus 5.5
2026-10-11 00:58:07 -04:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
p {
|
|
|
|
|
|
margin: 0;
|
[ADD] interface: event list, open event, participants, import, plan
The working screens of an evening. The home screen lists the events of
the working folder, asks its question, loads demos, copies, renames,
imports and deletes, and shows what the trash holds. An open event frames
its mode, offers Modifier, Débloquer and a confirmed lock takeover, and
shows its warnings. Participants get a grid, a form and a file; an import
goes through a preview and a report; tables, the default and tours have
their screens; the plan draws tables, chairs, empty seats and names.
Checked: 2342 node, 356 browser, 60 node-long; the Electron start check.
--- FR ---
[ADD] interface : liste, événement, participants, import, tables, plan
Les écrans de travail d'une soirée. L'accueil liste les événements du
dossier de travail, pose sa question, charge les démonstrations, copie,
renomme, importe et supprime, et montre ce que tient la corbeille. Un
événement ouvert encadre son mode, offre Modifier, Débloquer et une
reprise de verrou confirmée, et montre ses avertissements. Les
participants ont une grille, un formulaire et une fiche ; un import passe
par un aperçu et un rapport ; tables, défaut et tours ont leurs écrans ;
le plan dessine tables, chaises, sièges vides et noms.
Vérifié : 2342 node, 356 navigateur, 60 node-long ; démarrage d'Electron.
Assisted-by: Claude Opus 5.5
2026-10-07 08:12:27 -04:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
.commandes {
|
|
|
|
|
|
display: flex;
|
|
|
|
|
|
flex-wrap: wrap;
|
|
|
|
|
|
align-items: flex-start;
|
|
|
|
|
|
gap: var(--espace-2);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
.modes {
|
|
|
|
|
|
display: flex;
|
|
|
|
|
|
flex-wrap: wrap;
|
|
|
|
|
|
gap: var(--espace-3);
|
[IMP] participants, tables, import: counts, membership pills, messages
Long participant lists were hard to scan by organisation. The list now
opens on counts and a legend of memberships, each with its headcount;
the grid shows a membership as a pill of its tint, the expected title
and the exclusion as icon pills, and row commands wrap without breaking
their labels at 1024 px. The import preview and report class each
message as refus, avis or information. Editing and shortcuts are as
before. Checked: node 144, browser 117, 9 mutations caught.
--- FR ---
[IMP] participants, tables, import : comptes, pastilles, messages
Une longue liste se parcourait mal par organisation. Elle s'ouvre sur
des comptes et une légende des appartenances avec leur effectif ; la
grille montre l'appartenance en pastille de sa teinte, le titre
pressenti et l'exclusion en pastilles à icône, et les commandes de ligne
passent à la ligne sans casser leur libellé à 1024 px. L'aperçu et le
rapport d'import classent chaque message en refus, avis ou information.
L'édition et les raccourcis ne changent pas. Vérifié : node 144,
navigateur 117, 9 mutations prises.
Assisted-by: Claude Opus 5.5
2026-10-11 00:58:07 -04:00
|
|
|
|
margin: 0;
|
|
|
|
|
|
padding: var(--espace-2) var(--espace-3);
|
|
|
|
|
|
border: 1px solid var(--couleur-carte-filet);
|
|
|
|
|
|
border-radius: var(--rayon-2);
|
|
|
|
|
|
background-color: var(--couleur-carte-fond-sourd);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
legend {
|
|
|
|
|
|
padding: 0 var(--espace-1);
|
|
|
|
|
|
font-weight: bold;
|
[ADD] interface: event list, open event, participants, import, plan
The working screens of an evening. The home screen lists the events of
the working folder, asks its question, loads demos, copies, renames,
imports and deletes, and shows what the trash holds. An open event frames
its mode, offers Modifier, Débloquer and a confirmed lock takeover, and
shows its warnings. Participants get a grid, a form and a file; an import
goes through a preview and a report; tables, the default and tours have
their screens; the plan draws tables, chairs, empty seats and names.
Checked: 2342 node, 356 browser, 60 node-long; the Electron start check.
--- FR ---
[ADD] interface : liste, événement, participants, import, tables, plan
Les écrans de travail d'une soirée. L'accueil liste les événements du
dossier de travail, pose sa question, charge les démonstrations, copie,
renomme, importe et supprime, et montre ce que tient la corbeille. Un
événement ouvert encadre son mode, offre Modifier, Débloquer et une
reprise de verrou confirmée, et montre ses avertissements. Les
participants ont une grille, un formulaire et une fiche ; un import passe
par un aperçu et un rapport ; tables, défaut et tours ont leurs écrans ;
le plan dessine tables, chaises, sièges vides et noms.
Vérifié : 2342 node, 356 navigateur, 60 node-long ; démarrage d'Electron.
Assisted-by: Claude Opus 5.5
2026-10-07 08:12:27 -04:00
|
|
|
|
}
|
|
|
|
|
|
</style>
|