diff --git a/src/components/StatsDisplay.tsx b/src/components/StatsDisplay.tsx index 03c8187..e384f1e 100644 --- a/src/components/StatsDisplay.tsx +++ b/src/components/StatsDisplay.tsx @@ -31,6 +31,7 @@ export interface PropositionStats { participationRate: number; voteDistribution: number; consensusScore: number; + averagePerTotalVoters: number; } type SortOption = @@ -247,25 +248,25 @@ export function StatsDisplay({
+
+

+ {stat.averagePerTotalVoters}€ +

+

Moyenne / total votants

+

{stat.voteCount}

- {stat.voteCount === 1 ? 'Votant' : 'Votants'} + {stat.voteCount === 1 ? 'Soutien' : 'Soutiens'}

{stat.averageAmount}€

-

Moyenne

-
-
-

- {stat.totalAmount}€ -

-

Total

+

Moyenne des soutiens

diff --git a/src/hooks/useStatsCalculation.ts b/src/hooks/useStatsCalculation.ts index c67e3ce..9dd9e52 100644 --- a/src/hooks/useStatsCalculation.ts +++ b/src/hooks/useStatsCalculation.ts @@ -31,6 +31,11 @@ export function useStatsCalculation( // Calculer la répartition des votes (nombre de montants différents) const uniqueAmounts = new Set(amounts).size; + // Calculer la moyenne par rapport au nombre total de votants + const averagePerTotalVoters = participants.length > 0 + ? Math.round(totalAmount / participants.length) + : 0; + return { proposition, voteCount: propositionVotes.length, @@ -40,7 +45,8 @@ export function useStatsCalculation( totalAmount, participationRate: Math.round(participationRate * 100) / 100, voteDistribution: uniqueAmounts, - consensusScore: Math.round(consensusScore * 100) / 100 + consensusScore: Math.round(consensusScore * 100) / 100, + averagePerTotalVoters }; }); }, [campaign, participants, propositions, votes]); diff --git a/src/lib/export-utils.ts b/src/lib/export-utils.ts index 02d79c4..33d28e4 100644 --- a/src/lib/export-utils.ts +++ b/src/lib/export-utils.ts @@ -39,6 +39,7 @@ export interface PropositionStats { participationRate: number; voteDistribution: number; consensusScore: number; + averagePerTotalVoters: number; } export async function generateVoteExport(data: ExportData): Promise<{ data: Uint8Array | string; format: ExportFileFormat }> {