Add nav in html and css from previous goes at mailstats html

This commit is contained in:
Brian Read 2024-06-04 05:04:59 +01:00
parent c647574cb0
commit 1dd11f04f1
3 changed files with 130 additions and 4 deletions

59
mailstats.css Normal file
View File

@ -0,0 +1,59 @@
table {
border:2px solid;
border-collapse:collapse;
}
tr,td,th {
border:1px solid;
}
.mailstats-detail-1stcol{
width:174px;
}
thead tr {
border-bottom :2px solid;
color:black;
background-color:darkgrey;
}
tfoot tr {
border-top:2px solid;
color:black;
font-weight: bold;
background-color:darkgrey;
}
tbody tr:nth-child(odd) {background-color: #dfdfdf}
a.prevlink {
float: left;
width:33.33333%;
text-align:left;
}
div.divseeinbrowser {
float: left;
width:33.33333%;
text-align:center;
}
a.nextlink {
float: left;
width:33.33333%;
text-align:right;
}
.cssclass1 {background-color:#ffff99;}
.cssclass2 {background-color:lightcoral;}
.cssclass3 {background-color:lightcyan;}
.cssclass4 {background-color:lightgoldenrodyellow;}
.cssclass5 {background-color:lightgray;}
.cssclass6 {background-color:lightgreen;}
.cssclass7 {background-color:lightpink;}
.cssclass8 {background-color:lightsalmon;}
.cssclass9 {background-color:lightseagreen;}
.cssclass10 {background-color:lightskyblue;}
.cssclass11 {background-color:lightslategray;}
.cssclass12 {background-color:lightsteelblue;}
p.cssvalid,p.htmlvalid {float:left;margin-right:20px)

View File

@ -1,9 +1,40 @@
<html> <!DOCTYPE html>
<head> <html><head><meta charset="utf-8">
<title>${title}</title> <title>SMEServer Mailstats</title>
<link rel='stylesheet' type='text/css' href='mailstats.css' />
<!-- 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>
</head> </head>
<body> <body>
<!---Navigation here-->
<h1>${title}</h1> <h1>${title}</h1>
<br />
<table border="1"> <table border="1">
<thead> <thead>
<tr> <tr>
@ -23,5 +54,20 @@
<!---Add in sub tables here --> <!---Add in sub tables here -->
<br /> <br />
<footer>${version}</footer> <footer>${version}</footer>
<script>window.onload = function(){doNavs();} </script>
<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>
</body> </body>
</html> </html>

View File

@ -637,13 +637,34 @@ if __name__ == "__main__":
rendered_html = render_sub_table(geoip_title,geoip_headers,found_countries) rendered_html = render_sub_table(geoip_title,geoip_headers,found_countries)
# Add it to the total # Add it to the total
total_html = insert_string_after(total_html,rendered_html, "<!---Add in sub tables here -->") total_html = insert_string_after(total_html,rendered_html, "<!---Add in sub tables here -->")
#Add in navigation html - next/previous/see in browser
day_format = "%Y-%m-%d"
# Convert the time string to a datetime object
date_obj = datetime.strptime(formatted_yesterday, day_format)
# Compute the next date by adding one day
next_date = date_obj + timedelta(days=1)
# Compute the previous date by subtracting one day
previous_date = date_obj - timedelta(days=1)
# Convert the datetime objects back to strings in the desired format
next_date_str = next_date.strftime(day_format)
previous_date_str = previous_date.strftime(day_format)
navigation_str_html = "<div class='linksattop'>\
<a class='prevlink' href='http://${DomainName}/mailstats/mailstats_for_${PreviousDate}.html'>Previous</a>\
<div class='divseeinbrowser'><a class='seeinbrowser' href='http://${DomainName}/mailstats/mailstats-${TodayDate}.html'>See in browser</a></div>\
<a class='nextlink' href='http://${DomainName}/mailstats/mailstats_for_${NextDate}.html'>Next</a>\
</div>"
template = PageTemplate(navigation_str_html)
Nav_str = template(PreviousDate=previous_date_str,NextDate=next_date_str,TodayDate=formatted_yesterday,DomainName=DomainName)
# And insert it
total_html = insert_string_after(total_html,Nav_str, "<!---Navigation here-->")
# Write the rendered HTML to a file # Write the rendered HTML to a file
output_path = data_file_path+'mailstats_for_'+formatted_yesterday output_path = data_file_path+'mailstats_for_'+formatted_yesterday
output_path = output_path.replace(' ','_') output_path = output_path.replace(' ','_')
with open(output_path+'.html', 'w') as output_file: with open(output_path+'.html', 'w') as output_file:
output_file.write(total_html) output_file.write(total_html)
#and create a text version if the local version is suffiicent #and create a text version if the local version of html2text is suffiicent
if get_html2text_version() == '2019.9.26': if get_html2text_version() == '2019.9.26':
html_to_text(output_path+'.html',output_path+'.txt') html_to_text(output_path+'.html',output_path+'.txt')
print(f"Rendered HTML saved to {output_path}.html/txt") print(f"Rendered HTML saved to {output_path}.html/txt")