|
@@ -373,8 +373,10 @@
|
|
|
var displayList = []; //This is the list where the current UI is displaying.
|
|
|
var playingList = []; //This is the list where the player last clicked on an item to play
|
|
|
var pagingEnabled = false; //Enable this when there are too many songs in list
|
|
|
+ var pagingEnableForPlayingList = false;
|
|
|
var pagingCutoffCount = 100; //No. of songs to start paging
|
|
|
var currentPage = 0;
|
|
|
+ var currentPlayingPage = 0;
|
|
|
var randomMode = false;
|
|
|
var repeatMode = 0; //Repeat mode 0 -> No repeat, 1 -> Repeat all 2 -> Repeat one
|
|
|
var updateSystemVolume = true;
|
|
@@ -676,6 +678,8 @@
|
|
|
displayList = data;
|
|
|
if (playingList == []){
|
|
|
playingList = Array.from(displayList);
|
|
|
+ pagingEnableForPlayingList = pagingEnabled;
|
|
|
+ currentPlayingPage = currentPage;
|
|
|
}
|
|
|
$("#mainList").html("");
|
|
|
for ( var i =0; i < data.length; i++){
|
|
@@ -1192,6 +1196,8 @@
|
|
|
//Only backup when it is not call from dropdown list
|
|
|
if (!$(object).parent().hasClass("dropdownList")){
|
|
|
playingList = Array.from(displayList);
|
|
|
+ pagingEnableForPlayingList = pagingEnabled;
|
|
|
+ currentPlayingPage = currentPage;
|
|
|
}
|
|
|
parsePlayingSongList();
|
|
|
if ($("#miniPlayer").hasClass("hidden")){
|
|
@@ -2086,6 +2092,13 @@
|
|
|
//This song already playing. Ignore play request.
|
|
|
return;
|
|
|
}
|
|
|
+
|
|
|
+ if (pagingEnableForPlayingList && $(object).attr("targetPage") != currentPlayingPage){
|
|
|
+ let newPage = parseInt($(object).attr("targetPage"));
|
|
|
+ if (!isNaN(newPage)){
|
|
|
+ currentPlayingPage = newPage;
|
|
|
+ }
|
|
|
+ }
|
|
|
playSong(object);
|
|
|
//Check if the song is also in main list. If yes, highlight it as well
|
|
|
/*
|
|
@@ -2106,10 +2119,16 @@
|
|
|
var counter = playingList.length;
|
|
|
var totalSize = 0.0;
|
|
|
var renderRange = [0, playingList.length];
|
|
|
- if (pagingEnabled){
|
|
|
+ var pageKeepRange = [0, playingList.length]
|
|
|
+ if (pagingEnableForPlayingList){
|
|
|
//Paging Enabled. Only show 1/2 max + current page song + 1/2 max
|
|
|
- var startEndRange = getPageStartAndEndByPageNumber(currentPage);
|
|
|
+ var startEndRange = getPageStartAndEndByPageNumber(currentPlayingPage, playingList);
|
|
|
startEndRange = [startEndRange[0] - pagingCutoffCount /2, startEndRange[1] + pagingCutoffCount / 2]
|
|
|
+ //console.log("DEFAULT START END RANGE", startEndRange)
|
|
|
+ //page keep range is the middle 1/2 number of songs, [1/4 => prev page][1/2][1/4 => next page]
|
|
|
+ pageKeepRange[0] = startEndRange[0] + pagingCutoffCount / 2;
|
|
|
+ pageKeepRange[1] = startEndRange[1] - pagingCutoffCount / 2;
|
|
|
+
|
|
|
if (startEndRange[0] < 0){
|
|
|
startEndRange[0] = 0;
|
|
|
}
|
|
@@ -2119,6 +2138,16 @@
|
|
|
}
|
|
|
|
|
|
renderRange = startEndRange;
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ if (pageKeepRange[0] < 0){
|
|
|
+ pageKeepRange[0] = 0;
|
|
|
+ }
|
|
|
+ if (pageKeepRange[1] > playingList.length){
|
|
|
+ pageKeepRange[1] = playingList.length;
|
|
|
+ }
|
|
|
+ //console.log("KEEP RANGE", pageKeepRange);
|
|
|
}
|
|
|
|
|
|
for (var i = renderRange[0]; i < renderRange[1]; i++){
|
|
@@ -2142,12 +2171,31 @@
|
|
|
//Item not exists
|
|
|
targetThumbnail = "img/eq.svg";
|
|
|
opacityShowing = "opacity: 0.6;"
|
|
|
+ }else if (pagingEnableForPlayingList){
|
|
|
+ if (i < pageKeepRange[0] || i > pageKeepRange[1]){
|
|
|
+ //Out of paging range. Do hidden display
|
|
|
+ targetThumbnail = "img/eq.svg";
|
|
|
+ opacityShowing = "opacity: 0.6;"
|
|
|
+ }else{
|
|
|
+ targetThumbnail = `../system/file_system/loadThumbnail?bytes=true&vpath=${encodeURIComponent(realVpath)}`;
|
|
|
+ }
|
|
|
}else{
|
|
|
+ //Non paging list. Always do all thumbnails.
|
|
|
targetThumbnail = `../system/file_system/loadThumbnail?bytes=true&vpath=${encodeURIComponent(realVpath)}`;
|
|
|
}
|
|
|
|
|
|
+ let targetPage = currentPlayingPage;
|
|
|
+ if (i < pageKeepRange[0]){
|
|
|
+ targetPage -= 1;
|
|
|
+ }
|
|
|
+ if (i > pageKeepRange[1]){
|
|
|
+ targetPage += 1;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
$("#currentPlayingMainList").append(`<div class="dropdownList file item" style="${opacityShowing}" filepath="${ao_module_utils.objectToAttr(playingList[i][0])}" listid="${i + 1}" rawname="${ao_module_utils.objectToAttr(playingList[i][1])}">
|
|
|
- <div class="ui header selectable" style="margin:0px !important;" onClick="playSongFromDropdownList(this);">
|
|
|
+ <div class="ui header selectable" style="margin:0px !important;" onClick="playSongFromDropdownList(this);" targetPage="${targetPage}">
|
|
|
<img class="ui small image" src="${targetThumbnail}" onError="replaceImageToDefault(this);" style="margin-right: 0.2em;"></img>
|
|
|
<div class="content whiteFont" style="padding-top:5px;line-height:1em;width : 80%;">
|
|
|
<span style="font-weight: lighter;">${displayname}</span>
|
|
@@ -2209,6 +2257,8 @@
|
|
|
|
|
|
if (playingList == []){
|
|
|
playingList = Array.from(displayList);
|
|
|
+ pagingEnableForPlayingList = pagingEnabled;
|
|
|
+ currentPlayingPage = currentPage;
|
|
|
}
|
|
|
|
|
|
renderDisplayList(displayList,renderRange[0], renderRange[1] );
|
|
@@ -2316,11 +2366,11 @@
|
|
|
return targetPageNo;
|
|
|
}
|
|
|
|
|
|
- function getPageStartAndEndByPageNumber(pageNumber){
|
|
|
+ function getPageStartAndEndByPageNumber(pageNumber, targetList){
|
|
|
let startPage = pageNumber * pagingCutoffCount;
|
|
|
let endPage = startPage + pagingCutoffCount;
|
|
|
- if (endPage > displayList.length){
|
|
|
- endPage = displayList.length;
|
|
|
+ if (endPage > targetList.length){
|
|
|
+ endPage = targetList.length;
|
|
|
}
|
|
|
|
|
|
return [startPage, endPage];
|
|
@@ -2329,7 +2379,7 @@
|
|
|
|
|
|
function toggleLeftMenu(){
|
|
|
if (leftMenuShown){
|
|
|
- $("#leftSideBar").animate({left: $("#leftSideBar").width() * -1}, 300,function(){
|
|
|
+ $("#leftSideBar").animate({left: $("#leftSideBar").width() * -1}, 120,function(){
|
|
|
$("#leftSideBar").hide();
|
|
|
});
|
|
|
$("#sideBarCover").fadeOut();
|
|
@@ -2345,7 +2395,7 @@
|
|
|
|
|
|
function hideLeftMenu(){
|
|
|
if (leftMenuShown){
|
|
|
- $("#leftSideBar").animate({left: $("#leftSideBar").width() * -1}, 300,function(){
|
|
|
+ $("#leftSideBar").animate({left: $("#leftSideBar").width() * -1}, 120,function(){
|
|
|
$("#leftSideBar").hide();
|
|
|
});
|
|
|
$("#sideBarCover").fadeOut();
|