diff --git a/public/assets/js/admin-stats.js b/public/assets/js/admin-stats.js
index 99ed4db..a0c0214 100644
--- a/public/assets/js/admin-stats.js
+++ b/public/assets/js/admin-stats.js
@@ -54,41 +54,109 @@
var trendEl = document.getElementById('stats-trend-container');
if (!trendEl || !totals.length) { return; }
- var days = totals.length;
- var maxV = Math.max.apply(null, totals) || 1;
- var W = 1000; // viewBox, s'adapte en CSS
- var H = 80;
- var padX = 4;
- var padY = 8;
- var barW = Math.floor((W - 2 * padX) / days) - 2;
+ var n = totals.length;
+ var VW = 900, VH = 160;
+ var ml = 44, mr = 12, mt = 12, mb = 28; // marges pour axes
+ var W = VW - ml - mr;
+ var H = VH - mt - mb;
- // Dates des jours (index 0 = il y a 13 jours)
- var now = new Date();
+ // Échelle Y — plafond arrondi à un multiple "propre"
+ var rawMax = Math.max.apply(null, totals) || 1;
+ var mag = Math.pow(10, Math.floor(Math.log(rawMax) / Math.LN10));
+ var maxV = Math.ceil(rawMax / mag) * mag;
+ var nTicks = 4;
+
+ // Dates
+ var now = new Date();
var labels = totals.map(function (_, i) {
var d = new Date(now);
- d.setDate(d.getDate() - (days - 1 - i));
+ d.setDate(d.getDate() - (n - 1 - i));
return d.toLocaleDateString('fr-FR', { day: 'numeric', month: 'short' });
});
- var bars = totals.map(function (v, i) {
- var x = padX + i * (W - 2 * padX) / days + 1;
- var bh = Math.max(2, (v / maxV) * (H - padY - 16));
- var y = H - padY - bh;
- var lx = x + barW / 2;
- var label = labels[i];
- var showLabel = (i === 0 || i === days - 1 || i === Math.floor(days / 2));
- return '
Trafic total — 14 derniers jours
' - + ''; + trendEl.innerHTML = + 'Trafic total — 14 derniers jours
' + + ''; } fetch('/trending?period=14d')