A bit of work on the html report template

This commit is contained in:
Tim Hughes 2018-11-30 13:06:49 +00:00
parent 3894c0be25
commit 69d4e2fbea
2 changed files with 117 additions and 147 deletions

View File

@ -6211,26 +6211,33 @@ sub dump_result {
if ( $opt{'reportfile'} ne 0 ) {
eval { require Text::Template };
eval { require JSON };
if ($@) {
badprint "Text::Template Module is needed.";
die "Text::Template Module is needed.";
}
my $vars = { 'data' => Dumper( \%result ) };
my $json = JSON->new->allow_nonref;
my $json_text = $json->pretty->encode( \%result );
my %vars = (
'data' => \%result,
'debug' => $json_text,
);
my $template;
{
no warnings 'once';
$template = Text::Template->new(
TYPE => 'STRING',
PREPEND => q{;},
SOURCE => $templateModel
SOURCE => $templateModel,
DELIMITERS => [ '[%', '%]' ]
) or die "Couldn't construct template: $Text::Template::ERROR";
}
open my $fh, q(>), $opt{'reportfile'}
or die
"Unable to open $opt{'reportfile'} in write mode. please check permissions for this file or directory";
$template->fill_in( HASH => $vars, OUTPUT => $fh );
$template->fill_in( HASH => \%vars, OUTPUT => $fh );
close $fh;
}
@ -6382,7 +6389,6 @@ You must provide the remote server's total memory when connecting to other serve
--pfstat Print Performance schema
--nopfstat Don't Print Performance schema
--verbose Prints out all options (default: no verbose, dbstat, idxstat, sysstat, tbstat, pfstat)
--bannedports Ports banned separated by comma(,)
--maxportallowed Number of ports opened allowed on this hosts
--cvefile <path> CVE File for vulnerability checks

View File

@ -1,153 +1,117 @@
<!DOCTYPE html>
<!doctype html>
<html lang="en">
<head>
<!-- Required meta tags -->
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>MySQL Tuner</title>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<!-- Bootstrap CSS -->
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/css/bootstrap.min.css" integrity="sha384-MCw98/SFnGE8fJT3GXwEOngsV7Zt27NXFoaoApmYm81iuXoPkFOJwJ8ERdknLPMO" crossorigin="anonymous">
<style type="text/css" media="screen">
/* Sticky footer styles
-------------------------------------------------- */
html {
position: relative;
min-height: 100%;
}
body {
/* Margin bottom by footer height */
margin-bottom: 10px;
}
.footer {
position: absolute;
#margin-left: 5px;
bottom: 0;
width: 100%;
/* Set the fixed height of the footer here */
height: 30px;
line-height: 30px; /* Vertically center the text there */
background-color: #f5f5f5;
}
/*html {
/* position: relative;
/* min-height: 100%;
/*}
/*body {
/* /* Margin bottom by footer height */
/* margin-bottom: 10px;
/*}
/*.footer {
/* position: absolute;
/* #margin-left: 5px;
/* bottom: 0;
/* width: 100%;
/* /* Set the fixed height of the footer here */
/* height: 30px;
/* line-height: 30px; /* Vertically center the text there */
/* background-color: #f5f5f5;
/*}
/* Custom page CSS
-------------------------------------------------- */
/* Not required for template or sticky footer method. */
/* /* Custom page CSS
/* -------------------------------------------------- */
/*/* Not required for template or sticky footer method. */
body > .container {
padding: 60px 15px 0;
}
/*body > .container {
/* padding: 60px 15px 0;
/*}
.footer > .container {
padding-right: 15px;
padding-left: 15px;
}
/*.footer > .container {
/* padding-right: 15px;
/* padding-left: 15px;
/*}
code {
/*code {
/* font-size: 80%;
/*}*/
.code-pre {
background-color: #eee;
padding: 1rem;
font-size: 80%;
}
</style>
<script src="https://code.jquery.com/jquery-3.3.1.slim.min.js" integrity="sha384-q8i/X+965DzO0rT7abK41JStQIAqVgRVzpbzo5smXKp4YfRvH+8abtTE1Pi6jizo" crossorigin="anonymous"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.3/umd/popper.min.js" integrity="sha384-ZMP7rVo3mIykV+2+9J3UJ46jBk0WLaUAdn689aCwoqbBJiSnjAK/l8WvCWPIPm49" crossorigin="anonymous"></script>
<script src="https://cdn.plot.ly/plotly-latest.min.js"></script>
<title>MySQL Tuner</title>
</head>
<body>
<ul class="nav nav-tabs">
<div class="container">
<div class="pricing-header px-3 py-3 pt-md-5 pb-md-4 mx-auto text-center">
<H1>MySQL Tuner</H1>
<li class="active"><a data-toggle="tab" href="#home">Home</a></li>
<li><a data-toggle="tab" href="#debug">Debug</a></li>
</div>
<ul class="nav nav-tabs" role="tablist">
<li class="active" class="nav-item">
<a class="nav-link" id="home-tab" data-toggle="tab" role="tab" aria-controls="home" aria-selected="true" href="#home">Home</a>
</li>
<li class="nav-item">
<a class="nav-link" id="debug-tab" data-toggle="tab" role="tab" aria-controls="debug" aria-selected="false" href="#debug">Debug</a>
</li>
</ul>
<div class="tab-content">
<div id="home" class="tab-pane active">
<div id="home" class="tab-pane">
<h3>Home</h3>
<h5>Report date: </h5>
<h5>Report host: </h5>
<h5>Server version: </h5>
<pre>{$data}</pre>
<h5>Report date: [% localtime %]</h5>
<h5>Report host: [% $data{'Variables'}{'hostname'} %]</h5>
<h5>Report OS: [% $data{'OS'}{'OS Type'} %], Architecture:[% $data{'OS'}{'Architecture'} %], Ram: [% $data{'OS'}{'Physical Memory'}{'pretty'} %]</h5>
<h5>Server version: [% $data{'Variables'}{'version'} %], [% $data{'Variables'}{'version_compile_machine'} %], [% $data{'Status'}{'version_comment'} %]</h5>
<hr/>
<h3>Recommendations</h3>
<ul>
[%
foreach $i ( @{$data{'Recommendations'}} ) {
$OUT .= "<li>$i</li>";
}
%]
</ul>
<h3>Adjust variables</h3>
<ul>
[%
foreach $i ( @{$data{'Adjust variables'}} ) {
$OUT .= "<li>$i</li>";
}
%]
</ul>
<hr/>
</div>
<div id="debug" class="tab-pane fade">
<div id="debug" class="tab-pane">
<h3>Raw Result Data Structure</h3>
<h5>Report date: </h5>
<h5>Report host: </h5>
<h5>Server version: </h5>
<pre>{$data}
{$data}
{$data}{$data}
{$data}
{$data}{$data}
{$data}
{$data}{$data}
{$data}
{$data}{$data}
{$data}
{$data}{$data}
{$data}
{$data}{$data}
{$data}
{$data}{$data}
{$data}
{$data}{$data}
{$data}
{$data}{$data}
{$data}
{$data}{$data}
{$data}
{$data}{$data}
{$data}
{$data}{$data}
{$data}
{$data}{$data}
{$data}
{$data}{$data}
{$data}
{$data}{$data}
{$data}
{$data}{$data}
{$data}
{$data}{$data}
{$data}
{$data}{$data}
{$data}
{$data}{$data}
{$data}
{$data}{$data}
{$data}
{$data}{$data}
{$data}
{$data}{$data}
{$data}
{$data}{$data}
{$data}
{$data}{$data}
{$data}
{$data}{$data}
{$data}
{$data}{$data}
{$data}
{$data}{$data}
{$data}
{$data}</pre>
<pre class="code-pre"><code class="language-json" data-lang="json">[% $debug %]</code></pre>
<hr/>
</div>
</div>
<footer class="footer">
<div class="container">
<span class="text-muted">MySQL Tuner 1.7.13</span>
</div>
</footer>
</div>
<script src="https://code.jquery.com/jquery-3.3.1.slim.min.js" integrity="sha384-q8i/X+965DzO0rT7abK41JStQIAqVgRVzpbzo5smXKp4YfRvH+8abtTE1Pi6jizo" crossorigin="anonymous"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.3/umd/popper.min.js" integrity="sha384-ZMP7rVo3mIykV+2+9J3UJ46jBk0WLaUAdn689aCwoqbBJiSnjAK/l8WvCWPIPm49" crossorigin="anonymous"></script>
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/js/bootstrap.min.js" integrity="sha384-ChfqqxuZUCnJSK3+MXmPNIyE6ZbWh2IMqE241rYiqJxyMiZ6OW/JmZQ5stwEULTy" crossorigin="anonymous"></script>
</body>
</html>
<!-- vim: set ft=html ts=2 sw=2 tw=999 et :-->