Skip to content

Commit 36f1809

Browse files
committed
feat: migliorare la logica di visualizzazione della timeline con formattazione delle date
1 parent e7f9d40 commit 36f1809

1 file changed

Lines changed: 2 additions & 58 deletions

File tree

src/pages/initiative/[id].astro

Lines changed: 2 additions & 58 deletions
Original file line numberDiff line numberDiff line change
@@ -243,64 +243,8 @@ const currentUrl = (() => {
243243
<div class="bg-white rounded-lg shadow-sm border border-gray-200 p-4 sm:p-8 mb-6 sm:mb-8">
244244
<h2 class="text-lg sm:text-xl font-semibold text-gray-900 mb-4">Timeline sostenitori</h2>
245245
<div id="chart" class="w-full overflow-x-auto"></div>
246-
<script type="module" define:vars={{ timelineData: initiativeTimeLine }}>
247-
import * as Plot from "https://cdn.jsdelivr.net/npm/@observablehq/plot@0.6/+esm";
248-
249-
const fmtIt = new Intl.NumberFormat("it-IT").format;
250-
const fmtDate = d => d.toLocaleDateString("it-IT", {
251-
day: "2-digit",
252-
month: "short",
253-
year: "2-digit"
254-
});
255-
256-
function draw() {
257-
const data = timelineData
258-
.map(d => ({ ...d, data: new Date(d.data) }))
259-
.sort((a, b) => a.data - b.data);
260-
261-
if (data.length === 0) return;
262-
263-
const container = document.getElementById("chart");
264-
if (!container) return;
265-
const { width } = container.getBoundingClientRect();
266-
267-
const chart = Plot.plot({
268-
width,
269-
marginLeft: 60,
270-
marginBottom: 40,
271-
x: {
272-
type: "utc",
273-
label: "Data",
274-
tickFormat: fmtDate
275-
},
276-
y: {
277-
label: "Sostenitori",
278-
tickFormat: fmtIt,
279-
ticks: 5,
280-
zero: true
281-
},
282-
marks: [
283-
Plot.line(data, { x: "data", y: "sostenitori", stroke: "#1f77b4" }),
284-
Plot.dot(data, {
285-
x: "data",
286-
y: "sostenitori",
287-
r: 4,
288-
fill: "#1f77b4",
289-
title: d => `sostenitori: ${fmtIt(d.sostenitori)}\n${fmtDate(d.data)}`
290-
})
291-
]
292-
});
293-
294-
container.innerHTML = "";
295-
container.append(chart);
296-
}
297-
298-
const chartContainer = document.getElementById("chart");
299-
if (chartContainer) {
300-
draw();
301-
new ResizeObserver(draw).observe(chartContainer);
302-
}
303-
</script>
246+
<script type="module" define:vars={{ timelineData: initiativeTimeLine }}> import * as Plot from "https://cdn.jsdelivr.net/npm/@observablehq/plot@0.6/+esm"; const fmtIt = new Intl.NumberFormat("it-IT").format; const fmtDateTick = d => d.toLocaleDateString("it-IT", { day: "2-digit", month: "short", year: "2-digit" }); const fmtDateTooltip = d => d.toLocaleDateString("it-IT", { day: "numeric", month: "long", year: "numeric" }); function draw() { const data = timelineData .map(d => ({ ...d, data: new Date(d.data) })) .sort((a, b) => a.data - b.data); if (data.length === 0) return; const container = document.getElementById("chart"); if (!container) return; const { width } = container.getBoundingClientRect(); const chart = Plot.plot({ width, marginLeft: 60, marginBottom: 40, x: { type: "utc", label: "Data", tickFormat: fmtDateTick }, y: { label: "Sostenitori", tickFormat: fmtIt, ticks: 5, zero: true }, marks: [ Plot.line(data, { x: "data", y: "sostenitori", stroke: "#1f77b4" }), Plot.dot(data, { x: "data", y: "sostenitori", r: 4, fill: "#1f77b4", title: d => `sostenitori: ${fmtIt(d.sostenitori)}
247+
${fmtDateTooltip(d.data)}` }) ] }); container.innerHTML = ""; container.append(chart); } const chartContainer = document.getElementById("chart"); if (chartContainer) { draw(); new ResizeObserver(draw).observe(chartContainer); } </script>
304248
</div>
305249
)}
306250

0 commit comments

Comments
 (0)