deemix-webui/public/js/modules/track-preview.js

105 lines
2.8 KiB
JavaScript
Raw Normal View History

2020-04-25 11:01:30 +02:00
/* ===== Globals ====== */
window.preview_max_volume = 1
/* ===== Locals ===== */
let preview_track = document.getElementById('preview-track')
let preview_stopped = true
// init stuff
2020-04-28 20:42:22 +02:00
function init() {
preview_track.volume = 1
/*preview_max_volume = parseFloat(localStorage.getItem("previewVolume"))
2020-04-25 11:01:30 +02:00
if (preview_max_volume === null){
preview_max_volume = 0.8
localStorage.setItem("previewVolume", preview_max_volume)
}*/
// start playing when track loaded
preview_track.addEventListener('canplay', function () {
preview_track.play()
preview_stopped = false
$(preview_track).animate({ volume: preview_max_volume }, 500)
})
2020-04-25 11:01:30 +02:00
// auto fadeout when at the end of the song
preview_track.addEventListener('timeupdate', function () {
if (preview_track.currentTime > preview_track.duration - 1) {
$(preview_track).animate({ volume: 0 }, 800)
preview_stopped = true
$('a[playing] > .preview_controls').css({ opacity: 0 })
$('*').removeAttr('playing')
$('.preview_controls').text('play_arrow')
$('.preview_playlist_controls').text('play_arrow')
}
})
2020-04-25 11:01:30 +02:00
}
// on modal closing
2020-04-28 20:42:22 +02:00
function stopStackedTabsPreview() {
if (
$('.preview_playlist_controls').filter(function () {
return $(this).attr('playing')
}).length > 0
) {
$(preview_track).animate({ volume: 0 }, 800)
preview_stopped = true
$('.preview_playlist_controls').removeAttr('playing')
$('.preview_playlist_controls').text('play_arrow')
}
2020-04-25 11:01:30 +02:00
}
// on hover event
2020-04-28 20:42:22 +02:00
function previewMouseEnter(e) {
$(e.currentTarget).css({ opacity: 1 })
2020-04-25 11:01:30 +02:00
}
2020-04-28 20:42:22 +02:00
function previewMouseLeave(e) {
let obj = e.currentTarget
if (($(obj).parent().attr('playing') && preview_stopped) || !$(obj).parent().attr('playing')) {
$(obj).css({ opacity: 0 }, 200)
}
2020-04-25 11:01:30 +02:00
}
// on click event
2020-04-28 20:42:22 +02:00
function playPausePreview(e) {
e.preventDefault()
let obj = e.currentTarget
var icon = obj.tagName == 'I' ? $(obj) : $(obj).children('i')
if ($(obj).attr('playing')) {
if (preview_track.paused) {
preview_track.play()
preview_stopped = false
icon.text('pause')
$(preview_track).animate({ volume: preview_max_volume }, 500)
} else {
preview_stopped = true
icon.text('play_arrow')
$(preview_track).animate({ volume: 0 }, 250, 'swing', () => {
preview_track.pause()
})
}
} else {
$('*').removeAttr('playing')
$(obj).attr('playing', true)
$('.preview_controls').text('play_arrow')
$('.preview_playlist_controls').text('play_arrow')
$('.preview_controls').css({ opacity: 0 })
icon.text('pause')
icon.css({ opacity: 1 })
preview_stopped = false
$(preview_track).animate({ volume: 0 }, 250, 'swing', () => {
preview_track.pause()
$('#preview-track_source').prop('src', $(obj).data('preview'))
preview_track.load()
})
}
2020-04-25 11:01:30 +02:00
}
2020-04-28 20:42:22 +02:00
export default {
init,
stopStackedTabsPreview,
previewMouseEnter,
previewMouseLeave,
playPausePreview
}