move download js into a separate file

pull/34/head
Zlatin Balevsky 2019-12-05 11:31:19 +00:00
parent 85814b7544
commit edd4a1ff4b
2 changed files with 67 additions and 68 deletions

View File

@ -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 = "<p>Details for "+selected.name+"</p>"
}
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 = "<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) {
table += "<tr><td><a href='#' onclick='updateDownloader(\""+infoHash+"\");return false;'>";
table += download.name;
table += "</a></td>";
table += "<td>"+download.state+"</td>";
table += "<td>"+download.speed+"</td>";
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 += "</tr>";
}
table += "</tbody></table>";
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);
}

View File

@ -16,7 +16,8 @@
<head>
<%@include file="css.jsi"%>
</head>
<body onload="initConnectionsCount()">
<script src="js/download.js" type="text/javascript"></script>
<body onload="initConnectionsCount(); initDownloads();">
<%@include file="header.jsi"%>
<p>Downloads:</p>
@ -28,72 +29,5 @@
<hr/>
<p>Download Details</p>
<div id="downloadDetails"><p>Click on a download to view details</p></div>
<script>
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 = "<p>Details for "+selected.name+"</p>"
}
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 = "<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) {
table += "<tr><td><a href='#' onclick='updateDownloader(\""+infoHash+"\");return false;'>";
table += download.name;
table += "</a></td>";
table += "<td>"+download.state+"</td>";
table += "<td>"+download.speed+"</td>";
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 += "</tr>";
}
table += "</tbody></table>";
if (downloaders.size > 0)
downloadsDiv.innerHTML = table;
if (downloader != null)
updateDownloader(downloader);
}
}
xmlhttp.open("GET", "/MuWire/Download", true);
xmlhttp.send();
}
setInterval(refreshDownloader, 3000)
setTimeout(refreshDownloader,1);
</script>
</body>
</html>