diff --git a/apps/routerconsole/java/src/net/i2p/router/web/StatsGenerator.java b/apps/routerconsole/java/src/net/i2p/router/web/StatsGenerator.java index 46bebc78d12fa9ca37f0237183f859dda607633e..4c809a6aef1985b2b5ba8563c490a742ea0408fd 100644 --- a/apps/routerconsole/java/src/net/i2p/router/web/StatsGenerator.java +++ b/apps/routerconsole/java/src/net/i2p/router/web/StatsGenerator.java @@ -30,11 +30,21 @@ public class StatsGenerator { public void generateStatsPage(Writer out, boolean showAll) throws IOException { StringBuilder buf = new StringBuilder(16*1024); - buf.append("<div class=\"joblog\"><form action=\"\">"); - buf.append("<select name=\"go\" onChange='location.href=this.value'>"); + + buf.append("<div class=\"joblog\">\n"); + buf.append("<p id=\"gatherstats\">"); + buf.append(_t("Statistics gathered during this router's uptime")).append(" ("); + long uptime = _context.router().getUptime(); + buf.append(DataHelper.formatDuration2(uptime)); + buf.append("). ").append( _t("The data gathered is quantized over a 1 minute period, so should just be used as an estimate.")); + buf.append(' ').append( _t("These statistics are primarily used for development and debugging.")); + buf.append("</p>"); + + buf.append("<form action=\"\"><b>"); + buf.append(_t("Jump to section")).append(":</b> <select name=\"go\" onChange='location.href=this.value'>"); out.write(buf.toString()); buf.setLength(0); - + Map<String, SortedSet<String>> unsorted = _context.statManager().getStatsByGroup(); Map<String, Set<String>> groups = new TreeMap<String, Set<String>>(new AlphaComparator()); groups.putAll(unsorted); @@ -56,16 +66,10 @@ public class StatsGenerator { } buf.append("</select> <input type=\"submit\" value=\"").append(_t("GO")).append("\" />"); buf.append("</form>"); - - buf.append(_t("Statistics gathered during this router's uptime")).append(" ("); - long uptime = _context.router().getUptime(); - buf.append(DataHelper.formatDuration2(uptime)); - buf.append("). ").append( _t("The data gathered is quantized over a 1 minute period, so should just be used as an estimate.")); - buf.append(' ').append( _t("These statistics are primarily used for development and debugging.")); out.write(buf.toString()); buf.setLength(0); - + for (Map.Entry<String, Set<String>> entry : groups.entrySet()) { String group = entry.getKey(); Set<String> stats = entry.getValue(); @@ -82,7 +86,7 @@ public class StatsGenerator { buf.append(stat); buf.append("\">"); buf.append(stat); - buf.append("</a></b><br>"); + buf.append("</a>:</b> "); if (_context.statManager().isFrequency(stat)) renderFrequency(stat, buf); else @@ -214,7 +218,7 @@ public class StatsGenerator { buf.append(")"); } if (curRate.getSummaryListener() != null) { - buf.append(" <a href=\"graph?stat=").append(name) + buf.append("<br><a href=\"graph?stat=").append(name) .append('.').append(periods[i]); buf.append("\">").append(_t("Graph Data")).append("</a> - "); buf.append(" <a href=\"graph?stat=").append(name)