diff --git a/apps/routerconsole/java/src/net/i2p/router/web/NetDbHelper.java b/apps/routerconsole/java/src/net/i2p/router/web/NetDbHelper.java index 5eb67473e..1eb44bd48 100644 --- a/apps/routerconsole/java/src/net/i2p/router/web/NetDbHelper.java +++ b/apps/routerconsole/java/src/net/i2p/router/web/NetDbHelper.java @@ -11,9 +11,28 @@ public class NetDbHelper extends HelperBase { private int _full; private boolean _lease; private boolean _debug; + private boolean _graphical; - public NetDbHelper() {} - + private static final String PROP_DEBUG = "routerconsole.debug"; + + private static final String titles[] = + {_x("Summary"), // 0 + _x("Local Router"), // 1 + _x("Router Lookup"), // 2 + _x("All Routers"), // 3 + _x("All Routers with Full Stats"), // 4 + "LeaseSet Debug", // 5 + _x("LeaseSets") }; // 6 + + private static final String links[] = + {"", // 0 + "?r=.", // 1 + "", // 2 + "?f=2", // 3 + "?f=1", // 4 + "?l=2", // 5 + "?l=1" }; // 6 + public void setRouter(String r) { if (r != null) _routerPrefix = DataHelper.stripHTML(r); // XSS @@ -30,30 +49,88 @@ public class NetDbHelper extends HelperBase { _lease = _debug || "1".equals(l); } + /** + * call for non-text-mode browsers + * @since 0.9.1 + */ + public void allowGraphical() { + _graphical = true; + } + + /** + * storeWriter() must be called previously + */ public String getNetDbSummary() { NetDbRenderer renderer = new NetDbRenderer(_context); try { - if (_out != null) { - if (_routerPrefix != null) - renderer.renderRouterInfoHTML(_out, _routerPrefix); - else if (_lease) - renderer.renderLeaseSetHTML(_out, _debug); - else - renderer.renderStatusHTML(_out, _full); - return ""; - } else { - ByteArrayOutputStream baos = new ByteArrayOutputStream(32*1024); - if (_routerPrefix != null) - renderer.renderRouterInfoHTML(new OutputStreamWriter(baos), _routerPrefix); - else if (_lease) - renderer.renderLeaseSetHTML(new OutputStreamWriter(baos), _debug); - else - renderer.renderStatusHTML(new OutputStreamWriter(baos), _full); - return new String(baos.toByteArray()); - } + renderNavBar(); + if (_routerPrefix != null) + renderer.renderRouterInfoHTML(_out, _routerPrefix); + else if (_lease) + renderer.renderLeaseSetHTML(_out, _debug); + else + renderer.renderStatusHTML(_out, _full); } catch (IOException ioe) { ioe.printStackTrace(); - return ""; } + return ""; + } + + /** + * @since 0.9.1 + */ + private int getTab() { + if (_debug) + return 5; + if (_lease) + return 6; + if (".".equals(_routerPrefix)) + return 1; + if (_routerPrefix != null) + return 2; + if (_full == 2) + return 3; + if (_full == 1) + return 4; + return 0; + } + + /** + * @since 0.9.1 + */ + private void renderNavBar() throws IOException { + StringBuilder buf = new StringBuilder(1024); + buf.append("
"); + _out.write(buf.toString()); } } diff --git a/apps/routerconsole/java/src/net/i2p/router/web/NetDbRenderer.java b/apps/routerconsole/java/src/net/i2p/router/web/NetDbRenderer.java index d81dcc855..b4e53ed92 100644 --- a/apps/routerconsole/java/src/net/i2p/router/web/NetDbRenderer.java +++ b/apps/routerconsole/java/src/net/i2p/router/web/NetDbRenderer.java @@ -75,7 +75,6 @@ public class NetDbRenderer { public void renderRouterInfoHTML(Writer out, String routerPrefix) throws IOException { StringBuilder buf = new StringBuilder(4*1024); - buf.append("Debug mode - Sorted by hash distance, closest first
\n"); Hash ourRKey; Set"); + + //// + //// don't bother reindenting + //// + if (mode < 2) { + + //buf.append("
"); buf.append(ngettext("Showing 1 recent profile.", "Showing {0} recent profiles.", order.size())).append('\n'); if (older > 0) buf.append(ngettext("Hiding 1 older profile.", "Hiding {0} older profiles.", older)).append('\n'); @@ -181,8 +192,13 @@ class ProfileOrganizerRenderer { } buf.append(""); - buf.append("
| ").append(_("Peer")).append(" | "); @@ -247,6 +263,12 @@ class ProfileOrganizerRenderer { } buf.append("
|---|
").append(_("Speed")).append(": ").append(num(_organizer.getSpeedThreshold()))
.append(" (").append(fast).append(' ').append(_("fast peers")).append(")
");
@@ -262,6 +284,12 @@ class ProfileOrganizerRenderer {
buf.append("