From 1285c68521fb3f07c2b31099b5d9fb4db90c2a6d Mon Sep 17 00:00:00 2001 From: Zlatin Balevsky Date: Sun, 15 Dec 2019 03:26:55 +0000 Subject: [PATCH] uploads page --- .../java/com/muwire/webui/UploadServlet.java | 2 +- .../src/main/java/com/muwire/webui/Util.java | 3 + webui/src/main/js/upload.js | 68 +++++++++++++++++++ webui/src/main/webapp/Uploads.jsp | 36 ++++++++++ webui/src/main/webapp/sidebar.jsi | 6 ++ webui/templates/web.xml.template | 16 +++++ 6 files changed, 130 insertions(+), 1 deletion(-) create mode 100644 webui/src/main/js/upload.js create mode 100644 webui/src/main/webapp/Uploads.jsp diff --git a/webui/src/main/java/com/muwire/webui/UploadServlet.java b/webui/src/main/java/com/muwire/webui/UploadServlet.java index 53c2ba63..b6bd3f83 100644 --- a/webui/src/main/java/com/muwire/webui/UploadServlet.java +++ b/webui/src/main/java/com/muwire/webui/UploadServlet.java @@ -67,7 +67,7 @@ public class UploadServlet extends HttpServlet { this.name = name; this.progress = progress; this.downloader = downloader; - this.remotePieces = remotePieces; + this.remotePieces = progress == 100 ? remotePieces + 1 : remotePieces; this.totalPieces = totalPieces; this.speed = speed; } diff --git a/webui/src/main/java/com/muwire/webui/Util.java b/webui/src/main/java/com/muwire/webui/Util.java index 42962c44..6d2cd1a2 100644 --- a/webui/src/main/java/com/muwire/webui/Util.java +++ b/webui/src/main/java/com/muwire/webui/Util.java @@ -37,6 +37,7 @@ public class Util { _x("Down"), _x("Download"), _x("Download Settings"), + _x("Downloader"), _x("Downloading"), _x("Enter Reason (Optional)"), _x("ETA"), @@ -62,6 +63,7 @@ public class Util { _x("Query"), _x("Reason"), _x("Refresh"), + _x("Remote Pieces"), _x("Results"), _x("Results for {0}"), _x("Results from {0}"), @@ -96,6 +98,7 @@ public class Util { _x("Update trust lists every (hours)"), _x("Upload Settings"), _x("Upload slots per user (-1 means unlimited)"), + _x("Uploads"), _x("User"), _x("View {0} Certificates"), _x("Your Trust"), diff --git a/webui/src/main/js/upload.js b/webui/src/main/js/upload.js new file mode 100644 index 00000000..3a9dad58 --- /dev/null +++ b/webui/src/main/js/upload.js @@ -0,0 +1,68 @@ +class Upload { + constructor(xmlNode) { + this.name = xmlNode.getElementsByTagName("Name")[0].childNodes[0].nodeValue; + this.progress = xmlNode.getElementsByTagName("Progress")[0].childNodes[0].nodeValue; + this.speed = xmlNode.getElementsByTagName("Speed")[0].childNodes[0].nodeValue; + this.downloader = xmlNode.getElementsByTagName("Downloader")[0].childNodes[0].nodeValue + this.remotePieces = xmlNode.getElementsByTagName("RemotePieces")[0].childNodes[0].nodeValue + } + + getMapping() { + var mapping = new Map() + mapping.set("Name", this.name) + mapping.set("Speed", this.speed) + mapping.set("Progress", this.progress) + mapping.set("Downloader", this.downloader) + mapping.set("Remote Pieces", this.remotePieces) + return mapping + } +} + +function refreshUploads() { + var xmlhttp = new XMLHttpRequest(); + xmlhttp.onreadystatechange = function() { + if (this.readyState == 4 && this.status == 200) { + var xmlDoc = this.responseXML; + + var uploaderList = [] + var i; + var x = xmlDoc.getElementsByTagName("Upload"); + for (i = 0; i < x.length; i ++) { + var upload = new Upload(x[i]); + uploaderList.push(upload) + } + + var newOrder + if (uploadsSortOrder == "descending") + newOrder = "ascending" + else if (uploadsSortOrder == "ascending") + newOrder = "descending" + var table = new Table(["Name","Progress","Downloader","Remote Pieces","Speed"], "sortUploads", uploadsSortKey, newOrder, null) + + for(i = 0; i < uploaderList.length; i++) { + table.addRow(uploaderList[i].getMapping()) + } + + var uploadsDiv = document.getElementById("uploads"); + if (uploaderList.length > 0) + uploadsDiv.innerHTML = table.render(); + } + } + var sortParam = "key=" + uploadsSortKey + "&order=" + uploadsSortOrder + xmlhttp.open("GET", "/MuWire/Upload?" + sortParam, true); + xmlhttp.send(); +} + +var uploadsSortKey +var uploadsSortOrder + +function sortUploads(key, order) { + uploadsSortKey = key + uploadsSortOrder = order + refreshUploads() +} + +function initUploads() { + setInterval(refreshUploads, 3000) + setTimeout(refreshUploads,1); +} diff --git a/webui/src/main/webapp/Uploads.jsp b/webui/src/main/webapp/Uploads.jsp new file mode 100644 index 00000000..3ca663cb --- /dev/null +++ b/webui/src/main/webapp/Uploads.jsp @@ -0,0 +1,36 @@ +<%@ page language="java" contentType="text/html; charset=UTF-8" + pageEncoding="UTF-8"%> +<%@ page import="java.io.*" %> +<%@ page import="java.util.*" %> +<%@ page import="com.muwire.webui.*" %> +<%@ page import="com.muwire.core.*" %> +<%@ page import="com.muwire.core.search.*" %> +<%@ page import="net.i2p.data.*" %> + +<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> +<%@include file="initcode.jsi"%> + +<% String pagetitle=Util._t("Uploads"); %> + + + +<%@include file="css.jsi"%> + + + + +<%@include file="header.jsi"%> + +
+
+
+
+
+ + diff --git a/webui/src/main/webapp/sidebar.jsi b/webui/src/main/webapp/sidebar.jsi index aeed9ac7..29c54127 100644 --- a/webui/src/main/webapp/sidebar.jsi +++ b/webui/src/main/webapp/sidebar.jsi @@ -19,6 +19,12 @@ <%=Util._t("Downloads")%> + + + +