From 2b9e7221659f19330b49f463e3d6107308d54087 Mon Sep 17 00:00:00 2001 From: Zlatin Balevsky Date: Sun, 15 Dec 2019 08:29:55 +0000 Subject: [PATCH] clear finished downloads link --- .../com/muwire/webui/DownloadManager.java | 11 ++++++++++ .../com/muwire/webui/DownloadServlet.java | 15 ++++++++----- .../src/main/java/com/muwire/webui/Util.java | 1 + webui/src/main/js/download.js | 22 ++++++++++++++++++- webui/src/main/webapp/Downloads.jsp | 1 + 5 files changed, 44 insertions(+), 6 deletions(-) diff --git a/webui/src/main/java/com/muwire/webui/DownloadManager.java b/webui/src/main/java/com/muwire/webui/DownloadManager.java index f3478285..cba7896b 100644 --- a/webui/src/main/java/com/muwire/webui/DownloadManager.java +++ b/webui/src/main/java/com/muwire/webui/DownloadManager.java @@ -1,5 +1,6 @@ package com.muwire.webui; +import java.util.Iterator; import java.util.List; import java.util.Map; import java.util.Timer; @@ -57,6 +58,16 @@ public class DownloadManager { delay(); } + void clearFinished() { + for(Iterator> iter = downloaders.entrySet().iterator(); iter.hasNext();) { + Map.Entry entry = iter.next(); + Downloader.DownloadState state = entry.getValue().getCurrentState(); + if (state == Downloader.DownloadState.CANCELLED || + state == Downloader.DownloadState.FINISHED) + iter.remove(); + } + } + private static void delay() { try { Thread.sleep(100); diff --git a/webui/src/main/java/com/muwire/webui/DownloadServlet.java b/webui/src/main/java/com/muwire/webui/DownloadServlet.java index 5abdc0f3..3f1c8ccc 100644 --- a/webui/src/main/java/com/muwire/webui/DownloadServlet.java +++ b/webui/src/main/java/com/muwire/webui/DownloadServlet.java @@ -100,6 +100,16 @@ public class DownloadServlet extends HttpServlet { protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { + String action = req.getParameter("action"); + if (action == null) { + resp.sendError(403, "Bad param"); + return; + } + if (action.equals("clear")) { + downloadManager.clearFinished(); + return; + } + String infoHashB64 = req.getParameter("infoHash"); if (infoHashB64 == null) { resp.sendError(403, "Bad param"); @@ -111,11 +121,6 @@ public class DownloadServlet extends HttpServlet { return; } InfoHash infoHash = new InfoHash(h); - String action = req.getParameter("action"); - if (action == null) { - resp.sendError(403, "Bad param"); - return; - } if (action.equals("start")) { if (core == null) { resp.sendError(403, "Not initialized"); diff --git a/webui/src/main/java/com/muwire/webui/Util.java b/webui/src/main/java/com/muwire/webui/Util.java index 6d2cd1a2..9594133b 100644 --- a/webui/src/main/java/com/muwire/webui/Util.java +++ b/webui/src/main/java/com/muwire/webui/Util.java @@ -32,6 +32,7 @@ public class Util { _x("Cancel"), _x("Certified"), _x("Certify"), + _x("Clear Finished"), _x("Comment"), _x("Details for {0}"), _x("Down"), diff --git a/webui/src/main/js/download.js b/webui/src/main/js/download.js index fad5b13a..4c71a016 100644 --- a/webui/src/main/js/download.js +++ b/webui/src/main/js/download.js @@ -125,8 +125,16 @@ function refreshDownloader() { } var downloadsDiv = document.getElementById("downloads"); - if (downloaders.size > 0) + var clearDiv = document.getElementById("clearFinished") + if (downloaders.size > 0) { downloadsDiv.innerHTML = table.render(); + + var clearLink = new Link(_t("Clear Finished"), "clear", ["ignored"]) + clearDiv.innerHTML = clearLink.render() + } else { + downloadsDiv.innerHTML = "" + clearDiv.innerHTML = "" + } if (downloader != null) updateDownloader(downloader); } @@ -136,6 +144,18 @@ function refreshDownloader() { xmlhttp.send(); } +function clear(ignored) { + xmlhttp = new XMLHttpRequest() + xmlhttp.onreadystatechange = function() { + if (this.readyState == 4 && this.status == 200) { + refreshDownloader() + } + } + xmlhttp.open("POST", "/MuWire/Download", true) + xmlhttp.setRequestHeader('Content-type', 'application/x-www-form-urlencoded'); + xmlhttp.send(encodeURI("action=clear")); +} + var downloadsSortKey var downloadsSortOrder diff --git a/webui/src/main/webapp/Downloads.jsp b/webui/src/main/webapp/Downloads.jsp index 1a413251..cd793b4c 100644 --- a/webui/src/main/webapp/Downloads.jsp +++ b/webui/src/main/webapp/Downloads.jsp @@ -31,6 +31,7 @@
+

<%=Util._t("Download Details")%>

<%=Util._t("Click on a download to view details")%>