From 2b82312b7745256c990d36d3bd59f134f8da015b Mon Sep 17 00:00:00 2001 From: str4d Date: Sat, 20 May 2017 07:26:19 +0000 Subject: [PATCH] I2PSnark changes: - Make DHT debug section collapsible - Tooltips for downloading/finished torrents - Download bars for torrents, torrent parts and peer downloads - Friendlier date format (with completed: tooltip for finished torrents) --- .../org/klomp/snark/web/I2PSnarkServlet.java | 64 ++- history.txt | 7 + .../themes/snark/classic/images/debug.png | Bin 0 -> 668 bytes .../resources/themes/snark/classic/snark.css | 369 ++++++++++++------ .../themes/snark/dark/images/debug.png | Bin 0 -> 668 bytes .../resources/themes/snark/dark/snark.css | 365 +++++++++++------ .../themes/snark/light/images/debug.png | Bin 0 -> 668 bytes .../resources/themes/snark/light/snark.css | 341 ++++++++++++---- .../themes/snark/midnight/images/debug.png | Bin 0 -> 668 bytes .../resources/themes/snark/midnight/snark.css | 303 ++++++++++---- .../themes/snark/ubergine/images/debug.png | Bin 0 -> 668 bytes .../resources/themes/snark/ubergine/snark.css | 337 +++++++++++++--- .../themes/snark/vanilla/images/debug.png | Bin 0 -> 668 bytes .../resources/themes/snark/vanilla/snark.css | 348 ++++++++++++++--- 14 files changed, 1592 insertions(+), 542 deletions(-) create mode 100644 installer/resources/themes/snark/classic/images/debug.png create mode 100644 installer/resources/themes/snark/dark/images/debug.png create mode 100644 installer/resources/themes/snark/light/images/debug.png create mode 100644 installer/resources/themes/snark/midnight/images/debug.png create mode 100644 installer/resources/themes/snark/ubergine/images/debug.png create mode 100644 installer/resources/themes/snark/vanilla/images/debug.png diff --git a/apps/i2psnark/java/src/org/klomp/snark/web/I2PSnarkServlet.java b/apps/i2psnark/java/src/org/klomp/snark/web/I2PSnarkServlet.java index 23683ca35..f0c2987cc 100644 --- a/apps/i2psnark/java/src/org/klomp/snark/web/I2PSnarkServlet.java +++ b/apps/i2psnark/java/src/org/klomp/snark/web/I2PSnarkServlet.java @@ -725,8 +725,14 @@ public class I2PSnarkServlet extends BasicServlet { if (showDebug) { out.write("\n"); out.write(""); + out.write("
"); + out.write("
"); out.write(dht.renderStatusHTML()); - out.write(""); + out.write("
"); } } out.write("\n"); @@ -1710,10 +1716,26 @@ public class I2PSnarkServlet extends BasicServlet { out.write(DataHelper.formatDuration2(Math.max(remainingSeconds, 10) * 1000)); // (eta 6h) out.write("\n\t"); out.write(""); - if (remaining > 0) + if (remaining > 0) { + long percent = 100 * (total - remaining) / total; + out.write("
"); + out.write("
"); + out.write("
"); out.write(formatSize(total-remaining) + thinsp(noThinsp) + formatSize(total)); - else if (remaining == 0) + out.write("
"); + } else if (remaining == 0) { + // needs locale configured for automatic translation + SimpleDateFormat fmt = new SimpleDateFormat("HH:mm, EEE dd MMM yyyy"); + fmt.setTimeZone(SystemVersion.getSystemTimeZone(_context)); + long[] dates = _manager.getSavedAddedAndCompleted(snark); + String date = fmt.format(new Date(dates[1])); + out.write("
"); out.write(formatSize(total)); // 3GB + out.write("
"); + } //else // out.write("??"); // no meta size yet out.write("\n\t"); @@ -1825,7 +1847,7 @@ public class I2PSnarkServlet extends BasicServlet { continue; out.write(""); + out.write("\">"); PeerID pid = peer.getPeerID(); String ch = pid != null ? pid.toString().substring(0, 4) : "????"; String client; @@ -1867,7 +1889,10 @@ public class I2PSnarkServlet extends BasicServlet { String ps = String.valueOf(pct); if (ps.length() > 5) ps = ps.substring(0, 5); - out.write(ps + "%"); + out.write("
"); + out.write("
"); + out.write("
" + ps + "%
"); + out.write("
"); } } else { pct = (float) 101.0; @@ -2907,11 +2932,7 @@ public class I2PSnarkServlet extends BasicServlet { if (announce != null) { announce = DataHelper.stripHTML(announce); buf.append(""); - String trackerLink = getTrackerLink(announce, snark.getInfoHash()); - if (trackerLink != null) - buf.append(trackerLink); - else - toThemeImg(buf, "details"); + toThemeImg(buf, "details"); buf.append("").append(_t("Primary Tracker")).append(": "); buf.append(getShortTrackerLink(announce, snark.getInfoHash())); buf.append(""); @@ -2920,7 +2941,7 @@ public class I2PSnarkServlet extends BasicServlet { if (alist != null && !alist.isEmpty()) { buf.append(""); toThemeImg(buf, "details"); - buf.append("") + buf.append("") .append(_t("Tracker List")).append(": "); for (List alist2 : alist) { buf.append('['); @@ -2951,7 +2972,8 @@ public class I2PSnarkServlet extends BasicServlet { .append("\n"); } long dat = meta.getCreationDate(); - SimpleDateFormat fmt = new SimpleDateFormat("yyyy-MM-dd HH:mm"); + // needs locale configured for automatic translation + SimpleDateFormat fmt = new SimpleDateFormat("HH:mm, EEEE dd MMMM yyyy"); fmt.setTimeZone(SystemVersion.getSystemTimeZone(_context)); if (dat > 0) { String date = fmt.format(new Date(dat)); @@ -3306,19 +3328,21 @@ public class I2PSnarkServlet extends BasicServlet { status = toImg("cancel") + ' ' + _t("File not found in torrent?"); } else if (remaining == 0 || length <= 0) { complete = true; - status = toImg("tick") + ' ' + _t("Complete"); + status = "
" + toImg("tick") + "
" + _t("Complete"); } else { priority = fai.priority; if (priority < 0) - status = toImg("cancel"); + status = "
" + toImg("cancel") + "
"; else if (priority == 0) - status = toImg("clock"); + status = "
" + toImg("clock") + "
"; else - status = toImg("clock_red"); - status += " " + - ("") + - (100 * (length - remaining) / length) + "% " + ("") + _t("complete") + ("") + - " (" + DataHelper.formatSize2(remaining) + "B " + _t("remaining") + ")"; + status = "
" + toImg("clock_red") + "
"; + long percent = 100 * (length - remaining) / length; + status += "
" + + "
" + percent + "%
"; } } diff --git a/history.txt b/history.txt index 9b9fd9717..cb2ff8029 100644 --- a/history.txt +++ b/history.txt @@ -1,3 +1,10 @@ +2017-05-20 str4d + * i2psnark: + - Make DHT debug section collapsible + - Tooltips for downloading/finished torrents + - Download bars for torrents, torrent parts and peer downloads + - Friendlier date format (with completed: tooltip for finished torrents) + 2017-05-19 zzz * Console: Move /peers page rendering from router to console (ticket #1879) * i2psnark: Add ut_comment UI and per-torrent configuration diff --git a/installer/resources/themes/snark/classic/images/debug.png b/installer/resources/themes/snark/classic/images/debug.png new file mode 100644 index 0000000000000000000000000000000000000000..70bdd2cf6ef51dab5463f25c19ae54c3f3741a58 GIT binary patch literal 668 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GXl47>xpaLR=Yi85j&07)%%#EEpJU z7#JKG7+e?_JQ)~#7#M;W7_Ar?tr;1e7?}c?m_nJDGntuln3?mKnTwg3OPQI=nE(I( z57KT5R`1Bb6wkz*#tbsepMg1>86*W{lrS?`F)&3kG3bD-0CE}485#7!*10nP4Frk< zH3BVVbY^5QWB{3*#|&gJ1TZjKGVMJEGSx&aJX|=Iy zw==6Wv!7z`Fxw$~VYoxHL(=vnhgA;l>)cH$OiU|H&8y9=>a46AtZf=?Y+G#Yd+i-& zIyf$ObnkTcnCIa&!OLf|kKb%RzfFE2GebhwghZ~4jG7x2zcM~?TVm?E)by?CnOigS z_U08HEG#=+w)xq!jro-Uz(DjY3GxGmA~wLy&CM$*sbcKxn~;!}QCL>q+0`|1=7Lq5 zckJA^|JbqP$4{O*d-uVEryo9j`ttSn?>~S3{#z$IEgNXm1y2{p5DCf9gQxwP9Yh!| z{GK7nxNu9Wp`p~BUyOhMzb{A@o|d&DB1M8}`s&;Bn&t8&LtBgZ|NoMAaA69tox>GB zhi?_bflSl1-y1E(-dgF}DRkalx^82Z^z?UY8ZQ2uF;hT%a)GQKm&$dsS-+)f^OCDY z7brYB img { + margin-right: -2px !important; +} + +input#toggle_debug:not(checked) + label + #dhtDebugInner { + display: block; +} + +input#toggle_debug:checked + label + #dhtDebugInner { + display: none; +} + +.iframed input#toggle_debug:not(checked) + label + #dhtDebugInner { + display: block; +} + +.iframed input#toggle_debug:checked + label + #dhtDebugInner { + display: none; +} + +/* end debug panel */ + +.dhtDebug th { + padding: 0 10px 8px !important; + word-break: break-all; + font-weight: normal; + background: #fff; +} + +hr.debug:first-of-type { + background: transparent; + margin-bottom: -5px; + margin-top: -2px; +} + +hr.debug { + width: 100%; + background: #89f; + background: linear-gradient(to right, #89f 40%, #eef); +} + +hr.debug + hr { + margin-bottom: -5px; +} + +hr.debug:nth-child(n+7) { + margin: -10px 0 3px; +} + +hr.debug:last-child { + height: 0; + margin-bottom: -5px; + margin-top: -15px; +} + /* end debug */ /* Resource Errors */ @@ -2244,6 +2328,10 @@ b.alwaysShow { font-weight: bold; } +.snarkTorrents .debuginfo td, .snarkTorrents .peerinfo td { + font-weight: normal; +} + td#bwHelp { background: url(images/infocircle.png) left 10px center no-repeat; background-size: 14px auto !important; @@ -2271,6 +2359,14 @@ body { margin-top: -5px !important; } +.snarkRefresh:link, .snarkRefresh:hover, .snarkRefresh:nth-child(n+1):hover, .snarkRefresh:focus, .snarkRefresh:nth-child(n+1):focus .snarkRefresh:active, .snarkRefresh:nth-child(n+1):active { + background-size: 14px 14px, 100% 100% !important; +} + +.snarkRefresh:link:first-child { + padding-left: 22px !important; +} + .addtorrentsection, .newtorrentsection, .configsection, .configsectionpanel { margin-top: 4px !important; margin-bottom: 4px !important; @@ -2287,6 +2383,19 @@ table.SnarkDirInfo { .dirInfoComplete { display: none; } + +.percentBarText, .percentBarOuter { + width: 100px; + line-height: 15px; +} + +.snarkDirInfo .percentBarText, .snarkDirInfo .percentBarOuter { + width: 60px; +} + +#dhtDebugInner { + margin-top: -24px !important; +} } @media screen and (max-width: 1200px) { @@ -2295,23 +2404,24 @@ table.SnarkDirInfo { padding-bottom: 5px; } -.snarkRefresh:link, .snarkRefresh:hover, .snarkRefresh:nth-child(n+1):hover, .snarkRefresh:focus, .snarkRefresh:nth-child(n+1):focus .snarkRefresh:active, .snarkRefresh:nth-child(n+1):active { - background-size: 14px 14px, 100% 100% !important; -} - -.snarkRefresh:link:first-child { - padding-left: 22px !important; -} - #configs td:first-child::before { content: ""; min-height: 30px; } + +.percentBarText { + line-height: 16px; +} + +.snarkTorrents tfoot tr:first-child { + line-height: 100%; +} } @media screen and (max-width: 1400px) { -.snarkRefresh:link:first-child { - padding-left: 23px !important; + +.percentBarText { + line-height: 15px; } } @@ -2320,6 +2430,14 @@ body, th, td, table a, input, input[type="text"], input.r, input[name="nofilter_ font-size: 9pt !important; } +.snarkRefresh { + font-size: 11pt !important; +} + +.snarkRefresh:link { + padding-left: 25px !important; +} + .percentDownloaded { pointer-events: none; /* hide tooltip */ } @@ -2330,14 +2448,6 @@ body, th, td, table a, input, input[type="text"], input.r, input[name="nofilter_ font-size: 10pt !important; } -.snarkRefresh { - font-size: 11pt !important; -} - -.snarkRefresh:link { - padding-left: 25px !important; -} - .snarkMessages li, .snarkTorrents tt { font-size: 9pt; } @@ -2349,7 +2459,6 @@ body, th, td, table a, input, input[type="text"], input.r, input[name="nofilter_ td.snarkTorrentDownloaded { white-space: nowrap; - padding: 0 10px; } .snarkConfigTitle, label.toggleview, .configsectionpanel .snarkConfigTitle, .configsectionpanel .snarkConfigTitle:hover { diff --git a/installer/resources/themes/snark/dark/images/debug.png b/installer/resources/themes/snark/dark/images/debug.png new file mode 100644 index 0000000000000000000000000000000000000000..70bdd2cf6ef51dab5463f25c19ae54c3f3741a58 GIT binary patch literal 668 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GXl47>xpaLR=Yi85j&07)%%#EEpJU z7#JKG7+e?_JQ)~#7#M;W7_Ar?tr;1e7?}c?m_nJDGntuln3?mKnTwg3OPQI=nE(I( z57KT5R`1Bb6wkz*#tbsepMg1>86*W{lrS?`F)&3kG3bD-0CE}485#7!*10nP4Frk< zH3BVVbY^5QWB{3*#|&gJ1TZjKGVMJEGSx&aJX|=Iy zw==6Wv!7z`Fxw$~VYoxHL(=vnhgA;l>)cH$OiU|H&8y9=>a46AtZf=?Y+G#Yd+i-& zIyf$ObnkTcnCIa&!OLf|kKb%RzfFE2GebhwghZ~4jG7x2zcM~?TVm?E)by?CnOigS z_U08HEG#=+w)xq!jro-Uz(DjY3GxGmA~wLy&CM$*sbcKxn~;!}QCL>q+0`|1=7Lq5 zckJA^|JbqP$4{O*d-uVEryo9j`ttSn?>~S3{#z$IEgNXm1y2{p5DCf9gQxwP9Yh!| z{GK7nxNu9Wp`p~BUyOhMzb{A@o|d&DB1M8}`s&;Bn&t8&LtBgZ|NoMAaA69tox>GB zhi?_bflSl1-y1E(-dgF}DRkalx^82Z^z?UY8ZQ2uF;hT%a)GQKm&$dsS-+)f^OCDY z7brYB img { + margin-right: -2px !important; +} + +input#toggle_debug:not(checked) + label + #dhtDebugInner { + display: block; +} + +input#toggle_debug:checked + label + #dhtDebugInner { + display: none; +} + +.iframed input#toggle_debug:not(checked) + label + #dhtDebugInner { + display: block; +} + +.iframed input#toggle_debug:checked + label + #dhtDebugInner { + display: none; +} + +/* end debug panel */ + +hr.debug { + width: 100%; + background: #131; + background: linear-gradient(to right, #131 50%, #000700); +} + +hr.debug + b { + color: #ff7; + text-transform: uppercase; +} + +hr.debug:first-of-type { + background: transparent; + margin-bottom: -5px; + margin-top: -2px; +} + +hr.debug + hr { + display: block; + background: transparent; + margin-bottom: -3px; +} + +hr.debug:nth-child(n+7) { + margin-top: -11px; + margin-bottom: 2px; + opacity: 0.5; +} + +hr.debug:last-child { + background: #000; + margin-bottom: -5px; +} + /* end debug */ #totals { @@ -2032,14 +2149,7 @@ label.toggleview, .snarkConfigTitle a:visited { /* configs */ -#bwHelp i { - display: inline-block; - vertical-align: middle; -} - - -#bwHelp a { - font-style: normal; +#configs a { font-weight: bold; } @@ -2282,6 +2392,19 @@ b.alwaysShow { #configs td:first-child { min-width: 200px !important; } + +.snarkFileStatus { + width: 110px; +} + +.snarkFileStatus img[src*="clock"] { + margin-top: 6px; +} + +.snarkDirInfo .percentBarText, .snarkDirInfo .percentBarOuter { + width: 60px; + padding: 0; +} } @media screen and (max-width: 1200px) { @@ -2312,6 +2435,22 @@ td#bwHelp a { #trackerselect a { max-width: 300px; } + +.percentBarOuter { + margin: 2px auto !important; +} + +.percentBarText { + line-height: 130%; +} + +.percentBarText, .percentBarOuter, .snarkTorrentDownloaded { + width: 100px; +} + +.snarkFileStatus img[src*="clock"] { + margin-top: 4px; +} } @media screen and (min-width: 1100px) { @@ -2325,8 +2464,8 @@ body, .snarkTorrents td, .snarkAddInfo, th, td, code, textarea, input, input[ty } .snarkTorrentInfo td, .snarkDirInfo td, .snarkTorrents .peerinfo td { - padding-top: 6px !important; - padding-bottom: 6px !important; + padding-top: 4px !important; + padding-bottom: 4px !important; } #configs td:first-child { @@ -2339,10 +2478,32 @@ body, .snarkTorrents td, .snarkAddInfo, th, td, code, textarea, input, input[ty } @media screen and (min-width: 1200px) { +.snarkRefresh:link { + font-size: 11pt !important; +} + +.snarkRefresh:link, .snarkRefresh:hover, .snarkRefresh:focus, .snarkRefresh:active, .snarkRefresh:visited, +.snarkRefresh:link:first-child, .snarkRefresh:hover:first-child, .snarkRefresh:focus:first-child, .snarkRefresh:active:first-child, .snarkRefresh:visited:first-child, +.snarkRefresh:link:nth-child(2), .snarkRefresh:hover:nth-child(2), .snarkRefresh:focus:nth-child(2), .snarkRefresh:active:nth-child(2), .snarkRefresh:visited:nth-child(2) { + background-size: 16px auto, 100% 100% !important; + padding-left: 24px !important; +} + +.snarkRefresh:link:first-child { + padding-left: 25px !important; +} + .snarkConfigtitle, .snarkConfigTitle a, label.toggleview { font-size: 12pt !important; } +.snarkTorrentDownloaded { + white-space: nowrap; + padding: 0 8px; + width: 110px; + text-align: center; +} + .percentDownloaded { pointer-events: none; /* hide tooltip */ } @@ -2351,7 +2512,7 @@ body, .snarkTorrents td, .snarkAddInfo, th, td, code, textarea, input, input[ty min-height: 26px; } -td#bwHelp a { +#configs a { display: inline-block; white-space: nowrap; margin-left: 4px; @@ -2367,10 +2528,6 @@ body, .snarkTorrents td, .snarkAddInfo, th, td, code, textarea, input, input[ty font-size: 10pt !important; } -.snarkRefresh:link { - font-size: 11pt !important; -} - .snarkConfigTitle, .snarkConfigTitle a, label.toggleview { font-size: 12pt !important; } @@ -2380,17 +2537,6 @@ body, .snarkTorrents td, .snarkAddInfo, th, td, code, textarea, input, input[ty padding-top: 4px; } -.snarkRefresh:link, .snarkRefresh:hover, .snarkRefresh:focus, .snarkRefresh:active, .snarkRefresh:visited, -.snarkRefresh:link:first-child, .snarkRefresh:hover:first-child, .snarkRefresh:focus:first-child, .snarkRefresh:active:first-child, .snarkRefresh:visited:first-child, -.snarkRefresh:link:nth-child(2), .snarkRefresh:hover:nth-child(2), .snarkRefresh:focus:nth-child(2), .snarkRefresh:active:nth-child(2), .snarkRefresh:visited:nth-child(2) { - background-size: 16px auto, 100% 100% !important; - padding-left: 24px !important; -} - -.snarkRefresh:link:first-child { - padding-left: 25px !important; -} - tt, .snarkTorrents tt, .snarkMessages, .snarkMessages a { font-size: 9pt !important; } @@ -2405,11 +2551,6 @@ textarea[name="i2cpOpts"] { height: 11px; } -.snarkTorrentDownloaded { - white-space: nowrap; - padding: 0 8px; -} - .snarkTorrents td:nth-child(3), .SnarkTorrents td:nth-child(4) { width: 18px !important; } diff --git a/installer/resources/themes/snark/light/images/debug.png b/installer/resources/themes/snark/light/images/debug.png new file mode 100644 index 0000000000000000000000000000000000000000..70bdd2cf6ef51dab5463f25c19ae54c3f3741a58 GIT binary patch literal 668 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GXl47>xpaLR=Yi85j&07)%%#EEpJU z7#JKG7+e?_JQ)~#7#M;W7_Ar?tr;1e7?}c?m_nJDGntuln3?mKnTwg3OPQI=nE(I( z57KT5R`1Bb6wkz*#tbsepMg1>86*W{lrS?`F)&3kG3bD-0CE}485#7!*10nP4Frk< zH3BVVbY^5QWB{3*#|&gJ1TZjKGVMJEGSx&aJX|=Iy zw==6Wv!7z`Fxw$~VYoxHL(=vnhgA;l>)cH$OiU|H&8y9=>a46AtZf=?Y+G#Yd+i-& zIyf$ObnkTcnCIa&!OLf|kKb%RzfFE2GebhwghZ~4jG7x2zcM~?TVm?E)by?CnOigS z_U08HEG#=+w)xq!jro-Uz(DjY3GxGmA~wLy&CM$*sbcKxn~;!}QCL>q+0`|1=7Lq5 zckJA^|JbqP$4{O*d-uVEryo9j`ttSn?>~S3{#z$IEgNXm1y2{p5DCf9gQxwP9Yh!| z{GK7nxNu9Wp`p~BUyOhMzb{A@o|d&DB1M8}`s&;Bn&t8&LtBgZ|NoMAaA69tox>GB zhi?_bflSl1-y1E(-dgF}DRkalx^82Z^z?UY8ZQ2uF;hT%a)GQKm&$dsS-+)f^OCDY z7brYB img { + margin-right: -2px !important; +} + +input#toggle_debug:not(checked) + label + #dhtDebugInner { + display: block; +} + +input#toggle_debug:checked + label + #dhtDebugInner { + display: none; +} + +.iframed input#toggle_debug:not(checked) + label + #dhtDebugInner { + display: block; +} + +.iframed input#toggle_debug:checked + label + #dhtDebugInner { + display: none; +} + +/* end debug panel */ + +hr.debug { + width: 100%; + margin: 3px 0; +} + +hr.debug:first-of-type { + background: transparent; + margin-top: -5px; + margin-bottom: -5px; +} + +hr.debug:nth-child(n+7) { + margin-top: -10px; +} + +hr.debug:last-child { + background: transparent; + margin-bottom: -4px; +} + /* end debug */ /* Resource Errors */ @@ -1532,7 +1687,7 @@ input#toggle_addtorrent:checked + label + hr + table, input#toggle_createtorrent .priority::after { content: ""; display: inline-block; - min-height: 30px; + min-height: 28px; vertical-align: middle; } @@ -1580,10 +1735,10 @@ input#toggle_addtorrent:checked + label + hr + table, input#toggle_createtorrent line-height: 100%; } -#bwHelp a { +#configs a { display: inline-block; white-space: nowrap; - font-style: normal; + margin-left: 4px; font-weight: bold; } @@ -1640,57 +1795,6 @@ _:-ms-lang(x), *, *:hover, *:focus, input, input:hover, input:focus, a:hover, a: /*responsive layout */ -@media screen and (max-width: 1000px) { -body, td, .snarkMessages li, .snarkMessages a, button, input, select, .snarkAddInfo, code, tt, th, a, a:link, .snarkAddInfo, .snarkFileStatus { - font-size: 8pt !important; -} - -.snarkRefresh:link { - font-size: 9pt !important; -} - -.snarkConfigTitle a, .snarkConfigTitle, label.toggleview { - font-size: 10pt !important; -} - -.snarkTorrents td:first-child img { - max-height: 16px; -} - -.snarkTorrentName, .snarkTorrentName a { - font-weight: bold; -} - -.snarkTorrents td:nth-child(2), .snarkTorrents td:nth-child(2) a { - white-space: nowrap; - font-weight: bold; -} - -.snarkTorrentStatus b { - display: none; -} - -b.alwaysShow { - display: inline; -} -} - -@media screen and (-webkit-min-device-pixel-ratio:0) and (max-width: 1000px) { -.snarkConfigTitle a, label.toggleview, .configsectionpanel .snarkConfigTitle { - font-size: 12pt !important; -} -} - -@media screen and (max-width: 1200px) { -.dirInfoComplete { - display: none; -} - -a.snarkRefresh:first-child { - padding-left: 26px !important; -} -} - /* mini-mode: hide status text, upload speed + upload amount in main torrent table at 800px or less */ @media screen and (max-width: 800px) { @@ -1712,7 +1816,7 @@ a.snarkRefresh:first-child { padding: 0 !important; } -.snarkTorrents th:nth-child(7) img { +.snarkTorrents th:nth-child(7) img, .snarkTorrents th:nth-child(9) img { display: none; } @@ -1779,7 +1883,76 @@ input[name="nofilter_dataDir"], textarea[name="i2cpOpts"] { /* end mini-mode */ +@media screen and (max-width: 1000px) { +body, td, .snarkMessages li, .snarkMessages a, button, input, select, .snarkAddInfo, code, tt, th, a, a:link, .snarkAddInfo, .snarkFileStatus { + font-size: 8pt !important; +} + +.snarkRefresh:link { + font-size: 9pt !important; +} + +.snarkConfigTitle a, .snarkConfigTitle, label.toggleview { + font-size: 10pt !important; +} + +.snarkTorrents td:first-child img { + max-height: 16px; +} + +.snarkTorrentName, .snarkTorrentName a { + font-weight: bold; +} + +.snarkTorrents td:nth-child(2), .snarkTorrents td:nth-child(2) a { + white-space: nowrap; + font-weight: bold; +} + +.snarkTorrentStatus b { + display: none; +} + +b.alwaysShow { + display: inline; +} + +.snarkTorrentDownloaded .percentBarText, .snarkTorrentDownloaded .percentBarOuter { + width: 100px !important; +} +} + +@media screen and (-webkit-min-device-pixel-ratio:0) and (max-width: 1000px) { +.snarkConfigTitle a, label.toggleview, .configsectionpanel .snarkConfigTitle { + font-size: 12pt !important; +} +} + +@media screen and (max-width: 1200px) { +.dirInfoComplete { + display: none; +} + +a.snarkRefresh:first-child { + padding-left: 26px !important; +} +} + +@media screen and (max-width: 1400px) { +#dhtDebugInner { + margin-top: -22px !important; +} +} + @media screen and (min-width: 1200px) { +a.snarkRefresh { + font-size: 10pt !important; +} + +a.snarkRefresh:first-child { + padding-left: 26px !important; +} + .percentDownloaded { pointer-events: none; /* hide tooltip */ } diff --git a/installer/resources/themes/snark/midnight/images/debug.png b/installer/resources/themes/snark/midnight/images/debug.png new file mode 100644 index 0000000000000000000000000000000000000000..70bdd2cf6ef51dab5463f25c19ae54c3f3741a58 GIT binary patch literal 668 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GXl47>xpaLR=Yi85j&07)%%#EEpJU z7#JKG7+e?_JQ)~#7#M;W7_Ar?tr;1e7?}c?m_nJDGntuln3?mKnTwg3OPQI=nE(I( z57KT5R`1Bb6wkz*#tbsepMg1>86*W{lrS?`F)&3kG3bD-0CE}485#7!*10nP4Frk< zH3BVVbY^5QWB{3*#|&gJ1TZjKGVMJEGSx&aJX|=Iy zw==6Wv!7z`Fxw$~VYoxHL(=vnhgA;l>)cH$OiU|H&8y9=>a46AtZf=?Y+G#Yd+i-& zIyf$ObnkTcnCIa&!OLf|kKb%RzfFE2GebhwghZ~4jG7x2zcM~?TVm?E)by?CnOigS z_U08HEG#=+w)xq!jro-Uz(DjY3GxGmA~wLy&CM$*sbcKxn~;!}QCL>q+0`|1=7Lq5 zckJA^|JbqP$4{O*d-uVEryo9j`ttSn?>~S3{#z$IEgNXm1y2{p5DCf9gQxwP9Yh!| z{GK7nxNu9Wp`p~BUyOhMzb{A@o|d&DB1M8}`s&;Bn&t8&LtBgZ|NoMAaA69tox>GB zhi?_bflSl1-y1E(-dgF}DRkalx^82Z^z?UY8ZQ2uF;hT%a)GQKm&$dsS-+)f^OCDY z7brYB img { + margin-right: -2px !important; +} + +input#toggle_debug:not(checked) + label + #dhtDebugInner { + display: block; +} + +input#toggle_debug:checked + label + #dhtDebugInner { + display: none; +} + +.iframed input#toggle_debug:not(checked) + label + #dhtDebugInner { + display: block; +} + +.iframed input#toggle_debug:checked + label + #dhtDebugInner { + display: none; +} + +/* end debug panel */ + +hr.debug { + width: 100%; + background: #120f35; + margin: 3px 0; +} + +hr.debug:first-of-type { + background: transparent; + margin-bottom: -5px; + margin-top: -2px; +} + +hr.debug + hr { + display: block; + background: transparent; + margin-bottom: -3px; +} + +hr.debug:nth-child(n+7) { + margin: -10px 0 3px; +} + +hr.debug:last-child { + background: #000; + margin-bottom: -5px; +} + /* end debug */ /* Resource Errors */ @@ -2080,7 +2201,7 @@ label.toggleview, .snarkConfigTitle a, .snarkConfigTitle a:visited { } #NotFound { - border-bottom: 1px solid #443da0; + border: 1px solid #443da0; } /* end Resource Errors */ @@ -2257,6 +2378,26 @@ b.alwaysShow { width: 30px !important; } +.peerinfo .percentBarText, .snarkDirInfo .percentBarText { + line-height: 18px; +} + +.percentBarText, .percentBarOuter { + width: 100px; +} + +.snarkDirInfo .percentBarText, .snarkDirInfo .percentBarOuter, .peerinfo .percentBarText, .peerinfo .percentBarOuter { + width: 60px; +} + +.snarkTorrentDownloaded .percentBarInner { + background: linear-gradient(to bottom, rgba(51, 51, 170, 0.6) 0%, rgba(34, 34, 102, 0.7) 50%, rgba(0, 0, 51, 0.8) 50%, rgba(0, 0, 0, 0.9) 100%), linear-gradient(to right, rgba(255, 255, 0, 0.5) 50px, rgba(0, 255, 0, 0.5)); +} + +.snarkDirInfo .percentBarInner { + background: linear-gradient(to bottom, rgba(51, 51, 170, 0.6) 0%, rgba(34, 34, 102, 0.7) 50%, rgba(0, 0, 51, 0.8) 50%, rgba(0, 0, 0, 0.9) 100%), linear-gradient(to right, rgba(255, 255, 0, 0.5) 30px, rgba(0, 255, 0, 0.5)); +} + .configsectionpanel .snarkConfigTitle { font-size: 10.5pt !important; } @@ -2298,6 +2439,10 @@ a, th, thead th, tfoot th, td, select, select option, .snarkAddInfo, .snarkFileN font-size: 9pt !important; } +.snarkRefresh { + font-size: 10.5pt !important; +} + .snarkConfigTitle, .snarkConfigTitle a, label.toggleview, .snarkRefresh:link { font-size: 11pt !important; } @@ -2316,10 +2461,6 @@ a, th, thead th, tfoot th, td, select, select option, .snarkAddInfo, .snarkFileN font-size: 10pt !important; } -.snarkRefresh { - font-size: 10.5pt !important; -} - .snarkConfigTitle, .toggleview { padding: 4px 25px 4px 22px; } diff --git a/installer/resources/themes/snark/ubergine/images/debug.png b/installer/resources/themes/snark/ubergine/images/debug.png new file mode 100644 index 0000000000000000000000000000000000000000..70bdd2cf6ef51dab5463f25c19ae54c3f3741a58 GIT binary patch literal 668 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GXl47>xpaLR=Yi85j&07)%%#EEpJU z7#JKG7+e?_JQ)~#7#M;W7_Ar?tr;1e7?}c?m_nJDGntuln3?mKnTwg3OPQI=nE(I( z57KT5R`1Bb6wkz*#tbsepMg1>86*W{lrS?`F)&3kG3bD-0CE}485#7!*10nP4Frk< zH3BVVbY^5QWB{3*#|&gJ1TZjKGVMJEGSx&aJX|=Iy zw==6Wv!7z`Fxw$~VYoxHL(=vnhgA;l>)cH$OiU|H&8y9=>a46AtZf=?Y+G#Yd+i-& zIyf$ObnkTcnCIa&!OLf|kKb%RzfFE2GebhwghZ~4jG7x2zcM~?TVm?E)by?CnOigS z_U08HEG#=+w)xq!jro-Uz(DjY3GxGmA~wLy&CM$*sbcKxn~;!}QCL>q+0`|1=7Lq5 zckJA^|JbqP$4{O*d-uVEryo9j`ttSn?>~S3{#z$IEgNXm1y2{p5DCf9gQxwP9Yh!| z{GK7nxNu9Wp`p~BUyOhMzb{A@o|d&DB1M8}`s&;Bn&t8&LtBgZ|NoMAaA69tox>GB zhi?_bflSl1-y1E(-dgF}DRkalx^82Z^z?UY8ZQ2uF;hT%a)GQKm&$dsS-+)f^OCDY z7brYB br:first-child { + display: none; +} + +/* debug panel */ + +#dhtDebugPanel { + background: #101; + background: linear-gradient(to bottom, #545 0%, #434 100%); + background: linear-gradient(to bottom, rgba(0,0,0,0), rgba(0,0,0,0.2) 30%, rgba(0,0,0,1)), linear-gradient(to right, rgba(128,0,128,0) 30%, #414 50%, rgba(128,0,128,0) 70%), linear-gradient(to bottom, #101, #000); + border: 1px solid #414; + border-top: none; + border-radius: 0 0 4px 4px; + box-shadow: 0 1px 2px 0 rgba(16,0,16,0.6); + text-align: center; + padding-bottom: 13px; + margin: 0 8px 4px; +} + +#dhtDebugPanel label { + padding: 8px 4px 4px !important; + display: block; + margin: 0 0 -13px !important; + border-radius: 0 0 4px 4px; + background: #202; +} + +input#toggle_debug:not(checked) + label { + border-radius: 0; + background: #101; + text-align: center; +} + +#dhtDebugInner { + text-align: left; + padding: 3px 10px 5px; + background: #000; + margin: -33px 0 -12px; +} + +.dhtDebug th b:first-of-type, .dhtDebug th b:first-of-type + br + hr.debug { + display: none; +} + +input#toggle_debug:not(checked) + label { + padding-bottom: 2px; +} + +input#toggle_debug:not(checked) + label > img { + margin-right: -2px !important; +} + +input#toggle_debug:not(checked) + label + #dhtDebugInner { + display: block; +} + +input#toggle_debug:checked + label + #dhtDebugInner { + display: none; +} + +.iframed input#toggle_debug:not(checked) + label + #dhtDebugInner { + display: block; +} + +.iframed input#toggle_debug:checked + label + #dhtDebugInner { + display: none; +} + +/* end debug panel */ /* end debug */ /* Resource Errors */ @@ -2034,7 +2232,7 @@ label.toggleview img:active, label.toggleview:active img, .snarkConfigTitle a:ac font-weight: bold; } -td#bwHelp { +#bwHelp { background: url(images/infocircle.png) left 8px center no-repeat; background-size: 14px auto; padding-left: 26px !important; @@ -2042,7 +2240,7 @@ td#bwHelp { line-height: 100%; } -td#bwHelp a { +#bwHelp a { display: inline-block; white-space: nowrap; margin-left: 4px; @@ -2155,13 +2353,26 @@ table.snarkDirInfo { } .snarkTorrentName a:not(old) { - max-width: 300px; + max-width: 300px !important; } .snarkTorrentDownloaded { white-space: nowrap; } +.percentBarOuter { + margin: 0 !important; + display: inline-block; +} + +.percentBarOuter, .percentBarText { + width: 105px; +} + +.snarkDirInfo .percentBarText, .snarkDirInfo .percentBarOuter { + width: 60px; +} + .snarkTorrentStatus b { display: none; } @@ -2202,6 +2413,10 @@ b.alwaysShow { #trackerselect td a { max-width: 350px; } + +.priorityIndicator img[src*="clock"] { + margin-top: 0; +} } @media screen and (-webkit-min-device-pixel-ratio:0) and (max-width: 1050px) { @@ -2232,6 +2447,10 @@ b.alwaysShow { text-overflow: ellipsis; } +.snarkFileStatus { + width: 120px; +} + .toggleview, .snarkConfigTitle, .snarkConfigTitle a { font-size: 11pt !important; } @@ -2256,6 +2475,16 @@ _:-ms-lang(x), .snarkRefresh:link, .snarkRefresh:visited { background-position: 11px 5px, center center !important; background-size: 15px auto, 100% 100% !important; } + +.peerinfo .percentBarOuter { + filter: sepia(1); + height: 14px; + line-height: 11px; +} + +#dhtDebugInner { + padding-top: 15px !important; +} } @media screen and (min-width: 1050px) { @@ -2359,10 +2588,6 @@ input[type="submit"], input[type="reset"], select, select option, button, a.cont display: inline-block; } -.SnarkTorrents td:nth-child(4) { - padding-right: 5px; -} - .snarkTorrentName a:not(old) { max-width: none; } @@ -2413,14 +2638,6 @@ select { font-size: 9pt !important; } -.snarkTorrentRateUp, .snarkTorrentRateDown, .snarkTorrentDownloaded, .snarkTorrentUploaded, .snarkFileSize { - padding: 0 8px !important; -} - -.choked, .unchoked { - margin-right: 6px; -} - #pagenav img { width: 16px !important; height: 16px !important; diff --git a/installer/resources/themes/snark/vanilla/images/debug.png b/installer/resources/themes/snark/vanilla/images/debug.png new file mode 100644 index 0000000000000000000000000000000000000000..70bdd2cf6ef51dab5463f25c19ae54c3f3741a58 GIT binary patch literal 668 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GXl47>xpaLR=Yi85j&07)%%#EEpJU z7#JKG7+e?_JQ)~#7#M;W7_Ar?tr;1e7?}c?m_nJDGntuln3?mKnTwg3OPQI=nE(I( z57KT5R`1Bb6wkz*#tbsepMg1>86*W{lrS?`F)&3kG3bD-0CE}485#7!*10nP4Frk< zH3BVVbY^5QWB{3*#|&gJ1TZjKGVMJEGSx&aJX|=Iy zw==6Wv!7z`Fxw$~VYoxHL(=vnhgA;l>)cH$OiU|H&8y9=>a46AtZf=?Y+G#Yd+i-& zIyf$ObnkTcnCIa&!OLf|kKb%RzfFE2GebhwghZ~4jG7x2zcM~?TVm?E)by?CnOigS z_U08HEG#=+w)xq!jro-Uz(DjY3GxGmA~wLy&CM$*sbcKxn~;!}QCL>q+0`|1=7Lq5 zckJA^|JbqP$4{O*d-uVEryo9j`ttSn?>~S3{#z$IEgNXm1y2{p5DCf9gQxwP9Yh!| z{GK7nxNu9Wp`p~BUyOhMzb{A@o|d&DB1M8}`s&;Bn&t8&LtBgZ|NoMAaA69tox>GB zhi?_bflSl1-y1E(-dgF}DRkalx^82Z^z?UY8ZQ2uF;hT%a)GQKm&$dsS-+)f^OCDY z7brYB img { + margin-right: -2px !important; +} + +input#toggle_debug:not(checked) + label + #dhtDebugInner { + display: block; +} + +input#toggle_debug:checked + label + #dhtDebugInner { + display: none; +} + +.iframed input#toggle_debug:not(checked) + label + #dhtDebugInner { + display: block; +} + +.iframed input#toggle_debug:checked + label + #dhtDebugInner { + display: none; +} + +/* end debug panel */ /* end debug */ .peerinfo td:first-child { @@ -1838,6 +2032,10 @@ code, tt { font-weight: bold; } +#totals tt { + line-height: 170%; +} + /* Resource Errors */ .resourceError { @@ -1948,6 +2146,7 @@ td#bwHelp a { display: inline-block; white-space: nowrap; font-style: normal; + margin-left: 4px; } /* end configs */ @@ -2045,6 +2244,26 @@ b.alwaysShow { padding-bottom: 3px; } +.percentBarOuter, .percentBarText, .snarkTorrentDownloaded { + width: 100px !important; +} + +.snarkTorrentDownloaded .percentBarInner { + background: linear-gradient(to bottom, rgba(255, 247, 239, 0.75) 0%, rgba(255, 247, 239, 0.75) 50%, rgba(207, 193, 181, 0.8) 50%, rgba(207, 193, 181, 0.9) 100%), linear-gradient(to right, rgba(255, 100, 0, 0.5) 33px, rgba(255, 255, 0, 0.5) 66px, rgba(0, 255, 0, 0.5)); +} + +.snarkDirInfo .percentBarInner { + background: linear-gradient(to bottom, rgba(255, 247, 239, 0.75) 0%, rgba(255, 247, 239, 0.75) 50%, rgba(207, 193, 181, 0.8) 50%, rgba(207, 193, 181, 0.9) 100%), linear-gradient(to right, rgba(255, 100, 0, 0.5) 23px, rgba(255, 255, 0, 0.5) 47px, rgba(0, 255, 0, 0.5)); +} + +.snarkDirInfo .percentBarText, .snarkDirInfo .percentBarOuter, .peerinfo .percentBarOuter, .peerinfo .percentBarText { + width: 70px !important; +} + +.snarkFileStatus { + width: 120px; +} + .snarkTorrents tt { background: none; color: #030; @@ -2081,6 +2300,12 @@ b.alwaysShow { transition: ease width 0.5s 0.5s; } +.snarkTorrentAction input[type="image"], .snarkTorrents th:last-child input[type="image"] { + max-height: 9px; + margin-top: 2px; + margin-bottom: 2px; +} + .snarkRefresh:nth-child(n+2) { padding: 4px 8px 4px 24px !important; background-size: 14px auto, 100% 100%, 100% 100% !important; @@ -2113,6 +2338,23 @@ _:-ms-lang(x), .snarkRefresh:link, .snarkRefresh:visited { #pagenav img { height: 14px; } + +.snarkTorrentDownloaded .percentBarOuter { + margin-left: 0; +} + +.snarkTorrents tfoot tr:first-child th { + padding-top: 2px; + padding-bottom: 2px; + line-height: 120%; +} +} + +@media screen and (max-width: 1400px) { +#dhtDebugInner { + margin-top: -21px !important; + padding-top: 15px; +} } @media screen and (-webkit-min-device-pixel-ratio:0) and (max-width: 1200px) { @@ -2137,6 +2379,12 @@ body, .snarkTorrents td, .snarkAddInfo, th, td, .snarkFileName, a.control, input padding-bottom: 3px !important; } +.snarkTorrents tfoot tr:first-child th { + padding-top: 4px; + padding-bottom: 4px; + line-height: 150%; +} + .peerinfo tt { display: inline-block; margin: 0 3px; @@ -2211,7 +2459,6 @@ select { .snarkTorrentDownloaded { white-space: nowrap; - padding: 0 8px; } thead a img, thead img { @@ -2234,19 +2481,10 @@ thead a img, thead img { padding-bottom: 2px !important; } -.snarkTorrentInfo td, .snarkDirInfo td { - padding-top: 5px !important; - padding-bottom: 5px !important; -} - .peerinfo tt { margin: 1px 4px; } -.snarkTorrentName { - padding-left: 2px; -} - .snarkTorrentStatus b, .dirInfoComplete { margin-right: 4px; }