1
0
mirror of https://git.tt-rss.org/git/tt-rss.git synced 2025-12-14 02:55:55 +00:00

properly handle on-the-fly adding of labels

This commit is contained in:
Andrew Dolgov
2010-11-09 13:14:59 +03:00
parent 3acc0da647
commit 10249c41b7
4 changed files with 42 additions and 13 deletions

View File

@@ -2250,18 +2250,47 @@ function labelSelectOnChange(elem) {
elem.selectedIndex = 0;
addLabel(elem, function(transport) {
var response = transport.responseXML;
var payload = response.getElementsByTagName("payload")[0];
try {
if (payload)
elem.innerHTML = payload.firstChild.nodeValue;
var response = transport.responseXML;
var select = response.getElementsByTagName("select")[0];
var options = select.getElementsByTagName("option");
dropbox_replace_options(elem, options);
notify('');
} catch (e) {
exception_error("addLabel", e);
}
});
}
} catch (e) {
exception_error("catSelectOnChange", e);
exception_error("labelSelectOnChange", e);
}
}
function dropbox_replace_options(elem, options) {
try {
while (elem.hasChildNodes())
elem.removeChild(elem.firstChild);
var sel_idx = -1;
for (var i = 0; i < options.length; i++) {
var text = options[i].firstChild.nodeValue;
var value = options[i].getAttribute("value");
var issel = options[i].getAttribute("selected") == "1";
elem.insert(new Option(text, value, issel));
if (issel) sel_idx = i;
}
// Chrome doesn't seem to just select stuff when you pass new Option(x, y, true)
if (sel_idx >= 0) elem.selectedIndex = sel_idx;
} catch (e) {
exception_error("dropbox_replace_options", e);
}
}