{"version":3,"sources":["data.js","store/UiReducer.js","Lessons.js","store/LessonReducer.js","Progress.js","store/UserReducer.js","store/Store.js","components/Buttons/ButtonPanel.js","components/Buttons/RoundButton.js","components/Buttons/Back.js","components/Buttons/Mute.js","components/Buttons/Play.js","components/Buttons/Quit.js","components/Buttons/PrintTest.js","components/Buttons/Progress.js","components/Buttons/Help.js","components/Buttons/LessonList.js","components/Buttons/Replay.js","components/Buttons/Next.js","components/Buttons/ButtonToolbar.js","components/IntroMovie.js","util.js","components/LessonIcon.js","components/ProgressIcon.js","components/LessonList/SectionView.js","components/LessonList/LessonView.js","components/LessonList/LessonColumn.js","components/Legend.js","components/LessonList/LessonPage.js","components/LessonList/LessonList.js","components/Movie.js","components/Equation.js","components/Test/TestResult.js","components/AudioPlayer.js","components/GameAudio.js","components/Test/Test.js","components/GuessingGame/GuessWithPicture.js","components/GuessingGame/GuessNoPicture.js","components/GuessingGame/GuessingGame.js","components/SlidingPicture/SlidingHeader.js","components/SlidingPicture/Slide.js","components/SlidingPicture/PickOne.js","components/SlidingPicture/MathProblem.js","components/SlidingPicture/SlidingPicture.js","components/Lesson.js","components/ProgressReport/ProgressSection.js","components/ProgressReport/ProgressLesson.js","components/ProgressReport/ProgressReport.js","components/TeacherDirections.js","components/Header.js","Api.js","components/ProgressMonitor.js","pages/LoginPage.js","timesalive.js","App.js","serviceWorker.js","index.js"],"names":["pageTypes","lessonTypes","movie","icon","song","test","guessinggame","slidingpicture","pageDefinitions","introMovie","buttons","back","enabled","mute","play","quit","printTest","visible","progressReport","help","lessonList","replay","next","login","lesson","teacherDirections","testInstructions","lessons","initialState","isPlaying","isMute","pageType","showHelp","actionTypes","setPlaying","playing","type","payload","setPageType","getUiReducer","state","UI","getPlaying","getMute","getPageType","getShowHelp","reducer","action","Lessons","sectionId","console","log","rv","find","sections","section","id","name","pageIndex","lessonNdx","findIndex","sectionNdx","pages","length","this","previousLessonPage","nextLessonPage","getLessonSection","currentLesson","lessonPage","SET_CURRENT_LESSON","SET_CURRENT_LESSON_PAGE","SET_CURRENT_LESSON_AND_PAGE","advanceLesson","lessonid","pageid","newLesson","dispatch","setCurrentLesson","setLessonPage","lessonId","getLessonReducer","LESSON","getCurrentLesson","getLessonPage","page","SET_CURRENT_USER","username","Progress","status","completedOn","testResults","correct","score","time","data","progress","getDefault","userDbId","undefined","teacherId","teacherDbId","setCurrentUser","getUserReducer","USER","getCurrentUser","getCurrentUserDbId","getProgress","getSectionStatus","getSection","getSectionResults","map","p","rootReducer","combineReducers","uiReducer","lessonReducer","userReducer","ButtonPanel","props","className","children","RoundButton","connect","onClick","disabled","toolTip","BackButton","React","Component","_MuteButton","setMute","MuteButton","_PlayButton","mysetPlaying","myisPlaying","PlayButton","quitDialogStyles","content","width","top","left","right","bottom","marginRight","transform","border","fontSize","fontWeight","_QuitButton","setState","showDialogModal","onYes","clearUser","gotoLoginPage","onNo","style","isOpen","QuitButton","_PrintTestButton","printWindow","lessonName","currentTitle","document","title","window","print","currentPageType","testQuestions","PrintTestButton","ProgressButton","_HelpButton","timeout","clearTimeout","setShowHelp","setTimeout","HelpButton","LessonListButton","ReplayButton","NextButton","ButtonToolbar","getPageDefinition","currentPage","layout","onBack","onProgressReport","onLessonList","onReplay","onNext","_IntroMovie","vidRef","createRef","playVideo","prevProps","pauseVideo","current","getElementById","display","pause","ref","height","muted","controls","onEnded","onComplete","onPlaying","onVideoPlaying","src","IntroMovie","combineClasses","classNames","filter","join","trim","randomNumber","min","max","Math","floor","random","LessonIcon","lessonType","ProgressIcon","getIcon","_SectionView","onClearSection","onClear","facts","onLessonSelected","SectionView","ownProps","LessonView","key","LessonColumn","Legend","modalDialogStyles","textSize","buttonText","columns","lessonFirst","lessonLast","_LessonPage","closePasswordDialog","showClearPasswordModal","onClearRequested","sectionToClear","showClearConfirmModal","clearSection","clearTestResults","onPasswordChange","event","password","target","value","onSubmit","pw","preventDefault","stopPropagation","visibility","focus","bind","onChangePage","d","stroke","fill","x","y","textAnchor","column","index","slice","renderArrowButton","onTeacherInstruction","autoFocus","autoComplete","onChange","LessonPage","LessonList","_Movie","prevState","videoFile","video","onLessonComplete","Movie","eqSection","Equation","answerValid","equation","parseInt","answer","xValid","ansX","yValid","ansY","showInvalid","input","snapshot","reportResult","valid","direction","text","maxLength","testComplete","TestResult","round","String","padStart","AudioPlayerMode","AudioPlayerRandom","mode","AudioPlayerQueue","_AudioPlayer","audioRef","currentAudio","pickRandom","onAudioComplete","autoPlay","AudioPlayer","AudioTypes","GameAudio","customStyles","_Test","results","showInstructionModal","showInstructions","startTime","isDone","elapsed","audio","audioSrc","testAudio","Date","getTime","nCorrect","forEach","element","now","setTestResults","timeTest","Fragment","alt","onDone","question","result","arr","contentLabel","instructions","line","onStartTest","Test","GuessWithPicture","onCheck","isValid","audioKey","imageFile","image","biggerFontStyle","GuessNoPicture","GuessingGame","onPageComplete","gameImage","gameAudio","SlidingHeader","showHint","hintText","onHint","Slide","onSelected","isCorrect","PickOne","onSlideSelected","slides","slide","MathProblem","validateAnswer","SlidingPicture","correctAnswer","slideInstructions","slideHint","slideAudio","hint","_Lesson","onLessonPageComplete","recordProgress","markSectionCompleted","autoAdvance","isLastPage","isFirstPage","markSectionViewed","Lesson","sectionid","_ProgressSection","formatScore","formatDate","completed","getMonth","getDate","getFullYear","formatTime","ProgressSection","ProgressLesson","_ProgressReport","currentUser","ProgressReport","TeacherDirections","start","href","rel","_Header","renderHeader","Header","Api","request","XMLHttpRequest","open","setRequestHeader","onload","readyState","resp","response","JSON","parse","send","stringify","studentName","user","url","userName","studentId","json","fetch","method","headers","body","then","catch","error","_ProgressMonitor","userId","saveProgress","ProgressMonitor","loginDialogStyles","_LoginPage","closeDialog","showLoginModal","errorMessage","showError","focusId","hideError","showNoSubscription","showSubscribeModal","hideNoSubscription","checkSubscription","timeEnd","success","loginUser","email","setUser","setUserDbId","setTeacherDbId","setProgress","newUserLogin","onTryIt","onLogin","onChangeTeacherId","onChangeUserName","LoginPage","setCurrentUserDbId","_TimesAlive","onIntroComplete","onUserLogin","setLessonAndPage","retreatLesson","lessonTag","renderPage","TimesAlive","setCurrentLessonAndPage","setTeacherId","library","add","faSync","faArrowLeft","faArrowRight","faQuestion","faFolderOpen","faTimes","faVolumeMute","faVolumeDown","faPlay","faPause","faVideo","faMusic","faFileAlt","faCircle","faAdjust","faCheckCircle","App","Boolean","location","hostname","match","store","composeEnhancers","__REDUX_DEVTOOLS_EXTENSION_COMPOSE__","compose","createStore","applyMiddleware","thunk","Store","ReactDOM","render","StrictMode","navigator","serviceWorker","ready","registration","unregister","message"],"mappings":"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","file":"static/js/main.b4cfb2ce.chunk.js","sourcesContent":["\r\nexport const pageTypes = {\r\n introMovie: 'introMovie',\r\n login: 'login',\r\n lessonList: 'lessonList',\r\n progressReport: 'progressReport',\r\n teacherDirections: 'teacherDirections',\r\n lesson: 'lesson',\r\n}\r\n\r\nexport const lessonTypes = {\r\n movie: {\r\n icon: 'video',\r\n },\r\n song: {\r\n icon: 'music',\r\n },\r\n test: {\r\n icon: ['far', 'file-alt'],\r\n },\r\n guessinggame: {\r\n icon: 'question',\r\n },\r\n slidingpicture: {\r\n icon: 'question',\r\n },\r\n}\r\n\r\nexport const pageDefinitions = {\r\n introMovie: {\r\n buttons: {\r\n back: { enabled: false},\r\n mute: { enabled: true},\r\n play: { enabled: true},\r\n quit: { enabled: true},\r\n printTest: { visible: false, enabled: false},\r\n progressReport: { visible: false, enabled: false},\r\n help: { enabled: true},\r\n lessonList: { enabled: false},\r\n replay: { enabled: true},\r\n next: { enabled: true},\r\n }\r\n },\r\n login: {\r\n buttons: {\r\n back: { enabled: true},\r\n mute: { enabled: true},\r\n play: { enabled: true},\r\n quit: { enabled: true},\r\n printTest: { visible: false, enabled: false},\r\n progressReport: { visible: false, enabled: false},\r\n help: { enabled: true},\r\n lessonList: { enabled: false},\r\n replay: { enabled: false},\r\n next: { enabled: false},\r\n }\r\n },\r\n lessonList: {\r\n buttons: {\r\n back: { enabled: false},\r\n mute: { enabled: true},\r\n play: { enabled: true},\r\n quit: { enabled: true},\r\n printTest: { visible: false, enabled: false},\r\n progressReport: { visible: true, enabled: true},\r\n help: { enabled: true},\r\n lessonList: { enabled: true},\r\n replay: { enabled: false},\r\n next: { enabled: false},\r\n }\r\n },\r\n lesson: {\r\n buttons: {\r\n back: { enabled: true},\r\n mute: { enabled: true},\r\n play: { enabled: true},\r\n quit: { enabled: true},\r\n printTest: { visible: false, enabled: false},\r\n progressReport: { visible: true, enabled: true},\r\n help: { enabled: true},\r\n lessonList: { enabled: true},\r\n replay: { enabled: true},\r\n next: { enabled: true},\r\n }\r\n },\r\n // lessonTest: {\r\n // buttons: {\r\n // back: { enabled: true},\r\n // mute: { enabled: true},\r\n // play: { enabled: true},\r\n // quit: { enabled: true},\r\n // printTest: { visible: true, enabled: true},\r\n // progressReport: { visible: true, enabled: true},\r\n // help: { enabled: true},\r\n // lessonList: { enabled: true},\r\n // replay: { enabled: true},\r\n // next: { enabled: true},\r\n // }\r\n // },\r\n progressReport: {\r\n buttons: {\r\n back: { enabled: false},\r\n mute: { enabled: true},\r\n play: { enabled: true},\r\n quit: { enabled: true},\r\n printTest: { visible: false, enabled: false},\r\n progressReport: { visible: true, enabled: true},\r\n help: { enabled: true},\r\n lessonList: { enabled: true},\r\n replay: { enabled: false},\r\n next: { enabled: false},\r\n }\r\n },\r\n teacherDirections: {\r\n buttons: {\r\n back: { enabled: true},\r\n mute: { enabled: true},\r\n play: { enabled: true},\r\n quit: { enabled: true},\r\n printTest: { visible: false, enabled: false},\r\n progressReport: { visible: true, enabled: true},\r\n help: { enabled: true},\r\n lessonList: { enabled: true},\r\n replay: { enabled: false},\r\n next: { enabled: false},\r\n }\r\n }\r\n}\r\n\r\n\r\nconst pretestInstructions = [\r\n \"This test will be used to show how much you will learn during the Times Alive program.\",\r\n \"Don't worry if you don't know the answers.\",\r\n \"By the end of the program you will probably know them all.\",\r\n \"Enter the answer to the questions as quickly as you can.\",\r\n \"If you don't know the answer you can guess, or leave it blank.\",\r\n \"When you are ready to start, hit the START button.\",\r\n \"When you are done, click the DONE button.\",\r\n \"Your test will then be scored and your time will be recorded.\",\r\n \"Don't forget to click the DONE button as soon as you are finished.\"\r\n ];\r\n\r\nconst posttestInstructions = [\r\n \"Congratulations! You have completed the Times Alive program. \",\r\n \"Let's see how much you have learned. \",\r\n \"Enter the answer to the questions as quickly as you can. \",\r\n \"When you are ready to start, hit the START button. \",\r\n \"When you are done, click the DONE button. \",\r\n \"Your test will then be scored and your time will be recorded. \",\r\n \"Don't forget to click the DONE button as soon as you are finished.\"\r\n];\r\n\r\nconst testInstructions = [\r\n \"Enter the answer to the questions as quickly as you can. \",\r\n \"When you are ready to start, hit the START button. \",\r\n \"When you are done, click the DONE button. \",\r\n \"Your test will then be scored and your time will be recorded. \",\r\n \"Don't forget to click the DONE button as soon as you are finished.\"\r\n];\r\n\r\nexport const lessons = [\r\n {\r\n \"name\": \"Lesson One\",\r\n \"sections\": [\r\n {\r\n \"id\": \"1a\",\r\n \"type\": \"test\",\r\n \"name\": \"Pre-test Nuts and Bolts\",\r\n \"facts\": \"0-9's\",\r\n \"pages\": [\r\n {\r\n \"type\": \"test\",\r\n \"autoAdvance\": false,\r\n \"recordProgress\": true,\r\n \"progressId\": \"1a\",\r\n \"timeTest\": true,\r\n \"showInstructions\": true,\r\n \"instructions\": pretestInstructions,\r\n \"testAudio\": \"pretest.mp3\",\r\n \"testQuestions\": [\r\n { \"x\": 2, \"y\": 1 }, { \"x\": 3, \"y\": 2 }, { \"x\": 4, \"y\": 4 }, { \"x\": 3, \"y\": 6 },\r\n { \"x\": 7, \"y\": 8 }, { \"x\": 8, \"y\": 9 }, { \"x\": 1, \"y\": 3 }, { \"x\": 2, \"y\": 4 },\r\n { \"x\": 5, \"y\": 3 }, { \"x\": 6, \"y\": 4 }, { \"x\": 8, \"y\": 8 }, { \"x\": 9, \"y\": 4 },\r\n { \"x\": 1, \"y\": 1 }, { \"x\": 2, \"y\": 1 }, { \"x\": 5, \"y\": 4 }, { \"x\": 6, \"y\": 6 },\r\n { \"x\": 9, \"y\": 3 }, { \"x\": 6, \"y\": 9 }, { \"x\": 7, \"y\": 4 }, { \"x\": 2, \"y\": 9 },\r\n { \"x\": 4, \"y\": 1 }, { \"x\": 5, \"y\": 2 }, { \"x\": 5, \"y\": 5 }, { \"x\": 8, \"y\": 6 },\r\n { \"x\": 9, \"y\": 7 }, { \"x\": 5, \"y\": 7 }, { \"x\": 9, \"y\": 1 }, { \"x\": 1, \"y\": 5 },\r\n { \"x\": 0, \"y\": 7 }, { \"x\": 3, \"y\": 7 }, { \"x\": 6, \"y\": 1 }, { \"x\": 6, \"y\": 7 },\r\n { \"x\": 8, \"y\": 5 }, { \"x\": 9, \"y\": 9 }, { \"x\": 3, \"y\": 8 }, { \"x\": 5, \"y\": 9 },\r\n { \"x\": 4, \"y\": 3 }, { \"x\": 8, \"y\": 1 }, { \"x\": 7, \"y\": 2 }, { \"x\": 3, \"y\": 0 },\r\n { \"x\": 7, \"y\": 7 }, { \"x\": 1, \"y\": 7 }, { \"x\": 2, \"y\": 6 }, { \"x\": 8, \"y\": 4 },\r\n { \"x\": 5, \"y\": 6 }, { \"x\": 0, \"y\": 9 }, { \"x\": 3, \"y\": 3 }, { \"x\": 2, \"y\": 8 }\r\n ]\r\n }\r\n ]\r\n },\r\n {\r\n \"id\": \"1b\",\r\n \"type\": \"movie\",\r\n \"name\": \"Zero is the King\",\r\n \"facts\": \"0\",\r\n \"pages\": [\r\n {\r\n \"type\": \"movie\",\r\n \"autoAdvance\": true,\r\n \"recordProgress\": true,\r\n \"progressId\": \"1b\",\r\n \"video\": \"zeros.mp4\"\r\n },\r\n {\r\n \"type\": \"test\",\r\n \"autoAdvance\": false,\r\n \"recordProgress\": false,\r\n \"timeTest\": false,\r\n \"showInstructions\": false,\r\n \"testAudio\": \"nowtrythese.mp3\",\r\n \"testQuestions\": [\r\n { \"x\": 0, \"y\": 6 }, { \"x\": 0, \"y\": 3 },\r\n { \"x\": 0, \"y\": 4 }, { \"x\": 0, \"y\": 1 }\r\n ]\r\n }\r\n ]\r\n },\r\n {\r\n \"id\": \"1c\",\r\n \"type\": \"movie\",\r\n \"name\": \"The Lonely Ones\",\r\n \"facts\": \"1's\",\r\n \"pages\": [\r\n {\r\n \"type\": \"movie\",\r\n \"autoAdvance\": true,\r\n \"recordProgress\": true,\r\n \"progressId\": \"1c\",\r\n \"video\": \"ones.mp4\"\r\n },\r\n {\r\n \"type\": \"test\",\r\n \"autoAdvance\": false,\r\n \"recordProgress\": false,\r\n \"timeTest\": false,\r\n \"showInstructions\": false,\r\n \"testAudio\": \"nowtrythese.mp3\",\r\n \"testQuestions\": [\r\n { \"x\": 1, \"y\": 6 }, { \"x\": 1, \"y\": 5 },\r\n { \"x\": 1, \"y\": 1 }, { \"x\": 1, \"y\": 7 }\r\n ]\r\n }\r\n ]\r\n }\r\n ]\r\n },\r\n {\r\n \"name\": \"Lesson Two\",\r\n \"sections\": [\r\n {\r\n \"id\": \"2a\",\r\n \"type\": \"movie\",\r\n \"name\": \"The Three Blind Mice\",\r\n \"facts\": \"3x3\",\r\n \"pages\": [\r\n {\r\n \"type\": \"movie\",\r\n \"autoAdvance\": false,\r\n \"recordProgress\": true,\r\n \"progressId\": \"2a\",\r\n \"video\": \"3x3story.mp4\"\r\n }\r\n ]\r\n },\r\n {\r\n \"id\": \"2b\",\r\n \"type\": \"song\",\r\n \"name\": \"A Nice Surprise\",\r\n \"facts\": \"3x3\",\r\n \"pages\": [\r\n {\r\n \"type\": \"movie\",\r\n \"autoAdvance\": false,\r\n \"recordProgress\": true,\r\n \"progressId\": \"2b\",\r\n \"video\": \"3x3song.mp4\"\r\n }\r\n ]\r\n },\r\n {\r\n \"id\": \"2c\",\r\n \"type\": \"guessinggame\",\r\n \"name\": \"Guessing Game\",\r\n \"facts\": \"3x3\",\r\n \"pages\": [\r\n {\r\n \"type\": \"guessinggame\",\r\n \"autoAdvance\": false,\r\n \"recordProgress\": true,\r\n \"progressId\": \"2c\",\r\n \"gameImage\": \"3x3.jpg\",\r\n \"gameAudio\": [ \"guessinggame.mp3\", \"doyou3x3.mp3\" ],\r\n \"x\": 3,\r\n \"y\": 3\r\n }\r\n ]\r\n }\r\n ]\r\n },\r\n {\r\n \"name\": \"Lesson Three\",\r\n \"sections\": [\r\n {\r\n \"id\": \"3a\",\r\n \"type\": \"movie\",\r\n \"name\": \"Cheers at Southgate\",\r\n \"facts\": \"3x4\",\r\n \"pages\": [\r\n {\r\n \"type\": \"movie\",\r\n \"autoAdvance\": false,\r\n \"recordProgress\": true,\r\n \"progressId\": \"3a\",\r\n \"video\": \"3x4story.mp4\"\r\n }\r\n ]\r\n },\r\n {\r\n \"id\": \"3b\",\r\n \"type\": \"song\",\r\n \"name\": \"Easy and Clear Cheer\",\r\n \"facts\": \"3x4\",\r\n \"pages\": [\r\n {\r\n \"type\": \"movie\",\r\n \"autoAdvance\": false,\r\n \"recordProgress\": true,\r\n \"progressId\": \"3b\",\r\n \"video\": \"3x4song.mp4\"\r\n }\r\n ]\r\n },\r\n {\r\n \"id\": \"3c\",\r\n \"type\": \"guessinggame\",\r\n \"name\": \"Guessing Game\",\r\n \"facts\": \"3x4\",\r\n \"pages\": [\r\n {\r\n \"type\": \"guessinggame\",\r\n \"autoAdvance\": false,\r\n \"recordProgress\": true,\r\n \"progressId\": \"3c\",\r\n \"gameImage\": \"3x4.jpg\",\r\n \"gameAudio\": [ \"guessinggame.mp3\", \"doyou3x4.mp3\" ],\r\n \"x\": 3,\r\n \"y\": 4\r\n }\r\n ]\r\n }\r\n ]\r\n },\r\n {\r\n \"name\": \"Lesson Four\",\r\n \"sections\": [\r\n {\r\n \"id\": \"4a\",\r\n \"type\": \"movie\",\r\n \"name\": \"The Terrific Twos\",\r\n \"facts\": \"2's\",\r\n \"pages\": [\r\n {\r\n \"type\": \"movie\",\r\n \"autoAdvance\": true,\r\n \"recordProgress\": true,\r\n \"progressId\": \"4a\",\r\n \"video\": \"twos.mp4\"\r\n },\r\n {\r\n \"type\": \"test\",\r\n \"autoAdvance\": false,\r\n \"recordProgress\": false,\r\n \"timeTest\": false,\r\n \"showInstructions\": false,\r\n \"testAudio\": \"nowtrythese.mp3\",\r\n \"testQuestions\": [\r\n { \"x\": 2, \"y\": 6 }, { \"x\": 2, \"y\": 4 },\r\n { \"x\": 2, \"y\": 7 }, { \"x\": 2, \"y\": 3 }\r\n ]\r\n }\r\n ]\r\n },\r\n {\r\n \"id\": \"4b\",\r\n \"type\": \"test\",\r\n \"name\": \"One Two Buckle My Shoe I\",\r\n \"facts\": \"1's & 2's\",\r\n \"pages\": [\r\n {\r\n \"type\": \"test\",\r\n \"autoAdvance\": false,\r\n \"recordProgress\": true,\r\n \"progressId\": \"4b\",\r\n \"timeTest\": true,\r\n \"showInstructions\": true,\r\n \"instructions\": testInstructions,\r\n \"testAudio\": \"tests.mp3\",\r\n \"testQuestions\": [\r\n { \"x\": 1, \"y\": 1 }, { \"x\": 1, \"y\": 2 }, { \"x\": 3, \"y\": 1 }, { \"x\": 6, \"y\": 1 },\r\n { \"x\": 8, \"y\": 1 }, { \"x\": 9, \"y\": 1 }, { \"x\": 7, \"y\": 1 }, { \"x\": 5, \"y\": 1 },\r\n { \"x\": 1, \"y\": 4 }, { \"x\": 2, \"y\": 2 }, { \"x\": 5, \"y\": 2 }, { \"x\": 2, \"y\": 6 },\r\n { \"x\": 2, \"y\": 9 }, { \"x\": 8, \"y\": 2 }, { \"x\": 7, \"y\": 2 }, { \"x\": 2, \"y\": 4 },\r\n { \"x\": 2, \"y\": 3 }, { \"x\": 3, \"y\": 3 }, { \"x\": 4, \"y\": 3 }, { \"x\": 97, \"y\": 1 }\r\n ]\r\n }\r\n ]\r\n }\r\n ]\r\n },\r\n {\r\n \"name\": \"Lesson Five\",\r\n \"sections\": [\r\n {\r\n \"id\": \"5a\",\r\n \"type\": \"test\",\r\n \"name\": \"Progress Check I\",\r\n \"facts\": \"Lessons 1-4\",\r\n \"pages\": [\r\n {\r\n \"type\": \"test\",\r\n \"autoAdvance\": false,\r\n \"recordProgress\": true,\r\n \"progressId\": \"5a\",\r\n \"timeTest\": true,\r\n \"showInstructions\": true,\r\n \"instructions\": testInstructions,\r\n \"testAudio\": \"tests.mp3\",\r\n \"testQuestions\": [\r\n { \"x\": 3, \"y\": 3 }, { \"x\": 7, \"y\": 0 }, { \"x\": 2, \"y\": 3 }, { \"x\": 4, \"y\": 3 },\r\n { \"x\": 6, \"y\": 1 }, { \"x\": 3, \"y\": 4 }, { \"x\": 2, \"y\": 2 }, { \"x\": 4, \"y\": 2 },\r\n { \"x\": 8, \"y\": 1 }, { \"x\": 0, \"y\": 4 }\r\n ]\r\n }\r\n ]\r\n },\r\n {\r\n \"id\": \"5b\",\r\n \"type\": \"movie\",\r\n \"name\": \"Snowmen Go Camping\",\r\n \"facts\": \"8x8\",\r\n \"pages\": [\r\n {\r\n \"type\": \"movie\",\r\n \"autoAdvance\": false,\r\n \"recordProgress\": true,\r\n \"progressId\": \"5b\",\r\n \"video\": \"8x8story.mp4\"\r\n }\r\n ]\r\n },\r\n {\r\n \"id\": \"5c\",\r\n \"type\": \"song\",\r\n \"name\": \"Snow Falling on Cedars\",\r\n \"facts\": \"8x8\",\r\n \"pages\": [\r\n {\r\n \"type\": \"movie\",\r\n \"autoAdvance\": false,\r\n \"recordProgress\": true,\r\n \"progressId\": \"5c\",\r\n \"video\": \"8x8song.mp4\"\r\n }\r\n ]\r\n },\r\n {\r\n \"id\": \"5d\",\r\n \"type\": \"guessinggame\",\r\n \"name\": \"Guessing Game\",\r\n \"facts\": \"8x8\",\r\n \"pages\": [\r\n {\r\n \"type\": \"guessinggame\",\r\n \"autoAdvance\": false,\r\n \"recordProgress\": true,\r\n \"progressId\": \"5d\",\r\n \"gameImage\": \"8x8.jpg\",\r\n \"gameAudio\": [ \"guessinggame.mp3\", \"doyou8x8.mp3\" ],\r\n \"x\": 8,\r\n \"y\": 8\r\n }\r\n ]\r\n }\r\n ]\r\n },\r\n {\r\n \"name\": \"Lesson Six\",\r\n \"sections\": [\r\n {\r\n \"id\": \"6a\",\r\n \"type\": \"movie\",\r\n \"name\": \"Keeping America Clean\",\r\n \"facts\": \"7x7\",\r\n \"pages\": [\r\n {\r\n \"type\": \"movie\",\r\n \"autoAdvance\": false,\r\n \"recordProgress\": true,\r\n \"progressId\": \"6a\",\r\n \"video\": \"7x7story.mp4\"\r\n }\r\n ]\r\n },\r\n {\r\n \"id\": \"6b\",\r\n \"type\": \"song\",\r\n \"name\": \"Marchin' Hard\",\r\n \"facts\": \"7x7\",\r\n \"pages\": [\r\n {\r\n \"type\": \"movie\",\r\n \"autoAdvance\": false,\r\n \"recordProgress\": true,\r\n \"progressId\": \"6b\",\r\n \"video\": \"7x7song.mp4\"\r\n }\r\n ]\r\n },\r\n {\r\n \"id\": \"6c\",\r\n \"type\": \"guessinggame\",\r\n \"name\": \"Guessing Game\",\r\n \"facts\": \"7x7\",\r\n \"pages\": [\r\n {\r\n \"type\": \"guessinggame\",\r\n \"autoAdvance\": false,\r\n \"recordProgress\": true,\r\n \"progressId\": \"6c\",\r\n \"gameImage\": \"7x7.jpg\",\r\n \"gameAudio\": [ \"guessinggame.mp3\", \"doyou7x7.mp3\" ],\r\n \"x\": 7,\r\n \"y\": 7\r\n }\r\n ]\r\n },\r\n {\r\n \"id\": \"6d\",\r\n \"type\": \"slidingpicture\",\r\n \"name\": \"Click the Picture I\",\r\n \"facts\": \"3x3, 3x4, 7x7, 8x8\",\r\n \"pages\": [\r\n {\r\n \"type\": \"slidingpicture\",\r\n \"autoAdvance\": true,\r\n \"recordProgress\": false,\r\n \"slideInstructions\": \"Do you remember the story for 7x7?\",\r\n \"slideAudio\": [ \"find7x7.mp3\", \"box7x7.mp3\" ],\r\n \"slideHint\": \"When it's 7x7 and the (7)'s are soldiers who sit in their (4) fort and they make sure America stays clean. The sign looks like a (9).\",\r\n \"slides\": [\r\n { \"image\": \"3x4.jpg\", \"isCorrect\": false },\r\n { \"image\": \"3x3.jpg\", \"isCorrect\": false },\r\n { \"image\": \"7x7.jpg\", \"isCorrect\": true },\r\n { \"image\": \"8x8.jpg\", \"isCorrect\": false }\r\n ],\r\n \"x\": 7,\r\n \"y\": 7\r\n },\r\n {\r\n \"type\": \"slidingpicture\",\r\n \"autoAdvance\": true,\r\n \"recordProgress\": false,\r\n \"slideInstructions\": \"Do you remember the story for 3x4?\",\r\n \"slideAudio\": [ \"find3x4.mp3\", \"box3x4.mp3\" ],\r\n \"slideHint\": \"When it's 3x4, the kids begin to cheer. The beginning of the cheer, one - two (12), is the answer to 3x4.\",\r\n \"slides\": [\r\n { \"image\": \"3x4.jpg\", \"isCorrect\": true },\r\n { \"image\": \"3x3.jpg\", \"isCorrect\": false },\r\n { \"image\": \"7x7.jpg\", \"isCorrect\": false },\r\n { \"image\": \"8x8.jpg\", \"isCorrect\": false }\r\n ],\r\n \"x\": 3,\r\n \"y\": 4\r\n },\r\n {\r\n \"type\": \"slidingpicture\",\r\n \"autoAdvance\": true,\r\n \"recordProgress\": false,\r\n \"slideInstructions\": \"Do you remember the story for 8x8?\",\r\n \"slideAudio\": [ \"find8x8.mp3\", \"box8x8.mp3\" ],\r\n \"slideHint\": \"When it's 8x8, they are two snowmen who are very cold and the sticks (6) are (4) the fire.\",\r\n \"slides\": [\r\n { \"image\": \"3x4.jpg\", \"isCorrect\": false },\r\n { \"image\": \"3x3.jpg\", \"isCorrect\": false },\r\n { \"image\": \"7x7.jpg\", \"isCorrect\": false },\r\n { \"image\": \"8x8.jpg\", \"isCorrect\": true }\r\n ],\r\n \"x\": 8,\r\n \"y\": 8\r\n },\r\n {\r\n \"type\": \"slidingpicture\",\r\n \"autoAdvance\": true,\r\n \"recordProgress\": false,\r\n \"slideInstructions\": \"Do you remember the story for 3x3?\",\r\n \"slideAudio\": [ \"find3x3.mp3\", \"box3x3.mp3\" ],\r\n \"slideHint\": \"When it's 3x3, there are 3 blind mice with 3 tails each - 9 all together. And blind sounds like nine.\",\r\n \"slides\": [\r\n { \"image\": \"3x4.jpg\", \"isCorrect\": false },\r\n { \"image\": \"3x3.jpg\", \"isCorrect\": true },\r\n { \"image\": \"7x7.jpg\", \"isCorrect\": false },\r\n { \"image\": \"8x8.jpg\", \"isCorrect\": false }\r\n ],\r\n \"x\": 3,\r\n \"y\": 3\r\n },\r\n {\r\n \"type\": \"test\",\r\n \"autoAdvance\": false,\r\n \"recordProgress\": true,\r\n \"timeTest\": false,\r\n \"showInstructions\": false,\r\n \"testAudio\": \"nowtrythese.mp3\",\r\n \"progressId\": \"6d\",\r\n \"testQuestions\": [\r\n { \"x\": 7, \"y\": 7 }, { \"x\": 3, \"y\": 4 },\r\n { \"x\": 8, \"y\": 8 }, { \"x\": 3, \"y\": 3 }\r\n ]\r\n }\r\n ]\r\n }\r\n ]\r\n },\r\n {\r\n \"name\": \"Lesson Seven\",\r\n \"sections\": [\r\n {\r\n \"id\": \"7a\",\r\n \"type\": \"movie\",\r\n \"name\": \"Bart Goes Hang Gliding\",\r\n \"facts\": \"4x4\",\r\n \"pages\": [\r\n {\r\n \"type\": \"movie\",\r\n \"autoAdvance\": false,\r\n \"recordProgress\": true,\r\n \"progressId\": \"7a\",\r\n \"video\": \"4x4story.mp4\"\r\n }\r\n ]\r\n },\r\n {\r\n \"id\": \"7b\",\r\n \"type\": \"song\",\r\n \"name\": \"Fly Fly Away\",\r\n \"facts\": \"4x4\",\r\n \"pages\": [\r\n {\r\n \"type\": \"movie\",\r\n \"autoAdvance\": false,\r\n \"recordProgress\": true,\r\n \"progressId\": \"7b\",\r\n \"video\": \"4x4song.mp4\"\r\n }\r\n ]\r\n },\r\n {\r\n \"id\": \"7c\",\r\n \"type\": \"guessinggame\",\r\n \"name\": \"Guessing Game\",\r\n \"facts\": \"4x4\",\r\n \"pages\": [\r\n {\r\n \"type\": \"guessinggame\",\r\n \"autoAdvance\": false,\r\n \"recordProgress\": true,\r\n \"progressId\": \"7c\",\r\n \"gameImage\": \"4x4.jpg\",\r\n \"gameAudio\": [ \"guessinggame.mp3\", \"doyou4x4.mp3\" ],\r\n \"x\": 4,\r\n \"y\": 4\r\n }\r\n ]\r\n }\r\n ]\r\n },\r\n {\r\n \"name\": \"Lesson Eight\",\r\n \"sections\": [\r\n {\r\n \"id\": \"8a\",\r\n \"type\": \"movie\",\r\n \"name\": \"The Magic Pond\",\r\n \"facts\": \"6x4\",\r\n \"pages\": [\r\n {\r\n \"type\": \"movie\",\r\n \"autoAdvance\": false,\r\n \"recordProgress\": true,\r\n \"progressId\": \"8a\",\r\n \"video\": \"6x4story.mp4\"\r\n }\r\n ]\r\n },\r\n {\r\n \"id\": \"8b\",\r\n \"type\": \"song\",\r\n \"name\": \"Long to Be Soarin'\",\r\n \"facts\": \"6x4\",\r\n \"pages\": [\r\n {\r\n \"type\": \"movie\",\r\n \"autoAdvance\": false,\r\n \"recordProgress\": true,\r\n \"progressId\": \"8b\",\r\n \"video\": \"6x4song.mp4\"\r\n }\r\n ]\r\n },\r\n {\r\n \"id\": \"8c\",\r\n \"type\": \"guessinggame\",\r\n \"name\": \"Guessing Game\",\r\n \"facts\": \"6x4\",\r\n \"pages\": [\r\n {\r\n \"type\": \"guessinggame\",\r\n \"autoAdvance\": false,\r\n \"recordProgress\": true,\r\n \"progressId\": \"8c\",\r\n \"gameImage\": \"6x4.jpg\",\r\n \"gameAudio\": [ \"guessinggame.mp3\", \"doyou6x4.mp3\" ],\r\n \"x\": 6,\r\n \"y\": 4\r\n }\r\n ]\r\n },\r\n {\r\n \"id\": \"8d\",\r\n \"type\": \"test\",\r\n \"name\": \"One Two Buckle My Shoe II\",\r\n \"facts\": \"1's & 2's\",\r\n \"pages\": [\r\n {\r\n \"type\": \"test\",\r\n \"autoAdvance\": false,\r\n \"recordProgress\": true,\r\n \"progressId\": \"8d\",\r\n \"timeTest\": true,\r\n \"showInstructions\": true,\r\n \"instructions\": testInstructions,\r\n \"testAudio\": \"tests.mp3\",\r\n \"testQuestions\": [\r\n { \"x\": 1, \"y\": 1 }, { \"x\": 1, \"y\": 2 }, { \"x\": 3, \"y\": 1 }, { \"x\": 6, \"y\": 1 },\r\n { \"x\": 8, \"y\": 1 }, { \"x\": 9, \"y\": 1 }, { \"x\": 7, \"y\": 1 }, { \"x\": 5, \"y\": 1 },\r\n { \"x\": 1, \"y\": 4 }, { \"x\": 2, \"y\": 2 }, { \"x\": 5, \"y\": 2 }, { \"x\": 2, \"y\": 6 },\r\n { \"x\": 2, \"y\": 9 }, { \"x\": 8, \"y\": 2 }, { \"x\": 7, \"y\": 2 }, { \"x\": 2, \"y\": 4 },\r\n { \"x\": 2, \"y\": 3 }, { \"x\": 3, \"y\": 3 }, { \"x\": 4, \"y\": 3 }, { \"x\": 97, \"y\": 1 }\r\n ]\r\n }\r\n ]\r\n }\r\n ]\r\n },\r\n {\r\n \"name\": \"Lesson Nine\",\r\n \"sections\": [\r\n {\r\n \"id\": \"9a\",\r\n \"type\": \"test\",\r\n \"name\": \"Progress Check II\",\r\n \"facts\": \"Lessons 1-8\",\r\n \"pages\": [\r\n {\r\n \"type\": \"test\",\r\n \"autoAdvance\": false,\r\n \"recordProgress\": true,\r\n \"progressId\": \"9a\",\r\n \"timeTest\": true,\r\n \"showInstructions\": true,\r\n \"instructions\": testInstructions,\r\n \"testAudio\": \"tests.mp3\",\r\n \"testQuestions\": [\r\n { \"x\": 7, \"y\": 7 }, { \"x\": 8, \"y\": 8 }, { \"x\": 4, \"y\": 4 }, { \"x\": 6, \"y\": 4 },\r\n { \"x\": 3, \"y\": 3 }, { \"x\": 3, \"y\": 4 }, { \"x\": 6, \"y\": 1 }, { \"x\": 2, \"y\": 5 },\r\n { \"x\": 0, \"y\": 7 }, { \"x\": 4, \"y\": 6 }\r\n ]\r\n }\r\n ]\r\n },\r\n {\r\n \"id\": \"9b\",\r\n \"type\": \"movie\",\r\n \"name\": \"Bouncing in the Back Yard\",\r\n \"facts\": \"7x8\",\r\n \"pages\": [\r\n {\r\n \"type\": \"movie\",\r\n \"autoAdvance\": false,\r\n \"recordProgress\": true,\r\n \"progressId\": \"9b\",\r\n \"video\": \"7x8story.mp4\"\r\n }\r\n ]\r\n },\r\n {\r\n \"id\": \"9c\",\r\n \"type\": \"song\",\r\n \"name\": \"Spunky Boy\",\r\n \"facts\": \"7x8\",\r\n \"pages\": [\r\n {\r\n \"type\": \"movie\",\r\n \"autoAdvance\": false,\r\n \"recordProgress\": true,\r\n \"progressId\": \"9c\",\r\n \"video\": \"7x8song.mp4\"\r\n }\r\n ]\r\n },\r\n {\r\n \"id\": \"9d\",\r\n \"type\": \"guessinggame\",\r\n \"name\": \"Guessing Game\",\r\n \"facts\": \"7x8\",\r\n \"pages\": [\r\n {\r\n \"type\": \"guessinggame\",\r\n \"autoAdvance\": false,\r\n \"recordProgress\": true,\r\n \"progressId\": \"9d\",\r\n \"gameImage\": \"7x8.jpg\",\r\n \"gameAudio\": [ \"guessinggame.mp3\", \"doyou7x8.mp3\" ],\r\n \"x\": 7,\r\n \"y\": 8\r\n }\r\n ]\r\n }\r\n ]\r\n },\r\n {\r\n \"name\": \"Lesson Ten\",\r\n \"sections\": [\r\n {\r\n \"id\": \"10a\",\r\n \"type\": \"movie\",\r\n \"name\": \"Twins Cross the Desert\",\r\n \"facts\": \"6x6\",\r\n \"pages\": [\r\n {\r\n \"type\": \"movie\",\r\n \"autoAdvance\": false,\r\n \"recordProgress\": true,\r\n \"progressId\": \"10a\",\r\n \"video\": \"6x6story.mp4\"\r\n }\r\n ]\r\n },\r\n {\r\n \"id\": \"10b\",\r\n \"type\": \"song\",\r\n \"name\": \"Thirsty Desert Walk\",\r\n \"facts\": \"6x6\",\r\n \"pages\": [\r\n {\r\n \"type\": \"movie\",\r\n \"autoAdvance\": false,\r\n \"recordProgress\": true,\r\n \"progressId\": \"10b\",\r\n \"video\": \"6x6song.mp4\"\r\n }\r\n ]\r\n },\r\n {\r\n \"id\": \"10c\",\r\n \"type\": \"guessinggame\",\r\n \"name\": \"Guessing Game\",\r\n \"facts\": \"6x6\",\r\n \"pages\": [\r\n {\r\n \"type\": \"guessinggame\",\r\n \"autoAdvance\": false,\r\n \"recordProgress\": true,\r\n \"progressId\": \"10c\",\r\n \"gameImage\": \"6x6.jpg\",\r\n \"gameAudio\": [ \"guessinggame.mp3\", \"doyou6x6.mp3\" ],\r\n \"x\": 6,\r\n \"y\": 6\r\n }\r\n ]\r\n },\r\n {\r\n \"id\": \"10d\",\r\n \"type\": \"slidingpicture\",\r\n \"name\": \"Click the Picture II\",\r\n \"facts\": \"4x4, 6x4, 7x8, 6x6\",\r\n \"pages\": [\r\n {\r\n \"type\": \"slidingpicture\",\r\n \"autoAdvance\": true,\r\n \"recordProgress\": false,\r\n \"slideInstructions\": \"Do you remember the story for 7x8?\",\r\n \"slideAudio\": [ \"find7x8.mp3\", \"box7x8.mp3\" ],\r\n \"slideHint\": \"When it's 7x8, 7 bounces on his trampoline (8) over to the diving board (5) and into the pool (6).\",\r\n \"slides\": [\r\n { \"image\": \"4x4.jpg\", \"isCorrect\": false },\r\n { \"image\": \"6x4.jpg\", \"isCorrect\": false },\r\n { \"image\": \"7x8.jpg\", \"isCorrect\": true },\r\n { \"image\": \"6x6.jpg\", \"isCorrect\": false }\r\n ],\r\n \"x\": 7,\r\n \"y\": 8\r\n },\r\n {\r\n \"type\": \"slidingpicture\",\r\n \"autoAdvance\": true,\r\n \"recordProgress\": false,\r\n \"slideInstructions\": \"Do you remember the story for 4x4?\",\r\n \"slideAudio\": [ \"find4x4.mp3\", \"box4x4.mp3\" ],\r\n \"slideHint\": \"When it's 4x4, the fours become a 4 by 4 (4x4) and you have to be 16 to drive it.\",\r\n \"slides\": [\r\n { \"image\": \"4x4.jpg\", \"isCorrect\": true },\r\n { \"image\": \"6x4.jpg\", \"isCorrect\": false },\r\n { \"image\": \"7x8.jpg\", \"isCorrect\": false },\r\n { \"image\": \"6x6.jpg\", \"isCorrect\": false }\r\n ],\r\n \"x\": 4,\r\n \"y\": 4\r\n },\r\n {\r\n \"type\": \"slidingpicture\",\r\n \"autoAdvance\": true,\r\n \"recordProgress\": false,\r\n \"slideInstructions\": \"Do you remember the story for 6x6?\",\r\n \"slideAudio\": [ \"find6x6.mp3\", \"box6x6.mp3\" ],\r\n \"slideHint\": \"When it's 6x6, they are very thirsty sixes (36).\",\r\n \"slides\": [\r\n { \"image\": \"4x4.jpg\", \"isCorrect\": false },\r\n { \"image\": \"6x4.jpg\", \"isCorrect\": false },\r\n { \"image\": \"7x8.jpg\", \"isCorrect\": false },\r\n { \"image\": \"6x6.jpg\", \"isCorrect\": true }\r\n ],\r\n \"x\": 6,\r\n \"y\": 6\r\n },\r\n {\r\n \"type\": \"slidingpicture\",\r\n \"autoAdvance\": true,\r\n \"recordProgress\": false,\r\n \"slideInstructions\": \"Do you remember the story for 6x4?\",\r\n \"slideAudio\": [ \"find6x4.mp3\", \"box6x4.mp3\" ],\r\n \"slideHint\": \"When it's 6x4, 6 is a snail in a magic pond (4). The snail gets his wish to become a swan (2), thanks to the magic pond (4).\",\r\n \"slides\": [\r\n { \"image\": \"4x4.jpg\", \"isCorrect\": false },\r\n { \"image\": \"6x4.jpg\", \"isCorrect\": true },\r\n { \"image\": \"7x8.jpg\", \"isCorrect\": false },\r\n { \"image\": \"6x6.jpg\", \"isCorrect\": false }\r\n ],\r\n \"x\": 6,\r\n \"y\": 4\r\n },\r\n {\r\n \"type\": \"test\",\r\n \"autoAdvance\": false,\r\n \"recordProgress\": true,\r\n \"progressId\": \"10d\",\r\n \"timeTest\": false,\r\n \"showInstructions\": false,\r\n \"testAudio\": \"nowtrythese.mp3\",\r\n \"testQuestions\": [\r\n { \"x\": 7, \"y\": 8 }, { \"x\": 4, \"y\": 4 },\r\n { \"x\": 6, \"y\": 6 }, { \"x\": 6, \"y\": 4 }\r\n ]\r\n }\r\n ]\r\n }\r\n ]\r\n },\r\n {\r\n \"name\": \"Lesson Eleven\",\r\n \"sections\": [\r\n {\r\n \"id\": \"11a\",\r\n \"type\": \"movie\",\r\n \"name\": \"Fives Alive\",\r\n \"facts\": \"5's\",\r\n \"pages\": [\r\n {\r\n \"type\": \"movie\",\r\n \"autoAdvance\": true,\r\n \"recordProgress\": false,\r\n \"video\": \"fives1.mp4\"\r\n },\r\n {\r\n \"type\": \"movie\",\r\n \"autoAdvance\": true,\r\n \"recordProgress\": true,\r\n \"progressId\": \"11a\",\r\n \"video\": \"fives2.mp4\"\r\n },\r\n {\r\n \"type\": \"test\",\r\n \"autoAdvance\": false,\r\n \"recordProgress\": false,\r\n \"timeTest\": false,\r\n \"showInstructions\": false,\r\n \"testAudio\": \"nowtrythese.mp3\",\r\n \"testQuestions\": [\r\n { \"x\": 5, \"y\": 6 }, { \"x\": 5, \"y\": 8 },\r\n { \"x\": 5, \"y\": 2 }, { \"x\": 5, \"y\": 3 }\r\n ]\r\n }\r\n ]\r\n },\r\n {\r\n \"id\": \"11b\",\r\n \"type\": \"test\",\r\n \"name\": \"Man Alive Try the Fives I\",\r\n \"facts\": \"5's\",\r\n \"pages\": [\r\n {\r\n \"type\": \"test\",\r\n \"autoAdvance\": false,\r\n \"recordProgress\": true,\r\n \"progressId\": \"11b\",\r\n \"timeTest\": true,\r\n \"showInstructions\": true,\r\n \"instructions\": testInstructions,\r\n \"testAudio\": \"tests.mp3\",\r\n \"testQuestions\": [\r\n { \"x\": 1, \"y\": 5 }, { \"x\": 5, \"y\": 5 }, { \"x\": 9, \"y\": 5 }, { \"x\": 5, \"y\": 4 },\r\n { \"x\": 6, \"y\": 5 }, { \"x\": 4, \"y\": 5 }, { \"x\": 7, \"y\": 5 }, { \"x\": 5, \"y\": 3 },\r\n { \"x\": 7, \"y\": 5 }, { \"x\": 3, \"y\": 5 }, { \"x\": 5, \"y\": 2 }, { \"x\": 5, \"y\": 8 },\r\n { \"x\": 5, \"y\": 1 }, { \"x\": 5, \"y\": 9 }, { \"x\": 5, \"y\": 6 }, { \"x\": 5, \"y\": 7 },\r\n { \"x\": 3, \"y\": 3 }, { \"x\": 4, \"y\": 3 }, { \"x\": 8, \"y\": 8 }, { \"x\": 7, \"y\": 7 }\r\n ]\r\n }\r\n ]\r\n },\r\n {\r\n \"id\": \"11c\",\r\n \"type\": \"movie\",\r\n \"name\": \"Hunter Sees Big Foot\",\r\n \"facts\": \"6x3\",\r\n \"pages\": [\r\n {\r\n \"type\": \"movie\",\r\n \"autoAdvance\": false,\r\n \"recordProgress\": true,\r\n \"progressId\": \"11c\",\r\n \"video\": \"6x3story.mp4\"\r\n }\r\n ]\r\n },\r\n {\r\n \"id\": \"11d\",\r\n \"type\": \"song\",\r\n \"name\": \"Stay Put Big Foot\",\r\n \"facts\": \"6x3\",\r\n \"pages\": [\r\n {\r\n \"type\": \"movie\",\r\n \"autoAdvance\": false,\r\n \"recordProgress\": true,\r\n \"progressId\": \"11d\",\r\n \"video\": \"6x3song.mp4\"\r\n }\r\n ]\r\n },\r\n {\r\n \"id\": \"11e\",\r\n \"type\": \"guessinggame\",\r\n \"name\": \"Guessing Game\",\r\n \"facts\": \"6x3\",\r\n \"pages\": [\r\n {\r\n \"type\": \"guessinggame\",\r\n \"autoAdvance\": false,\r\n \"recordProgress\": true,\r\n \"progressId\": \"11e\",\r\n \"gameImage\": \"6x3.jpg\",\r\n \"gameAudio\": [ \"guessinggame.mp3\", \"doyou6x3.mp3\" ],\r\n \"x\": 6,\r\n \"y\": 3\r\n }\r\n ]\r\n }\r\n ]\r\n },\r\n {\r\n \"name\": \"Lesson Twelve\",\r\n \"sections\": [\r\n {\r\n \"id\": \"12a\",\r\n \"type\": \"movie\",\r\n \"name\": \"A Birthday on a Ship\",\r\n \"facts\": \"6x8\",\r\n \"pages\": [\r\n {\r\n \"type\": \"movie\",\r\n \"autoAdvance\": false,\r\n \"recordProgress\": true,\r\n \"progressId\": \"12a\",\r\n \"video\": \"6x8story.mp4\"\r\n }\r\n ]\r\n },\r\n {\r\n \"id\": \"12b\",\r\n \"type\": \"song\",\r\n \"name\": \"Specialty Dish\",\r\n \"facts\": \"6x8\",\r\n \"pages\": [\r\n {\r\n \"type\": \"movie\",\r\n \"autoAdvance\": false,\r\n \"recordProgress\": true,\r\n \"progressId\": \"12b\",\r\n \"video\": \"6x8song.mp4\"\r\n }\r\n ]\r\n },\r\n {\r\n \"id\": \"12c\",\r\n \"type\": \"guessinggame\",\r\n \"name\": \"Guessing Game\",\r\n \"facts\": \"6x8\",\r\n \"pages\": [\r\n {\r\n \"type\": \"guessinggame\",\r\n \"autoAdvance\": false,\r\n \"recordProgress\": true,\r\n \"progressId\": \"12c\",\r\n \"gameImage\": \"6x8.jpg\",\r\n \"gameAudio\": [ \"guessinggame.mp3\", \"doyou6x8.mp3\" ],\r\n \"x\": 6,\r\n \"y\": 8\r\n }\r\n ]\r\n }\r\n ]\r\n },\r\n {\r\n \"name\": \"Lesson Thirteen\",\r\n \"sections\": [\r\n {\r\n \"id\": \"13a\",\r\n \"type\": \"test\",\r\n \"name\": \"Progress Check III\",\r\n \"facts\": \"Lessons 9-12\",\r\n \"pages\": [\r\n {\r\n \"type\": \"test\",\r\n \"autoAdvance\": false,\r\n \"recordProgress\": true,\r\n \"progressId\": \"13a\",\r\n \"timeTest\": true,\r\n \"showInstructions\": true,\r\n \"instructions\": testInstructions,\r\n \"testAudio\": \"tests.mp3\",\r\n \"testQuestions\": [\r\n { \"x\": 7, \"y\": 8 }, { \"x\": 6, \"y\": 6 }, { \"x\": 6, \"y\": 3 }, { \"x\": 6, \"y\": 8 },\r\n { \"x\": 6, \"y\": 5 }, { \"x\": 5, \"y\": 9 }, { \"x\": 8, \"y\": 7 }, { \"x\": 8, \"y\": 6 },\r\n { \"x\": 5, \"y\": 3 }, { \"x\": 3, \"y\": 6 }\r\n ]\r\n }\r\n ]\r\n },\r\n {\r\n \"id\": \"13b\",\r\n \"type\": \"movie\",\r\n \"name\": \"The Special Seven Tree\",\r\n \"facts\": \"3x7\",\r\n \"pages\": [\r\n {\r\n \"type\": \"movie\",\r\n \"autoAdvance\": false,\r\n \"recordProgress\": true,\r\n \"progressId\": \"13b\",\r\n \"video\": \"3x7story.mp4\"\r\n }\r\n ]\r\n },\r\n {\r\n \"id\": \"13c\",\r\n \"type\": \"song\",\r\n \"name\": \"Spin a Cocoon\",\r\n \"facts\": \"3x7\",\r\n \"pages\": [\r\n {\r\n \"type\": \"movie\",\r\n \"autoAdvance\": false,\r\n \"recordProgress\": true,\r\n \"progressId\": \"13c\",\r\n \"video\": \"3x7song.mp4\"\r\n }\r\n ]\r\n },\r\n {\r\n \"id\": \"13d\",\r\n \"type\": \"guessinggame\",\r\n \"name\": \"Guessing Game\",\r\n \"facts\": \"3x7\",\r\n \"pages\": [\r\n {\r\n \"type\": \"guessinggame\",\r\n \"autoAdvance\": false,\r\n \"recordProgress\": true,\r\n \"progressId\": \"13d\",\r\n \"gameImage\": \"3x7.jpg\",\r\n \"gameAudio\": [ \"guessinggame.mp3\", \"doyou3x7.mp3\" ],\r\n \"x\": 3,\r\n \"y\": 7\r\n }\r\n ]\r\n }\r\n ]\r\n },\r\n {\r\n \"name\": \"Lesson Fourteen\",\r\n \"sections\": [\r\n {\r\n \"id\": \"14a\",\r\n \"type\": \"movie\",\r\n \"name\": \"The Fire at the Farm\",\r\n \"facts\": \"7x4\",\r\n \"pages\": [\r\n {\r\n \"type\": \"movie\",\r\n \"autoAdvance\": false,\r\n \"recordProgress\": true,\r\n \"progressId\": \"14a\",\r\n \"video\": \"7x4story.mp4\"\r\n }\r\n ]\r\n },\r\n {\r\n \"id\": \"14b\",\r\n \"type\": \"song\",\r\n \"name\": \"The Fireman's Bell\",\r\n \"facts\": \"7x4\",\r\n \"pages\": [\r\n {\r\n \"type\": \"movie\",\r\n \"autoAdvance\": false,\r\n \"recordProgress\": true,\r\n \"progressId\": \"14b\",\r\n \"video\": \"7x4song.mp4\"\r\n }\r\n ]\r\n },\r\n {\r\n \"id\": \"14c\",\r\n \"type\": \"guessinggame\",\r\n \"name\": \"Guessing Game\",\r\n \"facts\": \"7x4\",\r\n \"pages\": [\r\n {\r\n \"type\": \"guessinggame\",\r\n \"autoAdvance\": false,\r\n \"recordProgress\": true,\r\n \"progressId\": \"14c\",\r\n \"gameImage\": \"4x7.jpg\",\r\n \"gameAudio\": [ \"guessinggame.mp3\", \"doyou7x4.mp3\" ],\r\n \"x\": 7,\r\n \"y\": 4\r\n }\r\n ]\r\n },\r\n {\r\n \"id\": \"14d\",\r\n \"type\": \"test\",\r\n \"name\": \"Man Alive Try The Fives II\",\r\n \"facts\": \"5's\",\r\n \"pages\": [\r\n {\r\n \"type\": \"test\",\r\n \"autoAdvance\": false,\r\n \"recordProgress\": true,\r\n \"progressId\": \"14d\",\r\n \"timeTest\": true,\r\n \"showInstructions\": true,\r\n \"instructions\": testInstructions,\r\n \"testAudio\": \"tests.mp3\",\r\n \"testQuestions\": [\r\n { \"x\": 1, \"y\": 5 }, { \"x\": 5, \"y\": 5 }, { \"x\": 9, \"y\": 5 }, { \"x\": 5, \"y\": 4 },\r\n { \"x\": 6, \"y\": 5 }, { \"x\": 4, \"y\": 5 }, { \"x\": 8, \"y\": 5 }, { \"x\": 5, \"y\": 3 },\r\n { \"x\": 7, \"y\": 5 }, { \"x\": 3, \"y\": 5 }, { \"x\": 5, \"y\": 2 }, { \"x\": 5, \"y\": 8 },\r\n { \"x\": 5, \"y\": 1 }, { \"x\": 5, \"y\": 9 }, { \"x\": 5, \"y\": 6 }, { \"x\": 5, \"y\": 7 },\r\n { \"x\": 3, \"y\": 3 }, { \"x\": 4, \"y\": 3 }, { \"x\": 8, \"y\": 8 }, { \"x\": 7, \"y\": 7 }\r\n ]\r\n }\r\n ]\r\n },\r\n {\r\n \"id\": \"14e\",\r\n \"type\": \"slidingpicture\",\r\n \"name\": \"Click the Picture III\",\r\n \"facts\": \"6x3, 6x8, 3x7, 7x4\",\r\n \"pages\": [\r\n {\r\n \"type\": \"slidingpicture\",\r\n \"autoAdvance\": true,\r\n \"recordProgress\": false,\r\n \"slideInstructions\": \"Do you remember the story for 3x7?\",\r\n \"slideAudio\": [ \"find3x7.mp3\", \"box3x7.mp3\" ],\r\n \"slideHint\": \"When it's 3x7, 3 is a butterfly at the 7 tree. The caterpillar (2) will soon become a cocoon (1).\",\r\n \"slides\": [\r\n { \"image\": \"6x3.jpg\", \"isCorrect\": false },\r\n { \"image\": \"6x8.jpg\", \"isCorrect\": false },\r\n { \"image\": \"3x7.jpg\", \"isCorrect\": true },\r\n { \"image\": \"4x7.jpg\", \"isCorrect\": false }\r\n ],\r\n \"x\": 3,\r\n \"y\": 7\r\n },\r\n {\r\n \"type\": \"slidingpicture\",\r\n \"autoAdvance\": true,\r\n \"recordProgress\": false,\r\n \"slideInstructions\": \"Do you remember the story for 6x3?\",\r\n \"slideAudio\": [ \"find6x3.mp3\", \"box6x3.mp3\" ],\r\n \"slideHint\": \"When it's 6x3, 6 shoots her bow (3). The arrow (1) lands in front of Big Foot (8).\",\r\n \"slides\": [\r\n { \"image\": \"6x3.jpg\", \"isCorrect\": true },\r\n { \"image\": \"6x8.jpg\", \"isCorrect\": false },\r\n { \"image\": \"3x7.jpg\", \"isCorrect\": false },\r\n { \"image\": \"4x7.jpg\", \"isCorrect\": false }\r\n ],\r\n \"x\": 6,\r\n \"y\": 3\r\n },\r\n {\r\n \"type\": \"slidingpicture\",\r\n \"autoAdvance\": true,\r\n \"recordProgress\": false,\r\n \"slideInstructions\": \"Do you remember the story for 7x4?\",\r\n \"slideAudio\": [ \"find7x4.mp3\", \"box7x4.mp3\" ],\r\n \"slideHint\": \"When it's 7x4, 7 is a fireman and 4 is the fire pole. They arrive at the fire too (2) late (8).\",\r\n \"slides\": [\r\n { \"image\": \"6x3.jpg\", \"isCorrect\": false },\r\n { \"image\": \"6x8.jpg\", \"isCorrect\": false },\r\n { \"image\": \"3x7.jpg\", \"isCorrect\": false },\r\n { \"image\": \"4x7.jpg\", \"isCorrect\": true }\r\n ],\r\n \"x\": 4,\r\n \"y\": 7\r\n },\r\n {\r\n \"type\": \"slidingpicture\",\r\n \"autoAdvance\": true,\r\n \"recordProgress\": false,\r\n \"slideInstructions\": \"Do you remember the story for 6x8?\",\r\n \"slideAudio\": [ \"find6x8.mp3\", \"box6x8.mp3\" ],\r\n \"slideHint\": \"When it's 6x8, 6 is the chef and the cake is in the shape of an 8. The cake is \\\"for the eight.\\\" (48)\",\r\n \"slides\": [\r\n { \"image\": \"6x3.jpg\", \"isCorrect\": false },\r\n { \"image\": \"6x8.jpg\", \"isCorrect\": true },\r\n { \"image\": \"3x7.jpg\", \"isCorrect\": false },\r\n { \"image\": \"4x7.jpg\", \"isCorrect\": false }\r\n ],\r\n \"x\": 6,\r\n \"y\": 8\r\n },\r\n {\r\n \"type\": \"test\",\r\n \"autoAdvance\": false,\r\n \"recordProgress\": true,\r\n \"progressId\": \"14e\",\r\n \"timeTest\": false,\r\n \"showInstructions\": false,\r\n \"testAudio\": \"nowtrythese.mp3\",\r\n \"testQuestions\": [\r\n { \"x\": 3, \"y\": 7 }, { \"x\": 6, \"y\": 3 },\r\n { \"x\": 4, \"y\": 7 }, { \"x\": 6, \"y\": 8 }\r\n ]\r\n }\r\n ]\r\n }\r\n ]\r\n },\r\n {\r\n \"name\": \"Lesson Fifteen\",\r\n \"sections\": [\r\n {\r\n \"id\": \"15a\",\r\n \"type\": \"movie\",\r\n \"name\": \"The Nifty Nines\",\r\n \"facts\": \"9's\",\r\n \"pages\": [\r\n {\r\n \"type\": \"movie\",\r\n \"autoAdvance\": true,\r\n \"recordProgress\": true,\r\n \"progressId\": \"15a\",\r\n \"video\": \"nines.mp4\"\r\n },\r\n {\r\n \"type\": \"test\",\r\n \"autoAdvance\": false,\r\n \"recordProgress\": false,\r\n \"timeTest\": false,\r\n \"showInstructions\": false,\r\n \"testAudio\": \"nowtrythese.mp3\",\r\n \"testQuestions\": [\r\n { \"x\": 9, \"y\": 3 }, { \"x\": 9, \"y\": 4 },\r\n { \"x\": 9, \"y\": 9 }, { \"x\": 9, \"y\": 7 }\r\n ]\r\n }\r\n ]\r\n },\r\n {\r\n \"id\": \"15b\",\r\n \"type\": \"test\",\r\n \"name\": \"Nines in a Line I\",\r\n \"facts\": \"9's\",\r\n \"pages\": [\r\n {\r\n \"type\": \"test\",\r\n \"autoAdvance\": false,\r\n \"recordProgress\": true,\r\n \"progressId\": \"15b\",\r\n \"timeTest\": true,\r\n \"showInstructions\": true,\r\n \"instructions\": testInstructions,\r\n \"testAudio\": \"tests.mp3\",\r\n \"testQuestions\": [\r\n { \"x\": 9, \"y\": 5 }, { \"x\": 8, \"y\": 9 }, { \"x\": 4, \"y\": 9 }, { \"x\": 9, \"y\": 9 },\r\n { \"x\": 3, \"y\": 9 }, { \"x\": 6, \"y\": 9 }, { \"x\": 9, \"y\": 7 }, { \"x\": 9, \"y\": 1 },\r\n { \"x\": 2, \"y\": 9 }, { \"x\": 9, \"y\": 4 }, { \"x\": 5, \"y\": 9 }, { \"x\": 9, \"y\": 2 },\r\n { \"x\": 9, \"y\": 8 }, { \"x\": 9, \"y\": 6 }, { \"x\": 7, \"y\": 9 }, { \"x\": 9, \"y\": 3 },\r\n { \"x\": 7, \"y\": 7 }, { \"x\": 4, \"y\": 3 }, { \"x\": 8, \"y\": 8 }, { \"x\": 6, \"y\": 4 }\r\n ]\r\n }\r\n ]\r\n },\r\n {\r\n \"id\": \"15c\",\r\n \"type\": \"movie\",\r\n \"name\": \"How High Can They Jump?\",\r\n \"facts\": \"7x6\",\r\n \"pages\": [\r\n {\r\n \"type\": \"movie\",\r\n \"autoAdvance\": false,\r\n \"recordProgress\": true,\r\n \"progressId\": \"15c\",\r\n \"video\": \"7x6story.mp4\"\r\n }\r\n ]\r\n },\r\n {\r\n \"id\": \"15d\",\r\n \"type\": \"song\",\r\n \"name\": \"Jump Like a Kangaroo\",\r\n \"facts\": \"7x6\",\r\n \"pages\": [\r\n {\r\n \"type\": \"movie\",\r\n \"autoAdvance\": false,\r\n \"recordProgress\": true,\r\n \"progressId\": \"15d\",\r\n \"video\": \"7x6song.mp4\"\r\n }\r\n ]\r\n },\r\n {\r\n \"id\": \"15e\",\r\n \"type\": \"guessinggame\",\r\n \"name\": \"Guessing Game\",\r\n \"facts\": \"7x6\",\r\n \"pages\": [\r\n {\r\n \"type\": \"guessinggame\",\r\n \"autoAdvance\": false,\r\n \"recordProgress\": true,\r\n \"progressId\": \"15e\",\r\n \"gameImage\": \"7x6.jpg\",\r\n \"gameAudio\": [ \"guessinggame.mp3\", \"doyou7x6.mp3\" ],\r\n \"x\": 7,\r\n \"y\": 6\r\n }\r\n ]\r\n }\r\n ]\r\n },\r\n {\r\n \"name\": \"Lesson Sixteen\",\r\n \"sections\": [\r\n {\r\n \"id\": \"16a\",\r\n \"type\": \"movie\",\r\n \"name\": \"Mud Pies on a Rainy Day\",\r\n \"facts\": \"8x4\",\r\n \"pages\": [\r\n {\r\n \"type\": \"movie\",\r\n \"autoAdvance\": false,\r\n \"recordProgress\": true,\r\n \"progressId\": \"16a\",\r\n \"video\": \"8x4story.mp4\"\r\n }\r\n ]\r\n },\r\n {\r\n \"id\": \"16b\",\r\n \"type\": \"song\",\r\n \"name\": \"Mud Pies in Their Eyes\",\r\n \"facts\": \"8x4\",\r\n \"pages\": [\r\n {\r\n \"type\": \"movie\",\r\n \"autoAdvance\": false,\r\n \"recordProgress\": true,\r\n \"progressId\": \"16b\",\r\n \"video\": \"8x4song.mp4\"\r\n }\r\n ]\r\n },\r\n {\r\n \"id\": \"16c\",\r\n \"type\": \"guessinggame\",\r\n \"name\": \"Guessing Game\",\r\n \"facts\": \"8x4\",\r\n \"pages\": [\r\n {\r\n \"type\": \"guessinggame\",\r\n \"autoAdvance\": false,\r\n \"recordProgress\": true,\r\n \"progressId\": \"16c\",\r\n \"gameImage\": \"4x8.jpg\",\r\n \"gameAudio\": [ \"guessinggame.mp3\", \"doyou8x4.mp3\" ],\r\n \"x\": 4,\r\n \"y\": 8\r\n }\r\n ]\r\n },\r\n {\r\n \"id\": \"16d\",\r\n \"type\": \"test\",\r\n \"name\": \"Nines in a Line II\",\r\n \"facts\": \"9's\",\r\n \"pages\": [\r\n {\r\n \"type\": \"test\",\r\n \"autoAdvance\": false,\r\n \"recordProgress\": true,\r\n \"progressId\": \"16d\",\r\n \"timeTest\": true,\r\n \"showInstructions\": true,\r\n \"instructions\": testInstructions,\r\n \"testAudio\": \"tests.mp3\",\r\n \"testQuestions\": [\r\n { \"x\": 9, \"y\": 5 }, { \"x\": 8, \"y\": 9 }, { \"x\": 4, \"y\": 9 }, { \"x\": 9, \"y\": 9 },\r\n { \"x\": 3, \"y\": 9 }, { \"x\": 6, \"y\": 9 }, { \"x\": 9, \"y\": 7 }, { \"x\": 9, \"y\": 1 },\r\n { \"x\": 2, \"y\": 9 }, { \"x\": 9, \"y\": 4 }, { \"x\": 5, \"y\": 9 }, { \"x\": 9, \"y\": 2 },\r\n { \"x\": 9, \"y\": 8 }, { \"x\": 9, \"y\": 6 }, { \"x\": 7, \"y\": 9 }, { \"x\": 9, \"y\": 3 },\r\n { \"x\": 7, \"y\": 7 }, { \"x\": 4, \"y\": 3 }, { \"x\": 8, \"y\": 8 }, { \"x\": 6, \"y\": 4 }\r\n ]\r\n }\r\n ]\r\n }\r\n ]\r\n },\r\n {\r\n \"name\": \"Lesson Seventeen\",\r\n \"sections\": [\r\n {\r\n \"id\": \"17a\",\r\n \"type\": \"test\",\r\n \"name\": \"Progress Check IV\",\r\n \"facts\": \"Lessons 13-16\",\r\n \"pages\": [\r\n {\r\n \"type\": \"test\",\r\n \"autoAdvance\": false,\r\n \"recordProgress\": true,\r\n \"progressId\": \"17a\",\r\n \"timeTest\": true,\r\n \"showInstructions\": true,\r\n \"instructions\": testInstructions,\r\n \"testAudio\": \"tests.mp3\",\r\n \"testQuestions\": [\r\n { \"x\": 8, \"y\": 4 }, { \"x\": 7, \"y\": 6 }, { \"x\": 9, \"y\": 2 }, { \"x\": 3, \"y\": 7 },\r\n { \"x\": 7, \"y\": 4 }, { \"x\": 9, \"y\": 0 }, { \"x\": 7, \"y\": 3 }, { \"x\": 4, \"y\": 7 },\r\n { \"x\": 4, \"y\": 8 }, { \"x\": 6, \"y\": 7 }\r\n ]\r\n }\r\n ]\r\n },\r\n {\r\n \"id\": \"17b\",\r\n \"type\": \"movie\",\r\n \"name\": \"Big Snake Scares the Bat\",\r\n \"facts\": \"3x8\",\r\n \"pages\": [\r\n {\r\n \"type\": \"movie\",\r\n \"autoAdvance\": false,\r\n \"recordProgress\": true,\r\n \"progressId\": \"17b\",\r\n \"video\": \"3x8story.mp4\"\r\n }\r\n ]\r\n },\r\n {\r\n \"id\": \"17c\",\r\n \"type\": \"song\",\r\n \"name\": \"Black Lagoon\",\r\n \"facts\": \"3x8\",\r\n \"pages\": [\r\n {\r\n \"type\": \"movie\",\r\n \"autoAdvance\": false,\r\n \"recordProgress\": true,\r\n \"progressId\": \"17c\",\r\n \"video\": \"3x8song.mp4\"\r\n }\r\n ]\r\n },\r\n {\r\n \"id\": \"17d\",\r\n \"type\": \"guessinggame\",\r\n \"name\": \"Guessing Game\",\r\n \"facts\": \"3x8\",\r\n \"pages\": [\r\n {\r\n \"type\": \"guessinggame\",\r\n \"autoAdvance\": false,\r\n \"recordProgress\": true,\r\n \"progressId\": \"17d\",\r\n \"gameImage\": \"3x8.jpg\",\r\n \"gameAudio\": [ \"guessinggame.mp3\", \"doyou3x8.mp3\" ],\r\n \"x\": 3,\r\n \"y\": 8\r\n }\r\n ]\r\n },\r\n {\r\n \"id\": \"17e\",\r\n \"type\": \"slidingpicture\",\r\n \"name\": \"Click the Picture IV\",\r\n \"facts\": \"7x6, 8x4, 3x8, 6x4\",\r\n \"pages\": [\r\n {\r\n \"type\": \"slidingpicture\",\r\n \"autoAdvance\": true,\r\n \"recordProgress\": false,\r\n \"slideInstructions\": \"Do you remember the story for 7x6?\",\r\n \"slideAudio\": [ \"find7x6.mp3\", \"box7x6.mp3\" ],\r\n \"slideHint\": \"When it's 7x6 they have a high jump (4) contest and land on the cushion (2).\",\r\n \"slides\": [\r\n { \"image\": \"3x8.jpg\", \"isCorrect\": false },\r\n { \"image\": \"4x8.jpg\", \"isCorrect\": false },\r\n { \"image\": \"7x6.jpg\", \"isCorrect\": true },\r\n { \"image\": \"6x4.jpg\", \"isCorrect\": false }\r\n ],\r\n \"x\": 6,\r\n \"y\": 7\r\n },\r\n {\r\n \"type\": \"slidingpicture\",\r\n \"autoAdvance\": true,\r\n \"recordProgress\": false,\r\n \"slideInstructions\": \"Do you remember the story for 3x8?\",\r\n \"slideAudio\": [ \"find3x8.mp3\", \"box3x8.mp3\" ],\r\n \"slideHint\": \"When it's 3x8, 3 is a bat who flies into the cave (8) and finds the King of Snakes (2) on a throne (4).\",\r\n \"slides\": [\r\n { \"image\": \"3x8.jpg\", \"isCorrect\": true },\r\n { \"image\": \"4x8.jpg\", \"isCorrect\": false },\r\n { \"image\": \"7x6.jpg\", \"isCorrect\": false },\r\n { \"image\": \"6x4.jpg\", \"isCorrect\": false }\r\n ],\r\n \"x\": 8,\r\n \"y\": 3\r\n },\r\n {\r\n \"type\": \"slidingpicture\",\r\n \"autoAdvance\": true,\r\n \"recordProgress\": false,\r\n \"slideInstructions\": \"Do you remember the story for 6x4?\",\r\n \"slideAudio\": [ \"find6x4.mp3\", \"box6x4.mp3\" ],\r\n \"slideHint\": \"When it's 6x4, 6 is a snail in a magic pond (4). The snail gets his wish to become a swan (2), thanks to the magic pond (4).\",\r\n \"slides\": [\r\n { \"image\": \"3x8.jpg\", \"isCorrect\": false },\r\n { \"image\": \"4x8.jpg\", \"isCorrect\": false },\r\n { \"image\": \"7x6.jpg\", \"isCorrect\": false },\r\n { \"image\": \"6x4.jpg\", \"isCorrect\": true }\r\n ],\r\n \"x\": 6,\r\n \"y\": 4\r\n },\r\n {\r\n \"type\": \"slidingpicture\",\r\n \"autoAdvance\": true,\r\n \"recordProgress\": false,\r\n \"slideInstructions\": \"Do you remember the story for 8x4?\",\r\n \"slideAudio\": [ \"find8x4.mp3\", \"box8x4.mp3\" ],\r\n \"slideHint\": \"When it's 8x4, (8) is the muddy pig and the (4) is the tub. The pig says, \\\"He's dirty too.\\\"\",\r\n \"slides\": [\r\n { \"image\": \"3x8.jpg\", \"isCorrect\": false },\r\n { \"image\": \"4x8.jpg\", \"isCorrect\": true },\r\n { \"image\": \"7x6.jpg\", \"isCorrect\": false },\r\n { \"image\": \"6x4.jpg\", \"isCorrect\": false }\r\n ],\r\n \"x\": 4,\r\n \"y\": 8\r\n },\r\n {\r\n \"type\": \"test\",\r\n \"autoAdvance\": false,\r\n \"recordProgress\": true,\r\n \"progressId\": \"17e\",\r\n \"timeTest\": false,\r\n \"showInstructions\": false,\r\n \"testAudio\": \"nowtrythese.mp3\",\r\n \"testQuestions\": [\r\n { \"x\": 7, \"y\": 6 }, { \"x\": 3, \"y\": 8 },\r\n { \"x\": 6, \"y\": 4 }, { \"x\": 8, \"y\": 4 }\r\n ]\r\n }\r\n ]\r\n }\r\n ]\r\n },\r\n {\r\n \"name\": \"Lesson Eighteen\",\r\n \"sections\": [\r\n {\r\n \"id\": \"18a\",\r\n \"type\": \"test\",\r\n \"name\": \"Post-test Nuts and Bolts\",\r\n \"facts\": \"0-9's\",\r\n \"pages\": [\r\n {\r\n \"type\": \"test\",\r\n \"autoAdvance\": false,\r\n \"recordProgress\": true,\r\n \"progressId\": \"18a\",\r\n \"timeTest\": true,\r\n \"showInstructions\": true,\r\n \"instructions\": posttestInstructions,\r\n \"testAudio\": \"posttest.mp3\",\r\n \"testQuestions\": [\r\n { \"x\": 2, \"y\": 1 }, { \"x\": 3, \"y\": 2 }, { \"x\": 4, \"y\": 4 }, { \"x\": 3, \"y\": 6 },\r\n { \"x\": 7, \"y\": 8 }, { \"x\": 8, \"y\": 9 }, { \"x\": 1, \"y\": 3 }, { \"x\": 2, \"y\": 4 },\r\n { \"x\": 5, \"y\": 3 }, { \"x\": 6, \"y\": 4 }, { \"x\": 8, \"y\": 8 }, { \"x\": 9, \"y\": 4 },\r\n { \"x\": 1, \"y\": 1 }, { \"x\": 2, \"y\": 1 }, { \"x\": 5, \"y\": 4 }, { \"x\": 6, \"y\": 6 },\r\n { \"x\": 9, \"y\": 3 }, { \"x\": 6, \"y\": 9 }, { \"x\": 7, \"y\": 4 }, { \"x\": 2, \"y\": 9 },\r\n { \"x\": 4, \"y\": 1 }, { \"x\": 5, \"y\": 2 }, { \"x\": 5, \"y\": 5 }, { \"x\": 8, \"y\": 6 },\r\n { \"x\": 9, \"y\": 7 }, { \"x\": 5, \"y\": 7 }, { \"x\": 9, \"y\": 1 }, { \"x\": 1, \"y\": 5 },\r\n { \"x\": 0, \"y\": 7 }, { \"x\": 3, \"y\": 7 }, { \"x\": 6, \"y\": 1 }, { \"x\": 6, \"y\": 7 },\r\n { \"x\": 8, \"y\": 5 }, { \"x\": 9, \"y\": 9 }, { \"x\": 3, \"y\": 8 }, { \"x\": 5, \"y\": 9 },\r\n { \"x\": 4, \"y\": 3 }, { \"x\": 8, \"y\": 1 }, { \"x\": 7, \"y\": 2 }, { \"x\": 3, \"y\": 0 },\r\n { \"x\": 7, \"y\": 7 }, { \"x\": 1, \"y\": 7 }, { \"x\": 2, \"y\": 6 }, { \"x\": 8, \"y\": 4 },\r\n { \"x\": 5, \"y\": 6 }, { \"x\": 0, \"y\": 9 }, { \"x\": 3, \"y\": 3 }, { \"x\": 2, \"y\": 8 }\r\n ]\r\n }\r\n ]\r\n }\r\n ]\r\n }\r\n];\r\n","import { pageTypes } from '../data'\r\n\r\nconst initialState = {\r\n isPlaying: true,\r\n isMute: false,\r\n pageType: pageTypes.introMovie,\r\n showHelp: false\r\n}\r\n\r\nconst actionTypes = {\r\n SET_PLAYING: 'SET_PLAYING',\r\n SET_MUTE: \"SET_MUTE\",\r\n SET_PAGE_TYPE: \"SET_PAGE_TYPE\",\r\n SET_HELP: \"SET_HELP\"\r\n}\r\n\r\n// action creators\r\nexport const setPlaying = (playing) => {\r\n return {\r\n type: actionTypes.SET_PLAYING,\r\n payload: playing\r\n }\r\n}\r\nexport const setMute = (mute) => {\r\n return {\r\n type: actionTypes.SET_MUTE,\r\n payload: mute\r\n }\r\n}\r\nexport const setPageType = pageType => {\r\n return {\r\n type: actionTypes.SET_PAGE_TYPE,\r\n payload: pageType\r\n }\r\n}\r\nexport const setShowHelp = help => {\r\n return {\r\n type: actionTypes.SET_HELP,\r\n payload: help\r\n }\r\n}\r\n\r\n// the reducer\r\nconst uiReducer = (state = initialState, action) => {\r\n switch(action.type) {\r\n case actionTypes.SET_PLAYING:\r\n return {\r\n ...state,\r\n isPlaying: action.payload\r\n }\r\n case actionTypes.SET_MUTE:\r\n return {\r\n ...state,\r\n isMute: action.payload\r\n }\r\n case actionTypes.SET_PAGE_TYPE:\r\n return {\r\n ...state,\r\n pageType: action.payload\r\n }\r\n case actionTypes.SET_HELP:\r\n return {\r\n ...state,\r\n showHelp: action.payload\r\n }\r\n default:\r\n return state;\r\n }\r\n}\r\n\r\nconst getUiReducer = state => state.UI;\r\n\r\nexport const getPlaying = state => getUiReducer(state).isPlaying;\r\nexport const getMute = state => getUiReducer(state).isMute;\r\nexport const getPageType = state => getUiReducer(state).pageType;\r\nexport const getShowHelp = state => getUiReducer(state).showHelp;\r\nexport const reducer = { UI: uiReducer }\r\n","import { lessons } from './data'\r\n\r\n\r\nexport class Lessons {\r\n static lessons = lessons;\r\n\r\n static getLessonSection(sectionId) {\r\n console.log(\"Looking for lesson section \" + sectionId);\r\n let rv = null;\r\n const lesson = lessons.find((lesson) => {\r\n return lesson.sections.find(section => section.id === sectionId)\r\n });\r\n\r\n if (lesson)\r\n {\r\n console.log(\"Looking for section \" + sectionId + \" in lesson \" + lesson.name);\r\n let section = lesson.sections.find(section => section.id === sectionId);\r\n console.log(section);\r\n if (section)\r\n rv = section;\r\n }\r\n\r\n return rv;\r\n }\r\n\r\n static nextLessonPage(id, pageIndex) {\r\n console.log(\"on entry, id\", id);\r\n console.log(\"on entry, pageNdx\", pageIndex);\r\n if (!id)\r\n return { id: lessons[0].id, pageIndex: 0 };\r\n\r\n let lessonNdx = lessons.findIndex(lesson => {\r\n return lesson.sections.find(section => section.id === id)\r\n });\r\n if (lessonNdx < 0)\r\n return null;\r\n\r\n let lesson = lessons[lessonNdx];\r\n console.log(`lessons[${lessonNdx}]`, lesson);\r\n let sectionNdx = lesson.sections.findIndex(section => section.id === id);\r\n if (sectionNdx < 0)\r\n return null;\r\n\r\n let section = lesson.sections[sectionNdx];\r\n console.log(\"section\", section);\r\n console.log(\"pageNdx\", pageIndex);\r\n if (pageIndex < section.pages.length - 1)\r\n return { id: id, pageIndex: ++pageIndex };\r\n\r\n pageIndex = 0;\r\n if (sectionNdx < lesson.sections.length - 1) {\r\n ++sectionNdx;\r\n return { id: lesson.sections[sectionNdx].id, pageIndex: pageIndex}\r\n }\r\n\r\n sectionNdx = 0;\r\n if (lessonNdx < lessons.length - 1) {\r\n lesson = lessons[++lessonNdx];\r\n return { id: lesson.sections[sectionNdx].id, pageIndex: pageIndex }\r\n }\r\n\r\n return null;\r\n }\r\n\r\n static previousLessonPage(id, pageIndex) {\r\n console.log(\"on entry, id\", id);\r\n console.log(\"on entry, pageNdx\", pageIndex);\r\n if (!id)\r\n return null;\r\n\r\n let lessonNdx = lessons.findIndex(lesson => {\r\n return lesson.sections.find(section => section.id === id)\r\n });\r\n if (lessonNdx < 0)\r\n return null;\r\n\r\n let lesson = lessons[lessonNdx];\r\n let sectionNdx = lesson.sections.findIndex(section => section.id === id);\r\n if (sectionNdx < 0)\r\n return null;\r\n\r\n if (pageIndex > 0)\r\n return { id: id, pageIndex: --pageIndex };\r\n\r\n let section = lesson.sections[sectionNdx];\r\n if (sectionNdx > 0) {\r\n section = lesson.sections[--sectionNdx];\r\n pageIndex = section.pages.length - 1;\r\n return { id: section.id, pageIndex: pageIndex };\r\n }\r\n\r\n if (lessonNdx === 0)\r\n return null;\r\n\r\n lesson = lessons[--lessonNdx]\r\n sectionNdx = lesson.sections.length - 1;\r\n section = lesson.sections[sectionNdx];\r\n pageIndex = section.pages.length - 1;\r\n return { id: section.id, pageIndex: pageIndex };\r\n }\r\n\r\n static isFirstPage(id, pageIndex) {\r\n return this.previousLessonPage(id, pageIndex) === null;\r\n }\r\n\r\n static isLastPage(id, pageIndex) {\r\n return this.nextLessonPage(id, pageIndex) == null;\r\n }\r\n\r\n static isLastLessonPage(id, pageIndex)\r\n {\r\n const section = Lessons.getLessonSection(id);\r\n\r\n return pageIndex === section.pages.length - 1;\r\n }\r\n}\r\n","import { Lessons } from '../Lessons'\r\n\r\n\r\nconst initialState = {\r\n currentLesson: '1a',\r\n lessonPage: 0\r\n}\r\n\r\nconst actionTypes = {\r\n SET_CURRENT_LESSON: \"SET_CURRENT_LESSON\",\r\n SET_CURRENT_LESSON_PAGE: \"SET_CURRENT_LESSON_PAGE\",\r\n SET_CURRENT_LESSON_AND_PAGE: \"SET_CURRENT_LESSON_AND_PAGE\",\r\n}\r\n\r\nexport const advanceLesson = (lessonid, pageid) => {\r\n console.log(`advancing lesson from ${lessonid}, ${pageid}`);\r\n const newLesson = Lessons.nextLessonPage(lessonid, pageid)\r\n console.log(\"newLesson\", newLesson);\r\n // need some error handling here\r\n return function(dispatch) {\r\n dispatch(setCurrentLesson(newLesson.id));\r\n dispatch(setLessonPage(newLesson.pageIndex));\r\n }\r\n}\r\n\r\nexport const retreatLesson = (lessonid, pageid) => {\r\n console.log(\"retreating lesson\");\r\n const newLesson = Lessons.previousLessonPage(lessonid, pageid);\r\n // need some error handling here\r\n return function(dispatch) {\r\n dispatch(setCurrentLesson(newLesson.id));\r\n dispatch(setLessonPage(newLesson.pageIndex));\r\n }\r\n}\r\n\r\n// action creators\r\nexport const setCurrentLesson = (lessonId) => {\r\n console.log(`action creator setCurrentLesson: ${lessonId}`)\r\n return {\r\n type: actionTypes.SET_CURRENT_LESSON,\r\n payload: lessonId\r\n }\r\n}\r\n\r\nexport const setCurrentLessonAndPage = (lessonId, pageIndex) => {\r\n console.log(`action creator setCurrentLessonAndPage: ${lessonId} ${pageIndex}`)\r\n return {\r\n type: actionTypes.SET_CURRENT_LESSON_AND_PAGE,\r\n payload: {lesson: lessonId, page: pageIndex}\r\n }\r\n}\r\nexport const setLessonPage = (lessonPage) => {\r\n return {\r\n type: actionTypes.SET_CURRENT_LESSON_PAGE,\r\n payload: lessonPage\r\n }\r\n}\r\n\r\n// the reducer\r\nconst lessonReducer = (state = initialState, action) => {\r\n switch(action.type) {\r\n case actionTypes.SET_CURRENT_LESSON:\r\n return {\r\n ...state,\r\n currentLesson: action.payload\r\n }\r\n case actionTypes.SET_CURRENT_LESSON_PAGE:\r\n return {\r\n ...state,\r\n lessonPage: action.payload\r\n }\r\n case actionTypes.SET_CURRENT_LESSON_AND_PAGE:\r\n return {\r\n ...state,\r\n currentLesson: action.payload.lesson,\r\n lessonPage: action.payload.page\r\n }\r\n case actionTypes.SET_CURRENT_USER:\r\n return {\r\n ...state,\r\n username: action.payload\r\n }\r\n default:\r\n return state;\r\n }\r\n}\r\n\r\nconst getLessonReducer = state => state.LESSON;\r\n\r\nexport const getCurrentLesson = state => Lessons.getLessonSection(getLessonReducer(state).currentLesson);\r\nexport const getLessonPage = state => getLessonReducer(state).lessonPage;\r\nexport const reducer = { LESSON: lessonReducer }\r\n","\r\nexport default class Progress {\r\n\r\n static getDefault() {\r\n //TODO: This is temporary!!!\r\n // We should be getting this from an API.\r\n return [\r\n {\r\n section: \"1a\",\r\n status: \"\", // |viewed|completed\r\n completedOn: null, // date\r\n testResults: { // either an object or null for a non-test type\r\n correct: null, // either null or a number\r\n score: null, // either null or a percentage value\r\n time: null, // either null or the elapsed time to take the test\r\n }\r\n },\r\n {\r\n section: \"1b\",\r\n status: \"\",\r\n completedOn: null,\r\n testResults: null\r\n },\r\n {\r\n section: \"1c\",\r\n status: \"\",\r\n completedOn: null,\r\n testResults: null\r\n },\r\n {\r\n section: \"2a\",\r\n status: \"\",\r\n completedOn: null,\r\n testResults: null\r\n },\r\n {\r\n section: \"2b\",\r\n status: \"\",\r\n completedOn: null,\r\n testResults: null\r\n },\r\n {\r\n section: \"2c\",\r\n status: \"\",\r\n completedOn: null,\r\n testResults: null\r\n },\r\n {\r\n section: \"3a\",\r\n status: \"\",\r\n completedOn: null,\r\n testResults: null\r\n },\r\n {\r\n section: \"3b\",\r\n status: \"\",\r\n completedOn: null,\r\n testResults: null\r\n },\r\n {\r\n section: \"3c\",\r\n status: \"\",\r\n completedOn: null,\r\n testResults: null\r\n },\r\n {\r\n section: \"4a\",\r\n status: \"\",\r\n completedOn: null,\r\n testResults: null\r\n },\r\n {\r\n section: \"4b\",\r\n status: \"\",\r\n completedOn: null,\r\n testResults: {\r\n correct: null,\r\n score: null,\r\n time: null,\r\n }\r\n },\r\n {\r\n section: \"5a\",\r\n status: \"\",\r\n completedOn: null,\r\n testResults: {\r\n correct: null,\r\n score: null,\r\n time: null,\r\n }\r\n },\r\n {\r\n section: \"5b\",\r\n status: \"\",\r\n completedOn: null,\r\n testResults: null\r\n },\r\n {\r\n section: \"5c\",\r\n status: \"\",\r\n completedOn: null,\r\n testResults: null\r\n },\r\n {\r\n section: \"5d\",\r\n status: \"\",\r\n completedOn: null,\r\n testResults: null\r\n },\r\n {\r\n section: \"6a\",\r\n status: \"\",\r\n completedOn: null,\r\n testResults: null\r\n },\r\n {\r\n section: \"6b\",\r\n status: \"\",\r\n completedOn: null,\r\n testResults: null\r\n },\r\n {\r\n section: \"6c\",\r\n status: \"\",\r\n completedOn: null,\r\n testResults: null\r\n },\r\n {\r\n section: \"6d\",\r\n status: \"\",\r\n completedOn: null,\r\n testResults: null\r\n },\r\n {\r\n section: \"7a\",\r\n status: \"\",\r\n completedOn: null,\r\n testResults: null\r\n },\r\n {\r\n section: \"7b\",\r\n status: \"\",\r\n completedOn: null,\r\n testResults: null\r\n },\r\n {\r\n section: \"7c\",\r\n status: \"\",\r\n completedOn: null,\r\n testResults: null\r\n },\r\n {\r\n section: \"8a\",\r\n status: \"\",\r\n completedOn: null,\r\n testResults: null\r\n },\r\n {\r\n section: \"8b\",\r\n status: \"\",\r\n completedOn: null,\r\n testResults: null\r\n },\r\n {\r\n section: \"8c\",\r\n status: \"\",\r\n completedOn: null,\r\n testResults: null\r\n },\r\n {\r\n section: \"8d\",\r\n status: \"\",\r\n completedOn: null,\r\n testResults: {\r\n correct: null,\r\n score: null,\r\n time: null,\r\n }\r\n },\r\n {\r\n section: \"9a\",\r\n status: \"\",\r\n completedOn: null,\r\n testResults: {\r\n correct: null,\r\n score: null,\r\n time: null,\r\n }\r\n },\r\n {\r\n section: \"9b\",\r\n status: \"\",\r\n completedOn: null,\r\n testResults: null\r\n },\r\n {\r\n section: \"9c\",\r\n status: \"\",\r\n completedOn: null,\r\n testResults: null\r\n },\r\n {\r\n section: \"9d\",\r\n status: \"\",\r\n completedOn: null,\r\n testResults: null\r\n },\r\n {\r\n section: \"10a\",\r\n status: \"\",\r\n completedOn: null,\r\n testResults: null\r\n },\r\n {\r\n section: \"10b\",\r\n status: \"\",\r\n completedOn: null,\r\n testResults: null\r\n },\r\n {\r\n section: \"10c\",\r\n status: \"\",\r\n completedOn: null,\r\n testResults: null\r\n },\r\n {\r\n section: \"10d\",\r\n status: \"\",\r\n completedOn: null,\r\n testResults: null\r\n },\r\n {\r\n section: \"11a\",\r\n status: \"\",\r\n completedOn: null,\r\n testResults: null\r\n },\r\n {\r\n section: \"11b\",\r\n status: \"\",\r\n completedOn: null,\r\n testResults: {\r\n correct: null,\r\n score: null,\r\n time: null,\r\n }\r\n },\r\n {\r\n section: \"11c\",\r\n status: \"\",\r\n completedOn: null,\r\n testResults: null\r\n },\r\n {\r\n section: \"11d\",\r\n status: \"\",\r\n completedOn: null,\r\n testResults: null\r\n },\r\n {\r\n section: \"11e\",\r\n status: \"\",\r\n completedOn: null,\r\n testResults: null\r\n },\r\n {\r\n section: \"12a\",\r\n status: \"\",\r\n completedOn: null,\r\n testResults: null\r\n },\r\n {\r\n section: \"12b\",\r\n status: \"\",\r\n completedOn: null,\r\n testResults: null\r\n },\r\n {\r\n section: \"12c\",\r\n status: \"\",\r\n completedOn: null,\r\n testResults: null\r\n },\r\n {\r\n section: \"13a\",\r\n status: \"\",\r\n completedOn: null,\r\n testResults: {\r\n correct: null,\r\n score: null,\r\n time: null,\r\n }\r\n },\r\n {\r\n section: \"13b\",\r\n status: \"\",\r\n completedOn: null,\r\n testResults: null\r\n },\r\n {\r\n section: \"13c\",\r\n status: \"\",\r\n completedOn: null,\r\n testResults: null\r\n },\r\n {\r\n section: \"13d\",\r\n status: \"\",\r\n completedOn: null,\r\n testResults: null\r\n },\r\n {\r\n section: \"14a\",\r\n status: \"\",\r\n completedOn: null,\r\n testResults: null\r\n },\r\n {\r\n section: \"14b\",\r\n status: \"\",\r\n completedOn: null,\r\n testResults: null\r\n },\r\n {\r\n section: \"14c\",\r\n status: \"\",\r\n completedOn: null,\r\n testResults: null\r\n },\r\n {\r\n section: \"14d\",\r\n status: \"\",\r\n completedOn: null,\r\n testResults: {\r\n correct: null,\r\n score: null,\r\n time: null,\r\n }\r\n },\r\n {\r\n section: \"14e\",\r\n status: \"\",\r\n completedOn: null,\r\n testResults: null\r\n },\r\n {\r\n section: \"15a\",\r\n status: \"\",\r\n completedOn: null,\r\n testResults: null\r\n },\r\n {\r\n section: \"15b\",\r\n status: \"\",\r\n completedOn: null,\r\n testResults: {\r\n correct: null,\r\n score: null,\r\n time: null,\r\n }\r\n },\r\n {\r\n section: \"15c\",\r\n status: \"\",\r\n completedOn: null,\r\n testResults: null\r\n },\r\n {\r\n section: \"15d\",\r\n status: \"\",\r\n completedOn: null,\r\n testResults: null\r\n },\r\n {\r\n section: \"15e\",\r\n status: \"\",\r\n completedOn: null,\r\n testResults: null\r\n },\r\n {\r\n section: \"16a\",\r\n status: \"\",\r\n completedOn: null,\r\n testResults: null\r\n },\r\n {\r\n section: \"16b\",\r\n status: \"\",\r\n completedOn: null,\r\n testResults: null\r\n },\r\n {\r\n section: \"16c\",\r\n status: \"\",\r\n completedOn: null,\r\n testResults: null\r\n },\r\n {\r\n section: \"16d\",\r\n status: \"\",\r\n completedOn: null,\r\n testResults: {\r\n correct: null,\r\n score: null,\r\n time: null,\r\n }\r\n },\r\n {\r\n section: \"17a\",\r\n status: \"\",\r\n completedOn: null,\r\n testResults: {\r\n correct: null,\r\n score: null,\r\n time: null,\r\n }\r\n },\r\n {\r\n section: \"17b\",\r\n status: \"\",\r\n completedOn: null,\r\n testResults: null\r\n },\r\n {\r\n section: \"17c\",\r\n status: \"\",\r\n completedOn: null,\r\n testResults: null\r\n },\r\n {\r\n section: \"17d\",\r\n status: \"\",\r\n completedOn: null,\r\n testResults: null\r\n },\r\n {\r\n section: \"17e\",\r\n status: \"\",\r\n completedOn: null,\r\n testResults: null\r\n },\r\n {\r\n section: \"18a\",\r\n status: \"\",\r\n completedOn: null,\r\n testResults: {\r\n correct: null,\r\n score: null,\r\n time: null,\r\n }\r\n }\r\n ];\r\n }\r\n\r\n static getSection(data, sectionId) {\r\n return data.find(section => section.section === sectionId);\r\n }\r\n\r\n}\r\n","import Progress from '../Progress'\r\n\r\nconst initialState = {\r\n progress: Progress.getDefault(),\r\n username: '',\r\n userDbId: undefined,\r\n teacherId: '',\r\n teacherDbId: undefined\r\n}\r\n\r\nconst actionTypes = {\r\n SET_PROGRESS: \"SET_PROGRESS\",\r\n SET_CURRENT_USER: \"SET_CURRENT_USER\",\r\n SET_CURRENT_USER_DB_ID: \"SET_CURRENT_USER_DB_ID\",\r\n SET_TEACHER_ID: \"SET_TEACHER_ID\",\r\n SET_TEACHER_DB_ID: \"SET_TEACHER_DB_ID\",\r\n UPDATE_SECTION_STATUS: \"UPDATE_SECTION_STATUS\",\r\n UPDATE_SECTION_RESULTS: \"UPDATE_SECTION_RESULTS\",\r\n CLEAR_USER: \"CLEAR_USER\"\r\n}\r\n\r\n\r\nexport const setProgress = (progress) => {\r\n return {\r\n type: actionTypes.SET_PROGRESS,\r\n payload: progress\r\n };\r\n}\r\n\r\nexport const setCurrentUser = (username) => {\r\n return {\r\n type: actionTypes.SET_CURRENT_USER,\r\n payload: username\r\n }\r\n}\r\n\r\nexport const setCurrentUserDbId = (id) => {\r\n return {\r\n type: actionTypes.SET_CURRENT_USER_DB_ID,\r\n payload: id\r\n }\r\n}\r\n\r\nexport const setTeacherId = (teacherId) => {\r\n return {\r\n type: actionTypes.SET_TEACHER_ID,\r\n payload: teacherId\r\n }\r\n}\r\n\r\nexport const setTeacherDbId = (id) => {\r\n return {\r\n type: actionTypes.SET_TEACHER_DB_ID,\r\n payload: id\r\n }\r\n}\r\n\r\nexport const markSectionViewed = (sectionId) => {\r\n return {\r\n type: actionTypes.UPDATE_SECTION_STATUS,\r\n payload: {\r\n sectionId: sectionId,\r\n status: \"viewed\"\r\n }\r\n }\r\n}\r\n\r\nexport const markSectionComplete = (sectionId) => {\r\n return {\r\n type: actionTypes.UPDATE_SECTION_STATUS,\r\n payload: {\r\n sectionId: sectionId,\r\n status: \"completed\",\r\n completedOn: Date.now(),\r\n }\r\n }\r\n}\r\n\r\nexport const setTestResults = (sectionId, correct, score, elapsed) => {\r\n return {\r\n type: actionTypes.UPDATE_SECTION_RESULTS,\r\n payload: {\r\n section: sectionId,\r\n testResults: {\r\n correct: correct,\r\n score: score,\r\n time: elapsed,\r\n },\r\n status: \"completed\",\r\n completedOn: Date.now(),\r\n }\r\n }\r\n}\r\n\r\nexport const clearTestResults = (sectionId) => {\r\n console.log(\"CLEAR TEST RESULTS FOR \", sectionId);\r\n return {\r\n type: actionTypes.UPDATE_SECTION_RESULTS,\r\n payload: {\r\n section: sectionId,\r\n testResults: {\r\n correct: null,\r\n score: null,\r\n time: null,\r\n },\r\n status: \"\",\r\n completedOn: null,\r\n }\r\n }\r\n}\r\n\r\nexport const clearUser = () => {\r\n return {\r\n type: actionTypes.CLEAR_USER\r\n }\r\n}\r\n\r\n// the reducer\r\nconst userReducer = (state = initialState, action) => {\r\n switch(action.type) {\r\n case actionTypes.SET_CURRENT_USER:\r\n return {\r\n ...state,\r\n username: action.payload\r\n }\r\n case actionTypes.SET_CURRENT_USER_DB_ID:\r\n return {\r\n ...state,\r\n userDbId: action.payload\r\n }\r\n case actionTypes.SET_TEACHER_ID:\r\n return {\r\n ...state,\r\n teacherId: action.payload\r\n }\r\n case actionTypes.SET_TEACHER_DB_ID:\r\n return {\r\n ...state,\r\n teacherDbId: action.payload\r\n }\r\n case actionTypes.SET_PROGRESS:\r\n return {\r\n ...state,\r\n progress: action.payload\r\n };\r\n case actionTypes.UPDATE_SECTION_STATUS:\r\n let section = Progress.getSection(state.progress, action.payload.sectionId);\r\n section.status = action.payload.status;\r\n if(action.payload.completedOn !== undefined)\r\n section.completedOn = action.payload.completedOn;\r\n return {\r\n ...state,\r\n progress: state.progress.map(p => p.section === action.payload.sectionId ? section : p )\r\n };\r\n case actionTypes.UPDATE_SECTION_RESULTS:\r\n return {\r\n ...state,\r\n progress: state.progress.map(p => p.section === action.payload.section ? action.payload : p )\r\n };\r\n case actionTypes.CLEAR_USER:\r\n return initialState;\r\n default:\r\n return state;\r\n }\r\n}\r\n\r\nconst getUserReducer = state => state.USER;\r\n\r\nexport const getCurrentUser = state => getUserReducer(state).username;\r\nexport const getCurrentUserDbId = state => getUserReducer(state).userDbId;\r\nexport const getTeacherId = state => getUserReducer(state).teacherId;\r\nexport const getTeacherDbId = state => getUserReducer(state).teacherDbId;\r\nexport const getProgress = state => getUserReducer(state).progress;\r\nexport const getSectionStatus = (state, sectionId) => {\r\n const section = Progress.getSection(getUserReducer(state).progress, sectionId);\r\n if (section) {\r\n return section.status;\r\n }\r\n return null;\r\n}\r\nexport const getSectionResults = (state, sectionId) => {\r\n const section = Progress.getSection(getUserReducer(state).progress, sectionId);\r\n if (section) {\r\n return section;\r\n }\r\n return null;\r\n}\r\n\r\nexport const reducer = { USER: userReducer }\r\n","import { createStore, combineReducers, applyMiddleware, compose } from 'redux';\r\nimport { reducer as uiReducer } from './UiReducer';\r\nimport { reducer as lessonReducer } from './LessonReducer';\r\nimport { reducer as userReducer } from './UserReducer';\r\n\r\nimport thunk from 'redux-thunk';\r\n\r\nconst rootReducer = combineReducers({\r\n ...uiReducer,\r\n ...lessonReducer,\r\n ...userReducer\r\n});\r\n\r\nexport function Store() {\r\n const debug = true;\r\n\r\n if (debug) {\r\n const composeEnhancers = window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__ || compose;\r\n return createStore(rootReducer, composeEnhancers(applyMiddleware(thunk)));\r\n }\r\n\r\n return createStore(rootReducer, applyMiddleware(thunk));\r\n}\r\n","import React from 'react';\r\n\r\nexport const ButtonPanel = (props) => {\r\n return (\r\n
\r\n { props.children }\r\n
\r\n )\r\n}","import React from 'react';\r\nimport { connect } from 'react-redux';\r\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\r\nimport { getShowHelp } from '../../store/UiReducer';\r\nimport './RoundButton.scss';\r\n\r\nconst _RoundButton = (props) => {\r\n return (\r\n
\r\n
\r\n \r\n {\r\n props.icon &&\r\n \r\n }\r\n \r\n \r\n
\r\n {props.toolTip && props.showHelp &&
{props.toolTip}
}\r\n
\r\n )\r\n}\r\n\r\nconst mapStateToProps = (state) => ({\r\n showHelp: getShowHelp(state)\r\n});\r\n\r\nexport const RoundButton = connect(mapStateToProps, null)(_RoundButton)\r\n","import React from 'react';\r\nimport { RoundButton } from './RoundButton';\r\n\r\nexport class BackButton extends React.Component {\r\n\r\n render() {\r\n return (\r\n \r\n back\r\n \r\n )\r\n }\r\n}\r\n","import React from 'react';\r\nimport { connect } from 'react-redux';\r\nimport { RoundButton } from './RoundButton';\r\nimport { getMute, setMute } from '../../store/UiReducer';\r\n\r\nclass _MuteButton extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n\r\n this.state = {\r\n\r\n }\r\n }\r\n\r\n render() {\r\n return (\r\n this.props.setMute(!this.props.isMute)} \r\n className=\"muteBtn\"\r\n toolTip=\"Turn the sound off or on\"\r\n icon={ this.props.isMute ? \"volume-down\" : \"volume-mute\" }\r\n { ...this.props }>\r\n { this.props.isMute ? \"sound on\" : \"sound off\" }\r\n \r\n )\r\n }\r\n}\r\n\r\nconst mapStateToProps = (state) => ({\r\n isMute: getMute(state)\r\n});\r\n\r\nconst mapDispatchToProps = (dispatch) => ({\r\n setMute: (mute) => dispatch(setMute(mute))\r\n});\r\n\r\nexport const MuteButton = connect(mapStateToProps, mapDispatchToProps)(_MuteButton)\r\n","import React from 'react';\r\nimport { connect } from 'react-redux';\r\nimport { RoundButton } from './RoundButton';\r\nimport { setPlaying, getPlaying } from '../../store/UiReducer';\r\n\r\nclass _PlayButton extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n\r\n this.state = {\r\n \r\n }\r\n }\r\n\r\n /*\r\n playing \r\n paused\r\n */\r\n\r\n render() {\r\n return (\r\n this.props.mysetPlaying(!this.props.myisPlaying)} \r\n className=\"playBtn\"\r\n toolTip=\"Stop or start the lesson\"\r\n icon={ this.props.myisPlaying ? \"pause\" : \"play\" }\r\n { ...this.props }>\r\n { this.props.myisPlaying ? 'pause ' : 'play' }\r\n \r\n )\r\n }\r\n}\r\n\r\nconst mapStateToProps = (state) => ({\r\n myisPlaying: getPlaying(state)\r\n});\r\n\r\nconst mapDispatchToProps = (dispatch) => ({\r\n mysetPlaying: (playing) => dispatch(setPlaying(playing))\r\n});\r\n\r\nexport const PlayButton = connect(mapStateToProps, mapDispatchToProps)(_PlayButton)","import React from 'react';\r\nimport Modal from 'react-modal';\r\nimport { connect } from 'react-redux';\r\nimport { RoundButton } from './RoundButton';\r\nimport { setPageType } from '../../store/UiReducer';\r\nimport { clearUser } from '../../store/UserReducer';\r\nimport { pageTypes } from '../../data'\r\nimport \"../LessonList/Lesson.scss\";\r\n\r\nconst quitDialogStyles = {\r\n content : {\r\n width: '300px',\r\n top: '50%',\r\n left: '50%',\r\n right: 'auto',\r\n bottom: 'auto',\r\n marginRight: '-50%',\r\n transform: 'translate(-50%, -50%)',\r\n border: '1px solid #0d2d70',\r\n fontSize: \"20pt\",\r\n fontWeight: \"600\"\r\n }\r\n};\r\n\r\nexport class _QuitButton extends React.Component {\r\n\r\n constructor(props) {\r\n super(props);\r\n\r\n this.state = {\r\n showDialogModal: false\r\n };\r\n }\r\n\r\n onClick = () => {\r\n this.setState({\r\n ...this.state,\r\n showDialogModal: true\r\n });\r\n }\r\n\r\n onYes = () => {\r\n console.log(\"Yes button clicked\");\r\n this.setState({\r\n ...this.state,\r\n showDialogModal: false\r\n });\r\n this.props.clearUser();\r\n this.props.gotoLoginPage();\r\n }\r\n onNo = () => {\r\n console.log(\"No button clicked\");\r\n this.setState({\r\n ...this.state,\r\n showDialogModal:false\r\n })\r\n }\r\n\r\n render() {\r\n return (\r\n
\r\n \r\n quit\r\n \r\n \r\n
\r\n Do you want to quit?
\r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n )\r\n }\r\n}\r\n\r\nconst mapDispatchToProps = (dispatch) => ({\r\n gotoLoginPage: () => dispatch(setPageType(pageTypes.login)),\r\n clearUser: () => dispatch(clearUser())\r\n});\r\n\r\nexport const QuitButton = connect(null, mapDispatchToProps)(_QuitButton)\r\n","import React from 'react';\r\nimport { connect } from 'react-redux'\r\nimport { getCurrentLesson, getLessonPage } from '../../store/LessonReducer';\r\nimport { getPageType } from '../../store/UiReducer';\r\n\r\nexport class _PrintTestButton extends React.Component {\r\n printWindow = (lessonName) => {\r\n const currentTitle = document.title;\r\n document.title = lessonName;\r\n window.print();\r\n document.title = currentTitle;\r\n }\r\n\r\n render() {\r\n const page = this.props.currentLesson.pages[this.props.lessonPage];\r\n const lessonName = this.props.currentLesson.name;\r\n console.log(\"_PrintTestButton\", this.props)\r\n return (\r\n
\r\n { this.props.currentPageType === 'lesson'\r\n && page && page.type === 'test'\r\n && page.testQuestions && page.testQuestions.length > 4 &&\r\n this.printWindow(lessonName)}>\r\n print blank test\r\n \r\n }\r\n
\r\n )\r\n }\r\n}\r\n\r\nconst mapStateToProps = (state) => ({\r\n currentLesson: getCurrentLesson(state),\r\n lessonPage: getLessonPage(state),\r\n currentPageType: getPageType(state),\r\n});\r\n\r\nexport const PrintTestButton = connect(mapStateToProps, null)(_PrintTestButton);\r\n","import React from 'react';\r\n\r\nexport class ProgressButton extends React.Component {\r\n render() {\r\n const { visible, onClick, disabled } = this.props;\r\n return (\r\n
\r\n { visible && \r\n \r\n student progress report\r\n \r\n }\r\n
\r\n )\r\n }\r\n}\r\n","import React from 'react';\r\nimport { connect } from 'react-redux';\r\nimport { RoundButton } from './RoundButton';\r\nimport { getShowHelp, setShowHelp } from '../../store/UiReducer';\r\n\r\n\r\nexport class _HelpButton extends React.Component {\r\n \r\n constructor(props) {\r\n super(props);\r\n\r\n this.timeout = null;\r\n }\r\n \r\n onClick = () => {\r\n if(!this.props.showHelp) {\r\n console.log(\"SHOW HELP\");\r\n this.props.setShowHelp(true);\r\n this.timeout = setTimeout(() => {\r\n this.props.setShowHelp(false);\r\n this.timeout = null;\r\n }, 10000);\r\n } else {\r\n console.log(\"HIDE HELP\");\r\n if(this.timeout) {\r\n console.log(\"cancel timer\");\r\n clearTimeout(this.timeout);\r\n this.timeout = null;\r\n }\r\n this.props.setShowHelp(false);\r\n }\r\n }\r\n\r\n render() {\r\n return (\r\n this.onClick() }\r\n { ...this.props }>\r\n help\r\n \r\n )\r\n }\r\n}\r\n\r\nconst mapStateToProps = (state) => ({\r\n showHelp: getShowHelp(state)\r\n});\r\n\r\nconst mapDispatchToProps = (dispatch) => ({\r\n setShowHelp: (mute) => dispatch(setShowHelp(mute))\r\n});\r\n\r\nexport const HelpButton = connect(mapStateToProps, mapDispatchToProps)(_HelpButton)\r\n","import React from 'react';\r\nimport { RoundButton } from './RoundButton';\r\n\r\nexport class LessonListButton extends React.Component {\r\n\r\n render() {\r\n return (\r\n \r\n lesson list\r\n \r\n )\r\n }\r\n}\r\n","import React from 'react';\r\nimport { RoundButton } from './RoundButton';\r\n\r\nexport class ReplayButton extends React.Component {\r\n\r\n render() {\r\n return (\r\n \r\n do again\r\n \r\n )\r\n }\r\n}\r\n","import React from 'react';\r\nimport { RoundButton } from './RoundButton';\r\n\r\nexport class NextButton extends React.Component {\r\n\r\n render() {\r\n return (\r\n \r\n next\r\n \r\n )\r\n }\r\n}\r\n","import React from 'react';\r\nimport { ButtonPanel } from './ButtonPanel';\r\nimport { BackButton, PlayButton, MuteButton, QuitButton,\r\n PrintTestButton, ProgressButton,\r\n HelpButton, LessonListButton, ReplayButton, NextButton\r\n} from './buttons';\r\nimport {pageDefinitions} from '../../data';\r\n\r\nimport './ButtonToolbar.scss';\r\n\r\nexport class ButtonToolbar extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n\r\n this.state = {\r\n\r\n }\r\n }\r\n\r\n getPageDefinition = () => {\r\n if(pageDefinitions[this.props.currentPage])\r\n return pageDefinitions[this.props.currentPage].buttons;\r\n\r\n return {\r\n back: { enabled: true},\r\n mute: { enabled: true},\r\n play: { enabled: true},\r\n quit: { enabled: true},\r\n printTest: { visible: true, enabled: true},\r\n progressReport: { visible: true, enabled: true},\r\n help: { enabled: true},\r\n lessonList: { enabled: true},\r\n replay: { enabled: true},\r\n next: { enabled: true},\r\n }\r\n }\r\n /* props:\r\n\r\n */\r\n render() {\r\n //console.log(\"ButtonToolbar Controller\", this.state);\r\n //console.log(\"ButtonToolbar Props\", this.props);\r\n\r\n const layout = this.getPageDefinition();\r\n //console.log(\"ButtonToolbar layout\", layout);\r\n\r\n return (\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n )\r\n }\r\n\r\n}\r\n\r\n","import React from 'react';\r\nimport { connect } from 'react-redux';\r\nimport { getPlaying, getMute } from '../store/UiReducer';\r\n\r\nimport './IntroMovie.scss'\r\n\r\nexport class _IntroMovie extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n this.vidRef = React.createRef();\r\n }\r\n componentDidMount() {\r\n this.playVideo();\r\n }\r\n\r\n componentDidUpdate(prevProps) {\r\n if (this.props.isPlaying !== prevProps.isPlaying) {\r\n if (this.props.isPlaying)\r\n this.playVideo();\r\n else\r\n this.pauseVideo();\r\n }\r\n this.vidRef.current.isMute = this.props.isMute;\r\n }\r\n\r\n/*\r\n render() {\r\n console.log(\"Intro Movie State\", this.state);\r\n return
{ this.props.myisPlaying ? 'Movie playing' : 'Movie Paused' }
\r\n }\r\n*/\r\n\r\n onPlayClicked() {\r\n this.playVideo();\r\n }\r\n\r\n onVideoPlaying() {\r\n console.log(\"Video is playing\");\r\n document.getElementById(\"playorpause\").style.display = \"none\";\r\n }\r\n\r\n playVideo() {\r\n console.log(\"IntroMovie: playVideo() called\");\r\n this.vidRef.current.play();\r\n }\r\n pauseVideo() {\r\n console.log(\"IntroMovie: pauseVideo() called:\");\r\n this.vidRef.current.pause();\r\n }\r\n\r\n render() {\r\n const videoFile = \"assets/video/WelcomeTimesAlive.mp4\";\r\n return (\r\n
\r\n \r\n
this.playVideo()}/>\r\n
\r\n )\r\n }\r\n}\r\n\r\nconst mapStateToProps = (state) => ({\r\n isPlaying: getPlaying(state),\r\n isMute: getMute(state)\r\n});\r\n\r\nconst mapDispatchToProps = (dispatch) => ({\r\n});\r\n\r\nexport const IntroMovie = connect(mapStateToProps, mapDispatchToProps)(_IntroMovie)\r\n","export const combineClasses = (...classNames) => classNames.filter(name => !!name).join(' ').trim();\r\n\r\nexport const randomNumber = (min, max) => { \r\n return Math.floor(Math.random() * (max - min) + min); \r\n}","import React from 'react';\r\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\r\nimport {lessonTypes} from '../data';\r\nimport { combineClasses } from '../util';\r\n\r\n/*\r\n props:\r\n lessonType: string\r\n className: string\r\n*/\r\n\r\nexport const LessonIcon = (props) => {\r\n\r\n return (\r\n
\r\n \r\n
\r\n )\r\n}","import React from 'react';\r\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\r\nimport { combineClasses } from '../util';\r\n\r\n/*\r\n props:\r\n status: string\r\n className: string\r\n*/\r\n\r\nexport const ProgressIcon = (props) => {\r\n\r\n const getIcon = () => {\r\n switch (props.status) {\r\n case \"viewed\":\r\n return 'adjust';\r\n case \"completed\":\r\n return [\"fas\", \"check-circle\"];\r\n default:\r\n return [\"far\", \"circle\"];\r\n }\r\n }\r\n\r\n return (\r\n
\r\n \r\n
\r\n )\r\n}","import React from 'react';\r\nimport { connect } from 'react-redux'\r\nimport { LessonIcon } from '../LessonIcon';\r\nimport { ProgressIcon } from '../ProgressIcon';\r\nimport { getSectionStatus } from '../../store/UserReducer'\r\nimport \"./Lesson.scss\";\r\n\r\nexport class _SectionView extends React.Component {\r\n\r\n // props : section, onLessonSelected\r\n\r\n onClear(sectionId) {\r\n console.log(\"SectionView onClear\", sectionId);\r\n this.props.onClearSection(sectionId);\r\n this.setState({...this.state});\r\n }\r\n\r\n render() {\r\n if (this.props.section.type === \"test\" && this.props.status === \"completed\") {\r\n return (\r\n
\r\n
\r\n
{this.props.section.id}
\r\n
{this.props.section.name}
\r\n
{this.props.section.facts}
\r\n
\r\n )\r\n }\r\n return (\r\n
\r\n
this.props.onLessonSelected(`${this.props.section.id}`)}\r\n >\r\n
\r\n
\r\n
{this.props.section.id}
\r\n
{this.props.section.name}
\r\n
{this.props.section.facts}
\r\n
\r\n
\r\n )\r\n }\r\n}\r\n\r\nconst mapStateToProps = (state, ownProps) => ({\r\n status: getSectionStatus(state, ownProps.section.id)\r\n});\r\n\r\nexport const SectionView = connect(mapStateToProps, null)(_SectionView)\r\n","import React from 'react';\r\nimport { SectionView } from './SectionView';\r\nimport './Lesson.scss';\r\n\r\nexport class LessonView extends React.Component {\r\n\r\n // props : lesson, onLessonSelected\r\n\r\n render() {\r\n return (\r\n
\r\n
\r\n
Type
\r\n
Sect.
\r\n
{this.props.lesson.name}
\r\n
Facts
\r\n
\r\n {\r\n this.props.lesson.sections.map((section) => )\r\n }\r\n
\r\n )\r\n }\r\n}\r\n","import React from 'react';\r\nimport './Lesson.scss';\r\n\r\nexport class LessonColumn extends React.Component {\r\n\r\n // props : just renders children\r\n\r\n render() {\r\n return (\r\n
\r\n { this.props.children }\r\n
\r\n )\r\n }\r\n}","import React from 'react';\r\nimport { LessonIcon } from './LessonIcon';\r\nimport { ProgressIcon } from './ProgressIcon';\r\nimport { combineClasses } from '../util';\r\nimport './Legend.scss';\r\n\r\n/*\r\n props: className\r\n*/\r\n\r\nexport const Legend = (props) => {\r\n\r\n return (\r\n
\r\n
Movie
\r\n
Song
\r\n
Quiz
\r\n
Test
\r\n
Viewed
\r\n
Completed
\r\n
\r\n )\r\n}","import React from 'react';\r\nimport Modal from 'react-modal';\r\nimport { connect } from 'react-redux'\r\nimport { Lessons } from '../../Lessons';\r\nimport { LessonView } from './LessonView';\r\nimport { LessonColumn } from './LessonColumn';\r\nimport { clearTestResults } from '../../store/UserReducer'\r\nimport { Legend } from '../Legend';\r\nimport \"./Lesson.scss\";\r\n\r\nconst modalDialogStyles = {\r\n content : {\r\n width: '300px',\r\n top: '50%',\r\n left: '50%',\r\n right: 'auto',\r\n bottom: 'auto',\r\n marginRight: '-50%',\r\n transform: 'translate(-50%, -50%)',\r\n border: '1px solid #0d2d70',\r\n textSize: \"12pt\",\r\n fontWeight: \"600\"\r\n }\r\n};\r\n\r\nconst layout = {\r\n pages: [\r\n {\r\n buttonText: \"12 - 18\",\r\n columns: [\r\n {lessonFirst: 0, lessonLast: 4},\r\n {lessonFirst: 5, lessonLast: 8},\r\n {lessonFirst: 9, lessonLast: 10},\r\n ]\r\n },\r\n {\r\n buttonText: \"1 - 11\",\r\n columns: [\r\n {lessonFirst: 11, lessonLast: 13},\r\n {lessonFirst: 14, lessonLast: 16},\r\n {lessonFirst: 17, lessonLast: 17},\r\n ]\r\n }\r\n ]\r\n};\r\n\r\nexport class _LessonPage extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n console.log(\"LessonPage constructed:\", props);\r\n\r\n this.state = {\r\n password: '',\r\n showClearConfirmModal: false,\r\n showClearPasswordModal: false\r\n };\r\n\r\n this.pageIndex = this.props.pageIndex;\r\n\r\n this.onLessonSelected = this.onLessonSelected.bind(this);\r\n this.onChangePage = this.onChangePage.bind(this);\r\n }\r\n\r\n closePasswordDialog = () => {\r\n this.setState({...this.state, showClearPasswordModal: false})\r\n }\r\n\r\n onChangePage() {\r\n this.pageIndex = this.pageIndex ? 0 : 1;\r\n this.setState({pageIndex: this.pageIndex});\r\n }\r\n\r\n onLessonSelected(lessonId) {\r\n this.props.onLessonSelected(lessonId);\r\n }\r\n\r\n onClearRequested = sectionId => {\r\n this.setState({\r\n ...this.state,\r\n sectionToClear: sectionId,\r\n showClearConfirmModal: true\r\n })\r\n }\r\n\r\n clearSection = () => {\r\n this.props.clearTestResults(this.state.sectionToClear);\r\n }\r\n\r\n onYes = () => {\r\n console.log(\"YES button clicked.\")\r\n this.setState({\r\n ...this.state,\r\n showClearConfirmModal: false,\r\n showClearPasswordModal: true\r\n })\r\n }\r\n\r\n onNo = () => {\r\n this.setState({\r\n ...this.state,\r\n showClearConfirmModal: false\r\n })\r\n }\r\n\r\n onPasswordChange = (event) => {\r\n this.setState({password: event.target.value});\r\n }\r\n\r\n onSubmit = (event) => {\r\n console.log(\"onSubmit, event\", event);\r\n const pw = \"clearresults\" + this.state.sectionToClear;\r\n if (this.state.password !== pw) {\r\n event.preventDefault();\r\n event.stopPropagation();\r\n document.getElementById(\"password-prompt\").style.visibility=\"visible\";\r\n document.getElementById(\"password-input\").focus();\r\n }\r\n else {\r\n event.preventDefault();\r\n event.stopPropagation();\r\n this.clearSection();\r\n this.setState({\r\n ...this.state,\r\n showClearPasswordModal: false\r\n })\r\n }\r\n }\r\n\r\n renderArrowButton() {\r\n if (this.pageIndex) {\r\n return (\r\n
\r\n \r\n \r\n {this.page.buttonText}\r\n \r\n
\r\n );\r\n }\r\n else {\r\n return (\r\n
\r\n \r\n \r\n {this.page.buttonText}\r\n \r\n
\r\n );\r\n }\r\n }\r\n\r\n render() {\r\n this.page = layout.pages[this.pageIndex];\r\n return (\r\n
\r\n
\r\n {\r\n this.page.columns.map((column, index) => {Lessons.lessons.slice(column.lessonFirst, column.lessonLast + 1).map((lesson) => )})\r\n }\r\n
\r\n \r\n {this.renderArrowButton()}\r\n
More
Lessons
\r\n \r\n \r\n
\r\n Do you want to erase the results of this test? This action can not be undone.\r\n
\r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n \r\n
\r\n ×\r\n
\r\n
\r\n

\r\n
\r\n
\r\n The password can be found in the Teacher’s Directions on the Lesson List Page.\r\n
\r\n \r\n
\r\n \r\n
\r\n \r\n
\r\n );\r\n }\r\n}\r\n\r\n\r\nconst mapDispatchToProps = (dispatch) => ({\r\n clearTestResults: (sectionId) => dispatch(clearTestResults(sectionId)),\r\n});\r\n\r\nexport const LessonPage = connect(null, mapDispatchToProps)(_LessonPage)\r\n","import React from 'react';\r\nimport { LessonPage } from './LessonPage';\r\n\r\nexport class LessonList extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n\r\n this.pageIndex = 0;\r\n }\r\n\r\n render() {\r\n return (\r\n \r\n )\r\n }\r\n}\r\n\r\n","import React from 'react'\r\nimport { connect } from 'react-redux';\r\nimport { setPlaying, getPlaying, getMute } from '../store/UiReducer';\r\n\r\nexport class _Movie extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n this.vidRef = React.createRef();\r\n }\r\n componentDidMount() {\r\n console.log(\"Movie component did mount\")\r\n this.playVideo();\r\n }\r\n\r\n componentDidUpdate(prevProps, prevState) {\r\n console.log(\"componentDidUpdate\", prevProps, prevState);\r\n if (this.props.isPlaying)\r\n this.playVideo();\r\n else\r\n this.pauseVideo();\r\n this.vidRef.current.muted = this.props.isMute;\r\n }\r\n\r\n playVideo() {\r\n console.log(\"Movie: playVideo() called\");\r\n //if (this.vidRef.current)\r\n this.vidRef.current.play();\r\n }\r\n pauseVideo() {\r\n console.log(\"Movie: pauseVideo() called:\");\r\n this.vidRef.current.pause();\r\n }\r\n\r\n render() {\r\n const page = this.props.page;\r\n const videoFile = \"assets/video/\" + page.video;\r\n console.log(`should be playing ${videoFile}`)\r\n return (\r\n
\r\n \r\n
\r\n )\r\n }\r\n}\r\n\r\nconst mapStateToProps = (state) => ({\r\n isPlaying: getPlaying(state),\r\n isMute: getMute(state)\r\n});\r\n\r\nconst mapDispatchToProps = (dispatch) => ({\r\n setPlaying: (playing) => dispatch(setPlaying(playing))\r\n});\r\n\r\nexport const Movie = connect(mapStateToProps, mapDispatchToProps)(_Movie)\r\n","import React from 'react';\r\nimport { combineClasses } from '../util';\r\nimport './Equation.scss';\r\n\r\n/*\r\n props:\r\n reportResult(): function return an object { valid: bool, answer: their answer}\r\n text: \r\n direction: \"row | column\", if none specificied uses column\r\n equation {\r\n x: {value: #, input: true|false}\r\n y: {value: #, input: true|false}\r\n }\r\n // input true means show input box, false means show the static value\r\n className: string, style\r\n testComplete: if true show the answer in red if incorrect \r\n showInvalid: if true wrong answers (inputs) are red if incorrect\r\n*/\r\nconst eqSection = {\r\n x : 'x',\r\n y : 'y',\r\n answer : 'answer'\r\n}\r\nexport class Equation extends React.Component {\r\n \r\n constructor(props) {\r\n super(props);\r\n\r\n this.state = {\r\n x: props.equation.x.input ? '' : props.equation.x.value,\r\n y: props.equation.y.input ? '' : props.equation.y.value,\r\n answer: '',\r\n }\r\n }\r\n\r\n answerValid = () => {\r\n // these are our desired values\r\n const x = this.props.equation.x.value;\r\n const y = this.props.equation.y.value;\r\n const answer = x*y;\r\n return answer === parseInt(this.state.answer, 10);\r\n }\r\n\r\n xValid = () => {\r\n // these are our desired values\r\n const x = this.props.equation.x.value;\r\n const y = this.props.equation.y.value;\r\n // the student's answers\r\n const ansX = parseInt(this.state.x, 10);\r\n\r\n if( x === y ) {\r\n return ansX === x;\r\n }\r\n\r\n return (ansX === x || ansX === y)\r\n// if( (x === ansX && y === ansY) || (x === ansY && y === ansX) ) {\r\n }\r\n\r\n yValid = () => {\r\n // these are our desired values\r\n const x = this.props.equation.x.value;\r\n const y = this.props.equation.y.value;\r\n // the student's answers\r\n const ansX = parseInt(this.state.x, 10);\r\n const ansY = parseInt(this.state.y, 10);\r\n\r\n if( x === y ) {\r\n return ansY === y;\r\n }\r\n\r\n // x arbitrarily gets priority\r\n if(this.xValid())\r\n // if x is valid then y has to be the other one\r\n return ( ansX !== ansY && (ansY === x || ansY === y))\r\n else\r\n return (ansY === x || ansY === y)\r\n \r\n }\r\n\r\n componentDidUpdate(prevProps, prevState, snapshot) {\r\n if(this.state !== prevState) {\r\n\r\n if(!this.answerValid()) {\r\n this.props.reportResult({valid: false, answer: this.state.answer});\r\n return;\r\n }\r\n\r\n if( this.yValid() && this.yValid() )\r\n this.props.reportResult({valid: true, answer: this.state.answer});\r\n else\r\n this.props.reportResult({valid: false, answer: this.state.answer});\r\n }\r\n }\r\n\r\n showInvalid = (section) => {\r\n if(this.props.showInvalid) {\r\n if(section === eqSection.answer && !this.answerValid()) {\r\n return 'invalidAnswer';\r\n }\r\n if(section === eqSection.x && !this.xValid()) {\r\n return 'invalidAnswer';\r\n } \r\n if(section === eqSection.y && !this.yValid()) {\r\n return 'invalidAnswer';\r\n } \r\n }\r\n \r\n return null;\r\n }\r\n\r\n render() {\r\n const {x, y} = this.props.equation;\r\n return (\r\n
\r\n
\r\n \r\n {\r\n x.input ?\r\n this.setState({...this.state, x: event.target.value}) }\r\n />\r\n :\r\n \r\n }\r\n
\r\n \r\n {\r\n y.input ?\r\n this.setState({...this.state, y: event.target.value}) }\r\n />\r\n :\r\n \r\n }\r\n
\r\n { this.props.direction === \"row\" && }\r\n {\r\n this.props.testComplete\r\n ?\r\n
\r\n { this.state.answer }\r\n
\r\n :\r\n this.setState({...this.state, answer: event.target.value}) }\r\n />\r\n }\r\n\r\n
\r\n
\r\n )\r\n }\r\n\r\n}","import React from 'react';\r\nimport './TestResult.scss';\r\n\r\n/*\r\n props:\r\n correct\r\n score\r\n time\r\n*/\r\nexport const TestResult = (props) => {\r\n //console.log(\"TestResult props\", props);\r\n return (\r\n
\r\n
\r\n
\r\n
CORRECT
\r\n
{ props.correct }
\r\n
\r\n
\r\n
SCORE
\r\n
{ Math.round(props.score*100) }%
\r\n
\r\n
\r\n
\r\n
\r\n
TIME
\r\n
{ String(Math.floor(props.time / 60)) + ':' + String(props.time % 60).padStart(2, '0') }
\r\n
\r\n
\r\n
\r\n )\r\n}\r\n","import React from 'react';\r\nimport { connect } from 'react-redux';\r\nimport { getMute } from '../store/UiReducer';\r\nimport { randomNumber } from '../util';\r\nimport './AudioPlayer.scss';\r\n\r\nconst AudioPlayerMode = {\r\n 'random': 'random',\r\n 'queue': 'queue'\r\n}\r\n\r\n/* \r\n props:\r\n src: [] of audio files\r\n onAudioComplete: callback fn\r\n*/\r\n\r\nexport const AudioPlayerRandom = (props) => {\r\n return (\r\n \r\n )\r\n}\r\n\r\nexport const AudioPlayerQueue = (props) => {\r\n return (\r\n \r\n )\r\n}\r\n\r\n/* \r\n props:\r\n src: [] of audio files\r\n type: 'random' or 'queue', default is queue\r\n onAudioComplete: callback fn\r\n*/\r\n\r\nclass _AudioPlayer extends React.Component {\r\n\r\n constructor(props) {\r\n super(props);\r\n this.audioRef = React.createRef();\r\n\r\n this.state = {\r\n currentAudio: this.props.mode === AudioPlayerMode.random ? this.pickRandom() : 0\r\n }\r\n }\r\n\r\n pickRandom() {\r\n if(!this.props.src)\r\n return 0;\r\n return randomNumber(0, this.props.src.length-1);\r\n }\r\n\r\n onEnded() {\r\n if(this.props.mode === AudioPlayerMode.random) {\r\n this.setState({currentAudio: this.props.src.length});\r\n } else {\r\n this.setState({currentAudio: this.state.currentAudio+1});\r\n }\r\n }\r\n\r\n componentDidUpdate(prevProps, prevState) {\r\n if(prevProps.isMute && prevProps.isMute !== this.props.isMute)\r\n this.setState({currentAudio: this.props.src.length});\r\n \r\n if(this.props.onAudioComplete && prevState.currentAudio !== this.state.currentAudio && this.state.currentAudio === this.props.src.length)\r\n this.props.onAudioComplete();\r\n }\r\n\r\n componentDidMount() {\r\n if(this.props.isMute)\r\n setTimeout(() => {\r\n this.setState({currentAudio: this.props.src.length});\r\n }, 1000);\r\n }\r\n\r\n render() {\r\n\r\n if(!this.props.isMute && this.props.src && this.state.currentAudio < this.props.src.length)\r\n return (\r\n
\r\n this.onEnded()}\r\n ref={this.audioRef} \r\n src={`assets/audio/${this.props.src[this.state.currentAudio]}`} \r\n type=\"audio/mpeg\" \r\n autoPlay />\r\n
\r\n );\r\n\r\n return null;\r\n }\r\n \r\n}\r\n\r\nconst mapStateToProps = (state) => ({\r\n isMute: getMute(state)\r\n});\r\n\r\nexport const AudioPlayer = connect(mapStateToProps, null)(_AudioPlayer)\r\n","import React from 'react';\r\nimport { AudioPlayerRandom, AudioPlayerQueue } from './AudioPlayer';\r\n\r\n/* props\r\n src: [] of audio files\r\n type: intro | wrong | correct\r\n onAudioComplete: fn()\r\n*/\r\n\r\nexport const AudioTypes = {\r\n intro: 'intro',\r\n wrong: 'wrong',\r\n correct: 'correct',\r\n done: 'done'\r\n}\r\n\r\nexport const GameAudio = (props) => {\r\n const correctFeedback = ['excellent.mp3', 'goodjob.mp3', 'thatsright.mp3'];\r\n const wrongFeedback = ['notquiteright.mp3', 'oopsthinkagain.mp3', 'tryagain.mp3'];\r\n const doneFeedback = ['finishedgoodjob.mp3'];\r\n\r\n switch(props.type) {\r\n case AudioTypes.intro :\r\n return ();\r\n case AudioTypes.correct:\r\n return ();\r\n case AudioTypes.wrong:\r\n return ();\r\n case AudioTypes.done :\r\n return ();\r\n default: return null;\r\n }\r\n}","import React from 'react';\r\nimport { connect } from 'react-redux'\r\nimport Modal from 'react-modal';\r\nimport { Equation } from '../Equation';\r\nimport { TestResult } from './TestResult';\r\nimport { setTestResults } from '../../store/UserReducer';\r\nimport { AudioTypes, GameAudio } from '../GameAudio';\r\n\r\nimport './Test.scss';\r\n\r\nconst customStyles = {\r\n content : {\r\n width: '350px',\r\n top: '50%',\r\n left: '50%',\r\n right: 'auto',\r\n bottom: 'auto',\r\n marginRight: '-50%',\r\n transform: 'translate(-50%, -50%)',\r\n border: '1px solid lightblue'\r\n }\r\n};\r\n\r\nclass _Test extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n\r\n this.state = {\r\n results: [],\r\n showInstructionModal: this.props.page.showInstructions,\r\n startTime: null,\r\n isDone: false,\r\n correct: 0,\r\n score: 0,\r\n elapsed: 0,\r\n audio: AudioTypes.intro,\r\n audioSrc: this.props.page.testAudio,\r\n }\r\n }\r\n\r\n onStartTest() {\r\n this.setState({\r\n ...this.state,\r\n showInstructionModal: false,\r\n startTime: new Date().getTime(),\r\n isDone: false,\r\n correct: 0,\r\n score: 0,\r\n elapsed: 0,\r\n audio: 'none'\r\n })\r\n }\r\n\r\n onDone() {\r\n console.log(\"TEST RESULTS: \", this.state.results);\r\n let nCorrect = 0;\r\n this.state.results.forEach(element => {\r\n if (element.valid)\r\n ++nCorrect;\r\n });\r\n console.log(\"nCorrect:\", nCorrect);\r\n const now = new Date().getTime();\r\n const elapsed = Math.round((now - this.state.startTime) / 1000);\r\n console.log(\"elapsed time\", elapsed);\r\n const score = nCorrect / this.props.page.testQuestions.length;\r\n this.setState({\r\n ...this.state,\r\n isDone: true,\r\n correct: nCorrect,\r\n score: score,\r\n elapsed: elapsed,\r\n audio: AudioTypes.done,\r\n });\r\n this.props.setTestResults(this.props.sectionId, nCorrect, score, elapsed);\r\n this.props.onLessonComplete();\r\n }\r\n\r\n render() {\r\n console.log(\"TEST page state\", this.state);\r\n console.log(\"TEST page props\", this.props);\r\n return (\r\n
\r\n
\r\n {\r\n this.props.page.timeTest && this.state.isDone ?\r\n \r\n \r\n \"\"/\r\n
Click the NEXT button to proceed
\r\n
\r\n :\r\n \r\n
    \r\n
  1. Click start to begin the test
  2. \r\n
  3. Press TAB to move to the next problem.
  4. \r\n
  5. Change an answer by clicking on it.
  6. \r\n
  7. Click DONE to end the test.
  8. \r\n
\r\n \"\"/\r\n \r\n
\r\n }\r\n\r\n
\r\n
\r\n {\r\n this.props.page.testQuestions.map((question, index) =>\r\n
\r\n {\r\n console.log(\"results: \", index, result);\r\n let arr = this.state.results;\r\n arr[index] = result;\r\n this.setState({results: arr})\r\n }}\r\n />\r\n
\r\n {\r\n !this.state.isDone ? ' ' : ( this.state.results[index] && this.state.results[index].valid ) ? ' ' : this.state.results[index] ? question.x*question.y : ' '\r\n }\r\n
\r\n
\r\n )\r\n }\r\n
\r\n \r\n
\r\n {this.props.page.instructions ? this.props.page.instructions.map(line => <>

{line}

) : \"\"}\r\n
\r\n \r\n \r\n \r\n
\r\n )\r\n }\r\n}\r\n\r\nconst mapDispatchToProps = (dispatch) => ({\r\n setTestResults: (sectionId, correct, score, elapsed) => dispatch(setTestResults(sectionId, correct, score, elapsed)),\r\n});\r\n\r\nexport const Test = connect(null, mapDispatchToProps)(_Test);\r\n","import React from 'react';\r\nimport { Equation } from '../Equation';\r\nimport { AudioTypes, GameAudio } from '../GameAudio';\r\nimport { randomNumber } from '../../util';\r\n\r\n/*\r\n props:\r\n onComplete: function callback\r\n image : image to show\r\n audio: audio file\r\n x & y : the math question, ie 3 x 4\r\n*/\r\n\r\nexport class GuessWithPicture extends React.Component {\r\n\r\n constructor(props) {\r\n super(props);\r\n\r\n this.state = {\r\n isValid: false,\r\n showInvalid: false,\r\n audio: AudioTypes.intro,\r\n audioKey: randomNumber(0,1000) // without this subsequent queues to wrong answer won't play\r\n }\r\n }\r\n\r\n onCheck = () => {\r\n if(this.state.isValid)\r\n this.setState({audio: AudioTypes.correct, audioKey: randomNumber(0,1000)});\r\n else\r\n this.setState({showInvalid: true, audio: AudioTypes.wrong, audioKey: randomNumber(0,1000)});\r\n }\r\n\r\n onAudioComplete() {\r\n if(this.state.audio === AudioTypes.correct)\r\n this.props.onComplete();\r\n }\r\n\r\n render() {\r\n const imageFile = \"assets/image/\" + this.props.image;\r\n\r\n return (\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n \"TODO\"\r\n
\r\n
\r\n this.setState({isValid: result.valid})}\r\n showInvalid={this.state.showInvalid}\r\n text=\"Fact:\" />\r\n \r\n
\r\n this.onAudioComplete()}/>\r\n
\r\n )\r\n }\r\n}\r\n","import React from 'react';\r\nimport { Equation } from '../Equation';\r\nimport { AudioTypes, GameAudio } from '../GameAudio';\r\nimport { randomNumber } from '../../util';\r\n\r\n/*\r\n props:\r\n onComplete: function callback\r\n image : image to show\r\n audio: audio file\r\n x & y : the math question, ie 3 x 4\r\n*/\r\n\r\nconst biggerFontStyle = {\r\n fontSize: \"160%\",\r\n fontWeight: \"600\"\r\n};\r\n\r\nexport class GuessNoPicture extends React.Component {\r\n\r\n constructor(props) {\r\n super(props);\r\n\r\n this.state = {\r\n isValid: false,\r\n showInvalid: false,\r\n audio: AudioTypes.intro,\r\n audioKey: randomNumber(0,1000) // without this subsequent queues to wrong answer won't play\r\n }\r\n }\r\n\r\n onCheck = () => {\r\n if(this.state.isValid)\r\n this.setState({audio: AudioTypes.correct, audioKey: randomNumber(0,1000)});\r\n else\r\n this.setState({showInvalid: true, audio: AudioTypes.wrong, audioKey: randomNumber(0,1000)});\r\n }\r\n\r\n onAudioComplete() {\r\n if(this.state.audio === AudioTypes.correct)\r\n this.props.onComplete();\r\n }\r\n\r\n render() {\r\n return (\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n this.setState({isValid: result.valid})}\r\n showInvalid={this.state.showInvalid}\r\n />\r\n \r\n
\r\n this.onAudioComplete()}/>\r\n
\r\n )\r\n }\r\n}\r\n","import React from 'react'\r\nimport { GuessWithPicture } from './GuessWithPicture';\r\nimport { GuessNoPicture } from './GuessNoPicture';\r\nimport './GuessingGame.scss';\r\n\r\nconst pageTypes = {\r\n withPicture: 0,\r\n noPicture: 1,\r\n done: 2\r\n}\r\n\r\nexport class GuessingGame extends React.Component {\r\n\r\n constructor(props) {\r\n super(props);\r\n\r\n this.state = {\r\n page: pageTypes.withPicture,\r\n }\r\n }\r\n\r\n onPageComplete = () => {\r\n if(this.state.page === pageTypes.noPicture) {\r\n console.log(\"Guessing Game Complete \");\r\n this.props.onLessonComplete();\r\n }\r\n else\r\n this.setState({ ...this.state, page: this.state.page+1});\r\n }\r\n\r\n render() {\r\n if(this.state.page === pageTypes.done)\r\n return (\r\n
\r\n lesson complete
\r\n )\r\n\r\n return (\r\n
\r\n {\r\n this.state.page === pageTypes.withPicture ?\r\n \r\n :\r\n \r\n }\r\n
\r\n )\r\n }\r\n}\r\n","import React from 'react';\r\n\r\n/* \r\n props:\r\n instructions: text\r\n hintText: text\r\n*/\r\n\r\nexport class SlidingHeader extends React.Component {\r\n\r\n constructor(props) {\r\n super(props);\r\n\r\n this.state = {\r\n showHint: false\r\n }\r\n }\r\n\r\n onHint() {\r\n this.setState({showHint: true});\r\n setTimeout(() => {\r\n this.setState({showHint: false});\r\n }, 10000);\r\n }\r\n\r\n render() {\r\n return (\r\n
\r\n
\r\n {\r\n this.state.showHint\r\n ?\r\n \r\n :\r\n \r\n \r\n \r\n \r\n }\r\n
\r\n \r\n
\r\n );\r\n }\r\n}","import React from 'react'\r\n\r\n/* props\r\n image: an image file\r\n isCorrect: true or false\r\n onSelected: function callback when clicked\r\n*/\r\n\r\nexport class Slide extends React.Component {\r\n\r\n constructor(props) {\r\n super(props);\r\n\r\n this.state = {\r\n visible: true,\r\n }\r\n }\r\n\r\n render() {\r\n const imageFile = \"assets/image/\" + this.props.image;\r\n return (\r\n
\r\n { this.state.visible &&\r\n \"TODO\" {\r\n this.props.onSelected(this.props.isCorrect);\r\n this.setState({ visible: this.props.isCorrect})\r\n }}/>\r\n }\r\n
\r\n )\r\n }\r\n}\r\n","import React from 'react';\r\nimport { Slide } from './Slide';\r\nimport { AudioTypes, GameAudio } from '../GameAudio';\r\nimport { randomNumber } from '../../util';\r\n\r\n/*\r\n props: \r\n onComplete: function callback\r\n slides : [{ image, isCorrect: bool}]\r\n instructions: text\r\n audio: audio file\r\n*/\r\n\r\nexport class PickOne extends React.Component {\r\n\r\n constructor(props) {\r\n super(props);\r\n\r\n this.state = {\r\n audio: AudioTypes.intro,\r\n audioKey: randomNumber(0,1000) // without this subsequent queues to wrong answer won't play\r\n }\r\n }\r\n\r\n onSlideSelected = (correct) => {\r\n if(correct)\r\n this.setState({audio: AudioTypes.correct, audioKey: randomNumber(0,1000)});\r\n else \r\n this.setState({audio: AudioTypes.wrong, audioKey: randomNumber(0,1000)});\r\n }\r\n\r\n onAudioComplete() {\r\n if(this.state.audio === AudioTypes.correct)\r\n this.props.onComplete();\r\n }\r\n\r\n render() { \r\n return (\r\n
\r\n
\r\n {\r\n this.props.slides.map((slide, index) => )\r\n }\r\n
\r\n this.onAudioComplete()}/>\r\n
\r\n )\r\n }\r\n}\r\n","import React from 'react';\r\nimport { Equation } from '../Equation';\r\nimport { AudioTypes, GameAudio } from '../GameAudio';\r\nimport { randomNumber } from '../../util';\r\n\r\n/*\r\n props: \r\n onComplete: function callback\r\n image : image to show\r\n instructions: text\r\n audio: audio file\r\n x & y : the math question, ie 3 x 4\r\n*/\r\n\r\nexport class MathProblem extends React.Component {\r\n\r\n constructor(props) {\r\n super(props);\r\n\r\n this.state = {\r\n isValid: false,\r\n showInvalid: false,\r\n audio: AudioTypes.intro,\r\n audioKey: randomNumber(0,1000) // without this subsequent queues to wrong answer won't play\r\n }\r\n }\r\n\r\n validateAnswer = () => {\r\n if(this.state.isValid) \r\n this.setState({audio: AudioTypes.correct, audioKey: randomNumber(0,1000)});\r\n else \r\n this.setState({showInvalid: true, audio: AudioTypes.wrong, audioKey: randomNumber(0,1000)});\r\n }\r\n\r\n onAudioComplete() {\r\n if(this.state.audio === AudioTypes.correct)\r\n this.props.onComplete();\r\n }\r\n\r\n render() {\r\n const imageFile = \"assets/image/\" + this.props.image;\r\n\r\n return (\r\n
\r\n
\r\n \"TODO\"\r\n
\r\n
\r\n this.setState({isValid: result.valid})}\r\n showInvalid={this.state.showInvalid}\r\n />\r\n \r\n \r\n
\r\n this.onAudioComplete()}/>\r\n
\r\n )\r\n }\r\n}\r\n","import React from 'react'\r\nimport { SlidingHeader } from './SlidingHeader';\r\nimport { PickOne } from './PickOne';\r\nimport { MathProblem } from './MathProblem';\r\nimport './SlidingPicture.scss';\r\n\r\nconst pageTypes = {\r\n pickOne: 0,\r\n mathProblem: 1,\r\n done: 2\r\n}\r\n\r\nexport class SlidingPicture extends React.Component {\r\n\r\n constructor(props) {\r\n super(props);\r\n\r\n this.state = {\r\n page: pageTypes.pickOne,\r\n }\r\n }\r\n\r\n onPageComplete = () => {\r\n if(this.state.page === pageTypes.mathProblem) {\r\n this.setState({ ...this.state, page: pageTypes.pickOne });\r\n this.props.onLessonComplete();\r\n }\r\n else\r\n this.setState({ ...this.state, page: this.state.page+1});\r\n }\r\n\r\n render() {\r\n console.log(\"Sliding Picture \", this.props);\r\n const correctAnswer = this.props.page.slides.find((slide) => slide.isCorrect === true);\r\n\r\n if(this.state.page === pageTypes.done)\r\n return (\r\n
lesson complete
\r\n );\r\n\r\n return (\r\n
\r\n \r\n {\r\n this.state.page === pageTypes.pickOne ? \r\n \r\n :\r\n \r\n }\r\n
\r\n );\r\n }\r\n}\r\n","import React from 'react';\r\nimport { connect } from 'react-redux'\r\nimport { getCurrentLesson, getLessonPage, advanceLesson } from '../store/LessonReducer';\r\nimport { markSectionViewed, markSectionComplete } from '../store/UserReducer'\r\nimport { Movie } from './Movie';\r\nimport { Test } from './Test';\r\nimport { GuessingGame } from './GuessingGame';\r\nimport { SlidingPicture } from './SlidingPicture';\r\nimport { Lessons } from '../Lessons';\r\n\r\nclass _Lesson extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n\r\n this.state = {\r\n\r\n }\r\n }\r\n\r\n onLessonPageComplete = () => {\r\n console.log(\"onLessonComplete()\");\r\n console.log(\"props\", this.props);\r\n if (this.props.currentLesson.pages[this.props.lessonPage].recordProgress)\r\n this.props.markSectionCompleted(this.props.currentLesson.id);\r\n if (this.props.currentLesson.pages[this.props.lessonPage].autoAdvance)\r\n this.props.advanceLesson(this.props.currentLesson.id, this.props.lessonPage);\r\n }\r\n\r\n render() {\r\n console.log(\"Lesson Props\", this.props);\r\n console.log(\"Last Lesson:\", Lessons.isLastPage(this.props.currentLesson.id, this.props.lessonPage));\r\n console.log(\"First Lesson:\", Lessons.isFirstPage(this.props.currentLesson.id, this.props.lessonPage));\r\n console.log(\"Lesson Page\", this.props.currentLesson.pages[this.props.lessonPage]);\r\n const page = this.props.currentLesson.pages[this.props.lessonPage];\r\n if(page === undefined) {\r\n return null;\r\n }\r\n\r\n this.props.markSectionViewed(this.props.currentLesson.id);\r\n\r\n switch (page.type) {\r\n case \"movie\":\r\n return ();\r\n case \"test\":\r\n return ();\r\n case \"guessinggame\":\r\n return ();\r\n case \"slidingpicture\":\r\n return ();\r\n default:\r\n return (
Error!
);\r\n }\r\n }\r\n}\r\n\r\nconst mapStateToProps = (state) => ({\r\n currentLesson: getCurrentLesson(state),\r\n lessonPage: getLessonPage(state)\r\n});\r\n\r\nconst mapDispatchToProps = (dispatch) => ({\r\n advanceLesson: (lessonid, pageid) => dispatch(advanceLesson(lessonid, pageid)),\r\n markSectionViewed: (sectionid) => dispatch(markSectionViewed(sectionid)),\r\n markSectionCompleted: (sectionid) => dispatch(markSectionComplete(sectionid))\r\n});\r\n\r\nexport const Lesson = connect(mapStateToProps, mapDispatchToProps)(_Lesson)\r\n","import React from 'react';\r\nimport { connect } from 'react-redux';\r\nimport { LessonIcon } from '../LessonIcon';\r\nimport { ProgressIcon } from '../ProgressIcon';\r\nimport { getSectionResults } from '../../store/UserReducer';\r\nimport './ProgressSection.scss';\r\n\r\nclass _ProgressSection extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n\r\n this.state = {\r\n\r\n }\r\n }\r\n\r\n formatScore = () => {\r\n const { results } = this.props;\r\n if(results.testResults && results.testResults.score !== null)\r\n return Math.round(results.testResults.score*100) + '%';\r\n return '';\r\n }\r\n\r\n formatDate = () => {\r\n const { results } = this.props;\r\n if(results.completedOn) {\r\n const completed = new Date(results.completedOn);\r\n return `${completed.getMonth()+1}/${completed.getDate()}/${completed.getFullYear()}`;\r\n }\r\n return '';\r\n }\r\n\r\n formatTime = () => {\r\n const { results } = this.props;\r\n if(results.testResults && results.testResults.time)\r\n return String(Math.floor(results.testResults.time / 60)) + ':' + String(results.testResults.time % 60).padStart(2, '0');\r\n return '';\r\n }\r\n\r\n render() {\r\n const { results } = this.props;\r\n\r\n return (\r\n
\r\n
\r\n
\r\n
{this.props.section.id}
\r\n
{this.props.section.name}
\r\n
{this.props.section.facts}
\r\n
{ this.formatDate() }
\r\n {\r\n this.props.section.type === 'test'\r\n ?\r\n \r\n
{ results.testResults && results.testResults.correct }
\r\n
{ this.formatScore() }
\r\n
{ this.formatTime() }
\r\n
\r\n :\r\n
\r\n }\r\n
\r\n )\r\n }\r\n}\r\n\r\nconst mapStateToProps = (state, ownProps) => ({\r\n results: getSectionResults(state, ownProps.section.id)\r\n});\r\n\r\nexport const ProgressSection = connect(mapStateToProps, null)(_ProgressSection)\r\n","import React from 'react';\r\nimport { ProgressSection } from './ProgressSection';\r\nimport './ProgressLesson.scss';\r\n/*\r\n props: lesson\r\n*/\r\nexport const ProgressLesson = (props) => {\r\n \r\n return (\r\n
\r\n
{ props.lesson.name }
\r\n {\r\n props.lesson.sections.map((section) => )\r\n }\r\n \r\n
\r\n )\r\n \r\n}\r\n","import React from 'react';\r\nimport { connect } from 'react-redux';\r\nimport { Lessons } from '../../Lessons';\r\nimport { getCurrentUser } from '../../store/UserReducer';\r\nimport { ProgressLesson } from './ProgressLesson';\r\nimport { Legend } from '../Legend';\r\n\r\nimport './ProgressReport.scss';\r\n\r\nclass _ProgressReport extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n\r\n this.state = {\r\n\r\n }\r\n }\r\n\r\n printWindow = () => {\r\n const currentTitle = document.title;\r\n document.title = \"Progress Report\";\r\n window.print();\r\n document.title = currentTitle;\r\n }\r\n\r\n render() {\r\n return (\r\n
\r\n
\r\n
\r\n
Type
\r\n
Sect
\r\n
Lesson Description
\r\n
Facts
\r\n
Date
\r\n
Correct
\r\n
Score
\r\n
Time
\r\n
\r\n {\r\n Lessons.lessons.map((lesson) => )\r\n }\r\n
\r\n
\r\n
PROGRESS REPORT FOR:
\r\n
{this.props.currentUser ? this.props.currentUser : 'Demo'}
\r\n \r\n \r\n
\r\n
\r\n )\r\n }\r\n}\r\n\r\nconst mapStateToProps = (state) => ({\r\n currentUser: getCurrentUser(state)\r\n});\r\n\r\nexport const ProgressReport = connect(mapStateToProps, null)(_ProgressReport)\r\n","import React from 'react';\r\nimport './TeacherDirections.scss'\r\n\r\nexport class TeacherDirections extends React.Component {\r\n\r\n printWindow = () => {\r\n const currentTitle = document.title;\r\n document.title = \"Teacher's Directions\";\r\n window.print();\r\n document.title = currentTitle;\r\n }\r\n\r\nrender() {\r\n return (\r\n
\r\n
\r\n
\r\n

Program Objective

\r\n
    \r\n
  1. Student will commit the multiplication facts to long-term memory with rapid recall.
  2. \r\n
  3. Student will develop a positive attitude toward math prompted by the success and entertainment value of the program.
  4. \r\n
  5. Student will have the tools to succeed in math because they will have the nuts and bolts, basic facts committed to memory.
  6. \r\n
  7. Student will apply these tools to all future mathematical operations including division, fractions, algebra, and onward.
  8. \r\n
\r\n

How to Use This Program

\r\n
    \r\n
  1. After the welcome screen the student will login with the teacher's username or email address. When signing up, pick an easy username to make it simple for students to login.
  2. \r\n
  3. When the student enters their unique name under Student’s Name, their record is created.
  4. \r\n
  5. After login, the student will be directed to a personalized lesson list which will show where the student left off and which lessons are completed. The student must always login with the exact same Student Name to keep track and record progress and scores.
  6. \r\n
  7. The student will resume lessons by clicking on the first lesson with an empty circle in the left column of the Lesson List.
  8. \r\n
  9. If a lesson has been viewed but not completed, the circle will be half filled.
  10. \r\n
  11. The column labeled \"FACTS\" on the Lesson List shows which facts will be addressed in each lesson.
  12. \r\n
  13. The student should follow the lesson order to ensure that the material on the tests has been covered.
  14. \r\n
  15. If it has been determined through the pretest, Nuts and Bolts Test, that the student already knows the facts addressed in the lesson, the student may skip those lessons, but should still adhere to the prescribed lesson order.
  16. \r\n
\r\n

How to Use the Progress Report

\r\n
    \r\n
  1. The Progress Report is a running record of the lessons the student has completed. It will show:
  2. \r\n
      \r\n
    1. Lesson completion
    2. \r\n
    3. Date of completion
    4. \r\n
    \r\n
\r\n
\r\n
\r\n
    \r\n
      \r\n
    1. Test scores including number correct and percent score
    2. \r\n
    3. Time elapsed during the test administration
    4. \r\n
    \r\n
  1. Several of the tests are taken twice during the program. Compare the student's scores on the Progress Report with the previously taken test. The second score should have a faster time or higher score than the first. If this is not the case, have the student repeat the lesson pertaining to the test. The tests that are taken twice are: One Two Buckle My Shoe, Man Alive Try the Fives, and Nines in a Line.
  2. \r\n
  3. The Progress Report may be printed at the end of each lesson or at any time during the program.
  4. \r\n
\r\n

Clear Test Function

\r\n
    \r\n
  1. If you would like a test re-taken, you may click on the Clear button that appears next to the completed test on the Lesson List.
  2. \r\n
  3. To eliminate the student's clearing their own test scores, the program will ask for a password to re-set the test and erase the previous results. The password is clearresultsxx where xx is the lesson number i.e., 1b.
  4. \r\n
\r\n

Accessing Student Records

\r\n
    \r\n
  • You may enter the Times Alive Membership Area — onlinetimesalive.com from any computer. Login with your email address or username and the student’s exact name to view or print the individual’s progress report.
  • \r\n
\r\n

Online Times Alive Memberships

\r\n
    \r\n
  • Monthly subscriptions run until cancelled. Subscribers can cancel, renew, or update their subscription at any time by visiting citycreek.com/my-account. Each teacher may use their account for up to 30 students. It is a violation of the terms of agreement to share the account among teachers or entire schools or districts.
  • \r\n
\r\n
\r\n
\r\n \r\n
\r\n );\r\n }\r\n}\r\n","import React from 'react';\r\nimport { connect } from 'react-redux';\r\nimport { getCurrentLesson, getLessonPage } from '../store/LessonReducer';\r\nimport { getCurrentUser } from '../store/UserReducer';\r\nimport { getPageType } from '../store/UiReducer';\r\nimport { pageTypes } from '../data';\r\nimport \"./Header.scss\";\r\n\r\nclass _Header extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n\r\n this.state = {\r\n\r\n }\r\n }\r\n\r\n renderHeader() {\r\n switch (this.props.pageType) {\r\n case pageTypes.introMovie:\r\n return \"Welcome to Times Alive!\";\r\n case pageTypes.login:\r\n return \"Version 2.01\";\r\n case pageTypes.lessonList:\r\n return \"Times Alive Lesson List\";\r\n case pageTypes.lesson:\r\n const lesson = this.props.currentLesson;\r\n console.log(\"lesson\", lesson);\r\n return \r\n Lesson\r\n {lesson.id}\r\n {lesson.name}\r\n \r\n case pageTypes.progressReport:\r\n return \"Student Progress Report\";\r\n case pageTypes.teacherDirections:\r\n return \"Times Alive Program Directions\";\r\n default:\r\n return ''\r\n }\r\n }\r\n\r\n render() {\r\n console.log(\"Header State\", this.props)\r\n return (\r\n
\r\n
\r\n \"Times\r\n { this.props.pageType === pageTypes.progressReport &&\r\n
\r\n STUDENT: { this.props.currentUser ? this.props.currentUser : 'Demo' }\r\n
\r\n }\r\n
\r\n {this.renderHeader()}\r\n
\r\n
\r\n
\r\n
\r\n
City Creek | Press
\r\n
www.citycreek.com
\r\n
\r\n
\r\n
\r\n )\r\n }\r\n}\r\n\r\nconst mapStateToProps = (state) => ({\r\n currentLesson: getCurrentLesson(state),\r\n lessonPage: getLessonPage(state),\r\n pageType: getPageType(state),\r\n currentUser: getCurrentUser(state)\r\n});\r\n\r\nexport const Header = connect(mapStateToProps, null)(_Header)\r\n","import Progress from './Progress'\r\n\r\n//const uri = \"onlinetimesalivebackend-prod.us-east-2.elasticbeanstalk.com/api/api\"\r\nconst uri = \"/api/api\"\r\n//const uri = \"https://localhost:44317/api/api\"\r\n//const uri = \"http://localhost:63230/api\"\r\n\r\nexport default class Api {\r\n\r\n static checkSubscription(teacherId) {\r\n //TODO: See if email address is active:\r\n // POST to\r\n // { \"plan\": \"online-times-alive\", \"email\": \"whatevertheemailis\"}\r\n // Content-Type: application/json\r\n let status;\r\n const url = \"https://www.citycreek.com/wp-json/citycreek/v1/memberships/status\";\r\n\r\n let request = new XMLHttpRequest();\r\n request.open(\"POST\", url, false);\r\n request.setRequestHeader(\"Content-Type\", \"application/json;charset=UTF-8\");\r\n request.onload = function() {\r\n if (this.readyState === 4) {\r\n if (this.status === 200) {\r\n let resp = request.response;\r\n status = JSON.parse(resp);\r\n }\r\n }\r\n }\r\n request.send(JSON.stringify({ \"email\": `\"${teacherId}\"`, \"plan\": \"online-times-alive\" }));\r\n return status;\r\n }\r\n\r\n static loginUser(teacherId, studentName) {\r\n\r\n let user = undefined;\r\n const url = `${uri}/Students/${teacherId}/${studentName}`;\r\n console.log(\"Invoking GET from\", url);\r\n\r\n let request = new XMLHttpRequest();\r\n //request.responseType = \"json\";\r\n request.open(\"GET\", url, false);\r\n request.onload = function() {\r\n if (this.readyState === 4) {\r\n if (this.status === 200 || this.status === 201) {\r\n let resp = request.response;\r\n user = JSON.parse(resp);\r\n }\r\n }\r\n };\r\n request.send(null);\r\n if (user) {\r\n user.progress = JSON.parse(user.progress);\r\n }\r\n else {\r\n user = {\r\n userName: studentName,\r\n studentId: null,\r\n teacherId: null,\r\n progress: Progress.getDefault()\r\n }\r\n }\r\n return user;\r\n }\r\n\r\n static saveProgress(studentId, progress) {\r\n const json = JSON.stringify(progress);\r\n const url = `${uri}/Students/Progress/${studentId}`;\r\n fetch(url, {\r\n method: 'PATCH',\r\n headers: {'Content-Type': 'text/plain'},\r\n body: json\r\n })\r\n .then(response => console.log(response))\r\n .then(function(response) {\r\n console.log(\"OK\");\r\n })\r\n .catch(error => console.error(\"Failed to update progress.\", error));\r\n }\r\n}\r\n","import React from 'react';\r\nimport { connect } from 'react-redux';\r\nimport { getProgress, getCurrentUserDbId } from '../store/UserReducer';\r\nimport Api from '../Api'\r\n\r\nclass _ProgressMonitor extends React.Component {\r\n\r\n componentDidUpdate(prevProps, prevState, snapshot) {\r\n if (prevProps.progress !== this.props.progress && prevProps.userId === this.props.userId) {\r\n console.log(\"Saving Progress\");\r\n Api.saveProgress(this.props.userId, this.props.progress);\r\n }\r\n }\r\n\r\n render() {\r\n return null;\r\n }\r\n}\r\n\r\nconst mapStateToProps = (state) => ({\r\n userId: getCurrentUserDbId(state),\r\n progress: getProgress(state),\r\n});\r\n\r\nexport const ProgressMonitor = connect(mapStateToProps, null)(_ProgressMonitor)\r\n","import React from 'react';\r\nimport Modal from 'react-modal';\r\nimport { connect } from 'react-redux';\r\nimport { setCurrentUser, setProgress, setCurrentUserDbId, setTeacherDbId } from '../store/UserReducer';\r\nimport Api from '../Api';\r\nimport Progress from '../Progress';\r\nimport './LoginPage.scss';\r\n\r\nconst loginDialogStyles = {\r\n content : {\r\n width: '400px',\r\n top: '50%',\r\n left: '50%',\r\n right: 'auto',\r\n bottom: 'auto',\r\n marginRight: '-50%',\r\n transform: 'translate(-50%, -50%)',\r\n border: '1px solid #0d2d70',\r\n }\r\n};\r\n\r\nexport class _LoginPage extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n console.log(\"LoginPage\", props);\r\n\r\n this.state = {\r\n teacherId: '',\r\n userName: '',\r\n showLoginModal: false,\r\n showSubscribeModal: false,\r\n error: false,\r\n errorMessage: ''\r\n };\r\n }\r\n\r\n closeDialog = () => {\r\n this.setState({...this.state, showLoginModal: false, errorMessage: ''});\r\n }\r\n\r\n showError = (text, focusId) => {\r\n document.getElementById(focusId).focus();\r\n this.setState({...this.state, errorMessage: text, error: true})\r\n }\r\n\r\n hideError = () => {\r\n this.setState({...this.state, errorMessage: '', error: false});\r\n }\r\n\r\n showNoSubscription = () => {\r\n this.setState({...this.state, showSubscribeModal: true})\r\n }\r\n\r\n hideNoSubscription = () => {\r\n this.setState({...this.state, showSubscribeModal: false})\r\n }\r\n\r\n onSubmit = (event) => {\r\n console.log(\"onSubmit, event\", event);\r\n this.hideError();\r\n if (this.state.teacherId.trim() === '') {\r\n event.preventDefault();\r\n event.stopPropagation();\r\n this.showError(\"Type your member's email or username\", \"teacher-input\");\r\n }\r\n else if (this.state.userName.trim() === '') {\r\n event.preventDefault();\r\n event.stopPropagation();\r\n this.showError(\"Type the student's full name\", \"login-input\");\r\n }\r\n else {\r\n event.preventDefault();\r\n event.stopPropagation();\r\n try {\r\n console.time(\"checkSubscription\");\r\n const status = Api.checkSubscription(this.state.teacherId.trim());\r\n console.timeEnd(\"checkSubscription\");\r\n if (status) {\r\n if (status.success && ( status.status === \"Active\"\r\n || status.status === \"Pending Cancellation\"\r\n || status.status === \"Free Trial\"\r\n || status.status === \"Complimentary\")) {\r\n console.time(\"loginUser\");\r\n const user = Api.loginUser(status.email, this.state.userName.trim());\r\n console.timeEnd(\"loginUser\");\r\n console.log(\"LOGIN GOT A USER \", user);\r\n if (user.teacherId) {\r\n if (user.studentId) {\r\n this.setState({\r\n ...this.state,\r\n showLoginModal: false\r\n });\r\n this.props.setUser(user.name);\r\n this.props.setUserDbId(user.studentId);\r\n this.props.setTeacherDbId(user.teacherId);\r\n this.props.setProgress(user.progress);\r\n this.props.newUserLogin(this.state.teacherId, this.state.userName);\r\n }\r\n else {\r\n this.showError(\"Unknown Student or Member\", \"teacher-input\");\r\n }\r\n }\r\n else {\r\n this.showError(\"Unknown Member\", \"teacher-input\");\r\n }\r\n }\r\n else { // subscription status is not \"Active\"\r\n this.showNoSubscription();\r\n }\r\n }\r\n else { // API call to get subscription status failed\r\n this.showNoSubscription();\r\n }\r\n\r\n }\r\n catch (error) {\r\n console.log(\"caught error:\", error);\r\n this.showError(\"Are you sure you're connected to the internet?\", \"teacher-input\");\r\n }\r\n }\r\n }\r\n\r\n onTryIt = () => {\r\n this.props.setProgress(Progress.getDefault());\r\n this.props.newUserLogin('');\r\n }\r\n\r\n onLogin = () => {\r\n this.setState({\r\n ...this.state,\r\n showLoginModal: true\r\n })\r\n }\r\n\r\n onChangeTeacherId = (event) => {\r\n //console.log(\"LoginPage onChangeTeacherId\", event.target.value);\r\n this.setState({teacherId: event.target.value});\r\n }\r\n onChangeUserName = (event) => {\r\n //console.log(\"LoginPage onChangeUserName\", event.target.value);\r\n this.setState({userName: event.target.value});\r\n }\r\n\r\n render() {\r\n console.log(\"LoginPage render()\")\r\n return (\r\n
\r\n \"\"\r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n ×\r\n
\r\n
\r\n

\r\n
\r\n

\r\n
\r\n \r\n {\r\n this.state.error &&\r\n
{this.state.errorMessage}
\r\n }\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n OOPS! We don’t have a membership for that email address. Try again or sign up at\r\n https://www.citycreek.com/shop.

\r\n
\r\n \r\n \r\n
\r\n );\r\n }\r\n}\r\n\r\n\r\nconst mapDispatchToProps = (dispatch) => ({\r\n setUser: (userName) => dispatch(setCurrentUser(userName)),\r\n setProgress: (progress) => dispatch(setProgress(progress)),\r\n setUserDbId: (id) => dispatch(setCurrentUserDbId(id)),\r\n setTeacherDbId: (id) => dispatch(setTeacherDbId(id))\r\n});\r\n\r\nexport const LoginPage = connect(null, mapDispatchToProps)(_LoginPage)\r\n","import React from \"react\";\r\nimport './App.css';\r\nimport { connect } from 'react-redux'\r\nimport { pageTypes } from './data';\r\nimport { IntroMovie, ButtonToolbar, LessonList, Lesson, ProgressMonitor,\r\n Header, TeacherDirections, ProgressReport } from './components';\r\nimport { LoginPage } from './pages';\r\nimport { getPageType, setPageType } from './store/UiReducer';\r\nimport { getCurrentLesson, getLessonPage, setCurrentLessonAndPage, \r\n advanceLesson, retreatLesson } from './store/LessonReducer';\r\nimport { setCurrentUser, setTeacherId, getCurrentUserDbId } from './store/UserReducer'\r\n\r\nclass _TimesAlive extends React.Component {\r\n\r\n constructor(props) {\r\n super(props);\r\n\r\n this.state = {\r\n lessonTag: 100\r\n }\r\n }\r\n onIntroComplete = () => {\r\n console.log(\"Intro Movie complete\");\r\n this.props.setPageType(pageTypes.login);\r\n }\r\n\r\n onUserLogin = (teacherId, user) => {\r\n console.log(\"User Logged in\", teacherId, user);\r\n this.props.setPageType(pageTypes.lessonList);\r\n }\r\n\r\n onLessonSelected = (id) => {\r\n console.log(\"Lesson \" + id + \" selected\");\r\n this.props.setLessonAndPage(id, 0);\r\n this.props.setPageType(pageTypes.lesson);\r\n }\r\n\r\n onBack = () => {\r\n console.log(\"back button!\");\r\n console.log(\"pageType\", this.props.currentPageType);\r\n switch (this.props.currentPageType) {\r\n case pageTypes.login:\r\n this.props.setPageType(pageTypes.introMovie);\r\n break;\r\n case pageTypes.lesson: {\r\n this.props.retreatLesson(this.props.currentLesson.id, this.props.lessonPage);\r\n break;\r\n }\r\n case pageTypes.teacherDirections:\r\n this.props.setPageType(pageTypes.lessonList);\r\n break;\r\n default:\r\n // do nothing\r\n }\r\n }\r\n\r\n onNext = () => {\r\n console.log(\"next button!\");\r\n console.log(\"props\", this.props);\r\n switch (this.props.currentPageType) {\r\n case pageTypes.lesson:\r\n this.props.advanceLesson(this.props.currentLesson.id, this.props.lessonPage);\r\n break;\r\n case pageTypes.introMovie:\r\n this.props.setPageType(pageTypes.login);\r\n break;\r\n default:\r\n //\r\n }\r\n }\r\n\r\n onLessonList = () => {\r\n console.log(\"LessonList button!\");\r\n this.props.setPageType(pageTypes.lessonList);\r\n }\r\n\r\n onTeacherInstruction = () => {\r\n console.log(\"TeacherInstr button!\");\r\n this.props.setPageType(pageTypes.teacherDirections);\r\n }\r\n\r\n onProgressReport = () => {\r\n console.log(\"Progress Report button!\");\r\n this.props.setPageType(pageTypes.progressReport);\r\n }\r\n\r\n onReplay = () => {\r\n console.log(\"On Replay!\", this.state.lessonTag);\r\n this.setState({lessonTag: this.state.lessonTag+1});\r\n }\r\n\r\n renderPage = () => {\r\n console.log(\"currentPage: \" + this.props.currentPageType);\r\n switch(this.props.currentPageType) {\r\n case pageTypes.introMovie:\r\n return ();\r\n case pageTypes.login:\r\n return ();\r\n case pageTypes.lessonList:\r\n return ();\r\n case pageTypes.lesson:\r\n return ();\r\n case pageTypes.teacherDirections:\r\n return ();\r\n case pageTypes.progressReport:\r\n return ();\r\n default:\r\n return ();\r\n }\r\n }\r\n\r\n render() {\r\n return (\r\n
\r\n {\r\n this.props.userId && \r\n }\r\n
\"Times
\r\n
\r\n
\r\n {\r\n this.renderPage()\r\n }\r\n
\r\n
\r\n \r\n
\r\n
\r\n );\r\n }\r\n}\r\n\r\nconst mapStateToProps = (state) => ({\r\n currentLesson: getCurrentLesson(state),\r\n lessonPage: getLessonPage(state),\r\n currentPageType: getPageType(state),\r\n userId: getCurrentUserDbId(state)\r\n});\r\n\r\nconst mapDispatchToProps = (dispatch) => ({\r\n setLessonAndPage: (lessonId, pageIndex) => dispatch(setCurrentLessonAndPage(lessonId, pageIndex)),\r\n setPageType: (pageType) => dispatch(setPageType(pageType)),\r\n advanceLesson: (lessonid, pageid) => dispatch(advanceLesson(lessonid, pageid)),\r\n retreatLesson: (lessonid, pageid) => dispatch(retreatLesson(lessonid, pageid)),\r\n setTeacherId: (teacherId) => dispatch(setTeacherId(teacherId)),\r\n setCurrentUser: (user) => dispatch(setCurrentUser(user))\r\n});\r\n\r\nexport const TimesAlive = connect(mapStateToProps, mapDispatchToProps)(_TimesAlive)\r\n","import React from 'react';\r\nimport { TimesAlive } from './timesalive';\r\nimport './App.css';\r\n\r\nimport { library } from '@fortawesome/fontawesome-svg-core'\r\nimport { faSync, faArrowLeft, faArrowRight, faQuestion, faFolderOpen,\r\n faTimes, faVolumeMute, faVolumeDown, faPlay, faPause,\r\n faVideo, faMusic, faAdjust, faCheckCircle } from '@fortawesome/free-solid-svg-icons'\r\n import { faCircle, faFileAlt } from '@fortawesome/free-regular-svg-icons'\r\n library.add(faSync, faArrowLeft, faArrowRight, faQuestion, faFolderOpen,\r\n faTimes, faVolumeMute, faVolumeDown, faPlay, faPause, faVideo,\r\n faMusic, faFileAlt, faCircle, faAdjust, faCheckCircle);\r\n\r\nconst anchorStyle = {\r\n color: 'white',\r\n textDecoration: 'none'\r\n};\r\nfunction App() {\r\n console.log(\"App render\");\r\n return (\r\n
\r\n
\r\n \r\n Online Times Alive Member's Area\r\n
\r\n
\r\n
\r\n \r\n \"City\r\n \r\n
\r\n \r\n \"Times\r\n
\r\n
\r\n \r\n
\r\n
\r\n
   © 2020 City Creek Press, Inc.
\r\n
\r\n );\r\n}\r\n\r\nexport default App;\r\n","// This optional code is used to register a service worker.\r\n// register() is not called by default.\r\n\r\n// This lets the app load faster on subsequent visits in production, and gives\r\n// it offline capabilities. However, it also means that developers (and users)\r\n// will only see deployed updates on subsequent visits to a page, after all the\r\n// existing tabs open on the page have been closed, since previously cached\r\n// resources are updated in the background.\r\n\r\n// To learn more about the benefits of this model and instructions on how to\r\n// opt-in, read https://bit.ly/CRA-PWA\r\n\r\nconst isLocalhost = Boolean(\r\n window.location.hostname === 'localhost' ||\r\n // [::1] is the IPv6 localhost address.\r\n window.location.hostname === '[::1]' ||\r\n // 127.0.0.0/8 are considered localhost for IPv4.\r\n window.location.hostname.match(\r\n /^127(?:\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/\r\n )\r\n);\r\n\r\nexport function register(config) {\r\n if (process.env.NODE_ENV === 'production' && 'serviceWorker' in navigator) {\r\n // The URL constructor is available in all browsers that support SW.\r\n const publicUrl = new URL(process.env.PUBLIC_URL, window.location.href);\r\n if (publicUrl.origin !== window.location.origin) {\r\n // Our service worker won't work if PUBLIC_URL is on a different origin\r\n // from what our page is served on. This might happen if a CDN is used to\r\n // serve assets; see https://github.com/facebook/create-react-app/issues/2374\r\n return;\r\n }\r\n\r\n window.addEventListener('load', () => {\r\n const swUrl = `${process.env.PUBLIC_URL}/service-worker.js`;\r\n\r\n if (isLocalhost) {\r\n // This is running on localhost. Let's check if a service worker still exists or not.\r\n checkValidServiceWorker(swUrl, config);\r\n\r\n // Add some additional logging to localhost, pointing developers to the\r\n // service worker/PWA documentation.\r\n navigator.serviceWorker.ready.then(() => {\r\n console.log(\r\n 'This web app is being served cache-first by a service ' +\r\n 'worker. To learn more, visit https://bit.ly/CRA-PWA'\r\n );\r\n });\r\n } else {\r\n // Is not localhost. Just register service worker\r\n registerValidSW(swUrl, config);\r\n }\r\n });\r\n }\r\n}\r\n\r\nfunction registerValidSW(swUrl, config) {\r\n navigator.serviceWorker\r\n .register(swUrl)\r\n .then(registration => {\r\n registration.onupdatefound = () => {\r\n const installingWorker = registration.installing;\r\n if (installingWorker == null) {\r\n return;\r\n }\r\n installingWorker.onstatechange = () => {\r\n if (installingWorker.state === 'installed') {\r\n if (navigator.serviceWorker.controller) {\r\n // At this point, the updated precached content has been fetched,\r\n // but the previous service worker will still serve the older\r\n // content until all client tabs are closed.\r\n console.log(\r\n 'New content is available and will be used when all ' +\r\n 'tabs for this page are closed. See https://bit.ly/CRA-PWA.'\r\n );\r\n\r\n // Execute callback\r\n if (config && config.onUpdate) {\r\n config.onUpdate(registration);\r\n }\r\n } else {\r\n // At this point, everything has been precached.\r\n // It's the perfect time to display a\r\n // \"Content is cached for offline use.\" message.\r\n console.log('Content is cached for offline use.');\r\n\r\n // Execute callback\r\n if (config && config.onSuccess) {\r\n config.onSuccess(registration);\r\n }\r\n }\r\n }\r\n };\r\n };\r\n })\r\n .catch(error => {\r\n console.error('Error during service worker registration:', error);\r\n });\r\n}\r\n\r\nfunction checkValidServiceWorker(swUrl, config) {\r\n // Check if the service worker can be found. If it can't reload the page.\r\n fetch(swUrl, {\r\n headers: { 'Service-Worker': 'script' },\r\n })\r\n .then(response => {\r\n // Ensure service worker exists, and that we really are getting a JS file.\r\n const contentType = response.headers.get('content-type');\r\n if (\r\n response.status === 404 ||\r\n (contentType != null && contentType.indexOf('javascript') === -1)\r\n ) {\r\n // No service worker found. Probably a different app. Reload the page.\r\n navigator.serviceWorker.ready.then(registration => {\r\n registration.unregister().then(() => {\r\n window.location.reload();\r\n });\r\n });\r\n } else {\r\n // Service worker found. Proceed as normal.\r\n registerValidSW(swUrl, config);\r\n }\r\n })\r\n .catch(() => {\r\n console.log(\r\n 'No internet connection found. App is running in offline mode.'\r\n );\r\n });\r\n}\r\n\r\nexport function unregister() {\r\n if ('serviceWorker' in navigator) {\r\n navigator.serviceWorker.ready\r\n .then(registration => {\r\n registration.unregister();\r\n })\r\n .catch(error => {\r\n console.error(error.message);\r\n });\r\n }\r\n}\r\n","import React from 'react';\r\nimport ReactDOM from 'react-dom';\r\nimport { Provider } from 'react-redux';\r\nimport { Store } from './store/Store';\r\nimport './index.css';\r\nimport App from './App';\r\nimport * as serviceWorker from './serviceWorker';\r\n\r\nconst store = Store();\r\n\r\nReactDOM.render(\r\n \r\n \r\n \r\n \r\n ,\r\n document.getElementById('root')\r\n);\r\n\r\n// If you want your app to work offline and load faster, you can change\r\n// unregister() to register() below. Note this comes with some pitfalls.\r\n// Learn more about service workers: https://bit.ly/CRA-PWA\r\nserviceWorker.unregister();\r\n"],"sourceRoot":""}