[WIP] Playlist changes
This commit is contained in:
parent
d05fd3caa9
commit
eefd62593b
5 changed files with 441 additions and 300 deletions
|
|
@ -649,24 +649,27 @@ Callbacks = {
|
|||
},
|
||||
|
||||
queue: function(data) {
|
||||
var li = makeQueueEntry(data.media, true);
|
||||
var li = makeQueueEntry(data.item, true);
|
||||
li.hide();
|
||||
var q = $("#queue");
|
||||
li.attr("title", data.media.queueby
|
||||
? ("Added by: " + data.media.queueby)
|
||||
li.attr("title", data.item.queueby
|
||||
? ("Added by: " + data.item.queueby)
|
||||
: "Added by: Unknown");
|
||||
if(data.after == "") {
|
||||
if(data.after === "prepend") {
|
||||
li.prependTo(q);
|
||||
li.show("blind");
|
||||
return;
|
||||
}
|
||||
var qli = q.find("li");
|
||||
for(var i = 0; i < qli.length; i++) {
|
||||
if($(qli[i]).data("hash") == data.after) {
|
||||
li.insertAfter(qli[i]);
|
||||
li.show("blind");
|
||||
return;
|
||||
}
|
||||
else if(data.after === "append") {
|
||||
li.appendTo(q);
|
||||
li.show("blind");
|
||||
}
|
||||
else {
|
||||
var liafter = $(".pluid-" + data.after);
|
||||
if(liafter.length == 0)
|
||||
return false;
|
||||
li.insertAfter(liafter);
|
||||
li.show("blind");
|
||||
}
|
||||
},
|
||||
|
||||
|
|
@ -680,20 +683,15 @@ Callbacks = {
|
|||
},
|
||||
|
||||
setTemp: function(data) {
|
||||
var li = false;
|
||||
var qli = $("#queue li");
|
||||
for(var i = 0; i < qli.length; i++) {
|
||||
if($(qli[i]).data("hash") == data.hash) {
|
||||
li = $(qli[i]);
|
||||
break;
|
||||
}
|
||||
}
|
||||
if(!li)
|
||||
return;
|
||||
var li = $(".pluid-" + data.uid);
|
||||
if(li.length == 0)
|
||||
return false;
|
||||
|
||||
if(data.temp)
|
||||
li.addClass("queue_temp");
|
||||
else
|
||||
li.removeClass("queue_temp");
|
||||
|
||||
var btn = li.find(".qbtn-tmp");
|
||||
if(btn.length > 0) {
|
||||
btn.data("temp", data.temp);
|
||||
|
|
@ -709,16 +707,7 @@ Callbacks = {
|
|||
},
|
||||
|
||||
"delete": function(data) {
|
||||
var li = false;
|
||||
var qli = $("#queue li");
|
||||
for(var i = 0; i < qli.length; i++) {
|
||||
if($(qli[i]).data("hash") == data.hash) {
|
||||
li = $(qli[i]);
|
||||
break;
|
||||
}
|
||||
}
|
||||
if(!li)
|
||||
return;
|
||||
var li = $(".pluid-" + data.uid);
|
||||
li.hide("blind", function() {
|
||||
li.remove();
|
||||
});
|
||||
|
|
@ -730,23 +719,17 @@ Callbacks = {
|
|||
},
|
||||
|
||||
changeMedia: function(data) {
|
||||
MEDIA = data;
|
||||
PL_CURRENT = data.uid;
|
||||
var qli = $("#queue li");
|
||||
var li = false;
|
||||
$("#queue li").removeClass("queue_active");
|
||||
for(var i = 0; i < qli.length; i++) {
|
||||
if($(qli[i]).data("hash") == MEDIA.hash) {
|
||||
$(qli[i]).addClass("queue_active");
|
||||
li = $(qli[i]);
|
||||
break;
|
||||
}
|
||||
}
|
||||
var li = $(".pluid-" + data.uid);
|
||||
if(li.length == 0)
|
||||
return false;
|
||||
|
||||
if(li) {
|
||||
$("#queue").scrollTop(0);
|
||||
var scroll = li.position().top - $("#queue").position().top;
|
||||
$("#queue").scrollTop(scroll);
|
||||
}
|
||||
li.addClass("queue_active");
|
||||
$("#queue").scrollTop(0);
|
||||
var scroll = li.position().top - $("#queue").position().top;
|
||||
$("#queue").scrollTop(scroll);
|
||||
|
||||
if(CHANNEL.opts.allow_voteskip)
|
||||
$("#voteskip").attr("disabled", false);
|
||||
|
|
@ -978,10 +961,14 @@ Callbacks = {
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
var SOCKET_DEBUG = true;
|
||||
setupCallbacks = function() {
|
||||
for(var key in Callbacks) {
|
||||
(function(key) {
|
||||
socket.on(key, function(data) {
|
||||
if(SOCKET_DEBUG)
|
||||
console.log(key, data);
|
||||
Callbacks[key](data);
|
||||
});
|
||||
})(key);
|
||||
|
|
|
|||
|
|
@ -203,14 +203,14 @@ $("#userpl_save").click(function() {
|
|||
|
||||
$("#queue").sortable({
|
||||
start: function(ev, ui) {
|
||||
PL_FROM = ui.item.data("hash");
|
||||
PL_FROM = ui.item.data("uid");
|
||||
},
|
||||
update: function(ev, ui) {
|
||||
var prev = ui.item.prevAll();
|
||||
if(prev.length == 0)
|
||||
PL_AFTER = "";
|
||||
PL_AFTER = "prepend";
|
||||
else
|
||||
PL_AFTER = $(prev[0]).data("hash");
|
||||
PL_AFTER = $(prev[0]).data("uid");
|
||||
socket.emit("moveMedia", {
|
||||
from: PL_FROM,
|
||||
after: PL_AFTER
|
||||
|
|
|
|||
|
|
@ -204,11 +204,14 @@ function addUserDropdown(entry, name) {
|
|||
|
||||
/* queue stuff */
|
||||
|
||||
function makeQueueEntry(video, addbtns) {
|
||||
function makeQueueEntry(item, addbtns) {
|
||||
var video = item.media;
|
||||
var li = $("<li/>");
|
||||
li.addClass("queue_entry");
|
||||
li.addClass("pluid-" + item.uid);
|
||||
li.data("uid", item.uid);
|
||||
li.data("media", video);
|
||||
li.data("hash", video.hash);
|
||||
li.data("temp", item.temp);
|
||||
if(video.thumb) {
|
||||
$("<img/>").attr("src", video.thumb.url)
|
||||
.css("float", "left")
|
||||
|
|
@ -222,7 +225,7 @@ function makeQueueEntry(video, addbtns) {
|
|||
var time = $("<span/>").addClass("qe_time").appendTo(li);
|
||||
time.text(video.duration);
|
||||
var clear = $("<div/>").addClass("qe_clear").appendTo(li);
|
||||
if(video.temp) {
|
||||
if(item.temp) {
|
||||
li.addClass("queue_temp");
|
||||
}
|
||||
|
||||
|
|
@ -231,6 +234,27 @@ function makeQueueEntry(video, addbtns) {
|
|||
return li;
|
||||
}
|
||||
|
||||
function makeSearchEntry(video) {
|
||||
var li = $("<li/>");
|
||||
li.addClass("queue_entry");
|
||||
li.data("media", video);
|
||||
if(video.thumb) {
|
||||
$("<img/>").attr("src", video.thumb.url)
|
||||
.css("float", "left")
|
||||
.css("clear", "both")
|
||||
.appendTo(li);
|
||||
}
|
||||
var title = $("<a/>").addClass("qe_title").appendTo(li)
|
||||
.text(video.title)
|
||||
.attr("href", formatURL(video))
|
||||
.attr("target", "_blank");
|
||||
var time = $("<span/>").addClass("qe_time").appendTo(li);
|
||||
time.text(video.duration);
|
||||
var clear = $("<div/>").addClass("qe_clear").appendTo(li);
|
||||
|
||||
return li;
|
||||
}
|
||||
|
||||
function addQueueButtons(li) {
|
||||
li.find(".btn-group").remove();
|
||||
var menu = $("<div/>").addClass("btn-group").appendTo(li);
|
||||
|
|
@ -239,7 +263,7 @@ function addQueueButtons(li) {
|
|||
$("<button/>").addClass("btn btn-mini qbtn-play")
|
||||
.html("<i class='icon-play'></i>Play")
|
||||
.click(function() {
|
||||
socket.emit("jumpTo", li.data("hash"));
|
||||
socket.emit("jumpTo", li.data("uid"));
|
||||
})
|
||||
.appendTo(menu);
|
||||
}
|
||||
|
|
@ -249,8 +273,8 @@ function addQueueButtons(li) {
|
|||
.html("<i class='icon-share-alt'></i>Queue Next")
|
||||
.click(function() {
|
||||
socket.emit("moveMedia", {
|
||||
from: li.data("hash"),
|
||||
after: MEDIA.hash,
|
||||
from: li.data("uid"),
|
||||
after: PL_CURRENT,
|
||||
moveby: null
|
||||
});
|
||||
})
|
||||
|
|
@ -258,13 +282,13 @@ function addQueueButtons(li) {
|
|||
}
|
||||
// Temp/Untemp
|
||||
if(hasPermission("settemp")) {
|
||||
var tempstr = li.data("media").temp?"Make Permanent":"Make Temporary";
|
||||
var tempstr = li.data("temp")?"Make Permanent":"Make Temporary";
|
||||
$("<button/>").addClass("btn btn-mini qbtn-tmp")
|
||||
.html("<i class='icon-flag'></i>" + tempstr)
|
||||
.click(function() {
|
||||
var temp = li.find(".qbtn-tmp").data("temp");
|
||||
socket.emit("setTemp", {
|
||||
hash: li.data("hash"),
|
||||
uid: li.data("uid"),
|
||||
temp: !temp
|
||||
});
|
||||
})
|
||||
|
|
@ -275,7 +299,7 @@ function addQueueButtons(li) {
|
|||
$("<button/>").addClass("btn btn-mini qbtn-delete")
|
||||
.html("<i class='icon-trash'></i>Delete")
|
||||
.click(function() {
|
||||
socket.emit("delete", li.data("hash"));
|
||||
socket.emit("delete", li.data("uid"));
|
||||
})
|
||||
.appendTo(menu);
|
||||
}
|
||||
|
|
@ -879,7 +903,7 @@ function loadSearchPage(page) {
|
|||
var results = $("#library").data("entries");
|
||||
var start = page * 100;
|
||||
for(var i = start; i < start + 100 && i < results.length; i++) {
|
||||
var li = makeQueueEntry(results[i], false);
|
||||
var li = makeSearchEntry(results[i], false);
|
||||
if(hasPermission("playlistadd")) {
|
||||
if(results[i].thumb) {
|
||||
addLibraryButtons(li, results[i].id, "yt");
|
||||
|
|
@ -945,32 +969,30 @@ function addLibraryButtons(li, id, type) {
|
|||
/* queue stuff */
|
||||
|
||||
function playlistMove(from, after) {
|
||||
var lifrom = false;
|
||||
var liafter = false;
|
||||
var lifrom = $(".pluid-" + from);
|
||||
if(lifrom.length == 0)
|
||||
return false;
|
||||
|
||||
var q = $("#queue");
|
||||
var qli = $("#queue li");
|
||||
for(var i = 0; i < qli.length; i++) {
|
||||
if($(qli[i]).data("hash") == from) {
|
||||
lifrom = $(qli[i]);
|
||||
if(after === "" || liafter)
|
||||
break;
|
||||
}
|
||||
else if($(qli[i]).data("hash") == after) {
|
||||
liafter = qli[i];
|
||||
if(lifrom)
|
||||
break;
|
||||
}
|
||||
}
|
||||
if(!lifrom)
|
||||
return;
|
||||
if(after === "") {
|
||||
|
||||
if(after === "prepend") {
|
||||
lifrom.hide("blind", function() {
|
||||
lifrom.detach();
|
||||
lifrom.prependTo(q);
|
||||
lifrom.show("blind");
|
||||
});
|
||||
}
|
||||
else if(after === "append") {
|
||||
lifrom.hide("blind", function() {
|
||||
lifrom.detach();
|
||||
lifrom.appendTo(q);
|
||||
lifrom.show("blind");
|
||||
});
|
||||
}
|
||||
else {
|
||||
var liafter = $(".pluid-" + after);
|
||||
if(liafter.length == 0)
|
||||
return false;
|
||||
lifrom.hide("blind", function() {
|
||||
lifrom.detach();
|
||||
lifrom.insertAfter(liafter);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue