[WIP] Playlist changes

This commit is contained in:
calzoneman 2013-06-29 18:09:20 -04:00
parent d05fd3caa9
commit eefd62593b
5 changed files with 441 additions and 300 deletions

View file

@ -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);

View file

@ -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

View file

@ -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);