2024-06-04 06:04:59 +02:00
|
|
|
<!DOCTYPE html>
|
2024-06-05 17:17:23 +02:00
|
|
|
<html><head>
|
|
|
|
<meta charset="utf-8">
|
2024-06-04 06:04:59 +02:00
|
|
|
<title>SMEServer Mailstats</title>
|
2024-06-14 16:48:14 +02:00
|
|
|
<link rel='stylesheet' type='text/css' href='css/mailstats.css' />
|
2024-06-04 06:04:59 +02:00
|
|
|
<!-- Check links -->
|
|
|
|
<script>
|
|
|
|
function LinkCheck(url){
|
|
|
|
var http = new XMLHttpRequest();
|
|
|
|
http.open('HEAD', url, false);
|
|
|
|
http.send();
|
|
|
|
return http.status!=404;
|
|
|
|
}
|
|
|
|
function doNavs() {
|
|
|
|
var aTags = document.getElementsByTagName('a'),
|
|
|
|
atl = aTags.length,i;
|
|
|
|
for (i = 0; i < atl; i++) {
|
|
|
|
if (aTags[i].innerText == "Previous") {
|
|
|
|
if (!LinkCheck(aTags[i].href)) {
|
|
|
|
aTags[i].style.visibility = "hidden";
|
|
|
|
} else {
|
|
|
|
aTags[i].style.visibility = "visible";
|
|
|
|
}
|
|
|
|
} else if (aTags[i].innerText == "Next") {
|
|
|
|
if (!LinkCheck(aTags[i].href)) {
|
|
|
|
aTags[i].style.visibility = "hidden";
|
|
|
|
} else {
|
|
|
|
aTags[i].style.visibility = "visible";
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
</script>
|
2024-06-05 17:17:23 +02:00
|
|
|
<style>
|
|
|
|
<!--css here-->
|
|
|
|
</style>
|
2024-05-29 17:46:58 +02:00
|
|
|
</head>
|
|
|
|
<body>
|
2024-06-07 11:35:28 +02:00
|
|
|
<div style="width:100%;overflow-x:auto;font-size:1cqw">
|
2024-07-14 09:20:09 +02:00
|
|
|
<!---Navigation here-->
|
|
|
|
<div class='linksattop'>
|
|
|
|
<a class='prevlink' href='http://${DomainName}/mailstats/mailstats_for_${PreviousDate}.html'>Previous</a>
|
|
|
|
<div class='divshowindex'><a class='showindex' href='http://${DomainName}/mailstats/'>Index of files</a></div>
|
|
|
|
<a class='nextlink' href='http://${DomainName}/mailstats/mailstats_for_${NextDate}.html'>Next</a>
|
|
|
|
</div>
|
2024-06-06 15:56:19 +02:00
|
|
|
<br />
|
|
|
|
<h2>${title}</h2>
|
2024-06-18 00:04:49 +02:00
|
|
|
<br />
|
2024-07-14 09:20:09 +02:00
|
|
|
<div class="headerpanel">
|
|
|
|
<div class = "innerheaderpanel">
|
|
|
|
<!---Add in header information here -->
|
|
|
|
</div>
|
|
|
|
</div>
|
2024-06-18 16:45:03 +02:00
|
|
|
<br />
|
2024-06-04 06:04:59 +02:00
|
|
|
<br />
|
2024-07-14 09:20:09 +02:00
|
|
|
<!--Tabs -->
|
|
|
|
<div class="tab-container">
|
|
|
|
<div class="tab tab-active" onclick="openTab(event, 'tab1')">Table</div>
|
|
|
|
<div class="tab" onclick="openTab(event, 'tab2')">Stacked Bar Graph</div>
|
|
|
|
<div class="tab" onclick="openTab(event, 'tab3')">Heat Map</div>
|
|
|
|
<div class="tab" onclick="openTab(event, 'tab4')">Line Graph</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
<div id="tab1" class="tab-content tab-content-active">
|
|
|
|
<div class = "maintable">
|
2024-06-30 09:30:13 +02:00
|
|
|
<table style="border-collapse:collapse;width:98%">
|
2024-06-07 11:35:28 +02:00
|
|
|
<thead>
|
|
|
|
<tr>
|
|
|
|
<th>Date/Time</th>
|
|
|
|
<th tal:repeat="header column_headers" tal:content="header">Header</th>
|
|
|
|
</tr>
|
|
|
|
</thead>
|
|
|
|
<tbody>
|
2024-06-15 12:58:08 +02:00
|
|
|
<tr tal:repeat="row array_2d" tal:attributes="class python: 'row-total' if repeat.row.index == 24 else 'row-percent' if repeat.row.index == 25 else None">
|
|
|
|
<td tal:condition="repeat.row.index == 24" tal:attributes="class python:'col-total'" tal:content="'TOTALS'">Totals</td>
|
|
|
|
<td tal:condition="repeat.row.index == 25" tal:attributes="class python:'col-percent'" tal:content="'PERCENT'">Percent</td>
|
2024-06-07 11:35:28 +02:00
|
|
|
<td tal:condition="repeat.row.index < 24" tal:content="string:${reporting_date}, ${repeat.row.index}">Hour</td>
|
2024-07-01 09:54:19 +02:00
|
|
|
<td tal:repeat="cell row" tal:attributes="class python: 'col-' + str(repeat.cell.index)">
|
|
|
|
<!-- Check if 'nolinks' is true. If not, generate links for rows 0 to 23 except 'PERCENT' column -->
|
|
|
|
<tal:case tal:condition="not: nolinks">
|
|
|
|
<tal:case tal:condition="repeat.row.index >= 0 and repeat.row.index < 24 and repeat.cell.index != 16">
|
|
|
|
<a tal:attributes="href string:./showSummaryLogs.php?hour=${repeat.row.index}">
|
|
|
|
<!-- Check if cell value is zero and print "-" -->
|
|
|
|
<tal:case tal:condition="cell != 0" tal:content="cell">Cell</tal:case>
|
2024-07-12 11:35:44 +02:00
|
|
|
<tal:case tal:condition="cell == 0" tal:content="''">-</tal:case>
|
2024-07-01 09:54:19 +02:00
|
|
|
</a>
|
|
|
|
</tal:case>
|
|
|
|
<!-- For 'PERCENT' column or other rows, just display the cell content -->
|
|
|
|
<tal:case tal:condition="not (repeat.row.index >= 0 and repeat.row.index < 24 and repeat.cell.index != 16)">
|
|
|
|
<!-- Check if cell value is zero and print "-" -->
|
|
|
|
<tal:case tal:condition="cell != 0" tal:content="cell">Cell</tal:case>
|
2024-07-12 11:35:44 +02:00
|
|
|
<tal:case tal:condition="cell == 0" tal:content="''">-</tal:case>
|
2024-07-01 09:54:19 +02:00
|
|
|
</tal:case>
|
|
|
|
</tal:case>
|
|
|
|
<tal:case tal:condition="nolinks">
|
|
|
|
<!-- Display cell content without link if 'nolinks' is true -->
|
|
|
|
<tal:case tal:condition="cell != 0" tal:content="cell">Cell</tal:case>
|
2024-07-12 11:35:44 +02:00
|
|
|
<tal:case tal:condition="cell == 0" tal:content="''">-</tal:case>
|
2024-07-01 09:54:19 +02:00
|
|
|
</tal:case>
|
|
|
|
</td>
|
2024-06-30 16:38:42 +02:00
|
|
|
</tr>
|
2024-06-07 11:35:28 +02:00
|
|
|
</tbody>
|
|
|
|
</table>
|
2024-07-14 09:20:09 +02:00
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
<!-- Next Tab-->
|
|
|
|
<div id="tab2" class="tab-content">
|
|
|
|
<!--<div class = "parent-container">
|
|
|
|
<iframe class="iframe-container" src="stacked_bar_2024-07-12.html" title="Embedded Page">
|
|
|
|
Your browser does not support iframes.
|
|
|
|
</iframe>
|
|
|
|
</div>
|
|
|
|
-->
|
|
|
|
<a href="stacked_bar_2024-07-12.html">${structure: stacked_bar_graph}</a>
|
|
|
|
<a href="stacked_bar_${reporting_date}.html">${structure: stacked_bar_graph}</a>
|
|
|
|
</div>
|
|
|
|
<!-- Next Tab-->
|
|
|
|
<div id="tab3" class="tab-content">
|
|
|
|
<!--
|
|
|
|
<div class = "parent-container">
|
|
|
|
<iframe class="iframe-container" src="heatmap_2024-07-12.html" title="Embedded Page">
|
|
|
|
Your browser does not support iframes.
|
|
|
|
</iframe>
|
|
|
|
</div>
|
|
|
|
-->
|
|
|
|
<a href="heatmap_${reporting_date}.html">${structure: heatmap}</a>
|
|
|
|
</div>
|
|
|
|
<!-- Next Tab-->
|
|
|
|
<div id="tab4" class="tab-content">
|
|
|
|
<!--<div class = "parent-container">
|
|
|
|
<iframe class="iframe-container" src="line_graph_2024-07-12.html" title="Embedded Page">
|
|
|
|
Your browser does not support iframes.
|
|
|
|
</iframe>
|
|
|
|
</div>
|
|
|
|
-->
|
|
|
|
<a href="line_graph_${reporting_date}.html">${structure: line_graph}</a>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
<div class = "subtables">
|
2024-06-01 08:48:35 +02:00
|
|
|
<!---Add in sub tables here -->
|
2024-07-14 09:20:09 +02:00
|
|
|
</div>
|
2024-05-30 13:05:31 +02:00
|
|
|
<br />
|
2024-06-30 09:30:13 +02:00
|
|
|
|
2024-07-14 09:20:09 +02:00
|
|
|
<footer class="footer">${version}</footer>
|
|
|
|
|
|
|
|
<script>
|
|
|
|
window.onload = function(){doNavs();}
|
|
|
|
function openTab(event, tabId){
|
|
|
|
// Get all elements with class="tab-content" and hide them
|
|
|
|
const tabContents = document.querySelectorAll('.tab-content');
|
|
|
|
tabContents.forEach(content => content.classList.remove('tab-content-active'));
|
|
|
|
|
|
|
|
// Get all elements with class="tab" and remove the class "tab-active"
|
|
|
|
const tabs = document.querySelectorAll('.tab');
|
|
|
|
tabs.forEach(tab => tab.classList.remove('tab-active'));
|
|
|
|
|
|
|
|
// Show the current tab content, and add an "active" class to the clicked tab
|
|
|
|
document.getElementById(tabId).classList.add('tab-content-active');
|
|
|
|
event.target.classList.add('tab-active');}
|
|
|
|
</script>
|
2024-06-30 09:30:13 +02:00
|
|
|
|
2024-06-04 06:04:59 +02:00
|
|
|
<p class="cssvalid">
|
|
|
|
<a href="http://jigsaw.w3.org/css-validator/check/referer">
|
|
|
|
<img style="border:0;width:88px;height:31px"
|
|
|
|
src="http://jigsaw.w3.org/css-validator/images/vcss"
|
|
|
|
alt="Valid CSS!" />
|
|
|
|
</a>
|
|
|
|
</p>
|
|
|
|
|
|
|
|
<p class="htmlvalid">
|
|
|
|
<a href="https://validator.w3.org/check?uri=referer"><img
|
|
|
|
src="http://www.w3.org/Icons/valid-xhtml10"
|
|
|
|
alt="Valid XHTML 1.0!" height="31" width="88" /></a>
|
|
|
|
</p>
|
2024-06-07 11:35:28 +02:00
|
|
|
</div>
|
2024-05-29 17:46:58 +02:00
|
|
|
</body>
|
|
|
|
</html>
|