From 74dddc4da46261a7f7c3bf8aa301007698ba2928 Mon Sep 17 00:00:00 2001 From: Zlatin Balevsky Date: Sat, 7 Dec 2019 18:07:00 +0000 Subject: [PATCH] wip on table view --- .../java/com/muwire/webui/FileManager.java | 6 +++ .../java/com/muwire/webui/FilesServlet.java | 27 +++++++++---- webui/src/main/js/files.js | 2 +- webui/src/main/js/filesTable.js | 39 +++++++++++++++++++ webui/src/main/webapp/SharedFiles.jsp | 21 +++++++++- 5 files changed, 85 insertions(+), 10 deletions(-) create mode 100644 webui/src/main/js/filesTable.js diff --git a/webui/src/main/java/com/muwire/webui/FileManager.java b/webui/src/main/java/com/muwire/webui/FileManager.java index 2440a9ce..6ae88848 100644 --- a/webui/src/main/java/com/muwire/webui/FileManager.java +++ b/webui/src/main/java/com/muwire/webui/FileManager.java @@ -62,6 +62,12 @@ public class FileManager { fileTree.list(parent, callback); } + List getAllFiles() { + TraverseCallback cb = new TraverseCallback(); + fileTree.traverse(cb); + return cb.found; + } + String getHashingFile() { return hashingFile; } diff --git a/webui/src/main/java/com/muwire/webui/FilesServlet.java b/webui/src/main/java/com/muwire/webui/FilesServlet.java index 380d2512..e4a602af 100644 --- a/webui/src/main/java/com/muwire/webui/FilesServlet.java +++ b/webui/src/main/java/com/muwire/webui/FilesServlet.java @@ -39,7 +39,7 @@ public class FilesServlet extends HttpServlet { if (hashingFile != null) sb.append("").append(Util.escapeHTMLinXML(hashingFile)).append(""); sb.append(""); - } else if (section.equals("files")) { + } else if (section.equals("fileTree")) { sb.append(""); sb.append("").append(fileManager.getRevision()).append(""); @@ -63,7 +63,13 @@ public class FilesServlet extends HttpServlet { } fileManager.list(current, cb); sb.append(""); + } else if (section.equals("fileTable")) { + sb.append(""); + sb.append("").append(fileManager.getRevision()).append(""); + fileManager.getAllFiles().forEach(sf -> sharedFileToXML(sf, sb)); + sb.append(""); } + resp.setContentType("text/xml"); resp.setCharacterEncoding("UTF-8"); resp.setDateHeader("Expires", 0); @@ -86,13 +92,7 @@ public class FilesServlet extends HttpServlet { } @Override public void onFile(File f, SharedFile value) { - sb.append(""); - sb.append("").append(Util.escapeHTMLinXML(f.getName())).append(""); - sb.append("").append(DataHelper.formatSize2Decimal(value.getCachedLength())).append("B").append(""); - if (value.getComment() != null) - sb.append("").append(Util.escapeHTMLinXML(value.getComment())).append(""); - // TODO: other stuff - sb.append(""); + sharedFileToXML(value, sb); } @Override public void onDirectory(File f) { @@ -100,6 +100,17 @@ public class FilesServlet extends HttpServlet { sb.append("").append(Util.escapeHTMLinXML(name)).append(""); } } + + private static void sharedFileToXML(SharedFile sf, StringBuilder sb) { + sb.append(""); + sb.append("").append(Util.escapeHTMLinXML(sf.getFile().getName())).append(""); + sb.append("").append(Util.escapeHTMLinXML(sf.getCachedPath())).append(""); + sb.append("").append(DataHelper.formatSize2Decimal(sf.getCachedLength())).append("B").append(""); + if (sf.getComment() != null) + sb.append("").append(Util.escapeHTMLinXML(sf.getComment())).append(""); + // TODO: other stuff + sb.append(""); + } @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { diff --git a/webui/src/main/js/files.js b/webui/src/main/js/files.js index c724352e..96a144db 100644 --- a/webui/src/main/js/files.js +++ b/webui/src/main/js/files.js @@ -275,7 +275,7 @@ function expand(nodeId) { } } } - xmlhttp.open("GET", "/MuWire/Files?section=files&path="+encodedPath, true) + xmlhttp.open("GET", "/MuWire/Files?section=fileTree&path="+encodedPath, true) xmlhttp.send() } diff --git a/webui/src/main/js/filesTable.js b/webui/src/main/js/filesTable.js new file mode 100644 index 00000000..50eeb977 --- /dev/null +++ b/webui/src/main/js/filesTable.js @@ -0,0 +1,39 @@ + + +function refreshStatus() { + var xmlhttp = new XMLHttpRequest(); + xmlhttp.onreadystatechange = function() { + if (this.readyState == 4 && this.status == 200) { + var xmlDoc = this.responseXML; + + var count = xmlDoc.getElementsByTagName("Count")[0].childNodes[0].nodeValue + var countSpan = document.getElementById("count") + countSpan.innerHTML = count + + var hashingSpan = document.getElementById("hashing") + var hashing = xmlDoc.getElementsByTagName("Hashing") + if (hashing != null && hashing.length == 1) { + hashingSpan.innerHTML = "Hashing "+hashing[0].childNodes[0].nodeValue + } else + hashingSpan.innerHTML = ""; + + var newRevision = xmlDoc.getElementsByTagName("Revision")[0].childNodes[0].nodeValue + if (newRevision > tableRevision) { + tableRevision = newRevision + // TODO: let the user know they can refresh the table + } + } + } + xmlhttp.open("GET", "/MuWire/Files?section=status", true) + xmlhttp.send(); +} + +var tableRevision = -1 + +function initFiles() { + setInterval(refreshStatus, 3000) + setTimeout(refreshStatus, 1) + + nodesById.set("root",root) +} + diff --git a/webui/src/main/webapp/SharedFiles.jsp b/webui/src/main/webapp/SharedFiles.jsp index f94be8a2..a7baf73f 100644 --- a/webui/src/main/webapp/SharedFiles.jsp +++ b/webui/src/main/webapp/SharedFiles.jsp @@ -2,12 +2,26 @@ pageEncoding="UTF-8"%> <%@include file="initcode.jsi"%> -<% String pagetitle="Shared Files"; %> +<% + +String pagetitle="Shared Files"; + +String viewAs = request.getParameter("viewAs"); +if (viewAs == null) + viewAs = "tree"; + +%> <%@ include file="css.jsi"%> + +<% if (viewAs.equals("tree")) { %> +<% } else { %> + +<% } %> + <%@ include file="header.jsi"%> @@ -20,6 +34,11 @@ +<% if (viewAs.equals("tree")) { %> + View As Table +<% } else { %> + View As Tree +<% } %> <%@include file="sidebar.jsi"%>