X Tutup
Skip to content

Commit b5222f1

Browse files
committed
finished Day 11
1 parent 113c532 commit b5222f1

File tree

1 file changed

+58
-0
lines changed

1 file changed

+58
-0
lines changed
Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
/* Get our elements */
2+
const player = document.querySelector('.player');
3+
const video = player.querySelector('.viewer');
4+
const progress = player.querySelector('.progress');
5+
const progressBar = player.querySelector('.progress__filled');
6+
const toggle = player.querySelector('.toggle');
7+
const skipButtons = player.querySelectorAll('[data-skip]');
8+
const ranges = player.querySelectorAll('.player__slider');
9+
10+
/* Build out functions */
11+
function togglePlay() {
12+
if (video.paused) {
13+
video.play();
14+
}
15+
else {
16+
video.pause();
17+
}
18+
}
19+
20+
function updateButton() {
21+
const icon = this.paused ? '►' : '❚ ❚';
22+
toggle.textContent = icon;
23+
}
24+
25+
function skip() {
26+
video.currentTime += parseFloat(this.dataset.skip);
27+
}
28+
29+
function handleRangeUpdate() {
30+
video[this.name] = this.value;
31+
}
32+
33+
function handleProgress() {
34+
const percent = (video.currentTime / video.duration) * 100;
35+
progressBar.style.flexBasis = `${percent}%`;
36+
}
37+
38+
function scrub(e) {
39+
const scrubTime = (e.offsetX / progress.offsetWidth) * video.duration;
40+
video.currentTime = scrubTime;
41+
}
42+
43+
/* Hook up event listeners */
44+
video.addEventListener('click', togglePlay);
45+
video.addEventListener('play', updateButton);
46+
video.addEventListener('pause', updateButton);
47+
video.addEventListener('timeupdate', handleProgress);
48+
49+
skipButtons.forEach(button => button.addEventListener('click', skip));
50+
toggle.addEventListener('click', togglePlay);
51+
ranges.forEach(range => range.addEventListener('change', handleRangeUpdate));
52+
ranges.forEach(range => range.addEventListener('mousemove', handleRangeUpdate));
53+
54+
let mousedown = false;
55+
progress.addEventListener('click', scrub);
56+
progress.addEventListener('mousemove', (e) => mousedown && scrub(e));
57+
progress.addEventListener('mousedown', () => mousedown = true);
58+
progress.addEventListener('mouseup', () => mousedown = false);

0 commit comments

Comments
 (0)
X Tutup