1
0
mirror of https://github.com/SuperBFG7/ympd synced 2025-07-21 10:52:50 +00:00

Fix: song voting

Feat: enable song voting in song details modal
This commit is contained in:
jcorporation 2018-11-11 23:38:46 +00:00
parent 45f8059d60
commit 7257aa66ce

View File

@ -445,12 +445,16 @@ function appInit() {
}, false); }, false);
document.getElementById('modalSongDetails').getElementsByTagName('tbody')[0].addEventListener('click', function(event) { document.getElementById('modalSongDetails').getElementsByTagName('tbody')[0].addEventListener('click', function(event) {
if (event.target.nodeName == 'A') { if (event.target.nodeName == 'A') {
if (event.target.parentNode.getAttribute('data-tag') != undefined) { if (event.target.parentNode.getAttribute('data-tag') != undefined) {
modalSongDetails.hide(); modalSongDetails.hide();
event.preventDefault(); event.preventDefault();
gotoBrowse(event.target); gotoBrowse(event.target);
} }
}
else if (event.target.nodeName == 'BUTTON') {
if (event.target.getAttribute('data-href'))
parseCmd(event, event.target.getAttribute('data-href'));
} }
}, false); }, false);
@ -711,6 +715,21 @@ function appInit() {
}); });
} }
function parseCmd(event, href) {
event.preventDefault();
event.stopPropagation();
var cmd = JSON.parse(href);
if (typeof window[cmd.cmd] === 'function') {
switch(cmd.cmd) {
case 'sendAPI':
sendAPI(... cmd.options);
break;
default:
window[cmd.cmd](... cmd.options);
}
}
}
function dragAndDropTable(table) { function dragAndDropTable(table) {
var tableBody=document.getElementById(table).getElementsByTagName('tbody')[0]; var tableBody=document.getElementById(table).getElementsByTagName('tbody')[0];
tableBody.addEventListener('dragstart', function(event) { tableBody.addEventListener('dragstart', function(event) {
@ -1992,19 +2011,20 @@ function parseSongDetails(obj) {
songDetails += '<tr><th>Filename</th><td>' + obj.data.uri + '</td></tr>'; songDetails += '<tr><th>Filename</th><td>' + obj.data.uri + '</td></tr>';
if (settings.featStickers == true) { if (settings.featStickers == true) {
var like = 'not voted';
if (obj.data.like == 0)
like = '<span class="material-icons">thumb_down_alt</span>';
else if (obj.data.like == 2)
like = '<span class="material-icons">thumb_up_alt</span>';
songDetails += '<tr><th colspan="2">Statistics</th></tr>' + songDetails += '<tr><th colspan="2">Statistics</th></tr>' +
'<tr><th>Play count</th><td>' + obj.data.playCount + '</td></tr>' + '<tr><th>Play count</th><td>' + obj.data.playCount + '</td></tr>' +
'<tr><th>Skip count</th><td>' + obj.data.skipCount + '</td></tr>' + '<tr><th>Skip count</th><td>' + obj.data.skipCount + '</td></tr>' +
'<tr><th>Last played</th><td>' + (obj.data.lastPlayed == 0 ? 'never' : new Date(obj.data.lastPlayed * 1000).toUTCString()) + '</td></tr>' + '<tr><th>Last played</th><td>' + (obj.data.lastPlayed == 0 ? 'never' : new Date(obj.data.lastPlayed * 1000).toUTCString()) + '</td></tr>' +
'<tr><th>Like</th><td>' + like + '</td></tr>'; '<tr><th>Like</th><td>' +
'<div class="btn-group btn-group-sm">' +
'<button title="Dislike song" id="btnVoteDown2" data-href=\'{"cmd": "voteSong", "options": [0]}\' class="btn btn-sm btn-light material-icons">thumb_down</button>' +
'<button title="Like song" id="btnVoteUp2" data-href=\'{"cmd": "voteSong", "options": [2]}\' class="btn btn-sm btn-light material-icons">thumb_up</button>' +
'</div>' +
'</td></tr>';
} }
modal.getElementsByTagName('tbody')[0].innerHTML = songDetails; modal.getElementsByTagName('tbody')[0].innerHTML = songDetails;
setVoteSongBtns(obj.data.like, obj.data.uri);
} }
function execSyscmd(cmd) { function execSyscmd(cmd) {
@ -2058,7 +2078,7 @@ function updateSmartPlaylists() {
} }
function voteSong(vote) { function voteSong(vote) {
var uri = domCache.currentTrack.getAttribute('data-uri'); var uri = domCache.currentTitle.getAttribute('data-uri');
if (uri == '') if (uri == '')
return; return;
@ -2071,23 +2091,47 @@ function voteSong(vote) {
} }
function setVoteSongBtns(vote, uri) { function setVoteSongBtns(vote, uri) {
domCache.btnVoteUp2 = document.getElementById('btnVoteUp2');
domCache.btnVoteDown2 = document.getElementById('btnVoteDown2');
if (uri == '' || uri.indexOf('http://') == 0 || uri.indexOf('https://') == 0) { if (uri == '' || uri.indexOf('http://') == 0 || uri.indexOf('https://') == 0) {
domCache.btnVoteUp.setAttribute('disabled', 'disabled'); domCache.btnVoteUp.setAttribute('disabled', 'disabled');
domCache.btnVoteDown.setAttribute('disabled', 'disabled'); domCache.btnVoteDown.setAttribute('disabled', 'disabled');
if (domCache.btnVoteUp2) {
domCache.btnVoteUp2.setAttribute('disabled', 'disabled');
domCache.btnVoteDown2.setAttribute('disabled', 'disabled');
}
} else { } else {
domCache.btnVoteUp.removeAttribute('disabled'); domCache.btnVoteUp.removeAttribute('disabled');
domCache.btnVoteDown.removeAttribute('disabled'); domCache.btnVoteDown.removeAttribute('disabled');
if (domCache.btnVoteUp2) {
domCache.btnVoteUp2.removeAttribute('disabled');
domCache.btnVoteDown2.removeAttribute('disabled');
}
} }
if (vote == 0) { if (vote == 0) {
domCache.btnVoteUp.classList.remove('active-fg-green'); domCache.btnVoteUp.classList.remove('active-fg-green');
domCache.btnVoteDown.classList.add('active-fg-red'); domCache.btnVoteDown.classList.add('active-fg-red');
if (domCache.btnVoteUp2) {
domCache.btnVoteUp2.classList.remove('active-fg-green');
domCache.btnVoteDown2.classList.add('active-fg-red');
}
} else if (vote == 1) { } else if (vote == 1) {
domCache.btnVoteUp.classList.remove('active-fg-green'); domCache.btnVoteUp.classList.remove('active-fg-green');
domCache.btnVoteDown.classList.remove('active-fg-red'); domCache.btnVoteDown.classList.remove('active-fg-red');
if (domCache.btnVoteUp2) {
domCache.btnVoteUp2.classList.remove('active-fg-green');
domCache.btnVoteDown2.classList.remove('active-fg-red');
}
} else if (vote == 2) { } else if (vote == 2) {
domCache.btnVoteUp.classList.add('active-fg-green'); domCache.btnVoteUp.classList.add('active-fg-green');
domCache.btnVoteDown.classList.remove('active-fg-red'); domCache.btnVoteDown.classList.remove('active-fg-red');
if (domCache.btnVoteUp2) {
domCache.btnVoteUp2.classList.add('active-fg-green');
domCache.btnVoteDown2.classList.remove('active-fg-red');
}
} }
} }