I2PSnark: Add status icons, refine css.

This commit is contained in:
z3d
2010-10-30 16:34:04 +00:00
parent 4d77f62e38
commit e95b41511a
11 changed files with 66 additions and 35 deletions

View File

@@ -243,8 +243,9 @@ public class I2PSnarkServlet extends Default {
out.write(" title=\""); out.write(" title=\"");
out.write(_("Torrent Status")); out.write(_("Torrent Status"));
out.write("\">"); out.write("\">");
out.write(_("Status"));
if (_manager.util().connected() && !snarks.isEmpty()) { if (_manager.util().connected() && !snarks.isEmpty()) {
out.write(" &raquo; <a href=\""); out.write("<a href=\"");
out.write(req.getRequestURI()); out.write(req.getRequestURI());
if (peerParam != null) { if (peerParam != null) {
out.write("\">"); out.write("\">");
@@ -633,8 +634,8 @@ public class I2PSnarkServlet extends Default {
return rv; return rv;
} }
private static final int MAX_DISPLAYED_FILENAME_LENGTH = 42; private static final int MAX_DISPLAYED_FILENAME_LENGTH = 44;
private static final int MAX_DISPLAYED_ERROR_LENGTH = 40; private static final int MAX_DISPLAYED_ERROR_LENGTH = 6;
private void displaySnark(PrintWriter out, Snark snark, String uri, int row, long stats[], boolean showPeers, boolean showDebug) throws IOException { private void displaySnark(PrintWriter out, Snark snark, String uri, int row, long stats[], boolean showPeers, boolean showDebug) throws IOException {
String filename = snark.torrent; String filename = snark.torrent;
File f = new File(filename); File f = new File(filename);
@@ -692,50 +693,57 @@ public class I2PSnarkServlet extends Default {
String statusString = _("Unknown"); String statusString = _("Unknown");
if (err != null) { if (err != null) {
if (isRunning && curPeers > 0 && !showPeers) if (isRunning && curPeers > 0 && !showPeers)
statusString = "<a title=\"" + err + "\">" + _("TrackerErr") + "</a> &raquo; " + statusString = "<img border=\"0\" src=\"/themes/snark/ubergine/images/trackererror.png\" title=\"" + _("Tracker Error") +
"<a href=\"" + uri + "?p=" + Base64.encode(snark.meta.getInfoHash()) + "\">" + "\"><a href=\"" + uri + "?p=" + Base64.encode(snark.meta.getInfoHash()) + "\">" +
curPeers + '/' + curPeers + '/' +
ngettext("1 peer", "{0} peers", knownPeers) + "</a>"; ngettext("1 peer", "{0} peers", knownPeers) + "</a>";
else if (isRunning) else if (isRunning)
statusString = "<a title=\"" + err + "\">" + _("TrackerErr") + " &raquo; " + curPeers + '/' + statusString = "<img border=\"0\" src=\"/themes/snark/ubergine/images/trackererror.png\" title=\"" + _("Tracker Error") +
ngettext("1 peer", "{0} peers", knownPeers); "\">" + curPeers + '/' +
ngettext("1 peer", "{0} peers", knownPeers) + "</a>";
else { else {
if (err.length() > MAX_DISPLAYED_ERROR_LENGTH) if (err.length() > MAX_DISPLAYED_ERROR_LENGTH)
err = err.substring(0, MAX_DISPLAYED_ERROR_LENGTH) + "&hellip;"; err = err.substring(0, MAX_DISPLAYED_ERROR_LENGTH) + "&hellip;";
statusString = _("TrackerErr") + "<br>(" + err + ")"; statusString = "<img border=\"0\" src=\"/themes/snark/ubergine/images/trackererror.png\" title=\"" + _("Tracker Error") +
"\">" + err + "</a>";
} }
} else if (remaining <= 0) { } else if (remaining <= 0) {
if (isRunning && curPeers > 0 && !showPeers) if (isRunning && curPeers > 0 && !showPeers)
statusString = _("Seeding") + " &raquo; " + statusString = "<img border=\"0\" src=\"/themes/snark/ubergine/images/seeding.png\" title=\"" + _("Seeding") + "\">" +
"<a href=\"" + uri + "?p=" + Base64.encode(snark.meta.getInfoHash()) + "\">" + "<a href=\"" + uri + "?p=" + Base64.encode(snark.meta.getInfoHash()) + "\">" +
curPeers + '/' + curPeers + '/' +
ngettext("1 peer", "{0} peers", knownPeers) + "</a>"; ngettext("1 peer", "{0} peers", knownPeers) + "</a>";
else if (isRunning) else if (isRunning)
statusString = _("Seeding") + " &raquo; " + curPeers + "/" + statusString = "<img border=\"0\" src=\"/themes/snark/ubergine/images/seeding.png\" title=\"" + _("Seeding") + "\">" +
ngettext("1 peer", "{0} peers", knownPeers); curPeers + "/" +
ngettext("1 peer", "{0} peers", knownPeers) + "</a>";
else else
statusString = _("Complete"); statusString = "<img border=\"0\" src=\"/themes/snark/ubergine/images/complete.png\" title=\"" + _("Complete") + "\">" + _("Not Seeding");
} else { } else {
if (isRunning && curPeers > 0 && downBps > 0 && !showPeers) if (isRunning && curPeers > 0 && downBps > 0 && !showPeers)
statusString = _("OK") + " &raquo; " + statusString = "<img border=\"0\" src=\"/themes/snark/ubergine/images/downloading.png\" title=\"" + _("Downloading") + "\">" +
"<a href=\"" + uri + "?p=" + Base64.encode(snark.meta.getInfoHash()) + "\">" + "<a href=\"" + uri + "?p=" + Base64.encode(snark.meta.getInfoHash()) + "\">" +
curPeers + "/" + curPeers + "/" +
ngettext("1 peer", "{0} peers", knownPeers) + "</a>"; ngettext("1 peer", "{0} peers", knownPeers) + "</a>";
else if (isRunning && curPeers > 0 && downBps > 0) else if (isRunning && curPeers > 0 && downBps > 0)
statusString = _("OK") + " (" + curPeers + "/" + statusString = "<img border=\"0\" src=\"/themes/snark/ubergine/images/downloading.png\" title=\"" + _("Downloading") + "\">" +
ngettext("1 peer", "{0} peers", knownPeers) + ')'; " (" + curPeers + "/" +
ngettext("1 peer", "{0} peers", knownPeers);
else if (isRunning && curPeers > 0 && !showPeers) else if (isRunning && curPeers > 0 && !showPeers)
statusString = _("Stalled") + " &raquo; " + statusString = "<img border=\"0\" src=\"/themes/snark/ubergine/images/stalled.png\" title=\"" + _("Stalled") + "\">" +
"<a href=\"" + uri + "?p=" + Base64.encode(snark.meta.getInfoHash()) + "\">" + "<a href=\"" + uri + "?p=" + Base64.encode(snark.meta.getInfoHash()) + "\">" +
curPeers + '/' + curPeers + '/' +
ngettext("1 peer", "{0} peers", knownPeers) + "</a>"; ngettext("1 peer", "{0} peers", knownPeers) + "</a>";
else if (isRunning && curPeers > 0) else if (isRunning && curPeers > 0)
statusString = _("Stalled") + " &raquo; " + curPeers + '/' + statusString = "<img border=\"0\" src=\"/themes/snark/ubergine/images/stalled.png\" title=\"" + _("Stalled") + "\">" +
curPeers + '/' +
ngettext("1 peer", "{0} peers", knownPeers); ngettext("1 peer", "{0} peers", knownPeers);
else if (isRunning) else if (isRunning)
statusString = _("No Peers") + " &raquo; 0/" + knownPeers; statusString = "<img border=\"0\" src=\"/themes/snark/ubergine/images/nopeers.png\" title=\"" + _("No Peers") + "\">" +
curPeers + "/" +
ngettext("1 peer", "{0} peers", knownPeers);
else else
statusString = _("Stopped"); statusString = "<img border=\"0\" src=\"/themes/snark/ubergine/images/stopped.png\" title=\"" + _("Stopped") + "\">" + _("Stopped");
} }
String rowClass = (row % 2 == 0 ? "snarkTorrentEven" : "snarkTorrentOdd"); String rowClass = (row % 2 == 0 ? "snarkTorrentEven" : "snarkTorrentOdd");
@@ -782,7 +790,7 @@ public class I2PSnarkServlet extends Default {
baseURL = baseURL.substring(e + 1); baseURL = baseURL.substring(e + 1);
out.write("&nbsp;<a href=\"" + baseURL + "details.php?dllist=1&filelist=1&info_hash="); out.write("&nbsp;<a href=\"" + baseURL + "details.php?dllist=1&filelist=1&info_hash=");
out.write(TrackerClient.urlencode(snark.meta.getInfoHash())); out.write(TrackerClient.urlencode(snark.meta.getInfoHash()));
out.write("\" title=\"" + name + ' ' + _("Tracker") + "\" target=\"_blank\">"); out.write("\" title=\"" + name + _("Tracker") + "\" target=\"_blank\">");
out.write("<img border=\"0\" src=\"/themes/snark/ubergine/images/details.png\">"); out.write("<img border=\"0\" src=\"/themes/snark/ubergine/images/details.png\">");
out.write("</a>"); out.write("</a>");
break; break;

Binary file not shown.

Before

Width:  |  Height:  |  Size: 631 B

After

Width:  |  Height:  |  Size: 777 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 878 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 878 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 843 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 888 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 874 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 369 B

After

Width:  |  Height:  |  Size: 823 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 847 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 788 B

View File

@@ -16,7 +16,7 @@ body {
.snarkRefresh:link,.snarkRefresh:visited { .snarkRefresh:link,.snarkRefresh:visited {
text-decoration: none !important; text-decoration: none !important;
text-transform: uppercase !important; text-transform: uppercase !important;
padding: 2px 16px 3px !important; padding: 4px 16px 5px !important;
margin: -5px -7px -5px 0 !important; margin: -5px -7px -5px 0 !important;
letter-spacing: 0.05em; letter-spacing: 0.05em;
font-weight: bold; font-weight: bold;
@@ -118,7 +118,7 @@ table {
padding: 0px; padding: 0px;
border-spacing: 0px; border-spacing: 0px;
border-collapse: collapse; border-collapse: collapse;
color: #323 url("/themes/snark/ubergine/images/hat.png"); color: #323;
width: 100%; width: 100%;
opacity: 1 !important; opacity: 1 !important;
} }
@@ -141,17 +141,19 @@ thead {
} }
th { th {
padding: 4px 2px 1px 4px; padding: 4px 2px 4px 4px;
font-size: 9pt; font-size: 9pt;
border-top: 1px outset #001; border-top: 1px outset #001;
border-bottom: 1px inset #101; border-bottom: 1px inset #101;
color: #ddd; color: #ddd;
whitespace: nowrap; whitespace: nowrap;
font-variant: small-caps !important;
letter-spacing: 0.05em;
} }
th:first-child { th:first-child {
text-align: left !important; text-align: left !important;
padding-left: 3px; padding-left: 2px;
max-width: 120px; max-width: 120px;
} }
@@ -161,11 +163,11 @@ tfoot td:first-child {
} }
th:first-child img { th:first-child img {
margin: 1px 2px 3px 1px; margin: 1px 1px 3px 1px !important;
} }
th:nth-child(2) img { th:nth-child(2) img {
margin: 1px 7px 3px 2px; margin: 1px 7px 3px 2px !important;
} }
tfoot th { tfoot th {
@@ -244,15 +246,37 @@ td:first-child {
.snarkTorrentStatus:first-child { .snarkTorrentStatus:first-child {
text-align: left !important; text-align: left !important;
font-style: italic; font-style: italic;
padding-left: 8px; padding-left: 0px;
min-width: 92px;
font-weight: bold;
font-size: 7pt !important;
color: #dd9 !important;
}
.snarkTorrentStatus:first-child img {
margin-right: 0px !important;
} }
.snarkTorrentRate, .snarkTorrentDownloaded, .snarkTorrentUploaded { .snarkTorrentRate, .snarkTorrentDownloaded, .snarkTorrentUploaded {
font-size: 8pt; font-size: 8pt;
font-weight: bold; font-weight: bold;
padding: 0 3px;
} }
.snarkTorrentDownloaded {
color: #76a !important;
}
.snarkTorrentUploaded {
color: #b9b !important;
}
.snarkTorrentRate {
color: #d9d !important;
}
.snarkTorrentOdd { .snarkTorrentOdd {
background: #656; background: #656;
background: #351933; background: #351933;
@@ -325,7 +349,7 @@ td:first-child {
.page { .page {
background: #323 url('/themes/snark/ubergine/images/tile2.png'); background: #323 url('/themes/snark/ubergine/images/tile2.png');
color: #310; color: #310;
min-width: 820px !important; min-width: 880px !important;
margin: 5px 0 0 0; margin: 5px 0 0 0;
padding: 10px 10px 0px 10px; padding: 10px 10px 0px 10px;
-moz-border-radius: 4px; -moz-border-radius: 4px;
@@ -447,12 +471,12 @@ textarea {
-moz-border-radius: 4px; -moz-border-radius: 4px;
-khtml-border-radius: 4px; -khtml-border-radius: 4px;
border-radius: 4px; border-radius: 4px;
border: 1px inset #000; border: 1px inset #000;
} }
img { img {
border: none; border: none;
margin: 1px 3px 3px 4px; margin: 0 3px 1px 3px;
vertical-align: middle; vertical-align: middle;
opacity: 1.0; opacity: 1.0;
line-height: 100%; line-height: 100%;
@@ -460,7 +484,6 @@ img {
img: hover { img: hover {
border: none; border: none;
margin: 5px 5px 0px 5px;
opacity: 0.5; opacity: 0.5;
line-height: 100%; line-height: 100%;
} }
@@ -576,7 +599,7 @@ code {
} }
.snarknavbar { .snarknavbar {
margin: -10px 0 5px 0 !important; margin: -10px 0 5px 0 !important;
padding: 9px 10px 10px; padding: 11px 10px 12px;
border: 1px solid #101; border: 1px solid #101;
-moz-border-radius: 0 0 8px 8px; -moz-border-radius: 0 0 8px 8px;
-khtml-border-radius: 0 0 4px 4px; -khtml-border-radius: 0 0 4px 4px;
@@ -597,7 +620,7 @@ code {
.snarknavbar img { .snarknavbar img {
border: 0; border: 0;
margin: 0 -2px 0 -3px; margin: 0 -6px 0 -2px;
padding: 1px 0 0px !important; padding: 1px 0 0px !important;
vertical-align: top; vertical-align: top;
} }