diff --git a/webui/src/main/js/download.js b/webui/src/main/js/download.js new file mode 100644 index 00000000..0f83b8b0 --- /dev/null +++ b/webui/src/main/js/download.js @@ -0,0 +1,65 @@ +class Downloader { + constructor(xmlNode) { + this.name = xmlNode.getElementsByTagName("Name")[0].childNodes[0].nodeValue; + this.state = xmlNode.getElementsByTagName("State")[0].childNodes[0].nodeValue; + this.speed = xmlNode.getElementsByTagName("Speed")[0].childNodes[0].nodeValue; + this.ETA = xmlNode.getElementsByTagName("ETA")[0].childNodes[0].nodeValue; + this.progress = xmlNode.getElementsByTagName("Progress")[0].childNodes[0].nodeValue; + this.infoHash = xmlNode.getElementsByTagName("InfoHash")[0].childNodes[0].nodeValue; + } +} + +var downloader = null; +var downloaders = new Map() + +function updateDownloader(infoHash) { + var selected = downloaders.get(infoHash); + + var downloadDetailsDiv = document.getElementById("downloadDetails"); + downloadDetailsDiv.innerHTML = "

Details for "+selected.name+"

" +} + +function refreshDownloader() { + var xmlhttp = new XMLHttpRequest(); + xmlhttp.onreadystatechange = function() { + if (this.readyState == 4 && this.status == 200) { + var xmlDoc = this.responseXML; + downloaders.clear(); + var i; + var x = xmlDoc.getElementsByTagName("Download"); + for (i = 0; i < x.length; i ++) { + var download = new Downloader(x[i]); + downloaders.set(download.infoHash, download); + } + + var table = ""; + var downloadsDiv = document.getElementById("downloads"); + for (var [infoHash, download] of downloaders) { + table += ""; + table += ""; + table += ""; + table += ""; + table += ""; + + table += ""; + + table += ""; + } + table += "
NameStateSpeedETAProgressCancel
"; + table += download.name; + table += ""+download.state+""+download.speed+""+download.ETA+""+download.progress+"
"; + if (downloaders.size > 0) + downloadsDiv.innerHTML = table; + if (downloader != null) + updateDownloader(downloader); + } + } + xmlhttp.open("GET", "/MuWire/Download", true); + xmlhttp.send(); +} + +function initDownloads() { + setInterval(refreshDownloader, 3000) + setTimeout(refreshDownloader,1); +} \ No newline at end of file diff --git a/webui/src/main/webapp/Downloads.jsp b/webui/src/main/webapp/Downloads.jsp index 28f4992e..8bef8c77 100644 --- a/webui/src/main/webapp/Downloads.jsp +++ b/webui/src/main/webapp/Downloads.jsp @@ -16,7 +16,8 @@ <%@include file="css.jsi"%> - + + <%@include file="header.jsi"%>

Downloads:

@@ -28,72 +29,5 @@

Download Details

Click on a download to view details

- -