consolidate counter parsing code

master
Andrew Dolgov 19 years ago
parent c3d74dca93
commit 1a6a9555ff

@ -344,66 +344,74 @@ if (!xmlhttp_rpc && typeof XMLHttpRequest!='undefined') {
xmlhttp_rpc = new XMLHttpRequest(); xmlhttp_rpc = new XMLHttpRequest();
} }
function all_counters_callback() { function parse_counters(reply, f_document) {
if (xmlhttp_rpc.readyState == 4) { try {
try { for (var l = 0; l < reply.childNodes.length; l++) {
if (!xmlhttp_rpc.responseXML || !xmlhttp_rpc.responseXML.firstChild) { var id = reply.childNodes[l].getAttribute("id");
notify("[all_counters_callback] backend did not return valid XML"); var t = reply.childNodes[l].getAttribute("type");
return; var ctr = reply.childNodes[l].getAttribute("counter");
if (id == "global-unread") {
parent.global_unread = ctr;
parent.updateTitle();
continue;
} }
var reply = xmlhttp_rpc.responseXML.firstChild; if (t == "category") {
var catctr = f_document.getElementById("FCATCTR-" + id);
var f_document = parent.frames["feeds-frame"].document; if (catctr) {
catctr.innerHTML = "(" + ctr + " unread)";
for (var l = 0; l < reply.childNodes.length; l++) {
var id = reply.childNodes[l].getAttribute("id");
var t = reply.childNodes[l].getAttribute("type");
var ctr = reply.childNodes[l].getAttribute("counter");
if (id == "global-unread") {
parent.global_unread = ctr;
parent.updateTitle();
continue;
}
if (t == "category") {
var catctr = f_document.getElementById("FCATCTR-" + id);
if (catctr) {
catctr.innerHTML = "(" + ctr + " unread)";
}
continue;
} }
continue;
}
var feedctr = f_document.getElementById("FEEDCTR-" + id); var feedctr = f_document.getElementById("FEEDCTR-" + id);
var feedu = f_document.getElementById("FEEDU-" + id); var feedu = f_document.getElementById("FEEDU-" + id);
var feedr = f_document.getElementById("FEEDR-" + id); var feedr = f_document.getElementById("FEEDR-" + id);
if (feedctr && feedu && feedr) {
feedu.innerHTML = ctr; if (feedctr && feedu && feedr) {
if (ctr > 0) { feedu.innerHTML = ctr;
feedctr.className = "odd";
if (!feedr.className.match("Unread")) {
var is_selected = feedr.className.match("Selected");
feedr.className = feedr.className.replace("Selected", ""); if (ctr > 0) {
feedr.className = feedr.className.replace("Unread", ""); feedctr.className = "odd";
if (!feedr.className.match("Unread")) {
var is_selected = feedr.className.match("Selected");
feedr.className = feedr.className + "Unread"; feedr.className = feedr.className.replace("Selected", "");
feedr.className = feedr.className.replace("Unread", "");
if (is_selected) { feedr.className = feedr.className + "Unread";
feedr.className = feedr.className + "Selected";
}
if (is_selected) {
feedr.className = feedr.className + "Selected";
} }
} else {
feedctr.className = "invisible";
feedr.className = feedr.className.replace("Unread", "");
} }
} else {
feedctr.className = "invisible";
feedr.className = feedr.className.replace("Unread", "");
} }
} }
}
} catch (e) {
exception_error(e);
}
}
function all_counters_callback() {
if (xmlhttp_rpc.readyState == 4) {
try {
if (!xmlhttp_rpc.responseXML || !xmlhttp_rpc.responseXML.firstChild) {
notify("[all_counters_callback] backend did not return valid XML");
return;
}
var reply = xmlhttp_rpc.responseXML.firstChild;
var f_document = parent.frames["feeds-frame"].document;
parse_counters(reply, f_document);
} catch (e) { } catch (e) {
exception_error("all_counters_callback", e); exception_error("all_counters_callback", e);
} }

@ -93,34 +93,7 @@ function refetch_callback() {
var f_document = window.frames["feeds-frame"].document; var f_document = window.frames["feeds-frame"].document;
for (var l = 0; l < reply.childNodes.length; l++) { parse_counters(reply, f_document);
var id = reply.childNodes[l].getAttribute("id");
var ctr = reply.childNodes[l].getAttribute("counter");
var feedctr = f_document.getElementById("FEEDCTR-" + id);
var feedu = f_document.getElementById("FEEDU-" + id);
var feedr = f_document.getElementById("FEEDR-" + id);
if (id == "global-unread") {
global_unread = ctr;
continue;
}
if (feedctr && feedu && feedr) {
feedu.innerHTML = ctr;
if (ctr > 0) {
feedctr.className = "odd";
if (!feedr.className.match("Unread")) {
feedr.className = feedr.className + "Unread";
}
} else {
feedctr.className = "invisible";
feedr.className = feedr.className.replace("Unread", "");
}
}
}
updateTitle(""); updateTitle("");
notify("All feeds updated."); notify("All feeds updated.");

Loading…
Cancel
Save