diff --git a/src/lib/components/StationList.svelte b/src/lib/components/StationList.svelte
index 203058a..d100b79 100644
--- a/src/lib/components/StationList.svelte
+++ b/src/lib/components/StationList.svelte
@@ -2,7 +2,7 @@
import StationRow from './StationRow.svelte';
import groups from '$lib/groups.json';
- export let stations = [];
+ let { stations = [] } = $props();
// Set per lookup O(1): con molte centraline, includes() su array per ogni riga sarebbe O(n²).
const groupedIds = new Set(groups.flatMap(g => g.ids));
@@ -16,7 +16,7 @@
});
}
- const sections = [
+ const sections = $derived([
...groups.map(g => ({
name: g.name,
stations: sortStations(stations.filter(s => g.ids.includes(s.pk))),
@@ -25,7 +25,7 @@
name: 'Altre',
stations: sortStations(stations.filter(s => !groupedIds.has(s.pk))),
},
- ].filter(s => s.stations.length > 0);
+ ].filter(s => s.stations.length > 0));
diff --git a/src/lib/components/StationRow.svelte b/src/lib/components/StationRow.svelte
index 345a50e..e17e13c 100644
--- a/src/lib/components/StationRow.svelte
+++ b/src/lib/components/StationRow.svelte
@@ -5,9 +5,7 @@
import { downloadCsv, buildFilename } from '$lib/csv.js';
import { enqueue } from '$lib/download-pool.js';
- export let station;
-
- const isActive = station.ended_at === null;
+ let { station } = $props();
const formatDate = d => new Intl.DateTimeFormat('it-IT', {
timeZone: 'Europe/Rome',
@@ -16,18 +14,18 @@
year: 'numeric',
}).format(new Date(d));
- const createdDate = formatDate(station.created_at);
- const endDate = isActive ? null : formatDate(station.ended_at);
+ const isActive = $derived(station.ended_at === null);
+ const createdDate = $derived(formatDate(station.created_at));
+ const endDate = $derived(isActive ? null : formatDate(station.ended_at));
- let showTooltip = false;
- let downloading = false;
- let cancelling = false;
- let completed = false;
+ let downloading = $state(false);
+ let cancelling = $state(false);
+ let completed = $state(false);
let controller = null;
- let currentDay = 0;
- let totalDays = 0;
+ let currentDay = $state(0);
+ let totalDays = $state(0);
- $: pct = totalDays > 0 ? (currentDay / totalDays) * 100 : 0;
+ let pct = $derived(totalDays > 0 ? (currentDay / totalDays) * 100 : 0);
async function startDownload() {
const { buildCsvAsync } = await import('$lib/csv-pool.js');
@@ -94,15 +92,9 @@
Attivata il {createdDate}
·
- showTooltip = true}
- on:mouseleave={() => showTooltip = false}
- >
+
{isActive ? 'Attiva' : 'Terminata'}
- {#if !isActive && showTooltip}
+ {#if !isActive}
Terminata il {endDate}
{/if}
@@ -110,7 +102,7 @@