Console: Stat group display names

This commit is contained in:
zzz
2019-12-14 14:17:06 +00:00
parent a5efce883a
commit 9c534fda7b
4 changed files with 75 additions and 18 deletions

View File

@ -3,6 +3,7 @@ package net.i2p.router.web.helpers;
import java.text.Collator;
import java.util.ArrayList;
import java.util.Comparator;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
@ -158,8 +159,16 @@ public class ConfigStatsHelper extends HelperBase {
return false;
}
}
/** What group is the current stat in */
/**
* What group is the current stat in, untranslated, not for display
* @return single word, no spaces
*/
public String getCurrentGroupName() { return _currentGroup; }
/**
* What group is the current stat in, display name, translated
* @since 0.9.45
*/
public String getTranslatedGroupName() { return translateGroup(_currentGroup); }
public String getCurrentStatName() { return _currentStatName; }
public String getCurrentGraphName() { return _currentGraphName; }
public String getCurrentStatDescription() { return _currentStatDescription; }
@ -178,9 +187,19 @@ public class ConfigStatsHelper extends HelperBase {
*/
private class AlphaComparator implements Comparator<String> {
public int compare(String lhs, String rhs) {
String lname = _t(lhs);
String rname = _t(rhs);
String lname = translateGroup(lhs);
String rname = translateGroup(rhs);
return Collator.getInstance().compare(lname, rname);
}
}
/**
* @since 0.9.45
*/
private String translateGroup(String group) {
String disp = StatsGenerator.groupNames.get(group);
if (disp != null)
group = disp;
return _t(group);
}
}

View File

@ -6,6 +6,7 @@ import java.text.DecimalFormat;
import java.text.Collator;
import java.util.Arrays;
import java.util.Comparator;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
import java.util.SortedSet;
@ -25,6 +26,32 @@ import net.i2p.stat.RateStat;
public class StatsGenerator {
private final RouterContext _context;
/**
* Map of group name to untranslated nice display name.
* If not present, just use the name.
* non-mapped names are tagged in Strings.java
* pkg private for ConfigStatsHelper
*/
static final Map<String, String> groupNames;
static {
String[] groups = {
"BandwidthLimiter", _x("Bandwidth Limiter"),
"ClientMessages", _x("Client Messages"),
"i2cp", _x("I2CP"),
"I2PTunnel", _x("Hidden Services Manager"),
"InNetPool", _x("Inbound Messages"),
"JobQueue", _x("Job Queue"),
"NetworkDatabase", _x("Network Database"),
"ntcp", _x("NTCP"),
"Throttle", _x("Router Limiter"),
"udp", _x("UDP")
};
groupNames = new HashMap<String, String>(groups.length / 2);
for (int i = 0; i < groups.length; i += 2) {
groupNames.put(groups[i], groups[i+1]);
}
}
public StatsGenerator(RouterContext context) {
_context = context;
}
@ -51,7 +78,7 @@ public class StatsGenerator {
groups.putAll(unsorted);
for (String group : groups.keySet()) {
buf.append("<option value=\"#").append(group).append("\">");
buf.append(_t(group)).append("</option>\n");
buf.append(translateGroup(group)).append("</option>\n");
// let's just do the groups
//Set stats = (Set)entry.getValue();
//for (Iterator statIter = stats.iterator(); statIter.hasNext(); ) {
@ -77,7 +104,7 @@ public class StatsGenerator {
buf.append("<h3 class=\"stats\"><a name=\"");
buf.append(group);
buf.append("\">");
buf.append(_t(group));
buf.append(translateGroup(group));
buf.append("</a></h3>");
buf.append("<ul class=\"statlist\">");
out.write(buf.toString());
@ -258,6 +285,16 @@ public class StatsGenerator {
private final static DecimalFormat _pct = new DecimalFormat("#0.00%");
private final static String pct(double num) { synchronized (_pct) { return _pct.format(num); } }
/**
* @since 0.9.45
*/
private String translateGroup(String group) {
String disp = groupNames.get(group);
if (disp != null)
group = disp;
return _t(group);
}
/**
* Translated sort
* Inner class, can't be Serializable
@ -265,8 +302,8 @@ public class StatsGenerator {
*/
private class AlphaComparator implements Comparator<String> {
public int compare(String lhs, String rhs) {
String lname = _t(lhs);
String rname = _t(rhs);
String lname = translateGroup(lhs);
String rname = translateGroup(rhs);
return Collator.getInstance().compare(lname, rname);
}
}
@ -285,4 +322,14 @@ public class StatsGenerator {
private String ngettext(String s, String p, int n) {
return Messages.getString(n, s, p, _context);
}
/**
* Mark a string for extraction by xgettext and translation.
* Use this only in static initializers.
* It does not translate!
* @return s
*/
private static String _x(String s) {
return s;
}
}

View File

@ -55,23 +55,14 @@ class Dummy {
_t("midnight");
// stat groups for stats.jsp
// See StatsGenerator for groups mapped to a display name
_t("Bandwidth");
_t("BandwidthLimiter");
_t("ClientMessages");
_t("Encryption");
_t("i2cp");
_t("I2PTunnel");
_t("InNetPool");
_t("JobQueue");
_t("NetworkDatabase");
_t("ntcp");
_t("Peers");
_t("Router");
_t("Stream");
_t("Throttle");
_t("Transport");
_t("Tunnels");
_t("udp");
// parameters in transport addresses (netdb.jsp)
// may or may not be worth translating

View File

@ -98,7 +98,7 @@ Warning - Log with care, stat file grows without limit.<br>
while (statshelper.groupRequired()) { %>
<tr>
<th align="left" colspan="3" id=<%=statshelper.getCurrentGroupName()%>>
<b><%=intl._t(statshelper.getCurrentGroupName())%></b>
<b><%=statshelper.getTranslatedGroupName()%></b>
<a class="script" title="<%=intl._t("Toggle section graphing options")%>" href="javascript:void(null);" onclick="toggleAll('<%=statshelper.getCurrentGroupName()%>')">[<%=intl._t("toggle all")%>]</a>
</th></tr>
<tr class="tablefooter">