Files
decision/web/src/lib/participation.ts
T
YvvandClaude Opus 5.5 785580c78f v3 : modules d'ordre et de titre — l'interface, restes mineurs (L11, C25–C27)
Chaque section du lecteur finit par l'ordre de ses articles (inertie 2) : ses
articles numérotés, son vote déplié, « Proposer un autre ordre » — une liste où
l'on clique un article puis sa place, ses flèches, ou le clavier. Le titre du
document (inertie 4) se vote et se propose sous le titre, « traduction à
revoir » quand il a changé. Les deux sont dans la liste des propositions, le
panier et la chaîne Ğ1 ; un nouvel article se propose dans une section, à sa fin.
La liste du groupe compte les propositions ouvertes des modules.

Restes mineurs : la participation ramenée se dit en deux temps (la mesure, puis
ce que le groupe demande), les lignes « habituelle » des réglages resserrées, le
sélecteur d'inertie se parcourt aux flèches (le cran actuel atteignable, jamais
choisi), la marque « seed a minima » porte le vrai nombre de votes.

Contrôles : C25 (ordre, dont la chaîne et le téléphone), C26 (titre), C27
(participation ramenée) ; C3, C17 (41 modules), C20 mis à jour.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-31 05:35:02 +01:00

15 lines
777 B
TypeScript

import type { ParticipationInfo } from './types';
/**
* The usual participation as the settings tell it: the measured median, or the
* reference (twice C). When the scale brings it back within its bounds, the
* bounded value is what the formula uses, and is said apart. The number of
* voters is rounded for reading; its share is that of the value itself (a
* median of 2,5 voters out of 4 is 62,5 %, not 3 out of 4).
*/
export function usualShown(p: ParticipationInfo, electorate: number, floor: number): { voters: number; ratio: number } {
if (!p.bounded || electorate <= 0) return { voters: p.voters, ratio: p.ratio };
const raw = p.source === 'median' && p.median !== null ? p.median : 2 * floor;
return { voters: Math.round(raw), ratio: raw / electorate };
}