'
);
final deleteBtn = itemEl.querySelector("#btn-delete");
deleteBtn.onclick = e -> {
main.send({
type: RemoveVideo,
removeVideo: {
url: itemEl.querySelector(".qe_title").getAttribute("href")
}
});
}
if (atEnd) videoItemsEl.appendChild(itemEl);
else Utils.insertAtIndex(videoItemsEl, itemEl, 1);
updateCounters();
}
public function removeVideo():Void {
if (video == null) return;
player.removeChild(video);
video = null;
ge("#currenttitle").innerHTML = Lang.get("nothingPlaying");
}
public function removeItem(url:String):Void {
for (child in videoItemsEl.children) {
if (child.querySelector(".qe_title").getAttribute("href") == url) {
videoItemsEl.removeChild(child);
break;
}
}
items.remove(
items.find(item -> item.url == url)
);
updateCounters();
if (video == null) return;
if (video.src == url) {
if (items.length > 0) setVideo(items[0]);
}
}
function updateCounters():Void {
ge("#plcount").innerHTML = '${items.length} ${Lang.get("videos")}';
ge("#pllength").innerHTML = totalDuration();
}
public function getItems():Array {
return items;
}
public function setItems(list:Array):Void {
clearItems();
if (list.length == 0) return;
if (video == null || video.src != list[0].url) {
setVideo(list[0]);
}
for (video in list) {
addVideoItem(video, true);
}
}
public function clearItems():Void {
items.resize(0);
videoItemsEl.innerHTML = "";
updateCounters();
}
public function refresh():Void {
if (items.length == 0) return;
removeVideo();
setVideo(items[0]);
}
function duration(time:Float):String {
final h = Std.int(time / 60 / 60);
final m = Std.int(time / 60) - h * 60;
final s = Std.int(time % 60);
var time = '$m:';
if (m < 10) time = '0$time';
if (h > 0) time = '$h:$time';
if (s < 10) time = time + "0";
time += s;
return time;
}
function totalDuration():String {
var time = 0.0;
for (item in items) time += item.duration;
return duration(time);
}
function nodeFromString(div:String):Element {
final wrapper = document.createDivElement();
wrapper.innerHTML = div;
return wrapper.firstElementChild;
}
public function isListEmpty():Bool {
return items.length == 0;
}
public function hasVideo():Bool {
return video != null;
}
public function pause():Void {
if (video == null) return;
video.pause();
}
public function play():Void {
if (video == null) return;
video.play();
}
public function setTime(time:Float, isLocal = true):Void {
if (video == null) return;
skipSetTime = isLocal;
video.currentTime = time;
}
public function getTime():Float {
if (video == null) return 0;
return video.currentTime;
}
}