-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy path.eslintcache
1 lines (1 loc) · 118 KB
/
.eslintcache
1
[{"C:\\Users\\FiercePC\\WebstormProjects\\epic-learning-and-engagement-tool\\src\\index.js":"1","C:\\Users\\FiercePC\\WebstormProjects\\epic-learning-and-engagement-tool\\src\\App.js":"2","C:\\Users\\FiercePC\\WebstormProjects\\epic-learning-and-engagement-tool\\src\\Login-Register\\Signup.js":"3","C:\\Users\\FiercePC\\WebstormProjects\\epic-learning-and-engagement-tool\\src\\Student\\pages\\StudentModules.js":"4","C:\\Users\\FiercePC\\WebstormProjects\\epic-learning-and-engagement-tool\\src\\Student\\pages\\StudentDeadlines.js":"5","C:\\Users\\FiercePC\\WebstormProjects\\epic-learning-and-engagement-tool\\src\\Student\\pages\\StudentThreads.js":"6","C:\\Users\\FiercePC\\WebstormProjects\\epic-learning-and-engagement-tool\\src\\Student\\pages\\StudentResults.js":"7","C:\\Users\\FiercePC\\WebstormProjects\\epic-learning-and-engagement-tool\\src\\Student\\pages\\StudentHome.js":"8","C:\\Users\\FiercePC\\WebstormProjects\\epic-learning-and-engagement-tool\\src\\Student\\pages\\GiveFeedbackModuleList.js":"9","C:\\Users\\FiercePC\\WebstormProjects\\epic-learning-and-engagement-tool\\src\\Student\\pages\\StudentDiscussionBoard.js":"10","C:\\Users\\FiercePC\\WebstormProjects\\epic-learning-and-engagement-tool\\src\\Student\\pages\\GiveFeedbackPage.js":"11","C:\\Users\\FiercePC\\WebstormProjects\\epic-learning-and-engagement-tool\\src\\Student\\pages\\StudentAssignment.js":"12","C:\\Users\\FiercePC\\WebstormProjects\\epic-learning-and-engagement-tool\\src\\Student\\pages\\StudentAssignmentView.js":"13","C:\\Users\\FiercePC\\WebstormProjects\\epic-learning-and-engagement-tool\\src\\Student\\pages\\StudentAssignmentDetails.js":"14","C:\\Users\\FiercePC\\WebstormProjects\\epic-learning-and-engagement-tool\\src\\Admin\\pages\\AdminAnalytics.js":"15","C:\\Users\\FiercePC\\WebstormProjects\\epic-learning-and-engagement-tool\\src\\Admin\\pages\\AdminHome.js":"16","C:\\Users\\FiercePC\\WebstormProjects\\epic-learning-and-engagement-tool\\src\\Admin\\pages\\AdminClasses.js":"17","C:\\Users\\FiercePC\\WebstormProjects\\epic-learning-and-engagement-tool\\src\\Admin\\pages\\AdminDiscussionBoard.js":"18","C:\\Users\\FiercePC\\WebstormProjects\\epic-learning-and-engagement-tool\\src\\Admin\\pages\\ViewFeedbackModuleList.js":"19","C:\\Users\\FiercePC\\WebstormProjects\\epic-learning-and-engagement-tool\\src\\Admin\\pages\\ViewFeedbackPage.js":"20","C:\\Users\\FiercePC\\WebstormProjects\\epic-learning-and-engagement-tool\\src\\Admin\\pages\\AdminAssignments.js":"21","C:\\Users\\FiercePC\\WebstormProjects\\epic-learning-and-engagement-tool\\src\\Admin\\pages\\AdminThreads.js":"22","C:\\Users\\FiercePC\\WebstormProjects\\epic-learning-and-engagement-tool\\src\\Admin\\pages\\ViewAssignments.js":"23","C:\\Users\\FiercePC\\WebstormProjects\\epic-learning-and-engagement-tool\\src\\Admin\\pages\\AssignmentDetails.js":"24","C:\\Users\\FiercePC\\WebstormProjects\\epic-learning-and-engagement-tool\\src\\firebase.js":"25","C:\\Users\\FiercePC\\WebstormProjects\\epic-learning-and-engagement-tool\\src\\Login-Register\\SignupComponent.js":"26","C:\\Users\\FiercePC\\WebstormProjects\\epic-learning-and-engagement-tool\\src\\Student\\NavBar\\StudentNavBar.js":"27","C:\\Users\\FiercePC\\WebstormProjects\\epic-learning-and-engagement-tool\\src\\DataAnalysis\\Graph.js":"28","C:\\Users\\FiercePC\\WebstormProjects\\epic-learning-and-engagement-tool\\src\\Student\\components\\StudentThreadsList.js":"29","C:\\Users\\FiercePC\\WebstormProjects\\epic-learning-and-engagement-tool\\src\\Student\\components\\GiveFeedbackModuleListComp.js":"30","C:\\Users\\FiercePC\\WebstormProjects\\epic-learning-and-engagement-tool\\src\\Student\\components\\DiscussionBoard.js":"31","C:\\Users\\FiercePC\\WebstormProjects\\epic-learning-and-engagement-tool\\src\\Student\\components\\StudentAssignmentModuleList.js":"32","C:\\Users\\FiercePC\\WebstormProjects\\epic-learning-and-engagement-tool\\src\\Student\\components\\DeadlinesFetch.js":"33","C:\\Users\\FiercePC\\WebstormProjects\\epic-learning-and-engagement-tool\\src\\Student\\components\\GiveFeedbackPageComp.js":"34","C:\\Users\\FiercePC\\WebstormProjects\\epic-learning-and-engagement-tool\\src\\Student\\components\\GiveGeneralFeedback.js":"35","C:\\Users\\FiercePC\\WebstormProjects\\epic-learning-and-engagement-tool\\src\\Student\\components\\StudentAssignmentList.js":"36","C:\\Users\\FiercePC\\WebstormProjects\\epic-learning-and-engagement-tool\\src\\Student\\components\\StudentAssignmentDetailsComp.js":"37","C:\\Users\\FiercePC\\WebstormProjects\\epic-learning-and-engagement-tool\\src\\Admin\\NavBar\\AdminNavBar.js":"38","C:\\Users\\FiercePC\\WebstormProjects\\epic-learning-and-engagement-tool\\src\\Admin\\components\\AssignmentDetailsPage.js":"39","C:\\Users\\FiercePC\\WebstormProjects\\epic-learning-and-engagement-tool\\src\\Admin\\components\\AssignmentsListed.js":"40","C:\\Users\\FiercePC\\WebstormProjects\\epic-learning-and-engagement-tool\\src\\Admin\\components\\Threads.js":"41","C:\\Users\\FiercePC\\WebstormProjects\\epic-learning-and-engagement-tool\\src\\Admin\\components\\ViewFeedbackPageComp.js":"42","C:\\Users\\FiercePC\\WebstormProjects\\epic-learning-and-engagement-tool\\src\\Admin\\components\\createThread.js":"43","C:\\Users\\FiercePC\\WebstormProjects\\epic-learning-and-engagement-tool\\src\\Admin\\components\\deleteThread.js":"44","C:\\Users\\FiercePC\\WebstormProjects\\epic-learning-and-engagement-tool\\src\\Admin\\components\\AssignmentList.js":"45","C:\\Users\\FiercePC\\WebstormProjects\\epic-learning-and-engagement-tool\\src\\Admin\\components\\AssignmentForm.js":"46","C:\\Users\\FiercePC\\WebstormProjects\\epic-learning-and-engagement-tool\\src\\Admin\\components\\ModuleThreadsListComp.js":"47","C:\\Users\\FiercePC\\WebstormProjects\\epic-learning-and-engagement-tool\\src\\Admin\\components\\Assignments.js":"48","C:\\Users\\FiercePC\\WebstormProjects\\epic-learning-and-engagement-tool\\src\\Student\\NavBar\\StudentMenuItems.js":"49","C:\\Users\\FiercePC\\WebstormProjects\\epic-learning-and-engagement-tool\\src\\Login-Register\\Logout.js":"50","C:\\Users\\FiercePC\\WebstormProjects\\epic-learning-and-engagement-tool\\src\\Admin\\NavBar\\AdminMenuItems.js":"51","C:\\Users\\FiercePC\\WebstormProjects\\epic-learning-and-engagement-tool\\src\\Admin\\components\\ModuleGroup.js":"52","C:\\Users\\FiercePC\\WebstormProjects\\epic-learning-and-engagement-tool\\src\\Admin\\components\\ModulePage.js":"53","C:\\Users\\FiercePC\\WebstormProjects\\epic-learning-and-engagement-tool\\src\\Admin\\components\\createModule.js":"54","C:\\Users\\FiercePC\\WebstormProjects\\epic-learning-and-engagement-tool\\src\\Admin\\components\\deleteModule.js":"55","C:\\Users\\FiercePC\\WebstormProjects\\epic-learning-and-engagement-tool\\src\\DataAnalysis\\Median.js":"56","C:\\Users\\FiercePC\\WebstormProjects\\epic-learning-and-engagement-tool\\src\\DataAnalysis\\Quartiles.js":"57","C:\\Users\\FiercePC\\WebstormProjects\\epic-learning-and-engagement-tool\\src\\DataAnalysis\\BarChart.js":"58","C:\\Users\\FiercePC\\WebstormProjects\\epic-learning-and-engagement-tool\\src\\Student\\components\\StudentModuleGroup.js":"59","C:\\Users\\FiercePC\\WebstormProjects\\epic-learning-and-engagement-tool\\src\\Student\\components\\StudentModulePage.js":"60","C:\\Users\\FiercePC\\WebstormProjects\\epic-learning-and-engagement-tool\\src\\DataAnalysis\\TestingEasySolution.js":"61","C:\\Users\\FiercePC\\WebstormProjects\\epic-learning-and-engagement-tool\\src\\DataAnalysis\\SimpleBarFormat.js":"62","C:\\Users\\FiercePC\\WebstormProjects\\epic-learning-and-engagement-tool\\src\\Student\\components\\welcomeUser.js":"63","C:\\Users\\FiercePC\\WebstormProjects\\epic-learning-and-engagement-tool\\src\\Admin\\components\\AdminGetSubmissions.js":"64","C:\\Users\\FiercePC\\WebstormProjects\\epic-learning-and-engagement-tool\\src\\Admin\\components\\FinishedGrading.js":"65","C:\\Users\\FiercePC\\WebstormProjects\\epic-learning-and-engagement-tool\\src\\Student\\components\\AssignmentSubmit.js":"66","C:\\Users\\FiercePC\\WebstormProjects\\epic-learning-and-engagement-tool\\src\\Admin\\components\\AdminSubmissionDisplay.js":"67","C:\\Users\\FiercePC\\WebstormProjects\\epic-learning-and-engagement-tool\\src\\DataAnalysis\\AdminGraph.js":"68","C:\\Users\\FiercePC\\WebstormProjects\\epic-learning-and-engagement-tool\\src\\DataAnalysis\\AdminEasySolution.js":"69","C:\\Users\\FiercePC\\WebstormProjects\\epic-learning-and-engagement-tool\\src\\DataAnalysis\\AdminBarFormat.js":"70","C:\\Users\\FiercePC\\WebstormProjects\\epic-learning-and-engagement-tool\\src\\DataAnalysis\\AdminBarChart.js":"71"},{"size":432,"mtime":1611836440275,"results":"72","hashOfConfig":"73"},{"size":4154,"mtime":1611836439421,"results":"74","hashOfConfig":"73"},{"size":5440,"mtime":1611859391949,"results":"75","hashOfConfig":"73"},{"size":422,"mtime":1611836440547,"results":"76","hashOfConfig":"73"},{"size":776,"mtime":1611836440026,"results":"77","hashOfConfig":"73"},{"size":521,"mtime":1611836440570,"results":"78","hashOfConfig":"73"},{"size":464,"mtime":1611836440185,"results":"79","hashOfConfig":"73"},{"size":5491,"mtime":1611859206085,"results":"80","hashOfConfig":"73"},{"size":496,"mtime":1611859206072,"results":"81","hashOfConfig":"73"},{"size":1084,"mtime":1611836439709,"results":"82","hashOfConfig":"73"},{"size":3295,"mtime":1611836439581,"results":"83","hashOfConfig":"73"},{"size":677,"mtime":1611859392291,"results":"84","hashOfConfig":"73"},{"size":1183,"mtime":1611859392088,"results":"85","hashOfConfig":"73"},{"size":1462,"mtime":1611859392170,"results":"86","hashOfConfig":"73"},{"size":536,"mtime":1611859392021,"results":"87","hashOfConfig":"73"},{"size":4787,"mtime":1611836439376,"results":"88","hashOfConfig":"73"},{"size":383,"mtime":1611859391890,"results":"89","hashOfConfig":"73"},{"size":1033,"mtime":1611836439513,"results":"90","hashOfConfig":"73"},{"size":435,"mtime":1611859577794,"results":"91","hashOfConfig":"73"},{"size":1234,"mtime":1611836440058,"results":"92","hashOfConfig":"73"},{"size":624,"mtime":1611859391969,"results":"93","hashOfConfig":"73"},{"size":646,"mtime":1611836440207,"results":"94","hashOfConfig":"73"},{"size":1180,"mtime":1611859577772,"results":"95","hashOfConfig":"73"},{"size":1703,"mtime":1611859391996,"results":"96","hashOfConfig":"73"},{"size":771,"mtime":1611836440139,"results":"97","hashOfConfig":"73"},{"size":3073,"mtime":1611836440328,"results":"98","hashOfConfig":"73"},{"size":1368,"mtime":1611859392114,"results":"99","hashOfConfig":"73"},{"size":421,"mtime":1611836439981,"results":"100","hashOfConfig":"73"},{"size":1572,"mtime":1611836439860,"results":"101","hashOfConfig":"73"},{"size":1623,"mtime":1611836439735,"results":"102","hashOfConfig":"73"},{"size":4846,"mtime":1611836439539,"results":"103","hashOfConfig":"73"},{"size":1656,"mtime":1611859392047,"results":"104","hashOfConfig":"73"},{"size":3898,"mtime":1611836440358,"results":"105","hashOfConfig":"73"},{"size":3637,"mtime":1611836440456,"results":"106","hashOfConfig":"73"},{"size":1913,"mtime":1611836440004,"results":"107","hashOfConfig":"73"},{"size":2910,"mtime":1611859392039,"results":"108","hashOfConfig":"73"},{"size":2088,"mtime":1611859577761,"results":"109","hashOfConfig":"73"},{"size":1265,"mtime":1611836439937,"results":"110","hashOfConfig":"73"},{"size":2084,"mtime":1611859577697,"results":"111","hashOfConfig":"73"},{"size":4462,"mtime":1611859392135,"results":"112","hashOfConfig":"73"},{"size":1456,"mtime":1611836440065,"results":"113","hashOfConfig":"73"},{"size":2273,"mtime":1611859577805,"results":"114","hashOfConfig":"73"},{"size":2106,"mtime":1611836439961,"results":"115","hashOfConfig":"73"},{"size":1082,"mtime":1611836439490,"results":"116","hashOfConfig":"73"},{"size":4880,"mtime":1611836439466,"results":"117","hashOfConfig":"73"},{"size":6568,"mtime":1611859577735,"results":"118","hashOfConfig":"73"},{"size":1778,"mtime":1611836440594,"results":"119","hashOfConfig":"73"},{"size":1527,"mtime":1611859392363,"results":"120","hashOfConfig":"73"},{"size":633,"mtime":1611836440427,"results":"121","hashOfConfig":"73"},{"size":481,"mtime":1611859392419,"results":"122","hashOfConfig":"73"},{"size":557,"mtime":1611836439606,"results":"123","hashOfConfig":"73"},{"size":1958,"mtime":1611859391976,"results":"124","hashOfConfig":"73"},{"size":2066,"mtime":1611859392096,"results":"125","hashOfConfig":"73"},{"size":2541,"mtime":1611859392298,"results":"126","hashOfConfig":"73"},{"size":907,"mtime":1611859577817,"results":"127","hashOfConfig":"73"},{"size":549,"mtime":1611836440164,"results":"128","hashOfConfig":"73"},{"size":859,"mtime":1611836440237,"results":"129","hashOfConfig":"73"},{"size":3130,"mtime":1611836439649,"results":"130","hashOfConfig":"73"},{"size":1546,"mtime":1611859391871,"results":"131","hashOfConfig":"73"},{"size":1059,"mtime":1611859392392,"results":"132","hashOfConfig":"73"},{"size":4742,"mtime":1611859577749,"results":"133","hashOfConfig":"73"},{"size":1640,"mtime":1611859577722,"results":"134","hashOfConfig":"73"},{"size":1188,"mtime":1611859577672,"results":"135","hashOfConfig":"73"},{"size":1972,"mtime":1611859392356,"results":"136","hashOfConfig":"73"},{"size":1673,"mtime":1611859392317,"results":"137","hashOfConfig":"73"},{"size":4186,"mtime":1611859577684,"results":"138","hashOfConfig":"73"},{"size":4198,"mtime":1611859392411,"results":"139","hashOfConfig":"73"},{"size":292,"mtime":1611859392154,"results":"140","hashOfConfig":"73"},{"size":3148,"mtime":1611859392271,"results":"141","hashOfConfig":"73"},{"size":1500,"mtime":1611859392068,"results":"142","hashOfConfig":"73"},{"size":3080,"mtime":1611859392252,"results":"143","hashOfConfig":"73"},{"filePath":"144","messages":"145","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"146"},"1d00lhk",{"filePath":"147","messages":"148","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"146"},{"filePath":"149","messages":"150","errorCount":0,"warningCount":3,"fixableErrorCount":0,"fixableWarningCount":0,"source":"151","usedDeprecatedRules":"146"},{"filePath":"152","messages":"153","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"146"},{"filePath":"154","messages":"155","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"146"},{"filePath":"156","messages":"157","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"146"},{"filePath":"158","messages":"159","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"146"},{"filePath":"160","messages":"161","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"146"},{"filePath":"162","messages":"163","errorCount":0,"warningCount":2,"fixableErrorCount":0,"fixableWarningCount":0,"source":"164","usedDeprecatedRules":"146"},{"filePath":"165","messages":"166","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"146"},{"filePath":"167","messages":"168","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"146"},{"filePath":"169","messages":"170","errorCount":0,"warningCount":2,"fixableErrorCount":0,"fixableWarningCount":0,"source":"171","usedDeprecatedRules":"146"},{"filePath":"172","messages":"173","errorCount":0,"warningCount":2,"fixableErrorCount":0,"fixableWarningCount":0,"source":"174","usedDeprecatedRules":"146"},{"filePath":"175","messages":"176","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"146"},{"filePath":"177","messages":"178","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"146"},{"filePath":"179","messages":"180","errorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":"181","usedDeprecatedRules":"146"},{"filePath":"182","messages":"183","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"146"},{"filePath":"184","messages":"185","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"146"},{"filePath":"186","messages":"187","errorCount":0,"warningCount":3,"fixableErrorCount":0,"fixableWarningCount":0,"source":"188","usedDeprecatedRules":"146"},{"filePath":"189","messages":"190","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"146"},{"filePath":"191","messages":"192","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"146"},{"filePath":"193","messages":"194","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"146"},{"filePath":"195","messages":"196","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"146"},{"filePath":"197","messages":"198","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"146"},{"filePath":"199","messages":"200","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"146"},{"filePath":"201","messages":"202","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"146"},{"filePath":"203","messages":"204","errorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":"205","usedDeprecatedRules":"146"},{"filePath":"206","messages":"207","errorCount":0,"warningCount":2,"fixableErrorCount":0,"fixableWarningCount":0,"source":"208","usedDeprecatedRules":"146"},{"filePath":"209","messages":"210","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"146"},{"filePath":"211","messages":"212","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"146"},{"filePath":"213","messages":"214","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"146"},{"filePath":"215","messages":"216","errorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":"217","usedDeprecatedRules":"146"},{"filePath":"218","messages":"219","errorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":"220","usedDeprecatedRules":"146"},{"filePath":"221","messages":"222","errorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":"223","usedDeprecatedRules":"146"},{"filePath":"224","messages":"225","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"146"},{"filePath":"226","messages":"227","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"146"},{"filePath":"228","messages":"229","errorCount":0,"warningCount":3,"fixableErrorCount":0,"fixableWarningCount":0,"source":"230","usedDeprecatedRules":"146"},{"filePath":"231","messages":"232","errorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":"233","usedDeprecatedRules":"146"},{"filePath":"234","messages":"235","errorCount":0,"warningCount":3,"fixableErrorCount":0,"fixableWarningCount":0,"source":"236","usedDeprecatedRules":"146"},{"filePath":"237","messages":"238","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"146"},{"filePath":"239","messages":"240","errorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":"241","usedDeprecatedRules":"146"},{"filePath":"242","messages":"243","errorCount":0,"warningCount":2,"fixableErrorCount":0,"fixableWarningCount":0,"source":"244","usedDeprecatedRules":"146"},{"filePath":"245","messages":"246","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"146"},{"filePath":"247","messages":"248","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"146"},{"filePath":"249","messages":"250","errorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":"251","usedDeprecatedRules":"146"},{"filePath":"252","messages":"253","errorCount":0,"warningCount":2,"fixableErrorCount":0,"fixableWarningCount":0,"source":"254","usedDeprecatedRules":"146"},{"filePath":"255","messages":"256","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"146"},{"filePath":"257","messages":"258","errorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":"259","usedDeprecatedRules":"146"},{"filePath":"260","messages":"261","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"146"},{"filePath":"262","messages":"263","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"146"},{"filePath":"264","messages":"265","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"146"},{"filePath":"266","messages":"267","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"146"},{"filePath":"268","messages":"269","errorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":"270","usedDeprecatedRules":"146"},{"filePath":"271","messages":"272","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"146"},{"filePath":"273","messages":"274","errorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":"275","usedDeprecatedRules":"146"},{"filePath":"276","messages":"277","errorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":"278","usedDeprecatedRules":"146"},{"filePath":"279","messages":"280","errorCount":0,"warningCount":3,"fixableErrorCount":0,"fixableWarningCount":0,"source":"281","usedDeprecatedRules":"282"},{"filePath":"283","messages":"284","errorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":"285","usedDeprecatedRules":"146"},{"filePath":"286","messages":"287","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"146"},{"filePath":"288","messages":"289","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"146"},{"filePath":"290","messages":"291","errorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":"292","usedDeprecatedRules":"146"},{"filePath":"293","messages":"294","errorCount":0,"warningCount":2,"fixableErrorCount":0,"fixableWarningCount":0,"source":"295","usedDeprecatedRules":"146"},{"filePath":"296","messages":"297","errorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":"298","usedDeprecatedRules":"146"},{"filePath":"299","messages":"300","errorCount":0,"warningCount":2,"fixableErrorCount":0,"fixableWarningCount":0,"source":"301","usedDeprecatedRules":"146"},{"filePath":"302","messages":"303","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"146"},{"filePath":"304","messages":"305","errorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":"306","usedDeprecatedRules":"146"},{"filePath":"307","messages":"308","errorCount":0,"warningCount":2,"fixableErrorCount":0,"fixableWarningCount":0,"source":"309","usedDeprecatedRules":"146"},{"filePath":"310","messages":"311","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"146"},{"filePath":"312","messages":"313","errorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":"314","usedDeprecatedRules":"146"},{"filePath":"315","messages":"316","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"146"},{"filePath":"317","messages":"318","errorCount":0,"warningCount":2,"fixableErrorCount":0,"fixableWarningCount":0,"source":"319","usedDeprecatedRules":"146"},"C:\\Users\\FiercePC\\WebstormProjects\\epic-learning-and-engagement-tool\\src\\index.js",[],["320","321"],"C:\\Users\\FiercePC\\WebstormProjects\\epic-learning-and-engagement-tool\\src\\App.js",[],"C:\\Users\\FiercePC\\WebstormProjects\\epic-learning-and-engagement-tool\\src\\Login-Register\\Signup.js",["322","323","324"],"import React, { useEffect, useState } from \"react\";\r\nimport SignupComponent from \"./SignupComponent\";\r\nimport StudentHome from \"../Student/pages/StudentHome\";\r\nimport firebase, { db } from \"../firebase\";\r\nimport AdminHome from \"../Admin/pages/AdminHome\";\r\n\r\nexport default function Signup() {\r\n const [user, setUser] = useState();\r\n const [email, setEmail] = useState(\"\");\r\n const [password, setPassword] = useState(\"\");\r\n const [username, setUsername] = useState(\"\");\r\n const [emailError, setEmailError] = useState(\"\");\r\n const [passError, setPassError] = useState(\"\");\r\n const [hasAccount, setHasAccount] = useState(true);\r\n const [adminPass, setAdminPass] = useState(\"\");\r\n const [adminCheck, setAdminCheck] = useState(false);\r\n\r\n const clearInputs = () => {\r\n setEmail(\"\");\r\n setPassword(\"\");\r\n setUsername(\"\");\r\n setAdminPass(\"\");\r\n };\r\n\r\n const clearErrors = () => {\r\n setEmailError(\"\");\r\n setPassError(\"\");\r\n };\r\n\r\n const handleLogin = () => {\r\n clearErrors();\r\n firebase\r\n .auth()\r\n .signInWithEmailAndPassword(email, password)\r\n .then((pull) => {\r\n const usersId = firebase.auth().currentUser.uid;\r\n db.collection(\"UserDetails\")\r\n .doc(usersId)\r\n .get()\r\n .then((doc) => {\r\n const adminCheck = doc.data().isAdmin;\r\n console.log(\"IsAdmin Check: \", adminCheck);\r\n console.log(\"UsersID: \", usersId);\r\n setAdminCheck(adminCheck);\r\n });\r\n })\r\n .catch((err) => {\r\n switch (err.code) {\r\n case \"auth/invalid-email\":\r\n case \"auth/user-disabled\":\r\n case \"auth/user-not-found\":\r\n setEmailError(err.message);\r\n break;\r\n case \"auth/wrong-password\":\r\n setPassError(err.message);\r\n break;\r\n }\r\n });\r\n };\r\n\r\n const handleSignup = () => {\r\n const emailInput = email;\r\n const usernameInput = username;\r\n clearErrors();\r\n\r\n let isAdminTrue = false;\r\n\r\n let adminKey = \"\";\r\n db.collection(\"Admin\")\r\n .doc(\"AdminKey\")\r\n .get()\r\n .then((doc) => {\r\n adminKey = doc.data().currentKey.toString();\r\n\r\n if (adminPass === adminKey) {\r\n isAdminTrue = true;\r\n setAdminCheck(true);\r\n }\r\n\r\n console.log(\"Is Admin Check: \", isAdminTrue);\r\n firebase\r\n .auth()\r\n .createUserWithEmailAndPassword(email, password)\r\n .then((pull) => {\r\n const usersId = firebase.auth().currentUser.uid;\r\n\r\n console.log(\"Users ID\", usersId);\r\n console.log(\"users Email\", email);\r\n console.log(\"Username: \", username);\r\n\r\n db.collection(\"UserDetails\")\r\n .doc(usersId)\r\n .set({\r\n username: usernameInput,\r\n email: emailInput,\r\n isAdmin: isAdminTrue,\r\n })\r\n .then(function () {})\r\n .catch(function (error) {\r\n console.log(error);\r\n });\r\n })\r\n .catch((err) => {\r\n switch (err.code) {\r\n case \"auth/email-already-in-use\":\r\n case \"auth/invalid-email\":\r\n setEmailError(err.message);\r\n break;\r\n case \"auth/weak-password\":\r\n setPassError(err.message);\r\n break;\r\n }\r\n });\r\n });\r\n };\r\n\r\n useEffect(() => {\r\n console.log(\"use effect start\");\r\n authListener();\r\n }, []);\r\n\r\n const authListener = () => {\r\n console.log(\"auth listener\");\r\n firebase.auth().onAuthStateChanged((user) => {\r\n if (user) {\r\n setUser(user);\r\n\r\n clearInputs();\r\n } else {\r\n }\r\n });\r\n };\r\n\r\n return (\r\n <div className=\"AppLogin\">\r\n {user && adminCheck === false ? (\r\n <StudentHome />\r\n ) : user && adminCheck === true ? (\r\n <AdminHome />\r\n ) : (\r\n <SignupComponent\r\n email={email}\r\n setEmail={setEmail}\r\n password={password}\r\n setPassword={setPassword}\r\n handleLogin={handleLogin}\r\n handleSignup={handleSignup}\r\n hasAccount={hasAccount}\r\n setHasAccount={setHasAccount}\r\n emailError={emailError}\r\n setEmailError={setEmailError}\r\n passError={passError}\r\n setPassError={setPassError}\r\n adminPass={adminPass}\r\n setAdminPass={setAdminPass}\r\n username={username}\r\n setUsername={setUsername}\r\n />\r\n )}\r\n </div>\r\n );\r\n}\r\n","C:\\Users\\FiercePC\\WebstormProjects\\epic-learning-and-engagement-tool\\src\\Student\\pages\\StudentModules.js",[],"C:\\Users\\FiercePC\\WebstormProjects\\epic-learning-and-engagement-tool\\src\\Student\\pages\\StudentDeadlines.js",[],"C:\\Users\\FiercePC\\WebstormProjects\\epic-learning-and-engagement-tool\\src\\Student\\pages\\StudentThreads.js",[],"C:\\Users\\FiercePC\\WebstormProjects\\epic-learning-and-engagement-tool\\src\\Student\\pages\\StudentResults.js",[],"C:\\Users\\FiercePC\\WebstormProjects\\epic-learning-and-engagement-tool\\src\\Student\\pages\\StudentHome.js",[],"C:\\Users\\FiercePC\\WebstormProjects\\epic-learning-and-engagement-tool\\src\\Student\\pages\\GiveFeedbackModuleList.js",["325","326"],"import React, { useState, useEffect } from \"react\";\r\nimport StudentNavBar from \"../NavBar/StudentNavBar\";\r\nimport \"firebase/firestore\";\r\nimport StudentModuleList from \"../components/GiveFeedbackModuleListComp\";\r\n\r\n\r\n\r\n/**\r\n * Created by: Luke Waterhouse\r\n * This page shows a list of modules you can pick from as links so you can give feedback to each of them\r\n */\r\n\r\n\r\n\r\nfunction GiveFeedbackModuleList() {\r\n return (\r\n <div>\r\n <StudentNavBar />\r\n <StudentModuleList />\r\n </div>\r\n );\r\n}\r\n\r\nexport default GiveFeedbackModuleList;\r\n","C:\\Users\\FiercePC\\WebstormProjects\\epic-learning-and-engagement-tool\\src\\Student\\pages\\StudentDiscussionBoard.js",[],"C:\\Users\\FiercePC\\WebstormProjects\\epic-learning-and-engagement-tool\\src\\Student\\pages\\GiveFeedbackPage.js",[],"C:\\Users\\FiercePC\\WebstormProjects\\epic-learning-and-engagement-tool\\src\\Student\\pages\\StudentAssignment.js",["327","328"],"import React, { useState, useEffect } from \"react\";\r\nimport StudentNavBar from \"../NavBar/StudentNavBar\";\r\nimport \"firebase/firestore\";\r\nimport StudentAssignmentModuleList from \"../components/StudentAssignmentModuleList\";\r\n\r\n\r\nclass StudentAssignment extends React.Component {\r\n render() {\r\n return (\r\n <div>\r\n <StudentNavBar />\r\n <h2>Assignments</h2>\r\n <br />\r\n <StudentAssignmentModuleList />\r\n </div>\r\n );\r\n }\r\n}\r\n\r\nexport default StudentAssignment;\r\n","C:\\Users\\FiercePC\\WebstormProjects\\epic-learning-and-engagement-tool\\src\\Student\\pages\\StudentAssignmentView.js",["329","330"],"import React, { useState, useEffect } from \"react\";\r\nimport StudentNavBar from \"../NavBar/StudentNavBar\";\r\nimport \"firebase/firestore\";\r\nimport StudentAssignmentList from \"../components/StudentAssignmentList\";\r\n\r\nclass StudentAssignmentView extends React.Component {\r\n render() {\r\n console.log(this.props);\r\n console.log(this.props.match.params);\r\n const module = this.props.match.params.module;\r\n return (\r\n <div>\r\n <StudentNavBar />\r\n <h2>Assignments</h2>\r\n <br />\r\n <StudentAssignmentList module={module} />\r\n </div>\r\n );\r\n }\r\n}\r\n\r\nexport default StudentAssignmentView;\r\n","C:\\Users\\FiercePC\\WebstormProjects\\epic-learning-and-engagement-tool\\src\\Student\\pages\\StudentAssignmentDetails.js",[],"C:\\Users\\FiercePC\\WebstormProjects\\epic-learning-and-engagement-tool\\src\\Admin\\pages\\AdminAnalytics.js",[],"C:\\Users\\FiercePC\\WebstormProjects\\epic-learning-and-engagement-tool\\src\\Admin\\pages\\AdminHome.js",["331"],"import React from \"react\";\nimport AdminNavBar from \"../NavBar/AdminNavBar\";\nimport \"../css-files/AdminHome.css\";\nimport Card from \"react-bootstrap/Card\";\nimport { CardDeck, CardGroup } from \"react-bootstrap\";\nimport Welcome from \"../../Student/components/welcomeUser\";\n\n/**\n * Created by: Luke Waterhouse\n * The Admin Home page makes use of React bootstrap to display a deck of cards each with a picture imported from public and\n * a description of one of the features\n */\n\nclass AdminHome extends React.Component {\n render() {\n return (\n <div>\n <AdminNavBar />\n <Welcome />\n\n <h1\n className=\"text-md-center\"\n style={{ marginBottom: \"40px\", marginTop: \"40px\" }}\n >\n <u>Home</u>\n </h1>\n\n <CardDeck\n style={{\n marginLeft: \"100px\",\n marginRight: \"100px\",\n marginBottom: \"100px\",\n }}\n >\n <Card>\n <Card.Body style={{ color: \"black\" }}>\n <Card.Title style={{ color: \"black\" }}>My Classes</Card.Title>\n <Card.Img\n variant=\"top\"\n src=\"../../Pictures/Classes.jpg\"\n style={{ marginBottom: \"20px\" }}\n />\n <Card.Text>\n My Classes will show you all the different modules on your\n course\n </Card.Text>\n </Card.Body>\n <Card.Footer></Card.Footer>\n </Card>\n\n <Card>\n <Card.Body style={{ color: \"black\" }}>\n <Card.Title style={{ color: \"black\" }}>My Assignments</Card.Title>\n <Card.Img\n variant=\"top\"\n src=\"../../Pictures/Assignments.png\"\n style={{ marginBottom: \"20px\" }}\n />\n <Card.Text>\n Heading to My Assignments will show you all of the assignments\n for each module and enable you to create assignments for them so\n your Students can get busy! Set the title, module, marks and\n instructions for the assignment which will all be easy to view\n for your students.\n </Card.Text>\n </Card.Body>\n <Card.Footer>\n <small className=\"text-muted\"> </small>\n </Card.Footer>\n </Card>\n <Card>\n <Card.Body style={{ color: \"black\" }}>\n <Card.Title style={{ color: \"black\" }}>Analytics</Card.Title>\n <Card.Img\n variant=\"top\"\n src=\"../../Pictures/Analytics.jpeg\"\n style={{ marginBottom: \"20px\" }}\n />\n <Card.Text>\n The Analytics section will give you overviews of the Grades that\n your students have achieved in different ways\n </Card.Text>\n </Card.Body>\n <Card.Footer></Card.Footer>\n </Card>\n </CardDeck>\n\n <CardDeck\n style={{\n marginLeft: \"100px\",\n marginRight: \"100px\",\n marginBottom: \"30px\",\n }}\n >\n <Card>\n <Card.Body style={{ color: \"black\" }}>\n <Card.Title style={{ color: \"black\" }}>Feedback</Card.Title>\n <Card.Img\n variant=\"top\"\n src=\"../../Pictures/Feedback.png\"\n style={{ marginBottom: \"20px\" }}\n />\n <Card.Text>\n The Feedback System works from both ends, the feedback you see\n from your students is anonymous and given by students for\n modules in General and the Assignments in each of them\n specifically so you can take this on board when teaching in the\n future\n </Card.Text>\n </Card.Body>\n <Card.Footer></Card.Footer>\n </Card>\n <Card>\n <Card.Body style={{ color: \"black\" }}>\n <Card.Title style={{ color: \"black\" }}>Forum</Card.Title>\n <Card.Img\n variant=\"top\"\n src=\"../../Pictures/Forum.jpg\"\n style={{ marginBottom: \"20px\" }}\n />\n <Card.Text>\n The Forum is a great place to interact with your Students who\n may have many questions about different topics, in order to\n organize this you have the ability to both create and delete\n different threads that are suitable for the topics of your\n classes or maybe something more abstract or general\n </Card.Text>\n </Card.Body>\n <Card.Footer></Card.Footer>\n </Card>\n </CardDeck>\n </div>\n );\n }\n}\n\nexport default AdminHome;\n","C:\\Users\\FiercePC\\WebstormProjects\\epic-learning-and-engagement-tool\\src\\Admin\\pages\\AdminClasses.js",[],"C:\\Users\\FiercePC\\WebstormProjects\\epic-learning-and-engagement-tool\\src\\Admin\\pages\\AdminDiscussionBoard.js",[],"C:\\Users\\FiercePC\\WebstormProjects\\epic-learning-and-engagement-tool\\src\\Admin\\pages\\ViewFeedbackModuleList.js",["332","333","334"],"import React from \"react\";\r\nimport AdminNavBar from \"../NavBar/AdminNavBar\";\r\nimport { db } from \"../../firebase\";\r\nimport { useCollectionData } from \"react-firebase-hooks/firestore\";\r\nimport { Link } from \"react-router-dom\";\r\nimport ModuleThreads from \"../components/ModuleThreadsListComp\";\r\n\r\n\r\n/**\r\n * Created by: Luke Waterhouse\r\n * This page shows you the different modules that you can go into to view the different threads of feedback for them\r\n */\r\n\r\nexport default function ViewFeedbackModuleList() {\r\n return (\r\n <div>\r\n <AdminNavBar />\r\n <ModuleThreads />\r\n </div>\r\n );\r\n}\r\n","C:\\Users\\FiercePC\\WebstormProjects\\epic-learning-and-engagement-tool\\src\\Admin\\pages\\ViewFeedbackPage.js",[],"C:\\Users\\FiercePC\\WebstormProjects\\epic-learning-and-engagement-tool\\src\\Admin\\pages\\AdminAssignments.js",[],"C:\\Users\\FiercePC\\WebstormProjects\\epic-learning-and-engagement-tool\\src\\Admin\\pages\\AdminThreads.js",[],"C:\\Users\\FiercePC\\WebstormProjects\\epic-learning-and-engagement-tool\\src\\Admin\\pages\\ViewAssignments.js",[],"C:\\Users\\FiercePC\\WebstormProjects\\epic-learning-and-engagement-tool\\src\\Admin\\pages\\AssignmentDetails.js",[],"C:\\Users\\FiercePC\\WebstormProjects\\epic-learning-and-engagement-tool\\src\\firebase.js",[],"C:\\Users\\FiercePC\\WebstormProjects\\epic-learning-and-engagement-tool\\src\\Login-Register\\SignupComponent.js",[],"C:\\Users\\FiercePC\\WebstormProjects\\epic-learning-and-engagement-tool\\src\\Student\\NavBar\\StudentNavBar.js",["335"],"import React, { Component } from \"react\";\r\nimport \"./StudentNavBar.css\";\r\nimport MenuItems from \"./StudentMenuItems\";\r\nimport Logo from \"../../Images/WolfPack.png\";\r\nimport Logout from \"../../Login-Register/Logout\";\r\nimport Button from \"react-bootstrap/Button\";\r\n\r\n\r\n/**\r\n * Created by: Luke Waterhouse\r\n * CSS: Harry Clifford\r\n * This file contains the navigation bar component for the student side which can be imported into any of the student pages\r\n * it maps through the object in Student Menu items and displays them as links going to the corresponding url found in each\r\n * object\r\n */\r\nclass StudentNavBar extends Component {\r\n state = { clicked: false };\r\n\r\n render() {\r\n return (\r\n <div>\r\n <nav className=\"NavbarItems\">\r\n <div className=\"menu-icon\">\r\n <img src={Logo} />\r\n </div>\r\n <ul>\r\n {MenuItems.map((item, index) => {\r\n return (\r\n <li className=\"navBarList\" key={index}>\r\n <a className={item.cName} href={item.url}>\r\n {item.title}\r\n </a>\r\n </li>\r\n );\r\n })}\r\n </ul>\r\n\r\n <a onClick={Logout} href=\"/\" style={{ marginBottom: \"12px\" }}>\r\n <Button>Logout</Button>\r\n </a>\r\n </nav>\r\n </div>\r\n );\r\n }\r\n}\r\n\r\nexport default StudentNavBar;\r\n","C:\\Users\\FiercePC\\WebstormProjects\\epic-learning-and-engagement-tool\\src\\DataAnalysis\\Graph.js",["336","337"],"import React, { Component } from \"react\";\r\nimport CSS from \"./GraphElement.css\";\r\nimport ButtonList from \"./ButtonList\";\r\nimport GraphDisplaying from \"./GraphDisplaying\";\r\nimport Data from \"./Data\";\r\n\r\nlet data = new Data()\r\nclass Graph extends Component{\r\n render(){\r\n return(\r\n <div className=\"Panel\">\r\n <ButtonList/>\r\n {GraphDisplaying}\r\n <ul className=\"InfoSet\">\r\n <h3>Progress Report</h3>\r\n <li>I must write this out for text size</li>\r\n </ul>\r\n <ul className=\"InfoSet\">\r\n <h3> Detailed Summary </h3>\r\n <li>I must write this out for text size</li>\r\n </ul>\r\n </div>\r\n )\r\n }\r\n}\r\n// <ul className=\"AssignmentList\">\r\n// {data.map((item, index) => {\r\n// return(\r\n// <li key={index} className=\"Assignment\">\r\n// <h5> {item.Title} </h5>\r\n// <p>\r\n// Mark: {item.Mark} Median: {item.Median} Mean: {item.Mean}\r\n// </p>\r\n// </li>\r\n// )\r\n// })}\r\n// </ul>\r\n\r\nexport default Graph;","C:\\Users\\FiercePC\\WebstormProjects\\epic-learning-and-engagement-tool\\src\\Student\\components\\StudentThreadsList.js",[],"C:\\Users\\FiercePC\\WebstormProjects\\epic-learning-and-engagement-tool\\src\\Student\\components\\GiveFeedbackModuleListComp.js",[],"C:\\Users\\FiercePC\\WebstormProjects\\epic-learning-and-engagement-tool\\src\\Student\\components\\DiscussionBoard.js",[],"C:\\Users\\FiercePC\\WebstormProjects\\epic-learning-and-engagement-tool\\src\\Student\\components\\StudentAssignmentModuleList.js",["338"],"import React from \"react\";\r\nimport { db } from \"../../firebase\";\r\nimport { useCollectionData } from \"react-firebase-hooks/firestore\";\r\nimport { Link } from \"react-router-dom\";\r\nimport { Button } from \"react-bootstrap\";\r\n\r\n\r\n\r\n\r\nfunction StudentAssignmentModuleList() {\r\n const ModuleRef = db\r\n .collection(\"Courses\")\r\n .doc(\"Computer Science\")\r\n .collection(\"modules\");\r\n const [Module] = useCollectionData(ModuleRef, { idField: \"Title\" });\r\n console.log(Module);\r\n\r\n return (\r\n <div>\r\n <h1>View Your Assignments</h1>\r\n {Module?.map((module) => (\r\n <Modules key={module.Title} ModuleTitle={module} />\r\n ))}\r\n </div>\r\n );\r\n}\r\n\r\nfunction Modules({ ModuleTitle }) {\r\n const { Title } = ModuleTitle;\r\n const pathTitle = \"/StudentAssignmentView/\" + Title;\r\n return (\r\n <div\r\n className=\"card-header border-white border-top text-md-center\"\r\n style={{ borderBlockColor: \"#424242\" }}\r\n >\r\n <a className=\"text-warning\">\r\n <Button variant=\"secondary\" style={{ background: \"#424242\" }}>\r\n <Link style={{ color: \"white\" }} to={pathTitle}>\r\n {Title}\r\n </Link>\r\n </Button>\r\n </a>\r\n </div>\r\n );\r\n}\r\n\r\nexport default StudentAssignmentModuleList;\r\n","C:\\Users\\FiercePC\\WebstormProjects\\epic-learning-and-engagement-tool\\src\\Student\\components\\DeadlinesFetch.js",["339"],"import React, { useEffect, useState } from \"react\";\r\nimport { db } from \"../../firebase\";\r\nimport Card from \"react-bootstrap/Card\";\r\n\r\n\r\n\r\n/**\r\n * Created by: Luke Waterhouse\r\n * This file contains a component which fetches the different assignments from all the modules using a for loop. These are\r\n * then displayed as cards showing the Title, due date and the module they belong to.\r\n */\r\n\r\nexport default function DisplayDeadlines() {\r\n const [Assignments, setAssignments] = useState([]);\r\n const modules = [];\r\n const AssignmentsToSet = [];\r\n\r\n //this useEffect pulls a list of all the different module titles so they can be used in a for loop to get the assignments\r\n //for each module and sets them to the modules array.\r\n useEffect(() => {\r\n function returnAssignments() {\r\n db.collection(\"Courses\")\r\n .doc(\"Computer Science\")\r\n .collection(\"modules\")\r\n .get()\r\n .then((snapshot) => {\r\n snapshot.forEach((doc) => {\r\n const data = doc.data();\r\n modules.push(data.Title);\r\n });\r\n getAssignments();\r\n })\r\n .catch((error) => console.log(error));\r\n }\r\n\r\n //this function uses the modules array created above to loop through the module titles and extracts the assignments\r\n //from each one using the module title as the doc path. Then sets the assignments to a useState (Assignments)\r\n function getAssignments() {\r\n for (let i = 0; i < modules.length; i++) {\r\n db.collection(\"Courses\")\r\n .doc(\"Computer Science\")\r\n .collection(\"modules\")\r\n .doc(modules[i])\r\n .collection(\"Assignments\")\r\n .get()\r\n .then((snapshot) => {\r\n snapshot.forEach((doc) => {\r\n let output = \"error\";\r\n if (snapshot.size > 0) {\r\n const data = doc.data();\r\n\r\n //checks if a deadline exists before adding it\r\n\r\n if (data.Deadline) {\r\n const toDate = data.Deadline && data.Deadline.toDate();\r\n const month = toDate.getUTCMonth() + 1;\r\n const day = toDate.getUTCDate();\r\n const year = toDate.getUTCFullYear();\r\n const time =\r\n toDate.getUTCHours() + \":\" + toDate.getUTCMinutes();\r\n output = year + \"/\" + month + \"/\" + day + \" \" + time;\r\n }\r\n\r\n //adds the assignment to a temporary array\r\n\r\n AssignmentsToSet.push({\r\n Title: data.Title,\r\n Marks: data.Marks,\r\n Module: data.Module,\r\n DueDate: output,\r\n });\r\n console.log(AssignmentsToSet);\r\n } else {\r\n }\r\n });\r\n\r\n //on the last loop sets the Assignment useState using the temporary array\r\n if (i === modules.length - 1) {\r\n setAssignments(AssignmentsToSet);\r\n }\r\n });\r\n }\r\n }\r\n\r\n returnAssignments();\r\n }, []);\r\n\r\n\r\n //takes in props from assignments and displays them in a bootstrap Card\r\n function DeadlinePost(props) {\r\n console.log(props.Title);\r\n return (\r\n <Card style={{ width: \"30rem\", marginLeft: \"20px\", marginTop: \"20px\" }}>\r\n <Card.Body style={{ backgroundColor: \"#424242\" }}>\r\n <Card.Title>\r\n <h5 style={{ color: \"white\", marginBottom: \"30px\" }}>\r\n <u>{props.Title}</u>\r\n </h5>\r\n </Card.Title>\r\n\r\n <div style={{ color: \"#f9f9f9\" }}>\r\n <b>Due Date:</b> {props.Date}\r\n <br />\r\n <b>Module:</b> {props.Module}\r\n </div>\r\n </Card.Body>\r\n </Card>\r\n );\r\n }\r\n\r\n return (\r\n <div>\r\n {Assignments.map((assignmentRef) => (\r\n <DeadlinePost\r\n Title={assignmentRef.Title}\r\n Module={assignmentRef.Module}\r\n Date={assignmentRef.DueDate.toString()}\r\n />\r\n ))}\r\n </div>\r\n );\r\n}\r\n","C:\\Users\\FiercePC\\WebstormProjects\\epic-learning-and-engagement-tool\\src\\Student\\components\\GiveFeedbackPageComp.js",["340"],"import React, { useState, useEffect } from \"react\";\r\nimport { db } from \"../../firebase\";\r\nimport \"firebase/firestore\";\r\nimport firebase from \"firebase\";\r\nimport Button from \"react-bootstrap/Button\";\r\n\r\n\r\n/**\r\n * Created by: Luke Waterhouse\r\n * this file contains functionality to select any assignment from the selected module using a dropdown menu and send feedback\r\n * to the database for it\r\n */\r\nfunction GiveAssignmentFeedback(props) {\r\n const [formValue, setFormValue] = useState(\"\");\r\n const [assignmentList, setAssignmentList] = useState([]);\r\n const [selectedAssignment, setSelectedAssignment] = useState(\"\");\r\n const [errorMessage, setErrorMessage] = useState(\"\");\r\n\r\n\r\n //this useEffect pulls the assignments of a particular module depending on the prop passed in and pushes it to an array.\r\n //it then sets this as a useState and sets the initially selected assignment as the first one in the array.\r\n\r\n useEffect(() => {\r\n db.collection(\"Courses\")\r\n .doc(\"Computer Science\")\r\n .collection(\"modules\")\r\n .doc(props.input)\r\n .collection(\"Assignments\")\r\n .get()\r\n .then((snapshot) => {\r\n const assignments = [];\r\n snapshot.forEach((doc) => {\r\n const data = doc.data();\r\n assignments.push(data);\r\n });\r\n setAssignmentList(assignments);\r\n setSelectedAssignment(assignments[0].Title.toString());\r\n })\r\n .catch((error) => console.log(error));\r\n }, []);\r\n\r\n //this async function first checks if the user has inputted text, if true it takes the selected assignment and adds some feedback\r\n //to it in the database\r\n\r\n const sendFeedback = async (e) => {\r\n e.preventDefault();\r\n\r\n if (formValue === \"\") {\r\n setErrorMessage(\"Please input some text before submitting!\");\r\n } else {\r\n setErrorMessage(\r\n \"Success! Don't worry, your feedback will be kept anonymous\"\r\n );\r\n setFormValue(\"\");\r\n const feedbackRef = db\r\n .collection(\"Courses\")\r\n .doc(\"Computer Science\")\r\n .collection(\"modules\")\r\n .doc(props.input)\r\n .collection(\"Assignments\")\r\n .doc(selectedAssignment)\r\n .collection(\"feedback\");\r\n await feedbackRef.add({\r\n text: formValue,\r\n createdAt: firebase.firestore.FieldValue.serverTimestamp(),\r\n });\r\n }\r\n };\r\n\r\n\r\n //returns a dropdown menu which dynamically changes with whatever assignments are in the module selected.\r\n //you may then select one and send feedback for it.\r\n return (\r\n <div className=\"text-dark\">\r\n <h5 style={{marginTop:\"10px\"}} className=\"text-md-center\">Assignment Feedback</h5>\r\n <form>\r\n <select\r\n style={{ marginBottom: \"10px\" ,marginLeft:\"15px\"}}\r\n value={selectedAssignment}\r\n onChange={(e) => setSelectedAssignment(e.currentTarget.value)}\r\n >\r\n {assignmentList &&\r\n assignmentList.map((module) => (\r\n <option key={module.Title} value={module.Title}>\r\n {module.Title}\r\n </option>\r\n ))}\r\n\r\n <input type=\"submit\" value=\"Submit\" />\r\n </select>\r\n </form>\r\n\r\n <form onSubmit={sendFeedback}>\r\n <textarea\r\n style={{ width: \"640px\", marginLeft:\"15px\" }}\r\n value={formValue}\r\n onChange={(e) => setFormValue(e.target.value)}\r\n />\r\n <div style={{marginLeft:\"15px\"}} className=\"text-dark\">{errorMessage}</div>\r\n\r\n <Button style={{marginLeft:\"15px\"}} type=\"submit\" className=\"btn-success\">\r\n Send\r\n </Button>\r\n </form>\r\n </div>\r\n );\r\n}\r\n\r\nexport default GiveAssignmentFeedback;\r\n","C:\\Users\\FiercePC\\WebstormProjects\\epic-learning-and-engagement-tool\\src\\Student\\components\\GiveGeneralFeedback.js",[],"C:\\Users\\FiercePC\\WebstormProjects\\epic-learning-and-engagement-tool\\src\\Student\\components\\StudentAssignmentList.js",[],"C:\\Users\\FiercePC\\WebstormProjects\\epic-learning-and-engagement-tool\\src\\Student\\components\\StudentAssignmentDetailsComp.js",["341","342","343"],"import React from \"react\";\r\nimport { connect } from \"react-redux\";\r\nimport { compose } from \"redux\";\r\nimport { Redirect } from \"react-router-dom\";\r\nimport moment from \"moment\";\r\nimport { db } from \"../../firebase\";\r\nimport { useDocumentData } from \"react-firebase-hooks/firestore\";\r\nimport Card from \"react-bootstrap/Card\";\r\n\r\nconst StudentAssignmentDetailsComp = (props) => {\r\n console.log(props);\r\n const AssignRef = db\r\n .collection(\"Courses\")\r\n .doc(\"Computer Science\")\r\n .collection(\"modules\")\r\n .doc(props.module)\r\n .collection(\"Assignments\")\r\n .doc(props.input);\r\n const [ass] = useDocumentData(AssignRef);\r\n console.log(ass);\r\n\r\n if (ass) {\r\n return (\r\n <div>\r\n <div className=\"card-header border-white border-top\">\r\n <div>\r\n <Card\r\n bg={\"Info\".toLowerCase()}\r\n text={\"Info\".toLowerCase() === \"light\" ? \"dark\" : \"white\"}\r\n >\r\n <Card.Body>\r\n <Card.Text>\r\n <h4>{ass.Title}</h4>\r\n <br />\r\n <p>{ass.Instructions}</p>\r\n <p>Module: {ass.Module}</p>\r\n <p>Marks: {ass.Marks}</p>\r\n <p>Deadline: {moment(ass.Deadline.toDate()).calendar()}</p>\r\n <div className=\"text-black-50\">Posted by Someone</div>\r\n <div className=\"text-black-50\">\r\n {moment(ass.createdAt.toDate()).calendar()}\r\n </div>\r\n </Card.Text>\r\n </Card.Body>\r\n </Card>\r\n </div>\r\n </div>\r\n </div>\r\n );\r\n } else {\r\n return (\r\n <div className=\"container center\">\r\n <p>Loading project...</p>\r\n </div>\r\n );\r\n }\r\n};\r\n\r\nexport default StudentAssignmentDetailsComp;\r\n","C:\\Users\\FiercePC\\WebstormProjects\\epic-learning-and-engagement-tool\\src\\Admin\\NavBar\\AdminNavBar.js",["344"],"import React, { Component } from \"react\";\r\nimport MenuItems from \"./AdminMenuItems\";\r\nimport \"./AdminNavBar.css\";\r\nimport Logo from \"../../Images/WolfPack.png\";\r\nimport Logout from \"../../Login-Register/Logout\";\r\nimport Button from \"react-bootstrap/Button\";\r\n\r\n/**\r\n * Created by: Luke Waterhouse\r\n * CSS: Harry Clifford\r\n * This file contains the navigation bar component for the student side which can be imported into any of the student pages\r\n * it maps through the object in Student Menu items and displays them as links going to the corresponding url found in each\r\n * object\r\n */\r\n\r\nclass AdminNavBar extends Component {\r\n state = { clicked: false };\r\n\r\n render() {\r\n return (\r\n <nav className=\"NavbarItems\">\r\n <div className=\"menu-icon\">\r\n <img src={Logo} />\r\n </div>\r\n <ul>\r\n {MenuItems.map((item, index) => {\r\n return (\r\n <li className=\"navBarList\" key={index}>\r\n <a className={item.cName} href={item.url}>\r\n {item.title}\r\n </a>\r\n </li>\r\n );\r\n })}\r\n </ul>\r\n <a onClick={Logout} href=\"/\" style={{ marginBottom: \"12px\" }}>\r\n <Button>Logout</Button>\r\n </a>\r\n </nav>\r\n );\r\n }\r\n}\r\n\r\nexport default AdminNavBar;\r\n","C:\\Users\\FiercePC\\WebstormProjects\\epic-learning-and-engagement-tool\\src\\Admin\\components\\AssignmentDetailsPage.js",["345","346","347"],"import React from \"react\";\r\nimport { connect } from \"react-redux\";\r\nimport { compose } from \"redux\";\r\nimport { Redirect } from \"react-router-dom\";\r\nimport moment from \"moment\";\r\nimport { db } from \"../../firebase\";\r\nimport { useDocumentData } from \"react-firebase-hooks/firestore\";\r\nimport Card from \"react-bootstrap/Card\";\r\n\r\nconst AssignmentDetailsPage = (props) => {\r\n console.log(props);\r\n const AssignRef = db\r\n .collection(\"Courses\")\r\n .doc(\"Computer Science\")\r\n .collection(\"modules\")\r\n .doc(props.module)\r\n .collection(\"Assignments\")\r\n .doc(props.input);\r\n const [ass] = useDocumentData(AssignRef);\r\n console.log(ass);\r\n\r\n if (ass) {\r\n return (\r\n <div>\r\n <div className=\"card-header border-white border-top\">\r\n <div>\r\n <Card\r\n bg={\"Info\".toLowerCase()}\r\n text={\"Info\".toLowerCase() === \"light\" ? \"dark\" : \"white\"}\r\n >\r\n <Card.Body>\r\n <Card.Text>\r\n <h4>{ass.Title}</h4>\r\n <br />\r\n <p>{ass.Instructions}</p>\r\n <p>Module: {ass.Module}</p>\r\n <p>Marks: {ass.Marks}</p>\r\n <p>Deadline: {moment(ass.Deadline.toDate()).calendar()}</p>\r\n <div className=\"text-black-50\">Posted by Someone</div>\r\n <div className=\"text-black-50\">\r\n {moment(ass.createdAt.toDate()).calendar()}\r\n </div>\r\n </Card.Text>\r\n </Card.Body>\r\n </Card>\r\n </div>\r\n </div>\r\n </div>\r\n );\r\n } else {\r\n return (\r\n <div className=\"container center\">\r\n <p>Loading project...</p>\r\n </div>\r\n );\r\n }\r\n};\r\n\r\nexport default AssignmentDetailsPage;\r\n","C:\\Users\\FiercePC\\WebstormProjects\\epic-learning-and-engagement-tool\\src\\Admin\\components\\AssignmentsListed.js",[],"C:\\Users\\FiercePC\\WebstormProjects\\epic-learning-and-engagement-tool\\src\\Admin\\components\\Threads.js",["348"],"import React from \"react\";\r\nimport { db } from \"../../firebase\";\r\nimport { useCollectionData } from \"react-firebase-hooks/firestore\";\r\nimport { Link } from \"react-router-dom\";\r\nimport Button from \"react-bootstrap/Button\";\r\n\r\n/**\r\n * Created by: Luke Waterhouse\r\n * This file pulls the Threads collection from the database and maps through them passing each one to a Thread\r\n * component which displays its name as clickable links to take you to the different thread pages (using router variables)\r\n */\r\n\r\n//this function pulls all the Threads from the database and\r\nfunction Threads() {\r\n const ThreadsRef = db\r\n .collection(\"Courses\")\r\n .doc(\"Computer Science\")\r\n .collection(\"Threads\");\r\n const [Threads] = useCollectionData(ThreadsRef, { idField: \"id\" });\r\n\r\n return (\r\n <div>\r\n <h1 className=\"text-sm-center\">Threads</h1>\r\n {Threads?.map((thread) => (\r\n <Thread key={thread.id} ThreadTitle={thread} />\r\n ))}\r\n </div>\r\n );\r\n}\r\n\r\nfunction Thread({ ThreadTitle }) {\r\n const { Title } = ThreadTitle;\r\n const pathTitle = \"/AdminDiscussion/\" + Title;\r\n return (\r\n <div className=\"card-header border-white border-top text-md-center\">\r\n <a className=\"text-warning\">\r\n <h5>\r\n <Button variant=\"secondary\" style={{ background: \"#424242\" }}>\r\n <Link style={{ color: \"white\" }} to={pathTitle}>\r\n {Title}\r\n </Link>\r\n </Button>\r\n </h5>\r\n </a>\r\n </div>\r\n );\r\n}\r\n\r\nexport default Threads;\r\n","C:\\Users\\FiercePC\\WebstormProjects\\epic-learning-and-engagement-tool\\src\\Admin\\components\\ViewFeedbackPageComp.js",["349","350"],"import React, { useState } from \"react\";\r\nimport AdminNavBar from \"../NavBar/AdminNavBar\";\r\nimport { db } from \"../../firebase\";\r\nimport { useCollectionData } from \"react-firebase-hooks/firestore\";\r\nimport \"../css-files/feedback.css\";\r\n\r\n/**\r\n * Created by: Luke Waterhouse\r\n * This file contains component that take in a module as a prop and display the feedback for it from the database.\r\n */\r\n\r\nfunction GetFeedback(props) {\r\n const feedbackRef = db\r\n .collection(\"Courses\")\r\n .doc(\"Computer Science\")\r\n .collection(\"modules\")\r\n .doc(props.moduleName)\r\n .collection(\"feedback\");\r\n const query = feedbackRef.orderBy(\"createdAt\").limit(25);\r\n const [feedback] = useCollectionData(query, { idField: \"id\" });\r\n const error = \"\";\r\n console.log(feedback);\r\n return (\r\n <div>\r\n <div>\r\n <h3 className=\"text-md-center\">General feedback</h3>\r\n\r\n {feedback?.map((message) => (\r\n <FeedbackMessage\r\n key={message.id}\r\n message={message}\r\n style={{ padding: \"90px\" }}\r\n />\r\n ))}\r\n\r\n {feedback?.length ? (\r\n error\r\n ) : (\r\n <h4 className=\"text-md-center\">\r\n There doesn't seem to be any general feedback for this module yet,\r\n try asking your students to add some\r\n </h4>\r\n )}\r\n </div>\r\n </div>\r\n );\r\n}\r\n\r\n//takes in a piece of feedback object and destructures it to display it in a card.\r\n\r\nfunction FeedbackMessage({ message }) {\r\n const { text, createdAt } = message;\r\n const date = createdAt && createdAt.toDate();\r\n let output = \"DataBase Error!\";\r\n if (date != null) {\r\n const month = date.getUTCMonth() + 1;\r\n const day = date.getUTCDate();\r\n const year = date.getUTCFullYear();\r\n const time = date.getUTCHours() + \":\" + date.getUTCMinutes();\r\n output = year + \"/\" + month + \"/\" + day + \" \" + time;\r\n }\r\n return (\r\n <div\r\n className=\"card card-body post-editor\"\r\n style={{ backgroundColor: \"#424242\", color: \"#E0E0E0\" }}\r\n >\r\n <p style={{ color: \"#9E9E9E\" }}>{output}</p>\r\n {text}{\" \"}\r\n </div>\r\n );\r\n}\r\n\r\nfunction ViewFeedbackPageComp(props) {\r\n return (\r\n <div>\r\n <h1 style={{ paddingBottom: \"40px\" }} className=\"text-md-center\">\r\n <u>{props.input}</u>\r\n </h1>\r\n <GetFeedback moduleName={props.input} />\r\n </div>\r\n );\r\n}\r\n\r\nexport default ViewFeedbackPageComp;\r\n","C:\\Users\\FiercePC\\WebstormProjects\\epic-learning-and-engagement-tool\\src\\Admin\\components\\createThread.js",[],"C:\\Users\\FiercePC\\WebstormProjects\\epic-learning-and-engagement-tool\\src\\Admin\\components\\deleteThread.js",[],"C:\\Users\\FiercePC\\WebstormProjects\\epic-learning-and-engagement-tool\\src\\Admin\\components\\AssignmentList.js",["351"],"import React, { useEffect, useState } from \"react\";\r\nimport { db } from \"../../firebase\";\r\nimport Button from \"react-bootstrap/Button\";\r\n\r\n/**\r\n * Created by: Luke Waterhouse\r\n * This file contains a component which takes the module name passed into it as a prop, and then provides a dropdown\r\n * menu to select the different assignments for that module and displays them in cards.\r\n */\r\n\r\nexport default function AssignmentList(props) {\r\n const [AssignmentList, setAssignmentList] = useState([]);\r\n const [selectedAssignment, setSelectedAssignment] = useState(\"placeholder\");\r\n const [AssignmentFeedbackList, setAssignmentFeedbackList] = useState([]);\r\n const [noFeedbackVisible, setNoFeedbackVisible] = useState(\"invisible\");\r\n\r\n // This useEffect pulls the assignments of a module and pushes it to a useState, it also sets the initially picked assignment\r\n // as the first one in this array.\r\n useEffect(() => {\r\n const setAssignmentInfo = () => {\r\n db.collection(\"Courses\")\r\n .doc(\"Computer Science\")\r\n .collection(\"modules\")\r\n .doc(props.input)\r\n .collection(\"Assignments\")\r\n .get()\r\n .then((snapshot) => {\r\n const assignments = [];\r\n snapshot.forEach((doc) => {\r\n const data = doc.data();\r\n assignments.push(data);\r\n });\r\n setAssignmentList(assignments);\r\n setSelectedAssignment(assignments[0].Title);\r\n })\r\n .catch((error) => console.log(error));\r\n };\r\n setAssignmentInfo();\r\n }, []);\r\n\r\n\r\n\r\n // This function gets the feedback for a particular assignment using the module prop as well as the selected Assignment useSate\r\n // set in the useEffect above. It then sets these assignments to the AssignmentFeedbackList useState\r\n function getAssignmentFeedbackList() {\r\n setAssignmentFeedbackList([]);\r\n\r\n const setAssignmentFeedbackListInfo = () => {\r\n setNoFeedbackVisible(\"invisible\");\r\n db.collection(\"Courses\")\r\n .doc(\"Computer Science\")\r\n .collection(\"modules\")\r\n .doc(props.input)\r\n .collection(\"Assignments\")\r\n .doc(selectedAssignment)\r\n .collection(\"feedback\")\r\n .orderBy(\"createdAt\")\r\n .get()\r\n .then((snapshot) => {\r\n const feedback = [];\r\n snapshot.forEach((doc) => {\r\n const data = doc.data();\r\n feedback.push(data);\r\n });\r\n if (feedback.length === 0) {\r\n setNoFeedbackVisible(\"visible\");\r\n }\r\n\r\n setAssignmentFeedbackList(feedback);\r\n })\r\n\r\n .catch((error) => console.log(error));\r\n };\r\n\r\n setAssignmentFeedbackListInfo();\r\n\r\n }\r\n\r\n\r\n // This component takes in message object and uses the fields to create a card with the Date formatted and the text.\r\n function FeedbackMessage({ message }) {\r\n const { text, createdAt } = message;\r\n const date = createdAt && createdAt.toDate();\r\n let output = \"DataBase Error!\";\r\n if (date != null) {\r\n const month = date.getUTCMonth() + 1;\r\n const day = date.getUTCDate();\r\n const year = date.getUTCFullYear();\r\n const time = date.getUTCHours() + \":\" + date.getUTCMinutes();\r\n output = year + \"/\" + month + \"/\" + day + \" \" + time;\r\n }\r\n return (\r\n <div\r\n className=\"card card-body post-editor text-light\"\r\n style={{ backgroundColor: \"#424242\" }}\r\n >\r\n <p style={{ color: \"\" }}>{output}</p>\r\n {text}{\" \"}\r\n </div>\r\n );\r\n }\r\n\r\n return (\r\n <div className=\" align-content-center\" style={{ paddingLeft: \"20px\" }}>\r\n <h2\r\n style={{ paddingTop: \"60px\", paddingBottom: \"20px\" }}\r\n className=\"text-md-center text\"\r\n >\r\n <u>Assignment Feedback</u>\r\n </h2>\r\n <form>\r\n <select\r\n style={{\r\n backgroundColor: \"#1A1A1B\",\r\n color: \"white\",\r\n borderRadius: \"4px\",\r\n }}\r\n className=\"custom-select-sm\"\r\n value={selectedAssignment}\r\n onChange={(e) => setSelectedAssignment(e.currentTarget.value)}\r\n >\r\n {AssignmentList &&\r\n AssignmentList.map((module) => (\r\n <option key={module.Title} value={module.Title}>\r\n {module.Title}\r\n </option>\r\n ))}\r\n </select>\r\n </form>\r\n\r\n <div style={{ paddingTop: \"10px\" }}>\r\n <Button\r\n onClick={getAssignmentFeedbackList}\r\n variant=\"success\"\r\n style={{ backgroundColor: \"#1A1A1B\" }}\r\n >\r\n View\r\n </Button>\r\n </div>\r\n\r\n <div className=\"text-md-center border-danger\">\r\n <h5 className={noFeedbackVisible}>\r\n There doesn't seem to be any feedback for this assignment yet, perhaps\r\n ask your students to submit some{\" \"}\r\n </h5>\r\n </div>\r\n\r\n <div>\r\n {AssignmentFeedbackList?.map((message) => (\r\n <FeedbackMessage key={message.id} message={message} />\r\n ))}\r\n </div>\r\n </div>\r\n );\r\n}\r\n","C:\\Users\\FiercePC\\WebstormProjects\\epic-learning-and-engagement-tool\\src\\Admin\\components\\AssignmentForm.js",["352","353"],"import Dialog from \"@material-ui/core/Dialog\";\r\nimport TextField from \"@material-ui/core/TextField\";\r\nimport {\r\n DialogActions,\r\n DialogContent,\r\n DialogTitle,\r\n FormControl,\r\n makeStyles,\r\n} from \"@material-ui/core\";\r\nimport React, { useState, useEffect } from \"react\";\r\nimport { db } from \"../../firebase\";\r\nimport Button from \"react-bootstrap/Button\";\r\nimport { Form } from \"react-bootstrap\";\r\n\r\nfunction AssignmentForm() {\r\n const [Title, setTitle] = useState(\"\");\r\n const [Instructions, setInst] = useState(\"\");\r\n const [Marks, setMarks] = useState(\"\");\r\n const [Module, setModule] = useState(\"\");\r\n const [Deadline, setDate] = useState(new Date());\r\n const [AssignmentList, setAssignmentList] = useState([]);\r\n\r\n useEffect(() => {\r\n console.log(\"useEffect Ran\");\r\n db.collection(\"Courses\")\r\n .doc(\"Computer Science\")\r\n .collection(\"modules\")\r\n .get()\r\n .then((snapshot) => {\r\n const Assignments = [];\r\n snapshot.forEach((doc) => {\r\n const data = doc.data();\r\n Assignments.push(data);\r\n });\r\n setAssignmentList(Assignments);\r\n setModule(Assignments[0].Title.toString());\r\n console.log(Assignments);\r\n })\r\n .catch((error) => console.log(error));\r\n }, []);\r\n\r\n const handleComplete = (e) => {\r\n e.preventDefault();\r\n\r\n db.collection(\"Courses\")\r\n .doc(\"Computer Science\")\r\n .collection(\"modules\")\r\n .doc(Module.toString())\r\n .collection(\"Assignments\")\r\n .add({\r\n Title: Title,\r\n Instructions: Instructions,\r\n Marks: Marks,\r\n Module: Module,\r\n Deadline: new Date(Deadline),\r\n createdAt: new Date(),\r\n Graded: false,\r\n MedianLQ: 0,\r\n MedianUQ: 0,\r\n })\r\n .then(() => {\r\n alert(\"Successfully created assignment!\");\r\n })\r\n .catch((error) => {\r\n alert(error.message);\r\n });\r\n\r\n setTitle(\"\");\r\n setInst(\"\");\r\n setMarks(\"\");\r\n setDate(new Date());\r\n\r\n setOpen(false);\r\n };\r\n\r\n const [open, setOpen] = React.useState(false);\r\n const handleClickOpen = () => {\r\n setOpen(true);\r\n };\r\n const handleClose = () => {\r\n setOpen(false);\r\n };\r\n\r\n return (\r\n <div>\r\n <div className=\"mb-2\">\r\n <Button variant=\"info\" size=\"lg\" onClick={handleClickOpen}>\r\n Create Assignment\r\n </Button>\r\n </div>\r\n <Dialog\r\n open={open}\r\n onClose={handleClose}\r\n aria-labelledby=\"Create Assignment\"\r\n fullWidth\r\n >\r\n <DialogTitle id=\"Create Assignment\">\r\n <span style={{ color: \"lightBlue\" }}>Create Assignment</span>\r\n </DialogTitle>\r\n <DialogContent>\r\n <Form>\r\n <TextField\r\n placeholder=\"Title\"\r\n label=\"Title\"\r\n margin=\"small\"\r\n variant=\"outlined\"\r\n value={Title}\r\n onChange={(e) => setTitle(e.target.value)}\r\n />\r\n <br />\r\n <TextField\r\n placeholder=\"Give Out instructions\"\r\n label=\"Instructions\"\r\n value={Instructions}\r\n onChange={(e) => setInst(e.target.value)}\r\n margin=\"normal\"\r\n multiline\r\n fullWidth\r\n rows={50}\r\n variant=\"outlined\"\r\n />\r\n <br />\r\n <TextField\r\n placeholder=\"Specify Mark Amount\"\r\n label=\"Marks\"\r\n margin=\"normal\"\r\n variant=\"outlined\"\r\n value={Marks}\r\n onChange={(e) => setMarks(e.target.value)}\r\n />\r\n <div>\r\n <Form.Control\r\n as=\"select\"\r\n className=\"my-1 mr-sm-2\"\r\n custom\r\n value={Module}\r\n onChange={(e) => setModule(e.currentTarget.value)}\r\n >\r\n {AssignmentList &&\r\n AssignmentList.map((module) => (\r\n <option key={module.Title} value={module.Title}>\r\n {module.Title}\r\n </option>\r\n ))}\r\n </Form.Control>\r\n </div>\r\n <TextField\r\n label=\"Deadline\"\r\n type=\"datetime-local\"\r\n returnFormat=\"moment\"\r\n margin=\"normal\"\r\n variant=\"outlined\"\r\n InputLabelProps={{\r\n shrink: true,\r\n }}\r\n value={Deadline}\r\n onChange={(e) => setDate(e.target.value)}\r\n />\r\n </Form>\r\n </DialogContent>\r\n <DialogActions>\r\n <Button onClick={handleClose} variant=\"info\">\r\n Cancel\r\n </Button>\r\n <Button onClick={handleComplete} variant=\"info\">\r\n Complete\r\n </Button>\r\n </DialogActions>\r\n </Dialog>\r\n </div>\r\n );\r\n}\r\n\r\nexport default AssignmentForm;\r\n","C:\\Users\\FiercePC\\WebstormProjects\\epic-learning-and-engagement-tool\\src\\Admin\\components\\ModuleThreadsListComp.js",[],"C:\\Users\\FiercePC\\WebstormProjects\\epic-learning-and-engagement-tool\\src\\Admin\\components\\Assignments.js",["354"],"import React from \"react\";\r\nimport { db } from \"../../firebase\";\r\nimport { useCollectionData } from \"react-firebase-hooks/firestore\";\r\nimport { Link } from \"react-router-dom\";\r\nimport { Button } from \"react-bootstrap\";\r\n\r\n\r\n\r\n\r\nfunction Assignments() {\r\n const ModuleRef = db\r\n .collection(\"Courses\")\r\n .doc(\"Computer Science\")\r\n .collection(\"modules\");\r\n const [Module] = useCollectionData(ModuleRef, { idField: \"Title\" });\r\n console.log(Module);\r\n\r\n return (\r\n <div>\r\n <h1>View Assignments</h1>\r\n {Module?.map((module) => (\r\n <Modules key={module.Title} ModuleTitle={module} />\r\n ))}\r\n </div>\r\n );\r\n}\r\n\r\nfunction Modules({ ModuleTitle }) {\r\n const { Title } = ModuleTitle;\r\n const pathTitle = \"/ViewAssignments/\" + Title;\r\n return (\r\n <div\r\n className=\"card-header border-white border-top text-md-center\"\r\n style={{ borderBlockColor: \"#424242\" }}\r\n >\r\n <a className=\"text-warning\">\r\n <Button variant=\"secondary\" style={{ background: \"#424242\" }}>\r\n <Link style={{ color: \"white\" }} to={pathTitle}>\r\n {Title}\r\n </Link>\r\n </Button>\r\n </a>\r\n </div>\r\n );\r\n}\r\n\r\nexport default Assignments;\r\n","C:\\Users\\FiercePC\\WebstormProjects\\epic-learning-and-engagement-tool\\src\\Student\\NavBar\\StudentMenuItems.js",[],"C:\\Users\\FiercePC\\WebstormProjects\\epic-learning-and-engagement-tool\\src\\Login-Register\\Logout.js",[],"C:\\Users\\FiercePC\\WebstormProjects\\epic-learning-and-engagement-tool\\src\\Admin\\NavBar\\AdminMenuItems.js",[],"C:\\Users\\FiercePC\\WebstormProjects\\epic-learning-and-engagement-tool\\src\\Admin\\components\\ModuleGroup.js",[],"C:\\Users\\FiercePC\\WebstormProjects\\epic-learning-and-engagement-tool\\src\\Admin\\components\\ModulePage.js",["355"],"import React, { Component } from \"react\";\r\nimport { db } from \"../../firebase\";\r\nimport DeleteModule from \"./deleteModule\";\r\nimport { useCollectionData } from \"react-firebase-hooks/firestore\";\r\n\r\nfunction AssignmentShow({ assignmentGet }) {\r\n const tempDoc = [];\r\n const AssignmentRef = db\r\n .collection(\"Courses\")\r\n .doc(\"Computer Science\")\r\n .collection(\"modules\")\r\n .doc(assignmentGet)\r\n .collection(\"Assignments\");\r\n\r\n //const [Assignments] = useCollectionData(AssignmentRef, { idField: \"Title\"});\r\n AssignmentRef.get().then((querySnapshot) => {\r\n querySnapshot.forEach((doc) => {\r\n tempDoc.push(doc.data());\r\n });\r\n });\r\n\r\n return (\r\n <div>\r\n {console.log(tempDoc)}\r\n <ul>\r\n {tempDoc?.forEach((assignment) => (\r\n <li>{assignment}</li>\r\n ))}\r\n </ul>\r\n </div>\r\n );\r\n}\r\n\r\nclass ModulePage extends Component {\r\n render() {\r\n return (\r\n <div>\r\n <h2>{this.props.moduleName}</h2>\r\n <AssignmentShow assignmentGet={this.props.moduleName} />\r\n <DeleteModule thisId={this.props.moduleName} />\r\n </div>\r\n );\r\n }\r\n}\r\n\r\nexport default ModulePage;\r\n","C:\\Users\\FiercePC\\WebstormProjects\\epic-learning-and-engagement-tool\\src\\Admin\\components\\createModule.js",[],"C:\\Users\\FiercePC\\WebstormProjects\\epic-learning-and-engagement-tool\\src\\Admin\\components\\deleteModule.js",["356"],"import React from \"react\";\r\nimport { db } from \"../../firebase\";\r\nimport Button from \"react-bootstrap/Button\";\r\n\r\n/**\r\n * Created by: Mantas Aleskevicius\r\n * CSS: Mantas Aleskevicius\r\n * This file deletes modules form the database\r\n */\r\n\r\nfunction DeleteModule({ thisId }) {\r\n //Creating a reference to the modules\r\n const ModuleRef = db\r\n .collection(\"Courses\")\r\n .doc(\"Computer Science\")\r\n .collection(\"modules\");\r\n\r\n //Deleting the module by its id\r\n async function deleteModule(id) {\r\n await ModuleRef.doc(id).delete();\r\n }\r\n\r\n //Returns a delete button\r\n return (\r\n <div className=\"deleteModule\" >\r\n <button\r\n className=\"deleteModule_button\"\r\n onClick={(e) => {\r\n if (\r\n window.confirm(\r\n \"Are you sure you wish to delete module \" + thisId + \"?\"\r\n )\r\n )\r\n deleteModule(thisId);\r\n }}\r\n >\r\n Delete\r\n </button>\r\n </div>\r\n );\r\n}\r\n\r\nexport default DeleteModule;\r\n","C:\\Users\\FiercePC\\WebstormProjects\\epic-learning-and-engagement-tool\\src\\DataAnalysis\\Median.js",["357"],"export default function findMedian (array){\r\n var trueMedian = 0;\r\n var middleLocation = 0;\r\n if ((array.length % 2) == 0){\r\n middleLocation = (array.length/2)-0.5;\r\n trueMedian = (array[(array.length/2)-1]+array[array.length/2])/2;\r\n }else{\r\n trueMedian = array[(array.length/2)-0.5];\r\n }\r\n\r\n return [trueMedian, middleLocation]\r\n}","C:\\Users\\FiercePC\\WebstormProjects\\epic-learning-and-engagement-tool\\src\\DataAnalysis\\Quartiles.js",["358","359","360"],"import findMedian from \"./Median\";\r\n\r\nexport default function findQuartiles (array, median, totalStudents){\r\n var trueLQ = 0;\r\n var trueUQ = 0;\r\n if ((array.length % 2) == 0){\r\n var lowerRange = array.slice(0, (median+0.5));\r\n var upperRange = array.slice((median+0.5), array.length) ;\r\n }else{\r\n var lowerRange = array.slice(0, median);\r\n var upperRange = array.slice(median, array.length);\r\n }\r\n trueLQ = findMedian(lowerRange);\r\n trueUQ = findMedian(upperRange);\r\n trueUQ[1] = (trueUQ[1]+(totalStudents/2));\r\n return [trueLQ, trueUQ]\r\n}",["361","362"],"C:\\Users\\FiercePC\\WebstormProjects\\epic-learning-and-engagement-tool\\src\\DataAnalysis\\BarChart.js",["363"],"import React, {Component} from 'react';\r\nimport data from './Data';\r\nimport {Legend, ComposedChart, Bar, Line, CartesianGrid, XAxis, YAxis, Tooltip, Label, ResponsiveContainer } from 'recharts';\r\nimport CSS from './GraphElement.css';\r\n\r\nclass BarChart extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.selectBar = this.selectBar.bind(this);\r\n this.state = {\r\n labels: this.props.labels,\r\n };\r\n }\r\n\r\n selectBar(event) {\r\n let updatedLabels = [];\r\n for (let i = 0; i < this.state.labels.length; i++) {\r\n let label = this.state.labels[i];\r\n if (label.key !== event.dataKey) {\r\n updatedLabels.push(label);\r\n } else {\r\n if (/\\s/.test(label.key)) {\r\n let newLabel = { key: label.key.trim(), color: label.color };\r\n updatedLabels.push(newLabel);\r\n } else {\r\n let newLabel = { key: label.key + \" \", color: label.color };\r\n updatedLabels.push(newLabel);\r\n }\r\n }\r\n }\r\n this.setState({\r\n labels: updatedLabels,\r\n });\r\n }\r\n render() {\r\n return (\r\n <div>\r\n <ResponsiveContainer className=\"MarkGraph\" width=\"90%\" height={600}>\r\n <ComposedChart data={data} margin={{ top: 10, bottom: 30 }}>\r\n <Bar dataKey=\"Mark\" fill=\"#BB86FC\" />\r\n <CartesianGrid\r\n vertical=\"false\"\r\n stroke=\"#121212\"\r\n strokeDasharray=\"3 3\"\r\n />\r\n <XAxis\r\n dataKey=\"Title\"\r\n axisLine={{ stroke: \"#121212\" }}\r\n tick={{ dy: 7 }}\r\n stroke=\"#F8F8FF\"\r\n tickInterval=\"150\"\r\n tickCount-=\"{data.length}\"\r\n >\r\n <Label\r\n value=\"Assignments\"\r\n position=\"insideBottom\"\r\n offset={-20}\r\n stroke=\"#F8F8FF\"\r\n />\r\n </XAxis>\r\n <YAxis\r\n domain={[0, 100]}\r\n tickInterval=\"10\"\r\n tickCount=\"11\"\r\n axisLine={{ stroke: \"#121212\" }}\r\n stroke=\"#F8F8FF\"\r\n >\r\n <Label\r\n value=\"Marks (%)\"\r\n angle=\"-90\"\r\n position=\"left\"\r\n offset={-17.5}\r\n stroke=\"#F8F8FF\"\r\n />\r\n </YAxis>\r\n <Tooltip />\r\n <Legend\r\n onClick={this.selectBar}\r\n wrapperStyle={{ paddingLeft: \"4%\", paddingTop: \"5px\" }}\r\n />\r\n {this.state.labels.map((label, index) => (\r\n <Line\r\n key={index}\r\n dataKey={label.key}\r\n fill={label.color}\r\n stroke={label.color}\r\n strokeWidth=\"2px\"\r\n stackId={this.state.dataKey}\r\n />\r\n ))}\r\n </ComposedChart>\r\n </ResponsiveContainer>\r\n </div>\r\n );\r\n }\r\n}\r\n\r\nexport default BarChart","C:\\Users\\FiercePC\\WebstormProjects\\epic-learning-and-engagement-tool\\src\\Student\\components\\StudentModuleGroup.js",[],"C:\\Users\\FiercePC\\WebstormProjects\\epic-learning-and-engagement-tool\\src\\Student\\components\\StudentModulePage.js",[],"C:\\Users\\FiercePC\\WebstormProjects\\epic-learning-and-engagement-tool\\src\\DataAnalysis\\TestingEasySolution.js",["364"],"import React, { useEffect, useState } from \"react\";\r\nimport { db } from \"../firebase\";\r\nimport BarChart from \"./BarChart\";\r\nimport BarFormat from \"./SimpleBarFormat\";\r\nimport \"./GraphElement.css\";\r\n\r\n/**\r\n * Created by: Harry Clifford\r\n * Displays a graph and list of assignments to be displayed on the webpage\r\n */\r\n\r\nlet labels = [\r\n { key: \"Median\", color: \"#260080\"},\r\n { key: \"Mean\", color: \"#03DAC6\"},\r\n { key: \"UQ\", color: \"#EBAF4C\"},\r\n { key: \"LQ\", color: \"#00E600\"}\r\n];\r\n\r\n// Outputs the graph and assignment list for the results pages\r\nexport default function TestingEasySolution(){\r\n // Set's default use state's and data logging for firebase\r\n const [Assignments, SetAssignments] = useState([]);\r\n const [Modules, SetModules] = useState([]);\r\n const [Data, SetData] = useState([]);\r\n const [BarGraph, SetGraph] = useState(<h3>Graph Loading</h3>);\r\n const modules = []\r\n const assignments = []\r\n\r\n useEffect(() => {\r\n // Sets modules to have a list of all modules\r\n function returnAssignments() {\r\n db.collection(\"Courses\")\r\n .doc(\"Computer Science\")\r\n .collection(\"modules\")\r\n .get()\r\n .then((snapshot) => {\r\n snapshot.forEach((doc) => {\r\n const data = doc.data();\r\n modules.push(data.Title);\r\n });\r\n SetModules(modules);\r\n getAssignments()\r\n })\r\n .catch((error) => console.log(error));\r\n }\r\n // Set's up the assignments to have mark details to be used by SimpleBarFormat and the AssignmentList\r\n function getAssignments() {\r\n SetAssignments([]);\r\n for (let i = 0; i < modules.length; i++) {\r\n db.collection(\"Courses\")\r\n .doc(\"Computer Science\")\r\n .collection(\"modules\")\r\n .doc(modules[i])\r\n .collection(\"Assignments\")\r\n .get()\r\n .then((snapshot) => {\r\n snapshot.forEach((doc) => {\r\n const data = doc.data();\r\n if (data.Graded === true) {\r\n assignments.push({MarkList: data.MarkList, Title: data.Title, MaxMark: data.Marks})\r\n }\r\n });\r\n SetAssignments(assignments)\r\n });\r\n }\r\n\r\n }\r\n returnAssignments();\r\n }, []);\r\n // Update the data to be used by the graph as the list of modules and assignments changes\r\n useEffect (() => {\r\n function updateData(){\r\n SetData(BarFormat(Assignments))\r\n }\r\n updateData()\r\n }, [Assignments, Modules])\r\n // Updates the graph everytime the data to be displayed within changes\r\n useEffect (() => {\r\n function updateGraph(){\r\n if (Data !== []) {\r\n SetGraph(<BarChart key={Data.length}\r\n data={Data}\r\n labels={labels}/>)\r\n }\r\n }\r\n updateGraph()\r\n }, [Data])\r\n // Returns the graph along with a list of assignments\r\n return(\r\n <div>\r\n {BarGraph}\r\n {Data.map(data =>\r\n <div className=\"AssignmentList\" key={data.Title}>\r\n <h5> {data.Title} </h5>\r\n <p>\r\n Mark: {data.Mark}% Median: {data.Median}% Mean: {data.Mean}%\r\n </p>\r\n </div>\r\n )}\r\n </div>\r\n )\r\n}","C:\\Users\\FiercePC\\WebstormProjects\\epic-learning-and-engagement-tool\\src\\DataAnalysis\\SimpleBarFormat.js",["365","366"],"import findMedian from \"./Median\";\r\nimport findQuartiles from \"./Quartiles\";\r\nimport { db } from \"../firebase\";\r\n\r\n/**\r\n * Created by: Harry Clifford\r\n * Format's data to be displayed by Rechart's bar chart\r\n */\r\n\r\n// Returns the formatted data for a bar chart\r\nfunction BarFormat(data) {\r\n if (data[0] === undefined){\r\n return []\r\n }\r\n // Finds the averages for each individual assignment and adds them to an array\r\n let newData = []\r\n for (let i = 0; i < data.length; i++) {\r\n let MarkList = data[i].MarkList;\r\n MarkList = MarkList.sort(compareFunction)\r\n let Title = data[i].Title;\r\n let MaxMark = data[i].MaxMark;\r\n let median = findMedian(MarkList)\r\n let quartiles = findQuartiles(MarkList, median[1], MarkList.length);\r\n let mean = 0;\r\n for (let x = 0; x < MarkList.length; x++) {\r\n mean += MarkList[x]\r\n }\r\n mean = mean / MarkList.length\r\n mean = Percentage(mean, MaxMark)\r\n let Mark = 20;\r\n Mark = Percentage(Mark, MaxMark)\r\n newData.push({\r\n Title: Title, Median: Percentage(median[0], MaxMark), Mark: Mark,\r\n UQ: Percentage(quartiles[1][0], MaxMark), LQ: Percentage(quartiles[0][0], MaxMark), Mean: mean\r\n })\r\n }\r\n return (newData)\r\n}\r\n\r\nfunction userMark(){\r\n let Mark = \"\";\r\n //Code for getting the user's specific mark may go here\r\n return Mark\r\n}\r\n\r\n// Returns the percentage acheieved relative to the maximum available\r\nfunction Percentage(achieved, max) {\r\n var percentage = (achieved / max) * 100;\r\n percentage = +percentage.toFixed(2);\r\n return percentage;\r\n}\r\n\r\n// When used with sort returns a numerically ordered list from lowest to highest\r\nfunction compareFunction(a, b) {\r\n return a - b;\r\n}\r\n\r\nexport default BarFormat","C:\\Users\\FiercePC\\WebstormProjects\\epic-learning-and-engagement-tool\\src\\Student\\components\\welcomeUser.js",["367"],"import React, { useState } from \"react\";\nimport { db } from \"../../firebase\";\nimport firebase from \"firebase\";\nimport Card from \"react-bootstrap/Card\";\n\n/**\n * Created by: Luke Waterhouse\n * This file contains functionality to display a welcome message for the currently logged in user\n */\n\n//pulls the username and sets it to state\nexport default function Welcome() {\n const [userName, setUsername] = useState(\"\");\n\n let userID = \"\";\n\n //first checks if there is an authState change before retrieving the current users details\n firebase.auth().onAuthStateChanged(function (user) {\n if (user) {\n getUserID().then((r) => {\n db.collection(\"UserDetails\")\n .doc(userID)\n .get()\n .then((doc) => {\n const username = doc.data().username;\n setUsername(username);\n });\n });\n } else {\n console.log(\"DATABASE ERROR\");\n }\n });\n\n async function getUserID() {\n userID = firebase.auth().currentUser.uid;\n console.log(\"ID:\", userID);\n }\n\n return (\n <div>\n <Card style={{ background: \"#424242\" }}>\n <h3 style={{ color: \"white\" }}>Welcome {userName}!</h3>\n </Card>\n </div>\n );\n}\n","C:\\Users\\FiercePC\\WebstormProjects\\epic-learning-and-engagement-tool\\src\\Admin\\components\\AdminGetSubmissions.js",["368","369"],"import React, { useEffect } from \"react\";\nimport { db } from \"../../firebase\";\nimport { useDocumentData } from \"react-firebase-hooks/firestore\";\nimport AdminSubmissionDisplay from \"./AdminSubmissionDisplay\";\n\n/**\n * Created by: Giorgos Christodoulou\n * This file contains a component which fetches the user submissions from the firebase submissions collection,\n * and loops through them to display each one in a list.\n */\n\nconst AdminGetSubmissions = (props) => {\n //Checking the values in props are as desired.\n console.log(props);\n\n const [subs, setSubs] = React.useState([]);\n\n //Creates an Object list from the current assignments document data in the firebase\n const AssignRef = db\n .collection(\"Courses\")\n .doc(\"Computer Science\")\n .collection(\"modules\")\n .doc(props.module)\n .collection(\"Assignments\")\n .doc(props.input);\n const [ass] = useDocumentData(AssignRef);\n\n //Creates a mapped list of all the submissions for an assignment.\n useEffect(() => {\n const fetchsubs = async () => {\n //Gets a reference for the collection\n const SubRef = await db\n .collection(\"Courses\")\n .doc(\"Computer Science\")\n .collection(\"modules\")\n .doc(props.module)\n .collection(\"Assignments\")\n .doc(props.input)\n .collection(\"Submissions\")\n .get();\n //Adds all the submissions in a list.\n setSubs(\n SubRef.docs.map((doc) => {\n return doc.data();\n })\n );\n };\n fetchsubs();\n }, []);\n\n return (\n <div>\n <ul>\n {subs.map((submission) => {\n //Displays the submissions.\n return (\n <div>\n <li>\n <AdminSubmissionDisplay\n key={submission.id}\n submission={submission}\n props={props}\n />\n </li>\n </div>\n );\n })}\n </ul>\n </div>\n );\n};\n\nexport default AdminGetSubmissions;\n","C:\\Users\\FiercePC\\WebstormProjects\\epic-learning-and-engagement-tool\\src\\Admin\\components\\FinishedGrading.js",[],"C:\\Users\\FiercePC\\WebstormProjects\\epic-learning-and-engagement-tool\\src\\Student\\components\\AssignmentSubmit.js",["370"],"import React, { useState } from \"react\";\nimport { db, auth } from \"../../firebase\";\nimport Button from \"react-bootstrap/Button\";\nimport Dialog from \"@material-ui/core/Dialog\";\nimport { DialogActions, DialogContent, DialogTitle } from \"@material-ui/core\";\nimport firebase from \"firebase\";\nimport { useDocumentData } from \"react-firebase-hooks/firestore\";\n\n/**\n * Created by: Giorgos Christodoulou\n * This file contains a function that allows the user to uplaod a file into the cloud storage\n * as a submission to the previously selected assignment.\n */\n\nfunction AssignmentSubmit(props) {\n const [fileUrl, setFileUrl] = React.useState(null);\n const [open, setOpen] = React.useState(false);\n const [userName, setUsername] = useState(\"\");\n\n let userID = \"\";\n\n //first checks if there is an authState change before retrieving the current users details\n firebase.auth().onAuthStateChanged(function (user) {\n if (user) {\n getUserID().then((r) => {\n db.collection(\"UserDetails\")\n .doc(userID)\n .get()\n .then((doc) => {\n const username = doc.data().username;\n setUsername(username);\n });\n });\n } else {\n console.log(\"DATABASE ERROR\");\n }\n });\n\n async function getUserID() {\n userID = firebase.auth().currentUser.uid;\n console.log(\"ID:\", userID);\n }\n\n //Creates an Object list using the document data of the current assignment.\n const AssignRef = db\n .collection(\"Courses\")\n .doc(\"Computer Science\")\n .collection(\"modules\")\n .doc(props.module)\n .collection(\"Assignments\")\n .doc(props.input);\n const [ass] = useDocumentData(AssignRef);\n\n const onFileChange = async (e) => {\n //Gets File from event state and stores it in the firebase storage.\n const file = e.target.files[0];\n const storageRef = firebase.storage().ref();\n const fileRef = storageRef.child(\n \"Modules/\" +\n props.module +\n \"/\" +\n ass.Title +\n \"/\" +\n firebase.auth().currentUser.uid +\n \"/\" +\n file.name\n );\n await fileRef.put(file);\n setFileUrl(await fileRef.getDownloadURL()); //Creates a download Url for the file.\n };\n\n const onSubmit = (e) => {\n e.preventDefault();\n\n db.collection(\"Courses\")\n .doc(\"Computer Science\")\n .collection(\"modules\")\n .doc(props.module)\n .collection(\"Assignments\")\n .doc(props.input)\n .collection(\"Submissions\")\n .doc(firebase.auth().currentUser.uid)\n //Current user id is the unique id for their submission in the Submission collection.\n .set({\n id: firebase.auth().currentUser.uid,\n Name: userName,\n Filename: fileUrl, //Stores file download url for future download.\n Grade: 0,\n Graded: false,\n })\n .then(() => {\n alert(\"Successfully submitted!\");\n })\n .catch((error) => {\n alert(error.message);\n });\n\n //Reset values.\n\n setFileUrl(null);\n setOpen(false);\n };\n\n const handleClickOpen = () => {\n setOpen(true);\n };\n const handleClose = () => {\n setOpen(false);\n };\n\n return (\n //Displays a dialog box with a file input.\n <>\n <div>\n <div className=\"mb-2\">\n <Button variant=\"info\" size=\"lg\" onClick={handleClickOpen}>\n Submit Assignment\n </Button>\n </div>\n <Dialog\n open={open}\n onClose={handleClose}\n aria-labelledby=\"Submit\"\n fullWidth\n >\n <DialogTitle id=\"Submit\">\n <span style={{ color: \"lightBlue\" }}>Submit</span>\n </DialogTitle>\n <DialogContent>\n <form onSubmit={onSubmit}>\n <input\n style={{ color: \"black\" }}\n type=\"file\"\n onChange={onFileChange}\n />\n </form>\n </DialogContent>\n <DialogActions>\n <Button onClick={handleClose} variant=\"info\">\n Cancel\n </Button>\n <Button onClick={onSubmit} variant=\"info\">\n Submit\n </Button>\n </DialogActions>\n </Dialog>\n </div>\n </>\n );\n}\nexport default AssignmentSubmit;\n","C:\\Users\\FiercePC\\WebstormProjects\\epic-learning-and-engagement-tool\\src\\Admin\\components\\AdminSubmissionDisplay.js",["371","372"],"import React, { useState } from \"react\";\nimport { db } from \"../../firebase\";\nimport { useDocumentData } from \"react-firebase-hooks/firestore\";\nimport {\n DialogActions,\n DialogContent,\n DialogTitle,\n Link,\n TextField,\n} from \"@material-ui/core\";\nimport { Button } from \"react-bootstrap\";\nimport Dialog from \"@material-ui/core/Dialog\";\n\n/**\n * Created by: Giorgos Christodoulou\n * This file contains a function that fetches the submissions from the database and lists them as button.\n * When clicked, a dialog screen is displayed, with the submitted document and an input for a grade.\n * When the grade is submitted, it is updated in the database and it is added in the mark list for grads in the specific assignment.\n */\n\nfunction AdminSubmissionDisplay(props) {\n //Checking the values in props are as desired.\n console.log(props);\n\n const [open, setOpen] = useState(false);\n const [Grade, setGrade] = useState(0);\n\n //Creates an Object list from the current assignments document data in the firebase.\n const AssRef = db\n .collection(\"Courses\")\n .doc(\"Computer Science\")\n .collection(\"modules\")\n .doc(props.props.module)\n .collection(\"Assignments\")\n .doc(props.props.input);\n const [ass] = useDocumentData(AssRef);\n console.log([ass]);\n\n //\n const onDone = (e) => {\n e.preventDefault();\n\n db.collection(\"Courses\")\n .doc(\"Computer Science\")\n .collection(\"modules\")\n .doc(props.props.module)\n .collection(\"Assignments\")\n .doc(props.props.input)\n .collection(\"Submissions\")\n .doc(props.submission.id)\n .update({\n //Updates the users grade and marks them as graded\n Grade: Grade,\n Graded: true,\n })\n .then(() => {\n alert(\"Student has been Graded!\");\n })\n .catch((error) => {\n alert(error.message);\n });\n\n //Adds their mark to the Marklist.\n const MarkList = ass.MarkList;\n MarkList.push(Grade);\n\n db.collection(\"Courses\")\n .doc(\"Computer Science\")\n .collection(\"modules\")\n .doc(props.props.module)\n .collection(\"Assignments\")\n .doc(props.props.input)\n .update({\n //Replaces the old Mark list with the new one.\n MarkList: MarkList,\n })\n .then(() => {\n alert(\"Student Grade has been added ot the List\");\n })\n .catch((error) => {\n alert(error.message);\n });\n\n setGrade(0);\n setOpen(false);\n };\n\n const handleClickOpen = () => {\n setOpen(true);\n };\n const handleClose = () => {\n setOpen(false);\n };\n\n return (\n //Lists the submitters names as buttons.\n <div>\n <div\n className=\"card-header border-white border-top text-md-center\"\n style={{ borderBlockColor: \"#424242\" }}\n >\n <a className=\"text-warning\">\n <Button\n variant=\"secondary\"\n onClick={handleClickOpen}\n style={{ background: \"#424242\" }}\n >\n {props.submission.Name}\n </Button>\n </a>\n </div>\n\n <Dialog\n open={open}\n onClose={handleClose} // When a button is clicked it opens a dialog box with a displayed submission.\n aria-labelledby=\"Grade\"\n fullWidth\n >\n <DialogTitle id=\"Grade\">\n <span style={{ color: \"lightBlue\" }}>Submit</span>\n </DialogTitle>\n <DialogContent>\n <object\n width=\"100%\"\n height=\"400\"\n data={props.submission.Filename}\n type=\"application/pdf\"\n >\n {\" \"}\n </object>\n <br />\n <TextField\n placeholder=\"Grade\"\n label=\"Grade\"\n margin=\"Grade\"\n variant=\"outlined\"\n value={Grade}\n onChange={(e) => setGrade(e.target.value)}\n /* The admins inputted grade is stored in the event*/\n />\n </DialogContent>\n <DialogActions>\n <Button onClick={handleClose} variant=\"info\">\n Cancel\n </Button>\n <Button onClick={onDone} variant=\"info\">\n Done\n </Button>\n </DialogActions>\n </Dialog>\n </div>\n );\n}\n\nexport default AdminSubmissionDisplay;\n","C:\\Users\\FiercePC\\WebstormProjects\\epic-learning-and-engagement-tool\\src\\DataAnalysis\\AdminGraph.js",[],"C:\\Users\\FiercePC\\WebstormProjects\\epic-learning-and-engagement-tool\\src\\DataAnalysis\\AdminEasySolution.js",["373"],"import React, { useEffect, useState } from \"react\";\nimport { db } from \"../firebase\";\nimport BarChart from \"./AdminBarChart\";\nimport BarFormat from \"./AdminBarFormat\";\nimport \"./GraphElement.css\";\n\n/**\n * Created by: Harry Clifford\n * Displays a graph and list of assignments to be displayed on the webpage\n */\n\nlet labels = [\n { key: \"Median\", color: \"#260080\" },\n { key: \"Mean\", color: \"#03DAC6\" },\n { key: \"UQ\", color: \"#EBAF4C\" },\n { key: \"LQ\", color: \"#00E600\" },\n];\n\n// Outputs the graph and assignment list for the results pages\nexport default function TestingEasySolution() {\n // Set's default use state's and data logging for firebase\n const [Assignments, SetAssignments] = useState([]);\n const [Modules, SetModules] = useState([]);\n const [Data, SetData] = useState([]);\n const [BarGraph, SetGraph] = useState(<h3>Graph Loading</h3>);\n const modules = [];\n const assignments = [];\n\n useEffect(() => {\n // Sets modules to have a list of all modules\n function returnAssignments() {\n db.collection(\"Courses\")\n .doc(\"Computer Science\")\n .collection(\"modules\")\n .get()\n .then((snapshot) => {\n snapshot.forEach((doc) => {\n const data = doc.data();\n modules.push(data.Title);\n });\n SetModules(modules);\n getAssignments();\n })\n .catch((error) => console.log(error));\n }\n // Set's up the assignments to have mark details to be used by SimpleBarFormat and the AssignmentList\n function getAssignments() {\n SetAssignments([]);\n for (let i = 0; i < modules.length; i++) {\n db.collection(\"Courses\")\n .doc(\"Computer Science\")\n .collection(\"modules\")\n .doc(modules[i])\n .collection(\"Assignments\")\n .get()\n .then((snapshot) => {\n snapshot.forEach((doc) => {\n const data = doc.data();\n if (data.Marked === true) {\n assignments.push({\n MarkList: data.MarkList,\n Title: data.Title,\n MaxMark: data.Marks,\n });\n }\n });\n SetAssignments(assignments);\n });\n }\n }\n returnAssignments();\n }, []);\n // Update the data to be used by the graph as the list of modules and assignments changes\n useEffect(() => {\n function updateData() {\n SetData(BarFormat(Assignments));\n }\n updateData();\n }, [Assignments, Modules]);\n // Updates the graph everytime the data to be displayed within changes\n useEffect(() => {\n function updateGraph() {\n if (Data !== []) {\n SetGraph(<BarChart key={Data.length} data={Data} labels={labels} />);\n }\n }\n updateGraph();\n }, [Data]);\n // Returns the graph along with a list of assignments\n return (\n <div>\n {BarGraph}\n {Data.map((data) => (\n <div className=\"AssignmentList\" key={data.Title}>\n <h5> {data.Title} </h5>\n <p>\n Median: {data.Median}% Mean: {data.Mean}% UQ: {data.UQ}% LQ:{\" \"}\n {data.LQ}%\n </p>\n </div>\n ))}\n </div>\n );\n}\n","C:\\Users\\FiercePC\\WebstormProjects\\epic-learning-and-engagement-tool\\src\\DataAnalysis\\AdminBarFormat.js",[],"C:\\Users\\FiercePC\\WebstormProjects\\epic-learning-and-engagement-tool\\src\\DataAnalysis\\AdminBarChart.js",["374","375"],"import React, { Component } from \"react\";\nimport {\n Legend,\n ComposedChart,\n Bar,\n Line,\n CartesianGrid,\n XAxis,\n YAxis,\n Tooltip,\n Label,\n ResponsiveContainer,\n} from \"recharts\";\nimport CSS from \"./GraphElement.css\";\n\n/**\n * Created by: Harry Clifford\n * Code to create a bar chart in recharts with a custom toggleable legend\n */\n\nlet data = [];\n\n// Creates a Rechart bar chart with interactive legend\nclass BarChart extends Component {\n // Set up class properties\n constructor(props) {\n super(props);\n this.selectBar = this.selectBar.bind(this);\n data = props.data;\n this.state = {\n labels: this.props.labels,\n };\n }\n // Update legend on click to hide/show lines\n selectBar(event) {\n let updatedLabels = [];\n for (let i = 0; i < this.state.labels.length; i++) {\n let label = this.state.labels[i];\n if (label.key !== event.dataKey) {\n updatedLabels.push(label);\n } else {\n if (/\\s/.test(label.key)) {\n let newLabel = { key: label.key.trim(), color: label.color };\n updatedLabels.push(newLabel);\n } else {\n let newLabel = { key: label.key + \" \", color: label.color };\n updatedLabels.push(newLabel);\n }\n }\n }\n this.setState({\n labels: updatedLabels,\n });\n }\n // Renders bar chart\n render() {\n return (\n <div>\n <ResponsiveContainer className=\"MarkGraph\" width=\"90%\" height={600}>\n <ComposedChart data={data} margin={{ top: 10, bottom: 30 }}>\n <CartesianGrid stroke=\"#626262\" strokeDasharray=\"3 3\" />\n <XAxis\n dataKey=\"Title\"\n axisLine={{ stroke: \"#626262\" }}\n tick={{ dy: 7 }}\n stroke=\"#626262\"\n tickInterval=\"150\"\n tickCount-=\"{data.length}\"\n >\n <Label\n value=\"Assignments\"\n position=\"insideBottom\"\n offset={-40}\n stroke=\"#F8F8FF\"\n />\n </XAxis>\n <YAxis\n domain={[0, 100]}\n tickInterval=\"10\"\n tickCount=\"11\"\n axisLine={{ stroke: \"#626262\" }}\n stroke=\"#626262\"\n >\n <Label\n value=\"Marks (%)\"\n angle=\"-90\"\n position=\"left\"\n offset={-17.5}\n stroke=\"#F8F8FF\"\n />\n </YAxis>\n <Tooltip contentStyle={{ background: \"#626262\" }} />\n <Legend\n onClick={this.selectBar}\n wrapperStyle={{ paddingLeft: \"4%\", paddingTop: \"5px\" }}\n />\n {this.state.labels.map((label, index) => (\n <Line\n key={index}\n dataKey={label.key}\n fill={label.color}\n stroke={label.color}\n strokeWidth=\"2px\"\n stackId={this.state.dataKey}\n />\n ))}\n </ComposedChart>\n </ResponsiveContainer>\n </div>\n );\n }\n}\nexport default BarChart;\n",{"ruleId":"376","replacedBy":"377"},{"ruleId":"378","replacedBy":"379"},{"ruleId":"380","severity":1,"message":"381","line":48,"column":9,"nodeType":"382","messageId":"383","endLine":57,"endColumn":10},{"ruleId":"380","severity":1,"message":"381","line":104,"column":13,"nodeType":"382","messageId":"383","endLine":112,"endColumn":14},{"ruleId":"384","severity":1,"message":"385","line":120,"column":6,"nodeType":"386","endLine":120,"endColumn":8,"suggestions":"387"},{"ruleId":"388","severity":1,"message":"389","line":1,"column":17,"nodeType":"390","messageId":"391","endLine":1,"endColumn":25},{"ruleId":"388","severity":1,"message":"392","line":1,"column":27,"nodeType":"390","messageId":"391","endLine":1,"endColumn":36},{"ruleId":"388","severity":1,"message":"389","line":1,"column":17,"nodeType":"390","messageId":"391","endLine":1,"endColumn":25},{"ruleId":"388","severity":1,"message":"392","line":1,"column":27,"nodeType":"390","messageId":"391","endLine":1,"endColumn":36},{"ruleId":"388","severity":1,"message":"389","line":1,"column":17,"nodeType":"390","messageId":"391","endLine":1,"endColumn":25},{"ruleId":"388","severity":1,"message":"392","line":1,"column":27,"nodeType":"390","messageId":"391","endLine":1,"endColumn":36},{"ruleId":"388","severity":1,"message":"393","line":5,"column":20,"nodeType":"390","messageId":"391","endLine":5,"endColumn":29},{"ruleId":"388","severity":1,"message":"394","line":3,"column":10,"nodeType":"390","messageId":"391","endLine":3,"endColumn":12},{"ruleId":"388","severity":1,"message":"395","line":4,"column":10,"nodeType":"390","messageId":"391","endLine":4,"endColumn":27},{"ruleId":"388","severity":1,"message":"396","line":5,"column":10,"nodeType":"390","messageId":"391","endLine":5,"endColumn":14},{"ruleId":"397","severity":1,"message":"398","line":24,"column":13,"nodeType":"399","endLine":24,"endColumn":31},{"ruleId":"388","severity":1,"message":"400","line":2,"column":8,"nodeType":"390","messageId":"391","endLine":2,"endColumn":11},{"ruleId":"388","severity":1,"message":"401","line":7,"column":5,"nodeType":"390","messageId":"391","endLine":7,"endColumn":9},{"ruleId":"402","severity":1,"message":"403","line":36,"column":7,"nodeType":"399","endLine":36,"endColumn":35},{"ruleId":"384","severity":1,"message":"404","line":86,"column":6,"nodeType":"386","endLine":86,"endColumn":8,"suggestions":"405"},{"ruleId":"384","severity":1,"message":"406","line":40,"column":6,"nodeType":"386","endLine":40,"endColumn":8,"suggestions":"407"},{"ruleId":"388","severity":1,"message":"408","line":2,"column":10,"nodeType":"390","messageId":"391","endLine":2,"endColumn":17},{"ruleId":"388","severity":1,"message":"409","line":3,"column":10,"nodeType":"390","messageId":"391","endLine":3,"endColumn":17},{"ruleId":"388","severity":1,"message":"410","line":4,"column":10,"nodeType":"390","messageId":"391","endLine":4,"endColumn":18},{"ruleId":"397","severity":1,"message":"398","line":23,"column":11,"nodeType":"399","endLine":23,"endColumn":29},{"ruleId":"388","severity":1,"message":"408","line":2,"column":10,"nodeType":"390","messageId":"391","endLine":2,"endColumn":17},{"ruleId":"388","severity":1,"message":"409","line":3,"column":10,"nodeType":"390","messageId":"391","endLine":3,"endColumn":17},{"ruleId":"388","severity":1,"message":"410","line":4,"column":10,"nodeType":"390","messageId":"391","endLine":4,"endColumn":18},{"ruleId":"402","severity":1,"message":"403","line":36,"column":7,"nodeType":"399","endLine":36,"endColumn":35},{"ruleId":"388","severity":1,"message":"389","line":1,"column":17,"nodeType":"390","messageId":"391","endLine":1,"endColumn":25},{"ruleId":"388","severity":1,"message":"411","line":2,"column":8,"nodeType":"390","messageId":"391","endLine":2,"endColumn":19},{"ruleId":"384","severity":1,"message":"406","line":39,"column":6,"nodeType":"386","endLine":39,"endColumn":8,"suggestions":"412"},{"ruleId":"388","severity":1,"message":"413","line":7,"column":3,"nodeType":"390","messageId":"391","endLine":7,"endColumn":14},{"ruleId":"388","severity":1,"message":"414","line":8,"column":3,"nodeType":"390","messageId":"391","endLine":8,"endColumn":13},{"ruleId":"402","severity":1,"message":"403","line":36,"column":7,"nodeType":"399","endLine":36,"endColumn":35},{"ruleId":"388","severity":1,"message":"395","line":4,"column":10,"nodeType":"390","messageId":"391","endLine":4,"endColumn":27},{"ruleId":"388","severity":1,"message":"415","line":3,"column":8,"nodeType":"390","messageId":"391","endLine":3,"endColumn":14},{"ruleId":"416","severity":1,"message":"417","line":4,"column":28,"nodeType":"418","messageId":"419","endLine":4,"endColumn":30},{"ruleId":"416","severity":1,"message":"417","line":6,"column":28,"nodeType":"418","messageId":"419","endLine":6,"endColumn":30},{"ruleId":"420","severity":1,"message":"421","line":10,"column":13,"nodeType":"390","messageId":"422","endLine":10,"endColumn":23},{"ruleId":"420","severity":1,"message":"423","line":11,"column":13,"nodeType":"390","messageId":"422","endLine":11,"endColumn":23},{"ruleId":"376","replacedBy":"424"},{"ruleId":"378","replacedBy":"425"},{"ruleId":"388","severity":1,"message":"400","line":4,"column":8,"nodeType":"390","messageId":"391","endLine":4,"endColumn":11},{"ruleId":"384","severity":1,"message":"426","line":69,"column":8,"nodeType":"386","endLine":69,"endColumn":10,"suggestions":"427"},{"ruleId":"388","severity":1,"message":"394","line":3,"column":10,"nodeType":"390","messageId":"391","endLine":3,"endColumn":12},{"ruleId":"388","severity":1,"message":"428","line":40,"column":10,"nodeType":"390","messageId":"391","endLine":40,"endColumn":18},{"ruleId":"388","severity":1,"message":"392","line":1,"column":17,"nodeType":"390","messageId":"391","endLine":1,"endColumn":26},{"ruleId":"388","severity":1,"message":"429","line":26,"column":13,"nodeType":"390","messageId":"391","endLine":26,"endColumn":16},{"ruleId":"384","severity":1,"message":"430","line":45,"column":7,"nodeType":"386","endLine":45,"endColumn":9,"suggestions":"431"},{"ruleId":"388","severity":1,"message":"432","line":2,"column":14,"nodeType":"390","messageId":"391","endLine":2,"endColumn":18},{"ruleId":"388","severity":1,"message":"396","line":4,"column":52,"nodeType":"390","messageId":"391","endLine":4,"endColumn":56},{"ruleId":"402","severity":1,"message":"403","line":93,"column":17,"nodeType":"399","endLine":93,"endColumn":45},{"ruleId":"384","severity":1,"message":"426","line":72,"column":8,"nodeType":"386","endLine":72,"endColumn":10,"suggestions":"433"},{"ruleId":"388","severity":1,"message":"434","line":5,"column":5,"nodeType":"390","messageId":"391","endLine":5,"endColumn":8},{"ruleId":"388","severity":1,"message":"400","line":14,"column":8,"nodeType":"390","messageId":"391","endLine":14,"endColumn":11},"no-native-reassign",["435"],"no-negated-in-lhs",["436"],"default-case","Expected a default case.","SwitchStatement","missingDefaultCase","react-hooks/exhaustive-deps","React Hook useEffect has a missing dependency: 'authListener'. Either include it or remove the dependency array.","ArrayExpression",["437"],"no-unused-vars","'useState' is defined but never used.","Identifier","unusedVar","'useEffect' is defined but never used.","'CardGroup' is defined but never used.","'db' is defined but never used.","'useCollectionData' is defined but never used.","'Link' is defined but never used.","jsx-a11y/alt-text","img elements must have an alt prop, either with meaningful text, or an empty string for decorative images.","JSXOpeningElement","'CSS' is defined but never used.","'data' is assigned a value but never used.","jsx-a11y/anchor-is-valid","The href attribute is required for an anchor to be keyboard accessible. Provide a valid, navigable address as the href value. If you cannot provide an href, but still need the element to resemble a link, use a button and change it with appropriate styles. Learn more: https://github.com/evcohen/eslint-plugin-jsx-a11y/blob/master/docs/rules/anchor-is-valid.md","React Hook useEffect has missing dependencies: 'AssignmentsToSet' and 'modules'. Either include them or remove the dependency array.",["438"],"React Hook useEffect has a missing dependency: 'props.input'. Either include it or remove the dependency array.",["439"],"'connect' is defined but never used.","'compose' is defined but never used.","'Redirect' is defined but never used.","'AdminNavBar' is defined but never used.",["440"],"'FormControl' is defined but never used.","'makeStyles' is defined but never used.","'Button' is defined but never used.","eqeqeq","Expected '===' and instead saw '=='.","BinaryExpression","unexpected","no-redeclare","'lowerRange' is already defined.","redeclared","'upperRange' is already defined.",["435"],["436"],"React Hook useEffect has missing dependencies: 'assignments' and 'modules'. Either include them or remove the dependency array.",["441"],"'userMark' is defined but never used.","'ass' is assigned a value but never used.","React Hook useEffect has missing dependencies: 'props.input' and 'props.module'. Either include them or remove the dependency array.",["442"],"'auth' is defined but never used.",["443"],"'Bar' is defined but never used.","no-global-assign","no-unsafe-negation",{"desc":"444","fix":"445"},{"desc":"446","fix":"447"},{"desc":"448","fix":"449"},{"desc":"448","fix":"450"},{"desc":"451","fix":"452"},{"desc":"453","fix":"454"},{"desc":"451","fix":"455"},"Update the dependencies array to be: [authListener]",{"range":"456","text":"457"},"Update the dependencies array to be: [AssignmentsToSet, modules]",{"range":"458","text":"459"},"Update the dependencies array to be: [props.input]",{"range":"460","text":"461"},{"range":"462","text":"461"},"Update the dependencies array to be: [assignments, modules]",{"range":"463","text":"464"},"Update the dependencies array to be: [props.input, props.module]",{"range":"465","text":"466"},{"range":"467","text":"464"},[3531,3533],"[authListener]",[3058,3060],"[AssignmentsToSet, modules]",[1458,1460],"[props.input]",[1532,1534],[2594,2596],"[assignments, modules]",[1593,1595],"[props.input, props.module]",[2754,2756]]