diff --git a/webui/src/main/java/com/muwire/webui/SearchResults.java b/webui/src/main/java/com/muwire/webui/SearchResults.java index 2272819e..68aa568d 100644 --- a/webui/src/main/java/com/muwire/webui/SearchResults.java +++ b/webui/src/main/java/com/muwire/webui/SearchResults.java @@ -69,6 +69,10 @@ public class SearchResults { return bySender; } + public Map> getByInfoHash() { + return byInfohash; + } + public Set getByInfoHash(InfoHash infoHash) { return byInfohash.get(infoHash); } diff --git a/webui/src/main/java/com/muwire/webui/SearchServlet.java b/webui/src/main/java/com/muwire/webui/SearchServlet.java index 75a1ea3b..9aa27d69 100644 --- a/webui/src/main/java/com/muwire/webui/SearchServlet.java +++ b/webui/src/main/java/com/muwire/webui/SearchServlet.java @@ -10,6 +10,7 @@ import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; +import com.muwire.core.InfoHash; import com.muwire.core.Persona; import com.muwire.core.search.UIResultEvent; @@ -35,19 +36,13 @@ public class SearchServlet extends HttpServlet { String section = req.getParameter("section"); StringBuilder sb = new StringBuilder(); sb.append(""); - if (section.equals("activeSearches")) { + if (section.equals("groupBySender")) { sb.append(""); for (SearchResults results : searchManager.getResults().values()) { sb.append(""); sb.append("").append(results.getUUID()).append(""); sb.append("").append(results.getSearch()).append(""); Map> bySender = results.getBySender(); - sb.append("").append(bySender.size()).append(""); - int total = 0; - for (Set s : bySender.values()) { - total += s.size(); - } - sb.append("").append(total).append(""); sb.append(""); bySender.forEach((sender, resultsFromSender) -> { sb.append(""); @@ -73,7 +68,32 @@ public class SearchServlet extends HttpServlet { sb.append(""); sb.append(""); } - sb.append(""); + sb.append(""); + } else if (section.equals("groupByFile")) { + sb.append(""); + for (SearchResults results : searchManager.getResults().values()) { + sb.append(""); + sb.append("").append(results.getUUID()).append(""); + sb.append("").append(results.getSearch()).append(""); + Map> byInfohash = results.getByInfoHash(); + sb.append(""); + byInfohash.forEach((infoHash, resultSet) -> { + sb.append(""); + UIResultEvent first = resultSet.iterator().next(); + sb.append("").append(Base64.encode(infoHash.getRoot())).append(""); + sb.append("").append(first.getName()).append(""); + sb.append("").append(DataHelper.formatSize2Decimal(first.getSize(), false)).append("B").append(""); + resultSet.forEach(result -> { + sb.append(""); + sb.append("").append(result.getSender().getHumanReadableName()).append(""); + sb.append(""); + }); + sb.append(""); + }); + sb.append(""); + sb.append(""); + } + sb.append(""); } else if (section.equals("connectionsCount")) { sb.append(""); sb.append(connectionCounter.getConnections()); diff --git a/webui/src/main/webapp/Home.jsp b/webui/src/main/webapp/Home.jsp index b830912b..b0066be6 100644 --- a/webui/src/main/webapp/Home.jsp +++ b/webui/src/main/webapp/Home.jsp @@ -12,6 +12,10 @@ String version = client.getCore().getVersion(); session.setAttribute("persona", persona); session.setAttribute("version", version); + + String groupBy = request.getParameter("groupBy"); + if (groupBy == null) + groupBy = "sender"; %> @@ -69,6 +73,11 @@ border:1px solid red; } +<% if (groupBy.equals("sender")) { %> +
Group By File
+<% } else { %> +
Group By Sender
+<% } %> @@ -129,7 +138,7 @@ @@ -145,7 +154,7 @@
@@ -109,7 +118,7 @@
-
+
-
+