vidzig/frontend/Index.hx

57 lines
1.7 KiB
Haxe

import js.html.AnchorElement;
import js.html.XMLHttpRequest;
import js.Browser;
function main():Void {
Elements.enqueue_form.addEventListener("submit", onEnqSubmit);
for (del_btn in Browser.document.getElementsByClassName("vid_del_btn")) {
del_btn.onclick = () -> {
var href = cast(del_btn.parentElement.getElementsByTagName("a")[0], AnchorElement).href;
var xhr = new XMLHttpRequest();
xhr.open("DELETE", href);
xhr.send();
del_btn.parentElement.remove();
};
}
Elements.pause_btn.onclick = PauseButton.onClick;
Elements.clear_btn.onclick = onClearButtonClick;
PauseButton.updateDisplay();
}
function onEnqSubmit(e:Dynamic):Void {
e.preventDefault();
if (Elements.url_inp.value.length == 0) {
Browser.alert("Empty URL not allowed!");
return;
}
new EnqueueTask(
Elements.url_inp.value,
Elements.outname_inp.value.length == 0 ? null : Elements.outname_inp.value,
Std.parseInt(Elements.priority_num.value),
Elements.description_switch.checked,
Elements.audio_only_switch.checked
).send();
Elements.outname_inp.value = nextOutnameVal(Elements.outname_inp.value);
Elements.url_inp.value = "";
}
function nextOutnameVal(cur:String):String {
var inc = ~/[0-9]+$/.map(cur, (reg) -> Std.string(Std.parseInt(reg.matched(0)) + 1));
return inc == cur ? "" : inc;
}
function onClearButtonClick():Void {
Elements.audio_only_switch.checked = false;
Elements.description_switch.checked = false;
Elements.outname_inp.value = "";
Elements.priority_num.value = "0";
Elements.url_inp.value = "";
}