diff --git a/Dockerfile b/Dockerfile index 12ed69f..aed9d38 100644 --- a/Dockerfile +++ b/Dockerfile @@ -12,7 +12,5 @@ RUN apk --no-cache add ca-certificates COPY --from=builder /app/ulinkshortener . COPY --from=builder /app/web /app/web -ENV PORT=5000 -EXPOSE 5000 - +EXPOSE ${PORT} CMD ["./ulinkshortener"] diff --git a/web/static/js/script.js b/web/static/js/script.js index 8f64f6b..1ecc736 100644 --- a/web/static/js/script.js +++ b/web/static/js/script.js @@ -173,18 +173,38 @@ function closeDeleteDialog() { } async function loadAnalytics() { + if (!currentAccount) { + console.log("No account ID available"); + return; + } + const response = await fetch(`/analytics/${currentAccount}`); + if (!response.ok) { + console.error(`Failed to fetch analytics: ${response.status}`); + return; + } + const data = await response.json(); + if (!data) { + console.error("Invalid analytics data format"); + return; + } + + const analyticsDiv = document.getElementById('analytics'); + analyticsDiv.innerHTML = '

Your Analytics

'; + if (!data.links || data.links.length === 0) { + analyticsDiv.innerHTML += '

No links created yet.

'; + return; + } + + const analytics = data.analytics || []; const openDetails = Array.from(document.querySelectorAll('details[open]')).map( detail => detail.getAttribute('data-visit-id') ); - const analyticsDiv = document.getElementById('analytics'); - analyticsDiv.innerHTML = '

Your Analytics

'; - data.links.forEach(link => { - const linkAnalytics = data.analytics.filter(a => a.link_id === link.short_id); + const linkAnalytics = analytics.filter(a => a.link_id === link.short_id); const clicks = linkAnalytics.length; const shortUrl = `${window.location.origin}/l/${link.short_id}`;