()
| 488 | Bootstrapping & live refresh |
| 489 | -------------------------------------------------------------------------- */ |
| 490 | async function fetchAndRenderAnalytics() { |
| 491 | try { |
| 492 | await Promise.all([ |
| 493 | renderHeader(), |
| 494 | renderPercentageChanges(), |
| 495 | renderSessions(), |
| 496 | renderSummary(), |
| 497 | renderHourlySummary(), |
| 498 | renderUrls(), |
| 499 | renderBrowsers(), |
| 500 | renderReferrers(), |
| 501 | renderWeeklyHeatmap(), |
| 502 | renderGlobe(), |
| 503 | ]); |
| 504 | } catch (e) { |
| 505 | console.error("Error fetching analytics:", e); |
| 506 | } |
| 507 | } |
| 508 | |
| 509 | function refreshAnalytics() { |
| 510 | if (document.hidden) return; |
no test coverage detected