Changeset bbf9d1a in Klonkt for src/views/pages/admin-stats.ejs
- Timestamp:
- 06/21/2026 02:32:39 PM (3 months ago)
- Branches:
- main
- Children:
- 4885eab
- Parents:
- 929d98d
- File:
-
- 1 edited
-
src/views/pages/admin-stats.ejs (modified) (7 diffs)
Legend:
- Unmodified
- Added
- Removed
-
src/views/pages/admin-stats.ejs
r929d98d rbbf9d1a 1 1 <div class="container stats-page"> 2 2 <p><a href="/admin" class="btn">← Beheer</a></p> 3 <h1>Statistieken</h1> 4 <p class="stats-note">Cookievrij gemeten — geen tracking-cookies, geen toestemmingsbanner. 5 Bezoekers worden per dag geteld via een dagelijks roterende, anonieme hash (IP/browser worden 6 niet bewaard). Je eigen beheerder-bezoeken en bekende bots/crawlers tellen niet mee.</p> 3 <h1><%= t('astat.title') %></h1> 4 <p class="stats-note"><%= t('astat.intro') %></p> 7 5 8 6 <% var s = stats; var _max = Math.max(1, ...s.series.map(function(d){ return d.pageviews; })); %> 9 7 10 8 <div class="stats-cards"> 11 <div class="stat-card"><div class="stat-num"><%= s.totals.visitors %></div><div class="stat-label"> Bezoeker-dagen (<%= s.days %>d)</div></div>12 <div class="stat-card"><div class="stat-num"><%= s.totals.pageviews %></div><div class="stat-label"> Weergaven (<%= s.days %>d)</div></div>13 <div class="stat-card"><div class="stat-num"><%= s.totals.plays %></div><div class="stat-label"> Plays (totaal)</div></div>14 <div class="stat-card"><div class="stat-num"><%= s.totals.postViews %></div><div class="stat-label"> Post-weergaven (totaal)</div></div>9 <div class="stat-card"><div class="stat-num"><%= s.totals.visitors %></div><div class="stat-label"><%= t('astat.visitor_days', { n: s.days }) %></div></div> 10 <div class="stat-card"><div class="stat-num"><%= s.totals.pageviews %></div><div class="stat-label"><%= t('astat.pageviews_days', { n: s.days }) %></div></div> 11 <div class="stat-card"><div class="stat-num"><%= s.totals.plays %></div><div class="stat-label"><%= t('astat.plays_total') %></div></div> 12 <div class="stat-card"><div class="stat-num"><%= s.totals.postViews %></div><div class="stat-label"><%= t('astat.postviews_total') %></div></div> 15 13 </div> 16 14 17 15 <% if (typeof s.allTime !== 'undefined') { %> 18 <p class="stats-note"> All-time: <strong><%= s.allTime.pageviews %></strong> weergaven · <strong><%= s.allTime.visitorDays %></strong> bezoeker-dagen.</p>16 <p class="stats-note"><%= t('astat.alltime_pre') %> <strong><%= s.allTime.pageviews %></strong> <%= t('astat.alltime_mid') %> · <strong><%= s.allTime.visitorDays %></strong> <%= t('astat.alltime_post') %></p> 19 17 <% } %> 20 18 21 19 <details class="stats-help"> 22 <summary> Wat betekenen deze cijfers?</summary>20 <summary><%= t('astat.help_summary') %></summary> 23 21 <ul> 24 <li><strong> Bezoeker-dagen</strong> — het aantal unieke bezoekers <em>per dag, bij elkaar opgeteld</em>. Eén persoon die 5 dagen langskomt = 5 bezoeker-dagen. Cookieloos kan er niet over dagen heen geteld worden, dus dit is géén aantal unieke personen — het echte aantal mensen ligt (vaak fors) lager.</li>25 <li><strong> Weergaven</strong> — hoe vaak de home/feed of een post geladen is (ook bij klikken binnen de site). Andere pagina's (agenda, downloads, links) tellen hier niet in mee.</li>26 <li><strong> Plays</strong> — totaal aantal keren dat een track is gestart.</li>27 <li><strong> Post-weergaven</strong> — totaal over alle posts samen.</li>22 <li><strong><%= t('astat.help_vd_term') %></strong> — <%= t('astat.help_vd_a') %> <em><%= t('astat.help_vd_em') %></em><%= t('astat.help_vd_b') %></li> 23 <li><strong><%= t('astat.help_pv_term') %></strong> — <%= t('astat.help_pv') %></li> 24 <li><strong><%= t('astat.help_plays_term') %></strong> — <%= t('astat.help_plays') %></li> 25 <li><strong><%= t('astat.help_postviews_term') %></strong> — <%= t('astat.help_postviews') %></li> 28 26 </ul> 29 <p> Beheerder-bezoeken en bekende bots/crawlers worden overgeslagen. Het ruwe IP wordt nooit bewaard. Goed voor trends; neem absolute aantallen met een korrel zout.</p>27 <p><%= t('astat.help_footer') %></p> 30 28 </details> 31 29 32 30 <div class="stats-period"> 33 Periode:31 <%= t('astat.period') %> 34 32 <% [7,14,30,90].forEach(function(n){ %> 35 33 <a href="/admin/stats?days=<%= n %>" class="<%= s.days === n ? 'is-on' : '' %>"><%= n %>d</a> … … 39 37 <section class="stats-chart-wrap"> 40 38 <div class="stats-chart-head"> 41 <h2> Laatste <%= s.days %> dagen</h2>39 <h2><%= t('astat.last_n_days', { n: s.days }) %></h2> 42 40 <div class="stats-legend"> 43 <span class="lg lg-vis"> Bezoeker-dagen</span>44 <span class="lg lg-pv"> Weergaven</span>41 <span class="lg lg-vis"><%= t('astat.lg_visitor_days') %></span> 42 <span class="lg lg-pv"><%= t('astat.lg_pageviews') %></span> 45 43 </div> 46 44 </div> … … 51 49 var visPct = Math.round(d.visitors / _max * 100); 52 50 %> 53 <div class="sc-col" title="<%= d.day %> — <%= d.pageviews %> weergaven, <%= d.visitors %> bezoeker-dagen">51 <div class="sc-col" title="<%= t('astat.bar_title', { day: d.day, pv: d.pageviews, vd: d.visitors }) %>"> 54 52 <div class="sc-bar"> 55 53 <span class="sc-pv" style="height: <%= pvPct %>%"></span> … … 64 62 <div class="stats-tops"> 65 63 <section class="stats-top"> 66 <h2> Populairste posts</h2>64 <h2><%= t('astat.top_posts') %></h2> 67 65 <% if (!s.topPosts.length || s.topPosts[0].views === 0) { %> 68 <p class="stats-empty"> Nog geen weergaven.</p>66 <p class="stats-empty"><%= t('astat.no_views') %></p> 69 67 <% } else { %> 70 68 <ol> … … 76 74 </section> 77 75 <section class="stats-top"> 78 <h2> Meest geluisterd</h2>76 <h2><%= t('astat.most_played') %></h2> 79 77 <% if (!s.topTracks.length || s.topTracks[0].plays === 0) { %> 80 <p class="stats-empty"> Nog geen plays.</p>78 <p class="stats-empty"><%= t('astat.no_plays') %></p> 81 79 <% } else { %> 82 80 <ol> … … 91 89 <% if (typeof s.referrers !== 'undefined' && s.referrers.length) { %> 92 90 <section class="stats-top" style="margin-top:1.2rem"> 93 <h2>🌐 Bronnen (waar bezoekers vandaan komen)</h2>91 <h2>🌐 <%= t('astat.sources') %></h2> 94 92 <ol> 95 93 <% s.referrers.forEach(function(r){ %> … … 102 100 <% if (typeof linkClicks !== 'undefined' && linkClicks.length) { %> 103 101 <section class="stats-top" style="margin-top:1.2rem"> 104 <h2>🔗 Link-in-bio klikken</h2>102 <h2>🔗 <%= t('astat.linkbio_clicks') %></h2> 105 103 <ol> 106 104 <% linkClicks.forEach(function(l){ %>
Note:
See TracChangeset
for help on using the changeset viewer.
![(please configure the [header_logo] section in trac.ini)](/chrome/site/your_project_logo.png)