mirror of https://github.com/zlatinb/muwire
preserve expanded comment state during updates
parent
18d84685ec
commit
62c4579bbd
|
@ -77,10 +77,13 @@ class Sender {
|
||||||
class Senders {
|
class Senders {
|
||||||
constructor(xmlNode) {
|
constructor(xmlNode) {
|
||||||
this.senders = []
|
this.senders = []
|
||||||
|
this.sendersMap = new Map()
|
||||||
var senderNodes = xmlNode.getElementsByTagName("Sender")
|
var senderNodes = xmlNode.getElementsByTagName("Sender")
|
||||||
var i
|
var i
|
||||||
for (i = 0; i < senderNodes.length; i++) {
|
for (i = 0; i < senderNodes.length; i++) {
|
||||||
this.senders.push(new Sender(senderNodes[i]))
|
var sender = new Sender(senderNodes[i])
|
||||||
|
this.senders.push(sender)
|
||||||
|
this.sendersMap.set(sender.b64, sender)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -129,14 +132,26 @@ class ResultFromSender {
|
||||||
getCommentBlock() {
|
getCommentBlock() {
|
||||||
if (this.comment == null)
|
if (this.comment == null)
|
||||||
return ""
|
return ""
|
||||||
|
if (expandedComments.get(this.infoHash)) {
|
||||||
var html = "<div id='comment-link-" + this.infoHash + "'>"
|
var html = "<div id='comment-link-" + this.infoHash + "'>"
|
||||||
html += "<a href='#' onclick='window.showComment(\"" + this.infoHash + "\");return false;'>"
|
html += "<a href='#' onclick='window.hideComment(\"" + this.infoHash + "\");return false;'>"
|
||||||
|
html += _t("Hide Comment")
|
||||||
|
html += "</a>"
|
||||||
|
html += "</div>"
|
||||||
|
html += "<div id='comment-" + this.infoHash + "'>"
|
||||||
|
html += "<pre>" + this.comment + "</pre>"
|
||||||
|
html += "</div>"
|
||||||
|
return html
|
||||||
|
} else {
|
||||||
|
var html = "<div id='comment-link-" + this.infoHash + "'>"
|
||||||
|
html += "<a href='#' onclick='window.showCommentBySender(\"" + this.infoHash + "\");return false;'>"
|
||||||
html += _t("Show Comment")
|
html += _t("Show Comment")
|
||||||
html += "</a>"
|
html += "</a>"
|
||||||
html += "</div>"
|
html += "</div>"
|
||||||
html += "<div id='comment-" + this.infoHash + "'></div>"
|
html += "<div id='comment-" + this.infoHash + "'></div>"
|
||||||
return html
|
return html
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
getCertificatesBlock() {
|
getCertificatesBlock() {
|
||||||
if (this.certificates == "0")
|
if (this.certificates == "0")
|
||||||
|
@ -156,10 +171,13 @@ class ResultFromSender {
|
||||||
class ResultsFromSender {
|
class ResultsFromSender {
|
||||||
constructor(xmlNode) {
|
constructor(xmlNode) {
|
||||||
this.resultsFromSender = []
|
this.resultsFromSender = []
|
||||||
|
this.resultsMap = new Map()
|
||||||
var resultNodes = xmlNode.getElementsByTagName("Result")
|
var resultNodes = xmlNode.getElementsByTagName("Result")
|
||||||
var i
|
var i
|
||||||
for (i = 0; i < resultNodes.length; i++) {
|
for (i = 0; i < resultNodes.length; i++) {
|
||||||
this.resultsFromSender.push(new ResultFromSender(resultNodes[i]))
|
var result = new ResultFromSender(resultNodes[i])
|
||||||
|
this.resultsFromSender.push(result)
|
||||||
|
this.resultsMap.set(result.infoHash, result)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -210,10 +228,13 @@ class Result {
|
||||||
class Results {
|
class Results {
|
||||||
constructor(xmlNode) {
|
constructor(xmlNode) {
|
||||||
this.results = []
|
this.results = []
|
||||||
|
this.resultsMap = new Map()
|
||||||
var resultNodes = xmlNode.getElementsByTagName("Result")
|
var resultNodes = xmlNode.getElementsByTagName("Result")
|
||||||
var i
|
var i
|
||||||
for (i = 0; i < resultNodes.length; i++) {
|
for (i = 0; i < resultNodes.length; i++) {
|
||||||
this.results.push(new Result(resultNodes[i]))
|
var result = new Result(resultNodes[i])
|
||||||
|
this.results.push(result)
|
||||||
|
this.resultsMap.set(result.infoHash, result)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -256,7 +277,34 @@ class SenderForResult {
|
||||||
}
|
}
|
||||||
|
|
||||||
getNameBlock() {
|
getNameBlock() {
|
||||||
return this.name
|
return this.name + this.getCommentBlock() + this.getCertificatesBlock()
|
||||||
|
}
|
||||||
|
|
||||||
|
getCommentBlock() {
|
||||||
|
if (this.comment == null)
|
||||||
|
return ""
|
||||||
|
if (expandedComments.get(this.b64)) {
|
||||||
|
var html = "<div id='comment-link-" + this.b64 + "'>"
|
||||||
|
html += "<a href='#' onclick='window.hideComment(\"" + this.b64 + "\");return false;'>"
|
||||||
|
html += _t("Hide Comment")
|
||||||
|
html += "</a>"
|
||||||
|
html += "</div>"
|
||||||
|
html += "<div id='comment-" + this.b64 + "'>"
|
||||||
|
html += "<pre>" + this.comment + "</pre>"
|
||||||
|
html += "</div>"
|
||||||
|
return html
|
||||||
|
} else {
|
||||||
|
var link = "<a href='#' onclick='showCommentByFile(\"" + this.b64 + "\");return false;'>" + _t("Show Comment") + "</a>"
|
||||||
|
var block = "<div id='comment-link-" + this.b64 + "'>" + link + "</div>"
|
||||||
|
block += "<div id='comment-" + this.b64 + "'></div>"
|
||||||
|
return block
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
getCertificatesBlock() {
|
||||||
|
if (this.certificates == "0")
|
||||||
|
return ""
|
||||||
|
return _t("View {0} Certificates", this.certificates)
|
||||||
}
|
}
|
||||||
|
|
||||||
getBrowseBlock() {
|
getBrowseBlock() {
|
||||||
|
@ -304,10 +352,13 @@ class SenderForResult {
|
||||||
class SendersForResult {
|
class SendersForResult {
|
||||||
constructor(xmlNode) {
|
constructor(xmlNode) {
|
||||||
this.sendersForResult = []
|
this.sendersForResult = []
|
||||||
|
this.sendersMap = new Map()
|
||||||
var senderNodes = xmlNode.getElementsByTagName("Sender")
|
var senderNodes = xmlNode.getElementsByTagName("Sender")
|
||||||
var i
|
var i
|
||||||
for (i = 0; i < senderNodes.length; i++) {
|
for (i = 0; i < senderNodes.length; i++) {
|
||||||
this.sendersForResult.push(new SenderForResult(senderNodes[i]))
|
var sender = new SenderForResult(senderNodes[i])
|
||||||
|
this.sendersForResult.push(sender)
|
||||||
|
this.sendersMap.set(sender.b64, sender)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -350,45 +401,56 @@ var results
|
||||||
var currentResult
|
var currentResult
|
||||||
var sendersForResult
|
var sendersForResult
|
||||||
|
|
||||||
|
// expanded comments
|
||||||
|
var expandedComments = new Map()
|
||||||
|
|
||||||
// status fields
|
// status fields
|
||||||
var uuid = null;
|
var uuid = null;
|
||||||
var statusByUUID = new Map()
|
var statusByUUID = new Map()
|
||||||
|
|
||||||
// expanded comments
|
|
||||||
var expandedComments = new Map();
|
|
||||||
|
|
||||||
// pointers based on current view type
|
// pointers based on current view type
|
||||||
var refreshFunction = null
|
var refreshFunction = null
|
||||||
var refreshType = null
|
var refreshType = null
|
||||||
|
|
||||||
function showCommentBySender(divId, spanId) {
|
function showCommentBySender(infoHash) {
|
||||||
var split = divId.split("_");
|
|
||||||
var commentDiv = document.getElementById(divId);
|
expandedComments.set(infoHash, true)
|
||||||
var comment = "<pre>"+ currentSearchBySender.resultBatches.get(split[2]).results.get(split[3]).comment + "</pre>";
|
|
||||||
|
var commentText = resultsFromSender.resultsMap.get(infoHash).comment
|
||||||
|
|
||||||
|
var commentDiv = document.getElementById("comment-" + infoHash);
|
||||||
|
var comment = "<pre>"+ commentText + "</pre>";
|
||||||
commentDiv.innerHTML = comment
|
commentDiv.innerHTML = comment
|
||||||
expandedComments.set(divId, comment);
|
|
||||||
var hideLink = "<a href='#' onclick='window.hideComment(\""+divId+"\",\""+spanId+"\",\"Sender\");return false;'>" + _t("Hide Comment") + "</a>";
|
|
||||||
var linkSpan = document.getElementById(spanId);
|
var hideLink = "<a href='#' onclick='window.hideComment(\"" + infoHash + "\");return false;'>" + _t("Hide Comment") + "</a>";
|
||||||
|
var linkSpan = document.getElementById("comment-link-" + infoHash);
|
||||||
linkSpan.innerHTML = hideLink;
|
linkSpan.innerHTML = hideLink;
|
||||||
}
|
}
|
||||||
|
|
||||||
function showCommentByFile(divId, spanId) {
|
function showCommentByFile(b64) {
|
||||||
var split = divId.split("_");
|
|
||||||
var commentDiv = document.getElementById(divId);
|
expandedComments.set(b64, true)
|
||||||
var comment = "<pre>"+currentSearchByFile.resultBatches.get(split[2]).results.get(split[3]).comment + "</pre>";
|
|
||||||
|
var commentText = sendersForResult.sendersMap.get(b64).comment
|
||||||
|
|
||||||
|
var commentDiv = document.getElementById("comment-" + b64)
|
||||||
|
var comment = "<pre>" + commentText + "</pre>"
|
||||||
commentDiv.innerHTML = comment
|
commentDiv.innerHTML = comment
|
||||||
expandedComments.set(divId, comment);
|
|
||||||
var hideLink = "<a href='#' onclick='window.hideComment(\""+divId+"\",\""+spanId+"\",\"File\");return false;'>" + _t("Hide Comment") + "</a>";
|
var hideLink = "<a href='#' onclick='window.hideComment(\"" + b64 + "\");return false;'>" + _t("Hide Comment") + "</a>";
|
||||||
var linkSpan = document.getElementById(spanId);
|
var linkSpan = document.getElementById("comment-link-" + b64);
|
||||||
linkSpan.innerHTML = hideLink;
|
linkSpan.innerHTML = hideLink;
|
||||||
}
|
}
|
||||||
|
|
||||||
function hideComment(divId, spanId, byFile) {
|
function hideComment(id) {
|
||||||
expandedComments.delete(divId);
|
expandedComments.delete(id)
|
||||||
var commentDiv = document.getElementById(divId);
|
|
||||||
|
var commentDiv = document.getElementById("comment-" + id);
|
||||||
commentDiv.innerHTML = ""
|
commentDiv.innerHTML = ""
|
||||||
var showLink = "<a href='#' onclick='window.showCommentBy"+byFile+"(\"" + divId + "\",\"" + spanId + "\"); return false;'>" + _t("Show Comment") + "</a>";
|
|
||||||
var linkSpan = document.getElementById(spanId);
|
var showLink = "<a href='#' onclick='window.showCommentBy" + refreshType + "(\"" + id + "\"); return false;'>" + _t("Show Comment") + "</a>";
|
||||||
|
var linkSpan = document.getElementById("comment-link-"+id);
|
||||||
linkSpan.innerHTML = showLink;
|
linkSpan.innerHTML = showLink;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue