1+ import document from "document" ;
2+
3+ let titleScreen = document . getElementById ( "title-screen" ) ;
4+ let reactScreen = document . getElementById ( "react-screen" ) ;
5+ let reactTouch = document . getElementById ( "react-touch" ) ;
6+ let reactText = document . getElementById ( "react-text" ) ;
7+ let reactSubText = reactText . getElementById ( "copy" ) ;
8+ let resultsScreen = document . getElementById ( "results-screen" ) ;
9+ let resultsTouch = document . getElementById ( "results-touch" ) ;
10+ let resultsText = document . getElementById ( "results-text" ) ;
11+
12+ let isGreen = false ; // has the screen turned green and ready for user input
13+
14+ export function startReact ( ) {
15+ // Change screens
16+ isGreen = false ;
17+ reactTouch . style . fill = "fb-black" ;
18+ reactText . style . fill = "fb-peach" ;
19+ reactText . text = "Wait..." ;
20+ reactSubText . text = "~( ˘ v ˘ ~)" ;
21+
22+ titleScreen . style . display = "none" ;
23+ resultsScreen . style . display = "none" ;
24+ reactScreen . style . display = "inline" ;
25+
26+ // Random float generated between 1-3 s
27+ let min = 1 , max = 3 ;
28+ let waitTime = Math . floor ( ( Math . random ( ) * ( max - min ) + min ) * 100 ) / 100 ;
29+
30+ // Wait for the wait time (s)
31+ setTimeout ( ( ) => {
32+ calcReactTime ( ) ;
33+ } , waitTime * 1000 ) ;
34+ } ;
35+
36+ function calcReactTime ( ) {
37+ // Change the screen to green and wait for a user tap
38+ let startTime = Date . now ( ) ;
39+ reactTouch . style . fill = "fb-green" ;
40+ reactText . style . fill = "fb-white" ;
41+ reactText . text = "Tap!" ;
42+ reactSubText . text = "(; > д <)" ;
43+ isGreen = true ;
44+
45+ // User has tapped! Display the reaction time if screen has turned green
46+ reactTouch . onclick = function ( e ) {
47+ if ( isGreen ) {
48+ let endTime = Date . now ( ) ;
49+ let elapsed = endTime - startTime ;
50+
51+ // Change screen
52+ resultsText . text = "Your reaction time was: " + ( elapsed / 1000 ) + " s" ;
53+
54+ titleScreen . style . display = "none" ;
55+ reactScreen . style . display = "none" ;
56+ resultsScreen . style . display = "inline" ;
57+
58+ resultsTouch . onclick = function ( ) {
59+ startReact ( ) ;
60+ } ;
61+ }
62+ }
63+ }
0 commit comments