Mercurial > lbo > hg > analyrics
view assets/index_dashboard.html.hbs @ 60:5b91865546cf
Fix logout link
author | Lewin Bormann <lbo@spheniscida.de> |
---|---|
date | Fri, 22 Jul 2022 21:39:26 -0700 |
parents | ad0625965942 |
children | b0ad92c96f60 |
line wrap: on
line source
<!DOCTYPE html> <html> <head> <title>Analyrics</title> <meta name="robots" content="noindex"> <meta name="viewport" content="width=device-width, initial-scale=1"> <link rel="stylesheet" href="static/style.css" type="text/css" /> <link rel="icon" type="image/png" href="static/favicon.ico"> <script src="static/chart.min.js" type="application/javascript"></script> <script type="application/javascript"> let from = "{{ date.today }}"; let duration = {{ date.duration }}; // in days function formatDate(d) { let m = d.getUTCMonth()+1; m = m < 10 ? "0"+m : m; let day = d.getUTCDate(); day = day < 10 ? "0"+day : day; return `${d.getUTCFullYear()}-${m}-${day}`; } function adjustURLDateParams(dateOffsetDays, durationMultiplier) { let usp = new URLSearchParams(window.location.search); let from_date = new Date(usp.get("from") || from); let gduration = +usp.get("duration") || duration; let new_from_date = formatDate(new Date(from_date.getTime() + (dateOffsetDays + gduration * (1-durationMultiplier)) * 86400 * 1000)); console.log(from_date, new_from_date); let new_duration = gduration * durationMultiplier; usp.set("from", new_from_date); usp.set("duration", new_duration.toFixed()); window.location.search = usp.toString(); }; function toggleBots(checkboxid) { let box = document.getElementById(checkboxid); let usp = new URLSearchParams(window.location.search); usp.set("includebots", box.checked); window.location.search = usp.toString(); }; function resetDateParams() { let usp = new URLSearchParams(window.location.search); usp.delete("duration"); usp.delete("from"); window.location.search = usp.toString(); }; </script> </head> <body> <!-- Header --> <div id="header"> <span id="logo">AnaLyrics</span> <form id="logout" action="logout" method="POST"> <input type="submit" value="Log out" /> </form> <div class="useraction"><b>{{username}}</b>.</div> <div class="userdomain">{{#if domain}}Domain: <b>{{domain}}</b>{{else}}<i>(all domains)</i>{{/if}}</div> </div> {{#if flash}}<div id="flash"><span id="flashtext">{{flash}}<span></div>{{/if}} {{#if error}}<div id="error"><span id="errortext">{{error}}</span></div>{{/if}} <!-- Time navigation --> <div id="timebox"> <div id="timeindicator"> from {{ date.today }} (for {{date.duration}} days) </div> <div id="timenav"> <button onclick="adjustURLDateParams(-30, 1)">-30d</button> <button onclick="adjustURLDateParams(-7, 1)">-7d</button> <button onclick="adjustURLDateParams(-1, 1)">-1d</button> < begin > <button onclick="adjustURLDateParams(1, 1)">+1d</button> <button onclick="adjustURLDateParams(7, 1)">+7d</button> <button onclick="adjustURLDateParams(30, 1)">+30d</button> </div> <div id="durationnav"> <button onclick="adjustURLDateParams(0, 1/8)">x⅛</button> <button onclick="adjustURLDateParams(0, 1/4)">x¼</button> <button onclick="adjustURLDateParams(0, 1/2)">x½</button> < duration > <button onclick="adjustURLDateParams(0, 2)">x2</button> <button onclick="adjustURLDateParams(0, 4)">x4</button> <button onclick="adjustURLDateParams(0, 8)">x8</button> </div> <div id="timereset"> <button onclick="resetDateParams()">Reset</button> </div> <div id="topconfig"> <label for="botbox" id="botboxlabel">Include bots</label> <input type="checkbox" id="botbox" name="botbox" onclick="toggleBots('botbox')"></input> </div> </div> <!-- Plots -- only shown when logged in. --> <div class="plotrow row1"> <div class="plotframe fullwidth"> <div class="plottitle">Visits and Sessions</div> <div class="chartcontainer1"><canvas id="visitsAndSessions" height="100"></canvas></div> </div> </div> <div class="plotrow row2"> <div class="plotframe halfwidth">Top paths <div class="chartcontainer2"><canvas id="topPaths"></canvas></div> </div> <div class="plotframe halfwidth">Requests per Session <div class="chartcontainer2"><canvas id="requestsBySession"></canvas></div> </div> </div> <div class="plotrow row3"> <div class="plotframe halfwidth">Sessions by country <div class="chartcontainer2"><canvas id="sessionsByCountry"></canvas></div> </div> <div class="plotframe halfwidth">Top External Referers <div class="chartcontainer2"><canvas id="topRefer"></canvas></div> </div> </div> <div class="plotrow row3"> <div class="plotframe fullwidth">Recent Sessions <table align="center" id="sessionstable"> <tr> <th>Start</th><th>Duration</th><th>Requests</th><th>Tags</th><th>Referer</th><th>Country/City</th><th>User Agent</th> </tr> {{ #each recentSessions }} <tr> <td>{{ start }}</td><td>{{ duration }}</td><td>{{ count }}</td><td>{{ alltags }}</td><td>{{ refer }}</td><td>{{ origin_country }} {{ origin_city }}</td><td>{{ ua }}</td> </tr> {{ /each }} </table> </div> </div> <script> let plots = {"visitsAndSessions": {{{ chartconfig.visitsAndSessions }}}, "topPaths": {{{ chartconfig.topPaths }}}, "requestsBySession": {{{ chartconfig.requestsBySession }}}, "sessionsByCountry": {{{ chartconfig.sessionsByCountry }}}, "topRefer": {{{ chartconfig.topRefer }}} }; Object.keys(plots).forEach((cv) => { if (plots[cv] == undefined) { return; } const ctx = document.getElementById(cv).getContext('2d'); const myChart = new Chart(ctx, plots[cv]); }); </script> <script> // Set up page after load. (function() { let box = document.getElementById("botbox"); let usp = new URLSearchParams(window.location.search); box.checked = usp.get("includebots") == "true"; })(); </script> </body> </html>