card event et streak
This commit is contained in:
@@ -25,7 +25,7 @@ const accentColor = categoryColors[type] || categoryColors["default"];
|
|||||||
<article class="event-card" style={`--accent-color: ${accentColor}`}>
|
<article class="event-card" style={`--accent-color: ${accentColor}`}>
|
||||||
<div class="card-inner">
|
<div class="card-inner">
|
||||||
<header class="event-header">
|
<header class="event-header">
|
||||||
<span class="event-type">ÉVÉNEMENT IRL</span>
|
<span class="event-type">{type.toUpperCase()}</span>
|
||||||
<span class="event-status">{status}</span>
|
<span class="event-status">{status}</span>
|
||||||
</header>
|
</header>
|
||||||
|
|
||||||
@@ -42,7 +42,13 @@ const accentColor = categoryColors[type] || categoryColors["default"];
|
|||||||
<p class="summary">{summary}</p>
|
<p class="summary">{summary}</p>
|
||||||
|
|
||||||
<div class="participants-box">
|
<div class="participants-box">
|
||||||
<span class="label">Membres impliqués :</span>
|
<span class="label">
|
||||||
|
{
|
||||||
|
type === "Festival"
|
||||||
|
? "Artistes invités :"
|
||||||
|
: "Membres impliqués :"
|
||||||
|
}
|
||||||
|
</span>
|
||||||
<div class="tags">
|
<div class="tags">
|
||||||
{participants.map((p) => <span class="p-tag">{p}</span>)}
|
{participants.map((p) => <span class="p-tag">{p}</span>)}
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -35,31 +35,37 @@ const getStreak = (name, entries) => {
|
|||||||
.reverse();
|
.reverse();
|
||||||
let streak = 0;
|
let streak = 0;
|
||||||
let today = new Date();
|
let today = new Date();
|
||||||
|
// Utiliser Date.UTC pour aligner la date locale avec le format ISO UTC des collections
|
||||||
let checkDate = new Date(
|
let checkDate = new Date(
|
||||||
today.getFullYear(),
|
Date.UTC(today.getFullYear(), today.getMonth(), today.getDate()),
|
||||||
today.getMonth(),
|
|
||||||
today.getDate(),
|
|
||||||
);
|
);
|
||||||
|
let todaySkipped = false;
|
||||||
|
|
||||||
for (let i = 0; i < 31; i++) {
|
for (let i = 0; i < 31; i++) {
|
||||||
const dateStr = checkDate.toISOString().split("T")[0];
|
const dateStr = checkDate.toISOString().split("T")[0];
|
||||||
if (uniqueDates.includes(dateStr)) {
|
if (uniqueDates.includes(dateStr)) {
|
||||||
streak++;
|
streak++;
|
||||||
checkDate.setDate(checkDate.getDate() - 1);
|
checkDate.setUTCDate(checkDate.getUTCDate() - 1);
|
||||||
} else {
|
} else {
|
||||||
if (i === 0) {
|
if (i === 0) {
|
||||||
checkDate.setDate(checkDate.getDate() - 1);
|
checkDate.setUTCDate(checkDate.getUTCDate() - 1);
|
||||||
const yesterdayStr = checkDate.toISOString().split("T")[0];
|
const yesterdayStr = checkDate.toISOString().split("T")[0];
|
||||||
if (uniqueDates.includes(yesterdayStr)) continue;
|
if (uniqueDates.includes(yesterdayStr)) {
|
||||||
|
todaySkipped = true;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Malus HYG [cite: 103, 106]
|
// Malus HYG [cite: 103, 106]
|
||||||
|
const shiftDays = todaySkipped ? 1 : 0;
|
||||||
const last7Days = Array.from({ length: 7 }, (_, j) => {
|
const last7Days = Array.from({ length: 7 }, (_, j) => {
|
||||||
let d = new Date();
|
let d = new Date(
|
||||||
d.setDate(d.getDate() - j);
|
Date.UTC(today.getFullYear(), today.getMonth(), today.getDate()),
|
||||||
|
);
|
||||||
|
d.setUTCDate(d.getUTCDate() - (j + shiftDays));
|
||||||
return d.toISOString().split("T")[0];
|
return d.toISOString().split("T")[0];
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user