9a3d8425e0
Renamed the pre_render_panel_analytics hook to pre_render_panel_analytics_views. Added a details table to the route graphs. Moved the /topic/ and /reply/ routes to the router generator and hardened them. Made some of the route names more consistent. We now track IPs in odd situations in debug mode. Fixed a bug where people could post on non-existent profiles. Continued work on topic move. Added the postchunks table.
63 lines
2.1 KiB
HTML
63 lines
2.1 KiB
HTML
{{template "header.html" . }}
|
|
<div class="colstack panel_stack">
|
|
{{template "panel-menu.html" . }}
|
|
<main id="panel_dashboard_right" class="colstack_right">
|
|
<form id="timeRangeForm" name="timeRangeForm" action="/panel/analytics/views/" method="get">
|
|
<div class="colstack_item colstack_head">
|
|
<div class="rowitem">
|
|
<a>Views</a>
|
|
<select class="timeRangeSelector to_right" name="timeRange">
|
|
<option val="one-month"{{if eq .TimeRange "one-month"}} selected{{end}}>1 month</option>
|
|
<option val="two-days"{{if eq .TimeRange "two-days"}} selected{{end}}>2 days</option>
|
|
<option val="one-day"{{if eq .TimeRange "one-day"}} selected{{end}}>1 day</option>
|
|
<option val="twelve-hours"{{if eq .TimeRange "twelve-hours"}} selected{{end}}>12 hours</option>
|
|
<option val="six-hours"{{if eq .TimeRange "six-hours"}} selected{{end}}>6 hours</option>
|
|
</select>
|
|
</div>
|
|
</div>
|
|
</form>
|
|
<div id="panel_analytics_views" class="colstack_graph_holder">
|
|
<div class="ct_chart" aria-label="View Chart"></div>
|
|
</div>
|
|
<div class="colstack_item colstack_head">
|
|
<div class="rowitem"><a>Details</a></div>
|
|
</div>
|
|
<div id="panel_analytics_views_table" class="colstack_item rowlist" aria-label="View Table, this has the same information as the view chart">
|
|
{{range .ViewItems}}
|
|
<div class="rowitem panel_compactrow editable_parent">
|
|
<a class="panel_upshift unix_to_24_hour_time">{{.Time}}</a>
|
|
<span class="panel_compacttext to_right">{{.Count}} views</span>
|
|
</div>
|
|
{{end}}
|
|
</div>
|
|
</main>
|
|
</div>
|
|
<script>
|
|
let labels = [];
|
|
let rawLabels = [{{range .PrimaryGraph.Labels}}
|
|
{{.}},{{end}}
|
|
];
|
|
for(const i in rawLabels) {
|
|
let date = new Date(rawLabels[i]*1000);
|
|
console.log("date: ", date);
|
|
let minutes = "0" + date.getMinutes();
|
|
let label = date.getHours() + ":" + minutes.substr(-2);
|
|
console.log("label:", label);
|
|
labels.push(label);
|
|
}
|
|
labels = labels.reverse()
|
|
|
|
let seriesData = [{{range .PrimaryGraph.Series}}
|
|
{{.}},{{end}}
|
|
];
|
|
seriesData = seriesData.reverse();
|
|
|
|
Chartist.Line('.ct_chart', {
|
|
labels: labels,
|
|
series: [seriesData],
|
|
}, {
|
|
height: '250px',
|
|
});
|
|
</script>
|
|
{{template "footer.html" . }}
|