aboutsummaryrefslogtreecommitdiffstats
path: root/res
diff options
context:
space:
mode:
Diffstat (limited to 'res')
-rw-r--r--res/client.js229
1 files changed, 132 insertions, 97 deletions
diff --git a/res/client.js b/res/client.js
index 9abfe25..8e36477 100644
--- a/res/client.js
+++ b/res/client.js
@@ -438,61 +438,68 @@ StringTools.hex = function(n,digits) {
}
return s;
};
-var VideoList = {};
-VideoList._new = function() {
- return [];
+var VideoList = function() {
+ this.items = [];
+ this.pos = 0;
};
-VideoList.findIndex = function(this1,f) {
- var i = 0;
- var _g = 0;
- while(_g < this1.length) {
- if(f(this1[_g++])) {
- return i;
+VideoList.__name__ = true;
+VideoList.prototype = {
+ setPos: function(i) {
+ if(i < 0 || i > this.items.length - 1) {
+ i = 0;
}
- ++i;
+ this.pos = i;
}
- return -1;
-};
-VideoList.addItem = function(this1,item,atEnd,itemPos) {
- if(atEnd) {
- this1.push(item);
- } else {
- this1.splice(itemPos + 1,0,item);
+ ,findIndex: function(f) {
+ var i = 0;
+ var _g = 0;
+ var _g1 = this.items;
+ while(_g < _g1.length) {
+ if(f(_g1[_g++])) {
+ return i;
+ }
+ ++i;
+ }
+ return -1;
}
-};
-VideoList.setNextItem = function(this1,pos,itemPos) {
- var next = this1[pos];
- HxOverrides.remove(this1,next);
- if(pos < itemPos) {
- --itemPos;
+ ,addItem: function(item,atEnd) {
+ if(atEnd) {
+ this.items.push(item);
+ } else {
+ this.items.splice(this.pos + 1,0,item);
+ }
}
- this1.splice(itemPos + 1,0,next);
- return itemPos;
-};
-VideoList.toggleItemType = function(this1,pos) {
- this1[pos].isTemp = !this1[pos].isTemp;
-};
-VideoList.removeItem = function(this1,index,itemPos) {
- if(index < itemPos) {
- --itemPos;
+ ,setNextItem: function(nextPos) {
+ var next = this.items[nextPos];
+ HxOverrides.remove(this.items,next);
+ if(nextPos < this.pos) {
+ this.pos--;
+ }
+ this.items.splice(this.pos + 1,0,next);
}
- HxOverrides.remove(this1,this1[index]);
- if(itemPos >= this1.length) {
- itemPos = 0;
+ ,toggleItemType: function(pos) {
+ this.items[pos].isTemp = !this.items[pos].isTemp;
}
- return itemPos;
-};
-VideoList.skipItem = function(this1,itemPos) {
- var item = this1[itemPos];
- if(!item.isTemp) {
- ++itemPos;
- } else {
- HxOverrides.remove(this1,item);
+ ,removeItem: function(index) {
+ if(index < this.pos) {
+ this.pos--;
+ }
+ HxOverrides.remove(this.items,this.items[index]);
+ if(this.pos >= this.items.length) {
+ this.pos = 0;
+ }
}
- if(itemPos >= this1.length) {
- itemPos = 0;
+ ,skipItem: function() {
+ var item = this.items[this.pos];
+ if(!item.isTemp) {
+ this.pos++;
+ } else {
+ HxOverrides.remove(this.items,item);
+ }
+ if(this.pos >= this.items.length) {
+ this.pos = 0;
+ }
}
- return itemPos;
};
var client_Buttons = function() { };
client_Buttons.__name__ = true;
@@ -1028,10 +1035,10 @@ client_JsApi.hasScriptInHead = $hx_exports["client"]["JsApi"]["hasScriptInHead"]
return false;
};
client_JsApi.getVideoItems = $hx_exports["client"]["JsApi"]["getVideoItems"] = function() {
+ var items = client_JsApi.player.getItems();
var _g = [];
var _g1 = 0;
- var _g2 = client_JsApi.player.getItems();
- while(_g1 < _g2.length) _g.push(Reflect.copy(_g2[_g1++]));
+ while(_g1 < items.length) _g.push(Reflect.copy(items[_g1++]));
return _g;
};
client_JsApi.addVideoItem = $hx_exports["client"]["JsApi"]["addVideoItem"] = function(url,atEnd,isTemp,callback) {
@@ -1440,10 +1447,10 @@ client_Main.prototype = {
this.player.refresh();
}
,getPlaylistLinks: function() {
+ var items = this.player.getItems();
var _g = [];
var _g1 = 0;
- var _g2 = this.player.getItems();
- while(_g1 < _g2.length) _g.push(_g2[_g1++].url);
+ while(_g1 < items.length) _g.push(items[_g1++].url);
return _g;
}
,tryLocalIp: function(url) {
@@ -2079,10 +2086,9 @@ var client_Player = function(main) {
this.skipSetRate = false;
this.skipSetTime = false;
this.isLoaded = false;
- this.itemPos = 0;
this.playerEl = window.document.querySelector("#ytapiplayer");
this.videoItemsEl = window.document.querySelector("#queue");
- this.items = VideoList._new();
+ this.videoList = new VideoList();
this.main = main;
this.players = [new client_players_Youtube(main,this)];
this.iframePlayer = new client_players_Iframe(main,this);
@@ -2112,19 +2118,20 @@ client_Player.prototype = {
};
}
,setNextItem: function(pos) {
- this.itemPos = VideoList.setNextItem(this.items,pos,this.itemPos);
+ this.videoList.setNextItem(pos);
var next = this.videoItemsEl.children[pos];
this.videoItemsEl.removeChild(next);
- client_Utils.insertAtIndex(this.videoItemsEl,next,this.itemPos + 1);
+ client_Utils.insertAtIndex(this.videoItemsEl,next,this.videoList.pos + 1);
}
,toggleItemType: function(pos) {
- VideoList.toggleItemType(this.items,pos);
- this.setItemElementType(this.videoItemsEl.children[pos],this.items[pos].isTemp);
+ this.videoList.toggleItemType(pos);
+ this.setItemElementType(this.videoItemsEl.children[pos],this.videoList.items[this.videoList.pos].isTemp);
}
,setPlayer: function(newPlayer) {
if(this.player != newPlayer) {
if(this.player != null) {
- client_JsApi.fireVideoRemoveEvents(this.items[this.itemPos]);
+ var _this = this.videoList;
+ client_JsApi.fireVideoRemoveEvents(_this.items[_this.pos]);
this.player.removeVideo();
}
this.main.blinkTabWithTitle("*Video*");
@@ -2152,7 +2159,7 @@ client_Player.prototype = {
if(!this.main.isSyncActive) {
return;
}
- var item = this.items[i];
+ var item = this.videoList.items[i];
var currentPlayer = Lambda.find(this.players,function(p) {
return p.isSupportedLink(item.url);
});
@@ -2163,12 +2170,9 @@ client_Player.prototype = {
} else {
this.setPlayer(this.rawPlayer);
}
- var childs = this.videoItemsEl.children;
- if(childs[this.itemPos] != null) {
- childs[this.itemPos].classList.remove("queue_active");
- }
- this.itemPos = i;
- childs[this.itemPos].classList.add("queue_active");
+ this.removeActiveLabel(this.videoList.pos);
+ this.videoList.setPos(i);
+ this.addActiveLabel(this.videoList.pos);
this.isLoaded = false;
this.player.loadVideo(item);
client_JsApi.fireVideoChangeEvents(item);
@@ -2178,14 +2182,16 @@ client_Player.prototype = {
if(this.player == null) {
return;
}
- var item = this.items[this.itemPos];
+ var _this = this.videoList;
+ var item = _this.items[_this.pos];
if(item == null) {
return;
}
this.player.loadVideo({ url : src, title : item.title, author : item.author, duration : item.duration, subs : item.subs, isTemp : item.isTemp, isIframe : item.isIframe});
}
,removeVideo: function() {
- client_JsApi.fireVideoRemoveEvents(this.items[this.itemPos]);
+ var _this = this.videoList;
+ client_JsApi.fireVideoRemoveEvents(_this.items[_this.pos]);
this.player.removeVideo();
window.document.querySelector("#currenttitle").textContent = Lang.get("nothingPlaying");
this.setPauseIndicator(true);
@@ -2212,7 +2218,7 @@ client_Player.prototype = {
return;
}
this.main.send({ type : "Play", play : { time : this.getTime()}});
- if(this.main.hasLeaderOnPauseRequest() && this.items.length > 0) {
+ if(this.main.hasLeaderOnPauseRequest() && this.videoList.items.length > 0) {
if(this.main.hasPermission((this.main.personal.group & 8) != 0 ? ClientGroup.Admin : ClientGroup.User,"requestLeader")) {
this.main.toggleLeader();
}
@@ -2220,7 +2226,7 @@ client_Player.prototype = {
}
,onPause: function() {
var _gthis = this;
- if(this.main.hasLeaderOnPauseRequest() && this.items.length > 0 && this.getTime() > 1 && !this.main.hasLeader()) {
+ if(this.main.hasLeaderOnPauseRequest() && this.videoList.items.length > 0 && this.getTime() > 1 && !this.main.hasLeader()) {
client_JsApi.once("SetLeader",function(event) {
if(event.setLeader.clientName != _gthis.main.personal.name) {
return;
@@ -2260,12 +2266,12 @@ client_Player.prototype = {
var url = StringTools.htmlEscape(item.url,true);
var duration = item.isIframe ? "" : this.duration(item.duration);
var itemEl = client_Utils.nodeFromString("<li class=\"queue_entry info\" title=\"" + Lang.get("addedBy") + ": " + item.author + "\">\n\t\t\t\t<header>\n\t\t\t\t\t<span class=\"qe_time\">" + duration + "</span>\n\t\t\t\t\t<h4><a class=\"qe_title\" href=\"" + url + "\" target=\"_blank\">" + StringTools.htmlEscape(item.title) + "</a></h4>\n\t\t\t\t</header>\n\t\t\t\t<span class=\"controls\">\n\t\t\t\t\t<button class=\"qbtn-play\" title=\"" + Lang.get("play") + "\"><ion-icon name=\"play\"></ion-icon></button>\n\t\t\t\t\t<button class=\"qbtn-next\" title=\"" + Lang.get("setNext") + "\"><ion-icon name=\"arrow-up\"></ion-icon></button>\n\t\t\t\t\t<button class=\"qbtn-tmp\"><ion-icon></ion-icon></button>\n\t\t\t\t\t<button class=\"qbtn-delete\" title=\"" + Lang.get("delete") + "\"><ion-icon name=\"close\"></ion-icon></button>\n\t\t\t\t</span>\n\t\t\t</li>");
- VideoList.addItem(this.items,item,atEnd,this.itemPos);
+ this.videoList.addItem(item,atEnd);
this.setItemElementType(itemEl,item.isTemp);
if(atEnd) {
this.videoItemsEl.appendChild(itemEl);
} else {
- client_Utils.insertAtIndex(this.videoItemsEl,itemEl,this.itemPos + 1);
+ client_Utils.insertAtIndex(this.videoItemsEl,itemEl,this.videoList.pos + 1);
}
this.updateCounters();
}
@@ -2281,17 +2287,18 @@ client_Player.prototype = {
}
,removeItem: function(url) {
this.removeElementItem(url);
- var index = VideoList.findIndex(this.items,function(item) {
+ var index = this.videoList.findIndex(function(item) {
return item.url == url;
});
if(index == -1) {
return;
}
- var isCurrent = this.items[this.itemPos].url == url;
- this.itemPos = VideoList.removeItem(this.items,index,this.itemPos);
+ var _this = this.videoList;
+ var isCurrent = _this.items[_this.pos].url == url;
+ this.videoList.removeItem(index);
this.updateCounters();
- if(isCurrent && this.items.length > 0) {
- this.setVideo(this.itemPos);
+ if(isCurrent && this.videoList.items.length > 0) {
+ this.setVideo(this.videoList.pos);
}
}
,removeElementItem: function(url) {
@@ -2307,60 +2314,84 @@ client_Player.prototype = {
}
}
,skipItem: function(url) {
- var index = VideoList.findIndex(this.items,function(item) {
+ var pos = this.videoList.findIndex(function(item) {
return item.url == url;
});
- if(index == -1) {
+ if(pos == -1) {
return;
}
- if(this.items[index].isTemp) {
+ this.removeActiveLabel(this.videoList.pos);
+ this.videoList.setPos(pos);
+ var _this = this.videoList;
+ if(_this.items[_this.pos].isTemp) {
this.removeElementItem(url);
}
- index = VideoList.skipItem(this.items,index);
+ this.videoList.skipItem();
this.updateCounters();
- if(this.items.length == 0) {
+ if(this.videoList.items.length == 0) {
return;
}
- this.setVideo(index);
+ this.setVideo(this.videoList.pos);
+ }
+ ,addActiveLabel: function(pos) {
+ var childs = this.videoItemsEl.children;
+ if(childs[this.videoList.pos] != null) {
+ childs[this.videoList.pos].classList.add("queue_active");
+ }
+ }
+ ,removeActiveLabel: function(pos) {
+ var childs = this.videoItemsEl.children;
+ if(childs[this.videoList.pos] != null) {
+ childs[this.videoList.pos].classList.remove("queue_active");
+ }
}
,updateCounters: function() {
- var tmp = "" + this.items.length + " ";
+ var tmp = "" + this.videoList.items.length + " ";
var tmp1 = Lang.get("videos");
window.document.querySelector("#plcount").textContent = tmp + tmp1;
window.document.querySelector("#pllength").textContent = this.totalDuration();
}
,getItems: function() {
- return this.items;
+ return this.videoList.items;
}
,setItems: function(list,pos) {
- var currentUrl = this.itemPos >= this.items.length ? "" : this.items[this.itemPos].url;
+ var currentUrl;
+ if(this.videoList.pos >= this.videoList.items.length) {
+ currentUrl = "";
+ } else {
+ var _this = this.videoList;
+ currentUrl = _this.items[_this.pos].url;
+ }
this.clearItems();
if(pos != null) {
- this.itemPos = pos;
+ this.videoList.setPos(pos);
}
if(list.length == 0) {
return;
}
var _g = 0;
while(_g < list.length) this.addVideoItem(list[_g++],true);
- if(currentUrl != this.items[this.itemPos].url) {
- this.setVideo(this.itemPos);
+ var _this = this.videoList;
+ if(currentUrl != _this.items[_this.pos].url) {
+ this.setVideo(this.videoList.pos);
} else {
- this.videoItemsEl.children[this.itemPos].classList.add("queue_active");
+ this.addActiveLabel(this.videoList.pos);
}
}
,clearItems: function() {
- this.items.length = 0;
+ var _this = this.videoList;
+ _this.items.length = 0;
+ _this.pos = 0;
this.videoItemsEl.textContent = "";
this.updateCounters();
}
,refresh: function() {
- if(this.items.length == 0) {
+ if(this.videoList.items.length == 0) {
return;
}
var time = this.getTime();
this.removeVideo();
- this.setVideo(this.itemPos);
+ this.setVideo(this.videoList.pos);
if((this.main.personal.group & 4) != 0) {
this.setTime(time);
this.main.forceSyncNextTick = true;
@@ -2386,7 +2417,7 @@ client_Player.prototype = {
,totalDuration: function() {
var time = 0.0;
var _g = 0;
- var _g1 = this.items;
+ var _g1 = this.videoList.items;
while(_g < _g1.length) {
var item = _g1[_g];
++_g;
@@ -2398,22 +2429,23 @@ client_Player.prototype = {
return this.duration(time);
}
,isListEmpty: function() {
- return this.items.length == 0;
+ return this.videoList.items.length == 0;
}
,itemsLength: function() {
- return this.items.length;
+ return this.videoList.items.length;
}
,getItemPos: function() {
- return this.itemPos;
+ return this.videoList.pos;
}
,hasVideo: function() {
return this.playerEl.children.length != 0;
}
,getDuration: function() {
- if(this.itemPos >= this.items.length) {
+ if(this.videoList.pos >= this.videoList.items.length) {
return 0;
}
- return this.items[this.itemPos].duration;
+ var _this = this.videoList;
+ return _this.items[_this.pos].duration;
}
,isVideoLoaded: function() {
return this.player.isVideoLoaded();
@@ -2863,6 +2895,9 @@ client_players_Raw.prototype = {
this.controlsHider.stop();
}
this.controlsHider = haxe_Timer.delay(function() {
+ if(_gthis.video == null) {
+ return;
+ }
_gthis.video.controls = false;
},3000);
this.video.onmousemove = function(e) {
send patches to the email below
yukais@pinapelz.com
include the subject [PATCH repo_name]
pinapelz.com
homepage