Commit 60af7910 authored by Mark Hassman's avatar Mark Hassman Committed by Jean-Baptiste Kempf

WebUI: Update Playlist improvement

Close #5583

Playlist is cached/updated locally within browser instead of
refreshing after each function call.
Signed-off-by: default avatarJean-Baptiste Kempf <jb@videolan.org>

(cherry picked from commit 60758c03)
(cherry picked from commit b4cf7a9b)
Signed-off-by: default avatarJean-Baptiste Kempf <jb@videolan.org>
parent fd3585bc
...@@ -20,6 +20,7 @@ ...@@ -20,6 +20,7 @@
switch(browse_target){ switch(browse_target){
default: default:
sendCommand('command=in_enqueue&input='+encodeURI(path)); sendCommand('command=in_enqueue&input='+encodeURI(path));
setTimeout(function(){updatePlayList(true);},1000);
break; break;
} }
}); });
......
...@@ -108,6 +108,7 @@ ...@@ -108,6 +108,7 @@
}); });
$('#buttonPlEmpty').click(function(){ $('#buttonPlEmpty').click(function(){
sendCommand({'command':'pl_empty'}) sendCommand({'command':'pl_empty'})
updatePlayList(true);
return false; return false;
}); });
$('#buttonLoop').click(function(){ $('#buttonLoop').click(function(){
...@@ -122,7 +123,10 @@ ...@@ -122,7 +123,10 @@
sendCommand({'command':'pl_random'}); sendCommand({'command':'pl_random'});
return false; return false;
}) })
$('#buttonRefresh').click(updatePlayList); $('#buttonRefresh').click(function(){
updatePlayList(true);
return false;
});
$('#buttonPlPlay').click(function(){ $('#buttonPlPlay').click(function(){
sendCommand({ sendCommand({
'command': 'pl_play', 'command': 'pl_play',
...@@ -140,7 +144,7 @@ ...@@ -140,7 +144,7 @@
}; };
}); });
$('#libraryTree').jstree('deselect_all'); $('#libraryTree').jstree('deselect_all');
setTimeout(updatePlayList,1000); setTimeout(function(){updatePlayList(true);},1000);
return false; return false;
}); });
$('#buttonStreams, #buttonStreams2').click(function(){ $('#buttonStreams, #buttonStreams2').click(function(){
......
var current_id = 1; var current_id = 1;
var currentArt = null; var currentArt = null;
var current_que = 'main'; var current_que = 'main';
var previous_title = null;
var current_title = null;
function updateArt(url) { function updateArt(url) {
$('#albumArt').fadeOut(500, function () { $('#albumArt').fadeOut(500, function () {
...@@ -72,6 +74,13 @@ function updateStatus() { ...@@ -72,6 +74,13 @@ function updateStatus() {
currentArt = 'images/vlc-48.png'; currentArt = 'images/vlc-48.png';
updateArt(currentArt); updateArt(currentArt);
} }
current_title = $('[name="filename"]', data).text();
if (previous_title != current_title) {
updatePlayList();
}
previous_title = current_title;
if (pollStatus) { if (pollStatus) {
setTimeout(updateStatus, 1000); setTimeout(updateStatus, 1000);
} }
...@@ -119,8 +128,34 @@ function updateStatus() { ...@@ -119,8 +128,34 @@ function updateStatus() {
}); });
} }
function updatePlayList() { function updatePlayList(force_refresh) {
if (force_refresh) {
//refresh playlist..
$('#libraryTree').jstree('refresh', -1); $('#libraryTree').jstree('refresh', -1);
} else {
//iterate through playlist..
var match = false;
$('.jstree-leaf').each(function(){
var id = $(this).attr('id');
if (id != null && id.substr(0,5) == 'plid_') {
var name = $(this).attr('name');
if (name != null && name == current_title) {
$(this).addClass('ui-state-highlight');
$(this).attr('current', 'current');
this.scrollIntoView(true);
match = true;
} else {
$(this).removeClass('ui-state-highlight');
$(this).removeAttr('current');
}
if ($(this).children('a').size() > 0) {
$($(this).children('a')[0]).removeClass('ui-state-active');
}
}
});
//local title wasn't found - refresh playlist..
if (!match) updatePlayList(true);
}
} }
function sendCommand(params, append) { function sendCommand(params, append) {
...@@ -133,7 +168,6 @@ function sendCommand(params, append) { ...@@ -133,7 +168,6 @@ function sendCommand(params, append) {
eval(append); eval(append);
} }
updateStatus(); updateStatus();
updatePlayList();
} }
}); });
} else { } else {
...@@ -155,7 +189,6 @@ function sendCommand(params, append) { ...@@ -155,7 +189,6 @@ function sendCommand(params, append) {
if (append != undefined) { if (append != undefined) {
eval(append); eval(append);
} }
updatePlayList();
} }
}); });
} }
...@@ -197,6 +230,7 @@ function browse(dir) { ...@@ -197,6 +230,7 @@ function browse(dir) {
break; break;
default: default:
sendCommand('command=in_play&input=' + encodeURIComponent($(this).attr('openfile'))); sendCommand('command=in_play&input=' + encodeURIComponent($(this).attr('openfile')));
updatePlayList(true);
break; break;
} }
$('#window_browse').dialog('close'); $('#window_browse').dialog('close');
...@@ -490,7 +524,6 @@ $(function () { ...@@ -490,7 +524,6 @@ $(function () {
event.preventDefault(); event.preventDefault();
current_id = $(this).parent().attr('id').substr(5); current_id = $(this).parent().attr('id').substr(5);
sendCommand('command=pl_play&id=' + current_id); sendCommand('command=pl_play&id=' + current_id);
updatePlayList();
}); });
updateStatus(); updateStatus();
updateStreams(); updateStreams();
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment