first commit with existing project files

This commit is contained in:
Vincent Guillet
2025-07-12 11:17:34 +02:00
commit 96bdccfe9f
8 changed files with 412 additions and 0 deletions

View File

@@ -0,0 +1,102 @@
import { Track } from './Track.js';
import { Playlist } from './Playlist.js';
const audio = document.getElementById('audioPlayer');
const playBtn = document.getElementById('playBtn');
const pauseBtn = document.getElementById('pauseBtn');
const resetBtn = document.getElementById('resetBtn');
const currentTimeSpan = document.getElementById('currentTime');
const totalTimeSpan = document.getElementById('totalTime');
const fileInput = document.getElementById('fileInput');
const loadFileBtn = document.getElementById('loadFileBtn');
const volume = document.getElementById('volume-slider');
const mediaInfo = document.querySelector('.media-info');
let timer = null;
let fileName;
let audioSrc;
let playlistElement = document.getElementById('playlist');
let playlist = new Playlist();
/* Functions */
function toReadableTime(seconds) {
return new Date(seconds * 1000).toISOString().substring(14, 19);
}
function updateTime() {
currentTimeSpan.textContent = toReadableTime(audio.currentTime);
}
fileInput.addEventListener('change', (event) => {
const file = event.target.files[0];
if (file) {
audioSrc = URL.createObjectURL(file);
fileName = file.name.split('.mp3')[0];
}
});
/* Events */
loadFileBtn.addEventListener('click', () => {
const track = new Track(fileName, audioSrc);
playlistElement.appendChild(playlist.addTrack(track, playlistElement));
});
audio.addEventListener('loadedmetadata', () => {
totalTimeSpan.textContent = toReadableTime(audio.duration);
});
playBtn.addEventListener('click', () => {
audio.src = audioSrc;
audio.load();
mediaInfo.innerText = fileName;
updateTime();
audio.play();
if (!timer) {
timer = setInterval(updateTime, 500);
}
document.title = `Playing ${fileName}`;
});
pauseBtn.addEventListener('click', () => {
audio.pause();
});
if (audio.play()) {
resetBtn.addEventListener('click', () => {
audio.pause();
audio.currentTime = 0;
updateTime();
});
}
audio.addEventListener('ended', () => {
clearInterval(timer);
timer = null;
});
audio.addEventListener('pause', () => {
clearInterval(timer);
timer = null;
});
volume.addEventListener("input", function (e) {
audio.volume = e.currentTarget.value / 100;
});
volume.addEventListener("dblclick", function (e) {
audio.volume = 0.5;
e.currentTarget.value = 50;
});