Mercurial Hosting > linkmystyle
view src/private/reports/analytics.html.luan @ 0:8f4df159f06b
start public repo
author | Franklin Schmidt <fschmidt@gmail.com> |
---|---|
date | Fri, 11 Jul 2025 20:57:49 -0600 |
parents | |
children |
line wrap: on
line source
local Luan = require "luan:Luan.luan" local error = Luan.error local Parsers = require "luan:Parsers.luan" local json_string = Parsers.json_string or error() local Io = require "luan:Io.luan" local Http = require "luan:http/Http.luan" local Shared = require "site:/lib/Shared.luan" local head = Shared.head or error() local body_header = Shared.body_header or error() local footer = Shared.footer or error() local compressed = Shared.compressed or error() local Reporting = require "site:/lib/Reporting.luan" local get_data = Reporting.get_data or error() local Logging = require "luan:logging/Logging.luan" local logger = Logging.logger "analytics_new.html" return function() Io.stdout = Http.response.text_writer() %> <!doctype html> <html lang="en"> <head> <% head() %> <title>Link My Style</title> <style> div[content] { margin-left: 3%; margin-right: 3%; } h1 { text-align: center; margin-bottom: 0; } p[top] { text-align: center; } div[row] { display: flex; align-items: flex-start; justify-content: space-between; margin-top: 20px; margin-bottom: 20px; } div[report] { width: 48%; } </style> <script src="https://cdn.jsdelivr.net/npm/apexcharts"></script> <script> <% do local data = get_data( "+type:visit", "day" ) %> function initTraffic() { let options = { chart: { type: 'line' }, series: [{ name: 'Visitors', data: <%=json_string(data,compressed)%>, }], xaxis: { type: 'datetime' }, title: { text: 'Traffic' } }; let div = document.querySelector('div[report="traffic"]'); let chart = new ApexCharts( div, options ); chart.render(); } <% end_do do local data = get_data( "+type:click", "day" ) %> function initClicks() { let options = { chart: { type: 'line' }, series: [{ name: 'Clicks', data: <%=json_string(data,compressed)%>, }], xaxis: { type: 'datetime' }, title: { text: 'Clicks' } }; let div = document.querySelector('div[report="clicks"]'); let chart = new ApexCharts( div, options ); chart.render(); } <% end_do do local data = get_data( "+type:monthly_visit", "owner" ) %> function initOwnerTraffic() { let data = <%=json_string(data,compressed)%>; let options = { chart: { type: 'bar', height: barChartHeight(data.length) }, plotOptions: { bar: { horizontal: true } }, series: [{ name: 'Visitors', data: data, }], title: { text: 'Traffic by Owner' } }; let div = document.querySelector('div[report="owner_traffic"]'); let chart = new ApexCharts( div, options ); chart.render(); } <% end_do do local data = get_data( "+type:monthly_click", "owner" ) %> function initOwnerClicks() { let data = <%=json_string(data,compressed)%>; let options = { chart: { type: 'bar', height: barChartHeight(data.length) }, plotOptions: { bar: { horizontal: true } }, series: [{ name: 'Clicks', data: data, }], title: { text: 'Clicks by Owner' } }; let div = document.querySelector('div[report="owner_clicks"]'); let chart = new ApexCharts( div, options ); chart.render(); } <% end_do do local data = get_data( "+type:referrer", "value" ) %> function initReferrers() { let data = <%=json_string(data,compressed)%>; let options = { chart: { type: 'bar', height: barChartHeight(data.length) }, plotOptions: { bar: { horizontal: true } }, series: [{ name: 'Visitors', data: data, }], title: { text: 'Referring Domains' } }; let div = document.querySelector('div[report="referrers"]'); let chart = new ApexCharts( div, options ); chart.render(); } <% end_do %> function init() { initTraffic(); initClicks(); initOwnerTraffic(); initOwnerClicks(); initReferrers(); } </script> </head> <body onload="init()"> <div full> <% body_header() %> <div content> <h1>Analytics</h1> <p top>For the last 30 days</p> <div row> <div report=traffic></div> <div report=clicks></div> </div> <div row> <div report=owner_traffic></div> <div report=owner_clicks></div> </div> <div row> <div report=referrers></div> </div> </div> <% footer() %> </div> </body> </html> <% end