# Conflicts:
#	public/js/app/app.js
#	public/js/app/downloadList.js
#	public/js/app/search.js
This commit is contained in:
Roberto Tonino
2020-04-16 20:00:35 +02:00
7 changed files with 165 additions and 63 deletions

View File

@@ -7,7 +7,8 @@ let main_selected = ''
// toasts stuff
let toastsWithId = {}
// settings
let lastSettings = {}
lastSettings = {}
lastCredentials = {}
function toast(msg, icon = null, dismiss = true, id = null) {
if (toastsWithId[id]) {
@@ -21,9 +22,8 @@ function toast(msg, icon = null, dismiss = true, id = null) {
else icon = `<i class="material-icons">${icon}</i>`
toastDOM.find('.toast-icon').html(icon)
}
console.log({ dismiss })
if (dismiss !== null && dismiss) {
setTimeout(function () {
if (dismiss !== null && dismiss){
setTimeout(function(){
toastObj.hideToast()
delete toastsWithId[id]
}, 3000)
@@ -163,30 +163,35 @@ socket.on('logged_out', function () {
// settings stuff
var settingsTab = new Vue({
el: '#settings_tab',
data: {
settings: {}
}
el: '#settings_tab',
data: {
settings: {tags: {}},
spotifyFeatures: {}
}
})
socket.on('init_settings', function (settings) {
loadSettings(settings)
toast('Settings loaded!', 'settings')
socket.on("init_settings", function(settings, credentials){
console.log(settings,credentials)
loadSettings(settings, credentials)
toast("Settings loaded!", 'settings')
})
socket.on('updateSettings', function (settings) {
loadSettings(settings)
toast('Settings updated!', 'settings')
socket.on("updateSettings", function(settings, credentials){
loadSettings(settings, credentials)
toast("Settings updated!", 'settings')
})
function loadSettings(settings) {
lastSettings = { ...settings }
function loadSettings(settings, spotifyCredentials){
lastSettings = {...settings}
lastCredentials = {...spotifyCredentials}
settingsTab.settings = settings
settingsTab.spotifyFeatures = spotifyCredentials
}
function saveSettings() {
lastSettings = { ...settingsTab.settings }
socket.emit('saveSettings', lastSettings)
function saveSettings(){
lastSettings = {...settingsTab.settings}
lastCredentials = {...settingsTab.spotifyFeatures}
socket.emit("saveSettings", lastSettings, lastCredentials)
}
// tabs stuff
@@ -217,3 +222,44 @@ function changeTab(evt, section, tabName) {
scrolledSearch(window[search_selected.split('_')[0] + 'Search'])
}
}
// quality modal stuff
var modalQuality = document.getElementById('modal_quality');
modalQuality.open = false
window.onclick = function(event) {
if (event.target == modalQuality && modalQuality.open) {
$(modalQuality).addClass('animated fadeOut')
}
}
$(modalQuality).on('webkitAnimationEnd', function () {
if (modalQuality.open){
$(this).removeClass('animated fadeOut')
$(this).css('display', 'none')
modalQuality.open = false
}else{
$(this).removeClass('animated fadeIn')
$(this).css('display', 'block')
modalQuality.open = true
}
})
function openQualityModal(link){
$(modalQuality).data("url", link)
$(modalQuality).css('display', 'block')
$(modalQuality).addClass('animated fadeIn')
}
function modalQualityButton(bitrate){
var url=$(modalQuality).data("url")
if (url.indexOf(";") != -1){
urls = url.split(";")
urls.forEach(url=>{
sendAddToQueue(url, bitrate)
})
}else{
sendAddToQueue(url, bitrate)
}
$(modalQuality).addClass('animated fadeOut')
}

View File

@@ -9,15 +9,15 @@ socket.on('init_downloadQueue', function (data) {
addToQueue(data.queueList[item])
})
}
if (data.currentItem) {
addToQueue(data['queueList'][data.currentItem])
if (data.currentItem){
addToQueue(data['queueList'][data.currentItem], true)
}
data.queue.forEach(item => {
addToQueue(data.queueList[item])
})
})
function addToQueue(queueItem) {
function addToQueue(queueItem, current=false){
queueList[queueItem.uuid] = queueItem
if (queueItem.downloaded + queueItem.failed == queueItem.size) queueComplete.push(queueItem.uuid)
else queue.push(queueItem.uuid)
@@ -39,12 +39,9 @@ function addToQueue(queueItem) {
<div class="progress"><div id="bar_${queueItem.uuid}" class="indeterminate"></div></div>
<i onclick="downloadAction(event)" class="material-icons queue_icon" data-uuid="${queueItem.uuid}">remove</i>
</div>
</div>`
)
if (queueItem.progress > 0) {
$('#bar_' + queueItem.uuid)
.removeClass('indeterminate')
.addClass('determinate')
</div>`)
if (queueItem.progress>0 || current){
$('#bar_' + queueItem.uuid).removeClass('indeterminate').addClass('determinate')
}
$('#bar_' + queueItem.uuid).css('width', queueItem.progress + '%')
if (queueItem.failed >= 1) {

View File

@@ -82,9 +82,8 @@ let MainSearch = new Vue({
changeSearchTab(section) {
if (section != 'TOP_RESULT') clickElement('search_' + section.toLowerCase() + '_tab')
},
addToQueue(url) {
sendAddToQueue(url)
}
addToQueue: function(e){sendAddToQueue(e.currentTarget.dataset.link)},
openQualityModal: function(e){e.preventDefault(); openQualityModal(e.currentTarget.dataset.link)}
}
})
@@ -101,9 +100,8 @@ var trackSearch = new Vue({
}
},
methods: {
addToQueue: function (url) {
sendAddToQueue(url)
}
addToQueue: function(e){sendAddToQueue(e.currentTarget.dataset.link)},
openQualityModal: function(e){e.preventDefault(); openQualityModal(e.currentTarget.dataset.link)}
}
})
@@ -120,9 +118,8 @@ var albumSearch = new Vue({
}
},
methods: {
addToQueue: function (url) {
sendAddToQueue(url)
}
addToQueue: function(e){sendAddToQueue(e.currentTarget.dataset.link)},
openQualityModal: function(e){e.preventDefault(); openQualityModal(e.currentTarget.dataset.link)}
}
})
@@ -139,9 +136,8 @@ var artistSearch = new Vue({
}
},
methods: {
addToQueue: function (url) {
sendAddToQueue(url)
}
addToQueue: function(e){sendAddToQueue(e.currentTarget.dataset.link)},
openQualityModal: function(e){e.preventDefault(); openQualityModal(e.currentTarget.dataset.link)}
}
})
@@ -158,23 +154,26 @@ var playlistSearch = new Vue({
}
},
methods: {
addToQueue: function (url) {
sendAddToQueue(url)
}
addToQueue: function(e){sendAddToQueue(e.currentTarget.dataset.link)},
openQualityModal: function(e){e.preventDefault(); openQualityModal(e.currentTarget.dataset.link)}
}
})
let term = null
// Search section
$('#searchbar').keyup(function (e) {
if (e.keyCode == 13) {
term = this.value
console.log(term)
if (isValidURL(term)) socket.emit('addToQueue', { url: term })
else {
document.getElementById('search_tab_content').style.display = 'none'
socket.emit('mainSearch', { term: term })
$("#searchbar").keyup(function(e){
if(e.keyCode == 13){
term = this.value
if (isValidURL(term)){
if (e.ctrlKey){
openQualityModal(term);
}else{
sendAddToQueue(term);
}
}else{
document.getElementById("search_tab_content").style.display = "none";
socket.emit("mainSearch", {term: term});
}
}
})