Added clear and cancel queue buttons
This commit is contained in:
parent
336e1c43c8
commit
92be2a120e
@ -427,3 +427,6 @@ input[type="text"], input[type="password"], input[type="number"]{
|
|||||||
color: var(--primary-text);
|
color: var(--primary-text);
|
||||||
margin-bottom: 8px;
|
margin-bottom: 8px;
|
||||||
}
|
}
|
||||||
|
.right{
|
||||||
|
float: right;
|
||||||
|
}
|
||||||
|
@ -359,6 +359,10 @@ <h1>Settings</h1>
|
|||||||
</div>
|
</div>
|
||||||
<div id="download_tab">
|
<div id="download_tab">
|
||||||
<i id="hide_download_tab" class="material-icons download_bar_icon">chevron_right</i>
|
<i id="hide_download_tab" class="material-icons download_bar_icon">chevron_right</i>
|
||||||
|
<div class="inline-flex right">
|
||||||
|
<i id="clean_queue" class="material-icons download_bar_icon">clear_all</i>
|
||||||
|
<i id="cancel_queue" class="material-icons download_bar_icon">delete_sweep</i>
|
||||||
|
</div>
|
||||||
<div id="download_list" class=""></div>
|
<div id="download_list" class=""></div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -67,7 +67,6 @@ function clickElement(button){
|
|||||||
}
|
}
|
||||||
|
|
||||||
function sendAddToQueue(url, bitrate = null){
|
function sendAddToQueue(url, bitrate = null){
|
||||||
console.log(url)
|
|
||||||
socket.emit("addToQueue", {url: url, bitrate:bitrate})
|
socket.emit("addToQueue", {url: url, bitrate:bitrate})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,22 +1,27 @@
|
|||||||
var queueList = {}
|
var queueList = {}
|
||||||
var queue = []
|
var queue = []
|
||||||
|
var queueComplete = []
|
||||||
|
|
||||||
socket.on("init_downloadQueue", function(data){
|
socket.on("init_downloadQueue", function(data){
|
||||||
|
console.log(data)
|
||||||
|
if (data.queueComplete.length){
|
||||||
|
data.queueComplete.forEach(item=>{
|
||||||
|
addToQueue(data.queueList[item])
|
||||||
|
})
|
||||||
|
}
|
||||||
if (data.currentItem){
|
if (data.currentItem){
|
||||||
addToQueue(data['queueList'][data.currentItem])
|
addToQueue(data['queueList'][data.currentItem])
|
||||||
$('#bar_' + data.currentItem).removeClass('indeterminate').addClass('determinate')
|
|
||||||
$('#bar_' + data.currentItem).css('width', data['queueList'][data.currentItem].progress + '%')
|
|
||||||
if (queueList[data.currentItem].failed >= 1){
|
|
||||||
$("#download_"+data.currentItem+" .download_info_status").append(`<span class="secondary-text inline-flex"><span class="download_slim_separator">(</span><span class="queue_failed">${queueList[data.currentItem].failed}</span><i class="material-icons">error_outline</i><span class="download_slim_separator">)</span></span>`)
|
|
||||||
}
|
}
|
||||||
}
|
data.queue.forEach(item=>{
|
||||||
data['queue'].forEach(item=>{
|
addToQueue(data.queueList[item])
|
||||||
addToQueue(data['queueList'][item])
|
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
|
|
||||||
function addToQueue(queueItem){
|
function addToQueue(queueItem){
|
||||||
queueList[queueItem.uuid] = queueItem
|
queueList[queueItem.uuid] = queueItem
|
||||||
|
if ((queueItem.downloaded + queueItem.failed) == queueItem.size)
|
||||||
|
queueComplete.push(queueItem.uuid)
|
||||||
|
else
|
||||||
queue.push(queueItem.uuid)
|
queue.push(queueItem.uuid)
|
||||||
$("#download_list").append(
|
$("#download_list").append(
|
||||||
`<div class="download_object" id="download_${queueItem.uuid}" data-deezerid="${queueItem.id}">
|
`<div class="download_object" id="download_${queueItem.uuid}" data-deezerid="${queueItem.id}">
|
||||||
@ -35,6 +40,23 @@ function addToQueue(queueItem){
|
|||||||
<i onclick="downloadAction(event)" class="material-icons queue_icon" data-uuid="${queueItem.uuid}">remove</i>
|
<i onclick="downloadAction(event)" class="material-icons queue_icon" data-uuid="${queueItem.uuid}">remove</i>
|
||||||
</div>
|
</div>
|
||||||
</div>`)
|
</div>`)
|
||||||
|
if (queueItem.progress>0){
|
||||||
|
$('#bar_' + queueItem.uuid).removeClass('indeterminate').addClass('determinate')
|
||||||
|
}
|
||||||
|
$('#bar_' +queueItem.uuid).css('width', queueItem.progress + '%')
|
||||||
|
if (queueItem.failed >= 1){
|
||||||
|
$("#download_"+queueItem.uuid+" .download_info_status").append(`<span class="secondary-text inline-flex"><span class="download_slim_separator">(</span><span class="queue_failed">${queueItem.failed}</span><i class="material-icons">error_outline</i><span class="download_slim_separator">)</span></span>`)
|
||||||
|
}
|
||||||
|
if ((queueItem.downloaded + queueItem.failed) == queueItem.size){
|
||||||
|
let result_icon = $('#download_'+queueItem.uuid).find('.queue_icon')
|
||||||
|
if (queueItem.failed == 0){
|
||||||
|
result_icon.text("done")
|
||||||
|
}else if (queueItem.failed == queueItem.size){
|
||||||
|
result_icon.text("error")
|
||||||
|
}else{
|
||||||
|
result_icon.text("warning")
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
socket.on("addedToQueue", function(queueItem){
|
socket.on("addedToQueue", function(queueItem){
|
||||||
@ -80,7 +102,7 @@ socket.on("finishDownload", function(uuid){
|
|||||||
let index = queue.indexOf(uuid)
|
let index = queue.indexOf(uuid)
|
||||||
if (index > -1){
|
if (index > -1){
|
||||||
queue.splice(index, 1)
|
queue.splice(index, 1)
|
||||||
delete queueList[uuid]
|
queueComplete.push(uuid)
|
||||||
}
|
}
|
||||||
if (queue.length <= 0){
|
if (queue.length <= 0){
|
||||||
toast('All downloads completed!', 'done_all')
|
toast('All downloads completed!', 'done_all')
|
||||||
@ -91,9 +113,25 @@ socket.on("finishDownload", function(uuid){
|
|||||||
socket.on("removedAllDownloads", function(){
|
socket.on("removedAllDownloads", function(){
|
||||||
queue = []
|
queue = []
|
||||||
queueList = {}
|
queueList = {}
|
||||||
|
queueComplete = []
|
||||||
$("#download_list").html("")
|
$("#download_list").html("")
|
||||||
})
|
})
|
||||||
|
|
||||||
|
socket.on("removedFinishedDownloads", function(){
|
||||||
|
queueComplete.forEach((item) => {
|
||||||
|
$("#download_"+item).remove()
|
||||||
|
})
|
||||||
|
queueComplete = []
|
||||||
|
})
|
||||||
|
|
||||||
|
$("#clean_queue").on("click", function(){
|
||||||
|
socket.emit("removeFinishedDownloads")
|
||||||
|
})
|
||||||
|
|
||||||
|
$("#cancel_queue").on("click", function(){
|
||||||
|
socket.emit("cancelAllDownloads")
|
||||||
|
})
|
||||||
|
|
||||||
socket.on("updateQueue", function(update){
|
socket.on("updateQueue", function(update){
|
||||||
if (update.uuid && queue.indexOf(update.uuid) > -1){
|
if (update.uuid && queue.indexOf(update.uuid) > -1){
|
||||||
if (update.downloaded){
|
if (update.downloaded){
|
||||||
|
@ -9,8 +9,8 @@ toastsWithId = {}
|
|||||||
|
|
||||||
function toast(msg, icon=null, dismiss=true, id=null){
|
function toast(msg, icon=null, dismiss=true, id=null){
|
||||||
if (toastsWithId[id]){
|
if (toastsWithId[id]){
|
||||||
toastObj = toastsWithId[id]
|
let toastObj = toastsWithId[id]
|
||||||
toastDOM = $(`div.toastify[toast_id=${id}]`)
|
let toastDOM = $(`div.toastify[toast_id=${id}]`)
|
||||||
if (msg){
|
if (msg){
|
||||||
toastDOM.find(".toast-message").html(msg)
|
toastDOM.find(".toast-message").html(msg)
|
||||||
}
|
}
|
||||||
@ -21,6 +21,7 @@ function toast(msg, icon=null, dismiss=true, id=null){
|
|||||||
icon = `<i class="material-icons">${icon}</i>`
|
icon = `<i class="material-icons">${icon}</i>`
|
||||||
toastDOM.find(".toast-icon").html(icon)
|
toastDOM.find(".toast-icon").html(icon)
|
||||||
}
|
}
|
||||||
|
console.log(dismiss)
|
||||||
if (dismiss !== null && dismiss){
|
if (dismiss !== null && dismiss){
|
||||||
setTimeout(function(){
|
setTimeout(function(){
|
||||||
toastObj.hideToast()
|
toastObj.hideToast()
|
||||||
@ -34,7 +35,7 @@ function toast(msg, icon=null, dismiss=true, id=null){
|
|||||||
icon = `<div class="circle-loader"></div>`
|
icon = `<div class="circle-loader"></div>`
|
||||||
else
|
else
|
||||||
icon = `<i class="material-icons">${icon}</i>`
|
icon = `<i class="material-icons">${icon}</i>`
|
||||||
toastObj = Toastify({
|
let toastObj = Toastify({
|
||||||
text: `<span class="toast-icon">${icon}</span><span class="toast-message">${msg}</toast>`,
|
text: `<span class="toast-icon">${icon}</span><span class="toast-message">${msg}</toast>`,
|
||||||
duration: dismiss ? 3000 : 0,
|
duration: dismiss ? 3000 : 0,
|
||||||
gravity: 'bottom',
|
gravity: 'bottom',
|
||||||
|
@ -1,11 +1,12 @@
|
|||||||
function isValidURL(text){
|
function isValidURL(text){
|
||||||
if (text.toLowerCase().startsWith("http"))
|
if (text.toLowerCase().startsWith("http")){
|
||||||
if (text.toLowerCase().indexOf("deezer.com") >= 0 || text.toLowerCase().indexOf("open.spotify.com") >= 0)
|
if (text.toLowerCase().indexOf("deezer.com") >= 0 || text.toLowerCase().indexOf("open.spotify.com") >= 0)
|
||||||
return true
|
return true
|
||||||
else if (text.toLowerCase().startsWith("spotify:"))
|
}else if (text.toLowerCase().startsWith("spotify:"))
|
||||||
return true
|
return true
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
|
|
||||||
function convertDuration(duration) {
|
function convertDuration(duration) {
|
||||||
//convert from seconds only to mm:ss format
|
//convert from seconds only to mm:ss format
|
||||||
var mm, ss
|
var mm, ss
|
||||||
|
Loading…
Reference in New Issue
Block a user