| 2034 | } |
| 2035 | |
| 2036 | function renderTodayStats(total, success, failed, rate) { |
| 2037 | if (elements.todayStatsTotal) { |
| 2038 | elements.todayStatsTotal.textContent = String(Math.max(0, total)); |
| 2039 | } |
| 2040 | if (elements.todayStatsSuccess) { |
| 2041 | elements.todayStatsSuccess.textContent = String(Math.max(0, success)); |
| 2042 | } |
| 2043 | if (elements.todayStatsFailed) { |
| 2044 | elements.todayStatsFailed.textContent = String(Math.max(0, failed)); |
| 2045 | } |
| 2046 | if (elements.todayStatsRate) { |
| 2047 | const safeRate = Math.max(0, rate); |
| 2048 | const rateCard = elements.todayStatsRate.closest('.today-stat-rate'); |
| 2049 | elements.todayStatsRate.textContent = `${safeRate.toFixed(1)}%`; |
| 2050 | elements.todayStatsRate.classList.remove('rate-high', 'rate-mid', 'rate-low'); |
| 2051 | if (rateCard) { |
| 2052 | rateCard.classList.remove('rate-high', 'rate-mid', 'rate-low'); |
| 2053 | } |
| 2054 | if (safeRate >= 70) { |
| 2055 | elements.todayStatsRate.classList.add('rate-high'); |
| 2056 | if (rateCard) rateCard.classList.add('rate-high'); |
| 2057 | } else if (safeRate < 40) { |
| 2058 | elements.todayStatsRate.classList.add('rate-low'); |
| 2059 | if (rateCard) rateCard.classList.add('rate-low'); |
| 2060 | } else { |
| 2061 | elements.todayStatsRate.classList.add('rate-mid'); |
| 2062 | if (rateCard) rateCard.classList.add('rate-mid'); |
| 2063 | } |
| 2064 | } |
| 2065 | } |
| 2066 | |
| 2067 | async function loadTodayStats(silent = true) { |
| 2068 | try { |