mirror of
git://git.code.sf.net/p/dhcpd-pools/code
synced 2025-12-17 00:06:59 +00:00
output: improve html table
Update DataTables and Bootstrap versions. Add free IP counts to table. Replace yellow as warning with magenta that is easier to read from white background. Use italic and bold to emphasis warning and critical. Remove strips. Use ascent percent sort by default. Signed-off-by: Sami Kerola <kerolasa@iki.fi>
This commit is contained in:
parent
b2c764924b
commit
8ae5fbf489
2 changed files with 23 additions and 21 deletions
1
TODO
1
TODO
|
|
@ -19,6 +19,7 @@ o Add lease time histogram support.
|
||||||
|
|
||||||
o Update gnulib
|
o Update gnulib
|
||||||
o Update bootstrap
|
o Update bootstrap
|
||||||
|
o Update DataTables, and bootstrap versions; see https://datatables.net/download/index
|
||||||
o Update NEWS, webpages/index.html dateModified & version (remove old
|
o Update NEWS, webpages/index.html dateModified & version (remove old
|
||||||
doxygen before uploading new).
|
doxygen before uploading new).
|
||||||
o Make annotated git tag
|
o Make annotated git tag
|
||||||
|
|
|
||||||
43
src/output.c
43
src/output.c
|
|
@ -61,11 +61,11 @@
|
||||||
|
|
||||||
static const char *color_tags[][NUM_OF_OUT_FORMS] = {
|
static const char *color_tags[][NUM_OF_OUT_FORMS] = {
|
||||||
[STATUS_OK] = { "", "" },
|
[STATUS_OK] = { "", "" },
|
||||||
[STATUS_WARN] = { "\033[1;33m", "<font color=\"yellow\">" },
|
[STATUS_WARN] = { "\033[1;33m", " style=\"color:magenta;font-style:italic\"" },
|
||||||
[STATUS_CRIT] = { "\033[1;31m", "<font color=\"red\">" },
|
[STATUS_CRIT] = { "\033[1;31m", " style=\"color:red;font-weight:bold\"" },
|
||||||
[STATUS_IGNORED] = { "\033[1;32m", "<font color=\"green\">" },
|
[STATUS_IGNORED] = { "\033[1;32m", " style=\"color:green\"" },
|
||||||
[STATUS_SUPPRESSED] = { "\033[1;34m", "<font color=\"blue\">" },
|
[STATUS_SUPPRESSED] = { "\033[1;34m", " style=\"color:blue\"" },
|
||||||
[COLOR_RESET] = { "\033[0m", "</font>" }
|
[COLOR_RESET] = { "\033[0m", "" }
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -586,8 +586,8 @@ static void html_header(struct conf_t *state, FILE *restrict f)
|
||||||
fprintf(f, "<meta charset=\"utf-8\">\n");
|
fprintf(f, "<meta charset=\"utf-8\">\n");
|
||||||
fprintf(f, "<meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\">\n");
|
fprintf(f, "<meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\">\n");
|
||||||
fprintf(f, "<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">\n");
|
fprintf(f, "<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">\n");
|
||||||
fprintf(f, "<link rel=\"stylesheet\" href=\"https://maxcdn.bootstrapcdn.com/bootstrap/3.3.4/css/bootstrap.min.css\" type=\"text/css\">\n");
|
fprintf(f, "<link rel=\"stylesheet\" href=\"https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css\" type=\"text/css\">\n");
|
||||||
fprintf(f, "<link rel=\"stylesheet\" href=\"https://cdn.datatables.net/1.10.10/css/jquery.dataTables.min.css\" type=\"text/css\">");
|
fprintf(f, "<link rel=\"stylesheet\" type=\"text/css\" href=\"https://cdn.datatables.net/v/bs/jq-3.2.1/dt-1.10.16/datatables.min.css\">\n");
|
||||||
fprintf(f, "<style type=\"text/css\">\n");
|
fprintf(f, "<style type=\"text/css\">\n");
|
||||||
fprintf(f, "table.dhcpd-pools th { text-transform: capitalize }\n");
|
fprintf(f, "table.dhcpd-pools th { text-transform: capitalize }\n");
|
||||||
fprintf(f, "</style>\n");
|
fprintf(f, "</style>\n");
|
||||||
|
|
@ -609,11 +609,10 @@ static void html_footer(FILE *restrict f)
|
||||||
fprintf(f, "<small>Generated using %s<br />\n", PACKAGE_STRING);
|
fprintf(f, "<small>Generated using %s<br />\n", PACKAGE_STRING);
|
||||||
fprintf(f, "More info at <a href=\"%s\">%s</a>\n", PACKAGE_URL, PACKAGE_URL);
|
fprintf(f, "More info at <a href=\"%s\">%s</a>\n", PACKAGE_URL, PACKAGE_URL);
|
||||||
fprintf(f, "</small></div></div>\n");
|
fprintf(f, "</small></div></div>\n");
|
||||||
fprintf(f, "<script src=\"https://code.jquery.com/jquery-2.1.4.min.js\" type=\"text/javascript\"></script>\n");
|
fprintf(f, "<script src=\"https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js\" type=\"text/javascript\"></script>\n");
|
||||||
fprintf(f, "<script src=\"https://maxcdn.bootstrapcdn.com/bootstrap/3.3.4/js/bootstrap.min.js\" type=\"text/javascript\"></script>\n");
|
fprintf(f, "<script type=\"text/javascript\" src=\"https://cdn.datatables.net/v/bs/jq-3.2.1/dt-1.10.16/datatables.min.js\"></script>\n");
|
||||||
fprintf(f, "<script src=\"https://cdn.datatables.net/1.10.10/js/jquery.dataTables.min.js\" type=\"text/javascript\"></script>\n");
|
fprintf(f, "<script type=\"text/javascript\" class=\"init\">$(document).ready(function() { $('#s').DataTable({ \"iDisplayLength\": 50, \"lengthMenu\": [ [25, 50, 100, -1], [25, 50, 100, \"All\"] ], \"order\": [[ 4, \"desc\" ]] } ); } );</script>\n");
|
||||||
fprintf(f, "<script type=\"text/javascript\" class=\"init\">$(document).ready(function() { $('#s').DataTable({ \"iDisplayLength\": 50, \"lengthMenu\": [ [25, 50, 100, -1], [25, 50, 100, \"All\"] ]} ); } );</script>\n");
|
fprintf(f, "<script type=\"text/javascript\" class=\"init\">$(document).ready(function() { $('#r').DataTable({ \"iDisplayLength\": 100, \"lengthMenu\": [ [25, 50, 100, -1], [25, 50, 100, \"All\"] ], \"order\": [[ 6, \"desc\" ]] } ); } );</script>\n");
|
||||||
fprintf(f, "<script type=\"text/javascript\" class=\"init\">$(document).ready(function() { $('#r').DataTable({ \"iDisplayLength\": 100, \"lengthMenu\": [ [25, 50, 100, -1], [25, 50, 100, \"All\"] ]} ); } );</script>\n");
|
|
||||||
fprintf(f, "</body></html>\n");
|
fprintf(f, "</body></html>\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -671,14 +670,10 @@ static void output_double_color(struct conf_t *state,
|
||||||
struct output_helper_t *oh, FILE *restrict f,
|
struct output_helper_t *oh, FILE *restrict f,
|
||||||
char const *restrict type)
|
char const *restrict type)
|
||||||
{
|
{
|
||||||
int color_set = 0;
|
fprintf(f, "<%s", type);
|
||||||
|
|
||||||
fprintf(f, "<%s>", type);
|
|
||||||
if (state->color_mode == color_on)
|
if (state->color_mode == color_on)
|
||||||
color_set = start_color(state, oh, f);
|
start_color(state, oh, f);
|
||||||
fprintf(f, "%g", oh->percent);
|
fprintf(f, ">%g", oh->percent);
|
||||||
if (color_set)
|
|
||||||
fputs(color_tags[COLOR_RESET][state->output_format], f);
|
|
||||||
fprintf(f, "</%s>\n", type);
|
fprintf(f, "</%s>\n", type);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -699,7 +694,7 @@ static void output_float(FILE *restrict f, char const *restrict type, float fl)
|
||||||
*/
|
*/
|
||||||
static void table_start(FILE *restrict f, char const *restrict id, char const *restrict summary)
|
static void table_start(FILE *restrict f, char const *restrict id, char const *restrict summary)
|
||||||
{
|
{
|
||||||
fprintf(f, "<table id=\"%s\" class=\"dhcpd-pools order-column table table-striped table-hover\" summary=\"%s\">\n", id, summary);
|
fprintf(f, "<table id=\"%s\" class=\"dhcpd-pools order-column table table-hover\" summary=\"%s\">\n", id, summary);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*! \brief End table in html output format.
|
/*! \brief End table in html output format.
|
||||||
|
|
@ -741,6 +736,7 @@ static int output_html(struct conf_t *state)
|
||||||
output_line(outfile, "th", "name");
|
output_line(outfile, "th", "name");
|
||||||
output_line(outfile, "th", "max");
|
output_line(outfile, "th", "max");
|
||||||
output_line(outfile, "th", "cur");
|
output_line(outfile, "th", "cur");
|
||||||
|
output_line(outfile, "th", "free");
|
||||||
output_line(outfile, "th", "percent");
|
output_line(outfile, "th", "percent");
|
||||||
output_line(outfile, "th", "touch");
|
output_line(outfile, "th", "touch");
|
||||||
output_line(outfile, "th", "t+c");
|
output_line(outfile, "th", "t+c");
|
||||||
|
|
@ -759,6 +755,7 @@ static int output_html(struct conf_t *state)
|
||||||
output_line(outfile, "td", state->shared_net_root->name);
|
output_line(outfile, "td", state->shared_net_root->name);
|
||||||
output_double(outfile, "td", state->shared_net_root->available);
|
output_double(outfile, "td", state->shared_net_root->available);
|
||||||
output_double(outfile, "td", state->shared_net_root->used);
|
output_double(outfile, "td", state->shared_net_root->used);
|
||||||
|
output_double(outfile, "td", state->shared_net_root->available - state->shared_net_root->used);
|
||||||
output_float(outfile, "td", oh.percent);
|
output_float(outfile, "td", oh.percent);
|
||||||
output_double(outfile, "td", state->shared_net_root->touched);
|
output_double(outfile, "td", state->shared_net_root->touched);
|
||||||
output_double(outfile, "td", oh.tc);
|
output_double(outfile, "td", oh.tc);
|
||||||
|
|
@ -779,6 +776,7 @@ static int output_html(struct conf_t *state)
|
||||||
output_line(outfile, "th", "name");
|
output_line(outfile, "th", "name");
|
||||||
output_line(outfile, "th", "max");
|
output_line(outfile, "th", "max");
|
||||||
output_line(outfile, "th", "cur");
|
output_line(outfile, "th", "cur");
|
||||||
|
output_line(outfile, "th", "free");
|
||||||
output_line(outfile, "th", "percent");
|
output_line(outfile, "th", "percent");
|
||||||
output_line(outfile, "th", "touch");
|
output_line(outfile, "th", "touch");
|
||||||
output_line(outfile, "th", "t+c");
|
output_line(outfile, "th", "t+c");
|
||||||
|
|
@ -799,6 +797,7 @@ static int output_html(struct conf_t *state)
|
||||||
output_line(outfile, "td", shared_p->name);
|
output_line(outfile, "td", shared_p->name);
|
||||||
output_double(outfile, "td", shared_p->available);
|
output_double(outfile, "td", shared_p->available);
|
||||||
output_double(outfile, "td", shared_p->used);
|
output_double(outfile, "td", shared_p->used);
|
||||||
|
output_double(outfile, "td", shared_p->available - shared_p->used);
|
||||||
output_double_color(state, &oh, outfile, "td");
|
output_double_color(state, &oh, outfile, "td");
|
||||||
output_double(outfile, "td", shared_p->touched);
|
output_double(outfile, "td", shared_p->touched);
|
||||||
output_double(outfile, "td", oh.tc);
|
output_double(outfile, "td", oh.tc);
|
||||||
|
|
@ -822,7 +821,8 @@ static int output_html(struct conf_t *state)
|
||||||
output_line(outfile, "th", "last ip");
|
output_line(outfile, "th", "last ip");
|
||||||
output_line(outfile, "th", "max");
|
output_line(outfile, "th", "max");
|
||||||
output_line(outfile, "th", "cur");
|
output_line(outfile, "th", "cur");
|
||||||
output_double_color(state, &oh, outfile, "td");
|
output_line(outfile, "th", "free");
|
||||||
|
output_line(outfile, "th", "percent");
|
||||||
output_line(outfile, "th", "touch");
|
output_line(outfile, "th", "touch");
|
||||||
output_line(outfile, "th", "t+c");
|
output_line(outfile, "th", "t+c");
|
||||||
output_line(outfile, "th", "t+c perc");
|
output_line(outfile, "th", "t+c perc");
|
||||||
|
|
@ -850,6 +850,7 @@ static int output_html(struct conf_t *state)
|
||||||
output_line(outfile, "td", ntop_ipaddr(&range_p->last_ip));
|
output_line(outfile, "td", ntop_ipaddr(&range_p->last_ip));
|
||||||
output_double(outfile, "td", oh.range_size);
|
output_double(outfile, "td", oh.range_size);
|
||||||
output_double(outfile, "td", range_p->count);
|
output_double(outfile, "td", range_p->count);
|
||||||
|
output_double(outfile, "td", oh.range_size - range_p->count);
|
||||||
output_double_color(state, &oh, outfile, "td");
|
output_double_color(state, &oh, outfile, "td");
|
||||||
output_double(outfile, "td", range_p->touched);
|
output_double(outfile, "td", range_p->touched);
|
||||||
output_double(outfile, "td", oh.tc);
|
output_double(outfile, "td", oh.tc);
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue