1+ const currentTime = document . querySelector ( "h1" ) ;
2+ const selectMenu = document . querySelectorAll ( "select" ) ;
3+ const setAlarmBtn = document . querySelector ( "button" ) ;
4+ const content = document . querySelector ( ".content" ) ;
5+
6+ let alarmTime , isAlarmSet = false ,
7+ ringtone = new Audio ( "./assets/digital_alarm.mp3" ) ;
8+
9+ for ( let i = 12 ; i > 0 ; i -- ) {
10+ i = i < 10 ? "0" + i : i ;
11+ let option = `<option value="${ i } ">${ i } </option>` ;
12+ selectMenu [ 0 ] . firstElementChild . insertAdjacentHTML ( "afterend" , option ) ;
13+ }
14+
15+ for ( let i = 59 ; i >= 0 ; i -- ) {
16+ i = i < 10 ? "0" + i : i ;
17+ let option = `<option value="${ i } ">${ i } </option>` ;
18+ selectMenu [ 1 ] . firstElementChild . insertAdjacentHTML ( "afterend" , option ) ;
19+ }
20+
21+ for ( let i = 2 ; i > 0 ; i -- ) {
22+ let ampm = i == 1 ? "AM" : "PM"
23+ let option = `<option value="${ ampm } ">${ ampm } </option>` ;
24+ selectMenu [ 2 ] . firstElementChild . insertAdjacentHTML ( "afterend" , option ) ;
25+ }
26+
27+ setInterval ( ( ) => {
28+ let date = new Date ( ) ,
29+ h = date . getHours ( ) ,
30+ m = date . getMinutes ( ) ,
31+ s = date . getSeconds ( ) ,
32+ ampm = "AM" ;
33+
34+ if ( h >= 12 ) {
35+ h = h - 12 ;
36+ ampm = "PM" ;
37+ }
38+
39+ h = h == 0 ? h = 12 : h ;
40+ h = h < 10 ? "0" + h : h ;
41+ m = m < 10 ? "0" + m : m ;
42+ s = s < 10 ? "0" + s : s ;
43+
44+ currentTime . innerText = `${ h } :${ m } :${ s } ${ ampm } ` ;
45+ if ( alarmTime === `${ h } :${ m } ${ ampm } ` ) {
46+ ringtone . play ( ) ;
47+ ringtone . loop = true ;
48+ }
49+ } )
50+
51+ function setAlarm ( ) {
52+ if ( isAlarmSet ) {
53+ alarmTime = "" ;
54+ ringtone . pause ( ) ;
55+ content . classList . remove ( "disable" ) ;
56+ setAlarmBtn . innerText = "Set Alarm" ;
57+ return isAlarmSet = false ;
58+ }
59+ let time = `${ selectMenu [ 0 ] . value } :${ selectMenu [ 1 ] . value } ${ selectMenu [ 2 ] . value } ` ;
60+ if ( time . includes ( "Hour" ) || time . includes ( "Min" ) || time . includes ( "AM/PM" ) ) {
61+ return alert ( "Please, select a valid time to set alarm!" ) ;
62+ }
63+ isAlarmSet = true ;
64+ alarmTime = time ;
65+ content . classList . add ( "disable" ) ;
66+ setAlarmBtn . innerText = "Clear Alarm" ;
67+ }
68+
69+ setAlarmBtn . addEventListener ( "click" , setAlarm ) ;
0 commit comments