From 24e83398baf30eaf7ebdbfd70fa4f7286599c53f Mon Sep 17 00:00:00 2001 From: z3d Date: Fri, 31 Jul 2009 19:15:35 +0000 Subject: [PATCH] UI fixes: text boxes, buttons, radio/checkbox width. Enhanced /peers.jsp. --- apps/routerconsole/jsp/configstats.jsp | 16 +-- apps/routerconsole/jsp/summaryframe.jsp | 2 +- history.txt | 7 ++ .../resources/themes/console/dark/console.css | 98 +++++++++++++++---- .../themes/console/light/console.css | 63 ++++++++++-- readme.html | 2 +- .../src/net/i2p/router/RouterVersion.java | 4 +- .../peermanager/ProfileOrganizerRenderer.java | 10 +- .../router/transport/ntcp/NTCPTransport.java | 40 ++++---- .../router/transport/udp/UDPTransport.java | 68 ++++++------- .../router/tunnel/pool/TunnelPoolManager.java | 62 ++++++------ 11 files changed, 246 insertions(+), 126 deletions(-) diff --git a/apps/routerconsole/jsp/configstats.jsp b/apps/routerconsole/jsp/configstats.jsp index 9cab909afc..a1298d444d 100644 --- a/apps/routerconsole/jsp/configstats.jsp +++ b/apps/routerconsole/jsp/configstats.jsp @@ -81,28 +81,28 @@ function toggleAll(category) <% while (statshelper.hasMoreStats()) { while (statshelper.groupRequired()) { %> - <% + <% } // end iterating over required groups for the current stat %> - - <% } // end iterating over all stats %> - - + + - - + +
+
<%=statshelper.getCurrentGroupName()%> (toggle all) -
LogGraph
LogGraph
+
checked="true" <% } %>/> + <% if (statshelper.getCurrentCanBeGraphed()) { %> checked="true" <% } %>/><% } %> <%=statshelper.getCurrentStatName()%>:
<%=statshelper.getCurrentStatDescription()%>

Advanced filter:

diff --git a/apps/routerconsole/jsp/summaryframe.jsp b/apps/routerconsole/jsp/summaryframe.jsp index 9532602fa4..d19ea12794 100644 --- a/apps/routerconsole/jsp/summaryframe.jsp +++ b/apps/routerconsole/jsp/summaryframe.jsp @@ -62,7 +62,7 @@ if (!shutdownSoon) { out.print("

\n"); if ("0".equals(d)) { - out.print("Refresh (s): \n"); + out.print("Refresh (s): \n"); out.print("\n"); } else { // this will load in the iframe but subsequent pages will not have the iframe diff --git a/history.txt b/history.txt index 10ce5688d4..b5509a7705 100644 --- a/history.txt +++ b/history.txt @@ -1,3 +1,10 @@ +2009-07-31 dr|z3d + * Resolve anomalous buttons and text fields in console ui. + * Enhance presentation of data in /peers.jsp. + * Fix themes issue with horizontal width of radio/checkbox icons. + (Radioboxes currently non-functional in Opera). + * Other cosmetic UI enhancements. + * 2009-07-31 0.7.6 released 2009-07-31 zzz diff --git a/installer/resources/themes/console/dark/console.css b/installer/resources/themes/console/dark/console.css index 3c17280fe4..e587381429 100644 --- a/installer/resources/themes/console/dark/console.css +++ b/installer/resources/themes/console/dark/console.css @@ -65,7 +65,7 @@ div.toolbar a:visited { } div.toolbar a:hover, button:hover{ - border: 1px solid #eeeeff; + border: 1px solid #f60; background: #003; color: #f60; } @@ -255,13 +255,14 @@ table { } th { - padding: 6px 3px; + padding: 6px 2px; color: #eef; text-align: center; - font-size: 8pt; + font-size: 9pt; background: #004 url('images/tabletitledark.png') repeat-x; border-top: 1px solid #99f; - border-bottom: 1px solid #99f; + border-bottom: 1px solid #99f !important; + line-height: 110%; } tr { @@ -285,7 +286,7 @@ tr:last-child { } */ td { - padding: 6px 4px; + padding: 6px 3px; color: #eef; vertical-align: middle; border-top: 1px inset #006; @@ -435,6 +436,7 @@ h4 { } button { + font: bold 9pt "Lucida Sans Unicode", "Bitstream Vera Sans", Verdana, Tahoma, Helvetica, sans-serif; border: 1px outset #ddddc0; padding: 1px 3px; background: #bbf; @@ -486,37 +488,62 @@ sidebarlogo { } input { + border: 1px outset #bbf; background: #bbf; color: #002; margin: 5px; font: bold 9pt "Lucida Sans Unicode", "Bitstream Vera Sans", Verdana, Tahoma, Helvetica, sans-serif; - border: 1px solid #99f; padding: 1px 2px; text-decoration: none; min-width: 110px; - opacity: 0.8; + border-radius: 4px; + -moz-border-radius: 4px; + -khtml-border-radius: 4px; } input:hover { - background: #eef; - color: #001; + background: #003; + color: #f60; border: 1px solid #f60; } input:active { background: #002; + color: #f30; + border: 1px solid #f30; +} + +input:active { + border: 1px inset #f60; + background: #f60; color: #fff; - border: 1px solid #f60; +} + +input[type=text] { + background: #002; + color: #eef; + margin: 5px 10px; + padding: 4px 2px; + font: bold 8pt "Lucida Sans Unicode", "Bitstream Vera Sans", Verdana, Tahoma, Helvetica, sans-serif; + border: 1px solid #bbf; + text-decoration: none; + border-radius: 4px; + -moz-border-radius: 4px; + -khtml-border-radius: 4px; +} + +input[type=text]:active, input[type=text]:hover { + background: #001; } select { background: #002; color: #eef; - margin: 5px; - border: 1px solid #99f; - border-radius: 0; - -moz-border-radius: 0; - -khtml-border-radius: 0; + margin: 5px 10px; + border: 1px solid #bbf; + border-radius: 4px; + -moz-border-radius: 4px; + -khtml-border-radius: 4px; min-width: 110px; font: 9pt "Lucida Sans Unicode", "Bitstream Vera Sans", Verdana, Tahoma, Helvetica, sans-serif; padding: 2px; @@ -526,13 +553,13 @@ textarea { background: #001; color: #eef; padding: 5px; - margin: 15px 15px 5px 0px; + margin: 10px; border-radius: 4px; -moz-border-radius: 4px; -khtml-border-radius: 4px; font: 9pt "Lucida Console", "DejaVu Sans Mono", Courier, mono; min-height: 100px; - min-width: 100%; + min-width: 97%; text-align: left; border: 1px solid #99f; } @@ -596,4 +623,41 @@ form {} .mediumtags { font-size: 9pt; +} + +.optbox { + min-width: 16px !important; + max-width: 16px !important; + width: 16px !important; + min-height: 16px; + max-height: 16px; + height: 16px; + opacity: 1.0; + border: 0; + margin: 0 0 0 10px; +} + +.optbox:hover { + min-width: 16px !important; + max-width: 16px !important; + width: 16px !important; + min-height: 16px; + max-height: 16px; + height: 16px; + opacity: 1.0; + border: 0; + margin: 0 0 0 10px; +} + +.cells { + border: 1px inset #005; + border-left: 1px outset #002; +} + +.tablefooter tr, .tablefooter td { + background: #004 url('images/tabletitledark.png') repeat-x !important; + border-top: 1px solid #99f; + border-bottom: 1px solid #99f !important; + font-size: 8pt; + line-height: 110%; } \ No newline at end of file diff --git a/installer/resources/themes/console/light/console.css b/installer/resources/themes/console/light/console.css index e2f407e419..62b7a36bf1 100644 --- a/installer/resources/themes/console/light/console.css +++ b/installer/resources/themes/console/light/console.css @@ -299,6 +299,7 @@ table { cell-padding: 1px; font-size: 7pt; background: #b4c8ff url('images/tabletitlelight.png') repeat-x; + font: 7pt/130% "Lucida Sans Unicode", Verdana, Bitstream Vera Sans", Tahoma, Helvetica, sans-serif; } th { @@ -307,8 +308,9 @@ th { background: #b4c8ff url('images/tabletitlelight.png') repeat-x; text-align: center; font-size: 9pt; - border-bottom: 1px solid #001; - border-top: 1px solid #001; + line-height: 110%; + border-bottom: 1px solid #001 !important; + border-top: 1px solid #001 !important; } tr { @@ -331,7 +333,7 @@ tr:last-child { } */ td { - padding: 5px; + padding: 5px 3px; color: #000; vertical-align: middle; border-top: 1px inset #001; @@ -473,7 +475,8 @@ h4 { font-size: 11pt; } -button { +button, button:visited { + font: bold 9pt "Lucida Sans Unicode", "Bitstream Vera Sans", Verdana, Tahoma, Helvetica, sans-serif; border: 1px outset #ddddc0; padding: 1px 3px; background: #bbf !important; @@ -526,9 +529,23 @@ input { border: 1px solid #001; text-decoration: none; min-width: 110px; - opacity: 0.8; } +input, input:visited { + border: 1px outset #bbf; + background: #bbf; + color: #001; + margin: 5px; + font: bold 8pt "Lucida Sans Unicode", "Bitstream Vera Sans", Verdana, Tahoma, Helvetica, sans-serif; + padding: 1px 2px; + text-decoration: none; + min-width: 110px; + border-radius: 4px; + -moz-border-radius: 4px; + -khtml-border-radius: 4px; +} + + input:hover { background: #f60; color: #fff; @@ -543,6 +560,16 @@ input:active { opacity: 1.0; } +input[type=text] { + background: #eef; + color: #001; + margin: 5px 10px 5px 10px; + padding: 4px 2px; + font: bold 8pt "Lucida Sans Unicode", "Bitstream Vera Sans", Verdana, Tahoma, Helvetica, sans-serif; + border: 1px solid #001; + text-decoration: none; +} + submit { background: #f00; color: #eef; @@ -566,11 +593,14 @@ select { border: 1px solid #001; min-width: 110px; font: 9pt "Lucida Sans Unicode", "Bitstream Vera Sans", Verdana, Tahoma, Helvetica, sans-serif; + border-radius: 4px; + -moz-border-radius: 4px; + -khtml-border-radius: 4px; } textarea { padding: 5px; - margin: 15px 15px 5px 0px; + margin: 5px 15px 5px 10px; background: #eef; color: #003; border-radius: 4px; @@ -578,7 +608,7 @@ textarea { -khtml-border-radius: 4px; font: 8pt "Lucida Console", "DejaVu Sans Mono", Courier, mono; min-height: 100px; - min-width: 100%; + min-width: 97%; border: 1px solid #001; } @@ -663,4 +693,23 @@ form {} height: 16px; opacity: 1.0; border: 0; +} + +.cells { + border-left: 1px outset #bbf; + border-top: 1px inset #99f !important; + border-bottom: 1px inset #99f !important; +} + +.tablefooter { + background: #b4c8ff url('images/tabletitlelight.png') repeat-x; +} + +.tablefooter tr, .tablefooter td { + background: #b4c8ff url('images/tabletitlelight.png') repeat-x; + border-top: 1px solid #001; + border-bottom: 1px solid #001 !important; + padding: 8px 2px !important; + font-size: 8pt; + line-height: 110%; } \ No newline at end of file diff --git a/readme.html b/readme.html index ffabaddf33..3caf086ed9 100644 --- a/readme.html +++ b/readme.html @@ -35,7 +35,7 @@

There are many more eepsites - just follow the links from the ones you see, bookmark your favorites, and visit them often! - +

    diff --git a/router/java/src/net/i2p/router/RouterVersion.java b/router/java/src/net/i2p/router/RouterVersion.java index 8aa072fcf9..326d2e1101 100644 --- a/router/java/src/net/i2p/router/RouterVersion.java +++ b/router/java/src/net/i2p/router/RouterVersion.java @@ -18,9 +18,9 @@ public class RouterVersion { /** deprecated */ public final static String ID = "Monotone"; public final static String VERSION = CoreVersion.VERSION; - public final static long BUILD = 0; + public final static long BUILD = 02; /** for example "-test" */ - public final static String EXTRA = ""; + public final static String EXTRA = "-zed"; public final static String FULL_VERSION = VERSION + "-" + BUILD + EXTRA; public static void main(String args[]) { System.out.println("I2P Router version: " + FULL_VERSION); diff --git a/router/java/src/net/i2p/router/peermanager/ProfileOrganizerRenderer.java b/router/java/src/net/i2p/router/peermanager/ProfileOrganizerRenderer.java index ebb9d61c0c..fecda29d03 100644 --- a/router/java/src/net/i2p/router/peermanager/ProfileOrganizerRenderer.java +++ b/router/java/src/net/i2p/router/peermanager/ProfileOrganizerRenderer.java @@ -218,7 +218,11 @@ class ProfileOrganizerRenderer { } buf.append(""); - buf.append("

    Definitions:

      "); + buf.append("

      Thresholds:

      "); + buf.append("Speed: ").append(num(_organizer.getSpeedThreshold())).append(" (").append(fast).append(" fast peers)
      "); + buf.append("Capacity: ").append(num(_organizer.getCapacityThreshold())).append(" (").append(reliable).append(" high capacity peers)
      "); + buf.append("Integration: ").append(num(_organizer.getIntegrationThreshold())).append(" (").append(integrated).append(" well integrated peers)"); + buf.append("

      Definitions:

        "); buf.append("
      • groups: as determined by the profile organizer
      • "); buf.append("
      • caps: capabilities in the netDb, not used to determine profiles
      • "); buf.append("
      • speed: peak throughput (bytes per second) over a 1 minute period that the peer has sustained in a single tunnel
      • "); @@ -226,10 +230,6 @@ class ProfileOrganizerRenderer { buf.append("
      • integration: how many new peers have they told us about lately?
      • "); buf.append("
      • failing?: is the peer currently swamped (and if possible we should avoid nagging them)?
      • "); buf.append("
      "); - buf.append("

      Thresholds:
      "); - buf.append("Speed: ").append(num(_organizer.getSpeedThreshold())).append(" (").append(fast).append(" fast peers)
      "); - buf.append("Capacity: ").append(num(_organizer.getCapacityThreshold())).append(" (").append(reliable).append(" high capacity peers)
      "); - buf.append("Integration: ").append(num(_organizer.getIntegrationThreshold())).append(" (").append(integrated).append(" well integrated peers)
      "); out.write(buf.toString()); out.flush(); } diff --git a/router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java b/router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java index 4dbb588567..a21ad2790c 100644 --- a/router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java +++ b/router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java @@ -660,20 +660,20 @@ public class NTCPTransport extends TransportImpl { buf.setLength(0); for (Iterator iter = peers.iterator(); iter.hasNext(); ) { NTCPConnection con = (NTCPConnection)iter.next(); - buf.append(""); + buf.append(" "); buf.append(_context.commSystem().renderPeerHTML(con.getRemotePeer().calculateHash())); //byte[] ip = getIP(con.getRemotePeer().calculateHash()); //if (ip != null) // buf.append(' ').append(_context.blocklist().toStr(ip)); - buf.append(""); + buf.append(" "); if (con.isInbound()) buf.append("\"Inbound\""); else buf.append("\"Outbound\""); - buf.append(""); + buf.append(" "); buf.append(con.getTimeSinceReceive()/1000); buf.append("s/").append(con.getTimeSinceSend()/1000); - buf.append("s"); + buf.append("s "); if (con.getTimeSinceReceive() < 10*1000) { buf.append(formatRate(con.getRecvRate()/1024)); bpsRecv += con.getRecvRate(); @@ -688,28 +688,28 @@ public class NTCPTransport extends TransportImpl { buf.append(formatRate(0)); } buf.append("K/s"); - buf.append("").append(DataHelper.formatDuration(con.getUptime())); + buf.append(" ").append(DataHelper.formatDuration(con.getUptime())); totalUptime += con.getUptime(); offsetTotal = offsetTotal + con.getClockSkew(); - buf.append("").append(con.getClockSkew()); - buf.append("s").append(con.getMessagesSent()); + buf.append(" ").append(con.getClockSkew()); + buf.append("s ").append(con.getMessagesSent()); totalSend += con.getMessagesSent(); - buf.append("").append(con.getMessagesReceived()); + buf.append(" ").append(con.getMessagesReceived()); totalRecv += con.getMessagesReceived(); long outQueue = con.getOutboundQueueSize(); if (outQueue <= 0) { - buf.append("No messages"); + buf.append(" No messages"); } else { - buf.append("").append(outQueue).append(" message"); + buf.append(" ").append(outQueue).append(" message"); if (outQueue > 1) buf.append("s"); } - buf.append("").append(con.getConsecutiveBacklog() > 0 ? "true" : "false"); + buf.append(" ").append(con.getConsecutiveBacklog() > 0 ? "true" : "false"); long readTime = con.getReadTime(); if (readTime <= 0) { - buf.append("No"); + buf.append(" No"); } else { - buf.append("For ").append(DataHelper.formatDuration(readTime)); + buf.append(" For ").append(DataHelper.formatDuration(readTime)); } buf.append("\n"); out.write(buf.toString()); @@ -717,13 +717,13 @@ public class NTCPTransport extends TransportImpl { } if (peers.size() > 0) { - buf.append("


      \n"); - buf.append("").append(peers.size()).append(" peers  "); - buf.append("").append(formatRate(bpsRecv/1024)).append("/").append(formatRate(bpsSend/1024)).append("K/s"); - buf.append("").append(DataHelper.formatDuration(totalUptime/peers.size())); - buf.append("").append(peers.size() > 0 ? DataHelper.formatDuration(offsetTotal*1000/peers.size()) : "0ms"); - buf.append("").append(totalSend).append("").append(totalRecv); - buf.append("   "); +// buf.append("
      \n"); + buf.append(" ").append(peers.size()).append(" peers    "); + buf.append(" ").append(formatRate(bpsRecv/1024)).append("/").append(formatRate(bpsSend/1024)).append("K/s"); + buf.append(" ").append(DataHelper.formatDuration(totalUptime/peers.size())); + buf.append(" ").append(peers.size() > 0 ? DataHelper.formatDuration(offsetTotal*1000/peers.size()) : "0ms"); + buf.append(" ").append(totalSend).append(" ").append(totalRecv); + buf.append("      "); buf.append("\n"); } diff --git a/router/java/src/net/i2p/router/transport/udp/UDPTransport.java b/router/java/src/net/i2p/router/transport/udp/UDPTransport.java index d4b4a763be..2d38730ae9 100644 --- a/router/java/src/net/i2p/router/transport/udp/UDPTransport.java +++ b/router/java/src/net/i2p/router/transport/udp/UDPTransport.java @@ -1771,7 +1771,7 @@ public class UDPTransport extends TransportImpl implements TimedWeightedPriority buf.append("Peer"); if (sortFlags != FLAG_ALPHA) buf.append(" V "); - buf.append("Dir/IntroIdle
      "); + buf.append("DirIdle
      "); appendSortLinks(buf, urlBase, sortFlags, "Sort by idle inbound", FLAG_IDLE_IN); buf.append("/"); appendSortLinks(buf, urlBase, sortFlags, "Sort by idle outbound", FLAG_IDLE_OUT); @@ -1819,12 +1819,12 @@ public class UDPTransport extends TransportImpl implements TimedWeightedPriority if (now-peer.getLastReceiveTime() > 60*60*1000) continue; // don't include old peers - buf.append(""); + buf.append(" "); buf.append(_context.commSystem().renderPeerHTML(peer.getRemotePeer())); //byte ip[] = peer.getRemoteIP(); //if (ip != null) // buf.append(' ').append(_context.blocklist().toStr(ip)); - buf.append(""); + buf.append(" "); if (peer.isInbound()) buf.append("\"Inbound\" "); else @@ -1862,7 +1862,7 @@ public class UDPTransport extends TransportImpl implements TimedWeightedPriority if (idleIn < 0) idleIn = 0; if (idleOut < 0) idleOut = 0; - buf.append(""); + buf.append(" "); buf.append(idleIn); buf.append("s/"); buf.append(idleOut); @@ -1871,7 +1871,7 @@ public class UDPTransport extends TransportImpl implements TimedWeightedPriority int recvBps = (idleIn > 2 ? 0 : peer.getReceiveBps()); int sendBps = (idleOut > 2 ? 0 : peer.getSendBps()); - buf.append(""); + buf.append(" "); buf.append(formatKBps(recvBps)); buf.append("/"); buf.append(formatKBps(sendBps)); @@ -1884,18 +1884,18 @@ public class UDPTransport extends TransportImpl implements TimedWeightedPriority long uptime = now - peer.getKeyEstablishedTime(); - buf.append(""); + buf.append(" "); buf.append(DataHelper.formatDuration(uptime)); buf.append(""); - buf.append(""); + buf.append(" "); buf.append(peer.getClockSkew()); buf.append("s"); offsetTotal = offsetTotal + peer.getClockSkew(); long sendWindow = peer.getSendWindowBytes(); - buf.append(""); + buf.append(" "); buf.append(sendWindow/1024); buf.append("K"); buf.append("/").append(peer.getConcurrentSends()); @@ -1903,26 +1903,26 @@ public class UDPTransport extends TransportImpl implements TimedWeightedPriority buf.append("/").append(peer.getConsecutiveSendRejections()); buf.append(""); - buf.append(""); + buf.append(" "); buf.append(peer.getSlowStartThreshold()/1024); buf.append("K"); int rtt = peer.getRTT(); int rto = peer.getRTO(); - buf.append(""); + buf.append(" "); buf.append(rtt); buf.append(""); - buf.append(""); + buf.append(" "); buf.append(peer.getRTTDeviation()); buf.append(""); - buf.append(""); + buf.append(" "); buf.append(rto); buf.append(""); - buf.append(""); + buf.append(" "); buf.append(peer.getMTU()).append("/").append(peer.getReceiveMTU()); //.append('/'); @@ -1933,11 +1933,11 @@ public class UDPTransport extends TransportImpl implements TimedWeightedPriority long sent = peer.getPacketsTransmitted(); long recv = peer.getPacketsReceived(); - buf.append(""); + buf.append(" "); buf.append(sent); buf.append(""); - buf.append(""); + buf.append(" "); buf.append(recv); buf.append(""); @@ -1949,14 +1949,14 @@ public class UDPTransport extends TransportImpl implements TimedWeightedPriority long resent = peer.getPacketsRetransmitted(); long dupRecv = peer.getPacketsReceivedDuplicate(); - buf.append(""); + buf.append(" "); //buf.append(formatPct(sendLostPct)); buf.append(resent); // + "/" + peer.getPacketsPeriodRetransmitted() + "/" + sent); //buf.append(peer.getPacketRetransmissionRate()); buf.append(""); double recvDupPct = (double)peer.getPacketsReceivedDuplicate()/(double)peer.getPacketsReceived(); - buf.append(""); + buf.append(" "); buf.append(dupRecv); //formatPct(recvDupPct)); buf.append(""); @@ -1980,24 +1980,24 @@ public class UDPTransport extends TransportImpl implements TimedWeightedPriority numPeers++; } - buf.append("
      \n"); - buf.append(" Total"); - buf.append(" "); +// buf.append("
      \n"); + buf.append(" Total"); + buf.append(" "); buf.append(formatKBps(bpsIn)).append("/").append(formatKBps(bpsOut)); buf.append("K/s"); - buf.append(" ").append(numPeers > 0 ? DataHelper.formatDuration(uptimeMsTotal/numPeers) : "0s"); - buf.append("").append(numPeers > 0 ? DataHelper.formatDuration(offsetTotal*1000/numPeers) : "0ms").append("\n"); - buf.append(" "); + buf.append(" ").append(numPeers > 0 ? DataHelper.formatDuration(uptimeMsTotal/numPeers) : "0s"); + buf.append(" ").append(numPeers > 0 ? DataHelper.formatDuration(offsetTotal*1000/numPeers) : "0ms").append("\n"); + buf.append(" "); buf.append(numPeers > 0 ? cwinTotal/(numPeers*1024) + "K" : "0K"); - buf.append(" \n"); - buf.append(" "); + buf.append("  \n"); + buf.append(" "); buf.append(numPeers > 0 ? rttTotal/numPeers : 0); - buf.append(" "); + buf.append("   "); buf.append(numPeers > 0 ? rtoTotal/numPeers : 0); - buf.append("\n  "); - buf.append(sendTotal).append("").append(recvTotal).append("\n"); - buf.append(" ").append(resentTotal); - buf.append("").append(dupRecvTotal).append("\n"); + buf.append("\n   "); + buf.append(sendTotal).append(" ").append(recvTotal).append("\n"); + buf.append(" ").append(resentTotal); + buf.append(" ").append(dupRecvTotal).append("\n"); buf.append("

      \n"); long bytesTransmitted = _context.bandwidthLimiter().getTotalAllocatedOutboundBytes(); // NPE here early @@ -2026,7 +2026,7 @@ public class UDPTransport extends TransportImpl implements TimedWeightedPriority } } - private static final String KEY = "

      Explanation of abbreviated terms used.

      " + + private static final String KEY = "

      Definitions:

      " + "
      Peer: the remote peer.
      \n" + "Dir: v means they offer to introduce us, ^ means we offer to introduce them.
      \n" + "Idle: the idle time is how long since a packet has been received or sent.
      \n" + @@ -2034,9 +2034,9 @@ public class UDPTransport extends TransportImpl implements TimedWeightedPriority "Up: the uptime is how long ago this session was established.
      \n" + "Skew: the skew says how far off the other user's clock is, relative to your own.
      \n" + "Cwnd: the congestion window is how many bytes in 'in flight' you can send w/out an acknowledgement, /
      \n" + - "      the number of currently active messages being sent, /
      \n" + - "      the maximum number of concurrent messages to send, /
      \n"+ - "      the number of consecutive sends which were blocked due to throws message window size.
      \n" + + "        the number of currently active messages being sent, /
      \n" + + "        the maximum number of concurrent messages to send, /
      \n"+ + "        the number of consecutive sends which were blocked due to throws message window size.
      \n" + "Sst: the slow start threshold helps make sure the cwnd doesn't grow too fast.
      \n" + "Rtt: the round trip time is how long it takes to get an acknowledgement of a packet.
      \n" + "Dev: the standard deviation of the round trip time, to help control the retransmit timeout.
      \n" + diff --git a/router/java/src/net/i2p/router/tunnel/pool/TunnelPoolManager.java b/router/java/src/net/i2p/router/tunnel/pool/TunnelPoolManager.java index 7524e12c33..70b869b558 100644 --- a/router/java/src/net/i2p/router/tunnel/pool/TunnelPoolManager.java +++ b/router/java/src/net/i2p/router/tunnel/pool/TunnelPoolManager.java @@ -455,41 +455,41 @@ public class TunnelPoolManager implements TunnelManagerFacade { } out.write(""); if (cfg.getReceiveTunnel() != null) - out.write("" + cfg.getReceiveTunnel().getTunnelId() +""); + out.write(" " + cfg.getReceiveTunnel().getTunnelId() +""); else - out.write("n/a"); + out.write(" n/a"); if (cfg.getReceiveFrom() != null) - out.write("" + netDbLink(cfg.getReceiveFrom()) +""); + out.write(" " + netDbLink(cfg.getReceiveFrom()) +""); else - out.write(" "); + out.write("  "); if (cfg.getSendTunnel() != null) - out.write("" + cfg.getSendTunnel().getTunnelId() +""); + out.write(" " + cfg.getSendTunnel().getTunnelId() +""); else - out.write(" "); + out.write("  "); if (cfg.getSendTo() != null) - out.write("" + netDbLink(cfg.getSendTo()) +""); + out.write(" " + netDbLink(cfg.getSendTo()) +""); else -// out.write(" "); - out.write(" "); +// out.write("  "); + out.write("  "); long timeLeft = cfg.getExpiration()-_context.clock().now(); if (timeLeft > 0) - out.write("" + DataHelper.formatDuration(timeLeft) + ""); + out.write(" " + DataHelper.formatDuration(timeLeft) + ""); else - out.write("(grace period)"); - out.write("" + cfg.getProcessedMessagesCount() + "KB"); + out.write(" (grace period)"); + out.write(" " + cfg.getProcessedMessagesCount() + "KB"); int lifetime = (int) ((_context.clock().now() - cfg.getCreation()) / 1000); if (lifetime <= 0) lifetime = 1; if (lifetime > 10*60) lifetime = 10*60; int bps = 1024 * (int) cfg.getProcessedMessagesCount() / lifetime; - out.write("" + bps + "Bps"); + out.write(" " + bps + "Bps"); if (cfg.getSendTo() == null) - out.write("Outbound Endpoint"); + out.write(" Outbound Endpoint"); else if (cfg.getReceiveFrom() == null) - out.write("Inbound Gateway"); + out.write(" Inbound Gateway"); else - out.write("Participant"); + out.write(" Participant"); out.write("\n"); processed += cfg.getProcessedMessagesCount(); } @@ -543,23 +543,23 @@ public class TunnelPoolManager implements TunnelManagerFacade { continue; // don't display tunnels in their grace period live++; if (info.isInbound()) - out.write("\"Inbound\""); + out.write(" \"Inbound\""); else - out.write("\"Outbound\""); - out.write("" + DataHelper.formatDuration(timeLeft) + "\n"); - out.write("" + info.getProcessedMessagesCount() + "KB\n"); + out.write(" \"Outbound\""); + out.write(" " + DataHelper.formatDuration(timeLeft) + "\n"); + out.write(" " + info.getProcessedMessagesCount() + "KB\n"); for (int j = 0; j < info.getLength(); j++) { Hash peer = info.getPeer(j); TunnelId id = (info.isInbound() ? info.getReceiveTunnelId(j) : info.getSendTunnelId(j)); if (_context.routerHash().equals(peer)) { - out.write("" + (id == null ? "" : "" + id) + ""); + out.write(" " + (id == null ? "" : "" + id) + ""); } else { String cap = getCapacity(peer); - out.write("" + netDbLink(peer) + (id == null ? "" : " " + id) + cap + ""); + out.write(" " + netDbLink(peer) + (id == null ? "" : " " + id) + cap + ""); } if (info.getLength() < maxLength && (info.getLength() == 1 || j == info.getLength() - 2)) { for (int k = info.getLength(); k < maxLength; k++) - out.write(" "); + out.write("  "); } } out.write("\n"); @@ -605,25 +605,25 @@ public class TunnelPoolManager implements TunnelManagerFacade { out.write("

      Tunnel Counts By Peer:

      \n"); out.write("\n"); for (Hash h : peerList) { - out.write("
      PeerExpl. + Client% of totalPart. from + to% of total
      "); + out.write("
      "); out.write(netDbLink(h)); - out.write("" + lc.count(h)); - out.write(""); + out.write(" " + lc.count(h)); + out.write(" "); if (tunnelCount > 0) out.write("" + (lc.count(h) * 100 / tunnelCount)); else out.write('0'); - out.write("" + pc.count(h)); - out.write(""); + out.write(" " + pc.count(h)); + out.write(" "); if (partCount > 0) out.write("" + (pc.count(h) * 100 / partCount)); else out.write('0'); out.write('\n'); } - out.write("
      Tunnels" + tunnelCount); - out.write(" " + partCount); - out.write(" 
      \n"); + out.write(" Tunnels " + tunnelCount); + out.write("   " + partCount); + out.write("  \n"); } /** @return total number of non-fallback expl. + client tunnels */