Add shimmer

This commit is contained in:
Kenwood 2025-07-03 15:25:15 -04:00
parent 2b9ca9ad31
commit 69943d15ec
3 changed files with 52 additions and 3 deletions

View File

@ -22,7 +22,7 @@
{ "date": 1746126240, "text": "Added 1% Coyote Cum." }, { "date": 1746126240, "text": "Added 1% Coyote Cum." },
{ "date": 1751396678, "text": "CV'd Zae~" }, { "date": 1751396678, "text": "CV'd Zae~" },
{ "date": 1751407200, "text": "Zae added 41% Kan'vi Cum" }, { "date": 1751407200, "text": "Zae added 41% Kan'vi Cum" },
{ "date": 1751493600, "text": "Added 1% Coyote Cum." }, { "date": 1751547600, "text": "Added 1% Coyote Cum." },
{ "date": 1751569534, "text": "Dumped 40% into Ky-Li" } { "date": 1751569534, "text": "Dumped 40% into Ky-Li" }
] ]
} }

View File

@ -143,11 +143,33 @@
const logList = document.getElementById("logList"); const logList = document.getElementById("logList");
logList.innerHTML = ""; logList.innerHTML = "";
if (tankData.logs) { if (tankData.logs) {
const now = Date.now() / 1000;
tankData.logs.forEach(log => { tankData.logs.forEach(log => {
const li = document.createElement("li"); const li = document.createElement("li");
// If log.date is a string, try to parse as epoch seconds
let epoch = typeof log.date === 'number' ? log.date : Date.parse(log.date) / 1000; let epoch = typeof log.date === 'number' ? log.date : Date.parse(log.date) / 1000;
// timesago expects ms const ageHours = (now - epoch) / 3600;
// Color interpolation: 0h = #fff, 8h = #888
let color;
if (ageHours <= 0) {
color = "#fff";
} else if (ageHours >= 8) {
color = "#888";
} else {
// Linear interpolation between #fff and #888
const t = ageHours / 8;
const r = Math.round(255 + (136 - 255) * t);
const g = Math.round(255 + (136 - 255) * t);
const b = Math.round(255 + (136 - 255) * t);
color = `rgb(${r},${g},${b})`;
}
li.style.color = color;
// Add shimmer class if less than 8 hours old
if (ageHours < 8) {
li.classList.add("log-shimmer");
}
li.textContent = `${window.timesago ? timesago(epoch * 1000) : log.date} — ${log.text}`; li.textContent = `${window.timesago ? timesago(epoch * 1000) : log.date} — ${log.text}`;
logList.appendChild(li); logList.appendChild(li);
}); });

View File

@ -219,3 +219,30 @@ h1 {
font-size: 0.95em; font-size: 0.95em;
word-break: break-word; word-break: break-word;
} }
.log-shimmer {
background: linear-gradient(
90deg,
#fff 0%,
#f8f8ff 20%,
#ffe 40%,
#fff 60%,
#e0e0e0 80%,
#fff 100%
);
background-size: 400% 100%;
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
animation: shimmer 6s linear infinite;
font-weight: bold;
filter: drop-shadow(0 0 2px #fff8);
}
@keyframes shimmer {
0% {
background-position: 400% 0;
}
100% {
background-position: 0 0;
}
}