card cosmo ambient
This commit is contained in:
@@ -12,15 +12,20 @@ const sortedAll = allHumans.sort(
|
||||
|
||||
// 2. Fonction de calcul de Streak (Série) corrigée
|
||||
const getStreak = (name, entries) => {
|
||||
// On extrait toutes les dates pour cet utilisateur au format YYYY-MM-DD
|
||||
// 1. On récupère les données utiles (date + si HYG était présent)
|
||||
const userDates = entries
|
||||
.filter((e) => e.data.name === name)
|
||||
.map((e) => new Date(e.data.date).toISOString().split("T")[0]);
|
||||
.map((e) => ({
|
||||
date: new Date(e.data.date).toISOString().split("T")[0],
|
||||
hasHyg:
|
||||
e.data.manifestations?.some((m) => m.cercle === "HYG") || false,
|
||||
}));
|
||||
|
||||
// On dédoublonne et on trie (plus récent au plus ancien)
|
||||
const uniqueDates = [...new Set(userDates)].sort().reverse();
|
||||
|
||||
let streak = 0;
|
||||
let hygCountLast7Days = 0;
|
||||
let today = new Date();
|
||||
// On cale la date de vérification sur aujourd'hui à minuit
|
||||
let checkDate = new Date(
|
||||
@@ -45,6 +50,24 @@ const getStreak = (name, entries) => {
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
// 2. Logique Malus HYG (7 derniers jours glissants)
|
||||
const last7Days = [];
|
||||
for (let j = 0; j < 7; j++) {
|
||||
let d = new Date();
|
||||
d.setDate(d.getDate() - j);
|
||||
last7Days.push(d.toISOString().split("T")[0]);
|
||||
}
|
||||
|
||||
hygCountLast7Days = userDates.filter(
|
||||
(e) => last7Days.includes(e.date) && e.hasHyg,
|
||||
).length;
|
||||
|
||||
// Si moins de 3 sessions HYG sur les 7 derniers jours, malus de 1
|
||||
if (hygCountLast7Days < 3 && streak > 0) {
|
||||
streak = Math.max(0, streak - 1);
|
||||
}
|
||||
|
||||
return streak;
|
||||
};
|
||||
|
||||
@@ -62,6 +85,7 @@ const latestPerUser = Array.from(
|
||||
---
|
||||
|
||||
<Layout title="Derniers Souffles">
|
||||
<h1 style="text-align: center;">Ambient</h1>
|
||||
<header class="minimal-header">
|
||||
<nav>
|
||||
<a href="/collection" class="menu-link">
|
||||
@@ -100,7 +124,7 @@ const latestPerUser = Array.from(
|
||||
<style>
|
||||
.minimal-header {
|
||||
position: fixed;
|
||||
top: 0;
|
||||
top: 50px;
|
||||
right: 0;
|
||||
padding: 20px 30px;
|
||||
z-index: 100;
|
||||
|
||||
Reference in New Issue
Block a user