From 54b86284351f4b3299439be9c5357e0f9981c77c Mon Sep 17 00:00:00 2001 From: Zlatin Balevsky Date: Wed, 4 Dec 2019 23:15:50 +0000 Subject: [PATCH] convert download servlet to xml and page to ajax --- .../com/muwire/webui/DownloadServlet.java | 28 +++++++++- webui/src/main/webapp/Downloads.jsp | 51 +++++-------------- 2 files changed, 39 insertions(+), 40 deletions(-) diff --git a/webui/src/main/java/com/muwire/webui/DownloadServlet.java b/webui/src/main/java/com/muwire/webui/DownloadServlet.java index 6bb41079..0f8f9d54 100644 --- a/webui/src/main/java/com/muwire/webui/DownloadServlet.java +++ b/webui/src/main/java/com/muwire/webui/DownloadServlet.java @@ -42,10 +42,36 @@ public class DownloadServlet extends HttpServlet { sb.append(""); sb.append(""); downloadManager.getDownloaders().forEach(d -> { + sb.append(""); + sb.append("").append(Base64.encode(d.getInfoHash().getRoot())).append(""); sb.append("").append(d.getFile().getName()).append(""); sb.append("").append(d.getCurrentState().toString()).append(""); - sb.append("").append(DataHelper.formatSize2Decimal(d.speed())).append("B/sec").append(""); + int speed = d.speed(); + sb.append("").append(DataHelper.formatSize2Decimal(speed)).append("B/sec").append(""); + + String ETA; + if (speed == 0) + ETA = "Unknown"; + else { + long remaining = (d.getNPieces() - d.donePieces()) * d.getPieceSize() / speed; + ETA = DataHelper.formatDuration(remaining * 1000); + } + sb.append("").append(ETA).append(""); + + 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("").append(progress).append(""); + + // TODO: more details for the downloader details view + sb.append(""); }); + sb.append(""); + resp.setContentType("text/xml"); + resp.getWriter().write(sb.toString()); + resp.getWriter().flush(); } diff --git a/webui/src/main/webapp/Downloads.jsp b/webui/src/main/webapp/Downloads.jsp index 852aa636..5be227cf 100644 --- a/webui/src/main/webapp/Downloads.jsp +++ b/webui/src/main/webapp/Downloads.jsp @@ -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); - -%> - MuWire ${version} - +<%@include file="css.jsi"%> - - - - - - -
- Welcome to MuWire ${persona} - - Connections : 0 -
- - - - - -
- Search -
- -
-

Downloads:

+<%@include file="header.jsi"%> +

Downloads:

-
@@ -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 = "

Details for "+selected.name+"

" @@ -107,9 +80,9 @@ downloaders.set(download.infoHash, download); } - var table = ""; + var table = "
NameStateSpeedETAProgress
"; var downloadsDiv = document.getElementById("downloads"); - for (var [infoHash, download) of downloaders) { + for (var [infoHash, download] of downloaders) { table += ""; @@ -118,11 +91,11 @@ table += ""; table += ""; - table += ""; + table += ""; table += ""; - }); + } table += "
NameStateSpeedETAProgressCancel
"; table += download.name; table += ""+download.ETA+""+download.progress+"
"; if (downloaders.size > 0) downloadsDiv.innerHTML = table;