1+ const currentTime = document . querySelector ( "h1" ) ,
2+ content = document . querySelector ( ".content" ) ,
3+ selectMenu = document . querySelectorAll ( "select" ) ,
4+ setAlarmBtn = document . querySelector ( "button" ) ;
5+
6+ let alarmTime , isAlarmSet ;
7+ let ringtone = new Audio ( "./files/ringtone.mp3" ) ;
8+
9+ for ( let i = 12 ; i > 0 ; i -- ) {
10+ i = i < 10 ? `0${ i } ` : i ; //append zero in front if less than 10
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+ //keeps on setting after every second
28+ setInterval ( ( ) => {
29+ //displaying current time
30+ let date = new Date ( ) ,
31+ h = date . getHours ( ) ,
32+ m = date . getMinutes ( ) ,
33+ s = date . getSeconds ( ) ,
34+ ampm = "AM" ;
35+ if ( h >= 12 ) {
36+ h = h - 12 ;
37+ ampm = "PM" ;
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+ currentTime . innerText = `${ h } :${ m } :${ s } ${ ampm } ` ;
44+ //alarm time == current time fires alarm
45+ if ( alarmTime === `${ h } :${ m } ${ ampm } ` ) {
46+ ringtone . play ( ) ;
47+ ringtone . loop = true ;
48+ }
49+ } ) ;
50+
51+ function setAlarm ( ) {
52+ if ( isAlarmSet ) {
53+ //if alarm is setted already,after completion or removal of alarm
54+ alarmTime = "" ;
55+ ringtone . pause ( ) ;
56+ content . classList . remove ( "disable" ) ;
57+ setAlarmBtn . innerText = "Set Alarm" ;
58+ return isAlarmSet = false ;
59+ }
60+
61+ let time = `${ selectMenu [ 0 ] . value } :${ selectMenu [ 1 ] . value } ${ selectMenu [ 2 ] . value } ` ;
62+ if ( time . includes ( "Hour" ) || time . includes ( "Minute" ) || time . includes ( "AM/PM" ) ) {
63+ return alert ( "Please enter a valid time to set Alarm!" ) ;
64+ }
65+ alarmTime = time ;
66+ isAlarmSet = true ;
67+ content . classList . add ( "disable" ) ;
68+ setAlarmBtn . innerText = "Clear Alarm" ;
69+ }
70+
71+ setAlarmBtn . addEventListener ( "click" , setAlarm ) ;
0 commit comments