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:
39
functions.js
39
functions.js
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user