mirror of https://github.com/zlatinb/muwire
convert download servlet to xml and page to ajax
parent
b37a548771
commit
54b8628435
|
@ -42,10 +42,36 @@ public class DownloadServlet extends HttpServlet {
|
||||||
sb.append("<?xml version='1.0' encoding='UTF-8'?>");
|
sb.append("<?xml version='1.0' encoding='UTF-8'?>");
|
||||||
sb.append("<Downloads>");
|
sb.append("<Downloads>");
|
||||||
downloadManager.getDownloaders().forEach(d -> {
|
downloadManager.getDownloaders().forEach(d -> {
|
||||||
|
sb.append("<Download>");
|
||||||
|
sb.append("<InfoHash>").append(Base64.encode(d.getInfoHash().getRoot())).append("</InfoHash>");
|
||||||
sb.append("<Name>").append(d.getFile().getName()).append("</Name>");
|
sb.append("<Name>").append(d.getFile().getName()).append("</Name>");
|
||||||
sb.append("<State>").append(d.getCurrentState().toString()).append("</State>");
|
sb.append("<State>").append(d.getCurrentState().toString()).append("</State>");
|
||||||
sb.append("<Speed>").append(DataHelper.formatSize2Decimal(d.speed())).append("B/sec").append("</Speed>");
|
int speed = d.speed();
|
||||||
|
sb.append("<Speed>").append(DataHelper.formatSize2Decimal(speed)).append("B/sec").append("</Speed>");
|
||||||
|
|
||||||
|
String ETA;
|
||||||
|
if (speed == 0)
|
||||||
|
ETA = "Unknown";
|
||||||
|
else {
|
||||||
|
long remaining = (d.getNPieces() - d.donePieces()) * d.getPieceSize() / speed;
|
||||||
|
ETA = DataHelper.formatDuration(remaining * 1000);
|
||||||
|
}
|
||||||
|
sb.append("<ETA>").append(ETA).append("</ETA>");
|
||||||
|
|
||||||
|
int percent = -1;
|
||||||
|
if (d.getNPieces() != 0)
|
||||||
|
percent = (int)(d.donePieces() * 100 / d.getNPieces());
|
||||||
|
String totalSize = DataHelper.formatSize2Decimal(d.getLength(), false) + "B";
|
||||||
|
String progress = String.format("%2d", percent) + "% of "+totalSize;
|
||||||
|
sb.append("<Progress>").append(progress).append("</Progress>");
|
||||||
|
|
||||||
|
// TODO: more details for the downloader details view
|
||||||
|
sb.append("</Download>");
|
||||||
});
|
});
|
||||||
|
sb.append("</Downloads>");
|
||||||
|
resp.setContentType("text/xml");
|
||||||
|
resp.getWriter().write(sb.toString());
|
||||||
|
resp.getWriter().flush();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -8,46 +8,19 @@
|
||||||
<%@ page import="net.i2p.data.*" %>
|
<%@ page import="net.i2p.data.*" %>
|
||||||
|
|
||||||
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
|
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
|
||||||
|
<%@include file="initcode.jsi"%>
|
||||||
|
|
||||||
<%
|
<% String pagetitle="Downloads"; %>
|
||||||
MuWireClient client = (MuWireClient) application.getAttribute("mwClient");
|
|
||||||
String persona = client.getCore().getMe().getHumanReadableName();
|
|
||||||
String version = client.getCore().getVersion();
|
|
||||||
session.setAttribute("persona", persona);
|
|
||||||
session.setAttribute("version", version);
|
|
||||||
|
|
||||||
%>
|
|
||||||
<html>
|
<html>
|
||||||
<head>
|
<head>
|
||||||
<title>MuWire ${version}</title>
|
<%@include file="css.jsi"%>
|
||||||
<link rel="stylesheet" href="/MuWire/muwire.css">
|
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
|
<%@include file="header.jsi"%>
|
||||||
<table width="100%">
|
<p>Downloads:</p>
|
||||||
<tr>
|
|
||||||
<td>
|
|
||||||
Welcome to MuWire ${persona}
|
|
||||||
</td>
|
|
||||||
<td>
|
|
||||||
<span id="connectionsCount">Connections : 0</span>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
</table>
|
|
||||||
|
|
||||||
<table width="100%">
|
|
||||||
<tr>
|
|
||||||
<td>
|
|
||||||
<a href="/MuWire/Home.jsp">Search</a>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
</table>
|
|
||||||
|
|
||||||
<hr/>
|
|
||||||
<p>Downloads:</p>
|
|
||||||
|
|
||||||
<div id="table-wrapper">
|
<div id="table-wrapper">
|
||||||
<div id="table-scroll">
|
|
||||||
<div id="downloads"></div>
|
<div id="downloads"></div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -88,7 +61,7 @@
|
||||||
var downloaders = new Map()
|
var downloaders = new Map()
|
||||||
|
|
||||||
function updateDownloader(infoHash) {
|
function updateDownloader(infoHash) {
|
||||||
var selected = downloader.get(infoHash);
|
var selected = downloaders.get(infoHash);
|
||||||
|
|
||||||
var downloadDetailsDiv = document.getElementById("downloadDetails");
|
var downloadDetailsDiv = document.getElementById("downloadDetails");
|
||||||
downloadDetailsDiv.innerHTML = "<p>Details for "+selected.name+"</p>"
|
downloadDetailsDiv.innerHTML = "<p>Details for "+selected.name+"</p>"
|
||||||
|
@ -107,9 +80,9 @@
|
||||||
downloaders.set(download.infoHash, download);
|
downloaders.set(download.infoHash, download);
|
||||||
}
|
}
|
||||||
|
|
||||||
var table = "<table><thead><tr><th>Name</th><th>State</th><th>Speed</th><th>ETA</th><th>Progress</th></tr></thead></tbody>";
|
var table = "<table><thead><tr><th>Name</th><th>State</th><th>Speed</th><th>ETA</th><th>Progress</th><th>Cancel</th></tr></thead></tbody>";
|
||||||
var downloadsDiv = document.getElementById("downloads");
|
var downloadsDiv = document.getElementById("downloads");
|
||||||
for (var [infoHash, download) of downloaders) {
|
for (var [infoHash, download] of downloaders) {
|
||||||
table += "<tr><td><a href='#' onclick='updateDownloader(\""+infoHash+"\");return false;'>";
|
table += "<tr><td><a href='#' onclick='updateDownloader(\""+infoHash+"\");return false;'>";
|
||||||
table += download.name;
|
table += download.name;
|
||||||
table += "</a></td>";
|
table += "</a></td>";
|
||||||
|
@ -118,11 +91,11 @@
|
||||||
table += "<td>"+download.ETA+"</td>";
|
table += "<td>"+download.ETA+"</td>";
|
||||||
table += "<td>"+download.progress+"</td>";
|
table += "<td>"+download.progress+"</td>";
|
||||||
|
|
||||||
table += "<td><form action='/MuWire/Download' method='post'><input type='hidden' name='infoHash' value='"+
|
table += "<td><form action='/MuWire/Download' method='post'><input type='hidden' name='infoHash' value='" +
|
||||||
+ infoHash + "'><input type='hidden' name='action' value='cancel'><input type='submit' value='Cancel'></form></td>";
|
infoHash + "'><input type='hidden' name='action' value='cancel'><input type='submit' value='Cancel'></form></td>";
|
||||||
|
|
||||||
table += "</tr>";
|
table += "</tr>";
|
||||||
});
|
}
|
||||||
table += "</tbody></table>";
|
table += "</tbody></table>";
|
||||||
if (downloaders.size > 0)
|
if (downloaders.size > 0)
|
||||||
downloadsDiv.innerHTML = table;
|
downloadsDiv.innerHTML = table;
|
||||||
|
|
Loading…
Reference in New Issue