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("<Downloads>");
|
||||
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("<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.*" %>
|
||||
|
||||
<%@ 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>
|
||||
<head>
|
||||
<title>MuWire ${version}</title>
|
||||
<link rel="stylesheet" href="/MuWire/muwire.css">
|
||||
<%@include file="css.jsi"%>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<table width="100%">
|
||||
<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>
|
||||
<%@include file="header.jsi"%>
|
||||
<p>Downloads:</p>
|
||||
|
||||
<div id="table-wrapper">
|
||||
<div id="table-scroll">
|
||||
<div id="downloads"></div>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -88,7 +61,7 @@
|
|||
var downloaders = new Map()
|
||||
|
||||
function updateDownloader(infoHash) {
|
||||
var selected = downloader.get(infoHash);
|
||||
var selected = downloaders.get(infoHash);
|
||||
|
||||
var downloadDetailsDiv = document.getElementById("downloadDetails");
|
||||
downloadDetailsDiv.innerHTML = "<p>Details for "+selected.name+"</p>"
|
||||
|
@ -107,9 +80,9 @@
|
|||
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");
|
||||
for (var [infoHash, download) of downloaders) {
|
||||
for (var [infoHash, download] of downloaders) {
|
||||
table += "<tr><td><a href='#' onclick='updateDownloader(\""+infoHash+"\");return false;'>";
|
||||
table += download.name;
|
||||
table += "</a></td>";
|
||||
|
@ -118,11 +91,11 @@
|
|||
table += "<td>"+download.ETA+"</td>";
|
||||
table += "<td>"+download.progress+"</td>";
|
||||
|
||||
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>";
|
||||
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>";
|
||||
|
||||
table += "</tr>";
|
||||
});
|
||||
}
|
||||
table += "</tbody></table>";
|
||||
if (downloaders.size > 0)
|
||||
downloadsDiv.innerHTML = table;
|
||||
|
|
Loading…
Reference in New Issue