Skip to content

Commit 9434db4

Browse files
committed
feat: aggiornato il calcolo dell'accelerazione delle firme per mostrare la variazione percentuale e migliorata la descrizione nella pagina Numeri
1 parent 9631918 commit 9434db4

2 files changed

Lines changed: 18 additions & 13 deletions

File tree

LOG.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
## 2025-07-09
44

5-
* Aggiunto indicatore di "Tendenza" nella pagina Numeri per mostrare l'accelerazione o decelerazione delle firme. Il dato, visibile solo su desktop, confronta le firme raccolte ieri con quelle del giorno precedente.
5+
* Modificato l'indicatore di "Tendenza" nella pagina Numeri: ora mostra la variazione percentuale della crescita delle firme. Questo permette un confronto più equo ed efficace tra iniziative con volumi di raccolta molto diversi.
66
* Semplificata la tabella per dispositivi mobili nella pagina Numeri, rimuovendo la colonna della tendenza per una migliore leggibilità.
77
* Aggiunta la sezione "Timeline sostenitori" nella pagina di dettaglio dell'iniziativa. Questa sezione mostra un grafico con l'andamento temporale del numero di sostenitori ed è visibile solo per le iniziative per cui sono disponibili dati storici.
88
* I valori della "Media sostenitori giornalieri" nella tabella e nel grafico lollipop della pagina Numeri sono ora arrotondati a numero intero (firme), senza decimali, per maggiore chiarezza e coerenza.

src/pages/numeri.astro

Lines changed: 17 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -38,23 +38,28 @@ const timeLineGroups = timeLineData.reduce((acc, d) => {
3838
return acc;
3939
}, {} as Record<string, any[]>);
4040
41-
// Calcola l'accelerazione per ogni iniziativa
41+
// Calcola l'accelerazione in percentuale per ogni iniziativa
4242
const accelerationData: Record<string, number> = {};
4343
for (const id in timeLineGroups) {
4444
const group = timeLineGroups[id];
4545
// Ordina per data decrescente
4646
group.sort((a, b) => b.data.getTime() - a.data.getTime());
4747
4848
if (group.length >= 3) {
49-
const today_count = group[0].sostenitori;
50-
const yesterday_count = group[1].sostenitori;
51-
const day_before_yesterday_count = group[2].sostenitori;
52-
53-
const delta_last_day = today_count - yesterday_count;
54-
const delta_previous_day = yesterday_count - day_before_yesterday_count;
55-
56-
const acceleration = delta_last_day - delta_previous_day;
57-
accelerationData[id] = acceleration;
49+
const delta_last_day = group[0].sostenitori - group[1].sostenitori;
50+
const delta_previous_day = group[1].sostenitori - group[2].sostenitori;
51+
52+
let acceleration_percent = 0;
53+
// Calcola la percentuale solo se il giorno prima c'è stata una crescita (per evitare divisione per zero o valori fuorvianti)
54+
if (delta_previous_day > 0) {
55+
acceleration_percent = ((delta_last_day - delta_previous_day) / delta_previous_day) * 100;
56+
} else if (delta_previous_day <= 0 && delta_last_day > 0) {
57+
// Se prima non c'era crescita (o era negativa) e ora c'è, è un segnale forte.
58+
// Lo indichiamo convenzionalmente come +100% per semplicità di confronto.
59+
acceleration_percent = 100;
60+
}
61+
62+
accelerationData[id] = Math.round(acceleration_percent);
5863
}
5964
}
6065
// --- FINE LOGICA ACCELERAZIONE ---
@@ -339,7 +344,7 @@ const baseUrl = import.meta.env.BASE_URL;
339344
Tendenza:
340345
<span class="font-semibold">
341346
{initiative.acceleration > 0 ? '' : initiative.acceleration < 0 ? '' : ''}
342-
{initiative.acceleration > 0 ? ` +${initiative.acceleration}` : initiative.acceleration < 0 ? ` ${initiative.acceleration}`: ' Stabile'}
347+
{initiative.acceleration > 0 ? ` +${initiative.acceleration}%` : initiative.acceleration < 0 ? ` ${initiative.acceleration}%`: ' Stabile'}
343348
</span>
344349
</div>
345350
</div>
@@ -377,7 +382,7 @@ const baseUrl = import.meta.env.BASE_URL;
377382
<!-- Legenda e note -->
378383
<div class="mt-6 p-4 bg-gray-50 rounded-lg">
379384
<p class="text-sm text-gray-600">
380-
<strong>Nota:</strong> Mostra le 10 iniziative con la più alta media di sostenitori acquisiti per giorno. La <strong>tendenza</strong> indica l'accelerazione (o decelerazione) delle firme raccolte ieri rispetto al giorno precedente. I dati della media sono calcolati <strong>escludendo il giorno corrente</strong> per evitare valori parziali che falserebbero la statistica. L'<strong>aggiornamento</strong> dei dati avviene ogni <strong>24 ore</strong>.
385+
<strong>Nota:</strong> Mostra le 10 iniziative con la più alta media di sostenitori acquisiti per giorno. La <strong>tendenza</strong> indica la variazione percentuale delle firme raccolte ieri rispetto al giorno precedente. I dati della media sono calcolati <strong>escludendo il giorno corrente</strong> per evitare valori parziali che falserebbero la statistica. L'<strong>aggiornamento</strong> dei dati avviene ogni <strong>24 ore</strong>.
381386
</p>
382387
<p class="text-sm text-gray-600 mt-2">
383388
<strong>Tip:</strong> Clicca sulla voce per accedere alla pagina di dettaglio dell'iniziativa.

0 commit comments

Comments
 (0)