card cosmo ambient

This commit is contained in:
2026-02-21 17:52:28 +04:00
parent e1f9e3a6e8
commit cf10410f2f
4 changed files with 347 additions and 58 deletions

View File

@@ -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;