wip on feeds page js side
This commit is contained in:
@@ -43,7 +43,7 @@ public class FeedServlet extends HttpServlet {
|
||||
StringBuilder sb = new StringBuilder();
|
||||
sb.append("<?xml version='1.0' encoding='UTF-8'?>");
|
||||
|
||||
if (section.equals("status")) {
|
||||
if (section.equals("feeds")) {
|
||||
List<WrappedFeed> feeds = feedManager.getRemoteFeeds().values().stream().
|
||||
map(rf -> new WrappedFeed(rf, core.getFeedManager().getFeedItems(rf.getFeed().getPublisher()).size())).
|
||||
collect(Collectors.toList());
|
||||
@@ -213,10 +213,10 @@ public class FeedServlet extends HttpServlet {
|
||||
|
||||
private static final ColumnComparators<WrappedFeed> FEED_COMPARATORS = new ColumnComparators<>();
|
||||
static {
|
||||
FEED_COMPARATORS.add("publisher", FEED_BY_PUBLISHER);
|
||||
FEED_COMPARATORS.add("files", FEED_BY_FILES);
|
||||
FEED_COMPARATORS.add("status", FEED_BY_STATUS);
|
||||
FEED_COMPARATORS.add("lastUpdated", FEED_BY_LAST_UPDATED);
|
||||
FEED_COMPARATORS.add("Publisher", FEED_BY_PUBLISHER);
|
||||
FEED_COMPARATORS.add("Files", FEED_BY_FILES);
|
||||
FEED_COMPARATORS.add("Status", FEED_BY_STATUS);
|
||||
FEED_COMPARATORS.add("Last Updated", FEED_BY_LAST_UPDATED);
|
||||
}
|
||||
|
||||
private static final Comparator<WrappedFeedItem> ITEM_BY_NAME = (l, r) -> {
|
||||
@@ -237,10 +237,10 @@ public class FeedServlet extends HttpServlet {
|
||||
|
||||
private static final ColumnComparators<WrappedFeedItem> ITEM_COMPARATORS = new ColumnComparators<>();
|
||||
static {
|
||||
ITEM_COMPARATORS.add("name", ITEM_BY_NAME);
|
||||
ITEM_COMPARATORS.add("size", ITEM_BY_SIZE);
|
||||
ITEM_COMPARATORS.add("status", ITEM_BY_STATUS);
|
||||
ITEM_COMPARATORS.add("timestamp", ITEM_BY_TIMESTAMP);
|
||||
ITEM_COMPARATORS.add("Name", ITEM_BY_NAME);
|
||||
ITEM_COMPARATORS.add("Size", ITEM_BY_SIZE);
|
||||
ITEM_COMPARATORS.add("Status", ITEM_BY_STATUS);
|
||||
ITEM_COMPARATORS.add("Published", ITEM_BY_TIMESTAMP);
|
||||
}
|
||||
|
||||
private static class WrappedFeedItem {
|
||||
|
||||
@@ -54,6 +54,7 @@ public class Util {
|
||||
_x("Feeds"),
|
||||
_x("Fetching Certificates"),
|
||||
_x("File"),
|
||||
_x("Files"),
|
||||
_x("Hashing"),
|
||||
_x("Hide Certificates"),
|
||||
_x("Hide Comment"),
|
||||
@@ -70,6 +71,8 @@ public class Util {
|
||||
_x("Pause"),
|
||||
_x("Piece Size"),
|
||||
_x("Progress"),
|
||||
_x("Published"),
|
||||
_x("Publisher"),
|
||||
_x("Query"),
|
||||
// noun
|
||||
_x("Reason"),
|
||||
|
||||
@@ -1,10 +1,139 @@
|
||||
class Feed {
|
||||
constructor(xmlNode) {
|
||||
this.publisher = xmlNode.getElementsByTagName("Publisher")[0].childNodes[0].nodeValue
|
||||
this.publisherB64 = xmlNode.getElementsByTagName("PublisherB64")[0].childNodes[0].nodeValue
|
||||
this.files = xmlNode.getElementsByTagName("Files")[0].childNodes[0].nodeValue
|
||||
this.revision = xmlNode.getElementsByTagName("Revision")[0].childNodes[0].nodeValue
|
||||
this.status = xmlNode.getElementsByTagName("Status")[0].childNodes[0].nodeValue
|
||||
this.active = xmlNode.getElementsByTagName("Active")[0].childNodes[0].nodeValue
|
||||
this.lastUpdated = xmlNode.getElementsByTagName("LastUpdated")[0].childNodes[0].nodeValue
|
||||
}
|
||||
|
||||
getMapping() {
|
||||
// TODO: implement
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
class Item {
|
||||
constructor(xmlNode) {
|
||||
this.name = xmlNode.getElementsByTagName("Name")[0].childNodes[0].nodeValue
|
||||
this.resultStatus = xmlNode.getElementsByTagName("ResultStatus")[0].childNodes[0].nodeValue
|
||||
this.size = xmlNode.getElementsByTagName("Size")[0].childNodes[0].nodeValue
|
||||
this.timestamp = xmlNode.getElementsByTagName("Timestamp")[0].childNodes[0].nodeValue
|
||||
this.infoHash = xmlNode.getElementsByTagName("InfoHash")[0].childNodes[0].nodeValue
|
||||
this.certificates = xmlNode.getElementsByTagName("Certificates")[0].childNodes[0].nodeValue
|
||||
try {
|
||||
this.comment = xmlNode.getElementsByTagName("Comment")[0].childNodes[0].nodeValue
|
||||
} catch (ignore) {
|
||||
this.comment = ""
|
||||
}
|
||||
}
|
||||
|
||||
getMapping() {
|
||||
// TODO: implement
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
function initFeeds() {
|
||||
setTimeout(refreshActive, 1)
|
||||
setInterval(refreshActive, 3000)
|
||||
setTimeout(refreshFeeds, 1)
|
||||
setInterval(refreshFeeds, 3000)
|
||||
}
|
||||
|
||||
|
||||
function refreshActive() {
|
||||
// TODO: write
|
||||
var xmlhttp = new XMLHttpRequest()
|
||||
xmlhttp.onreadystatechange = function() {
|
||||
if (this.readyState == 4 && this.status == 200) {
|
||||
feeds.clear()
|
||||
var listOfFeeds = []
|
||||
var feedNodes = this.responseXML.getElementsByTagName("Feed")
|
||||
var i
|
||||
for (i = 0; i < feedNodes.length; i++) {
|
||||
var feed = new Feed(feedNodes[i])
|
||||
feeds.set(feed.publisher, feed)
|
||||
listOfFeeds.push(feed)
|
||||
}
|
||||
|
||||
var newOrder
|
||||
if (feedsSortOrder == "descending")
|
||||
newOrder = "ascending"
|
||||
else if (feedsSortOrder == "ascending")
|
||||
newOrder = "descending"
|
||||
var table = new Table(["Publisher", "Files", "Last Updated", "Status"], "sortFeeds", feedsSortKey, newOrder, null)
|
||||
|
||||
for (i = 0; i < listOfFeeds.length; i++) {
|
||||
table.addRow(listOfFeeds[i].getMapping())
|
||||
}
|
||||
|
||||
var feedsDiv = document.getElementById("feedsTable")
|
||||
if (listOfFeeds.length > 0)
|
||||
feedsDiv.innerHTML = table.render()
|
||||
else
|
||||
feedsDiv.innerHTML = ""
|
||||
|
||||
if (currentFeed != null)
|
||||
displayFeed(currentFeed)
|
||||
else
|
||||
document.getElementById("itemsTable").innerHTML = ""
|
||||
}
|
||||
}
|
||||
var sortParam = "&key=" + feedsSortKey + "&order=" + feedsSortOrder
|
||||
xmlhttp.open("GET", encodeURI("/MuWire/Feed?section=feeds" + sortParam), true)
|
||||
xmlhttp.send()
|
||||
}
|
||||
|
||||
function displayFeed(feed) {
|
||||
currentFeed = feed
|
||||
var b64 = feeds.get(currentFeed).publisherB64
|
||||
var xmlhttp = new XMLHttpRequest()
|
||||
xmlhttp.onreadystatechange = function() {
|
||||
if (this.readyState == 4 && this.status == 200) {
|
||||
var items = []
|
||||
var itemNodes = this.responseXML.getElementsByTagName("Item")
|
||||
var i
|
||||
for (i = 0; i < itemNodes.length; i++)
|
||||
items.push(new Item(itemNodes[i]))
|
||||
|
||||
var newOrder
|
||||
if (itemsSortOrder == "descending")
|
||||
newOrder = "ascending"
|
||||
else if (itemsSortOrder == "ascending")
|
||||
newOrder = "descending"
|
||||
var table = new Table(["Name", "Size", "Status", "Published"], "sortItems", itemsSortKey, newOrder, null)
|
||||
for (i = 0; i < items.length; i++) {
|
||||
table.addRow(items[i].getMapping())
|
||||
}
|
||||
|
||||
var itemsDiv = document.getElementById("itemsTable")
|
||||
if (items.length > 0)
|
||||
itemsDiv.innerHTML = table.render()
|
||||
else
|
||||
itemsDiv.innerHTML = ""
|
||||
}
|
||||
}
|
||||
var sortParam = "&key=" + itemsSortKey + "&order=" + itemsSortOrder
|
||||
xmlhttp.open("GET", encodeURI("/MuWire/Feed?section=items&publisher=" + b64 + sortParam), true)
|
||||
xmlhttp.send()
|
||||
}
|
||||
|
||||
function sortFeeds(key, order) {
|
||||
feedsSortKey = key
|
||||
feedsSortOrder = order
|
||||
refreshActive()
|
||||
}
|
||||
|
||||
function sortItems(key, order) {
|
||||
itemsSortKey = key
|
||||
itemsSortOrder = order
|
||||
displayFeed(currentFeed)
|
||||
}
|
||||
|
||||
var feeds = new Map()
|
||||
var currentFeed = null
|
||||
|
||||
var feedsSortKey = "Publisher"
|
||||
var feedsSortOrder = "descending"
|
||||
var itemsSortKey = "Name"
|
||||
var itemsSortOrder = "descending"
|
||||
Reference in New Issue
Block a user