summaryrefslogtreecommitdiff
path: root/docs/assets/js/player.js
diff options
context:
space:
mode:
authorJules Laplace <julescarbon@gmail.com>2019-01-07 23:01:11 +0100
committerJules Laplace <julescarbon@gmail.com>2019-01-07 23:01:11 +0100
commit4777c058469847cbe02eb2a24634b21ee37384fc (patch)
tree3fd87861241a75f59819bc0771eb3e97bd88e2f6 /docs/assets/js/player.js
parentd317978119fc0936d9c342edf47e55be230cd215 (diff)
move docs
Diffstat (limited to 'docs/assets/js/player.js')
-rw-r--r--docs/assets/js/player.js79
1 files changed, 79 insertions, 0 deletions
diff --git a/docs/assets/js/player.js b/docs/assets/js/player.js
new file mode 100644
index 0000000..25fdfd6
--- /dev/null
+++ b/docs/assets/js/player.js
@@ -0,0 +1,79 @@
+const player = (function(){
+ let player = {}
+ let current_index = -1
+ let audio = document.createElement('audio')
+ let tracks = [
+ { file: "mp3/xena_vectra-cruise.mp3", title: "Cruise" },
+ { file: "mp3/xena_vectra-dreaming_city_2.mp3", title: "Dreaming City 2" },
+ { file: "mp3/xena_vectra-escape_from_nk.mp3", title: "Escape from Neukölln" },
+ ]
+ function init(){
+ bind()
+ build()
+ // play(0)
+ }
+ function bind(){
+ audio.addEventListener('play', handlePlay)
+ audio.addEventListener('pause', handlePause)
+ audio.addEventListener('ended', handleEnded)
+ document.querySelector('.player .icon').addEventListener('click', togglePlaying)
+ document.querySelector('.player .track').addEventListener('click', play)
+ document.querySelector('.player .playlistToggle').addEventListener('click', togglePlaylist)
+ }
+ function build() {
+ tracks.forEach((track, i) => {
+ let el = document.createElement('li')
+ el.innerHTML = track.title
+ el.addEventListener('click', () => {
+ if (is_mobile) {
+ hidePlaylist()
+ }
+ shards.rebuild()
+ play(i)
+ })
+ document.querySelector('.playlist ul').appendChild(el)
+ })
+ document.querySelector('.player .track').innerHTML = tracks[0].title
+ }
+ function play(n){
+ const active = document.querySelector('.playlist ul .active')
+ if (active) active.classList.remove('active')
+ document.querySelector('.playlist ul').children[n].classList.add('active')
+
+ current_index = (n + tracks.length) % tracks.length
+ audio.src = tracks[n].file
+ audio.play()
+ document.querySelector('.player .track').innerHTML = tracks[n].title
+ }
+ function handlePlay(){
+ document.querySelector('.player').classList.add('playing')
+ document.querySelector('.player').classList.remove('paused')
+ shards.step()
+ }
+ function handlePause(){
+ document.querySelector('.player').classList.remove('playing')
+ document.querySelector('.player').classList.add('paused')
+ }
+ function handleEnded(){
+ shards.rebuild()
+ play(current_index+1)
+ }
+ function togglePlaying() {
+ // sounds.play('click')
+ if (current_index == -1) {
+ play(0)
+ } else {
+ if (audio.paused) audio.play()
+ else audio.pause()
+ }
+ }
+ function togglePlaylist() {
+ site.navigateHash('')
+ document.querySelector('.playlist').classList.toggle('visible')
+ }
+ function hidePlaylist() {
+ document.querySelector('.playlist').classList.remove('visible')
+ }
+ init()
+ return { hidePlaylist }
+})() \ No newline at end of file