{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./src/views/report/IndividualOutcomes.vue?2fcb","webpack:///./src/assets/img/ptc.jpg","webpack:///./src/views/launch_page/Benefits.vue?5396","webpack:///./src/views/grade/SelfReview.vue?2063","webpack:///./src/views/collective_feedback/CollectiveFeedbackList.vue?9543","webpack:///./src/views/collective_feedback/CollectiveFeedbackDetail.vue?4c49","webpack:///./src/views/launch_page/Pedagogy.vue?5dc4","webpack:///./src/views/team_formation/PeerReview.vue?86de","webpack:///./src/assets/img/research-ethic-6.png","webpack:///./src/views/launch_page/BoxesArea.vue?5265","webpack:///./src/views/account/Logout.vue?005a","webpack:///./src/views/error/NoProfile.vue?fded","webpack:///./src/views/support/Contact.vue?8a12","webpack:///./src/views/account/NewLogin.vue?adf1","webpack:///./src/views/account/DemoSignUp.vue?1b3c","webpack:///./src/views/report/Outcomes.vue?ed2f","webpack:///./src/components/layouts/Header.vue?3da3","webpack:///./src/views/report/CollectiveFeedback.vue?2fa6","webpack:///./src/views/score/StudentHolisticScores.vue?2dd2","webpack:///./src/views/appraisal/StudentAppraisal.vue?5bd7","webpack:///./src/views/assignment/NewAssignments.vue?39a1","webpack:///./src/views/team_formation/PeerReview.vue?5349","webpack:///./src/views/course/Courses.vue?979a","webpack:///./src/views/admin/DocumentsDownload.vue?d9f5","webpack:///./src/views/grade/ViewFeedback.vue?3c44","webpack:///./src/assets/img/data-access.jpg","webpack:///./src/views/score/StudentHolisticScores.vue?2b14","webpack:///./src/assets/img/canvas-logo.png","webpack:///./src/views/grade/PeerReview.vue?fa0c","webpack:///./src/views/appraisal/StudentAppraisal.vue?89e9","webpack:///./src/views/account/ForgotPassword.vue?c827","webpack:///./src/views/launch_page/FAQ.vue?a7c9","webpack:///./src/views/admin/NewProjectTemplate.vue?217b","webpack:///./node_modules/moment/locale sync ^\\.\\/.*$","webpack:///./src/views/launch_page/Manuals.vue?3e03","webpack:///./src/views/admin/RubricDetail.vue?f1b2","webpack:///./src/components/layouts/PreLoader.vue?8dc2","webpack:///./src/views/account/Login.vue?ef25","webpack:///./src/views/launch_page/Contact.vue?7912","webpack:///./src/App.vue?b48c","webpack:///./src/components/layouts/Header.vue?be44","webpack:///src/components/layouts/Header.vue","webpack:///./src/components/layouts/Header.vue?52f7","webpack:///./src/components/layouts/Header.vue?f357","webpack:///./src/components/layouts/Footer.vue?d5aa","webpack:///src/components/layouts/Footer.vue","webpack:///./src/components/layouts/Footer.vue?11b5","webpack:///./src/components/layouts/Footer.vue?396f","webpack:///./src/components/layouts/PreLoader.vue?034e","webpack:///src/components/layouts/PreLoader.vue","webpack:///./src/components/layouts/PreLoader.vue?61f8","webpack:///./src/components/layouts/PreLoader.vue?c52c","webpack:///./src/components/layouts/MainNav.vue?f10d","webpack:///./src/utils/url-utils.js","webpack:///./src/services/auth.service.js","webpack:///./src/services/term.service.js","webpack:///./src/services/survey.service.js","webpack:///./src/store/modules/auth.js","webpack:///./src/services/assignment.service.js","webpack:///./src/store/modules/assignment.js","webpack:///./src/services/enrollment.service.js","webpack:///./src/services/subscription.service.js","webpack:///./src/services/course.service.js","webpack:///./src/store/modules/enrollment.js","webpack:///./src/services/collective_feedback.service.js","webpack:///./src/store/modules/term.js","webpack:///./src/store/modules/course.js","webpack:///./src/store/modules/misc.js","webpack:///./src/services/collective_feedback_issue.service.js","webpack:///./src/store/modules/collective_feedback_issue.js","webpack:///./src/store/modules/collective_feedback.js","webpack:///./src/store/modules/loading.js","webpack:///./src/store/modules/viewAs.js","webpack:///./src/store/index.js","webpack:///./src/utils/axios.js","webpack:///./src/services/user.service.js","webpack:///src/components/layouts/MainNav.vue","webpack:///./src/components/layouts/MainNav.vue?e247","webpack:///./src/components/layouts/MainNav.vue?6671","webpack:///./src/views/support/Contact.vue?d5e4","webpack:///src/views/support/Contact.vue","webpack:///./src/views/support/Contact.vue?9c89","webpack:///./src/views/support/Contact.vue?70b1","webpack:///src/App.vue","webpack:///./src/App.vue?1160","webpack:///./src/App.vue?bff9","webpack:///./src/views/launch_page/Home.vue?83d8","webpack:///./src/views/launch_page/Banner.vue?ff78","webpack:///src/views/launch_page/Banner.vue","webpack:///./src/views/launch_page/Banner.vue?02da","webpack:///./src/views/launch_page/Banner.vue?7ec4","webpack:///./src/views/launch_page/BoxesArea.vue?6068","webpack:///src/views/launch_page/BoxesArea.vue","webpack:///./src/views/launch_page/BoxesArea.vue?bdc8","webpack:///./src/views/launch_page/BoxesArea.vue?430e","webpack:///src/views/launch_page/Home.vue","webpack:///./src/views/launch_page/Home.vue?4c04","webpack:///./src/views/launch_page/Home.vue?852e","webpack:///./src/views/launch_page/Benefits.vue?3a0f","webpack:///src/views/launch_page/Benefits.vue","webpack:///./src/views/launch_page/Benefits.vue?379e","webpack:///./src/views/launch_page/Benefits.vue?a64d","webpack:///./src/views/launch_page/Research.vue?2c88","webpack:///src/views/launch_page/Research.vue","webpack:///./src/views/launch_page/Research.vue?9890","webpack:///./src/views/launch_page/Research.vue?00d3","webpack:///./src/views/launch_page/Pedagogy.vue?b94a","webpack:///src/views/launch_page/Pedagogy.vue","webpack:///./src/views/launch_page/Pedagogy.vue?5c28","webpack:///./src/views/launch_page/Pedagogy.vue?1c17","webpack:///./src/views/launch_page/Manuals.vue?7e56","webpack:///src/views/launch_page/Manuals.vue","webpack:///./src/views/launch_page/Manuals.vue?ef0a","webpack:///./src/views/launch_page/Manuals.vue?dbb0","webpack:///./src/views/launch_page/FAQ.vue?57a4","webpack:///src/views/launch_page/FAQ.vue","webpack:///./src/views/launch_page/FAQ.vue?ae68","webpack:///./src/views/launch_page/FAQ.vue?19d4","webpack:///./src/views/launch_page/Contact.vue?ecab","webpack:///src/views/launch_page/Contact.vue","webpack:///./src/views/launch_page/Contact.vue?5f9b","webpack:///./src/views/launch_page/Contact.vue?ec6d","webpack:///./src/views/account/Login.vue?716b","webpack:///src/views/account/Login.vue","webpack:///./src/views/account/Login.vue?efaa","webpack:///./src/views/account/Login.vue?9981","webpack:///./src/views/account/Logout.vue?3c15","webpack:///src/views/account/Logout.vue","webpack:///./src/views/account/Logout.vue?00b0","webpack:///./src/views/account/Logout.vue?a23b","webpack:///./src/views/account/NewLogin.vue?132f","webpack:///src/views/account/NewLogin.vue","webpack:///./src/views/account/NewLogin.vue?f319","webpack:///./src/views/account/NewLogin.vue?3f20","webpack:///./src/views/account/Register.vue?7d86","webpack:///src/views/account/Register.vue","webpack:///./src/views/account/Register.vue?928f","webpack:///./src/views/account/Register.vue?df8b","webpack:///./src/views/account/DemoSignUp.vue?3e02","webpack:///src/views/account/DemoSignUp.vue","webpack:///./src/views/account/DemoSignUp.vue?fe4f","webpack:///./src/views/account/DemoSignUp.vue?c115","webpack:///./src/views/account/DemoSignIn.vue?ccb3","webpack:///src/views/account/DemoSignIn.vue","webpack:///./src/views/account/DemoSignIn.vue?0b0c","webpack:///./src/views/account/DemoSignIn.vue?edbf","webpack:///./src/views/About.vue?b407","webpack:///./src/views/About.vue","webpack:///./src/views/course/Courses.vue?7ca8","webpack:///./src/views/subscription/Payment.vue?c003","webpack:///src/views/subscription/Payment.vue","webpack:///./src/views/subscription/Payment.vue?4472","webpack:///./src/views/subscription/Payment.vue","webpack:///src/views/course/Courses.vue","webpack:///./src/views/course/Courses.vue?efe2","webpack:///./src/views/course/Courses.vue?4464","webpack:///./src/views/assignment/OldAssignments.vue?98c0","webpack:///./src/services/submission.service.js","webpack:///./src/services/team_formation.service.js","webpack:///./src/services/pdf.service.js","webpack:///./src/services/rubric.service.js","webpack:///./src/services/review.service.js","webpack:///./src/services/canvas.service.js","webpack:///./src/utils/date-utils.js","webpack:///src/views/assignment/OldAssignments.vue","webpack:///./src/views/assignment/OldAssignments.vue?5b8f","webpack:///./src/views/assignment/OldAssignments.vue?bf49","webpack:///./src/views/assignment/NewAssignments.vue?a0ab","webpack:///./src/services/task.service.js","webpack:///src/views/assignment/NewAssignments.vue","webpack:///./src/views/assignment/NewAssignments.vue?bceb","webpack:///./src/views/assignment/NewAssignments.vue?1f0c","webpack:///./src/views/grade/InstructorReview.vue?57b0","webpack:///src/views/grade/InstructorReview.vue","webpack:///./src/views/grade/InstructorReview.vue?3884","webpack:///./src/views/grade/InstructorReview.vue?ace2","webpack:///./src/views/grade/ScorePaper.vue?a0c8","webpack:///src/views/grade/ScorePaper.vue","webpack:///./src/views/grade/ScorePaper.vue?935d","webpack:///./src/views/grade/ScorePaper.vue?c1b1","webpack:///./src/views/grade/PeerReview.vue?dbfd","webpack:///src/views/grade/PeerReview.vue","webpack:///./src/views/grade/PeerReview.vue?7585","webpack:///./src/views/grade/PeerReview.vue?33f6","webpack:///./src/views/grade/ViewFeedback.vue?4fc0","webpack:///src/views/grade/ViewFeedback.vue","webpack:///./src/views/grade/ViewFeedback.vue?e68b","webpack:///./src/views/grade/ViewFeedback.vue?ac0f","webpack:///./src/views/grade/ViewOldFeedback.vue?2d8a","webpack:///src/views/grade/ViewOldFeedback.vue","webpack:///./src/views/grade/ViewOldFeedback.vue?a88f","webpack:///./src/views/grade/ViewOldFeedback.vue?569f","webpack:///./src/views/grade/SelfReview.vue?bb3c","webpack:///src/views/grade/SelfReview.vue","webpack:///./src/views/grade/SelfReview.vue?c250","webpack:///./src/views/grade/SelfReview.vue?62f9","webpack:///./src/views/collective_feedback/CollectiveFeedbackList.vue?3fb4","webpack:///src/views/collective_feedback/CollectiveFeedbackList.vue","webpack:///./src/views/collective_feedback/CollectiveFeedbackList.vue?4a0b","webpack:///./src/views/collective_feedback/CollectiveFeedbackList.vue?c0d9","webpack:///./src/views/collective_feedback/CollectiveFeedbackDetail.vue?b03d","webpack:///src/views/collective_feedback/CollectiveFeedbackDetail.vue","webpack:///./src/views/collective_feedback/CollectiveFeedbackDetail.vue?f2a1","webpack:///./src/views/collective_feedback/CollectiveFeedbackDetail.vue?644f","webpack:///./src/views/collective_feedback/CollectiveFeedbackIssue.vue?0f37","webpack:///src/views/collective_feedback/CollectiveFeedbackIssue.vue","webpack:///./src/views/collective_feedback/CollectiveFeedbackIssue.vue?70ca","webpack:///./src/views/collective_feedback/CollectiveFeedbackIssue.vue?d1f6","webpack:///./src/views/submission/StudentSubmissions.vue?2a56","webpack:///src/views/submission/StudentSubmissions.vue","webpack:///./src/views/submission/StudentSubmissions.vue?f4b6","webpack:///./src/views/submission/StudentSubmissions.vue?d3a0","webpack:///./src/views/score/StudentHolisticScores.vue?5395","webpack:///src/views/score/StudentHolisticScores.vue","webpack:///./src/views/score/StudentHolisticScores.vue?e4bd","webpack:///./src/views/score/StudentHolisticScores.vue?0c71","webpack:///./src/views/score/StudentScores.vue?13c2","webpack:///src/views/score/StudentScores.vue","webpack:///./src/views/score/StudentScores.vue?9cf5","webpack:///./src/views/score/StudentScores.vue?9429","webpack:///./src/views/team_formation/PeerReview.vue?57ce","webpack:///src/views/team_formation/PeerReview.vue","webpack:///./src/views/team_formation/PeerReview.vue?7af5","webpack:///./src/views/team_formation/PeerReview.vue?519d","webpack:///./src/views/team_formation/GroupProject.vue?7263","webpack:///src/views/team_formation/GroupProject.vue","webpack:///./src/views/team_formation/GroupProject.vue?7c84","webpack:///./src/views/team_formation/GroupProject.vue?581e","webpack:///./src/views/admin/ProjectTemplateList.vue?1648","webpack:///./src/services/project_template.service.js","webpack:///src/views/admin/ProjectTemplateList.vue","webpack:///./src/views/admin/ProjectTemplateList.vue?2498","webpack:///./src/views/admin/ProjectTemplateList.vue?823e","webpack:///./src/views/admin/NewProjectTemplate.vue?f783","webpack:///src/views/admin/NewProjectTemplate.vue","webpack:///./src/views/admin/NewProjectTemplate.vue?11fd","webpack:///./src/views/admin/NewProjectTemplate.vue?d8b7","webpack:///./src/views/admin/RubricList.vue?c148","webpack:///src/views/admin/RubricList.vue","webpack:///./src/views/admin/RubricList.vue?969d","webpack:///./src/views/admin/RubricList.vue?4f55","webpack:///./src/views/admin/RubricDetail.vue?2409","webpack:///src/views/admin/RubricDetail.vue","webpack:///./src/views/admin/RubricDetail.vue?527a","webpack:///./src/views/admin/RubricDetail.vue?22ce","webpack:///./src/views/admin/DocumentsDownload.vue?6230","webpack:///src/views/admin/DocumentsDownload.vue","webpack:///./src/views/admin/DocumentsDownload.vue?a74d","webpack:///./src/views/admin/DocumentsDownload.vue?d980","webpack:///./src/views/report/Outcomes.vue?30b0","webpack:///src/views/report/Outcomes.vue","webpack:///./src/views/report/Outcomes.vue?50b0","webpack:///./src/views/report/Outcomes.vue?8b5b","webpack:///./src/views/report/IndividualOutcomes.vue?ac66","webpack:///src/views/report/IndividualOutcomes.vue","webpack:///./src/views/report/IndividualOutcomes.vue?a294","webpack:///./src/views/report/IndividualOutcomes.vue?d6a6","webpack:///./src/views/report/CollectiveFeedback.vue?312e","webpack:///src/views/report/CollectiveFeedback.vue","webpack:///./src/views/report/CollectiveFeedback.vue?5eda","webpack:///./src/views/report/CollectiveFeedback.vue?0f86","webpack:///./src/views/report/StudentPerformance.vue?a6a4","webpack:///./src/services/report.service.js","webpack:///src/views/report/StudentPerformance.vue","webpack:///./src/views/report/StudentPerformance.vue?9eb7","webpack:///./src/views/report/StudentPerformance.vue?1088","webpack:///./src/views/canvas/Redirect.vue?c8d2","webpack:///src/views/canvas/Redirect.vue","webpack:///./src/views/canvas/Redirect.vue?96b0","webpack:///./src/views/canvas/Redirect.vue?ad4e","webpack:///./src/views/error/NotFound.vue?3c22","webpack:///./src/views/error/NotFound.vue?c21a","webpack:///./src/views/error/NoProfile.vue?0827","webpack:///src/views/error/NoProfile.vue","webpack:///./src/views/error/NoProfile.vue?2b02","webpack:///./src/views/error/NoProfile.vue?8204","webpack:///./src/views/textbook/EText.vue?a5e1","webpack:///src/views/textbook/EText.vue","webpack:///./src/views/textbook/EText.vue?724b","webpack:///./src/views/textbook/EText.vue?346a","webpack:///./src/views/textbook/Manual.vue?df16","webpack:///src/views/textbook/Manual.vue","webpack:///./src/views/textbook/Manual.vue?fae9","webpack:///./src/views/textbook/Manual.vue?8893","webpack:///./src/views/grade/InstructorCompareText.vue?01e2","webpack:///src/views/grade/InstructorCompareText.vue","webpack:///./src/views/grade/InstructorCompareText.vue?b1d5","webpack:///./src/views/grade/InstructorCompareText.vue?c66e","webpack:///./src/views/appraisal/StudentAppraisal.vue?1d9a","webpack:///src/views/appraisal/StudentAppraisal.vue","webpack:///./src/views/appraisal/StudentAppraisal.vue?236c","webpack:///./src/views/appraisal/StudentAppraisal.vue?12dc","webpack:///./src/views/course/Students.vue?b0f7","webpack:///src/views/course/Students.vue","webpack:///./src/views/course/Students.vue?0673","webpack:///./src/views/course/Students.vue?1c64","webpack:///./src/views/account/ConfirmEmail.vue?a15f","webpack:///./src/services/demo.service.js","webpack:///src/views/account/ConfirmEmail.vue","webpack:///./src/views/account/ConfirmEmail.vue?b805","webpack:///./src/views/account/ConfirmEmail.vue?6cbe","webpack:///./src/views/account/ForgotPassword.vue?1144","webpack:///src/views/account/ForgotPassword.vue","webpack:///./src/views/account/ForgotPassword.vue?5a2c","webpack:///./src/views/account/ForgotPassword.vue?aeb9","webpack:///./src/views/test/Test.vue?b3cf","webpack:///src/views/test/Test.vue","webpack:///./src/views/test/Test.vue?2487","webpack:///./src/views/test/Test.vue","webpack:///./src/router/index.js","webpack:///./src/main.js","webpack:///./src/assets/new_logo_1.png","webpack:///./src/assets/new_demo_logo_1.png","webpack:///./src/views/launch_page/BoxesArea.vue?7fb7","webpack:///./src/views/report/StudentPerformance.vue?208d","webpack:///./src/assets/img/Demo Logo.png","webpack:///./src/views/course/Students.vue?28e3","webpack:///./src/components/layouts/Footer.vue?a4b1","webpack:///./src/views/team_formation/GroupProject.vue?3f49","webpack:///./src/App.vue?e202","webpack:///./src/views/submission/StudentSubmissions.vue?a9e4","webpack:///./src/assets/img/white-transparent-logo.png","webpack:///./src/views/admin/NewProjectTemplate.vue?41e5","webpack:///./src/assets/img/papers.png","webpack:///./src/views/launch_page/Pedagogy.vue?35ff","webpack:///./src/views/launch_page/Contact.vue?fff4","webpack:///./src/views/admin/ProjectTemplateList.vue?28b7","webpack:///./src/views/grade/ViewOldFeedback.vue?4ce5","webpack:///./src/views/report/Outcomes.vue?4ad8","webpack:///./src/assets/img/icon7.png","webpack:///./src/views/admin/RubricList.vue?1751","webpack:///./src/views/score/StudentScores.vue?4f51","webpack:///./src/views/textbook/Manual.vue?b398","webpack:///./src/assets/newRegister.png","webpack:///./src/views/grade/InstructorCompareText.vue?9c1f","webpack:///./src/views/assignment/OldAssignments.vue?b3be","webpack:///./src/views/launch_page/Research.vue?4399","webpack:///./src/views/admin/RubricList.vue?1254","webpack:///./src/views/report/CollectiveFeedback.vue?cc91","webpack:///./src/views/admin/ProjectTemplateList.vue?966e","webpack:///./src/views/course/Students.vue?46eb","webpack:///./src/views/launch_page/Contact.vue?39d5","webpack:///./src/views/account/DemoSignIn.vue?6504","webpack:///./src/assets/new_logo_2.png","webpack:///./src/views/collective_feedback/CollectiveFeedbackIssue.vue?86a9","webpack:///./src/views/grade/ScorePaper.vue?ec91","webpack:///./src/views/launch_page/FAQ.vue?6006","webpack:///./src/assets/img/icon4.png","webpack:///./src/views/collective_feedback/CollectiveFeedbackIssue.vue?8d17","webpack:///./src/views/score/StudentScores.vue?beb8","webpack:///./src/views/assignment/OldAssignments.vue?3f71","webpack:///./src/App.vue?abff","webpack:///./src/views/textbook/EText.vue?060a","webpack:///./src/views/account/Logout.vue?e472","webpack:///./src/views/grade/InstructorReview.vue?16c4","webpack:///./src/views/account/DemoSignUp.vue?6013","webpack:///./src/views/canvas/Redirect.vue?827a","webpack:///./src/views/account/Register.vue?03fe","webpack:///./src/assets/img/CanvasIcon.png","webpack:///./src/views/launch_page/Banner.vue?6e3c","webpack:///./src/views/admin/DocumentsDownload.vue?7546","webpack:///./src/views/grade/ViewFeedback.vue?66aa","webpack:///./src/views/account/Login.vue?0b51","webpack:///./src/views/grade/InstructorCompareText.vue?9d13","webpack:///./src/assets/img/fyc.png","webpack:///./src/views/collective_feedback/CollectiveFeedbackDetail.vue?c55c","webpack:///./src/assets/new_demo_logo_2.png","webpack:///./src/views/launch_page/Banner.vue?2508","webpack:///./src/assets/img/icon5.png","webpack:///./src/views/grade/ScorePaper.vue?10c7","webpack:///./src/views/account/Login.vue?0032","webpack:///./src/components/layouts/Header.vue?9d76","webpack:///./src/components/layouts/MainNav.vue?50ac","webpack:///./src/views/canvas/Redirect.vue?4fa9","webpack:///./src/views/launch_page/Manuals.vue?6f6c","webpack:///./src/assets/img/logo_transparent.png","webpack:///./src/views/report/StudentPerformance.vue?6d90","webpack:///./src/views/account/DemoSignIn.vue?35e2","webpack:///./src/views/grade/ViewOldFeedback.vue?e735","webpack:///./src/views/account/ConfirmEmail.vue?4116","webpack:///./src/views/submission/StudentSubmissions.vue?a4f4","webpack:///./src/views/admin/RubricDetail.vue?c30a","webpack:///./src/assets/img/icon6.png","webpack:///./src/views/grade/InstructorReview.vue?1193","webpack:///./src/views/grade/PeerReview.vue?5cc5","webpack:///./src/views/account/NewLogin.vue?1a69","webpack:///./src/views/account/NewLogin.vue?8ddd","webpack:///./src/assets/img/tool.png","webpack:///./src/views/launch_page/Benefits.vue?43be","webpack:///./src/views/error/NotFound.vue?5baf","webpack:///./src/views/collective_feedback/CollectiveFeedbackList.vue?1a39","webpack:///./src/views/launch_page/Home.vue?ebf5","webpack:///./src/views/report/IndividualOutcomes.vue?c048","webpack:///./src/views/assignment/NewAssignments.vue?3d41"],"names":["webpackJsonpCallback","data","moduleId","chunkId","chunkIds","moreModules","executeModules","i","resolves","length","Object","prototype","hasOwnProperty","call","installedChunks","push","modules","parentJsonpFunction","shift","deferredModules","apply","checkDeferredModules","result","deferredModule","fulfilled","j","depId","splice","__webpack_require__","s","installedModules","exports","module","l","m","c","d","name","getter","o","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","p","jsonpArray","window","oldJsonpFunction","slice","map","webpackContext","req","id","webpackContextResolve","e","Error","code","keys","resolve","_vm","this","_h","$createElement","_c","_self","attrs","$route","meta","plainLayout","isLaunchPage","_e","on","$event","contactDialogVisible","idleDialogVisible","staticClass","_m","staticRenderFns","staticStyle","class","isSticky","_v","screenWidth","isHomePage","component","style","footerBackground","orgCode","gotoCourses","handleOpen","handleClose","slot","isMenuCollapse","_s","firstName","isViewingAs","lastName","userName","onLogOut","adminUser","instructorUser","currentCourse","isAdmin","backToAdmin","backToInstructor","terms","onTermChange","model","callback","$$v","currentTerm","expression","_l","item","TermCode","TermDescription","instructors","onInstructorChange","currentInstructor","UserName","LastName","FirstName","courses","onCourseChange","Id","ClassDescription","onAdminCourseChange","adminCourse","ClassCode","searchForAdminStudent","onAdminStudentChange","adminStudent","FullName","students","isStudent","onStudentChange","currentStudent","userRole","subscribedTerms","includes","path","textbookVisible","hasInstructorRole","$emit","instructorManual","studentManual","menuToggle","getBaseURL","protocol","host","location","getBaseApiURL","apiEndpoint","process","createDemoAccount","http","post","then","response","catch","error","console","log","resendEmail","confirmEmail","ldapLogin","canvasLogin","undefined","getToken","payload","oauthLogin","getUserProfile","userId","userProfile","getCurrentTerm","getTerms","getAllTerms","getUserSurveyResponse","surveyId","termCode","classCode","type","Notification","duration","title","message","getSurveyQuestions","getSurveyAnswers","questionId","addNewResponse","surveyResponse","checkOptInStatus","username","researchParticipation","postOptInStatus","optInStatus","namespaced","getDefaultState","msalConfig","auth","clientId","authority","redirectUri","postLogoutRedirectUri","cache","cacheLocation","loginRequest","scopes","token","accessToken","refreshToken","expireTime","canvasToken","user","isAuthenticated","displayOptIn","msalAccount","ssoName","ssoUserName","state","actions","singleSignOn","dispatch","commit","account","charLocation","indexOf","substring","URLSearchParams","append","authService","authToken","_","isEmpty","Roles","OrgCode","root","term","userService","canvasAuth","CanvasUsername","setMsalAccount","surveyService","status","setUser","setTerm","termService","setCanvasToken","params","reLogin","logOut","localStorage","clear","mutations","SET_SSO_NAME","SET_SSO_USERNAME","SET_DISPLAY_OPT_IN","hasStatus","SET_MSAL_ACCOUNT","SET_MSAL_TOKEN","SET_TOKEN","access_token","refresh_token","SET_CANVAS_TOKEN","SET_USER","SET_CURRENT_TERM","SET_TERMS","RESET_AUTH_STATE","assign","getAssignmentsWithTasks","templateId","info","getAssignmentsByTemplate","getAssignmentById","getAssignmentsByQuery","query","getAssignmentsByClass","GetPeerReviewAssignments","GetGroupProjectAssignments","getCollectiveFeedbackAssignments","addNewAssignment","assignment","updateAssignment","put","deleteAssignment","assignmentId","delete","assignments","currentAssignment","getAssignments","rootState","enrollment","ProjectTemplate","assignmentService","setAssignment","find","el","resetState","SET_ASSIGNMENTS","SET_CURRENT_ASSIGNMENT","RESET_ASSIGNMENT_STATE","getEnrollments","enrollments","getEnrollmentsForInstructor","getSubscriptions","getCourses","getClassByCodeTermOrg","getInstructorsByClassCode","url","currentTermSubscribed","showPayment","paymentTermCode","setPayment","enrollmentService","activeEnrollments","filter","IsActive","course","IsPaidCourse","ProjectTemplateId","UserRole","PartOfTerm","CourseNumber","SectionNumber","subscriptionService","subscriptions","Term_Code","latestTermSubcription","hasPTC","currentTermSubcription","selectCourse","selectAdminCourse","courseService","instructor","instructorId","setUserRole","resetCourse","SET_PAYMENT","SET_ENROLLMENTS","SET_COURSES","SET_ROLE","SET_COURSE","SET_ENROLLED_COURSES","enrolledCourses","SET_TEXTBOOK_VISIBLE","SET_SUBSCRIBED_TERMS","CURRENT_TERM_SUBSCRIBED","RESET_ENROLLMENT_STATE","GetCFWithIssues","collectiveFeedbacks","GetAllCFReport","courseType","GetCFReportForAllInstructors","assignmentName","GetCFReportByClass","GetAllCFReportByAssignment","getCollectiveFeedbackModel","getAllCollectiveFeedbacks","a","getCollectiveFeedbacks","getAllCFByClass","collectiveFeedback","getAllCFByAssignment","getCollectiveFeedbackById","collectiveFeedbackId","getByIdWithIssues","postCollectiveFeedback","putCollectiveFeedback","getTermByCodeAndOrg","index","getTermName","termName","getClassName","className","formatDate","uploadedDateStr","uploadedDate","moment","_d","monthNames","hours","getHours","minutes","getMinutes","ampm","strTime","day","getDate","monthIndex","getMonth","getCollectiveFeedbackIssues","cfId","collectiveFeedbackIssues","getCollectiveFeedbackIssueByIssueId","issueId","collectiveFeedbackIssue","postCollectiveFeedbackIssue","putCollectiveFeedbackIssue","cfIssueService","issues","issue","cfService","cf","cfIssuesStore","miscStore","getAssignmentName","termStore","courseStore","getCFTableData","parameters","cfData","apiWaitingCount","startLoading","NProgress","start","doneLoading","done","INCREASE_COUNT","DECREASE_COUNT","RESET_LOADING_STATE","originalUser","adminCourses","getInstructorList","getAdminCourses","selectTerm","thisTerm","viewAsInstructor","intructorId","backToAdminView","getStudentList","viewAsStudent","studentId","split","isPaidCourse","isSubscribed","studentProfile","adminViewAsStudent","studentUser","backToInstructorView","SET_ADMIN_COURSES","SET_INSTRUCTOR_LIST","SET_STUDENT_LIST","SET_ADMIN_USER","SET_INSTRUCTOR_USER","SET_VIEW_AS_STATUS","RESET_VIEW_AS_STATE","Vue","use","Vuex","Store","loading","viewAs","plugins","createPersistedState","config","baseURL","urlUtils","timeout","instance","axios","interceptors","request","store","headers","Authorization","Promise","reject","errorHandle","Message","ModelState","invalid_grant","InnerException","ExceptionMessage","error_description","methods","head","options","patch","updateLastLogin","getInstructorsByCourseType","getAdminStudentList","searchQuery","getCoursePeople","getOptedInStudents","changeUserFirstName","newFirstName","isCollapse","hasStudentRole","adminStudents","computed","watch","termsInState","newValue","currentTermInState","instructorsInState","adminCoursesInState","courseInState","coursesInState","studentsInState","userInState","onIdle","onActive","hamburger","classList","toggle","mainNav","content","full_width_container","logo","contains","src","logo1","logo2","navIcons","forEach","navSelects","navBtns","keyPath","$router","$store","closeDialog","ref","rules","contactInformation","formLabelWidth","$set","label","SelectedCourse","onProjectChange","AssignmentName","minRows","maxRows","handleRemove","uploadError","uploadSuccess","uploadChange","directives","rawName","onSubmitClick","domProps","target","composing","password","onLogin","feedbackRowClass","feedbackStrMore","feedbackStrLess","readMoreFeedback","readMoreStr","revisionRowClass","revisionStrMore","revisionStrLess","readMoreRevision","instructorRowClass","instructorStrMore","instructorStrLess","readMoreInstructor","dataRowClass","dataStrMore","dataStrLess","readMoreData","ethicRowClass","ethicStrMore","ethicStrLess","readMoreEthic","techRowClass","techStrMore","techStrLess","readMoreTech","platformRowClass","platformStrMore","platformStrLess","readMorePlatform","myItems","usingSSO","onSingleSignOn","logBackIn","regCodeFocus","regCodeBlur","firstNamefocus","firstNameBlur","middleNameFocus","middleNameBlur","lastNameFocus","lastNameBlur","emailAddressFocus","emailAddressBlur","confirmEmailFocus","confirmEmailBlur","passwordFocus","passwordBlur","confirmPasswordFocus","confirmPasswordBlur","demoSignUpForm","onDemoSignUp","gotoDemoSignIn","gotoDeoSignUp","script","currentCourses","gotoCourse","gotoAssignment","gotoInstructorReview","gotoPeerReview","gotoSelfReview","gotoCollectiveFeedback","gotoTeamFormation","pastCourses","paymentDialogVisible","closePaymentDialog","siteUrl","siteId","transDate","email","amount","openAssignmentDetailDialog","_f","DueDate","UseSelfAssessment","SelfReviewDueDate","UsePeerReview","PeerReviewDueDate","AppraisalDueDate","submissionStatus","Status","Date","UploadedDate","selfReviewStatus","AssignmentId","SubmittedDate","peerReviewStatus","appraisalStatus","gotoStudentSubmissions","gotoStudentScores","openDialog","ReviewCount","viewFeedback","viewSubmission","DocId","download","assignmentDetailDialogVisible","selectedAssignment","descriptionDetailEditor","selectedKey","docPreviewDialogVisible","downloadPdf","totalPageNumber","changePage","pageNum","zoomOut","zoomIn","zoomFitWidth","GetSubmissionNumber","getStudentSubmissionsStatus","getGroupSubmissionsStatus","getUploadedStudents","getUploadedPeers","reviewerId","teamId","getSelfReviewSubmittedStudents","getLatestSubmissions","getInstructorReviewStatus","getReviewSubmission","reviewType","getStudentUpload","studentUpload","getUploadedAssignments","submitPaper","submitToCanvas","recordSubmission","newStudentUpload","getTeamFormationStatus","getTeamFormationByAssignmentId","getPeerReviewTeamAssignment","getgroupProjectTeamAssignment","getUnassignedStudents","assignmentType","getAssignedTeams","createManually","teamAssignment","createRandomly","copyFromAnotherAssignment","getCFFDownloadData","getPdf","docId","getComparePdf","getTextbook","createPdf","getDownloadData","getTexts","processCommentText","getRubricsInTemplate","getAppraisalRubrics","getRubricById","rubricId","getRubricList","getRubricsByOrgCode","getAdminRubrics","addNewRubric","rubric","updateRubric","deleteRubric","addNewRubricCriteria","criteria","updateRubricCriteria","deleteCriteriaWithMielstonesById","deleteMilestone","getReview","revieweeId","reviewerRole","getReviewers","getReviewFeedback","createNewReview","newReview","updateReview","review","updateReviewFeeback","reviewFeedback","getLatestInstructorReview","getInstructorScores","getAllInstructorScores","getInstructorScoresForAllCourses","getSelfReviewScoresForAllCourses","GetIndividualOutcomesInstructorScore","GetIndividualOutcomesSelfScore","getSelfReviewScores","getAllSelfReviewScores","GetIndividualOutcomesAppraisalScore","getAppraisalScores","getAllAppraisalScores","getAppraisalScoresForAllCourses","getInstructorHolisticScores","getSelfReviewHolisticScores","getPeerReviewHolisticScores","getTaskSubmissionStatus","getPeerReviewSubmissionStatus","getSelfReviewSubmissionStatus","getAppraisalSubmissionStatus","getTokenByUserId","getCanvasResourses","getCanvasAssignmentMatch","createCanvasAssignmentMatch","match","toString","yearInx","parseInt","lasttwo","hour","date","days","dayName","getDay","formatDateYear","openNewAssignmentDialog","orderByDueDates","viewByDueDates","search","onDragEnd","toLowerCase","submissionNumbers","TaskType","SubmissionNumber","command","handleCommand","useCanvasIntegration","IsGroupAssignment","teamFormationStatus","AssignmentType","IsSubmitted","gotoGroupFormation","stopPropagation","preventDefault","task","Type","editTask","Name","TaskId","gotoPeerReviewTeamFormation","previewRubric","RubricId","deleteTask","gotoDetails","GroupId","gotoTask","taskSubmissionStatus","viewTaskFeedback","rubricPreviewDialogVisible","RubricName","criteriaIndex","CriteriaName","Description","RubricCriteriaMilestones","milestone","Value","UseAsGrade","UseAsTextComment","printContent","surveyDialogVisible","surveyWidth","cancelSurvey","surveyTitle","question","getQuestionNumber","Content","surveyResponses","submitSurveyActive","answer","followupQuestion","checkSubmitSurveyActive","submitSurvey","uploadDialogVisible","UseCanvasIntegration","canvasAssignmentName","viewCanvasAssignment","htmlUrl","beforeRemove","onUploadChange","handleExceed","isSubmitting","newAssignmentDialogVisible","closeAssignmentDialog","newAssignmentForm","newDescriptionEditor","scopedSlots","_u","fn","commands","isActive","bold","italic","strike","underline","heading","level","bullet_list","ordered_list","blockquote","editAssignmentDialogVisible","editDescriptionEditor","editAssignment","viewAllFeedback","peerReview","selfReview","appraisal","canvasDialogVisible","canvasAssignmentGroups","assignmentToMatch","activeNames","group","selectedCanvasAssignment","canvasAssignment","submitCanvasAssignment","html_url","submitCanvasMatch","redirectDialogVisible","newTaskDialogVisible","closeTaskDialog","newTaskForm","taskRules","Tasks","some","newTaskEditor","addNewTask","editTaskDialogVisible","selectedTask","editTaskEditor","updateTask","getTaskById","taskId","criterias","selectedAssignmentId","getRubric","draftStatus","feedback","assignmentIndex","dateStr","printableContent","document","getElementById","innerHTML","backToStudentSubmissions","onAssignmentChange","isGroupProject","prevGroupBtnDisable","previousGroup","onGroupChange","currentGroup","GroupName","nextGroupBtnDisable","nextGroup","prevBtnDisable","previousStudent","nextBtnDisable","nextStudent","onSubmissionChange","currentSubmission","onTime","dueDate","clearBtnEnabled","clearFeedback","statusType","submitTooltip","submitReview","submitButtonHidden","fullWidth","docColSize","saveAnnotation","selectTextPdf","highlightPdf","strikeOutPdf","freeDrawPdf","stickyNotePdf","saveReview","criteriaFeedback","readOnly","backToAssignments","reverse","noSubmission","previousReviewer","onReviewerChange","currentReviewer","nextReviewer","onFeedbackChange","currentFeedback","showNewCFModal","tableData","scope","handleCFClick","$index","row","CollectiveFeedbackIssues","UpdatedTime","ShowToStudent","onPublishChange","downloadCF","showEditCFModal","showDeleteCFModal","cfNewDialogVisible","cfNew","ClassName","viewExistingCF","cfSelectedFeedback","submitCFModal","cfEditDialogVisible","updateCFModal","cfDeleteDialogVisible","deleteCFModal","expandAll","collapseAll","createNewIssue","activeIssues","Title","editIssue","getCategory","Category","Examples","Explanation","cfIssueDeleteDialogVisible","deleteIssue","backToIssuesList","onCFChange","currentCF","currentIssue","onIssueChange","addNewIssue","submitIssue","cropImage","closeCropMode","hideDiv","showCanvas","imgSrc","width","height","cropperReady","cropperCropEnd","showPdf","padding","saveIssue","exampleEditor","summaryEditor","explanationEditor","prop","order","Members","member","idx","MemberId","taskType","SelfReviewStatus","viewSelfReview","PeerReviewStatus","CompletedPeerReview","viewPeerReview","AppraisalStatus","viewAppraisal","ProjectSubmissionStatus","InstructorReviewStatus","scorePaper","sortPeerReviewGroup","SelfReviewScore","ReviewerScores","reviewer","ReviewerId","ReviewerName","ReviewerScore","InstructorScore","StudentName","x","CriteriaId","Mark","Comment","groupStructure","numberOfGroups","otherAssignments","copyAssignment","unassignedAssignments","onCopyToChange","copyToAssignments","assignedTeams","submit","unassignedStudents","onEnd","onStart","student","isSubmittedStudent","addGroup","team","TeamId","removeGroup","otherPeerAssignments","searchRootLevel","rootTemplateData","TemplateName","NULL","cellValueRenderer","editTemplate","searchCourseLevel","courseTemplateData","CourseName","copyTemplateDialogVisible","fromTerm","onTemplateChange","selectedTemplateId","onToTermChange","toTerm","substr","pTerm","newTemplateName","Array","isArray","copyTemplate","getAllRootTemplates","getCourseLevelTemplates","getRootTemplateByCourseType","getTemplateById","template","addNewTemplate","updateTemplate","deleteTemplate","templateRules","PTerm","ClassType","submitTemplate","warning","rubricList","defaultTime","heightMin","allTerms","toTerms","partOfTerms","showInactive","showActiveOnly","showInactiveRubric","rubricData","tableRowClassName","RubricCriterias","editRubric","inactivateRubric","activateRubric","submitRubric","rubricRules","openCriteriaDialog","removeCriteria","assignmentDialogVisible","selectedCriteria","addNewMileStone","ordinal_suffix_of","removeMilestone","newCriteriaForm","submitCriteria","previewDialogVisible","courseTypes","onCourseTypeChange","onStatusChange","docType","format","output","documentsDownload","rubrics","onRubricChange","currentRubric","onReportTypeChange","reportType","rubricCriteria","onCriteriaChange","currentCriteria","exportFile","Scores","getTermDescription","onCategoryChange","category","excelExport","popOverVisible","pdfExportAll","pdfExportOne","pdfDownloadData","getProjectName","encodeHtml","selectedScores","getScoreReport","selectedHolisticScores","getHolisticScoreReport","getNoSubmissionReport","getAllNoSubmissionReport","getLateSubmissionReport","getAllLateSubmissionReport","getToBeScoredReport","getAllToBeScoredReport","getNoScoreReport","getAllNoScoreReport","getAllScoreReport","getAllHolisticScoreReport","nextTerm","nextStartDate","reTry","onBaseTextChange","baseProject","onNewTextChange","newProject","text1","text2","displayDocument","viewType","onDiffTypeChange","diffType","action","handScroll","onActionChange","Label","peers","onPeerChange","currentPeer","thisAssignment","onFeedbackTypeChange","feedbackType","onCollectiveFeedbackChange","onCompareTextChange","appraisalCriteriaFeedback","components","Splitpanes","Pane","newProjects","baseProjects","appraisalRubricCriteria","eventAdded","cIndex","pdfControl","myapi","zoomValue","feedbackTypes","allAssignments","currentTask","appraisalAssignments","compareDocId","mounted","arrowBtn","click","getUrlParameter","sURLVariables","sParameterName","sParam","tasks","href","categoryId","getDefaultCriteriaFeedback","AudioPath","LetterGrade","criteriaFeedbacks","saveReviewBeforeRefresh","xmlhttp","open","api","setRequestHeader","send","RevieweeId","ReviewType","lastActivityDate","IsSaved","EmailSent","LastActivityDate","ReviewerRole","FinalGrade","PercentScore","HolisticScore","holisticScore","ReviewData","getlastActivityDate","getPreviousFeedback","PdfAttachListeners","addEventListener","evt","byLine","that","getPageViewed","getPageNumber","obj","getType","setProperties","customData","textSelected","popup","author","subject","top","props","left","setMode","Mode","None","ObjectType","StrikeoutAnnotation","TextAnnotation","autoSavePdf","setInterval","iframe","objCount","getHasUnsavedChanges","save","aTags","found","pdfe_msgt","visibility","activeEl","isEditting","setView","base64ToArrayBuffer","bytes","ascii","SelectText","HandScroll","InsertHighlightAnnotation","freeTextPdf","InsertTextShape","InsertStrikeoutAnnotation","InsertInkShape","InsertTextAnnotation","getDateStr","edit","DisplayFirstName","savePreferredName","resendConfirmationEmail","createDemoCourses","backtoSigiIn","Router","router","base","routes","Courses","requiresLogin","Logout","Home","Benefits","Research","Pedagogy","Manuals","Faq","ContactUs","Login","NewLogin","DemoSignUp","DemoSignIn","Register","ConfirmEmail","ForgotPassword","About","NewProjects","requiresSubscription","OldProjects","Students","instructorOnly","StudentSubmissions","StudentScores","StudentHolisticScores","InstructorReview","ScorePaper","InstructorCompareText","StudentAppraisal","PeerReview","ViewFeedback","ViewOldFeedback","SelfReview","PRTeamFormation","GPTeamFormation","CollectiveFeedbackDetail","CollectiveFeedbackIssue","CollectiveFeedbacks","ProjectTemplateList","adminOnly","NewProjectTemplate","RubricList","RubricDetail","DocumentsDownload","OutcomesReport","adminOrInstructorOnly","IndividualOutcomesReport","CollectiveFeedbackReport","StudentPerformanceReport","CanvasRedirect","Subscription","EText","Manual","Contact","Test","NotFound","NoProfile","redirect","scrollBehavior","to","from","savedPosition","y","beforeEach","routeTo","routeFrom","next","tokenExpireTime","timeNow","MessageBox","alert","confirmButtonText","center","matched","record","dangerouslyUseHTMLString","rs","msal","PublicClientApplication","handleRedirectPromise","authResult","accounts","getAllAccounts","loginRedirect","acquireTokenSilent","acquireTokenPopup","popupError","eventsHub","IdleVue","eventEmitter","idleTime","VueCropper","library","add","faLock","faUser","FontAwesomeIcon","CKEditor","ElementUI","locale","BootstrapVue","ToggleButton","VueMoment","VueFeather","vWow","VueCarousel","Toasted","productionTip","$msal","devtools","render","h","App","$mount"],"mappings":"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A,CACA,oEACA,mwBACA,oBAEA,CACA,uEACA,ssBACA,oBAEA,CACA,uCACA,yTACA,oBAEA,CACA,yEACA,kXACA,oBAEA,CACA,iGACA,+lBACA,oBAEA,CACA,6EACA,sQACA,oBAEA,CACA,6GACA,ufACA,oBAEA,CACA,sFACA,8jBACA,oBAEA,CACA,qDACA,k0BACA,uBAEA,CACA,0KACA,wrDACA,uBAEA,CACA,mEACA,8KACA,uBAEA,CACA,mDACA,sxBACA,uBAEA,CACA,4HACA,8iBACA,uBAEA,CACA,sDACA,0dACA,uBAEA,CACA,gFACA,ybACA,uBAEA,CACA,0DACA,+tBACA,wBAGA,WACA,cACA,aACA,uBACA,wBACA,YACA,mBACA,oBAEA,CACA,gBACA,kBAIA,UACA,yBACA,0BAEA,CACA,wBACA,0BAGA,WAEA,gBAEA,OACA,UACA,+DAEA,OACA,2DAEA,gBACA,iEAEA,kBACA,+DAEA,gBACA,iEAEA,SACA,kEAKA,QA9KA,0HA+KA,KACA,KACA,KAEA,6BACA,qCACA,oCACA,gGACA,2CACA,gBACA,0CACA,0GACA,gDACA,iBAGA,kFACA,qCAEA,wCACA,oDACA,iDACA,kDACA,yBACA,WACA,QACA,kBACA,QACA,SAEA,0DACA,kBACA,WACA,kBAGA,mBACA,yBACA,WACA,QACA,sBACA,oBACA,kBACA,WACA,iBAGA,cA9NA,gCA8NA,sBA9NA,UA+NA,uBA/NA,kCA+NA,kBA/NA,yGAiOA,SAGA,YAHA,WAIA,qBAIA,eARA,mIASA,iBATA,OASA,EATA,OAUA,IACA,0BAXA,wGAgBA,WAhBA,6HAiBA,+BAjBA,OAiBA,aAjBA,+GAqBA,YArBA,SAqBA,OACA,gBAIA,aA1BA,SA0BA,KACA,oDAEA,cA7BA,SA6BA,OACA,gBAEA,aAhCA,SAgCA,KACA,eACA,gBAIA,cAtCA,wHAuCA,qKACA,EADA,iCAEA,6EAFA,OAEA,EAFA,OAGA,cACA,+EAEA,iDAEA,KACA,4CACA,sDACA,sCACA,oEACA,oDACA,0CACA,0DACA,sCACA,eACA,IACA,4CACA,0BACA,OAEA,4C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CA,SACA,2CACA,oBACA,mBACA,0BACA,uCACA,CACA,2CACA,6BACA,6BACA,oBACA,kBACA,+BACA,sBACA,4BAGA,gBA9DA,WA+DA,4CACA,6CACA,oBACA,mBACA,0BACA,mCACA,0CAEA,eAvEA,WAwEA,iDAEA,GADA,mCACA,SACA,4CACA,oBACA,mBACA,0BACA,uCACA,CACA,4CACA,6BACA,6BACA,oBACA,kBACA,+BACA,sBACA,4BAGA,cA3FA,WA4FA,0CACA,2CACA,oBACA,mBACA,0BACA,mCACA,0CAEA,aApGA,WAqGA,+CAEA,GADA,mCACA,SACA,0CACA,oBACA,mBACA,0BACA,uCACA,CACA,0CACA,6BACA,6BACA,oBACA,kBACA,+BACA,sBACA,4BAGA,kBAxHA,WAyHA,uCACA,+CACA,oBACA,mBACA,0BACA,mCACA,0CAEA,iBAjIA,WAkIA,mDAEA,GADA,mCACA,SACA,uCACA,oBACA,mBACA,0BACA,uCACA,CACA,uCACA,6BACA,6BACA,oBACA,kBACA,+BACA,sBACA,4BAGA,kBArJA,WAsJA,8CACA,+CACA,oBACA,mBACA,0BACA,mCACA,0CAEA,iBA9JA,WA+JA,mDAEA,GADA,mCACA,SACA,8CACA,oBACA,mBACA,0BACA,uCACA,CACA,8CACA,6BACA,6BACA,oBACA,kBACA,+BACA,sBACA,4BAGA,cAlLA,WAmLA,0CACA,2CACA,oBACA,mBACA,0BACA,mCACA,0CAEA,aA3LA,WA4LA,+CAEA,GADA,mCACA,SACA,0CACA,oBACA,mBACA,0BACA,uCACA,CACA,0CACA,6BACA,6BACA,oBACA,kBACA,+BACA,sBACA,4BAGA,qBA/MA,WAgNA,iDACA,kDACA,oBACA,mBACA,0BACA,mCACA,0CAEA,oBAxNA,WAyNA,sDAEA,GADA,mCACA,SACA,iDACA,oBACA,mBACA,0BACA,uCACA,CACA,iDACA,6BACA,6BACA,oBACA,kBACA,+BACA,sBACA,8BCrUiW,MCQ7V,I,UAAY,eACd,GACA,GACA,IACA,EACA,KACA,WACA,OAIa,M,QCnBX,GAAS,WAAa,IAA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AO,MAAO,MAAO,MAAO,MAAO,OAClDC,EAAUD,EAAKpX,EAAasX,UAClC,OAAOD,EAAU,KAAOlX,EAAWS,GAAc,IAAMuW,EAAO,KAAOJ,EAAU,OAAStW,G,0iEC2tBzF,QACA,kBACA,YACA,eACA,sBACA,uBAEA,SACA,WADA,SACA,GACA,oBAGA,KAZA,WAaA,OACA,+CACA,6CACA,+DACA,8CAEA,YACA,YACA,mBACA,UACA,oBACA,oBACA,oBACA,mBACA,uBACA,+BACA,8BACA,iCACA,uBACA,aACA,mBACA,WACA,kBACA,sBACA,qBACA,sBACA,wBACA,iBACA,UACA,YACA,mBACA,WACA,kBACA,WACA,eACA,aACA,eACA,qBACA,eACA,aACA,cACA,UACA,aACA,iBACA,mBACA,gBACA,oBACA,sBACA,oBACA,qBACA,gBACA,uBACA,oBACA,wBACA,sBAEA,OACA,gBACA,kEAEA,SACA,6DAEA,UACA,iEAEA,mBACA,6DAEA,mBACA,8DAGA,uBACA,gBACA,0BACA,2BACA,6BACA,oBACA,eACA,4BACA,uBACA,eACA,8BACA,0BACA,uBACA,gBACA,iBACA,oBACA,kBACA,0BACA,aACA,yBACA,0BACA,gBAGA,2BACA,WACA,UACA,qBACA,gBAGA,kBACA,gBACA,4CACA,yDAHA,IAKA,aACA,IADA,WAEA,iDAEA,IAJA,SAIA,GACA,uDAIA,OACA,YADA,SACA,GACA,iBAEA,YAJA,SAIA,GACA,yBACA,kDACA,yBACA,yBACA,yBACA,wBACA,kCACA,qCACA,qCACA,sCAEA,yBACA,yBACA,yBACA,2BAIA,cA1JA,WA2JA,qEACA,uEACA,4EAEA,QA/JA,qHAgKA,oDACA,8DAEA,gCAEA,0BACA,kCACA,qCACA,qCACA,qCACA,6BACA,qBAGA,6CAEA,kBACA,4BACA,oDAEA,uCACA,4DACA,6BAtLA,wGA0LA,SACA,gBADA,mHAEA,sDAGA,kDAKA,IAVA,YAUA,2BAVA,uBAWA,mCAXA,SAYA,wBAZA,OAUA,IAVA,sBAeA,2BACA,aACA,gBACA,qDAlBA,yGAqBA,WArBA,SAqBA,GA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,YACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,aACA,eAEA,YACA,YACA,aAEA,yCACA,qBACA,iDAIA,sBAr6BA,WAs6BA,gFAIA,iBA16BA,0HA26BA,OACA,sDACA,MAoFA,OALA,yBACA,aACA,cACA,sEAEA,EAnFA,OACA,kBACA,kDACA,kDACA,4CACA,aACA,eACA,wDACA,kDACA,mEACA,sCACA,WACA,aACA,gDACA,mBACA,gBACA,oBACA,sBACA,yCACA,wDACA,4IACA,8CACA,wDACA,sDACA,yDAEA,MACA,kBACA,GACA,sBACA,4BACA,qBACA,WACA,kBACA,WACA,eACA,aACA,eACA,qBACA,eACA,aACA,cACA,UACA,aACA,iBACA,mBACA,gBACA,oBACA,sBACA,oBACA,qBACA,gBACA,uBACA,sBACA,wBAEA,2BACA,aACA,gBACA,qDAEA,iCAEA,yBACA,aACA,cACA,gFAGA,mBACA,eACA,yBACA,aACA,cACA,mFAx/BA,wGAqgCA,eArgCA,0HAsgCA,OACA,mDACA,MAsCA,OALA,yBACA,aACA,cACA,sEAEA,EArCA,6BACA,wEACA,yCACA,6FAEA,wCACA,2FAEA,yCACA,6FAEA,8DACA,yBACA,kBACA,kDACA,0BACA,2BACA,aACA,gBACA,mDAEA,oCACA,mBACA,eACA,yBACA,aACA,cACA,8DApiCA,wGAqjCA,iBArjCA,SAqjCA,gBACA,8FACA,uBACA,0BACA,iBACA,iBACA,MACA,kBACA,0BACA,4BAEA,2BACA,aACA,gBACA,sDAEA,mBACA,eACA,yBACA,aACA,cACA,6DAGA,kBACA,YACA,YACA,gCAIA,cAplCA,SAolCA,OACA,UACA,mCACA,YACA,2BACA,WACA,wBAGA,eA7lCA,yCA6lCA,GA7lCA,oGA+lCA,kBA/lCA,OA+lCA,EA/lCA,OAgmCA,QAEA,+CAEA,uBACA,eACA,OACA,uBACA,oBACA,EANA,UAMA,EANA,aAMA,GACA,oLA1mCA,yGAgnCA,2BAhnCA,SAgnCA,KACA,oCACA,uCAGA,2CACA,iBACA,4CACA,qBAEA,6BACA,uBAEA,0BAEA,kBA/nCA,WAgoCA,WACA,0CACA,YACA,YACA,YACA,YACA,YACA,8BACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,aACA,eAEA,YACA,YACA,aAEA,uEACA,qBACA,iDAIA,WAlqCA,SAkqCA,GACA,yBACA,gDACA,oEAEA,gBAvqCA,SAuqCA,GACA,yBACA,gDACA,oEAEA,oBA5qCA,WA6qCA,wBACA,gDACA,oEAKA,eAprCA,SAorCA,GACA,wBACA,qBACA,4EAiBA,+BACA,yDAjBA,SACA,YACA,YACA,+GAEA,gBACA,yBAEA,+BACA,4FAGA,+BACA,4EAUA,aA/sCA,SA+sCA,KACA,gBAKA,aArtCA,SAqtCA,KACA,8EAKA,aA3tCA,SA2tCA,KACA,oEAEA,eA9tCA,yCA8tCA,KA9tCA,gFA+tCA,0BACA,iCAEA,EAluCA,uBAmuCA,aAnuCA,SAouCA,MACA,kBAEA,6CACA,cAEA,QACA,2DACA,uBACA,uBACA,2CACA,SAEA,mBACA,kBAlvCA,2GAyvCA,mBAzvCA,WA0vCA,sBAEA,mCACA,uDACA,eAEA,WACA,uDACA,qDAGA,uDACA,yBACA,4BACA,mBAEA,qBACA,4BAGA,gBACA,CACA,iBACA,0BACA,gBACA,iBACA,YAGA,mCAGA,sBACA,mCAGA,sBACA,mCAGA,yDACA,mCAEA,oDACA,uCAMA,WA5yCA,WA6yCA,yCAIA,QAjzCA,WAkzCA,YACA,kEAKA,OAxzCA,WAyzCA,YACA,sFAKA,aA/zCA,WAg0CA,aACA,mBACA,gCAKA,YAv0CA,oIAw0CA,aACA,sBACA,iCACA,oBA30CA,SA60CA,MA70CA,OA60CA,EA70CA,OA80CA,GACA,2CACA,yCACA,8BACA,qCACA,0BACA,6BACA,UACA,YAEA,yBACA,aACA,cACA,mCA31CA,wGAk2CA,SAl2CA,yCAk2CA,KAl2CA,uFAm2CA,iBACA,oBAp2CA,gCAq2CA,iBACA,gDAt2CA,OAq2CA,EAr2CA,OAu2CA,IACA,YAx2CA,cA62CA,sBACA,qBACA,oBA/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B,OAAOuG,GAAK9H,IAAI,QAAUuB,GACxByG,MAAK,SAAAC,GACL,OAAOA,EAAS1K,QAEhB2K,OAAM,SAAAC,GACNC,QAAQC,IAAIF,MAIR,SAAS6rB,GAAW1F,GAC1B,OAAOxmB,GAAKC,KAAK,OAAQumB,GACvBtmB,MAAK,SAAAC,GACL,OAAOA,EAAS1K,QAEhB2K,OAAM,SAAAC,GACNC,QAAQC,IAAIF,MAIR,SAASisB,GAAW9F,GAC1B,OAAOxmB,GAAKgI,IAAI,OAAQwe,GACtBtmB,MAAK,SAAAC,GACL,OAAOA,EAAS1K,QAEhB2K,OAAM,SAAAC,GACNC,QAAQC,IAAIF,MAIR,SAAS2mB,GAAWwF,GAC1B,OAAOxsB,GAAKmI,OAAO,QAAUqkB,GAC3BtsB,MAAK,SAAAC,GACL,OAAOA,EAAS1K,QAEhB2K,OAAM,SAAAC,GACNC,QAAQC,IAAIF,M,ghECkgGf,QACA,kBACA,YACA,eACA,sBACA,uBAEA,SACA,WADA,SACA,GACA,KACA,eAIA,KAdA,WAeA,OACA,UACA,+FACA,UACA,+FACA,+CACA,6CACA,+DACA,8CAEA,YACA,YACA,mBACA,UACA,oBACA,wBACA,oBACA,oBACA,mBACA,uBACA,+BACA,8BACA,iCACA,uBACA,aACA,mBACA,YACA,WACA,kBACA,sBACA,qBACA,sBACA,wBACA,iBACA,UACA,YACA,mBACA,WACA,kBACA,WACA,eACA,aACA,eACA,qBACA,eACA,aACA,cACA,UACA,aACA,iBACA,mBACA,gBACA,oBACA,sBACA,oBACA,qBACA,gBACA,uBACA,oBACA,wBACA,sBAEA,aACA,eACA,QACA,iBACA,aACA,cACA,QACA,oBACA,kBACA,kBAEA,WACA,CACA,0BACA,2BAEA,CACA,oBACA,qBAEA,CACA,oBACA,qBAEA,CACA,kBACA,oBAGA,eACA,cACA,CACA,YACA,qCACA,iBAGA,WACA,CACA,YACA,sCACA,oBAIA,OACA,gBACA,CACA,YACA,oCACA,iBAGA,SACA,CACA,YACA,+BACA,mBAGA,UACA,CACA,YACA,iCACA,oBAIA,WACA,MACA,CACA,YACA,+BACA,mBAGA,SACA,CACA,YACA,+BACA,mBAGA,UACA,CACA,YACA,iCACA,oBAIA,uBACA,gBACM0hB,OAAQ,KACR0K,UAAW,GACjB,0BACA,2BACA,6BACA,oBACA,eACA,4BACA,uBACA,eACA,8BACA,0BACA,uBACA,gBACA,iBACA,oBACA,kBACA,0BACA,aACA,yBACMC,qBAAsB,KACtBpD,cAAc,EACd9K,yBAAyB,EACzB8I,4BAA4B,EAClC,WACA,UACA,qBACA,cACA,uBACA,mBACA,oBACA,wBACA,kBACA,uBACA,yBACA,uBACA,oBACA,oBACA,oBACA,2BAGA,kBACA,gBACA,4CACA,yDAHA,IAKA,aACA,IADA,WAEA,iDAEA,IAJA,SAIA,GACA,uBACA,uDAKA,OACA,YADA,SACA,GACA,iBAEA,YAJA,SAIA,GACA,yBACA,kDACA,yBACA,yBACA,yBACA,wBACA,kCACA,+BACA,2BAEA,yBACA,yBACA,yBACA,2BAIA,cA1PA,WA2PA,iCACA,oCAEA,kCACA,qCAEA,oCACA,wCAGA,QArQA,wHAsQA,oDACA,8DAEA,yBAzQA,gBA0QA,kCACA,+BACA,yBA5QA,0BA6QA,4BA7QA,kCA8QA,qBA9QA,yBA+QA,GACA,cACA,aACA,gBAlRA,eA+QA,uBA/QA,iBAqRA,GACA,cACA,aACA,gBAxRA,QAoRA,yBApRA,eA4RA,6CAEA,kBACA,4BACA,oDAEA,uCACA,4DACA,6BApSA,yGAwSEvT,QAAS,CAGP+S,cAHJ,SAGA,GACM7sB,KAAK0yB,UAAUlzB,GACrB,oCAKA,UAVA,yCAUA,GAVA,kFAWA,MAXA,OAWA,YAXA,OAYA,2CAZA,yGAcA,iBAdA,SAcA,KACM6G,QAAQC,IAAI,qBAAsBimB,GACjB,eAAbA,EAAKC,MAAyB3e,EAAWme,kBAI3C,KAAR,aACA,2DAGA,kBACA,kDAGA,kBA5BA,6HA6BA,GACA,cACA,aACA,eACA,eAjCA,OA6BA,oBA7BA,OAmCA,mDAnCA,wGAqCIgB,YArCJ,SAqCA,WACM3mB,QAAQC,IAAIqsB,GACZtsB,QAAQC,IAAIssB,GACO,iBAAfD,EACF,EAAR,sBACA,aACA,aACA,sDAEA,4BACY,EACF3yB,KAAKotB,iBAAiBvf,EAAY0e,GAElC,EAAV,sBACY5kB,SAAU,IACVC,MAAO,OACPC,QAAS,kDAIrB,sBAGA,WA5DA,WA4DA,WACA,OACA,6CACA,MA8CA,OALA,yBACA,aACA,cACA,4DAEA,EA7CA,uBACA,wCACA,oCACA,wBAEA,yBACA,oCACA,yBAGA,sCACA,mDACA,MACA,wDACA,GACA,gBACA,kBACA,oBACA,8CACA,gBACA,qEACA,oBACA,2BACA,aACA,gBACA,kCAEA,oBACA,8BAEA,mBACA,eACA,yBACA,aACA,cACA,sCAcA,SAjHA,SAiHA,OACA,2BACA,8BAEA,oBACA,yBACM7H,KAAKskB,YAAcuO,EACnB7yB,KAAKokB,mBAAqBpkB,KAAKmO,YAAY0kB,GAEjD,kCACA,qCAEM7yB,KAAKkyB,uBAAwB,EAEnC,4BAEA,WAjIA,SAiIA,kBACA,cACA,kEACA,UACA,CACA,uBACA,0BACA,iBAGA,iBACA,GACA,GACA,kBACA,mCACA,4BAEA,2BACA,aACA,gBACA,uCAGA,mBACA,eACA,yBACA,aACA,cACA,sCAIA,kBACA,YACA,YACA,qCAIA,WAxKA,WAwKA,WACA,OACA,gDACA,MACA,OACA,qCACA,yEACA,MACA,sCACA,4CACA,gCACA,wBACA,iBACA,wCACA,kCACA,EACA,qCAGA,wBAEA,GADA,eACA,GACA,mCACA,oBACA,sCACA,oBAIA,2BACA,aACA,gBACA,wCAEA,+BAIA,iBA9MA,SA8MA,gBACA,cACA,qEACA,UACA,CACA,uBACA,0BACA,iBAGA,iBACA,GACA,GACA,kBACA,0BACA,4BAEA,2BACA,aACA,gBACA,0CAGA,mBACA,eACA,yBACA,aACA,cACA,yCAIA,kBACA,YACA,YACA,wCAOA,wBAxPA,SAwPA,KACA,iCACA,oCAEA,mCACA,6BACA,sBACA,uBACA,uBAEA,kBAlQA,SAkQA,KACA,0BACA,6BAEA,kCACA,kBACA,4CACA,oBAGA,uBACA,2BAEA,yBA/QA,SA+QA,KACA,kCACA,qCAEA,yCACA,kBACA,4CACA,qCACA,oBAEA,wBAEA,mBA3RA,WA4RA,WACA,gCACA,YACA,YACA,YACA,YACA,8BACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,aACA,eAEA,YACA,YACA,aAEA,WACA,qBACA,0CAIA,oBA7TA,WA8TA,WACA,iCACA,YACA,YACA,YACA,YACA,8BACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,aACA,eAEA,YACA,YACA,aAEA,mCACA,qBACA,2CAIA,eA/VA,WAgWA,WACA,uCACA,YACA,YACA,YACA,YACA,8BACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,aACA,eAEA,YACA,YACA,aAEA,WACA,qBACA,gDAIA,gBAjYA,WAkYA,WACA,wCACA,YACA,YACA,YACA,YACA,8BACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,aACA,eAEA,YACA,YACA,aAEA,yCACA,qBACA,iDAIA,sBAnaA,WAoaA,iCACA,+CAGA,gBAxaA,WAyaA,2BACA,yCAKA,iBA/aA,0HAgbA,OACA,sDACA,MAgHA,OALA,yBACA,aACA,cACA,kEAEA,EA/GA,OACA,kBACA,kDACA,kDACA,4CACA,aACA,eACA,wDACA,kDACA,WACA,wDACA,sCACA,WACA,aACA,iBACA,mBACA,gBACA,oBACA,sBACA,yCACA,qBACA,0CACA,gBACA,uBACA,sBACA,wBAEA,GACA,GACA,kBACA,MACA,qBACA,WACA,kBACA,WACA,eACA,aACA,eACA,qBACA,eACA,aACA,cACA,UACA,aACA,iBACA,mBACA,gBACA,oBACA,sBACA,oBACA,qBACA,gBACA,uBACA,sBACA,wBAIA,OACA,kBACA,yBACA,iBACA,gCACA,oBACA,yBACA,iBACA,eACA,qCAGA,eAEA,wBAEA,GADA,eACA,GACA,SACA,UACA,UACA,sBACA,gCAIA,2BACA,aACA,gBACA,wCAEA,qCAEA,yBACA,aACA,cACA,uCAIA,mBACA,eACA,yBACA,aACA,cACA,0CAzhBA,wGAsiBA,eAtiBA,0HAuiBA,OACA,mDACA,MAmDA,OALA,yBACA,aACA,cACA,+DAEA,EAlDA,6BACA,8CACA,0CACA,8BAEA,yCACA,oDACA,yCAGA,wCACA,mDACA,wCAGA,yCACA,oDACA,yCAGA,sCACA,wBACA,GACA,sBACA,kBACA,kDACA,0BACA,oBACA,2BACA,aACA,gBACA,qCAEA,oCAEA,mBACA,eACA,yBACA,aACA,cACA,wCAllBA,wGAgmBA,2BAhmBA,SAgmBA,KACA,oCACA,uCAGA,2CACA,iBACA,4CACA,qBAEA,6BACA,sBACA,wBAEA,0BAEA,kBAhnBA,WAinBA,WACA,0CACA,YACA,YACA,YACA,YACA,YACA,8BACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,aACA,eAEA,YACA,YACA,aAEA,QACA,2BACA,iCACA,GACA,qBACA,iDAiBA,mBAnqBA,SAmqBA,GACA,kBACA,WACA,eACA,8CACA,IAGA,4BA3qBA,SA2qBA,GACA,kBACA,WACA,eACA,6CACA,IAGA,SAnrBA,SAmrBA,OACA,sBACA,oBACA,QACA,kBACA,6BACA,KACA,WACA,MAGA,wBACA,aACA,aACA,QACA,+GAIA,kBACA,mDAGA,mDACA,oBACA,QACA,kBACA,6BACA,KACA,WACA,MAGA,wBACA,aACA,aACA,QACA,2HAIA,kBACA,mDAGA,sBAEA,oBACA,QACA,kBACA,sBACA,KACA,IACA,KACA,YACA,GAGA,wBACA,aACA,aACA,QACA,6GAIA,kBACA,uCAKA,eA3vBA,yCA2vBA,KA3vBA,gFA4vBA,0BACA,iCAEA,EA/vBA,uBAgwBA,aAhwBA,SAiwBA,GACA,GACA,kBAEA,6CACA,cAEA,QACA,2DACA,uBACA,uBACA,2CACA,SAGA,mBACA,kBAjxBA,2GAqxBA,eArxBA,WAsxBA,yBACA,qCACA,sDAGA,kDAEA,0CACA,mEACA,EACA,GAIA,kDAIA,2BACA,aACA,gBACA,kDAGA,YA9yBA,WA+yBA,yBACA,sCAEA,gBAlzBA,uHAyzBA,IANA,sDAGA,kDAGA,kCACA,mEACA,EACA,GAIA,kDAMA,IAt0BA,YAs0BA,2BAt0BA,iBAu0BA,mCACA,IAx0BA,YAw0BA,oCAx0BA,wBAy0BA,4CAz0BA,UA00BA,iCA10BA,QAw0BA,IAx0BA,wCA40BA,wBA50BA,QAs0BA,IAt0BA,uBA+0BA,2BACA,aACA,gBACA,uCAl1BA,yGAq1BA,UAr1BA,sHAs1BA,yBAt1BA,iBAu1BA,IAv1BA,YAu1BA,2BAv1BA,oBAw1BA,oCAx1BA,uBAy1BA,mCAz1BA,SA01BA,wBA11BA,OAu1BA,IAv1BA,uBA81BA,2BACA,aACA,gBACA,uCAj2BA,yGAq2BIxe,WAr2BJ,SAq2BA,GACM,OAAe,MAAXof,EACK,GAAf,GAEe,OAGf,qBA52BA,WA62BA,OACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,SAEA,GACA,yBACA,4BACA,yBACA,0BACA,wBAEA,SAGA,iDACA,qBACA,SACA,yBACM,EAAN,uBAMA,wBA34BA,WA64BA,IADA,SACA,sCACA,kCACA,qCACA,KACA,MAIA,2BAEA,kBAv5BA,SAu5BA,GACA,wBACA,SACA,EAEA,KAGA,mBA/5BA,yCA+5BA,OA/5BA,yFAg6BA,UACA,wCAEA,8CACA,8BAp6BA,SAs6BA,GACA,cACA,EACA,EACA,aACA,cACA,eACA,GA76BA,UAs6BA,EAt6BA,OA+6BA,QA/6BA,sBAi7BA,oBACA,6BAl7BA,iBAo7BA,+BACA,+CAEA,6EACA,OAx7BA,KAy7BA,oBAz7BA,8DAy7BA,EAz7BA,QA07BA,2DACA,gBACA,EA57BA,wBA67BA,6BACA,wCA97BA,yKAk8BA,4BAl8BA,wBAo8BA,yBACA,aACA,cACA,yCAv8BA,gCA28BA,yBACA,aACA,cACA,yCA98BA,8HAk9BA,qBAl9BA,SAk9BA,GACA,yBAEA,kBAr9BA,0HAs9BA,GACA,2BACA,uCACA,oDACA,wDACA,+CACA,oCAEA,GACA,GACA,kBACA,2BACA,aACA,gBACA,QACA,2DACA,qCAGA,+BACA,mDAEA,yCACA,GACA,kBACA,kBACA,4BAEA,mBACA,eACA,yBACA,aACA,cACA,uCAIA,mBACA,eACA,yBACA,aACA,cACA,QACA,wCACA,wCAlgCA,wGAsgCA,gBAtgCA,SAsgCA,GACA,IAIA,EAEA,EANA,0DAEA,eAMA,uBAGA,GAFA,kBAEA,SACA,4BAMA,cAzhCA,6HA0hCA,GACA,aACA,eA5hCA,OA0hCA,gBA1hCA,+GAkiCA,aAliCA,yCAkiCA,KAliCA,wEAmiCA,IAniCA,YAmiCA,YAniCA,gCAoiCA,YApiCA,OAmiCA,IAniCA,qHAwiCA,8BAxiCA,6HAyiCA,GACA,cACA,aACA,eACA,eA7iCA,OAyiCA,sBAziCA,OA+iCA,wDA/iCA,wGAkjCA,8BAljCA,6HAmjCA,GACA,cACA,aACA,eACA,eAvjCA,OAmjCA,sBAnjCA,+GA2jCA,6BA3jCA,6HA4jCA,GACA,cACA,aACA,eACA,eAhkCA,OA4jCA,qBA5jCA,+GAmkCA,wBAnkCA,6HAokCA,GACA,cACA,aACA,eACA,eAxkCA,OAokCA,0BApkCA,OA0kCA,gEA1kCA,wGA8kCA,2BA9kCA,8IA+kCA,GACA,cACA,aACA,eACA,eAnlCA,cA+kCA,EA/kCA,OAqlCA,IACA,KAtlCA,SAulCA,sKAEA,MACA,oBAHA,iCAKA,GACA,WACA,UACA,YACA,WACA,MAVA,UAIA,EAJA,QAYA,EAZA,wBAaA,WAbA,SAcA,GACA,WACA,UACA,YACA,EACA,MAnBA,UAcA,EAdA,SAqBA,eArBA,wBAsBA,KAtBA,UAyBA,GACA,WACA,UACA,YACA,EACA,KACA,MA/BA,QAyBA,EAzBA,OAiCA,eAEA,GACA,kBACA,4CACA,mCACA,iBACA,cACA,WAzCA,gCA8CA,gBACA,wBACA,+BAGA,gBACA,KACA,GACA,kBACA,6BACA,iCACA,iBACA,6BACA,aA3DA,QAgEA,IACA,GACA,kBACA,uBACA,kBACA,WACA,cACA,YAGA,UA1EA,mGAvlCA,OAmqCA,wBAnqCA,wGAuqCA,mBAvqCA,yCAuqCA,GAvqCA,0FAwqCA,4CACA,mBACA,wBACA,iBA3qCA,SA4qCA,GACA,eA7qCA,UA4qCA,EA5qCA,SA+qCA,eA/qCA,wBAgrCA,KACA,KAjrCA,UAkrCA,8JACA,GACA,WACA,MAHA,OACA,EADA,OAKA,GACA,QACA,kBACA,uBACA,YACA,WAEA,IACA,gBACA,WAGA,GACA,gBACA,kCACA,oBACA,qBAEA,UACA,UAxBA,kGAlrCA,QA4sCA,iBACA,uBA7sCA,0GAmtCI,WAntCJ,yCAmtCA,KAntCA,kEAqtCA,2BArtCA,2GA0tCA,iBA1tCA,yCA0tCA,KA1tCA,+FA2tCA,iBACA,2BAEA,6CACA,iBACA,sBAGA,8BACA,SACA,QAruCA,wBAwuCA,qBAEA,iBAEA,gBAEA,yBACA,mDACA,yBAhvCA,UAkvCA,GACA,cACA,cACA,eACA,cACA,mBAvvCA,QAkvCA,EAlvCA,OAyvCA,GAEA,2BA3vCA,2BA00CA,UACA,oDA30CA,uBA+0CA,yBACA,yBACA,wBAEA,gBAEA,yBACA,yBACA,wBAEA,iBAEA,iBAEA,4DACA,yBACA,wBA/1CA,UAg2CA,GACA,cACA,cACA,eACA,cACA,mBAr2CA,QAg2CA,EAh2CA,OAu2CA,GAEA,2BAz2CA,2BA42CA,UACA,oDA72CA,uBAi3CA,yBACA,yBACA,wBAEA,gBAEA,iBAEA,4DACA,yBACA,wBA33CA,UA43CA,GACA,cACA,cACA,eACA,cACA,mBAj4CA,QA43CA,EA53CA,OAm4CA,GAEA,2BAr4CA,2BAw4CA,UACA,oDAz4CA,uBA64CA,yBACA,yBACA,wBAEA,gBAEA,iBAEA,4DACA,yBACA,wBAv5CA,UAw5CA,GACA,cACA,cACA,eACA,cACA,mBA75CA,QAw5CA,EAx5CA,OA+5CA,GAEA,2BAj6CA,2BAo6CA,UACA,0BACA,4CAt6CA,uBA46CA,yBACA,wBAEA,gBAEA,iBAEA,wDACA,yBACA,wBAr7CA,UAs7CA,GACA,cACA,cACA,eACA,cACA,mBA37CA,QAs7CA,EAt7CA,OA67CA,GAEA,2BA/7CA,2BAk8CA,UACA,0BACA,4CAp8CA,wBAw8CA,gBACA,wDACA,yBACA,wBA38CA,UA48CA,GACA,cACA,cACA,eACA,cACA,mBAj9CA,QA48CA,EA58CA,OAm9CA,GAEA,2BAr9CA,2BAw9CA,UACA,0BACA,4CA19CA,wBA89CA,iBACA,wDACA,yBACA,wBAj+CA,UAk+CA,GACA,cACA,cACA,eACA,cACA,mBAv+CA,QAk+CA,EAl+CA,OAy+CA,GAEA,2BA3+CA,QA8+CA,cACA,4BAEA,4BACA,mBACA,WACA,gCACA,uCACA,QACA,gEAv/CA,4GA6/CA,aA7/CA,wHA8/CA,+BA9/CA,uBAggDA,OAhgDA,SAigDA,8JACA,QADA,uBAEA,GACA,kBACA,oBACA,sBACA,oBACA,wBACA,oBACA,gCACA,4BACA,yCAXA,SAaA,MAbA,kGAjgDA,OAkhDA,2BACA,aACA,gBACA,iDAEA,uBACA,4BACA,mEAzhDA,wGA6hDA,aA7hDA,sHAgiDA,kBACA,kBACA,kBACA,kBACA,kBACA,mBACA,mBACA,mBACA,mBACA,mBACA,kBA1iDA,mBA4iDA,oBA5iDA,uBA6iDA,GACA,qBACA,uBACA,yBACA,uBACA,aACA,WACA,6BACA,+BACA,4CAtjDA,SAwjDA,MAxjDA,OA2jDA,4BACA,mEA5jDA,uBA8jDA,4BA9jDA,yGAokDA,iBApkDA,yCAokDA,KApkDA,4FAskDA,MAtkDA,UAskDA,EAtkDA,OAukDA,QAvkDA,wBAwkDA,iDACA,uBAzkDA,SA2kDA,kBA3kDA,UA2kDA,EA3kDA,OA4kDA,QA5kDA,iBA6kDA,+BACA,6BA9kDA,2BA+kDA,sBA/kDA,wBAglDA,4BACA,8BAjlDA,8BAslDA,mBACA,+BAEA,4CACA,mBACA,sBACA,0CA5lDA,kCA8lDA,GACA,cACA,aACA,eACA,cACA,GAnmDA,QA6lDA,EA7lDA,OAqmDA,EACA,4BAEA,wBACA,aACA,aACA,QACA,qGA5mDA,wBAgnDA,4BAhnDA,4GAmnDA,YAnnDA,WAonDA,2BACA,eACA,OAEA,EAEA,qBAGA,EAEA,kBAEA,8BACA,qBACA,gEACA,EACA,oCACA,EACA,WACA,eACA,0BACA,2BAIA,YA9oDA,uIA+oDA,oCA/oDA,oBAgpDA,qBACA,eACA,2BACA,oCACA,oCACA,oDAGA,8CAxpDA,kCAypDA,MAzpDA,WAypDA,EAzpDA,SA0pDA,QA1pDA,qBA2pDA,0CA3pDA,kCA8pDA,GACA,cACA,aACA,eACA,cACA,4BAnqDA,WA6pDA,EA7pDA,QAqqDA,EArqDA,wBAsqDA,WAtqDA,UAuqDA,+CAvqDA,iDA2qDA,6CA3qDA,yBA8qDA,GACA,4BA/qDA,WA8qDA,EA9qDA,OAirDA,QAjrDA,wBAkrDA,uCACA,yCACA,2CACA,oDACA,4CAtrDA,UAurDA,GACA,GAxrDA,QAurDA,EAvrDA,OA2rDA,KACA,yBACA,aACA,cACA,QACA,wGAGA,2BACA,aACA,gBACA,6DAtsDA,iDA2sDA,MA3sDA,WA2sDA,EA3sDA,SA4sDA,QA5sDA,qBA6sDA,0CA7sDA,kCAgtDA,GACA,cACA,aACA,eACA,cACA,4BArtDA,QA+sDA,EA/sDA,OAutDA,IACA,WACA,gDAztDA,wBA6tDA,6CA7tDA,QAkuDA,4BACA,qBAnuDA,yGAquDA,kBAruDA,SAquDA,GACA,oCACA,gCACA,8DAEA,cA1uDA,SA0uDA,GACA,wDAEA,aA7uDA,SA6uDA,GACA,SAEA,wBACA,MAEA,4CACA,qBAEA,2BAKA,uBA3vDA,yCA2vDA,OA3vDA,mFA4vDA,GACA,QACA,qBACA,uBACA,yBACA,wCACA,mBACA,sBACA,8CApwDA,SAuwDA,GACA,GAxwDA,OAuwDA,EAvwDA,OA0wDA,UACA,gCAGA,sBADA,iDAGA,4DAEA,qDACA,mBACA,wDAEA,GACA,wCACA,mBACA,gCACA,cACA,eAGA,+BAEA,8CACA,2BACA,aACA,gBACA,iEAGA,2BACA,aACA,gBACA,oDA1yDA,6GA2jEA,cA3jEA,SA2jEA,OACA,SACA,4BACA,UACA,mCACA,YACA,2BACA,WACA,wBAGA,eAtkEA,yCAskEA,GAtkEA,oGAwkEA,kBAxkEA,OAwkEA,EAxkEA,OAykEA,QAEA,+CAEA,uBACA,eACA,OACA,EAEA,qBAEA,EAEA,kBAEA,EAZA,UAYA,EAZA,aAYA,GACA,qBACA,gEACA,EACA,oCACA,EACA,WACA,eACA,0BACA,GAjmEA,yGAypEA,WAzpEA,SAypEA,GACA,yBACA,OACA,gBACA,KACA,gBACA,IACA,YACA,IACA,aACA,IACA,eACA,IACA,gBAGA,gBAzqEA,SAyqEA,GACA,yBACA,OACA,gBACA,KACA,gBACA,IACA,YACA,IACA,aACA,IACA,eACA,IACA,gBAGA,oBAzrEA,WA0rEA,wBACA,OACA,gBACA,KACA,gBACA,IACA,YACA,IACA,aACA,IACA,eACA,IACA,gBAMA,eA5sEA,SA4sEA,GACA,wBACA,qBAEA,GACA,wBACA,wBACA,yBAsBA,+BACA,6DArBA,SACA,YACA,YACA,sBACA,2DAGA,gBACA,yBAEA,+BACA,sBACA,+DAIA,+BACA,4DAUA,aAhvEA,SAgvEA,KACA,gBAKA,aAtvEA,SAsvEA,KACA,8EAKA,aA5vEA,SA4vEA,KACA,oEAEA,QA/vEA,yCA+vEA,KA/vEA,gFAgwEA,0BACA,iCAEA,EAnwEA,uBAowEA,aApwEA,SAqwEA,GACA,GACA,kBAEA,6CACA,cAEA,QACA,2DACA,uBACA,uBACA,2CACA,KACA,oBAGA,mBACA,kBAtxEA,2GA6xEA,mBA7xEA,WA8xEA,sBAEA,mCACA,uDACA,eAEA,WACA,uDACA,qDAGA,uDACA,yBAEA,4BACA,mBAEA,qBACA,4BAGA,iBACA,iBACA,0BACA,gBACA,iBACA,YAGA,mCAGA,sBACA,mCAGA,sBACA,mCAGA,yDACA,mCAEA,oDACA,uCAMA,WAh1EA,WAi1EA,yCAIA,QAr1EA,WAs1EA,YACA,mBACA,+CAMA,OA91EA,WA+1EA,YACA,uCACA,+CAMA,aAv2EA,WAw2EA,aACA,mBACA,gCAWA,YAr3EA,SAq3EA,GACA,kCACA,2CAEA,0BAKA,SA93EA,yCA83EA,KA93EA,uFA+3EA,iBACA,oBAh4EA,gCAk4EA,GACA,cACA,aACA,eACA,cACA,MAv4EA,OAi4EA,EAj4EA,OAy4EA,IACA,YA14EA,cA+4EA,sBACA,qBACA,oBAj5EA,UAk5EA,MAl5EA,QAk5EA,EAl5EA,OAm5EA,GACA,2CACA,yCACA,8BACA,qCACA,0BAC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A,cACA,SAtdA,yFAudA,sBACA,6BACA,KACA,SACA,uDAGA,MACA,mCACA,GACA,QACA,WACA,UACA,YACA,aACA,eACA,aACA,aACA,eACA,YACA,cACA,mBACA,eACA,gBACA,eACA,gBACA,aACA,UAlfA,SAofA,MApfA,cAofA,EApfA,yBAqfA,GArfA,8HAyfA,wBAzfA,WA0fA,sBACA,sBACA,gDAEA,yBACA,qBACA,mBACA,oEACA,iEAGA,sEAEA,0BACA,6BACA,6DACA,gBACA,GACA,iBACA,uBACA,qBACA,yBACA,2BACA,+BACA,2BACA,aACA,gDACA,YACA,cACA,mBACA,+BACA,gBACA,eACA,gBACA,iCACA,oBAEA,gBACA,qBACA,oBACA,oEACA,4BAOA,WA1iBA,SA0iBA,cACA,qBAEA,6BACA,kBACA,8CACA,+BACA,uBACA,4DACA,QACA,mBACA,eACA,yBACA,aACA,cACA,gDAGA,CAEA,0BACA,6BACA,6DACA,gBACA,GACA,iBACA,uBACA,qBACA,yBACA,2BACA,+BACA,2BACA,aACA,gDACA,YACA,cACA,mBACA,+BACA,gBACA,eACA,gBACA,iCACA,oBAEA,MACA,kBACA,WACA,gCACA,sBACA,0EACA,8CACA,+BACA,uBACA,4DACA,QACA,mBACA,eACA,yBACA,aACA,cACA,8CAOA,aA7mBA,WA6mBA,WACA,sBAEA,kBACA,cACA,gBACA,8CACA,iEACA,8BACA,MACA,kBACA,WACA,gCACA,uBACA,8CACA,2BACA,aACA,gBACA,sDAEA,eACA,QACA,uBACA,qBACA,QACA,mBACA,eACA,yBACA,aACA,cACA,+DAQA,oBAnpBA,SAmpBA,GAEA,IADA,SACA,+BACA,sBACA,GACA,wBACA,6BACA,kBACA,uBAEA,UAEA,UAIA,mBAnqBA,0HAoqBA,eACA,iBACA,oBACA,4BACA,yBAEA,4CACA,sBACA,iBACA,oBACA,2BAEA,4EACA,wFACA,sBACA,sBACA,oBACA,mBACA,8BAIA,yCA1rBA,wBA2rBA,uBA3rBA,UA6rBA,2BA7rBA,QA6rBA,EA7rBA,OA8rBA,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BACA,sBAEA,CAEA,MACA,sGACA,iCACA,6DACA,gBACA,GACA,iBACA,QACA,uBACA,0BACA,yBACA,2BACA,+BACA,2BACA,aACA,iDAEA,QACA,cACA,aACA,gBAEA,6BACA,gBACA,eACA,gBACA,wCAEA,eACA,MACA,kBACA,WACA,yCACA,mBACA,oBAIA,aA/bA,4HAgcA,kBAhcA,wBAkcA,cACA,uBACA,sBACA,iDACA,6DACA,8BAvcA,SAycA,MAzcA,OAycA,EAzcA,OA0cA,cACA,yCACA,uDACA,OACA,8JACA,gBADA,uBAEA,GACA,cACA,QACA,oBACA,uBACA,sBACA,aACA,4BACA,wBACA,+BACA,2CAEA,QACA,cACA,aACA,sCAEA,0BACA,gBACA,eACA,qCACA,qCAvBA,SAyBA,MAzBA,mGA6BA,kBACA,0BACA,iDA7eA,yGAgfA,oBAhfA,SAgfA,GAEA,IADA,SACA,qCACA,4BACA,GACA,wBACA,6BACA,kBACA,uBAEA,UAEA,UAEA,mBA9fA,wHA+fA,eACA,iBACA,oBACA,4BAEA,6CACA,0EArgBA,wBAsgBA,uBAtgBA,SAwgBA,2BAxgBA,OAwgBA,EAxgBA,OAygBA,mCACA,qHA1gBA,+BA4gBA,uBA5gBA,UA8gBA,6BA9gBA,QA8gBA,EA9gBA,OA+gBA,mCACA,2HAhhBA,yGAmhBA,gBAnhBA,WAmhBA,WACA,eACA,oBACA,4BACA,6CACA,2FACA,OACA,uBACA,0EAEA,4BACA,uBACA,0EAEA,gCACA,4HAEA,gBApiBA,WAoiBA,WACA,uFACA,KACA,wBAEA,iDACA,uCACA,eACA,oBACA,4BACA,6CACA,gCACA,6HAGA,YAnjBA,WAmjBA,WACA,uFACA,0BACA,wBAEA,iDACA,uCACA,eACA,oBACA,4BACA,6CACA,gCACA,6HAGA,cAlkBA,WAkkBA,WACA,eACA,oBACA,4BACA,4CACA,uCACA,qFACA,OACA,4BACA,kFAEA,0BACA,4BACA,kFAGA,gCACA,mIAEA,cArlBA,WAqlBA,WACA,iFACA,KACA,6BAEA,oDACA,mCACA,eACA,oBACA,4BACA,4CACA,uCACA,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A,GACA,QACA,WACA,UACA,YACA,aACA,eACA,aACA,aACA,eACA,YACA,cACA,mBACA,eACA,gBACA,eACA,gBACA,aACA,UAlcA,SAocA,MApcA,cAocA,EApcA,yBAqcA,GArcA,8HAycA,wBAzcA,mIA0cA,kBACA,oBAEA,qBACA,qBACA,mBACA,oEACA,4DAGA,oEAEA,gBACA,6BACA,6DACA,gBACA,GACA,iBACA,uBACA,qBACA,yBACA,2BACA,+BACA,2BACA,aACA,gDACA,YACA,cACA,mBACA,+BACA,gBACA,eACA,gBACA,iCACA,oBAEA,gBACA,qBACA,oBACA,oEACA,2BAlfA,wGAyfA,WAzfA,SAyfA,cACA,qBAEA,6BACA,kBACA,8CACA,+BACA,uBACA,4DACA,QACA,mBACA,eACA,yBACA,aACA,cACA,gDAGA,CAEA,MACA,wDACA,iCACA,6DACA,gBACA,GACA,iBACA,uBACA,qBACA,yBACA,2BACA,+BACA,2BACA,aACA,gDACA,YACA,cACA,mBACA,+BACA,gBACA,eACA,gBACA,iCACA,oBAEA,MACA,kBACA,WACA,gCACA,sBACA,0EACA,8CACA,+BACA,uBACA,4DACA,QACA,mBACA,eACA,yBACA,aACA,cACA,8CAOA,aA7jBA,WA6jBA,WACA,sBACA,kBACA,cACA,gBACA,8CACA,iEACA,8BACA,wBACA,WACA,gCACA,uBACA,8CACA,2BACA,aACA,gBACA,sDAEA,eACA,QACA,uBACA,qBACA,QACA,mBACA,eACA,yBACA,aACA,cACA,+DAQA,oBAjmBA,SAimBA,GAEA,IADA,SACA,+BACA,sBACA,GACA,wBACA,6BACA,kBACA,uBAEA,UAEA,UAIA,mBAjnBA,0HAknBA,eACA,qBACA,iBACA,oBACA,4BACA,yBAEA,4CACA,sBACA,iBAEA,4EACA,kFACA,sBACA,sBACA,uBAIA,yCAroBA,wBAsoBA,qBACA,uBAvoBA,UAyoBA,2BAzoBA,QAyoBA,EAzoBA,OA0oBA,mCACA,iGA3oBA,+BA6oBA,qDACA,uBA9oBA,UAgpBA,6BAhpBA,QAgpBA,EAhpBA,OAi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,QA0RA,sEA1RA,wBA4RA,qEACA,wBACA,aACA,aACA,4DAhSA,yGAuSA,gBAvSA,yCAuSA,GAvSA,iFAwSA,EAxSA,uBAySA,aAzSA,SA0SA,MACA,kBAEA,6CACA,cAEA,QACA,2DACA,uBACA,uBACA,2CACA,KACA,oBAEA,mBACA,kBAzTA,yGA+TA,YA/TA,WAgUA,WACA,+BACA,+CACA,MACA,IAWA,EAXA,8CACA,0BACA,qBAEA,SACA,+BAEA,YADA,eAOA,IADA,oCACA,YAGA,IADA,oCACA,mBACA,wBACA,QAKA,sEACA,OAGA,iCACA,OAEA,iCACA,OAIA,sBACA,MACA,wCACA,YAGA,iCACA,eACA,mCAGA,OAKA,cAvXA,yCAuXA,GAvXA,0FAwXA,cACA,4BACA,qBACA,0BACA,kDACA,mBACA,yBACA,8EAEA,uBAjYA,SAoYA,MACA,kBACA,mCACA,EACA,0HAEA,sEAEA,mBACA,kBA7YA,OAiZA,sEACA,OACA,uBACA,uCAEA,wCACA,gDAGA,2CACA,SACA,cAEA,sBACA,sCACA,wDAEA,kBACA,sBAnaA,yGA2aA,2BA3aA,SA2aA,GAEA,IADA,SACA,oBACA,OACA,mBACA,SACA,WACA,eACA,kBAEA,UAEA,UAKA,gBA5bA,yCA4bA,cACA,SA7bA,yFA8bA,gBACA,6BACA,KACA,SACA,uDAGA,MACA,mCACA,GACA,QACA,WACA,UACA,YACA,aACA,eACA,aACA,aACA,eACA,YACA,cACA,mBACA,eACA,gBACA,eACA,gBACA,aACA,UAzdA,SA2dA,MA3dA,cA2dA,EA3dA,yBA4dA,GA5dA,8HAgeA,wBAheA,mIAieA,kBACA,oBAEA,qBACA,qBACA,mBACA,oEACA,4DAGA,oEAEA,gBACA,6BACA,6DACA,gBACA,GACA,iBACA,uBACA,qBACA,yBACA,2BACA,+BACA,2BACA,aACA,gDACA,YACA,cACA,mBACA,+BACA,gBACA,eACA,gBACA,iCACA,oBAEA,gBACA,qBACA,oBACA,oEACA,2BAzgBA,wGAghBA,WAhhBA,SAghBA,cACA,qBAEA,6BACA,kBACA,8CACA,+BACA,uBACA,4DACA,QACA,mBACA,eACA,yBACA,aACA,cACA,gDAGA,CAEA,oBACA,6BACA,6DACA,gBACA,GACA,iBACA,uBACA,qBACA,yBACA,2BACA,+BACA,2BACA,aACA,gDACA,YACA,cACA,mBACA,+BACA,gBACA,eACA,gBACA,iCACA,oBAEA,MACA,kBACA,WACA,gCACA,sBACA,0EACA,8CACA,+BACA,uBACA,4DACA,QACA,mBACA,eACA,yBACA,aACA,cACA,8CAOA,aAnlBA,WAmlBA,WACA,sBAEA,kBACA,cACA,gBACA,8CACA,iEACA,8BACA,MACA,kBACA,WACA,gCACA,uBACA,8CACA,2BACA,aACA,gBACA,sDAEA,eACA,QACA,uBACA,qBACA,QACA,mBACA,eACA,yBACA,aACA,cACA,+DAQA,oBAznBA,SAynBA,GAEA,IADA,SACA,+BACA,sBACA,GACA,wBACA,6BACA,kBACA,uBAEA,UAEA,UAIA,mBAzoBA,wHA0oBA,eACA,iBACA,oBACA,4BACA,yBAEA,4CACA,sBACA,iBAEA,4EACA,kFACA,sBACA,sBACA,sBAIA,sDACA,yCA7pBA,kCA8pBA,eA9pBA,QA8pBA,EA9pBA,OA+pBA,EACA,iCAEA,wBACA,aACA,aACA,2EAEA,sEAvqBA,wBA0qBA,gCACA,gCA3qBA,QA6qBA,yFA7qBA,yGA2rBA,mBA3rBA,oHA4rBA,eACA,yBA7rBA,SA+rBA,mDA/rBA,uBAksBA,kDAlsBA,wGAssBA,mBAtsBA,WAusBA,sBAEA,mCACA,uDACA,eAEA,WACA,uDACA,qDAGA,uDACA,yBACA,4BACA,mBAEA,qBACA,4BAGA,gBACA,CACA,iBACA,0BACA,gBACA,iBACA,YAGA,mCAGA,sBACA,mCAGA,sBACA,mCAGA,yDACA,mCAEA,oDACA,uCAMA,WAzvBA,WA0vBA,yCAIA,QA9vBA,WA+vBA,YACA,kEAKA,OArwBA,WAswBA,YACA,sFAKA,aA5wBA,WA6wBA,aACA,mBACA,gCAKA,YApxBA,WAwxBA,OAHA,YACA,uBAEA,GAIA,cA5xBA,WAgyBA,OAHA,YACA,gDAEA,GAIA,aApyBA,W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7MA,OA8MA,GACA,eACA,8BACA,yCACA,8BACA,qCACA,iCACA,6BACA,UACA,WACA,cAGA,yBACA,aACA,cACA,mCAEA,aAhOA,2GAmOA,oBAnOA,SAmOA,GAIA,IAHA,qBACA,WACA,oBACA,aACA,sBACA,OAEA,UAIA,mBA/OA,WA+OA,WACA,gCACA,kBACA,2BACA,oBACA,mCACA,kBACA,oCAOA,oBA7PA,WA6PA,WACA,oDACA,kBACA,yBAKA,aArQA,WAsQA,OACA,UACA,aACA,oBACA,cACA,qBACA,SACA,uBAEA,cAIA,cAnRA,iIAoRA,GACA,uBACA,uBACA,qBACA,yBACA,0CACA,sBACA,WACA,yCAGA,kCA/RA,wBAgSA,KACA,KAjSA,SAkSA,MACA,kBACA,UApSA,uBAuSA,kCACA,kBAEA,GADA,IACA,WACA,2BACA,+BACA,YA7SA,OAkTA,YACA,UACA,cACA,qBACA,SACA,sBACA,YAGA,sBA3TA,yCA6TA,MACA,kBACA,SACA,UACA,cACA,qBACA,SACA,sBACA,YAIA,sBAzUA,QA6UA,2BA7UA,yGAiVA,cAjVA,0HAkVA,GACA,iBACA,uBACA,qBACA,0CACA,uBACA,yBACA,+BACA,mCACA,mCACA,WACA,yCA7VA,SA+VA,MACA,kBACA,kBAjWA,OAoWA,4BACA,sBArWA,wGAuWA,WAvWA,SAuWA,KACA,OACA,QACA,YACA,kBACA,4BACA,oBACA,sBACA,sBACA,0BACA,0BACA,oBACA,8BACA,cACA,aACA,6BACA,cACA,iCACA,SACA,sBACA,2CAEA,aAEA,uCAEA,aAjYA,SAiYA,KACA,OACA,QACA,YACA,kBACA,4BACA,oBACA,sBACA,sBACA,0BACA,0BACA,WACA,+BAEA,cAIA,cAnZA,0HAoZA,GACA,iBACA,qBACA,qBACA,qCACA,uBACA,yBACA,+BACA,mCACA,mCACA,WACA,wCA/ZA,SAiaA,MACA,kBACA,SACA,kBACA,QACA,cACA,2BACA,gBACA,eAzaA,OA+aA,8BACA,sBAhbA,wGAkbA,cAlbA,SAkbA,KACA,oECv3B+W,MCS3W,I,qBAAY,eACd,GACA,GACA,IACA,EACA,KACA,WACA,OAIa,M,QCpBX,GAAS,WAAa,IAAItB,EAAIC,KAASC,EAAGF,EAAIG,eAAmBC,EAAGJ,EAAIK,MAAMD,IAAIF,EAAG,OAAOE,EAAG,MAAM,CAACE,MAAM,CAAC,GAAK,YAAY,CAACF,EAAG,MAAM,CAACY,YAAY,aAAa,CAACZ,EAAG,MAAM,CAACY,YAAY,iBAAiB,CAACZ,EAAG,OAAO,CAACY,YAAY,kBAAkB,CAACZ,EAAG,cAAc,CAACe,YAAY,CAAC,MAAQ,WAAWb,MAAM,CAAC,GAAK,CAAE2E,KAAM,WAAYjF,EAAI0C,cAAc2B,UAAW,eAAgB,CAACrE,EAAIsB,GAAG,eAAetB,EAAIkC,GAAGlC,EAAI0C,cAAcwB,kBAAkB,gBAAgB9D,EAAG,IAAI,CAACY,YAAY,wCAAwCZ,EAAG,cAAc,CAACe,YAAY,CAAC,MAAQ,WAAWb,MAAM,CAAC,GAAK,CAAE2E,KAAM,2BAA4B,CAACjF,EAAIsB,GAAG,gDAAgDlB,EAAG,IAAI,CAACY,YAAY,wCAAwChB,EAAIsB,GAAG,6BAA6B,OAAOlB,EAAG,MAAM,CAACE,MAAM,CAAC,GAAK,aAAa,KAAO,YAAY,CAACF,EAAG,MAAM,CAACA,EAAG,YAAY,CAACe,YAAY,CAAC,OAAS,MAAMb,MAAM,CAAC,KAAO,QAAQM,GAAG,CAAC,MAAQZ,EAAIu3B,YAAY,CAACv3B,EAAIsB,GAAG,kCAAkClB,EAAG,YAAY,CAACE,MAAM,CAAC,KAAO,QAAQM,GAAG,CAAC,MAAQZ,EAAIw3B,cAAc,CAACx3B,EAAIsB,GAAG,oCAAqD,WAAhBtB,EAAI8E,SAAuB1E,EAAG,YAAY,CAACe,YAAY,CAAC,OAAS,KAAK,MAAQ,SAASb,MAAM,CAAC,KAAO,QAAQM,GAAG,CAAC,MAAQZ,EAAIy3B,iBAAiB,CAACz3B,EAAIsB,GAAG,qCAAqCtB,EAAIW,MAAM,GAAGP,EAAG,cAAc,CAACE,MAAM,CAAC,UAAY,IAAI0C,MAAM,CAAC1E,MAAO0B,EAAgB,aAAEiD,SAAS,SAAUC,GAAMlD,EAAI03B,aAAax0B,GAAKE,WAAW,iBAAiBpD,EAAIqD,GAAIrD,EAAU,QAAE,SAASqV,GAAO,OAAOjV,EAAG,MAAM,CAACxB,IAAIyW,EAAMpR,GAAG9C,YAAY,CAAC,gBAAgB,sBAAsB,CAAoB,GAAlBkU,EAAMpF,SAAe7P,EAAG,mBAAmB,CAACE,MAAM,CAAC,KAAO+U,EAAMpR,KAAK,CAAC7D,EAAG,WAAW,CAACY,YAAY,cAAcG,YAAY,CAAC,mBAAmB,SAASa,KAAK,SAAS,CAAC5B,EAAG,MAAM,CAACe,YAAY,CAAC,MAAQ,MAAM,MAAQ,SAAS,CAACf,EAAG,OAAO,CAACY,YAAY,qBAAqBG,YAAY,CAAC,YAAY,OAAO,cAAc,OAAO,gBAAgB,WAAW,cAAc,WAAW,CAACnB,EAAIsB,GAAG,qBAAqBtB,EAAIkC,GAAGmT,EAAMsiB,OAAO,wBAAyC,WAAhB33B,EAAI8E,SAAuB1E,EAAG,MAAM,CAACe,YAAY,CAAC,MAAQ,QAAQ,CAACf,EAAG,YAAY,CAACe,YAAY,CAAC,eAAe,OAAO,aAAa,MAAM,MAAQ,SAASb,MAAM,CAAC,KAAO,QAAQM,GAAG,CAAC,MAAQ,SAASC,GAAQ,OAAOb,EAAI42B,kBAAkBvhB,EAAMpR,OAAO,CAACjE,EAAIsB,GAAG,8CAA8ClB,EAAG,YAAY,CAACe,YAAY,CAAC,eAAe,OAAO,aAAa,MAAM,MAAQ,SAASb,MAAM,CAAC,KAAO,QAAQM,GAAG,CAAC,MAAQ,SAASC,GAAQ,OAAOb,EAAI43B,UAAUviB,EAAMpR,OAAO,CAACjE,EAAIsB,GAAG,4CAAqE,IAAxB+T,EAAMmhB,cAAqBp2B,EAAG,SAAS,CAACe,YAAY,CAAC,eAAe,MAAM,MAAQ,SAASb,MAAM,CAAC,KAAO,YAAY,CAACN,EAAIsB,GAAG,8CAAuE,IAAxB+T,EAAMmhB,cAAqBp2B,EAAG,SAAS,CAACe,YAAY,CAAC,eAAe,MAAM,MAAQ,SAASb,MAAM,CAAC,KAAO,YAAY,CAACN,EAAIsB,GAAG,gDAAgDtB,EAAIW,MAAM,GAAGX,EAAIW,OAAOP,EAAG,MAAM,CAACY,YAAY,sBAAsB,CAACZ,EAAG,OAAO,CAACe,YAAY,CAAC,cAAc,SAAS,CAACnB,EAAIsB,GAAG,kDAAkDlB,EAAG,MAAMJ,EAAIsB,GAAGtB,EAAIkC,GAAGlC,EAAI63B,YAAYxiB,EAAMyiB,WAAW,kBAAkB13B,EAAG,MAAM,CAACY,YAAY,sBAAsB,CAACZ,EAAG,OAAO,CAACe,YAAY,CAAC,cAAc,SAAS,CAACnB,EAAIsB,GAAG,mDAAmDlB,EAAG,MAAMA,EAAG,MAAM,CAAC4d,SAAS,CAAC,UAAYhe,EAAIkC,GAAGmT,EAAM0iB,eAAe33B,EAAG,MAAM,CAACY,YAAY,sBAAsB,CAACZ,EAAG,OAAO,CAACe,YAAY,CAAC,cAAc,SAAS,CAACnB,EAAIsB,GAAG,kEAAkElB,EAAG,MAAMA,EAAG,MAAM,CAAC4d,SAAS,CAAC,UAAYhe,EAAIkC,GAAGmT,EAAMqY,kBAAkBttB,EAAG,MAAM,CAACY,YAAY,sBAAsB,CAACZ,EAAG,OAAO,CAACe,YAAY,CAAC,cAAc,SAAS,CAACnB,EAAIsB,GAAG,gEAAgElB,EAAG,MAAMA,EAAG,MAAM,CAAC4d,SAAS,CAAC,UAAYhe,EAAIkC,GAAGmT,EAAM2iB,mBAAmB,GAAGh4B,EAAIW,MAAM,MAAK,IAAI,GAAGP,EAAG,YAAY,CAACE,MAAM,CAAC,GAAK,yBAAyB,QAAUN,EAAIi4B,2BAA2B,MAAQ,QAAQ,OAAS,IAAIr3B,GAAG,CAAC,iBAAiB,SAASC,GAAQb,EAAIi4B,2BAA2Bp3B,KAAU,CAACT,EAAG,WAAW,CAAC4B,KAAK,SAAS,CAAC5B,EAAG,OAAO,CAACY,YAAY,gBAAgB,CAAChB,EAAIsB,GAAG,0DAA0DlB,EAAG,MAAMA,EAAG,IAAI,CAACJ,EAAIsB,GAAG,2DAA2DlB,EAAG,OAAO,CAACY,YAAY,gBAAgBV,MAAM,CAAC,KAAO,UAAU0B,KAAK,UAAU,CAAC5B,EAAG,YAAY,CAACQ,GAAG,CAAC,MAAQ,SAASC,GAAQb,EAAIi4B,4BAA6B,KAAS,CAACj4B,EAAIsB,GAAG,8BAA8BlB,EAAG,YAAY,CAACE,MAAM,CAAC,KAAO,WAAWM,GAAG,CAAC,MAAQ,SAASC,GAAQ,OAAOb,EAAIk4B,iBAAiB,CAACl4B,EAAIsB,GAAG,+BAA+B,IAAI,IAAI,IAC9/I,GAAkB,G,gUCkHtB,QACA,KADA,WAEA,OACA,yDACA,2BACA,+CACA,8BACA,eACA,UACA,UACA,gBACA,kBAGA,OACA,QACA,wBAEA,UAGA,QArBA,WAqBA,WACA,oDACA,gBAGA,QA1BA,WA0BA,WACA,cACA,kBACA,wCAGA,SAIA,YAJA,SAIA,GACA,SACA,UACA,OACA,YACA,MACA,OACA,aACA,MACA,OACA,kBACA,MACA,OACA,oBACA,MACA,OACA,iBACA,MACA,OACA,kBACA,MACA,OACA,kBACA,MACA,OACA,UAEA,UAKA,kBApCA,SAoCA,GAEA,mCACA,sBAIA,UA3CA,WA6CA,+DAIA,YAjDA,WAkDA,sBAIA,eAtDA,WAuDA,sEAIA,YA3DA,8HA4DA,qBACA,KA7DA,SA8DA,MACA,kBACA,IACA,gBACA,SAlEA,OAqEA,iCACA,0BACA,8BAIA,mCA3EA,wGA+EA,UA/EA,SA+EA,GACA,mFCnOiX,MCS7W,I,oBAAY,eACd,GACA,GACA,IACA,EACA,KACA,WACA,OAIa,M,QCpBX,GAAS,WAAa,IAAItB,EAAIC,KAASC,EAAGF,EAAIG,eAAmBC,EAAGJ,EAAIK,MAAMD,IAAIF,EAAG,OAAOE,EAAG,MAAM,CAACA,EAAG,MAAM,CAACE,MAAM,CAAC,GAAK,WAAW,CAACF,EAAG,MAAM,CAACe,YAAY,CAAC,MAAQ,SAAS,CAACf,EAAG,YAAY,CAACe,YAAY,CAAC,aAAa,SAAS,qBAAqB,OAAO,aAAa,OAAO,QAAU,eAAe,QAAU,MAAM,gBAAgB,OAAO,iBAAiB,SAAS,mBAAmB,eAAe,eAAe,eAAe,OAAS,UAAU,OAAS,SAAS,WAAa,OAAO,aAAa,QAAQb,MAAM,CAAC,MAAQ,uBAAuBM,GAAG,CAAC,MAAQ,SAASC,GAAQ,OAAOb,EAAIm4B,sBAAsB,CAAC/3B,EAAG,IAAI,CAACY,YAAY,sBAAsBG,YAAY,CAAC,YAAY,aAAa,GAAInB,EAAuB,oBAAEI,EAAG,MAAM,CAACY,YAAY,iBAAiBG,YAAY,CAAC,MAAQ,UAAU,CAACf,EAAG,aAAa,CAACY,YAAY,OAAOV,MAAM,CAAC,OAAS,QAAQ,QAAU,+BAA+B,UAAY,WAAW,CAACF,EAAG,YAAY,CAACe,YAAY,CAAC,aAAa,MAAM,MAAQ,SAASb,MAAM,CAAC,GAAK,mBAAmB,YAAY,KAAK,WAAa,GAAG,YAAc,8BAA8BM,GAAG,CAAC,OAAS,SAASC,GAAQ,OAAOb,EAAIo4B,eAAep1B,MAAM,CAAC1E,MAAO0B,EAAa,UAAEiD,SAAS,SAAUC,GAAMlD,EAAIq4B,UAAUn1B,GAAKE,WAAW,cAAcpD,EAAIqD,GAAIrD,EAAuB,qBAAE,SAASsD,GAAM,OAAOlD,EAAG,YAAY,CAACxB,IAAI0E,EAAKW,GAAG3D,MAAM,CAAC,MAAQgD,EAAKqpB,KAAK,MAAQrpB,QAAU,IAAI,IAAI,GAAGtD,EAAIW,KAAKP,EAAG,MAAM,CAAGJ,EAAIszB,eAAomDlzB,EAAG,MAAM,CAACY,YAAY,iBAAiBG,YAAY,CAAC,MAAQ,UAAU,CAACf,EAAG,YAAY,CAACe,YAAY,CAAC,aAAa,SAAS,qBAAqB,OAAO,aAAa,OAAO,QAAU,eAAe,QAAU,WAAW,iBAAiB,SAAS,mBAAmB,eAAe,eAAe,eAAe,OAAS,UAAU,OAAS,SAAS,WAAa,QAAQb,MAAM,CAAC,SAAWN,EAAIuzB,oBAAoB,MAAQ,kBAAkB3yB,GAAG,CAAC,MAAQZ,EAAIwzB,gBAAgB,CAACpzB,EAAG,IAAI,CAACY,YAAY,oBAAoBG,YAAY,CAAC,YAAY,YAAYf,EAAG,aAAa,CAACY,YAAY,OAAOV,MAAM,CAAC,OAAS,QAAQ,QAAU,iBAAiB,UAAY,WAAW,CAACF,EAAG,YAAY,CAACe,YAAY,CAAC,aAAa,MAAM,MAAQ,SAASb,MAAM,CAAC,GAAK,mBAAmB,YAAY,UAAU,WAAa,GAAG,YAAc,gBAAgBM,GAAG,CAAC,OAAS,SAASC,GAAQ,OAAOb,EAAIyzB,kBAAkBzwB,MAAM,CAAC1E,MAAO0B,EAAgB,aAAEiD,SAAS,SAAUC,GAAMlD,EAAI0zB,aAAaxwB,GAAKE,WAAW,iBAAiBpD,EAAIqD,GAAIrD,EAAU,QAAE,SAASsD,GAAM,OAAOlD,EAAG,YAAY,CAACxB,IAAI0E,EAAK4pB,QAAQ5sB,MAAM,CAAC,MAAQgD,EAAKqwB,UAAU,MAAQrwB,QAAU,IAAI,GAAGlD,EAAG,YAAY,CAACe,YAAY,CAAC,aAAa,SAAS,qBAAqB,OAAO,aAAa,OAAO,QAAU,eAAe,QAAU,WAAW,iBAAiB,SAAS,mBAAmB,eAAe,eAAe,eAAe,OAAS,UAAU,OAAS,SAAS,WAAa,QAAQb,MAAM,CAAC,SAAWN,EAAI4zB,oBAAoB,MAAQ,cAAchzB,GAAG,CAAC,MAAQZ,EAAI6zB,YAAY,CAACzzB,EAAG,IAAI,CAACY,YAAY,qBAAqBG,YAAY,CAAC,YAAY,aAAa,GAA9nGf,EAAG,MAAM,CAACY,YAAY,iBAAiBG,YAAY,CAAC,MAAQ,UAAU,CAACf,EAAG,YAAY,CAACe,YAAY,CAAC,aAAa,SAAS,qBAAqB,OAAO,aAAa,OAAO,QAAU,eAAe,QAAU,WAAW,iBAAiB,SAAS,mBAAmB,eAAe,eAAe,eAAe,OAAS,UAAU,OAAS,SAAS,WAAa,QAAQb,MAAM,CAAC,SAAWN,EAAI8zB,eAAe,MAAQ,oBAAoBlzB,GAAG,CAAC,MAAQZ,EAAI+zB,kBAAkB,CAAC3zB,EAAG,IAAI,CAACY,YAAY,oBAAoBG,YAAY,CAAC,YAAY,YAAYf,EAAG,aAAa,CAACY,YAAY,OAAOV,MAAM,CAAC,OAAS,QAAQ,QAAU,mBAAmB,UAAY,WAAW,CAACF,EAAG,YAAY,CAACe,YAAY,CAAC,aAAa,MAAM,MAAQ,SAASb,MAAM,CAAC,GAAK,qBAAqB,YAAY,WAAW,WAAa,GAAG,YAAc,kBAAkBM,GAAG,CAAC,OAAS,SAASC,GAAQ,OAAOb,EAAI4E,oBAAoB5B,MAAM,CAAC1E,MAAO0B,EAAkB,eAAEiD,SAAS,SAAUC,GAAMlD,EAAI6E,eAAe3B,GAAKE,WAAW,mBAAmBpD,EAAIqD,GAAIrD,EAAY,UAAE,SAASsD,GAAM,OAAOlD,EAAG,YAAY,CAACxB,IAAI0E,EAAKM,SAAStD,MAAM,CAAC,MAAQgD,EAAKO,SAAW,KAAOP,EAAKQ,UAAU,MAAQR,QAAU,IAAI,GAAGlD,EAAG,YAAY,CAACe,YAAY,CAAC,aAAa,SAAS,qBAAqB,OAAO,aAAa,OAAO,QAAU,eAAe,QAAU,WAAW,iBAAiB,SAAS,mBAAmB,eAAe,eAAe,eAAe,OAAS,UAAU,OAAS,SAAS,WAAa,QAAQb,MAAM,CAAC,SAAWN,EAAIg0B,eAAe,MAAQ,gBAAgBpzB,GAAG,CAAC,MAAQZ,EAAIi0B,cAAc,CAAC7zB,EAAG,IAAI,CAACY,YAAY,qBAAqBG,YAAY,CAAC,YAAY,aAAa,KAAmjDnB,EAAIoV,QAAUpV,EAAIs4B,aAAcl4B,EAAG,MAAM,CAACe,YAAY,CAAC,MAAQ,QAAQ,MAAQ,OAAO,OAAS,SAAS,CAACf,EAAG,aAAa,CAACY,YAAY,OAAOV,MAAM,CAAC,OAAS,QAAQ,QAAU,kBAAkB,UAAY,WAAW,CAACF,EAAG,YAAY,CAACe,YAAY,CAAC,aAAa,MAAM,cAAc,OAAO,MAAQ,SAASb,MAAM,CAAC,GAAK,mBAAmB,YAAY,KAAK,WAAa,GAAG,YAAc,gBAAgBM,GAAG,CAAC,OAAS,SAASC,GAAQ,OAAOb,EAAIu4B,kBAAkBv1B,MAAM,CAAC1E,MAAO0B,EAAgB,aAAEiD,SAAS,SAAUC,GAAMlD,EAAIs4B,aAAap1B,GAAKE,WAAW,iBAAiBpD,EAAIqD,GAAIrD,EAAU,QAAE,SAASsD,GAAM,OAAOlD,EAAG,YAAY,CAACxB,IAAI0E,EAAKW,GAAG3D,MAAM,CAAC,MAAQgD,EAAKq0B,MAAM,MAAQr0B,QAAU,IAAI,GAAGlD,EAAG,YAAY,CAACe,YAAY,CAAC,cAAc,OAAO,aAAa,SAAS,qBAAqB,OAAO,aAAa,OAAO,QAAU,eAAe,QAAU,MAAM,gBAAgB,OAAO,iBAAiB,SAAS,mBAAmB,eAAe,eAAe,eAAe,OAAS,UAAU,OAAS,SAAS,WAAa,QAAQb,MAAM,CAAC,MAAQ,iBAAiBM,GAAG,CAAC,MAAQ,SAASC,GAAQ,OAAOb,EAAIw4B,iBAAiB,CAACp4B,EAAG,IAAI,CAACY,YAAY,qBAAqBG,YAAY,CAAC,YAAY,aAAa,GAAGnB,EAAIW,KAAKP,EAAG,MAAM,CAACe,YAAY,CAAC,MAAQ,QAAQ,SAAW,WAAW,MAAQ,MAAM,CAAEnB,EAAI+U,SAAqC,IAA1B/U,EAAIs4B,aAAaX,OAA4C,MAA7B33B,EAAIs4B,aAAaR,UACpyL,IAA7B93B,EAAIs4B,aAAaP,UAA+C,eAA7B/3B,EAAIs4B,aAAaP,UAA0D,WAA7B/3B,EAAIs4B,aAAaP,UAClE,IAAhC/3B,EAAIs4B,aAAa5K,aAAqD,eAAhC1tB,EAAIs4B,aAAa5K,aAAgE,WAAhC1tB,EAAIs4B,aAAa5K,aACxE,IAAhC1tB,EAAIs4B,aAAaN,aAAqD,eAAhCh4B,EAAIs4B,aAAaN,aAA+D,WAA/Bh4B,EAAIs4B,aAAaN,YAAyB53B,EAAG,YAAY,CAACe,YAAY,CAAC,aAAa,MAAM,eAAe,OAAOb,MAAM,CAAC,KAAON,EAAIw0B,WAAW,MAAQx0B,EAAIy0B,eAAe7zB,GAAG,CAAC,MAAQ,SAASC,GAAQ,OAAOb,EAAIy4B,iBAAiB,CAACz4B,EAAIsB,GAAG,kCAAkClB,EAAG,YAAY,CAACe,YAAY,CAAC,aAAa,MAAM,eAAe,OAAOb,MAAM,CAAC,KAAO,OAAO,UAAW,EAAK,MAAQ,4DAA4D,CAACN,EAAIsB,GAAG,mCAAmC,KAAKlB,EAAG,MAAM,CAACE,MAAM,CAAC,GAAK,yBAAyB,CAACF,EAAG,WAAW,CAACE,MAAM,CAAC,WAAW,UAAU,gBAAe,EAAK,MAAQ,WAAW,KAAO,GAAG,WAAW,EAAE,oBAAoB,IAAI,CAACF,EAAG,MAAM,CAACe,YAAY,CAAC,OAAS,QAAQb,MAAM,CAAC,KAAO,aAAa0B,KAAK,aAAa,CAAC5B,EAAG,MAAM,CAACY,YAAY,cAAcV,MAAM,CAAC,GAAK,cAAc,CAACF,EAAG,MAAM,CAACE,MAAM,CAAC,GAAK,oBAAoB,CAACF,EAAG,MAAM,CAACE,MAAM,CAAC,GAAK,0BAA0B,CAACF,EAAG,MAAM,CAACY,YAAY,mDAAmD,CAACZ,EAAG,MAAM,CAACY,YAAY,0BAA0B,CAACZ,EAAG,MAAM,CAACY,YAAY,4BAA4B,CAACZ,EAAG,MAAM,CAACe,YAAY,CAAC,YAAY,OAAO,aAAa,WAAW,CAACf,EAAG,MAAM,CAACA,EAAG,SAAS,CAACY,YAAY,0BAA0BV,MAAM,CAAC,MAAQ,yBAAyB,aAAa,0BAA0BM,GAAG,CAAC,MAAQ,SAASC,GAAQ,OAAOb,EAAIykB,iBAAiB,CAACrkB,EAAG,IAAI,CAACY,YAAY,uBAAuBG,YAAY,CAAC,YAAY,kBAAkBf,EAAG,MAAM,CAACY,YAAY,0BAA0BZ,EAAG,MAAM,CAACY,YAAY,iCAAiC,CAACZ,EAAG,OAAO,CAACY,YAAY,8BAA8BG,YAAY,CAAC,QAAU,OAAO,cAAc,WAAW,CAACnB,EAAIsB,GAAG,4DAA4DlB,EAAG,MAAM,CAACe,YAAY,CAAC,eAAe,OAAO,gBAAgB,SAAS,CAACf,EAAG,kBAAkB,CAACE,MAAM,CAAC,IAAM,EAAE,IAAMN,EAAI0kB,gBAAgB,KAAO,QAAQ,MAAQ,QAAQ9jB,GAAG,CAAC,OAASZ,EAAI2kB,YAAY3hB,MAAM,CAAC1E,MAAO0B,EAAW,QAAEiD,SAAS,SAAUC,GAAMlD,EAAI4kB,QAAQ1hB,GAAKE,WAAW,cAAc,GAAGpD,EAAIsB,GAAG,gCAAgCtB,EAAIkC,GAAGlC,EAAI0kB,iBAAiB,8BAA8BtkB,EAAG,MAAM,CAACe,YAAY,CAAC,cAAc,OAAO,eAAe,MAAM,MAAQ,MAAM,OAAS,OAAO,MAAQ,sBAAsBb,MAAM,CAAC,QAAU,aAAa,CAACF,EAAG,OAAO,CAACE,MAAM,CAAC,OAAS,eAAe,mBAAmB,OAAO,eAAe,IAAI,GAAK,IAAI,GAAK,IAAI,GAAK,IAAI,GAAK,YAAYF,EAAG,MAAM,CAACY,YAAY,oBAAoB,CAACZ,EAAG,MAAM,CAACe,YAAY,CAAC,QAAU,cAAc,cAAc,SAAS,cAAc,SAAS,CAACf,EAAG,SAAS,CAACY,YAAY,0BAA0BV,MAAM,CAAC,aAAa,WAAW,MAAQ,WAAW,gBAAgB,SAASM,GAAG,CAAC,MAAQZ,EAAI6kB,UAAU,CAACzkB,EAAG,IAAI,CAACY,YAAY,eAAeG,YAAY,CAAC,YAAY,YAAYf,EAAG,OAAO,CAACe,YAAY,CAAC,iBAAiB,YAAY,YAAY,UAAU,MAAQ,qBAAqB,cAAc,MAAM,eAAe,OAAOb,MAAM,CAAC,cAAc,SAAS,CAACN,EAAIsB,GAAG,gEAAgElB,EAAG,SAAS,CAACY,YAAY,0BAA0BV,MAAM,CAAC,aAAa,UAAU,MAAQ,UAAU,gBAAgB,SAASM,GAAG,CAAC,MAAQZ,EAAI8kB,SAAS,CAAC1kB,EAAG,IAAI,CAACY,YAAY,cAAcG,YAAY,CAAC,YAAY,cAAcf,EAAG,MAAM,CAACe,YAAY,CAAC,cAAc,MAAM,eAAe,MAAM,MAAQ,MAAM,OAAS,OAAO,MAAQ,sBAAsBb,MAAM,CAAC,QAAU,aAAa,CAACF,EAAG,OAAO,CAACE,MAAM,CAAC,OAAS,eAAe,mBAAmB,OAAO,eAAe,IAAI,GAAK,IAAI,GAAK,IAAI,GAAK,IAAI,GAAK,UAAUF,EAAG,MAAM,CAACY,YAAY,iCAAiC,CAACZ,EAAG,SAAS,CAACY,YAAY,6CAA6CV,MAAM,CAAC,aAAa,oBAAoB,MAAQ,kBAAkBM,GAAG,CAAC,MAAQZ,EAAI+kB,eAAe,CAAC3kB,EAAG,IAAI,CAACY,YAAY,gBAAgBG,YAAY,CAAC,YAAY,YAAcnB,EAAIs1B,SAAsSt1B,EAAIW,KAAhSP,EAAG,MAAM,CAACe,YAAY,CAAC,cAAc,MAAM,eAAe,MAAM,MAAQ,MAAM,OAAS,OAAO,MAAQ,sBAAsBb,MAAM,CAAC,QAAU,aAAa,CAACF,EAAG,OAAO,CAACE,MAAM,CAAC,OAAS,eAAe,mBAAmB,OAAO,eAAe,IAAI,GAAK,IAAI,GAAK,IAAI,GAAK,IAAI,GAAK,cAAuBF,EAAG,MAAM,CAACY,YAAY,sBAAsB,CAACZ,EAAG,SAAS,CAACY,YAAY,0BAA0BV,MAAM,CAAC,aAAa,uBAAuB,MAAQ,aAAaM,GAAG,CAAC,MAAQZ,EAAI+0B,gBAAgB,CAAC30B,EAAG,MAAM,CAACY,YAAY,iCAAiC,CAACZ,EAAG,MAAM,CAACY,YAAY,iCAAiC,CAACZ,EAAG,IAAI,CAACY,YAAY,uBAAuBG,YAAY,CAAC,YAAY,gBAAgBf,EAAG,SAAS,CAACY,YAAY,0BAA0BV,MAAM,CAAC,aAAa,aAAa,MAAQ,cAAcM,GAAG,CAAC,MAAQZ,EAAI04B,YAAY,CAACt4B,EAAG,MAAM,CAACY,YAAY,iCAAiC,CAACZ,EAAG,MAAM,CAACY,YAAY,iCAAiC,CAACZ,EAAG,IAAI,CAACY,YAAY,kBAAkBG,YAAY,CAAC,YAAY,sBAAsBf,EAAG,MAAM,CAACe,YAAY,CAAC,QAAU,QAAQ,OAAS,qBAAqBb,MAAM,CAAC,GAAK,kBAAkB,CAAEN,EAAgB,aAAEI,EAAG,MAAM,CAACe,YAAY,CAAC,QAAU,iBAAiB,mBAAmB,UAAU,gBAAgB,oBAAoB,OAAS,WAAWP,GAAG,CAAC,MAAQ,SAASC,GAAQ,OAAOb,EAAI24B,mBAAmB,CAACv4B,EAAG,OAAO,CAACe,YAAY,CAAC,YAAY,OAAO,cAAc,QAAQ,CAACnB,EAAIsB,GAAG,4DAA4DlB,EAAG,SAAS,CAACJ,EAAIsB,GAAG,oDAAoDtB,EAAIW,KAAKP,EAAG,cAAc,CAAC0c,IAAI,UAAU1b,MAAM,CAAEw3B,SAAU54B,EAAI64B,YAAav4B,MAAM,CAAC,GAAK,SAAS,QAAS,EAAK,YAAY,EAAE,IAAMN,EAAI84B,OAAO,IAAM,eAAe,YAAY,CAC1+KC,MAAO,MACPC,OAAQ,MACR,eAAgB,QAChB,MAAQh5B,EAAIi5B,aAAa,QAAUj5B,EAAIk5B,kBAAkB94B,EAAG,MAAM,CAACgB,MAAM,CAAEw3B,SAAU54B,EAAIm5B,SAAUh4B,YAAY,CAAC,OAAS,WAAW,OAAS,QAAQb,MAAM,CAAC,GAAK,kBAAkB,OAAOF,EAAG,MAAM,CAACe,YAAY,CAAC,QAAU,OAAO,SAAW,WAAW,IAAM,QAAQ,UAAU,IAAI,OAAS,OAAO,MAAQ,OAAO,OAAS,UAAUb,MAAM,CAAC,GAAK,wBAAwBF,EAAG,MAAM,CAACE,MAAM,CAAC,KAAO,cAAc0B,KAAK,cAAc,CAAC5B,EAAG,MAAM,CAACY,YAAY,cAAcV,MAAM,CAAC,GAAK,eAAe,CAACF,EAAG,MAAM,CAACY,YAAY,sBAAsB,CAACZ,EAAG,MAAM,CAACY,YAAY,cAAcV,MAAM,CAAC,GAAK,oBAAoB,CAACF,EAAG,MAAM,CAACE,MAAM,CAAC,GAAK,UAAU,CAAEN,EAAgB,aAAEI,EAAG,MAAM,CAACe,YAAY,CAAC,OAAS,OAAO,SAAW,SAAS,CAACf,EAAG,UAAU,CAACe,YAAY,CAAC,gBAAgB,MAAM,cAAc,OAAOb,MAAM,CAAC,aAAa,CAAE84B,QAAS,SAAU,CAACh5B,EAAG,UAAU,CAAC0c,IAAI,YAAYxc,MAAM,CAAC,MAAQN,EAAIs4B,aAAa,MAAQt4B,EAAI+c,MAAM,cAAc,UAAU,CAAC3c,EAAG,eAAe,CAACA,EAAG,OAAO,CAACe,YAAY,CAAC,YAAY,OAAO,cAAc,OAAO,MAAQ,SAASb,MAAM,CAAC,KAAO,SAAS0B,KAAK,SAAS,CAAChC,EAAIsB,GAAG,0EAA0ElB,EAAG,WAAW,CAACE,MAAM,CAAC,GAAK,aAAa,YAAc,mBAAmB,UAAY,MAAM0C,MAAM,CAAC1E,MAAO0B,EAAIs4B,aAAkB,MAAEr1B,SAAS,SAAUC,GAAMlD,EAAIkd,KAAKld,EAAIs4B,aAAc,QAASp1B,IAAME,WAAW,yBAAyB,GAAGhD,EAAG,eAAe,CAACA,EAAG,OAAO,CAACe,YAAY,CAAC,YAAY,OAAO,cAAc,OAAO,MAAQ,SAASb,MAAM,CAAC,KAAO,SAAS0B,KAAK,SAAS,CAAChC,EAAIsB,GAAG,8EAA8ElB,EAAG,YAAY,CAACe,YAAY,CAAC,MAAQ,QAAQb,MAAM,CAAC,GAAK,iBAAiB,YAAY,QAAQ,YAAc,sBAAsBM,GAAG,CAAC,OAAS,SAASC,GAAQ,OAAOb,EAAIq5B,cAAcr2B,MAAM,CAAC1E,MAAO0B,EAAIs4B,aAAqB,SAAEr1B,SAAS,SAAUC,GAAMlD,EAAIkd,KAAKld,EAAIs4B,aAAc,WAAYp1B,IAAME,WAAW,0BAA0BpD,EAAIqD,GAAIrD,EAAc,YAAE,SAASsD,GAAM,OAAOlD,EAAG,YAAY,CAACxB,IAAI0E,EAAKhF,MAAMgC,MAAM,CAAC,MAAQgD,EAAK6Z,MAAM,MAAQ7Z,EAAKhF,YAAW,IAAI,IAAI,IAAI,GAAG8B,EAAG,MAAM,CAACe,YAAY,CAAC,QAAU,QAAQb,MAAM,CAAC,GAAK,aAAa,CAACF,EAAG,MAAM,CAACE,MAAM,CAAC,GAAK,WAAW,IAAM,QAAQF,EAAG,UAAU,CAACe,YAAY,CAAC,gBAAgB,MAAM,cAAc,OAAOb,MAAM,CAAC,aAAa,CAAE84B,QAAS,UAAW,CAACh5B,EAAG,MAAM,CAACY,YAAY,0BAA0B,CAACZ,EAAG,OAAO,CAACe,YAAY,CAAC,YAAY,OAAO,cAAc,SAAS,CAACnB,EAAIsB,GAAG,6EAA6ElB,EAAG,MAAM,CAACA,EAAG,kBAAkB,CAACE,MAAM,CAAC,OAASN,EAAIs5B,eAAe3J,YAAY3vB,EAAI4vB,GAAG,CAAC,CAAChxB,IAAI,UAAUixB,GAAG,SAAS/S,GAC9jF,IAAIgT,EAAWhT,EAAIgT,SACfC,EAAWjT,EAAIiT,SACvC,OAAO3vB,EAAG,MAAM,CAACY,YAAY,UAAUG,YAAY,CAAC,gBAAgB,MAAM,aAAa,QAAQ,CAACf,EAAG,SAAS,CAACY,YAAY,aAAaI,MAAM,CAAE,YAAa2uB,EAASC,QAAS1vB,MAAM,CAAC,KAAO,UAAUM,GAAG,CAAC,MAAQkvB,EAASE,OAAO,CAAC5vB,EAAG,IAAI,CAACY,YAAY,kBAAkBZ,EAAG,SAAS,CAACY,YAAY,aAAaI,MAAM,CAAE,YAAa2uB,EAASE,UAAW3vB,MAAM,CAAC,KAAO,UAAUM,GAAG,CAAC,MAAQkvB,EAASG,SAAS,CAAC7vB,EAAG,IAAI,CAACY,YAAY,oBAAoBZ,EAAG,SAAS,CAACY,YAAY,aAAaI,MAAM,CAAE,YAAa2uB,EAASG,UAAWtvB,GAAG,CAAC,MAAQkvB,EAASI,SAAS,CAAC9vB,EAAG,IAAI,CAACY,YAAY,2BAA2BZ,EAAG,SAAS,CAACY,YAAY,aAAaI,MAAM,CAAE,YAAa2uB,EAASI,aAAcvvB,GAAG,CAAC,MAAQkvB,EAASK,YAAY,CAAC/vB,EAAG,IAAI,CAACY,YAAY,uBAAuBZ,EAAG,SAAS,CAACY,YAAY,aAAaI,MAAM,CAAE,YAAa2uB,EAASK,QAAQ,CAAEC,MAAO,KAAOzvB,GAAG,CAAC,MAAQ,SAASC,GAAQ,OAAOivB,EAASM,QAAQ,CAAEC,MAAO,OAAQ,CAACjwB,EAAG,IAAI,CAACY,YAAY,mBAAmBZ,EAAG,SAAS,CAACJ,EAAIsB,GAAG,SAASlB,EAAG,SAAS,CAACY,YAAY,aAAaI,MAAM,CAAE,YAAa2uB,EAASK,QAAQ,CAAEC,MAAO,KAAOzvB,GAAG,CAAC,MAAQ,SAASC,GAAQ,OAAOivB,EAASM,QAAQ,CAAEC,MAAO,OAAQ,CAACjwB,EAAG,IAAI,CAACY,YAAY,mBAAmBZ,EAAG,SAAS,CAACJ,EAAIsB,GAAG,SAASlB,EAAG,SAAS,CAACY,YAAY,aAAaI,MAAM,CAAE,YAAa2uB,EAASK,QAAQ,CAAEC,MAAO,KAAOzvB,GAAG,CAAC,MAAQ,SAASC,GAAQ,OAAOivB,EAASM,QAAQ,CAAEC,MAAO,OAAQ,CAACjwB,EAAG,IAAI,CAACY,YAAY,mBAAmBZ,EAAG,SAAS,CAACJ,EAAIsB,GAAG,SAASlB,EAAG,SAAS,CAACY,YAAY,aAAaI,MAAM,CAAE,YAAa2uB,EAASO,eAAgB1vB,GAAG,CAAC,MAAQkvB,EAASQ,cAAc,CAAClwB,EAAG,IAAI,CAACY,YAAY,qBAAqBZ,EAAG,SAAS,CAACY,YAAY,aAAaI,MAAM,CAAE,YAAa2uB,EAASQ,gBAAiB3vB,GAAG,CAAC,MAAQkvB,EAASS,eAAe,CAACnwB,EAAG,IAAI,CAACY,YAAY,0BAA0B,MAAK,EAAM,aAAaZ,EAAG,iBAAiB,CAACY,YAAY,oCAAoCV,MAAM,CAAC,GAAK,iBAAiB,OAASN,EAAIs5B,kBAAkB,KAAKl5B,EAAG,UAAU,CAACe,YAAY,CAAC,gBAAgB,MAAM,cAAc,OAAOb,MAAM,CAAC,aAAa,CAAE84B,QAAS,UAAW,CAACh5B,EAAG,MAAM,CAACY,YAAY,0BAA0B,CAACZ,EAAG,OAAO,CAACe,YAAY,CAAC,YAAY,OAAO,cAAc,SAAS,CAACnB,EAAIsB,GAAG,4FAA4FlB,EAAG,MAAM,CAACA,EAAG,kBAAkB,CAACE,MAAM,CAAC,OAASN,EAAIu5B,eAAe5J,YAAY3vB,EAAI4vB,GAAG,CAAC,CAAChxB,IAAI,UAAUixB,GAAG,SAAS/S,GACpzE,IAAIgT,EAAWhT,EAAIgT,SACfC,EAAWjT,EAAIiT,SACvC,OAAO3vB,EAAG,MAAM,CAACY,YAAY,UAAUG,YAAY,CAAC,gBAAgB,MAAM,aAAa,QAAQ,CAACf,EAAG,SAAS,CAACY,YAAY,aAAaI,MAAM,CAAE,YAAa2uB,EAASC,QAAS1vB,MAAM,CAAC,KAAO,UAAUM,GAAG,CAAC,MAAQkvB,EAASE,OAAO,CAAC5vB,EAAG,IAAI,CAACY,YAAY,kBAAkBZ,EAAG,SAAS,CAACY,YAAY,aAAaI,MAAM,CAAE,YAAa2uB,EAASE,UAAW3vB,MAAM,CAAC,KAAO,UAAUM,GAAG,CAAC,MAAQkvB,EAASG,SAAS,CAAC7vB,EAAG,IAAI,CAACY,YAAY,oBAAoBZ,EAAG,SAAS,CAACY,YAAY,aAAaI,MAAM,CAAE,YAAa2uB,EAASG,UAAWtvB,GAAG,CAAC,MAAQkvB,EAASI,SAAS,CAAC9vB,EAAG,IAAI,CAACY,YAAY,2BAA2BZ,EAAG,SAAS,CAACY,YAAY,aAAaI,MAAM,CAAE,YAAa2uB,EAASI,aAAcvvB,GAAG,CAAC,MAAQkvB,EAASK,YAAY,CAAC/vB,EAAG,IAAI,CAACY,YAAY,uBAAuBZ,EAAG,SAAS,CAACY,YAAY,aAAaI,MAAM,CAAE,YAAa2uB,EAASK,QAAQ,CAAEC,MAAO,KAAOzvB,GAAG,CAAC,MAAQ,SAASC,GAAQ,OAAOivB,EAASM,QAAQ,CAAEC,MAAO,OAAQ,CAACjwB,EAAG,IAAI,CAACY,YAAY,mBAAmBZ,EAAG,SAAS,CAACJ,EAAIsB,GAAG,SAASlB,EAAG,SAAS,CAACY,YAAY,aAAaI,MAAM,CAAE,YAAa2uB,EAASK,QAAQ,CAAEC,MAAO,KAAOzvB,GAAG,CAAC,MAAQ,SAASC,GAAQ,OAAOivB,EAASM,QAAQ,CAAEC,MAAO,OAAQ,CAACjwB,EAAG,IAAI,CAACY,YAAY,mBAAmBZ,EAAG,SAAS,CAACJ,EAAIsB,GAAG,SAASlB,EAAG,SAAS,CAACY,YAAY,aAAaI,MAAM,CAAE,YAAa2uB,EAASK,QAAQ,CAAEC,MAAO,KAAOzvB,GAAG,CAAC,MAAQ,SAASC,GAAQ,OAAOivB,EAASM,QAAQ,CAAEC,MAAO,OAAQ,CAACjwB,EAAG,IAAI,CAACY,YAAY,mBAAmBZ,EAAG,SAAS,CAACJ,EAAIsB,GAAG,SAASlB,EAAG,SAAS,CAACY,YAAY,aAAaI,MAAM,CAAE,YAAa2uB,EAASO,eAAgB1vB,GAAG,CAAC,MAAQkvB,EAASQ,cAAc,CAAClwB,EAAG,IAAI,CAACY,YAAY,qBAAqBZ,EAAG,SAAS,CAACY,YAAY,aAAaI,MAAM,CAAE,YAAa2uB,EAASQ,gBAAiB3vB,GAAG,CAAC,MAAQkvB,EAASS,eAAe,CAACnwB,EAAG,IAAI,CAACY,YAAY,0BAA0B,MAAK,EAAM,aAAaZ,EAAG,iBAAiB,CAACY,YAAY,oCAAoCV,MAAM,CAAC,GAAK,iBAAiB,OAASN,EAAIu5B,kBAAkB,KAAKn5B,EAAG,UAAU,CAACe,YAAY,CAAC,gBAAgB,MAAM,cAAc,OAAOb,MAAM,CAAC,aAAa,CAAE84B,QAAS,UAAW,CAACh5B,EAAG,MAAM,CAACY,YAAY,0BAA0B,CAACZ,EAAG,OAAO,CAACe,YAAY,CAAC,YAAY,OAAO,cAAc,SAAS,CAACnB,EAAIsB,GAAG,0FAA0FlB,EAAG,MAAM,CAACA,EAAG,kBAAkB,CAACE,MAAM,CAAC,OAASN,EAAIw5B,mBAAmB7J,YAAY3vB,EAAI4vB,GAAG,CAAC,CAAChxB,IAAI,UAAUixB,GAAG,SAAS/S,GACtzE,IAAIgT,EAAWhT,EAAIgT,SACfC,EAAWjT,EAAIiT,SACvC,OAAO3vB,EAAG,MAAM,CAACY,YAAY,UAAUG,YAAY,CAAC,gBAAgB,MAAM,aAAa,QAAQ,CAACf,EAAG,SAAS,CAACY,YAAY,aAAaI,MAAM,CAAE,YAAa2uB,EAASC,QAAS1vB,MAAM,CAAC,KAAO,UAAUM,GAAG,CAAC,MAAQkvB,EAASE,OAAO,CAAC5vB,EAAG,IAAI,CAACY,YAAY,kBAAkBZ,EAAG,SAAS,CAACY,YAAY,aAAaI,MAAM,CAAE,YAAa2uB,EAASE,UAAW3vB,MAAM,CAAC,KAAO,UAAUM,GAAG,CAAC,MAAQkvB,EAASG,SAAS,CAAC7vB,EAAG,IAAI,CAACY,YAAY,oBAAoBZ,EAAG,SAAS,CAACY,YAAY,aAAaI,MAAM,CAAE,YAAa2uB,EAASG,UAAWtvB,GAAG,CAAC,MAAQkvB,EAASI,SAAS,CAAC9vB,EAAG,IAAI,CAACY,YAAY,2BAA2BZ,EAAG,SAAS,CAACY,YAAY,aAAaI,MAAM,CAAE,YAAa2uB,EAASI,aAAcvvB,GAAG,CAAC,MAAQkvB,EAASK,YAAY,CAAC/vB,EAAG,IAAI,CAACY,YAAY,uBAAuBZ,EAAG,SAAS,CAACY,YAAY,aAAaI,MAAM,CAAE,YAAa2uB,EAASK,QAAQ,CAAEC,MAAO,KAAOzvB,GAAG,CAAC,MAAQ,SAASC,GAAQ,OAAOivB,EAASM,QAAQ,CAAEC,MAAO,OAAQ,CAACjwB,EAAG,IAAI,CAACY,YAAY,mBAAmBZ,EAAG,SAAS,CAACJ,EAAIsB,GAAG,SAASlB,EAAG,SAAS,CAACY,YAAY,aAAaI,MAAM,CAAE,YAAa2uB,EAASK,QAAQ,CAAEC,MAAO,KAAOzvB,GAAG,CAAC,MAAQ,SAASC,GAAQ,OAAOivB,EAASM,QAAQ,CAAEC,MAAO,OAAQ,CAACjwB,EAAG,IAAI,CAACY,YAAY,mBAAmBZ,EAAG,SAAS,CAACJ,EAAIsB,GAAG,SAASlB,EAAG,SAAS,CAACY,YAAY,aAAaI,MAAM,CAAE,YAAa2uB,EAASK,QAAQ,CAAEC,MAAO,KAAOzvB,GAAG,CAAC,MAAQ,SAASC,GAAQ,OAAOivB,EAASM,QAAQ,CAAEC,MAAO,OAAQ,CAACjwB,EAAG,IAAI,CAACY,YAAY,mBAAmBZ,EAAG,SAAS,CAACJ,EAAIsB,GAAG,SAASlB,EAAG,SAAS,CAACY,YAAY,aAAaI,MAAM,CAAE,YAAa2uB,EAASO,eAAgB1vB,GAAG,CAAC,MAAQkvB,EAASQ,cAAc,CAAClwB,EAAG,IAAI,CAACY,YAAY,qBAAqBZ,EAAG,SAAS,CAACY,YAAY,aAAaI,MAAM,CAAE,YAAa2uB,EAASQ,gBAAiB3vB,GAAG,CAAC,MAAQkvB,EAASS,eAAe,CAACnwB,EAAG,IAAI,CAACY,YAAY,0BAA0B,MAAK,EAAM,aAAaZ,EAAG,iBAAiB,CAACY,YAAY,oCAAoCV,MAAM,CAAC,GAAK,qBAAqB,OAASN,EAAIw5B,sBAAsB,MAAM,GAAGx5B,EAAIW,kBAAkB,MAC56D,GAAkB,G,wVConBtB,QACA,YACA,sBACA,sBACA,gBACA,oBAEA,KAPA,WAQA,OACA,mBACA,mBACA,uBACA,YACA,CACA,QACA,iBACA,CACA,QACA,kBACA,CACA,QACA,uBACA,CACA,QACA,yBACA,CACA,QACA,sBACA,CACA,QACA,uBACA,CACA,QACA,uBACA,CACA,QACA,gBAGA,OACA,OACA,gEAEA,UACA,oEAEA,UACA,gBACA,cACA,WACA,mBACA,mBACA,WACA,SACA,+CACA,6CACA,+DACA,8CACA,6BACA,eACA,yBACA,UACA,cACA,cACA,SACA,eACA,eACA,aAEA,aACA,kBACA,eACA,gBACA,mDACA,eACA,WACA,uBACA,cACA,oBACA,UACA,kBACA,aACA,eACA,uBACA,oBACA,sBACA,YACA,WACA,UACA,qBACA,cACA,kBACA,kBACA,uBACA,uBACA,WACA,kBACA,UACA,kBACA,aACA,YACA,gBACA,aACA,oBACA,uDACA,gBAGA,QA5GA,WA6GA,4CACA,4CACA,mEAEA,iDACA,mEAGA,QArHA,WAsHA,6CACA,kCACA,iBACA,8BAGA,SAGA,UAHA,WAIA,eACA,qBACA,mBACA,+CACA,8CACA,6BACA,oBACA,uBACA,wBACA,mCAQA,SACA,kBACA,kCACA,kBAGA,aA3BA,WA4BA,4BAIA,eAhCA,gIAkCA,qBAlCA,SAmCA,iCAnCA,OAmCA,EAnCA,OAsCA,sCACA,yBACA,sCACA,wBACA,uBACA,qCACA,mBAGA,6BAGA,wBACA,wCAEA,qCAEA,2BACA,aACA,gBACA,0BAGA,qBACA,mBACA,gBACA,+CAhEA,yGAqEA,WArEA,SAqEA,GACA,eACA,2BACA,sCACA,uBACA,gBACA,wBACA,4BACA,yBACA,wBACA,oBACA,gBAKA,cArFA,WAsFA,mBACA,gBACA,sBAIA,sBA5FA,6HA6FA,cA7FA,OA6FA,eA7FA,OA8FA,uBACA,8CAEA,yCAjGA,wGAsGA,yBAtGA,qIAwGA,8BACA,8BAzGA,OAwGA,EAxGA,OA0GA,YACA,mBACA,OACA,kBACA,2CACA,gCAGA,4BACA,6CAGA,0CAEA,yBACA,aACA,cACA,0CAEA,sEA7HA,wGAkIA,iCAlIA,qIAmIA,4DAnIA,UAmIA,EAnIA,SAoIA,YApIA,wBAqIA,2BACA,kBACA,oBACA,6BAxIA,SA2IA,2BA3IA,wBA6IA,sBA7IA,WA6IA,EA7IA,QA8IA,oBA9IA,wBA+IA,uBA/IA,UAgJA,2BAhJA,iDAkJA,6BAlJA,QAmJA,uBAnJA,yBAsJA,+BAtJA,gCAwJA,yBACA,aACA,cACA,0CAEA,qEA7JA,yGAkKA,oBAlKA,WAmKA,8CACA,eACA,cACA,WACA,2CACA,kBACA,iBACA,uBACA,mCAEA,sCACA,0BAIA,qDACA,0BACA,iDAIA,qEAGA,4CACA,OACA,wCACA,iFAEA,oBAIA,YApMA,WAqMA,WACA,gCACA,YACA,YACA,YACA,YACA,8BACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,aACA,eAEA,YACA,YACA,aAEA,gCACA,qBACA,uCAGA,gCACA,YACA,YACA,YACA,YACA,8BACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,aACA,eAEA,YACA,YACA,aAEA,mCACA,qBACA,0CAGA,oCACA,YACA,YACA,YACA,YACA,8BACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,aACA,eAEA,YACA,YACA,aAEA,mCACA,qBACA,2CAMA,oBAtSA,uIAuSA,OAvSA,SAwSA,gEAxSA,UAwSA,EAxSA,SAySA,eAzSA,oBA0SA,wBACA,2CAEA,eA7SA,wBA8SA,cACA,mCACA,sCACA,gCAGA,uBACA,wCAGA,iFACA,OACA,6BAEA,0BACA,6BA7TA,mBA+TA,GA/TA,eAiUA,qEACA,yBACA,aACA,cACA,4BArUA,mBAuUA,GAvUA,gCA0UA,qEACA,yBACA,aACA,cACA,4BA9UA,yGAoVA,sBApVA,gJAsVA,iBACA,+CAvVA,OAsVA,EAtVA,OAwVA,OACA,YACA,gBACA,gBACA,sBACA,uCAEA,4BACA,yBACA,gCAGA,yBACA,8BAIA,uFACA,OACA,wBAEA,4BACA,0BAGA,qEACA,yBACA,aACA,cACA,kCArXA,wGA2XA,wBA3XA,sHA4XA,MACA,oBA7XA,gCA8XA,8BACA,+CA/XA,OA8XA,EA9XA,8CAiYA,8BACA,iDAlYA,OAiYA,EAjYA,oBAoYA,YApYA,kCAsYA,iCAtYA,gCAwYA,0DACA,yBACA,aACA,cACA,iCA5YA,eA+YA,sEA/YA,UAiZA,oBAjZA,yGAsZA,gBAtZA,yCAsZA,GAtZA,iFAuZA,EAvZA,uBAwZA,aAxZ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,OACA,yGACMw9B,UAAW,+FACXC,SAAU9+B,KAAK2c,OAAO5S,MAAMpB,KAAK9F,MACjCk8B,QAAS,GACf,qDACA,4CACA,iCACMb,SAAU,KACVc,YAAa,CACnB,CACA,UACA,WACA,CACA,UACA,WACA,CACA,UACA,YAGA,aACA,CACA,iBACA,kBACA,CACA,iBACA,kBACA,CACA,iBACA,kBACA,CACA,iBACA,kBACA,CACA,iBACA,mBAGM7wB,YAAa,GACnB,YACA,YACA,mBACA,UACA,oBACA,uBACA,2BACMgW,+BAA+B,EAC/BkJ,4BAA4B,EAClC,uBACA,eACA,mBACA,WACA,qBACA,sBACA,wBACA,iBACA,UACA,YACA,mBACA,WACA,kBACA,WACA,eACA,aACA,eACA,qBACA,eACA,aACA,cACA,UACA,aACA,iBACA,mBACA,gBACA,oBACA,sBACA,oBACA,qBACA,gBACA,uBACA,oBACA,wBACA,sBAEA,aACA,eACA,QACA,iBACA,aACA,cACA,mBACA,oBACA,kBACA,kBAEA,WACA,CACA,0BACA,2BAEA,CACA,oBACA,qBAEA,CACA,oBACA,qBAEA,CACA,kBACA,oBAGA,eACA,cACA,mEAEA,WACA,uEAGA,OACA,gBACA,kEAEA,SACA,6DAEA,UACA,kEAGA,WACA,MACA,+DAKA,SACA,6DAEA,UACA,kEAGMrQ,eAAgB,QAChB2hB,WAAY,KACZ7W,OAAQ,KACR0K,UAAW,GACjB,uBACA,6BACA,8BACA,+BACA,0BACA,2BACA,mBACA,oBACA,wBACA,kBACMN,uBAAuB,EACvB0M,YAAa,aAInB,eACA,gBACA,4CACA,yDAGA,OACA,YADA,SACA,GACA,iBAEA,YAJA,SAIA,GACA,yBACA,sCACA,2BAIA,cApMA,WAqMA,qEACA,uEACA,4EAEA,QAzMA,WAyMA,WACA,yDACA,eACA,eACA,YACA,qBACA,WACA,gBACQt7B,SAAUtD,KAAKuH,SACfg3B,MAAO,MAGXv+B,KAAK0nB,gBACL1nB,KAAK++B,QAAU/+B,KAAK8+B,SAAS/uB,QAAO,SAAxC,qCAEE+J,QAAS,CAGP+S,cAHJ,SAGA,GACM7sB,KAAK0yB,UAAUlzB,GACrB,oCAKA,UAVA,yCAUA,GAVA,kFAWA,MAXA,OAWA,YAXA,OAYA,2CAZA,yGAcIsD,aAdJ,WAeM9C,KAAKk+B,SAASK,MAAQ,MAI5B,WAnBA,WAmBA,WACA,OACA,6CACA,MAoCA,OALA,yBACA,aACA,cACA,sEAEA,EAnCA,uBACA,4DACA,yBACA,6DAEA,+FAEA,wDACA,mBACA,kBAGA,eACA,2BACA,aACA,gBACA,gDAEA,oBACA,8BACA,mBACA,eACA,yBACA,aACA,cACA,4DAcA,SA9DA,SA8DA,KACA,oBACA,kCACA,qCAEA,8BAEA,4BAEA,WAvEA,SAuEA,kBACA,2FACA,uBACA,0BACA,iBACA,iBACA,MACA,kBACA,mCACA,4BAEA,2BACA,aACA,gBACA,kDAEA,mBACA,eACA,yBACA,aACA,cACA,yDAGA,kBACA,YACA,YACA,gCAIA,WAtGA,WAsGA,WACA,OACA,gDACA,MAEA,OACA,qCACA,+EACA,sCACA,4CACA,gCACA,wBACA,iBACA,wCACA,kCACA,EACA,qCAGA,eAEA,wBACA,eACA,GACA,sCAIA,2BACA,aACA,gBACA,qDAEA,+BAIA,iBA3IA,SA2IA,gBACA,8FACA,uBACA,0BACA,iBACA,iBACA,MACA,kBACA,0BACA,4BAEA,2BACA,aACA,gBACA,sDAEA,mBACA,eACA,yBACA,aACA,cACA,6DAGA,kBACA,YACA,YACA,gCAIA,cA1KA,SA0KA,OACA,SACA,4BACA,UACA,mCACA,YACA,2BACA,WACA,wBAGA,gBArLA,mHAsLA,sDAGA,kDAGA,IA5LA,YA4LA,2BA5LA,uBA6LA,mCA7LA,SA8LA,wBA9LA,OA4LA,IA5LA,sBAiMA,2BACA,aACA,gBACA,qDApMA,yGAuMA,UAvMA,mHAwMA,IAxMA,YAwMA,2BAxMA,mBAyMA,oCAzMA,uBA0MA,mCA1MA,SA2MA,wBA3MA,OAwMA,IAxMA,sBA8MA,2BACA,aACA,gBACA,qDAjNA,yGAuNA,YAvNA,yCAuNA,GAvNA,kFAwNA,MAxNA,cAwNA,cAxNA,OA0NA,sBACA,oDA3NA,SA8NA,MA9NA,OA8NA,iBA9NA,gHAmOA,cAnOA,6HAoOA,iBApOA,OAoOA,gBApOA,+GAwOA,eAxOA,wHAyOA,4JACA,EADA,wBAEA,mBACA,6CAHA,SAMA,eANA,OAMA,EANA,OAOA,aACA,kBACA,mBACA,8CAGA,oCACA,2BACA,aACA,gBACA,mDAEA,wCAnBA,mGAzOA,wGAkQI,aAlQJ,0HAqQA,oBACA,kDAEA,yBAGA,OA3QA,SA6QA,eA7QA,cA+QA,sBACA,oDAhRA,wGAsRA,aAtRA,yCAsRA,KAtRA,wEAuRA,IAvRA,YAuRA,YAvRA,gCAwRA,YAxRA,OAuRA,IAvRA,qHA8RA,wBA9RA,SA8RA,KACA,iCACA,oCAEA,mCACA,6BACA,sBACA,uBACA,uBAEA,kBAxSA,SAwSA,KACA,0BACA,6BAEA,kCACA,kBACA,4CACA,oBAGA,uBACA,2BAEA,yBArTA,SAqTA,KACA,kCACA,qCAEA,yCACA,kBACA,4CACA,qCACA,oBAEA,wBAEA,mBAjUA,WAkUA,WACA,gCACA,YACA,YACA,YACA,YACA,8BACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,aACA,eAEA,YACA,YACA,aAEA,WACA,qBACA,0CAIA,oBAnWA,WAoWA,WACA,iCACA,YACA,YACA,YACA,YACA,8BACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,aACA,eAEA,YACA,YACA,aAEA,WACA,qBACA,2CAIA,eArYA,WAsYA,WACA,uCACA,YACA,YACA,YACA,YACA,8BACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,aACA,eAEA,YACA,YACA,aAEA,WACA,qBACA,gDAIA,gBAvaA,WAwaA,WACA,wCACA,YACA,YACA,YACA,YACA,8BACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,aACA,eAEA,YACA,YACA,aAEA,yCACA,qBACA,iDAIA,sBAzcA,WA0cA,gFAEA,gBA5cA,WA6cA,oEAIA,iBAjdA,0HAkdA,OACA,sDACA,MA6GA,OALA,yBACA,aACA,cACA,sEAEA,EA5GA,OACA,kBACA,kDACA,kDACA,4CACA,aACA,eACA,wDACA,kDACA,wBACA,sCACA,WACA,aACA,iBACA,mBACA,gBACA,oBACA,sBACA,yCACA,qBACA,0CACA,gBACA,uBACA,sBACA,wBAEA,MACA,kBACA,MACA,qBACA,WACA,kBACA,WACA,eACA,aACA,eACA,qBACA,eACA,aACA,cACA,UACA,aACA,iBACA,mBACA,gBACA,oBACA,sBACA,oBACA,qBACA,gBACA,uBACA,sBACA,wBAIA,OACA,kBACA,yBACA,iBACA,gCACA,oBACA,yBACA,iBACA,eACA,qCAGA,eAEA,wBAEA,GADA,eACA,GACA,SACA,UACA,UACA,sBACA,gCAIA,2BACA,aACA,gBACA,qDAEA,qCAEA,yBACA,aACA,cACA,gFAGA,mBACA,eACA,yBACA,aACA,cACA,mFAxjBA,wGAqkBA,eArkBA,0HAskBA,OACA,mDACA,MAuCA,OALA,yBACA,aACA,cACA,sEAEA,EAtCA,6BACA,wEACA,yCACA,6FAEA,wCACA,2FAEA,yCACA,6FAEA,8DACA,yBACA,kBACA,kDACA,0BACA,oBACA,2BACA,aACA,gBACA,mDAEA,oCACA,mBACA,eACA,yBACA,aACA,cACA,8DArmBA,wGAmnBA,2BAnnBA,SAmnBA,KACA,oCACA,uCAGA,2CACA,iBACA,4CACA,qBAEA,6BACA,sBACA,wBAEA,0BAEA,kBAnoBA,WAooBA,WACA,0CACA,YACA,YACA,YACA,YACA,YACA,8BACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,aACA,eAEA,YACA,YACA,aAEA,uEACA,qBACA,iDAOA,WAzqBA,SAyqBA,GACA,yBACA,gDACA,oEAKA,gBAjrBA,SAirBA,GACA,yBACA,gDACA,oEAIA,oBAxrBA,WAyrBA,wBACA,gDACA,sECv2D2W,MCSvW,I,oBAAY,eACd,GACA,GACA,IACA,EACA,KACA,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mBACA,UACA,oBACA,uBACA,2BACA,iCACA,wBACA,uBACA,eACA,mBACA,WACA,qBACA,sBACA,sBACA,wBACA,iBACA,UACA,YACA,iBACA,+BACA,gBACA,WACA,oBACA,cACA,eACA,SACA,yBACA,6BAEA,aACA,YACA,kEAGA,OACA,cACA,oEAGA,uBACA,gBACA,uBACA,+BAIA,eACA,gBACA,4CACA,yDAGA,OACA,YADA,SACA,GACA,iBAEA,YAJA,SAIA,GACA,2BAGA,cA5FA,WA6FA,+DACA,4EAEA,QAhGA,WAiGA,mDACA,aACA,qBACA,qBACA,qBACA,eACA,cACA,cAIA,SAIA,kBAJA,SAIA,GACA,WAEA,QACA,mBACA,OAEA,YACA,OAEA,YACA,OAEA,QAIA,cArBA,WAsBA,8BAKA,UA3BA,yCA2BA,GA3BA,kFA4BA,MA5BA,OA4BA,YA5BA,OA6BA,2CA7BA,yGAiCA,aAjCA,wHAkCA,0JACA,EADA,iCAEA,aAFA,OAEA,EAFA,OAGA,WACA,gBACA,gCACA,qCACA,2BACA,aACA,gBACA,iDAEA,sCAZA,mGAlCA,wGAoDA,WApDA,6GAqDA,gBACA,kBACA,2BACA,aACA,gBACA,oDAEA,mBACA,eACA,yBACA,aACA,cACA,wDAjEA,wGAuEA,gBAvEA,WAwEA,SACA,IACA,6BACA,wBACA,4BAEA,uBAGA,iCACA,aACA,SACA,iBAGA,4BACA,wBAEA,wBAKA,gBA/FA,yCA+FA,KA/FA,6EAgGA,gGACA,uBACA,0BACA,iBACA,sBACA,KACA,yBACA,wBACA,wDACA,8CACA,qCACA,2BACA,aACA,gBACA,uDAEA,mBACA,eACA,yBACA,aACA,cACA,4DAIA,uDACA,2BACA,aACA,gBACA,qDAIA,0BACA,wDACA,8CACA,qCACA,2BACA,aACA,gBACA,sDAGA,uDACA,2BACA,aACA,gBACA,wDAIA,kBACA,YACA,YACA,+BAtJA,2GA6JA,aA7JA,yCA6JA,KA7JA,wEA8JA,IA9JA,YA8JA,YA9JA,gCA+JA,YA/JA,OA8JA,IA9JA,qHAqKA,mBArKA,SAqKA,KACA,8BACA,iCAEA,qCACA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,iBACA,yBACA,kBACA,8BACA,iCACA,qBACA,2BAIA,iCACA,0BACA,uBAOA,eA5NA,WA6NA,2DACA,gEAGA,YAjOA,6HAkOA,8CAlOA,OAkOA,cAlOA,+GAoOA,mBApOA,6HAqOA,8CArOA,OAqOA,cArOA,+GAuOA,kBAvOA,gHAwOA,iEAxOA,gCAyOA,4BAzOA,iCA0OA,iEA1OA,iCA2OA,gCA3OA,kCA4OA,mEA5OA,kCA6OA,8BA7OA,mCA8OA,iEA9OA,kCA+OA,iCA/OA,mCAgPA,mEAhPA,kCAiPA,sCAjPA,yGAoPA,qBApPA,gIAqPA,iBACA,gGACA,4EACA,uDACA,mBACA,gKACA,uBACA,0BACA,iBACA,iBACA,iBAEA,OACA,oBACA,kBACA,wBACA,iBACA,YACA,YACA,iBAGA,KACA,gCACA,OACA,cACA,sBACA,kBACA,qDACA,8BACA,SACA,2CACA,6BACA,iBACA,aACA,mBACA,qBAEA,kBACA,YACA,YACA,6CAIA,oBAEA,GACA,uBACA,qBACA,2BACA,iBACA,YACA,YACA,oBAGA,KACA,gCACA,OACA,cACA,sBACA,kBACA,qDACA,8BACA,SACA,2CACA,6BACA,iBACA,aACA,mBACA,mBA5TA,wGAgUA,yBAhUA,gIAiUA,iBACA,gGACA,4EACA,uDACA,mBACA,gKACA,uBACA,0BACA,iBACA,iBACA,iBAEA,OACA,oBACA,kBACA,wBACA,iBACA,YACA,YACA,iBAGA,KACA,iCACA,OACA,cACA,sBACA,kBACA,qDACA,8BACA,SACA,2CACA,6BACA,iBACA,aACA,mBACA,qBAEA,kBACA,YACA,YACA,6CAIA,oBAEA,GACA,uBACA,qBACA,2BACA,iBACA,YACA,YACA,oBAGA,KACA,iCACA,OACA,cACA,sBACA,kBACA,qDACA,8BACA,SACA,2CACA,6BACA,iBACA,aACA,mBACA,mBAxYA,wGA4YA,uBA5YA,gIA6YA,iBACA,gGACA,4EACA,uDACA,mBACA,gKACA,uBACA,0BACA,iBACA,iBACA,iBAEA,OACA,oBACA,kBACA,wBACA,iBACA,YACA,YACA,iBAGA,KACA,8BACA,OACA,cACA,sBACA,kBACA,qDACA,8BACA,SACA,2CACA,6BACA,iBACA,UACA,cACA,mBACA,qBAEA,kBACA,YACA,YACA,6CAIA,oBAEA,GACA,uBACA,qBACA,2BACA,iBACA,YACA,YACA,oBAGA,KACA,8BACA,OACA,cACA,sBACA,kBACA,eACA,qDACA,8BACA,SACA,2CACA,6BACA,iBACA,UACA,cACA,mBACA,mBAvdA,wGA2dA,+BA3dA,gIA4dA,iBACA,gGACA,4EACA,uDACA,mBACA,gKACA,uBACA,0BACA,iBACA,iBACA,iBAEA,OACA,oBACA,kBACA,wBACA,iBACA,YACA,YACA,iBAGA,KACA,uCACA,OACA,cACA,sBACA,kBACA,qDACA,8BACA,SACA,2CACA,6BACA,iBACA,UACA,cACA,mBACA,qBAEA,kBACA,YACA,YACA,6CAIA,oBAEA,GACA,uBACA,qBACA,2BACA,iBACA,YACA,YACA,oBAGA,KACA,uCACA,OACA,cACA,sBACA,kBACA,qDACA,8BACA,SACA,2CACA,6BACA,iBACA,UACA,cACA,mBACA,mBAriBA,wGAyiBA,oBAziBA,SAyiBA,GAIA,IAHA,qBACA,WACA,oBACA,aACA,sBACA,OAEA,UAEA,0BAnjBA,gIAojBA,iBACA,gGACA,4EACA,uDACA,mBACA,gKACA,uBACA,0BACA,iBACA,iBACA,iBAEA,OACA,oBACA,kBACA,wBACA,iBACA,YACA,YACA,iBAGA,KACA,wCACA,OACA,cACA,sBACA,kBACA,qDACA,8BACA,SACA,2CACA,6BACA,iBACA,aACA,mBACA,qBAEA,kBACA,YACA,YACA,gCAIA,oBAEA,GACA,uBACA,qBACA,2BACA,iBACA,YACA,YACA,oBAGA,KACA,wCACA,OACA,cACA,sBACA,kBACA,qDACA,8BACA,SACA,2CACA,6BACA,iBACA,aACA,mBACA,mBA3nBA,wGA+nBA,aA/nBA,yCA+nBA,KA/nBA,wEAgoBA,IAhoBA,YAgoBA,YAhoBA,gCAioBA,YAjoBA,OAgoBA,IAhoBA,uHChX0W,MCStW,I,oBAAY,eACd,G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M,CAACY,YAAY,aAAa,CAACZ,EAAG,MAAM,CAACY,YAAY,iBAAiB,CAACZ,EAAG,OAAO,CAACY,YAAY,kBAAkB,CAAChB,EAAIsB,GAAG,+BAA+BlB,EAAG,IAAI,CAACY,YAAY,wCAAwChB,EAAIsB,GAAG,6C,6UCshBzU,QACA,sBACA,KAFA,WAGA,OACA,8CACA,4CACA,qDACA,WACA,iBACA,aACA,mBACA,eACA,cACA,iBACA,uBACA,kBACA,kBACA,aACA,UACA,oBACA,UACA,YACA,kBACA,sBACA,gBACA,oBACA,mBACA,WACA,iBACA,qBACA,uBACA,aACA,CACA,UACA,iBAEA,CACA,UACA,iBAEA,CACA,SACA,gBAEA,CACA,UACA,iBAEA,CACA,UACA,iBAEA,CACA,UACA,kBAGA,gBACA,aACA,gBACA,qBAGA,QA/DA,WAgEA,6EAEA,gEAEA,4EACA,oBAEA,SAGA,YAHA,6HAIA,iBAJA,OAIA,WAJA,+GASA,aATA,wHAUA,wBACA,sBACA,4BACA,kBACA,qBACA,kBACA,wBACA,qBACA,sBACA,gIAnBA,yGAqBA,mBArBA,WAsBA,wBACA,sBACA,4BACA,kBACA,sBACA,4BACA,kBACA,qBACA,uBAEA,eAhCA,6HAiCA,+CAjCA,OAiCA,iBAjCA,+GAsCA,mBAtCA,SAsCA,GACA,SACA,eACA,UACA,SACA,WACA,MACA,SACA,WACA,MACA,kBACA,MACA,QACA,MAEA,mBAEA,OADA,SACA,GAGA,mBA1DA,6HA2DA,wBACA,sBACA,4BACA,kBACA,yBACA,2BACA,qBACA,kBACA,wBAEA,8BArEA,iBAsEA,kCAtEA,yCAwEA,wCAxEA,QAwEA,EAxEA,OAyEA,eACA,uBACA,iBACA,YACA,OACA,sBACA,oCACA,4BACA,kBACA,oCACA,oBACA,qBAEA,aAGA,sCAEA,uBACA,sDACA,gCACA,8HAGA,sDACA,+BACA,qDAIA,yBACA,aACA,cACA,4EA1GA,yGA+GA,2BA/GA,uHAgHA,KAhHA,KAkHA,gBAlHA,OAmHA,SAnHA,OAuHA,SAvHA,8BAoHA,aApHA,SAqHA,iCArHA,cAqHA,EA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A,EAAS1K,QAEhB2K,OAAM,SAAAC,GACNC,QAAQC,IAAIF,MAIR,SAAS08B,GAA0Bj8B,GACzC,OAAOd,GAAKC,KAAK,6BAA8Ba,GAC7CZ,MAAK,SAAAC,GACL,OAAOA,EAAS1K,QAEhB2K,OAAM,SAAAC,GACNC,QAAQC,IAAIF,M,gUCiIf,QACA,gCACA,KAFA,WAGA,OACA,8CACA,4CACA,qDACA,aACA,WACA,iBACA,mBACA,eACA,cACA,iBACA,uBACA,kBACA,kBACA,aACA,UACA,oBACA,UACA,kBACA,sBACA,sBACA,kBACA,qBACA,mBACA,0BACA,gBACA,kBACA,cACA,CACA,UACA,WAEA,CACA,UACA,WAEA,CACA,UACA,WAEA,CACA,UACA,WAEA,CACA,UACA,WAEA,CACA,UACA,YAEA,0BACA,sBACA,CACA,UACA,WAEA,CACA,UACA,WAEA,CACA,UACA,WAEA,CACA,UACA,WAEA,CACA,UACA,WAEA,CACA,UACA,YAIA,WACA,iBACA,qBACA,uBACA,aACA,CACA,UACA,iBAEA,CACA,UACA,iBAEA,CACA,SACA,gBAEA,CACA,UACA,iBAEA,CACA,UACA,iBAEA,CACA,UACA,kBAGA,kBAGA,QApHA,WAqHA,6EAEA,gEAEA,4EACA,oBAEA,SAIA,YAJA,SAIA,GACA,6DACA,6BAEA,mBARA,WASA,wBACA,sBACA,4BACA,kBACA,sBACA,4BACA,kBACA,uBAEA,eAlBA,6HAmBA,+CAnBA,OAmBA,iBAnBA,+GAwBA,aAxBA,SAwBA,GACA,gEACA,8BAKA,eA/BA,SA+BA,GACA,kEACA,yBAIA,YArCA,6HAsCA,iBAtCA,OAsCA,WAtCA,+GA0CA,aA1CA,wHA2CA,wBACA,sBACA,4BACA,kBACA,gIACA,0BAhDA,wGAqDA,UArDA,SAqDA,GACA,oCAEA,OADA,cACA,gCAKA,mBA7DA,SA6DA,GACA,SACA,eACA,UACA,SACA,WACA,MACA,SACA,WACA,MACA,kBACA,MACA,QACA,MAEA,mBAEA,OADA,SACA,GAEA,mBAhFA,6HAiFA,qBACA,oBACA,sBACA,4BACA,iBACA,wBACA,8B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A,0FAsNA,cACA,2BACA,qBACA,0BACA,kDACA,mBACA,yBACA,8EAEA,uBA/NA,SAmOA,MACA,kBACA,mCACA,EACA,0HAEA,sEAEA,mBACA,kBA5OA,OA+OA,mDACA,OACA,uBACA,uCAEA,wCACA,gDAGA,2CACA,SACA,cAEA,sBACA,sCACA,wDAEA,GACA,sBAjQA,yGAsQA,oBAtQA,qIAwQA,6CACA,yCAzQA,OAwQA,EAxQA,OA0QA,YACA,OACA,iCACA,2BAGA,sBACA,2BACA,aACA,gBACA,yCAIA,2BACA,aACA,gBACA,wCA3RA,wGA+RA,2BA/RA,SA+RA,GAEA,IADA,SACA,oBACA,OACA,mBACA,SACA,WACA,eACA,kBAEA,UAEA,UAIA,wBA/SA,WAgTA,sBACA,sBACA,gDAEA,yBACA,qBACA,mBACA,oEACA,iEAGA,sEAGA,IACA,6BACA,6DACA,gBACA,GACA,iBACA,uBACA,qBACA,yBACA,+BACA,gCACA,yBACA,+BACA,gDACA,YACA,cACA,mBACA,0BACA,gBACA,eACA,gBACA,iCACA,oBAEA,gBACA,qBACA,oBACA,oEACA,4BAOA,WAjWA,SAiWA,cACA,kBACA,qBAEA,6BACA,kBACA,8CACA,+BACA,uBACA,4DACA,QACA,mBACA,eACA,yBACA,aACA,cACA,gDAGA,CAGA,IACA,6BACA,6DACA,gBACA,GACA,iBACA,uBACA,qBACA,yBACA,+BACA,gCACA,yBACA,+BACA,gDACA,YACA,cACA,mBACA,0BACA,gBACA,eACA,gBACA,iCACA,oBAEA,MACA,kBACA,WACA,gCACA,sBACA,0EACA,8CACA,+BACA,uBACA,4DACA,QACA,mBACA,eACA,yBACA,aACA,cACA,8CAQA,aAvaA,WAuaA,WACA,sBAEA,kBACA,cACA,gBACA,8CACA,iEACA,8BACA,MACA,kBACA,WACA,gCACA,uBACA,8CACA,2BACA,aACA,gBACA,yDAYA,mBACA,eACA,yBACA,aACA,cACA,+DAQA,oBAldA,SAkdA,GAEA,IADA,SACA,+BACA,sBACA,GACA,wBACA,6BACA,kBACA,uBAEA,UAEA,UAIA,qBAleA,sHAmeA,2CACA,EApeA,gCAoeA,8CApeA,OAoeA,EApeA,cAseA,WACA,wCACA,kCAGA,wBACA,aACA,aACA,kDAEA,sEAhfA,wGAmfA,oBAnfA,wHAofA,2CACA,EArfA,gCAqfA,8CArfA,OAqfA,EArfA,cAufA,YACA,OACA,uCACA,2DAGA,wBACA,aACA,aACA,kDAEA,sEAlgBA,wGAqgBA,gBArgBA,wHAsgBA,0BAtgBA,iCAugBA,eAvgBA,OAugBA,gBAvgBA,OAwgBA,yCACA,4BAEA,OACA,2DACA,sCACA,uBAEA,4CACA,qCACA,KACA,iBAnhBA,wBAshBA,yBAthBA,yGAyhBA,mBAzhBA,SAyhBA,GAGA,8BACA,8CACA,eAEA,WACA,8CACA,+CAGA,8CACA,yBACA,4BACA,mBAEA,qBACA,4BAGA,gBACA,CACA,iBACA,0BACA,gBACA,iBACA,YAEA,uBAGA,sBACA,uBAGA,sBACA,uBAGA,mDACA,uBAEA,8CACA,2BAMA,YA3kBA,WA4kBA,WACA,+BAEA,4CACA,2CACA,MACA,IAWA,EAXA,8CACA,oBACA,qBAEA,SACA,yBAEA,YADA,SAOA,IADA,oCACA,YAGA,IADA,oCACA,mBACA,wBACA,QAKA,sEACA,OAGA,iCACA,OAEA,iCACA,OAIA,sBACA,MACA,wCACA,YAGA,2BACA,SACA,mCAGA,OAIA,WApoBA,SAooBA,GAEA,8BACA,gCAIA,QA3oBA,SA2oBA,GAEA,8BACA,GACA,yDAKA,OAppBA,SAopBA,GAEA,8BACA,GACA,6EAKA,aA7pBA,SA6pBA,GAEA,8BACA,IACA,mBACA,uBAKA,YAvqBA,yCAuqBA,GAvqBA,yFAwqBA,aACA,mBACA,aACA,yBACA,qBACA,2BACA,sBAGA,sBACA,iCACA,oBAnrBA,SAqrBA,MArrBA,OAqrBA,EArrBA,OAsrBA,GACA,2CACA,yCACA,8BACA,qCACA,0BACA,6BACA,UACA,YAEA,yBACA,aACA,cACA,mCAnsBA,yGAusBA,oBAvsBA,SAusBA,GAIA,IAHA,qBACA,WACA,oBACA,aACA,sBACA,OAEA,UAEA,eAjtBA,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1W,UAAU0vC,MACdC,QAAQC,IAAIC,SACZF,QAAQC,IAAIE,SACZp5B,aAAI1W,UAAU,oBAAqB+vC,SACnCr5B,aAAIC,IAAIq5B,MACRt5B,aAAIC,IAAIs5B,IAAW,CAAEC,cACrBx5B,aAAIC,IAAIw5B,SACRz5B,aAAIC,IAAIy5B,MACR15B,aAAIC,IAAI05B,KAAW,CAClBh+B,cAGDqE,aAAIC,IAAI25B,MACR55B,aAAIC,IAAI45B,SACR75B,aAAIC,IAAI65B,MACR95B,aAAIC,IAAI85B,MAER/5B,aAAIQ,OAAOw5B,eAAgB,EAC3Bh6B,aAAIhc,UAAUi2C,MAAQ,GAEtBj6B,aAAIQ,OAAO05B,UAAW,EAEtB,IAAIl6B,aAAI,CACPizB,UACAjyB,SACAm5B,OAAQ,SAAAC,GAAC,OAAIA,EAAEC,OACbC,OAAO,S,qBC5DVj1C,EAAOD,QAAU,IAA0B,+B,uBCA3CC,EAAOD,QAAU,IAA0B,oC,+GCA3C,W,6DCAA,W,uBCAAC,EAAOD,QAAU,IAA0B,8B,2DCA3C,W,kCCAA,W,sFCAA,W,oCCAA,W,oCCAA,W,uECAAC,EAAOD,QAAU,IAA0B,2C,6GCA3C,W,mBCAAC,EAAOD,QAAU,03H,sFCAjB,W,oCCAA,W,oCCAA,W,oCCAA,W,2GCAA,W,qBCAAC,EAAOD,QAAU,8lG,+GCAjB,W,oCCAA,W,oCCAA,W,gDCAAC,EAAOD,QAAU,IAA0B,gC,sFCA3C,W,oCCAA,W,6DCAA,W,6DCAA,W,oCCAA,W,6DCAA,W,2DCAA,W,qJCAA,W,kCCAA,W,qBCAAC,EAAOD,QAAU,IAA0B,+B,kCCA3C,W,kCCAA,W,kCCAA,W,mBCAAC,EAAOD,QAAU,0nJ,kCCAjB,W,yDCAA,W,kCCAA,W,uGCAA,W,yDCAA,W,kCCAA,W,kCCAA,W,kCCAA,W,yDCAA,W,kCCAA,W,mECAAC,EAAOD,QAAU,IAA0B,+B,kCCA3C,W,kCCAA,W,kCCAA,W,kCCAA,W,kCCAA,W,qBCAAC,EAAOD,QAAU,IAA0B,wB,gFCA3C,W,mECAAC,EAAOD,QAAU,IAA0B,oC,kCCA3C,W,mBCAAC,EAAOD,QAAU,03H,kCCAjB,W,kCCAA,W,yDCAA,W,kCCAA,W,yDCAA,W,kCCAA,W,qBCAAC,EAAOD,QAAU,IAA0B,qC,kCCA3C,W,kCCAA,W,yDCAA,W,kCCAA,W,qJCAA,W,gFCAA,W,mBCAAC,EAAOD,QAAU,0pJ,kCCAjB,W,gFCAA,W,kCCAA,W,kCCAA,W,qBCAAC,EAAOD,QAAU,IAA0B,yB,kCCA3C,W,kCCAA,W,kCCAA,W,kCCAA,W,yDCAA,W,qJCAA","file":"js/app.2c43833c.js","sourcesContent":[" \t// install a JSONP callback for chunk loading\n \tfunction webpackJsonpCallback(data) {\n \t\tvar chunkIds = data[0];\n \t\tvar moreModules = data[1];\n \t\tvar executeModules = data[2];\n\n \t\t// add \"moreModules\" to the modules object,\n \t\t// then flag all \"chunkIds\" as loaded and fire callback\n \t\tvar moduleId, chunkId, i = 0, resolves = [];\n \t\tfor(;i < chunkIds.length; i++) {\n \t\t\tchunkId = chunkIds[i];\n \t\t\tif(Object.prototype.hasOwnProperty.call(installedChunks, chunkId) && installedChunks[chunkId]) {\n \t\t\t\tresolves.push(installedChunks[chunkId][0]);\n \t\t\t}\n \t\t\tinstalledChunks[chunkId] = 0;\n \t\t}\n \t\tfor(moduleId in moreModules) {\n \t\t\tif(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {\n \t\t\t\tmodules[moduleId] = moreModules[moduleId];\n \t\t\t}\n \t\t}\n \t\tif(parentJsonpFunction) parentJsonpFunction(data);\n\n \t\twhile(resolves.length) {\n \t\t\tresolves.shift()();\n \t\t}\n\n \t\t// add entry modules from loaded chunk to deferred list\n \t\tdeferredModules.push.apply(deferredModules, executeModules || []);\n\n \t\t// run deferred modules when all chunks ready\n \t\treturn checkDeferredModules();\n \t};\n \tfunction checkDeferredModules() {\n \t\tvar result;\n \t\tfor(var i = 0; i < deferredModules.length; i++) {\n \t\t\tvar deferredModule = deferredModules[i];\n \t\t\tvar fulfilled = true;\n \t\t\tfor(var j = 1; j < deferredModule.length; j++) {\n \t\t\t\tvar depId = deferredModule[j];\n \t\t\t\tif(installedChunks[depId] !== 0) fulfilled = false;\n \t\t\t}\n \t\t\tif(fulfilled) {\n \t\t\t\tdeferredModules.splice(i--, 1);\n \t\t\t\tresult = __webpack_require__(__webpack_require__.s = deferredModule[0]);\n \t\t\t}\n \t\t}\n\n \t\treturn result;\n \t}\n\n \t// The module cache\n \tvar installedModules = {};\n\n \t// object to store loaded and loading chunks\n \t// undefined = chunk not loaded, null = chunk preloaded/prefetched\n \t// Promise = chunk loading, 0 = chunk loaded\n \tvar installedChunks = {\n \t\t\"app\": 0\n \t};\n\n \tvar deferredModules = [];\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"/\";\n\n \tvar jsonpArray = window[\"webpackJsonp\"] = window[\"webpackJsonp\"] || [];\n \tvar oldJsonpFunction = jsonpArray.push.bind(jsonpArray);\n \tjsonpArray.push = webpackJsonpCallback;\n \tjsonpArray = jsonpArray.slice();\n \tfor(var i = 0; i < jsonpArray.length; i++) webpackJsonpCallback(jsonpArray[i]);\n \tvar parentJsonpFunction = oldJsonpFunction;\n\n\n \t// add entry module to deferred list\n \tdeferredModules.push([1,\"chunk-vendors\"]);\n \t// run deferred modules when ready\n \treturn checkDeferredModules();\n","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./IndividualOutcomes.vue?vue&type=style&index=0&id=b4b12c18&scoped=true&lang=css&\"","module.exports = __webpack_public_path__ + \"img/ptc.700a598e.jpg\";","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Benefits.vue?vue&type=style&index=1&id=3211281f&scoped=true&lang=css&\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SelfReview.vue?vue&type=style&index=0&id=661120a6&scoped=true&lang=css&\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CollectiveFeedbackList.vue?vue&type=style&index=0&id=29011432&scoped=true&lang=css&\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CollectiveFeedbackDetail.vue?vue&type=style&index=1&lang=css&\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Pedagogy.vue?vue&type=style&index=1&id=26dbbd9e&lang=scss&scoped=true&\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PeerReview.vue?vue&type=style&index=0&id=2874abda&scoped=true&lang=css&\"","module.exports = __webpack_public_path__ + \"img/research-ethic-6.a29dedc4.png\";","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./BoxesArea.vue?vue&type=style&index=0&id=251a22e3&scoped=true&lang=css&\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Logout.vue?vue&type=style&index=0&id=1d3a4223&scoped=true&lang=css&\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./NoProfile.vue?vue&type=style&index=0&id=638f0be6&scoped=true&lang=css&\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Contact.vue?vue&type=style&index=0&id=dbf28c08&scoped=true&lang=css&\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./NewLogin.vue?vue&type=style&index=0&id=49a3d32b&lang=scss&scoped=true&\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DemoSignUp.vue?vue&type=style&index=1&lang=css&\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Outcomes.vue?vue&type=style&index=0&id=07773d1b&scoped=true&lang=css&\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Header.vue?vue&type=style&index=0&id=e284b3ba&lang=scss&scoped=true&\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CollectiveFeedback.vue?vue&type=style&index=0&id=6039e87b&scoped=true&lang=css&\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./StudentHolisticScores.vue?vue&type=style&index=1&lang=css&\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./StudentAppraisal.vue?vue&type=style&index=0&id=5b21c3f8&scoped=true&lang=css&\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./NewAssignments.vue?vue&type=style&index=1&lang=css&\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PeerReview.vue?vue&type=style&index=1&lang=css&\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Courses.vue?vue&type=style&index=0&id=4d22ff6c&scoped=true&lang=css&\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DocumentsDownload.vue?vue&type=style&index=0&id=439bb888&scoped=true&lang=css&\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ViewFeedback.vue?vue&type=style&index=0&id=55caa835&scoped=true&lang=css&\"","module.exports = __webpack_public_path__ + \"img/data-access.a51ae70b.jpg\";","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./StudentHolisticScores.vue?vue&type=style&index=0&id=4f4ece42&scoped=true&lang=css&\"","module.exports = __webpack_public_path__ + \"img/canvas-logo.97e884c5.png\";","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PeerReview.vue?vue&type=style&index=0&id=9097b336&scoped=true&lang=css&\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./StudentAppraisal.vue?vue&type=style&index=1&lang=css&\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ForgotPassword.vue?vue&type=style&index=0&id=dd10d786&scoped=true&lang=css&\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FAQ.vue?vue&type=style&index=0&id=56f6b73c&lang=scss&scoped=true&\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./NewProjectTemplate.vue?vue&type=style&index=0&id=07a6b68e&scoped=true&lang=css&\"","var map = {\n\t\"./af\": \"2bfb\",\n\t\"./af.js\": \"2bfb\",\n\t\"./ar\": \"8e73\",\n\t\"./ar-dz\": \"a356\",\n\t\"./ar-dz.js\": \"a356\",\n\t\"./ar-kw\": \"423e\",\n\t\"./ar-kw.js\": \"423e\",\n\t\"./ar-ly\": \"1cfd\",\n\t\"./ar-ly.js\": \"1cfd\",\n\t\"./ar-ma\": \"0a84\",\n\t\"./ar-ma.js\": \"0a84\",\n\t\"./ar-sa\": \"8230\",\n\t\"./ar-sa.js\": \"8230\",\n\t\"./ar-tn\": \"6d83\",\n\t\"./ar-tn.js\": \"6d83\",\n\t\"./ar.js\": \"8e73\",\n\t\"./az\": \"485c\",\n\t\"./az.js\": \"485c\",\n\t\"./be\": \"1fc1\",\n\t\"./be.js\": \"1fc1\",\n\t\"./bg\": \"84aa\",\n\t\"./bg.js\": \"84aa\",\n\t\"./bm\": \"a7fa\",\n\t\"./bm.js\": \"a7fa\",\n\t\"./bn\": \"9043\",\n\t\"./bn-bd\": \"9686\",\n\t\"./bn-bd.js\": \"9686\",\n\t\"./bn.js\": \"9043\",\n\t\"./bo\": \"d26a\",\n\t\"./bo.js\": \"d26a\",\n\t\"./br\": \"6887\",\n\t\"./br.js\": \"6887\",\n\t\"./bs\": \"2554\",\n\t\"./bs.js\": \"2554\",\n\t\"./ca\": \"d716\",\n\t\"./ca.js\": \"d716\",\n\t\"./cs\": \"3c0d\",\n\t\"./cs.js\": \"3c0d\",\n\t\"./cv\": \"03ec\",\n\t\"./cv.js\": \"03ec\",\n\t\"./cy\": \"9797\",\n\t\"./cy.js\": \"9797\",\n\t\"./da\": \"0f14\",\n\t\"./da.js\": \"0f14\",\n\t\"./de\": \"b469\",\n\t\"./de-at\": \"b3eb\",\n\t\"./de-at.js\": \"b3eb\",\n\t\"./de-ch\": \"bb71\",\n\t\"./de-ch.js\": \"bb71\",\n\t\"./de.js\": \"b469\",\n\t\"./dv\": \"598a\",\n\t\"./dv.js\": \"598a\",\n\t\"./el\": \"8d47\",\n\t\"./el.js\": \"8d47\",\n\t\"./en-au\": \"0e6b\",\n\t\"./en-au.js\": \"0e6b\",\n\t\"./en-ca\": \"3886\",\n\t\"./en-ca.js\": \"3886\",\n\t\"./en-gb\": \"39a6\",\n\t\"./en-gb.js\": \"39a6\",\n\t\"./en-ie\": \"e1d3\",\n\t\"./en-ie.js\": \"e1d3\",\n\t\"./en-il\": \"7333\",\n\t\"./en-il.js\": \"7333\",\n\t\"./en-in\": \"ec2e\",\n\t\"./en-in.js\": \"ec2e\",\n\t\"./en-nz\": \"6f50\",\n\t\"./en-nz.js\": \"6f50\",\n\t\"./en-sg\": \"b7e9\",\n\t\"./en-sg.js\": \"b7e9\",\n\t\"./eo\": \"65db\",\n\t\"./eo.js\": \"65db\",\n\t\"./es\": \"898b\",\n\t\"./es-do\": \"0a3c\",\n\t\"./es-do.js\": \"0a3c\",\n\t\"./es-mx\": \"b5b7\",\n\t\"./es-mx.js\": \"b5b7\",\n\t\"./es-us\": \"55c9\",\n\t\"./es-us.js\": \"55c9\",\n\t\"./es.js\": \"898b\",\n\t\"./et\": \"ec18\",\n\t\"./et.js\": \"ec18\",\n\t\"./eu\": \"0ff2\",\n\t\"./eu.js\": \"0ff2\",\n\t\"./fa\": \"8df4\",\n\t\"./fa.js\": \"8df4\",\n\t\"./fi\": \"81e9\",\n\t\"./fi.js\": \"81e9\",\n\t\"./fil\": \"d69a\",\n\t\"./fil.js\": \"d69a\",\n\t\"./fo\": \"0721\",\n\t\"./fo.js\": \"0721\",\n\t\"./fr\": \"9f26\",\n\t\"./fr-ca\": \"d9f8\",\n\t\"./fr-ca.js\": \"d9f8\",\n\t\"./fr-ch\": \"0e49\",\n\t\"./fr-ch.js\": \"0e49\",\n\t\"./fr.js\": \"9f26\",\n\t\"./fy\": \"7118\",\n\t\"./fy.js\": \"7118\",\n\t\"./ga\": \"5120\",\n\t\"./ga.js\": \"5120\",\n\t\"./gd\": \"f6b4\",\n\t\"./gd.js\": \"f6b4\",\n\t\"./gl\": \"8840\",\n\t\"./gl.js\": \"8840\",\n\t\"./gom-deva\": \"aaf2\",\n\t\"./gom-deva.js\": \"aaf2\",\n\t\"./gom-latn\": \"0caa\",\n\t\"./gom-latn.js\": \"0caa\",\n\t\"./gu\": \"e0c5\",\n\t\"./gu.js\": \"e0c5\",\n\t\"./he\": \"c7aa\",\n\t\"./he.js\": \"c7aa\",\n\t\"./hi\": \"dc4d\",\n\t\"./hi.js\": \"dc4d\",\n\t\"./hr\": \"4ba9\",\n\t\"./hr.js\": \"4ba9\",\n\t\"./hu\": \"5b14\",\n\t\"./hu.js\": \"5b14\",\n\t\"./hy-am\": \"d6b6\",\n\t\"./hy-am.js\": \"d6b6\",\n\t\"./id\": \"5038\",\n\t\"./id.js\": \"5038\",\n\t\"./is\": \"0558\",\n\t\"./is.js\": \"0558\",\n\t\"./it\": \"6e98\",\n\t\"./it-ch\": \"6f12\",\n\t\"./it-ch.js\": \"6f12\",\n\t\"./it.js\": \"6e98\",\n\t\"./ja\": \"079e\",\n\t\"./ja.js\": \"079e\",\n\t\"./jv\": \"b540\",\n\t\"./jv.js\": \"b540\",\n\t\"./ka\": \"201b\",\n\t\"./ka.js\": \"201b\",\n\t\"./kk\": \"6d79\",\n\t\"./kk.js\": \"6d79\",\n\t\"./km\": \"e81d\",\n\t\"./km.js\": \"e81d\",\n\t\"./kn\": \"3e92\",\n\t\"./kn.js\": \"3e92\",\n\t\"./ko\": \"22f8\",\n\t\"./ko.js\": \"22f8\",\n\t\"./ku\": \"2421\",\n\t\"./ku.js\": \"2421\",\n\t\"./ky\": \"9609\",\n\t\"./ky.js\": \"9609\",\n\t\"./lb\": \"440c\",\n\t\"./lb.js\": \"440c\",\n\t\"./lo\": \"b29d\",\n\t\"./lo.js\": \"b29d\",\n\t\"./lt\": \"26f9\",\n\t\"./lt.js\": \"26f9\",\n\t\"./lv\": \"b97c\",\n\t\"./lv.js\": \"b97c\",\n\t\"./me\": \"293c\",\n\t\"./me.js\": \"293c\",\n\t\"./mi\": \"688b\",\n\t\"./mi.js\": \"688b\",\n\t\"./mk\": \"6909\",\n\t\"./mk.js\": \"6909\",\n\t\"./ml\": \"02fb\",\n\t\"./ml.js\": \"02fb\",\n\t\"./mn\": \"958b\",\n\t\"./mn.js\": \"958b\",\n\t\"./mr\": \"39bd\",\n\t\"./mr.js\": \"39bd\",\n\t\"./ms\": \"ebe4\",\n\t\"./ms-my\": \"6403\",\n\t\"./ms-my.js\": \"6403\",\n\t\"./ms.js\": \"ebe4\",\n\t\"./mt\": \"1b45\",\n\t\"./mt.js\": \"1b45\",\n\t\"./my\": \"8689\",\n\t\"./my.js\": \"8689\",\n\t\"./nb\": \"6ce3\",\n\t\"./nb.js\": \"6ce3\",\n\t\"./ne\": \"3a39\",\n\t\"./ne.js\": \"3a39\",\n\t\"./nl\": \"facd\",\n\t\"./nl-be\": \"db29\",\n\t\"./nl-be.js\": \"db29\",\n\t\"./nl.js\": \"facd\",\n\t\"./nn\": \"b84c\",\n\t\"./nn.js\": \"b84c\",\n\t\"./oc-lnc\": \"167b\",\n\t\"./oc-lnc.js\": \"167b\",\n\t\"./pa-in\": \"f3ff\",\n\t\"./pa-in.js\": \"f3ff\",\n\t\"./pl\": \"8d57\",\n\t\"./pl.js\": \"8d57\",\n\t\"./pt\": \"f260\",\n\t\"./pt-br\": \"d2d4\",\n\t\"./pt-br.js\": \"d2d4\",\n\t\"./pt.js\": \"f260\",\n\t\"./ro\": \"972c\",\n\t\"./ro.js\": \"972c\",\n\t\"./ru\": \"957c\",\n\t\"./ru.js\": \"957c\",\n\t\"./sd\": \"6784\",\n\t\"./sd.js\": \"6784\",\n\t\"./se\": \"ffff\",\n\t\"./se.js\": \"ffff\",\n\t\"./si\": \"eda5\",\n\t\"./si.js\": \"eda5\",\n\t\"./sk\": \"7be6\",\n\t\"./sk.js\": \"7be6\",\n\t\"./sl\": \"8155\",\n\t\"./sl.js\": \"8155\",\n\t\"./sq\": \"c8f3\",\n\t\"./sq.js\": \"c8f3\",\n\t\"./sr\": \"cf1e\",\n\t\"./sr-cyrl\": \"13e9\",\n\t\"./sr-cyrl.js\": \"13e9\",\n\t\"./sr.js\": \"cf1e\",\n\t\"./ss\": \"52bd\",\n\t\"./ss.js\": \"52bd\",\n\t\"./sv\": \"5fbd\",\n\t\"./sv.js\": \"5fbd\",\n\t\"./sw\": \"74dc\",\n\t\"./sw.js\": \"74dc\",\n\t\"./ta\": \"3de5\",\n\t\"./ta.js\": \"3de5\",\n\t\"./te\": \"5cbb\",\n\t\"./te.js\": \"5cbb\",\n\t\"./tet\": \"576c\",\n\t\"./tet.js\": \"576c\",\n\t\"./tg\": \"3b1b\",\n\t\"./tg.js\": \"3b1b\",\n\t\"./th\": \"10e8\",\n\t\"./th.js\": \"10e8\",\n\t\"./tk\": \"5aff\",\n\t\"./tk.js\": \"5aff\",\n\t\"./tl-ph\": \"0f38\",\n\t\"./tl-ph.js\": \"0f38\",\n\t\"./tlh\": \"cf75\",\n\t\"./tlh.js\": \"cf75\",\n\t\"./tr\": \"0e81\",\n\t\"./tr.js\": \"0e81\",\n\t\"./tzl\": \"cf51\",\n\t\"./tzl.js\": \"cf51\",\n\t\"./tzm\": \"c109\",\n\t\"./tzm-latn\": \"b53d\",\n\t\"./tzm-latn.js\": \"b53d\",\n\t\"./tzm.js\": \"c109\",\n\t\"./ug-cn\": \"6117\",\n\t\"./ug-cn.js\": \"6117\",\n\t\"./uk\": \"ada2\",\n\t\"./uk.js\": \"ada2\",\n\t\"./ur\": \"5294\",\n\t\"./ur.js\": \"5294\",\n\t\"./uz\": \"2e8c\",\n\t\"./uz-latn\": \"010e\",\n\t\"./uz-latn.js\": \"010e\",\n\t\"./uz.js\": \"2e8c\",\n\t\"./vi\": \"2921\",\n\t\"./vi.js\": \"2921\",\n\t\"./x-pseudo\": \"fd7e\",\n\t\"./x-pseudo.js\": \"fd7e\",\n\t\"./yo\": \"7f33\",\n\t\"./yo.js\": \"7f33\",\n\t\"./zh-cn\": \"5c3a\",\n\t\"./zh-cn.js\": \"5c3a\",\n\t\"./zh-hk\": \"49ab\",\n\t\"./zh-hk.js\": \"49ab\",\n\t\"./zh-mo\": \"3a6c\",\n\t\"./zh-mo.js\": \"3a6c\",\n\t\"./zh-tw\": \"90ea\",\n\t\"./zh-tw.js\": \"90ea\"\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = \"4678\";","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Manuals.vue?vue&type=style&index=0&id=7978ee33&lang=scss&scoped=true&\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RubricDetail.vue?vue&type=style&index=0&id=3cdcc51f&scoped=true&lang=css&\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PreLoader.vue?vue&type=style&index=0&id=1fd0cd9f&lang=scss&scoped=true&\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Login.vue?vue&type=style&index=0&lang=css&\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Contact.vue?vue&type=style&index=1&lang=css&\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{attrs:{\"id\":\"app\"}},[(_vm.isAuthenticated)?_c('div',[(!_vm.$route.meta.plainLayout && !_vm.$route.meta.isLaunchPage)?_c('div',[_c('div',[_c('header',{attrs:{\"id\":\"nav-wrapper\"}},[_c('main-nav',{on:{\"openContactDialog\":function($event){_vm.contactDialogVisible = true},\"openIdleDialog\":function($event){_vm.idleDialogVisible = true}}})],1),_c('div',{staticClass:\"full-width\",attrs:{\"id\":\"content-wrapper\"}},[_c('router-view')],1),_c('div',[(_vm.contactDialogVisible)?_c('contactVue',{attrs:{\"contact-dialog-visible\":_vm.contactDialogVisible},on:{\"update:contactDialogVisible\":function($event){_vm.contactDialogVisible=$event},\"update:contact-dialog-visible\":function($event){_vm.contactDialogVisible=$event},\"close\":function($event){_vm.contactDialogVisible = false}}}):_vm._e()],1)])]):(!_vm.$route.meta.plainLayout && _vm.$route.meta.isLaunchPage)?_c('div',[_c('Header'),(_vm.isLoading)?_c('PreLoader'):_vm._e(),_c('router-view'),_c('Footer')],1):_vm._e(),(_vm.$route.meta.plainLayout)?_c('div',[_c('router-view')],1):_vm._e()]):(!_vm.$route.meta.plainLayout && _vm.$route.meta.isLaunchPage)?_c('div',[_c('Header'),(_vm.isLoading)?_c('PreLoader'):_vm._e(),_c('router-view'),_c('Footer')],1):((_vm.$route.name == 'No Profile' || _vm.$route.name == '404' || _vm.$route.name == 'CanvasRedirect' ||\n _vm.$route.name != 'DemoSignIn' || _vm.$route.name != 'DemoSignUp' || _vm.$route.name != 'ConfirmEmail')\n && _vm.$route.meta.plainLayout)?_c('div',[_c('router-view')],1):_c('div',[_vm._m(0),_c('div',[(_vm.contactDialogVisible)?_c('contactVue',{attrs:{\"contact-dialog-visible\":_vm.contactDialogVisible},on:{\"update:contactDialogVisible\":function($event){_vm.contactDialogVisible=$event},\"update:contact-dialog-visible\":function($event){_vm.contactDialogVisible=$event},\"close\":function($event){_vm.contactDialogVisible = false}}}):_vm._e()],1)])])}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"page h-screen flex w-full\"},[_c('div',{staticClass:\"content sm-c md-c lg-c xl-c mx-auto self-center\",staticStyle:{}},[_c('div'),_c('div',{staticStyle:{\"text-align\":\"center\",\"margin-top\":\"20px\"}})])])}]\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('header',{class:['headroom navbar-style-two', {'is-sticky': _vm.isSticky}],staticStyle:{\"-webkit-box-shadow\":\"0 2px 28px 0 rgba(0, 0, 0, 0.06)\",\"box-shadow\":\"0 2px 28px 0 rgba(0, 0, 0, 0.06)\"},attrs:{\"id\":\"header\"}},[_c('div',{staticClass:\"startp-nav\"},[_c('div',{staticClass:\"container\"},[_c('nav',{staticClass:\"navbar navbar-expand-md navbar-light\"},[_c('router-link',{staticClass:\"navbar-brand\",attrs:{\"to\":\"/landing\"}},[_c('img',{staticStyle:{\"width\":\"200px\"},attrs:{\"src\":require(\"@/assets/img/logo_transparent.png\"),\"alt\":\"logo\"}})]),_c('b-navbar-toggle',{attrs:{\"target\":\"navbarSupportedContent\"}}),_c('b-collapse',{staticClass:\"collapse navbar-collapse mean-menu\",attrs:{\"id\":\"navbarSupportedContent\",\"is-nav\":\"\"}},[(_vm.$route.meta.isHomePage)?_c('ul',{staticClass:\"navbar-nav nav m-auto\",staticStyle:{\"padding-left\":\"60px\"}},[_c('li',{staticClass:\"nav-item\",staticStyle:{\"padding\":\"15px 15px\"}},[_c('router-link',{staticClass:\"nav-link\",staticStyle:{\"font-weight\":\"bold\"},attrs:{\"to\":\"/benefits\"}},[_vm._v(\"Benefits\")])],1),_c('li',{staticClass:\"nav-item\",staticStyle:{\"padding\":\"15px 15px\"}},[_c('router-link',{staticClass:\"nav-link\",staticStyle:{\"font-weight\":\"bold\"},attrs:{\"to\":\"/research\"}},[_vm._v(\"Research\")])],1),_c('li',{staticClass:\"nav-item\",staticStyle:{\"padding\":\"15px 15px\"}},[_c('router-link',{staticClass:\"nav-link\",staticStyle:{\"font-weight\":\"bold\"},attrs:{\"to\":\"/pedagogy\"}},[_vm._v(\"Pedagogy\")])],1),_c('li',{staticClass:\"nav-item\",staticStyle:{\"padding\":\"15px 15px\"}},[_c('router-link',{staticClass:\"nav-link\",staticStyle:{\"font-weight\":\"bold\"},attrs:{\"to\":\"/manuals\"}},[_vm._v(\"Manuals\")])],1),_c('li',{staticClass:\"nav-item\",staticStyle:{\"padding\":\"15px 15px\"}},[_c('router-link',{staticClass:\"nav-link\",staticStyle:{\"font-weight\":\"bold\"},attrs:{\"to\":\"/faqs\"}},[_vm._v(\"FAQs\")])],1),_c('li',{staticClass:\"nav-item\",staticStyle:{\"padding\":\"15px 15px\"}},[_c('router-link',{staticClass:\"nav-link\",staticStyle:{\"font-weight\":\"bold\"},attrs:{\"to\":\"/contact\"}},[_vm._v(\"Contact\")])],1),_c('li',{staticClass:\"nav-item\",staticStyle:{\"padding\":\"15px 15px\"}},[_c('router-link',{staticClass:\"nav-link\",staticStyle:{\"font-weight\":\"bold\"},attrs:{\"to\":\"/demo/signin\"}},[_vm._v(\"Demo\")])],1)]):_c('ul',{staticClass:\"navbar-nav nav m-auto\"},[_c('li',{staticClass:\"nav-item\"},[_c('router-link',{staticClass:\"nav-link\",staticStyle:{\"font-weight\":\"bold\"},attrs:{\"to\":\"/benefits\"}},[_vm._v(\"Benefits\")])],1),_c('li',{staticClass:\"nav-item\"},[_c('router-link',{staticClass:\"nav-link\",staticStyle:{\"font-weight\":\"bold\"},attrs:{\"to\":\"/research\"}},[_vm._v(\"Research\")])],1),_c('li',{staticClass:\"nav-item\"},[_c('router-link',{staticClass:\"nav-link\",staticStyle:{\"font-weight\":\"bold\"},attrs:{\"to\":\"/pedagogy\"}},[_vm._v(\"Pedagogy\")])],1),_c('li',{staticClass:\"nav-item\"},[_c('router-link',{staticClass:\"nav-link\",staticStyle:{\"font-weight\":\"bold\"},attrs:{\"to\":\"/manuals\"}},[_vm._v(\"Manuals\")])],1),_c('li',{staticClass:\"nav-item\"},[_c('router-link',{staticClass:\"nav-link\",staticStyle:{\"font-weight\":\"bold\"},attrs:{\"to\":\"/faqs\"}},[_vm._v(\"FAQs\")])],1),_c('li',{staticClass:\"nav-item\"},[_c('router-link',{staticClass:\"nav-link\",staticStyle:{\"font-weight\":\"bold\"},attrs:{\"to\":\"/contact\"}},[_vm._v(\"Contact\")])],1),(_vm.$route.meta.isHomePage)?_c('li',{staticClass:\"nav-item\"},[_c('router-link',{staticClass:\"nav-link\",staticStyle:{\"font-weight\":\"bold\"},attrs:{\"to\":\"/demo/signin\"}},[_vm._v(\"Demo\")])],1):_vm._e()])]),(_vm.screenWidth >= 1200 && !_vm.$route.meta.isHomePage)?_c('div',{staticClass:\"others-option\"},[_c('a',{staticClass:\"btn btn-light\",attrs:{\"href\":\"/demo/signin\"}},[_vm._v(\"Demo\")]),_c('a',{staticClass:\"btn btn-primary\",staticStyle:{\"background\":\"rgb(0, 103, 71)\"},attrs:{\"href\":\"/login\"}},[_vm._v(\"Sign In\")])]):_vm._e(),(_vm.screenWidth < 1200 && !_vm.$route.meta.isHomePage)?_c('div',{staticClass:\"others-option\",staticStyle:{\"margin-left\":\"30px\"}},[_c('a',{staticClass:\"btn btn-light\",staticStyle:{\"padding\":\"13px\"},attrs:{\"href\":\"/demo/signup\"}},[_vm._v(\"Demo\")]),_c('a',{staticClass:\"btn btn-primary\",staticStyle:{\"background\":\"rgb(0, 103, 71)\",\"padding\":\"15px\"},attrs:{\"href\":\"/login\"}},[_vm._v(\"Sign In\")])]):_vm._e()],1)]),_c('div',[(_vm.contactDialogVisible)?_c('contactVue',{attrs:{\"contact-dialog-visible\":_vm.contactDialogVisible},on:{\"update:contactDialogVisible\":function($event){_vm.contactDialogVisible=$event},\"update:contact-dialog-visible\":function($event){_vm.contactDialogVisible=$event},\"close\":function($event){_vm.contactDialogVisible = false}}}):_vm._e()],1)])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n <!-- Start Navbar Area -->\r\n <header\r\n id=\"header\"\r\n :class=\"['headroom navbar-style-two', {'is-sticky': isSticky}]\"\r\n style=\"-webkit-box-shadow: 0 2px 28px 0 rgba(0, 0, 0, 0.06);\r\n box-shadow: 0 2px 28px 0 rgba(0, 0, 0, 0.06);\"\r\n >\r\n <div class=\"startp-nav\">\r\n <div class=\"container\">\r\n <nav class=\"navbar navbar-expand-md navbar-light\">\r\n <router-link class=\"navbar-brand\" to=\"/landing\">\r\n <img src=\"@/assets/img/logo_transparent.png\" alt=\"logo\" style=\"width: 200px;\">\r\n </router-link>\r\n\r\n <b-navbar-toggle target=\"navbarSupportedContent\" />\r\n\r\n <b-collapse id=\"navbarSupportedContent\" class=\"collapse navbar-collapse mean-menu\" is-nav>\r\n <ul v-if=\"$route.meta.isHomePage\" class=\"navbar-nav nav m-auto\" style=\"padding-left: 60px;\">\r\n <li class=\"nav-item\" style=\"padding: 15px 15px\">\r\n <router-link to=\"/benefits\" class=\"nav-link\" style=\"font-weight: bold;\">Benefits</router-link>\r\n </li>\r\n <li class=\"nav-item\" style=\"padding: 15px 15px\">\r\n <router-link to=\"/research\" class=\"nav-link\" style=\"font-weight: bold;\">Research</router-link>\r\n </li>\r\n <li class=\"nav-item\" style=\"padding: 15px 15px\">\r\n <router-link to=\"/pedagogy\" class=\"nav-link\" style=\"font-weight: bold;\">Pedagogy</router-link>\r\n </li>\r\n <li class=\"nav-item\" style=\"padding: 15px 15px\">\r\n <router-link to=\"/manuals\" class=\"nav-link\" style=\"font-weight: bold;\">Manuals</router-link>\r\n </li>\r\n <li class=\"nav-item\" style=\"padding: 15px 15px\">\r\n <router-link to=\"/faqs\" class=\"nav-link\" style=\"font-weight: bold;\">FAQs</router-link>\r\n </li>\r\n <li class=\"nav-item\" style=\"padding: 15px 15px\">\r\n <router-link to=\"/contact\" class=\"nav-link\" style=\"font-weight: bold;\">Contact</router-link>\r\n </li>\r\n <li class=\"nav-item\" style=\"padding: 15px 15px\">\r\n <router-link to=\"/demo/signin\" class=\"nav-link\" style=\"font-weight: bold;\">Demo</router-link>\r\n </li>\r\n </ul>\r\n\r\n <ul v-else class=\"navbar-nav nav m-auto\">\r\n <li class=\"nav-item\">\r\n <router-link to=\"/benefits\" class=\"nav-link\" style=\"font-weight: bold;\">Benefits</router-link>\r\n </li>\r\n <li class=\"nav-item\">\r\n <router-link to=\"/research\" class=\"nav-link\" style=\"font-weight: bold;\">Research</router-link>\r\n </li>\r\n <li class=\"nav-item\">\r\n <router-link to=\"/pedagogy\" class=\"nav-link\" style=\"font-weight: bold;\">Pedagogy</router-link>\r\n </li>\r\n <li class=\"nav-item\">\r\n <router-link to=\"/manuals\" class=\"nav-link\" style=\"font-weight: bold;\">Manuals</router-link>\r\n </li>\r\n <li class=\"nav-item\">\r\n <router-link to=\"/faqs\" class=\"nav-link\" style=\"font-weight: bold;\">FAQs</router-link>\r\n </li>\r\n <li class=\"nav-item\">\r\n <router-link to=\"/contact\" class=\"nav-link\" style=\"font-weight: bold;\">Contact</router-link>\r\n </li>\r\n <li v-if=\"$route.meta.isHomePage\" class=\"nav-item\">\r\n <router-link to=\"/demo/signin\" class=\"nav-link\" style=\"font-weight: bold;\">Demo</router-link>\r\n </li>\r\n </ul>\r\n\r\n </b-collapse>\r\n\r\n <div v-if=\"screenWidth >= 1200 && !$route.meta.isHomePage\" class=\"others-option\">\r\n <a href=\"/demo/signin\" class=\"btn btn-light\">Demo</a>\r\n <a href=\"/login\" class=\"btn btn-primary\" style=\"background: rgb(0, 103, 71)\">Sign In</a>\r\n </div>\r\n\r\n <div v-if=\"screenWidth < 1200 && !$route.meta.isHomePage\" class=\"others-option\" style=\"margin-left: 30px;\">\r\n <a href=\"/demo/signup\" class=\"btn btn-light\" style=\"padding: 13px\">Demo</a>\r\n <a href=\"/login\" class=\"btn btn-primary\" style=\"background: rgb(0, 103, 71); padding: 15px\">Sign In</a>\r\n </div>\r\n </nav>\r\n </div>\r\n <div>\r\n <contactVue v-if=\"contactDialogVisible\" :contact-dialog-visible.sync=\"contactDialogVisible\" @close=\"contactDialogVisible = false\" />\r\n </div>\r\n </div>\r\n </header>\r\n <!-- End Navbar Area -->\r\n</template>\r\n\r\n<script>\r\n\r\nexport default {\r\n\tname: 'HeaderTwo',\r\n\tdata() {\r\n\t\treturn {\r\n\t\t\tisSticky: false,\r\n\t\t\tcontactDialogVisible: false,\r\n\t\t\tscreenWidth: window.innerWidth\r\n\t\t}\r\n\t},\r\n\tmounted() {\r\n\t\tconst that = this\r\n\t\twindow.addEventListener('scroll', () => {\r\n\t\t\tconst scrollPos = window.scrollY\r\n\t\t\t// eslint-disable-next-line no-console\r\n\t\t\tif (scrollPos >= 300) {\r\n\t\t\t\tthat.isSticky = true\r\n\t\t\t} else {\r\n\t\t\t\tthat.isSticky = false\r\n\t\t\t}\r\n\t\t})\r\n\t}\r\n}\r\n</script>\r\n\r\n<style lang=\"scss\" scoped>\r\n@import '../../assets/style/custom.scss';\r\n</style>\r\n\r\n<style scoped>\r\n.startp-nav nav .others-option .btn.btn-light{\r\n border: 2px dashed rgb(0, 103, 71);\r\n}\r\n.startp-nav nav .others-option .btn.btn-light:hover, .startp-nav nav .others-option .btn.btn-light:focus {\r\n color: white;\r\n border-color: rgb(0, 103, 71);\r\n}\r\n\r\n.startp-nav nav .others-option .btn.btn-light::after, .startp-nav nav .others-option .btn.btn-light::before {\r\n color: white;\r\n background: rgb(0, 103, 71);\r\n}\r\n\r\n.startp-nav nav .others-option .btn.btn-primary::after, .startp-nav nav .others-option .btn.btn-primary::before {\r\n background: rgb(0, 103, 71);\r\n -webkit-box-shadow: 0 13px 27px 0 rgba(0, 103, 71, 0.25);\r\n box-shadow: 0 13px 27px 0 rgba(0, 103, 71, 0.25);\r\n}\r\n\r\n.startp-nav nav .others-option .btn.btn-primary {\r\n -webkit-box-shadow: 0 13px 27px 0 rgba(0, 103, 71, 0.25);\r\n box-shadow: 0 13px 27px 0 rgba(0, 103, 71, 0.25);\r\n}\r\n\r\n</style>\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Header.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Header.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Header.vue?vue&type=template&id=e284b3ba&scoped=true&\"\nimport script from \"./Header.vue?vue&type=script&lang=js&\"\nexport * from \"./Header.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Header.vue?vue&type=style&index=0&id=e284b3ba&lang=scss&scoped=true&\"\nimport style1 from \"./Header.vue?vue&type=style&index=1&id=e284b3ba&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"e284b3ba\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('footer',{staticClass:\"footer-area bg-f7fafd\",style:('padding-top: 60px; background-color: ' + _vm.$route.meta.footerBackground)},[_c('div',{staticClass:\"container\"},[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-lg-4 col-md-6 col-sm-6\"},[_c('div',{staticClass:\"single-footer-widget\"},[_c('div',{staticClass:\"logo\"},[(_vm.$route.meta.footerBackground == 'white')?_c('a',{attrs:{\"href\":\"/\"}},[_c('img',{attrs:{\"src\":require(\"@/assets/img/logo_transparent.png\"),\"alt\":\"logo\",\"width\":\"200px\"}})]):_c('a',{attrs:{\"href\":\"/\"}},[_c('img',{attrs:{\"src\":require(\"@/assets/img/white-transparent-logo.png\"),\"alt\":\"logo\",\"width\":\"210px\"}})])]),(_vm.$route.meta.footerBackground == 'white')?_c('p',[_vm._v(\"A digital, instructional tool that enhances writing pedagogy by providing a robust formative feedback platform.\")]):_c('p',{staticStyle:{\"color\":\"white\"}},[_vm._v(\"A digital, instructional tool that enhances writing pedagogy by providing a robust formative feedback platform.\")])])]),_c('div',{staticClass:\"col-lg-2 col-md-6 col-sm-6\"},[_c('div',{staticClass:\"single-footer-widget pl-5\",staticStyle:{\"margin-top\":\"20px\"}},[(_vm.$route.meta.footerBackground == 'white')?_c('h3',{staticStyle:{\"font-weight\":\"bold\",\"margin-bottom\":\"40px\"}},[_vm._v(\"Company\")]):_c('h3',{staticStyle:{\"font-weight\":\"bold\",\"margin-bottom\":\"40px\",\"color\":\"white\"}},[_vm._v(\"Company\")]),_c('ul',{staticClass:\"list\"},[_c('li',[(_vm.$route.meta.footerBackground == 'white')?_c('a',{attrs:{\"href\":\"#\"}},[_vm._v(\"Benefits\")]):_c('a',{staticStyle:{\"color\":\"white\"},attrs:{\"href\":\"#\"}},[_vm._v(\"Benefits\")])]),_c('li',[(_vm.$route.meta.footerBackground == 'white')?_c('a',{attrs:{\"href\":\"#\"}},[_vm._v(\"Research\")]):_c('a',{staticStyle:{\"color\":\"white\"},attrs:{\"href\":\"#\"}},[_vm._v(\"Research\")])]),_c('li',[(_vm.$route.meta.footerBackground == 'white')?_c('a',{attrs:{\"href\":\"#\"}},[_vm._v(\"Pedagogy\")]):_c('a',{staticStyle:{\"color\":\"white\"},attrs:{\"href\":\"#\"}},[_vm._v(\"Pedagogy\")])])])])]),_c('div',{staticClass:\"col-lg-2 col-md-6 col-sm-6\",staticStyle:{\"padding-left\":\"40px\"}},[_c('div',{staticClass:\"single-footer-widget\",staticStyle:{\"margin-top\":\"20px\"}},[(_vm.$route.meta.footerBackground == 'white')?_c('h3',{staticStyle:{\"font-weight\":\"bold\",\"margin-bottom\":\"40px\"}},[_vm._v(\"Support\")]):_c('h3',{staticStyle:{\"font-weight\":\"bold\",\"margin-bottom\":\"40px\",\"color\":\"white\"}},[_vm._v(\"Support\")]),_c('ul',{staticClass:\"list\"},[_c('li',[(_vm.$route.meta.footerBackground == 'white')?_c('a',{attrs:{\"href\":\"#\"}},[_vm._v(\"Manuals\")]):_c('a',{staticStyle:{\"color\":\"white\"},attrs:{\"href\":\"#\"}},[_vm._v(\"Manuals\")])]),_c('li',[(_vm.$route.meta.footerBackground == 'white')?_c('a',{attrs:{\"href\":\"#\"}},[_vm._v(\"FAQs\")]):_c('a',{staticStyle:{\"color\":\"white\"},attrs:{\"href\":\"#\"}},[_vm._v(\"FAQs\")])]),_c('li',[(_vm.$route.meta.footerBackground == 'white')?_c('a',{attrs:{\"href\":\"#\"}},[_vm._v(\"Contact\")]):_c('a',{staticStyle:{\"color\":\"white\"},attrs:{\"href\":\"#\"}},[_vm._v(\"Contact\")])])])])]),_c('div',{staticClass:\"col-lg-4 col-md-6 col-sm-6\"},[_c('div',{staticClass:\"single-footer-widget\",staticStyle:{\"margin-top\":\"20px\"}},[(_vm.$route.meta.footerBackground == 'white')?_c('h3',{staticStyle:{\"font-weight\":\"bold\",\"margin-bottom\":\"40px\"}},[_vm._v(\"Address\")]):_c('h3',{staticStyle:{\"font-weight\":\"bold\",\"margin-bottom\":\"40px\",\"color\":\"white\"}},[_vm._v(\"Address\")]),_c('ul',{staticClass:\"footer-contact-info\"},[(_vm.$route.meta.footerBackground == 'white')?_c('li',{staticStyle:{\"padding-left\":\"0px\"}},[_c('i',{staticClass:\"fas fa-map-marker-alt\",staticStyle:{\"font-size\":\"20px\",\"position\":\"inherit\",\"margin-right\":\"8px\",\"top\":\"0px\"}}),_vm._v(\" 4202 E Fowler Ave, Tampa, FL 33620\")]):_c('li',{staticStyle:{\"padding-left\":\"0px\",\"color\":\"white\"}},[_c('i',{staticClass:\"fas fa-map-marker-alt\",staticStyle:{\"font-size\":\"20px\",\"position\":\"inherit\",\"margin-right\":\"8px\",\"top\":\"0px\"}}),_vm._v(\" 4202 E Fowler Ave, Tampa, FL 33620\")]),(_vm.$route.meta.footerBackground == 'white')?_c('li',{staticStyle:{\"padding-left\":\"0px\"}},[_c('i',{staticClass:\"far fa-envelope\",staticStyle:{\"font-size\":\"20px\",\"position\":\"inherit\",\"margin-right\":\"10px\",\"top\":\"0px\"}}),_vm._v(\" Email: \"),_c('a',{attrs:{\"href\":\"#\"}},[_vm._v(\"support@usfwrites.usf.edu\")])]):_c('li',{staticStyle:{\"padding-left\":\"0px\",\"color\":\"white\"}},[_c('i',{staticClass:\"far fa-envelope\",staticStyle:{\"font-size\":\"20px\",\"position\":\"inherit\",\"margin-right\":\"10px\",\"top\":\"0px\"}}),_vm._v(\" Email: \"),_c('a',{staticStyle:{\"color\":\"white\"},attrs:{\"href\":\"#\"}},[_vm._v(\"support@usfwrites.usf.edu\")])]),(_vm.$route.meta.footerBackground == 'white')?_c('li',{staticStyle:{\"padding-left\":\"0px\"}},[_c('i',{staticClass:\"fas fa-phone\",staticStyle:{\"font-size\":\"20px\",\"position\":\"inherit\",\"margin-right\":\"10px\",\"top\":\"0px\"}}),_vm._v(\" Phone: \"),_c('a',{attrs:{\"href\":\"#\"}},[_vm._v(\"(813) 974-2011\")])]):_c('li',{staticStyle:{\"padding-left\":\"0px\",\"color\":\"white\"}},[_c('i',{staticClass:\"fas fa-phone\",staticStyle:{\"font-size\":\"20px\",\"position\":\"inherit\",\"margin-right\":\"10px\",\"top\":\"0px\"}}),_vm._v(\" Phone: \"),_c('a',{staticStyle:{\"color\":\"white\"},attrs:{\"href\":\"#\"}},[_vm._v(\"(813) 974-2011\")])])])])]),_c('div',{staticClass:\"col-lg-12 col-md-12\"},[_c('div',{staticClass:\"copyright-area\",staticStyle:{\"margin-top\":\"50px\"}},[(_vm.$route.meta.footerBackground == 'white')?_c('p',[_vm._v(\"Copyright ©2020 USF Writes. All Rights Reserved\")]):_c('p',{staticStyle:{\"color\":\"white\"}},[_vm._v(\"Copyright ©2020 USF Writes. All Rights Reserved\")])])])])]),_c('back-to-top',{attrs:{\"bottom\":\"50px\",\"right\":\"50px\"}},[_c('div',{staticClass:\"go-top\",staticStyle:{\"background\":\"rgb(0, 103, 71)\"}},[_c('feather',{attrs:{\"type\":\"arrow-up\"}})],1)])],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n <!-- Start Footer Area -->\r\n <footer class=\"footer-area bg-f7fafd\" :style=\"'padding-top: 60px; background-color: ' + $route.meta.footerBackground\">\r\n <div class=\"container\">\r\n <div class=\"row\">\r\n <div class=\"col-lg-4 col-md-6 col-sm-6\">\r\n <div class=\"single-footer-widget\">\r\n <div class=\"logo\">\r\n <a v-if=\"$route.meta.footerBackground == 'white'\" href=\"/\">\r\n <img src=\"@/assets/img/logo_transparent.png\" alt=\"logo\" width=\"200px\">\r\n </a>\r\n <a v-else href=\"/\">\r\n <img src=\"@/assets/img/white-transparent-logo.png\" alt=\"logo\" width=\"210px\">\r\n </a>\r\n </div>\r\n <p v-if=\"$route.meta.footerBackground == 'white'\">A digital, instructional tool that enhances writing pedagogy by providing a robust formative feedback platform.</p>\r\n <p v-else style=\"color: white\">A digital, instructional tool that enhances writing pedagogy by providing a robust formative feedback platform.</p>\r\n\r\n </div>\r\n </div>\r\n\r\n <div class=\"col-lg-2 col-md-6 col-sm-6\">\r\n <div class=\"single-footer-widget pl-5\" style=\"margin-top: 20px;\">\r\n <h3 v-if=\"$route.meta.footerBackground == 'white'\" style=\"font-weight: bold; margin-bottom: 40px;\">Company</h3>\r\n <h3 v-else style=\"font-weight: bold; margin-bottom: 40px; color: white;\">Company</h3>\r\n <ul class=\"list\">\r\n <li>\r\n <a v-if=\"$route.meta.footerBackground == 'white'\" href=\"#\">Benefits</a>\r\n <a v-else style=\"color: white;\" href=\"#\">Benefits</a>\r\n </li>\r\n <li>\r\n <a v-if=\"$route.meta.footerBackground == 'white'\" href=\"#\">Research</a>\r\n <a v-else style=\"color: white;\" href=\"#\">Research</a>\r\n </li>\r\n <li>\r\n <a v-if=\"$route.meta.footerBackground == 'white'\" href=\"#\">Pedagogy</a>\r\n <a v-else style=\"color: white;\" href=\"#\">Pedagogy</a>\r\n </li>\r\n </ul>\r\n </div>\r\n </div>\r\n\r\n <div class=\"col-lg-2 col-md-6 col-sm-6\" style=\"padding-left: 40px;\">\r\n <div class=\"single-footer-widget\" style=\"margin-top: 20px;\">\r\n <h3 v-if=\"$route.meta.footerBackground == 'white'\" style=\"font-weight: bold; margin-bottom: 40px;\">Support</h3>\r\n <h3 v-else style=\"font-weight: bold; margin-bottom: 40px; color: white;\">Support</h3>\r\n <ul class=\"list\">\r\n <li>\r\n <a v-if=\"$route.meta.footerBackground == 'white'\" href=\"#\">Manuals</a>\r\n <a v-else style=\"color: white;\" href=\"#\">Manuals</a>\r\n </li>\r\n <li>\r\n <a v-if=\"$route.meta.footerBackground == 'white'\" href=\"#\">FAQs</a>\r\n <a v-else style=\"color: white;\" href=\"#\">FAQs</a>\r\n </li>\r\n <li>\r\n <a v-if=\"$route.meta.footerBackground == 'white'\" href=\"#\">Contact</a>\r\n <a v-else style=\"color: white;\" href=\"#\">Contact</a>\r\n </li>\r\n </ul>\r\n </div>\r\n </div>\r\n\r\n <div class=\"col-lg-4 col-md-6 col-sm-6\">\r\n <div class=\"single-footer-widget\" style=\"margin-top: 20px;\">\r\n <h3 v-if=\"$route.meta.footerBackground == 'white'\" style=\"font-weight: bold; margin-bottom: 40px;\">Address</h3>\r\n <h3 v-else style=\"font-weight: bold; margin-bottom: 40px; color: white;\">Address</h3>\r\n <ul class=\"footer-contact-info\">\r\n <li v-if=\"$route.meta.footerBackground == 'white'\" style=\"padding-left: 0px;\"><i class=\"fas fa-map-marker-alt\" style=\"font-size: 20px; position: inherit; margin-right: 8px; top: 0px;\" /> 4202 E Fowler Ave, Tampa, FL 33620</li>\r\n <li v-else style=\"padding-left: 0px; color: white;\"><i class=\"fas fa-map-marker-alt\" style=\"font-size: 20px; position: inherit; margin-right: 8px; top: 0px;\" /> 4202 E Fowler Ave, Tampa, FL 33620</li>\r\n\r\n <li v-if=\"$route.meta.footerBackground == 'white'\" style=\"padding-left: 0px;\"><i class=\"far fa-envelope\" style=\"font-size: 20px; position: inherit; margin-right: 10px; top: 0px;\" /> Email: <a href=\"#\">support@usfwrites.usf.edu</a></li>\r\n <li v-else style=\"padding-left: 0px; color: white;\"><i class=\"far fa-envelope\" style=\"font-size: 20px; position: inherit; margin-right: 10px; top: 0px;\" /> Email: <a href=\"#\" style=\"color: white;\">support@usfwrites.usf.edu</a></li>\r\n\r\n <li v-if=\"$route.meta.footerBackground == 'white'\" style=\"padding-left: 0px;\"><i class=\"fas fa-phone\" style=\"font-size: 20px; position: inherit; margin-right: 10px; top: 0px;\" /> Phone: <a href=\"#\">(813) 974-2011</a></li>\r\n <li v-else style=\"padding-left: 0px; color: white;\"><i class=\"fas fa-phone\" style=\"font-size: 20px; position: inherit; margin-right: 10px; top: 0px;\" /> Phone: <a href=\"#\" style=\"color: white;\">(813) 974-2011</a></li>\r\n\r\n </ul>\r\n </div>\r\n </div>\r\n\r\n <div class=\"col-lg-12 col-md-12\">\r\n <div class=\"copyright-area\" style=\"margin-top: 50px;\">\r\n <p v-if=\"$route.meta.footerBackground == 'white'\">Copyright ©2020 USF Writes. All Rights Reserved</p>\r\n <p v-else style=\"color: white;\">Copyright ©2020 USF Writes. All Rights Reserved</p>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- <img src=\"../../assets/img/map.png\" class=\"map\" alt=\"map\"> -->\r\n <!-- <div class=\"shape1\"><img src=\"../../assets/img/shape1.png\" alt=\"shape\"></div>\r\n <div class=\"shape8 rotateme\"><img src=\"../../assets/img/shape2.svg\" alt=\"shape\"></div> -->\r\n <!-- <div class=\"go-top\"><feather type=\"arrow-up\"></feather></div> -->\r\n\r\n <back-to-top bottom=\"50px\" right=\"50px\">\r\n <div class=\"go-top\" style=\"background: rgb(0, 103, 71)\"><feather type=\"arrow-up\" /></div>\r\n </back-to-top>\r\n </footer>\r\n <!-- End Footer Area -->\r\n</template>\r\n\r\n<script>\r\nimport BackToTop from 'vue-backtotop'\r\nexport default {\r\n\tname: 'Footer',\r\n\tcomponents: { BackToTop },\r\n\tdata() {\r\n\t\treturn {\r\n\t\t\tcurrentUrl: false\r\n\t\t}\r\n\t},\r\n\tmounted() {\r\n\t\tthis.currentUrl = window.location.pathname\r\n\t}\r\n}\r\n</script>\r\n\r\n<style lang=\"scss\" scoped>\r\n@import '../../assets/style/custom.scss';\r\n</style>\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Footer.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Footer.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Footer.vue?vue&type=template&id=7413c112&scoped=true&\"\nimport script from \"./Footer.vue?vue&type=script&lang=js&\"\nexport * from \"./Footer.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Footer.vue?vue&type=style&index=0&id=7413c112&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"7413c112\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _vm._m(0)}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"preloader\"},[_c('div',{staticClass:\"spinner\"})])}]\n\nexport { render, staticRenderFns }","<template>\r\n <!-- Start Preloader Area -->\r\n <div class=\"preloader\">\r\n <div class=\"spinner\" />\r\n </div>\r\n <!-- End Preloader Area -->\r\n</template>\r\n\r\n<script>\r\nexport default {\r\n\tname: 'PreLoader'\r\n}\r\n</script>\r\n\r\n<style lang=\"scss\" scoped>\r\n@import '../../assets/style/custom.scss';\r\n</style>\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PreLoader.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PreLoader.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./PreLoader.vue?vue&type=template&id=1fd0cd9f&scoped=true&\"\nimport script from \"./PreLoader.vue?vue&type=script&lang=js&\"\nexport * from \"./PreLoader.vue?vue&type=script&lang=js&\"\nimport style0 from \"./PreLoader.vue?vue&type=style&index=0&id=1fd0cd9f&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"1fd0cd9f\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"full-width\",attrs:{\"id\":\"main-nav\"}},[_c('div',[(_vm.orgCode != 'DEMO')?_c('img',{staticClass:\"full-width\",staticStyle:{\"height\":\"60px\",\"width\":\"202px\",\"margin-left\":\"4px\",\"cursor\":\"pointer\",\"margin-top\":\"2px\"},attrs:{\"id\":\"logo\",\"title\":\"Back to All Courses page\",\"src\":require(\"@/assets/new_logo_1.png\")},on:{\"click\":function($event){return _vm.gotoCourses()}}}):_vm._e(),(_vm.orgCode != 'DEMO')?_c('img',{staticStyle:{\"display\":\"none\",\"cursor\":\"pointer\"},attrs:{\"id\":\"logo1\",\"title\":\"Back to All Courses page\",\"src\":require(\"@/assets/new_logo_1.png\")},on:{\"click\":function($event){return _vm.gotoCourses()}}}):_vm._e(),(_vm.orgCode != 'DEMO')?_c('img',{staticStyle:{\"display\":\"none\",\"cursor\":\"pointer\"},attrs:{\"id\":\"logo2\",\"title\":\"Back to All Courses page\",\"src\":require(\"@/assets/new_logo_2.png\")},on:{\"click\":function($event){return _vm.gotoCourses()}}}):_vm._e(),(_vm.orgCode == 'DEMO')?_c('img',{staticClass:\"full-width\",staticStyle:{\"height\":\"65px\",\"width\":\"200px\",\"margin-left\":\"4px\",\"cursor\":\"pointer\",\"margin-top\":\"2px\"},attrs:{\"id\":\"logo\",\"title\":\"Back to All Courses page\",\"src\":require(\"@/assets/new_demo_logo_1.png\")},on:{\"click\":function($event){return _vm.gotoCourses()}}}):_vm._e(),(_vm.orgCode == 'DEMO')?_c('img',{staticStyle:{\"display\":\"none\",\"cursor\":\"pointer\"},attrs:{\"id\":\"logo1\",\"title\":\"Back to All Courses page\",\"src\":require(\"@/assets/new_demo_logo_1.png\")},on:{\"click\":function($event){return _vm.gotoCourses()}}}):_vm._e(),(_vm.orgCode == 'DEMO')?_c('img',{staticStyle:{\"display\":\"none\",\"cursor\":\"pointer\"},attrs:{\"id\":\"logo2\",\"title\":\"Back to All Courses page\",\"src\":require(\"@/assets/new_demo_logo_2.png\")},on:{\"click\":function($event){return _vm.gotoCourses()}}}):_vm._e(),_c('el-menu',{staticClass:\"el-menu-vertical-demo\",staticStyle:{\"width\":\"auto\",\"border-right\":\"none\"},attrs:{\"default-active\":\"2\",\"collapse\":true},on:{\"open\":_vm.handleOpen,\"close\":_vm.handleClose}},[_c('el-submenu',{staticStyle:{\"text-align\":\"center\",\"margin-bottom\":\"8px\"},attrs:{\"index\":\"1\"}},[_c('template',{slot:\"title\"},[_c('i',{staticClass:\"far fa-user nav-icon full-width\"}),(!_vm.isMenuCollapse)?_c('span',[(_vm.isViewingAs)?_c('span',[_vm._v(\"View as \"+_vm._s(_vm.firstName))]):_c('span',[_vm._v(\"Hi, \"+_vm._s(_vm.firstName))])]):_vm._e()]),((_vm.isMenuCollapse || _vm.isViewingAs))?_c('el-menu-item',{attrs:{\"index\":\"1-1\"}},[_c('span',[(_vm.isViewingAs)?_c('span',[_vm._v(\"View as \"+_vm._s(_vm.lastName)+\", \"+_vm._s(_vm.firstName))]):_c('span',[_vm._v(\"Hi, \"+_vm._s(_vm.firstName))])])]):_vm._e(),(_vm.isViewingAs)?_c('el-menu-item',{attrs:{\"index\":\"1-2\"}},[_c('span',[_vm._v(\"\\n\\t\\t\\t\\t\\t\\t\\t\"+_vm._s(_vm.userName)+\"\\n\\t\\t\\t\\t\\t\\t\")])]):_vm._e(),(!_vm.isViewingAs)?_c('el-menu-item',{attrs:{\"index\":\"1-3\"},on:{\"click\":_vm.onLogOut}},[_c('span',[_vm._v(\" Sign Out \")])]):_vm._e()],2)],1)],1),_c('div',{staticStyle:{\"text-align\":\"center\"}},[_c('el-tooltip',{attrs:{\"disabled\":!_vm.isMenuCollapse,\"content\":\"Back to admin view\",\"placement\":\"right-start\"}},[(\n (_vm.isViewingAs && _vm.adminUser && !_vm.instructorUser) ||\n (_vm.adminUser && _vm.currentCourse && !_vm.instructorUser) ||\n (_vm.isAdmin && _vm.currentCourse && !_vm.instructorUser)\n )?_c('el-button',{class:{\n 'nav-btn full-width': !_vm.isMenuCollapse,\n 'nav-btn': _vm.isMenuCollapse,\n },attrs:{\"type\":\"primary\"},on:{\"click\":function($event){return _vm.backToAdmin()}}},[(!_vm.isMenuCollapse)?_c('span',[_vm._v(\" Back to admin view \")]):_c('span',[_vm._v(\" Admin \")])]):_vm._e()],1),_c('el-tooltip',{attrs:{\"disabled\":!_vm.isMenuCollapse,\"content\":\"Back to instructor view\",\"placement\":\"right-start\"}},[(_vm.isViewingAs && _vm.instructorUser)?_c('el-button',{class:{\n 'nav-btn full-width': !_vm.isMenuCollapse,\n 'nav-btn': _vm.isMenuCollapse,\n },attrs:{\"type\":\"primary\"},on:{\"click\":function($event){return _vm.backToInstructor()}}},[(!_vm.isMenuCollapse)?_c('span',[_vm._v(\" Back to instructor view \")]):_c('span',[_vm._v(\" Back \")])]):_vm._e()],1)],1),_c('div',{staticClass:\"app-level-menu\",staticStyle:{\"text-align\":\"center\"}},[_c('el-tooltip',{attrs:{\"disabled\":!_vm.isMenuCollapse,\"content\":\"Term Selection\",\"placement\":\"right-start\"}},[(_vm.terms && _vm.isAdmin && !_vm.isViewingAs && !_vm.currentCourse)?_c('el-select',{class:{\n 'nav-select full-width': !_vm.isMenuCollapse,\n 'nav-select': _vm.isMenuCollapse,\n },attrs:{\"id\":\"term-selection\",\"filterable\":\"\",\"placeholder\":\"Term Selection\",\"no-match-text\":\"No Matching Data\",\"no-data-text\":\"No data\",\"loading-text\":\"Loading\"},on:{\"change\":function($event){return _vm.onTermChange()}},model:{value:(_vm.currentTerm),callback:function ($$v) {_vm.currentTerm=$$v},expression:\"currentTerm\"}},_vm._l((_vm.terms),function(item){return _c('el-option',{key:item.TermCode,attrs:{\"label\":item.TermDescription,\"value\":item.TermCode}})}),1):_vm._e()],1),_c('el-tooltip',{attrs:{\"disabled\":!_vm.isMenuCollapse,\"content\":\"View as instructor\",\"placement\":\"right-start\"}},[(_vm.instructors && !_vm.isViewingAs && !_vm.currentCourse)?_c('el-select',{class:{\n 'nav-select full-width': !_vm.isMenuCollapse,\n 'nav-select': _vm.isMenuCollapse,\n },attrs:{\"id\":\"instructor-selection\",\"filterable\":\"\",\"placeholder\":\"View as instructor\",\"no-match-text\":\"No Matching Data\",\"no-data-text\":\"No data\",\"loading-text\":\"Loading\"},on:{\"change\":function($event){return _vm.onInstructorChange()}},model:{value:(_vm.currentInstructor),callback:function ($$v) {_vm.currentInstructor=$$v},expression:\"currentInstructor\"}},_vm._l((_vm.instructors),function(item){return _c('el-option',{key:item.UserName,attrs:{\"label\":item.LastName + ', ' + item.FirstName,\"value\":item.UserName}})}),1):_vm._e()],1),_c('el-tooltip',{attrs:{\"disabled\":!_vm.isMenuCollapse,\"content\":\"Course selection\",\"placement\":\"right-start\"}},[(_vm.isAdmin && !_vm.isViewingAs && !_vm.currentCourse)?_c('el-select',{class:{\n 'nav-select full-width': !_vm.isMenuCollapse,\n 'nav-select': _vm.isMenuCollapse,\n },attrs:{\"id\":\"course-selection\",\"value-key\":\"ClassCode\",\"filterable\":\"\",\"placeholder\":\"Course selection\",\"no-match-text\":\"No Matching Data\",\"no-data-text\":\"No data\",\"loading-text\":\"Loading\"},on:{\"change\":function($event){return _vm.onAdminCourseChange()}},model:{value:(_vm.adminCourse),callback:function ($$v) {_vm.adminCourse=$$v},expression:\"adminCourse\"}},[_c('el-option',{key:\"all\",attrs:{\"label\":\"My Courses\",\"value\":\"all\"}}),_vm._l((_vm.adminCourses),function(item){return _c('el-option',{key:item.ClassCode,attrs:{\"label\":item.ClassDescription,\"value\":item}})})],2):(_vm.courses && !_vm.instructorUser)?_c('el-select',{class:{\n 'nav-select full-width': !_vm.isMenuCollapse,\n 'nav-select': _vm.isMenuCollapse,\n },attrs:{\"id\":\"course-selection\",\"value-key\":\"ClassCode\",\"filterable\":\"\",\"placeholder\":\"Course selection\",\"no-match-text\":\"No Matching Data\",\"no-data-text\":\"No data\",\"loading-text\":\"Loading\"},on:{\"change\":function($event){return _vm.onCourseChange()}},model:{value:(_vm.currentCourse),callback:function ($$v) {_vm.currentCourse=$$v},expression:\"currentCourse\"}},[_c('el-option',{key:\"all\",attrs:{\"label\":\"All Courses\",\"value\":\"all\"}}),_vm._l((_vm.courses),function(item){return _c('el-option',{key:item.Id,attrs:{\"label\":item.ClassDescription,\"value\":item}})})],2):_vm._e()],1),_c('el-tooltip',{attrs:{\"disabled\":!_vm.isMenuCollapse,\"content\":\"Search for student\",\"placement\":\"right-start\"}},[(_vm.isAdmin && !_vm.isViewingAs && !_vm.currentCourse)?_c('el-select',{class:{\n 'nav-select full-width': !_vm.isMenuCollapse,\n 'nav-select': _vm.isMenuCollapse,\n },attrs:{\"id\":\"student-selection\",\"filterable\":\"\",\"remote\":\"\",\"remote-method\":_vm.searchForAdminStudent,\"placeholder\":\"Search for student\",\"no-match-text\":\"No Matching Data\",\"no-data-text\":\"No data\",\"loading-text\":\"Loading\"},on:{\"change\":function($event){return _vm.onAdminStudentChange()}},model:{value:(_vm.adminStudent),callback:function ($$v) {_vm.adminStudent=$$v},expression:\"adminStudent\"}},_vm._l((_vm.adminStudents),function(item){return _c('el-option',{key:item.UserName,attrs:{\"label\":item.FullName + ' (' + item.UserName + ')',\"value\":item.UserName}})}),1):_vm._e()],1),_c('el-tooltip',{attrs:{\"disabled\":!_vm.isMenuCollapse,\"content\":\"View As Student\",\"placement\":\"right-start\"}},[(_vm.students && _vm.currentCourse && (!_vm.isStudent || _vm.instructorUser))?_c('el-select',{class:{\n 'nav-select full-width': !_vm.isMenuCollapse,\n 'nav-select': _vm.isMenuCollapse,\n },attrs:{\"id\":\"student-selection\",\"filterable\":\"\",\"placeholder\":\"View As Student\",\"no-match-text\":\"No Matching Data\",\"no-data-text\":\"No data\",\"loading-text\":\"Loading\"},on:{\"change\":function($event){return _vm.onStudentChange()}},model:{value:(_vm.currentStudent),callback:function ($$v) {_vm.currentStudent=$$v},expression:\"currentStudent\"}},_vm._l((_vm.students),function(item){return _c('el-option',{key:item.UserName,attrs:{\"label\":item.FullName,\"value\":item.UserName}})}),1):_vm._e()],1)],1),(_vm.userRole != 'Student' || (_vm.userRole == 'Student' && _vm.subscribedTerms))?_c('el-menu',{staticClass:\"el-menu-vertical-demo\",staticStyle:{\"width\":\"auto\",\"border-right\":\"none\"},attrs:{\"default-active\":\"2\",\"collapse\":true},on:{\"open\":_vm.handleOpen,\"close\":_vm.handleClose}},[(\n _vm.currentCourse &&\n (_vm.userRole != 'Student' ||\n (_vm.userRole == 'Student' &&\n _vm.subscribedTerms.includes(_vm.currentCourse.TermCode) && _vm.currentCourse.TermCode == _vm.currentTerm))\n )?_c('router-link',{staticStyle:{\"color\":\"white\",\"text-decoration\":\"none\"},attrs:{\"to\":{ path: (\"/course/\" + (_vm.currentCourse.ClassCode) + \"/projects\") }}},[_c('el-menu-item',{staticStyle:{\"cursor\":\"pointer\"},attrs:{\"index\":\"2\"}},[_c('el-tooltip',{attrs:{\"disabled\":!_vm.isMenuCollapse,\"content\":\"Projects\",\"placement\":\"right-start\",\"effect\":\"light\"}},[_c('router-link',{staticStyle:{\"color\":\"white\",\"text-decoration\":\"none\"},attrs:{\"to\":{ path: (\"/course/\" + (_vm.currentCourse.ClassCode) + \"/projects\") }}},[_c('i',{staticClass:\"fas fa-tasks nav-icon full-width\",staticStyle:{\"margin-left\":\"4px\"}})])],1),(!_vm.isMenuCollapse)?_c('span',[_vm._v(\" Projects \")]):_vm._e()],1)],1):_vm._e(),(\n _vm.userRole == 'Student' &&\n _vm.currentCourse &&\n _vm.subscribedTerms.includes(_vm.currentCourse.TermCode) &&\n _vm.currentCourse.TermCode == _vm.currentTerm\n )?_c('router-link',{staticStyle:{\"color\":\"white\",\"text-decoration\":\"none\"},attrs:{\"to\":{ path: \"/peer_review\" }}},[_c('el-menu-item',{staticStyle:{\"cursor\":\"pointer\"},attrs:{\"index\":\"3\"}},[_c('el-tooltip',{attrs:{\"disabled\":!_vm.isMenuCollapse,\"content\":\"Peer Review\",\"placement\":\"right-start\",\"effect\":\"light\"}},[_c('i',{staticClass:\"fas fa-user-edit nav-icon full-width\",staticStyle:{\"margin-left\":\"3px\",\"margin-right\":\"7px\"}})]),(!_vm.isMenuCollapse)?_c('span',[_vm._v(\" Peer Review \")]):_vm._e()],1)],1):_vm._e(),(\n _vm.userRole == 'Student' &&\n _vm.currentCourse &&\n _vm.subscribedTerms.includes(_vm.currentCourse.TermCode) &&\n _vm.currentCourse.TermCode == _vm.currentTerm\n )?_c('router-link',{staticStyle:{\"color\":\"white\",\"text-decoration\":\"none\"},attrs:{\"to\":{ path: \"/self_review\" }}},[_c('el-menu-item',{attrs:{\"index\":\"4\"}},[_c('el-tooltip',{attrs:{\"disabled\":!_vm.isMenuCollapse,\"content\":\"Self Review\",\"placement\":\"right-start\",\"effect\":\"light\"}},[_c('i',{staticClass:\"fas fa-user-check nav-icon full-width\",staticStyle:{\"margin-left\":\"3px\",\"margin-right\":\"7px\"}})]),(!_vm.isMenuCollapse)?_c('span',[_vm._v(\" Self Review \")]):_vm._e()],1)],1):_vm._e(),(_vm.userRole == 'Instructor' && _vm.currentCourse)?_c('router-link',{staticStyle:{\"color\":\"white\",\"text-decoration\":\"none\"},attrs:{\"to\":{ path: \"/instructor_review\" }}},[_c('el-menu-item',{attrs:{\"index\":\"3\"}},[_c('el-tooltip',{attrs:{\"disabled\":!_vm.isMenuCollapse,\"content\":\"Score Center\",\"placement\":\"right-start\",\"effect\":\"light\"}},[_c('i',{staticClass:\"far fa-edit nav-icon full-width\",staticStyle:{\"margin-left\":\"4px\",\"margin-right\":\"10px\"}})]),(!_vm.isMenuCollapse)?_c('span',[_vm._v(\" Score Center \")]):_vm._e()],1)],1):_vm._e(),(_vm.userRole == 'Instructor' && _vm.currentCourse)?_c('router-link',{staticStyle:{\"color\":\"white\",\"text-decoration\":\"none\"},attrs:{\"to\":{ path: \"/instructor/compare/text\" }}},[_c('el-menu-item',{attrs:{\"index\":\"3\"}},[_c('el-tooltip',{attrs:{\"disabled\":!_vm.isMenuCollapse,\"content\":\"Compare Text\",\"placement\":\"right-start\",\"effect\":\"light\"}},[_c('i',{staticClass:\"fab fa-readme fa-edit nav-icon full-width\",staticStyle:{\"margin-left\":\"2px\",\"margin-right\":\"10px\"}})]),(!_vm.isMenuCollapse)?_c('span',[_vm._v(\" Compare Text \")]):_vm._e()],1)],1):_vm._e(),(_vm.userRole == 'Instructor' && _vm.currentCourse)?_c('el-submenu',{attrs:{\"index\":\"4\"}},[_c('template',{slot:\"title\"},[_c('i',{staticClass:\"fas fa-user-friends nav-icon full-width\",staticStyle:{\"font-size\":\"18px\",\"margin-left\":\"-3px\",\"margin-right\":\"12px\"}}),(!_vm.isMenuCollapse)?_c('span',[_vm._v(\" Team Formation \")]):_vm._e()]),(_vm.isMenuCollapse)?_c('el-menu-item-group',{staticStyle:{\"border-bottom\":\"#a29e9e solid 1px\"}},[_c('span',{staticStyle:{\"font-size\":\"14px\"},attrs:{\"slot\":\"title\"},slot:\"title\"},[_vm._v(\" Team Formation \")])]):_vm._e(),_c('router-link',{staticStyle:{\"color\":\"white\",\"text-decoration\":\"none\"},attrs:{\"to\":{\n path: (\"/course/\" + (_vm.currentCourse.ClassCode) + \"/team_formation/peer_review\"),\n }}},[_c('el-menu-item',{staticStyle:{\"color\":\"white\"},attrs:{\"index\":\"4-1\"}},[_vm._v(\"\\n Peer Review\\n \")])],1),_c('router-link',{staticStyle:{\"color\":\"white\",\"text-decoration\":\"none\"},attrs:{\"to\":{\n path: (\"/course/\" + (_vm.currentCourse.ClassCode) + \"/team_formation/group_project\"),\n }}},[_c('el-menu-item',{staticStyle:{\"color\":\"white\"},attrs:{\"index\":\"4-2\"}},[_vm._v(\"\\n Group Project\\n \")])],1)],2):_vm._e(),(\n _vm.currentCourse &&\n (_vm.userRole != 'Student' ||\n (_vm.userRole == 'Student' &&\n _vm.subscribedTerms.includes(_vm.currentCourse.TermCode) && _vm.currentCourse.TermCode == _vm.currentTerm))\n )?_c('router-link',{staticStyle:{\"color\":\"white\",\"text-decoration\":\"none\"},attrs:{\"to\":{ path: \"/collective_feedbacks\" }}},[_c('el-menu-item',{attrs:{\"index\":\"5\"}},[_c('el-tooltip',{attrs:{\"disabled\":!_vm.isMenuCollapse,\"content\":\"Collective Feedback\",\"placement\":\"right-start\",\"effect\":\"light\"}},[_c('i',{staticClass:\"fab fa-stack-exchange nav-icon full-width\",staticStyle:{\"margin-left\":\"4px\",\"margin-right\":\"10px\"}})]),(!_vm.isMenuCollapse)?_c('span',[_vm._v(\" Collective Feedback \")]):_vm._e()],1)],1):_vm._e(),(_vm.userRole == 'Instructor' && _vm.currentCourse)?_c('router-link',{staticStyle:{\"color\":\"white\",\"text-decoration\":\"none\"},attrs:{\"to\":{ path: (\"/course/\" + (_vm.currentCourse.ClassCode) + \"/students\") }}},[_c('el-menu-item',{attrs:{\"index\":\"3\"}},[_c('el-tooltip',{attrs:{\"disabled\":!_vm.isMenuCollapse,\"content\":\"People\",\"placement\":\"right-start\",\"effect\":\"light\"}},[_c('i',{staticClass:\"fas fa-users nav-icon full-width\",staticStyle:{\"font-size\":\"18px\",\"margin-left\":\"2px\",\"margin-right\":\"8px\"}})]),(!_vm.isMenuCollapse)?_c('span',[_vm._v(\" Students \")]):_vm._e()],1)],1):_vm._e(),(_vm.orgCode == 'USF' && _vm.textbookVisible)?_c('el-submenu',{attrs:{\"index\":\"6\"}},[_c('template',{slot:\"title\"},[_c('i',{staticClass:\"fas fa-book nav-icon full-width\",staticStyle:{\"margin-left\":\"-2px\",\"margin-right\":\"14px\"}}),(!_vm.isMenuCollapse)?_c('span',[_vm._v(\" E-Texts \")]):_vm._e()]),(_vm.isMenuCollapse)?_c('el-menu-item-group',{staticStyle:{\"border-bottom\":\"#a29e9e solid 1px\"}},[_c('span',{staticStyle:{\"font-size\":\"14px\"},attrs:{\"slot\":\"title\"},slot:\"title\"},[_vm._v(\" E-Texts \")])]):_vm._e(),_c('router-link',{staticStyle:{\"color\":\"white\",\"text-decoration\":\"none\"},attrs:{\"to\":{ path: \"/e-text/raww\" },\"target\":\"_blank\"}},[_c('el-menu-item',{attrs:{\"index\":\"6-1\"}},[_c('span',[_vm._v(\" RAWWr 10 \")])])],1)],2):_vm._e(),(_vm.isAdmin && !_vm.currentCourse)?_c('el-submenu',{attrs:{\"index\":\"8\"}},[_c('template',{slot:\"title\"},[_c('i',{staticClass:\"fas fa-user-shield nav-icon full-width\",staticStyle:{\"margin-left\":\"-2px\",\"margin-right\":\"10px\"}}),(!_vm.isMenuCollapse)?_c('span',[_vm._v(\" Admin Tools \")]):_vm._e()]),(_vm.isMenuCollapse)?_c('el-menu-item-group',{staticStyle:{\"border-bottom\":\"#a29e9e solid 1px\"}},[_c('span',{staticStyle:{\"font-size\":\"14px\"},attrs:{\"slot\":\"title\"},slot:\"title\"},[_vm._v(\" Admin Tools \")])]):_vm._e(),_c('router-link',{staticStyle:{\"color\":\"white\",\"text-decoration\":\"none\"},attrs:{\"to\":{ path: \"/admin/templates\" }}},[_c('el-menu-item',{attrs:{\"index\":\"8-1\"}},[_c('span',[_vm._v(\" Project Templates \")])])],1),_c('router-link',{staticStyle:{\"color\":\"white\",\"text-decoration\":\"none\"},attrs:{\"to\":{ path: \"/admin/rubrics\" }}},[_c('el-menu-item',{attrs:{\"index\":\"8-2\"}},[_c('span',[_vm._v(\" Rubrics \")])])],1)],2):_vm._e(),(_vm.isAdmin || (_vm.hasInstructorRole && _vm.userRole != 'Student'))?_c('el-submenu',{attrs:{\"index\":\"9\"}},[_c('template',{slot:\"title\"},[_c('i',{staticClass:\"fas fa-chart-bar nav-icon full-width\",staticStyle:{\"margin-left\":\"-2px\",\"margin-right\":\"10px\"}}),(!_vm.isMenuCollapse)?_c('span',[_vm._v(\" Reports \")]):_vm._e()]),(_vm.isMenuCollapse)?_c('el-menu-item-group',{staticStyle:{\"border-bottom\":\"#a29e9e solid 1px\"}},[_c('span',{staticStyle:{\"font-size\":\"14px\"},attrs:{\"slot\":\"title\"},slot:\"title\"},[_vm._v(\" Reports \")])]):_vm._e(),_c('router-link',{staticStyle:{\"color\":\"white\",\"text-decoration\":\"none\"},attrs:{\"to\":{ path: \"/report/outcomes\" }}},[_c('el-menu-item',{attrs:{\"index\":\"9-1\"}},[_c('span',[_vm._v(\" Outcomes \")])])],1),_c('router-link',{staticStyle:{\"color\":\"white\",\"text-decoration\":\"none\"},attrs:{\"to\":{ path: \"/report/individual_outcomes\" }}},[_c('el-menu-item',{attrs:{\"index\":\"9-1\"}},[_c('span',[_vm._v(\" Individual Outcomes \")])])],1),_c('router-link',{staticStyle:{\"color\":\"white\",\"text-decoration\":\"none\"},attrs:{\"to\":{ path: \"/report/collective_feedback\" }}},[_c('el-menu-item',{attrs:{\"index\":\"9-2\"}},[_c('span',[_vm._v(\" Collective Feedback \")])])],1),_c('router-link',{staticStyle:{\"color\":\"white\",\"text-decoration\":\"none\"},attrs:{\"to\":{ path: \"/report/student_performance\" }}},[_c('el-menu-item',{attrs:{\"index\":\"9-3\"}},[_c('span',[_vm._v(\" Student Performance \")])])],1),(_vm.isAdmin)?_c('router-link',{staticStyle:{\"color\":\"white\",\"text-decoration\":\"none\"},attrs:{\"to\":{ path: \"/report/documents/download\" }}},[_c('el-menu-item',{attrs:{\"index\":\"8-3\"}},[_c('span',[_vm._v(\" Documents Download \")])])],1):_vm._e()],2):_vm._e(),_c('el-submenu',{attrs:{\"index\":\"7\"}},[_c('template',{slot:\"title\"},[_c('i',{staticClass:\"far fa-question-circle nav-icon full-width\",staticStyle:{\"margin-left\":\"-2px\",\"margin-right\":\"10px\"}}),(!_vm.isMenuCollapse)?_c('span',[_vm._v(\" Help \")]):_vm._e()]),(_vm.isMenuCollapse)?_c('el-menu-item-group',{staticStyle:{\"border-bottom\":\"#a29e9e solid 1px\"}},[_c('span',{staticStyle:{\"font-size\":\"14px\"},attrs:{\"slot\":\"title\"},slot:\"title\"},[_vm._v(\" Help \")])]):_vm._e(),_c('el-menu-item',{attrs:{\"index\":\"7-1\"},on:{\"click\":function($event){return _vm.$emit('openContactDialog')}}},[_c('span',[_vm._v(\" Contact Support \")])]),(_vm.hasInstructorRole || _vm.userRole != 'Student')?_c('a',{staticStyle:{\"color\":\"white\",\"text-decoration\":\"none\"},attrs:{\"href\":_vm.instructorManual,\"target\":\"_blank\"}},[_c('el-menu-item',{attrs:{\"index\":\"7-2\"}},[_c('span',[_vm._v(\" Instructor Manual \")])])],1):_vm._e(),_c('a',{staticStyle:{\"color\":\"white\",\"text-decoration\":\"none\"},attrs:{\"href\":_vm.studentManual,\"target\":\"_blank\"}},[_c('el-menu-item',{attrs:{\"index\":\"7-3\"}},[_c('span',[_vm._v(\" Student Manual \")])])],1)],2)],1):_vm._e(),_vm._m(0),_c('div',{staticStyle:{\"text-align\":\"center\"}},[_c('button',{staticClass:\"hamburger hamburger--arrow is-active\",staticStyle:{\"\":\"focus: outline\",\"bottom\":\"10px\"},attrs:{\"id\":\"menu-toggle\",\"type\":\"button\"},on:{\"click\":function($event){return _vm.menuToggle()}}},[_vm._m(1)])])],1)}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('p',[_vm._v(\" \"),_c('br'),_vm._v(\" \")])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('span',{staticClass:\"hamburger-box\"},[_c('span',{staticClass:\"hamburger-inner\"})])}]\n\nexport { render, staticRenderFns }","/**\r\n * URL utilities.\r\n * @module utils/url-utils\r\n */\r\n\r\n/**\r\n * Get base URL.\r\n *\r\n * @return {String} URL\r\n */\r\nexport const getBaseURL = () => {\r\n\t// const url = window.location.href\r\n\t// const arr = url.split('/')\r\n\tconst protocol = 'https:' // arr[0]\r\n\t// const protocol = process.env.NODE_ENV === 'production' ? 'https:' :'http:';\r\n\tconst host = process.env.NODE_ENV === 'production' ? window.location.host : 'localhost:44311'\r\n\treturn `${protocol}//${host}`\r\n}\r\n\r\n/**\r\n * Get base URL of REST service.\r\n *\r\n * @return {String} URL\r\n */\r\nexport const getBaseApiURL = () => {\r\n\tconst apiEndpoint = process.env.VUE_APP_API_ENDPOINT\r\n\treturn `${getBaseURL()}/${apiEndpoint}`\r\n}\r\n","/**\r\n * Auth service.\r\n * @module service/auth.service\r\n */\r\n\r\nimport http from '@/utils/axios'\r\n\r\nexport function createDemoAccount(data) {\r\n\treturn http.post('account/users/demo', data)\r\n\t\t.then(response => {\r\n\t\t\treturn response.data\r\n\t\t})\r\n\t\t.catch(error => {\r\n\t\t\tconsole.log(error)\r\n\t\t})\r\n}\r\n\r\nexport function resendEmail(data) {\r\n\treturn http.post('account/users/confirm/email/resend', data)\r\n\t\t.then(response => {\r\n\t\t\tconsole.log(response)\r\n\t\t\treturn response.data\r\n\t\t})\r\n\t\t.catch(error => {\r\n\t\t\tconsole.log(error)\r\n\t\t})\r\n}\r\n\r\nexport function confirmEmail(id, code) {\r\n\treturn http.get('account/users/email/confirm/' + id + '?code=' + code)\r\n\t\t.then(response => {\r\n\t\t\tconsole.log(response)\r\n\t\t\treturn response.data\r\n\t\t})\r\n\t\t.catch(error => {\r\n\t\t\tconsole.log(error)\r\n\t\t})\r\n}\r\n/**\r\n * Login service using ldap.\r\n *\r\n * @param {Object} data login information\r\n * @return {Promise<Object>} access data including access token and username\r\n */\r\nexport function ldapLogin(data) {\r\n\treturn http.post('/token/ldap', data)\r\n\t\t.then(response => {\r\n\t\t\treturn response.data\r\n\t\t})\r\n\t\t.catch(error => {\r\n\t\t\tconsole.log(error)\r\n\t\t})\r\n}\r\n\r\nexport function canvasLogin(code) {\r\n\treturn http.get('/canvas/login/' + code)\r\n\t\t.then(response => {\r\n\t\t\tif (response == undefined || response == null) {\r\n\t\t\t\treturn null\r\n\t\t\t} else { return response.data }\r\n\t\t})\r\n\t\t.catch(error => {\r\n\t\t\tconsole.log(error)\r\n\t\t})\r\n}\r\n\r\nexport function getToken(payload) {\r\n\treturn http.post('/canvas/getToken/', payload)\r\n\t\t.then(response => {\r\n\t\t\treturn response.data\r\n\t\t})\r\n\t\t.catch(error => {\r\n\t\t\tconsole.log(error)\r\n\t\t})\r\n}\r\n\r\n/**\r\n * Login service using oauth.\r\n *\r\n * @param {Object} data login information\r\n * @return {Promise<Object>} access data including access token and username\r\n */\r\nexport function oauthLogin(data) {\r\n\treturn http.post('/token/oauth', data)\r\n\t\t.then(response => {\r\n\t\t\treturn response.data\r\n\t\t})\r\n\t\t.catch(error => {\r\n\t\t\tconsole.log(error)\r\n\t\t})\r\n}\r\n\r\n/**\r\n *\r\n * @param {*} accessToken\r\n * @param {*} userId\r\n */\r\nexport function getUserProfile(userId) {\r\n\treturn http.get('/account/users/' + userId)\r\n\t\t.then(userProfile => {\r\n\t\t\treturn userProfile.data\r\n\t\t})\r\n\t\t.catch(error => {\r\n\t\t\tconsole.log(error)\r\n\t\t})\r\n}\r\n\r\n/**\r\n * Re-Login service using refresh token\r\n *\r\n * @param {Object} data login information\r\n * @return {Promise<Object>} access data including access token and username\r\n */\r\nexport function reLogin(data) {\r\n\treturn http.post('/token/oauth', data)\r\n\t\t.then(response => {\r\n\t\t\treturn response.data\r\n\t\t})\r\n\t\t.catch(error => {\r\n\t\t\tconsole.log(error)\r\n\t\t})\r\n}\r\n\r\n/**\r\n * Verify external (Google, Facebook) login token\r\n *\r\n * @param {Object} data external login information\r\n * @return {Promise<Object>} access data including access token and username\r\n */\r\nexport function verifyExternalLogin(data) {\r\n\treturn http.post('/account/verifyToken', data)\r\n\t\t.then(response => {\r\n\t\t\treturn response.data\r\n\t\t})\r\n\t\t.catch(error => {\r\n\t\t\tconsole.log(error)\r\n\t\t})\r\n}\r\n\r\n/**\r\n * Register service.\r\n *\r\n * @param {Object} data registration information\r\n * @return {Promise<Object>} access data including access token and username\r\n */\r\nexport function register(data) {\r\n\treturn http.post('/account/register', data)\r\n\t\t.then(response => {\r\n\t\t\treturn response.data\r\n\t\t})\r\n\t\t.catch(error => {\r\n\t\t\tconsole.log(error)\r\n\t\t})\r\n}\r\n\r\n/**\r\n * Forgot password service.\r\n *\r\n * @param {string} username user email\r\n */\r\nexport function forgotPassword(username) {\r\n\treturn http.post('/account/users/' + username + '/password/forgot?callbackUrl=https://localhost:8080/#/forgot-password')\r\n\t\t.then(response => {\r\n\t\t\treturn response\r\n\t\t})\r\n\t\t.catch(error => {\r\n\t\t\tconsole.log(error)\r\n\t\t})\r\n}\r\n\r\n/**\r\n * Reset forgotten password service.\r\n *\r\n * @param {string} id user id\r\n * @param {string} code verification code\r\n * @param {Object} data reset password model\r\n */\r\nexport function resetPassword(id, code, data) {\r\n\treturn http.post('/account/users/' + id + '/password/reset?code=' + code + '', data)\r\n\t\t.then(response => {\r\n\t\t\treturn response\r\n\t\t})\r\n\t\t.catch(error => {\r\n\t\t\tconsole.log(error)\r\n\t\t})\r\n}\r\n\r\n/**\r\n * Logout service.\r\n *\r\n * @return {Object} Promise\r\n */\r\nexport function logout() {\r\n\t// TODO: Implement logout\r\n\t// return http.post('/auth/logout');\r\n\treturn Promise.resolve()\r\n}\r\n","import http from '@/utils/axios'\r\n\r\nexport function getCurrentTerm(orgCode) {\r\n\treturn http.get('term/current/' + orgCode)\r\n\t\t.then(response => {\r\n\t\t\treturn response.data\r\n\t\t})\r\n\t\t.catch(error => {\r\n\t\t\tconsole.log(error)\r\n\t\t})\r\n}\r\n\r\nexport function getTerms(orgCode) {\r\n\treturn http.get(\"term/odata?$filter=OrgCode eq '\" + orgCode + \"' &$orderby=StartDate desc\")\r\n\t\t.then(response => {\r\n\t\t\treturn response.data\r\n\t\t})\r\n\t\t.catch(error => {\r\n\t\t\tconsole.log(error)\r\n\t\t})\r\n}\r\n\r\nexport function getAllTerms() {\r\n\treturn http.get('/term/')\r\n\t\t.then(response => {\r\n\t\t\treturn response.data\r\n\t\t})\r\n\t\t.catch(error => {\r\n\t\t\tconsole.log(error)\r\n\t\t})\r\n}\r\n","import http from '@/utils/axios'\r\nimport { Notification } from 'element-ui'\r\n\r\nexport function getUserSurveyResponse(surveyId, termCode, classCode, userId, type) {\r\n\treturn http.get('survey/' + surveyId + '/response/' + userId + '/' + termCode + '/' + classCode + '/' + type)\r\n\t\t.then(response => {\r\n\t\t\treturn response.data\r\n\t\t})\r\n\t\t.catch(error => {\r\n\t\t\tNotification.error({\r\n\t\t\t\tduration: 6000,\r\n\t\t\t\ttitle: 'Error',\r\n\t\t\t\tmessage: error\r\n\t\t\t})\r\n\t\t})\r\n}\r\n\r\nexport function getSurveyQuestions(surveyId) {\r\n\treturn http.get('survey/' + surveyId + '/questions')\r\n\t\t.then(response => {\r\n\t\t\treturn response.data\r\n\t\t})\r\n\t\t.catch(error => {\r\n\t\t\tNotification.error({\r\n\t\t\t\tduration: 6000,\r\n\t\t\t\ttitle: 'Error',\r\n\t\t\t\tmessage: error\r\n\t\t\t})\r\n\t\t})\r\n}\r\n\r\nexport function getSurveyAnswers(surveyId, questionId) {\r\n\treturn http.get('survey/' + surveyId + '/questions/' + questionId + '/answers')\r\n\t\t.then(response => {\r\n\t\t\treturn response.data\r\n\t\t})\r\n\t\t.catch(error => {\r\n\t\t\tNotification.error({\r\n\t\t\t\tduration: 6000,\r\n\t\t\t\ttitle: 'Error',\r\n\t\t\t\tmessage: error\r\n\t\t\t})\r\n\t\t})\r\n}\r\n\r\nexport function addNewResponse(surveyResponse) {\r\n\treturn http.post('survey/response', surveyResponse)\r\n\t\t.then(response => {\r\n\t\t\treturn response.data\r\n\t\t})\r\n\t\t.catch(error => {\r\n\t\t\tNotification.error({\r\n\t\t\t\tduration: 6000,\r\n\t\t\t\ttitle: 'Error',\r\n\t\t\t\tmessage: error\r\n\t\t\t})\r\n\t\t})\r\n}\r\n\r\nexport function checkOptInStatus(orgCode, username, termCode) {\r\n\treturn http.get('research_participation/student/' + username + '/' + termCode + '/' + orgCode)\r\n\t\t.then(researchParticipation => {\r\n\t\t\treturn researchParticipation.data\r\n\t\t})\r\n\t\t.catch(error => {\r\n\t\t\tNotification.error({\r\n\t\t\t\tduration: 6000,\r\n\t\t\t\ttitle: 'Error',\r\n\t\t\t\tmessage: error\r\n\t\t\t})\r\n\t\t})\r\n}\r\n\r\nexport function postOptInStatus(optInStatus) {\r\n\treturn http.post('research_participation/', optInStatus)\r\n\t\t.then(response => {\r\n\t\t\treturn response.data\r\n\t\t})\r\n\t\t.catch(error => {\r\n\t\t\tNotification.error({\r\n\t\t\t\tduration: 6000,\r\n\t\t\t\ttitle: 'Error',\r\n\t\t\t\tmessage: error\r\n\t\t\t})\r\n\t\t})\r\n}\r\n\r\nexport function putOptInStatus(optInStatus) {\r\n\treturn http.put('research_participation/', optInStatus)\r\n\t\t.then(response => {\r\n\t\t\treturn response.data\r\n\t\t})\r\n\t\t.catch(error => {\r\n\t\t\tNotification.error({\r\n\t\t\t\tduration: 6000,\r\n\t\t\t\ttitle: 'Error',\r\n\t\t\t\tmessage: error\r\n\t\t\t})\r\n\t\t})\r\n}\r\n","import * as authService from '@/services/auth.service'\r\nimport * as termService from '@/services/term.service'\r\nimport * as userService from '@/services/user.service'\r\nimport * as surveyService from '@/services/survey.service'\r\n// import * as stringUtils from '@/utils/string-utils'\r\nimport _ from 'lodash'\r\n\r\n// Enable namespaced module\r\nexport const namespaced = true\r\n\r\nconst getDefaultState = () => {\r\n\treturn {\r\n\t\tmsalConfig: {\r\n\t\t\tauth: {\r\n\t\t\t clientId: process.env.VUE_APP_MSAL_CLIENT_ID, // 'c8577795-d559-4d76-bc38-ae441f525bfb',\r\n\t\t\t authority: process.env.VUE_APP_MSAL_AUTHORITY, // 'https://login.microsoftonline.com/741bf7de-e2e5-46df-8d67-82607df9deaa',\r\n\t\t\t redirectUri: process.env.VUE_APP_MSAL_REDIRECT_URI, // 'http://localhost:8080/',\r\n\t\t\t postLogoutRedirectUri: process.env.VUE_APP_MSAL_LOGOUT_URI // 'http://localhost:8080/'\r\n\t\t\t},\r\n\t\t\tcache: {\r\n\t\t\t cacheLocation: 'localStorage'\r\n\t\t\t},\r\n\t\t\tloginRequest: {\r\n\t\t\t\tscopes: ['openid', 'profile', 'offline_access', process.env.VUE_APP_MSAL_LOGIN_SCOPE]\r\n\t\t\t}\r\n\t\t},\r\n\t\ttoken: {\r\n\t\t\taccessToken: null,\r\n\t\t\trefreshToken: null,\r\n\t\t\texpireTime: null\r\n\t\t},\r\n\t\tcanvasToken: {\r\n\t\t\taccessToken: null,\r\n\t\t\trefreshToken: null,\r\n\t\t\texpireTime: null\r\n\t\t},\r\n\t\tuser: null,\r\n\t\tterms: null,\r\n\t\tcurrentTerm: null,\r\n\t\tisAdmin: false,\r\n\t\tisAuthenticated: false,\r\n\t\tdisplayOptIn: false,\r\n\t\tmsalAccount: null,\r\n\t\tssoName: null,\r\n\t\tssoUserName: null\r\n\t}\r\n}\r\n\r\nexport const state = getDefaultState()\r\n\r\nexport const actions = {\r\n\r\n\tasync singleSignOn({ state, dispatch, commit }, auth) {\r\n\t\tif (auth.account.name) {\r\n\t\t\tcommit('SET_SSO_NAME', auth.account.name)\r\n\t\t}\r\n\t\tlet username = auth.account.username\r\n\t\tif (username) {\r\n\t\t\tcommit('SET_SSO_USERNAME', auth.account.username)\r\n\t\t\t const charLocation = username.indexOf('@')\r\n\t\t\t if (charLocation > 0) {\r\n\t\t\t\t username = 'USF;' + username.substring(0, charLocation)\r\n\t\t\t }\r\n\t\t}\r\n\r\n\t\tconst payload = new URLSearchParams()\r\n\t\tpayload.append('ClientId', process.env.VUE_APP_CLIENT_ID)\r\n\t\tpayload.append('ClientSecret', process.env.VUE_APP_CLIENT_SECRET)\r\n\t\tpayload.append('Username', username)\r\n\t\tconst authToken = await authService.getToken(payload)\r\n\t\tif (!_.isEmpty(authToken)) {\r\n\t\t\t// Set auth.token state\r\n\t\t\tcommit('SET_TOKEN', authToken)\r\n\t\t\t// Get user and wait for the api to complete before setting auth.user state\r\n\t\t\tconst user = await dispatch('getUserProfile', authToken.userName)\r\n\t\t\tif (!_.isEmpty(user)) {\r\n\t\t\t\tif (_.includes(user.Roles, 'Instructor') || _.includes(user.Roles, 'Student')) {\r\n\t\t\t\t\t// Set auth.currentTerm state\r\n\t\t\t\t\tawait dispatch('getCurrentTerm', user.OrgCode)\r\n\t\t\t\t\t// Get user's enrollments and set enrollment.enrollments state.\r\n\t\t\t\t\tawait dispatch('enrollment/getEnrollments', {\r\n\t\t\t\t\t\tusername: user.UserName,\r\n\t\t\t\t\t\torgCode: user.OrgCode\r\n\t\t\t\t\t}, { root: true })\r\n\t\t\t\t}\r\n\t\t\t\tif (_.includes(user.Roles, 'Administrator')) {\r\n\t\t\t\t\tcommit('SET_USER', user)\r\n\t\t\t\t\t// Set auth.terms state\r\n\t\t\t\t\tawait dispatch('getTerms', user.OrgCode)\r\n\t\t\t\t\t// Set auth.currentTerm state\r\n\t\t\t\t\tconst term = await dispatch('getCurrentTerm', user.OrgCode)\r\n\t\t\t\t\t// Get instructor list and set viewAs.instructors state\r\n\t\t\t\t\tawait dispatch('viewAs/getInstructorList', {\r\n\t\t\t\t\t\torgCode: user.OrgCode,\r\n\t\t\t\t\t\ttermCode: term.TermCode\r\n\t\t\t\t\t}, { root: true })\r\n\r\n\t\t\t\t\tawait dispatch('viewAs/getAdminCourses', {\r\n\t\t\t\t\t\torgCode: user.OrgCode,\r\n\t\t\t\t\t\ttermCode: term.TermCode\r\n\t\t\t\t\t}, { root: true })\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// if (state.currentTerm) {\r\n\t\t\t\t// \tconst status = await surveyService.checkOptInStatus(user.OrgCode, user.UserName, state.currentTerm.TermCode)\r\n\t\t\t\t// \tif (status.length == 0) {\r\n\t\t\t\t// \t\tcommit('SET_DISPLAY_OPT_IN', true)\r\n\t\t\t\t// \t}\r\n\t\t\t\t// }\r\n\r\n\t\t\t\tawait userService.updateLastLogin(user.Id)\r\n\t\t\t\treturn user\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn null\r\n\t},\r\n\r\n\t/**\r\n *\r\n * @param {*} param0\r\n * @param {*} params\r\n */\r\n\tasync ldapLogin({ dispatch, commit }, payload) {\r\n\t\t// Wait for authentication\r\n\t\tconst auth = await authService.ldapLogin(payload)\r\n\r\n\t\tif (!_.isEmpty(auth)) {\r\n\t\t\t// Set auth.token state\r\n\t\t\tcommit('SET_TOKEN', auth)\r\n\r\n\t\t\t// Get user and wait for the api to complete before setting auth.user state\r\n\t\t\tconst user = await dispatch('getUserProfile', auth.userName)\r\n\t\t\tif (!_.isEmpty(user)) {\r\n\t\t\t\tif (_.includes(user.Roles, 'Instructor') || _.includes(user.Roles, 'Student')) {\r\n\t\t\t\t\t// Set auth.currentTerm state\r\n\t\t\t\t\tawait dispatch('getCurrentTerm', user.OrgCode)\r\n\t\t\t\t\t// Get user's enrollments and set enrollment.enrollments state.\r\n\t\t\t\t\tawait dispatch('enrollment/getEnrollments', {\r\n\t\t\t\t\t\tusername: user.UserName,\r\n\t\t\t\t\t\torgCode: user.OrgCode\r\n\t\t\t\t\t}, { root: true })\r\n\t\t\t\t}\r\n\t\t\t\tif (_.includes(user.Roles, 'Administrator')) {\r\n\t\t\t\t\t// Set auth.terms state\r\n\t\t\t\t\tawait dispatch('getTerms', user.OrgCode)\r\n\t\t\t\t\t// Set auth.currentTerm state\r\n\t\t\t\t\tconst term = await dispatch('getCurrentTerm', user.OrgCode)\r\n\t\t\t\t\t// Get instructor list and set viewAs.instructors state\r\n\t\t\t\t\tawait dispatch('viewAs/getInstructorList', {\r\n\t\t\t\t\t\torgCode: user.OrgCode,\r\n\t\t\t\t\t\ttermCode: term.TermCode\r\n\t\t\t\t\t}, { root: true })\r\n\t\t\t\t}\r\n\t\t\t\tawait userService.updateLastLogin(user.Id)\r\n\t\t\t\treturn user\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn null\r\n\t},\r\n\tasync canvasLogin({ dispatch, commit }, code) {\r\n\t\t// Wait for authentication\r\n\t\tconst canvasAuth = await authService.canvasLogin(code)\r\n\t\tif (!_.isEmpty(canvasAuth)) {\r\n\t\t\tconst payload = new URLSearchParams()\r\n\t\t\tpayload.append('ClientId', process.env.VUE_APP_CLIENT_ID)\r\n\t\t\tpayload.append('ClientSecret', process.env.VUE_APP_CLIENT_SECRET)\r\n\t\t\tpayload.append('Username', canvasAuth.CanvasUsername)\r\n\t\t\tconst auth = await authService.getToken(payload)\r\n\t\t\tif (!_.isEmpty(auth)) {\r\n\t\t\t\t// Set auth.token state\r\n\t\t\t\tcommit('SET_TOKEN', auth)\r\n\t\t\t\t// Get user and wait for the api to complete before setting auth.user state\r\n\t\t\t\tconst user = await dispatch('getUserProfile', auth.userName)\r\n\t\t\t\tif (!_.isEmpty(user)) {\r\n\t\t\t\t\tif (_.includes(user.Roles, 'Instructor') || _.includes(user.Roles, 'Student')) {\r\n\t\t\t\t\t\t// Set auth.currentTerm state\r\n\t\t\t\t\t\tawait dispatch('getCurrentTerm', user.OrgCode)\r\n\t\t\t\t\t\t// Get user's enrollments and set enrollment.enrollments state.\r\n\t\t\t\t\t\tawait dispatch('enrollment/getEnrollments', {\r\n\t\t\t\t\t\t\tusername: user.UserName,\r\n\t\t\t\t\t\t\torgCode: user.OrgCode\r\n\t\t\t\t\t\t}, { root: true })\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif (_.includes(user.Roles, 'Administrator')) {\r\n\t\t\t\t\t\t// Set auth.terms state\r\n\t\t\t\t\t\tawait dispatch('getTerms', user.OrgCode)\r\n\t\t\t\t\t\t// Set auth.currentTerm state\r\n\t\t\t\t\t\tconst term = await dispatch('getCurrentTerm', user.OrgCode)\r\n\t\t\t\t\t\t// Get instructor list and set viewAs.instructors state\r\n\t\t\t\t\t\tawait dispatch('viewAs/getInstructorList', {\r\n\t\t\t\t\t\t\torgCode: user.OrgCode,\r\n\t\t\t\t\t\t\ttermCode: term.TermCode\r\n\t\t\t\t\t\t}, { root: true })\r\n\t\t\t\t\t}\r\n\t\t\t\t\tawait userService.updateLastLogin(user.Id)\r\n\t\t\t\t\treturn user\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn null\r\n\t},\r\n\r\n\tsetMsalAccount({ commit }, account) {\r\n\t\tcommit('SET_MSAL_ACCOUNT', account)\r\n\t},\r\n\r\n\tasync checkOptInStatus({ commit }, payload) {\r\n\t\tcommit('SET_DISPLAY_OPT_IN', false)\r\n\t\tconst status = await surveyService.checkOptInStatus(payload.OrgCode, payload.UserName, payload.TermCode)\r\n\t\tif (status.length == 0) {\r\n\t\t\tcommit('SET_DISPLAY_OPT_IN', true)\r\n\t\t\treturn true\r\n\t\t} else {\r\n\t\t\treturn false\r\n\t\t}\r\n\t},\r\n\r\n\tsetUser({ commit }, user) {\r\n\t\tcommit('SET_USER', user)\r\n\t},\r\n\r\n\tsetTerm({ commit }, term) {\r\n\t\tcommit('SET_CURRENT_TERM', term)\r\n\t},\r\n\r\n\tasync getUserProfile({ commit }, username) {\r\n\t\tconst user = await authService.getUserProfile(username)\r\n\t\tif (!_.isEmpty(user)) {\r\n\t\t\tcommit('SET_USER', user)\r\n\t\t\treturn user\r\n\t\t} else {\r\n\t\t\treturn null\r\n\t\t}\r\n\t},\r\n\r\n\tasync getCurrentTerm({ commit }, orgCode) {\r\n\t\tconst currentTerm = await termService.getCurrentTerm(orgCode)\r\n\t\tif (!_.isEmpty(currentTerm)) {\r\n\t\t\tcommit('SET_CURRENT_TERM', currentTerm)\r\n\t\t\treturn currentTerm\r\n\t\t} else {\r\n\t\t\treturn null\r\n\t\t}\r\n\t},\r\n\r\n\tasync getTerms({ commit }, orgCode) {\r\n\t\tcommit('SET_TERMS', await termService.getTerms(orgCode))\r\n\t},\r\n\r\n\tsetCanvasToken({ commit }, canvasToken) {\r\n\t\tcommit('SET_CANVAS_TOKEN', canvasToken)\r\n\t},\r\n\tcreateDemoAccount({ commit }, payload) {\r\n\t\treturn authService.createDemoAccount(payload)\r\n\t\t\t.then(user => {\r\n\t\t\t\treturn user\r\n\t\t\t})\r\n\t\t\t.catch(error => {\r\n\t\t\t\tconsole.log(error)\r\n\t\t\t})\r\n\t},\r\n\t/**\r\n *\r\n * @param {*} param0\r\n * @param {*} params\r\n */\r\n\tasync oauthLogin({ commit, dispatch }, params) {\r\n\t\tconst auth = await authService.oauthLogin(params)\r\n\r\n\t\tif (!_.isEmpty(auth)) {\r\n\t\t\tcommit('SET_TOKEN', auth)\r\n\t\t\tconst user = await dispatch('getUserProfile', auth.userName)\r\n\t\t\tif (!_.isEmpty(user)) {\r\n\t\t\t\tif (_.includes(user.Roles, 'Instructor')) {\r\n\t\t\t\t\tawait dispatch('getCurrentTerm', user.OrgCode)\r\n\t\t\t\t\t// Get user's enrollments and set enrollment.enrollments state.\r\n\t\t\t\t\tawait dispatch('enrollment/getEnrollments', {\r\n\t\t\t\t\t\tusername: user.UserName,\r\n\t\t\t\t\t\torgCode: user.OrgCode\r\n\t\t\t\t\t}, { root: true })\r\n\t\t\t\t}\r\n\r\n\t\t\t\tawait userService.updateLastLogin(user.Id)\r\n\r\n\t\t\t\treturn user\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn null\r\n\t},\r\n\t/**\r\n * Re log-in using Refresh Token.\r\n */\r\n\treLogin({ commit, state }, params) {\r\n\t\treturn authService.getToken(params)\r\n\t\t\t.then(data => {\r\n\t\t\t\tcommit('SET_TOKEN', data)\r\n\t\t\t})\r\n\t\t\t.catch(error => {\r\n\t\t\t\tconsole.log(error)\r\n\t\t\t})\r\n\t},\r\n\r\n\t/**\r\n *\r\n * @param {*} param0\r\n */\r\n\tlogOut({ state, dispatch, commit }) {\r\n\t\tcommit('RESET_AUTH_STATE')\r\n\t\tdispatch('enrollment/resetState', null, { root: true })\r\n\t\tdispatch('loading/resetState', null, { root: true })\r\n\t\tdispatch('assignment/resetState', null, { root: true })\r\n\t\tdispatch('viewAs/resetState', null, { root: true })\r\n\t\twindow.localStorage.clear()\r\n\t}\r\n}\r\n\r\nexport const mutations = {\r\n\r\n\tSET_SSO_NAME(state, ssoName) {\r\n\t\tstate.ssoName = ssoName\r\n\t},\r\n\r\n\tSET_SSO_USERNAME(state, ssoUserName) {\r\n\t\tstate.ssoUserName = ssoUserName\r\n\t},\r\n\r\n\tSET_DISPLAY_OPT_IN(state, hasStatus) {\r\n\t\tstate.displayOptIn = hasStatus\r\n\t},\r\n\r\n\tSET_MSAL_ACCOUNT(state, account) {\r\n\t\tstate.msalAccount = account\r\n\t},\r\n\r\n\tSET_MSAL_TOKEN(state, token) {\r\n\t\tstate.token.accessToken = token\r\n\t\tstate.isAuthenticated = true\r\n\t},\r\n\r\n\t/**\r\n *\r\n * @param {*} state\r\n * @param {*} tokenData\r\n */\r\n\tSET_TOKEN(state, auth) {\r\n\t\tstate.token.accessToken = auth.access_token\r\n\t\tstate.token.refreshToken = auth.refresh_token\r\n\t\tstate.token.expireTime = auth['.expires']\r\n\t\tstate.isAuthenticated = true\r\n\t},\r\n\r\n\tSET_CANVAS_TOKEN(state, canvasToken) {\r\n\t\tstate.canvasToken.accessToken = canvasToken\r\n\t},\r\n\r\n\t/**\r\n *\r\n * @param {*} state\r\n * @param {*} userInfo\r\n */\r\n\tSET_USER(state, user) {\r\n\t\tstate.user = user\r\n\t},\r\n\r\n\tSET_CURRENT_TERM(state, term) {\r\n\t\tstate.currentTerm = term\r\n\t},\r\n\r\n\tSET_TERMS(state, terms) {\r\n\t\tstate.terms = terms\r\n\t},\r\n\r\n\tRESET_AUTH_STATE(state) {\r\n\t\tObject.assign(state, getDefaultState())\r\n\t}\r\n\r\n}\r\n","import http from '@/utils/axios'\r\nimport { Notification } from 'element-ui'\r\n\r\nexport function getAssignmentsWithPeerReviewDueDate(templateId) {\r\n\treturn http.get('assignment/peer_review/template/' + templateId)\r\n\t\t.then(response => {\r\n\t\t\tif (response.data.length > 0) { return response.data } else {\r\n\t\t\t\t// Handling error\r\n\t\t\t\tNotification.info({\r\n\t\t\t\t\tduration: 6000,\r\n\t\t\t\t\ttitle: 'Info',\r\n\t\t\t\t\tmessage: 'The template contains no projects'\r\n\t\t\t\t})\r\n\t\t\t\treturn []\r\n\t\t\t}\r\n\t\t})\r\n\t\t.catch(error => {\r\n\t\t\tconsole.log(error)\r\n\t\t})\r\n}\r\n\r\nexport function getAssignmentsWithTasks(templateId) {\r\n\treturn http.get('assignment/all/tasks/' + templateId)\r\n\t\t.then(response => {\r\n\t\t\tif (response.data.length > 0) { return response.data } else {\r\n\t\t\t\t// Handling error\r\n\t\t\t\tNotification.info({\r\n\t\t\t\t\tduration: 6000,\r\n\t\t\t\t\ttitle: 'Info',\r\n\t\t\t\t\tmessage: 'The template contains no projects'\r\n\t\t\t\t})\r\n\t\t\t\treturn []\r\n\t\t\t}\r\n\t\t})\r\n\t\t.catch(error => {\r\n\t\t\tconsole.log(error)\r\n\t\t})\r\n}\r\n\r\nexport function getAssignmentsByTemplate(templateId) {\r\n\treturn http.get('assignment/template/' + templateId)\r\n\t\t.then(response => {\r\n\t\t\tif (response.data.length > 0) { return response.data } else {\r\n\t\t\t\t// Handling error\r\n\t\t\t\tNotification.info({\r\n\t\t\t\t\tduration: 6000,\r\n\t\t\t\t\ttitle: 'Info',\r\n\t\t\t\t\tmessage: 'The template contains no projects'\r\n\t\t\t\t})\r\n\t\t\t\treturn []\r\n\t\t\t}\r\n\t\t})\r\n\t\t.catch(error => {\r\n\t\t\tconsole.log(error)\r\n\t\t})\r\n}\r\n\r\nexport function getAssignmentById(Id) {\r\n\treturn http.get('assignment/' + Id)\r\n\t\t.then(response => {\r\n\t\t\tif (response.data) { return response.data } else {\r\n\t\t\t\t// Handling error\r\n\t\t\t\tNotification.error({\r\n\t\t\t\t\tduration: 6000,\r\n\t\t\t\t\ttitle: 'Error',\r\n\t\t\t\t\tmessage: 'The assignment is not valid!'\r\n\t\t\t\t})\r\n\t\t\t}\r\n\t\t})\r\n\t\t.catch(error => {\r\n\t\t\tconsole.log(error)\r\n\t\t})\r\n}\r\n\r\nexport function getAssignmentsByQuery(query) {\r\n\treturn http.get(`assignment/odata?$filter=${query}`)\r\n\t\t.then(response => {\r\n\t\t\treturn response.data\r\n\t\t})\r\n\t\t.catch(error => {\r\n\t\t\tconsole.log(error)\r\n\t\t})\r\n}\r\n\r\nexport function getAssignmentsByClass(termCode, orgCode, classCode) {\r\n\treturn http.get('assignment/' + orgCode + '/' + termCode + '/' + classCode)\r\n\t\t.then(response => {\r\n\t\t\treturn response.data\r\n\t\t})\r\n\t\t.catch(error => {\r\n\t\t\tconsole.log(error)\r\n\t\t})\r\n}\r\n\r\nexport function GetPeerReviewAssignments(orgCode, termCode, classCode) {\r\n\treturn http.get('assignment/peer_review/' + orgCode + '/' + termCode + '/' + classCode)\r\n\t\t.then(response => {\r\n\t\t\treturn response.data\r\n\t\t})\r\n\t\t.catch(error => {\r\n\t\t\tconsole.log(error)\r\n\t\t})\r\n}\r\n\r\nexport function GetGroupProjectAssignments(orgCode, termCode, classCode) {\r\n\treturn http.get('assignment/group/' + orgCode + '/' + termCode + '/' + classCode)\r\n\t\t.then(response => {\r\n\t\t\treturn response.data\r\n\t\t})\r\n\t\t.catch(error => {\r\n\t\t\tconsole.log(error)\r\n\t\t})\r\n}\r\n\r\nexport function getCollectiveFeedbackAssignments(orgCode, termCode, classCode, username) {\r\n\treturn http.get('assignment/collective_feedback/' + orgCode + '/' + termCode + '/' + username + '/' + classCode)\r\n\t\t.then(response => {\r\n\t\t\treturn response.data\r\n\t\t})\r\n\t\t.catch(error => {\r\n\t\t\tconsole.log(error)\r\n\t\t})\r\n}\r\n\r\nexport function addNewAssignment(assignment) {\r\n\treturn http.post('assignment', assignment)\r\n\t\t.then(response => {\r\n\t\t\treturn response.data\r\n\t\t})\r\n\t\t.catch(error => {\r\n\t\t\tconsole.log(error)\r\n\t\t})\r\n}\r\n\r\nexport function updateAssignment(assignment) {\r\n\treturn http.put('assignment', assignment)\r\n\t\t.then(response => {\r\n\t\t\treturn response.data\r\n\t\t})\r\n\t\t.catch(error => {\r\n\t\t\tconsole.log(error)\r\n\t\t})\r\n}\r\n\r\nexport function deleteAssignment(assignmentId) {\r\n\treturn http.delete('assignment/' + assignmentId)\r\n\t\t.then(response => {\r\n\t\t\treturn response.data\r\n\t\t})\r\n\t\t.catch(error => {\r\n\t\t\tconsole.log(error)\r\n\t\t})\r\n}\r\n","import * as assignmentService from '@/services/assignment.service'\r\n// Enable namespaced module\r\nexport const namespaced = true\r\n\r\nconst getDefaultState = () => {\r\n\treturn {\r\n\t\tassignments: null,\r\n\t\tcurrentAssignment: null\r\n\t}\r\n}\r\n\r\nexport const state = getDefaultState()\r\n\r\nexport const actions = {\r\n\t// Todo: use only one api call for getting assignments with peer review duedate\r\n\tasync getAssignments({ commit, state, rootState }) {\r\n\t\tconst templateId = rootState.enrollment.currentCourse.ProjectTemplate\r\n\t\t// const orgCode = rootState.enrollment.orgCode\r\n\t\tconst assignments = await assignmentService.getAssignmentsWithTasks(templateId)\r\n\t\tcommit('SET_ASSIGNMENTS', assignments)\r\n\t\treturn assignments\r\n\t},\r\n\tsetAssignment({ commit, state }, assignmentId) {\r\n\t\tconst currentAssignment = state.assignments.find(function(el) {\r\n\t\t\treturn el.Id == assignmentId\r\n\t\t})\r\n\t\tcommit('SET_CURRENT_ASSIGNMENT', currentAssignment)\r\n\t},\r\n\tresetState({ commit }) {\r\n\t\tcommit('RESET_ASSIGNMENT_STATE')\r\n\t}\r\n}\r\n\r\nexport const mutations = {\r\n\tSET_ASSIGNMENTS(state, assignments) {\r\n\t\tstate.assignments = assignments\r\n\t},\r\n\tSET_CURRENT_ASSIGNMENT(state, currentAssignment) {\r\n\t\tstate.currentAssignment = currentAssignment\r\n\t},\r\n\tRESET_ASSIGNMENT_STATE(state) {\r\n\t\tObject.assign(state, getDefaultState())\r\n\t}\r\n}\r\n","/**\r\n * Enrollment service.\r\n * @module service/enrollment.service\r\n */\r\n\r\nimport http from '@/utils/axios'\r\n\r\n/**\r\n *\r\n * @param {string} accessToken app access token provided after login.\r\n * @param {string} username username that uniquely identifies a user.\r\n * @param {string} orgCode the code of the organization the user is enrolled in.\r\n */\r\nexport function getEnrollments(username, orgCode) {\r\n\treturn http.get('/enrollment/all/user/' + username + '/' + orgCode)\r\n\t\t.then(enrollments => {\r\n\t\t\treturn enrollments.data\r\n\t\t})\r\n\t\t.catch(error => {\r\n\t\t\tconsole.log(error)\r\n\t\t})\r\n}\r\n\r\nexport function getEnrollmentsForInstructor(termCode, username, orgCode) {\r\n\treturn http.get(\"enrollment/odata?$filter= TermCode eq '\" + termCode + \"' and OrgCode eq '\" + orgCode + \"' and UserId eq '\" + username + \"' and UserRole eq 'Instructor'\")\r\n\t\t.then(enrollments => {\r\n\t\t\treturn enrollments\r\n\t\t})\r\n\t\t.catch(error => {\r\n\t\t\tconsole.log(error)\r\n\t\t})\r\n}\r\n","import http from '@/utils/axios'\r\n\r\n// export function getSubscription(orgCode, username) {\r\n// \treturn http.get(\"subscriber/odata?$filter=Org_Code eq '\" + orgCode + \"' and Term_Code eq '\" + termCode + \"' and User_ID eq '\" + username + \"'\")\r\n// \t\t.then(response => {\r\n// \t\t\treturn response.data\r\n// \t\t})\r\n// \t\t.catch(error => {\r\n// \t\t\tconsole.log(error)\r\n// \t\t})\r\n// }\r\n\r\n// export function getSubscriptions(orgCode, username) {\r\n// \treturn http.get(\"subscriber/odata?$filter=Org_Code eq '\" + orgCode + \"' and User_ID eq '\" + username + \"'\")\r\n// \t\t.then(response => {\r\n// \t\t\treturn response.data\r\n// \t\t})\r\n// \t\t.catch(error => {\r\n// \t\t\tconsole.log(error)\r\n// \t\t})\r\n// }\r\n\r\nexport function getSubscriptions(orgCode, username) {\r\n\treturn http.get('subscriber/student/' + username + '/' + orgCode)\r\n\t\t.then(response => {\r\n\t\t\treturn response.data\r\n\t\t})\r\n\t\t.catch(error => {\r\n\t\t\tconsole.log(error)\r\n\t\t})\r\n}\r\n\r\nexport function submitPayment(username, termCode) {\r\n\treturn http.get('subscriber/payment/submit/' + username + '/' + termCode)\r\n\t\t.then(response => {\r\n\t\t\treturn response\r\n\t\t})\r\n\t\t.catch(error => {\r\n\t\t\tconsole.log(error)\r\n\t\t})\r\n}\r\n\r\n","/**\r\n * Enrollment service.\r\n * @module service/course.service\r\n */\r\n\r\nimport http from '@/utils/axios'\r\n\r\n/**\r\n *\r\n * @param {string} accessToken app access token provided after login.\r\n * @param {string} username username that uniquely identifies a user.\r\n * @param {string} orgCode the code of the organization the user is enrolled in.*/\r\n\r\nexport function getCourses(orgCode, termCode) {\r\n\treturn http.get('course/' + orgCode + '/' + termCode)\r\n\t\t.then(response => {\r\n\t\t\treturn response.data\r\n\t\t})\r\n\t\t.catch(error => {\r\n\t\t\tconsole.log(error)\r\n\t\t})\r\n}\r\n\r\nexport function getClassByCodeTermOrg(termCode, classCode, orgCode) {\r\n\treturn http.get('course/' + orgCode + '/' + termCode + '/' + classCode)\r\n\t\t.then(response => {\r\n\t\t\treturn response.data\r\n\t\t})\r\n\t\t.catch(error => {\r\n\t\t\tconsole.log(error)\r\n\t\t})\r\n}\r\n\r\nexport function getInstructorsByClassCode(termCode, classCode, orgCode) {\r\n\tconst url = 'user/enrolled/' + orgCode + '/' + termCode + '/' + classCode + '/Instructor'\r\n\r\n\treturn http.get(url)\r\n\t\t.then(response => {\r\n\t\t\treturn response.data\r\n\t\t})\r\n\t\t.catch(error => {\r\n\t\t\tconsole.log(error)\r\n\t\t})\r\n}\r\n\r\nexport function getCourseByTemplate(orgCode, termCode, templateId) {\r\n\treturn http.get('course/template/' + orgCode + '/' + termCode + '/' + templateId)\r\n\t\t.then(response => {\r\n\t\t\treturn response.data\r\n\t\t})\r\n\t\t.catch(error => {\r\n\t\t\tconsole.log(error)\r\n\t\t})\r\n}\r\n\r\n","import * as enrollmentService from '@/services/enrollment.service'\r\nimport * as subscriptionService from '@/services/subscription.service'\r\nimport * as courseService from '@/services/course.service'\r\nimport _ from 'lodash'\r\n// Enable namespaced module\r\nexport const namespaced = true\r\n\r\nconst getDefaultState = () => {\r\n\treturn {\r\n\t\tenrollments: null,\r\n\t\tcourses: null,\r\n\t\tcurrentCourse: null,\r\n\t\tuserRole: null,\r\n\t\torgCode: null,\r\n\t\ttermCode: null,\r\n\t\tsubscribedTerms: [],\r\n\t\ttextbookVisible: false,\r\n\t\tcurrentTermSubscribed: false,\r\n\t\tshowPayment: false,\r\n\t\tpaymentTermCode: null\r\n\t}\r\n}\r\n\r\nexport const state = getDefaultState()\r\n\r\nexport const actions = {\r\n\tsetPayment({ commit }, { showPayment, currentTerm }) {\r\n\t\tcommit('SET_PAYMENT', { showPayment, currentTerm })\r\n\t},\r\n\t/**\r\n\t *\r\n\t * @param {*} param\r\n\t */\r\n\tasync getEnrollments({ commit, state, dispatch }, payload) {\r\n\t\tconst enrollments = await enrollmentService.getEnrollments(payload.username, payload.orgCode)\r\n\t\tif (enrollments && enrollments.length > 0) {\r\n\t\t\tconst activeEnrollments = enrollments.filter(e => e.IsActive == true)\r\n\t\t\tcommit('SET_ENROLLMENTS', activeEnrollments)\r\n\t\t\tconst courses = activeEnrollments\r\n\t\t\t\t.map(item => {\r\n\t\t\t\t\tif (item != null) {\r\n\t\t\t\t\t\tconst course = {\r\n\t\t\t\t\t\t\tId: item.Id,\r\n\t\t\t\t\t\t\tClassCode: item.ClassCode,\r\n\t\t\t\t\t\t\tClassDescription: item.ClassDescription,\r\n\t\t\t\t\t\t\tIsPaidCourse: item.IsPaidCourse,\r\n\t\t\t\t\t\t\tOrgCode: item.OrgCode,\r\n\t\t\t\t\t\t\tProjectTemplate: item.ProjectTemplateId,\r\n\t\t\t\t\t\t\tTermCode: item.TermCode,\r\n\t\t\t\t\t\t\tUserRole: item.UserRole,\r\n\t\t\t\t\t\t\tPartOfTerm: item.PartOfTerm,\r\n\t\t\t\t\t\t\tCourseNumber: item.CourseNumber,\r\n\t\t\t\t\t\t\tSectionNumber: item.SectionNumber\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\treturn course\r\n\t\t\t\t\t}\r\n\t\t\t\t})\r\n\t\t\t\t.filter(item => { return item != null })\r\n\r\n\t\t\tcommit('SET_COURSES', courses)\r\n\t\t\tdispatch('enrollment/getSubscriptions', payload, { root: true })\r\n\t\t} else {\r\n\t\t\tcommit('SET_ENROLLMENTS', null)\r\n\t\t\tcommit('SET_COURSES', null)\r\n\t\t}\r\n\t},\r\n\r\n\tasync getSubscriptions({ commit, state }, payload) {\r\n\t\tconst subscriptions = await subscriptionService.getSubscriptions(payload.orgCode, payload.username)\r\n\t\tif (subscriptions && subscriptions.length > 0) {\r\n\t\t\tconst subscribedTerms = subscriptions\r\n\t\t\t\t.map(item => {\r\n\t\t\t\t\tif (item != null && item.Term_Code != null) {\r\n\t\t\t\t\t\treturn item.Term_Code\r\n\t\t\t\t\t}\r\n\t\t\t\t})\r\n\t\t\t\t.filter(item => { return item != null })\r\n\r\n\t\t\tif (subscribedTerms && subscribedTerms.length > 0) {\r\n\t\t\t\tcommit('SET_SUBSCRIBED_TERMS', subscribedTerms)\r\n\t\t\t\tconst latestTermSubcription = subscribedTerms.find(function (el) {\r\n\t\t\t\t\treturn el == state.courses[0].TermCode\r\n\t\t\t\t})\r\n\r\n\t\t\t\tconst hasPTC = state.courses.find(function (el) {\r\n\t\t\t\t\treturn el.TermCode == state.courses[0].TermCode &&\r\n\t\t\t\t\t\t(el.ClassDescription.includes('ENC 2210') ||\r\n\t\t\t\t\t\t\tel.ClassDescription.includes('ENC 3246') ||\r\n\t\t\t\t\t\t\tel.ClassDescription.includes('ENC 3250') ||\r\n\t\t\t\t\t\t\tel.ClassDescription.includes('ENC 3249'))\r\n\t\t\t\t})\r\n\r\n\t\t\t\t//IX SET_TEXTBOOK_VISIBLE NOW ALWAYS FALSE FOR TERMS AFTER 202408 - BOOKSTORE RULE DISALLOWING TEXTBOOK IN APP? AS PER MARK LEAHY\r\n\t\t\t\t//if (latestTermSubcription && latestTermSubcription.length > 0 && hasPTC) { commit('SET_TEXTBOOK_VISIBLE', true) } else { commit('SET_TEXTBOOK_VISIBLE', false) }\r\n\t\t\t\tif (latestTermSubcription && latestTermSubcription.length > 0 && hasPTC && state.currentCourse.TermCode < 202408 ) { commit('SET_TEXTBOOK_VISIBLE', true) } else { commit('SET_TEXTBOOK_VISIBLE', false) }\r\n\r\n\t\t\t\tif (state.currentCourse) {\r\n\t\t\t\t\tconst currentTermSubcription = subscribedTerms.find(function (el) {\r\n\t\t\t\t\t\treturn el == state.currentCourse.TermCode\r\n\t\t\t\t\t})\r\n\t\t\t\t\tif (currentTermSubcription && currentTermSubcription.length > 0) { commit('CURRENT_TERM_SUBSCRIBED', true) } else { commit('CURRENT_TERM_SUBSCRIBED', false) }\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tcommit('SET_SUBSCRIBED_TERMS', [])\r\n\t\t\tcommit('SET_TEXTBOOK_VISIBLE', false)\r\n\t\t\tcommit('CURRENT_TERM_SUBSCRIBED', false)\r\n\t\t}\r\n\t},\r\n\r\n\t// async getSubscriptions({commit, state}, payload){\r\n\t// \tlet subscriptions = await subscriptionService.getSubscriptions(payload.orgCode, payload.username);\r\n\t// \tif(subscriptions && subscriptions.length > 0){\r\n\t// \t\tlet subscribedTerms = subscriptions\r\n\t// \t\t\t.map( item => {\r\n\t// \t\t\t\tif(item != null && item.Term_Code != null){\r\n\t// \t\t\t\t\treturn item.Term_Code;\r\n\t// \t\t\t\t}\r\n\t// \t\t\t}).filter( item => { return item != null;});\r\n\r\n\t// \t\tif(subscribedTerms && subscribedTerms.length > 0){\r\n\t// \t\t\tcommit('SET_SUBSCRIBED_TERMS', subscribedTerms);\r\n\t// \t\t\tlet latestTermSubcription = subscribedTerms.find(function(el){\r\n\t// \t\t\t\treturn el == state.courses[0].TermCode;\r\n\t// \t\t\t});\r\n\r\n\t// \t\t\tlet hasPTC = state.courses.find(function(el){\r\n\t// \t\t\t\treturn el.TermCode == state.courses[0].TermCode && state.courses[0].TermCode == '202005' &&\r\n\t// \t\t (el.ClassDescription.includes('ENC 2210') ||\r\n\t// el.ClassDescription.includes('ENC 3246') ||\r\n\t// el.ClassDescription.includes('ENC 3250')) ;\r\n\t// \t\t\t});\r\n\r\n\t// \t\t\tif(hasPTC && latestTermSubcription && latestTermSubcription.length > 0)\r\n\t// \t\t\t\tcommit('SET_TEXTBOOK_VISIBLE', true);\r\n\t// \t\t\telse\r\n\t// \t\t\t\tcommit('SET_TEXTBOOK_VISIBLE', false);\r\n\r\n\t// \t\t\tif(state.currentCourse){\r\n\t// \t\t\t\tlet currentTermSubcription = subscribedTerms.find(function(el){\r\n\t// \t\t\t\t return el == state.currentCourse.TermCode;\r\n\t// \t\t\t\t});\r\n\t// \t\t\t\tif(currentTermSubcription && currentTermSubcription.length > 0)\r\n\t// \t\t\t\t\tcommit('CURRENT_TERM_SUBSCRIBED', true);\r\n\t// \t\t\t\telse\r\n\t// \t\t\t\t\tcommit('CURRENT_TERM_SUBSCRIBED', false);\r\n\t// \t\t\t}\r\n\r\n\t// \t\t}\r\n\r\n\t// \t}\r\n\t// },\r\n\r\n\t// async getSubscriptions({commit, state}, payload){\r\n\r\n\t// \tlet hasPTC = state.courses.find(function(el){\r\n\t// \t\treturn el.TermCode == state.courses[0].TermCode && state.courses[0].TermCode == '202005' &&\r\n\t// \t\t(el.ClassDescription.includes('ENC 2210') ||\r\n\t// el.ClassDescription.includes('ENC 3246') ||\r\n\t// el.ClassDescription.includes('ENC 3250')) ;\r\n\t// \t});\r\n\r\n\t// \tif(hasPTC) //& latestTermSubcription && latestTermSubcription.length > 0)\r\n\t// \t\tcommit('SET_TEXTBOOK_VISIBLE', true);\r\n\t// \telse\r\n\t// \t\tcommit('SET_TEXTBOOK_VISIBLE', false);\r\n\r\n\t// \tlet subscriptions = await subscriptionService.getSubscriptions(payload.orgCode, payload.username);\r\n\t// \tif(subscriptions && subscriptions.length > 0){\r\n\t// \t\tlet subscribedTerms = subscriptions\r\n\t// \t\t\t.map( item => {\r\n\t// \t\t\t\tif(item != null && item.Term_Code != null){\r\n\t// \t\t\t\t\treturn item.Term_Code;\r\n\t// \t\t\t\t}\r\n\t// \t\t\t}).filter( item => { return item != null;});\r\n\r\n\t// \t\tif(subscribedTerms && subscribedTerms.length > 0){\r\n\t// \t\t\tcommit('SET_SUBSCRIBED_TERMS', subscribedTerms);\r\n\r\n\t// \t\t\tif(state.currentCourse){\r\n\t// \t\t\t\tlet currentTermSubcription = subscribedTerms.find(function(el){\r\n\t// \t\t\t\t return el == state.currentCourse.TermCode;\r\n\t// \t\t\t\t});\r\n\t// \t\t\t\tif(currentTermSubcription && currentTermSubcription.length > 0)\r\n\t// \t\t\t\t\tcommit('CURRENT_TERM_SUBSCRIBED', true);\r\n\t// \t\t\t\telse\r\n\t// \t\t\t\t\tcommit('CURRENT_TERM_SUBSCRIBED', false);\r\n\t// \t\t\t}\r\n\r\n\t// \t\t}\r\n\t// \t}\r\n\r\n\t// \tif(state.currentCourse && state.currentCourse.TermCode == '202005')\r\n\t// \t\tcommit('CURRENT_TERM_SUBSCRIBED', true);\r\n\t// },\r\n\r\n\t/**\r\n\t *\r\n\t * @param {*} param\r\n\t */\r\n\tasync selectCourse({ commit, dispatch, state }, payload) {\r\n\t\t// find the selected course in the enrollments list.\r\n\t\tconst course = _.find(state.courses, {\r\n\t\t\tClassCode: payload.classCode,\r\n\t\t\tTermCode: payload.termCode\r\n\t\t})\r\n\r\n\t\tif (course) {\r\n\t\t\t// Set current course based on selection.\r\n\t\t\tcommit('SET_COURSE', course)\r\n\t\t\t// Set user role based on course selected.\r\n\t\t\tcommit('SET_ROLE', course.UserRole)\r\n\t\t\t// Set assignment.assignments state\r\n\t\t\tawait dispatch('assignment/getAssignments', null, { root: true })\r\n\t\t\t// Set viewAs.students state\r\n\t\t\tif (course.UserRole != 'Student') {\r\n\t\t\t\tdispatch('viewAs/getStudentList', {\r\n\t\t\t\t\torgCode: course.OrgCode,\r\n\t\t\t\t\ttermCode: course.TermCode,\r\n\t\t\t\t\tclassCode: course.ClassCode\r\n\t\t\t\t}, { root: true })\r\n\t\t\t}\r\n\t\t\treturn course.UserRole\r\n\t\t} else {\r\n\t\t\tconsole.log('Error: course cannot be found!')\r\n\t\t\treturn null\r\n\t\t}\r\n\t},\r\n\r\n\tasync selectAdminCourse({ commit, dispatch, state }, payload) {\r\n\t\tvar instructor = await courseService.getInstructorsByClassCode(payload.adminCourse.TermCode, payload.adminCourse.ClassCode, payload.adminCourse.OrgCode)\r\n\t\tconsole.log(instructor)\r\n\t\tconst instructorId = payload.adminCourse.OrgCode + ';' + instructor[0].UserName\r\n\t\tcommit('SET_ROLE', 'Instructor')\r\n\t\tawait dispatch('viewAs/viewAsInstructor', instructorId, { root: true })\r\n\t\tawait commit('SET_COURSE', payload.adminCourse)\r\n\t\tawait dispatch('assignment/getAssignments', null, { root: true })\r\n\r\n\t\tawait dispatch('viewAs/getStudentList', {\r\n\t\t\torgCode: payload.adminCourse.OrgCode,\r\n\t\t\ttermCode: payload.adminCourse.TermCode,\r\n\t\t\tclassCode: payload.adminCourse.ClassCode\r\n\t\t}, { root: true })\r\n\t},\r\n\r\n\tsetUserRole({ commit }, userRole) {\r\n\t\tcommit('SET_ROLE', userRole)\r\n\t},\r\n\r\n\tresetCourse({ commit }) {\r\n\t\tcommit('SET_COURSE', null)\r\n\t\tcommit('SET_ROLE', null)\r\n\t},\r\n\r\n\tresetState({ commit, state }) {\r\n\t\tcommit('RESET_ENROLLMENT_STATE')\r\n\t}\r\n}\r\n\r\nexport const mutations = {\r\n\tSET_PAYMENT(state, { showPayment, currentTerm }) {\r\n\t\tstate.paymentTermCode = currentTerm\r\n\t\tstate.showPayment = showPayment\r\n\t},\r\n\t/**\r\n\t *\r\n\t * @param {*} state\r\n\t * @param {*} enrollments\r\n\t */\r\n\tSET_ENROLLMENTS(state, enrollments) {\r\n\t\tstate.enrollments = enrollments\r\n\t},\r\n\r\n\tSET_COURSES(state, courses) {\r\n\t\tstate.courses = courses\r\n\t},\r\n\t/**\r\n\t *\r\n\t * @param {*} state\r\n\t * @param {*} userRole\r\n\t */\r\n\tSET_ROLE(state, userRole) {\r\n\t\tstate.userRole = userRole\r\n\t},\r\n\r\n\t/**\r\n\t *\r\n\t * @param {*} state\r\n\t * @param {*} course\r\n\t */\r\n\tSET_COURSE(state, course) {\r\n\t\tstate.currentCourse = course\r\n\t\tif (course != null) {\r\n\t\t\tstate.orgCode = course.OrgCode\r\n\t\t\tstate.termCode = course.TermCode\r\n\t\t}\r\n\t},\r\n\r\n\t/**\r\n\t *\r\n\t * @param {*} state\r\n\t * @param {*} courses\r\n\t */\r\n\tSET_ENROLLED_COURSES(state, courses) {\r\n\t\tstate.enrolledCourses = courses\r\n\t},\r\n\r\n\tSET_TEXTBOOK_VISIBLE(state, textbookVisible) {\r\n\t\tstate.textbookVisible = textbookVisible\r\n\t},\r\n\r\n\tSET_SUBSCRIBED_TERMS(state, subscribedTerms) {\r\n\t\tstate.subscribedTerms = subscribedTerms\r\n\t},\r\n\r\n\tCURRENT_TERM_SUBSCRIBED(state, currentTermSubscribed) {\r\n\t\tstate.currentTermSubscribed = currentTermSubscribed\r\n\t},\r\n\r\n\tRESET_ENROLLMENT_STATE(state) {\r\n\t\tObject.assign(state, getDefaultState())\r\n\t}\r\n\r\n}\r\n\r\n","import http from '@/utils/axios'\r\nimport { Notification } from 'element-ui'\r\n\r\nexport function GetCFWithIssues(orgCode, username, termCode, classCode, assignmentId) {\r\n\tlet url = ''\r\n\tif (classCode == 'all') {\r\n\t\turl = \"/collective_feedback/issues/odata?$filter=TermCode eq '\" + termCode + \"' and OrgCode eq '\" + orgCode + \"' and CreatedBy eq '\" + username + \"' and IsActive eq 1 &$orderby=UpdatedTime\"\r\n\t} else if (assignmentId == 'all') {\r\n\t\turl = \"/collective_feedback/issues/odata?$filter=TermCode eq '\" + termCode + \"' and OrgCode eq '\" + orgCode + \"' and CreatedBy eq '\" + username + \"' and ClassCode eq '\" + classCode + \"' and IsActive eq 1 &$orderby=UpdatedTime\"\r\n\t} else {\r\n\t\turl = \"/collective_feedback/issues/odata?$filter=TermCode eq '\" + termCode + \"' and OrgCode eq '\" + orgCode + \"' and CreatedBy eq '\" + username + \"' and ClassCode eq '\" + classCode + \"' and AssignmentId eq \" + assignmentId + ' and IsActive eq 1 &$orderby=UpdatedTime'\r\n\t}\r\n\treturn http.get(url)\r\n\t\t.then(collectiveFeedbacks => {\r\n\t\t\treturn collectiveFeedbacks.data\r\n\t\t})\r\n\t\t.catch(error => {\r\n\t\t\tNotification.error({\r\n\t\t\t\tduration: 6000,\r\n\t\t\t\ttitle: 'Error',\r\n\t\t\t\tmessage: error\r\n\t\t\t})\r\n\t\t})\r\n}\r\n\r\nexport function GetAllCFReport(orgCode, username, termCode, courseType) {\r\n\treturn http.get('collective_feedback/report/all/' + username + '/' + orgCode + '/' + termCode + '/' + courseType)\r\n\t\t.then(collectiveFeedbacks => {\r\n\t\t\treturn collectiveFeedbacks.data\r\n\t\t})\r\n\t\t.catch(error => {\r\n\t\t\tNotification.error({\r\n\t\t\t\tduration: 6000,\r\n\t\t\t\ttitle: 'Error',\r\n\t\t\t\tmessage: error\r\n\t\t\t})\r\n\t\t})\r\n}\r\n\r\nexport function GetCFReportForAllInstructors(orgCode, termCode, assignmentName, courseType) {\r\n\treturn http.get('collective_feedback/report/all/instructor/' + orgCode + '/' + termCode + '/' + assignmentName + '/' + courseType)\r\n\t\t.then(collectiveFeedbacks => {\r\n\t\t\treturn collectiveFeedbacks.data\r\n\t\t})\r\n\t\t.catch(error => {\r\n\t\t\tNotification.error({\r\n\t\t\t\tduration: 6000,\r\n\t\t\t\ttitle: 'Error',\r\n\t\t\t\tmessage: error\r\n\t\t\t})\r\n\t\t})\r\n}\r\n\r\nexport function GetCFReportByClass(orgCode, username, classCode, termCode) {\r\n\treturn http.get('collective_feedback/report/course/' + orgCode + '/' + username + '/' + classCode + '/' + termCode)\r\n\t\t.then(collectiveFeedbacks => {\r\n\t\t\treturn collectiveFeedbacks.data\r\n\t\t})\r\n\t\t.catch(error => {\r\n\t\t\tNotification.error({\r\n\t\t\t\tduration: 6000,\r\n\t\t\t\ttitle: 'Error',\r\n\t\t\t\tmessage: error\r\n\t\t\t})\r\n\t\t})\r\n}\r\n\r\nexport function GetAllCFReportByAssignment(orgCode, username, classCode, termCode, assignmentId) {\r\n\treturn http.get('collective_feedback/report/assignment/' + orgCode + '/' + username + '/' + classCode + '/' + termCode + '/' + assignmentId)\r\n\t\t.then(collectiveFeedbacks => {\r\n\t\t\treturn collectiveFeedbacks.data\r\n\t\t})\r\n\t\t.catch(error => {\r\n\t\t\tNotification.error({\r\n\t\t\t\tduration: 6000,\r\n\t\t\t\ttitle: 'Error',\r\n\t\t\t\tmessage: error\r\n\t\t\t})\r\n\t\t})\r\n}\r\n\r\nexport function getCollectiveFeedbackModel(orgCode, username, termCode, classCode, userRole) {\r\n\treturn http.get('collective_feedback/model/' + orgCode + '/' + username + '/' + classCode + '/' + termCode + '/' + userRole)\r\n\t\t.then(collectiveFeedbacks => {\r\n\t\t\treturn collectiveFeedbacks.data\r\n\t\t})\r\n\t\t.catch(error => {\r\n\t\t\tNotification.error({\r\n\t\t\t\tduration: 6000,\r\n\t\t\t\ttitle: 'Error',\r\n\t\t\t\tmessage: error\r\n\t\t\t})\r\n\t\t})\r\n}\r\n\r\nexport async function getCollectiveFeedbacksByClass(orgCode, username, termCode, classCode, userRole) {\r\n\tlet url = ''\r\n\tif (userRole == 'Student') {\r\n\t\turl = \"/collective_feedback/odata?$filter=TermCode eq '\" + termCode + \"' and OrgCode eq '\" + orgCode + \"' and ClassCode eq '\" + classCode + \"' and ShowToStudent eq 1 and IsActive eq 1 &$orderby=UpdatedTime \"\r\n\t} else if (userRole == 'Instructor') {\r\n\t\turl = \"/collective_feedback/odata?$filter= OrgCode eq '\" + orgCode + \"' and CreatedBy eq '\" + username + \"' and ClassCode eq '\" + classCode + \"' and IsActive eq 1 &$orderby=UpdatedTime \"\r\n\t} else {\r\n\t\turl = \"/collective_feedback/odata?$filter= OrgCode eq '\" + orgCode + \"' and ClassCode eq '\" + classCode + \"' and IsActive eq 1 &$orderby=UpdatedTime \"\r\n\t}\r\n\r\n\treturn await http.get(url)\r\n\t\t.then(collectiveFeedbacks => {\r\n\t\t\treturn collectiveFeedbacks.data\r\n\t\t})\r\n\t\t.catch(error => {\r\n\t\t\tNotification.error({\r\n\t\t\t\tduration: 6000,\r\n\t\t\t\ttitle: 'Error',\r\n\t\t\t\tmessage: error\r\n\t\t\t})\r\n\t\t})\r\n}\r\n\r\nexport async function getAllCollectiveFeedbacks(orgCode, username, termCode, userRole) {\r\n\tlet url = ''\r\n\tif (userRole == 'Instructor') {\r\n\t\turl = \"/collective_feedback/odata?$filter= OrgCode eq '\" + orgCode + \"' and CreatedBy eq '\" + username + \"' and IsActive eq 1 &$orderby=UpdatedTime \"\r\n\t} else {\r\n\t\turl = \"/collective_feedback/odata?$filter=TermCode eq '\" + termCode + \"' and OrgCode eq '\" + orgCode + \"' and IsActive eq 1 &$orderby=UpdatedTime \"\r\n\t}\r\n\treturn await http.get(url)\r\n\t\t.then(collectiveFeedbacks => {\r\n\t\t\treturn collectiveFeedbacks.data\r\n\t\t})\r\n\t\t.catch(error => {\r\n\t\t\tNotification.error({\r\n\t\t\t\tduration: 6000,\r\n\t\t\t\ttitle: 'Error',\r\n\t\t\t\tmessage: error\r\n\t\t\t})\r\n\t\t})\r\n}\r\n\r\nexport async function getCollectiveFeedbacks(orgCode, username, termCode, classCode, userRole) {\r\n\tlet url = ''\r\n\tif (userRole == 'Instructor') {\r\n\t\turl = \"/collective_feedback/odata?$filter= OrgCode eq '\" + orgCode + \"' and CreatedBy eq '\" + username + \"' and ClassCode eq '\" + classCode + \"' and IsActive eq 1 &$orderby=UpdatedTime \"\r\n\t} else {\r\n\t\turl = \"/collective_feedback/odata?$filter=TermCode eq '\" + termCode + \"' and OrgCode eq '\" + orgCode + \"' and ClassCode eq '\" + classCode + \"' and IsActive eq 1\"\r\n\t}\r\n\treturn await http.get(url)\r\n\t\t.then(collectiveFeedbacks => {\r\n\t\t\treturn collectiveFeedbacks.data\r\n\t\t})\r\n\t\t.catch(error => {\r\n\t\t\tNotification.error({\r\n\t\t\t\tduration: 6000,\r\n\t\t\t\ttitle: 'Error',\r\n\t\t\t\tmessage: error\r\n\t\t\t})\r\n\t\t})\r\n}\r\n\r\nexport function getCollectiveFeedbacksByAssignment(orgCode, termCode, classCode, username, assignmentId) {\r\n\treturn http.get(\"/collective_feedback/odata?$filter=TermCode eq '\" + termCode + \"' and OrgCode eq '\" + orgCode + \"' and ClassCode eq '\" + classCode + \"' and CreatedBy eq '\" + username + \"' and IsActive eq 1\")\r\n\t\t.then(collectiveFeedbacks => {\r\n\t\t\treturn collectiveFeedbacks.data\r\n\t\t})\r\n\t\t.catch(error => {\r\n\t\t\tNotification.error({\r\n\t\t\t\tduration: 6000,\r\n\t\t\t\ttitle: 'Error',\r\n\t\t\t\tmessage: error\r\n\t\t\t})\r\n\t\t})\r\n}\r\n\r\nexport function getAllCFByClass(orgCode, username, classCode, termCode) {\r\n\treturn http.get('/collective_feedback/course/' + orgCode + '/' + username + '/' + classCode + '/' + termCode)\r\n\t\t.then(collectiveFeedback => {\r\n\t\t\treturn collectiveFeedback.data\r\n\t\t})\r\n\t\t.catch(error => {\r\n\t\t\tNotification.error({\r\n\t\t\t\tduration: 6000,\r\n\t\t\t\ttitle: 'Error',\r\n\t\t\t\tmessage: error\r\n\t\t\t})\r\n\t\t})\r\n}\r\n\r\nexport function getAllCFByAssignment(orgCode, classCode, termCode, assignmentId) {\r\n\treturn http.get('/collective_feedback/assignment/' + orgCode + '/' + classCode + '/' + termCode + '/' + assignmentId)\r\n\t\t.then(collectiveFeedback => {\r\n\t\t\treturn collectiveFeedback.data\r\n\t\t})\r\n\t\t.catch(error => {\r\n\t\t\tNotification.error({\r\n\t\t\t\tduration: 6000,\r\n\t\t\t\ttitle: 'Error',\r\n\t\t\t\tmessage: error\r\n\t\t\t})\r\n\t\t})\r\n}\r\n\r\nexport async function getCollectiveFeedbackById(collectiveFeedbackId) {\r\n\treturn await http.get('/collective_feedback/' + collectiveFeedbackId)\r\n\t\t.then(collectiveFeedback => {\r\n\t\t\treturn collectiveFeedback.data\r\n\t\t})\r\n\t\t.catch(error => {\r\n\t\t\tNotification.error({\r\n\t\t\t\tduration: 6000,\r\n\t\t\t\ttitle: 'Error',\r\n\t\t\t\tmessage: error\r\n\t\t\t})\r\n\t\t})\r\n}\r\n\r\nexport function getByIdWithIssues(collectiveFeedbackId) {\r\n\treturn http.get('/collective_feedback/' + collectiveFeedbackId + '/issues')\r\n\t\t.then(collectiveFeedback => {\r\n\t\t\treturn collectiveFeedback.data\r\n\t\t})\r\n\t\t.catch(error => {\r\n\t\t\tNotification.error({\r\n\t\t\t\tduration: 6000,\r\n\t\t\t\ttitle: 'Error',\r\n\t\t\t\tmessage: error\r\n\t\t\t})\r\n\t\t})\r\n}\r\n\r\nexport function postCollectiveFeedback(collectiveFeedback) {\r\n\treturn http.post('/collective_feedback/', collectiveFeedback)\r\n\t\t.then(response => {\r\n\t\t\treturn response.data\r\n\t\t})\r\n\t\t.catch(error => {\r\n\t\t\tNotification.error({\r\n\t\t\t\tduration: 6000,\r\n\t\t\t\ttitle: 'Error',\r\n\t\t\t\tmessage: error\r\n\t\t\t})\r\n\t\t})\r\n}\r\n\r\nexport function putCollectiveFeedback(collectiveFeedback) {\r\n\treturn http.put('/collective_feedback/', collectiveFeedback)\r\n\t\t.then(response => {\r\n\t\t\tconsole.log(response)\r\n\t\t\treturn response.data\r\n\t\t})\r\n\t\t.catch(error => {\r\n\t\t\tNotification.error({\r\n\t\t\t\tduration: 6000,\r\n\t\t\t\ttitle: 'Error',\r\n\t\t\t\tmessage: error\r\n\t\t\t})\r\n\t\t})\r\n}\r\n","import * as termService from '@/services/term.service'\r\n\r\nexport function getTermByCodeAndOrg(termCode, orgCode) {\r\n\treturn termService.getAllTerms()\r\n\t\t.then(response => {\r\n\t\t\tconst terms = response.data\r\n\t\t\tfor (const index in terms) {\r\n\t\t\t\tif (terms[index]['OrgCode'] == orgCode && terms[index]['TermCode'] == termCode) {\r\n\t\t\t\t\treturn terms[index]\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t})\r\n\t\t.catch(error => {\r\n\t\t\tconsole.log(error)\r\n\t\t})\r\n}\r\n\r\nexport async function getTermName(termCode, orgCode) {\r\n\tconst term = await getTermByCodeAndOrg(termCode, orgCode)\r\n\r\n\tconst termName = term['TermDescription']\r\n\r\n\treturn termName\r\n}\r\n","import * as courseService from '@/services/course.service'\r\n// Enable namespaced module\r\nexport const namespaced = true\r\n\r\nexport const actions = {\r\n\r\n}\r\n\r\nexport async function getClassName(termCode, classCode, orgCode) {\r\n\tconst course = await courseService.getClassByCodeTermOrg(termCode, classCode, orgCode)\r\n\r\n\tconst className = course.data[0]['ClassDescription']\r\n\treturn className\r\n}\r\n","import moment from 'moment'\r\n// Enable namespaced module\r\nexport const namespaced = true\r\n\r\nexport function formatDate(uploadedDateStr) {\r\n\tconst uploadedDate = moment(uploadedDateStr)._d\r\n\r\n\tconst monthNames = [\r\n\t\t'Jan', 'Feb', 'Mar',\r\n\t\t'Apr', 'May', 'Jun', 'Jul',\r\n\t\t'Aug', 'Sep', 'Oct',\r\n\t\t'Nov', 'Dec'\r\n\t]\r\n\tlet hours = uploadedDate.getHours()\r\n\tlet minutes = uploadedDate.getMinutes()\r\n\tconst ampm = hours >= 12 ? 'pm' : 'am'\r\n\thours = hours % 12\r\n\thours = hours || 12 // the hour '0' should be '12'\r\n\tminutes = minutes < 10 ? '0' + minutes : minutes\r\n\tconst strTime = hours + ':' + minutes + ' ' + ampm\r\n\r\n\tconst day = uploadedDate.getDate()\r\n\tconst monthIndex = uploadedDate.getMonth()\r\n\t// const year = uploadedDate.getFullYear()\r\n\r\n\treturn monthNames[monthIndex] + ' ' + day + ' at ' + strTime + ' ' + 'EST'\r\n}\r\n","import http from '@/utils/axios'\r\nimport { Notification } from 'element-ui'\r\n\r\nexport async function getCollectiveFeedbackIssues(cfId, userRole) {\r\n\tlet url = ''\r\n\tif (userRole == 'Student') {\r\n\t\turl = '/cf_issue/odata?$filter=CollectiveFeedbackId eq ' + cfId + ' and ShowToStudent eq 1 and IsActive eq 1'\r\n\t} else {\r\n\t\turl = '/cf_issue/odata?$filter=CollectiveFeedbackId eq ' + cfId + ' and IsActive eq 1'\r\n\t}\r\n\r\n\treturn await http.get(url)\r\n\t\t.then(collectiveFeedbackIssues => {\r\n\t\t\treturn collectiveFeedbackIssues.data\r\n\t\t})\r\n\t\t.catch(error => {\r\n\t\t\tNotification.error({\r\n\t\t\t\tduration: 6000,\r\n\t\t\t\ttitle: 'Error',\r\n\t\t\t\tmessage: error\r\n\t\t\t})\r\n\t\t})\r\n}\r\n\r\nexport async function getCollectiveFeedbackIssueByIssueId(issueId) {\r\n\treturn await http.get('/cf_issue/' + issueId)\r\n\t\t.then(collectiveFeedbackIssue => {\r\n\t\t\treturn collectiveFeedbackIssue.data\r\n\t\t})\r\n\t\t.catch(error => {\r\n\t\t\tNotification.error({\r\n\t\t\t\tduration: 6000,\r\n\t\t\t\ttitle: 'Error',\r\n\t\t\t\tmessage: error\r\n\t\t\t})\r\n\t\t})\r\n}\r\n\r\nexport function postCollectiveFeedbackIssue(collectiveFeedbackIssue) {\r\n\treturn http.post('/cf_issue/', collectiveFeedbackIssue)\r\n\t\t.then(response => {\r\n\t\t\treturn response.data\r\n\t\t})\r\n\t\t.catch(error => {\r\n\t\t\tNotification.error({\r\n\t\t\t\tduration: 6000,\r\n\t\t\t\ttitle: 'Error',\r\n\t\t\t\tmessage: error\r\n\t\t\t})\r\n\t\t})\r\n}\r\n\r\nexport function putCollectiveFeedbackIssue(collectiveFeedbackIssue) {\r\n\treturn http.put('/cf_issue/', collectiveFeedbackIssue)\r\n\t\t.then(response => {\r\n\t\t\treturn response.data\r\n\t\t})\r\n\t\t.catch(error => {\r\n\t\t\tNotification.error({\r\n\t\t\t\tduration: 6000,\r\n\t\t\t\ttitle: 'Error',\r\n\t\t\t\tmessage: error\r\n\t\t\t})\r\n\t\t})\r\n}\r\n","import * as cfIssueService from '@/services/collective_feedback_issue.service'\r\n// Enable namespaced module\r\nexport const namespaced = true\r\n\r\nexport async function getCollectiveFeedbackIssues(cfId) {\r\n\treturn await cfIssueService.getCollectiveFeedbackIssues(cfId)\r\n\t\t.then(issues => {\r\n\t\t\treturn issues\r\n\t\t})\r\n}\r\n\r\nexport async function getCollectiveFeedbackIssueByIssueId(issueId) {\r\n\treturn await cfIssueService.getCollectiveFeedbackIssueByIssueId(issueId)\r\n\t\t.then(issue => {\r\n\t\t\treturn issue\r\n\t\t})\r\n}\r\n\r\nexport async function postCollectiveFeedbackIssue(collectiveFeedbackIssue) {\r\n\treturn await cfIssueService.postCollectiveFeedbackIssue(collectiveFeedbackIssue)\r\n\t\t.then(response => {\r\n\t\t\tconsole.log(response)\r\n\t\t\treturn response\r\n\t\t})\r\n}\r\n\r\nexport async function putCollectiveFeedbackIssue(collectiveFeedbackIssue) {\r\n\treturn await cfIssueService.putCollectiveFeedbackIssue(collectiveFeedbackIssue)\r\n\t\t.then(response => {\r\n\t\t\tconsole.log(response)\r\n\t\t\treturn response\r\n\t\t})\r\n}\r\n","import * as cfService from '@/services/collective_feedback.service'\r\nimport * as assignmentService from '@/services/assignment.service'\r\nimport * as termStore from '@/store/modules/term.js'\r\nimport * as courseStore from '@/store/modules/course.js'\r\nimport * as miscStore from '@/store/modules/misc.js'\r\nimport * as cfIssuesStore from '@/store/modules/collective_feedback_issue'\r\n\r\n// Enable namespaced module\r\nexport const namespaced = true\r\n\r\nexport async function getCollectiveFeedbackById(collectiveFeedbackId) {\r\n\tawait cfService.getCollectiveFeedbackById(collectiveFeedbackId)\r\n\t\t.then(response => {\r\n\t\t\tconsole.log(response)\r\n\t\t\tlet cf = []\r\n\t\t\tcf = response.data\r\n\t\t\tcf['AssignmentName'] = ''\r\n\t\t\tcf['TermName'] = ''\r\n\t\t\tcf['ClassName'] = ''\r\n\t\t\tif (cf['ShowToStudent'] == 1) {\r\n\t\t\t\tcf['ShowToStudentChar'] = 'Yes'\r\n\t\t\t} else {\r\n\t\t\t\tcf['ShowToStudentChar'] = 'No'\r\n\t\t\t}\r\n\t\t\tcfIssuesStore.getCollectiveFeedbackIssues(cf['Id']).then(issues => { cf['IssuesCount'] = issues.data.length })\r\n\t\t\tcf['UpdatedTimeStr'] = miscStore.formatDate(cf['UpdatedTime'])\r\n\t\t\tgetAssignmentName(cf['AssignmentId']).then(response => { cf['AssignmentName'] = response })\r\n\t\t\ttermStore.getTermName(cf['TermCode'], cf['Organization']).then(response => { cf['TermName'] = response })\r\n\t\t\tcourseStore.getClassName(cf['TermCode'], cf['ClassCode'], cf['Organization']).then(response => { cf['ClassName'] = response })\r\n\t\t\tconsole.log(cf)\r\n\t\t\treturn cf\r\n\t\t})\r\n}\r\n\r\nexport async function postCollectiveFeedback(collectiveFeedback) {\r\n\treturn await cfService.postCollectiveFeedback(collectiveFeedback)\r\n\t\t.then(response => {\r\n\t\t\treturn response\r\n\t\t})\r\n}\r\n\r\nexport function putCollectiveFeedback(collectiveFeedback) {\r\n\treturn cfService.putCollectiveFeedback(collectiveFeedback)\r\n\t\t.then(response => {\r\n\t\t\treturn response\r\n\t\t})\r\n}\r\n\r\nexport async function getCFTableData(parameters) {\r\n\tconst cf = []\r\n\tawait cfService.getCollectiveFeedbacks(parameters.orgCode, parameters.userId, parameters.termCode, parameters.classCode, parameters.userRole)\r\n\t\t.then(cfData => {\r\n\t\t\tfor (let i = 0; i < cfData.data.length; i++) {\r\n\t\t\t\tcf[i] = cfData.data[i]\r\n\t\t\t\tcf[i]['AssignmentName'] = ''\r\n\t\t\t\tcf[i]['TermName'] = ''\r\n\t\t\t\tcf[i]['ClassName'] = ''\r\n\t\t\t\tif (cf[i]['ShowToStudent'] == 1) {\r\n\t\t\t\t\tcf[i]['ShowToStudentChar'] = 'Yes'\r\n\t\t\t\t} else {\r\n\t\t\t\t\tcf[i]['ShowToStudentChar'] = 'No'\r\n\t\t\t\t}\r\n\t\t\t\tcfIssuesStore.getCollectiveFeedbackIssues(cf[i]['Id']).then(issues => { cf[i]['IssuesCount'] = issues.data.length })\r\n\t\t\t\tcf[i]['UpdatedTimeStr'] = miscStore.formatDate(cf[i]['UpdatedTime'])\r\n\t\t\t\tgetAssignmentName(cf[i]['AssignmentId']).then(response => { cf[i]['AssignmentName'] = response })\r\n\t\t\t\ttermStore.getTermName(cf[i]['TermCode'], cf[i]['Organization']).then(response => { cf[i]['TermName'] = response })\r\n\t\t\t\tcourseStore.getClassName(cf[i]['TermCode'], cf[i]['ClassCode'], cf[i]['Organization']).then(response => { cf[i]['ClassName'] = response })\r\n\t\t\t\t// console.log(cf[i])\r\n\t\t\t}\r\n\t\t})\r\n\t\t.catch(error => {\r\n\t\t\tconsole.log(error)\r\n\t\t})\r\n\treturn cf\r\n}\r\n\r\nasync function getAssignmentName(id) {\r\n\tconst assignment = await assignmentService.getAssignmentById(id)\r\n\r\n\tlet assignmentName = ''\r\n\tassignmentName = assignment.data['AssignmentName']\r\n\treturn assignmentName\r\n}\r\n","import NProgress from 'nprogress'\r\n\r\nexport const namespaced = true\r\n\r\nexport const state = {\r\n\tapiWaitingCount: 0\r\n}\r\n\r\nexport const actions = {\r\n\tstartLoading({ commit, state }) {\r\n\t\tNProgress.start()\r\n\t\tcommit('INCREASE_COUNT')\r\n\t},\r\n\tdoneLoading({ commit, state }) {\r\n\t\tcommit('DECREASE_COUNT')\r\n\t\tif (state.apiWaitingCount == 0) { NProgress.done() }\r\n\t},\r\n\tresetState({ commit, state }) {\r\n\t\tcommit('RESET_LOADING_STATE')\r\n\t}\r\n}\r\n\r\nexport const mutations = {\r\n\tINCREASE_COUNT(state) {\r\n\t\tstate.apiWaitingCount++\r\n\t},\r\n\r\n\tDECREASE_COUNT(state) {\r\n\t\tstate.apiWaitingCount--\r\n\t},\r\n\r\n\tRESET_LOADING_STATE(state) {\r\n\t\tstate.apiWaitingCount = 0\r\n\t}\r\n}\r\n","import * as userService from '@/services/user.service'\r\nimport * as courseService from '@/services/course.service'\r\nimport _ from 'lodash'\r\n// Enable namespaced module\r\nexport const namespaced = true\r\n\r\nconst getDefaultState = () => {\r\n\treturn {\r\n\t\tadminUser: null,\r\n\t\tinstructorUser: null,\r\n\t\tisViewingAs: false,\r\n\t\toriginalUser: null,\r\n\t\tinstructors: null,\r\n\t\tstudents: null,\r\n\t\tadminCourses: null\r\n\t}\r\n}\r\n\r\nexport const state = getDefaultState()\r\n\r\nexport const actions = {\r\n\tgetInstructorList({ commit }, payload) {\r\n\t\treturn userService.getInstructorList(payload)\r\n\t\t\t.then(instructors => {\r\n\t\t\t\tcommit('SET_INSTRUCTOR_LIST', instructors)\r\n\t\t\t\treturn instructors\r\n\t\t\t})\r\n\t\t\t.catch(error => {\r\n\t\t\t\tconsole.log(error)\r\n\t\t\t})\r\n\t},\r\n\r\n\tgetAdminCourses({ commit }, payload) {\r\n\t\treturn courseService.getCourses(payload.orgCode, payload.termCode)\r\n\t\t\t.then(courses => {\r\n\t\t\t\tcommit('SET_ADMIN_COURSES', courses)\r\n\t\t\t\treturn courses\r\n\t\t\t})\r\n\t\t\t.catch(error => {\r\n\t\t\t\tconsole.log(error)\r\n\t\t\t})\r\n\t},\r\n\r\n\tasync selectTerm({ commit, dispatch, state, rootState }, { termCode, orgCode }) {\r\n\t\tconst thisTerm = rootState.auth.terms.filter(item => { return item.TermCode == termCode })\r\n\t\tdispatch('auth/setTerm', thisTerm[0], { root: true })\r\n\t\tawait userService.getInstructorList({ orgCode, termCode })\r\n\t\t\t.then(instructors => {\r\n\t\t\t\tcommit('SET_INSTRUCTOR_LIST', instructors)\r\n\t\t\t})\r\n\t\t\t.catch(error => {\r\n\t\t\t\tconsole.log(error)\r\n\t\t\t})\r\n\t},\r\n\r\n\tasync viewAsInstructor({ commit, dispatch, state, rootState }, intructorId) {\r\n\t\tif (_.isEmpty(state.adminUser)) { commit('SET_ADMIN_USER', rootState.auth.user) }\r\n\t\tconst instructorUser = await dispatch('auth/getUserProfile', intructorId, { root: true })\r\n\t\tif (!_.isEmpty(instructorUser)) {\r\n\t\t\tif (_.includes(instructorUser.Roles, 'Instructor')) {\r\n\t\t\t\t// Get instructor's enrollments and set enrollment.enrollments state.\r\n\t\t\t\tawait dispatch('enrollment/getEnrollments', {\r\n\t\t\t\t\tusername: instructorUser.UserName,\r\n\t\t\t\t\torgCode: instructorUser.OrgCode\r\n\t\t\t\t}, { root: true })\r\n\t\t\t}\r\n\t\t\tcommit('SET_VIEW_AS_STATUS', true)\r\n\t\t}\r\n\t},\r\n\r\n\tasync backToAdminView({ commit, dispatch, state }) {\r\n\t\tif (!_.isEmpty(state.adminUser)) {\r\n\t\t\tdispatch('auth/setUser', state.adminUser, { root: true })\r\n\t\t\tif (_.includes(state.adminUser.Roles, 'Instructor')) {\r\n\t\t\t\t// Get instructor's enrollments and set enrollment.enrollments state.\r\n\t\t\t\tawait dispatch('enrollment/getEnrollments', {\r\n\t\t\t\t\tusername: state.adminUser.UserName,\r\n\t\t\t\t\torgCode: state.adminUser.OrgCode\r\n\t\t\t\t}, { root: true })\r\n\t\t\t}\r\n\t\t\tcommit('SET_ADMIN_USER', null)\r\n\t\t\tcommit('SET_VIEW_AS_STATUS', false)\r\n\t\t}\r\n\t},\r\n\r\n\tgetStudentList({ commit }, payload) {\r\n\t\treturn userService.getStudentList(payload)\r\n\t\t\t.then(students => {\r\n\t\t\t\tcommit('SET_STUDENT_LIST', students)\r\n\t\t\t\treturn students\r\n\t\t\t})\r\n\t\t\t.catch(error => {\r\n\t\t\t\tconsole.log(error)\r\n\t\t\t})\r\n\t},\r\n\r\n\tasync viewAsStudent({ commit, dispatch, state, rootState }, studentId) {\r\n\t\tconst orgCode = studentId.split(';')[0]\r\n\t\tconst username = studentId.split(';')[1]\r\n\t\t// set instructor user\r\n\t\tif (_.isEmpty(state.instructorUser)) { commit('SET_INSTRUCTOR_USER', rootState.auth.user) }\r\n\r\n\t\t// Check if this is a paid course, only allow viewing as for paid course if the student has subscribed\r\n\t\tconst isPaidCourse = rootState.enrollment.currentCourse.IsPaidCourse\r\n\t\tif (isPaidCourse) {\r\n\t\t\t// Get student subscriptions\r\n\t\t\tawait dispatch('enrollment/getSubscriptions', {\r\n\t\t\t\torgCode: orgCode,\r\n\t\t\t\tusername: username\r\n\t\t\t}, { root: true })\r\n\t\t\t// Check if the student has subscribed this semester\r\n\t\t\tconst isSubscribed = rootState.enrollment.currentTermSubscribed\r\n\t\t\tif (isSubscribed) {\r\n\t\t\t\t// set student role\r\n\t\t\t\tawait dispatch('enrollment/setUserRole', 'Student', { root: true })\r\n\t\t\t\t// get student profile and set current auth user\r\n\t\t\t\tconst studentProfile = await dispatch('auth/getUserProfile', studentId, { root: true })\r\n\t\t\t\tif (studentProfile) { commit('SET_VIEW_AS_STATUS', true) }\r\n\t\t\t\telse {\r\n\t\t\t\t\t// Set instructor as the auth user\r\n\t\t\t\t\tdispatch('auth/setUser', state.instructorUser, { root: true })\r\n\t\t\t\t\t// Set instructor role\r\n\t\t\t\t\tawait dispatch('enrollment/setUserRole', 'Instructor', { root: true })\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\t// set student role\r\n\t\t\tawait dispatch('enrollment/setUserRole', 'Student', { root: true })\r\n\t\t\t// get student profile and set current auth user\r\n\t\t\tconst studentProfile = await dispatch('auth/getUserProfile', studentId, { root: true })\r\n\t\t\tif (studentProfile) { commit('SET_VIEW_AS_STATUS', true) }\r\n\t\t\telse {\r\n\t\t\t\t// Set instructor as the auth user\r\n\t\t\t\tdispatch('auth/setUser', state.instructorUser, { root: true })\r\n\t\t\t\t// Set instructor role\r\n\t\t\t\tawait dispatch('enrollment/setUserRole', 'Instructor', { root: true })\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// // set student role\r\n\t\t// await dispatch('enrollment/setUserRole', 'Student', { root: true })\r\n\t\t// // get student profile and set current auth user\r\n\t\t// const studentProfile = await dispatch('auth/getUserProfile', studentId, { root: true })\r\n\t\t// if (studentProfile) {\r\n\t\t// \t// If there is no error (401)\r\n\t\t// \t// Get student enrollments\r\n\t\t// \tawait dispatch('enrollment/getSubscriptions', {\r\n\t\t// \t\torgCode: orgCode,\r\n\t\t// \t\tusername: username\r\n\t\t// \t}, { root: true })\r\n\r\n\t\t// \t// Check if this is a paid course, only allow viewing as for paid course if the student has subscribed\r\n\t\t// \tconst isPaidCourse = rootState.enrollment.currentCourse.IsPaidCourse\r\n\t\t// \tif (isPaidCourse) {\r\n\t\t// \t\tconst isSubscribed = rootState.enrollment.currentTermSubscribed\r\n\t\t// \t\tif (isSubscribed) {\r\n\t\t// \t\t\tcommit('SET_VIEW_AS_STATUS', true)\r\n\t\t// \t\t} else {\r\n\t\t// \t\t\t// Set instructor as the auth user\r\n\t\t// \t\t\tdispatch('auth/setUser', state.instructorUser, { root: true })\r\n\t\t// \t\t\t// Set instructor role\r\n\t\t// \t\t\tawait dispatch('enrollment/setUserRole', 'Instructor', { root: true })\r\n\t\t// \t\t}\r\n\t\t// \t} else {\r\n\t\t// \t\tcommit('SET_VIEW_AS_STATUS', true)\r\n\t\t// \t}\r\n\t\t// } else {\r\n\t\t// \t// Set instructor as the auth user\r\n\t\t// \tdispatch('auth/setUser', state.instructorUser, { root: true })\r\n\r\n\t\t// \t// Set instructor role\r\n\t\t// \tawait dispatch('enrollment/setUserRole', 'Instructor', { root: true })\r\n\t\t// }\r\n\t},\r\n\r\n\tasync adminViewAsStudent({ commit, dispatch, state, rootState }, studentId) {\r\n\t\t// const orgCode = studentId.split(';')[0]\r\n\t\t// const username = studentId.split(';')[1]\r\n\t\t// set instructor user\r\n\t\tif (_.isEmpty(state.adminUser)) { commit('SET_ADMIN_USER', rootState.auth.user) }\r\n\r\n\t\tconst studentUser = await dispatch('auth/getUserProfile', studentId, { root: true })\r\n\t\tif (!_.isEmpty(studentUser)) {\r\n\t\t\tif (_.includes(studentUser.Roles, 'Student')) {\r\n\t\t\t\t// Get instructor's enrollments and set enrollment.enrollments state.\r\n\t\t\t\tawait dispatch('enrollment/getEnrollments', {\r\n\t\t\t\t\tusername: studentUser.UserName,\r\n\t\t\t\t\torgCode: studentUser.OrgCode\r\n\t\t\t\t}, { root: true })\r\n\t\t\t}\r\n\t\t\tcommit('SET_VIEW_AS_STATUS', true)\r\n\t\t}\r\n\r\n\t\t// // Check if this is a paid course, only allow viewing as for paid course if the student has subscribed\r\n\t\t// const isPaidCourse = rootState.enrollment.currentCourse.IsPaidCourse\r\n\t\t// if (isPaidCourse) {\r\n\t\t// \t// Get student subscriptions\r\n\t\t// \tawait dispatch('enrollment/getSubscriptions', {\r\n\t\t// \t\torgCode: orgCode,\r\n\t\t// \t\tusername: username\r\n\t\t// \t}, { root: true })\r\n\t\t// \t// Check if the student has subscribed this semester\r\n\t\t// \tconst isSubscribed = rootState.enrollment.currentTermSubscribed\r\n\t\t// \tif (isSubscribed) {\r\n\t\t// \t\t// set student role\r\n\t\t// \t\tawait dispatch('enrollment/setUserRole', 'Student', { root: true })\r\n\t\t// \t\t// get student profile and set current auth user\r\n\t\t// \t\tconst studentProfile = await dispatch('auth/getUserProfile', studentId, { root: true })\r\n\t\t// \t\tif (studentProfile) { commit('SET_VIEW_AS_STATUS', true) } else {\r\n\t\t// \t\t\t// Set instructor as the auth user\r\n\t\t// \t\t\tdispatch('auth/setUser', state.instructorUser, { root: true })\r\n\t\t// \t\t\t// Set instructor role\r\n\t\t// \t\t\tawait dispatch('enrollment/setUserRole', 'Instructor', { root: true })\r\n\t\t// \t\t}\r\n\t\t// \t}\r\n\t\t// } else {\r\n\t\t// \t// set student role\r\n\t\t// \tawait dispatch('enrollment/setUserRole', 'Student', { root: true })\r\n\t\t// \t// get student profile and set current auth user\r\n\t\t// \tconst studentProfile = await dispatch('auth/getUserProfile', studentId, { root: true })\r\n\t\t// \tif (studentProfile) { commit('SET_VIEW_AS_STATUS', true) } else {\r\n\t\t// \t\t// Set instructor as the auth user\r\n\t\t// \t\tdispatch('auth/setUser', state.instructorUser, { root: true })\r\n\t\t// \t\t// Set instructor role\r\n\t\t// \t\tawait dispatch('enrollment/setUserRole', 'Instructor', { root: true })\r\n\t\t// \t}\r\n\t\t// }\r\n\r\n\t\t// // set student role\r\n\t\t// await dispatch('enrollment/setUserRole', 'Student', { root: true })\r\n\t\t// // get student profile and set current auth user\r\n\t\t// const studentProfile = await dispatch('auth/getUserProfile', studentId, { root: true })\r\n\t\t// if (studentProfile) {\r\n\t\t// \t// If there is no error (401)\r\n\t\t// \t// Get student enrollments\r\n\t\t// \tawait dispatch('enrollment/getSubscriptions', {\r\n\t\t// \t\torgCode: orgCode,\r\n\t\t// \t\tusername: username\r\n\t\t// \t}, { root: true })\r\n\r\n\t\t// \t// Check if this is a paid course, only allow viewing as for paid course if the student has subscribed\r\n\t\t// \tconst isPaidCourse = rootState.enrollment.currentCourse.IsPaidCourse\r\n\t\t// \tif (isPaidCourse) {\r\n\t\t// \t\tconst isSubscribed = rootState.enrollment.currentTermSubscribed\r\n\t\t// \t\tif (isSubscribed) {\r\n\t\t// \t\t\tcommit('SET_VIEW_AS_STATUS', true)\r\n\t\t// \t\t} else {\r\n\t\t// \t\t\t// Set instructor as the auth user\r\n\t\t// \t\t\tdispatch('auth/setUser', state.instructorUser, { root: true })\r\n\t\t// \t\t\t// Set instructor role\r\n\t\t// \t\t\tawait dispatch('enrollment/setUserRole', 'Instructor', { root: true })\r\n\t\t// \t\t}\r\n\t\t// \t} else {\r\n\t\t// \t\tcommit('SET_VIEW_AS_STATUS', true)\r\n\t\t// \t}\r\n\t\t// } else {\r\n\t\t// \t// Set instructor as the auth user\r\n\t\t// \tdispatch('auth/setUser', state.instructorUser, { root: true })\r\n\r\n\t\t// \t// Set instructor role\r\n\t\t// \tawait dispatch('enrollment/setUserRole', 'Instructor', { root: true })\r\n\t\t// }\r\n\t},\r\n\r\n\tasync backToInstructorView({ commit, dispatch, state }) {\r\n\t\tif (!_.isEmpty(state.instructorUser)) {\r\n\t\t\tdispatch('auth/setUser', state.instructorUser, { root: true })\r\n\t\t\tdispatch('enrollment/setUserRole', 'Instructor', { root: true })\r\n\t\t\tcommit('SET_INSTRUCTOR_USER', null)\r\n\t\t\tif (!state.adminUser) { commit('SET_VIEW_AS_STATUS', false) }\r\n\t\t} else {\r\n\t\t\t// IX What do we do if setting to Instructor without role?\r\n\t\t}\r\n\t},\r\n\r\n\tresetState({ commit }) {\r\n\t\tcommit('RESET_VIEW_AS_STATE')\r\n\t}\r\n}\r\n\r\nexport const mutations = {\r\n\tSET_ADMIN_COURSES(state, courses) {\r\n\t\tstate.adminCourses = courses\r\n\t},\r\n\tSET_INSTRUCTOR_LIST(state, instructors) {\r\n\t\tstate.instructors = instructors\r\n\t},\r\n\tSET_STUDENT_LIST(state, students) {\r\n\t\tstate.students = students\r\n\t},\r\n\tSET_ADMIN_USER(state, adminUser) {\r\n\t\tstate.adminUser = adminUser\r\n\t},\r\n\tSET_INSTRUCTOR_USER(state, instructorUser) {\r\n\t\tstate.instructorUser = instructorUser\r\n\t},\r\n\tSET_VIEW_AS_STATUS(state, status) {\r\n\t\tstate.isViewingAs = status\r\n\t},\r\n\tRESET_VIEW_AS_STATE(state) {\r\n\t\tObject.assign(state, getDefaultState())\r\n\t}\r\n}\r\n","import Vue from 'vue'\r\nimport Vuex from 'vuex'\r\nimport * as auth from '@/store/modules/auth'\r\nimport * as assignment from '@/store/modules/assignment'\r\nimport * as enrollment from '@/store/modules/enrollment'\r\nimport * as collectiveFeedback from '@/store/modules/collective_feedback'\r\nimport * as course from '@/store/modules/course'\r\nimport * as loading from '@/store/modules/loading'\r\nimport * as viewAs from '@/store/modules/viewAs'\r\nimport createPersistedState from 'vuex-persistedstate'\r\nVue.use(Vuex)\r\n\r\nexport default new Vuex.Store({\r\n\tstate: {},\r\n\tmutations: {},\r\n\tactions: {},\r\n\tmodules: {\r\n\t\tauth,\r\n\t\tassignment,\r\n\t\tenrollment,\r\n\t\tcourse,\r\n\t\tloading,\r\n\t\tviewAs,\r\n\t\tcollectiveFeedback\r\n\t},\r\n\t// Keep the state of the app in the event of a page refresh.\r\n\tplugins: [createPersistedState()]\r\n})\r\n","/**\r\n * HTTP client.\r\n *\r\n * @see {@link https://github.com/axios/axios}\r\n * @module utils/axios\r\n */\r\nimport _ from 'lodash'\r\nimport axios from 'axios'\r\nimport * as urlUtils from '@/utils/url-utils'\r\nimport store from '../store'\r\n\r\nimport { Notification } from 'element-ui'\r\n\r\nconst config = {\r\n\tbaseURL: urlUtils.getBaseApiURL(),\r\n\ttimeout: 100000\r\n}\r\n\r\nconst instance = axios.create(config)\r\n\r\n// Add a request interceptor\r\ninstance.interceptors.request.use(\r\n\tfunction(config) {\r\n\t\tstore.dispatch('loading/startLoading')\r\n\t\tconst accessToken = store.state.auth.token.accessToken\r\n\t\tif (!_.isEmpty(accessToken)) {\r\n\t\t\tconfig.headers.Authorization = `Bearer ${accessToken}`\r\n\t\t}\r\n\t\treturn config\r\n\t},\r\n\tfunction(error) {\r\n\t\tstore.dispatch('loading/startLoading')\r\n\t\treturn Promise.reject(error)\r\n\t}\r\n)\r\n\r\ninstance.interceptors.response.use(\r\n\tresponse => {\r\n\t\tstore.dispatch('loading/doneLoading')\r\n\t\treturn response\r\n\t},\r\n\terror => {\r\n\t\tstore.dispatch('loading/doneLoading')\r\n\r\n\t\t// Check for errorHandle config\r\n\t\tif (error.config.hasOwnProperty('errorHandle') && error.config.errorHandle === false) {\r\n\t\t\treturn Promise.reject(error)\r\n\t\t}\r\n\r\n\t\t// Handling error\r\n\t\tif (error.response) {\r\n\t\t\tlet message = ''\r\n\t\t\tif (error.response.data.Message) {\r\n\t\t\t\tif (error.response.data.Message == 'Authorization has been denied for this request.') {\r\n\t\t\t\t\tmessage += 'Your browsing session has been expired. Please reload the page and try again. '\r\n\t\t\t\t} else {\r\n\t\t\t\t\tmessage += error.response.data.Message + ' '\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tif (error.response.data.ModelState) { message += error.response.data.ModelState.invalid_grant + ' ' }\r\n\t\t\tif (error.response.data.InnerException) { message += error.response.data.InnerException.ExceptionMessage + ' ' }\r\n\t\t\tif (error.response.data.error_description) { message += error.response.data.error_description }\r\n\r\n\t\t\tNotification.error({\r\n\t\t\t\tduration: 6000,\r\n\t\t\t\ttitle: 'Error',\r\n\t\t\t\tmessage: message\r\n\t\t\t})\r\n\t\t}\r\n\t}\r\n)\r\n\r\n// axios methods\r\nconst methods = {\r\n\t/**\r\n\t * request.\r\n\t * @param {Object} config Config\r\n\t * @return {Promise} Promise\r\n\t * @see {@link https://github.com/mzabriskie/axios#instance-methods}\r\n\t */\r\n\trequest(config) {\r\n\t\tthrow new Error('Not Implemented')\r\n\t},\r\n\r\n\t/**\r\n\t * get.\r\n\t * @param {String} url Url\r\n\t * @param {Object} config Config\r\n\t * @return {Promise} Promise\r\n\t * @see {@link https://github.com/mzabriskie/axios#instance-methods}\r\n\t */\r\n\tget(url, config) {\r\n\t\treturn instance.get(url, config)\r\n\t},\r\n\r\n\t/**\r\n\t * delete.\r\n\t * @param {String} url Url\r\n\t * @param {Object} config Config\r\n\t * @return {Promise} Promise\r\n\t * @see {@link https://github.com/mzabriskie/axios#instance-methods}\r\n\t */\r\n\tdelete(url, config) {\r\n\t\treturn instance.delete(url, config)\r\n\t},\r\n\r\n\t/**\r\n\t * head.\r\n\t * @param {String} url Url\r\n\t * @param {Object} config Config\r\n\t * @return {Promise} Promise\r\n\t * @see {@link https://github.com/mzabriskie/axios#instance-methods}\r\n\t */\r\n\thead(url, config) {\r\n\t\tthrow new Error('Not Implemented')\r\n\t},\r\n\r\n\t/**\r\n\t * options.\r\n\t * @param {String} url Url\r\n\t * @param {Object} config Config\r\n\t * @return {Promise} Promise\r\n\t * @see {@link https://github.com/mzabriskie/axios#instance-methods}\r\n\t */\r\n\toptions(url, config) {\r\n\t\tthrow new Error('Not Implemented')\r\n\t},\r\n\r\n\t/**\r\n\t * post.\r\n\t * @param {String} url Url\r\n\t * @param {Object} data Data\r\n\t * @param {Object} config Config\r\n\t * @return {Promise} Promise\r\n\t * @see {@link https://github.com/mzabriskie/axios#instance-methods}\r\n\t */\r\n\tpost(url, data, config) {\r\n\t\treturn instance.post(url, data, config)\r\n\t},\r\n\r\n\t/**\r\n\t * put.\r\n\t * @param {String} url Url\r\n\t * @param {Object} data Data\r\n\t * @param {Object} config Config\r\n\t * @return {Promise} Promise\r\n\t * @see {@link https://github.com/mzabriskie/axios#instance-methods}\r\n\t */\r\n\tput(url, data, config) {\r\n\t\treturn instance.put(url, data, config)\r\n\t},\r\n\r\n\t/**\r\n\t * patch.\r\n\t * @param {String} url Url\r\n\t * @param {Object} data Data\r\n\t * @param {Object} config Config\r\n\t * @return {Promise} Promise\r\n\t * @see {@link https://github.com/mzabriskie/axios#instance-methods}\r\n\t */\r\n\tpatch(url, data, config) {\r\n\t\tthrow new Error('Not Implemented')\r\n\t}\r\n}\r\n\r\nexport default methods\r\n\r\n// export const setAccessToken = token => {\r\n// \taccessToken = token\r\n// }\r\n\r\n// export const setErrorHander = handler => {\r\n// \terrorHandler = handler\r\n// }\r\n","import http from '@/utils/axios'\r\nimport { Notification } from 'element-ui'\r\n\r\nexport function updateLastLogin(userId) {\r\n\treturn http.post('user/update/last/login/' + userId)\r\n\t\t.then().catch(error => {\r\n\t\t\tconsole.log(error)\r\n\t\t})\r\n}\r\n\r\nexport function getInstructorList(payload) {\r\n\treturn http.get('user/enrolled/' + payload.orgCode + '/' + payload.termCode + '/' + 'Instructor')\r\n\t\t.then(response => {\r\n\t\t\tif (response.data.length > 0) { return response.data } else {\r\n\t\t\t\t// Handling error\r\n\t\t\t\tNotification.error({\r\n\t\t\t\t\tduration: 6000,\r\n\t\t\t\t\ttitle: 'Error',\r\n\t\t\t\t\tmessage: 'No active instructors found for this organization.'\r\n\t\t\t\t})\r\n\t\t\t}\r\n\t\t})\r\n\t\t.catch(error => {\r\n\t\t\tconsole.log(error)\r\n\t\t})\r\n}\r\n\r\nexport function getInstructorsByCourseType(orgCode, termCode, courseType) {\r\n\treturn http.get('user/instructors/' + orgCode + '/' + termCode + '/' + courseType)\r\n\t\t.then(response => {\r\n\t\t\tif (response.data.length > 0) { return response.data } else {\r\n\t\t\t\t// Handling error\r\n\t\t\t\tNotification.error({\r\n\t\t\t\t\tduration: 6000,\r\n\t\t\t\t\ttitle: 'Error',\r\n\t\t\t\t\tmessage: 'No active instructors found for this organization.'\r\n\t\t\t\t})\r\n\t\t\t}\r\n\t\t})\r\n\t\t.catch(error => {\r\n\t\t\tconsole.log(error)\r\n\t\t})\r\n}\r\n\r\nexport function getStudentList(payload) {\r\n\treturn http.get('user/enrolled/student/' + payload.orgCode + '/' + payload.termCode + '/' + payload.classCode)\r\n\t\t.then(response => {\r\n\t\t\tif (response.data.length > 0) { return response.data } else {\r\n\t\t\t\t// Handling error\r\n\t\t\t\tNotification.error({\r\n\t\t\t\t\tduration: 6000,\r\n\t\t\t\t\ttitle: 'Error',\r\n\t\t\t\t\tmessage: 'No active students found for this class.'\r\n\t\t\t\t})\r\n\t\t\t}\r\n\t\t})\r\n\t\t.catch(error => {\r\n\t\t\tconsole.log(error)\r\n\t\t})\r\n}\r\n\r\nexport function getAdminStudentList(termCode, orgCode, searchQuery) {\r\n\treturn http.get('user/enrolled/student/admin/' + termCode + '/' + orgCode + '/' + searchQuery)\r\n\t\t.then(response => {\r\n\t\t\tif (response.data.length > 0) { return response.data } else {\r\n\t\t\t\t// Handling error\r\n\t\t\t\tNotification.error({\r\n\t\t\t\t\tduration: 6000,\r\n\t\t\t\t\ttitle: 'Error',\r\n\t\t\t\t\tmessage: 'No active students found for this term.'\r\n\t\t\t\t})\r\n\t\t\t}\r\n\t\t})\r\n\t\t.catch(error => {\r\n\t\t\tconsole.log(error)\r\n\t\t})\r\n}\r\n\r\nexport function getCoursePeople(orgCode, termCode, classCode) {\r\n\treturn http.get('user/enrolled/people/' + orgCode + '/' + termCode + '/' + classCode)\r\n\t\t.then(response => {\r\n\t\t\tif (response.data.length > 0) { return response.data } else {\r\n\t\t\t\t// Handling error\r\n\t\t\t\tNotification.error({\r\n\t\t\t\t\tduration: 6000,\r\n\t\t\t\t\ttitle: 'Error',\r\n\t\t\t\t\tmessage: 'No active students found for this class.'\r\n\t\t\t\t})\r\n\t\t\t}\r\n\t\t})\r\n\t\t.catch(error => {\r\n\t\t\tconsole.log(error)\r\n\t\t})\r\n}\r\n\r\nexport function getOptedInStudents(orgCode, termCode, classCode) {\r\n\treturn http.get('user/optedin/students/' + orgCode + '/' + termCode + '/' + classCode)\r\n\t\t.then(response => {\r\n\t\t\tif (response.data.length > 0) { return response.data } else {\r\n\t\t\t\t// Handling error\r\n\t\t\t\tNotification.error({\r\n\t\t\t\t\tduration: 6000,\r\n\t\t\t\t\ttitle: 'Error',\r\n\t\t\t\t\tmessage: 'No active students found for this class.'\r\n\t\t\t\t})\r\n\t\t\t}\r\n\t\t})\r\n\t\t.catch(error => {\r\n\t\t\tconsole.log(error)\r\n\t\t})\r\n}\r\n\r\nexport function changeUserFirstName(orgCode, termCode, classCode, username, newFirstName) {\r\n\treturn http.get('account/user/change/name/' + orgCode + '/' + termCode + '/' + classCode + '/' + username + '/' + newFirstName)\r\n\t\t.then(response => {\r\n\r\n\t\t})\r\n\t\t.catch(error => {\r\n\t\t\tconsole.log(error)\r\n\t\t})\r\n}\r\n\r\n","<template>\r\n <div id=\"main-nav\" class=\"full-width\">\r\n <div>\r\n <img\r\n v-if=\"orgCode != 'DEMO'\"\r\n id=\"logo\"\r\n title=\"Back to All Courses page\"\r\n class=\"full-width\"\r\n src=\"@/assets/new_logo_1.png\"\r\n style=\"\r\n height: 60px;\r\n width: 202px;\r\n margin-left: 4px;\r\n cursor: pointer;\r\n margin-top: 2px;\r\n \"\r\n @click=\"gotoCourses()\"\r\n />\r\n <img\r\n v-if=\"orgCode != 'DEMO'\"\r\n id=\"logo1\"\r\n title=\"Back to All Courses page\"\r\n src=\"@/assets/new_logo_1.png\"\r\n style=\"display: none; cursor: pointer\"\r\n @click=\"gotoCourses()\"\r\n />\r\n <img\r\n v-if=\"orgCode != 'DEMO'\"\r\n id=\"logo2\"\r\n title=\"Back to All Courses page\"\r\n src=\"@/assets/new_logo_2.png\"\r\n style=\"display: none; cursor: pointer\"\r\n @click=\"gotoCourses()\"\r\n />\r\n\r\n <img\r\n v-if=\"orgCode == 'DEMO'\"\r\n id=\"logo\"\r\n title=\"Back to All Courses page\"\r\n class=\"full-width\"\r\n src=\"@/assets/new_demo_logo_1.png\"\r\n style=\"\r\n height: 65px;\r\n width: 200px;\r\n margin-left: 4px;\r\n cursor: pointer;\r\n margin-top: 2px;\r\n \"\r\n @click=\"gotoCourses()\"\r\n />\r\n <img\r\n v-if=\"orgCode == 'DEMO'\"\r\n id=\"logo1\"\r\n title=\"Back to All Courses page\"\r\n src=\"@/assets/new_demo_logo_1.png\"\r\n style=\"display: none; cursor: pointer\"\r\n @click=\"gotoCourses()\"\r\n />\r\n <img\r\n v-if=\"orgCode == 'DEMO'\"\r\n id=\"logo2\"\r\n title=\"Back to All Courses page\"\r\n src=\"@/assets/new_demo_logo_2.png\"\r\n style=\"display: none; cursor: pointer\"\r\n @click=\"gotoCourses()\"\r\n />\r\n <!-- <hr style=\"margin-block-start: 0; margin-block-end: 0px;\"> -->\r\n <el-menu\r\n default-active=\"2\"\r\n class=\"el-menu-vertical-demo\"\r\n style=\"width: auto; border-right: none\"\r\n :collapse=\"true\"\r\n @open=\"handleOpen\"\r\n @close=\"handleClose\"\r\n >\r\n <el-submenu index=\"1\" style=\"text-align: center; margin-bottom: 8px\">\r\n <template slot=\"title\">\r\n <i class=\"far fa-user nav-icon full-width\" />\r\n <span v-if=\"!isMenuCollapse\">\r\n <span v-if=\"isViewingAs\">View as {{ firstName }}</span>\r\n <span v-else>Hi, {{ firstName }}</span>\r\n </span>\r\n </template>\r\n <el-menu-item v-if=\"(isMenuCollapse || isViewingAs)\" index=\"1-1\">\r\n <span>\r\n <span v-if=\"isViewingAs\">View as {{ lastName }}, {{ firstName }}</span>\r\n <span v-else>Hi, {{ firstName }}</span>\r\n </span>\r\n </el-menu-item>\r\n <!-- <el-menu-item v-if=\"!isViewingAs\" index=\"1-2\">\r\n\t\t\t\t\t\t<span>\r\n\t\t\t\t\t\t\tMy Profile\r\n\t\t\t\t\t\t</span>\r\n\t\t\t\t\t</el-menu-item> -->\r\n <el-menu-item v-if=\"isViewingAs\" index=\"1-2\">\r\n\t\t\t\t\t\t<span>\r\n\t\t\t\t\t\t\t{{ userName }}\r\n\t\t\t\t\t\t</span>\r\n\t\t\t\t\t</el-menu-item>\r\n <el-menu-item v-if=\"!isViewingAs\" index=\"1-3\" @click=\"onLogOut\">\r\n <span> Sign Out </span>\r\n </el-menu-item>\r\n </el-submenu>\r\n </el-menu>\r\n </div>\r\n\r\n <div style=\"text-align: center\">\r\n <el-tooltip\r\n :disabled=\"!isMenuCollapse\"\r\n content=\"Back to admin view\"\r\n placement=\"right-start\"\r\n >\r\n <el-button\r\n v-if=\"\r\n (isViewingAs && adminUser && !instructorUser) ||\r\n (adminUser && currentCourse && !instructorUser) ||\r\n (isAdmin && currentCourse && !instructorUser)\r\n \"\r\n type=\"primary\"\r\n :class=\"{\r\n 'nav-btn full-width': !isMenuCollapse,\r\n 'nav-btn': isMenuCollapse,\r\n }\"\r\n @click=\"backToAdmin()\"\r\n >\r\n <span v-if=\"!isMenuCollapse\"> Back to admin view </span>\r\n <span v-else> Admin </span>\r\n </el-button>\r\n </el-tooltip>\r\n\r\n <el-tooltip\r\n :disabled=\"!isMenuCollapse\"\r\n content=\"Back to instructor view\"\r\n placement=\"right-start\"\r\n >\r\n <el-button\r\n v-if=\"isViewingAs && instructorUser\"\r\n type=\"primary\"\r\n :class=\"{\r\n 'nav-btn full-width': !isMenuCollapse,\r\n 'nav-btn': isMenuCollapse,\r\n }\"\r\n @click=\"backToInstructor()\"\r\n >\r\n <span v-if=\"!isMenuCollapse\"> Back to instructor view </span>\r\n <span v-else> Back </span>\r\n </el-button>\r\n </el-tooltip>\r\n </div>\r\n\r\n <div class=\"app-level-menu\" style=\"text-align: center\">\r\n <el-tooltip\r\n :disabled=\"!isMenuCollapse\"\r\n content=\"Term Selection\"\r\n placement=\"right-start\"\r\n >\r\n <el-select\r\n v-if=\"terms && isAdmin && !isViewingAs && !currentCourse\"\r\n id=\"term-selection\"\r\n v-model=\"currentTerm\"\r\n :class=\"{\r\n 'nav-select full-width': !isMenuCollapse,\r\n 'nav-select': isMenuCollapse,\r\n }\"\r\n filterable\r\n placeholder=\"Term Selection\"\r\n no-match-text=\"No Matching Data\"\r\n no-data-text=\"No data\"\r\n loading-text=\"Loading\"\r\n @change=\"onTermChange()\"\r\n >\r\n <el-option\r\n v-for=\"item in terms\"\r\n :key=\"item.TermCode\"\r\n :label=\"item.TermDescription\"\r\n :value=\"item.TermCode\"\r\n />\r\n </el-select>\r\n </el-tooltip>\r\n\r\n <el-tooltip\r\n :disabled=\"!isMenuCollapse\"\r\n content=\"View as instructor\"\r\n placement=\"right-start\"\r\n >\r\n <el-select\r\n v-if=\"instructors && !isViewingAs && !currentCourse\"\r\n id=\"instructor-selection\"\r\n v-model=\"currentInstructor\"\r\n filterable\r\n placeholder=\"View as instructor\"\r\n :class=\"{\r\n 'nav-select full-width': !isMenuCollapse,\r\n 'nav-select': isMenuCollapse,\r\n }\"\r\n no-match-text=\"No Matching Data\"\r\n no-data-text=\"No data\"\r\n loading-text=\"Loading\"\r\n @change=\"onInstructorChange()\"\r\n >\r\n <el-option\r\n v-for=\"item in instructors\"\r\n :key=\"item.UserName\"\r\n :label=\"item.LastName + ', ' + item.FirstName\"\r\n :value=\"item.UserName\"\r\n />\r\n </el-select>\r\n </el-tooltip>\r\n\r\n <el-tooltip\r\n :disabled=\"!isMenuCollapse\"\r\n content=\"Course selection\"\r\n placement=\"right-start\"\r\n >\r\n <el-select\r\n v-if=\"isAdmin && !isViewingAs && !currentCourse\"\r\n id=\"course-selection\"\r\n v-model=\"adminCourse\"\r\n value-key=\"ClassCode\"\r\n filterable\r\n placeholder=\"Course selection\"\r\n no-match-text=\"No Matching Data\"\r\n :class=\"{\r\n 'nav-select full-width': !isMenuCollapse,\r\n 'nav-select': isMenuCollapse,\r\n }\"\r\n no-data-text=\"No data\"\r\n loading-text=\"Loading\"\r\n @change=\"onAdminCourseChange()\"\r\n >\r\n <el-option key=\"all\" label=\"My Courses\" value=\"all\" />\r\n <el-option\r\n v-for=\"item in adminCourses\"\r\n :key=\"item.ClassCode\"\r\n :label=\"item.ClassDescription\"\r\n :value=\"item\"\r\n />\r\n </el-select>\r\n\r\n <el-select\r\n v-else-if=\"courses && !instructorUser\"\r\n id=\"course-selection\"\r\n v-model=\"currentCourse\"\r\n value-key=\"ClassCode\"\r\n filterable\r\n placeholder=\"Course selection\"\r\n no-match-text=\"No Matching Data\"\r\n :class=\"{\r\n 'nav-select full-width': !isMenuCollapse,\r\n 'nav-select': isMenuCollapse,\r\n }\"\r\n no-data-text=\"No data\"\r\n loading-text=\"Loading\"\r\n @change=\"onCourseChange()\"\r\n >\r\n <el-option key=\"all\" label=\"All Courses\" value=\"all\" />\r\n <el-option\r\n v-for=\"item in courses\"\r\n :key=\"item.Id\"\r\n :label=\"item.ClassDescription\"\r\n :value=\"item\"\r\n />\r\n </el-select>\r\n </el-tooltip>\r\n\r\n <el-tooltip\r\n :disabled=\"!isMenuCollapse\"\r\n content=\"Search for student\"\r\n placement=\"right-start\"\r\n >\r\n <el-select\r\n v-if=\"isAdmin && !isViewingAs && !currentCourse\"\r\n id=\"student-selection\"\r\n v-model=\"adminStudent\"\r\n :class=\"{\r\n 'nav-select full-width': !isMenuCollapse,\r\n 'nav-select': isMenuCollapse,\r\n }\"\r\n filterable\r\n remote\r\n :remote-method=\"searchForAdminStudent\"\r\n placeholder=\"Search for student\"\r\n no-match-text=\"No Matching Data\"\r\n no-data-text=\"No data\"\r\n loading-text=\"Loading\"\r\n @change=\"onAdminStudentChange()\"\r\n >\r\n <el-option\r\n v-for=\"item in adminStudents\"\r\n :key=\"item.UserName\"\r\n :label=\"item.FullName + ' (' + item.UserName + ')'\"\r\n :value=\"item.UserName\"\r\n />\r\n </el-select>\r\n </el-tooltip>\r\n\r\n <el-tooltip\r\n :disabled=\"!isMenuCollapse\"\r\n content=\"View As Student\"\r\n placement=\"right-start\"\r\n >\r\n <el-select\r\n v-if=\"students && currentCourse && (!isStudent || instructorUser)\"\r\n id=\"student-selection\"\r\n v-model=\"currentStudent\"\r\n filterable\r\n placeholder=\"View As Student\"\r\n no-match-text=\"No Matching Data\"\r\n :class=\"{\r\n 'nav-select full-width': !isMenuCollapse,\r\n 'nav-select': isMenuCollapse,\r\n }\"\r\n no-data-text=\"No data\"\r\n loading-text=\"Loading\"\r\n @change=\"onStudentChange()\"\r\n >\r\n <el-option\r\n v-for=\"item in students\"\r\n :key=\"item.UserName\"\r\n :label=\"item.FullName\"\r\n :value=\"item.UserName\"\r\n />\r\n </el-select>\r\n </el-tooltip>\r\n </div>\r\n <!-- <hr> -->\r\n\r\n <el-menu\r\n v-if=\"userRole != 'Student' || (userRole == 'Student' && subscribedTerms)\"\r\n default-active=\"2\"\r\n class=\"el-menu-vertical-demo\"\r\n style=\"width: auto; border-right: none\"\r\n :collapse=\"true\"\r\n @open=\"handleOpen\"\r\n @close=\"handleClose\"\r\n >\r\n <router-link\r\n v-if=\"\r\n currentCourse &&\r\n (userRole != 'Student' ||\r\n (userRole == 'Student' &&\r\n subscribedTerms.includes(currentCourse.TermCode) && currentCourse.TermCode == currentTerm))\r\n \"\r\n :to=\"{ path: `/course/${currentCourse.ClassCode}/projects` }\"\r\n style=\"color: white; text-decoration: none\"\r\n >\r\n <el-menu-item index=\"2\" style=\"cursor: pointer\">\r\n <el-tooltip\r\n :disabled=\"!isMenuCollapse\"\r\n content=\"Projects\"\r\n placement=\"right-start\"\r\n effect=\"light\"\r\n >\r\n <router-link\r\n :to=\"{ path: `/course/${currentCourse.ClassCode}/projects` }\"\r\n style=\"color: white; text-decoration: none\"\r\n >\r\n <i\r\n class=\"fas fa-tasks nav-icon full-width\"\r\n style=\"margin-left: 4px\"\r\n />\r\n </router-link>\r\n </el-tooltip>\r\n\r\n <span v-if=\"!isMenuCollapse\"> Projects </span>\r\n </el-menu-item>\r\n </router-link>\r\n <!-- <router-link v-if=\"currentCourse && (userRole != 'Student' || (userRole == 'Student' && subscribedTerms.includes(currentCourse.TermCode)))\" :to=\"{ path: `/course/${currentCourse.ClassCode}/projects/new` }\" style=\"color: white; text-decoration: none;\">\r\n <el-menu-item index=\"2\" style=\"cursor: pointer;\">\r\n <el-tooltip :disabled=\"!isMenuCollapse\" content=\"Projects\" placement=\"right-start\" effect=\"light\">\r\n <router-link :to=\"{ path: `/course/${currentCourse.ClassCode}/projects/new` }\" style=\"color: white; text-decoration: none;\">\r\n <i class=\"fas fa-tasks nav-icon full-width\" style=\" margin-left: 4px;\" />\r\n </router-link>\r\n </el-tooltip>\r\n\r\n <span v-if=\"!isMenuCollapse\">\r\n Projects New\r\n </span>\r\n </el-menu-item>\r\n </router-link> -->\r\n <router-link\r\n v-if=\"\r\n userRole == 'Student' &&\r\n currentCourse &&\r\n subscribedTerms.includes(currentCourse.TermCode) &&\r\n currentCourse.TermCode == currentTerm\r\n \"\r\n :to=\"{ path: `/peer_review` }\"\r\n style=\"color: white; text-decoration: none\"\r\n >\r\n <el-menu-item index=\"3\" style=\"cursor: pointer\">\r\n <el-tooltip\r\n :disabled=\"!isMenuCollapse\"\r\n content=\"Peer Review\"\r\n placement=\"right-start\"\r\n effect=\"light\"\r\n >\r\n <!-- <i class=\"far fa-address-book nav-icon full-width\" style=\" margin-left: 5px;\" /> -->\r\n <i\r\n class=\"fas fa-user-edit nav-icon full-width\"\r\n style=\"margin-left: 3px; margin-right: 7px\"\r\n />\r\n </el-tooltip>\r\n <span v-if=\"!isMenuCollapse\"> Peer Review </span>\r\n </el-menu-item>\r\n </router-link>\r\n <router-link\r\n v-if=\"\r\n userRole == 'Student' &&\r\n currentCourse &&\r\n subscribedTerms.includes(currentCourse.TermCode) &&\r\n currentCourse.TermCode == currentTerm\r\n \"\r\n :to=\"{ path: `/self_review` }\"\r\n style=\"color: white; text-decoration: none\"\r\n >\r\n <el-menu-item index=\"4\">\r\n <el-tooltip\r\n :disabled=\"!isMenuCollapse\"\r\n content=\"Self Review\"\r\n placement=\"right-start\"\r\n effect=\"light\"\r\n >\r\n <i\r\n class=\"fas fa-user-check nav-icon full-width\"\r\n style=\"margin-left: 3px; margin-right: 7px\"\r\n />\r\n </el-tooltip>\r\n\r\n <span v-if=\"!isMenuCollapse\"> Self Review </span>\r\n </el-menu-item>\r\n </router-link>\r\n\r\n <router-link\r\n v-if=\"userRole == 'Instructor' && currentCourse\"\r\n :to=\"{ path: `/instructor_review` }\"\r\n style=\"color: white; text-decoration: none\"\r\n >\r\n <el-menu-item index=\"3\">\r\n <el-tooltip\r\n :disabled=\"!isMenuCollapse\"\r\n content=\"Score Center\"\r\n placement=\"right-start\"\r\n effect=\"light\"\r\n >\r\n <i\r\n class=\"far fa-edit nav-icon full-width\"\r\n style=\"margin-left: 4px; margin-right: 10px\"\r\n />\r\n </el-tooltip>\r\n\r\n <span v-if=\"!isMenuCollapse\"> Score Center </span>\r\n </el-menu-item>\r\n </router-link>\r\n\r\n <router-link\r\n v-if=\"userRole == 'Instructor' && currentCourse\"\r\n :to=\"{ path: `/instructor/compare/text` }\"\r\n style=\"color: white; text-decoration: none\"\r\n >\r\n <el-menu-item index=\"3\">\r\n <el-tooltip\r\n :disabled=\"!isMenuCollapse\"\r\n content=\"Compare Text\"\r\n placement=\"right-start\"\r\n effect=\"light\"\r\n >\r\n <!-- <i class=\"fab fa-readme\"></i> -->\r\n <i\r\n class=\"fab fa-readme fa-edit nav-icon full-width\"\r\n style=\"margin-left: 2px; margin-right: 10px\"\r\n />\r\n </el-tooltip>\r\n\r\n <span v-if=\"!isMenuCollapse\"> Compare Text </span>\r\n </el-menu-item>\r\n </router-link>\r\n\r\n <el-submenu v-if=\"userRole == 'Instructor' && currentCourse\" index=\"4\">\r\n <template slot=\"title\">\r\n <i\r\n class=\"fas fa-user-friends nav-icon full-width\"\r\n style=\"font-size: 18px; margin-left: -3px; margin-right: 12px\"\r\n />\r\n <span v-if=\"!isMenuCollapse\"> Team Formation </span>\r\n </template>\r\n <el-menu-item-group\r\n v-if=\"isMenuCollapse\"\r\n style=\"border-bottom: #a29e9e solid 1px\"\r\n >\r\n <span slot=\"title\" style=\"font-size: 14px\"> Team Formation </span>\r\n </el-menu-item-group>\r\n <router-link\r\n :to=\"{\r\n path: `/course/${currentCourse.ClassCode}/team_formation/peer_review`,\r\n }\"\r\n style=\"color: white; text-decoration: none\"\r\n >\r\n <el-menu-item index=\"4-1\" style=\"color: white\">\r\n Peer Review\r\n </el-menu-item>\r\n </router-link>\r\n <router-link\r\n :to=\"{\r\n path: `/course/${currentCourse.ClassCode}/team_formation/group_project`,\r\n }\"\r\n style=\"color: white; text-decoration: none\"\r\n >\r\n <el-menu-item index=\"4-2\" style=\"color: white\">\r\n Group Project\r\n </el-menu-item>\r\n </router-link>\r\n </el-submenu>\r\n\r\n <router-link\r\n v-if=\"\r\n currentCourse &&\r\n (userRole != 'Student' ||\r\n (userRole == 'Student' &&\r\n subscribedTerms.includes(currentCourse.TermCode) && currentCourse.TermCode == currentTerm))\r\n \"\r\n :to=\"{ path: `/collective_feedbacks` }\"\r\n style=\"color: white; text-decoration: none\"\r\n >\r\n <el-menu-item index=\"5\">\r\n <el-tooltip\r\n :disabled=\"!isMenuCollapse\"\r\n content=\"Collective Feedback\"\r\n placement=\"right-start\"\r\n effect=\"light\"\r\n >\r\n <i\r\n class=\"fab fa-stack-exchange nav-icon full-width\"\r\n style=\"margin-left: 4px; margin-right: 10px\"\r\n />\r\n </el-tooltip>\r\n <span v-if=\"!isMenuCollapse\"> Collective Feedback </span>\r\n </el-menu-item>\r\n </router-link>\r\n\r\n <router-link\r\n v-if=\"userRole == 'Instructor' && currentCourse\"\r\n :to=\"{ path: `/course/${currentCourse.ClassCode}/students` }\"\r\n style=\"color: white; text-decoration: none\"\r\n >\r\n <el-menu-item index=\"3\">\r\n <el-tooltip\r\n :disabled=\"!isMenuCollapse\"\r\n content=\"People\"\r\n placement=\"right-start\"\r\n effect=\"light\"\r\n >\r\n <i\r\n class=\"fas fa-users nav-icon full-width\"\r\n style=\"font-size: 18px; margin-left: 2px; margin-right: 8px\"\r\n />\r\n </el-tooltip>\r\n\r\n <span v-if=\"!isMenuCollapse\"> Students </span>\r\n </el-menu-item>\r\n </router-link>\r\n\r\n <el-submenu\r\n v-if=\"orgCode == 'USF' && textbookVisible\"\r\n index=\"6\"\r\n >\r\n <template slot=\"title\">\r\n <i\r\n class=\"fas fa-book nav-icon full-width\"\r\n style=\"margin-left: -2px; margin-right: 14px\"\r\n />\r\n <span v-if=\"!isMenuCollapse\"> E-Texts </span>\r\n </template>\r\n <el-menu-item-group\r\n v-if=\"isMenuCollapse\"\r\n style=\"border-bottom: #a29e9e solid 1px\"\r\n >\r\n <span slot=\"title\" style=\"font-size: 14px\"> E-Texts </span>\r\n </el-menu-item-group>\r\n <router-link\r\n :to=\"{ path: `/e-text/raww` }\"\r\n target=\"_blank\"\r\n style=\"color: white; text-decoration: none\"\r\n >\r\n <el-menu-item index=\"6-1\">\r\n <span> RAWWr 10 </span>\r\n </el-menu-item>\r\n </router-link>\r\n </el-submenu>\r\n\r\n <el-submenu v-if=\"isAdmin && !currentCourse\" index=\"8\">\r\n <template slot=\"title\">\r\n <i\r\n class=\"fas fa-user-shield nav-icon full-width\"\r\n style=\"margin-left: -2px; margin-right: 10px\"\r\n />\r\n <span v-if=\"!isMenuCollapse\"> Admin Tools </span>\r\n </template>\r\n <el-menu-item-group\r\n v-if=\"isMenuCollapse\"\r\n style=\"border-bottom: #a29e9e solid 1px\"\r\n >\r\n <span slot=\"title\" style=\"font-size: 14px\"> Admin Tools </span>\r\n </el-menu-item-group>\r\n <router-link\r\n :to=\"{ path: `/admin/templates` }\"\r\n style=\"color: white; text-decoration: none\"\r\n >\r\n <el-menu-item index=\"8-1\">\r\n <span> Project Templates </span>\r\n </el-menu-item>\r\n </router-link>\r\n <router-link\r\n :to=\"{ path: `/admin/rubrics` }\"\r\n style=\"color: white; text-decoration: none\"\r\n >\r\n <el-menu-item index=\"8-2\">\r\n <span> Rubrics </span>\r\n </el-menu-item>\r\n </router-link>\r\n </el-submenu>\r\n\r\n <el-submenu\r\n v-if=\"isAdmin || (hasInstructorRole && userRole != 'Student')\"\r\n index=\"9\"\r\n >\r\n <template slot=\"title\">\r\n <i\r\n class=\"fas fa-chart-bar nav-icon full-width\"\r\n style=\"margin-left: -2px; margin-right: 10px\"\r\n />\r\n <span v-if=\"!isMenuCollapse\"> Reports </span>\r\n </template>\r\n <el-menu-item-group\r\n v-if=\"isMenuCollapse\"\r\n style=\"border-bottom: #a29e9e solid 1px\"\r\n >\r\n <span slot=\"title\" style=\"font-size: 14px\"> Reports </span>\r\n </el-menu-item-group>\r\n <router-link\r\n :to=\"{ path: `/report/outcomes` }\"\r\n style=\"color: white; text-decoration: none\"\r\n >\r\n <el-menu-item index=\"9-1\">\r\n <span> Outcomes </span>\r\n </el-menu-item>\r\n </router-link>\r\n <router-link\r\n :to=\"{ path: `/report/individual_outcomes` }\"\r\n style=\"color: white; text-decoration: none\"\r\n >\r\n <el-menu-item index=\"9-1\">\r\n <span> Individual Outcomes </span>\r\n </el-menu-item>\r\n </router-link>\r\n <router-link\r\n :to=\"{ path: `/report/collective_feedback` }\"\r\n style=\"color: white; text-decoration: none\"\r\n >\r\n <el-menu-item index=\"9-2\">\r\n <span> Collective Feedback </span>\r\n </el-menu-item>\r\n </router-link>\r\n <router-link\r\n :to=\"{ path: `/report/student_performance` }\"\r\n style=\"color: white; text-decoration: none\"\r\n >\r\n <el-menu-item index=\"9-3\">\r\n <span> Student Performance </span>\r\n </el-menu-item>\r\n </router-link>\r\n <router-link\r\n v-if=\"isAdmin\"\r\n :to=\"{ path: `/report/documents/download` }\"\r\n style=\"color: white; text-decoration: none\"\r\n >\r\n <el-menu-item index=\"8-3\">\r\n <span> Documents Download </span>\r\n </el-menu-item>\r\n </router-link>\r\n </el-submenu>\r\n <el-submenu index=\"7\">\r\n <template slot=\"title\">\r\n <i\r\n class=\"far fa-question-circle nav-icon full-width\"\r\n style=\"margin-left: -2px; margin-right: 10px\"\r\n />\r\n <span v-if=\"!isMenuCollapse\"> Help </span>\r\n </template>\r\n <el-menu-item-group\r\n v-if=\"isMenuCollapse\"\r\n style=\"border-bottom: #a29e9e solid 1px\"\r\n >\r\n <span slot=\"title\" style=\"font-size: 14px\"> Help </span>\r\n </el-menu-item-group>\r\n <el-menu-item index=\"7-1\" @click=\"$emit('openContactDialog')\">\r\n <span> Contact Support </span>\r\n </el-menu-item>\r\n <a\r\n v-if=\"hasInstructorRole || userRole != 'Student'\"\r\n :href=\"instructorManual\"\r\n target=\"_blank\"\r\n style=\"color: white; text-decoration: none\"\r\n >\r\n <el-menu-item index=\"7-2\">\r\n <span> Instructor Manual </span>\r\n </el-menu-item>\r\n </a>\r\n <a\r\n :href=\"studentManual\"\r\n target=\"_blank\"\r\n style=\"color: white; text-decoration: none\"\r\n >\r\n <el-menu-item index=\"7-3\">\r\n <span> Student Manual </span>\r\n </el-menu-item>\r\n </a>\r\n\r\n <!-- <router-link :to=\"{ path: `https://www.usf.edu/arts-sciences/departments/english/documents/wp-usf-writes-manuals-instructor.pdf` }\" target=\"_blank\" style=\"color: white; text-decoration: none;\">\r\n <el-menu-item index=\"7-2\">\r\n <span>\r\n Instructor Manual\r\n </span>\r\n </el-menu-item>\r\n </router-link> -->\r\n <!-- <router-link :to=\"{ path: `https://www.usf.edu/arts-sciences/departments/english/documents/wp-usf-writes-manuals-student.pdf` }\" target=\"_blank\" style=\"color: white; text-decoration: none;\">\r\n <el-menu-item index=\"7-2\">\r\n <span>\r\n Student Manual\r\n </span>\r\n </el-menu-item>\r\n </router-link> -->\r\n </el-submenu>\r\n </el-menu>\r\n <p> <br> </p>\r\n <div style=\"text-align: center\">\r\n <button\r\n id=\"menu-toggle\"\r\n class=\"hamburger hamburger--arrow is-active\"\r\n type=\"button\"\r\n style=\":focus: outline; bottom: 10px;\"\r\n @click=\"menuToggle()\"\r\n >\r\n <span class=\"hamburger-box\">\r\n <span class=\"hamburger-inner\" />\r\n </span>\r\n </button>\r\n </div>\r\n </div>\r\n</template>\r\n\r\n<script>\r\nimport { mapState, mapActions } from \"vuex\";\r\nimport _ from \"lodash\";\r\nimport { Notification } from \"element-ui\";\r\nimport * as userService from \"@/services/user.service\";\r\n// import { PublicClientApplication } from '@azure/msal-browser'\r\n// Handle UI and logics for the main navigation.\r\nexport default {\r\n name: \"MainNav\",\r\n data() {\r\n return {\r\n idleDialogVisible: false,\r\n contactDialogVisible: false,\r\n isCollapse: true,\r\n terms: null,\r\n currentTerm: null,\r\n instructors: null,\r\n currentInstructor: null,\r\n courses: null,\r\n currentCourse: null,\r\n students: null,\r\n currentStudent: null,\r\n isStudent: false,\r\n isMenuCollapse: false,\r\n hasInstructorRole: false,\r\n hasStudentRole: false,\r\n isAdmin: false,\r\n adminStudents: [],\r\n adminStudent: null,\r\n adminCourses: [],\r\n adminCourse: null,\r\n studentManual: process.env.VUE_APP_STUDENT_USER_MANUAL,\r\n instructorManual: process.env.VUE_APP_INSTRUCTOR_USER_MANUAL\r\n };\r\n },\r\n computed: {\r\n ...mapState({\r\n currentTermInState: (state) => state.auth.currentTerm,\r\n termsInState: (state) => state.auth.terms,\r\n subscribedTerms: (state) => state.enrollment.subscribedTerms,\r\n instructorsInState: (state) => state.viewAs.instructors,\r\n adminCoursesInState: (state) => state.viewAs.adminCourses,\r\n courseInState: (state) => state.enrollment.currentCourse,\r\n coursesInState: (state) => state.enrollment.courses,\r\n textbookVisible: (state) => state.enrollment.textbookVisible,\r\n studentsInState: (state) => state.viewAs.students,\r\n adminUser: (state) => state.viewAs.adminUser,\r\n instructorUser: (state) => state.viewAs.instructorUser,\r\n firstName: (state) =>\r\n state.auth.user == null\r\n ? \"\"\r\n : state.auth.user.DisplayFirstName == null\r\n ? state.auth.user.FirstName\r\n : state.auth.user.DisplayFirstName,\r\n lastName: (state) =>\r\n state.auth.user == null\r\n ? \"\"\r\n : state.auth.user.DisplayLastName == null\r\n ? state.auth.user.LastName\r\n : state.auth.user.DisplayLastName,\r\n userName: (state) =>\r\n state.auth.user == null\r\n ? \"\"\r\n : state.auth.user.DisplayUserName == null\r\n ? state.auth.user.UserName\r\n : state.auth.user.DisplayUserName,\r\n orgCode: (state) =>\r\n state.auth.user == null ? null : state.auth.user.OrgCode,\r\n userRole: (state) => state.enrollment.userRole,\r\n isViewingAs: (state) => state.viewAs.isViewingAs,\r\n userInState: (state) => state.auth.user,\r\n }),\r\n },\r\n watch: {\r\n termsInState(newValue) {\r\n this.terms = newValue;\r\n },\r\n currentTermInState(newValue) {\r\n this.currentTerm = newValue.TermCode;\r\n },\r\n instructorsInState(newValue) {\r\n this.instructors = newValue;\r\n },\r\n adminCoursesInState(newValue) {\r\n this.adminCourses = newValue;\r\n },\r\n courseInState(newValue) {\r\n this.currentCourse = newValue;\r\n },\r\n coursesInState(newValue) {\r\n this.courses = newValue;\r\n },\r\n currentInstructor(newValue) {\r\n this.currentInstructor = newValue;\r\n },\r\n currentCourse(newValue) {\r\n this.currentCourse = newValue;\r\n },\r\n currentStudent(newValue) {\r\n this.currentStudent = newValue;\r\n },\r\n studentsInState(newValue) {\r\n this.students = newValue;\r\n },\r\n userRole(newValue) {\r\n if (newValue == \"Student\") {\r\n this.isStudent = true;\r\n } else {\r\n this.isStudent = false;\r\n }\r\n },\r\n // user(newValue) {\r\n // \tthis.user = newValue\r\n // \tthis.isAdmin = _.includes(newValue.Roles, 'Administrator')\r\n // \tthis.hasInstructorRole = _.includes(newValue.Roles, 'Instructor')\r\n // \tthis.hasStudentRole = _.includes(newValue.Roles, 'Student')\r\n // \t// if(this.$store.state.auth.user){\r\n // \t// this.isAdmin = _.includes(this.$store.state.auth.user.Roles, 'Administrator')\r\n // \t// }\r\n // },\r\n userInState(newValue) {\r\n this.isAdmin = _.includes(newValue.Roles, \"Administrator\");\r\n this.hasInstructorRole = _.includes(newValue.Roles, \"Instructor\");\r\n this.hasStudentRole = _.includes(newValue.Roles, \"Student\");\r\n },\r\n },\r\n async created() {\r\n this.terms = this.$store.state.auth.terms;\r\n this.currentTerm = this.$store.state.auth.currentTerm\r\n ? this.$store.state.auth.currentTerm.TermCode\r\n : null;\r\n this.instructors = this.$store.state.viewAs.instructors;\r\n this.adminCourses = this.$store.state.viewAs.adminCourses;\r\n this.courses = this.$store.state.enrollment.courses;\r\n this.currentCourse = this.$store.state.enrollment.currentCourse;\r\n this.students = this.$store.state.viewAs.students;\r\n if (this.$store.state.auth.user) {\r\n this.isAdmin = _.includes(\r\n this.$store.state.auth.user.Roles,\r\n \"Administrator\"\r\n );\r\n }\r\n this.isStudent = this.$store.state.enrollment.userRole == \"Student\";\r\n if (this.$store.state.auth.user) {\r\n this.hasInstructorRole = _.includes(\r\n this.$store.state.auth.user.Roles,\r\n \"Instructor\"\r\n );\r\n }\r\n if (this.$store.state.auth.user) {\r\n this.hasStudentRole = _.includes(\r\n this.$store.state.auth.user.Roles,\r\n \"Student\"\r\n );\r\n }\r\n\r\n // if (this.isAdmin && !this.isViewingAs && !this.currentCourse) { this.adminCourses = await courseService.getCourses(this.orgCode, this.currentTerm) }\r\n },\r\n onIdle() {\r\n // this.logOut();\r\n // this.$router.push('/');\r\n this.$emit(\"openIdleDialog\");\r\n },\r\n onActive() {},\r\n methods: {\r\n ...mapActions(\"auth\", [\"logOut\"]),\r\n ...mapActions(\"viewAs\", [\r\n \"viewAsInstructor\",\r\n \"backToAdminView\",\r\n \"viewAsStudent\",\r\n \"adminViewAsStudent\",\r\n \"backToInstructorView\",\r\n \"selectTerm\",\r\n ]),\r\n ...mapActions(\"enrollment\", [\"selectCourse\", \"selectAdminCourse\"]),\r\n onAdminStudentChange() {\r\n const studentId = this.orgCode + \";\" + this.adminStudent;\r\n this.adminViewAsStudent(studentId).then(() => {\r\n this.$router.push(\"/\");\r\n });\r\n },\r\n async searchForAdminStudent(query) {\r\n if (query !== \"\") {\r\n this.adminStudents = await userService.getAdminStudentList(\r\n this.currentTerm,\r\n this.orgCode,\r\n query\r\n );\r\n } else {\r\n this.adminStudents = [];\r\n }\r\n },\r\n // @vuese\r\n // Handle logics for menu toggling.\r\n menuToggle() {\r\n this.isMenuCollapse = !this.isMenuCollapse;\r\n const hamburger = document.querySelector(\".hamburger\");\r\n hamburger.classList.toggle(\"is-active\");\r\n\r\n const mainNav = document.querySelector(\"#main-nav\");\r\n mainNav.classList.toggle(\"full-width\");\r\n\r\n const content = document.querySelector(\"#content-wrapper\");\r\n content.classList.toggle(\"full-width\");\r\n\r\n const full_width_container = document.querySelector(\r\n \"#full_width_container\"\r\n );\r\n if (full_width_container) {\r\n full_width_container.classList.toggle(\"full-width\");\r\n }\r\n\r\n const logo = document.querySelector(\"#logo\");\r\n const logo1 = document.querySelector(\"#logo1\");\r\n const logo2 = document.querySelector(\"#logo2\");\r\n logo.classList.toggle(\"full-width\");\r\n\r\n if (this.orgCode == \"DEMO\") {\r\n if (logo.classList.contains(\"full-width\")) {\r\n logo.src = logo1.src;\r\n logo.style =\r\n \"height: 65px; width: 200px; margin-left: 4px; cursor:pointer; margin-top: 2px;\";\r\n } else {\r\n logo.src = logo2.src;\r\n logo.style =\r\n \"height: 60px; width: 60px; margin-top: 5px; cursor:pointer;\";\r\n }\r\n } else {\r\n if (logo.classList.contains(\"full-width\")) {\r\n logo.src = logo1.src;\r\n logo.style =\r\n \"height: 60px; width: 202px; margin-left: 4px; cursor:pointer; margin-top: 2px;\";\r\n } else {\r\n logo.src = logo2.src;\r\n logo.style =\r\n \"height: 55px; width: 59px; margin-top: 5px; cursor:pointer;\";\r\n }\r\n }\r\n\r\n const navIcons = document.querySelectorAll(\".nav-icon\");\r\n navIcons.forEach(function (item) {\r\n item.classList.toggle(\"full-width\");\r\n });\r\n\r\n const navSelects = document.querySelectorAll(\".nav-select\");\r\n navSelects.forEach(function (item) {\r\n item.classList.toggle(\"full-width\");\r\n });\r\n\r\n const navBtns = document.querySelectorAll(\".nav-btn\");\r\n navBtns.forEach(function (item) {\r\n item.classList.toggle(\"full-width\");\r\n });\r\n },\r\n // @vuese\r\n // Handle logics for logging user out.\r\n async onLogOut() {\r\n await this.logOut();\r\n\r\n // Using version 1.0 endpoint for bypassing account selection popup.\r\n window.location.href =\r\n process.env.VUE_APP_MSAL_AUTHORITY +\r\n \"/oauth2/logout?post_logout_redirect_uri=\" +\r\n process.env.VUE_APP_MSAL_LOGOUT_URI;\r\n // = 'https://login.microsoftonline.com/741bf7de-e2e5-46df-8d67-82607df9deaa'\r\n // this.$msal = new PublicClientApplication(\r\n // \tthis.$store.state.auth.msalConfig,\r\n // )\r\n // await this.$msal.logout()\r\n },\r\n handleOpen(key, keyPath) {\r\n console.log(key, keyPath);\r\n },\r\n handleClose(key, keyPath) {\r\n console.log(key, keyPath);\r\n },\r\n onTermChange() {\r\n const termCode = this.currentTerm;\r\n const orgCode = this.orgCode;\r\n this.selectTerm({ termCode, orgCode })\r\n .then(() => {\r\n this.$router.push(\"/\");\r\n })\r\n .catch((error) => {\r\n console.log(error);\r\n });\r\n },\r\n // @vuese\r\n // Handle logics when a course is selected.\r\n onCourseChange() {\r\n if (this.currentCourse == \"all\") {\r\n this.$router.push(\"/\");\r\n } else {\r\n const termCode = this.currentCourse.TermCode;\r\n const classCode = this.currentCourse.ClassCode;\r\n this.selectCourse({ termCode, classCode })\r\n .then(() => {\r\n this.$router.push(\"/course/\" + classCode + \"/projects\");\r\n })\r\n .catch((error) => {\r\n console.log(error);\r\n });\r\n }\r\n },\r\n onAdminCourseChange() {\r\n if (this.adminCourse == \"all\") {\r\n this.$router.push(\"/\");\r\n } else {\r\n // const termCode = this.adminCourse.TermCode\r\n const classCode = this.adminCourse.ClassCode;\r\n const adminCourse = this.adminCourse;\r\n this.selectAdminCourse({ adminCourse })\r\n .then(() => {\r\n this.$router.push(\"/course/\" + classCode + \"/projects\");\r\n })\r\n .catch((error) => {\r\n console.log(error);\r\n });\r\n }\r\n },\r\n // @vuese\r\n // Handle logics when an instructor is selected.\r\n onInstructorChange() {\r\n const instructorId = this.orgCode + \";\" + this.currentInstructor;\r\n this.viewAsInstructor(instructorId).then(() => {\r\n this.$router.push(\"/\");\r\n });\r\n },\r\n // @vuese\r\n // Handle logics when the back to admin button is clicked.\r\n backToAdmin() {\r\n this.currentInstructor = null;\r\n this.backToAdminView().then(() => {\r\n this.adminStudents = [];\r\n this.currentCourse = null;\r\n this.adminCourse = null;\r\n this.adminStudent = null;\r\n this.$router.push(\"/\");\r\n });\r\n },\r\n // @vuese\r\n // Handle logics when a student is selected.\r\n onStudentChange() {\r\n const studentId = this.orgCode + \";\" + this.currentStudent;\r\n this.viewAsStudent(studentId).then(() => {\r\n if (this.$store.state.viewAs.isViewingAs) {\r\n const isPaidCourse = this.currentCourse.IsPaidCourse;\r\n if (isPaidCourse) {\r\n const isSubscribed =\r\n this.$store.state.enrollment.currentTermSubscribed;\r\n if (isSubscribed) {\r\n this.$router\r\n .push(\"/course/\" + this.currentCourse.ClassCode + \"/projects\")\r\n .catch(() => { });\r\n } else {\r\n Notification.error({\r\n duration: 6000,\r\n title: \"Error\",\r\n message:\r\n \"Cannot view as student has not subcribed to use USF Writes this semester.\",\r\n });\r\n this.backToInstructor();\r\n }\r\n } else {\r\n this.$router\r\n .push(\"/course/\" + this.currentCourse.ClassCode + \"/projects\")\r\n .catch(() => { });\r\n }\r\n } else {\r\n Notification.error({\r\n duration: 6000,\r\n title: \"Error\",\r\n message:\r\n \"Error viewing as student has not subscribed to USF Writes this term.\"\r\n })\r\n\r\n this.backToInstructor();\r\n // this.$router\r\n // .push(\"/course/\" + this.currentCourse.ClassCode + \"/projects\")\r\n // .catch(() => { });\r\n }\r\n })\r\n .catch(error => { })\r\n .finally(() => { })\r\n },\r\n // @vuese\r\n // Handle logics when the back to instructor view is clicked.\r\n backToInstructor() {\r\n this.currentStudent = null;\r\n this.backToInstructorView().then(() => {\r\n this.$router\r\n .push(\"/course/\" + this.currentCourse.ClassCode + \"/projects\")\r\n .catch(() => {});\r\n })\r\n .catch(() => {\r\n Notification.error({\r\n duration: 6000,\r\n title: \"Error\",\r\n message:\r\n \"Catch error going back to Instructor View\"\r\n })\r\n });\r\n },\r\n // @vuese\r\n // Go to courses page.\r\n gotoCourses() {\r\n if (!this.$store.state.viewAs.isViewingAs) {\r\n this.$router.push(\"/\");\r\n } else {\r\n if (this.adminUser) {\r\n this.$router.push(\"/\");\r\n } else if (this.currentCourse) {\r\n this.$router\r\n .push(\"/course/\" + this.currentCourse.ClassCode + \"/projects\")\r\n .catch(() => {});\r\n } else {\r\n this.$router.push(\"/\");\r\n }\r\n }\r\n },\r\n },\r\n};\r\n</script>\r\n\r\n<style scoped>\r\n#main-nav {\r\n box-sizing: border-box;\r\n width: 70px;\r\n overflow-y: auto;\r\n overflow-x: clip;\r\n}\r\n\r\n#main-nav.full-width {\r\n width: 210px;\r\n}\r\n\r\n.el-menu-vertical-demo:not(.el-menu--collapse) {\r\n width: 200px;\r\n min-height: 400px;\r\n}\r\n\r\n.toggle {\r\n position: absolute;\r\n top: 50%;\r\n left: 50%;\r\n -webkit-transform: translate(-50%, -50%);\r\n transform: translate(-50%, -50%);\r\n}\r\n\r\n#menu-toggle {\r\n box-sizing: border-box;\r\n position: absolute;\r\n left: 0;\r\n bottom: 0;\r\n z-index: 1;\r\n width: 100%;\r\n}\r\n\r\n.el-menu--collapse > .el-menu-item span,\r\n.el-menu--collapse > .el-submenu > .el-submenu__title span {\r\n height: auto;\r\n width: auto;\r\n overflow: hidden;\r\n visibility: initial;\r\n display: inline-block;\r\n}\r\n.el-menu-item-group__title {\r\n padding-left: 15px !important;\r\n /* line-height: normal;\r\n font-size: 12px;\r\n color: #909399; */\r\n}\r\n\r\n.nav-icon {\r\n font-size: 26px;\r\n margin-right: 30px;\r\n /* margin-left: 4px; */\r\n color: #fff !important;\r\n}\r\n\r\n.nav-icon.full-width {\r\n font-size: 20px;\r\n margin-right: 10px;\r\n color: #fff !important;\r\n}\r\n.el-submenu__title > span {\r\n color: white;\r\n}\r\n\r\n.el-menu-item > span {\r\n color: white;\r\n}\r\n\r\n.el-menu {\r\n background-color: #006747;\r\n}\r\n\r\n.el-submenu__title {\r\n padding: 0 15px !important;\r\n}\r\n\r\n.el-menu-item {\r\n padding: 0 15px !important;\r\n}\r\n\r\n.nav-select {\r\n width: 55px;\r\n padding-bottom: 5px;\r\n}\r\n.nav-select.full-width {\r\n width: 200px;\r\n padding-bottom: 5px;\r\n}\r\n.nav-btn {\r\n width: 55px;\r\n margin-bottom: 5px;\r\n padding: 10px;\r\n}\r\n.nav-btn.full-width {\r\n width: 200px;\r\n margin-bottom: 5px;\r\n}\r\n\r\n.hamburger-inner,\r\n.hamburger-inner::before,\r\n.hamburger-inner::after {\r\n background-color: #ffffff !important;\r\n}\r\n</style>\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MainNav.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MainNav.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./MainNav.vue?vue&type=template&id=94e280a4&scoped=true&\"\nimport script from \"./MainNav.vue?vue&type=script&lang=js&\"\nexport * from \"./MainNav.vue?vue&type=script&lang=js&\"\nimport style0 from \"./MainNav.vue?vue&type=style&index=0&id=94e280a4&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"94e280a4\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('el-dialog',{attrs:{\"id\":\"contact-dialog\",\"width\":\"600px\",\"center\":\"\",\"visible\":_vm.contactDialogVisible},on:{\"update:visible\":function($event){_vm.contactDialogVisible=$event},\"close\":_vm.closeDialog}},[_c('template',{slot:\"title\"},[_c('span',{staticClass:\"dialog-title\"},[_vm._v(\"\\n Contact Support\\n \")])]),_c('hr',{staticStyle:{\"margin-bottom\":\"10px !important\"}}),(_vm.contactInformation)?_c('el-form',{ref:\"contactForm\",staticStyle:{\"padding-left\":\"0px !important\",\"padding-right\":\"0px !important\"},attrs:{\"rules\":_vm.rules,\"model\":_vm.contactInformation}},[_c('el-form-item',{attrs:{\"label\":\"Full Name\",\"prop\":\"Fullname\",\"required\":\"\",\"label-width\":_vm.formLabelWidth}},[_c('el-input',{attrs:{\"autocomplete\":\"off\",\"placeholder\":\"Enter full name\"},model:{value:(_vm.contactInformation.Fullname),callback:function ($$v) {_vm.$set(_vm.contactInformation, \"Fullname\", $$v)},expression:\"contactInformation.Fullname\"}})],1),_c('el-form-item',{attrs:{\"label\":\"Email\",\"prop\":\"Email\",\"required\":\"\",\"label-width\":_vm.formLabelWidth}},[_c('el-input',{attrs:{\"autocomplete\":\"off\",\"placeholder\":\"Enter email\"},model:{value:(_vm.contactInformation.Email),callback:function ($$v) {_vm.$set(_vm.contactInformation, \"Email\", $$v)},expression:\"contactInformation.Email\"}})],1),_c('el-form-item',{attrs:{\"label\":\"Reason\",\"prop\":\"SelectedReason\",\"required\":\"\",\"label-width\":_vm.formLabelWidth}},[_c('el-select',{staticStyle:{\"width\":\"100%\"},attrs:{\"id\":\"reasonInput\",\"filterable\":\"\",\"placeholder\":\"Select a Reason\"},model:{value:(_vm.contactInformation.SelectedReason),callback:function ($$v) {_vm.$set(_vm.contactInformation, \"SelectedReason\", $$v)},expression:\"contactInformation.SelectedReason\"}},_vm._l((_vm.reasons),function(item){return _c('el-option',{key:item.value,attrs:{\"label\":item.label,\"value\":item,\"selected\":item.label == 'Report a problem'}})}),1)],1),_c('el-form-item',{attrs:{\"label\":\"User Role\",\"prop\":\"SelectedUserType\",\"required\":\"\",\"label-width\":_vm.formLabelWidth}},[_c('el-select',{staticStyle:{\"width\":\"100%\"},attrs:{\"id\":\"userTypeInput\",\"filterable\":\"\",\"placeholder\":\"Select User Type\"},model:{value:(_vm.contactInformation.SelectedUserType),callback:function ($$v) {_vm.$set(_vm.contactInformation, \"SelectedUserType\", $$v)},expression:\"contactInformation.SelectedUserType\"}},_vm._l((_vm.userTypes),function(item){return _c('el-option',{key:item.value,attrs:{\"label\":item.label,\"value\":item,\"selected\":item.label == 'Student'}})}),1)],1),_c('el-form-item',{attrs:{\"label\":\"Course\",\"prop\":\"SelectedCourse\",\"required\":\"\",\"label-width\":_vm.formLabelWidth}},[_c('el-select',{staticStyle:{\"width\":\"100%\"},attrs:{\"id\":\"courseInput\",\"value-key\":\"ClassCode\",\"filterable\":\"\",\"placeholder\":\"Select a Course\"},on:{\"change\":function($event){return _vm.onCourseChange()}},model:{value:(_vm.contactInformation.SelectedCourse),callback:function ($$v) {_vm.$set(_vm.contactInformation, \"SelectedCourse\", $$v)},expression:\"contactInformation.SelectedCourse\"}},_vm._l((_vm.courses),function(item){return _c('el-option',{key:item.Id,attrs:{\"label\":item.ClassDescription,\"value\":item}})}),1)],1),(_vm.contactInformation.SelectedCourse && _vm.assignments.length > 0)?_c('el-form-item',{attrs:{\"label\":\"Project\",\"prop\":\"SelectedProject\",\"label-width\":_vm.formLabelWidth}},[_c('el-select',{staticStyle:{\"width\":\"100%\"},attrs:{\"id\":\"projectInput\",\"value-key\":\"Id\",\"filterable\":\"\",\"placeholder\":\"Select a project\"},on:{\"change\":function($event){return _vm.onProjectChange()}},model:{value:(_vm.contactInformation.SelectedProject),callback:function ($$v) {_vm.$set(_vm.contactInformation, \"SelectedProject\", $$v)},expression:\"contactInformation.SelectedProject\"}},_vm._l((_vm.assignments),function(item){return _c('el-option',{key:item.Id,attrs:{\"label\":item.AssignmentName,\"value\":item}})}),1)],1):_vm._e(),_c('el-form-item',{attrs:{\"label\":\"Message\",\"prop\":\"Message\",\"required\":\"\",\"label-width\":_vm.formLabelWidth}},[_c('el-input',{attrs:{\"id\":\"messageInput\",\"type\":\"textarea\",\"autosize\":{ minRows: 4, maxRows: 4},\"autocomplete\":\"off\"},model:{value:(_vm.contactInformation.Message),callback:function ($$v) {_vm.$set(_vm.contactInformation, \"Message\", $$v)},expression:\"contactInformation.Message\"}})],1),_c('el-form-item',{attrs:{\"label\":\"Upload Files\",\"label-width\":_vm.formLabelWidth}},[_c('el-upload',{staticClass:\"upload-demo\",attrs:{\"action\":\"\",\"on-remove\":_vm.handleRemove,\"on-error\":_vm.uploadError,\"on-success\":_vm.uploadSuccess,\"on-change\":_vm.uploadChange,\"multiple\":\"\",\"limit\":6,\"auto-upload\":false}},[_c('el-button',{attrs:{\"size\":\"small\",\"type\":\"primary\"}},[_vm._v(\"\\n Click to upload\\n \")])],1)],1),_c('el-form-item',{staticStyle:{\"padding-left\":\"200px\"}},[_c('el-button',{on:{\"click\":_vm.closeDialog}},[_vm._v(\"\\n Cancel\\n \")]),_c('el-button',{directives:[{name:\"loading\",rawName:\"v-loading\",value:(_vm.loading),expression:\"loading\"}],attrs:{\"type\":\"primary\"},on:{\"click\":_vm.onSubmitClick}},[_vm._v(\"\\n Submit\\n \")])],1)],1):_vm._e()],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n <el-dialog\r\n id=\"contact-dialog\"\r\n width=\"600px\"\r\n center\r\n :visible.sync=\"contactDialogVisible\"\r\n @close=\"closeDialog\"\r\n >\r\n <template slot=\"title\">\r\n <span class=\"dialog-title\">\r\n Contact Support\r\n </span>\r\n </template>\r\n <hr style=\"margin-bottom: 10px !important;\">\r\n <el-form\r\n v-if=\"contactInformation\"\r\n ref=\"contactForm\"\r\n :rules=\"rules\"\r\n :model=\"contactInformation\"\r\n style=\"padding-left: 0px !important;padding-right: 0px !important\"\r\n >\r\n <el-form-item label=\"Full Name\" prop=\"Fullname\" required :label-width=\"formLabelWidth\">\r\n <el-input v-model=\"contactInformation.Fullname\" autocomplete=\"off\" placeholder=\"Enter full name\" />\r\n </el-form-item>\r\n <el-form-item label=\"Email\" prop=\"Email\" required :label-width=\"formLabelWidth\">\r\n <el-input v-model=\"contactInformation.Email\" autocomplete=\"off\" placeholder=\"Enter email\" />\r\n </el-form-item>\r\n <el-form-item label=\"Reason\" prop=\"SelectedReason\" required :label-width=\"formLabelWidth\">\r\n <el-select id=\"reasonInput\" v-model=\"contactInformation.SelectedReason\" filterable placeholder=\"Select a Reason\" style=\"width:100%;\">\r\n <el-option\r\n v-for=\"item in reasons\"\r\n :key=\"item.value\"\r\n :label=\"item.label\"\r\n :value=\"item\"\r\n :selected=\"item.label == 'Report a problem'\"\r\n />\r\n </el-select>\r\n </el-form-item>\r\n <el-form-item label=\"User Role\" prop=\"SelectedUserType\" required :label-width=\"formLabelWidth\">\r\n <el-select id=\"userTypeInput\" v-model=\"contactInformation.SelectedUserType\" filterable placeholder=\"Select User Type\" style=\"width:100%;\">\r\n <el-option\r\n v-for=\"item in userTypes\"\r\n :key=\"item.value\"\r\n :label=\"item.label\"\r\n :value=\"item\"\r\n :selected=\"item.label == 'Student'\"\r\n />\r\n </el-select>\r\n </el-form-item>\r\n <el-form-item label=\"Course\" prop=\"SelectedCourse\" required :label-width=\"formLabelWidth\">\r\n <el-select id=\"courseInput\" v-model=\"contactInformation.SelectedCourse\" value-key=\"ClassCode\" filterable placeholder=\"Select a Course\" style=\"width:100%;\" @change=\"onCourseChange()\">\r\n <el-option v-for=\"item in courses\" :key=\"item.Id\" :label=\"item.ClassDescription\" :value=\"item\" />\r\n </el-select>\r\n </el-form-item>\r\n\r\n <el-form-item v-if=\"contactInformation.SelectedCourse && assignments.length > 0\" label=\"Project\" prop=\"SelectedProject\" :label-width=\"formLabelWidth\">\r\n <el-select id=\"projectInput\" v-model=\"contactInformation.SelectedProject\" value-key=\"Id\" filterable placeholder=\"Select a project\" style=\"width:100%;\" @change=\"onProjectChange()\">\r\n <el-option v-for=\"item in assignments\" :key=\"item.Id\" :label=\"item.AssignmentName\" :value=\"item\" />\r\n </el-select>\r\n </el-form-item>\r\n\r\n <el-form-item label=\"Message\" prop=\"Message\" required :label-width=\"formLabelWidth\">\r\n <el-input id=\"messageInput\" v-model=\"contactInformation.Message\" type=\"textarea\" :autosize=\"{ minRows: 4, maxRows: 4}\" autocomplete=\"off\" />\r\n </el-form-item>\r\n\r\n <el-form-item label=\"Upload Files\" :label-width=\"formLabelWidth\">\r\n <el-upload\r\n class=\"upload-demo\"\r\n action=\"\"\r\n\r\n :on-remove=\"handleRemove\"\r\n :on-error=\"uploadError\"\r\n :on-success=\"uploadSuccess\"\r\n :on-change=\"uploadChange\"\r\n multiple\r\n :limit=\"6\"\r\n\r\n :auto-upload=\"false\"\r\n >\r\n <el-button size=\"small\" type=\"primary\">\r\n Click to upload\r\n </el-button>\r\n <!-- <div slot=\"tip\" class=\"el-upload__tip\">\r\n\t\t\t\t\t\t\tjpg/png files with a size less than 500kb\r\n\t\t\t\t\t\t</div> -->\r\n </el-upload>\r\n </el-form-item>\r\n\r\n <el-form-item style=\"padding-left:200px\">\r\n <el-button @click=\"closeDialog\">\r\n Cancel\r\n </el-button>\r\n <el-button v-loading=\"loading\" type=\"primary\" @click=\"onSubmitClick\">\r\n Submit\r\n </el-button>\r\n </el-form-item>\r\n </el-form>\r\n </el-dialog>\r\n</template>\r\n\r\n<script>\r\nimport * as courseService from '@/services/course.service'\r\nimport * as assignmentService from '@/services/assignment.service'\r\nimport * as termService from '@/services/term.service'\r\nimport http from '@/utils/axios'\r\nimport { Notification } from 'element-ui'\r\n// Handle UI and logics for the Contact Support dialog.\r\nexport default {\r\n\tname: 'Support',\r\n\tprops: {\r\n\t\tcontactDialogVisible: Boolean\r\n\t},\r\n\tdata() {\r\n\t\treturn {\r\n\t\t\tloading: false,\r\n\t\t\ttermCode: null,\r\n\t\t\torgCode: null,\r\n\t\t\tformLabelWidth: '120px',\r\n\t\t\tcontactInformation: null,\r\n\t\t\tuserTypes: [{\r\n\t\t\t\tvalue: 'Instructor',\r\n\t\t\t\tlabel: 'Instructor'\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\tvalue: 'Student',\r\n\t\t\t\tlabel: 'Student'\r\n\t\t\t}\r\n\t\t\t],\r\n\r\n\t\t\treasons: [{\r\n\t\t\t\tvalue: 'Report a problem',\r\n\t\t\t\tlabel: 'Report a problem'\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\tvalue: 'Submit Feedback',\r\n\t\t\t\tlabel: 'Submit Feedback'\r\n\t\t\t}\r\n\t\t\t],\r\n\t\t\tcourses: [],\r\n\t\t\tassignments: [],\r\n\t\t\tattachedFile: '',\r\n\r\n\t\t\trules: {\r\n\t\t\t\tFullname: [\r\n\t\t\t\t\t{ required: true, message: 'Please input full name', trigger: 'blur' }\r\n\t\t\t\t],\r\n\t\t\t\tEmail: [\r\n\t\t\t\t\t{ required: true, message: 'Please input email', trigger: 'blur' }\r\n\t\t\t\t],\r\n\t\t\t\tSelectedReason: [\r\n\t\t\t\t\t{ required: true, message: 'Please select a reason', trigger: 'change' }\r\n\t\t\t\t],\r\n\t\t\t\tSelectedUserType: [\r\n\t\t\t\t\t{ required: true, message: 'Please select a role', trigger: 'change' }\r\n\t\t\t\t],\r\n\t\t\t\tSelectedCourse: [\r\n\t\t\t\t\t{ required: true, message: 'Please select a course', trigger: 'change' }\r\n\t\t\t\t],\r\n\t\t\t\tMessage: [\r\n\t\t\t\t\t{ required: true, message: 'Please input message', trigger: 'change' }\r\n\t\t\t\t]\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\tmounted: function() {\r\n\t\tthis.contactDialogVisible = true\r\n\t},\r\n\tasync created() {\r\n\t\tlet fullName = ''\r\n\t\tlet email = ''\r\n\t\tlet role = ''\r\n\t\t// Check view as\r\n\t\tif (this.$store.state.auth.user) {\r\n\t\t\tif (this.$store.state.viewAs.isViewingAs) {\r\n\t\t\t\tif (this.$store.state.viewAs.adminUser) {\r\n\t\t\t\t\tfullName = this.$store.state.viewAs.adminUser.LastName + ', ' + this.$store.state.viewAs.adminUser.FirstName\r\n\t\t\t\t\temail = this.$store.state.viewAs.adminUser.Email\r\n\t\t\t\t\trole = 'Instructor'\r\n\t\t\t\t} else if (this.$store.state.viewAs.instructorUser) {\r\n\t\t\t\t\tfullName = this.$store.state.viewAs.instructorUser.LastName + ', ' + this.$store.state.viewAs.instructorUser.FirstName\r\n\t\t\t\t\temail = this.$store.state.viewAs.instructorUser.Email\r\n\t\t\t\t\trole = 'Instructor'\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tfullName = this.$store.state.auth.user.LastName + ', ' + this.$store.state.auth.user.FirstName\r\n\t\t\t\temail = this.$store.state.auth.user.Email\r\n\t\t\t}\r\n\t\t\trole = this.$store.state.enrollment.userRole\r\n\t\t\tthis.termCode = this.$store.state.enrollment.termCode\r\n\t\t\tthis.orgCode = this.$store.state.auth.user.OrgCode\r\n\t\t\tif (this.termCode != null) {this.courses = this.$store.state.enrollment.courses.filter(c => c.TermCode == this.termCode)}\r\n\t\t\tthis.assignments = []\r\n\t\t\tif (this.$store.state.enrollment && this.$store.state.enrollment.currentCourse) { this.assignments = await assignmentService.getAssignmentsByTemplate(this.$store.state.enrollment.currentCourse.ProjectTemplate) }\r\n\t\t\tthis.contactInformation = {\r\n\t\t\t\tFullname: fullName,\r\n\t\t\t\tEmail: email,\r\n\t\t\t\tSelectedUserType: {\r\n\t\t\t\t\tvalue: role,\r\n\t\t\t\t\tlabel: role\r\n\t\t\t\t},\r\n\t\t\t\tSelectedCourse: this.$store.state.enrollment.currentCourse,\r\n\t\t\t\tSelectedProject: null,\r\n\t\t\t\tInstructorName: '',\r\n\t\t\t\tMessage: '',\r\n\t\t\t\tAttachments: []\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tthis.orgCode = 'USF'\r\n\t\t\tthis.contactInformation = {\r\n\t\t\t\tFullname: fullName,\r\n\t\t\t\tEmail: email,\r\n\t\t\t\tSelectedUserType: null,\r\n\t\t\t\tSelectedCourse: null,\r\n\t\t\t\tSelectedProject: null,\r\n\t\t\t\tInstructorName: '',\r\n\t\t\t\tMessage: '',\r\n\t\t\t\tAttachments: []\r\n\t\t\t}\r\n\t\t}\r\n\t\tif (!this.termCode) { await this.getCurrentTerm() }\r\n\t\tif (!this.courses || this.courses.length == 0) { await this.getCourses() }\r\n\t\tthis.courses.sort(function(a, b) {\r\n\t\t\tvar nameA = a.ClassDescription.toUpperCase() // ignore upper and lowercase\r\n\t\t\tvar nameB = b.ClassDescription.toUpperCase() // ignore upper and lowercase\r\n\t\t\tif (nameA < nameB) {\r\n\t\t\t\treturn -1\r\n\t\t\t}\r\n\t\t\tif (nameA > nameB) {\r\n\t\t\t\treturn 1\r\n\t\t\t}\r\n\t\t\treturn 0\r\n\t\t})\r\n\t},\r\n\tmethods: {\r\n\t\tasync onProjectChange() {\r\n\t\t\tconsole.log(this.contactInformation.SelectedProject)\r\n\t\t},\r\n\t\tasync onCourseChange() {\r\n\t\t\tthis.assignments = []\r\n\t\t\tconsole.log(this.contactInformation.SelectedCourse)\r\n\t\t\tthis.assignments = await assignmentService.getAssignmentsByTemplate(this.contactInformation.SelectedCourse.ProjectTemplate)\r\n\t\t\tconsole.log(this.assignments)\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// CLose the contact support dialog.\r\n\t\tcloseDialog() {\r\n\t\t\tthis.$emit('close')\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Get current term by organization code.\r\n\t\tasync getCurrentTerm() {\r\n\t\t\tconst thisTerm = await termService.getCurrentTerm(this.orgCode)\r\n\t\t\tif (thisTerm) {\r\n\t\t\t\tthis.termCode = thisTerm.TermCode\r\n\t\t\t}\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Get all courses in a term\r\n\t\tasync getCourses() {\r\n\t\t\tthis.courses = await courseService.getCourses(this.orgCode, this.termCode)\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Handles upload errors.\r\n\t\tuploadError(err, file, attachments) {\r\n\t\t\tconsole.log(err)\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Hadnle logics when an attachment is selected.\r\n\t\tuploadChange(file, attachments) {\r\n\t\t\tthis.contactInformation['Attachments'].push(file.raw)\r\n\t\t},\r\n\t\tuploadSuccess(response, file, attachments) {\r\n\t\t\tconsole.log(response)\r\n\t\t},\r\n\t\thandleRemove(file, attachments) {\r\n\t\t\tconsole.log(file)\r\n\t\t\tconsole.log(attachments)\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Hadnle logics when the submit button is clicked.\r\n\t\tasync onSubmitClick() {\r\n\t\t\tthis.$refs['contactForm'].validate(async(valid) => {\r\n\t\t\t\tif (valid) {\r\n\t\t\t\t\tconst instructors = await courseService.getInstructorsByClassCode(this.termCode, this.contactInformation['SelectedCourse']['ClassCode'], this.orgCode)\r\n\t\t\t\t\tif (instructors && instructors.length > 0) {\r\n\t\t\t\t\t\tthis.contactInformation['InstructorName'] = instructors[0]['LastName'] + ', ' + instructors[0]['FirstName']\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tthis.contactInformation['InstructorName'] = 'Unknown'\r\n\t\t\t\t\t}\r\n\t\t\t\t\tconst supportTicket = {}\r\n\t\t\t\t\tsupportTicket.fullName = this.contactInformation['Fullname']\r\n\t\t\t\t\tsupportTicket.reason = this.contactInformation['SelectedReason'].value\r\n\t\t\t\t\tsupportTicket.email = this.contactInformation['Email']\r\n\t\t\t\t\tsupportTicket.course = this.contactInformation['SelectedCourse']['ClassDescription']\r\n\t\t\t\t\tif (this.contactInformation['SelectedProject']) { supportTicket.project = this.contactInformation['SelectedProject']['AssignmentName'] }\r\n\t\t\t\t\tsupportTicket.instructor = this.contactInformation['InstructorName']\r\n\t\t\t\t\tsupportTicket.message = this.contactInformation['Message']\r\n\t\t\t\t\tsupportTicket.userRole = this.contactInformation['SelectedUserType'].value\r\n\t\t\t\t\tconst files = this.contactInformation['Attachments']\r\n\t\t\t\t\tconst data = new FormData()\r\n\t\t\t\t\tlet count = 0\r\n\t\t\t\t\tArray.prototype.forEach.call(files, function(file) {\r\n\t\t\t\t\t\tdata.append('file[' + count + ']', file)\r\n\t\t\t\t\t\tcount++\r\n\t\t\t\t\t})\r\n\t\t\t\t\tdata.append('supportTicket', JSON.stringify(supportTicket))\r\n\t\t\t\t\tconst that = this\r\n\r\n\t\t\t\t\thttp.post('/account/submitTicket/', data, {\r\n\t\t\t\t\t\theaders: { 'Content-Type': 'multipart/form-data' }\r\n\t\t\t\t\t})\r\n\t\t\t\t\t\t.then(function() {\r\n\t\t\t\t\t\t\tNotification.success({\r\n\t\t\t\t\t\t\t\tduration: 6000,\r\n\t\t\t\t\t\t\t\ttitle: 'Success',\r\n\t\t\t\t\t\t\t\tmessage: 'Your support ticket has been submitted. We will respond to your inquiry shortly.'\r\n\t\t\t\t\t\t\t})\r\n\r\n\t\t\t\t\t\t\tthat.$emit('close')\r\n\t\t\t\t\t\t})\r\n\t\t\t\t\t\t.catch(function(error) {\r\n\t\t\t\t\t\t\tconsole.log(error)\r\n\t\t\t\t\t\t\tNotification.error({\r\n\t\t\t\t\t\t\t\tduration: 6000,\r\n\t\t\t\t\t\t\t\ttitle: 'Error',\r\n\t\t\t\t\t\t\t\tmessage: 'Your support ticket was not submitted.'\r\n\t\t\t\t\t\t\t})\r\n\t\t\t\t\t\t\tthat.$emit('close')\r\n\t\t\t\t\t\t})\r\n\t\t\t\t}\r\n\t\t\t})\r\n\t\t}\r\n\t}\r\n}\r\n</script>\r\n\r\n<style scoped>\r\n.page\r\n{\r\n\twidth: 100%!important;\r\n\theight: 100vh!important;\r\n\tbackground-image: url(\"../../assets/login-background.jpg\");\r\n\tbackground-position: 50%;\r\n\tbackground-repeat: no-repeat;\r\n background-size: cover;\r\n}\r\n.content{\r\n\tmargin-left: auto!important;\r\n margin-right: auto!important;\r\n\ttext-align: center;\r\n\tbackground-color: #eff2f7;\r\n\r\n}\r\n.left{\r\n\tfloat: left;\r\n\tbackground-color: #eff2f7;\r\n\tpadding-top: 8%;\r\n\tdisplay:none;\r\n}\r\n.forimg1\r\n{\r\n\twidth: 95%;\r\n\tpadding-top: 15%;\r\n\tpadding-bottom: 15%;\r\n}\r\n.right\r\n{\r\n\tfloat: right;\r\n\tbackground-color: white;\r\n}\r\n.el-form\r\n{\r\n\ttext-decoration: none;\r\n\tpadding-left: 10%;\r\n\tpadding-right: 10%;\r\n}\r\n.login\r\n{\r\n\tfont-family: Montserrat,Helvetica,Arial,sans-serif;\r\n\tline-height: 1.2;\r\n\tcolor: #2c2c2c;\r\n\tfont-size: 120%;\r\n\tfont-weight: 500;\r\n\tmargin-bottom: 1rem!important;\r\n}\r\n.welcome\r\n{\r\n color: #626262;\r\n\tfont-family: Montserrat,Helvetica,Arial,sans-serif;\r\n\tfont-weight: 400;\r\n\tfont-size: 90%;\r\n\tline-height: 1.5;\r\n\tletter-spacing: .01rem;\r\n}\r\n.username\r\n{\r\n\tpointer-events: none;\r\n\tposition: absolute;\r\n\tleft: 35px;\r\n\ttop: 0px;\r\n\tcolor: rgba(0,0,0,.4);\r\n\tcursor: text;\r\n\tfont-size: .80rem;\r\n\ttransition: all .2s ease;\r\n}\r\n.icon1\r\n{\r\n pointer-events: none;\r\n\tposition: absolute;\r\n\tleft: 10px;\r\n\ttop: -12px;\r\n\tcolor: rgba(0,0,0,.4);\r\n\tcursor: text;\r\n\tfont-size: .80rem;\r\n\ttransition: all .2s ease;\r\n}\r\n.pass\r\n{\r\n\tpointer-events: none;\r\n\tposition: absolute;\r\n\tleft: 35px;\r\n\ttop: 0px;\r\n\tcolor: rgba(0,0,0,.4);\r\n\tcursor: text;\r\n\tfont-size: .80rem;\r\n\ttransition: all .2s ease;\r\n}\r\n.icon2\r\n{\r\n\tpointer-events: none;\r\n\tposition: absolute;\r\n\tleft: 10px;\r\n\ttop: -12px;\r\n\tcolor: rgba(0,0,0,.4);\r\n\tcursor: text;\r\n\tfont-size: .80rem;\r\n\ttransition: all .2s ease;\r\n}\r\nspan.el-checkbox__label\r\n{\r\n\tpadding-left: 0px!important;\r\n}\r\n.forgotPassword\r\n{\r\n text-decoration: none;\r\n float: right;\r\n color:rgb(115, 103, 240);\r\n}\r\nhr\r\n{\r\n\tmargin-bottom: 7%;\r\n\tborder-bottom: 1px;\r\n\tborder-top: 1px solid rgba(0, 0, 0, 0.1);\r\n}\r\n.el-input\r\n{\r\n width:100% !important;\r\n}\r\n.title\r\n{\r\n\ttext-align: left;\r\n}\r\n.el-checkbox\r\n{\r\n\ttext-align: left;\r\n}\r\n.el-form-item\r\n{\r\n\tcolor: #626262;\r\n\tfont-weight: 400;\r\n\ttext-align: left;\r\n\tfont-family: Montserrat,Helvetica,Arial,sans-serif;\r\n\tfont-size: 14px;\r\n\tline-height: 1.5;\r\n\tletter-spacing: .01rem;\r\n}\r\n.el-button\r\n{\r\n\tfont-family: Montserrat,Helvetica,Arial,sans-serif;\r\n}\r\n/* button.el-button--default\r\n{\r\n\tcolor:rgb(115, 103, 240);\r\n\tborder-color: rgb(115, 103, 240);\r\n}\r\nbutton.el-button--primary\r\n{\r\n\tbackground-color: rgb(115, 103, 240);\r\n border-color: rgb(115, 103, 240);\r\n} */\r\n.el-input\r\n{\r\n\twidth: 90%;\r\n}\r\n#usernameInput.el-input__inner\r\n{\r\n\tpadding-left: 30px;\r\n}\r\n#passwordInput.el-input__inner\r\n{\r\n\tpadding-left: 30px;\r\n}\r\n\r\n.h-screen\r\n{\r\n height: 100vh!important;\r\n}\r\n.page-reg\r\n{\r\n\twidth: 100%!important;\r\n\theight: 100vh!important;\r\n\tbackground-image: url(\"../../assets/login-background.jpg\");\r\n\tbackground-position: 50%;\r\n\tbackground-repeat: no-repeat;\r\n background-size: cover;\r\n\t/* background-attachment: fixed;\r\nbackground-size: 100%; */\r\n}\r\n.content-reg{\r\n\t/* width:60%; */\r\n\tmargin-left: auto!important;\r\n margin-right: auto!important;\r\n\ttext-align: center;\r\n\tbackground-color: #eff2f7;\r\n\r\n}\r\n.left-reg{\r\n\t/* width: 50%; */\r\n\tfloat: left;\r\n\tbackground-color: #eff2f7;\r\n\tpadding-top: 20%;\r\n\tdisplay:none;\r\n}\r\n.right-reg\r\n{\r\n\t/* width: 50%; */\r\n\tfloat: right;\r\n\tbackground-color: white;\r\n}\r\n\r\n.firstName\r\n{\r\n\tpointer-events: none;\r\n\tposition: absolute;\r\n\tleft: 10px;\r\n\ttop: 0px;\r\n\tcolor: rgba(0,0,0,.4);\r\n\tcursor: text;\r\n\tfont-size: .80rem;\r\n\ttransition: all .2s ease;\r\n}\r\n\r\n.lastName\r\n{\r\n\tpointer-events: none;\r\n\tposition: absolute;\r\n\tleft: 10px;\r\n\ttop: 0px;\r\n\tcolor: rgba(0,0,0,.4);\r\n\tcursor: text;\r\n\tfont-size: .80rem;\r\n\ttransition: all .2s ease;\r\n}\r\n.email\r\n{\r\n\tpointer-events: none;\r\n\tposition: absolute;\r\n\tleft: 10px;\r\n\ttop: 0px;\r\n\tcolor: rgba(0,0,0,.4);\r\n\tcursor: text;\r\n\tfont-size: .80rem;\r\n\ttransition: all .2s ease;\r\n}\r\n\r\n#showType\r\n{\r\n\tpointer-events: none;\r\n\tposition: absolute;\r\n\tleft: 10px;\r\n\ttop: 0px;\r\n\tcolor: rgba(0,0,0,.4);\r\n\tcursor: text;\r\n\tfont-size: .80rem;\r\n\ttransition: all .2s ease;\r\n}\r\n\r\n .h-screen-reg\r\n{\r\n height: 100vh!important;\r\n}\r\n\r\n.flex\r\n{\r\n display: flex!important;\r\n}\r\n.w-full\r\n{\r\n width: 100%!important;\r\n}\r\n.mx-auto\r\n{\r\n margin-left: auto!important;\r\n margin-right: auto!important;\r\n}\r\n.self-center\r\n{\r\n align-self: center!important;\r\n}\r\n\r\n@media only screen and (min-width: 576px)\r\n{\r\n\t.sm-c\r\n\t{\r\n\t\t\twidth: 50%!important;\r\n\t}\r\n}\r\n@media only screen and (min-width: 768px)\r\n{\r\n\t.md-c\r\n\t{\r\n\t\t\twidth: 50%!important;\r\n\t}\r\n}\r\n@media only screen and (min-width: 992px)\r\n{\r\n\t.lg-c\r\n\t{\r\n\t\t\twidth: 75%!important;\r\n\t}\r\n}\r\n@media only screen and (min-width: 1200px)\r\n{\r\n\t.xl-c\r\n\t{\r\n\t\t\twidth: 60%!important;\r\n\t}\r\n}\r\n@media only screen and (min-width: 576px)\r\n{\r\n\t.sm-l\r\n\t{\r\n\t\t\tdisplay: none !important;\r\n\t}\r\n}\r\n@media only screen and (min-width: 768px)\r\n{\r\n\t.md-l\r\n\t{\r\n\t\t\tdisplay: none !important;\r\n\t}\r\n}\r\n@media only screen and (min-width: 992px)\r\n{\r\n\t.lg-l\r\n\t{\r\n\t\t\tdisplay: block!important;\r\n\t\t\twidth:50% !important;\r\n\t}\r\n}\r\n@media only screen and (min-width: 576px)\r\n{\r\n\t.sm-r\r\n\t{\r\n\t\t\twidth: 100%!important;\r\n\t}\r\n}\r\n@media only screen and (min-width: 768px)\r\n{\r\n\t.md-r\r\n\t{\r\n\t\t\twidth: 100%!important;\r\n\t}\r\n}\r\n@media only screen and (min-width: 992px)\r\n{\r\n\t.lg-r\r\n\t{\r\n\t\t\twidth: 50%!important;\r\n\t}\r\n}\r\n\r\n</style>\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Contact.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Contact.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Contact.vue?vue&type=template&id=dbf28c08&scoped=true&\"\nimport script from \"./Contact.vue?vue&type=script&lang=js&\"\nexport * from \"./Contact.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Contact.vue?vue&type=style&index=0&id=dbf28c08&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"dbf28c08\",\n null\n \n)\n\nexport default component.exports","<template>\r\n <div id=\"app\">\r\n <div v-if=\"isAuthenticated\">\r\n <div v-if=\"!$route.meta.plainLayout && !$route.meta.isLaunchPage\">\r\n <div>\r\n <header id=\"nav-wrapper\">\r\n <main-nav @openContactDialog=\"contactDialogVisible = true\" @openIdleDialog=\"idleDialogVisible = true\" />\r\n </header>\r\n <div id=\"content-wrapper\" class=\"full-width\">\r\n <router-view />\r\n </div>\r\n <div>\r\n <contactVue v-if=\"contactDialogVisible\" :contact-dialog-visible.sync=\"contactDialogVisible\" @close=\"contactDialogVisible = false\" />\r\n <!-- <idleVue v-if=\"idleDialogVisible\" :idle-dialog-visible.sync=\"idleDialogVisible\" @idleLogout=\"idleLogout()\" @close=\"idleDialogVisible = false\" /> -->\r\n </div>\r\n </div>\r\n </div>\r\n <div v-else-if=\"!$route.meta.plainLayout && $route.meta.isLaunchPage\">\r\n <Header />\r\n <PreLoader v-if=\"isLoading\" />\r\n <router-view />\r\n <Footer />\r\n </div>\r\n <div v-if=\"$route.meta.plainLayout\">\r\n <router-view />\r\n </div>\r\n </div>\r\n <div v-else-if=\"!$route.meta.plainLayout && $route.meta.isLaunchPage\">\r\n <Header />\r\n <PreLoader v-if=\"isLoading\" />\r\n <router-view />\r\n <Footer />\r\n </div>\r\n <div\r\n v-else-if=\"($route.name == 'No Profile' || $route.name == '404' || $route.name == 'CanvasRedirect' ||\r\n $route.name != 'DemoSignIn' || $route.name != 'DemoSignUp' || $route.name != 'ConfirmEmail')\r\n && $route.meta.plainLayout\"\r\n >\r\n <router-view />\r\n </div>\r\n <div v-else>\r\n <div class=\"page h-screen flex w-full\">\r\n <div class=\"content sm-c md-c lg-c xl-c mx-auto self-center\" style=\"500px !important\">\r\n <div>\r\n <!-- <h1>We are signing you in, please wait.</h1> -->\r\n </div>\r\n <div style=\"text-align: center; margin-top: 20px;\">\r\n <!-- <el-button type=\"primary\" @click=\"contactDialogVisible = true\">\r\n <span>\r\n Contact Us\r\n </span>\r\n </el-button> -->\r\n </div>\r\n </div>\r\n </div>\r\n <div>\r\n <contactVue v-if=\"contactDialogVisible\" :contact-dialog-visible.sync=\"contactDialogVisible\" @close=\"contactDialogVisible = false\" />\r\n </div>\r\n </div>\r\n\r\n </div>\r\n</template>\r\n\r\n<script>\r\nimport Header from '@/components/layouts/Header'\r\nimport Footer from '@/components/layouts/Footer'\r\nimport PreLoader from '@/components/layouts/PreLoader'\r\nimport MainNav from '@/components/layouts/MainNav'\r\nimport contactVue from '@/views/support/Contact.vue'\r\n// import idleVue from '@/views/idle/IdleDialog.vue'\r\n// import { PublicClientApplication } from '@azure/msal-browser'\r\nimport { mapState, mapActions } from 'vuex'\r\nimport * as surveyService from '@/services/survey.service'\r\nimport { Notification } from 'element-ui'\r\n// import * as termService from '@/services/term.service'\r\n\r\nexport default {\r\n\tname: 'App',\r\n\tcomponents: {\r\n\t\tHeader,\r\n\t\tFooter,\r\n\t\tPreLoader,\r\n\t\tMainNav,\r\n\t\tcontactVue\r\n\t\t// idleVue\r\n\t},\r\n\tdata() {\r\n\t\treturn {\r\n\t\t\tcontactDialogVisible: false,\r\n\t\t\tidleDialogVisible: false,\r\n\t\t\tisLoading: true,\r\n\t\t\tcurrentUrl: '',\r\n\t\t\tisAuthenticated: this.$store.state.auth.isAuthenticated\r\n\t\t}\r\n\t},\r\n\tcomputed: {\r\n\t\t...mapState({\r\n\t\t\tisAuthenticatedInState: state => state.auth.isAuthenticated,\r\n\t\t\tdisplayOptIn: state => state.auth.displayOptIn\r\n\t\t})\r\n\t},\r\n\twatch: {\r\n\t\tisAuthenticatedInState(newValue) {\r\n\t\t\tthis.isAuthenticated = newValue\r\n\t\t},\r\n\t\t'$route'(pathUrl) {\r\n\t\t\tthis.currentUrl = pathUrl.path\r\n\t\t\tthis.isLoading = true\r\n\t\t\tsetTimeout(() => { this.isLoading = false }, 1500)\r\n\t\t},\r\n\t\tdisplayOptIn(newValue) {\r\n\t\t\tif (newValue && !this.$store.state.viewAs.isViewingAs) {\r\n\t\t\t\tthis.checkOptInStatus()\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\tasync mounted() {\r\n\t\tthis.currentUrl = window.location.pathname\r\n\t\tsetTimeout(() => {\r\n\t\t\tthis.isLoading = false\r\n\t\t}, 2000)\r\n\t},\r\n\tasync created() {\r\n\t},\r\n\tmethods: {\r\n\t\t...mapActions('auth', ['logOut', 'singleSignOn', 'setMsal']),\r\n\t\tidleLogout() {\r\n\t\t\tthis.idleDialogVisible = false\r\n\t\t\tthis.logOut()\r\n\t\t\tthis.$router.push('/')\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Check for user's opt in status before logging in.\r\n\t\t// Display consent if not already opted in.\r\n\t\tasync checkOptInStatus() {\r\n\t\t\tconst roles = this.$store.state.auth.user.Roles\r\n\t\t\tif (roles.includes('Administrator')) {\r\n\t\t\t\tthis.displayInstructorConsent()\r\n\t\t\t} else if (roles.includes('Instructor')) {\r\n\t\t\t\tthis.displayInstructorConsent()\r\n\t\t\t} else if (roles.includes('Student')) {\r\n\t\t\t\tthis.displayStudentConsent()\r\n\t\t\t}\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Display instructor consent.\r\n\t\tdisplayInstructorConsent() {\r\n\t\t\tthis.$alert(`<div id=\"consent\" style=\"overflow: auto; background-color: #FFF; padding: 10px; height: 78vh; border: #cecaca solid 1px; \">\r\n <p><strong>Informed Consent for Instructors to Participate in Research #002887</strong></p>\r\n <p>Information to Consider Before Taking Part in this Research Study</p>\r\n <p> </p>\r\n <p>\r\n Academic researchers study many topics. To do this, we need the help of people who agree to take part in a research study. \r\n We are asking you to take part in <i>USF Writes Corpus Research</i>.\r\n </p>\r\n <p> </p>\r\n <p>\r\n The person who is in charge of these research studies is Dr. Lauren Arrington. This person is called the Principal Investigator. \r\n This consent form provides you the opportunity to accept or decline having your texts and usage of USF Writes become a part of the research corpus.\r\n If you chose to opt out of the research, you will still be able to use the platform to fulfill your teaching obligations.\r\n </p>\r\n <p> </p>\r\n <p>\r\n We are hoping to learn more about instructors like yourself. We do this by studying the activity of as many users of USF Writes as we can. \r\n Basically, this helps us re-design and update three things: the USF Writes interface, the assignments you’re asked to grade in the system, \r\n and the writing-intensive course(s) you’re teaching. \r\n The more we learn about your teaching in the system, the more we can help instructors like you have the best educational experience possible. \r\n </p>\r\n <p> </p>\r\n <p>\r\n No discomforts and risks are expected from the procedures beyond those commonly associated with participation in a face-to-face or online university class. \r\n We are unsure if you will receive any benefits by taking part in this research study. It’s important that you know that whether or not you opt into this research, \r\n your employment will NOT be affected. You have the alternative to choose not to participate in this research study. You should only take part in this study if you want \r\n to volunteer; you are free to participate in this research or withdraw at any time. There will be no penalty or loss of benefits you are entitled to receive \r\n if you stop taking part in this study.\r\n </p>\r\n <p> </p>\r\n <p>\r\n We are asking to collect the materials you are already using as part of class. We’d like your permission to add your grading to the USF Writes corpus. \r\n We’d like to explore your usage of USF Writes, such as your comments and scores on your students’ essays, peer reviews, and you’re your use of reports in the tool. \r\n </p>\r\n <p> </p>\r\n <p>\r\n We are not sure of the total number of people who will participate because this is a long-term study. However, we expect you will be one of 300-400 instructors \r\n who enroll in this research in the next few years, should you opt in below.\r\n </p>\r\n <p> </p>\r\n <p>\r\n It is possible, although unlikely, that unauthorized individuals could gain access to your responses because you are responding online. \r\n Your participation via USF Writes involves risks similar to a person’s everyday use of the Internet. It is possible, although unlikely, \r\n that unauthorized individuals could gain access to your responses. Confidentiality will be maintained to the degree permitted by the technology used. \r\n No guarantees can be made regarding the interception of data sent via the Internet. However, your participation in this online study involves \r\n risks similar to a person’s everyday use of the Internet. If you complete and submit an anonymous survey and later request your data be withdrawn, \r\n this may or may not be possible as the researcher may be unable to extract anonymous data from the database.\r\n </p>\r\n <p> </p>\r\n <p>\r\n Certain people may need to see your study records. By law, anyone who looks at your records must keep them completely confidential. \r\n The only people who will be allowed to see these records are Dr. Arrington and approved study staff.\r\n </p>\r\n <p> </p>\r\n <p>If you agree to participate in this research project, your work will be made available under the following terms to researchers:</p>\r\n <ul>\r\n <li>No personal information shall be given or sold to any marketing, solicitation, or data mining organization of any type</li>\r\n <li>Any information that can be used to identify you will remain confidential and will be disclosed only with your permission or as required by law</li>\r\n <li>Researchers will ensure that your personal information is not published or otherwise disclosed in any publications or presentations of research</li>\r\n </ul>\r\n <p> </p>\r\n <p><strong>Contact Information</strong></p>\r\n <p>\r\n If you have any questions about your rights as a research participant, please contact the USF IRB at 813-974-5638. If you have questions regarding the research, \r\n please contact the Principal Investigator at <a title=\"laurenarrington@usf.edu\" href=\"mailto:laurenarrington@usf.edu\">laurenarrington@usf.edu</a> or \r\n the USF Internal Review Board at <a title=\"RSCH-IRB@usf.edu\" href=\"mailto:RSCH-IRB@usf.edu\">RSCH-IRB@usf.edu</a>. \r\n You can \r\n <span id=\"print\" style=\"color: -webkit-link; cursor: pointer; text-decoration: underline;\" onclick=\"\r\n var myframe = document.createElement('IFRAME');\r\n myframe.domain = document.domain;\r\n myframe.style.position = 'absolute';\r\n document.body.appendChild(myframe);\r\n myframe.contentDocument.write('<h2> USF Writes Disclosure and Consent</h2>')\r\n myframe.contentDocument.write(document.getElementById('consent').innerHTML) ;\r\n myframe.focus();\r\n myframe.contentWindow.print();\r\n myframe.parentNode.removeChild(myframe) ;// remove frame\r\n window.focus();\r\n \">print</span> a copy of this consent form for your records.\r\n </p>\r\n <p> </p>\r\n <p>I freely give my consent to take part in this study. I understand that by opting in I am agreeing to take part in research and I am 18 years of age or older.</p>\r\n </div>`, 'USF Writes Disclosure and Consent', {\r\n\t\t\t\tdangerouslyUseHTMLString: true,\r\n\t\t\t\tshowClose: false,\r\n\t\t\t\tconfirmButtonText: 'Opt In',\r\n\t\t\t\tcancelButtonText: 'Opt Out',\r\n\t\t\t\tshowConfirmButton: true,\r\n\t\t\t\tshowCancelButton: true,\r\n\t\t\t\tcustomClass: 'login-consent-form'\r\n\t\t\t}).then(() => {\r\n\t\t\t\tconst optInStatus = {\r\n\t\t\t\t\t'Term_Code': this.$store.state.auth.currentTerm.TermCode,\r\n\t\t\t\t\t'User_Id': this.$store.state.auth.user.UserName,\r\n\t\t\t\t\t'Org_Code': this.$store.state.auth.user.OrgCode,\r\n\t\t\t\t\t'Opt_In_Status': 'Y'\r\n\r\n\t\t\t\t}\r\n\t\t\t\tsurveyService.postOptInStatus(optInStatus)\r\n\t\t\t\t\t.then(result => {\r\n\t\t\t\t\t\tNotification.success({\r\n\t\t\t\t\t\t\tduration: 6000,\r\n\t\t\t\t\t\t\ttitle: 'Success',\r\n\t\t\t\t\t\t\tmessage: 'You have successfully opted in'\r\n\t\t\t\t\t\t})\r\n\r\n\t\t\t\t\t\t// this.$message({\r\n\t\t\t\t\t\t// \ttype: 'success',\r\n\t\t\t\t\t\t// \tmessage: 'You have successfully opted in.'\r\n\t\t\t\t\t\t// })\r\n\t\t\t\t\t})\r\n\t\t\t}).catch(() => {\r\n\t\t\t\tconst optInStatus = {\r\n\t\t\t\t\t'Term_Code': this.$store.state.auth.currentTerm.TermCode,\r\n\t\t\t\t\t'User_Id': this.$store.state.auth.user.UserName,\r\n\t\t\t\t\t'Org_Code': this.$store.state.auth.user.OrgCode,\r\n\t\t\t\t\t'Opt_In_Status': 'N'\r\n\t\t\t\t}\r\n\t\t\t\tsurveyService.postOptInStatus(optInStatus)\r\n\t\t\t\t\t.then(result => {\r\n\t\t\t\t\t\tNotification.success({\r\n\t\t\t\t\t\t\tduration: 6000,\r\n\t\t\t\t\t\t\ttitle: 'Success',\r\n\t\t\t\t\t\t\tmessage: 'You have successfully opted out'\r\n\t\t\t\t\t\t})\r\n\r\n\t\t\t\t\t\t// this.$message({\r\n\t\t\t\t\t\t// \ttype: 'info',\r\n\t\t\t\t\t\t// \tmessage: 'You have successfully opted out.'\r\n\t\t\t\t\t\t// })\r\n\t\t\t\t\t})\r\n\t\t\t})\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Display student consent.\r\n\t\tdisplayStudentConsent() {\r\n\t\t\tthis.$alert(`<div id=\"consent\" style=\"overflow: auto; background-color: #FFF; padding: 10px; height: 78vh; border: #cecaca solid 1px; \">\r\n <p><strong>Informed Consent for Students to Participate in Research #002887</strong></p>\r\n <p>Information to Consider Before Taking Part in this Research Study</p>\r\n <p> </p>\r\n <p>\r\n Academic researchers study many topics. To do this, we need the help of people who agree to take \r\n part in a research study. We are asking you to take part in a research study, USF Writes Corpus Research.\r\n </p>\r\n <p> </p>\r\n <p>\r\n The person who is in charge of this research study is Dr. Lauren Arrington. This person is called the Principal Investigator. \r\n This consent form provides you the opportunity to accept or decline having your texts and usage of USF Writes become a part of the research corpus.\r\n </p>\r\n <p> </p>\r\n <p>\r\n We are hoping to learn more about writers like yourself. We do this by studying the activity of as many users of USF Writes as we can. \r\n Basically, this helps us re-design and update three things: USF Writes as a tool for teaching writing, the writing you’re asked to submit in the system, \r\n and the writing-intensive course(s) you’re in. The more we learn about your writing, the more we can help students like you have the best educational experience possible.\r\n </p>\r\n <p> </p>\r\n <p>\r\n No discomforts and risks are expected from the procedures beyond those commonly associated with participation in a face-to-face or online university class. \r\n We are unsure if you will receive any benefits by taking part in this research study. It’s important that you know that whether or not you opt into this research, \r\n your grades in this course will NOT be affected. If your university charges a fee for the use of USF Writes, you still need to pay that, \r\n regardless of whether you’ve decided to participate in the study. You have the alternative to choose not to participate in this research study. \r\n You should only take part in this study if you want to volunteer; you are free to participate in this research or withdraw at any time. \r\n There will be no penalty or loss of benefits you are entitled to receive if you stop taking part in this study.\r\n </p>\r\n <p> </p>\r\n <p>\r\n We’d like to collect the materials you are already doing as part of class.\r\n </p>\r\n <p> </p>\r\n <p>\r\n We’d like your permission to add your coursework to the USF Writes corpus. We’d like to explore your usage of USF Writes, such as analyzing your essays, \r\n your comments and scores on your peers’ essays, your instructor’s comments and scores, your responses to reflective questions, your feedback to pedagogical approaches, \r\n your self reflections on your peer reviews, your ratings and reviews of your reviewers. \r\n </p>\r\n <p> </p>\r\n <p>\r\n Note, in USF Writes, some surveys are part of the education experience, such as the surveys that ask you to rate the overall helpfulness of a peers’ reviews or \r\n the surveys that ask you to reflect on your writing process for a particular project. \r\n </p>\r\n <p> </p>\r\n <p>\r\n We are not sure of the total number of people who will participate because this is a long-term study. However, we expect you will be one of the 10,000+ \r\n students who enroll in this research in the next few years, should you opt in below. \r\n </p>\r\n <p> </p>\r\n <p>\r\n If you consent, the researchers may access data from other university offices following all the rules that govern obtaining that data. \r\n You will never be able to be identified no matter what data is used. This data will help the researchers understand how students write and learn about \r\n writing and the relationship between writing and retention in the university.\r\n </p>\r\n <p> </p>\r\n <p>\r\n Your participation via USF Writes involves risks similar to a person’s everyday use of the Internet. It is possible, although unlikely, \r\n that unauthorized individuals could gain access to your responses. Confidentiality will be maintained to the degree permitted by the technology used. \r\n No guarantees can be made regarding the interception of data sent via the Internet. However, your participation in this online study involves risks similar \r\n to a person’s everyday use of the Internet. If you complete and submit an anonymous survey and later request your data be withdrawn, \r\n this may or may not be possible as the researcher may be unable to extract anonymous data from the database.\r\n </p>\r\n <p> </p>\r\n <p>\r\n Certain people may need to see your study records. By law, anyone who looks at your records must keep them completely confidential. \r\n The only people who will be allowed to see these records are Dr. Arrington and approved study staff.\r\n </p>\r\n <p> </p>\r\n <p>If you agree to participate in this research project, your work will be made available under the following terms to researchers:</p>\r\n <ul>\r\n <li>No personal information shall be given or sold to any marketing, solicitation, or data mining organization of any type</li>\r\n <li>Any information that can be used to identify you will remain confidential and will be disclosed only with your permission or as required by law</li>\r\n <li>Researchers will ensure that your personal information is not published or otherwise disclosed in any publications or presentations of research</li>\r\n </ul>\r\n <p> </p>\r\n <p><strong>Contact Information</strong></p>\r\n <p>\r\n If you have any questions about your rights as a research participant, please contact the USF IRB at 813-974-5638. If you have questions regarding the research, \r\n please contact the Principal Investigator at <a title=\"laurenarrington@usf.edu\" href=\"mailto:laurenarrington@usf.edu\">laurenarrington@usf.edu</a> or \r\n the USF IRB at <a title=\"RSCH-IRB@usf.edu\" href=\"mailto:RSCH-IRB@usf.edu\">RSCH-IRB@usf.edu</a>. \r\n You can \r\n <span id=\"print\" style=\"color: -webkit-link; cursor: pointer; text-decoration: underline;\" onclick=\"\r\n var myframe = document.createElement('IFRAME');\r\n myframe.domain = document.domain;\r\n myframe.style.position = 'absolute';\r\n document.body.appendChild(myframe);\r\n myframe.contentDocument.write('<h2> USF Writes Disclosure and Consent</h2>')\r\n myframe.contentDocument.write(document.getElementById('consent').innerHTML) ;\r\n myframe.focus();\r\n myframe.contentWindow.print();\r\n myframe.parentNode.removeChild(myframe) ;// remove frame\r\n window.focus();\r\n \">print</span> a copy of this consent form for your records.\r\n </p>\r\n <p> </p>\r\n <p>I freely give my consent to take part in this study. I understand that by opting in I am agreeing to take part in research and I am 18 years of age or older.</p>\r\n \r\n </div>`, 'USF Writes Disclosure and Consent', {\r\n\t\t\t\tdangerouslyUseHTMLString: true,\r\n\t\t\t\tshowClose: false,\r\n\t\t\t\tconfirmButtonText: 'Opt In',\r\n\t\t\t\tcancelButtonText: 'Opt Out',\r\n\t\t\t\tshowConfirmButton: true,\r\n\t\t\t\tshowCancelButton: true,\r\n\t\t\t\tcustomClass: 'login-consent-form'\r\n\r\n\t\t\t}).then(() => {\r\n\t\t\t\tconst optInStatus = {\r\n\t\t\t\t\t'Term_Code': this.$store.state.auth.currentTerm.TermCode,\r\n\t\t\t\t\t'User_Id': this.$store.state.auth.user.UserName,\r\n\t\t\t\t\t'Org_Code': this.$store.state.auth.user.OrgCode,\r\n\t\t\t\t\t'Opt_In_Status': 'Y'\r\n\t\t\t\t}\r\n\t\t\t\tsurveyService.postOptInStatus(optInStatus)\r\n\t\t\t\t\t.then(result => {\r\n\t\t\t\t\t\tNotification.success({\r\n\t\t\t\t\t\t\tduration: 6000,\r\n\t\t\t\t\t\t\ttitle: 'Success',\r\n\t\t\t\t\t\t\tmessage: 'You have successfully opted in'\r\n\t\t\t\t\t\t})\r\n\t\t\t\t\t\t// this.$message({\r\n\t\t\t\t\t\t// \ttype: 'success',\r\n\t\t\t\t\t\t// \tmessage: 'You have successfully opted in.'\r\n\t\t\t\t\t\t// })\r\n\t\t\t\t\t})\r\n\t\t\t}).catch(() => {\r\n\t\t\t\tconst optInStatus = {\r\n\t\t\t\t\t'Term_Code': this.$store.state.auth.currentTerm.TermCode,\r\n\t\t\t\t\t'User_Id': this.$store.state.auth.user.UserName,\r\n\t\t\t\t\t'Org_Code': this.$store.state.auth.user.OrgCode,\r\n\t\t\t\t\t'Opt_In_Status': 'N'\r\n\t\t\t\t}\r\n\t\t\t\tsurveyService.postOptInStatus(optInStatus)\r\n\t\t\t\t\t.then(result => {\r\n\t\t\t\t\t\tNotification.success({\r\n\t\t\t\t\t\t\tduration: 6000,\r\n\t\t\t\t\t\t\ttitle: 'Success',\r\n\t\t\t\t\t\t\tmessage: 'You have successfully opted out'\r\n\t\t\t\t\t\t})\r\n\t\t\t\t\t\t// this.$message({\r\n\t\t\t\t\t\t// \ttype: 'info',\r\n\t\t\t\t\t\t// \tmessage: 'You have successfully opted out.'\r\n\t\t\t\t\t\t// })\r\n\t\t\t\t\t})\r\n\t\t\t})\r\n\t\t}\r\n\t}\r\n}\r\n</script>\r\n\r\n<style scoped>\r\n.page\r\n{\r\n\twidth: 100% !important;\r\n\theight: 100vh!important;\r\n\tbackground-color: rgb(0, 103, 71);\r\n background-size: cover;\r\n}\r\n.content{\r\n\tmargin-left: auto!important;\r\n margin-right: auto!important;\r\n\ttext-align: center;\r\n border-radius: 5px;\r\n\tcolor: white;\r\n}\r\n\r\n.h-screen\r\n{\r\n height: 100vh!important;\r\n}\r\n\r\n.flex\r\n{\r\n display: flex!important;\r\n}\r\n.w-full\r\n{\r\n width: 100%!important;\r\n}\r\n.mx-auto\r\n{\r\n margin-left: auto!important;\r\n margin-right: auto!important;\r\n}\r\n\r\n.self-center\r\n{\r\n align-self: center!important;\r\n}\r\n</style>\r\n\r\n<style>\r\nbody {\r\n /* font: \"Barlow Condensed\", sans-serif; */\r\n font-family: Montserrat,Helvetica,Arial,sans-serif;\r\n background: #fff;\r\n margin: 0;\r\n}\r\n#nav-wrapper{\r\n background: #006747;\r\n -webkit-box-shadow: 0 10px 25px 0 rgba(109, 107, 107, 0.1);\r\n box-shadow: 0 10px 25px 0 rgba(109, 107, 107, 0.1);\r\n\t/* overflow-y: auto; */\r\n\tbox-sizing: border-box;\r\n position: fixed;\r\n top: 0;\r\n left: 0;\r\n height: 100%;\r\n display: -webkit-flex;\r\n display: flex;\r\n -webkit-flex-direction: column;\r\n flex-direction: column;\r\n z-index: 100;\r\n float: left;\r\n}\r\n#content-wrapper{\r\n margin-left: 70px;\r\n}\r\n#content-wrapper.full-width{\r\n\tmargin-left: 220px;\r\n}\r\n\r\n/* button[data-v-6e6848a4]:hover {\r\n opacity: .6;\r\n}\r\n\r\nbutton:focus{\r\n outline: none;\r\n} */\r\n.el-menu--popup{\r\n background-color: #006747;\r\n}\r\n.el-submenu__title:focus, .el-submenu__title:hover{\r\n background-color: #014e36 !important;\r\n}\r\n.el-menu-item:focus, .el-menu-item:hover{\r\n background-color: #014e36 !important;\r\n}\r\n.el-submenu__title > span {\r\n color: white;\r\n}\r\n\r\n.el-menu-item > span {\r\n color: white;\r\n}\r\n\r\nhr{\r\n border: #e6e6e6 solid 0.5px;\r\n}\r\n.breadcumb{\r\n padding: 20px;\r\n margin-bottom: 10px;\r\n box-shadow: 0 10px 25px 0 rgba(109, 107, 107, 0.1);\r\n}\r\n.breadcumb-text{\r\n font-size: 20px;\r\n font-weight: bold;\r\n color: #4E5E63;\r\n}\r\n\r\n.breadcumb-next{\r\n font-size: 16px;\r\n margin-left: 5px;\r\n margin-right: 5px;\r\n}\r\n\r\n.box-card {\r\n width: 20%;\r\n min-width: 260px;\r\n display: inline-block;\r\n margin-right: 20px;\r\n margin-bottom: 20px;\r\n cursor: pointer;\r\n}\r\n\r\n.box-card .description {\r\n text-overflow: ellipsis;\r\n white-space: nowrap;\r\n width: 200px;\r\n display: inline-block;\r\n overflow: hidden;\r\n}\r\n\r\n.el-dialog--center .el-dialog__body {\r\n padding-top: 8px !important;\r\n padding-bottom: 10px !important;\r\n}\r\n\r\n/* .el-dialog__body{\r\n padding-top: 8px !important;\r\n padding-bottom: 10px !important;\r\n} */\r\n\r\n*:focus{\r\n outline: none !important;\r\n}\r\n.el-form-item__content{\r\n line-height: 10px !important;\r\n}\r\n/* .el-input[data-v-957d1486] > .el-input__prefix{\r\n margin-top:5px;\r\n}\r\n.el-input[data-v-957d1486] > input {\r\n padding-left: 35px;\r\n} */\r\n</style>\r\n\r\n","import mod from \"-!../node_modules/cache-loader/dist/cjs.js??ref--12-0!../node_modules/thread-loader/dist/cjs.js!../node_modules/babel-loader/lib/index.js!../node_modules/cache-loader/dist/cjs.js??ref--0-0!../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../node_modules/cache-loader/dist/cjs.js??ref--12-0!../node_modules/thread-loader/dist/cjs.js!../node_modules/babel-loader/lib/index.js!../node_modules/cache-loader/dist/cjs.js??ref--0-0!../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./App.vue?vue&type=template&id=70a769e5&scoped=true&\"\nimport script from \"./App.vue?vue&type=script&lang=js&\"\nexport * from \"./App.vue?vue&type=script&lang=js&\"\nimport style0 from \"./App.vue?vue&type=style&index=0&id=70a769e5&scoped=true&lang=css&\"\nimport style1 from \"./App.vue?vue&type=style&index=1&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"70a769e5\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('Banner'),_c('BoxesArea')],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"hosting-main-banner\",staticStyle:{\"padding-top\":\"160px\",\"padding-bottom\":\"60px\",\"background-color\":\"rgb(0, 103, 71)\"}},[_c('div',{staticClass:\"container\"},[_c('div',{staticClass:\"row\"},[_vm._m(0),_c('div',{staticClass:\"col-lg-5 offset-lg-1\"},[_c('div',{staticClass:\"banner-form ml-3\",staticStyle:{\"padding\":\"40px 30px\"}},[_c('form',[_c('div',{staticClass:\"form-group\"},[_c('label',[_vm._v(\"USF NetID\")]),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.username),expression:\"username\"}],staticClass:\"form-control\",attrs:{\"type\":\"email\",\"placeholder\":\"Enter your USF NetID\"},domProps:{\"value\":(_vm.username)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.username=$event.target.value}}})]),_c('div',{staticClass:\"form-group\"},[_c('label',[_vm._v(\"Password\")]),_c('a',{staticStyle:{\"float\":\"right\",\"font-size\":\"14px\",\"margin-top\":\"2px\"},attrs:{\"href\":\"https://netid.usf.edu/una/?display=reset\"}},[_vm._v(\"\\n Forgot password?\\n \")]),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.password),expression:\"password\"}],staticClass:\"form-control\",attrs:{\"type\":\"password\",\"placeholder\":\"Enter your password\"},domProps:{\"value\":(_vm.password)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.password=$event.target.value}}})]),_vm._m(1),_c('a',{staticClass:\"btn btn-primary\",staticStyle:{\"background\":\"rgb(0, 103, 71)\",\"width\":\"100%\",\"margin-top\":\"10px\"},on:{\"click\":function($event){return _vm.onLogin()}}},[_vm._v(\"Sign In\")])])])])])])])}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"col-lg-6 col-md-12\"},[_c('div',{staticClass:\"hosting-banner-content\",staticStyle:{\"margin-top\":\"10px\"}},[_c('h1',{staticStyle:{\"font-size\":\"39px\"}},[_vm._v(\"We make writing possibull!\")]),_c('p',{staticStyle:{\"margin-bottom\":\"20px\"}},[_vm._v(\"USF Writes is a digital, instructional tool that enhances writing pedagogy in first year composition (FYC) and professional and technical communication (PTC)\")]),_c('ul',[_c('div',{staticStyle:{\"color\":\"white\",\"margin-bottom\":\"10px\"}},[_vm._v(\"For student:\")]),_c('li',[_vm._v(\"Login at right\")]),_c('li',[_vm._v(\"Read the FAQ\")]),_c('li',[_vm._v(\"Report a problem\")])])])])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"form-group\",staticStyle:{\"margin-bottom\":\"10px\"}},[_c('div',{staticStyle:{\"font-size\":\"15px\",\"text-align\":\"center\"}},[_vm._v(\"By logging in, I agree to the \"),_c('a',{staticStyle:{\"color\":\"rgba(0, 103, 71)\",\"font-weight\":\"bold\"},attrs:{\"href\":\"#\"}},[_vm._v(\"terms and policies.\")])])])}]\n\nexport { render, staticRenderFns }","<template>\r\n <!-- Start Main Banner -->\r\n <div class=\"hosting-main-banner\" style=\"padding-top: 160px; padding-bottom: 60px; background-color: rgb(0, 103, 71);\">\r\n <div class=\"container\">\r\n <div class=\"row\">\r\n <div class=\"col-lg-6 col-md-12\">\r\n\r\n <div class=\"hosting-banner-content\" style=\" margin-top: 10px;\">\r\n <h1 style=\"font-size: 39px;\">We make writing possibull!</h1>\r\n <p style=\"margin-bottom: 20px;\">USF Writes is a digital, instructional tool that enhances writing pedagogy in first year composition (FYC) and professional and technical communication (PTC)</p>\r\n <ul>\r\n <div style=\"color: white; margin-bottom: 10px;\">For student:</div>\r\n <li>Login at right</li>\r\n <li>Read the FAQ</li>\r\n <li>Report a problem</li>\r\n </ul>\r\n </div>\r\n\r\n </div>\r\n\r\n <div class=\"col-lg-5 offset-lg-1\">\r\n <div class=\"banner-form ml-3\" style=\"padding: 40px 30px;\">\r\n <form>\r\n\r\n <div class=\"form-group\">\r\n <label>USF NetID</label>\r\n <input v-model=\"username\" type=\"email\" class=\"form-control\" placeholder=\"Enter your USF NetID\">\r\n </div>\r\n\r\n <div class=\"form-group\">\r\n <label>Password</label>\r\n <a href=\"https://netid.usf.edu/una/?display=reset\" style=\"float: right; font-size: 14px; margin-top: 2px;\">\r\n Forgot password?\r\n </a>\r\n <input v-model=\"password\" type=\"password\" class=\"form-control\" placeholder=\"Enter your password\">\r\n </div>\r\n\r\n <div class=\"form-group\" style=\"margin-bottom: 10px;\">\r\n <div style=\"font-size: 15px; text-align: center;\">By logging in, I agree to the <a href=\"#\" style=\"color: rgba(0, 103, 71); font-weight: bold;\">terms and policies.</a></div>\r\n\r\n </div>\r\n\r\n <a class=\"btn btn-primary\" style=\"background: rgb(0, 103, 71); width: 100%; margin-top: 10px;\" @click=\"onLogin()\">Sign In</a>\r\n\r\n <!-- <div class=\"startp-nav\" style=\" margin-top: 30px;\">\r\n <nav>\r\n <div class=\" navbar navbar-expand-md navbar-light\" style=\"display: block; padding: 0px;\">\r\n <div data-v-146e2983=\"\" class=\"others-option\" style=\"margin-left: 0px;\">\r\n <a data-v-146e2983=\"\" href=\"/contact\" class=\"btn btn-light\" style=\"width: 100%; margin-right: 0xp; font-size: 16px; font-weight: 600;\">Have an Issue? Contact Support Now</a>\r\n </div> </div>\r\n </nav>\r\n </div> -->\r\n </form>\r\n\r\n </div>\r\n </div>\r\n\r\n </div>\r\n </div>\r\n </div>\r\n</template>\r\n\r\n<script>\r\nimport { mapActions } from 'vuex'\r\nimport * as surveyService from '@/services/survey.service'\r\nimport * as termService from '@/services/term.service'\r\n\r\nexport default {\r\n\tname: 'Banner',\r\n \tdata() {\r\n\t\treturn {\r\n\t\t\tusername: '',\r\n\t\t\tpassword: '',\r\n\t\t\ttermCode: '',\r\n\t\t\torgCode: '',\r\n\t\t\tloggedUserName: ''\r\n\t\t}\r\n\t},\r\n\tmethods: {\r\n\t\t...mapActions('auth', ['ldapLogin']),\r\n\t\t...mapActions('enrollment', ['getEnrollments']),\r\n\t\tgotoContact() {\r\n\t\t\tthis.$router.push('/contact')\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Log user in.\r\n\t\tasync onLogin() {\r\n\t\t\t// Form validation to be completed\r\n\t\t\tthis.loading = true\r\n\t\t\tconst payload = new URLSearchParams()\r\n\t\t\tpayload.append('client_id', process.env.VUE_APP_CLIENT_ID)\r\n\t\t\tpayload.append('client_secret', process.env.VUE_APP_CLIENT_SECRET)\r\n\t\t\tpayload.append('grant_type', 'password')\r\n\t\t\tpayload.append('username', 'USF;' + this.username)\r\n\t\t\tpayload.append('password', this.password)\r\n\t\t\t// Authenticate user then redirect to dashboard\r\n\t\t\tconst user = await this.ldapLogin(payload)\r\n\t\t\tif (user) {\r\n\t\t\t\tthis.loading = false\r\n\t\t\t\t// check optin status before redirecting user to /courses\r\n\t\t\t\tthis.checkOptInStatus()\r\n\t\t\t\tthis.$router.push('/')\r\n\t\t\t} else {\r\n\t\t\t\tthis.loading = false\r\n\t\t\t}\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Check for user's opt in status before logging in.\r\n\t\t// Display consent if not already opted in.\r\n\t\tasync checkOptInStatus() {\r\n\t\t\tthis.orgCode = this.$store.state.auth.user.OrgCode\r\n\t\t\tthis.loggedUserName = this.$store.state.auth.user.UserName\r\n\t\t\tconst currentTerm = await termService.getCurrentTerm(this.orgCode)\r\n\t\t\tthis.termCode = currentTerm.TermCode\r\n\t\t\tconst status = await surveyService.checkOptInStatus(this.orgCode, this.loggedUserName, this.termCode)\r\n\t\t\tif (status.length == 0) {\r\n\t\t\t\tconst roles = this.$store.state.auth.user.Roles\r\n\t\t\t\tif (roles.includes('Administrator')) {\r\n\t\t\t\t\tthis.displayInstructorConsent()\r\n\t\t\t\t} else if (roles.includes('Instructor')) {\r\n\t\t\t\t\tthis.displayInstructorConsent()\r\n\t\t\t\t} else if (roles.includes('Student')) {\r\n\t\t\t\t\tthis.displayStudentConsent()\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tthis.$router.push('courses')\r\n\t\t\t}\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Display instructor consent.\r\n\t\tdisplayInstructorConsent() {\r\n\t\t\tthis.$alert(`<div id=\"instructor-consent\" style=\"overflow: auto; background-color: #FFF; padding: 10px; height: 78vh; border: #cecaca solid 1px; \">\r\n <p><strong>Informed Consent for Instructors to Participate in Research </strong></p>\r\n <p>Information to Consider Before Taking Part in this Research Study</p>\r\n <p> </p>\r\n <p>Pro #002887</p>\r\n <p>\r\n Academic researchers study many topics. To do this, we need the help of people who agree to\r\n take part in a research study. We are asking you to take part in USF Writes Corpus Research.\r\n </p>\r\n <p> </p>\r\n <p>\r\n The person who is in charge of these research studies is Dr. Lauren Arrington. This person is called\r\n the Principal Investigator. This consent form provides you the opportunity to accept or decline\r\n having your texts and usage of USF Writes become a part of the research corpus. If you chose to opt\r\n out of the research, you will still be able to use the platform to fulfill your teaching obligations.\r\n </p>\r\n <p> </p>\r\n <p>\r\n We are hoping to learn more about instructors like yourself. We do this by studying the activity\r\n of as many users of USF Writes as we can. Basically, this helps us re-design and update three\r\n things: the USF Writes interface, the assignments you’re asked to grade in the system, and the\r\n writing-intensive course(s) you’re teaching. The more we learn about your teaching in the\r\n system, the more we can help instructors like you have the best educational experience possible.\r\n </p>\r\n <p> </p>\r\n <p>\r\n No discomforts and risks are expected from the procedures beyond those commonly associated\r\n with participation in a face-to-face or online university class. We are unsure if you will receive\r\n any benefits by taking part in this research study. It’s important that you know that whether or\r\n not you opt into this research, your employment will NOT be affected. You have the alternative\r\n to choose not to participate in this research study. You should only take part in this study if you\r\n want to volunteer; you are free to participate in this research or withdraw at any time. There will\r\n be no penalty or loss of benefits you are entitled to receive if you stop taking part in this study.\r\n </p>\r\n <p> </p>\r\n <p>\r\n We are asking to collect the materials you are already using as part of class. We’d like your\r\n permission to add your grading to the USF Writes corpus. We’d like to explore your usage of\r\n USF Writes, such as your comments and scores on your students’ essays, and peer reviews, and\r\n your trace data, such as the amount of time you spend reviewing documents.\r\n </p>\r\n <p> </p>\r\n <p>\r\n We are not sure of the total number of people who will participate because this is a long-term\r\n study. However, we expect you will be one of 300-400 instructors who enroll in this research in\r\n the next few years, should you opt in below.\r\n </p>\r\n <p> </p>\r\n <p>\r\n It is possible, although unlikely, that unauthorized individuals could gain access to your\r\n responses because you are responding online. Your participation via USF Writes involves risks\r\n similar to a person’s everyday use of the Internet. It is possible, although unlikely, that\r\n unauthorized individuals could gain access to your responses. Confidentiality will be maintained\r\n to the degree permitted by the technology used. No guarantees can be made regarding the \r\n interception of data sent via the Internet. However, your participation in this online study\r\n involves risks similar to a person’s everyday use of the Internet. If you complete and submit an\r\n anonymous survey and later request your data be withdrawn, this may or may not be possible as\r\n the researcher may be unable to extract anonymous data from the database.\r\n </p>\r\n <p> </p>\r\n <p>\r\n Certain people may need to see your study records. By law, anyone who looks at your records\r\n must keep them completely confidential. The only people who will be allowed to see these\r\n records are Dr. Arrington and approved study staff.\r\n </p>\r\n <p> </p>\r\n <p>If you agree to participate in this research project, your work will be made available under the following terms to researchers:</p>\r\n <ul>\r\n <li>No personal information shall be given or sold to any marketing, solicitation, or data mining organization of any type</li>\r\n <li>Any information that can be used to identify you will remain confidential and will be disclosed only with your permission or as required by law</li>\r\n <li>Researchers will ensure that your personal information is not published or otherwise disclosed in any publications or presentations of research</li>\r\n </ul>\r\n <p> </p>\r\n <p><strong>Contact Information</strong></p>\r\n <p>\r\n If you have any questions about your rights as a research participant, please contact the USF IRB\r\n at 813-974-5638. If you have questions regarding the research, please contact the Principal\r\n Investigator at laurenarrington@usf.edu or the USF Internal Review Board at RSCH-IRB@usf.edu.\r\n You can print a copy of this consent form for your records.\r\n </p>\r\n <p> </p>\r\n <p>I freely give my consent to take part in this study. I understand that by opting in I am agreeing to take part in research and I am 18 years of age or older.</p>\r\n </div>`, 'USF Writes Disclosure and Consent', {\r\n\t\t\t\tdangerouslyUseHTMLString: true,\r\n\t\t\t\tshowClose: false,\r\n\t\t\t\tconfirmButtonText: 'Opt In',\r\n\t\t\t\tcancelButtonText: 'Opt Out',\r\n\t\t\t\tshowConfirmButton: true,\r\n\t\t\t\tshowCancelButton: true,\r\n\t\t\t\tcustomClass: 'login-consent-form'\r\n\t\t\t}).then(() => {\r\n\t\t\t\tconst optInStatus = {\r\n\t\t\t\t\t'Term_Code': this.termCode,\r\n\t\t\t\t\t'User_Id': this.loggedUserName,\r\n\t\t\t\t\t'Org_Code': this.orgCode,\r\n\t\t\t\t\t'Opt_In_Status': 'Y'\r\n\r\n\t\t\t\t}\r\n\t\t\t\tsurveyService.postOptInStatus(optInStatus)\r\n\t\t\t\t\t.then(result => {\r\n\t\t\t\t\t\tthis.$message({\r\n\t\t\t\t\t\t\ttype: 'success',\r\n\t\t\t\t\t\t\tmessage: 'You have successfully opted in.'\r\n\t\t\t\t\t\t})\r\n\t\t\t\t\t\tthis.$router.push('courses')\r\n\t\t\t\t\t})\r\n\t\t\t}).catch(() => {\r\n\t\t\t\tconst optInStatus = {\r\n\t\t\t\t\t'Term_Code': this.termCode,\r\n\t\t\t\t\t'User_Id': this.loggedUserName,\r\n\t\t\t\t\t'Org_Code': this.orgCode,\r\n\t\t\t\t\t'Opt_In_Status': 'N'\r\n\t\t\t\t}\r\n\t\t\t\tsurveyService.postOptInStatus(optInStatus)\r\n\t\t\t\t\t.then(result => {\r\n\t\t\t\t\t\tthis.$message({\r\n\t\t\t\t\t\t\ttype: 'info',\r\n\t\t\t\t\t\t\tmessage: 'You have successfully opted out.'\r\n\t\t\t\t\t\t})\r\n\t\t\t\t\t\tthis.$router.push('courses')\r\n\t\t\t\t\t})\r\n\t\t\t})\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Display student consent.\r\n\t\tdisplayStudentConsent() {\r\n\t\t\tthis.$alert(`<div id=\"student-consent\" style=\"overflow: auto; background-color: #FFF; padding: 10px; height: 78vh; border: #cecaca solid 1px; \">\r\n <p><strong>Informed Consent for Students to Participate in Research </strong></p>\r\n <p>Information to Consider Before Taking Part in this Research Study</p>\r\n <p> </p>\r\n <p>Pro #002887</p>\r\n <p>\r\n Academic researchers study many topics. To do this, we need the help of people who agree to\r\n take part in a research study. We are asking you to take part in a research study, USF Writes\r\n Corpus Research.\r\n </p>\r\n <p> </p>\r\n <p>\r\n The person who is in charge of this research study is Dr. Lauren Arrington. This person is called\r\n the Principal Investigator. This consent form provides you the opportunity to accept or decline\r\n having your texts and usage of USF Writes become a part of the research corpus.\r\n </p>\r\n <p> </p>\r\n <p>\r\n We are hoping to learn more about writers like yourself. We do this by studying the activity of as\r\n many users of USF Writes as we can. Basically, this helps us re-design and update three things:\r\n USF Writes as a tool for teaching writing, the writing you’re asked to submit in the system, and\r\n the writing-intensive course(s) you’re in. The more we learn about your writing, the more we can\r\n help students like you have the best educational experience possible.\r\n </p>\r\n <p> </p>\r\n <p>\r\n No discomforts and risks are expected from the procedures beyond those commonly associated\r\n with participation in a face-to-face or online university class. We are unsure if you will receive\r\n any benefits by taking part in this research study. It’s important that you know that whether or\r\n not you opt into this research, your grades in this course will NOT be affected. If your university\r\n charges a fee for the use of USF Writes, you still need to pay that, regardless of whether you’ve\r\n decided to participate in the study. You have the alternative to choose not to participate in this\r\n research study. You should only take part in this study if you want to volunteer; you are free to\r\n participate in this research or withdraw at any time. There will be no penalty or loss of benefits\r\n you are entitled to receive if you stop taking part in this study.\r\n </p>\r\n <p> </p>\r\n <p>\r\n We are asking for two different things. We’d like to (1) collect the materials you are already\r\n doing as part of class and (2) ask you to complete a few extra surveys.\r\n </p>\r\n <p> </p>\r\n <p>\r\n Regarding #1, your coursework: We’d like your permission to add your coursework to the USF\r\n Writes corpus. We’d like to explore your usage of USF Writes, such as analyzing your essays,\r\n your comments and scores on your peers’ essays, your instructor’s comments and scores, your\r\n responses to survey questions, your self reflections on your peer reviews, your ratings and\r\n reviews of your reviewers; and your trace data, such as the amount of time you spend reviewing\r\n documents. Note, in USF Writes, some surveys are part of the education experience, such as the\r\n surveys that ask you to rate the overall helpfulness of a peers’ reviews or the surveys that ask you\r\n to reflect on your writing process for a particular project.\r\n </p>\r\n <p> </p>\r\n <p>\r\n Regarding #2, research surveys: In USF Writes, there are a few surveys associated with research\r\n rather than pedagogy which are different from the required coursework, including a pre-semester\r\n survey that asks you to report on your background as a writer, a demographic survey, and a post-semester survey. \r\n We expect these surveys will take between 20-30 minutes total of your time.\r\n Even if you opt-in now, you can always decide not to take them when we send them to you.\r\n </p>\r\n <p> </p>\r\n <p>\r\n We are not sure of the total number of people who will participate because this is a long-term\r\n study. However, we expect you will be one of the 10,000+ students who enroll in this research in\r\n the next few years, should you opt in below.\r\n </p>\r\n <p> </p>\r\n <p>\r\n If you are a student at USF and you consent, the researchers may access FERPA-protected data\r\n from other university offices. At USF, this data will help the researchers understand how\r\n students write and learn about writing and the relationship between writing and retention in the\r\n university. The FERPA-protected data includes information such as grades for your current and\r\n subsequent courses; gender assignment; gender identification; race/ethnicity; student status;\r\n enrollment status; age; SAT or ACT scores; high school GPA; terms of enrollment at the\r\n University of South Florida; concurrent and longitudinal GPA; retention by term; and graduation\r\n by term.\r\n </p>\r\n <p> </p>\r\n <p>\r\n Your participation via USF Writes involves risks similar to a person’s everyday use of the\r\n Internet. It is possible, although unlikely, that unauthorized individuals could gain access to your\r\n responses. Confidentiality will be maintained to the degree permitted by the technology used. No\r\n guarantees can be made regarding the interception of data sent via the Internet. However, your\r\n participation in this online study involves risks similar to a person’s everyday use of the Internet.\r\n If you complete and submit an anonymous survey and later request your data be withdrawn, this\r\n may or may not be possible as the researcher may be unable to extract anonymous data from the\r\n database.\r\n </p>\r\n <p> </p>\r\n <p>\r\n Certain people may need to see your study records. By law, anyone who looks at your records\r\n must keep them completely confidential. The only people who will be allowed to see these\r\n records are Dr. Arrington and approved study staff.\r\n </p>\r\n <p> </p>\r\n <p>If you agree to participate in this research project, your work will be made available under the following terms to researchers:</p>\r\n <ul>\r\n <li>No personal information shall be given or sold to any marketing, solicitation, or data mining organization of any type</li>\r\n <li>Any information that can be used to identify you will remain confidential and will be disclosed only with your permission or as required by law</li>\r\n <li>Researchers will ensure that your personal information is not published or otherwise disclosed in any publications or presentations of research</li>\r\n </ul>\r\n <p> </p>\r\n <p><strong>Contact Information</strong></p>\r\n <p>\r\n If you have any questions about your rights as a research participant, please contact the USF IRB\r\n at 813-974-5638. If you have questions regarding the research, please contact the Principal\r\n Investigator at laurenarrington@usf.edu or the USF IRB at RSCH-IRB@usf.edu. You can print a copy\r\n of this consent form for your records.\r\n </p>\r\n <p> </p>\r\n <p>I freely give my consent to take part in this study. I understand that by opting in I am agreeing to take part in research and I am 18 years of age or older.</p>\r\n </div>`, 'USF Writes Disclosure and Consent', {\r\n\t\t\t\tdangerouslyUseHTMLString: true,\r\n\t\t\t\tshowClose: false,\r\n\t\t\t\tconfirmButtonText: 'Opt In',\r\n\t\t\t\tcancelButtonText: 'Opt Out',\r\n\t\t\t\tshowConfirmButton: true,\r\n\t\t\t\tshowCancelButton: true,\r\n\t\t\t\tcustomClass: 'login-consent-form'\r\n\r\n\t\t\t}).then(() => {\r\n\t\t\t\tconst optInStatus = {\r\n\t\t\t\t\t'Term_Code': this.termCode,\r\n\t\t\t\t\t'User_Id': this.loggedUserName,\r\n\t\t\t\t\t'Org_Code': this.orgCode,\r\n\t\t\t\t\t'Opt_In_Status': 'Y'\r\n\t\t\t\t}\r\n\t\t\t\tsurveyService.postOptInStatus(optInStatus)\r\n\t\t\t\t\t.then(result => {\r\n\t\t\t\t\t\tthis.$message({\r\n\t\t\t\t\t\t\ttype: 'success',\r\n\t\t\t\t\t\t\tmessage: 'You have successfully opted in.'\r\n\t\t\t\t\t\t})\r\n\t\t\t\t\t\tthis.$router.push('courses')\r\n\t\t\t\t\t})\r\n\t\t\t}).catch(() => {\r\n\t\t\t\tconst optInStatus = {\r\n\t\t\t\t\t'Term_Code': this.termCode,\r\n\t\t\t\t\t'User_Id': this.loggedUserName,\r\n\t\t\t\t\t'Org_Code': this.orgCode,\r\n\t\t\t\t\t'Opt_In_Status': 'N'\r\n\t\t\t\t}\r\n\t\t\t\tsurveyService.postOptInStatus(optInStatus)\r\n\t\t\t\t\t.then(result => {\r\n\t\t\t\t\t\tthis.$message({\r\n\t\t\t\t\t\t\ttype: 'info',\r\n\t\t\t\t\t\t\tmessage: 'You have successfully opted out.'\r\n\t\t\t\t\t\t})\r\n\t\t\t\t\t\tthis.$router.push('courses')\r\n\t\t\t\t\t})\r\n\t\t\t})\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Get last activity date.\r\n\t\tgetlastActivityDate() {\r\n\t\t\tconst today = this.$moment()._d\r\n\t\t\treturn today.getFullYear() + '-' + (today.getMonth() + 1) + '-' +\r\n today.getDate() + ' ' + today.getHours() + ':' + today.getMinutes() + ':' + today.getSeconds()\r\n\t\t}\r\n\t}\r\n\r\n}\r\n</script>\r\n\r\n<style lang=\"scss\" scoped>\r\n@import '../../assets/style/custom.scss';\r\n</style>\r\n\r\n<style scoped>\r\n\r\n.startp-nav nav .others-option .btn.btn-light{\r\n border: 2px dashed rgb(0, 103, 71);\r\n text-transform:none;\r\n}\r\n.startp-nav nav .others-option .btn.btn-light:hover, .startp-nav nav .others-option .btn.btn-light:focus {\r\n color: white;\r\n border-color: rgb(0, 103, 71);\r\n}\r\n\r\n.startp-nav nav .others-option .btn.btn-light::after, .startp-nav nav .others-option .btn.btn-light::before {\r\n color: white;\r\n background: rgb(0, 103, 71);\r\n}\r\n\r\n.startp-nav nav .others-option .btn.btn-primary::after, .startp-nav nav .others-option .btn.btn-primary::before {\r\n background: rgb(0, 103, 71);\r\n -webkit-box-shadow: 0 13px 27px 0 rgba(0, 103, 71, 0.25);\r\n box-shadow: 0 13px 27px 0 rgba(0, 103, 71, 0.25);\r\n}\r\n\r\n.startp-nav nav .others-option .btn.btn-primary {\r\n -webkit-box-shadow: 0 13px 27px 0 rgba(0, 103, 71, 0.25);\r\n box-shadow: 0 13px 27px 0 rgba(0, 103, 71, 0.25);\r\n}\r\n\r\n.register:after, .register:before {\r\n background: rgb(0, 103, 71);\r\n -webkit-box-shadow: 0 13px 27px 0 rgba(0, 103, 71, 0.25);\r\n box-shadow: 0 13px 27px 0 rgba(0, 103, 71, 0.25);\r\n -webkit-transition: 0.5s;\r\n transition: 0.5s;\r\n}\r\n\r\n.startp-nav nav .others-option .btn.btn-light::after, .startp-nav nav .others-option .btn.btn-light::before {\r\n color: white;\r\n background: rgb(0, 103, 71);\r\n}\r\n\r\n.btn-primary:not(:disabled):not(.disabled).active, .btn-primary:not(:disabled):not(.disabled):active, .btn-primary .show > .btn-primary.dropdown-toggle{\r\n -webkit-box-shadow: 0 13px 27px 0 rgba(0, 103, 71, 0.25);\r\n box-shadow: 0 13px 27px 0 rgba(0, 103, 71, 0.25);\r\n}\r\n\r\n.btn-primary:hover{\r\n -webkit-box-shadow: 0 13px 27px 0 rgba(0, 103, 71, 0.25);\r\n box-shadow: 0 13px 27px 0 rgba(0, 103, 71, 0.25);\r\n}\r\n\r\n.btn::after, .btn::before {\r\n content: '';\r\n position: absolute;\r\n top: 0;\r\n height: 100%;\r\n width: 0;\r\n -webkit-transition: 0.5s;\r\n transition: 0.5s;\r\n background: rgb(0, 103, 71);\r\n z-index: -1;\r\n}\r\n\r\n.banner-form{\r\n background: #ffffff;\r\n -webkit-box-shadow: 0 2px 48px 0 rgba(0, 0, 0, 0.08);\r\n box-shadow: 0 2px 48px 0 rgba(0, 0, 0, 0.08);\r\n padding: 50px 30px;\r\n border-radius: 5px;\r\n}\r\n\r\n.ml-main-section .ml-banner-content ul {\r\n padding: 0;\r\n margin: 0;\r\n list-style-type: none;\r\n}\r\n\r\n.ml-main-section .ml-banner-content ul li{\r\n margin-bottom: 12px;\r\n position: relative;\r\n color: white;\r\n font-size: 16px;\r\n padding-left: 30px;\r\n}\r\n\r\n.ml-main-section .ml-banner-content ul li::before {\r\n position: absolute;\r\n left: 0;\r\n top: 50%;\r\n -webkit-transform: translateY(-50%);\r\n transform: translateY(-50%);\r\n width: 20px;\r\n height: 2px;\r\n background: #44ce6f;\r\n content: '';\r\n}\r\n\r\n.ml-banner-content p {\r\n font-size: 16px;\r\n max-width: 490px;\r\n}\r\n\r\n</style>\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Banner.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Banner.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Banner.vue?vue&type=template&id=4afd7840&scoped=true&\"\nimport script from \"./Banner.vue?vue&type=script&lang=js&\"\nexport * from \"./Banner.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Banner.vue?vue&type=style&index=0&id=4afd7840&lang=scss&scoped=true&\"\nimport style1 from \"./Banner.vue?vue&type=style&index=1&id=4afd7840&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"4afd7840\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('section',{staticClass:\"boxes-area hosting-boxes-area\",staticStyle:{\"background-color\":\"rgb(0, 103, 71)\"}},[_c('div',{staticClass:\"container\"},[_c('div',{staticClass:\"row\"},[(_vm.showFeedback)?_c('div',{class:_vm.feedbackRowClass},[_c('div',{staticClass:\"single-box\"},[_c('div',{staticClass:\"icon\"},[_c('feather',{attrs:{\"type\":\"message-square\"}})],1),_c('h3',{staticStyle:{\"color\":\"#456177\",\"font-weight\":\"bold\",\"height\":\"50px\"}},[_vm._v(\"Promoting Formative Feedback\")]),(_vm.feedbackMore)?_c('p',[_c('span',{domProps:{\"innerHTML\":_vm._s(_vm.feedbackStrMore)}})]):_c('p',[_vm._v(_vm._s(_vm.feedbackStrLess))]),_c('div',{staticClass:\"read-more-btn\",staticStyle:{\"color\":\"rgb(69, 97, 119)\",\"cursor\":\"pointer\"},on:{\"click\":function($event){return _vm.readMoreFeedback()}}},[_vm._v(\"\\n \"+_vm._s(_vm.readMoreStr)+\"\\n \"),(_vm.feedbackMore)?_c('i',{staticClass:\"fas fa-arrow-left\",staticStyle:{\"margin-left\":\"2px\",\"font-size\":\"14px\"}}):_c('i',{staticClass:\"fas fa-arrow-right\",staticStyle:{\"margin-left\":\"2px\",\"font-size\":\"14px\"}})])])]):_vm._e(),(_vm.showRevision)?_c('div',{class:_vm.revisionRowClass},[_c('div',{staticClass:\"single-box bg-f78acb\"},[_c('div',{staticClass:\"icon\"},[_c('feather',{attrs:{\"type\":\"repeat\"}})],1),_c('h3',{staticStyle:{\"color\":\"#456177\",\"font-weight\":\"bold\",\"height\":\"50px\"}},[_vm._v(\"Enhancing the Revision Process\")]),(_vm.revisionMore)?_c('p',[_vm._v(_vm._s(_vm.revisionStrMore)),_c('br'),_c('br')]):_c('p',[_vm._v(_vm._s(_vm.revisionStrLess))]),_c('div',{staticClass:\"read-more-btn\",staticStyle:{\"color\":\"rgb(69, 97, 119)\",\"cursor\":\"pointer\"},on:{\"click\":function($event){return _vm.readMoreRevision()}}},[_vm._v(\"\\n \"+_vm._s(_vm.readMoreStr)+\"\\n \"),(_vm.revisionMore)?_c('i',{staticClass:\"fas fa-arrow-left\",staticStyle:{\"margin-left\":\"2px\",\"font-size\":\"14px\"}}):_c('i',{staticClass:\"fas fa-arrow-right\",staticStyle:{\"margin-left\":\"2px\",\"font-size\":\"14px\"}})])])]):_vm._e(),(_vm.showInstructor)?_c('div',{class:_vm.instructorRowClass},[_c('div',{staticClass:\"single-box bg-c679e3\"},[_c('div',{staticClass:\"icon\"},[_c('feather',{attrs:{\"type\":\"users\"}})],1),_c('h3',{staticStyle:{\"color\":\"#456177\",\"font-weight\":\"bold\",\"height\":\"50px\"}},[_vm._v(\"Supporting Instructor Responsiveness\")]),(_vm.instructorMore)?_c('p',[_vm._v(_vm._s(_vm.instructorStrMore))]):_c('p',[_vm._v(_vm._s(_vm.instructorStrLess))]),_c('div',{staticClass:\"read-more-btn\",staticStyle:{\"color\":\"rgb(69, 97, 119)\",\"cursor\":\"pointer\"},on:{\"click\":function($event){return _vm.readMoreInstructor()}}},[_vm._v(\"\\n \"+_vm._s(_vm.readMoreStr)+\"\\n \"),(_vm.instructorMore)?_c('i',{staticClass:\"fas fa-arrow-left\",staticStyle:{\"margin-left\":\"2px\",\"font-size\":\"14px\"}}):_c('i',{staticClass:\"fas fa-arrow-right\",staticStyle:{\"margin-left\":\"2px\",\"font-size\":\"14px\"}})])])]):_vm._e(),(_vm.showData)?_c('div',{class:_vm.dataRowClass},[_c('div',{staticClass:\"single-box bg-eb6b3d\"},[_c('div',{staticClass:\"icon\"},[_c('feather',{attrs:{\"type\":\"database\"}})],1),_c('h3',{staticStyle:{\"color\":\"#456177\",\"font-weight\":\"bold\",\"height\":\"50px\"}},[_vm._v(\"Gathering Actionable Data\")]),(_vm.dataMore)?_c('p',[_c('span',{domProps:{\"innerHTML\":_vm._s(_vm.dataStrMore)}})]):_c('p',[_vm._v(_vm._s(_vm.dataStrLess))]),_c('div',{staticClass:\"read-more-btn\",staticStyle:{\"color\":\"rgb(69, 97, 119)\",\"cursor\":\"pointer\"},on:{\"click\":function($event){return _vm.readMoreData()}}},[_vm._v(\"\\n \"+_vm._s(_vm.readMoreStr)+\"\\n \"),(_vm.dataMore)?_c('i',{staticClass:\"fas fa-arrow-left\",staticStyle:{\"margin-left\":\"2px\",\"font-size\":\"14px\"}}):_c('i',{staticClass:\"fas fa-arrow-right\",staticStyle:{\"margin-left\":\"2px\",\"font-size\":\"14px\"}})])])]):_vm._e()])])]),_c('section',{staticClass:\"iot-features-area\",staticStyle:{\"padding-top\":\"20px\",\"padding-bottom\":\"30px\",\"background-color\":\"#f8fafb\"}},[_c('div',{staticClass:\"container\"},[_c('div',{staticClass:\"row align-items-center\"},[_c('div',{staticClass:\"col-lg-6 iot-features-image\"},[_c('img',{directives:[{name:\"wow\",rawName:\"v-wow\"}],staticClass:\"wow fadeInUp\",attrs:{\"src\":require(\"@/assets/img/tool.png\"),\"data-wow-delay\":\"0.6s\",\"alt\":\"image\"}})]),_c('div',{staticClass:\"col-lg-6 iot-features-content\",staticStyle:{\"padding\":\"0px\"}},[_c('h2',{staticStyle:{\"margin-bottom\":\"30px\"}},[_vm._v(\"Want to see what the tool can do?\")]),_c('p',{staticStyle:{\"margin-left\":\"5px\"}},[_vm._v(\"We welcome those from outside of USF to take a look around to see what the tool can do. Register to set up a demo account. You can learn more about the benefits and research we’re doing with the tool.\")]),_c('el-button',{directives:[{name:\"loading\",rawName:\"v-loading\",value:(_vm.loading),expression:\"loading\"}],staticStyle:{\"border-radius\":\"3px\",\"padding\":\"15px 28px\",\"margin-top\":\"20px\"},attrs:{\"type\":\"primary\"},on:{\"click\":_vm.onSubmitClick}},[_vm._v(\"\\n Sign up for a demo now\\n \")])],1)])])])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n <div>\r\n <section class=\"boxes-area hosting-boxes-area\" style=\"background-color: rgb(0, 103, 71);\">\r\n <div class=\"container\">\r\n <div class=\"row\">\r\n\r\n <div v-if=\"showFeedback\" :class=\"feedbackRowClass\">\r\n <div class=\"single-box\">\r\n <div class=\"icon\">\r\n <feather type=\"message-square\" />\r\n </div>\r\n <h3 style=\"color: #456177; font-weight: bold; height: 50px;\">Promoting Formative Feedback</h3>\r\n <p v-if=\"feedbackMore\"><span v-html=\"feedbackStrMore\" /></p>\r\n <p v-else>{{ feedbackStrLess }}</p>\r\n <div class=\"read-more-btn\" style=\"color: rgb(69, 97, 119); cursor: pointer;\" @click=\"readMoreFeedback()\">\r\n {{ readMoreStr }}\r\n <i v-if=\"feedbackMore\" class=\"fas fa-arrow-left\" style=\"margin-left: 2px; font-size: 14px;\" />\r\n <i v-else class=\"fas fa-arrow-right\" style=\"margin-left: 2px; font-size: 14px;\" />\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div v-if=\"showRevision\" :class=\"revisionRowClass\">\r\n <div class=\"single-box bg-f78acb\">\r\n <div class=\"icon\">\r\n <feather type=\"repeat\" />\r\n </div>\r\n <h3 style=\"color: #456177; font-weight: bold; height: 50px;\">Enhancing the Revision Process</h3>\r\n <p v-if=\"revisionMore\">{{ revisionStrMore }}<br><br></p>\r\n <p v-else>{{ revisionStrLess }}</p>\r\n\r\n <div class=\"read-more-btn\" style=\"color: rgb(69, 97, 119); cursor: pointer;\" @click=\"readMoreRevision()\">\r\n {{ readMoreStr }}\r\n <i v-if=\"revisionMore\" class=\"fas fa-arrow-left\" style=\"margin-left: 2px; font-size: 14px; \" />\r\n <i v-else class=\"fas fa-arrow-right\" style=\"margin-left: 2px; font-size: 14px;\" />\r\n </div>\r\n\r\n </div>\r\n </div>\r\n\r\n <div v-if=\"showInstructor\" :class=\"instructorRowClass\">\r\n <div class=\"single-box bg-c679e3\">\r\n <div class=\"icon\">\r\n <feather type=\"users\" />\r\n </div>\r\n <h3 style=\"color: #456177; font-weight: bold; height: 50px;\">Supporting Instructor Responsiveness</h3>\r\n <p v-if=\"instructorMore\">{{ instructorStrMore }}</p>\r\n <p v-else>{{ instructorStrLess }}</p>\r\n\r\n <div class=\"read-more-btn\" style=\"color: rgb(69, 97, 119); cursor: pointer;\" @click=\"readMoreInstructor()\">\r\n {{ readMoreStr }}\r\n <i v-if=\"instructorMore\" class=\"fas fa-arrow-left\" style=\"margin-left: 2px; font-size: 14px; \" />\r\n <i v-else class=\"fas fa-arrow-right\" style=\"margin-left: 2px; font-size: 14px;\" />\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div v-if=\"showData\" :class=\"dataRowClass\">\r\n <div class=\"single-box bg-eb6b3d\">\r\n <div class=\"icon\">\r\n <feather type=\"database\" />\r\n </div>\r\n <h3 style=\"color: #456177; font-weight: bold; height: 50px;\">Gathering Actionable Data</h3>\r\n <p v-if=\"dataMore\"><span v-html=\"dataStrMore\" /></p>\r\n <p v-else>{{ dataStrLess }}</p>\r\n\r\n <div class=\"read-more-btn\" style=\"color: rgb(69, 97, 119); cursor: pointer;\" @click=\"readMoreData()\">\r\n {{ readMoreStr }}\r\n <i v-if=\"dataMore\" class=\"fas fa-arrow-left\" style=\"margin-left: 2px; font-size: 14px;\" />\r\n <i v-else class=\"fas fa-arrow-right\" style=\"margin-left: 2px; font-size: 14px;\" />\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </section>\r\n\r\n <section class=\"iot-features-area\" style=\"padding-top: 20px; padding-bottom: 30px; background-color: #f8fafb;\">\r\n <div class=\"container\">\r\n <div class=\"row align-items-center\">\r\n <div class=\"col-lg-6 iot-features-image\">\r\n <img v-wow src=\"@/assets/img/tool.png\" class=\"wow fadeInUp\" data-wow-delay=\"0.6s\" alt=\"image\">\r\n </div>\r\n\r\n <div class=\"col-lg-6 iot-features-content\" style=\"padding: 0px;\">\r\n <h2 style=\"margin-bottom: 30px;\">Want to see what the tool can do?</h2>\r\n <p style=\"margin-left: 5px;\">We welcome those from outside of USF to take a look around to see what the tool can do. Register to set up a demo account. You can learn more about the benefits and research we’re doing with the tool.</p>\r\n <el-button v-loading=\"loading\" type=\"primary\" style=\"border-radius: 3px; padding: 15px 28px; margin-top: 20px;\" @click=\"onSubmitClick\">\r\n Sign up for a demo now\r\n </el-button>\r\n </div>\r\n </div>\r\n </div>\r\n </section>\r\n </div>\r\n</template>\r\n\r\n<script>\r\nexport default {\r\n\tname: 'BoxesArea',\r\n\tdata() {\r\n\t\treturn {\r\n\t\t\treadMoreStr: 'Read More',\r\n\t\t\tshowFeedback: true,\r\n\t\t\tshowRevision: true,\r\n\t\t\tshowInstructor: true,\r\n\t\t\tshowData: true,\r\n\t\t\tfeedbackRowClass: 'col-lg-3 col-md-6 col-sm-6',\r\n\t\t\trevisionRowClass: 'col-lg-3 col-md-6 col-sm-6',\r\n\t\t\tinstructorRowClass: 'col-lg-3 col-md-6 col-sm-6',\r\n\t\t\tdataRowClass: 'col-lg-3 col-md-6 col-sm-6',\r\n\t\t\tfeedbackMore: false,\r\n\t\t\tfeedbackStrMore: '<p>USF Writes allows instructors to provide quality formative feedback in less time and track student progress to respond in real time. Instructors also can compare feedback and scoring across sections to improve instructor precision and efficacy. Additionally, instructors and administrators have access to USF Writes data for research projects that improve writing pedagogy.</p><p>In the classroom, USF Writes creates a learning community that allows students to connect with other students for peer review, and engage with formative feedback collectively as a class.</p>',\r\n\t\t\tfeedbackStrLess: 'USF Writes allows instructors to provide quality feedback ...',\r\n\t\t\trevisionMore: false,\r\n\t\t\trevisionStrMore: 'One of the goals of USF Writes is to make visible the outcomes and tasks embedded in the process of student learning. The tool enhances the revision process by guiding student attention to the specific outcomes of the assignment, highlighting those outcomes on which students should focus to improve their writing.',\r\n\t\t\trevisionStrLess: 'One of the goals of USF Writes is to make visible the outcomes and tasks ...',\r\n\t\t\tinstructorMore: false,\r\n\t\t\tinstructorStrMore: 'USF Writes empowers instructors to respond to the needs of a class with just-in-time reports that examine student work and peer reviews. Further, the creation of the assignment-specific rubrics and the use of collective feedback enables instructors to visualize student needs across a class and across sections, allowing them to assist students in their learning by providing just-in-time teaching to areas of concern. Finally, the tool provides significant time saving for instructors over traditional feedback, whole allowing instructors to engage more with student writing.',\r\n\t\t\tinstructorStrLess: 'USF Writes empowers instructors to respond to the needs of a class ...',\r\n\t\t\tdataMore: false,\r\n\t\t\tdataStrMore: '<p>USF Writes gathers data for internal and external evaluations that supports evidence-based decisions and fulfills external reporting requirements. </p><p>The data gathered in USF Writes:</p><ul> <li>Informs curricular development in response to student and instructor need</li> <li>Facilitates the construction of syllabi that scaffold across courses</li> <li>Enables the creation and tracking of long-term curricular and programmatic goals</li> <li>Monitors student progress across a sequence or a curriculum</li> </ul><p>The data aggregated in USF Writes tracks historical trends, addresses real-time student needs, and enables long-term curricular, pedagogical, and administrative planning. As a tool, USF Writes provides comprehensive support for writing instructor and program administration. </p><p>All data is gathered with strict attention to research ethics. <a title=\"USF Writes Research\" href=\"/research\" style=\"color: #6084a4;\">Learn more about our research practices</a>, including how we ask students and instructors to opt in to having their data used for research purposes. </p>',\r\n\t\t\tdataStrLess: 'USF Writes gathers data for internal and external evaluations that supports ...'\r\n\t\t}\r\n\t},\r\n\tmethods: {\r\n\t\tonSubmitClick() {\r\n\t\t\twindow.location.href = '/demo/signup'\r\n\t\t},\r\n\t\treadMoreFeedback() {\r\n\t\t\tthis.feedbackMore = !this.feedbackMore\r\n\t\t\tif (this.feedbackMore) {\r\n\t\t\t\tthis.readMoreStr = 'Read Less'\r\n\t\t\t\tthis.feedbackRowClass = 'row'\r\n\t\t\t\tthis.showRevision = false\r\n\t\t\t\tthis.showInstructor = false\r\n\t\t\t\tthis.showData = false\r\n\t\t\t} else {\r\n\t\t\t\tthis.readMoreStr = 'Read More'\r\n\t\t\t\tthis.feedbackRowClass = 'col-lg-3 col-md-6 col-sm-6'\r\n\t\t\t\tthis.showRevision = true\r\n\t\t\t\tthis.showInstructor = true\r\n\t\t\t\tthis.showData = true\r\n\t\t\t}\r\n\t\t},\r\n\t\treadMoreRevision() {\r\n\t\t\tthis.revisionMore = !this.revisionMore\r\n\t\t\tif (this.revisionMore) {\r\n\t\t\t\tthis.readMoreStr = 'Read Less'\r\n\t\t\t\tthis.revisionRowClass = 'row'\r\n\t\t\t\tthis.showFeedback = false\r\n\t\t\t\tthis.showInstructor = false\r\n\t\t\t\tthis.showData = false\r\n\t\t\t} else {\r\n\t\t\t\tthis.revisionRowClass = 'col-lg-3 col-md-6 col-sm-6'\r\n\t\t\t\tthis.readMoreStr = 'Read More'\r\n\t\t\t\tthis.showFeedback = true\r\n\t\t\t\tthis.showInstructor = true\r\n\t\t\t\tthis.showData = true\r\n\t\t\t}\r\n\t\t},\r\n\t\treadMoreInstructor() {\r\n\t\t\tthis.instructorMore = !this.instructorMore\r\n\t\t\tif (this.instructorMore) {\r\n\t\t\t\tthis.readMoreStr = 'Read Less'\r\n\t\t\t\tthis.instructorRowClass = 'row'\r\n\t\t\t\tthis.showFeedback = false\r\n \tthis.showRevision = false\r\n\t\t\t\tthis.showData = false\r\n\t\t\t} else {\r\n\t\t\t\tthis.readMoreStr = 'Read More'\r\n\t\t\t\tthis.instructorRowClass = 'col-lg-3 col-md-6 col-sm-6'\r\n\t\t\t\tthis.showFeedback = true\r\n\t\t\t\tthis.showRevision = true\r\n\t\t\t\tthis.showData = true\r\n\t\t\t}\r\n\t\t},\r\n\t\treadMoreData() {\r\n\t\t\tthis.dataMore = !this.dataMore\r\n\t\t\tif (this.dataMore) {\r\n\t\t\t\tthis.readMoreStr = 'Read Less'\r\n\t\t\t\tthis.dataRowClass = 'row'\r\n\t\t\t\tthis.showFeedback = false\r\n\t\t\t\tthis.showRevision = false\r\n\t\t\t\tthis.showInstructor = false\r\n\t\t\t} else {\r\n\t\t\t\tthis.readMoreStr = 'Read More'\r\n\t\t\t\tthis.dataRowClass = 'col-lg-3 col-md-6 col-sm-6'\r\n\t\t\t\tthis.showFeedback = true\r\n\t\t\t\tthis.showRevision = true\r\n\t\t\t\tthis.showInstructor = true\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}\r\n</script>\r\n\r\n<style scoped>\r\n.single-box::before {\r\n content: '';\r\n position: absolute;\r\n left: 0;\r\n top: 0;\r\n width: 100%;\r\n border-radius: 5px;\r\n height: 100%;\r\n background: white !important;\r\n z-index: -1;\r\n opacity: 0;\r\n visibility: hidden;\r\n -webkit-transition: 0.5s;\r\n transition: 0.5s;\r\n}\r\n\r\n.single-box:hover .icon {\r\n\tbackground: #009374 !important;\r\n\tcolor: white !important;\r\n}\r\n\r\n.single-box:hover h3, .single-box:hover p {\r\n color: #6084a4 !important;\r\n}\r\n\r\n.hosting-boxes-area .single-box .icon{\r\n line-height: 70px !important;\r\n}\r\n.read-more-btn:hover, .fas:hover{\r\n color: rgb(132 162 185) !important;\r\n}\r\n</style>\r\n\r\n<style lang=\"scss\" scoped>\r\n@import '../../assets/style/custom.scss';\r\n</style>\r\n\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./BoxesArea.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./BoxesArea.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./BoxesArea.vue?vue&type=template&id=251a22e3&scoped=true&\"\nimport script from \"./BoxesArea.vue?vue&type=script&lang=js&\"\nexport * from \"./BoxesArea.vue?vue&type=script&lang=js&\"\nimport style0 from \"./BoxesArea.vue?vue&type=style&index=0&id=251a22e3&scoped=true&lang=css&\"\nimport style1 from \"./BoxesArea.vue?vue&type=style&index=1&id=251a22e3&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"251a22e3\",\n null\n \n)\n\nexport default component.exports","<template>\r\n <div>\r\n <Banner />\r\n <BoxesArea />\r\n </div>\r\n</template>\r\n\r\n<script>\r\n// import '../../assets/style/custom.scss'\r\nimport Banner from './Banner'\r\nimport BoxesArea from './BoxesArea'\r\nexport default {\r\n\tname: 'Home',\r\n\tcomponents: {\r\n\t\tBanner,\r\n\t\tBoxesArea\r\n\t}\r\n}\r\n</script>\r\n\r\n<style lang=\"scss\" scoped>\r\n@import '../../assets/style/custom.scss';\r\n</style>\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Home.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Home.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Home.vue?vue&type=template&id=8308d3d2&scoped=true&\"\nimport script from \"./Home.vue?vue&type=script&lang=js&\"\nexport * from \"./Home.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Home.vue?vue&type=style&index=0&id=8308d3d2&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"8308d3d2\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _vm._m(0)}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('section',{staticClass:\"solutions-area ptb-80\",staticStyle:{\"background\":\"rgb(0, 103, 71)\",\"padding-top\":\"160px\",\"padding-bottom\":\"100px\"}},[_c('div',{staticClass:\"container\"},[_c('div',{staticClass:\"section-title\"},[_c('h2',{staticStyle:{\"color\":\"white\"}},[_vm._v(\"Benefits\")]),_c('div',{staticClass:\"bar\"}),_c('p',{staticStyle:{\"color\":\"white\"}},[_vm._v(\"USF Writes provides a number of benefits for students, instructors, program administration, and program assessment.\")])]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-lg-6 col-sm-6 col-md-12\"},[_c('div',{staticClass:\"single-solutions-box hosting-main-banner\"},[_c('div',{staticClass:\"icon\"},[_c('img',{attrs:{\"src\":require(\"@/assets/img/icon4.png\"),\"alt\":\"image\"}})]),_c('h3',[_c('a',{staticStyle:{\"font-size\":\"20px\",\"font-weight\":\"bold\"},attrs:{\"href\":\"#\"}},[_vm._v(\"Student Benefits\")])]),_c('div',{staticClass:\"hosting-banner-content\",staticStyle:{\"padding\":\"30px\",\"padding-top\":\"20px\"}},[_c('ul',{staticStyle:{\"text-align\":\"left\",\"color\":\"#6084a4\"}},[_c('li',{staticStyle:{\"color\":\"#6084a4\"}},[_vm._v(\"Reduces confusion for students by providing focused feedback that constructively targets assignment learning outcomes\")]),_c('li',{staticStyle:{\"color\":\"#6084a4\"}},[_vm._v(\"Encourages vital meta-cognitive work in the self review stage of drafting\")]),_c('li',{staticStyle:{\"color\":\"#6084a4\"}},[_vm._v(\"Allows students to productively engage with not only their own writing, but also the writing of their peers\")]),_c('li',{staticStyle:{\"color\":\"#6084a4\"}},[_vm._v(\"Creates community by encouraging collaboration among students around writing\")])])])])]),_c('div',{staticClass:\"col-lg-6 col-sm-6 col-md-12\"},[_c('div',{staticClass:\"single-solutions-box hosting-main-banner\"},[_c('div',{staticClass:\"icon\"},[_c('img',{attrs:{\"src\":require(\"@/assets/img/icon6.png\"),\"alt\":\"image\"}})]),_c('h3',[_c('a',{staticStyle:{\"font-size\":\"20px\",\"font-weight\":\"bold\"},attrs:{\"href\":\"#\"}},[_vm._v(\"Faculty Benefits\")])]),_c('div',{staticClass:\"hosting-banner-content\",staticStyle:{\"padding\":\"30px\",\"padding-top\":\"20px\"}},[_c('ul',{staticStyle:{\"text-align\":\"left\",\"color\":\"#6084a4\"}},[_c('li',{staticStyle:{\"color\":\"#6084a4\"}},[_vm._v(\"Enables precise matching of feedback to specific learning outcomes\")]),_c('li',{staticStyle:{\"color\":\"#6084a4\"}},[_vm._v(\"Visualizes insights into student learning that can be rapidly addressed\")]),_c('li',{staticStyle:{\"color\":\"#6084a4\"}},[_vm._v(\"Provides insights into the impacts of instructors’ individual pedagogical practices, which is particularly important for new instructors and instructors new to the subject matter\")]),_c('li',{staticStyle:{\"color\":\"#6084a4\"}},[_vm._v(\"Allows more engagement with student work, while saving time in the feedback process\")])])])])]),_c('div',{staticClass:\"col-lg-6 col-sm-6 col-md-12\"},[_c('div',{staticClass:\"single-solutions-box hosting-main-banner\"},[_c('div',{staticClass:\"icon\"},[_c('img',{attrs:{\"src\":require(\"@/assets/img/icon5.png\"),\"alt\":\"image\"}})]),_c('h3',[_c('a',{staticStyle:{\"font-size\":\"20px\",\"font-weight\":\"bold\"},attrs:{\"href\":\"#\"}},[_vm._v(\"Administrative Benefits\")])]),_c('div',{staticClass:\"hosting-banner-content\",staticStyle:{\"padding\":\"30px\",\"padding-top\":\"40px\",\"padding-bottom\":\"80px\"}},[_c('ul',{staticStyle:{\"text-align\":\"left\",\"color\":\"#6084a4\"}},[_c('li',{staticStyle:{\"color\":\"#6084a4\"}},[_vm._v(\"Illuminates potential gaps in instructional approach\")]),_c('li',{staticStyle:{\"color\":\"#6084a4\"}},[_vm._v(\"Reports insights into student learning on a just-in-time basis\")]),_c('li',{staticStyle:{\"color\":\"#6084a4\"}},[_vm._v(\"Yields insights into whether assignments are successfully achieving learning outcomes\")]),_c('li',{staticStyle:{\"color\":\"#6084a4\"}},[_vm._v(\"Reveals areas where instructional weaknesses may need to be addressed\")])])])])]),_c('div',{staticClass:\"col-lg-6 col-sm-6 col-md-12\"},[_c('div',{staticClass:\"single-solutions-box hosting-main-banner\"},[_c('div',{staticClass:\"icon\"},[_c('img',{attrs:{\"src\":require(\"@/assets/img/icon7.png\"),\"alt\":\"image\"}})]),_c('h3',[_c('a',{staticStyle:{\"font-size\":\"20px\",\"font-weight\":\"bold\"},attrs:{\"href\":\"#\"}},[_vm._v(\"Assessment Benefits\")])]),_c('div',{staticClass:\"hosting-banner-content\",staticStyle:{\"padding\":\"30px\",\"padding-top\":\"20px\"}},[_c('ul',{staticStyle:{\"text-align\":\"left\",\"color\":\"#6084a4\"}},[_c('li',{staticStyle:{\"color\":\"#6084a4\"}},[_vm._v(\"Measures specific cognitive, planning, and collaborative domains of writing through specific task-based outcomes\")]),_c('li',{staticStyle:{\"color\":\"#6084a4\"}},[_vm._v(\"Aligns feedback directly with learning outcomes\")]),_c('li',{staticStyle:{\"color\":\"#6084a4\"}},[_vm._v(\"Makes formative and summative assessment clearer for students and faculty\")]),_c('li',{staticStyle:{\"color\":\"#6084a4\"}},[_vm._v(\"Provides an administrative view across sections\")]),_c('li',{staticStyle:{\"color\":\"#6084a4\"}},[_vm._v(\"Enables completion of institutional assessment and programmatic assessment through rigorous research and analysis\")])])])])])]),_c('div',{staticClass:\"tip\",staticStyle:{\"padding\":\"20px\",\"background\":\"white\",\"border-radius\":\"4px\",\"margin-bottom\":\"10px\"}},[_c('p',{staticStyle:{\"font-size\":\"16px\",\"color\":\"#444444\",\"word-break\":\"normal\"}},[_vm._v(\"\\n USF Writes also provide benefits related to research. Learn more about \"),_c('a',{staticStyle:{\"color\":\"rgb(0, 103, 71)\",\"font-weight\":\"bold\"},attrs:{\"href\":\"/research\"}},[_vm._v(\"data collection and the research being conducted.\")])])])])])}]\n\nexport { render, staticRenderFns }","<template>\r\n <!-- Start Our Solutions Area -->\r\n <section class=\"solutions-area ptb-80\" style=\"background: rgb(0, 103, 71); padding-top: 160px; padding-bottom: 100px;\">\r\n <div class=\"container\">\r\n <div class=\"section-title\">\r\n <h2 style=\"color: white;\">Benefits</h2>\r\n <div class=\"bar\" />\r\n <p style=\"color: white;\">USF Writes provides a number of benefits for students, instructors, program administration, and program assessment.</p>\r\n </div>\r\n\r\n <div class=\"row\">\r\n <div class=\"col-lg-6 col-sm-6 col-md-12\">\r\n <div class=\"single-solutions-box hosting-main-banner\">\r\n <div class=\"icon\">\r\n <img src=\"@/assets/img/icon4.png\" alt=\"image\">\r\n </div>\r\n <h3><a href=\"#\" style=\"font-size: 20px; font-weight: bold;\">Student Benefits</a></h3>\r\n <div class=\"hosting-banner-content\" style=\"padding: 30px; padding-top: 20px;\">\r\n <ul style=\"text-align: left; color: #6084a4;\">\r\n <li style=\"color: #6084a4;\">Reduces confusion for students by providing focused feedback that constructively targets assignment learning outcomes</li>\r\n <li style=\"color: #6084a4;\">Encourages vital meta-cognitive work in the self review stage of drafting</li>\r\n <li style=\"color: #6084a4;\">Allows students to productively engage with not only their own writing, but also the writing of their peers</li>\r\n <li style=\"color: #6084a4;\">Creates community by encouraging collaboration among students around writing</li>\r\n </ul>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"col-lg-6 col-sm-6 col-md-12\">\r\n <div class=\"single-solutions-box hosting-main-banner\">\r\n <div class=\"icon\">\r\n <img src=\"@/assets/img/icon6.png\" alt=\"image\">\r\n </div>\r\n <h3><a href=\"#\" style=\"font-size: 20px; font-weight: bold;\">Faculty Benefits</a></h3>\r\n <div class=\"hosting-banner-content\" style=\"padding: 30px; padding-top: 20px;\">\r\n <ul style=\"text-align: left; color: #6084a4;\">\r\n <li style=\"color: #6084a4;\">Enables precise matching of feedback to specific learning outcomes</li>\r\n <li style=\"color: #6084a4;\">Visualizes insights into student learning that can be rapidly addressed</li>\r\n <li style=\"color: #6084a4;\">Provides insights into the impacts of instructors’ individual pedagogical practices, which is particularly important for new instructors and instructors new to the subject matter</li>\r\n <li style=\"color: #6084a4;\">Allows more engagement with student work, while saving time in the feedback process</li>\r\n </ul>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"col-lg-6 col-sm-6 col-md-12\">\r\n <div class=\"single-solutions-box hosting-main-banner\">\r\n <div class=\"icon\">\r\n <img src=\"@/assets/img/icon5.png\" alt=\"image\">\r\n </div>\r\n <h3><a href=\"#\" style=\"font-size: 20px; font-weight: bold;\">Administrative Benefits</a></h3>\r\n <div class=\"hosting-banner-content\" style=\"padding: 30px; padding-top: 40px; padding-bottom: 80px;\">\r\n <ul style=\"text-align: left; color: #6084a4;\">\r\n <li style=\"color: #6084a4;\">Illuminates potential gaps in instructional approach</li>\r\n <li style=\"color: #6084a4;\">Reports insights into student learning on a just-in-time basis</li>\r\n <li style=\"color: #6084a4;\">Yields insights into whether assignments are successfully achieving learning outcomes</li>\r\n <li style=\"color: #6084a4;\">Reveals areas where instructional weaknesses may need to be addressed</li>\r\n </ul>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"col-lg-6 col-sm-6 col-md-12\">\r\n <div class=\"single-solutions-box hosting-main-banner\">\r\n <div class=\"icon\">\r\n <img src=\"@/assets/img/icon7.png\" alt=\"image\">\r\n </div>\r\n <h3><a href=\"#\" style=\"font-size: 20px; font-weight: bold;\">Assessment Benefits</a></h3>\r\n <div class=\"hosting-banner-content\" style=\"padding: 30px; padding-top: 20px;\">\r\n <ul style=\"text-align: left; color: #6084a4;\">\r\n <li style=\"color: #6084a4;\">Measures specific cognitive, planning, and collaborative domains of writing through specific task-based outcomes</li>\r\n <li style=\"color: #6084a4;\">Aligns feedback directly with learning outcomes</li>\r\n <li style=\"color: #6084a4;\">Makes formative and summative assessment clearer for students and faculty</li>\r\n <li style=\"color: #6084a4;\">Provides an administrative view across sections</li>\r\n <li style=\"color: #6084a4;\">Enables completion of institutional assessment and programmatic assessment through rigorous research and analysis</li>\r\n </ul>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n <div\r\n class=\"tip\"\r\n style=\"padding: 20px; background: white; border-radius: 4px; margin-bottom: 10px;\"\r\n >\r\n <p style=\"font-size: 16px; color: #444444; word-break: normal;\">\r\n USF Writes also provide benefits related to research. Learn more about <a href=\"/research\" style=\"color: rgb(0, 103, 71); font-weight: bold;\">data collection and the research being conducted.</a>\r\n </p>\r\n </div>\r\n </div>\r\n\r\n </section>\r\n <!-- End Our Solutions Area -->\r\n</template>\r\n\r\n<script>\r\nexport default {\r\n\tname: 'Benefits'\r\n}\r\n</script>\r\n\r\n<style lang=\"scss\" scoped>\r\n@import '../../assets/style/custom.scss';\r\n</style>\r\n\r\n<style scoped>\r\n.single-solutions-box::before {\r\n background: white !important;\r\n}\r\n</style>\r\n\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Benefits.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Benefits.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Benefits.vue?vue&type=template&id=3211281f&scoped=true&\"\nimport script from \"./Benefits.vue?vue&type=script&lang=js&\"\nexport * from \"./Benefits.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Benefits.vue?vue&type=style&index=0&id=3211281f&lang=scss&scoped=true&\"\nimport style1 from \"./Benefits.vue?vue&type=style&index=1&id=3211281f&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"3211281f\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_vm._m(0),_c('section',{staticClass:\"iot-features-area ptb-80\",staticStyle:{\"padding-top\":\"60px\"}},[_c('div',{staticClass:\"container\"},[_c('div',{staticClass:\"row align-items-center\"},[_c('div',{staticClass:\"col-lg-6 iot-features-image\"},[_c('img',{directives:[{name:\"wow\",rawName:\"v-wow\"}],staticClass:\"wow fadeInUp\",attrs:{\"src\":require(\"@/assets/img/papers.png\"),\"data-wow-delay\":\"0.6s\",\"alt\":\"image\"}})]),_vm._m(1)])])]),_c('section',{staticClass:\"iot-features-area ptb-80 bg-f7fafd\"},[_c('div',{staticClass:\"container\"},[_c('div',{staticClass:\"row align-items-center\"},[_vm._m(2),_c('div',{staticClass:\"col-lg-6 iot-features-image\"},[_c('img',{directives:[{name:\"wow\",rawName:\"v-wow\"}],staticClass:\"wow fadeInUp\",staticStyle:{\"height\":\"450px\"},attrs:{\"src\":require(\"@/assets/img/fyc.png\"),\"data-wow-delay\":\"0.6s\",\"alt\":\"image\"}})])])])]),_c('section',{staticClass:\"iot-features-area ptb-80\",staticStyle:{\"padding-top\":\"60px\"}},[_c('div',{staticClass:\"container\"},[_c('div',{staticClass:\"row align-items-center\"},[_c('div',{staticClass:\"col-lg-6 iot-features-image\"},[_c('img',{directives:[{name:\"wow\",rawName:\"v-wow\"}],staticClass:\"wow fadeInUp\",staticStyle:{\"heigth\":\"430px\"},attrs:{\"src\":require(\"@/assets/img/ptc.jpg\"),\"data-wow-delay\":\"0.6s\",\"alt\":\"image\"}})]),_vm._m(3)])])]),_c('section',{staticClass:\"iot-features-area ptb-80 bg-f7fafd\",staticStyle:{\"padding-top\":\"40px\",\"background-color\":\"rgb(238 247 255)\"}},[_c('div',{staticClass:\"container\"},[_c('div',{staticClass:\"row align-items-center\"},[_vm._m(4),_c('div',{staticClass:\"col-lg-5 iot-features-image\"},[_c('img',{directives:[{name:\"wow\",rawName:\"v-wow\"}],staticClass:\"wow fadeInUp\",staticStyle:{\"height\":\"450px\",\"margin-top\":\"30px\"},attrs:{\"src\":require(\"@/assets/img/research-ethic-6.png\"),\"data-wow-delay\":\"0.6s\",\"alt\":\"image\"}})])])])]),_c('section',{staticClass:\"iot-features-area ptb-80\"},[_c('div',{staticClass:\"container\"},[_c('div',{staticClass:\"row align-items-center\"},[_c('div',{staticClass:\"col-lg-6 iot-features-image\"},[_c('img',{directives:[{name:\"wow\",rawName:\"v-wow\"}],staticClass:\"wow fadeInUp\",staticStyle:{\"heigth\":\"450px\"},attrs:{\"src\":require(\"@/assets/img/data-access.jpg\"),\"data-wow-delay\":\"0.6s\",\"alt\":\"image\"}})]),_vm._m(5)])])])])}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('section',{staticClass:\"iot-features-area ptb-80 bg-f7fafd solutions-area ptb-80\",staticStyle:{\"background\":\"rgb(0, 103, 71)\",\"padding-top\":\"140px\",\"padding-bottom\":\"40px\"}},[_c('div',{staticClass:\"container\"},[_c('div',{staticClass:\"section-title\",staticStyle:{\"margin-bottom\":\"0px\"}},[_c('h2',{staticStyle:{\"color\":\"white\"}},[_vm._v(\"Academic Research\")]),_c('div',{staticClass:\"bar\"}),_c('p',{staticStyle:{\"color\":\"white\"}},[_vm._v(\"The USF Writes research team is dedicated to sustainable research, conducted programmatically and pedagogically.\")])])])])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"col-lg-6 iot-features-content\",attrs:{\"st\":\"\"}},[_c('h3',[_vm._v(\"Research for Pedagogical Use\")]),_c('p',[_vm._v(\"USF Writes provides a rich data warehouse of instructor feedback and formative rubric use, as well as student writing, including drafts and completed assignments.\")]),_c('p',[_vm._v(\"For researchers, the data warehouse in USF Writes becomes a principled way to use innovative techniques to study socio-cognitive and socio-cultural patterns in student writing and instructor feedback. The data housed in USF Writes is rapidly becoming one of the largest corpora of first-year student writing in the world.\")]),_c('p',[_vm._v(\"While the research potential of data collected within USF Writes is vast, our orientation is quite specific: We seek to understand student writing better so we can develop new ways of teaching based on formative feedback to student writing.\")])])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"col-lg-6 iot-features-content hosting-main-banner\",staticStyle:{\"background-color\":\"#f7fafd\",\"padding-top\":\"40px\",\"padding-bottom\":\"0px\",\"padding-left\":\"20px\"}},[_c('h3',[_vm._v(\"Key questions under investigation in FYC\")]),_c('div',{staticClass:\"hosting-banner-content\",staticStyle:{\"padding\":\"30px\",\"padding-top\":\"20px\",\"padding-left\":\"0px\"}},[_c('ul',{staticStyle:{\"text-align\":\"left\",\"color\":\"#6084a4\"}},[_c('li',{staticStyle:{\"color\":\"#6084a4\",\"margin-bottom\":\"30px\",\"font-size\":\"16px\"}},[_vm._v(\"Impact of task-specific rubrics in self-efficacy, self, peer, and expert review\")]),_c('li',{staticStyle:{\"color\":\"#6084a4\",\"margin-bottom\":\"30px\",\"font-size\":\"16px\"}},[_vm._v(\"Corpus analysis of formative comments posted by peers and expert review in response to task specific rubrics\")]),_c('li',{staticStyle:{\"color\":\"#6084a4\",\"margin-bottom\":\"30px\",\"font-size\":\"16px\"}},[_vm._v(\"Relationships of scores and comments to criterion measures, including assignment grades, course grade, performance in other FYC courses, and GPA\")]),_c('li',{staticStyle:{\"color\":\"#6084a4\",\"margin-bottom\":\"30px\",\"font-size\":\"16px\"}},[_vm._v(\"Roles of formative feedback in student retention and predictive analytics\")])])])])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"col-lg-6 iot-features-content hosting-main-banner\",staticStyle:{\"background-color\":\"white\",\"padding-top\":\"40px\",\"padding-bottom\":\"0px\",\"padding-left\":\"20px\"}},[_c('h3',[_vm._v(\"Key concerns being investigated in PTC\")]),_c('div',{staticClass:\"hosting-banner-content\",staticStyle:{\"padding\":\"30px\",\"padding-top\":\"20px\",\"padding-left\":\"0px\"}},[_c('ul',{staticStyle:{\"text-align\":\"left\",\"color\":\"#6084a4\"}},[_c('li',{staticStyle:{\"color\":\"#6084a4\",\"margin-bottom\":\"30px\",\"font-size\":\"16px\"}},[_vm._v(\"Role of self efficacy and self-regulation in student success\")]),_c('li',{staticStyle:{\"color\":\"#6084a4\",\"margin-bottom\":\"30px\",\"font-size\":\"16px\"}},[_vm._v(\"Analysis of attention to audience and purpose as found in linguistic, cultural, and substantive language-use patterns\")]),_c('li',{staticStyle:{\"color\":\"#6084a4\",\"margin-bottom\":\"30px\",\"font-size\":\"16px\"}},[_vm._v(\"Textual elements and linguistic markers in report writing\")]),_c('li',{staticStyle:{\"color\":\"#6084a4\",\"margin-bottom\":\"30px\",\"font-size\":\"16px\"}},[_vm._v(\"Cohesive patterns of integration of visual and design elements in reports\")])])])])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"col-lg-7 iot-features-content hosting-main-banner\",staticStyle:{\"background-color\":\"rgb(238 247 255)\",\"padding-top\":\"40px\",\"padding-bottom\":\"0px\",\"padding-left\":\"20px\"}},[_c('h3',[_vm._v(\"Research Ethics and Protocols\")]),_c('p',{staticStyle:{\"margin-bottom\":\"8px\",\"line-height\":\"1.4\"}},[_vm._v(\"The research on the USF Writes data warehouse is covered by an existing Institutional Review Board protocol.\")]),_c('p',{staticStyle:{\"margin-bottom\":\"8px\",\"line-height\":\"1.4\"}},[_vm._v(\"Students and instructors select to either opt in or opt out for their anonymous work to be used for research purposes. Below are the key paragraphs about how data is used.\")]),_c('p',{staticStyle:{\"margin-bottom\":\"8px\",\"line-height\":\"1.4\"}},[_c('b',[_vm._v(\"Student confidentiality:\")]),_vm._v(\" Your research has been approved for a specific design regarding textual analysis, and you have agreed to confidentiality of information within the database. Nevertheless, the text you will analyze may contain information that might be of a personal nature to the student writers. As such, you agree not to quote directly any detailed blocks of text that contain such information. If a block of text is required to support the claims made in your findings, you agree to submit that text to me for my review before peer review and subsequent publication.\")]),_c('p',{staticStyle:{\"margin-bottom\":\"8px\",\"line-height\":\"1.4\"}},[_c('b',[_vm._v(\"Data use and re-use:\")]),_vm._v(\" Your research has been approved for a specific research project. Should you want to use the data again in another capacity, please notify us. Relatedly, this data has been released to you and/or your research team. It is not to be distributed to any other parties for any reason.\")]),_c('p',{staticStyle:{\"margin-bottom\":\"8px\",\"line-height\":\"1.4\"}},[_vm._v(\"In addition to IRB standards, we also employ a strict ethic to ensure that student’s work can never be identified or traced back to an individual student. Researchers are only given non-identified data and any lengthy student quote must be approved by the research committee before it can be used in any public way (such as in a publication or presentation).\")])])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"col-lg-6 iot-features-content\",attrs:{\"st\":\"\"}},[_c('h3',[_vm._v(\"Request Access to Data\")]),_c('p',[_vm._v(\"To request access to data from the USF’s writing data warehouse, please complete the\\n \"),_c('a',{staticStyle:{\"font-weight\":\"bold\"},attrs:{\"title\":\"USF Writes Data Request Form\",\"href\":\"https://www.usf.edu/arts-sciences/departments/english/documents/wp-usf-writes-data-request.docx\",\"target\":\"_blank\"}},[_vm._v(\"data request form\")]),_vm._v(\"\\n and send to the current chair of the research committee,\\n\\n \"),_c('a',{staticStyle:{\"font-weight\":\"bold\"},attrs:{\"title\":\"E-mail Lauren Arrington\",\"href\":\"mailto:laurenarrington@usf.edu\"}},[_vm._v(\"Lauren Arrington.\")])]),_c('div',{staticClass:\"tip\",staticStyle:{\"padding\":\"20px\",\"margin-top\":\"30px\",\"background-color\":\"rgb(238 247 255)\",\"border-radius\":\"4px\",\"border-left\":\"5px solid rgb(159 203 238)\",\"margin-bottom\":\"10px\"}},[_c('p',{staticStyle:{\"font-size\":\"16px\",\"color\":\"#444444\",\"word-break\":\"normal\",\"line-height\":\"1.5\"}},[_c('b',[_vm._v(\"Note:\")]),_vm._v(\" When we talk of research on this page, we are discussing a research study, which is something entirely different from program evaluation. Data from USF Writes is also used in program evaluation as a way to ensure that our designed curricula is meeting the needs of students and other programs on campus. All student and instructor data can be used for these internal purposes. However, when generalization inferences are the intended use of data collected in USF Writes, then the IRB comes into play.\\n \")])])])}]\n\nexport { render, staticRenderFns }","<template>\r\n <div>\r\n <!-- Start Our Solutions Area -->\r\n <section class=\"iot-features-area ptb-80 bg-f7fafd solutions-area ptb-80\" style=\"background: rgb(0, 103, 71); padding-top: 140px; padding-bottom: 40px;\">\r\n <div class=\"container\">\r\n <div class=\"section-title\" style=\"margin-bottom: 0px;\">\r\n <h2 style=\"color: white;\">Academic Research</h2>\r\n <div class=\"bar\" />\r\n <p style=\"color: white;\">The USF Writes research team is dedicated to sustainable research, conducted programmatically and pedagogically.</p>\r\n </div>\r\n\r\n </div>\r\n\r\n </section>\r\n\r\n <section class=\"iot-features-area ptb-80\" style=\"padding-top: 60px;\">\r\n <div class=\"container\">\r\n <div class=\"row align-items-center\">\r\n <div class=\"col-lg-6 iot-features-image\">\r\n <img v-wow src=\"@/assets/img/papers.png\" class=\"wow fadeInUp\" data-wow-delay=\"0.6s\" alt=\"image\">\r\n </div>\r\n\r\n <div class=\"col-lg-6 iot-features-content\" st>\r\n <h3>Research for Pedagogical Use</h3>\r\n <p>USF Writes provides a rich data warehouse of instructor feedback and formative rubric use, as well as student writing, including drafts and completed assignments.</p>\r\n <p>For researchers, the data warehouse in USF Writes becomes a principled way to use innovative techniques to study socio-cognitive and socio-cultural patterns in student writing and instructor feedback. The data housed in USF Writes is rapidly becoming one of the largest corpora of first-year student writing in the world.</p>\r\n <p>While the research potential of data collected within USF Writes is vast, our orientation is quite specific: We seek to understand student writing better so we can develop new ways of teaching based on formative feedback to student writing.</p>\r\n </div>\r\n </div>\r\n </div>\r\n </section>\r\n\r\n <section class=\"iot-features-area ptb-80 bg-f7fafd\">\r\n <div class=\"container\">\r\n <div class=\"row align-items-center\">\r\n <div class=\"col-lg-6 iot-features-content hosting-main-banner\" style=\"background-color: #f7fafd; padding-top: 40px; padding-bottom: 0px; padding-left: 20px;\">\r\n <h3>Key questions under investigation in FYC</h3>\r\n <div class=\"hosting-banner-content\" style=\"padding: 30px; padding-top: 20px; padding-left: 0px;\">\r\n <ul style=\"text-align: left; color: #6084a4;\">\r\n <li style=\"color: #6084a4; margin-bottom: 30px; font-size: 16px;\">Impact of task-specific rubrics in self-efficacy, self, peer, and expert review</li>\r\n <li style=\"color: #6084a4; margin-bottom: 30px; font-size: 16px;\">Corpus analysis of formative comments posted by peers and expert review in response to task specific rubrics</li>\r\n <li style=\"color: #6084a4; margin-bottom: 30px; font-size: 16px;\">Relationships of scores and comments to criterion measures, including assignment grades, course grade, performance in other FYC courses, and GPA</li>\r\n <li style=\"color: #6084a4; margin-bottom: 30px; font-size: 16px;\">Roles of formative feedback in student retention and predictive analytics</li>\r\n </ul>\r\n </div>\r\n </div>\r\n\r\n <div class=\"col-lg-6 iot-features-image\">\r\n <img v-wow src=\"@/assets/img/fyc.png\" style=\"height: 450px;\" class=\"wow fadeInUp\" data-wow-delay=\"0.6s\" alt=\"image\">\r\n </div>\r\n </div>\r\n </div>\r\n </section>\r\n\r\n <section class=\"iot-features-area ptb-80\" style=\"padding-top: 60px;\">\r\n <div class=\"container\">\r\n <div class=\"row align-items-center\">\r\n <div class=\"col-lg-6 iot-features-image\">\r\n <img v-wow src=\"@/assets/img/ptc.jpg\" style=\"heigth: 430px;\" class=\"wow fadeInUp\" data-wow-delay=\"0.6s\" alt=\"image\">\r\n </div>\r\n\r\n <div class=\"col-lg-6 iot-features-content hosting-main-banner\" style=\"background-color: white; padding-top: 40px; padding-bottom: 0px; padding-left: 20px;\">\r\n <h3>Key concerns being investigated in PTC</h3>\r\n <div class=\"hosting-banner-content\" style=\"padding: 30px; padding-top: 20px; padding-left: 0px;\">\r\n <ul style=\"text-align: left; color: #6084a4;\">\r\n <li style=\"color: #6084a4; margin-bottom: 30px; font-size: 16px;\">Role of self efficacy and self-regulation in student success</li>\r\n <li style=\"color: #6084a4; margin-bottom: 30px; font-size: 16px;\">Analysis of attention to audience and purpose as found in linguistic, cultural, and substantive language-use patterns</li>\r\n <li style=\"color: #6084a4; margin-bottom: 30px; font-size: 16px;\">Textual elements and linguistic markers in report writing</li>\r\n <li style=\"color: #6084a4; margin-bottom: 30px; font-size: 16px;\">Cohesive patterns of integration of visual and design elements in reports</li>\r\n </ul>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n </div>\r\n </section>\r\n\r\n <section class=\"iot-features-area ptb-80 bg-f7fafd\" style=\"padding-top: 40px; background-color: rgb(238 247 255);\">\r\n <div class=\"container\">\r\n <div class=\"row align-items-center\">\r\n <div class=\"col-lg-7 iot-features-content hosting-main-banner\" style=\"background-color: rgb(238 247 255); padding-top: 40px; padding-bottom: 0px; padding-left: 20px;\">\r\n <h3>Research Ethics and Protocols</h3>\r\n\r\n <p style=\"margin-bottom: 8px; line-height: 1.4;\">The research on the USF Writes data warehouse is covered by an existing Institutional Review Board protocol.</p>\r\n <p style=\"margin-bottom: 8px; line-height: 1.4;\">Students and instructors select to either opt in or opt out for their anonymous work to be used for research purposes. Below are the key paragraphs about how data is used.</p>\r\n <p style=\"margin-bottom: 8px; line-height: 1.4;\"><b>Student confidentiality:</b> Your research has been approved for a specific design regarding textual analysis, and you have agreed to confidentiality of information within the database. Nevertheless, the text you will analyze may contain information that might be of a personal nature to the student writers. As such, you agree not to quote directly any detailed blocks of text that contain such information. If a block of text is required to support the claims made in your findings, you agree to submit that text to me for my review before peer review and subsequent publication.</p>\r\n <p style=\"margin-bottom: 8px; line-height: 1.4;\"><b>Data use and re-use:</b> Your research has been approved for a specific research project. Should you want to use the data again in another capacity, please notify us. Relatedly, this data has been released to you and/or your research team. It is not to be distributed to any other parties for any reason.</p>\r\n <p style=\"margin-bottom: 8px; line-height: 1.4;\">In addition to IRB standards, we also employ a strict ethic to ensure that student’s work can never be identified or traced back to an individual student. Researchers are only given non-identified data and any lengthy student quote must be approved by the research committee before it can be used in any public way (such as in a publication or presentation).</p>\r\n\r\n </div>\r\n\r\n <div class=\"col-lg-5 iot-features-image\">\r\n <img v-wow src=\"@/assets/img/research-ethic-6.png\" style=\"height: 450px; margin-top: 30px;\" class=\"wow fadeInUp\" data-wow-delay=\"0.6s\" alt=\"image\">\r\n </div>\r\n </div>\r\n </div>\r\n </section>\r\n\r\n <section class=\"iot-features-area ptb-80\">\r\n <div class=\"container\">\r\n <div class=\"row align-items-center\">\r\n <div class=\"col-lg-6 iot-features-image\">\r\n <img v-wow src=\"@/assets/img/data-access.jpg\" style=\"heigth: 450px;\" class=\"wow fadeInUp\" data-wow-delay=\"0.6s\" alt=\"image\">\r\n </div>\r\n\r\n <div class=\"col-lg-6 iot-features-content\" st>\r\n <h3>Request Access to Data</h3>\r\n <p>To request access to data from the USF’s writing data warehouse, please complete the\r\n <a\r\n title=\"USF Writes Data Request Form\"\r\n href=\"https://www.usf.edu/arts-sciences/departments/english/documents/wp-usf-writes-data-request.docx\"\r\n target=\"_blank\"\r\n style=\"font-weight: bold;\"\r\n >data request form</a>\r\n and send to the current chair of the research committee,\r\n\r\n <a title=\"E-mail Lauren Arrington\" href=\"mailto:laurenarrington@usf.edu\" style=\"font-weight: bold;\">Lauren Arrington.</a>\r\n </p>\r\n\r\n <div\r\n class=\"tip\"\r\n style=\"padding: 20px; margin-top: 30px; background-color: rgb(238 247 255); border-radius: 4px; border-left: 5px solid rgb(159 203 238); margin-bottom: 10px;\"\r\n >\r\n <p style=\"font-size: 16px; color: #444444; word-break: normal; line-height: 1.5;\">\r\n <b>Note:</b> When we talk of research on this page, we are discussing a research study, which is something entirely different from program evaluation. Data from USF Writes is also used in program evaluation as a way to ensure that our designed curricula is meeting the needs of students and other programs on campus. All student and instructor data can be used for these internal purposes. However, when generalization inferences are the intended use of data collected in USF Writes, then the IRB comes into play.\r\n </p>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n </div>\r\n </section>\r\n\r\n </div>\r\n <!-- End Our Solutions Area -->\r\n</template>\r\n\r\n<script>\r\nexport default {\r\n\tname: 'Research'\r\n}\r\n</script>\r\n\r\n<style lang=\"scss\" scoped>\r\n@import '../../assets/style/custom.scss';\r\n</style>\r\n\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Research.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Research.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Research.vue?vue&type=template&id=c6998e14&scoped=true&\"\nimport script from \"./Research.vue?vue&type=script&lang=js&\"\nexport * from \"./Research.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Research.vue?vue&type=style&index=0&id=c6998e14&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"c6998e14\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('section',{staticClass:\"iot-services-area ptb-80\",staticStyle:{\"padding-top\":\"160px\",\"background\":\"rgb(0, 103, 71)\",\"padding-bottom\":\"60px\"}},[_c('div',{staticClass:\"container\"},[_vm._m(0),_c('div',{staticClass:\"row\"},[(_vm.showEthic)?_c('div',{class:_vm.ethicRowClass},[_c('div',{staticClass:\"single-iot-services\"},[_vm._m(1),_vm._m(2),(_vm.ethicMore)?_c('p',[_vm._v(_vm._s(_vm.ethicStrMore)),_c('br'),_c('br')]):_c('p',[_vm._v(_vm._s(_vm.ethicStrLess))]),_c('a',{staticStyle:{\"width\":\"40px\",\"background-color\":\"#009374\",\"height\":\"40px\",\"line-height\":\"44px\"},attrs:{\"href\":\"#\"},on:{\"click\":function($event){return _vm.readMoreEthic()}}},[(_vm.ethicMore)?_c('i',{staticClass:\"fas fa-arrow-left\",staticStyle:{\"font-size\":\"20px\",\"color\":\"white\"}}):_c('i',{staticClass:\"fas fa-arrow-right\",staticStyle:{\"font-size\":\"20px\",\"color\":\"white\"}})])])]):_vm._e(),(_vm.showTech)?_c('div',{class:_vm.techRowClass},[_c('div',{staticClass:\"single-iot-services\"},[_vm._m(3),_vm._m(4),(_vm.techMore)?_c('p',[_vm._v(_vm._s(_vm.techStrMore))]):_c('p',[_vm._v(_vm._s(_vm.techStrLess))]),_c('a',{staticStyle:{\"width\":\"40px\",\"background-color\":\"#009374\",\"height\":\"40px\",\"line-height\":\"44px\"},attrs:{\"href\":\"#\"},on:{\"click\":function($event){return _vm.readMoreTech()}}},[(_vm.techMore)?_c('i',{staticClass:\"fas fa-arrow-left\",staticStyle:{\"font-size\":\"20px\",\"color\":\"white\"}}):_c('i',{staticClass:\"fas fa-arrow-right\",staticStyle:{\"font-size\":\"20px\",\"color\":\"white\"}})])])]):_vm._e(),(_vm.showPlatform)?_c('div',{class:_vm.platformRowClass},[_c('div',{staticClass:\"single-iot-services\"},[_vm._m(5),_vm._m(6),(_vm.platformMore)?_c('p',[_vm._v(_vm._s(_vm.platformStrMore)),_c('br'),_c('br'),_c('br')]):_c('p',[_vm._v(_vm._s(_vm.platformStrLess))]),_c('p'),_c('a',{staticStyle:{\"width\":\"40px\",\"background-color\":\"#009374\",\"height\":\"40px\",\"line-height\":\"44px\"},attrs:{\"href\":\"#\"},on:{\"click\":function($event){return _vm.readMorePlatform()}}},[(_vm.platformMore)?_c('i',{staticClass:\"fas fa-arrow-left\",staticStyle:{\"font-size\":\"20px\",\"color\":\"white\"}}):_c('i',{staticClass:\"fas fa-arrow-right\",staticStyle:{\"font-size\":\"20px\",\"color\":\"white\"}})])])]):_vm._e()])])])}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"section-title\"},[_c('h2',{staticStyle:{\"color\":\"white\"}},[_vm._v(\"Pedagogy Orientation\")]),_c('div',{staticClass:\"bar\"}),_c('p',{staticStyle:{\"max-width\":\"860px\",\"color\":\"white\"}},[_vm._v(\"By focusing on pedagogy, we have developed a tool that works in tandem with existing writing pedagogies and works toward providing insights into better ways to teach writing to improve student learning.\")])])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"icon\"},[_c('i',{staticClass:\"fas fa-user-graduate\",staticStyle:{\"margin-top\":\"20px\",\"color\":\"#0b7755\"}})])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('h3',{staticStyle:{\"font-weight\":\"bold\"}},[_vm._v(\"Guiding Ethic of Fairness\"),_c('br'),_vm._v(\"to the Students\")])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"icon\"},[_c('i',{staticClass:\"fas fa-desktop\",staticStyle:{\"margin-top\":\"25px\",\"color\":\"#0b7755\"}})])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('h3',{staticStyle:{\"font-weight\":\"bold\"}},[_vm._v(\"Enhancing Pedagogical\"),_c('br'),_vm._v(\"Approaches with Technology\")])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"icon\"},[_c('i',{staticClass:\"fas fa-pen-nib\",staticStyle:{\"margin-top\":\"25px\",\"color\":\"#0b7755\"}})])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('h3',{staticStyle:{\"font-weight\":\"bold\"}},[_vm._v(\"Providing a Platform\"),_c('br'),_vm._v(\"to Encourage Writing\")])}]\n\nexport { render, staticRenderFns }","<template>\r\n <!-- Start IoT Services Area -->\r\n <section class=\"iot-services-area ptb-80\" style=\"padding-top: 160px; background: rgb(0, 103, 71); padding-bottom: 60px;\">\r\n <div class=\"container\">\r\n <div class=\"section-title\">\r\n <h2 style=\"color: white;\">Pedagogy Orientation</h2>\r\n <div class=\"bar\" />\r\n <p style=\"max-width: 860px; color: white;\">By focusing on pedagogy, we have developed a tool that works in tandem with existing writing pedagogies and works toward providing insights into better ways to teach writing to improve student learning.</p>\r\n </div>\r\n\r\n <div class=\"row\">\r\n <div v-if=\"showEthic\" :class=\"ethicRowClass\">\r\n <div class=\"single-iot-services\">\r\n <div class=\"icon\">\r\n <i class=\"fas fa-user-graduate\" style=\"margin-top: 20px; color: #0b7755;\" />\r\n </div>\r\n\r\n <h3 style=\"font-weight: bold;\">Guiding Ethic of Fairness<br>to the Students</h3>\r\n <p v-if=\"ethicMore\">{{ ethicStrMore }}<br><br></p>\r\n <p v-else>{{ ethicStrLess }}</p>\r\n\r\n <a href=\"#\" style=\"width: 40px; background-color: #009374; height: 40px;line-height: 44px;\" @click=\"readMoreEthic()\">\r\n <i v-if=\"ethicMore\" class=\"fas fa-arrow-left\" style=\"font-size: 20px; color: white;\" />\r\n <i v-else class=\"fas fa-arrow-right\" style=\"font-size: 20px; color: white;\" />\r\n </a>\r\n </div>\r\n </div>\r\n\r\n <div v-if=\"showTech\" :class=\"techRowClass\">\r\n <div class=\"single-iot-services\">\r\n <div class=\"icon\">\r\n <i class=\"fas fa-desktop\" style=\"margin-top: 25px; color: #0b7755;\" />\r\n </div>\r\n\r\n <h3 style=\"font-weight: bold;\">Enhancing Pedagogical<br>Approaches with Technology</h3>\r\n <p v-if=\"techMore\">{{ techStrMore }}</p>\r\n <p v-else>{{ techStrLess }}</p>\r\n <a href=\"#\" style=\"width: 40px; background-color: #009374; height: 40px;line-height: 44px;\" @click=\"readMoreTech()\">\r\n <i v-if=\"techMore\" class=\"fas fa-arrow-left\" style=\"font-size: 20px; color: white;\" />\r\n <i v-else class=\"fas fa-arrow-right\" style=\"font-size: 20px; color: white;\" />\r\n </a>\r\n </div>\r\n </div>\r\n\r\n <div v-if=\"showPlatform\" :class=\"platformRowClass\">\r\n <div class=\"single-iot-services\">\r\n <div class=\"icon\">\r\n <i class=\"fas fa-pen-nib\" style=\"margin-top: 25px; color: #0b7755;\" />\r\n </div>\r\n <h3 style=\"font-weight: bold;\">Providing a Platform<br>to Encourage Writing</h3>\r\n <p v-if=\"platformMore\">{{ platformStrMore }}<br><br><br></p>\r\n <p v-else>{{ platformStrLess }}</p>\r\n <p />\r\n\r\n <a href=\"#\" style=\"width: 40px; background-color: #009374; height: 40px;line-height: 44px;\" @click=\"readMorePlatform()\">\r\n <i v-if=\"platformMore\" class=\"fas fa-arrow-left\" style=\"font-size: 20px; color: white;\" />\r\n <i v-else class=\"fas fa-arrow-right\" style=\"font-size: 20px; color: white;\" /></a>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </section>\r\n <!-- End IoT Services Area -->\r\n</template>\r\n\r\n<script>\r\nexport default {\r\n\tname: 'Services',\r\n\tdata() {\r\n\t\treturn {\r\n\t\t\tshowEthic: true,\r\n\t\t\tshowTech: true,\r\n\t\t\tshowPlatform: true,\r\n\t\t\tethicRowClass: 'col-lg-4 col-md-6 col-sm-6',\r\n\t\t\ttechRowClass: 'col-lg-4 col-md-6 col-sm-6',\r\n\t\t\tplatformRowClass: 'col-lg-4 col-md-6 col-sm-6',\r\n\t\t\tethicMore: false,\r\n\t\t\tethicStrMore: 'By equating our programmatic ethic with pedagogical application to advance student success, we hope to be models of critical technological literacy and adaptation and use of technological tools. In other words, by thinking through technology use through the lens of a guiding ethic of fairness to students, we are consistently challenging our programs to consider and reconsider how technology can be used to bolster, complement, and enhance pedagogical practices that in turn help students achieve the goals of the course.',\r\n\t\t\tethicStrLess: 'By equating our programmatic ethic with pedagogical application to advance student success, we hope to be models of critical technological literacy and ...',\r\n\t\t\ttechMore: false,\r\n\t\t\ttechStrMore: 'Integrating technology into the writing classroom has a long history of scholarship and research in the fields of composition, composition and rhetoric, computers and writing, and technical and professional communication. From the landmark work of Cynthia Selfe and Richard Selfe who admonished the field to pay attention to technology to ensure that technology was being used fairly and equitably to more recent work of Marj Hovde and Corinne Renguette who lay out a narrative of the goals of technological literacy, this scholarship has long focused on ensuring a critical awareness of why we should adopt and use technology and how to use it ethically and inclusively.',\r\n\t\t\ttechStrLess: 'Integrating technology into the writing classroom has a long history of scholarship and research in the fields of composition, composition and rhetoric, computers ...',\r\n\t\t\tplatformMore: false,\r\n\t\t\tplatformStrMore: 'Driven by critical digital pedagogy, USF Writes and other technologies will enhance the student learning experience by providing a platform to develop foundational and transferrable skills in writing. The platform also provides students with the space to engage technology in instrumental and substantive ways, rather than using it as a passive tool to bring them into a broader digital community.',\r\n\t\t\tplatformStrLess: 'Driven by critical digital pedagogy, USF Writes and other technologies will enhance the student learning experience by providng a platform to develop foundational ...'\r\n\t\t}\r\n\t},\r\n\tmethods: {\r\n\t\treadMoreEthic() {\r\n\t\t\tthis.ethicMore = !this.ethicMore\r\n\t\t\tif (this.ethicMore) {\r\n\t\t\t\tthis.ethicRowClass = 'row'\r\n\t\t\t\tthis.showTech = false\r\n\t\t\t\tthis.showPlatform = false\r\n\t\t\t} else {\r\n\t\t\t\tthis.ethicRowClass = 'col-lg-4 col-md-6 col-sm-6'\r\n\t\t\t\tthis.showTech = true\r\n\t\t\t\tthis.showPlatform = true\r\n\t\t\t}\r\n\t\t},\r\n\t\treadMoreTech() {\r\n\t\t\tthis.techMore = !this.techMore\r\n\t\t\tif (this.techMore) {\r\n\t\t\t\tthis.techRowClass = 'row'\r\n\t\t\t\tthis.showEthic = false\r\n\t\t\t\tthis.showPlatform = false\r\n\t\t\t} else {\r\n\t\t\t\tthis.techRowClass = 'col-lg-4 col-md-6 col-sm-6'\r\n\t\t\t\tthis.showEthic = true\r\n\t\t\t\tthis.showPlatform = true\r\n\t\t\t}\r\n\t\t},\r\n\t\treadMorePlatform() {\r\n\t\t\tthis.platformMore = !this.platformMore\r\n\t\t\tif (this.platformMore) {\r\n\t\t\t\tthis.platformRowClass = 'row'\r\n\t\t\t\tthis.showEthic = false\r\n\t\t\t\tthis.showTech = false\r\n\t\t\t} else {\r\n\t\t\t\tthis.platformRowClass = 'col-lg-4 col-md-6 col-sm-6'\r\n\t\t\t\tthis.showEthic = true\r\n\t\t\t\tthis.showTech = true\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}\r\n</script>\r\n\r\n<style scoped>\r\n.single-iot-services::after {\r\n background: white !important;\r\n}\r\n.single-iot-services:hover h3, .single-iot-services:focus h3 {\r\n color: #0e314c !important;\r\n}\r\n\r\n.single-iot-services:hover p, .single-iot-services:focus p {\r\n color: #6084a4 !important;\r\n}\r\n\r\n.single-iot-services:hover .icon, .single-iot-services:focus .icon {\r\n border-color: rgb(0, 103, 71) !important;\r\n color: #ffffff !important;\r\n}\r\n\r\n.single-iot-services a:hover, .single-iot-services a:focus{\r\n\tbackground-color: rgb(0, 103, 71) !important;\r\n}\r\n</style>\r\n\r\n<style lang=\"scss\" scoped>\r\n@import '../../assets/style/custom.scss';\r\n</style>\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Pedagogy.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Pedagogy.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Pedagogy.vue?vue&type=template&id=26dbbd9e&scoped=true&\"\nimport script from \"./Pedagogy.vue?vue&type=script&lang=js&\"\nexport * from \"./Pedagogy.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Pedagogy.vue?vue&type=style&index=0&id=26dbbd9e&scoped=true&lang=css&\"\nimport style1 from \"./Pedagogy.vue?vue&type=style&index=1&id=26dbbd9e&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"26dbbd9e\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('section',{staticClass:\"iot-why-choose-us ptb-80 pb-0\",staticStyle:{\"padding-top\":\"160px\",\"background\":\"rgb(0, 103, 71)\",\"padding-bottom\":\"100px !important\"}},[_c('div',{staticClass:\"container\"},[_vm._m(0),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-lg-2 col-md-12\"}),_c('div',{staticClass:\"col-lg-4 col-md-12\"},[_c('div',{staticClass:\"single-iot-box\"},[_vm._m(1),_c('h3',[_vm._v(\"Student Manuals\")]),_c('p',[_vm._v(\"This document is designed to provide step-by-step guides for students who will use USF Writes.\")]),_c('a',{staticStyle:{\"width\":\"70px\",\"height\":\"70px\",\"line-height\":\"80px\"},attrs:{\"href\":_vm.studentManual,\"target\":\"_blank\"}},[_c('i',{staticClass:\"fas fa-file-download\",staticStyle:{\"font-size\":\"30px\"}})])])]),_c('div',{staticClass:\"col-lg-4 col-md-12\"},[_c('div',{staticClass:\"single-iot-box\"},[_vm._m(2),_c('h3',[_vm._v(\"Instructor Manuals\")]),_c('p',[_vm._v(\"This document is designed to provide step-by-step guides for instructors who will use USF Writes.\")]),_c('a',{staticStyle:{\"width\":\"70px\",\"height\":\"70px\",\"line-height\":\"80px\"},attrs:{\"href\":_vm.instructorManual,\"target\":\"_blank\"}},[_c('i',{staticClass:\"fas fa-file-download\",staticStyle:{\"font-size\":\"30px\"}})])])]),_c('div',{staticClass:\"col-lg-2 col-md-12\"})])])])}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"section-title\"},[_c('h2',[_vm._v(\"User Manuals\")]),_c('div',{staticClass:\"bar\"}),_c('p',{staticStyle:{\"max-width\":\"860px\",\"color\":\"white\"}},[_vm._v(\"The user manuals contains all essential information for the user to make full use of USF Writes. This manual includes a description of the system functions and capabilities, contingencies and alternate modes of operation, and step-by-step procedures for system access and use.\")])])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"icon\"},[_c('i',{staticClass:\"fas fa-user\",staticStyle:{\"margin-top\":\"30px\",\"color\":\"#0b7755\"}})])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"icon\"},[_c('i',{staticClass:\"fas fa-user-graduate\",staticStyle:{\"margin-top\":\"30px\",\"color\":\"#0b7755\"}})])}]\n\nexport { render, staticRenderFns }","<template>\r\n <!-- Start IoT Why Choose Us Area -->\r\n <section class=\"iot-why-choose-us ptb-80 pb-0\" style=\"padding-top: 160px; background: rgb(0, 103, 71); padding-bottom: 100px !important;\">\r\n <div class=\"container\">\r\n <div class=\"section-title\">\r\n <h2>User Manuals</h2>\r\n <div class=\"bar\" />\r\n <p style=\"max-width: 860px; color: white;\">The user manuals contains all essential information for the user to make full use of USF Writes. This manual includes a description of the system functions and capabilities, contingencies and alternate modes of operation, and step-by-step procedures for system access and use.</p>\r\n </div>\r\n\r\n <div class=\"row\">\r\n <div class=\"col-lg-2 col-md-12\" />\r\n <div class=\"col-lg-4 col-md-12\">\r\n <div class=\"single-iot-box\">\r\n <div class=\"icon\">\r\n <i class=\"fas fa-user\" style=\"margin-top: 30px; color: #0b7755;\" />\r\n </div>\r\n <h3>Student Manuals</h3>\r\n <p>This document is designed to provide step-by-step guides for students who will use USF Writes.</p>\r\n <a :href=\"studentManual\" target=\"_blank\" style=\"width: 70px; height: 70px; line-height: 80px;\"><i class=\"fas fa-file-download\" style=\"font-size: 30px;\" /></a>\r\n </div>\r\n </div>\r\n\r\n <div class=\"col-lg-4 col-md-12\">\r\n <div class=\"single-iot-box\">\r\n <div class=\"icon\">\r\n <i class=\"fas fa-user-graduate\" style=\"margin-top: 30px; color: #0b7755;\" />\r\n </div>\r\n <h3>Instructor Manuals</h3>\r\n <p>This document is designed to provide step-by-step guides for instructors who will use USF Writes.</p>\r\n <a :href=\"instructorManual\" target=\"_blank\" style=\"width: 70px; height: 70px; line-height: 80px;\"><i class=\"fas fa-file-download\" style=\"font-size: 30px;\" /></a>\r\n </div>\r\n </div>\r\n\r\n <div class=\"col-lg-2 col-md-12\" />\r\n\r\n </div>\r\n </div>\r\n </section>\r\n <!-- End IoT Why Choose Us Area -->\r\n</template>\r\n\r\n<script>\r\nexport default {\r\n name: 'Manuals',\r\n studentManual: process.env.VUE_APP_STUDENT_USER_MANUAL,\r\n instructorManual: process.env.VUE_APP_INSTRUCTOR_USER_MANUAL\r\n}\r\n</script>\r\n\r\n<style lang=\"scss\" scoped>\r\n@import '../../assets/style/custom.scss';\r\n</style>\r\n\r\n<style scoped>\r\n.single-iot-box:hover a, .single-iot-box:focus a {\r\n background-color: rgb(0, 103, 71) !important;\r\n color: #ffffff;\r\n}\r\n</style>\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Manuals.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Manuals.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Manuals.vue?vue&type=template&id=7978ee33&scoped=true&\"\nimport script from \"./Manuals.vue?vue&type=script&lang=js&\"\nexport * from \"./Manuals.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Manuals.vue?vue&type=style&index=0&id=7978ee33&lang=scss&scoped=true&\"\nimport style1 from \"./Manuals.vue?vue&type=style&index=1&id=7978ee33&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"7978ee33\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_vm._m(0),_c('section',{staticClass:\"faq-area ptb-80\"},[_c('div',{staticClass:\"container\"},[_c('div',{staticClass:\"faq-accordion\"},[_c('VueFaqAccordion',{attrs:{\"items\":_vm.myItems,\"active-color\":\"rgb(0, 103, 71)\",\"border-color\":\"rgb(0, 103, 71)\"}})],1),_c('section',{staticClass:\"contact-area ptb-80 pt-0\",staticStyle:{\"margin-top\":\"40px\",\"padding-bottom\":\"20px\"}},[_c('div',{staticClass:\"container\",staticStyle:{\"padding\":\"0px\"}},[_c('div',{staticClass:\"row h-100 justify-content-center align-items-center\"},[_c('div',{staticClass:\"col-md-12\"},[(_vm.contactInformation)?_c('el-form',{ref:\"contactForm\",staticStyle:{\"padding\":\"24px !important\",\"-webkit-box-shadow\":\"0 2px 48px 0 rgba(0, 0, 0, 0.08)\",\"box-shadow\":\"0 2px 48px 0 rgba(0, 0, 0, 0.08)\",\"background\":\"#ffffff\",\"border-radius\":\"10px\"},attrs:{\"rules\":_vm.rules,\"model\":_vm.contactInformation}},[_c('h3',{staticStyle:{\"margin-left\":\"30px\",\"margin-bottom\":\"30px\",\"margin-top\":\"20px\"}},[_vm._v(\"Ask Your Question\")]),_c('el-form-item',{staticStyle:{\"margin-top\":\"10px\"},attrs:{\"label\":\"Full Name\",\"prop\":\"Fullname\",\"required\":\"\",\"label-width\":_vm.formLabelWidth}},[_c('el-input',{staticStyle:{\"width\":\"90%\"},attrs:{\"autocomplete\":\"off\",\"placeholder\":\"Enter full name\"},model:{value:(_vm.contactInformation.Fullname),callback:function ($$v) {_vm.$set(_vm.contactInformation, \"Fullname\", $$v)},expression:\"contactInformation.Fullname\"}})],1),_c('el-form-item',{attrs:{\"label\":\"Email\",\"prop\":\"Email\",\"required\":\"\",\"label-width\":_vm.formLabelWidth}},[_c('el-input',{staticStyle:{\"width\":\"90%\"},attrs:{\"autocomplete\":\"off\",\"placeholder\":\"Enter email\"},model:{value:(_vm.contactInformation.Email),callback:function ($$v) {_vm.$set(_vm.contactInformation, \"Email\", $$v)},expression:\"contactInformation.Email\"}})],1),_c('el-form-item',{attrs:{\"label\":\"Reason\",\"prop\":\"SelectedReason\",\"required\":\"\",\"label-width\":_vm.formLabelWidth}},[_c('el-select',{staticStyle:{\"width\":\"90%\"},attrs:{\"id\":\"reasonInput\",\"filterable\":\"\",\"placeholder\":\"Select a Reason\"},model:{value:(_vm.contactInformation.SelectedReason),callback:function ($$v) {_vm.$set(_vm.contactInformation, \"SelectedReason\", $$v)},expression:\"contactInformation.SelectedReason\"}},_vm._l((_vm.reasons),function(item){return _c('el-option',{key:item.value,attrs:{\"label\":item.label,\"value\":item,\"selected\":item.label == 'Report a problem'}})}),1)],1),_c('el-form-item',{attrs:{\"label\":\"User Role\",\"prop\":\"SelectedUserType\",\"required\":\"\",\"label-width\":_vm.formLabelWidth}},[_c('el-select',{staticStyle:{\"width\":\"90%\"},attrs:{\"id\":\"userTypeInput\",\"filterable\":\"\",\"placeholder\":\"Select User Type\"},model:{value:(_vm.contactInformation.SelectedUserType),callback:function ($$v) {_vm.$set(_vm.contactInformation, \"SelectedUserType\", $$v)},expression:\"contactInformation.SelectedUserType\"}},_vm._l((_vm.userTypes),function(item){return _c('el-option',{key:item.value,attrs:{\"label\":item.label,\"value\":item,\"selected\":item.label == 'Student'}})}),1)],1),_c('el-form-item',{attrs:{\"label\":\"Course\",\"prop\":\"SelectedCourse\",\"required\":\"\",\"label-width\":_vm.formLabelWidth}},[_c('el-select',{staticStyle:{\"width\":\"90%\"},attrs:{\"id\":\"courseInput\",\"value-key\":\"ClassCode\",\"filterable\":\"\",\"placeholder\":\"Select a Course\"},model:{value:(_vm.contactInformation.SelectedCourse),callback:function ($$v) {_vm.$set(_vm.contactInformation, \"SelectedCourse\", $$v)},expression:\"contactInformation.SelectedCourse\"}},_vm._l((_vm.courses),function(item){return _c('el-option',{key:item.Id,attrs:{\"label\":item.ClassDescription,\"value\":item}})}),1)],1),_c('el-form-item',{attrs:{\"label\":\"Upload Files\",\"label-width\":_vm.formLabelWidth}},[_c('el-upload',{staticClass:\"upload-demo\",attrs:{\"action\":\"\",\"on-remove\":_vm.handleRemove,\"on-error\":_vm.uploadError,\"on-success\":_vm.uploadSuccess,\"on-change\":_vm.uploadChange,\"multiple\":\"\",\"limit\":6,\"auto-upload\":false}},[_c('el-button',{staticStyle:{\"border-radius\":\"3px\"},attrs:{\"type\":\"primary\",\"plain\":\"\"}},[_vm._v(\"\\n Click to upload\\n \")])],1)],1),_c('el-form-item',{attrs:{\"label\":\"Message\",\"prop\":\"Message\",\"required\":\"\",\"label-width\":_vm.formLabelWidth}},[_c('el-input',{staticStyle:{\"width\":\"90%\"},attrs:{\"id\":\"messageInput\",\"type\":\"textarea\",\"autosize\":{ minRows: 4, maxRows: 4},\"autocomplete\":\"off\"},model:{value:(_vm.contactInformation.Message),callback:function ($$v) {_vm.$set(_vm.contactInformation, \"Message\", $$v)},expression:\"contactInformation.Message\"}})],1),_c('el-form-item',{staticStyle:{\"padding-left\":\"120px\",\"margin-bottom\":\"10px\"}},[_c('el-button',{directives:[{name:\"loading\",rawName:\"v-loading\",value:(_vm.loading),expression:\"loading\"}],staticStyle:{\"border-radius\":\"3px\",\"padding\":\"20px 28px\"},attrs:{\"type\":\"primary\"},on:{\"click\":_vm.onSubmitClick}},[_vm._v(\"\\n Submit Now\\n \")])],1)],1):_vm._e()],1)])])])])])])}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('section',{staticClass:\"iot-features-area ptb-80 bg-f7fafd solutions-area ptb-80\",staticStyle:{\"background\":\"rgb(0, 103, 71)\",\"padding-top\":\"140px\",\"padding-bottom\":\"40px\"}},[_c('div',{staticClass:\"container\"},[_c('div',{staticClass:\"section-title\",staticStyle:{\"margin-bottom\":\"0px\"}},[_c('h2',{staticStyle:{\"color\":\"white\"}},[_vm._v(\"Frequently Asked Questions\")]),_c('div',{staticClass:\"bar\"}),_c('p',{staticStyle:{\"max-width\":\"700px\",\"color\":\"white\"}},[_vm._v(\"You have questions, we have answers. If you can’t find what you’re looking for in our FAQ sections below, use our online submission form.\")])])])])}]\n\nexport { render, staticRenderFns }","<template>\r\n <div>\r\n <!-- Start Page Title -->\r\n <section class=\"iot-features-area ptb-80 bg-f7fafd solutions-area ptb-80\" style=\"background: rgb(0, 103, 71); padding-top: 140px; padding-bottom: 40px;\">\r\n <div class=\"container\">\r\n <div class=\"section-title\" style=\"margin-bottom: 0px;\">\r\n <h2 style=\"color: white;\">Frequently Asked Questions</h2>\r\n <div class=\"bar\" />\r\n <p style=\"max-width: 700px; color: white;\">You have questions, we have answers. If you can’t find what you’re looking for in our FAQ sections below, use our online submission form.</p>\r\n </div>\r\n\r\n </div>\r\n\r\n </section>\r\n <!-- End Page Title -->\r\n\r\n <!-- Start FAQ Area -->\r\n <section class=\"faq-area ptb-80\">\r\n <div class=\"container\">\r\n <div class=\"faq-accordion\">\r\n <VueFaqAccordion\r\n :items=\"myItems\"\r\n active-color=\"rgb(0, 103, 71)\"\r\n border-color=\"rgb(0, 103, 71)\"\r\n />\r\n </div>\r\n\r\n <section class=\"contact-area ptb-80 pt-0\" style=\"margin-top: 40px; padding-bottom: 20px;\">\r\n <div class=\"container\" style=\"padding: 0px;\">\r\n\r\n <div class=\"row h-100 justify-content-center align-items-center\">\r\n <div class=\"col-md-12\" style=\"\">\r\n\r\n <el-form\r\n v-if=\"contactInformation\"\r\n ref=\"contactForm\"\r\n :rules=\"rules\"\r\n :model=\"contactInformation\"\r\n style=\"padding: 24px !important; -webkit-box-shadow: 0 2px 48px 0 rgba(0, 0, 0, 0.08);\r\n\t\t\t\t box-shadow: 0 2px 48px 0 rgba(0, 0, 0, 0.08); background: #ffffff; border-radius: 10px;\"\r\n >\r\n <h3 style=\"margin-left: 30px; margin-bottom: 30px; margin-top: 20px;\">Ask Your Question</h3>\r\n <el-form-item label=\"Full Name\" prop=\"Fullname\" required :label-width=\"formLabelWidth\" style=\"margin-top: 10px;\">\r\n <el-input v-model=\"contactInformation.Fullname\" autocomplete=\"off\" placeholder=\"Enter full name\" style=\"width:90%;\" />\r\n </el-form-item>\r\n <el-form-item label=\"Email\" prop=\"Email\" required :label-width=\"formLabelWidth\">\r\n <el-input v-model=\"contactInformation.Email\" autocomplete=\"off\" placeholder=\"Enter email\" style=\"width:90%;\" />\r\n </el-form-item>\r\n <el-form-item label=\"Reason\" prop=\"SelectedReason\" required :label-width=\"formLabelWidth\">\r\n <el-select id=\"reasonInput\" v-model=\"contactInformation.SelectedReason\" filterable placeholder=\"Select a Reason\" style=\"width:90%;\">\r\n <el-option\r\n v-for=\"item in reasons\"\r\n :key=\"item.value\"\r\n :label=\"item.label\"\r\n :value=\"item\"\r\n :selected=\"item.label == 'Report a problem'\"\r\n />\r\n </el-select>\r\n </el-form-item>\r\n <el-form-item label=\"User Role\" prop=\"SelectedUserType\" required :label-width=\"formLabelWidth\">\r\n <el-select id=\"userTypeInput\" v-model=\"contactInformation.SelectedUserType\" filterable placeholder=\"Select User Type\" style=\"width:90%;\">\r\n <el-option\r\n v-for=\"item in userTypes\"\r\n :key=\"item.value\"\r\n :label=\"item.label\"\r\n :value=\"item\"\r\n :selected=\"item.label == 'Student'\"\r\n />\r\n </el-select>\r\n </el-form-item>\r\n <el-form-item label=\"Course\" prop=\"SelectedCourse\" required :label-width=\"formLabelWidth\">\r\n <el-select id=\"courseInput\" v-model=\"contactInformation.SelectedCourse\" value-key=\"ClassCode\" filterable placeholder=\"Select a Course\" style=\"width:90%;\">\r\n <el-option v-for=\"item in courses\" :key=\"item.Id\" :label=\"item.ClassDescription\" :value=\"item\" />\r\n </el-select>\r\n </el-form-item>\r\n\r\n <el-form-item label=\"Upload Files\" :label-width=\"formLabelWidth\">\r\n <el-upload\r\n class=\"upload-demo\"\r\n action=\"\"\r\n\r\n :on-remove=\"handleRemove\"\r\n :on-error=\"uploadError\"\r\n :on-success=\"uploadSuccess\"\r\n :on-change=\"uploadChange\"\r\n multiple\r\n :limit=\"6\"\r\n\r\n :auto-upload=\"false\"\r\n >\r\n <el-button type=\"primary\" plain style=\"border-radius: 3px;\">\r\n Click to upload\r\n </el-button>\r\n <!-- <div slot=\"tip\" class=\"el-upload__tip\">\r\n\t\t\t\t\t\t\tjpg/png files with a size less than 500kb\r\n\t\t\t\t\t\t</div> -->\r\n </el-upload>\r\n </el-form-item>\r\n\r\n <el-form-item label=\"Message\" prop=\"Message\" required :label-width=\"formLabelWidth\">\r\n <el-input id=\"messageInput\" v-model=\"contactInformation.Message\" type=\"textarea\" :autosize=\"{ minRows: 4, maxRows: 4}\" autocomplete=\"off\" style=\"width:90%;\" />\r\n </el-form-item>\r\n\r\n <el-form-item style=\"padding-left: 120px; margin-bottom: 10px;\">\r\n <el-button v-loading=\"loading\" type=\"primary\" style=\"border-radius: 3px; padding: 20px 28px;\" @click=\"onSubmitClick\">\r\n Submit Now\r\n </el-button>\r\n </el-form-item>\r\n </el-form>\r\n </div>\r\n\r\n </div>\r\n </div>\r\n </section>\r\n </div>\r\n </section>\r\n <!-- End FAQ Area -->\r\n </div>\r\n</template>\r\n\r\n<script>\r\nimport * as courseService from '@/services/course.service'\r\nimport * as termService from '@/services/term.service'\r\nimport http from '@/utils/axios'\r\nimport { Notification } from 'element-ui'\r\nimport VueFaqAccordion from 'vue-faq-accordion'\r\nexport default {\r\n\tname: 'FAQ',\r\n\tcomponents: {\r\n\t\tVueFaqAccordion\r\n\t},\r\n\tdata() {\r\n\t\treturn {\r\n\t\t\tmyItems: [\r\n\t\t\t\t{\r\n\t\t\t\t\ttitle: 'What is USF Writes?',\r\n\t\t\t\t\tvalue: '<p>USF Writes is a digital, instructional tool that:</p> <ul> <li>Reports data on individual, course, and program performance for real-time teaching and responsive curricular adjustments </li> <li>Provides key information about at-risk students for undergraduate studies to assist with retention and student success </li> <li>Houses key instructional materials for First-Year Composition (FYC) and Professional and Technical Communication (PTC) courses </li> </ul> <p>Functions enabled through USF Writes provide data-driven support for writing instruction by providing quality formative feedback these key stakeholders: </p> <ul> <li>For students, the data aggregated in USF Writes focuses their writing process on the achievement of learning objectives. </li> <li>For instructors, the data aggregated in USF Writes tracks student progress to respond on a just-in-time basis to student needs. </li> <li>For administrators, the data aggregated in USF Writes captures historical and real-time trends, and enables long-term curricular, pedagogical, and administrative planning. </li> </ul> <p>See more <a title=\"USF Writes Benefits\" href=\"/benefits\">benefits </a>and to learn about <a title=\"USF Writes Research\" href=\"/research\">research </a>being done. </p>',\r\n\t\t\t\t\tcategory: 'General'\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\ttitle: 'What role does technology play in USF Writing Programs?',\r\n\t\t\t\t\tvalue: 'Technology enhances the delivery of instruction and houses instructional materials in both FYC and PTC. Technological platforms like USF Writes allow USF’s writing programs to be more responsive to student needs. Additionally, technological modalities such as USF Writes facilitate coherence and consistency within writing programs, while also enabling real-time tracking of trends for teaching, planning, and assessment purposes. You can read more about the theoretical underpinnings of our approach to technology and its integration to facilitate student learning and enhance pedagogical approaches.',\r\n\t\t\t\t\tcategory: 'General'\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\ttitle: 'How does USF Writes help with student learning?',\r\n\t\t\t\t\tvalue: 'USF Writes creates a learning community that allows students to connect with other students for peer review, and engage with formative feedback collectively as a class. USF Writes provides focused formative feedback that directly addresses assignment outcomes. This feedback also empowers students to engage in guided self-review that enables a productive revision process. From initial draft to final deliverable, USF Writes facilitates student success by correlating student writing with the achievement of assignment goals.',\r\n\t\t\t\t\tcategory: 'General'\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\ttitle: 'Why can’t we use other technologies out there?',\r\n\t\t\t\t\tvalue: 'Our FYC and PTC writing programs teach almost 10,000 students a year. This type of scale means that administrators and faculty need an efficient way to access relevant data that shows whether pedagogical approaches to assignments are working in the classroom. There is no digital platform presently available that allows USF writing program administrators to tailor the technology to our unique pedagogical values and diverse student population. USF Writes provides both real-time and historical information on the impacts of instructor practices, while simultaneously providing a platform on which students can interact with their own and each other’s writing. We use USF Writes in conjunction with other technologies—most notably Canvas—but, at present, only USF Writes offers access to the type of information that enables real-time adjustments to pedagogical practices for instructors and writing practices for students.',\r\n\t\t\t\t\tcategory: 'General'\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\ttitle: 'What exactly are students paying for?',\r\n\t\t\t\t\tvalue: 'Students are paying for an educational platform and course materials. Through USF Writes, students are able to engage more productively with their own writing and the writing of their peers, leading to successful achievement of learning outcomes. Moreover, USF Writes provides key information about at-risk students for undergraduate studies to assist with retention and student success, as well as providing insights into just-in-time views of student learning so that instructors can clarify areas where students may be struggling. Additionally, USF Writes houses instructional materials for FYC and PTC courses.',\r\n\t\t\t\t\tcategory: 'General'\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\ttitle: 'Is USF Writes totally automated?',\r\n\t\t\t\t\tvalue: 'No. The application is a tool that is used to assist faculty in teaching and students in learning. At every stage of the process, all data is seen and interpreted by an instructor or administrator who is working to improve student learning experiences or to improve pedagogical approaches. Any and all information from USF Writes functions as only one aspect of the writing program’s interpretative framework. The program director and program faculty always play a key role in the analysis of USF Writes data and its application in the classroom.',\r\n\t\t\t\t\tcategory: 'General'\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\ttitle: 'Who owns and manages USF Writes?',\r\n\t\t\t\t\tvalue: 'The Department of English and the University of South Florida own USF Writes. The application is managed by an administrative committee in the Department of English. The administrative committee is collaborative, using an open management approach that includes representatives from all stakeholder groups.',\r\n\t\t\t\t\tcategory: 'General'\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\ttitle: 'What happens to the data that is collected from USF Writes?',\r\n\t\t\t\t\tvalue: '<p>Data is used in two specific ways: continual assessment processes, and programmatic and pedagogical improvement. However, regardless of use, students are never identified. Specifically, student work and instructor comments will never be associated by name with either individual students or individual instructors. Further, students and instructors have the option to opt in or out of the research project. Only data from students and instructors who select “opt-in†will be used for research, and that data will be used only anonymously or in aggregate, ensuring that no individual student or instructor can ever be identified. </p><p>Learn more about <a title=\"USF Writes Research\" href=\"/research\">data collection and the research</a> being conducted. </p>',\r\n\t\t\t\t\tcategory: 'General'\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\ttitle: 'Why do I have to pay for this and how is the cost established?',\r\n\t\t\t\t\tvalue: '<p>USF Writes is a digital, instructional tool educational that houses instructional materials and assists you in improving your writing. Much like a lab manual or multiple texts in other courses, USF Writes is an educational supplement. </p><p>The cost was decided by a committee within the Department of English. Decisions about cost took three things into consideration: (1) ensuring materials were affordable to students; (2) understanding the system was designed and will be maintained by a specialized team of computer scientists and pedagogical specialists; (3) knowing the tool is fluid and that it will need to be maintained and further developed, which are real costs of time and labor. </p>',\r\n\t\t\t\t\tcategory: 'Student'\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\ttitle: 'Where do I submit assignments?',\r\n\t\t\t\t\tvalue: '<p>Refer to the <a title=\"USF Writes User Manuals\" href=\"/manuals\">user manuals </a>for specific questions about how to use the tool.</p><p>But, in general, you start by signing in at usf.writes.edu. Then you look for your assignment and select the icon that allows you to upload to that assignment. </p>',\r\n\t\t\t\t\tcategory: 'Student'\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\ttitle: 'Do I have to upload my work to USF Writes and Canvas separately?',\r\n\t\t\t\t\tvalue: 'Your instructor will make clear what work needs to be uploaded to USF Writes and what will be uploaded to Canvas. But, yes, you will be uploading to both platforms because they are designed with different purposes. USF Writes is a digital, instructional tool for teaching and assessing writing. Canvas is a course management system for all types of instruction.',\r\n\t\t\t\t\tcategory: 'Student'\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\ttitle: 'Why are we not using Canvas for peer review? Why do I need to use Canvas and USF Writes?',\r\n\t\t\t\t\tvalue: '<p>While Canvas does have some functionality for peer review, it does not have the robust features incorporated into USF Writes that enable more productive exchanges with your peers. </p><p>Additionally, one of the most helpful features of USF Writes is that it allows your instructor to see the work of your class as a whole at a glance. Instructors use this view to address areas that you and your classmates may be having trouble with in real time. This perspective on the work of an entire class is not possible in Canvas, and it yields immediate benefits for you and the class as a whole. </p>',\r\n\t\t\t\t\tcategory: 'Student'\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\ttitle: 'What does USF Writes do? Is its purpose to make me a better writer? ',\r\n\t\t\t\t\tvalue: 'Yes, USF writes is designed to assist you in becoming a better writer. It does this through facilitating peer interaction and focusing on targeted outcomes so that you can better identify how to improve your writing and meet the goals of the assignment.',\r\n\t\t\t\t\tcategory: 'Student'\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\ttitle: 'Is my writing kept private? What information of mine will be kept anonymous and what will be shared?',\r\n\t\t\t\t\tvalue: '<p>Your writing will be shared with other students in your class as part of the peer review and writing process that develops your writing skills. <p>Should you agree to opt in and allow researchers to use your writing for research purposes, your writing will be anonymized and shared among researchers. No writing shared with researchers will be connected to your identity in any way. Learn more about <a title=\"USF Writes Research\" href=\"/research\">the research</a> using USF Writes. </p></p>',\r\n\t\t\t\t\tcategory: 'Student'\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\ttitle: 'Who do I contact if I have a problem doing something my instructor has asked?',\r\n\t\t\t\t\tvalue: '<p>Submit <a title=\"USF Writes support\" href=\"https://usfwrites.usf.edu/contact/support\">a support ticket</a> via direct link: <a href=\"https://usfwrites.usf.edu/contact/support\" target=\"_blank\">https://usfwrites.usf.edu/contact/support</a> or look for the “Contact Support†link throughout the system. </p><p>Refer to the <a title=\"USF Writes User Manuals\" href=\"/manuals\">documentation </a>if you need to better understand how to do a task. </p><p>If your question is about the course, an assignment, or other content, contact your instructor directly. </p>',\r\n\t\t\t\t\tcategory: 'Student'\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\ttitle: 'How does USF Writes help me teach my course?',\r\n\t\t\t\t\tvalue: '<p>USF Writes was designed as a pedagogical tool. In designing USF Writes, the primary driving principle focused on how the tool works within a curriculum to help students achieve the learning objectives. </p><p>USF Writes does four important things to help you teach your course:</p><ul> <li>Enables directed self and peer review that has been shown to lead to improvements in student writing </li> <li>Establishes a clear connection between assignments’ student learning objectives and student writing products to highlight areas on which students should focus to improve their writing </li> <li>Provides just-in-time teaching insights across and between sections that enable you to immediately address areas in which students may be struggling </li> <li>Fosters a learning community approach to teaching writing</li> </ul>',\r\n\t\t\t\t\tcategory: 'Instructor'\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\ttitle: 'Is USF Writes designed to help me teach, help me assess my students, help collect data for administrative purposes, or to help gather data for research purposes?',\r\n\t\t\t\t\tvalue: '<p>It’s designed for all these purposes. To address each part of this question:</p><p><strong>Teaching purpose:</strong> See answer immediately above. </p><p><strong>Assessment:</strong> USF Writes has a primary purpose of a formative feedback tool. It is designed to be used at the formative stage to provide students with directed feedback that they can use in the revision process. </p><p><strong>Administrative purposes:</strong> One of the benefits of USF Writes is that it provides data at the programmatic level. The writing programs at USF teach a large number of students. Programs at this scale need tools to provide program-level data, and USF Writes does that. This program level data has two purposes: to guide administrators in updating curricula and to identify areas in which additional professional development may be needed; to provide data for use in institutional assessment requirements. </p><p><strong>Research:</strong> When instructors and/or students opt in, they are agreeing to let their data be stored for research purposes. Only those instructors and students who opt in will have their data used. All data used in research will be used anonymously so there will be no way to tie an individual draft back to a particular student. The research questions that are currently being developed (and have been developed in the past) were designed to improve pedagogical practices and to gain insights into features of student writing. The questions driving the initial data from USF Writes also is centered on ways to teach writing better and to improve the transfer of writing skills. Learn more about <a title=\"USF Writes Research\" href=\"/reseach\">the research</a> using USF Writes. </p>',\r\n\t\t\t\t\tcategory: 'Instructor'\r\n\t\t\t\t},\r\n \t{\r\n\t\t\t\t\ttitle: 'Will my grades in USF Writes automatically sync to Canvas?',\r\n\t\t\t\t\tvalue: 'USF Writes is not a grading tool. Unlike previous tools used at USF, grading of student work is not completed in USF Writes. Grades will be entered into Canvas only.',\r\n\t\t\t\t\tcategory: 'Instructor'\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\ttitle: 'Why should I opt in for research purposes?',\r\n\t\t\t\t\tvalue: '<p>When you opt in for research purposes, you are giving consent for your comments and rubrics to be included anonymously into the larger data set. You are not making decisions for the use of student data. Students opt in/out independently. </p><p>Instructor data comprises an important data set that can be used comparatively to understand teaching practices, or it can be used complementary to student data to gain insights into how well students are learning. </p><p>Importantly, your consent is only for your data. If you do consent, the data will be anonymous and used primarily in the aggregate form. In no way can your data be connected back to you individually. </p><p>Learn more about <a title=\"USF Writes Research\" href=\"/research\">the research</a> using USF Writes. </p>',\r\n\t\t\t\t\tcategory: 'Instructor'\r\n\t\t\t\t},\r\n \t{\r\n\t\t\t\t\ttitle: 'What has to be done in Canvas (e.g. final grades) and what has to be done in the tool (e.g. adopting the textbook)?',\r\n\t\t\t\t\tvalue: '<p>USF Writes is part of a learning technology network that includes not only Canvas but other tools and technologies as well. The purpose and use of each tool will be made clear within the FYC and PTC programs. </p><p>Currently, the FYC and PTC programs use USF Writes differently and both programs are consistently seeking feedback on ways to improve the pedagogical application of all the tools we use. </p><p>Since each program is updated and improved on an ongoing basis, the role of USF Writes will vary and is likely to change over time. </p>',\r\n\t\t\t\t\tcategory: 'Instructor'\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\ttitle: 'Where do the rubrics in USF Writes come from?',\r\n\t\t\t\t\tvalue: 'Rubrics were developed by the FYC and PTC program directors and colleagues. All rubrics are specific to individual student tasks in USF Writes. These task-specific rubrics were designed to align with the student learning outcomes of corresponding assignments in the FYC and PTC curriculum. In this way, the task-specific rubrics connect work done in USF Writes to program curricula, and enable students to focus on assignment outcomes as they improve their writing.',\r\n\t\t\t\t\tcategory: 'Instructor'\r\n\t\t\t\t},\r\n \t{\r\n\t\t\t\t\ttitle: 'How do I insert any number of specific tasks that are done in the tool?',\r\n\t\t\t\t\tvalue: '<p>First, review <a title=\"USF Writes User Manuals\" href=\"/manuals\">the user manuals</a> to see if your immediate question or concern is answered. </p><p>If not, then contact the support person in your program: </p><ul> <li>FYC: <a title=\"E-mail Adam Phillips\" href=\"mailto:adamphillips@mail.usf.edu\">Adam Phillips</a></li> <li>PTC: <a title=\"E-mail Tanya Zarlengo\" href=\"mailto:tzarlengo@usf.edu\">Tanya Zarlengo</a></li> </ul>',\r\n\t\t\t\t\tcategory: 'Instructor'\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\ttitle: 'Who do I contact if I have trouble with the tool?',\r\n\t\t\t\t\tvalue: '<p>First, submit a <a title=\"USF Writes Support Ticket\" href=\"https://usfwrites.usf.edu/\" target=\"_blank\">support ticket</a>. </p><p>If you feel the problem or issue warrants more than a support ticket, contact the support person in your program: </p><ul> <li>FYC: <a title=\"E-mail Adam Phillips\" href=\"mailto:adamphillips@mail.usf.edu\">Adam Phillips</a></li> <li>PTC: <a title=\"E-mail Tanya Zarlengo\" href=\"mailto:tzarlengo@usf.edu\">Tanya Zarlengo</a></li> </ul><p>If you feel it is something that needs to be escalated or for more general questions about using the tool, you can contact the program director, <a title=\"E-mail Lauren Arrington\" href=\"mailto:laurenarrington@usf.edu\" target=\"_blank\">Lauren Arrington</a>. </p>',\r\n\t\t\t\t\tcategory: 'Instructor'\r\n\t\t\t\t}\r\n\t\t\t],\r\n\t\t\tloading: false,\r\n\t\t\ttermCode: null,\r\n\t\t\torgCode: null,\r\n\t\t\tformLabelWidth: '120px',\r\n\t\t\tcontactInformation: null,\r\n\t\t\tuserTypes: [{\r\n\t\t\t\tvalue: 'Instructor',\r\n\t\t\t\tlabel: 'Instructor'\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\tvalue: 'Student',\r\n\t\t\t\tlabel: 'Student'\r\n\t\t\t}\r\n\t\t\t],\r\n\r\n\t\t\treasons: [{\r\n\t\t\t\tvalue: 'Report a problem',\r\n\t\t\t\tlabel: 'Report a problem'\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\tvalue: 'Submit Feedback',\r\n\t\t\t\tlabel: 'Submit Feedback'\r\n\t\t\t}\r\n\t\t\t],\r\n\t\t\tcourses: [],\r\n\r\n\t\t\tattachedFile: '',\r\n\r\n\t\t\trules: {\r\n\t\t\t\tFullname: [\r\n\t\t\t\t\t{ required: true, message: 'Please input full name', trigger: 'blur' }\r\n\t\t\t\t],\r\n\t\t\t\tEmail: [\r\n\t\t\t\t\t{ required: true, message: 'Please input email', trigger: 'blur' }\r\n\t\t\t\t],\r\n\t\t\t\tSelectedReason: [\r\n\t\t\t\t\t{ required: true, message: 'Please select a reason', trigger: 'change' }\r\n\t\t\t\t],\r\n\t\t\t\tSelectedUserType: [\r\n\t\t\t\t\t{ required: true, message: 'Please select a role', trigger: 'change' }\r\n\t\t\t\t],\r\n\t\t\t\tSelectedCourse: [\r\n\t\t\t\t\t{ required: true, message: 'Please select a course', trigger: 'change' }\r\n\t\t\t\t],\r\n\t\t\t\tMessage: [\r\n\t\t\t\t\t{ required: true, message: 'Please input message', trigger: 'change' }\r\n\t\t\t\t]\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\tasync created() {\r\n\t\tlet fullName = ''\r\n\t\tlet email = ''\r\n\t\tlet role = ''\r\n\t\t// Check view as\r\n\t\tif (this.$store.state.auth.user) {\r\n\t\t\tif (this.$store.state.viewAs.isViewingAs) {\r\n\t\t\t\tif (this.$store.state.viewAs.adminUser) {\r\n\t\t\t\t\tfullName = this.$store.state.viewAs.adminUser.LastName + ', ' + this.$store.state.viewAs.adminUser.FirstName\r\n\t\t\t\t\temail = this.$store.state.viewAs.adminUser.Email\r\n\t\t\t\t\trole = 'Instructor'\r\n\t\t\t\t} else if (this.$store.state.viewAs.instructorUser) {\r\n\t\t\t\t\tfullName = this.$store.state.viewAs.instructorUser.LastName + ', ' + this.$store.state.viewAs.instructorUser.FirstName\r\n\t\t\t\t\temail = this.$store.state.viewAs.instructorUser.Email\r\n\t\t\t\t\trole = 'Instructor'\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tfullName = this.$store.state.auth.user.LastName + ', ' + this.$store.state.auth.user.FirstName\r\n\t\t\t\temail = this.$store.state.auth.user.Email\r\n\t\t\t}\r\n\t\t\trole = this.$store.state.enrollment.userRole\r\n\t\t\tthis.termCode = this.$store.state.enrollment.termCode\r\n\t\t\tthis.orgCode = this.$store.state.auth.user.OrgCode\r\n\t\t\tthis.courses = this.$store.state.enrollment.courses\r\n\t\t\tthis.contactInformation = {\r\n\t\t\t\tFullname: fullName,\r\n\t\t\t\tEmail: email,\r\n\t\t\t\tSelectedUserType: {\r\n\t\t\t\t\tvalue: role,\r\n\t\t\t\t\tlabel: role\r\n\t\t\t\t},\r\n\t\t\t\tSelectedCourse: this.$store.state.enrollment.currentCourse,\r\n\t\t\t\tInstructorName: '',\r\n\t\t\t\tMessage: '',\r\n\t\t\t\tAttachments: []\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tthis.orgCode = 'USF'\r\n\t\t\tthis.contactInformation = {\r\n\t\t\t\tFullname: fullName,\r\n\t\t\t\tEmail: email,\r\n\t\t\t\tSelectedUserType: null,\r\n\t\t\t\tSelectedCourse: null,\r\n\t\t\t\tInstructorName: '',\r\n\t\t\t\tMessage: '',\r\n\t\t\t\tAttachments: []\r\n\t\t\t}\r\n\t\t}\r\n\t\tif (!this.termCode) { await this.getCurrentTerm() }\r\n\t\tif (this.courses.length == 0) { await this.getCourses() }\r\n\t},\r\n\tmethods: {\r\n\t\t// @vuese\r\n\t\t// CLose the contact support dialog.\r\n\t\tcloseDialog() {\r\n\t\t\tthis.$emit('close')\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Get current term by organization code.\r\n\t\tasync getCurrentTerm() {\r\n\t\t\tconst thisTerm = await termService.getCurrentTerm(this.orgCode)\r\n\t\t\tif (thisTerm) {\r\n\t\t\t\tthis.termCode = thisTerm.TermCode\r\n\t\t\t}\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Get all courses in a term\r\n\t\tasync getCourses() {\r\n\t\t\tthis.courses = await courseService.getCourses(this.orgCode, this.termCode)\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Handles upload errors.\r\n\t\tuploadError(err, file, attachments) {\r\n\t\t\tconsole.log(err)\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Hadnle logics when an attachment is selected.\r\n\t\tuploadChange(file, attachments) {\r\n\t\t\tthis.contactInformation['Attachments'].push(file.raw)\r\n\t\t},\r\n\t\tuploadSuccess(response, file, attachments) {\r\n\t\t\tconsole.log(response)\r\n\t\t},\r\n\t\thandleRemove(file, attachments) {\r\n\t\t\tconsole.log(file)\r\n\t\t\tconsole.log(attachments)\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Hadnle logics when the submit button is clicked.\r\n\t\tasync onSubmitClick() {\r\n\t\t\tthis.$refs['contactForm'].validate(async(valid) => {\r\n\t\t\t\tif (valid) {\r\n\t\t\t\t\tconst instructors = await courseService.getInstructorsByClassCode(this.termCode, this.contactInformation['SelectedCourse']['ClassCode'], this.orgCode)\r\n\t\t\t\t\tif (instructors && instructors.length > 0) {\r\n\t\t\t\t\t\tthis.contactInformation['InstructorName'] = instructors[0]['LastName'] + ', ' + instructors[0]['FirstName']\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tthis.contactInformation['InstructorName'] = 'Unknown'\r\n\t\t\t\t\t}\r\n\t\t\t\t\tconst supportTicket = {}\r\n\t\t\t\t\tsupportTicket.fullName = this.contactInformation['Fullname']\r\n\t\t\t\t\tsupportTicket.reason = this.contactInformation['SelectedReason'].value\r\n\t\t\t\t\tsupportTicket.email = this.contactInformation['Email']\r\n\t\t\t\t\tsupportTicket.course = this.contactInformation['SelectedCourse']['ClassDescription']\r\n\t\t\t\t\tsupportTicket.instructor = this.contactInformation['InstructorName']\r\n\t\t\t\t\tsupportTicket.message = this.contactInformation['Message']\r\n\t\t\t\t\tsupportTicket.userRole = this.contactInformation['SelectedUserType'].value\r\n\t\t\t\t\tconst files = this.contactInformation['Attachments']\r\n\t\t\t\t\tconst data = new FormData()\r\n\t\t\t\t\tlet count = 0\r\n\t\t\t\t\tArray.prototype.forEach.call(files, function(file) {\r\n\t\t\t\t\t\tdata.append('file[' + count + ']', file)\r\n\t\t\t\t\t\tcount++\r\n\t\t\t\t\t})\r\n\t\t\t\t\tdata.append('supportTicket', JSON.stringify(supportTicket))\r\n\t\t\t\t\tconst that = this\r\n\t\t\t\t\thttp.post('/account/submitTicket/', data, {\r\n\t\t\t\t\t\theaders: { 'Content-Type': 'multipart/form-data' }\r\n\t\t\t\t\t})\r\n\t\t\t\t\t\t.then(function() {\r\n\t\t\t\t\t\t\tNotification.success({\r\n\t\t\t\t\t\t\t\tduration: 6000,\r\n\t\t\t\t\t\t\t\ttitle: 'Success',\r\n\t\t\t\t\t\t\t\tmessage: 'The support ticket was successfully submitted.'\r\n\t\t\t\t\t\t\t})\r\n\t\t\t\t\t\t\tthat.$refs['contactForm'].resetFields()\r\n\t\t\t\t\t\t})\r\n\t\t\t\t\t\t.catch(function(error) {\r\n\t\t\t\t\t\t\tconsole.log(error)\r\n\t\t\t\t\t\t\tNotification.error({\r\n\t\t\t\t\t\t\t\tduration: 6000,\r\n\t\t\t\t\t\t\t\ttitle: 'Error',\r\n\t\t\t\t\t\t\t\tmessage: 'The support ticket was not successfully submitted.'\r\n\t\t\t\t\t\t\t})\r\n\t\t\t\t\t\t\tthat.$refs['contactForm'].resetFields()\r\n\t\t\t\t\t\t})\r\n\t\t\t\t}\r\n\t\t\t})\r\n\t\t}\r\n\t}\r\n}\r\n</script>\r\n\r\n<style lang=\"scss\" scoped>\r\n@import '../../assets/style/custom.scss';\r\n</style>\r\n\r\n<style scoped>\r\n\r\n.btn-primary {\r\n -webkit-box-shadow: 0 13px 27px 0 rgba(68, 206, 111, 0.25);\r\n box-shadow: 0 13px 27px 0 rgba(0, 103, 71, 0.25);\r\n}\r\n\r\n.btn-primary:not(:disabled):not(.disabled).active, .btn-primary:not(:disabled):not(.disabled):active, .btn-primary .show > .btn-primary.dropdown-toggle{\r\n -webkit-box-shadow: 0 13px 27px 0 rgba(0, 103, 71, 0.25);\r\n box-shadow: 0 13px 27px 0 rgba(0, 103, 71, 0.25);\r\n}\r\n\r\n.btn-primary:hover{\r\n -webkit-box-shadow: 0 13px 27px 0 rgba(0, 103, 71, 0.25);\r\n box-shadow: 0 13px 27px 0 rgba(0, 103, 71, 0.25);\r\n}\r\n\r\n.btn::after, .btn::before {\r\n content: '';\r\n position: absolute;\r\n top: 0;\r\n height: 100%;\r\n width: 0;\r\n -webkit-transition: 0.5s;\r\n transition: 0.5s;\r\n background: rgb(0, 103, 71);\r\n z-index: -1;\r\n}\r\n\r\n.faq >>> .faq-wrapper {\r\n max-width: 100%;\r\n}\r\n\r\n.faq >>> .faq__nav-item_active{\r\n color: white;\r\n background: rgb(0, 103, 71);\r\n}\r\n\r\n.faq >>> .faq__nav-item_active:hover{\r\n color: white;\r\n background: rgb(0, 103, 71);\r\n}\r\n</style>\r\n\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FAQ.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FAQ.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./FAQ.vue?vue&type=template&id=56f6b73c&scoped=true&\"\nimport script from \"./FAQ.vue?vue&type=script&lang=js&\"\nexport * from \"./FAQ.vue?vue&type=script&lang=js&\"\nimport style0 from \"./FAQ.vue?vue&type=style&index=0&id=56f6b73c&lang=scss&scoped=true&\"\nimport style1 from \"./FAQ.vue?vue&type=style&index=1&id=56f6b73c&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"56f6b73c\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_vm._m(0),_c('section',{staticClass:\"contact-area ptb-80 pt-0\",staticStyle:{\"margin-top\":\"40px\"}},[_c('div',{staticClass:\"container\"},[_c('div',{staticClass:\"row h-100 justify-content-center align-items-center\"},[_c('div',{staticClass:\"col-lg-8 col-md-12\"},[(_vm.contactInformation)?_c('el-form',{ref:\"contactForm\",staticStyle:{\"padding\":\"24px !important\",\"-webkit-box-shadow\":\"0 2px 48px 0 rgba(0, 0, 0, 0.08)\",\"box-shadow\":\"0 2px 48px 0 rgba(0, 0, 0, 0.08)\",\"background\":\"#ffffff\"},attrs:{\"rules\":_vm.rules,\"model\":_vm.contactInformation}},[_c('el-form-item',{staticStyle:{\"margin-top\":\"10px\"},attrs:{\"label\":\"Full Name\",\"prop\":\"Fullname\",\"required\":\"\",\"label-width\":_vm.formLabelWidth}},[_c('el-input',{staticStyle:{\"width\":\"90%\"},attrs:{\"autocomplete\":\"off\",\"placeholder\":\"Enter full name\"},model:{value:(_vm.contactInformation.Fullname),callback:function ($$v) {_vm.$set(_vm.contactInformation, \"Fullname\", $$v)},expression:\"contactInformation.Fullname\"}})],1),_c('el-form-item',{attrs:{\"label\":\"Email\",\"prop\":\"Email\",\"required\":\"\",\"label-width\":_vm.formLabelWidth}},[_c('el-input',{staticStyle:{\"width\":\"90%\"},attrs:{\"autocomplete\":\"off\",\"placeholder\":\"Enter email\"},model:{value:(_vm.contactInformation.Email),callback:function ($$v) {_vm.$set(_vm.contactInformation, \"Email\", $$v)},expression:\"contactInformation.Email\"}})],1),_c('el-form-item',{attrs:{\"label\":\"Reason\",\"prop\":\"SelectedReason\",\"required\":\"\",\"label-width\":_vm.formLabelWidth}},[_c('el-select',{staticStyle:{\"width\":\"90%\"},attrs:{\"id\":\"reasonInput\",\"filterable\":\"\",\"placeholder\":\"Select a Reason\"},model:{value:(_vm.contactInformation.SelectedReason),callback:function ($$v) {_vm.$set(_vm.contactInformation, \"SelectedReason\", $$v)},expression:\"contactInformation.SelectedReason\"}},_vm._l((_vm.reasons),function(item){return _c('el-option',{key:item.value,attrs:{\"label\":item.label,\"value\":item,\"selected\":item.label == 'Report a problem'}})}),1)],1),_c('el-form-item',{attrs:{\"label\":\"User Role\",\"prop\":\"SelectedUserType\",\"required\":\"\",\"label-width\":_vm.formLabelWidth}},[_c('el-select',{staticStyle:{\"width\":\"90%\"},attrs:{\"id\":\"userTypeInput\",\"filterable\":\"\",\"placeholder\":\"Select User Type\"},model:{value:(_vm.contactInformation.SelectedUserType),callback:function ($$v) {_vm.$set(_vm.contactInformation, \"SelectedUserType\", $$v)},expression:\"contactInformation.SelectedUserType\"}},_vm._l((_vm.userTypes),function(item){return _c('el-option',{key:item.value,attrs:{\"label\":item.label,\"value\":item,\"selected\":item.label == 'Student'}})}),1)],1),_c('el-form-item',{attrs:{\"label\":\"Course\",\"prop\":\"SelectedCourse\",\"required\":\"\",\"label-width\":_vm.formLabelWidth}},[_c('el-select',{staticStyle:{\"width\":\"90%\"},attrs:{\"id\":\"courseInput\",\"value-key\":\"ClassCode\",\"filterable\":\"\",\"placeholder\":\"Select a Course\"},model:{value:(_vm.contactInformation.SelectedCourse),callback:function ($$v) {_vm.$set(_vm.contactInformation, \"SelectedCourse\", $$v)},expression:\"contactInformation.SelectedCourse\"}},_vm._l((_vm.courses),function(item){return _c('el-option',{key:item.Id,attrs:{\"label\":item.ClassDescription,\"value\":item}})}),1)],1),_c('el-form-item',{attrs:{\"label\":\"Upload Files\",\"label-width\":_vm.formLabelWidth}},[_c('el-upload',{staticClass:\"upload-demo\",attrs:{\"action\":\"\",\"on-remove\":_vm.handleRemove,\"on-error\":_vm.uploadError,\"on-success\":_vm.uploadSuccess,\"on-change\":_vm.uploadChange,\"multiple\":\"\",\"limit\":6,\"auto-upload\":false}},[_c('el-button',{staticStyle:{\"border-radius\":\"3px\"},attrs:{\"type\":\"primary\",\"plain\":\"\"}},[_vm._v(\"\\n Click to upload\\n \")])],1)],1),_c('el-form-item',{attrs:{\"label\":\"Message\",\"prop\":\"Message\",\"required\":\"\",\"label-width\":_vm.formLabelWidth}},[_c('el-input',{staticStyle:{\"width\":\"90%\"},attrs:{\"id\":\"messageInput\",\"type\":\"textarea\",\"autosize\":{ minRows: 4, maxRows: 4},\"autocomplete\":\"off\"},model:{value:(_vm.contactInformation.Message),callback:function ($$v) {_vm.$set(_vm.contactInformation, \"Message\", $$v)},expression:\"contactInformation.Message\"}})],1),_c('el-form-item',{staticStyle:{\"padding-left\":\"120px\",\"margin-bottom\":\"10px\"}},[_c('el-button',{directives:[{name:\"loading\",rawName:\"v-loading\",value:(_vm.loading),expression:\"loading\"}],staticStyle:{\"border-radius\":\"3px\",\"padding\":\"20px 28px\"},attrs:{\"type\":\"primary\"},on:{\"click\":_vm.onSubmitClick}},[_vm._v(\"\\n Submit Now\\n \")])],1)],1):_vm._e()],1),_c('div',{staticClass:\"col-lg-4 col-md-12\"},[_c('section',{staticClass:\"contact-info-area ptb-80\",staticStyle:{\"padding\":\"0px\"}},[_c('div',{staticClass:\"container\"},[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-md-12\",staticStyle:{\"margin-bottom\":\"20px\"}},[_c('div',{staticClass:\"contact-info-box\"},[_c('div',{staticClass:\"icon\"},[_c('feather',{attrs:{\"type\":\"mail\"}})],1),_c('h3',[_vm._v(\"Mail Here\")]),_vm._m(1)])]),_c('div',{staticClass:\"col-md-12\"},[_c('div',{staticClass:\"contact-info-box\",staticStyle:{\"margin-bottom\":\"20px\"}},[_c('div',{staticClass:\"icon\"},[_c('feather',{attrs:{\"type\":\"map-pin\"}})],1),_c('h3',[_vm._v(\"Visit Here\")]),_c('p',[_vm._v(\"309B Cooper Hall, 4202 E Fowler Ave, Tampa, FL 33620\")])])]),_c('div',{staticClass:\"col-md-12\"},[_c('div',{staticClass:\"contact-info-box\"},[_c('div',{staticClass:\"icon\"},[_c('feather',{attrs:{\"type\":\"phone\"}})],1),_c('h3',[_vm._v(\"Call Here\")]),_vm._m(2)])])])])])])])])])])}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('section',{staticClass:\"iot-features-area ptb-80 bg-f7fafd solutions-area ptb-80\",staticStyle:{\"background\":\"rgb(0, 103, 71)\",\"padding-top\":\"140px\",\"padding-bottom\":\"40px\"}},[_c('div',{staticClass:\"container\"},[_c('div',{staticClass:\"section-title\",staticStyle:{\"margin-bottom\":\"0px\"}},[_c('h2',{staticStyle:{\"color\":\"white\"}},[_vm._v(\"Get In Touch With Us\")]),_c('div',{staticClass:\"bar\"}),_c('p',{staticStyle:{\"color\":\"white\"}},[_vm._v(\"Anything On your Mind. We’ll Be Glad To Assist You!\")])])])])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('p',[_c('a',{attrs:{\"href\":\"#\"}},[_vm._v(\"support@usfwrites.usf.edu\")])])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('p',[_c('a',{attrs:{\"href\":\"#\"}},[_vm._v(\"(813) 974-2011\")])])}]\n\nexport { render, staticRenderFns }","<template>\r\n <div>\r\n <!-- Start Page Title -->\r\n <section class=\"iot-features-area ptb-80 bg-f7fafd solutions-area ptb-80\" style=\"background: rgb(0, 103, 71); padding-top: 140px; padding-bottom: 40px;\">\r\n <div class=\"container\">\r\n <div class=\"section-title\" style=\"margin-bottom: 0px;\">\r\n <h2 style=\"color: white;\">Get In Touch With Us</h2>\r\n <div class=\"bar\" />\r\n <p style=\"color: white;\">Anything On your Mind. We’ll Be Glad To Assist You!</p>\r\n </div>\r\n\r\n </div>\r\n </section>\r\n <section class=\"contact-area ptb-80 pt-0\" style=\"margin-top: 40px;\">\r\n <div class=\"container\">\r\n <div class=\"row h-100 justify-content-center align-items-center\">\r\n <div class=\"col-lg-8 col-md-12\">\r\n <el-form\r\n v-if=\"contactInformation\"\r\n ref=\"contactForm\"\r\n :rules=\"rules\"\r\n :model=\"contactInformation\"\r\n style=\"padding: 24px !important; -webkit-box-shadow: 0 2px 48px 0 rgba(0, 0, 0, 0.08); box-shadow: 0 2px 48px 0 rgba(0, 0, 0, 0.08); background: #ffffff;\"\r\n >\r\n <el-form-item label=\"Full Name\" prop=\"Fullname\" required :label-width=\"formLabelWidth\" style=\"margin-top: 10px;\">\r\n <el-input v-model=\"contactInformation.Fullname\" autocomplete=\"off\" placeholder=\"Enter full name\" style=\"width:90%;\" />\r\n </el-form-item>\r\n <el-form-item label=\"Email\" prop=\"Email\" required :label-width=\"formLabelWidth\">\r\n <el-input v-model=\"contactInformation.Email\" autocomplete=\"off\" placeholder=\"Enter email\" style=\"width:90%;\" />\r\n </el-form-item>\r\n <el-form-item label=\"Reason\" prop=\"SelectedReason\" required :label-width=\"formLabelWidth\">\r\n <el-select id=\"reasonInput\" v-model=\"contactInformation.SelectedReason\" filterable placeholder=\"Select a Reason\" style=\"width:90%;\">\r\n <el-option\r\n v-for=\"item in reasons\"\r\n :key=\"item.value\"\r\n :label=\"item.label\"\r\n :value=\"item\"\r\n :selected=\"item.label == 'Report a problem'\"\r\n />\r\n </el-select>\r\n </el-form-item>\r\n <el-form-item label=\"User Role\" prop=\"SelectedUserType\" required :label-width=\"formLabelWidth\">\r\n <el-select id=\"userTypeInput\" v-model=\"contactInformation.SelectedUserType\" filterable placeholder=\"Select User Type\" style=\"width:90%;\">\r\n <el-option\r\n v-for=\"item in userTypes\"\r\n :key=\"item.value\"\r\n :label=\"item.label\"\r\n :value=\"item\"\r\n :selected=\"item.label == 'Student'\"\r\n />\r\n </el-select>\r\n </el-form-item>\r\n <el-form-item label=\"Course\" prop=\"SelectedCourse\" required :label-width=\"formLabelWidth\">\r\n <el-select id=\"courseInput\" v-model=\"contactInformation.SelectedCourse\" value-key=\"ClassCode\" filterable placeholder=\"Select a Course\" style=\"width:90%;\">\r\n <el-option v-for=\"item in courses\" :key=\"item.Id\" :label=\"item.ClassDescription\" :value=\"item\" />\r\n </el-select>\r\n </el-form-item>\r\n\r\n <el-form-item label=\"Upload Files\" :label-width=\"formLabelWidth\">\r\n <el-upload\r\n class=\"upload-demo\"\r\n action=\"\"\r\n\r\n :on-remove=\"handleRemove\"\r\n :on-error=\"uploadError\"\r\n :on-success=\"uploadSuccess\"\r\n :on-change=\"uploadChange\"\r\n multiple\r\n :limit=\"6\"\r\n\r\n :auto-upload=\"false\"\r\n >\r\n <el-button type=\"primary\" plain style=\"border-radius: 3px;\">\r\n Click to upload\r\n </el-button>\r\n <!-- <div slot=\"tip\" class=\"el-upload__tip\">\r\n\t\t\t\t\t\t\tjpg/png files with a size less than 500kb\r\n\t\t\t\t\t\t</div> -->\r\n </el-upload>\r\n </el-form-item>\r\n\r\n <el-form-item label=\"Message\" prop=\"Message\" required :label-width=\"formLabelWidth\">\r\n <el-input id=\"messageInput\" v-model=\"contactInformation.Message\" type=\"textarea\" :autosize=\"{ minRows: 4, maxRows: 4}\" autocomplete=\"off\" style=\"width:90%;\" />\r\n </el-form-item>\r\n\r\n <el-form-item style=\"padding-left: 120px; margin-bottom: 10px;\">\r\n <el-button v-loading=\"loading\" type=\"primary\" style=\"border-radius: 3px; padding: 20px 28px;\" @click=\"onSubmitClick\">\r\n Submit Now\r\n </el-button>\r\n </el-form-item>\r\n </el-form>\r\n </div>\r\n\r\n <div class=\"col-lg-4 col-md-12\">\r\n <section class=\"contact-info-area ptb-80\" style=\"padding: 0px;\">\r\n <div class=\"container\">\r\n <div class=\"row\">\r\n <div class=\"col-md-12\" style=\"margin-bottom: 20px;\">\r\n <div class=\"contact-info-box\">\r\n <div class=\"icon\">\r\n <feather type=\"mail\" />\r\n </div>\r\n <h3>Mail Here</h3>\r\n <p><a href=\"#\">support@usfwrites.usf.edu</a></p>\r\n </div>\r\n </div>\r\n\r\n <div class=\"col-md-12\">\r\n <div class=\"contact-info-box\" style=\"margin-bottom: 20px;\">\r\n <div class=\"icon\">\r\n <feather type=\"map-pin\" />\r\n </div>\r\n <h3>Visit Here</h3>\r\n <p>309B Cooper Hall, 4202 E Fowler Ave, Tampa, FL 33620</p>\r\n </div>\r\n </div>\r\n\r\n <div class=\"col-md-12\">\r\n <div class=\"contact-info-box\">\r\n <div class=\"icon\">\r\n <feather type=\"phone\" />\r\n </div>\r\n <h3>Call Here</h3>\r\n <p><a href=\"#\">(813) 974-2011</a></p>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </section>\r\n </div>\r\n\r\n </div>\r\n </div>\r\n </section>\r\n <!-- End Contact Area -->\r\n </div>\r\n</template>\r\n\r\n<script>\r\nimport * as courseService from '@/services/course.service'\r\nimport * as termService from '@/services/term.service'\r\nimport http from '@/utils/axios'\r\nimport { Notification } from 'element-ui'\r\n\r\nexport default {\r\n\tname: 'ContactUs',\r\n\tdata() {\r\n\t\treturn {\r\n\t\t\tloading: false,\r\n\t\t\ttermCode: null,\r\n\t\t\torgCode: null,\r\n\t\t\tformLabelWidth: '120px',\r\n\t\t\tcontactInformation: null,\r\n\t\t\tuserTypes: [{\r\n\t\t\t\tvalue: 'Instructor',\r\n\t\t\t\tlabel: 'Instructor'\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\tvalue: 'Student',\r\n\t\t\t\tlabel: 'Student'\r\n\t\t\t}\r\n\t\t\t],\r\n\r\n\t\t\treasons: [{\r\n\t\t\t\tvalue: 'Report a problem',\r\n\t\t\t\tlabel: 'Report a problem'\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\tvalue: 'Submit Feedback',\r\n\t\t\t\tlabel: 'Submit Feedback'\r\n\t\t\t}\r\n\t\t\t],\r\n\t\t\tcourses: [],\r\n\r\n\t\t\tattachedFile: '',\r\n\r\n\t\t\trules: {\r\n\t\t\t\tFullname: [\r\n\t\t\t\t\t{ required: true, message: 'Please input full name', trigger: 'blur' }\r\n\t\t\t\t],\r\n\t\t\t\tEmail: [\r\n\t\t\t\t\t{ required: true, message: 'Please input email', trigger: 'blur' }\r\n\t\t\t\t],\r\n\t\t\t\tSelectedReason: [\r\n\t\t\t\t\t{ required: true, message: 'Please select a reason', trigger: 'change' }\r\n\t\t\t\t],\r\n\t\t\t\tSelectedUserType: [\r\n\t\t\t\t\t{ required: true, message: 'Please select a role', trigger: 'change' }\r\n\t\t\t\t],\r\n\t\t\t\tSelectedCourse: [\r\n\t\t\t\t\t{ required: true, message: 'Please select a course', trigger: 'change' }\r\n\t\t\t\t],\r\n\t\t\t\tMessage: [\r\n\t\t\t\t\t{ required: true, message: 'Please input message', trigger: 'change' }\r\n\t\t\t\t]\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\tasync created() {\r\n\t\tlet fullName = ''\r\n\t\tlet email = ''\r\n\t\tlet role = ''\r\n\t\t// Check view as\r\n\t\tif (this.$store.state.auth.user) {\r\n\t\t\tif (this.$store.state.viewAs.isViewingAs) {\r\n\t\t\t\tif (this.$store.state.viewAs.adminUser) {\r\n\t\t\t\t\tfullName = this.$store.state.viewAs.adminUser.LastName + ', ' + this.$store.state.viewAs.adminUser.FirstName\r\n\t\t\t\t\temail = this.$store.state.viewAs.adminUser.Email\r\n\t\t\t\t\trole = 'Instructor'\r\n\t\t\t\t} else if (this.$store.state.viewAs.instructorUser) {\r\n\t\t\t\t\tfullName = this.$store.state.viewAs.instructorUser.LastName + ', ' + this.$store.state.viewAs.instructorUser.FirstName\r\n\t\t\t\t\temail = this.$store.state.viewAs.instructorUser.Email\r\n\t\t\t\t\trole = 'Instructor'\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tfullName = this.$store.state.auth.user.LastName + ', ' + this.$store.state.auth.user.FirstName\r\n\t\t\t\temail = this.$store.state.auth.user.Email\r\n\t\t\t}\r\n\t\t\trole = this.$store.state.enrollment.userRole\r\n\t\t\tthis.termCode = this.$store.state.enrollment.termCode\r\n\t\t\tthis.orgCode = this.$store.state.auth.user.OrgCode\r\n\t\t\tthis.courses = this.$store.state.enrollment.courses\r\n\t\t\tthis.contactInformation = {\r\n\t\t\t\tFullname: fullName,\r\n\t\t\t\tEmail: email,\r\n\t\t\t\tSelectedUserType: {\r\n\t\t\t\t\tvalue: role,\r\n\t\t\t\t\tlabel: role\r\n\t\t\t\t},\r\n\t\t\t\tSelectedCourse: this.$store.state.enrollment.currentCourse,\r\n\t\t\t\tInstructorName: '',\r\n\t\t\t\tMessage: '',\r\n\t\t\t\tAttachments: []\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tthis.orgCode = 'USF'\r\n\t\t\tthis.contactInformation = {\r\n\t\t\t\tFullname: fullName,\r\n\t\t\t\tEmail: email,\r\n\t\t\t\tSelectedUserType: null,\r\n\t\t\t\tSelectedCourse: null,\r\n\t\t\t\tInstructorName: '',\r\n\t\t\t\tMessage: '',\r\n\t\t\t\tAttachments: []\r\n\t\t\t}\r\n\t\t}\r\n\t\tif (!this.termCode) { await this.getCurrentTerm() }\r\n\t\tif (this.courses.length == 0) { await this.getCourses() }\r\n\t},\r\n\tmethods: {\r\n\t\t// @vuese\r\n\t\t// CLose the contact support dialog.\r\n\t\tcloseDialog() {\r\n\t\t\tthis.$emit('close')\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Get current term by organization code.\r\n\t\tasync getCurrentTerm() {\r\n\t\t\tconst thisTerm = await termService.getCurrentTerm(this.orgCode)\r\n\t\t\tif (thisTerm) {\r\n\t\t\t\tthis.termCode = thisTerm.TermCode\r\n\t\t\t}\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Get all courses in a term\r\n\t\tasync getCourses() {\r\n\t\t\tthis.courses = await courseService.getCourses(this.orgCode, this.termCode)\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Handles upload errors.\r\n\t\tuploadError(err, file, attachments) {\r\n\t\t\tconsole.log(err)\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Hadnle logics when an attachment is selected.\r\n\t\tuploadChange(file, attachments) {\r\n\t\t\tthis.contactInformation['Attachments'].push(file.raw)\r\n\t\t},\r\n\t\tuploadSuccess(response, file, attachments) {\r\n\t\t\tconsole.log(response)\r\n\t\t},\r\n\t\thandleRemove(file, attachments) {\r\n\t\t\tconsole.log(file)\r\n\t\t\tconsole.log(attachments)\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Hadnle logics when the submit button is clicked.\r\n\t\tasync onSubmitClick() {\r\n\t\t\tthis.$refs['contactForm'].validate(async(valid) => {\r\n\t\t\t\tif (valid) {\r\n\t\t\t\t\tconst instructors = await courseService.getInstructorsByClassCode(this.termCode, this.contactInformation['SelectedCourse']['ClassCode'], this.orgCode)\r\n\t\t\t\t\tif (instructors && instructors.length > 0) {\r\n\t\t\t\t\t\tthis.contactInformation['InstructorName'] = instructors[0]['LastName'] + ', ' + instructors[0]['FirstName']\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tthis.contactInformation['InstructorName'] = 'Unknown'\r\n\t\t\t\t\t}\r\n\t\t\t\t\tconst supportTicket = {}\r\n\t\t\t\t\tsupportTicket.fullName = this.contactInformation['Fullname']\r\n\t\t\t\t\tsupportTicket.reason = this.contactInformation['SelectedReason'].value\r\n\t\t\t\t\tsupportTicket.email = this.contactInformation['Email']\r\n\t\t\t\t\tsupportTicket.course = this.contactInformation['SelectedCourse']['ClassDescription']\r\n\t\t\t\t\tsupportTicket.instructor = this.contactInformation['InstructorName']\r\n\t\t\t\t\tsupportTicket.message = this.contactInformation['Message']\r\n\t\t\t\t\tsupportTicket.userRole = this.contactInformation['SelectedUserType'].value\r\n\t\t\t\t\tconst files = this.contactInformation['Attachments']\r\n\t\t\t\t\tconst data = new FormData()\r\n\t\t\t\t\tlet count = 0\r\n\t\t\t\t\tArray.prototype.forEach.call(files, function(file) {\r\n\t\t\t\t\t\tdata.append('file[' + count + ']', file)\r\n\t\t\t\t\t\tcount++\r\n\t\t\t\t\t})\r\n\t\t\t\t\tdata.append('supportTicket', JSON.stringify(supportTicket))\r\n\t\t\t\t\tconst that = this\r\n\t\t\t\t\thttp.post('/account/submitTicket/', data, {\r\n\t\t\t\t\t\theaders: { 'Content-Type': 'multipart/form-data' }\r\n\t\t\t\t\t})\r\n\t\t\t\t\t\t.then(function() {\r\n\t\t\t\t\t\t\tNotification.success({\r\n\t\t\t\t\t\t\t\tduration: 6000,\r\n\t\t\t\t\t\t\t\ttitle: 'Success',\r\n\t\t\t\t\t\t\t\tmessage: 'The support ticket was successfully submitted.'\r\n\t\t\t\t\t\t\t})\r\n\t\t\t\t\t\t\tthat.$refs['contactForm'].resetFields()\r\n\t\t\t\t\t\t})\r\n\t\t\t\t\t\t.catch(function(error) {\r\n\t\t\t\t\t\t\tconsole.log(error)\r\n\t\t\t\t\t\t\tNotification.error({\r\n\t\t\t\t\t\t\t\tduration: 6000,\r\n\t\t\t\t\t\t\t\ttitle: 'Error',\r\n\t\t\t\t\t\t\t\tmessage: 'The support ticket was not successfully submitted.'\r\n\t\t\t\t\t\t\t})\r\n\t\t\t\t\t\t\tthat.$refs['contactForm'].resetFields()\r\n\t\t\t\t\t\t})\r\n\t\t\t\t}\r\n\t\t\t})\r\n\t\t}\r\n\t}\r\n}\r\n</script>\r\n\r\n<style lang=\"scss\" scoped>\r\n@import '../../assets/style/custom.scss';\r\n</style>\r\n\r\n<style>\r\n.el-notification.right{\r\n z-index: 10000 !important;\r\n}\r\n</style>\r\n\r\n<style scoped>\r\n\r\n.el-form-item {\r\n margin-bottom: 30px;\r\n}\r\n\r\n.el-form-item__label {\r\n color: #0e314c;\r\n}\r\n\r\n.contact-info-box .icon{\r\n color: rgb(0, 103, 71);\r\n}\r\n\r\n.contact-info-box:hover .icon{\r\n color: #ffffff;\r\n background: rgb(0, 103, 71);\r\n}\r\n\r\n.contact-info-box h3 {\r\n margin: 15px 0 10px;\r\n font-size: 18px;\r\n}\r\n</style>\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Contact.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Contact.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Contact.vue?vue&type=template&id=11a1381e&scoped=true&\"\nimport script from \"./Contact.vue?vue&type=script&lang=js&\"\nexport * from \"./Contact.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Contact.vue?vue&type=style&index=0&id=11a1381e&lang=scss&scoped=true&\"\nimport style1 from \"./Contact.vue?vue&type=style&index=1&lang=css&\"\nimport style2 from \"./Contact.vue?vue&type=style&index=2&id=11a1381e&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"11a1381e\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"page h-screen flex w-full\"},[_c('div',{staticClass:\"content sm-c md-c lg-c xl-c mx-auto self-center\",staticStyle:{}},[_vm._m(0),_c('div',{staticStyle:{\"text-align\":\"center\",\"margin-top\":\"20px\"}},[_c('el-button',{attrs:{\"type\":\"primary\"},on:{\"click\":function($event){_vm.contactDialogVisible = true}}},[_c('span',[_vm._v(\"\\n Contact Us\\n \")])])],1)]),(!_vm.usingSSO)?_c('div',{staticClass:\"content sm-c md-c lg-c xl-c mx-auto self-center\",staticStyle:{\"width\":\"400px !important\"}},[_c('div',{},[_c('el-form',{attrs:{\"label-position\":\"top\"}},[_c('div',{staticClass:\"title\",staticStyle:{\"margin-top\":\"25px\",\"margin-bottom\":\"20px\",\"text-align\":\"center\"}},[_c('router-link',{staticClass:\"navbar-brand\",attrs:{\"to\":\"/\"}},[_c('img',{staticStyle:{\"width\":\"200px\"},attrs:{\"src\":require(\"@/assets/img/logo_transparent.png\"),\"alt\":\"logo\"}})]),_c('p',{staticClass:\"welcome\"},[_vm._v(\"\\n Welcome back, please sign in to your account.\\n \")])],1),_c('el-form-item',[_c('span',{staticStyle:{\"font-weight\":\"bold\",\"color\":\"#0a7756\"}},[_vm._v(\"\\n USF NetID\\n \")]),_c('el-input',{attrs:{\"id\":\"usernameInput\",\"type\":\"text\",\"placeholder\":\"Enter your USF NetID\"},model:{value:(_vm.username),callback:function ($$v) {_vm.username=$$v},expression:\"username\"}}),_c('br')],1),_c('el-form-item',{attrs:{\"prop\":\"pass\"}},[_c('span',{staticStyle:{\"font-weight\":\"bold\",\"color\":\"#0a7756\"}},[_vm._v(\"\\n Password\\n \")]),_c('el-input',{attrs:{\"id\":\"passwordInput\",\"type\":\"password\",\"autocomplete\":\"off\",\"placeholder\":\"Enter your password\"},model:{value:(_vm.password),callback:function ($$v) {_vm.password=$$v},expression:\"password\"}})],1),_c('el-form-item',[_c('el-checkbox',[_vm._v(\"\\n Remember Me\\n \")]),_c('a',{staticClass:\"forgotPassword\",attrs:{\"href\":\"https://netid.usf.edu/una/?display=reset\"}},[_vm._v(\"\\n Forgot Password?\\n \")])],1),_c('el-form-item',[_c('el-button',{directives:[{name:\"loading\",rawName:\"v-loading\",value:(_vm.loading),expression:\"loading\"}],staticStyle:{\"width\":\"100%\"},attrs:{\"id\":\"netId-login-btn\",\"type\":\"primary\"},on:{\"click\":function($event){return _vm.onLogin()}}},[_vm._v(\"\\n Sign In With NetId and Password\\n \")]),_c('el-button',{staticStyle:{\"width\":\"100%\",\"margin-left\":\"0px\",\"margin-top\":\"10px\"},attrs:{\"type\":\"primary\",\"plain\":\"\"},on:{\"click\":function($event){return _vm.onSingleSignOn()}}},[_vm._v(\"\\n USF Single Sign-On\\n \")])],1),_c('div',{staticStyle:{\"font-size\":\"14px\",\"text-align\":\"center\",\"padding-bottom\":\"5px\"}},[_vm._v(\"\\n By logging in, I agree to the\\n \"),_c('a',{attrs:{\"href\":\"https://www.usf.edu/it/about-us/policies-standards/acceptable-use.aspx\"}},[_vm._v(\"\\n terms and policies.\\n \")])]),_c('hr'),_c('el-form-item',{staticStyle:{\"width\":\"100%\",\"font-family\":\"Montserrat,Helvetica,Arial,sans-serif\",\"line-height\":\"1.5\",\"letter-spacing\":\".01rem\",\"color\":\"#626262\",\"text-align\":\"center\",\"margin-bottom\":\"20px\"}},[_c('el-button',{staticStyle:{\"width\":\"100%\",\"margin-bottom\":\"10px\"},on:{\"click\":function($event){_vm.contactDialogVisible = true}}},[_vm._v(\"\\n Have an Issue? Contact Support Now\\n \")])],1)],1)],1)]):_vm._e(),_c('div',[(_vm.contactDialogVisible)?_c('contactVue',{attrs:{\"contact-dialog-visible\":_vm.contactDialogVisible},on:{\"update:contactDialogVisible\":function($event){_vm.contactDialogVisible=$event},\"update:contact-dialog-visible\":function($event){_vm.contactDialogVisible=$event},\"close\":function($event){_vm.contactDialogVisible = false}}}):_vm._e()],1)])}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('h1',[_vm._v(\"We are signing you in, please wait.\")])])}]\n\nexport { render, staticRenderFns }","<template>\r\n <div class=\"page h-screen flex w-full\">\r\n\r\n <div class=\"content sm-c md-c lg-c xl-c mx-auto self-center\" style=\"500px !important\">\r\n <div>\r\n <h1>We are signing you in, please wait.</h1>\r\n </div>\r\n <div style=\"text-align: center; margin-top: 20px;\">\r\n <el-button type=\"primary\" @click=\"contactDialogVisible = true\">\r\n <span>\r\n Contact Us\r\n </span>\r\n </el-button>\r\n </div>\r\n </div>\r\n\r\n <div v-if=\"!usingSSO\" class=\"content sm-c md-c lg-c xl-c mx-auto self-center\" style=\"width: 400px !important;\">\r\n <div class=\"\">\r\n <el-form label-position=\"top\">\r\n <!-- <div style=\"padding: 8px 16px; padding-top: px; background-color: #ecf8ff; border-radius: 4px; border-left: 5px solid #50bfff; margin: 20px 0; margin-top: 8px;\">\r\n Our server is experiencing deadlocking issue which prevent users from accessing. We are working on fixing the issue\r\n </div> -->\r\n\r\n <div class=\"title\" style=\"margin-top: 25px; margin-bottom: 20px; text-align: center;\">\r\n <router-link class=\"navbar-brand\" to=\"/\">\r\n <img src=\"@/assets/img/logo_transparent.png\" alt=\"logo\" style=\"width: 200px;\">\r\n </router-link>\r\n <p class=\"welcome\">\r\n Welcome back, please sign in to your account.\r\n </p>\r\n </div>\r\n <el-form-item>\r\n <span style=\"font-weight: bold; color: #0a7756;\">\r\n USF NetID\r\n </span>\r\n <el-input id=\"usernameInput\" v-model=\"username\" type=\"text\" placeholder=\"Enter your USF NetID\" />\r\n <br>\r\n </el-form-item>\r\n <el-form-item prop=\"pass\">\r\n <span style=\"font-weight: bold; color: #0a7756;\">\r\n Password\r\n </span>\r\n <el-input id=\"passwordInput\" v-model=\"password\" type=\"password\" autocomplete=\"off\" placeholder=\"Enter your password\" />\r\n </el-form-item>\r\n <el-form-item>\r\n <el-checkbox>\r\n Remember Me\r\n </el-checkbox>\r\n <a href=\"https://netid.usf.edu/una/?display=reset\" class=\"forgotPassword\">\r\n Forgot Password?\r\n </a>\r\n </el-form-item>\r\n <el-form-item>\r\n <el-button id=\"netId-login-btn\" v-loading=\"loading\" type=\"primary\" style=\"width: 100%;\" @click=\"onLogin()\">\r\n Sign In With NetId and Password\r\n </el-button>\r\n <el-button type=\"primary\" plain style=\"width: 100%; margin-left: 0px; margin-top: 10px;\" @click=\"onSingleSignOn()\">\r\n USF Single Sign-On\r\n </el-button>\r\n </el-form-item>\r\n <div style=\"font-size: 14px; text-align: center; padding-bottom: 5px;\">\r\n By logging in, I agree to the\r\n <a href=\"https://www.usf.edu/it/about-us/policies-standards/acceptable-use.aspx\">\r\n terms and policies.\r\n </a>\r\n </div>\r\n <hr>\r\n <el-form-item style=\"width: 100%; font-family: Montserrat,Helvetica,Arial,sans-serif; line-height: 1.5; letter-spacing: .01rem; color: #626262; text-align:center; margin-bottom: 20px;\">\r\n <el-button style=\"width: 100%; margin-bottom: 10px;\" @click=\"contactDialogVisible = true\">\r\n Have an Issue? Contact Support Now\r\n </el-button>\r\n </el-form-item>\r\n </el-form>\r\n </div>\r\n </div>\r\n <div>\r\n <contactVue v-if=\"contactDialogVisible\" :contact-dialog-visible.sync=\"contactDialogVisible\" @close=\"contactDialogVisible = false\" />\r\n </div>\r\n </div>\r\n</template>\r\n\r\n<script>\r\n\r\nimport { mapActions } from 'vuex'\r\nimport * as surveyService from '@/services/survey.service'\r\nimport * as termService from '@/services/term.service'\r\nimport contactVue from '@/views/support/Contact.vue'\r\n// import { PublicClientApplication } from '@azure/msal-browser'\r\n// Contains login form and logics to log users in.\r\nexport default {\r\n\tname: 'Login',\r\n\tcomponents: {\r\n\t\tcontactVue\r\n\t},\r\n\t data() {\r\n\t\treturn {\r\n\t\t\tusingSSO: true,\r\n\t\t\tcontactDialogVisible: false,\r\n\t\t\tusername: '',\r\n\t\t\tpassword: '',\r\n\t\t\tloading: false,\r\n\t\t\ttermCode: '',\r\n\t\t\torgCode: '',\r\n\t\t\tloggedUserName: ''\r\n\t\t}\r\n\t},\r\n\tmounted() {\r\n\t\twindow.addEventListener('keypress', function(e) {\r\n\t\t\tif (e.which == 13) {\r\n\t\t\t\tdocument.querySelector('#netId-login-btn').click()\r\n\t\t\t\treturn false\r\n\t\t\t}\r\n\t\t})\r\n\r\n\t\t// const accounts = this.$msal.getAllAccounts()\r\n\t\t// if (accounts.length == 0) {\r\n\t\t// \treturn\r\n\t\t// } else {\r\n\t\t// \tthis.account = accounts[0]\r\n\t\t// \tconsole.log(this.account)\r\n\t\t// }\r\n\t},\r\n\tasync created() {\r\n\t\t// this.$msal = new PublicClientApplication(\r\n\t\t// \tthis.$store.state.auth.msalConfig,\r\n\t\t// )\r\n\t\t// // this.ssoRedirect()\r\n\t\t// console.log(this.$msal)\r\n\t},\r\n\tmethods: {\r\n\t\t...mapActions('auth', ['ldapLogin', 'singleSignOn', 'ssoRedirect']),\r\n\t\t...mapActions('enrollment', ['getEnrollments']),\r\n\t\tgotoContact() {\r\n\t\t\tthis.$router.push('/contact')\r\n\t\t},\r\n\t\tasync onSingleSignOn() {\r\n\t\t\tconst user = await this.singleSignOn()\r\n\t\t\tif (user) {\r\n\t\t\t\tthis.loading = false\r\n\t\t\t\t// check optin status before redirecting user to /courses\r\n\t\t\t\tthis.checkOptInStatus()\r\n\t\t\t\tthis.$router.push('courses')\r\n\t\t\t} else {\r\n\t\t\t\tthis.loading = false\r\n\t\t\t}\r\n\r\n\t\t\t// const loginRequest = {\r\n\t\t\t// \tscopes: ['openid', 'profile', 'offline_access', 'api://c8577795-d559-4d76-bc38-ae441f525bfb/access_api']\r\n\t\t\t// }\r\n\t\t\t// const loginResponse = await this.$msal.loginPopup(loginRequest)\r\n\t\t\t// this.isAuthenticated = !!loginResponse.account\r\n\t\t\t// console.log(this.isAuthenticated)\r\n\t\t\t// // await this.$msal\r\n\t\t\t// // \t.loginPopup({})\r\n\t\t\t// // \t.then(() => {\r\n\t\t\t// // \t\tconst myAccounts = this.$msal.getAllAccounts()\r\n\t\t\t// // \t\tthis.account = myAccounts[0]\r\n\t\t\t// // \t\tconsole.log(this.account)\r\n\t\t\t// // \t})\r\n\t\t\t// // \t.catch(error => {\r\n\t\t\t// // \t\tconsole.error(`error during authentication: ${error}`)\r\n\t\t\t// // \t})\r\n\r\n\t\t\t// const request = {\r\n\t\t\t// \taccount: this.$msal.getAllAccounts()[0],\r\n\t\t\t// \tscopes: ['openid', 'profile', 'offline_access', 'api://c8577795-d559-4d76-bc38-ae441f525bfb/access_api']\r\n\t\t\t// }\r\n\t\t\t// try {\r\n\t\t\t// \tconst response = await this.$msal.acquireTokenSilent(request)\r\n\t\t\t// \tconsole.log(response)\r\n\t\t\t// \treturn response.accessToken\r\n\t\t\t// } catch (error) {\r\n\t\t\t// \tif (error) {\r\n\t\t\t// \t\treturn this.$msal.acquireTokenPopup(request).catch((popupError) => {\r\n\t\t\t// \t\t\tconsole.error(popupError)\r\n\t\t\t// \t\t})\r\n\t\t\t// \t}\r\n\t\t\t// \treturn false\r\n\t\t\t// }\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Log user in.\r\n\t\tasync onLogin() {\r\n\t\t\t// Form validation to be completed\r\n\t\t\tthis.loading = true\r\n\t\t\tconst payload = new URLSearchParams()\r\n\t\t\tpayload.append('client_id', process.env.VUE_APP_CLIENT_ID)\r\n\t\t\tpayload.append('client_secret', process.env.VUE_APP_CLIENT_SECRET)\r\n\t\t\tpayload.append('grant_type', 'password')\r\n\t\t\tpayload.append('username', 'USF;' + this.username)\r\n\t\t\tpayload.append('password', this.password)\r\n\t\t\t// Authenticate user then redirect to dashboard\r\n\t\t\tconst user = await this.ldapLogin(payload)\r\n\t\t\tif (user) {\r\n\t\t\t\tthis.loading = false\r\n\t\t\t\t// check optin status before redirecting user to /courses\r\n\t\t\t\tthis.checkOptInStatus()\r\n\t\t\t\tthis.$router.push('courses')\r\n\t\t\t} else {\r\n\t\t\t\tthis.loading = false\r\n\t\t\t}\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Check for user's opt in status before logging in.\r\n\t\t// Display consent if not already opted in.\r\n\t\tasync checkOptInStatus() {\r\n\t\t\tthis.orgCode = this.$store.state.auth.user.OrgCode\r\n\t\t\tthis.loggedUserName = this.$store.state.auth.user.UserName\r\n\t\t\tconst currentTerm = await termService.getCurrentTerm(this.orgCode)\r\n\t\t\tthis.termCode = currentTerm.TermCode\r\n\t\t\tconst status = await surveyService.checkOptInStatus(this.orgCode, this.loggedUserName, this.termCode)\r\n\t\t\tif (status.length == 0) {\r\n\t\t\t\tconst roles = this.$store.state.auth.user.Roles\r\n\t\t\t\tif (roles.includes('Administrator')) {\r\n\t\t\t\t\tthis.displayInstructorConsent()\r\n\t\t\t\t} else if (roles.includes('Instructor')) {\r\n\t\t\t\t\tthis.displayInstructorConsent()\r\n\t\t\t\t} else if (roles.includes('Student')) {\r\n\t\t\t\t\tthis.displayStudentConsent()\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tthis.$router.push('courses')\r\n\t\t\t}\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Display instructor consent.\r\n\t\tdisplayInstructorConsent() {\r\n\t\t\tthis.$alert(`<div id=\"instructor-consent\" style=\"overflow: auto; background-color: #FFF; padding: 10px; height: 78vh; border: #cecaca solid 1px; \">\r\n <p><strong>Informed Consent for Instructors to Participate in Research </strong></p>\r\n <p>Information to Consider Before Taking Part in this Research Study</p>\r\n <p> </p>\r\n <p>Pro #002887</p>\r\n <p>\r\n Academic researchers study many topics. To do this, we need the help of people who agree to\r\n take part in a research study. We are asking you to take part in USF Writes Corpus Research.\r\n </p>\r\n <p> </p>\r\n <p>\r\n The person who is in charge of these research studies is Dr. Lauren Arrington. This person is called\r\n the Principal Investigator. This consent form provides you the opportunity to accept or decline\r\n having your texts and usage of USF Writes become a part of the research corpus. If you chose to opt out of the research, you will still be able to use the platform to fulfill your teaching obligations.\r\n </p>\r\n <p> </p>\r\n <p>\r\n We are hoping to learn more about instructors like yourself. We do this by studying the activity\r\n of as many users of USF Writes as we can. Basically, this helps us re-design and update three\r\n things: the USF Writes interface, the assignments you’re asked to grade in the system, and the\r\n writing-intensive course(s) you’re teaching. The more we learn about your teaching in the\r\n system, the more we can help instructors like you have the best educational experience possible.\r\n </p>\r\n <p> </p>\r\n <p>\r\n No discomforts and risks are expected from the procedures beyond those commonly associated\r\n with participation in a face-to-face or online university class. We are unsure if you will receive\r\n any benefits by taking part in this research study. It’s important that you know that whether or\r\n not you opt into this research, your employment will NOT be affected. You have the alternative\r\n to choose not to participate in this research study. You should only take part in this study if you\r\n want to volunteer; you are free to participate in this research or withdraw at any time. There will\r\n be no penalty or loss of benefits you are entitled to receive if you stop taking part in this study.\r\n </p>\r\n <p> </p>\r\n <p>\r\n We are asking to collect the materials you are already using as part of class. We’d like your\r\n permission to add your grading to the USF Writes corpus. We’d like to explore your usage of\r\n USF Writes, such as your comments and scores on your students’ essays, and peer reviews, and\r\n your trace data, such as the amount of time you spend reviewing documents.\r\n </p>\r\n <p> </p>\r\n <p>\r\n We are not sure of the total number of people who will participate because this is a long-term\r\n study. However, we expect you will be one of 300-400 instructors who enroll in this research in\r\n the next few years, should you opt in below.\r\n </p>\r\n <p> </p>\r\n <p>\r\n It is possible, although unlikely, that unauthorized individuals could gain access to your\r\n responses because you are responding online. Your participation via USF Writes involves risks\r\n similar to a person’s everyday use of the Internet. It is possible, although unlikely, that\r\n unauthorized individuals could gain access to your responses. Confidentiality will be maintained\r\n to the degree permitted by the technology used. No guarantees can be made regarding the \r\n interception of data sent via the Internet. However, your participation in this online study\r\n involves risks similar to a person’s everyday use of the Internet. If you complete and submit an\r\n anonymous survey and later request your data be withdrawn, this may or may not be possible as\r\n the researcher may be unable to extract anonymous data from the database.\r\n </p>\r\n <p> </p>\r\n <p>\r\n Certain people may need to see your study records. By law, anyone who looks at your records\r\n must keep them completely confidential. The only people who will be allowed to see these\r\n records are Dr. Arrington and approved study staff.\r\n </p>\r\n <p> </p>\r\n <p>If you agree to participate in this research project, your work will be made available under the following terms to researchers:</p>\r\n <ul>\r\n <li>No personal information shall be given or sold to any marketing, solicitation, or data mining organization of any type</li>\r\n <li>Any information that can be used to identify you will remain confidential and will be disclosed only with your permission or as required by law</li>\r\n <li>Researchers will ensure that your personal information is not published or otherwise disclosed in any publications or presentations of research</li>\r\n </ul>\r\n <p> </p>\r\n <p><strong>Contact Information</strong></p>\r\n <p>\r\n If you have any questions about your rights as a research participant, please contact the USF IRB\r\n at 813-974-5638. If you have questions regarding the research, please contact the Principal\r\n Investigator at laurenarrington@usf.edu or the USF Internal Review Board at RSCH-IRB@usf.edu.\r\n You can print a copy of this consent form for your records.\r\n </p>\r\n <p> </p>\r\n <p>I freely give my consent to take part in this study. I understand that by opting in I am agreeing to take part in research and I am 18 years of age or older.</p>\r\n </div>`, 'USF Writes Disclosure and Consent', {\r\n\t\t\t\tdangerouslyUseHTMLString: true,\r\n\t\t\t\tshowClose: false,\r\n\t\t\t\tconfirmButtonText: 'Opt In',\r\n\t\t\t\tcancelButtonText: 'Opt Out',\r\n\t\t\t\tshowConfirmButton: true,\r\n\t\t\t\tshowCancelButton: true,\r\n\t\t\t\tcustomClass: 'login-consent-form'\r\n\t\t\t}).then(() => {\r\n\t\t\t\tconst optInStatus = {\r\n\t\t\t\t\t'Term_Code': this.termCode,\r\n\t\t\t\t\t'User_Id': this.loggedUserName,\r\n\t\t\t\t\t'Org_Code': this.orgCode,\r\n\t\t\t\t\t'Opt_In_Status': 'Y'\r\n\r\n\t\t\t\t}\r\n\t\t\t\tsurveyService.postOptInStatus(optInStatus)\r\n\t\t\t\t\t.then(result => {\r\n\t\t\t\t\t\tthis.$message({\r\n\t\t\t\t\t\t\ttype: 'success',\r\n\t\t\t\t\t\t\tmessage: 'You have successfully opted in.'\r\n\t\t\t\t\t\t})\r\n\t\t\t\t\t\tthis.$router.push('courses')\r\n\t\t\t\t\t})\r\n\t\t\t}).catch(() => {\r\n\t\t\t\tconst optInStatus = {\r\n\t\t\t\t\t'Term_Code': this.termCode,\r\n\t\t\t\t\t'User_Id': this.loggedUserName,\r\n\t\t\t\t\t'Org_Code': this.orgCode,\r\n\t\t\t\t\t'Opt_In_Status': 'N'\r\n\t\t\t\t}\r\n\t\t\t\tsurveyService.postOptInStatus(optInStatus)\r\n\t\t\t\t\t.then(result => {\r\n\t\t\t\t\t\tthis.$message({\r\n\t\t\t\t\t\t\ttype: 'info',\r\n\t\t\t\t\t\t\tmessage: 'You have successfully opted out.'\r\n\t\t\t\t\t\t})\r\n\t\t\t\t\t\tthis.$router.push('courses')\r\n\t\t\t\t\t})\r\n\t\t\t})\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Display student consent.\r\n\t\tdisplayStudentConsent() {\r\n\t\t\tthis.$alert(`<div id=\"student-consent\" style=\"overflow: auto; background-color: #FFF; padding: 10px; height: 78vh; border: #cecaca solid 1px; \">\r\n <p><strong>Informed Consent for Students to Participate in Research </strong></p>\r\n <p>Information to Consider Before Taking Part in this Research Study</p>\r\n <p> </p>\r\n <p>Pro #002887</p>\r\n <p>\r\n Academic researchers study many topics. To do this, we need the help of people who agree to\r\n take part in a research study. We are asking you to take part in a research study, USF Writes\r\n Corpus Research.\r\n </p>\r\n <p> </p>\r\n <p>\r\n The person who is in charge of this research study is Dr. Lauren Arrington. This person is called\r\n the Principal Investigator. This consent form provides you the opportunity to accept or decline\r\n having your texts and usage of USF Writes become a part of the research corpus.\r\n </p>\r\n <p> </p>\r\n <p>\r\n We are hoping to learn more about writers like yourself. We do this by studying the activity of as\r\n many users of USF Writes as we can. Basically, this helps us re-design and update three things:\r\n USF Writes as a tool for teaching writing, the writing you’re asked to submit in the system, and\r\n the writing-intensive course(s) you’re in. The more we learn about your writing, the more we can\r\n help students like you have the best educational experience possible.\r\n </p>\r\n <p> </p>\r\n <p>\r\n No discomforts and risks are expected from the procedures beyond those commonly associated\r\n with participation in a face-to-face or online university class. We are unsure if you will receive\r\n any benefits by taking part in this research study. It’s important that you know that whether or\r\n not you opt into this research, your grades in this course will NOT be affected. If your university\r\n charges a fee for the use of USF Writes, you still need to pay that, regardless of whether you’ve\r\n decided to participate in the study. You have the alternative to choose not to participate in this\r\n research study. You should only take part in this study if you want to volunteer; you are free to\r\n participate in this research or withdraw at any time. There will be no penalty or loss of benefits\r\n you are entitled to receive if you stop taking part in this study.\r\n </p>\r\n <p> </p>\r\n <p>\r\n We are asking for two different things. We’d like to (1) collect the materials you are already\r\n doing as part of class and (2) ask you to complete a few extra surveys.\r\n </p>\r\n <p> </p>\r\n <p>\r\n Regarding #1, your coursework: We’d like your permission to add your coursework to the USF\r\n Writes corpus. We’d like to explore your usage of USF Writes, such as analyzing your essays,\r\n your comments and scores on your peers’ essays, your instructor’s comments and scores, your\r\n responses to survey questions, your self reflections on your peer reviews, your ratings and\r\n reviews of your reviewers; and your trace data, such as the amount of time you spend reviewing\r\n documents. Note, in USF Writes, some surveys are part of the education experience, such as the\r\n surveys that ask you to rate the overall helpfulness of a peers’ reviews or the surveys that ask you\r\n to reflect on your writing process for a particular project.\r\n </p>\r\n <p> </p>\r\n <p>\r\n Regarding #2, research surveys: In USF Writes, there are a few surveys associated with research\r\n rather than pedagogy which are different from the required coursework, including a pre-semester\r\n survey that asks you to report on your background as a writer, a demographic survey, and a post-semester survey. \r\n We expect these surveys will take between 20-30 minutes total of your time.\r\n Even if you opt-in now, you can always decide not to take them when we send them to you.\r\n </p>\r\n <p> </p>\r\n <p>\r\n We are not sure of the total number of people who will participate because this is a long-term\r\n study. However, we expect you will be one of the 10,000+ students who enroll in this research in\r\n the next few years, should you opt in below.\r\n </p>\r\n <p> </p>\r\n <p>\r\n If you are a student at USF and you consent, the researchers may access FERPA-protected data\r\n from other university offices. At USF, this data will help the researchers understand how\r\n students write and learn about writing and the relationship between writing and retention in the\r\n university. The FERPA-protected data includes information such as grades for your current and\r\n subsequent courses; gender assignment; gender identification; race/ethnicity; student status;\r\n enrollment status; age; SAT or ACT scores; high school GPA; terms of enrollment at the\r\n University of South Florida; concurrent and longitudinal GPA; retention by term; and graduation\r\n by term.\r\n </p>\r\n <p> </p>\r\n <p>\r\n Your participation via USF Writes involves risks similar to a person’s everyday use of the\r\n Internet. It is possible, although unlikely, that unauthorized individuals could gain access to your\r\n responses. Confidentiality will be maintained to the degree permitted by the technology used. No\r\n guarantees can be made regarding the interception of data sent via the Internet. However, your\r\n participation in this online study involves risks similar to a person’s everyday use of the Internet.\r\n If you complete and submit an anonymous survey and later request your data be withdrawn, this\r\n may or may not be possible as the researcher may be unable to extract anonymous data from the\r\n database.\r\n </p>\r\n <p> </p>\r\n <p>\r\n Certain people may need to see your study records. By law, anyone who looks at your records\r\n must keep them completely confidential. The only people who will be allowed to see these\r\n records are Dr. Arrington and approved study staff.\r\n </p>\r\n <p> </p>\r\n <p>If you agree to participate in this research project, your work will be made available under the following terms to researchers:</p>\r\n <ul>\r\n <li>No personal information shall be given or sold to any marketing, solicitation, or data mining organization of any type</li>\r\n <li>Any information that can be used to identify you will remain confidential and will be disclosed only with your permission or as required by law</li>\r\n <li>Researchers will ensure that your personal information is not published or otherwise disclosed in any publications or presentations of research</li>\r\n </ul>\r\n <p> </p>\r\n <p><strong>Contact Information</strong></p>\r\n <p>\r\n If you have any questions about your rights as a research participant, please contact the USF IRB\r\n at 813-974-5638. If you have questions regarding the research, please contact the Principal\r\n Investigator at laurenarrington@usf.edu or the USF IRB at RSCH-IRB@usf.edu. You can print a copy\r\n of this consent form for your records.\r\n </p>\r\n <p> </p>\r\n <p>I freely give my consent to take part in this study. I understand that by opting in I am agreeing to take part in research and I am 18 years of age or older.</p>\r\n </div>`, 'USF Writes Disclosure and Consent', {\r\n\t\t\t\tdangerouslyUseHTMLString: true,\r\n\t\t\t\tshowClose: false,\r\n\t\t\t\tconfirmButtonText: 'Opt In',\r\n\t\t\t\tcancelButtonText: 'Opt Out',\r\n\t\t\t\tshowConfirmButton: true,\r\n\t\t\t\tshowCancelButton: true,\r\n\t\t\t\tcustomClass: 'login-consent-form'\r\n\r\n\t\t\t}).then(() => {\r\n\t\t\t\tconst optInStatus = {\r\n\t\t\t\t\t'Term_Code': this.termCode,\r\n\t\t\t\t\t'User_Id': this.loggedUserName,\r\n\t\t\t\t\t'Org_Code': this.orgCode,\r\n\t\t\t\t\t'Opt_In_Status': 'Y'\r\n\t\t\t\t}\r\n\t\t\t\tsurveyService.postOptInStatus(optInStatus)\r\n\t\t\t\t\t.then(result => {\r\n\t\t\t\t\t\tthis.$message({\r\n\t\t\t\t\t\t\ttype: 'success',\r\n\t\t\t\t\t\t\tmessage: 'You have successfully opted in.'\r\n\t\t\t\t\t\t})\r\n\t\t\t\t\t\tthis.$router.push('courses')\r\n\t\t\t\t\t})\r\n\t\t\t}).catch(() => {\r\n\t\t\t\tconst optInStatus = {\r\n\t\t\t\t\t'Term_Code': this.termCode,\r\n\t\t\t\t\t'User_Id': this.loggedUserName,\r\n\t\t\t\t\t'Org_Code': this.orgCode,\r\n\t\t\t\t\t'Opt_In_Status': 'N'\r\n\t\t\t\t}\r\n\t\t\t\tsurveyService.postOptInStatus(optInStatus)\r\n\t\t\t\t\t.then(result => {\r\n\t\t\t\t\t\tthis.$message({\r\n\t\t\t\t\t\t\ttype: 'info',\r\n\t\t\t\t\t\t\tmessage: 'You have successfully opted out.'\r\n\t\t\t\t\t\t})\r\n\t\t\t\t\t\tthis.$router.push('courses')\r\n\t\t\t\t\t})\r\n\t\t\t})\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Get last activity date.\r\n\t\tgetlastActivityDate() {\r\n\t\t\tconst today = this.$moment()._d\r\n\t\t\treturn today.getFullYear() + '-' + (today.getMonth() + 1) + '-' +\r\n today.getDate() + ' ' + today.getHours() + ':' + today.getMinutes() + ':' + today.getSeconds()\r\n\t\t}\r\n\t}\r\n\r\n}\r\n\r\n</script>\r\n\r\n<style>\r\n#nprogress .bar{\r\n\tz-index: 10001 !important;\r\n\tbackground-color: #009374 !important;\r\n}\r\n</style>\r\n\r\n<style scoped>\r\n.page\r\n{\r\n\twidth: 100% !important;\r\n\theight: 100vh!important;\r\n\t/* background-image: url(\"../../assets/background1.jpg\");\r\n\tbackground-position: 50%;\r\n\tbackground-repeat: no-repeat; */\r\n\tbackground-color: rgb(0, 103, 71);\r\n background-size: cover;\r\n}\r\n.content{\r\n\tmargin-left: auto!important;\r\n margin-right: auto!important;\r\n\ttext-align: center;\r\n\t/* background-color: #ffffff; */\r\n border-radius: 5px;\r\n\tcolor: white;\r\n}\r\n.left{\r\n\tfloat: left;\r\n\tbackground-color: #eff2f7;\r\n\tpadding-top: 8%;\r\n\tdisplay:none;\r\n}\r\n.forimg1\r\n{\r\n\twidth: 95%;\r\n\tpadding-top: 15%;\r\n\tpadding-bottom: 15%;\r\n}\r\n.right\r\n{\r\n\tfloat: right;\r\n\tbackground-color: white;\r\n}\r\n.el-form\r\n{\r\n\ttext-decoration: none;\r\n\tpadding-left: 30px;\r\n\tpadding-right: 30px;\r\n}\r\n\r\n.login\r\n{\r\n\tfont-family: Montserrat,Helvetica,Arial,sans-serif;\r\n\tline-height: 1.2;\r\n\tcolor: #0a7756;\r\n\tfont-size: 22px;\r\n\tfont-weight: bold;\r\n\tmargin-bottom: 1rem!important;\r\n}\r\n.welcome\r\n{\r\n color: #626262;\r\n\tfont-family: Montserrat,Helvetica,Arial,sans-serif;\r\n\tfont-weight: 400;\r\n\tfont-size: 90%;\r\n\tline-height: 1.5;\r\n\tletter-spacing: .01rem;\r\n}\r\n/* .username\r\n{\r\n\tpointer-events: none;\r\n\tposition: absolute;\r\n\tleft: 35px;\r\n\ttop: 0px;\r\n\tcolor: rgb(0, 75, 44);\r\n\tcursor: text;\r\n\tfont-size: .80rem;\r\n\ttransition: all .2s ease;\r\n} */\r\n.icon1\r\n{\r\n pointer-events: none;\r\n\tposition: absolute;\r\n\tleft: 10px;\r\n\ttop: -12px;\r\n\tcolor: rgb(0, 75, 44);\r\n\tcursor: text;\r\n\tfont-size: .80rem;\r\n\ttransition: all .2s ease;\r\n}\r\n.pass\r\n{\r\n\tpointer-events: none;\r\n\tposition: absolute;\r\n\tleft: 35px;\r\n\ttop: 0px;\r\n\tcolor:rgb(0, 75, 44);\r\n\tcursor: text;\r\n\tfont-size: .80rem;\r\n\ttransition: all .2s ease;\r\n}\r\n.icon2\r\n{\r\n\tpointer-events: none;\r\n\tposition: absolute;\r\n\tleft: 10px;\r\n\ttop: -12px;\r\n\tcolor: rgb(0, 75, 44);\r\n\tcursor: text;\r\n\tfont-size: .80rem;\r\n\ttransition: all .2s ease;\r\n}\r\nspan.el-checkbox__label\r\n{\r\n\tpadding-left: 0px!important;\r\n}\r\n.forgotPassword\r\n{\r\n margin-top: 3px;\r\n text-decoration: none;\r\n float: right;\r\n color:rgb(0, 75, 44);\r\n}\r\nhr\r\n{\r\n\tmargin-bottom: 20px;\r\n\tborder-bottom: 1px;\r\n\tborder-top: 1px solid rgba(0, 0, 0, 0.1);\r\n}\r\n.el-input\r\n{\r\n width:100% !important;\r\n padding-top: 8px;\r\n}\r\n.title\r\n{\r\n\ttext-align: left;\r\n}\r\n.el-checkbox\r\n{\r\n\ttext-align: left;\r\n}\r\n.el-form-item\r\n{\r\n\tcolor: #626262;\r\n\tfont-weight: 400;\r\n\ttext-align: left;\r\n\tfont-family: Montserrat,Helvetica,Arial,sans-serif;\r\n\tfont-size: 14px;\r\n\tline-height: 1.5;\r\n\tletter-spacing: .01rem;\r\n margin-bottom: 15px;\r\n}\r\n.el-button\r\n{\r\n\tfont-family: Montserrat,Helvetica,Arial,sans-serif;\r\n}\r\n/* button.el-button--default\r\n{\r\n\tcolor:rgb(115, 103, 240);\r\n\tborder-color: rgb(115, 103, 240);\r\n}\r\nbutton.el-button--primary\r\n{\r\n\tbackground-color: rgb(115, 103, 240);\r\n border-color: rgb(115, 103, 240);\r\n} */\r\n.el-input\r\n{\r\n\twidth: 90%;\r\n}\r\n\r\n.h-screen\r\n{\r\n height: 100vh!important;\r\n}\r\n\r\n.flex\r\n{\r\n display: flex!important;\r\n}\r\n.w-full\r\n{\r\n width: 100%!important;\r\n}\r\n.mx-auto\r\n{\r\n margin-left: auto!important;\r\n margin-right: auto!important;\r\n}\r\n.self-center\r\n{\r\n align-self: center!important;\r\n}\r\n\r\n@media only screen and (min-width: 576px)\r\n{\r\n\t.sm-c\r\n\t{\r\n\t\t\twidth: 50%!important;\r\n\t}\r\n}\r\n@media only screen and (min-width: 768px)\r\n{\r\n\t.md-c\r\n\t{\r\n\t\t\twidth: 50%!important;\r\n\t}\r\n}\r\n@media only screen and (min-width: 992px)\r\n{\r\n\t.lg-c\r\n\t{\r\n\t\t\twidth: 75%!important;\r\n\t}\r\n}\r\n@media only screen and (min-width: 1200px)\r\n{\r\n\t.xl-c\r\n\t{\r\n\t\t\twidth: 40%!important;\r\n\t}\r\n}\r\n@media only screen and (min-width: 576px)\r\n{\r\n\t.sm-l\r\n\t{\r\n\t\t\tdisplay: none !important;\r\n\t}\r\n}\r\n@media only screen and (min-width: 768px)\r\n{\r\n\t.md-l\r\n\t{\r\n\t\t\tdisplay: none !important;\r\n\t}\r\n}\r\n@media only screen and (min-width: 992px)\r\n{\r\n\t.lg-l\r\n\t{\r\n\t\t\tdisplay: block!important;\r\n\t\t\twidth:50% !important;\r\n\t}\r\n}\r\n@media only screen and (min-width: 576px)\r\n{\r\n\t.sm-r\r\n\t{\r\n\t\t\twidth: 100%!important;\r\n\t}\r\n}\r\n@media only screen and (min-width: 768px)\r\n{\r\n\t.md-r\r\n\t{\r\n\t\t\twidth: 100%!important;\r\n\t}\r\n}\r\n@media only screen and (min-width: 992px)\r\n{\r\n\t.lg-r\r\n\t{\r\n\t\t\twidth: 50%!important;\r\n\t}\r\n}\r\n</style>\r\n<style>\r\n.login-consent-form{\r\n width: 50% !important;\r\n}\r\n.login-consent-form>.el-message-box__header, .login-consent-form>.el-message-box__btns{\r\n text-align: center !important;\r\n}\r\n</style>\r\n\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Login.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Login.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Login.vue?vue&type=template&id=e872a1f2&scoped=true&\"\nimport script from \"./Login.vue?vue&type=script&lang=js&\"\nexport * from \"./Login.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Login.vue?vue&type=style&index=0&lang=css&\"\nimport style1 from \"./Login.vue?vue&type=style&index=1&id=e872a1f2&scoped=true&lang=css&\"\nimport style2 from \"./Login.vue?vue&type=style&index=2&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"e872a1f2\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"page h-screen flex w-full\"},[_c('div',{staticClass:\"content sm-c md-c lg-c xl-c mx-auto self-center\",staticStyle:{}},[_vm._m(0),_c('div',{staticStyle:{\"text-align\":\"center\",\"margin-top\":\"20px\"}},[_c('el-button',{attrs:{\"type\":\"primary\"},on:{\"click\":function($event){return _vm.logBackIn()}}},[_c('span',[_vm._v(\"\\n Sign Back In\\n \")])])],1)])])}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('h1',[_vm._v(\"You have successfully singed out.\")])])}]\n\nexport { render, staticRenderFns }","<template>\r\n <div class=\"page h-screen flex w-full\">\r\n <div class=\"content sm-c md-c lg-c xl-c mx-auto self-center\" style=\"500px !important\">\r\n <div>\r\n <h1>You have successfully singed out.</h1>\r\n </div>\r\n <div style=\"text-align: center; margin-top: 20px;\">\r\n <el-button type=\"primary\" @click=\"logBackIn()\">\r\n <span>\r\n Sign Back In\r\n </span>\r\n </el-button>\r\n </div>\r\n </div>\r\n </div>\r\n</template>\r\n\r\n<script>\r\n// Handles UI and logics for Canvas Redirection.\r\nexport default {\r\n\tname: 'Logout',\r\n\tasync created() {\r\n\t},\r\n\tmethods: {\r\n\t\tlogBackIn() {\r\n\t\t window.location.href = '/'\r\n\t\t}\r\n\t}\r\n\r\n}\r\n</script>\r\n\r\n<style scoped>\r\n.page\r\n{\r\n\twidth: 100%!important;\r\n\theight: 100vh!important;\r\n\t/* background-image: url(\"../../assets/background1.jpg\");\r\n\tbackground-position: 50%;\r\n\tbackground-repeat: no-repeat; */\r\n background-color: rgb(0, 103, 71);\r\n background-size: cover;\r\n}\r\n.content{\r\n\tmargin-left: auto!important;\r\n margin-right: auto!important;\r\n\ttext-align: center;\r\n\t/* background-color: #ffffff; */\r\n border-radius: 5px;\r\n color: white;\r\n}\r\n\r\n.h-screen\r\n{\r\n height: 100vh!important;\r\n}\r\n\r\n.flex\r\n{\r\n display: flex!important;\r\n}\r\n.w-full\r\n{\r\n width: 100%!important;\r\n}\r\n.mx-auto\r\n{\r\n margin-left: auto!important;\r\n margin-right: auto!important;\r\n}\r\n\r\n.self-center\r\n{\r\n align-self: center!important;\r\n}\r\n\r\n@media only screen and (min-width: 576px)\r\n{\r\n\t.sm-c\r\n\t{\r\n\t\t\twidth: 50%!important;\r\n\t}\r\n}\r\n@media only screen and (min-width: 768px)\r\n{\r\n\t.md-c\r\n\t{\r\n\t\t\twidth: 50%!important;\r\n\t}\r\n}\r\n@media only screen and (min-width: 992px)\r\n{\r\n\t.lg-c\r\n\t{\r\n\t\t\twidth: 75%!important;\r\n\t}\r\n}\r\n@media only screen and (min-width: 1200px)\r\n{\r\n\t.xl-c\r\n\t{\r\n\t\t\twidth: 40%!important;\r\n\t}\r\n}\r\n@media only screen and (min-width: 576px)\r\n{\r\n\t.sm-l\r\n\t{\r\n\t\t\tdisplay: none !important;\r\n\t}\r\n}\r\n@media only screen and (min-width: 768px)\r\n{\r\n\t.md-l\r\n\t{\r\n\t\t\tdisplay: none !important;\r\n\t}\r\n}\r\n@media only screen and (min-width: 992px)\r\n{\r\n\t.lg-l\r\n\t{\r\n\t\t\tdisplay: block!important;\r\n\t\t\twidth:50% !important;\r\n\t}\r\n}\r\n@media only screen and (min-width: 576px)\r\n{\r\n\t.sm-r\r\n\t{\r\n\t\t\twidth: 100%!important;\r\n\t}\r\n}\r\n@media only screen and (min-width: 768px)\r\n{\r\n\t.md-r\r\n\t{\r\n\t\t\twidth: 100%!important;\r\n\t}\r\n}\r\n@media only screen and (min-width: 992px)\r\n{\r\n\t.lg-r\r\n\t{\r\n\t\t\twidth: 50%!important;\r\n\t}\r\n}\r\n</style>\r\n<style>\r\n.login-consent-form{\r\n width: 50% !important;\r\n}\r\n.login-consent-form>.el-message-box__header, .login-consent-form>.el-message-box__btns{\r\n text-align: center !important;\r\n}\r\n</style>\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Logout.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Logout.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Logout.vue?vue&type=template&id=1d3a4223&scoped=true&\"\nimport script from \"./Logout.vue?vue&type=script&lang=js&\"\nexport * from \"./Logout.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Logout.vue?vue&type=style&index=0&id=1d3a4223&scoped=true&lang=css&\"\nimport style1 from \"./Logout.vue?vue&type=style&index=1&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"1d3a4223\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"page h-screen flex w-full\",staticStyle:{\"background-color\":\"#0a7756\",\"height\":\"860px\",\"padding-top\":\"230px\"}},[_vm._m(0),_c('div',[(_vm.contactDialogVisible)?_c('contactVue',{attrs:{\"contact-dialog-visible\":_vm.contactDialogVisible},on:{\"update:contactDialogVisible\":function($event){_vm.contactDialogVisible=$event},\"update:contact-dialog-visible\":function($event){_vm.contactDialogVisible=$event},\"close\":function($event){_vm.contactDialogVisible = false}}}):_vm._e()],1)])}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"content sm-c md-c lg-c xl-c mx-auto self-center\",staticStyle:{\"width\":\"450px !important\"}},[_c('div',{staticClass:\"banner-form ml-3\",staticStyle:{\"padding\":\"30px\",\"padding-bottom\":\"40px\"}},[_c('form',[_c('div',{staticStyle:{\"text-align\":\"center\",\"font-size\":\"20px\",\"margin-bottom\":\"25px\"}},[_vm._v(\"\\n Sign in to USF Writes\\n \")]),_c('div',{staticClass:\"form-group\"},[_c('label',[_vm._v(\"Username\")]),_c('input',{staticClass:\"form-control\",attrs:{\"type\":\"email\",\"placeholder\":\"Email address or NetID\"}})]),_c('div',{staticClass:\"form-group\"},[_c('label',[_vm._v(\"Password\")]),_c('input',{staticClass:\"form-control\",attrs:{\"type\":\"password\",\"placeholder\":\"Enter your password\"}})]),_c('div',{staticClass:\"form-group\",staticStyle:{\"margin-bottom\":\"10px\"}},[_c('div',{staticStyle:{\"font-size\":\"15px\",\"text-align\":\"center\"}},[_vm._v(\"By logging in, I agree to the \"),_c('a',{staticStyle:{\"color\":\"rgba(0, 103, 71)\",\"font-weight\":\"bold\"},attrs:{\"href\":\"#\"}},[_vm._v(\"terms and policies.\")])])]),_c('a',{staticClass:\"btn btn-primary\",staticStyle:{\"background\":\"rgb(0, 103, 71)\",\"width\":\"100%\",\"margin-top\":\"10px\"},attrs:{\"href\":\"/login\"}},[_vm._v(\"Sign In\")]),_c('div',{staticClass:\"startp-nav\",staticStyle:{\"margin-top\":\"30px\"}},[_c('nav',[_c('div',{staticClass:\" navbar navbar-expand-md navbar-light\",staticStyle:{\"display\":\"block\",\"padding\":\"0px\"}},[_c('div',{staticClass:\"others-option\",staticStyle:{\"margin-left\":\"0px\"},attrs:{\"data-v-146e2983\":\"\"}},[_c('a',{staticClass:\"btn btn-light\",staticStyle:{\"width\":\"100%\",\"margin-right\":\"0xp\",\"font-size\":\"16px\",\"font-weight\":\"600\"},attrs:{\"data-v-146e2983\":\"\",\"href\":\"/register\"}},[_vm._v(\"Don't have an account? Sign up now\")])])])])])])])])}]\n\nexport { render, staticRenderFns }","<template>\r\n <div class=\"page h-screen flex w-full\" style=\"background-color: #0a7756; height: 860px; padding-top: 230px;\">\r\n <div class=\"content sm-c md-c lg-c xl-c mx-auto self-center\" style=\"width: 450px !important;\">\r\n <div class=\"banner-form ml-3\" style=\"padding: 30px; padding-bottom: 40px;\">\r\n\r\n <form>\r\n <div style=\"text-align: center; font-size: 20px; margin-bottom: 25px;\">\r\n Sign in to USF Writes\r\n </div>\r\n <div class=\"form-group\">\r\n <label>Username</label>\r\n <input type=\"email\" class=\"form-control\" placeholder=\"Email address or NetID\">\r\n </div>\r\n\r\n <div class=\"form-group\">\r\n <label>Password</label>\r\n <input type=\"password\" class=\"form-control\" placeholder=\"Enter your password\">\r\n </div>\r\n\r\n <div class=\"form-group\" style=\"margin-bottom: 10px;\">\r\n <div style=\"font-size: 15px; text-align: center;\">By logging in, I agree to the <a href=\"#\" style=\"color: rgba(0, 103, 71); font-weight: bold;\">terms and policies.</a></div>\r\n\r\n </div>\r\n\r\n <a href=\"/login\" class=\"btn btn-primary\" style=\"background: rgb(0, 103, 71); width: 100%; margin-top: 10px;\">Sign In</a>\r\n\r\n <!-- <div class=\"register\" style=\"border: 2px dashed rgb(0, 103, 71); margin-top: 40px; padding: 13px; text-align: center; color: #4b6177; font-size: 16px; font-weight: bold;\">Don't have an account? Register now</div> -->\r\n\r\n <div class=\"startp-nav\" style=\" margin-top: 30px;\">\r\n <nav>\r\n <div class=\" navbar navbar-expand-md navbar-light\" style=\"display: block; padding: 0px;\">\r\n <div data-v-146e2983=\"\" class=\"others-option\" style=\"margin-left: 0px;\">\r\n <a data-v-146e2983=\"\" href=\"/register\" class=\"btn btn-light\" style=\"width: 100%; margin-right: 0xp; font-size: 16px; font-weight: 600;\">Don't have an account? Sign up now</a>\r\n </div> </div>\r\n </nav>\r\n </div>\r\n <!-- <button type=\"submit\" class=\"btn btn-primary\" style=\"width: 100%; margin-top: 10px;\">Sign In</button> -->\r\n </form>\r\n\r\n <!-- <el-form label-position=\"top\">\r\n\r\n <div class=\"title\" style=\"margin-top: 25px; margin-bottom: 20px;\">\r\n <p class=\"welcome\">\r\n Welcome back, please login to your account.\r\n </p>\r\n </div>\r\n <el-form-item>\r\n <span style=\"font-weight: bold; color: #0a7756;\">\r\n NetID\r\n </span>\r\n <el-input id=\"usernameInput\" v-model=\"username\" type=\"text\" />\r\n <br>\r\n </el-form-item>\r\n <el-form-item prop=\"pass\">\r\n <span style=\"font-weight: bold; color: #0a7756;\">\r\n Password\r\n </span>\r\n <el-input id=\"passwordInput\" v-model=\"password\" type=\"password\" autocomplete=\"off\" />\r\n </el-form-item>\r\n <el-form-item>\r\n <el-checkbox>\r\n Remember Me\r\n </el-checkbox>\r\n <a href=\"https://netid.usf.edu/una/?display=reset\" class=\"forgotPassword\">\r\n Forgot Password?\r\n </a>\r\n </el-form-item>\r\n <el-form-item>\r\n <el-button id=\"netId-login-btn\" v-loading=\"loading\" type=\"primary\" style=\"width: 100%;\" @click=\"onLogin\">\r\n Login with NetID\r\n </el-button>\r\n </el-form-item>\r\n <div style=\"font-size: 14px; text-align: center; padding-bottom: 5px;\">\r\n By logging in, I agree to the\r\n <a href=\"https://www.usf.edu/it/about-us/policies-standards/acceptable-use.aspx\">\r\n terms and policies.\r\n </a>\r\n </div>\r\n <hr>\r\n <el-form-item style=\"font-family: Montserrat,Helvetica,Arial,sans-serif; line-height: 1.5; letter-spacing: .01rem; color: #626262; text-align:center; margin-bottom: 20px;\">\r\n <el-button @click=\"contactDialogVisible = true\">\r\n Contact Support\r\n </el-button>\r\n </el-form-item>\r\n </el-form> -->\r\n\r\n </div>\r\n </div>\r\n <div>\r\n <contactVue v-if=\"contactDialogVisible\" :contact-dialog-visible.sync=\"contactDialogVisible\" @close=\"contactDialogVisible = false\" />\r\n </div>\r\n </div>\r\n</template>\r\n\r\n<script>\r\n\r\nimport { mapActions } from 'vuex'\r\nimport * as surveyService from '@/services/survey.service'\r\nimport * as termService from '@/services/term.service'\r\nimport contactVue from '@/views/support/Contact.vue'\r\n// Contains login form and logics to log users in.\r\nexport default {\r\n\tname: 'Login',\r\n\tcomponents: {\r\n\t\tcontactVue\r\n\t},\r\n\t data() {\r\n\t\treturn {\r\n\t\t\tcontactDialogVisible: false,\r\n\t\t\tusername: '',\r\n\t\t\tpassword: '',\r\n\t\t\tloading: false,\r\n\t\t\ttermCode: '',\r\n\t\t\torgCode: '',\r\n\t\t\tloggedUserName: ''\r\n\t\t}\r\n\t},\r\n\tmounted() {\r\n\t\twindow.addEventListener('keypress', function(e) {\r\n\t\t\tif (e.which == 13) {\r\n\t\t\t\tdocument.querySelector('#netId-login-btn').click()\r\n\t\t\t\treturn false\r\n\t\t\t}\r\n\t\t})\r\n\t},\r\n\tmethods: {\r\n\t\t...mapActions('auth', ['ldapLogin']),\r\n\t\t...mapActions('enrollment', ['getEnrollments']),\r\n\t\t// @vuese\r\n\t\t// Log user in.\r\n\t\tasync onLogin() {\r\n\t\t\t// Form validation to be completed\r\n\t\t\tthis.loading = true\r\n\t\t\tconst payload = new URLSearchParams()\r\n\t\t\tpayload.append('client_id', process.env.VUE_APP_CLIENT_ID)\r\n\t\t\tpayload.append('client_secret', process.env.VUE_APP_CLIENT_SECRET)\r\n\t\t\tpayload.append('grant_type', 'password')\r\n\t\t\tpayload.append('username', 'USF;' + this.username)\r\n\t\t\tpayload.append('password', this.password)\r\n\t\t\t// Authenticate user then redirect to dashboard\r\n\t\t\tconst user = await this.ldapLogin(payload)\r\n\t\t\tif (user) {\r\n\t\t\t\tthis.loading = false\r\n\t\t\t\t// check optin status before redirecting user to /courses\r\n\t\t\t\tthis.checkOptInStatus()\r\n\t\t\t\tthis.$router.push('courses')\r\n\t\t\t} else {\r\n\t\t\t\tthis.loading = false\r\n\t\t\t}\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Check for user's opt in status before logging in.\r\n\t\t// Display consent if not already opted in.\r\n\t\tasync checkOptInStatus() {\r\n\t\t\tthis.orgCode = this.$store.state.auth.user.OrgCode\r\n\t\t\tthis.loggedUserName = this.$store.state.auth.user.UserName\r\n\t\t\tconst currentTerm = await termService.getCurrentTerm(this.orgCode)\r\n\t\t\tthis.termCode = currentTerm.TermCode\r\n\t\t\tconst status = await surveyService.checkOptInStatus(this.orgCode, this.loggedUserName, this.termCode)\r\n\t\t\tif (status.length == 0) {\r\n\t\t\t\tconst roles = this.$store.state.auth.user.Roles\r\n\t\t\t\tif (roles.includes('Administrator')) {\r\n\t\t\t\t\tthis.displayInstructorConsent()\r\n\t\t\t\t} else if (roles.includes('Instructor')) {\r\n\t\t\t\t\tthis.displayInstructorConsent()\r\n\t\t\t\t} else if (roles.includes('Student')) {\r\n\t\t\t\t\tthis.displayStudentConsent()\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tthis.$router.push('courses')\r\n\t\t\t}\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Display instructor consent.\r\n\t\tdisplayInstructorConsent() {\r\n\t\t\tthis.$alert(`<div id=\"instructor-consent\" style=\"overflow: auto; background-color: #FFF; padding: 10px; height: 78vh; border: #cecaca solid 1px; \">\r\n <p><strong>Informed Consent for Instructors to Participate in Research </strong></p>\r\n <p>Information to Consider Before Taking Part in this Research Study</p>\r\n <p> </p>\r\n <p>Pro #002887</p>\r\n <p>\r\n Academic researchers study many topics. To do this, we need the help of people who agree to\r\n take part in a research study. We are asking you to take part in USF Writes Corpus Research.\r\n </p>\r\n <p> </p>\r\n <p>\r\n The person who is in charge of these research studies is Dr. Lauren Arrington. This person is called\r\n the Principal Investigator. This consent form provides you the opportunity to accept or decline\r\n having your texts and usage of USF Writes become a part of the research corpus. If you chose to opt\r\n out of the research, you will still be able to use the platform to fulfill your teaching obligations.\r\n </p>\r\n <p> </p>\r\n <p>\r\n We are hoping to learn more about instructors like yourself. We do this by studying the activity\r\n of as many users of USF Writes as we can. Basically, this helps us re-design and update three\r\n things: the USF Writes interface, the assignments you’re asked to grade in the system, and the\r\n writing-intensive course(s) you’re teaching. The more we learn about your teaching in the\r\n system, the more we can help instructors like you have the best educational experience possible.\r\n </p>\r\n <p> </p>\r\n <p>\r\n No discomforts and risks are expected from the procedures beyond those commonly associated\r\n with participation in a face-to-face or online university class. We are unsure if you will receive\r\n any benefits by taking part in this research study. It’s important that you know that whether or\r\n not you opt into this research, your employment will NOT be affected. You have the alternative\r\n to choose not to participate in this research study. You should only take part in this study if you\r\n want to volunteer; you are free to participate in this research or withdraw at any time. There will\r\n be no penalty or loss of benefits you are entitled to receive if you stop taking part in this study.\r\n </p>\r\n <p> </p>\r\n <p>\r\n We are asking to collect the materials you are already using as part of class. We’d like your\r\n permission to add your grading to the USF Writes corpus. We’d like to explore your usage of\r\n USF Writes, such as your comments and scores on your students’ essays, and peer reviews, and\r\n your trace data, such as the amount of time you spend reviewing documents.\r\n </p>\r\n <p> </p>\r\n <p>\r\n We are not sure of the total number of people who will participate because this is a long-term\r\n study. However, we expect you will be one of 300-400 instructors who enroll in this research in\r\n the next few years, should you opt in below.\r\n </p>\r\n <p> </p>\r\n <p>\r\n It is possible, although unlikely, that unauthorized individuals could gain access to your\r\n responses because you are responding online. Your participation via USF Writes involves risks\r\n similar to a person’s everyday use of the Internet. It is possible, although unlikely, that\r\n unauthorized individuals could gain access to your responses. Confidentiality will be maintained\r\n to the degree permitted by the technology used. No guarantees can be made regarding the \r\n interception of data sent via the Internet. However, your participation in this online study\r\n involves risks similar to a person’s everyday use of the Internet. If you complete and submit an\r\n anonymous survey and later request your data be withdrawn, this may or may not be possible as\r\n the researcher may be unable to extract anonymous data from the database.\r\n </p>\r\n <p> </p>\r\n <p>\r\n Certain people may need to see your study records. By law, anyone who looks at your records\r\n must keep them completely confidential. The only people who will be allowed to see these\r\n records are Dr. Arrington and approved study staff.\r\n </p>\r\n <p> </p>\r\n <p>If you agree to participate in this research project, your work will be made available under the following terms to researchers:</p>\r\n <ul>\r\n <li>No personal information shall be given or sold to any marketing, solicitation, or data mining organization of any type</li>\r\n <li>Any information that can be used to identify you will remain confidential and will be disclosed only with your permission or as required by law</li>\r\n <li>Researchers will ensure that your personal information is not published or otherwise disclosed in any publications or presentations of research</li>\r\n </ul>\r\n <p> </p>\r\n <p><strong>Contact Information</strong></p>\r\n <p>\r\n If you have any questions about your rights as a research participant, please contact the USF IRB\r\n at 813-974-5638. If you have questions regarding the research, please contact the Principal\r\n Investigator at laurenarrington@usf.edu or the USF Internal Review Board at RSCH-IRB@usf.edu.\r\n You can print a copy of this consent form for your records.\r\n </p>\r\n <p> </p>\r\n <p>I freely give my consent to take part in this study. I understand that by opting in I am agreeing to take part in research and I am 18 years of age or older.</p>\r\n </div>`, 'USF Writes Disclosure and Consent', {\r\n\t\t\t\tdangerouslyUseHTMLString: true,\r\n\t\t\t\tshowClose: false,\r\n\t\t\t\tconfirmButtonText: 'Opt In',\r\n\t\t\t\tcancelButtonText: 'Opt Out',\r\n\t\t\t\tshowConfirmButton: true,\r\n\t\t\t\tshowCancelButton: true,\r\n\t\t\t\tcustomClass: 'login-consent-form'\r\n\t\t\t}).then(() => {\r\n\t\t\t\tconst optInStatus = {\r\n\t\t\t\t\t'Term_Code': this.termCode,\r\n\t\t\t\t\t'User_Id': this.loggedUserName,\r\n\t\t\t\t\t'Org_Code': this.orgCode,\r\n\t\t\t\t\t'Opt_In_Status': 'Y'\r\n\r\n\t\t\t\t}\r\n\t\t\t\tsurveyService.postOptInStatus(optInStatus)\r\n\t\t\t\t\t.then(result => {\r\n\t\t\t\t\t\tthis.$message({\r\n\t\t\t\t\t\t\ttype: 'success',\r\n\t\t\t\t\t\t\tmessage: 'You have successfully opted in.'\r\n\t\t\t\t\t\t})\r\n\t\t\t\t\t\tthis.$router.push('courses')\r\n\t\t\t\t\t})\r\n\t\t\t}).catch(() => {\r\n\t\t\t\tconst optInStatus = {\r\n\t\t\t\t\t'Term_Code': this.termCode,\r\n\t\t\t\t\t'User_Id': this.loggedUserName,\r\n\t\t\t\t\t'Org_Code': this.orgCode,\r\n\t\t\t\t\t'Opt_In_Status': 'N'\r\n\t\t\t\t}\r\n\t\t\t\tsurveyService.postOptInStatus(optInStatus)\r\n\t\t\t\t\t.then(result => {\r\n\t\t\t\t\t\tthis.$message({\r\n\t\t\t\t\t\t\ttype: 'info',\r\n\t\t\t\t\t\t\tmessage: 'You have successfully opted out.'\r\n\t\t\t\t\t\t})\r\n\t\t\t\t\t\tthis.$router.push('courses')\r\n\t\t\t\t\t})\r\n\t\t\t})\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Display student consent.\r\n\t\tdisplayStudentConsent() {\r\n\t\t\tthis.$alert(`<div id=\"student-consent\" style=\"overflow: auto; background-color: #FFF; padding: 10px; height: 78vh; border: #cecaca solid 1px; \">\r\n <p><strong>Informed Consent for Students to Participate in Research </strong></p>\r\n <p>Information to Consider Before Taking Part in this Research Study</p>\r\n <p> </p>\r\n <p>Pro #002887</p>\r\n <p>\r\n Academic researchers study many topics. To do this, we need the help of people who agree to\r\n take part in a research study. We are asking you to take part in a research study, USF Writes\r\n Corpus Research.\r\n </p>\r\n <p> </p>\r\n <p>\r\n The person who is in charge of this research study is Dr. Lauren Arrington. This person is called\r\n the Principal Investigator. This consent form provides you the opportunity to accept or decline\r\n having your texts and usage of USF Writes become a part of the research corpus.\r\n </p>\r\n <p> </p>\r\n <p>\r\n We are hoping to learn more about writers like yourself. We do this by studying the activity of as\r\n many users of USF Writes as we can. Basically, this helps us re-design and update three things:\r\n USF Writes as a tool for teaching writing, the writing you’re asked to submit in the system, and\r\n the writing-intensive course(s) you’re in. The more we learn about your writing, the more we can\r\n help students like you have the best educational experience possible.\r\n </p>\r\n <p> </p>\r\n <p>\r\n No discomforts and risks are expected from the procedures beyond those commonly associated\r\n with participation in a face-to-face or online university class. We are unsure if you will receive\r\n any benefits by taking part in this research study. It’s important that you know that whether or\r\n not you opt into this research, your grades in this course will NOT be affected. If your university\r\n charges a fee for the use of USF Writes, you still need to pay that, regardless of whether you’ve\r\n decided to participate in the study. You have the alternative to choose not to participate in this\r\n research study. You should only take part in this study if you want to volunteer; you are free to\r\n participate in this research or withdraw at any time. There will be no penalty or loss of benefits\r\n you are entitled to receive if you stop taking part in this study.\r\n </p>\r\n <p> </p>\r\n <p>\r\n We are asking for two different things. We’d like to (1) collect the materials you are already\r\n doing as part of class and (2) ask you to complete a few extra surveys.\r\n </p>\r\n <p> </p>\r\n <p>\r\n Regarding #1, your coursework: We’d like your permission to add your coursework to the USF\r\n Writes corpus. We’d like to explore your usage of USF Writes, such as analyzing your essays,\r\n your comments and scores on your peers’ essays, your instructor’s comments and scores, your\r\n responses to survey questions, your self reflections on your peer reviews, your ratings and\r\n reviews of your reviewers; and your trace data, such as the amount of time you spend reviewing\r\n documents. Note, in USF Writes, some surveys are part of the education experience, such as the\r\n surveys that ask you to rate the overall helpfulness of a peers’ reviews or the surveys that ask you\r\n to reflect on your writing process for a particular project.\r\n </p>\r\n <p> </p>\r\n <p>\r\n Regarding #2, research surveys: In USF Writes, there are a few surveys associated with research\r\n rather than pedagogy which are different from the required coursework, including a pre-semester\r\n survey that asks you to report on your background as a writer, a demographic survey, and a post-semester survey. \r\n We expect these surveys will take between 20-30 minutes total of your time.\r\n Even if you opt-in now, you can always decide not to take them when we send them to you.\r\n </p>\r\n <p> </p>\r\n <p>\r\n We are not sure of the total number of people who will participate because this is a long-term\r\n study. However, we expect you will be one of the 10,000+ students who enroll in this research in\r\n the next few years, should you opt in below.\r\n </p>\r\n <p> </p>\r\n <p>\r\n If you are a student at USF and you consent, the researchers may access FERPA-protected data\r\n from other university offices. At USF, this data will help the researchers understand how\r\n students write and learn about writing and the relationship between writing and retention in the\r\n university. The FERPA-protected data includes information such as grades for your current and\r\n subsequent courses; gender assignment; gender identification; race/ethnicity; student status;\r\n enrollment status; age; SAT or ACT scores; high school GPA; terms of enrollment at the\r\n University of South Florida; concurrent and longitudinal GPA; retention by term; and graduation\r\n by term.\r\n </p>\r\n <p> </p>\r\n <p>\r\n Your participation via USF Writes involves risks similar to a person’s everyday use of the\r\n Internet. It is possible, although unlikely, that unauthorized individuals could gain access to your\r\n responses. Confidentiality will be maintained to the degree permitted by the technology used. No\r\n guarantees can be made regarding the interception of data sent via the Internet. However, your\r\n participation in this online study involves risks similar to a person’s everyday use of the Internet.\r\n If you complete and submit an anonymous survey and later request your data be withdrawn, this\r\n may or may not be possible as the researcher may be unable to extract anonymous data from the\r\n database.\r\n </p>\r\n <p> </p>\r\n <p>\r\n Certain people may need to see your study records. By law, anyone who looks at your records\r\n must keep them completely confidential. The only people who will be allowed to see these\r\n records are Dr. Arrington and approved study staff.\r\n </p>\r\n <p> </p>\r\n <p>If you agree to participate in this research project, your work will be made available under the following terms to researchers:</p>\r\n <ul>\r\n <li>No personal information shall be given or sold to any marketing, solicitation, or data mining organization of any type</li>\r\n <li>Any information that can be used to identify you will remain confidential and will be disclosed only with your permission or as required by law</li>\r\n <li>Researchers will ensure that your personal information is not published or otherwise disclosed in any publications or presentations of research</li>\r\n </ul>\r\n <p> </p>\r\n <p><strong>Contact Information</strong></p>\r\n <p>\r\n If you have any questions about your rights as a research participant, please contact the USF IRB\r\n at 813-974-5638. If you have questions regarding the research, please contact the Principal\r\n Investigator at laurenarrington@usf.edu or the USF IRB at RSCH-IRB@usf.edu. You can print a copy\r\n of this consent form for your records.\r\n </p>\r\n <p> </p>\r\n <p>I freely give my consent to take part in this study. I understand that by opting in I am agreeing to take part in research and I am 18 years of age or older.</p>\r\n </div>`, 'USF Writes Disclosure and Consent', {\r\n\t\t\t\tdangerouslyUseHTMLString: true,\r\n\t\t\t\tshowClose: false,\r\n\t\t\t\tconfirmButtonText: 'Opt In',\r\n\t\t\t\tcancelButtonText: 'Opt Out',\r\n\t\t\t\tshowConfirmButton: true,\r\n\t\t\t\tshowCancelButton: true,\r\n\t\t\t\tcustomClass: 'login-consent-form'\r\n\r\n\t\t\t}).then(() => {\r\n\t\t\t\tconst optInStatus = {\r\n\t\t\t\t\t'Term_Code': this.termCode,\r\n\t\t\t\t\t'User_Id': this.loggedUserName,\r\n\t\t\t\t\t'Org_Code': this.orgCode,\r\n\t\t\t\t\t'Opt_In_Status': 'Y'\r\n\t\t\t\t}\r\n\t\t\t\tsurveyService.postOptInStatus(optInStatus)\r\n\t\t\t\t\t.then(result => {\r\n\t\t\t\t\t\tthis.$message({\r\n\t\t\t\t\t\t\ttype: 'success',\r\n\t\t\t\t\t\t\tmessage: 'You have successfully opted in.'\r\n\t\t\t\t\t\t})\r\n\t\t\t\t\t\tthis.$router.push('courses')\r\n\t\t\t\t\t})\r\n\t\t\t}).catch(() => {\r\n\t\t\t\tconst optInStatus = {\r\n\t\t\t\t\t'Term_Code': this.termCode,\r\n\t\t\t\t\t'User_Id': this.loggedUserName,\r\n\t\t\t\t\t'Org_Code': this.orgCode,\r\n\t\t\t\t\t'Opt_In_Status': 'N'\r\n\t\t\t\t}\r\n\t\t\t\tsurveyService.postOptInStatus(optInStatus)\r\n\t\t\t\t\t.then(result => {\r\n\t\t\t\t\t\tthis.$message({\r\n\t\t\t\t\t\t\ttype: 'info',\r\n\t\t\t\t\t\t\tmessage: 'You have successfully opted out.'\r\n\t\t\t\t\t\t})\r\n\t\t\t\t\t\tthis.$router.push('courses')\r\n\t\t\t\t\t})\r\n\t\t\t})\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Get last activity date.\r\n\t\tgetlastActivityDate() {\r\n\t\t\tconst today = this.$moment()._d\r\n\t\t\treturn today.getFullYear() + '-' + (today.getMonth() + 1) + '-' +\r\n today.getDate() + ' ' + today.getHours() + ':' + today.getMinutes() + ':' + today.getSeconds()\r\n\t\t}\r\n\t}\r\n\r\n}\r\n\r\n</script>\r\n\r\n<style lang=\"scss\" scoped>\r\n@import '../../assets/style/custom.scss';\r\n</style>\r\n\r\n<style scoped>\r\n\r\n.startp-nav nav .others-option .btn.btn-light{\r\n border: 2px dashed rgb(0, 103, 71);\r\n text-transform:none;\r\n}\r\n.startp-nav nav .others-option .btn.btn-light:hover, .startp-nav nav .others-option .btn.btn-light:focus {\r\n color: white;\r\n border-color: rgb(0, 103, 71);\r\n}\r\n\r\n.startp-nav nav .others-option .btn.btn-light::after, .startp-nav nav .others-option .btn.btn-light::before {\r\n color: white;\r\n background: rgb(0, 103, 71);\r\n}\r\n\r\n.startp-nav nav .others-option .btn.btn-primary::after, .startp-nav nav .others-option .btn.btn-primary::before {\r\n background: rgb(0, 103, 71);\r\n -webkit-box-shadow: 0 13px 27px 0 rgba(0, 103, 71, 0.25);\r\n box-shadow: 0 13px 27px 0 rgba(0, 103, 71, 0.25);\r\n}\r\n\r\n.startp-nav nav .others-option .btn.btn-primary {\r\n -webkit-box-shadow: 0 13px 27px 0 rgba(0, 103, 71, 0.25);\r\n box-shadow: 0 13px 27px 0 rgba(0, 103, 71, 0.25);\r\n}\r\n\r\n.register:after, .register:before {\r\n background: rgb(0, 103, 71);\r\n -webkit-box-shadow: 0 13px 27px 0 rgba(0, 103, 71, 0.25);\r\n box-shadow: 0 13px 27px 0 rgba(0, 103, 71, 0.25);\r\n -webkit-transition: 0.5s;\r\n transition: 0.5s;\r\n}\r\n\r\n.startp-nav nav .others-option .btn.btn-light::after, .startp-nav nav .others-option .btn.btn-light::before {\r\n color: white;\r\n background: rgb(0, 103, 71);\r\n}\r\n\r\n.btn-primary:not(:disabled):not(.disabled).active, .btn-primary:not(:disabled):not(.disabled):active, .btn-primary .show > .btn-primary.dropdown-toggle{\r\n -webkit-box-shadow: 0 13px 27px 0 rgba(0, 103, 71, 0.25);\r\n box-shadow: 0 13px 27px 0 rgba(0, 103, 71, 0.25);\r\n}\r\n\r\n.btn-primary:hover{\r\n -webkit-box-shadow: 0 13px 27px 0 rgba(0, 103, 71, 0.25);\r\n box-shadow: 0 13px 27px 0 rgba(0, 103, 71, 0.25);\r\n}\r\n\r\n.btn::after, .btn::before {\r\n content: '';\r\n position: absolute;\r\n top: 0;\r\n height: 100%;\r\n width: 0;\r\n -webkit-transition: 0.5s;\r\n transition: 0.5s;\r\n background: rgb(0, 103, 71);\r\n z-index: -1;\r\n}\r\n\r\n.banner-form{\r\n background: #ffffff;\r\n -webkit-box-shadow: 0 2px 48px 0 rgba(0, 0, 0, 0.08);\r\n box-shadow: 0 2px 48px 0 rgba(0, 0, 0, 0.08);\r\n padding: 50px 30px;\r\n border-radius: 5px;\r\n}\r\n\r\n.ml-main-section .ml-banner-content ul {\r\n padding: 0;\r\n margin: 0;\r\n list-style-type: none;\r\n}\r\n\r\n.ml-main-section .ml-banner-content ul li{\r\n margin-bottom: 12px;\r\n position: relative;\r\n color: white;\r\n font-size: 16px;\r\n padding-left: 30px;\r\n}\r\n\r\n.ml-main-section .ml-banner-content ul li::before {\r\n position: absolute;\r\n left: 0;\r\n top: 50%;\r\n -webkit-transform: translateY(-50%);\r\n transform: translateY(-50%);\r\n width: 20px;\r\n height: 2px;\r\n background: #44ce6f;\r\n content: '';\r\n}\r\n\r\n.ml-banner-content p {\r\n font-size: 16px;\r\n max-width: 490px;\r\n}\r\n\r\n</style>\r\n\r\n<style>\r\n.login-consent-form{\r\n width: 50% !important;\r\n}\r\n.login-consent-form>.el-message-box__header, .login-consent-form>.el-message-box__btns{\r\n text-align: center !important;\r\n}\r\n</style>\r\n\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./NewLogin.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./NewLogin.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./NewLogin.vue?vue&type=template&id=49a3d32b&scoped=true&\"\nimport script from \"./NewLogin.vue?vue&type=script&lang=js&\"\nexport * from \"./NewLogin.vue?vue&type=script&lang=js&\"\nimport style0 from \"./NewLogin.vue?vue&type=style&index=0&id=49a3d32b&lang=scss&scoped=true&\"\nimport style1 from \"./NewLogin.vue?vue&type=style&index=1&id=49a3d32b&scoped=true&lang=css&\"\nimport style2 from \"./NewLogin.vue?vue&type=style&index=2&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"49a3d32b\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"page-reg h-screen-reg flex w-full\"},[_c('div',{staticClass:\"content-reg sm-c-reg md-c-reg lg-c-reg xl-c-reg mx-auto\"},[_c('div',{staticClass:\"right-reg sm-r-reg md-r-reg lg-r-reg mx-auto\"},[_c('el-form',[_c('div',{staticClass:\"title\"},[_c('h4',{staticClass:\"createAccount\"},[_vm._v(\"\\n Contact Support\\n \")]),_c('p',{staticClass:\"fillAccount\"},[_vm._v(\"\\n Fill the below form to create a new account.\\n \")])]),_c('el-form-item',[_c('el-select',{staticClass:\"selectOrg\",attrs:{\"placeholder\":\"Select an Organization\"}})],1),_c('el-form-item',[_c('el-select',{staticClass:\"selectSemester\",attrs:{\"placeholder\":\"No class available this semester\"}})],1),_c('el-form-item',[_c('el-input',{attrs:{\"id\":\"regCodeInput\",\"type\":\"text\"},on:{\"focus\":_vm.regCodeFocus,\"blur\":_vm.regCodeBlur}}),_c('span',{staticClass:\"regCode\",attrs:{\"id\":\"regCode\"}},[_vm._v(\"\\n Registration Code\\n \")])],1),_c('el-form-item',[_c('el-input',{attrs:{\"id\":\"firstNameInput\",\"type\":\"text\"},on:{\"focus\":_vm.firstNamefocus,\"blur\":_vm.firstNameBlur}}),_c('span',{staticClass:\"firstName\",attrs:{\"id\":\"firstName\"}},[_vm._v(\"\\n First Name\\n \")])],1),_c('el-form-item',[_c('el-input',{attrs:{\"id\":\"middleNameInput\",\"type\":\"text\"},on:{\"focus\":_vm.middleNameFocus,\"blur\":_vm.middleNameBlur}}),_c('span',{staticClass:\"middleName\",attrs:{\"id\":\"middleName\"}},[_vm._v(\"\\n Middle Name\\n \")])],1),_c('el-form-item',[_c('el-input',{attrs:{\"id\":\"lastNameInput\",\"type\":\"text\"},on:{\"focus\":_vm.lastNameFocus,\"blur\":_vm.lastNameBlur}}),_c('span',{staticClass:\"lastName\",attrs:{\"id\":\"lastName\"}},[_vm._v(\"\\n Last Name\\n \")])],1),_c('el-form-item',[_c('el-input',{attrs:{\"id\":\"emailAddressInput\",\"type\":\"text\"},on:{\"focus\":_vm.emailAddressFocus,\"blur\":_vm.emailAddressBlur}}),_c('span',{staticClass:\"email\",attrs:{\"id\":\"email\"}},[_vm._v(\"\\n Email Address\\n \")])],1),_c('el-form-item',[_c('el-input',{attrs:{\"id\":\"confirmEmailInput\",\"type\":\"text\"},on:{\"focus\":_vm.confirmEmailFocus,\"blur\":_vm.confirmEmailBlur}}),_c('span',{staticClass:\"confirmEmail\",attrs:{\"id\":\"confirmEmail\"}},[_vm._v(\"\\n Confirm Email\\n \")])],1),_c('el-form-item',[_c('el-input',{attrs:{\"id\":\"passwordInput\",\"type\":\"password\"},on:{\"focus\":_vm.passwordFocus,\"blur\":_vm.passwordBlur}}),_c('span',{staticClass:\"password\",attrs:{\"id\":\"password\"}},[_vm._v(\"\\n Password\\n \")])],1),_c('el-form-item',[_c('el-input',{attrs:{\"id\":\"confirmPasswordInput\",\"type\":\"password\"},on:{\"focus\":_vm.confirmPasswordFocus,\"blur\":_vm.confirmPasswordBlur}}),_c('span',{staticClass:\"confirmPassword\",attrs:{\"id\":\"confirmPassword\"}},[_vm._v(\"\\n Confirm Password\\n \")])],1),_c('el-form-item',[_c('el-button',{on:{\"click\":_vm.onLogin}},[_vm._v(\"\\n Back\\n \")]),_c('el-button',{directives:[{name:\"loading\",rawName:\"v-loading\",value:(_vm.loading),expression:\"loading\"}],staticStyle:{\"float\":\"right\"},attrs:{\"type\":\"primary\"}},[_vm._v(\"\\n Submit\\n \")])],1)],1)],1),_vm._m(0)])])}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"left-reg sm-l-reg md-l-reg lg-l-reg lgx-l-reg mx-auto \"},[_c('img',{attrs:{\"src\":require(\"@/assets/newRegister.png\")}})])}]\n\nexport { render, staticRenderFns }","<template>\r\n <div class=\"page-reg h-screen-reg flex w-full\">\r\n <div class=\"content-reg sm-c-reg md-c-reg lg-c-reg xl-c-reg mx-auto\">\r\n <div class=\"right-reg sm-r-reg md-r-reg lg-r-reg mx-auto\">\r\n <el-form>\r\n <div class=\"title\">\r\n <h4 class=\"createAccount\">\r\n Contact Support\r\n </h4>\r\n <p class=\"fillAccount\">\r\n Fill the below form to create a new account.\r\n </p>\r\n </div>\r\n <el-form-item>\r\n <el-select class=\"selectOrg\" placeholder=\"Select an Organization\" />\r\n </el-form-item>\r\n <el-form-item>\r\n <el-select class=\"selectSemester\" placeholder=\"No class available this semester\" />\r\n </el-form-item>\r\n <el-form-item>\r\n <el-input id=\"regCodeInput\" type=\"text\" @focus=\"regCodeFocus\" @blur=\"regCodeBlur\" />\r\n <span id=\"regCode\" class=\"regCode\">\r\n Registration Code\r\n </span>\r\n </el-form-item>\r\n <el-form-item>\r\n <el-input id=\"firstNameInput\" type=\"text\" @focus=\"firstNamefocus\" @blur=\"firstNameBlur\" />\r\n <span id=\"firstName\" class=\"firstName\">\r\n First Name\r\n </span>\r\n </el-form-item>\r\n <el-form-item>\r\n <el-input id=\"middleNameInput\" type=\"text\" @focus=\"middleNameFocus\" @blur=\"middleNameBlur\" />\r\n <span id=\"middleName\" class=\"middleName\">\r\n Middle Name\r\n </span>\r\n </el-form-item>\r\n <el-form-item>\r\n <el-input id=\"lastNameInput\" type=\"text\" @focus=\"lastNameFocus\" @blur=\"lastNameBlur\" />\r\n <span id=\"lastName\" class=\"lastName\">\r\n Last Name\r\n </span>\r\n </el-form-item>\r\n <el-form-item>\r\n <el-input id=\"emailAddressInput\" type=\"text\" @focus=\"emailAddressFocus\" @blur=\"emailAddressBlur\" />\r\n <span id=\"email\" class=\"email\">\r\n Email Address\r\n </span>\r\n </el-form-item>\r\n <el-form-item>\r\n <el-input id=\"confirmEmailInput\" type=\"text\" @focus=\"confirmEmailFocus\" @blur=\"confirmEmailBlur\" />\r\n <span id=\"confirmEmail\" class=\"confirmEmail\">\r\n Confirm Email\r\n </span>\r\n </el-form-item>\r\n <el-form-item>\r\n <el-input id=\"passwordInput\" type=\"password\" @focus=\"passwordFocus\" @blur=\"passwordBlur\" />\r\n <span id=\"password\" class=\"password\">\r\n Password\r\n </span>\r\n </el-form-item>\r\n <el-form-item>\r\n <el-input id=\"confirmPasswordInput\" type=\"password\" @focus=\"confirmPasswordFocus\" @blur=\"confirmPasswordBlur\" />\r\n <span id=\"confirmPassword\" class=\"confirmPassword\">\r\n Confirm Password\r\n </span>\r\n </el-form-item>\r\n <el-form-item>\r\n <el-button @click=\"onLogin\">\r\n Back\r\n </el-button>\r\n <el-button v-loading=\"loading\" type=\"primary\" style=\"float: right\">\r\n Submit\r\n </el-button>\r\n </el-form-item>\r\n </el-form>\r\n </div>\r\n <div class=\"left-reg sm-l-reg md-l-reg lg-l-reg lgx-l-reg mx-auto \">\r\n <img src=\"@/assets/newRegister.png\">\r\n </div>\r\n </div>\r\n </div>\r\n</template>\r\n\r\n<script>\r\nexport default {\r\n\tname: 'Register',\r\n\t data() {\r\n\t\treturn {\r\n\t\t\tloading: false\r\n\t\t}\r\n\t},\r\n\tmethods: {\r\n\t\tonLogin() {\r\n\t\t\tthis.$router.push({ path: '/' })\r\n\t\t},\r\n\t\tregCodeFocus() {\r\n\t\t\tconst spid = document.getElementById('regCode')\r\n\t \t\tconst box = document.getElementById('regCodeInput')\r\n\t \t \tspid.style.top = '-30px'\r\n\t \t\tspid.style.left = '0px'\r\n\t \t\tspid.style.fontSize = '0.7rem'\r\n\t \t\tspid.style.color = 'rgb(115, 103, 240)'\r\n\t \t\tbox.style.borderColor = 'rgb(115, 103, 240)'\r\n\t\t},\r\n\t\tregCodeBlur() {\r\n\t\t const x = document.getElementById('regCodeInput')\r\n\t\t x.style.border = '1px solid #dcdfe6'\r\n\t\t if (x.value) {\r\n\t\t\t\tconst spid = document.getElementById('regCode')\r\n\t\t \t\tspid.style.top = '-30px'\r\n\t\t\t\tspid.style.left = '0px'\r\n\t\t\t\tspid.style.fontSize = '0.7rem'\r\n\t\t\t\tspid.style.color = 'rgb(115, 103, 240)'\r\n\t\t } else {\r\n\t\t\t\tconst spid = document.getElementById('regCode')\r\n\t\t\t\tspid.style.pointerEvents = 'none'\r\n\t\t\t\tspid.style.position = ' absolute'\r\n\t\t\t\tspid.style.left = '10px'\r\n\t\t\t\tspid.style.top = '0px'\r\n\t\t\t\tspid.style.color = 'rgba(0,0,0,.4)'\r\n\t\t\t\tspid.style.cursor = 'text'\r\n\t\t\t\tspid.style.fontSize = '.80rem'\r\n\t\t\t}\r\n\t\t},\r\n\t\tfirstNamefocus() {\r\n\t\t\tconst spid = document.getElementById('firstName')\r\n\t \t\tconst box = document.getElementById('firstNameInput')\r\n\t \t \tspid.style.top = '-30px'\r\n\t \t\tspid.style.left = '0px'\r\n\t \t\tspid.style.fontSize = '0.7rem'\r\n\t \t\tspid.style.color = 'rgb(115, 103, 240)'\r\n\t \t\tbox.style.borderColor = 'rgb(115, 103, 240)'\r\n\t\t},\r\n\t\tfirstNameBlur() {\r\n\t\t\tconst x = document.getElementById('firstNameInput')\r\n\t\t\tx.style.border = '1px solid #dcdfe6'\r\n\t\t\tif (x.value) {\r\n\t\t\t\tconst spid = document.getElementById('firstName')\r\n\t\t\t\tspid.style.top = '-30px'\r\n\t\t\t\tspid.style.left = '0px'\r\n\t\t\t\tspid.style.fontSize = '0.7rem'\r\n\t\t\t\tspid.style.color = 'rgb(115, 103, 240)'\r\n\t\t\t} else {\r\n\t\t\t\tconst spid = document.getElementById('firstName')\r\n\t\t\t\tspid.style.pointerEvents = 'none'\r\n\t\t\t\tspid.style.position = ' absolute'\r\n\t\t\t\tspid.style.left = '10px'\r\n\t\t\t\tspid.style.top = '0px'\r\n\t\t\t\tspid.style.color = 'rgba(0,0,0,.4)'\r\n\t\t\t\tspid.style.cursor = 'text'\r\n\t\t\t\tspid.style.fontSize = '.80rem'\r\n\t\t\t}\r\n\t\t},\r\n\t\tmiddleNameFocus() {\r\n\t\t\tconst spid = document.getElementById('middleName')\r\n\t \t\tconst box = document.getElementById('middleNameInput')\r\n\t \t \tspid.style.top = '-30px'\r\n\t \t\tspid.style.left = '0px'\r\n\t \t\tspid.style.fontSize = '0.7rem'\r\n\t \t\tspid.style.color = 'rgb(115, 103, 240)'\r\n\t \t\tbox.style.borderColor = 'rgb(115, 103, 240)'\r\n\t\t},\r\n\t\tmiddleNameBlur() {\r\n\t\t\tconst x = document.getElementById('middleNameInput')\r\n\t\t\tx.style.border = '1px solid #dcdfe6'\r\n\t\t\tif (x.value) {\r\n\t\t\t\tconst spid = document.getElementById('middleName')\r\n\t\t \t\tspid.style.top = '-30px'\r\n\t\t\t\tspid.style.left = '0px'\r\n\t\t\t\tspid.style.fontSize = '0.7rem'\r\n\t\t\t\tspid.style.color = 'rgb(115, 103, 240)'\r\n\t\t } else {\r\n\t\t\t\tconst spid = document.getElementById('middleName')\r\n\t\t\t\tspid.style.pointerEvents = 'none'\r\n\t\t\t\tspid.style.position = ' absolute'\r\n\t\t\t\tspid.style.left = '10px'\r\n\t\t\t\tspid.style.top = '0px'\r\n\t\t\t\tspid.style.color = 'rgba(0,0,0,.4)'\r\n\t\t\t\tspid.style.cursor = 'text'\r\n\t\t\t\tspid.style.fontSize = '.80rem'\r\n\t\t\t}\r\n\t\t},\r\n\t\tlastNameFocus() {\r\n\t\t\tconst spid = document.getElementById('lastName')\r\n\t \t\tconst box = document.getElementById('lastNameInput')\r\n\t \t \tspid.style.top = '-30px'\r\n\t \t\tspid.style.left = '0px'\r\n\t \t\tspid.style.fontSize = '0.7rem'\r\n\t \t\tspid.style.color = 'rgb(115, 103, 240)'\r\n\t \t\tbox.style.borderColor = 'rgb(115, 103, 240)'\r\n\t\t},\r\n\t\tlastNameBlur() {\r\n\t\t const x = document.getElementById('lastNameInput')\r\n\t\t x.style.border = '1px solid #dcdfe6'\r\n\t\t if (x.value) {\r\n\t\t\t\tconst spid = document.getElementById('lastName')\r\n\t\t \t\tspid.style.top = '-30px'\r\n\t\t\t\tspid.style.left = '0px'\r\n\t\t\t\tspid.style.fontSize = '0.7rem'\r\n\t\t\t\tspid.style.color = 'rgb(115, 103, 240)'\r\n\t\t } else {\r\n\t\t\t\tconst spid = document.getElementById('lastName')\r\n\t\t\t\tspid.style.pointerEvents = 'none'\r\n\t\t\t\tspid.style.position = ' absolute'\r\n\t\t\t\tspid.style.left = '10px'\r\n\t\t\t\tspid.style.top = '0px'\r\n\t\t\t\tspid.style.color = 'rgba(0,0,0,.4)'\r\n\t\t\t\tspid.style.cursor = 'text'\r\n\t\t\t\tspid.style.fontSize = '.80rem'\r\n\t\t\t}\r\n\t\t},\r\n\t\temailAddressFocus() {\r\n\t\t\tconst spid = document.getElementById('email')\r\n\t \t\tconst box = document.getElementById('emailAddressInput')\r\n\t \t \tspid.style.top = '-30px'\r\n\t \t\tspid.style.left = '0px'\r\n\t \t\tspid.style.fontSize = '0.7rem'\r\n\t \t\tspid.style.color = 'rgb(115, 103, 240)'\r\n\t \t\tbox.style.borderColor = 'rgb(115, 103, 240)'\r\n\t\t},\r\n\t\temailAddressBlur() {\r\n\t\t\tconst x = document.getElementById('emailAddressInput')\r\n\t\t\tx.style.border = '1px solid #dcdfe6'\r\n\t\t\tif (x.value) {\r\n\t\t\t\tconst spid = document.getElementById('email')\r\n\t\t \t\tspid.style.top = '-30px'\r\n\t\t\t\tspid.style.left = '0px'\r\n\t\t\t\tspid.style.fontSize = '0.7rem'\r\n\t\t\t\tspid.style.color = 'rgb(115, 103, 240)'\r\n\t\t } else {\r\n\t\t\t\tconst spid = document.getElementById('email')\r\n\t\t\t\tspid.style.pointerEvents = 'none'\r\n\t\t\t\tspid.style.position = ' absolute'\r\n\t\t\t\tspid.style.left = '10px'\r\n\t\t\t\tspid.style.top = '0px'\r\n\t\t\t\tspid.style.color = 'rgba(0,0,0,.4)'\r\n\t\t\t\tspid.style.cursor = 'text'\r\n\t\t\t\tspid.style.fontSize = '.80rem'\r\n\t\t\t}\r\n\t\t},\r\n\t\tconfirmEmailFocus() {\r\n\t\t\tconst spid = document.getElementById('confirmEmail')\r\n\t \t\tconst box = document.getElementById('confirmEmailInput')\r\n\t \t \tspid.style.top = '-30px'\r\n\t \t\tspid.style.left = '0px'\r\n\t \t\tspid.style.fontSize = '0.7rem'\r\n\t \t\tspid.style.color = 'rgb(115, 103, 240)'\r\n\t \t\tbox.style.borderColor = 'rgb(115, 103, 240)'\r\n\t\t},\r\n\t\tconfirmEmailBlur() {\r\n\t\t\tconst x = document.getElementById('confirmEmailInput')\r\n\t\t\tx.style.border = '1px solid #dcdfe6'\r\n\t\t\tif (x.value) {\r\n\t\t\t\tconst spid = document.getElementById('confirmEmail')\r\n\t\t \t\tspid.style.top = '-30px'\r\n\t\t\t\tspid.style.left = '0px'\r\n\t\t\t\tspid.style.fontSize = '0.7rem'\r\n\t\t\t\tspid.style.color = 'rgb(115, 103, 240)'\r\n\t\t } else {\r\n\t\t\t\tconst spid = document.getElementById('confirmEmail')\r\n\t\t\t\tspid.style.pointerEvents = 'none'\r\n\t\t\t\tspid.style.position = ' absolute'\r\n\t\t\t\tspid.style.left = '10px'\r\n\t\t\t\tspid.style.top = '0px'\r\n\t\t\t\tspid.style.color = 'rgba(0,0,0,.4)'\r\n\t\t\t\tspid.style.cursor = 'text'\r\n\t\t\t\tspid.style.fontSize = '.80rem'\r\n\t\t\t}\r\n\t\t},\r\n\t\tpasswordFocus() {\r\n\t\t\tconst spid = document.getElementById('password')\r\n\t \t\tconst box = document.getElementById('passwordInput')\r\n\t \t \tspid.style.top = '-30px'\r\n\t \t\tspid.style.left = '0px'\r\n\t \t\tspid.style.fontSize = '0.7rem'\r\n\t \t\tspid.style.color = 'rgb(115, 103, 240)'\r\n\t \t\tbox.style.borderColor = 'rgb(115, 103, 240)'\r\n\t\t},\r\n\t\tpasswordBlur() {\r\n\t\t\tconst x = document.getElementById('passwordInput')\r\n\t\t\tx.style.border = '1px solid #dcdfe6'\r\n\t\t\tif (x.value) {\r\n\t\t\t\tconst spid = document.getElementById('password')\r\n\t\t \t\tspid.style.top = '-30px'\r\n\t\t\t\tspid.style.left = '0px'\r\n\t\t\t\tspid.style.fontSize = '0.7rem'\r\n\t\t\t\tspid.style.color = 'rgb(115, 103, 240)'\r\n\t\t } else {\r\n\t\t\t\tconst spid = document.getElementById('password')\r\n\t\t\t\tspid.style.pointerEvents = 'none'\r\n\t\t\t\tspid.style.position = ' absolute'\r\n\t\t\t\tspid.style.left = '10px'\r\n\t\t\t\tspid.style.top = '0px'\r\n\t\t\t\tspid.style.color = 'rgba(0,0,0,.4)'\r\n\t\t\t\tspid.style.cursor = 'text'\r\n\t\t\t\tspid.style.fontSize = '.80rem'\r\n\t\t\t}\r\n\t\t},\r\n\t\tconfirmPasswordFocus() {\r\n\t\t\tconst spid = document.getElementById('confirmPassword')\r\n\t \t\tconst box = document.getElementById('confirmPasswordInput')\r\n\t \t \tspid.style.top = '-30px'\r\n\t \t\tspid.style.left = '0px'\r\n\t \t\tspid.style.fontSize = '0.7rem'\r\n\t \t\tspid.style.color = 'rgb(115, 103, 240)'\r\n\t \t\tbox.style.borderColor = 'rgb(115, 103, 240)'\r\n\t\t},\r\n\t\tconfirmPasswordBlur() {\r\n\t\t\tconst x = document.getElementById('confirmPasswordInput')\r\n\t\t\tx.style.border = '1px solid #dcdfe6'\r\n\t\t\tif (x.value) {\r\n\t\t\t\tconst spid = document.getElementById('confirmPassword')\r\n\t\t \t\tspid.style.top = '-30px'\r\n\t\t\t\tspid.style.left = '0px'\r\n\t\t\t\tspid.style.fontSize = '0.7rem'\r\n\t\t\t\tspid.style.color = 'rgb(115, 103, 240)'\r\n\t\t } else {\r\n\t\t\t\tconst spid = document.getElementById('confirmPassword')\r\n\t\t\t\tspid.style.pointerEvents = 'none'\r\n\t\t\t\tspid.style.position = ' absolute'\r\n\t\t\t\tspid.style.left = '10px'\r\n\t\t\t\tspid.style.top = '0px'\r\n\t\t\t\tspid.style.color = 'rgba(0,0,0,.4)'\r\n\t\t\t\tspid.style.cursor = 'text'\r\n\t\t\t\tspid.style.fontSize = '.80rem'\r\n\t\t\t}\r\n\t\t}\r\n\t }\r\n\r\n}\r\n\r\n</script>\r\n\r\n<style scoped>\r\n.page-reg\r\n{\r\n\twidth: 100%!important;\r\n\theight: 100vh!important;\r\n\tbackground-image: url(\"../../assets/login-background.jpg\");\r\n\tbackground-position: 50%;\r\n\tbackground-repeat: no-repeat;\r\n background-size: cover;\r\n\t/* background-attachment: fixed;\r\nbackground-size: 100%; */\r\n}\r\n.content-reg{\r\n\t/* width:60%; */\r\n\tmargin-left: auto!important;\r\n margin-right: auto!important;\r\n\ttext-align: center;\r\n\tbackground-color: #eff2f7;\r\n\r\n}\r\n.left-reg{\r\n\t/* width: 50%; */\r\n\tfloat: left;\r\n\tbackground-color: #eff2f7;\r\n\tpadding-top: 20%;\r\n\tdisplay:none;\r\n}\r\n.right-reg\r\n{\r\n\t/* width: 50%; */\r\n\tfloat: right;\r\n\tbackground-color: white;\r\n}\r\n.el-form\r\n{\r\n\ttext-decoration: none;\r\n\tpadding-left: 10%;\r\n\tpadding-right: 10%;\r\n}\r\n.el-form-item\r\n{\r\n\t margin-top: 22px;\r\n}\r\n.createAccount\r\n{\r\n\tfont-family: Montserrat,Helvetica,Arial,sans-serif;\r\n\tline-height: 1.2;\r\n\tcolor: #2c2c2c;\r\n\t/*font-size: 18.48px;*/\r\n\tfont-size: 120%;\r\n\tfont-weight: 500;\r\n\tmargin-bottom: 1rem!important;\r\n}\r\n.fillAccount\r\n{\r\n color: #626262;\r\n\tfont-family: Montserrat,Helvetica,Arial,sans-serif;\r\n\tfont-weight: 400;\r\n\t/*font-size: 14px;*/\r\n\tfont-size: 90%;\r\n\tline-height: 1.5;\r\n\tletter-spacing: .01rem;\r\n}\r\n ::placeholder\r\n{\r\n left: 10px;\r\n top: 0px;\r\n color: rgba(0,0,0,.4);\r\n font-size: .80rem;\r\n font-family: Montserrat,Helvetica,Arial,sans-serif;\r\n\t\tletter-spacing: .01rem;\r\n}\r\n.selectOrg\r\n{\r\n\twidth: 100%;\r\n}\r\n.selectSemester\r\n{\r\n\twidth: 100%;\r\n}\r\n.regCode\r\n{\r\n\tpointer-events: none;\r\n\tposition: absolute;\r\n\tleft: 10px;\r\n\ttop: 0px;\r\n\tcolor: rgba(0,0,0,.4);\r\n\tcursor: text;\r\n\tfont-size: .80rem;\r\n\ttransition: all .2s ease;\r\n\t/* padding-left: 3rem; */\r\n}\r\n.firstName\r\n{\r\n\tpointer-events: none;\r\n\tposition: absolute;\r\n\tleft: 10px;\r\n\ttop: 0px;\r\n\tcolor: rgba(0,0,0,.4);\r\n\tcursor: text;\r\n\tfont-size: .80rem;\r\n\ttransition: all .2s ease;\r\n}\r\n.middleName\r\n{\r\n\tpointer-events: none;\r\n\tposition: absolute;\r\n\tleft: 10px;\r\n\ttop: 0px;\r\n\tcolor: rgba(0,0,0,.4);\r\n\tcursor: text;\r\n\tfont-size: .80rem;\r\n\ttransition: all .2s ease;\r\n}\r\n.lastName\r\n{\r\n\tpointer-events: none;\r\n\tposition: absolute;\r\n\tleft: 10px;\r\n\ttop: 0px;\r\n\tcolor: rgba(0,0,0,.4);\r\n\tcursor: text;\r\n\tfont-size: .80rem;\r\n\ttransition: all .2s ease;\r\n}\r\n.email\r\n{\r\n\tpointer-events: none;\r\n\tposition: absolute;\r\n\tleft: 10px;\r\n\ttop: 0px;\r\n\tcolor: rgba(0,0,0,.4);\r\n\tcursor: text;\r\n\tfont-size: .80rem;\r\n\ttransition: all .2s ease;\r\n}\r\n.confirmEmail\r\n{\r\n\tpointer-events: none;\r\n\tposition: absolute;\r\n\tleft: 10px;\r\n\ttop: 0px;\r\n\tcolor: rgba(0,0,0,.4);\r\n\tcursor: text;\r\n\tfont-size: .80rem;\r\n\ttransition: all .2s ease;\r\n}\r\n.password\r\n{\r\n\tpointer-events: none;\r\n\tposition: absolute;\r\n\tleft: 10px;\r\n\ttop: 0px;\r\n\tcolor: rgba(0,0,0,.4);\r\n\tcursor: text;\r\n\tfont-size: .80rem;\r\n\ttransition: all .2s ease;\r\n}\r\n.confirmPassword\r\n{\r\n\tpointer-events: none;\r\n\tposition: absolute;\r\n\tleft: 10px;\r\n\ttop: 0px;\r\n\tcolor: rgba(0,0,0,.4);\r\n\tcursor: text;\r\n\tfont-size: .80rem;\r\n\ttransition: all .2s ease;\r\n}\r\n.agree\r\n{\r\n\tmargin-left:-26px;\r\n}\r\n.license\r\n{\r\n text-decoration: none;\r\n margin-left: 4px;\r\n color:rgb(115, 103, 240);\r\n}\r\n.placex\r\n{\r\n\tpointer-events: none;\r\n\tposition: absolute;\r\n\tleft: 35px;\r\n\ttop: 0px;\r\n\tcolor: rgba(0,0,0,.4);\r\n\tcursor: text;\r\n\tfont-size: .80rem;\r\n\ttransition: all .2s ease;\r\n}\r\n .h-screen-reg\r\n{\r\n height: 100vh!important;\r\n}\r\n\r\n.flex\r\n{\r\n display: flex!important;\r\n}\r\n.w-full\r\n{\r\n width: 100%!important;\r\n}\r\n.mx-auto\r\n{\r\n margin-left: auto!important;\r\n margin-right: auto!important;\r\n}\r\n.self-center-reg\r\n{\r\n align-self: center;\r\n}\r\n\r\n @media only screen and (min-width: 320px)\r\n{\r\n\t.sm-c-reg\r\n\t{\r\n\t\t\twidth: 100%!important;\r\n\t\t\tpadding-top: unset!important;\r\n\t\t\t/* align-self: center!important; */\r\n\r\n\t}\r\n}\r\n@media only screen and (min-width: 768px)\r\n{\r\n\t.md-c-reg\r\n\t{\r\n\t\t\twidth: 50%!important;\r\n\t\t\tpadding-top: unset!important;\r\n\t\t\talign-self: center!important;\r\n\t}\r\n}\r\n@media only screen and (min-width: 992px)\r\n{\r\n\t.lg-c-reg\r\n\t{\r\n\t\t\twidth: 75%!important;\r\n\t\t\tpadding-top: unset!important;\r\n\t\t\talign-self: center!important;\r\n\t}\r\n}\r\n@media only screen and (min-width: 1200px)\r\n{\r\n\t.xl-c-reg\r\n\t{\r\n\t\t\twidth: 60%!important;\r\n\t}\r\n}\r\n@media only screen and (min-width: 320px)\r\n{\r\n\t.sm-l-reg\r\n\t{\r\n\t\t\tdisplay: none !important;\r\n\r\n\t}\r\n}\r\n@media only screen and (min-width: 768px)\r\n{\r\n\t.md-l-reg\r\n\t{\r\n\t\t\tdisplay: none !important;\r\n\r\n\t}\r\n}\r\n@media only screen and (min-width: 992px)\r\n{\r\n\t.lg-l-reg\r\n\t{\r\n\t\t\tdisplay: block!important;\r\n\t\t\twidth:50% !important;\r\n\t}\r\n}\r\n@media only screen and (min-width: 320px)\r\n{\r\n\t.sm-r-reg\r\n\t{\r\n\t\t\twidth: 100%!important;\r\n\t\t\tpadding-top: unset!important;\r\n\t\t\talign-self: center!important;\r\n\r\n\t}\r\n}\r\n@media only screen and (min-width: 768px)\r\n{\r\n\t.md-r-reg\r\n\t{\r\n\t\t\twidth: 100%!important;\r\n\t\t\tpadding-top: unset!important;\r\n\t\t\talign-self: center!important;\r\n\r\n\t}\r\n}\r\n@media only screen and (min-width: 992px)\r\n{\r\n\t.lg-r-reg\r\n\t{\r\n\t\t\twidth: 50%!important;\r\n\t\t\tpadding-top: unset!important;\r\n\t\t\talign-self: center!important;\r\n\r\n\t}\r\n}\r\n\r\n</style>\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Register.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Register.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Register.vue?vue&type=template&id=5b6f136e&scoped=true&\"\nimport script from \"./Register.vue?vue&type=script&lang=js&\"\nexport * from \"./Register.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Register.vue?vue&type=style&index=0&id=5b6f136e&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"5b6f136e\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"page h-screen flex w-full\"},[_c('div',{staticClass:\"content sm-c md-c lg-c xl-c mx-auto self-center\",staticStyle:{\"width\":\"400px !important\"}},[_c('div',{},[_c('el-form',{ref:\"demoSignUpForm\",attrs:{\"model\":_vm.demoSignUpForm,\"rules\":_vm.rules,\"label-position\":\"top\"}},[_c('div',{staticClass:\"title\",staticStyle:{\"margin-top\":\"25px\",\"margin-bottom\":\"20px\",\"text-align\":\"center\"}},[_c('router-link',{staticClass:\"navbar-brand\",attrs:{\"to\":\"/landing\"}},[_c('img',{staticStyle:{\"width\":\"250px\"},attrs:{\"src\":require(\"@/assets/img/Demo Logo.png\"),\"alt\":\"logo\"}})]),_c('p',{staticClass:\"welcome\",staticStyle:{\"margin-top\":\"0px\"}},[_vm._v(\"\\n Create an account for your USF Writes Demo\\n \")])],1),_c('el-form-item',{staticStyle:{\"margin-bottom\":\"18px\"},attrs:{\"prop\":\"firstName\"}},[_c('span',{staticStyle:{\"font-weight\":\"bold\",\"color\":\"#0a7756\"}},[_vm._v(\"\\n First Name\\n \")]),_c('el-input',{attrs:{\"id\":\"firstNameInput\",\"type\":\"text\",\"placeholder\":\"Enter your first name\"},model:{value:(_vm.demoSignUpForm.firstName),callback:function ($$v) {_vm.$set(_vm.demoSignUpForm, \"firstName\", $$v)},expression:\"demoSignUpForm.firstName\"}}),_c('br')],1),_c('el-form-item',{staticStyle:{\"margin-bottom\":\"18px\"},attrs:{\"prop\":\"lastName\"}},[_c('span',{staticStyle:{\"font-weight\":\"bold\",\"color\":\"#0a7756\"}},[_vm._v(\"\\n Last Name\\n \")]),_c('el-input',{attrs:{\"id\":\"lastNameInput\",\"type\":\"text\",\"placeholder\":\"Enter your last name\"},model:{value:(_vm.demoSignUpForm.lastName),callback:function ($$v) {_vm.$set(_vm.demoSignUpForm, \"lastName\", $$v)},expression:\"demoSignUpForm.lastName\"}}),_c('br')],1),_c('el-form-item',{staticStyle:{\"margin-bottom\":\"18px\"},attrs:{\"prop\":\"email\"}},[_c('span',{staticStyle:{\"font-weight\":\"bold\",\"color\":\"#0a7756\"}},[_vm._v(\"\\n Email Address\\n \")]),_c('el-input',{attrs:{\"id\":\"usernameInput\",\"type\":\"text\",\"placeholder\":\"Enter your email address\"},model:{value:(_vm.demoSignUpForm.email),callback:function ($$v) {_vm.$set(_vm.demoSignUpForm, \"email\", $$v)},expression:\"demoSignUpForm.email\"}}),_c('br')],1),_c('el-form-item',{staticStyle:{\"margin-bottom\":\"18px\"},attrs:{\"prop\":\"password\"}},[_c('span',{staticStyle:{\"font-weight\":\"bold\",\"color\":\"#0a7756\"}},[_vm._v(\"\\n Password\\n \")]),_c('el-tooltip',{staticClass:\"item\",attrs:{\"effect\":\"light\",\"placement\":\"top\"}},[_c('div',{attrs:{\"slot\":\"content\"},slot:\"content\"},[_vm._v(\"Password must contain all of the following: an uppercase letter,\\n \"),_c('br'),_vm._v(\"a lowercase letter, a number, and a special character.\")]),_c('a',{staticClass:\"forgotPassword\",attrs:{\"href\":\"#\"}},[_vm._v(\"\\n Password Requirements\\n \")])]),_c('el-input',{attrs:{\"id\":\"passwordInput\",\"type\":\"password\",\"autocomplete\":\"off\",\"placeholder\":\"Enter your password\"},model:{value:(_vm.demoSignUpForm.password),callback:function ($$v) {_vm.$set(_vm.demoSignUpForm, \"password\", $$v)},expression:\"demoSignUpForm.password\"}})],1),_c('el-form-item',{staticStyle:{\"margin-bottom\":\"18px\"},attrs:{\"prop\":\"confirmPassword\"}},[_c('span',{staticStyle:{\"font-weight\":\"bold\",\"color\":\"#0a7756\"}},[_vm._v(\"\\n Confirm Password\\n \")]),_c('el-input',{attrs:{\"id\":\"confirmPasswordInput\",\"type\":\"password\",\"autocomplete\":\"off\",\"placeholder\":\"Confirm your password\"},model:{value:(_vm.demoSignUpForm.confirmPassword),callback:function ($$v) {_vm.$set(_vm.demoSignUpForm, \"confirmPassword\", $$v)},expression:\"demoSignUpForm.confirmPassword\"}})],1),_c('el-form-item',[_c('el-button',{directives:[{name:\"loading\",rawName:\"v-loading\",value:(_vm.loading),expression:\"loading\"}],staticStyle:{\"width\":\"100%\"},attrs:{\"id\":\"demo-signup-btn\",\"type\":\"primary\"},on:{\"click\":function($event){return _vm.onDemoSignUp()}}},[_vm._v(\"\\n Create Demo Account\\n \")])],1),_c('div',{staticStyle:{\"font-size\":\"14px\",\"text-align\":\"center\",\"padding-bottom\":\"5px\"}},[_vm._v(\"\\n By signing up, I agree to the\\n \"),_c('a',{attrs:{\"href\":\"https://www.usf.edu/it/about-us/policies-standards/acceptable-use.aspx\"}},[_vm._v(\"\\n terms and policies.\\n \")])]),_c('hr'),_c('el-form-item',{staticStyle:{\"width\":\"100%\",\"font-family\":\"Montserrat,Helvetica,Arial,sans-serif\",\"line-height\":\"1.5\",\"letter-spacing\":\".01rem\",\"color\":\"#626262\",\"text-align\":\"center\",\"margin-bottom\":\"20px\"}},[_c('el-button',{staticStyle:{\"width\":\"100%\",\"margin-bottom\":\"10px\"},on:{\"click\":function($event){return _vm.gotoDemoSignIn()}}},[_vm._v(\"\\n Already have an account? Sign in now\\n \")])],1)],1)],1)])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n <div class=\"page h-screen flex w-full\">\r\n <div class=\"content sm-c md-c lg-c xl-c mx-auto self-center\" style=\"width: 400px !important;\">\r\n <div class=\"\">\r\n <el-form ref=\"demoSignUpForm\" :model=\"demoSignUpForm\" :rules=\"rules\" label-position=\"top\">\r\n <!-- <div style=\"padding: 8px 16px; padding-top: px; background-color: #ecf8ff; border-radius: 4px; border-left: 5px solid #50bfff; margin: 20px 0; margin-top: 8px;\">\r\n Our server is experiencing deadlocking issue which prevent users from accessing. We are working on fixing the issue\r\n </div> -->\r\n\r\n <div class=\"title\" style=\"margin-top: 25px; margin-bottom: 20px; text-align: center;\">\r\n <router-link class=\"navbar-brand\" to=\"/landing\">\r\n <img src=\"@/assets/img/Demo Logo.png\" alt=\"logo\" style=\"width: 250px;\">\r\n </router-link>\r\n <p class=\"welcome\" style=\"margin-top: 0px;\">\r\n Create an account for your USF Writes Demo\r\n </p>\r\n </div>\r\n <el-form-item prop=\"firstName\" style=\"margin-bottom: 18px;\">\r\n <span style=\"font-weight: bold; color: #0a7756;\">\r\n First Name\r\n </span>\r\n <el-input id=\"firstNameInput\" v-model=\"demoSignUpForm.firstName\" type=\"text\" placeholder=\"Enter your first name\" />\r\n <br>\r\n </el-form-item>\r\n <el-form-item prop=\"lastName\" style=\"margin-bottom: 18px;\">\r\n <span style=\"font-weight: bold; color: #0a7756;\">\r\n Last Name\r\n </span>\r\n <el-input id=\"lastNameInput\" v-model=\"demoSignUpForm.lastName\" type=\"text\" placeholder=\"Enter your last name\" />\r\n <br>\r\n </el-form-item>\r\n <el-form-item prop=\"email\" style=\"margin-bottom: 18px;\">\r\n <span style=\"font-weight: bold; color: #0a7756;\">\r\n Email Address\r\n </span>\r\n <el-input id=\"usernameInput\" v-model=\"demoSignUpForm.email\" type=\"text\" placeholder=\"Enter your email address\" />\r\n <br>\r\n </el-form-item>\r\n <el-form-item prop=\"password\" style=\"margin-bottom: 18px;\">\r\n <span style=\"font-weight: bold; color: #0a7756;\">\r\n Password\r\n </span>\r\n\r\n <el-tooltip class=\"item\" effect=\"light\" placement=\"top\">\r\n <div slot=\"content\">Password must contain all of the following: an uppercase letter,\r\n <br>a lowercase letter, a number, and a special character.</div>\r\n <a href=\"#\" class=\"forgotPassword\">\r\n Password Requirements\r\n </a>\r\n </el-tooltip>\r\n\r\n <el-input id=\"passwordInput\" v-model=\"demoSignUpForm.password\" type=\"password\" autocomplete=\"off\" placeholder=\"Enter your password\" />\r\n </el-form-item>\r\n <el-form-item prop=\"confirmPassword\" style=\"margin-bottom: 18px;\">\r\n <span style=\"font-weight: bold; color: #0a7756;\">\r\n Confirm Password\r\n </span>\r\n <el-input id=\"confirmPasswordInput\" v-model=\"demoSignUpForm.confirmPassword\" type=\"password\" autocomplete=\"off\" placeholder=\"Confirm your password\" />\r\n </el-form-item>\r\n <el-form-item>\r\n <el-button id=\"demo-signup-btn\" v-loading=\"loading\" type=\"primary\" style=\"width: 100%;\" @click=\"onDemoSignUp()\">\r\n Create Demo Account\r\n </el-button>\r\n <!-- <el-button type=\"danger\" style=\"float: right\" @click=\"onLoginWithCanvas\">\r\n\t\t\t\t\t\t\tLogin with Canvas\r\n\t\t\t\t\t\t</el-button> -->\r\n </el-form-item>\r\n <div style=\"font-size: 14px; text-align: center; padding-bottom: 5px;\">\r\n By signing up, I agree to the\r\n <a href=\"https://www.usf.edu/it/about-us/policies-standards/acceptable-use.aspx\">\r\n terms and policies.\r\n </a>\r\n </div>\r\n <hr>\r\n <el-form-item style=\"width: 100%; font-family: Montserrat,Helvetica,Arial,sans-serif; line-height: 1.5; letter-spacing: .01rem; color: #626262; text-align:center; margin-bottom: 20px;\">\r\n <el-button style=\"width: 100%; margin-bottom: 10px;\" @click=\"gotoDemoSignIn()\">\r\n Already have an account? Sign in now\r\n </el-button>\r\n </el-form-item>\r\n </el-form>\r\n </div>\r\n </div>\r\n </div>\r\n</template>\r\n\r\n<script>\r\n\r\nimport { mapActions } from 'vuex'\r\n// Contains login form and logics to log users in.\r\nexport default {\r\n\tname: 'Login',\r\n\t data() {\r\n\t\tvar validateEmail = (rule, value, callback) => {\r\n\t\t\tconst isValid = /^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/.test(value)\r\n\t\t\tif (!isValid) {\r\n\t\t\t\tcallback(new Error('Please input a valid email'))\r\n\t\t\t} else {\r\n\t\t\t\tcallback()\r\n\t\t\t}\r\n\t\t}\r\n\t\tvar validatePass = (rule, value, callback) => {\r\n\t\t\tconst isValid = /(?=.*?[a-z])(?=.*?[A-Z])(?=.*?[0-9])(?=.*?[^a-zA-Z0-9]).*/.test(value)\r\n\t\t\tif (!isValid) {\r\n\t\t\t\t// callback(new Error('Password must contain all of the following: an uppercase letter, a lowercase letter, a number, and a special character'))\r\n\t\t\t\tcallback(new Error('Please input a valid password'))\r\n\t\t\t} else if (this.demoSignUpForm.confirmPassword !== '') {\r\n\t\t\t\tthis.$refs.demoSignUpForm.validateField('confirmPassword')\r\n\t\t\t}\r\n\t\t\tcallback()\r\n\t\t}\r\n\t\tvar validatePass2 = (rule, value, callback) => {\r\n\t\t\tif (value !== this.demoSignUpForm.password) {\r\n\t\t\t\tcallback(new Error('Confirm password does not match'))\r\n\t\t\t} else {\r\n\t\t\t\tcallback()\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn {\r\n\t\t\tdemoSignUpForm: {\r\n\t\t\t\tfirstName: '',\r\n\t\t\t\tlastName: '',\r\n\t\t\t\tusername: '',\r\n\t\t\t\tpassword: '',\r\n\t\t\t\tconfirmPassword: null\r\n\t\t\t},\r\n\t\t\trules: {\r\n\t\t\t\tfirstName: [\r\n\t\t\t\t\t{ required: true, message: 'Please input first name', trigger: 'blur' }\r\n\t\t\t\t],\r\n\t\t\t\tlastName: [\r\n\t\t\t\t\t{ required: true, message: 'Please input last name', trigger: 'blur' }\r\n\t\t\t\t],\r\n\t\t\t\temail: [\r\n\t\t\t\t\t{ required: true, message: 'Please input email address', trigger: 'blur' },\r\n\t\t\t\t\t{ validator: validateEmail, trigger: 'blur' }\r\n\t\t\t\t],\r\n\t\t\t\tpassword: [\r\n\t\t\t\t\t{ required: true, message: 'Please input password', trigger: 'blur' },\r\n\t\t\t\t\t{ validator: validatePass, trigger: 'blur' }\r\n\t\t\t\t],\r\n\t\t\t\tconfirmPassword: [\r\n\t\t\t\t\t{ required: true, message: 'Please input confirm password', trigger: 'blur' },\r\n\t\t\t\t\t{ validator: validatePass2, trigger: 'blur' }\r\n\t\t\t\t]\r\n\r\n\t\t\t},\r\n\t\t\tloading: false,\r\n\t\t\ttermCode: 'DEMO',\r\n\t\t\torgCode: 'DEMO'\r\n\t\t}\r\n\t},\r\n\tmounted() {\r\n\t\twindow.addEventListener('keypress', function(e) {\r\n\t\t\tif (e.which == 13) {\r\n\t\t\t\tdocument.querySelector('#demo-signup-btn').click()\r\n\t\t\t\treturn false\r\n\t\t\t}\r\n\t\t})\r\n\t},\r\n\tmethods: {\r\n\t\t...mapActions('auth', ['createDemoAccount']),\r\n\t\t...mapActions('enrollment', ['getEnrollments']),\r\n\t\t// @vuese\r\n\t\t// Log user in.\r\n\t\tgotoDemoSignIn() {\r\n\t\t\tthis.$router.push('/demo/signin')\r\n\t\t},\r\n\t\tasync onDemoSignUp() {\r\n\t\t\tthis.$refs.demoSignUpForm.validate((valid) => {\r\n\t\t\t\tif (valid) {\r\n\t\t\t\t\t// Form validation to be completed\r\n\t\t\t\t\tthis.loading = true\r\n\t\t\t\t\tconst payload = new URLSearchParams()\r\n\t\t\t\t\tpayload.append('Email', this.demoSignUpForm.email)\r\n\t\t\t\t\tpayload.append('OrgCode', this.orgCode)\r\n\t\t\t\t\tpayload.append('UserName', this.demoSignUpForm.email)\r\n\t\t\t\t\tpayload.append('FirstName', this.demoSignUpForm.firstName)\r\n\t\t\t\t\tpayload.append('LastName', this.demoSignUpForm.lastName)\r\n\t\t\t\t\tpayload.append('RoleName', 'Instructor')\r\n\t\t\t\t\tpayload.append('Password', this.demoSignUpForm.password)\r\n\r\n\t\t\t\t\tconst url = window.location.href\r\n\t\t\t\t\tconst arr = url.split('/')\r\n\t\t\t\t\tconst protocol = arr[0]\r\n\t\t\t\t\tconst host = process.env.NODE_ENV === 'production' ? window.location.host : 'localhost:8080'\r\n\t\t\t\t\tconst confirmUrl = `${protocol}//${host}` + '/account/confirm/email'\r\n\r\n\t\t\t\t\tpayload.append('ConfirmUrl', confirmUrl)\r\n\r\n\t\t\t\t\tconsole.log(payload)\r\n\t\t\t\t\tthis.createDemoAccount(payload)\r\n\t\t\t\t\t\t.then(user => {\r\n\t\t\t\t\t\t\tthis.loading = false\r\n\t\t\t\t\t\t\tconsole.log(user)\r\n\t\t\t\t\t\t\tthis.$router.push('/account/confirm/email?userId=' + user.Id)\r\n\t\t\t\t\t\t})\r\n\t\t\t\t\t\t.catch(error => {\r\n\t\t\t\t\t\t\tconsole.log(error)\r\n\t\t\t\t\t\t})\r\n\t\t\t\t} else {\r\n\t\t\t\t\tconsole.log('error submit!!')\r\n\t\t\t\t\treturn false\r\n\t\t\t\t}\r\n\t\t\t})\r\n\t\t},\r\n\t\tgetUsernameFromEmail(text, stopAt = '@') {\r\n\t\t\tif (!String.IsNullOrWhiteSpace(text)) {\r\n\t\t\t\tconst charLocation = text.indexOf(stopAt)\r\n\r\n\t\t\t\tif (charLocation > 0) {\r\n\t\t\t\t\treturn text.subString(0, charLocation)\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\t// @vuese\r\n\t\t// Get last activity date.\r\n\t\tgetlastActivityDate() {\r\n\t\t\tconst today = this.$moment()._d\r\n\t\t\treturn today.getFullYear() + '-' + (today.getMonth() + 1) + '-' +\r\n today.getDate() + ' ' + today.getHours() + ':' + today.getMinutes() + ':' + today.getSeconds()\r\n\t\t}\r\n\t}\r\n\r\n}\r\n\r\n</script>\r\n\r\n<style scoped>\r\n\r\n#nprogress .bar{\r\n\tz-index: 10001 !important;\r\n\tbackground-color: white !important;\r\n}\r\n\r\n.page\r\n{\r\n\twidth: 100%!important;\r\n\theight: 100vh!important;\r\n\t/* background-image: url(\"../../assets/background1.jpg\");\r\n\tbackground-position: 50%;\r\n\tbackground-repeat: no-repeat; */\r\n\tbackground-color: rgb(0, 103, 71);\r\n background-size: cover;\r\n}\r\n.content{\r\n\tmargin-left: auto!important;\r\n margin-right: auto!important;\r\n\ttext-align: center;\r\n\tbackground-color: #ffffff;\r\n border-radius: 5px;\r\n}\r\n.left{\r\n\tfloat: left;\r\n\tbackground-color: #eff2f7;\r\n\tpadding-top: 8%;\r\n\tdisplay:none;\r\n}\r\n.forimg1\r\n{\r\n\twidth: 95%;\r\n\tpadding-top: 15%;\r\n\tpadding-bottom: 15%;\r\n}\r\n.right\r\n{\r\n\tfloat: right;\r\n\tbackground-color: white;\r\n}\r\n.el-form\r\n{\r\n\ttext-decoration: none;\r\n\tpadding-left: 30px;\r\n\tpadding-right: 30px;\r\n}\r\n\r\n.login\r\n{\r\n\tfont-family: Montserrat,Helvetica,Arial,sans-serif;\r\n\tline-height: 1.2;\r\n\tcolor: #0a7756;\r\n\tfont-size: 22px;\r\n\tfont-weight: bold;\r\n\tmargin-bottom: 1rem!important;\r\n}\r\n.welcome\r\n{\r\n color: #626262;\r\n\tfont-family: Montserrat,Helvetica,Arial,sans-serif;\r\n\tfont-weight: 400;\r\n\tfont-size: 90%;\r\n\tline-height: 1.5;\r\n\tletter-spacing: .01rem;\r\n}\r\n/* .username\r\n{\r\n\tpointer-events: none;\r\n\tposition: absolute;\r\n\tleft: 35px;\r\n\ttop: 0px;\r\n\tcolor: rgb(0, 75, 44);\r\n\tcursor: text;\r\n\tfont-size: .80rem;\r\n\ttransition: all .2s ease;\r\n} */\r\n.icon1\r\n{\r\n pointer-events: none;\r\n\tposition: absolute;\r\n\tleft: 10px;\r\n\ttop: -12px;\r\n\tcolor: rgb(0, 75, 44);\r\n\tcursor: text;\r\n\tfont-size: .80rem;\r\n\ttransition: all .2s ease;\r\n}\r\n.pass\r\n{\r\n\tpointer-events: none;\r\n\tposition: absolute;\r\n\tleft: 35px;\r\n\ttop: 0px;\r\n\tcolor:rgb(0, 75, 44);\r\n\tcursor: text;\r\n\tfont-size: .80rem;\r\n\ttransition: all .2s ease;\r\n}\r\n.icon2\r\n{\r\n\tpointer-events: none;\r\n\tposition: absolute;\r\n\tleft: 10px;\r\n\ttop: -12px;\r\n\tcolor: rgb(0, 75, 44);\r\n\tcursor: text;\r\n\tfont-size: .80rem;\r\n\ttransition: all .2s ease;\r\n}\r\nspan.el-checkbox__label\r\n{\r\n\tpadding-left: 0px!important;\r\n}\r\n.forgotPassword\r\n{\r\n margin-top: 3px;\r\n text-decoration: none;\r\n float: right;\r\n color:rgb(0, 75, 44);\r\n}\r\nhr\r\n{\r\n\tmargin-bottom: 20px;\r\n\tborder-bottom: 1px;\r\n\tborder-top: 1px solid rgba(0, 0, 0, 0.1);\r\n}\r\n.el-input\r\n{\r\n width:100% !important;\r\n padding-top: 8px;\r\n}\r\n.title\r\n{\r\n\ttext-align: left;\r\n}\r\n.el-checkbox\r\n{\r\n\ttext-align: left;\r\n}\r\n.el-form-item\r\n{\r\n\tcolor: #626262;\r\n\tfont-weight: 400;\r\n\ttext-align: left;\r\n\tfont-family: Montserrat,Helvetica,Arial,sans-serif;\r\n\tfont-size: 14px;\r\n\tline-height: 1.5;\r\n\tletter-spacing: .01rem;\r\n margin-bottom: 15px;\r\n}\r\n.el-button\r\n{\r\n\tfont-family: Montserrat,Helvetica,Arial,sans-serif;\r\n}\r\n/* button.el-button--default\r\n{\r\n\tcolor:rgb(115, 103, 240);\r\n\tborder-color: rgb(115, 103, 240);\r\n}\r\nbutton.el-button--primary\r\n{\r\n\tbackground-color: rgb(115, 103, 240);\r\n border-color: rgb(115, 103, 240);\r\n} */\r\n.el-input\r\n{\r\n\twidth: 90%;\r\n}\r\n\r\n.h-screen\r\n{\r\n height: 100vh!important;\r\n}\r\n\r\n.flex\r\n{\r\n display: flex!important;\r\n}\r\n.w-full\r\n{\r\n width: 100%!important;\r\n}\r\n.mx-auto\r\n{\r\n margin-left: auto!important;\r\n margin-right: auto!important;\r\n}\r\n.self-center\r\n{\r\n align-self: center!important;\r\n}\r\n\r\n@media only screen and (min-width: 576px)\r\n{\r\n\t.sm-c\r\n\t{\r\n\t\t\twidth: 50%!important;\r\n\t}\r\n}\r\n@media only screen and (min-width: 768px)\r\n{\r\n\t.md-c\r\n\t{\r\n\t\t\twidth: 50%!important;\r\n\t}\r\n}\r\n@media only screen and (min-width: 992px)\r\n{\r\n\t.lg-c\r\n\t{\r\n\t\t\twidth: 75%!important;\r\n\t}\r\n}\r\n@media only screen and (min-width: 1200px)\r\n{\r\n\t.xl-c\r\n\t{\r\n\t\t\twidth: 40%!important;\r\n\t}\r\n}\r\n@media only screen and (min-width: 576px)\r\n{\r\n\t.sm-l\r\n\t{\r\n\t\t\tdisplay: none !important;\r\n\t}\r\n}\r\n@media only screen and (min-width: 768px)\r\n{\r\n\t.md-l\r\n\t{\r\n\t\t\tdisplay: none !important;\r\n\t}\r\n}\r\n@media only screen and (min-width: 992px)\r\n{\r\n\t.lg-l\r\n\t{\r\n\t\t\tdisplay: block!important;\r\n\t\t\twidth:50% !important;\r\n\t}\r\n}\r\n@media only screen and (min-width: 576px)\r\n{\r\n\t.sm-r\r\n\t{\r\n\t\t\twidth: 100%!important;\r\n\t}\r\n}\r\n@media only screen and (min-width: 768px)\r\n{\r\n\t.md-r\r\n\t{\r\n\t\t\twidth: 100%!important;\r\n\t}\r\n}\r\n@media only screen and (min-width: 992px)\r\n{\r\n\t.lg-r\r\n\t{\r\n\t\t\twidth: 50%!important;\r\n\t}\r\n}\r\n</style>\r\n<style>\r\n.login-consent-form{\r\n width: 50% !important;\r\n}\r\n.login-consent-form>.el-message-box__header, .login-consent-form>.el-message-box__btns{\r\n text-align: center !important;\r\n}\r\n</style>\r\n\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DemoSignUp.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DemoSignUp.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./DemoSignUp.vue?vue&type=template&id=b4e2001c&scoped=true&\"\nimport script from \"./DemoSignUp.vue?vue&type=script&lang=js&\"\nexport * from \"./DemoSignUp.vue?vue&type=script&lang=js&\"\nimport style0 from \"./DemoSignUp.vue?vue&type=style&index=0&id=b4e2001c&scoped=true&lang=css&\"\nimport style1 from \"./DemoSignUp.vue?vue&type=style&index=1&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"b4e2001c\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"page h-screen flex w-full\"},[_c('div',{staticClass:\"content sm-c md-c lg-c xl-c mx-auto self-center\",staticStyle:{\"width\":\"400px !important\"}},[_c('div',{},[_c('el-form',{attrs:{\"label-position\":\"top\"}},[_c('div',{staticClass:\"title\",staticStyle:{\"margin-top\":\"25px\",\"margin-bottom\":\"20px\",\"text-align\":\"center\"}},[_c('router-link',{staticClass:\"navbar-brand\",attrs:{\"to\":\"/landing\"}},[_c('img',{staticStyle:{\"width\":\"250px\"},attrs:{\"src\":require(\"@/assets/img/Demo Logo.png\"),\"alt\":\"logo\"}})]),_c('p',{staticClass:\"welcome\",staticStyle:{\"margin-top\":\"0px\"}},[_vm._v(\"\\n Welcome back, please login to your account.\\n \")])],1),_c('el-form-item',[_c('span',{staticStyle:{\"font-weight\":\"bold\",\"color\":\"#0a7756\"}},[_vm._v(\"\\n Username\\n \")]),_c('el-input',{attrs:{\"id\":\"usernameInput\",\"type\":\"text\",\"placeholder\":\"Email address or NetId\"},model:{value:(_vm.username),callback:function ($$v) {_vm.username=$$v},expression:\"username\"}}),_c('br')],1),_c('el-form-item',{attrs:{\"prop\":\"pass\"}},[_c('span',{staticStyle:{\"font-weight\":\"bold\",\"color\":\"#0a7756\"}},[_vm._v(\"\\n Password\\n \")]),_c('el-input',{attrs:{\"id\":\"passwordInput\",\"type\":\"password\",\"autocomplete\":\"off\",\"placeholder\":\"Enter your password\"},model:{value:(_vm.password),callback:function ($$v) {_vm.password=$$v},expression:\"password\"}})],1),_c('el-form-item',[_c('el-checkbox',[_vm._v(\"\\n Remember Me\\n \")]),_c('a',{staticClass:\"forgotPassword\",attrs:{\"href\":\"/account/forgot/password\"}},[_vm._v(\"\\n Forgot Password?\\n \")])],1),_c('el-form-item',[_c('el-button',{directives:[{name:\"loading\",rawName:\"v-loading\",value:(_vm.loading),expression:\"loading\"}],staticStyle:{\"width\":\"100%\"},attrs:{\"id\":\"netId-login-btn\",\"type\":\"primary\"},on:{\"click\":_vm.onLogin}},[_vm._v(\"\\n Sign In\\n \")])],1),_c('div',{staticStyle:{\"font-size\":\"14px\",\"text-align\":\"center\",\"padding-bottom\":\"5px\"}},[_vm._v(\"\\n By logging in, I agree to the\\n \"),_c('a',{attrs:{\"href\":\"https://www.usf.edu/it/about-us/policies-standards/acceptable-use.aspx\"}},[_vm._v(\"\\n terms and policies.\\n \")])]),_c('hr'),_c('el-form-item',{staticStyle:{\"width\":\"100%\",\"font-family\":\"Montserrat,Helvetica,Arial,sans-serif\",\"line-height\":\"1.5\",\"letter-spacing\":\".01rem\",\"color\":\"#626262\",\"text-align\":\"center\",\"margin-bottom\":\"20px\"}},[_c('el-button',{staticStyle:{\"width\":\"100%\",\"margin-bottom\":\"10px\"},on:{\"click\":function($event){return _vm.gotoDeoSignUp()}}},[_vm._v(\"\\n Don't have an account? Sign up now\\n \")])],1)],1)],1)])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n <div class=\"page h-screen flex w-full\">\r\n <div class=\"content sm-c md-c lg-c xl-c mx-auto self-center\" style=\"width: 400px !important;\">\r\n <div class=\"\">\r\n <el-form label-position=\"top\">\r\n <!-- <div style=\"padding: 8px 16px; padding-top: px; background-color: #ecf8ff; border-radius: 4px; border-left: 5px solid #50bfff; margin: 20px 0; margin-top: 8px;\">\r\n Our server is experiencing deadlocking issue which prevent users from accessing. We are working on fixing the issue\r\n </div> -->\r\n\r\n <div class=\"title\" style=\"margin-top: 25px; margin-bottom: 20px; text-align: center;\">\r\n <router-link class=\"navbar-brand\" to=\"/landing\">\r\n <img src=\"@/assets/img/Demo Logo.png\" alt=\"logo\" style=\"width: 250px;\">\r\n </router-link>\r\n <p class=\"welcome\" style=\"margin-top: 0px;\">\r\n Welcome back, please login to your account.\r\n </p>\r\n </div>\r\n <el-form-item>\r\n <span style=\"font-weight: bold; color: #0a7756;\">\r\n Username\r\n </span>\r\n <el-input id=\"usernameInput\" v-model=\"username\" type=\"text\" placeholder=\"Email address or NetId\" />\r\n <br>\r\n </el-form-item>\r\n <el-form-item prop=\"pass\">\r\n <span style=\"font-weight: bold; color: #0a7756;\">\r\n Password\r\n </span>\r\n <el-input id=\"passwordInput\" v-model=\"password\" type=\"password\" autocomplete=\"off\" placeholder=\"Enter your password\" />\r\n </el-form-item>\r\n <el-form-item>\r\n <el-checkbox>\r\n Remember Me\r\n </el-checkbox>\r\n <a href=\"/account/forgot/password\" class=\"forgotPassword\">\r\n Forgot Password?\r\n </a>\r\n </el-form-item>\r\n <el-form-item>\r\n <el-button id=\"netId-login-btn\" v-loading=\"loading\" type=\"primary\" style=\"width: 100%;\" @click=\"onLogin\">\r\n Sign In\r\n </el-button>\r\n <!-- <el-button type=\"danger\" style=\"float: right\" @click=\"onLoginWithCanvas\">\r\n\t\t\t\t\t\t\tLogin with Canvas\r\n\t\t\t\t\t\t</el-button> -->\r\n </el-form-item>\r\n <div style=\"font-size: 14px; text-align: center; padding-bottom: 5px;\">\r\n By logging in, I agree to the\r\n <a href=\"https://www.usf.edu/it/about-us/policies-standards/acceptable-use.aspx\">\r\n terms and policies.\r\n </a>\r\n </div>\r\n <hr>\r\n <el-form-item style=\"width: 100%; font-family: Montserrat,Helvetica,Arial,sans-serif; line-height: 1.5; letter-spacing: .01rem; color: #626262; text-align:center; margin-bottom: 20px;\">\r\n <el-button style=\"width: 100%; margin-bottom: 10px;\" @click=\"gotoDeoSignUp()\">\r\n Don't have an account? Sign up now\r\n </el-button>\r\n </el-form-item>\r\n </el-form>\r\n </div>\r\n </div>\r\n </div>\r\n</template>\r\n\r\n<script>\r\n\r\nimport { mapActions } from 'vuex'\r\n// Contains login form and logics to log users in.\r\nexport default {\r\n\tname: 'Login',\r\n\t data() {\r\n\t\treturn {\r\n\t\t\tcontactDialogVisible: false,\r\n\t\t\tusername: '',\r\n\t\t\tpassword: '',\r\n\t\t\tloading: false,\r\n\t\t\ttermCode: '',\r\n\t\t\torgCode: '',\r\n\t\t\tloggedUserName: ''\r\n\t\t}\r\n\t},\r\n\tmounted() {\r\n\t\twindow.addEventListener('keypress', function(e) {\r\n\t\t\tif (e.which == 13) {\r\n\t\t\t\tdocument.querySelector('#netId-login-btn').click()\r\n\t\t\t\treturn false\r\n\t\t\t}\r\n\t\t})\r\n\t},\r\n\tmethods: {\r\n\t\t...mapActions('auth', ['oauthLogin']),\r\n\t\t...mapActions('enrollment', ['getEnrollments']),\r\n\t\tgotoDeoSignUp() {\r\n\t\t\tthis.$router.push('/demo/signup')\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Log user in.\r\n\t\tasync onLogin() {\r\n\t\t\t// Form validation to be completed\r\n\t\t\tthis.loading = true\r\n\t\t\tconst payload = new URLSearchParams()\r\n\t\t\tpayload.append('client_id', process.env.VUE_APP_CLIENT_ID)\r\n\t\t\tpayload.append('client_secret', process.env.VUE_APP_CLIENT_SECRET)\r\n\t\t\tpayload.append('grant_type', 'password')\r\n\t\t\tpayload.append('username', 'DEMO;' + this.username)\r\n\t\t\tpayload.append('password', this.password)\r\n\t\t\t// Authenticate user then redirect to dashboard\r\n\t\t\tconst user = await this.oauthLogin(payload)\r\n\t\t\tif (user) {\r\n\t\t\t\tthis.loading = false\r\n\t\t\t\tthis.$router.push('/')\r\n\t\t\t} else {\r\n\t\t\t\tthis.loading = false\r\n\t\t\t}\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Get last activity date.\r\n\t\tgetlastActivityDate() {\r\n\t\t\tconst today = this.$moment()._d\r\n\t\t\treturn today.getFullYear() + '-' + (today.getMonth() + 1) + '-' +\r\n today.getDate() + ' ' + today.getHours() + ':' + today.getMinutes() + ':' + today.getSeconds()\r\n\t\t}\r\n\t}\r\n\r\n}\r\n\r\n</script>\r\n\r\n<style scoped>\r\n.page\r\n{\r\n\twidth: 100%!important;\r\n\theight: 100vh!important;\r\n\t/* background-image: url(\"../../assets/background1.jpg\");\r\n\tbackground-position: 50%;\r\n\tbackground-repeat: no-repeat; */\r\n\tbackground-color: rgb(0, 103, 71);\r\n background-size: cover;\r\n}\r\n.content{\r\n\tmargin-left: auto!important;\r\n margin-right: auto!important;\r\n\ttext-align: center;\r\n\tbackground-color: #ffffff;\r\n border-radius: 5px;\r\n}\r\n.left{\r\n\tfloat: left;\r\n\tbackground-color: #eff2f7;\r\n\tpadding-top: 8%;\r\n\tdisplay:none;\r\n}\r\n.forimg1\r\n{\r\n\twidth: 95%;\r\n\tpadding-top: 15%;\r\n\tpadding-bottom: 15%;\r\n}\r\n.right\r\n{\r\n\tfloat: right;\r\n\tbackground-color: white;\r\n}\r\n.el-form\r\n{\r\n\ttext-decoration: none;\r\n\tpadding-left: 30px;\r\n\tpadding-right: 30px;\r\n}\r\n\r\n.login\r\n{\r\n\tfont-family: Montserrat,Helvetica,Arial,sans-serif;\r\n\tline-height: 1.2;\r\n\tcolor: #0a7756;\r\n\tfont-size: 22px;\r\n\tfont-weight: bold;\r\n\tmargin-bottom: 1rem!important;\r\n}\r\n.welcome\r\n{\r\n color: #626262;\r\n\tfont-family: Montserrat,Helvetica,Arial,sans-serif;\r\n\tfont-weight: 400;\r\n\tfont-size: 90%;\r\n\tline-height: 1.5;\r\n\tletter-spacing: .01rem;\r\n}\r\n/* .username\r\n{\r\n\tpointer-events: none;\r\n\tposition: absolute;\r\n\tleft: 35px;\r\n\ttop: 0px;\r\n\tcolor: rgb(0, 75, 44);\r\n\tcursor: text;\r\n\tfont-size: .80rem;\r\n\ttransition: all .2s ease;\r\n} */\r\n.icon1\r\n{\r\n pointer-events: none;\r\n\tposition: absolute;\r\n\tleft: 10px;\r\n\ttop: -12px;\r\n\tcolor: rgb(0, 75, 44);\r\n\tcursor: text;\r\n\tfont-size: .80rem;\r\n\ttransition: all .2s ease;\r\n}\r\n.pass\r\n{\r\n\tpointer-events: none;\r\n\tposition: absolute;\r\n\tleft: 35px;\r\n\ttop: 0px;\r\n\tcolor:rgb(0, 75, 44);\r\n\tcursor: text;\r\n\tfont-size: .80rem;\r\n\ttransition: all .2s ease;\r\n}\r\n.icon2\r\n{\r\n\tpointer-events: none;\r\n\tposition: absolute;\r\n\tleft: 10px;\r\n\ttop: -12px;\r\n\tcolor: rgb(0, 75, 44);\r\n\tcursor: text;\r\n\tfont-size: .80rem;\r\n\ttransition: all .2s ease;\r\n}\r\nspan.el-checkbox__label\r\n{\r\n\tpadding-left: 0px!important;\r\n}\r\n.forgotPassword\r\n{\r\n margin-top: 3px;\r\n text-decoration: none;\r\n float: right;\r\n color:rgb(0, 75, 44);\r\n}\r\nhr\r\n{\r\n\tmargin-bottom: 20px;\r\n\tborder-bottom: 1px;\r\n\tborder-top: 1px solid rgba(0, 0, 0, 0.1);\r\n}\r\n.el-input\r\n{\r\n width:100% !important;\r\n padding-top: 8px;\r\n}\r\n.title\r\n{\r\n\ttext-align: left;\r\n}\r\n.el-checkbox\r\n{\r\n\ttext-align: left;\r\n}\r\n.el-form-item\r\n{\r\n\tcolor: #626262;\r\n\tfont-weight: 400;\r\n\ttext-align: left;\r\n\tfont-family: Montserrat,Helvetica,Arial,sans-serif;\r\n\tfont-size: 14px;\r\n\tline-height: 1.5;\r\n\tletter-spacing: .01rem;\r\n margin-bottom: 15px;\r\n}\r\n.el-button\r\n{\r\n\tfont-family: Montserrat,Helvetica,Arial,sans-serif;\r\n}\r\n/* button.el-button--default\r\n{\r\n\tcolor:rgb(115, 103, 240);\r\n\tborder-color: rgb(115, 103, 240);\r\n}\r\nbutton.el-button--primary\r\n{\r\n\tbackground-color: rgb(115, 103, 240);\r\n border-color: rgb(115, 103, 240);\r\n} */\r\n.el-input\r\n{\r\n\twidth: 90%;\r\n}\r\n\r\n.h-screen\r\n{\r\n height: 100vh!important;\r\n}\r\n\r\n.flex\r\n{\r\n display: flex!important;\r\n}\r\n.w-full\r\n{\r\n width: 100%!important;\r\n}\r\n.mx-auto\r\n{\r\n margin-left: auto!important;\r\n margin-right: auto!important;\r\n}\r\n.self-center\r\n{\r\n align-self: center!important;\r\n}\r\n\r\n@media only screen and (min-width: 576px)\r\n{\r\n\t.sm-c\r\n\t{\r\n\t\t\twidth: 50%!important;\r\n\t}\r\n}\r\n@media only screen and (min-width: 768px)\r\n{\r\n\t.md-c\r\n\t{\r\n\t\t\twidth: 50%!important;\r\n\t}\r\n}\r\n@media only screen and (min-width: 992px)\r\n{\r\n\t.lg-c\r\n\t{\r\n\t\t\twidth: 75%!important;\r\n\t}\r\n}\r\n@media only screen and (min-width: 1200px)\r\n{\r\n\t.xl-c\r\n\t{\r\n\t\t\twidth: 40%!important;\r\n\t}\r\n}\r\n@media only screen and (min-width: 576px)\r\n{\r\n\t.sm-l\r\n\t{\r\n\t\t\tdisplay: none !important;\r\n\t}\r\n}\r\n@media only screen and (min-width: 768px)\r\n{\r\n\t.md-l\r\n\t{\r\n\t\t\tdisplay: none !important;\r\n\t}\r\n}\r\n@media only screen and (min-width: 992px)\r\n{\r\n\t.lg-l\r\n\t{\r\n\t\t\tdisplay: block!important;\r\n\t\t\twidth:50% !important;\r\n\t}\r\n}\r\n@media only screen and (min-width: 576px)\r\n{\r\n\t.sm-r\r\n\t{\r\n\t\t\twidth: 100%!important;\r\n\t}\r\n}\r\n@media only screen and (min-width: 768px)\r\n{\r\n\t.md-r\r\n\t{\r\n\t\t\twidth: 100%!important;\r\n\t}\r\n}\r\n@media only screen and (min-width: 992px)\r\n{\r\n\t.lg-r\r\n\t{\r\n\t\t\twidth: 50%!important;\r\n\t}\r\n}\r\n</style>\r\n<style>\r\n.login-consent-form{\r\n width: 50% !important;\r\n}\r\n.login-consent-form>.el-message-box__header, .login-consent-form>.el-message-box__btns{\r\n text-align: center !important;\r\n}\r\n</style>\r\n\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DemoSignIn.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DemoSignIn.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./DemoSignIn.vue?vue&type=template&id=1b68f18a&scoped=true&\"\nimport script from \"./DemoSignIn.vue?vue&type=script&lang=js&\"\nexport * from \"./DemoSignIn.vue?vue&type=script&lang=js&\"\nimport style0 from \"./DemoSignIn.vue?vue&type=style&index=0&id=1b68f18a&scoped=true&lang=css&\"\nimport style1 from \"./DemoSignIn.vue?vue&type=style&index=1&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"1b68f18a\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"about\"},[_c('h1',[_vm._v(\"This is the about page\")]),_c('p',[_vm._v(\"Welcome, \"+_vm._s(_vm.username))]),_c('router-link',{attrs:{\"to\":\"/\"}},[_c('a',[_vm._v(\"Home\")])])],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { render, staticRenderFns } from \"./About.vue?vue&type=template&id=2f74624c&\"\nvar script = {}\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_vm._m(0),_c('div',{staticClass:\"content-wrapper\"},[_c('div',[_c('div',[(_vm.currentCourses)?_c('div',{staticStyle:{\"border-bottom\":\"#bdbaba solid 1px\",\"padding-bottom\":\"10px\",\"font-size\":\"22px\",\"font-weight\":\"bold\",\"color\":\"#525252\",\"margin-bottom\":\"20px\"}},[_vm._v(\"\\n Current \"+_vm._s(_vm.getTermName(_vm.termCode))+\" Courses (\"+_vm._s(_vm.currentCourses.length)+\")\\n \")]):_vm._e(),(_vm.currentCourses && _vm.currentCourses.length > 0)?_c('div',_vm._l((_vm.currentCourses),function(course){return _c('el-card',{key:course.Id,staticClass:\"box-card\",staticStyle:{\"width\":\"312px\"}},[_c('div',{class:course.IsPaidCourse && course.UserRole == 'Student' && !_vm.subscribedTerms.includes(course.TermCode) ? 'unpaid-box-card-header' : 'box-card-header',attrs:{\"slot\":\"header\"},on:{\"click\":function($event){return _vm.gotoCourse(course.TermCode, course.ClassCode)}},slot:\"header\"},[_c('span',{staticClass:\"description\",attrs:{\"title\":course.ClassDescription}},[_vm._v(\"\\n \"+_vm._s(course.ClassDescription)+\"\\n \"),(course.UserRole == 'Student' && course.IsPaidCourse && !_vm.subscribedTerms.includes(course.TermCode))?_c('span',[_vm._v(\"(Unpaid)\")]):_vm._e()]),(course.TermCode != 'DEMO')?_c('div',{staticStyle:{\"font-size\":\"12px\"}},[_vm._v(\"\\n Term: \"),_c('strong',[_vm._v(_vm._s(_vm.getTermName(course.TermCode)))]),(course.PartOfTerm)?_c('span',[_vm._v(\" Part: \"),_c('strong',[_vm._v(_vm._s(course.PartOfTerm))])]):_vm._e(),_c('span')]):_vm._e(),_c('div',{staticStyle:{\"font-size\":\"12px\"}},[_vm._v(\"\\n Enrolled as: \"),_c('strong',[_vm._v(_vm._s(course.UserRole))]),_c('span')])]),_c('div',{staticStyle:{\"height\":\"50px\"},on:{\"click\":function($event){return _vm.gotoCourse(course.TermCode, course.ClassCode)}}}),_c('div',{staticStyle:{\"margin-top\":\"40px\"}},[_c('el-tooltip',{staticClass:\"item\",attrs:{\"effect\":\"dark\",\"content\":\"Projects\",\"placement\":\"bottom\"}},[_c('el-button',{staticClass:\"assignment-action-btn\",staticStyle:{\"padding-right\":\"18px\",\"padding-left\":\"18px\"},on:{\"click\":function($event){return _vm.gotoAssignment(course.ClassCode, course.TermCode)}}},[_c('i',{staticClass:\"fas fa-tasks\",staticStyle:{\"font-size\":\"22px\"}})])],1),(course.UserRole == 'Instructor')?_c('el-tooltip',{staticClass:\"item\",attrs:{\"effect\":\"dark\",\"content\":\"Score Center\",\"placement\":\"bottom\"}},[_c('el-button',{staticClass:\"assignment-action-btn\",staticStyle:{\"padding-right\":\"15px\"},on:{\"click\":function($event){return _vm.gotoInstructorReview(course.ClassCode, course.TermCode)}}},[_c('i',{staticClass:\"far fa-edit\",staticStyle:{\"font-size\":\"22px\"}})])],1):_vm._e(),(course.UserRole == 'Student')?_c('el-tooltip',{staticClass:\"item\",attrs:{\"effect\":\"dark\",\"content\":\"Peer Review\",\"placement\":\"bottom\"}},[_c('el-button',{staticClass:\"assignment-action-btn\",staticStyle:{\"padding-right\":\"12px\",\"padding-left\":\"15px\"},on:{\"click\":function($event){return _vm.gotoPeerReview(course.ClassCode, course.TermCode)}}},[_c('i',{staticClass:\"fas fa-user-edit\",staticStyle:{\"font-size\":\"22px\",\"margin-left\":\"2px\"}})])],1):_vm._e(),(course.UserRole == 'Student')?_c('el-tooltip',{staticClass:\"item\",attrs:{\"effect\":\"dark\",\"content\":\"Self Review\",\"placement\":\"bottom\"}},[_c('el-button',{staticClass:\"assignment-action-btn\",staticStyle:{\"padding-right\":\"18px\",\"padding-left\":\"18px\"},on:{\"click\":function($event){return _vm.gotoSelfReview(course.ClassCode, course.TermCode)}}},[_c('i',{staticClass:\"fas fa-user-check\",staticStyle:{\"font-size\":\"22px\"}})])],1):_vm._e(),_c('el-tooltip',{staticClass:\"item\",attrs:{\"effect\":\"dark\",\"content\":\"Collective Feedback\",\"placement\":\"bottom\"}},[_c('el-button',{staticClass:\"assignment-action-btn\",staticStyle:{\"padding-right\":\"18px\",\"padding-left\":\"18px\"},on:{\"click\":function($event){return _vm.gotoCollectiveFeedback(course.ClassCode, course.TermCode)}}},[_c('i',{staticClass:\"fab fa-stack-exchange\",staticStyle:{\"font-size\":\"22px\"}})])],1),(course.UserRole == 'Instructor')?_c('el-tooltip',{staticClass:\"item\",attrs:{\"effect\":\"dark\",\"content\":\"Peer Review Team formation\",\"placement\":\"bottom\"}},[_c('el-button',{staticClass:\"assignment-action-btn\",staticStyle:{\"padding-right\":\"15px\",\"padding-left\":\"15px\"},on:{\"click\":function($event){return _vm.gotoTeamFormation(course.ClassCode, course.TermCode)}}},[_c('i',{staticClass:\"fas fa-user-friends\",staticStyle:{\"font-size\":\"22px\"}})])],1):_vm._e()],1)])}),1):_vm._e()])]),(_vm.pastCourses && _vm.pastCourses.length > 0)?_c('div',[_c('div',[_c('div',{staticStyle:{\"margin-top\":\"10px\",\"border-bottom\":\"#bdbaba solid 1px\",\"padding-bottom\":\"10px\",\"font-size\":\"22px\",\"font-weight\":\"bold\",\"color\":\"#525252\",\"margin-bottom\":\"20px\"}},[_vm._v(\"\\n Past Enrollments (\"+_vm._s(_vm.pastCourses.length)+\")\\n \")]),_vm._l((_vm.pastCourses),function(course){return _c('el-card',{key:course.Id,staticClass:\"box-card\",staticStyle:{\"width\":\"312px\"}},[_c('div',{staticClass:\"box-card-header\",attrs:{\"slot\":\"header\"},on:{\"click\":function($event){return _vm.gotoCourse(course.TermCode, course.ClassCode)}},slot:\"header\"},[_c('span',{staticClass:\"description\",attrs:{\"title\":course.ClassDescription}},[_vm._v(\"\\n \"+_vm._s(course.ClassDescription)+\"\\n \"),(course.UserRole == 'Student' && course.IsPaidCourse && !_vm.subscribedTerms.includes(course.TermCode))?_c('span',[_vm._v(\"(Unpaid)\")]):_vm._e()]),_c('div',{staticStyle:{\"font-size\":\"12px\"}},[_vm._v(\"\\n Term: \"),_c('strong',[_vm._v(_vm._s(_vm.getTermName(course.TermCode)))]),(course.PartOfTerm)?_c('span',[_vm._v(\" Part: \"),_c('strong',[_vm._v(_vm._s(course.PartOfTerm))])]):_vm._e(),_c('span')]),_c('div',{staticStyle:{\"font-size\":\"12px\"}},[_vm._v(\"\\n Enrolled as: \"),_c('strong',[_vm._v(_vm._s(course.UserRole))]),_c('span')])]),_c('div',{staticStyle:{\"height\":\"50px\"},on:{\"click\":function($event){return _vm.gotoCourse(course.TermCode, course.ClassCode)}}}),_c('div',{staticStyle:{\"margin-top\":\"40px\"}},[_c('el-tooltip',{staticClass:\"item\",attrs:{\"effect\":\"dark\",\"content\":\"Projects\",\"placement\":\"bottom\"}},[_c('el-button',{staticClass:\"assignment-action-btn\",staticStyle:{\"padding-right\":\"18px\",\"padding-left\":\"18px\"},on:{\"click\":function($event){return _vm.gotoAssignment(course.ClassCode, course.TermCode)}}},[_c('i',{staticClass:\"fas fa-tasks\",staticStyle:{\"font-size\":\"22px\"}})])],1),(course.UserRole == 'Instructor')?_c('el-tooltip',{staticClass:\"item\",attrs:{\"effect\":\"dark\",\"content\":\"Score Center\",\"placement\":\"bottom\"}},[_c('el-button',{staticClass:\"assignment-action-btn\",staticStyle:{\"padding-right\":\"15px\"},on:{\"click\":function($event){return _vm.gotoInstructorReview(course.ClassCode, course.TermCode)}}},[_c('i',{staticClass:\"far fa-edit\",staticStyle:{\"font-size\":\"22px\"}})])],1):_vm._e(),(course.UserRole == 'Student')?_c('el-tooltip',{staticClass:\"item\",attrs:{\"effect\":\"dark\",\"content\":\"Peer Review\",\"placement\":\"bottom\"}},[_c('el-button',{staticClass:\"assignment-action-btn\",staticStyle:{\"padding-right\":\"12px\",\"padding-left\":\"15px\"},on:{\"click\":function($event){return _vm.gotoPeerReview(course.ClassCode, course.TermCode)}}},[_c('i',{staticClass:\"fas fa-user-edit\",staticStyle:{\"font-size\":\"22px\",\"margin-left\":\"2px\"}})])],1):_vm._e(),(course.UserRole == 'Student')?_c('el-tooltip',{staticClass:\"item\",attrs:{\"effect\":\"dark\",\"content\":\"Self Review\",\"placement\":\"bottom\"}},[_c('el-button',{staticClass:\"assignment-action-btn\",staticStyle:{\"padding-right\":\"18px\",\"padding-left\":\"18px\"},on:{\"click\":function($event){return _vm.gotoSelfReview(course.ClassCode, course.TermCode)}}},[_c('i',{staticClass:\"fas fa-user-check\",staticStyle:{\"font-size\":\"22px\"}})])],1):_vm._e(),_c('el-tooltip',{staticClass:\"item\",attrs:{\"effect\":\"dark\",\"content\":\"Collective Feedback\",\"placement\":\"bottom\"}},[_c('el-button',{staticClass:\"assignment-action-btn\",staticStyle:{\"padding-right\":\"18px\",\"padding-left\":\"18px\"},on:{\"click\":function($event){return _vm.gotoCollectiveFeedback(course.ClassCode, course.TermCode)}}},[_c('i',{staticClass:\"fab fa-stack-exchange\",staticStyle:{\"font-size\":\"22px\"}})])],1),(course.UserRole == 'Instructor')?_c('el-tooltip',{staticClass:\"item\",attrs:{\"effect\":\"dark\",\"content\":\"Peer Review Team formation\",\"placement\":\"bottom\"}},[_c('el-button',{staticClass:\"assignment-action-btn\",staticStyle:{\"padding-right\":\"15px\",\"padding-left\":\"15px\"},on:{\"click\":function($event){return _vm.gotoTeamFormation(course.ClassCode, course.TermCode)}}},[_c('i',{staticClass:\"fas fa-users\",staticStyle:{\"font-size\":\"22px\"}})])],1):_vm._e()],1)])})],2)]):_vm._e()]),_c('div',[(_vm.paymentDialogVisible)?_c('paymentDialog',{attrs:{\"payment-dialog-visible\":_vm.paymentDialogVisible,\"payment-term-code\":_vm.paymentTermCode},on:{\"update:paymentDialogVisible\":function($event){_vm.paymentDialogVisible=$event},\"update:payment-dialog-visible\":function($event){_vm.paymentDialogVisible=$event},\"close\":function($event){return _vm.closePaymentDialog()}}}):_vm._e()],1)])}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"breadcumb\"},[_c('div',{staticClass:\"ic-app-crumbs\"},[_c('span',{staticClass:\"breadcumb-text\"},[_vm._v(\"\\n All Courses\\n \")])])])}]\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('el-dialog',{attrs:{\"title\":\"Payment is Required\",\"visible\":_vm.paymentDialogVisible,\"width\":\"600px\",\"center\":\"\"},on:{\"update:visible\":function($event){_vm.paymentDialogVisible=$event},\"close\":function($event){return _vm.closeDialog()}}},[_c('form',{attrs:{\"name\":\"paymentForm\",\"method\":\"post\",\"action\":_vm.siteUrl}},[_c('input',{attrs:{\"name\":\"UPAY_SITE_ID\",\"type\":\"hidden\"},domProps:{\"value\":_vm.siteId}}),_c('input',{attrs:{\"name\":\"EXT_TRANS_ID\",\"type\":\"hidden\"},domProps:{\"value\":_vm.paymentTermCode + _vm.username + '#' + _vm.transDate()}}),_c('input',{attrs:{\"name\":\"BILL_EMAIL_ADDRESS\",\"type\":\"hidden\"},domProps:{\"value\":_vm.email}}),_c('div',{staticStyle:{\"word-break\":\"break-word\",\"padding\":\"8px 16px\",\"padding-top\":\"px\",\"background-color\":\"#ecf8ff\",\"border-radius\":\"4px\",\"border-left\":\"5px solid #50bfff\",\"margin\":\"20px 0\",\"margin-top\":\"8px\"}},[_c('p',[_vm._v(\"In order to use the USF Writes resources, you must make a payment of $\"+_vm._s(_vm.amount)+\".00 for each semester of use.\")]),_c('p',[_vm._v(\"Please do not submit payments twice during a semester.\")]),_c('p',[_vm._v(\"To proceed with a VISA, MasterCard, or Discover electronic payment using the USF UPay system, please press the \\\"Submit Payment\\\" button.\")]),_c('p',[_vm._v(\"If you do not wish to submit a payment now, press the \\\"Cancel\\\" button.\")])])]),_c('span',{staticClass:\"dialog-footer\",attrs:{\"slot\":\"footer\"},slot:\"footer\"},[_c('el-button',{on:{\"click\":function($event){return _vm.closeDialog()}}},[_vm._v(\"\\n Cancel\\n \")]),_c('el-button',{directives:[{name:\"loading\",rawName:\"v-loading\",value:(_vm.loading),expression:\"loading\"}],attrs:{\"type\":\"primary\"},on:{\"click\":_vm.onSubmitClick}},[_vm._v(\"\\n Submit Payment\\n \")])],1)])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n <el-dialog\r\n title=\"Payment is Required\"\r\n :visible.sync=\"paymentDialogVisible\"\r\n width=\"600px\"\r\n center\r\n @close=\"closeDialog()\"\r\n >\r\n <form name=\"paymentForm\" method=\"post\" :action=\"siteUrl\">\r\n <!-- action=https://secure.touchnet.com/C20235_upay/web/index.jsp -->\r\n <input name=\"UPAY_SITE_ID\" type=\"hidden\" :value=\"siteId\">\r\n <input name=\"EXT_TRANS_ID\" type=\"hidden\" :value=\"paymentTermCode + username + '#' + transDate()\">\r\n <input name=\"BILL_EMAIL_ADDRESS\" type=\"hidden\" :value=\"email\">\r\n\r\n <div style=\"word-break: break-word; padding: 8px 16px; padding-top: px; background-color: #ecf8ff; border-radius: 4px; border-left: 5px solid #50bfff; margin: 20px 0; margin-top: 8px;\">\r\n <p>In order to use the USF Writes resources, you must make a payment of ${{ amount }}.00 for each semester of use.</p>\r\n\r\n <p>Please do not submit payments twice during a semester.</p>\r\n\r\n <p>To proceed with a VISA, MasterCard, or Discover electronic payment using the USF UPay system, please press the \"Submit Payment\" button.</p>\r\n\r\n <p>If you do not wish to submit a payment now, press the \"Cancel\" button.</p>\r\n </div>\r\n\r\n <!-- <div style=\"word-break: break-word; padding: 8px 16px; padding-top: px; background-color: rgb(255 243 243); border-radius: 4px; border-left: 5px solid rgb(255 135 135); margin: 8px 0; margin-top: 8px;\">\r\n\r\n <p>The university's payment processor is having a global outage. All university payments are down at this time. Please try back shortly.</p>\r\n\r\n </div> -->\r\n\r\n </form>\r\n\r\n <span slot=\"footer\" class=\"dialog-footer\">\r\n <el-button @click=\"closeDialog()\">\r\n Cancel\r\n </el-button>\r\n <el-button v-loading=\"loading\" type=\"primary\" @click=\"onSubmitClick\">\r\n Submit Payment\r\n </el-button>\r\n </span>\r\n </el-dialog>\r\n</template>\r\n\r\n<script>\r\n// Handle UI and logics for the Payment Dialog.\r\nexport default {\r\n\tname: 'Payment',\r\n\tprops: {\r\n\t\tpaymentDialogVisible: Boolean,\r\n\t\tpaymentTermCode: {\r\n\t\t\ttype: String,\r\n\t\t\tdefault: ''\r\n\t\t}\r\n\t},\r\n\tdata() {\r\n\t\treturn {\r\n\t\t\tloading: false,\r\n\t\t\temail: this.$store.state.auth.user.Email,\r\n\t\t\tusername: this.$store.state.auth.user.UserName,\r\n\t\t\tsiteId: process.env.VUE_APP_TOUCHNET_SITE_ID,\r\n\t\t\tsiteUrl: process.env.VUE_APP_TOUCHNET_URL,\r\n\t\t\tamount: process.env.VUE_APP_TOUCHNET_AMOUNT\r\n\t\t}\r\n\t},\r\n\tmounted: function() {\r\n\t\tthis.paymentDialogVisible = true\r\n\t\tconsole.log(this.paymentTermCode)\r\n\t},\r\n\tmethods: {\r\n\t\t// @vuese\r\n\t\t// Close the payment dialog.\r\n\t\tcloseDialog() {\r\n\t\t\tthis.$emit('close')\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Handles logics when the submit button is clicked.\r\n\t\tasync onSubmitClick() {\r\n\t\t\tdocument.paymentForm.submit()\r\n\t\t\tthis.$emit('close')\r\n\t\t},\r\n\t\ttransDate() {\r\n\t\t\tconst d = new Date()\r\n\t\t\tconst n = d.getTime()\r\n\t\t\treturn n\r\n\t\t}\r\n\t}\r\n}\r\n</script>\r\n\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Payment.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Payment.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Payment.vue?vue&type=template&id=652bdd22&\"\nimport script from \"./Payment.vue?vue&type=script&lang=js&\"\nexport * from \"./Payment.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","<template>\r\n <div>\r\n <div class=\"breadcumb\">\r\n <div class=\"ic-app-crumbs\">\r\n <span class=\"breadcumb-text\">\r\n All Courses\r\n </span>\r\n </div>\r\n </div>\r\n <div class=\"content-wrapper\">\r\n <div>\r\n\r\n <div>\r\n <div v-if=\"currentCourses\" style=\"border-bottom: #bdbaba solid 1px; padding-bottom: 10px; font-size: 22px; font-weight: bold; color: #525252; margin-bottom: 20px;\">\r\n Current {{ getTermName(termCode) }} Courses ({{ currentCourses.length }})\r\n </div>\r\n <div v-if=\"currentCourses && currentCourses.length > 0\">\r\n <el-card v-for=\"course in currentCourses\" :key=\"course.Id\" class=\"box-card\" style=\"width: 312px;\">\r\n <div slot=\"header\" :class=\"course.IsPaidCourse && course.UserRole == 'Student' && !subscribedTerms.includes(course.TermCode) ? 'unpaid-box-card-header' : 'box-card-header'\" @click=\"gotoCourse(course.TermCode, course.ClassCode)\">\r\n <span class=\"description\" :title=\"course.ClassDescription\">\r\n {{ course.ClassDescription }}\r\n <span v-if=\"course.UserRole == 'Student' && course.IsPaidCourse && !subscribedTerms.includes(course.TermCode)\">(Unpaid)</span>\r\n </span>\r\n <div v-if=\"course.TermCode != 'DEMO'\" style=\"font-size: 12px;\">\r\n Term: <strong>{{ getTermName(course.TermCode) }}</strong> <span v-if=\"course.PartOfTerm\"> Part: <strong>{{ course.PartOfTerm }}</strong></span> <!-- IX conditional for Summer Part of Term -->\r\n <span />\r\n </div>\r\n <div style=\"font-size: 12px;\">\r\n Enrolled as: <strong>{{ course.UserRole }}</strong>\r\n <span />\r\n </div>\r\n </div>\r\n <div style=\"height: 50px;\" @click=\"gotoCourse(course.TermCode, course.ClassCode)\" />\r\n <div style=\"margin-top: 40px;\">\r\n <el-tooltip\r\n class=\"item\"\r\n effect=\"dark\"\r\n content=\"Projects\"\r\n placement=\"bottom\"\r\n >\r\n <el-button class=\"assignment-action-btn\" style=\"padding-right: 18px; padding-left: 18px;\" @click=\"gotoAssignment(course.ClassCode, course.TermCode)\">\r\n <i class=\"fas fa-tasks\" style=\"font-size: 22px;\" />\r\n </el-button>\r\n </el-tooltip>\r\n\r\n <el-tooltip\r\n v-if=\"course.UserRole == 'Instructor'\"\r\n class=\"item\"\r\n effect=\"dark\"\r\n content=\"Score Center\"\r\n placement=\"bottom\"\r\n >\r\n <el-button class=\"assignment-action-btn\" style=\"padding-right: 15px;\" @click=\"gotoInstructorReview(course.ClassCode, course.TermCode)\">\r\n <i class=\"far fa-edit\" style=\"font-size: 22px;\" />\r\n </el-button>\r\n </el-tooltip>\r\n\r\n <el-tooltip\r\n v-if=\"course.UserRole == 'Student'\"\r\n class=\"item\"\r\n effect=\"dark\"\r\n content=\"Peer Review\"\r\n placement=\"bottom\"\r\n >\r\n <el-button class=\"assignment-action-btn\" style=\"padding-right: 12px; padding-left: 15px;\" @click=\"gotoPeerReview(course.ClassCode, course.TermCode)\">\r\n <!-- <i class=\"far fa-address-book\" style=\"font-size: 22px;\" /> -->\r\n <i class=\"fas fa-user-edit\" style=\"font-size: 22px; margin-left: 2px;\" />\r\n </el-button>\r\n </el-tooltip>\r\n\r\n <el-tooltip\r\n v-if=\"course.UserRole == 'Student'\"\r\n class=\"item\"\r\n effect=\"dark\"\r\n content=\"Self Review\"\r\n placement=\"bottom\"\r\n >\r\n <el-button class=\"assignment-action-btn\" style=\"padding-right: 18px; padding-left: 18px;\" @click=\"gotoSelfReview(course.ClassCode, course.TermCode)\">\r\n <i class=\"fas fa-user-check\" style=\"font-size: 22px;\" />\r\n </el-button>\r\n </el-tooltip>\r\n\r\n <el-tooltip class=\"item\" effect=\"dark\" content=\"Collective Feedback\" placement=\"bottom\">\r\n <el-button class=\"assignment-action-btn\" style=\"padding-right: 18px; padding-left: 18px;\" @click=\"gotoCollectiveFeedback(course.ClassCode, course.TermCode)\">\r\n <i class=\"fab fa-stack-exchange\" style=\"font-size: 22px;\" />\r\n </el-button>\r\n </el-tooltip>\r\n\r\n <el-tooltip v-if=\"course.UserRole == 'Instructor'\" class=\"item\" effect=\"dark\" content=\"Peer Review Team formation\" placement=\"bottom\">\r\n <el-button class=\"assignment-action-btn\" style=\"padding-right: 15px; padding-left: 15px;\" @click=\"gotoTeamFormation(course.ClassCode, course.TermCode)\">\r\n <i class=\"fas fa-user-friends\" style=\"font-size: 22px;\" />\r\n </el-button>\r\n </el-tooltip>\r\n </div>\r\n </el-card>\r\n </div>\r\n\r\n </div>\r\n\r\n </div>\r\n\r\n <div v-if=\"pastCourses && pastCourses.length > 0\">\r\n\r\n <div>\r\n <div style=\"margin-top: 10px; border-bottom: #bdbaba solid 1px; padding-bottom: 10px; font-size: 22px; font-weight: bold; color: #525252; margin-bottom: 20px;\">\r\n Past Enrollments ({{ pastCourses.length }})\r\n </div>\r\n <el-card v-for=\"course in pastCourses\" :key=\"course.Id\" class=\"box-card\" style=\"width: 312px;\">\r\n <div\r\n slot=\"header\"\r\n class=\"box-card-header\"\r\n @click=\"gotoCourse(course.TermCode, course.ClassCode)\"\r\n >\r\n <span class=\"description\" :title=\"course.ClassDescription\">\r\n {{ course.ClassDescription }}\r\n <span v-if=\"course.UserRole == 'Student' && course.IsPaidCourse && !subscribedTerms.includes(course.TermCode)\">(Unpaid)</span>\r\n </span>\r\n <div style=\"font-size: 12px;\">\r\n Term: <strong>{{ getTermName(course.TermCode) }}</strong> <span v-if=\"course.PartOfTerm\"> Part: <strong>{{ course.PartOfTerm }}</strong></span> <!-- IX conditional for Summer Part of Term -->\r\n <span />\r\n </div>\r\n <div style=\"font-size: 12px;\">\r\n Enrolled as: <strong>{{ course.UserRole }}</strong>\r\n <span />\r\n </div>\r\n </div>\r\n <div style=\"height: 50px;\" @click=\"gotoCourse(course.TermCode, course.ClassCode)\" />\r\n <div style=\"margin-top: 40px;\">\r\n <el-tooltip\r\n class=\"item\"\r\n effect=\"dark\"\r\n content=\"Projects\"\r\n placement=\"bottom\"\r\n >\r\n <el-button class=\"assignment-action-btn\" style=\"padding-right: 18px; padding-left: 18px;\" @click=\"gotoAssignment(course.ClassCode, course.TermCode)\">\r\n <i class=\"fas fa-tasks\" style=\"font-size: 22px;\" />\r\n </el-button>\r\n </el-tooltip>\r\n\r\n <el-tooltip\r\n v-if=\"course.UserRole == 'Instructor'\"\r\n class=\"item\"\r\n effect=\"dark\"\r\n content=\"Score Center\"\r\n placement=\"bottom\"\r\n >\r\n <el-button class=\"assignment-action-btn\" style=\"padding-right: 15px;\" @click=\"gotoInstructorReview(course.ClassCode, course.TermCode)\">\r\n <i class=\"far fa-edit\" style=\"font-size: 22px;\" />\r\n </el-button>\r\n </el-tooltip>\r\n\r\n <el-tooltip\r\n v-if=\"course.UserRole == 'Student'\"\r\n class=\"item\"\r\n effect=\"dark\"\r\n content=\"Peer Review\"\r\n placement=\"bottom\"\r\n >\r\n <el-button class=\"assignment-action-btn\" style=\"padding-right: 12px; padding-left: 15px;\" @click=\"gotoPeerReview(course.ClassCode, course.TermCode)\">\r\n <!-- <i class=\"far fa-address-book\" style=\"font-size: 22px;\" /> -->\r\n <i class=\"fas fa-user-edit\" style=\"font-size: 22px; margin-left: 2px;\" />\r\n </el-button>\r\n </el-tooltip>\r\n\r\n <el-tooltip\r\n v-if=\"course.UserRole == 'Student'\"\r\n class=\"item\"\r\n effect=\"dark\"\r\n content=\"Self Review\"\r\n placement=\"bottom\"\r\n >\r\n <el-button class=\"assignment-action-btn\" style=\"padding-right: 18px; padding-left: 18px;\" @click=\"gotoSelfReview(course.ClassCode, course.TermCode)\">\r\n <i class=\"fas fa-user-check\" style=\"font-size: 22px;\" />\r\n </el-button>\r\n </el-tooltip>\r\n\r\n <el-tooltip class=\"item\" effect=\"dark\" content=\"Collective Feedback\" placement=\"bottom\">\r\n <el-button class=\"assignment-action-btn\" style=\"padding-right: 18px; padding-left: 18px;\" @click=\"gotoCollectiveFeedback(course.ClassCode, course.TermCode)\">\r\n <i class=\"fab fa-stack-exchange\" style=\"font-size: 22px;\" />\r\n </el-button>\r\n </el-tooltip>\r\n\r\n <el-tooltip v-if=\"course.UserRole == 'Instructor'\" class=\"item\" effect=\"dark\" content=\"Peer Review Team formation\" placement=\"bottom\">\r\n <el-button class=\"assignment-action-btn\" style=\"padding-right: 15px; padding-left: 15px;\" @click=\"gotoTeamFormation(course.ClassCode, course.TermCode)\">\r\n <i class=\"fas fa-users\" style=\"font-size: 22px;\" />\r\n </el-button>\r\n </el-tooltip>\r\n </div>\r\n </el-card>\r\n </div>\r\n </div>\r\n </div>\r\n <div>\r\n <paymentDialog\r\n v-if=\"paymentDialogVisible\"\r\n :payment-dialog-visible.sync=\"paymentDialogVisible\"\r\n :payment-term-code=\"paymentTermCode\"\r\n @close=\"closePaymentDialog()\"\r\n />\r\n </div>\r\n </div>\r\n</template>\r\n\r\n<script>\r\nimport { mapState, mapActions } from 'vuex'\r\nimport paymentDialog from '@/views/subscription/Payment.vue'\r\nimport _ from 'lodash'\r\n// Handles UI and logics for the Courses page.\r\nexport default {\r\n\tname: 'Courses',\r\n\tcomponents: {\r\n\t\tpaymentDialog\r\n\t},\r\n\tdata() {\r\n\t\treturn {\r\n\t\t\tpaymentDialogVisible: false,\r\n\t\t\thasStudentRole: false,\r\n\t\t\thasInstructorRole: false,\r\n\t\t\tcurrentCourses: null,\r\n\t\t\tpastCourses: null,\r\n\t\t\ttermCode: this.$store.state.auth.currentTerm != null ? this.$store.state.auth.currentTerm.TermCode : null,\r\n\t\t\tcourses: null,\r\n\t\t\tsubscribedTerms: [],\r\n\t\t\tshowPayment: false,\r\n\t\t\tpaymentTermCode: null\r\n\t\t}\r\n\t},\r\n\tcomputed: mapState({\r\n\t\tcurrentTermInState: state => state.auth.currentTerm,\r\n\t\tcoursesInState: state => state.enrollment.courses,\r\n\t\tcurrentCourse: state => state.enrollment.currentCourse,\r\n\t\tsubscribedTermsInState: state => state.enrollment.subscribedTerms,\r\n\t\torgCode: state => state.auth.user != null ? state.auth.user.OrgCode : null,\r\n\t\tusername: state => state.auth.user != null ? state.auth.user.UserName : null,\r\n\t\tuserInState: state => state.auth.user,\r\n\t\tshowPaymentInState: state => state.enrollment.showPayment,\r\n\t\tpaymentTermCodeInState: state => state.enrollment.paymentTermCode\r\n\t\t// showPayment() {\r\n\t\t// \tif (this.$route.query) { return this.$route.query.showPayment === 'true' }\r\n\t\t// },\r\n\t\t// paymentTermCode() {\r\n\t\t// \tif (this.$route.query) { return this.$route.query.termCode }\r\n\t\t// }\r\n\t}),\r\n\twatch: {\r\n\t\tsubscribedTermsInState(newValue) {\r\n\t\t\tthis.subscribedTerms = newValue\r\n\t\t\tif (this.courses) {\r\n \tthis.currentCourses = this.courses.filter(c => c.TermCode == this.termCode).sort((a, b) => (a.ClassDescription > b.ClassDescription) ? 1 : -1)\r\n\t\t\t\t this.pastCourses = this.courses.filter(c => c.TermCode != this.termCode &&\r\n (this.hasInstructorRole || !c.IsPaidCourse || (!this.hasInstructorRole && c.IsPaidCourse && c.UserRole == 'Student' && this.subscribedTerms.includes(c.TermCode)))\r\n\t\t\t\t).sort((a, b) => {\r\n\t\t\t\t\tif (a.TermCode > b.TermCode) return -1\r\n\t\t\t\t\tif (a.TermCode < b.TermCode) return 1\r\n\r\n\t\t\t\t\tif (a.ClassDescription > b.ClassDescription) return 1\r\n\t\t\t\t\tif (a.ClassDescription < b.ClassDescription) return -1\r\n\t\t\t\t})\r\n\t\t\t}\r\n\t\t},\r\n\t\tcurrentTermInState(newValue) {\r\n\t\t\tthis.termCode = newValue.TermCode\r\n\t\t\tif (this.courses) {\r\n \tthis.currentCourses = this.courses.filter(c => c.TermCode == this.termCode).sort((a, b) => (a.ClassDescription > b.ClassDescription) ? 1 : -1)\r\n\t\t\t\t this.pastCourses = this.courses.filter(c => c.TermCode != this.termCode &&\r\n (this.hasInstructorRole || !c.IsPaidCourse || (!this.hasInstructorRole && c.IsPaidCourse && c.UserRole == 'Student' && this.subscribedTerms.includes(c.TermCode)))\r\n\t\t\t\t).sort((a, b) => {\r\n\t\t\t\t\tif (a.TermCode > b.TermCode) return -1\r\n\t\t\t\t\tif (a.TermCode < b.TermCode) return 1\r\n\r\n\t\t\t\t\tif (a.ClassDescription > b.ClassDescription) return 1\r\n\t\t\t\t\tif (a.ClassDescription < b.ClassDescription) return -1\r\n\t\t\t\t})\r\n\t\t\t}\r\n\t\t},\r\n\t\tcoursesInState(newValue) {\r\n\t\t\tthis.courses = newValue\r\n\t\t\tif (newValue) {\r\n\t\t\t\tthis.currentCourses = newValue.filter(c => c.TermCode == this.termCode).sort((a, b) => (a.ClassDescription > b.ClassDescription) ? 1 : -1)\r\n\t\t\t\tthis.pastCourses = newValue.filter(c => c.TermCode != this.termCode &&\r\n (this.hasInstructorRole || !c.IsPaidCourse || (!this.hasInstructorRole && c.IsPaidCourse && c.UserRole == 'Student' && this.subscribedTerms.includes(c.TermCode)))\r\n\t\t\t\t).sort((a, b) => {\r\n\t\t\t\t\tif (a.TermCode > b.TermCode) return -1\r\n\t\t\t\t\tif (a.TermCode < b.TermCode) return 1\r\n\r\n\t\t\t\t\tif (a.ClassDescription > b.ClassDescription) return 1\r\n\t\t\t\t\tif (a.ClassDescription < b.ClassDescription) return -1\r\n\t\t\t\t})\r\n\t\t\t}\r\n\t\t},\r\n\t\tpaymentTermCodeInState(value) {\r\n\t\t\tthis.paymentTermCode = value\r\n\t\t},\r\n\t\tshowPaymentInState(value) {\r\n\t\t\tthis.showPayment = value\r\n\t\t\tif (value === true) {\r\n\t\t\t\tthis.paymentDialogVisible = true\r\n\t\t\t} else { this.paymentDialogVisible = false }\r\n\t\t},\r\n\t userInState(newValue) {\r\n\t\t\tthis.hasStudentRole = _.includes(newValue.Roles, 'Student')\r\n\t\t\tthis.hasInstructorRole = _.includes(newValue.Roles, 'Instructor')\r\n\t\t}\r\n\t},\r\n\tcreated() {\r\n\t\tthis.courses = this.$store.state.enrollment.courses\r\n\t\tthis.subscribedTerms = this.$store.state.enrollment.subscribedTerms\r\n\t\tif (this.courses) {\r\n \tthis.currentCourses = this.courses.filter(c => c.TermCode == this.termCode).sort((a, b) => (a.ClassDescription > b.ClassDescription) ? 1 : -1)\r\n\t\t\t\t this.pastCourses = this.courses.filter(c => c.TermCode != this.termCode &&\r\n\t\t\t\t (this.hasInstructorRole || !c.IsPaidCourse || (!this.hasInstructorRole && c.IsPaidCourse && c.UserRole == 'Student' && this.subscribedTerms.includes(c.TermCode)))\r\n\t\t\t).sort((a, b) => {\r\n\t\t\t\tif (a.TermCode > b.TermCode) return -1\r\n\t\t\t\tif (a.TermCode < b.TermCode) return 1\r\n\r\n\t\t\t\tif (a.ClassDescription > b.ClassDescription) return 1\r\n\t\t\t\tif (a.ClassDescription < b.ClassDescription) return -1\r\n\t\t\t})\r\n\t\t}\r\n \t if (this.$store.state.auth.user) { this.hasInstructorRole = _.includes(this.$store.state.auth.user.Roles, 'Instructor') }\r\n\t\tif (this.$store.state.auth.user) { this.hasStudentRole = _.includes(this.$store.state.auth.user.Roles, 'Student') }\r\n\t\tif (this.showPayment === true) { this.paymentDialogVisible = true }\r\n\t\tif (this.currentCourse) {\r\n\t\t\tthis.resetCourse()\r\n\t\t\tthis.resetState()\r\n\t\t}\r\n\r\n\t\t// console.log(this.courses) // IX REMOVE THIS FOR PRODUCTION\r\n\t},\r\n\tmethods: {\r\n\t\t...mapActions('enrollment', ['selectCourse', 'resetCourse', 'setPayment']),\r\n\t\t...mapActions('assignment', ['getAssignments', 'resetState']),\r\n\t\t// @vuese\r\n\t\t// Close the payment dialog.\r\n\t\tclosePaymentDialog() {\r\n\t\t\tthis.paymentDialogVisible = false\r\n\t\t\tthis.showPayment = false\r\n\t\t\tconst showPayment = false\r\n\t\t\tconst currentTerm = null\r\n\t\t\tthis.setPayment({ showPayment, currentTerm })\r\n\t\t\tthis.$router.push('/')\r\n },\r\n // IX Why do we have two methods that do exactly the same thing?!?!\r\n\t\t// @vuese\r\n\t\t// Go to the selected course.\r\n\t\t// @arg The selected class code and term code.\r\n\t\tasync gotoCourse(termCode, classCode) {\r\n const userRole = await this.selectCourse({ termCode, classCode })\r\n if (userRole != null) {\r\n if (parseInt(termCode) < 202208) {\r\n this.$router.push('course/' + classCode + '/projects/old')\r\n } else {\r\n this.$router.push('course/' + classCode + '/projects')\r\n }\r\n }\r\n },\r\n // IX Why do we have two methods that do exactly the same thing?!?!\r\n\t\t// @vuese\r\n\t\t// Go to the projects page of the selected course.\r\n\t\t// @arg The selected class code and term code.\r\n\t\tasync gotoAssignment(classCode, termCode) {\r\n\t\t\tconst userRole = await this.selectCourse({ termCode, classCode })\r\n if (userRole != null) {\r\n if (parseInt(termCode) < 202208) {\r\n this.$router.push('course/' + classCode + '/projects/old')\r\n } else {\r\n this.$router.push('course/' + classCode + '/projects')\r\n }\r\n }\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Go to instructor review page of the selected course.\r\n\t\t// @arg The selected class code and term code.\r\n\t\tasync gotoInstructorReview(classCode, termCode) {\r\n\t\t\tconst userRole = await this.selectCourse({ termCode, classCode })\r\n\t\t\tif (userRole != null) {\r\n\t\t\t\tthis.$router.push('instructor_review')\r\n\t\t\t}\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Go to the peer review page of the selected course.\r\n\t\t// @arg The selected class code and term code.\r\n\t\tasync gotoPeerReview(classCode, termCode) {\r\n\t\t\tconst userRole = await this.selectCourse({ termCode, classCode })\r\n\t\t\tif (userRole != null) {\r\n\t\t\t this.$router.push('peer_review')\r\n\t\t\t}\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Go to the self review page of the selected course.\r\n\t\t// @arg The selected class code and term code.\r\n\t\tasync gotoSelfReview(classCode, termCode) {\r\n\t\t\tconst userRole = await this.selectCourse({ termCode, classCode })\r\n\t\t\tif (userRole != null) {\r\n\t\t\t this.$router.push('self_review')\r\n\t\t\t}\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Go to the collective feedback page of the selected course.\r\n\t\t// @arg The selected class code and term code.\r\n\t\tasync gotoCollectiveFeedback(classCode, termCode) {\r\n\t\t\tconst userRole = await this.selectCourse({ termCode, classCode })\r\n\t\t\tif (userRole != null) { this.$router.push('collective_feedbacks') }\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Go to the team formation page of the selected course.\r\n\t\t// @arg The selected class code and term code.\r\n\t\tasync gotoTeamFormation(classCode, termCode) {\r\n\t\t\tconst userRole = await this.selectCourse({ termCode, classCode })\r\n\t\t\tif (userRole != null) { this.$router.push('course/' + classCode + '/team_formation/peer_review') }\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Get term description by term code.\r\n\t\t// @arg The term code.\r\n\t\tgetTermName(termCode) {\r\n\t\t\tif (termCode) {\r\n\t\t\t\tlet termName = ''\r\n\t\t\t\tconst yearCode = termCode.substr(0, 4)\r\n\t\t\t\tconst seasonCode = termCode.substr(4, 2)\r\n\t\t\t\tswitch (seasonCode) {\r\n\t\t\t\t\tcase '01':\r\n\t\t\t\t\t\ttermName = 'Spring ' + yearCode\r\n\t\t\t\t\t\tbreak\r\n\t\t\t\t\tcase '05':\r\n\t\t\t\t\t\ttermName = 'Summer ' + yearCode\r\n\t\t\t\t\t\tbreak\r\n\t\t\t\t\tcase '08':\r\n\t\t\t\t\t\ttermName = 'Fall ' + yearCode\r\n\t\t\t\t\t\tbreak\r\n\t\t\t\t\tdefault:\r\n\t\t\t\t\t\ttermName = ''\r\n\t\t\t\t}\r\n\t\t\t\treturn termName\r\n\t\t\t}\r\n\t\t\treturn ''\r\n\t\t}\r\n\t}\r\n}\r\n</script>\r\n\r\n<style scoped>\r\n.box-card{\r\n border-radius: 6px;\r\n}\r\n.box-card-header{\r\n background: #006747;\r\n padding: 18px 20px;\r\n border-bottom: 1px solid #EBEEF5;\r\n -webkit-box-sizing: border-box;\r\n box-sizing: border-box;\r\n}\r\n\r\n.unpaid-box-card-header{\r\n background: rgb(98, 110, 123);\r\n padding: 18px 20px;\r\n border-bottom: 1px solid #EBEEF5;\r\n -webkit-box-sizing: border-box;\r\n box-sizing: border-box;\r\n}\r\n\r\n.content-wrapper{\r\n padding: 20px;\r\n box-shadow: 20px 10px 25px 20px rgba(109, 107, 107, 0.1);\r\n}\r\n\r\n.right-side-wrapper{\r\nwidth: 500px;\r\n padding-left: 24px;\r\n}\r\n .text {\r\n font-size: 14px;\r\n }\r\n\r\n .item {\r\n margin-bottom: 5px;\r\n }\r\n\r\n .clearfix:before,\r\n .clearfix:after {\r\n display: table;\r\n content: \"\";\r\n }\r\n .clearfix:after {\r\n clear: both\r\n }\r\n\r\n.description{\r\n font-size: 18px;\r\n font-weight: bold;\r\n color: white;\r\n text-overflow: ellipsis;\r\n white-space: nowrap;\r\n width: 250px;\r\n display: inline-block;\r\n overflow: hidden;\r\n}\r\n.el-card >>> .el-card__header{\r\n background: #006747;\r\n color: white;\r\n padding: 0px;\r\n border-bottom: none\r\n}\r\n</style>\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Courses.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Courses.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Courses.vue?vue&type=template&id=4d22ff6c&scoped=true&\"\nimport script from \"./Courses.vue?vue&type=script&lang=js&\"\nexport * from \"./Courses.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Courses.vue?vue&type=style&index=0&id=4d22ff6c&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"4d22ff6c\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('div',{staticClass:\"breadcumb\"},[_c('div',{staticClass:\"ic-app-crumbs\"},[_c('span',{staticClass:\"breadcumb-text\"},[_c('router-link',{staticStyle:{\"color\":\"#4E5E63\",\"text-decoration\":\"none\"},attrs:{\"to\":{ path: '/course/'+ _vm.currentCourse.ClassCode +'/projects/old' }}},[_vm._v(\"\\n \"+_vm._s(_vm.currentCourse.ClassDescription)+\"\\n \")]),_c('i',{staticClass:\"fas fa-chevron-right breadcumb-next\"}),_vm._v(\"\\n Projects\\n \")],1)])]),_c('div',[_c('div',{staticClass:\"assignment-list\",attrs:{\"id\":\"assignment_group_1782423_assignments\"}},[_c('div',{staticStyle:{\"margin-bottom\":\"20px\"}}),(_vm.assignments)?_c('div',{staticClass:\"collectionViewItems ig-list\"},[_c('div',{staticClass:\"list-group\",attrs:{\"list\":_vm.assignments,\"group\":\"people\"}},_vm._l((_vm.assignments),function(assignment,key){return _c('div',{key:assignment.Id,staticClass:\"list-group-item box-card\",staticStyle:{\"width\":\"100%\"}},[_c('el-card',{staticStyle:{\"margin-bottom\":\"5px\"}},[(_vm.userRole == 'Instructor')?_c('div',{staticClass:\"clearfix\",attrs:{\"slot\":\"header\"},slot:\"header\"},[_c('div',[_c('span',{staticClass:\"instructor-assignment-name\",staticStyle:{\"margin-bottom\":\"5px\",\"width\":\"80%\"},attrs:{\"title\":assignment.AssignmentName},on:{\"click\":function($event){return _vm.openAssignmentDetailDialog(assignment.Id, key)}}},[_vm._v(\"\\n \"+_vm._s(assignment.AssignmentName)+\"\\n \")]),_c('div',{staticStyle:{\"float\":\"right\"}},[(assignment.UsePeerReview)?_c('div',{staticClass:\"assignment-details\",staticStyle:{\"margin-left\":\"20px\",\"margin-right\":\"2px\",\"margin-top\":\"4px\"}},[_c('el-tooltip',{staticClass:\"item\",attrs:{\"effect\":\"dark\",\"content\":\"This project has peer review\",\"placement\":\"bottom\"}},[_c('i',{staticClass:\"fas fa-user-edit\",staticStyle:{\"font-size\":\"15px\",\"color\":\"#4E5E63\"}})])],1):_vm._e(),(assignment.UseSelfAssessment)?_c('div',{staticClass:\"assignment-details\",staticStyle:{\"margin-left\":\"20px\",\"margin-right\":\"0px\",\"margin-top\":\"4px\"}},[_c('el-tooltip',{staticClass:\"item\",attrs:{\"effect\":\"dark\",\"content\":\"This project has self-review\",\"placement\":\"bottom\"}},[_c('i',{staticClass:\"fas fa-user-check\",staticStyle:{\"font-size\":\"15px\",\"color\":\"#4E5E63\"}})])],1):_vm._e(),(assignment.IsGroupAssignment)?_c('div',{staticClass:\"assignment-details\",staticStyle:{\"margin-left\":\"20px\",\"margin-right\":\"0px\",\"margin-top\":\"4px\"}},[_c('el-tooltip',{staticClass:\"item\",attrs:{\"effect\":\"dark\",\"content\":\"This project is a group project\",\"placement\":\"bottom\"}},[_c('i',{staticClass:\"fas fa-users\",staticStyle:{\"font-size\":\"17px\",\"color\":\"#4E5E63\"}})])],1):_vm._e(),(assignment.UseAppraisal)?_c('div',{staticClass:\"assignment-details\",staticStyle:{\"margin-left\":\"20px\",\"margin-right\":\"2px\",\"margin-top\":\"4px\"}},[_c('el-tooltip',{staticClass:\"item\",attrs:{\"effect\":\"dark\",\"content\":\"This project has appraisal\",\"placement\":\"bottom\"}},[_c('i',{staticClass:\"fab fa-rev\",staticStyle:{\"font-size\":\"18px\",\"color\":\"#4E5E63\",\"position\":\"relative\",\"top\":\"-1px\"}})])],1):_vm._e(),(assignment.UseCanvasIntegration)?_c('div',{staticClass:\"assignment-details\",staticStyle:{\"margin-left\":\"20px\",\"margin-right\":\"0px\",\"margin-top\":\"4px\"}},[_c('el-tooltip',{staticClass:\"item\",attrs:{\"effect\":\"dark\",\"content\":\"This project was synced with an assignment in Canvas\",\"placement\":\"bottom\"}},[_c('img',{staticStyle:{\"font-size\":\"18px\",\"color\":\"#4E5E63\",\"position\":\"relative\",\"top\":\"-2px\"},attrs:{\"src\":require(\"@/assets/img/CanvasIcon.png\"),\"alt\":\"Girl in a jacket\",\"width\":\"21\",\"height\":\"19\"}})])],1):_vm._e()])]),_c('div',{staticStyle:{\"height\":\"20px\",\"margin-top\":\"5px\"}},[_c('div',{staticClass:\"assignment-details\"},[_c('strong',[_vm._v(\"\\n Project Due Date:\\n \")]),_c('span',[_vm._v(\"\\n \"+_vm._s(_vm._f(\"formatDate\")(assignment.DueDate))+\" EST\\n \")])])]),(assignment.UseSelfAssessment && assignment.SelfReviewDueDate)?_c('div',{staticStyle:{\"height\":\"20px\",\"margin-top\":\"5px\"}},[(assignment.UseSelfAssessment)?_c('div',{staticClass:\"assignment-details\",staticStyle:{\"font-size\":\"13px\"}},[_c('strong',[_vm._v(\"\\n Self Review Due:\\n \")]),_c('span',[_vm._v(\"\\n \"+_vm._s(_vm._f(\"formatDate\")(assignment.SelfReviewDueDate))+\" EST\\n \")])]):_vm._e()]):_vm._e(),(assignment.UsePeerReview && assignment.PeerReviewDueDate)?_c('div',{staticStyle:{\"height\":\"20px\",\"margin-top\":\"5px\"}},[(assignment.UsePeerReview)?_c('div',{staticClass:\"assignment-details\"},[_c('strong',[_vm._v(\"\\n Peer Review Due Date:\\n \")]),_c('span',[_vm._v(\"\\n \"+_vm._s(_vm._f(\"formatDate\")(assignment.PeerReviewDueDate))+\" EST\\n \")])]):_vm._e()]):_vm._e(),(assignment.UseAppraisal)?_c('div',{staticStyle:{\"height\":\"20px\",\"margin-top\":\"5px\"}},[(assignment.UseAppraisal)?_c('div',{staticClass:\"assignment-details\"},[_c('strong',[_vm._v(\"\\n Appraisal Due Date:\\n \")]),_c('span',[_vm._v(\"\\n \"+_vm._s(_vm._f(\"formatDate\")(assignment.AppraisalDueDate))+\" EST\\n \")])]):_vm._e()]):_vm._e()]):_vm._e(),(_vm.userRole == 'Student')?_c('div',{staticClass:\"clearfix\",attrs:{\"slot\":\"header\"},slot:\"header\"},[_c('div',[_c('span',{staticClass:\"student-assignment-name\",staticStyle:{\"margin-bottom\":\"5px\",\"width\":\"80%\"},attrs:{\"title\":assignment.AssignmentName},on:{\"click\":function($event){return _vm.openAssignmentDetailDialog(assignment.Id, key)}}},[_vm._v(\"\\n \"+_vm._s(assignment.AssignmentName)+\"\\n \")]),_c('div',{staticStyle:{\"float\":\"right\"}},[(assignment.UsePeerReview)?_c('div',{staticClass:\"assignment-details\",staticStyle:{\"margin-left\":\"15px\",\"margin-right\":\"3px\"}},[_c('el-tooltip',{staticClass:\"item\",attrs:{\"effect\":\"dark\",\"content\":\"This project has peer review\",\"placement\":\"bottom\"}},[_c('i',{staticClass:\"fas fa-user-edit\",staticStyle:{\"font-size\":\"15px\",\"color\":\"#4E5E63\"}})])],1):_vm._e(),(assignment.UseSelfAssessment)?_c('div',{staticClass:\"assignment-details\",staticStyle:{\"margin-left\":\"15px\",\"margin-right\":\"0px\"}},[_c('el-tooltip',{staticClass:\"item\",attrs:{\"effect\":\"dark\",\"content\":\"This project has self-review\",\"placement\":\"bottom\"}},[_c('i',{staticClass:\"fas fa-user-check\",staticStyle:{\"font-size\":\"15px\",\"color\":\"#4E5E63\"}})])],1):_vm._e(),(assignment.IsGroupAssignment)?_c('div',{staticClass:\"assignment-details\",staticStyle:{\"margin-left\":\"15px\",\"margin-right\":\"0px\"}},[_c('el-tooltip',{staticClass:\"item\",attrs:{\"effect\":\"dark\",\"content\":\"This project is a group project\",\"placement\":\"bottom\"}},[_c('i',{staticClass:\"fas fa-users\",staticStyle:{\"font-size\":\"17px\",\"color\":\"#4E5E63\"}})])],1):_vm._e(),(assignment.UseAppraisal)?_c('div',{staticClass:\"assignment-details\",staticStyle:{\"margin-left\":\"15px\",\"margin-right\":\"0px\"}},[_c('el-tooltip',{staticClass:\"item\",attrs:{\"effect\":\"dark\",\"content\":\"This project has appraisal\",\"placement\":\"bottom\"}},[_c('i',{staticClass:\"fab fa-rev\",staticStyle:{\"font-size\":\"18px\",\"color\":\"#4E5E63\",\"position\":\"relative\",\"top\":\"-1px\"}})])],1):_vm._e(),(assignment.UseCanvasIntegration)?_c('div',{staticClass:\"assignment-details\",staticStyle:{\"margin-left\":\"15px\",\"margin-right\":\"0px\"}},[_c('el-tooltip',{staticClass:\"item\",attrs:{\"effect\":\"dark\",\"content\":\"This project was synced with an assignment in Canvas\",\"placement\":\"bottom\"}},[_c('img',{staticStyle:{\"font-size\":\"18px\",\"color\":\"#4E5E63\",\"position\":\"relative\",\"top\":\"-2px\"},attrs:{\"src\":require(\"@/assets/img/CanvasIcon.png\"),\"alt\":\"Girl in a jacket\",\"width\":\"21\",\"height\":\"19\"}})])],1):_vm._e()])]),_c('div',{staticStyle:{\"height\":\"20px\",\"margin-top\":\"5px\"}},[_c('div',{staticClass:\"assignment-details\",staticStyle:{\"font-size\":\"13.5px\"}},[_c('strong',[_c('u',[_vm._v(\"\\n Project Due Date:\\n \")])]),_c('span',[_c('u',[_vm._v(\"\\n \"+_vm._s(_vm._f(\"formatDate\")(assignment.DueDate))+\" EST\\n \")])]),(_vm.submissionStatus && _vm.submissionStatus[key])?_c('span',{staticStyle:{\"margin-left\":\"5px\"}},[(_vm.submissionStatus[key].Status == 'No Submission')?_c('el-tooltip',{staticClass:\"item\",attrs:{\"effect\":\"dark\",\"content\":'No Submission Yet',\"placement\":\"bottom\"}},[_c('i',{staticClass:\"fas fa-exclamation-circle\",staticStyle:{\"font-size\":\"15px\",\"color\":\"#f56c6c\"}})]):(new Date(assignment.DueDate) >= new Date(_vm.submissionStatus[key].UploadedDate))?_c('el-tooltip',{staticClass:\"item\",attrs:{\"effect\":\"dark\",\"content\":'Submitted on ' + _vm.formatDate(_vm.submissionStatus[key].UploadedDate) + ' EST',\"placement\":\"bottom\"}},[_c('i',{staticClass:\"far fa-check-circle\",staticStyle:{\"font-size\":\"15px\",\"color\":\"rgb(11 133 95)\"}})]):_c('el-tooltip',{staticClass:\"item\",attrs:{\"effect\":\"dark\",\"content\":'Submitted on ' + _vm.formatDate(_vm.submissionStatus[key].UploadedDate) + ' EST',\"placement\":\"bottom\"}},[_c('i',{staticClass:\"far fa-check-circle\",staticStyle:{\"font-size\":\"15px\",\"color\":\"rgb(11 133 95)\"}})])],1):_vm._e()])]),(assignment.UseSelfAssessment)?_c('div',{staticStyle:{\"height\":\"20px\",\"margin-top\":\"5px\"}},[_c('div',{staticClass:\"assignment-details\"},[_c('strong',[_vm._v(\"\\n Self Review Due Date:\\n \")]),_c('span',[_vm._v(\"\\n \"+_vm._s(_vm._f(\"formatDate\")(assignment.SelfReviewDueDate))+\" EST\\n \")]),(_vm.selfReviewStatus && _vm.selfReviewStatus.find(function (s) { return s.AssignmentId == assignment.Id; }))?_c('span',{staticStyle:{\"margin-left\":\"5px\"}},[(_vm.selfReviewStatus.find(function (s) { return s.AssignmentId == assignment.Id; }).Status == 'No Submission')?_c('el-tooltip',{staticClass:\"item\",attrs:{\"effect\":\"dark\",\"content\":'No Submission Yet',\"placement\":\"bottom\"}},[_c('i',{staticClass:\"fas fa-exclamation-circle\",staticStyle:{\"font-size\":\"15px\",\"color\":\"#f56c6c\"}})]):(new Date(assignment.SelfReviewDueDate) >= new Date(_vm.selfReviewStatus.find(function (s) { return s.AssignmentId == assignment.Id; }).SubmittedDate))?_c('el-tooltip',{staticClass:\"item\",attrs:{\"effect\":\"dark\",\"content\":'Submitted on ' + _vm.formatDate(_vm.selfReviewStatus.find(function (s) { return s.AssignmentId == assignment.Id; }).SubmittedDate) + ' EST',\"placement\":\"bottom\"}},[_c('i',{staticClass:\"far fa-check-circle\",staticStyle:{\"font-size\":\"15px\",\"color\":\"rgb(11 133 95)\"}})]):_c('el-tooltip',{staticClass:\"item\",attrs:{\"effect\":\"dark\",\"content\":'Submitted on ' + _vm.formatDate(_vm.selfReviewStatus.find(function (s) { return s.AssignmentId == assignment.Id; }).SubmittedDate) + ' EST',\"placement\":\"bottom\"}},[_c('i',{staticClass:\"far fa-check-circle\",staticStyle:{\"font-size\":\"15px\",\"color\":\"rgb(11 133 95)\"}})])],1):_c('span',{staticStyle:{\"margin-left\":\"5px\"}},[_c('el-tooltip',{staticClass:\"item\",attrs:{\"effect\":\"dark\",\"content\":'No Submission Yet',\"placement\":\"bottom\"}},[_c('i',{staticClass:\"fas fa-exclamation-circle\",staticStyle:{\"font-size\":\"15px\",\"color\":\"#f56c6c\"}})])],1)])]):_vm._e(),(assignment.UsePeerReview)?_c('div',{staticStyle:{\"height\":\"20px\",\"margin-top\":\"5px\"}},[_c('div',{staticClass:\"assignment-details\"},[_c('strong',[_vm._v(\"\\n Peer Review Due Date:\\n \")]),(assignment.PeerReviewDueDate)?_c('span',[_vm._v(\"\\n \"+_vm._s(_vm._f(\"formatDate\")(assignment.PeerReviewDueDate))+\" EST\\n \")]):_c('span',[_vm._v(\"\\n No due date specified\\n \")]),(_vm.peerReviewStatus && _vm.peerReviewStatus.find(function (s) { return s.AssignmentId == assignment.Id; }))?_c('span',{staticStyle:{\"margin-left\":\"5px\"}},[(_vm.peerReviewStatus.find(function (s) { return s.AssignmentId == assignment.Id; }).Status == 'No Submission')?_c('el-tooltip',{staticClass:\"item\",attrs:{\"effect\":\"dark\",\"content\":'No Submission Yet',\"placement\":\"bottom\"}},[_c('i',{staticClass:\"fas fa-exclamation-circle\",staticStyle:{\"font-size\":\"15px\",\"color\":\"#f56c6c\"}})]):(_vm.peerReviewStatus.find(function (s) { return s.AssignmentId == assignment.Id; }).Status == 'Completed' && new Date(assignment.PeerReviewDueDate) >= new Date(_vm.peerReviewStatus.find(function (s) { return s.AssignmentId == assignment.Id; }).SubmittedDate))?_c('el-tooltip',{staticClass:\"item\",attrs:{\"effect\":\"dark\",\"content\":'Completed on ' + _vm.formatDate(_vm.peerReviewStatus.find(function (s) { return s.AssignmentId == assignment.Id; }).SubmittedDate) + ' EST',\"placement\":\"bottom\"}},[_c('i',{staticClass:\"far fa-check-circle\",staticStyle:{\"font-size\":\"15px\",\"color\":\"rgb(11 133 95)\"}})]):(_vm.peerReviewStatus.find(function (s) { return s.AssignmentId == assignment.Id; }).Status == 'Completed' && new Date(assignment.PeerReviewDueDate) < new Date(_vm.peerReviewStatus.find(function (s) { return s.AssignmentId == assignment.Id; }).SubmittedDate))?_c('el-tooltip',{staticClass:\"item\",attrs:{\"effect\":\"dark\",\"content\":'Completed on ' + _vm.formatDate(_vm.peerReviewStatus.find(function (s) { return s.AssignmentId == assignment.Id; }).SubmittedDate) + ' EST',\"placement\":\"bottom\"}},[_c('i',{staticClass:\"far fa-check-circle\",staticStyle:{\"font-size\":\"15px\",\"color\":\"rgb(11 133 95)\"}})]):(_vm.peerReviewStatus.find(function (s) { return s.AssignmentId == assignment.Id; }).Status == 'In Progress')?_c('el-tooltip',{staticClass:\"item\",attrs:{\"effect\":\"dark\",\"placement\":\"bottom\"}},[_c('div',{attrs:{\"slot\":\"content\"},slot:\"content\"},[_vm._v(\"\\n Peer review is in progress. All peers have submitted their papers,\\n \"),_c('br'),_vm._v(\"but you have not completed all of your reviews.\\n \")]),_c('i',{staticClass:\"fas fa-tasks\",staticStyle:{\"font-size\":\"15px\",\"color\":\"#e6a23c\"}})]):(_vm.peerReviewStatus.find(function (s) { return s.AssignmentId == assignment.Id; }).Status == 'Partially Completed')?_c('el-tooltip',{staticClass:\"item\",attrs:{\"effect\":\"dark\",\"placement\":\"bottom\"}},[_c('div',{attrs:{\"slot\":\"content\"},slot:\"content\"},[_vm._v(\"\\n Peer review is partially completed. You have reviewed all available papers,\\n \"),_c('br'),_vm._v(\"but there are team members who have not submitted their papers.\\n \")]),_c('i',{staticClass:\"fas fa-tasks\",staticStyle:{\"font-size\":\"15px\",\"color\":\"#569636\"}})]):_vm._e()],1):_c('span',{staticStyle:{\"margin-left\":\"5px\"}},[_c('el-tooltip',{staticClass:\"item\",attrs:{\"effect\":\"dark\",\"content\":'No Submission Yet',\"placement\":\"bottom\"}},[_c('i',{staticClass:\"fas fa-exclamation-circle\",staticStyle:{\"font-size\":\"15px\",\"color\":\"#f56c6c\"}})])],1)])]):_vm._e(),(assignment.UseAppraisal)?_c('div',{staticStyle:{\"height\":\"20px\",\"margin-top\":\"5px\"}},[_c('div',{staticClass:\"assignment-details\"},[_c('strong',[_vm._v(\"\\n Appraisal Due Date:\\n \")]),_c('span',[_vm._v(\"\\n \"+_vm._s(_vm._f(\"formatDate\")(assignment.AppraisalDueDate))+\" EST\\n \")]),(_vm.appraisalStatus && _vm.appraisalStatus.find(function (s) { return s.AssignmentId == assignment.Id; }))?_c('span',{staticStyle:{\"margin-left\":\"5px\"}},[(_vm.appraisalStatus.find(function (s) { return s.AssignmentId == assignment.Id; }).Status == 'No Submission')?_c('el-tooltip',{staticClass:\"item\",attrs:{\"effect\":\"dark\",\"content\":'No Submission Yet',\"placement\":\"bottom\"}},[_c('i',{staticClass:\"fas fa-exclamation-circle\",staticStyle:{\"font-size\":\"15px\",\"color\":\"#f56c6c\"}})]):(new Date(assignment.AppraisalDueDate) >= new Date(_vm.appraisalStatus.find(function (s) { return s.AssignmentId == assignment.Id; }).SubmittedDate))?_c('el-tooltip',{staticClass:\"item\",attrs:{\"effect\":\"dark\",\"content\":'Submitted on ' + _vm.formatDate(_vm.appraisalStatus.find(function (s) { return s.AssignmentId == assignment.Id; }).SubmittedDate) + ' EST',\"placement\":\"bottom\"}},[_c('i',{staticClass:\"far fa-check-circle\",staticStyle:{\"font-size\":\"15px\",\"color\":\"rgb(11 133 95)\"}})]):_c('el-tooltip',{staticClass:\"item\",attrs:{\"effect\":\"dark\",\"content\":'Submitted on ' + _vm.formatDate(_vm.appraisalStatus.find(function (s) { return s.AssignmentId == assignment.Id; }).SubmittedDate) + ' EST',\"placement\":\"bottom\"}},[_c('i',{staticClass:\"far fa-check-circle\",staticStyle:{\"font-size\":\"15px\",\"color\":\"rgb(11 133 95)\"}})])],1):_c('span',{staticStyle:{\"margin-left\":\"5px\"}},[_c('el-tooltip',{staticClass:\"item\",attrs:{\"effect\":\"dark\",\"content\":'No Submission Yet',\"placement\":\"bottom\"}},[_c('i',{staticClass:\"fas fa-exclamation-circle\",staticStyle:{\"font-size\":\"15px\",\"color\":\"#f56c6c\"}})])],1)])]):_vm._e()]):_vm._e(),(_vm.userRole == 'Instructor')?_c('div',[_c('el-tooltip',{staticClass:\"item\",staticStyle:{\"margin-right\":\"18px\",\"margin-left\":\"0px\",\"margin-bottom\":\"5px\"},attrs:{\"effect\":\"dark\",\"content\":\"View All Submissions\",\"placement\":\"bottom\"}},[_c('el-button',{staticClass:\"assignment-action-btn\",on:{\"click\":function($event){return _vm.gotoStudentSubmissions(assignment.Id)}}},[_c('i',{staticClass:\"fab fa-buffer\",staticStyle:{\"font-size\":\"24px\"}}),_c('span',{staticStyle:{\"position\":\"relative\",\"top\":\"-3px\",\"margin-left\":\"6px\"}},[_vm._v(\"\\n View All Submissions\\n \")])])],1),_c('el-tooltip',{staticClass:\"item\",staticStyle:{\"margin-right\":\"18px\",\"margin-left\":\"0px\",\"margin-bottom\":\"5px\"},attrs:{\"effect\":\"dark\",\"content\":\"View Instructor Feedback\",\"placement\":\"bottom\"}},[_c('el-button',{staticClass:\"assignment-action-btn\",on:{\"click\":function($event){return _vm.gotoStudentScores(assignment.Id, key)}}},[_c('i',{staticClass:\"far fa-list-alt\",staticStyle:{\"font-size\":\"24px\"}}),_c('span',{staticStyle:{\"position\":\"relative\",\"top\":\"-3px\",\"margin-left\":\"6px\"}},[_vm._v(\"\\n View All Feedback\\n \")])])],1)],1):_vm._e(),(_vm.userRole == 'Student' && _vm.submissionStatus[key])?_c('div',[(_vm.submissionStatus[key].Status == 'No Submission')?_c('el-tooltip',{staticClass:\"item\",staticStyle:{\"margin-right\":\"20px\",\"margin-left\":\"0px\",\"margin-bottom\":\"10px\"},attrs:{\"effect\":\"dark\",\"content\":\"Submit Project\",\"placement\":\"bottom\"}},[_c('el-button',{staticClass:\"assignment-action-btn\",on:{\"click\":function($event){return _vm.openDialog(assignment.Id, key)}}},[_c('i',{staticClass:\"fas fa-file-upload\",staticStyle:{\"font-size\":\"18px\"}}),_c('span',{staticStyle:{\"position\":\"relative\",\"top\":\"-1px\",\"margin-left\":\"6px\"}},[_vm._v(\"\\n Submit Project\\n \")])])],1):_vm._e(),(_vm.submissionStatus[key].Status == 'Feedback Available')?_c('el-tooltip',{staticClass:\"item\",staticStyle:{\"margin-right\":\"20px\",\"margin-left\":\"0px\",\"margin-bottom\":\"10px\"},attrs:{\"effect\":\"dark\",\"content\":\"View Feedback\",\"placement\":\"bottom\"}},[_c('el-badge',{staticClass:\"badge-item\",attrs:{\"value\":_vm.submissionStatus[key].ReviewCount}},[_c('el-button',{staticClass:\"assignment-action-btn\",on:{\"click\":function($event){return _vm.viewFeedback(assignment.Id)}}},[_c('i',{staticClass:\"far fa-comment-alt\",staticStyle:{\"font-size\":\"18px\"}}),_c('span',{staticStyle:{\"position\":\"relative\",\"top\":\"-1px\",\"margin-left\":\"6px\"}},[_vm._v(\"\\n View Feedback\\n \")])])],1)],1):_vm._e(),(_vm.submissionStatus[key].Status != 'No Submission')?_c('el-tooltip',{staticClass:\"item\",staticStyle:{\"margin-right\":\"20px\",\"margin-left\":\"0px\",\"margin-bottom\":\"10px\"},attrs:{\"effect\":\"dark\",\"content\":\"View Submission\",\"placement\":\"bottom\"}},[_c('el-button',{staticClass:\"assignment-action-btn\",on:{\"click\":function($event){return _vm.viewSubmission(_vm.submissionStatus[key].DocId, assignment)}}},[_c('i',{staticClass:\"far fa-file-alt\",staticStyle:{\"font-size\":\"18px\"}}),_c('span',{staticStyle:{\"position\":\"relative\",\"top\":\"-1px\",\"margin-left\":\"6px\"}},[_vm._v(\"\\n View Submission\\n \")])])],1):_vm._e(),(_vm.submissionStatus[key].Status != 'No Submission')?_c('el-tooltip',{staticClass:\"item\",staticStyle:{\"margin-right\":\"20px\",\"margin-left\":\"0px\",\"margin-bottom\":\"10px\"},attrs:{\"effect\":\"dark\",\"content\":\"Download Submission\",\"placement\":\"bottom\"}},[_c('el-button',{staticClass:\"assignment-action-btn\",on:{\"click\":function($event){return _vm.download(_vm.submissionStatus[key].DocId, assignment)}}},[_c('i',{staticClass:\"fas fa-download\",staticStyle:{\"font-size\":\"18px\"}}),_c('span',{staticStyle:{\"position\":\"relative\",\"top\":\"-1px\",\"margin-left\":\"6px\"}},[_vm._v(\"\\n Download Submission\\n \")])])],1):_vm._e()],1):_vm._e()])],1)}),0)]):_vm._e()])]),_c('el-dialog',{attrs:{\"id\":\"assignment-detail-dialog\",\"visible\":_vm.assignmentDetailDialogVisible,\"width\":\"650px\",\"center\":\"\"},on:{\"update:visible\":function($event){_vm.assignmentDetailDialogVisible=$event}}},[_c('template',{slot:\"title\"},[(_vm.selectedAssignment)?_c('span',{staticClass:\"dialog-title\"},[_vm._v(\"\\n \"+_vm._s(_vm.selectedAssignment.AssignmentName)+\"\\n \")]):_vm._e()]),_c('hr'),(_vm.selectedAssignment)?_c('div',{staticStyle:{\"word-break\":\"normal\"}},[_c('div',{staticStyle:{\"margin-bottom\":\"3px\",\"margin-top\":\"10px\",\"font-weight\":\"bold\"}},[_vm._v(\"\\n Important Information\\n \")]),_c('div',{staticStyle:{\"padding\":\"8px 16px\",\"padding-top\":\"px\",\"background-color\":\"#ecf8ff\",\"border-radius\":\"4px\",\"border-left\":\"5px solid #50bfff\",\"margin\":\"20px 0\",\"margin-top\":\"8px\",\"line-height\":\"2em\"}},[_c('span',[_vm._v(\"\\n This project is due at \"),_c('strong',[_vm._v(_vm._s(_vm._f(\"formatDate\")(_vm.selectedAssignment.DueDate))+\" EST\")]),_vm._v(\". It\\n \"),(_vm.selectedAssignment.IsGroupAssignment)?_c('span',[_vm._v(\"\\n is a group project which\\n \")]):_vm._e(),_vm._v(\"\\n includes\\n \"),(!_vm.selectedAssignment.UsePeerReview && !_vm.selectedAssignment.UseSelfAssessment)?_c('span',[_vm._v(\"\\n no sub-tasks.\\n \")]):_c('span',[_vm._v(\"\\n the following tasks:\\n \")])]),(_vm.selectedAssignment.UseSelfAssessment)?_c('div',[_c('strong',[_vm._v(\"- Self review: \")]),_vm._v(\" due at \"),_c('strong',[_vm._v(_vm._s(_vm._f(\"formatDate\")(_vm.selectedAssignment.SelfReviewDueDate))+\" EST\")])]):_vm._e(),(_vm.selectedAssignment.UsePeerReview)?_c('div',[_c('strong',[_vm._v(\"- Peer review: \")]),_vm._v(\" due at \"),_c('strong',[_vm._v(_vm._s(_vm._f(\"formatDate\")(_vm.selectedAssignment.PeerReviewDueDate))+\" EST\")])]):_vm._e(),(_vm.selectedAssignment.UseAppraisal)?_c('div',[_c('strong',[_vm._v(\"- Self appraisal: \")]),_vm._v(\" due at \"),_c('strong',[_vm._v(_vm._s(_vm._f(\"formatDate\")(_vm.selectedAssignment.AppraisalDueDate))+\" EST\")])]):_vm._e()]),_c('div',{staticStyle:{\"margin-bottom\":\"3px\",\"font-weight\":\"bold\"}},[_vm._v(\"\\n Project Overview\\n \")]),_c('editor-content',{staticClass:\"el-textarea__inner assignment-detail-editor\",attrs:{\"id\":\"description-detail-editor\",\"editor\":_vm.descriptionDetailEditor}})],1):_vm._e(),_c('span',{staticClass:\"dialog-footer\",attrs:{\"slot\":\"footer\"},slot:\"footer\"},[(_vm.userRole == 'Instructor')?_c('el-button',{on:{\"click\":function($event){return _vm.gotoStudentSubmissions(_vm.selectedAssignment.Id)}}},[_vm._v(\"\\n View Student Submissions\\n \")]):_vm._e(),(_vm.userRole == 'Instructor')?_c('el-button',{on:{\"click\":function($event){return _vm.gotoStudentScores(_vm.selectedAssignment.Id)}}},[_vm._v(\"\\n View Student Holistic Scores\\n \")]):_vm._e(),(_vm.userRole == 'Student'&& _vm.selectedAssignment)?_c('div',{staticStyle:{\"margin-top\":\"20px\"}},[(_vm.submissionStatus && _vm.submissionStatus[_vm.selectedKey] && _vm.submissionStatus[_vm.selectedKey].Status == 'Feedback Available')?_c('el-badge',{staticClass:\"badge-item\",staticStyle:{\"vertical-align\":\"initial\",\"margin-left\":\"0px\"},attrs:{\"value\":_vm.submissionStatus[_vm.selectedKey].ReviewCount}},[_c('el-button',{staticStyle:{\"padding\":\"10px\",\"margin-bottom\":\"10px\"},on:{\"click\":function($event){return _vm.viewFeedback(_vm.selectedAssignment.Id)}}},[_c('i',{staticClass:\"far fa-comment-alt\",staticStyle:{\"font-size\":\"18px\",\"margin-right\":\"5px\"}}),_vm._v(\"\\n View Feedback\\n \")])],1):_vm._e(),(_vm.submissionStatus && _vm.submissionStatus[_vm.selectedKey] && _vm.submissionStatus[_vm.selectedKey].Status != 'No Submission')?_c('el-button',{staticStyle:{\"padding\":\"10px\",\"margin-bottom\":\"10px\",\"margin-right\":\"10px\"},on:{\"click\":function($event){return _vm.viewSubmission(_vm.submissionStatus[_vm.selectedKey].DocId, _vm.selectedAssignment)}}},[_c('i',{staticClass:\"far fa-file-alt\",staticStyle:{\"font-size\":\"18px\",\"margin-right\":\"5px\"}}),_vm._v(\"View Submission\\n \")]):_vm._e(),(_vm.submissionStatus && _vm.submissionStatus[_vm.selectedKey] && _vm.submissionStatus[_vm.selectedKey].Status != 'No Submission')?_c('el-button',{staticStyle:{\"padding\":\"10px\",\"margin-bottom\":\"10px\",\"margin-right\":\"10px\"},on:{\"click\":function($event){return _vm.download(_vm.submissionStatus[_vm.selectedKey].DocId, _vm.selectedAssignment)}}},[_c('i',{staticClass:\"fas fa-download\",staticStyle:{\"font-size\":\"18px\",\"margin-right\":\"5px\"}}),_vm._v(\"Download Submission\\n \")]):_vm._e()],1):_vm._e()],1)],2),(_vm.selectedAssignment)?_c('el-dialog',{staticStyle:{\"height\":\"930px\"},attrs:{\"id\":\"preview-submission-dialog\",\"visible\":_vm.docPreviewDialogVisible,\"width\":\"800px\",\"center\":\"\"},on:{\"update:visible\":function($event){_vm.docPreviewDialogVisible=$event}}},[_c('template',{slot:\"title\"},[_c('span',{staticClass:\"dialog-title\"},[_vm._v(\"\\n Preview of Your Submission for \"+_vm._s(_vm.selectedAssignment.AssignmentName)+\"\\n \")])]),_c('div',{staticStyle:{\"height\":\"930px\"}},[_c('div',{staticStyle:{\"height\":\"930px\"},attrs:{\"id\":\"submissions_container\"}},[_c('nav',{staticClass:\"ViewerControls ViewerControls--with-annotations\"},[_c('div',{staticClass:\"ViewerControls-primary\"},[_c('div',{staticClass:\"ViewerControls--download\"},[_c('div',{staticStyle:{\"min-width\":\"50px\",\"text-align\":\"center\"}},[_c('div',[_c('button',{staticClass:\"download-button--button\",attrs:{\"title\":\"Download annotated PDF\",\"aria-label\":\"Download annotated PDF\"},on:{\"click\":function($event){return _vm.downloadPdf()}}},[_c('i',{staticClass:\"fas fa-file-download\",staticStyle:{\"font-size\":\"22px\"}})])])])]),_c('div',{staticClass:\"ViewerControls--title\"}),_c('div',{staticClass:\"ViewerControls--page-controls\"},[_c('span',{staticClass:\"ViewerControls--page-number\",staticStyle:{\"display\":\"flex\",\"align-items\":\"center\"}},[_vm._v(\"\\n Page\\n \"),_c('div',{staticStyle:{\"padding-left\":\"10px\",\"padding-right\":\"10px\"}},[_c('el-input-number',{attrs:{\"min\":1,\"max\":_vm.totalPageNumber,\"size\":\"small\",\"label\":\"Page\"},on:{\"change\":_vm.changePage},model:{value:(_vm.pageNum),callback:function ($$v) {_vm.pageNum=$$v},expression:\"pageNum\"}})],1),_vm._v(\"\\n of \"+_vm._s(_vm.totalPageNumber)+\"\\n \")]),_c('svg',{staticStyle:{\"margin-left\":\"12px\",\"margin-right\":\"0px\",\"width\":\"2px\",\"height\":\"26px\",\"color\":\"rgb(171, 179, 186)\"},attrs:{\"viewBox\":\"0 0 2 26\"}},[_c('line',{attrs:{\"stroke\":\"currentColor\",\"stroke-dasharray\":\"2, 1\",\"stroke-width\":\"1\",\"x1\":\"1\",\"y1\":\"0\",\"x2\":\"1\",\"y2\":\"26\"}})])]),_c('nav',{staticClass:\"DocumentControls\"},[_c('div',{staticStyle:{\"display\":\"inline-flex\",\"align-items\":\"center\",\"user-select\":\"none\"}},[_c('button',{staticClass:\"AnnotationControlButton\",attrs:{\"aria-label\":\"Zoom Out\",\"title\":\"Zoom Out\",\"aria-disabled\":\"false\"},on:{\"click\":_vm.zoomOut}},[_c('i',{staticClass:\"fas fa-minus\",staticStyle:{\"font-size\":\"20px\"}})]),_c('span',{staticStyle:{\"text-transform\":\"uppercase\",\"font-size\":\"0.75rem\",\"color\":\"rgb(238, 238, 239)\",\"margin-left\":\"4px\",\"margin-right\":\"4px\"},attrs:{\"aria-hidden\":\"true\"}},[_vm._v(\"\\n Zoom\\n \")]),_c('button',{staticClass:\"AnnotationControlButton\",attrs:{\"aria-label\":\"Zoom In\",\"title\":\"Zoom In\",\"aria-disabled\":\"false\"},on:{\"click\":_vm.zoomIn}},[_c('i',{staticClass:\"fas fa-plus\",staticStyle:{\"font-size\":\"20px\"}})])]),_c('svg',{staticStyle:{\"margin-left\":\"2px\",\"margin-right\":\"4px\",\"width\":\"2px\",\"height\":\"26px\",\"color\":\"rgb(171, 179, 186)\"},attrs:{\"viewBox\":\"0 0 2 26\"}},[_c('line',{attrs:{\"stroke\":\"currentColor\",\"stroke-dasharray\":\"2, 1\",\"stroke-width\":\"1\",\"x1\":\"1\",\"y1\":\"0\",\"x2\":\"1\",\"y2\":\"26\"}})]),_c('div',{staticClass:\"ViewerControls--page-controls\"},[_c('button',{staticClass:\"AnnotationControlButton full-screen-button\",attrs:{\"aria-label\":\"Enter Full Screen\",\"title\":\"Zoom Fit Width\"},on:{\"click\":_vm.zoomFitWidth}},[_c('i',{staticClass:\"fas fa-expand\",staticStyle:{\"font-size\":\"20px\"}})])])])])]),_c('div',{staticStyle:{\"display\":\"block\",\"height\":\"700px\"},attrs:{\"id\":\"iframe_holder\"}},[_c('div',{staticStyle:{\"resize\":\"vertical\",\"height\":\"100%\"},attrs:{\"id\":\"pdfDocument\"}})])])])],2):_vm._e()],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import http from '@/utils/axios'\r\nimport { Notification } from 'element-ui'\r\n\r\nexport function GetSubmissionNumber(termCode, orgCode, classCode) {\r\n\treturn http.get('submission/number/' + termCode + '/' + orgCode + '/' + classCode)\r\n\t\t.then(response => {\r\n\t\t\treturn response.data\r\n\t\t})\r\n\t\t.catch(error => {\r\n\t\t\tconsole.log(error)\r\n\t\t})\r\n}\r\n\r\nexport function getSubmissionsStatus(termCode, orgCode, classCode, assignmentId) {\r\n\treturn http.get('submission/assignment/' + termCode + '/' + orgCode + '/' + classCode + '/' + assignmentId)\r\n\t\t.then(response => {\r\n\t\t\treturn response.data\r\n\t\t})\r\n\t\t.catch(error => {\r\n\t\t\tconsole.log(error)\r\n\t\t})\r\n}\r\n\r\nexport function getStudentSubmissionsStatus(termCode, orgCode, classCode, studentId) {\r\n\treturn http.get('submission/student/status/' + termCode + '/' + orgCode + '/' + classCode + '/' + studentId)\r\n\t\t.then(response => {\r\n\t\t\treturn response.data\r\n\t\t})\r\n\t\t.catch(error => {\r\n\t\t\tconsole.log(error)\r\n\t\t})\r\n}\r\n\r\nexport function getGroupSubmissionsStatus(termCode, orgCode, classCode, assignmentId) {\r\n\treturn http.get('submission/group/status/' + termCode + '/' + orgCode + '/' + classCode + '/' + assignmentId)\r\n\t\t.then(response => {\r\n\t\t\treturn response.data\r\n\t\t})\r\n\t\t.catch(error => {\r\n\t\t\tconsole.log(error)\r\n\t\t})\r\n}\r\n\r\nexport function getUploadedStudents(termCode, orgCode, classCode, assignmentId) {\r\n\treturn http.get('user/uploaded/assignment/' + termCode + '/' + orgCode + '/' + classCode + '/' + assignmentId)\r\n\t\t.then(response => {\r\n\t\t\treturn response.data\r\n\t\t})\r\n\t\t.catch(error => {\r\n\t\t\tconsole.log(error)\r\n\t\t})\r\n}\r\n\r\nexport function getUploadedPeers(termCode, orgCode, classCode, assignmentId, reviewerId, teamId) {\r\n\treturn http.get('user/uploaded/peer_review/' + termCode + '/' + orgCode + '/' + classCode + '/' + assignmentId + '/' + reviewerId + '/' + teamId)\r\n\t\t.then(response => {\r\n\t\t\treturn response.data\r\n\t\t})\r\n\t\t.catch(error => {\r\n\t\t\tconsole.log(error)\r\n\t\t})\r\n}\r\n\r\nexport function getSelfReviewSubmittedStudents(termCode, orgCode, classCode, assignmentId) {\r\n\treturn http.get('user/uploaded/self_review/' + termCode + '/' + orgCode + '/' + classCode + '/' + assignmentId)\r\n\t\t.then(response => {\r\n\t\t\treturn response.data\r\n\t\t})\r\n\t\t.catch(error => {\r\n\t\t\tconsole.log(error)\r\n\t\t})\r\n}\r\n\r\nexport function getStudentUploads(termCode, orgCode, classCode, assignmentId) {\r\n\treturn http.get(`submission/odata?$filter=OrgCode eq '${orgCode}' and TermCode eq '${termCode}'\r\n and ClassCode eq '${classCode}' and AssignmentId eq ${assignmentId} &$select=StudentUserId,LastActivityDate &$orderby=LastActivityDate desc`)\r\n\t\t.then(response => {\r\n\t\t\treturn response.data\r\n\t\t})\r\n\t\t.catch(error => {\r\n\t\t\tconsole.log(error)\r\n\t\t})\r\n}\r\n\r\nexport function getLatestSubmissions(termCode, orgCode, classCode, assignmentId) {\r\n\treturn http.get(`submission/latest/${termCode}/${orgCode}/${classCode}/${assignmentId}`)\r\n\t\t.then(response => {\r\n\t\t\treturn response.data\r\n\t\t})\r\n\t\t.catch(error => {\r\n\t\t\tconsole.log(error)\r\n\t\t})\r\n}\r\n\r\nexport function getInstructorReviewStatus(termCode, orgCode, classCode, assignmentId) {\r\n\treturn http.get(`review/instructor/status/${termCode}/${orgCode}/${classCode}/${assignmentId}`)\r\n\t\t.then(response => {\r\n\t\t\treturn response.data\r\n\t\t})\r\n\t\t.catch(error => {\r\n\t\t\tconsole.log(error)\r\n\t\t})\r\n}\r\n\r\nexport function getReviewSubmission(termCode, orgCode, classCode, assignmentId, reviewType) {\r\n\treturn http.get(`review/submission/${termCode}/${orgCode}/${classCode}/${assignmentId}/${reviewType}`)\r\n\t\t.then(response => {\r\n\t\t\treturn response.data\r\n\t\t})\r\n\t\t.catch(error => {\r\n\t\t\tconsole.log(error)\r\n\t\t})\r\n}\r\n\r\nexport function getStudentUpload(termCode, orgCode, classCode, studentId, assignmentId) {\r\n\treturn http.get(`submission/student/assignment/${termCode}/${orgCode}/${classCode}/${studentId}/${assignmentId}`)\r\n\t\t.then(studentUpload => {\r\n\t\t\treturn studentUpload.data\r\n\t\t})\r\n\t\t.catch(error => {\r\n\t\t\tNotification.error({\r\n\t\t\t\tduration: 6000,\r\n\t\t\t\ttitle: 'Error',\r\n\t\t\t\tmessage: error\r\n\t\t\t})\r\n\t\t})\r\n}\r\n\r\nexport function getPeerReviewSubmission(termCode, orgCode, classCode, assignmentId) {\r\n\treturn http.get(`review/odata?$select=ReviewerId,RevieweeId,IsSaved&$filter=OrgCode eq '${orgCode}' and TermCode eq '${termCode}' \r\n and ClassCode eq '${classCode}' and ReviewerRole eq 'Student' and ReviewType eq 'peer_review' \r\n and AssignmentId eq ${assignmentId}`)\r\n\t\t.then(response => {\r\n\t\t\treturn response.data\r\n\t\t})\r\n\t\t.catch(error => {\r\n\t\t\tconsole.log(error)\r\n\t\t})\r\n}\r\n\r\nexport function getSelfReviewSubmission(termCode, orgCode, classCode, assignmentId) {\r\n\treturn http.get(`review/odata?$select=IsSaved&$filter=OrgCode eq '${orgCode}' and TermCode eq '${termCode}' \r\n and ClassCode eq '${classCode}' and ReviewerRole eq 'Student' and ReviewType eq 'self_review' \r\n and AssignmentId eq ${assignmentId}`)\r\n\t\t.then(response => {\r\n\t\t\treturn response.data\r\n\t\t})\r\n\t\t.catch(error => {\r\n\t\t\tconsole.log(error)\r\n\t\t})\r\n}\r\n\r\nexport function getUploadedAssignments(termCode, orgCode, classCode) {\r\n\treturn http.get('assignment/submitted/' + termCode + '/' + orgCode + '/' + classCode)\r\n\t\t.then(response => {\r\n\t\t\treturn response.data\r\n\t\t})\r\n\t\t.catch(error => {\r\n\t\t\tconsole.log(error)\r\n\t\t})\r\n}\r\n\r\nexport function getUploadedAssignmentsForSelfReview(termCode, orgCode, studentId, classCode) {\r\n\treturn http.get('assignment/student/submitted/' + termCode + '/' + orgCode + '/' + studentId + '/' + classCode)\r\n\t\t.then(response => {\r\n\t\t\treturn response.data\r\n\t\t})\r\n\t\t.catch(error => {\r\n\t\t\tconsole.log(error)\r\n\t\t})\r\n}\r\n\r\nexport function submitPaper(payload) {\r\n\tconst config = {\r\n\t\theaders: {\r\n\t\t\t'Content-Type': 'multipart/form-data'\r\n\t\t}\r\n\t}\r\n\treturn http.post('submission/upload', payload, config)\r\n\t\t.then(response => {\r\n\t\t\treturn response.data\r\n\t\t})\r\n\t\t.catch(error => {\r\n\t\t\tlet message = 'Your paper was not submitted due to server error. Please submit a PDF version of your document or try again later.'\r\n\t\t\tif (error.response) {\r\n\t\t\t\tif (error.response.data.message) { message += error.response.data.message + ' ' }\r\n\t\t\t\tif (error.response.data.ModelState) { message += error.response.data.ModelState.invalid_grant + ' ' }\r\n\t\t\t\tif (error.response.data.InnerException) { message += error.response.data.InnerException.ExceptionMessage }\r\n\t\t\t}\r\n\t\t\tNotification.error({\r\n\t\t\t\tduration: 6000,\r\n\t\t\t\ttitle: 'Error',\r\n\t\t\t\tmessage: message\r\n\t\t\t})\r\n\t\t\tconsole.log(error)\r\n\t\t})\r\n}\r\n\r\nexport function submitToCanvas(payload) {\r\n\tconst config = {\r\n\t\theaders: {\r\n\t\t\t'Content-Type': 'multipart/form-data'\r\n\t\t}\r\n\t}\r\n\treturn http.post('submission/canvas/upload', payload, config)\r\n\t\t.then(response => {\r\n\t\t\treturn response.data\r\n\t\t})\r\n\t\t.catch(error => {\r\n\t\t\tlet message = 'Your paper was not submitted to Canvas due to a server error. '\r\n\t\t\tif (error.response) {\r\n\t\t\t\tif (error.response.data.message) { message += error.response.data.message + ' ' }\r\n\t\t\t\tif (error.response.data.ModelState) { message += error.response.data.ModelState.invalid_grant + ' ' }\r\n\t\t\t\tif (error.response.data.InnerException) { message += error.response.data.InnerException.ExceptionMessage }\r\n\t\t\t}\r\n\t\t\tNotification.error({\r\n\t\t\t\tduration: 6000,\r\n\t\t\t\ttitle: 'Error',\r\n\t\t\t\tmessage: message\r\n\t\t\t})\r\n\t\t\tconsole.log(error)\r\n\t\t})\r\n}\r\n\r\nexport function recordSubmission(newStudentUpload) {\r\n\treturn http.post('submission', newStudentUpload)\r\n\t\t.then(response => {\r\n\t\t\treturn response.data\r\n\t\t})\r\n\t\t.catch(error => {\r\n\t\t\tlet message = 'Your submission record was not saved due to server error. '\r\n\t\t\tif (error.response) {\r\n\t\t\t\tif (error.response.data.message) { message += error.response.data.message + ' ' }\r\n\t\t\t\tif (error.response.data.ModelState) { message += error.response.data.ModelState.invalid_grant + ' ' }\r\n\t\t\t\tif (error.response.data.InnerException) { message += error.response.data.InnerException.ExceptionMessage }\r\n\t\t\t}\r\n\r\n\t\t\tNotification.error({\r\n\t\t\t\tduration: 6000,\r\n\t\t\t\ttitle: 'Error',\r\n\t\t\t\tmessage: message\r\n\t\t\t})\r\n\t\t\tconsole.log(error)\r\n\t\t})\r\n}\r\n\r\n","import http from '@/utils/axios'\r\n\r\n// export function getTeamFormationByAssignmentId(termCode, orgCode, classCode, assignmentId) {\r\n// \treturn http.get(`team_formation/odata?$filter=OrgCode eq '${orgCode}' and TermCode eq '${termCode}'\r\n// and ClassCode eq '${classCode}' and AssignmentId eq ${assignmentId} and AssignmentType eq 'peer_review'`)\r\n// \t\t.then(response => {\r\n// \t\t\treturn response.data\r\n// \t\t})\r\n// \t\t.catch(error => {\r\n// \t\t\tconsole.log(error)\r\n// \t\t})\r\n// }\r\n\r\nexport function getTeamFormationStatus(termCode, orgCode, classCode) {\r\n\treturn http.get('team_formation/status/' + termCode + '/' + orgCode + '/' + classCode)\r\n\t\t.then(response => {\r\n\t\t\treturn response.data\r\n\t\t})\r\n\t\t.catch(error => {\r\n\t\t\tconsole.log(error)\r\n\t\t})\r\n}\r\n\r\nexport function getTeamFormationByAssignmentId(termCode, orgCode, classCode, assignmentId) {\r\n\treturn http.get('team_formation/assignment/' + termCode + '/' + orgCode + '/' + classCode + '/' + assignmentId)\r\n\t\t.then(response => {\r\n\t\t\treturn response.data\r\n\t\t})\r\n\t\t.catch(error => {\r\n\t\t\tconsole.log(error)\r\n\t\t})\r\n}\r\n\r\n// export function getPeerReviewTeamAssignment(termCode, orgCode, classCode, studentId) {\r\n// \treturn http.get(`team_formation/odata?$filter=OrgCode eq '${orgCode}' and TermCode eq '${termCode}'\r\n// and ClassCode eq '${classCode}' and MemberId eq '${studentId}' and AssignmentType eq 'peer_review'`)\r\n// \t\t.then(response => {\r\n// \t\t\treturn response.data\r\n// \t\t})\r\n// \t\t.catch(error => {\r\n// \t\t\tconsole.log(error)\r\n// \t\t})\r\n// }\r\n\r\nexport function getPeerReviewTeamAssignment(termCode, orgCode, classCode, studentId) {\r\n\treturn http.get('team_formation/peer_review/' + termCode + '/' + orgCode + '/' + studentId + '/' + classCode)\r\n\t\t.then(response => {\r\n\t\t\treturn response.data\r\n\t\t})\r\n\t\t.catch(error => {\r\n\t\t\tconsole.log(error)\r\n\t\t})\r\n}\r\n\r\nexport function getgroupProjectTeamAssignment(termCode, orgCode, classCode, studentId, assignmentId) {\r\n\treturn http.get('team_formation/group_project/' + termCode + '/' + orgCode + '/' + classCode + '/' + studentId + '/' + assignmentId)\r\n\t\t.then(response => {\r\n\t\t\treturn response.data\r\n\t\t})\r\n\t\t.catch(error => {\r\n\t\t\tconsole.log(error)\r\n\t\t})\r\n}\r\n\r\nexport function getUnassignedStudents(termCode, orgCode, classCode, assignmentId, assignmentType) {\r\n\treturn http.get('team_formation/members/unassigned/' + orgCode + '/' + termCode + '/' + classCode + '/' + assignmentId + '/' + assignmentType)\r\n\t\t.then(response => {\r\n\t\t\treturn response.data\r\n\t\t})\r\n\t\t.catch(error => {\r\n\t\t\tconsole.log(error)\r\n\t\t})\r\n}\r\n\r\nexport function getAssignedTeams(termCode, orgCode, classCode, assignmentId, assignmentType) {\r\n\treturn http.get('team_formation/teams/' + orgCode + '/' + termCode + '/' + classCode + '/' + assignmentId + '/' + assignmentType)\r\n\t\t.then(response => {\r\n\t\t\treturn response.data\r\n\t\t})\r\n\t\t.catch(error => {\r\n\t\t\tconsole.log(error)\r\n\t\t})\r\n}\r\n\r\nexport function getTeamMembers(termCode, orgCode, classCode, assignmentId, assignmentType, teamId) {\r\n\treturn http.get('team_formation/members/' + orgCode + '/' + termCode + '/' + classCode + '/' + assignmentId + '/' + teamId + '/' + assignmentType)\r\n\t\t.then(response => {\r\n\t\t\treturn response.data\r\n\t\t})\r\n\t\t.catch(error => {\r\n\t\t\tconsole.log(error)\r\n\t\t})\r\n}\r\n\r\nexport function getMembersCount(termCode, orgCode, classCode, assignmentId, assignmentType) {\r\n\treturn http.get('team_formation/members/count/' + orgCode + '/' + termCode + '/' + classCode + '/' + assignmentId + '/' + assignmentType)\r\n\t\t.then(response => {\r\n\t\t\treturn response.data\r\n\t\t})\r\n\t\t.catch(error => {\r\n\t\t\tconsole.log(error)\r\n\t\t})\r\n}\r\n\r\nexport function createManually(teamAssignment) {\r\n\treturn http.post('team_formation/save/manually', teamAssignment)\r\n\t\t.then(response => {\r\n\t\t\treturn response\r\n\t\t})\r\n\t\t.catch(error => {\r\n\t\t\tconsole.log(error)\r\n\t\t})\r\n}\r\n\r\nexport function createRandomly(teamAssignment) {\r\n\treturn http.post('team_formation/save/randomly', teamAssignment)\r\n\t\t.then(response => {\r\n\t\t\treturn response\r\n\t\t})\r\n\t\t.catch(error => {\r\n\t\t\tconsole.log(error)\r\n\t\t})\r\n}\r\n\r\nexport function copyFromAnotherAssignment(teamAssignment) {\r\n\treturn http.post('team_formation/save/previously', teamAssignment)\r\n\t\t.then(response => {\r\n\t\t\treturn response\r\n\t\t})\r\n\t\t.catch(error => {\r\n\t\t\tconsole.log(error)\r\n\t\t})\r\n}\r\n\r\n","import http from '@/utils/axios'\r\n\r\nexport function getCFFDownloadData(model) {\r\n\treturn http.post('pdf/cff/download', model)\r\n\t\t.then(response => {\r\n\t\t\treturn response.data\r\n\t\t})\r\n\t\t.catch(error => {\r\n\t\t\tconsole.log(error)\r\n\t\t})\r\n}\r\n\r\nexport function getPdf(docId) {\r\n\treturn http.get('pdf/document/' + docId)\r\n\t\t.then(response => {\r\n\t\t\treturn response.data\r\n\t\t})\r\n\t\t.catch(error => {\r\n\t\t\tconsole.log(error)\r\n\t\t})\r\n}\r\n\r\nexport function getComparePdf(docId) {\r\n\treturn http.get('pdf/document/compare/' + docId)\r\n\t\t.then(response => {\r\n\t\t\treturn response.data\r\n\t\t})\r\n\t\t.catch(error => {\r\n\t\t\tconsole.log(error)\r\n\t\t})\r\n}\r\n\r\nexport function getTextbook(docId) {\r\n\treturn http.get('pdf/textbook/' + docId)\r\n\t\t.then(response => {\r\n\t\t\treturn response.data\r\n\t\t})\r\n\t\t.catch(error => {\r\n\t\t\tconsole.log(error)\r\n\t\t})\r\n}\r\n\r\nexport function createPdf(docId) {\r\n\treturn http.get('pdf/copy/' + docId)\r\n\t\t.then(response => {\r\n\t\t\treturn response.data\r\n\t\t})\r\n\t\t.catch(error => {\r\n\t\t\tconsole.log(error)\r\n\t\t})\r\n}\r\n\r\nexport function getDownloadData(payload) {\r\n\treturn http.post('pdf/download', payload)\r\n\t\t.then(response => {\r\n\t\t\treturn response.data\r\n\t\t})\r\n\t\t.catch(error => {\r\n\t\t\tconsole.log(error)\r\n\t\t})\r\n}\r\n\r\nexport function getDocumentText(payload) {\r\n\treturn http.post('pdf/text', payload)\r\n\t\t.then(response => {\r\n\t\t\treturn response.data\r\n\t\t})\r\n\t\t.catch(error => {\r\n\t\t\tconsole.log(error)\r\n\t\t})\r\n}\r\n\r\nexport function getTexts(payload) {\r\n\treturn http.post('pdf/texts', payload)\r\n\t\t.then(response => {\r\n\t\t\treturn response.data\r\n\t\t})\r\n\t\t.catch(error => {\r\n\t\t\tconsole.log(error)\r\n\t\t})\r\n}\r\n\r\nexport function processCommentText(docId) {\r\n\treturn http.get('pdf/process/comment_text/' + docId)\r\n\t\t.then(response => {\r\n\t\t\treturn response.data\r\n\t\t})\r\n\t\t.catch(error => {\r\n\t\t\tconsole.log(error)\r\n\t\t})\r\n}\r\n","import http from '@/utils/axios'\r\n\r\nexport function getRubricsInTemplate(templateId) {\r\n\treturn http.get('rubric/template/' + templateId)\r\n\t\t.then(response => {\r\n\t\t\treturn response.data\r\n\t\t})\r\n\t\t.catch(error => {\r\n\t\t\tconsole.log(error)\r\n\t\t})\r\n}\r\n\r\nexport function getAppraisalRubrics(templateId) {\r\n\treturn http.get('rubric/appraisal/template/' + templateId)\r\n\t\t.then(response => {\r\n\t\t\treturn response.data\r\n\t\t})\r\n\t\t.catch(error => {\r\n\t\t\tconsole.log(error)\r\n\t\t})\r\n}\r\n\r\nexport function getRubricById(rubricId) {\r\n\treturn http.get('rubric/details/' + rubricId)\r\n\t\t.then(response => {\r\n\t\t\treturn response.data\r\n\t\t})\r\n\t\t.catch(error => {\r\n\t\t\tconsole.log(error)\r\n\t\t})\r\n}\r\n\r\nexport function getRubricList(orgCode, userId) {\r\n\treturn http.get(\"rubric/odata?$filter=OrgCode eq '\" + orgCode + \"' and IsActive eq true and Role eq 'Administrator'&$select=Id,RubricName &$orderby=LastActivityDate desc\")\r\n\t\t.then(response => {\r\n\t\t\treturn response.data\r\n\t\t})\r\n\t\t.catch(error => {\r\n\t\t\tconsole.log(error)\r\n\t\t})\r\n}\r\n\r\nexport function getRubricsByOrgCode(orgCode) {\r\n\treturn http.get(\"rubric/odata?$filter=OrgCode eq '\" + orgCode + \"' and IsActive eq true and Role eq 'Administrator'&$select=Id,RubricName &$orderby=LastActivityDate desc\")\r\n\t\t.then(response => {\r\n\t\t\treturn response.data\r\n\t\t})\r\n\t\t.catch(error => {\r\n\t\t\tconsole.log(error)\r\n\t\t})\r\n}\r\n\r\nexport function getAdminRubrics(orgCode) {\r\n\treturn http.get(\"rubric/criteria/odata?$filter=OrgCode eq '\" + orgCode + \"' and Role eq 'Administrator'\")\r\n\t\t.then(response => {\r\n\t\t\treturn response.data\r\n\t\t})\r\n\t\t.catch(error => {\r\n\t\t\tconsole.log(error)\r\n\t\t})\r\n}\r\n\r\nexport function addNewRubric(rubric) {\r\n\treturn http.post('rubric', rubric)\r\n\t\t.then(response => {\r\n\t\t\treturn response.data\r\n\t\t})\r\n\t\t.catch(error => {\r\n\t\t\tconsole.log(error)\r\n\t\t})\r\n}\r\n\r\nexport function updateRubric(rubric) {\r\n\treturn http.put('rubric', rubric)\r\n\t\t.then(response => {\r\n\t\t\treturn response.data\r\n\t\t})\r\n\t\t.catch(error => {\r\n\t\t\tconsole.log(error)\r\n\t\t})\r\n}\r\n\r\nexport function deleteRubric(id) {\r\n\treturn http.delete('rubric/' + id)\r\n\t\t.then(response => {\r\n\t\t\treturn response.data\r\n\t\t})\r\n\t\t.catch(error => {\r\n\t\t\tconsole.log(error)\r\n\t\t})\r\n}\r\n\r\nexport function addNewRubricCriteria(criteria) {\r\n\treturn http.post('rubric/criteria', criteria)\r\n\t\t.then(response => {\r\n\t\t\treturn response.data\r\n\t\t})\r\n\t\t.catch(error => {\r\n\t\t\tconsole.log(error)\r\n\t\t})\r\n}\r\n\r\nexport function updateRubricCriteria(criteria) {\r\n\treturn http.put('rubric/criteria', criteria)\r\n\t\t.then(response => {\r\n\t\t\treturn response.data\r\n\t\t})\r\n\t\t.catch(error => {\r\n\t\t\tconsole.log(error)\r\n\t\t})\r\n}\r\n\r\nexport function deleteRubricCriteria(id) {\r\n\treturn http.delete('rubric/criteria/' + id)\r\n\t\t.then(response => {\r\n\t\t\treturn response.data\r\n\t\t})\r\n\t\t.catch(error => {\r\n\t\t\tconsole.log(error)\r\n\t\t})\r\n}\r\n\r\nexport function deleteCriteriaWithMielstonesById(id) {\r\n\treturn http.delete('rubric/criteria/milestone/' + id)\r\n\t\t.then(response => {\r\n\t\t\treturn response.data\r\n\t\t})\r\n\t\t.catch(error => {\r\n\t\t\tconsole.log(error)\r\n\t\t})\r\n}\r\n\r\nexport function deleteMilestone(id) {\r\n\treturn http.delete('rubric/milestone/' + id)\r\n\t\t.then(response => {\r\n\t\t\treturn response.data\r\n\t\t})\r\n\t\t.catch(error => {\r\n\t\t\tconsole.log(error)\r\n\t\t})\r\n}\r\n","import http from '@/utils/axios'\r\n\r\n// export function getReview(termCode, orgCode, classCode, assignmentId, reviewerId, revieweeId, graderRole){\r\n// \tlet api = '';\r\n// \tif(graderRole)\r\n// \t\tapi = `review/odata?$filter=IdInfo/Organization eq '${orgCode}' and IdInfo/TermCode eq '${termCode}'\r\n// and IdInfo/ClassCode eq '${classCode}' and GraderRole eq '${graderRole}' and IdInfo/ReviewerId eq '${reviewerId}'\r\n// and IdInfo/RevieweeId eq '${revieweeId}' and IdInfo/AssignmentId eq ${assignmentId} &$orderby=IdInfo/UploadedDate desc`;\r\n// \telse\r\n// \t\tapi = `review/odata?$filter=IdInfo/Organization eq '${orgCode}' and IdInfo/TermCode eq '${termCode}'\r\n// and IdInfo/ClassCode eq '${classCode}' and IdInfo/ReviewerId eq '${reviewerId}'\r\n// and IdInfo/RevieweeId eq '${revieweeId}' and IdInfo/AssignmentId eq ${assignmentId} &$orderby=IdInfo/UploadedDate desc`;\r\n\r\n// \treturn http.get(api)\r\n// \t\t.then(response => {\r\n// \t\t\treturn response.data;\r\n// \t\t})\r\n// \t\t.catch(error => {\r\n// \t\t\tconsole.log(error);\r\n// \t\t});\r\n// }\r\n\r\nexport function getReview(termCode, orgCode, classCode, assignmentId, reviewerId, revieweeId, reviewerRole, reviewType) {\r\n\treturn http.get(`review/data/identifiers/${termCode}/${orgCode}/${classCode}/${reviewerId}/${revieweeId}/${reviewerRole}/${assignmentId}/${reviewType}`)\r\n\t\t.then(response => {\r\n\t\t\treturn response.data\r\n\t\t})\r\n\t\t.catch(error => {\r\n\t\t\tconsole.log(error)\r\n\t\t})\r\n}\r\n\r\nexport function getReviewers(termCode, orgCode, classCode, revieweeId, assignmentId, reviewType) {\r\n\treturn http.get(`user/reviewers/${termCode}/${orgCode}/${classCode}/${revieweeId}/${assignmentId}/${reviewType}`)\r\n\t\t.then(response => {\r\n\t\t\treturn response.data\r\n\t\t})\r\n\t\t.catch(error => {\r\n\t\t\tconsole.log(error)\r\n\t\t})\r\n}\r\n\r\nexport function getReviewFeedback(termCode, orgCode, classCode, revieweeId) {\r\n\treturn http.get(`user/review/feedback/${termCode}/${orgCode}/${classCode}/${revieweeId}`)\r\n\t\t.then(response => {\r\n\t\t\treturn response.data\r\n\t\t})\r\n\t\t.catch(error => {\r\n\t\t\tconsole.log(error)\r\n\t\t})\r\n}\r\n\r\nexport function getReviewById(Id) {\r\n\treturn http.get('review/data/' + Id)\r\n\t\t.then(response => {\r\n\t\t\treturn response.data\r\n\t\t})\r\n\t\t.catch(error => {\r\n\t\t\tconsole.log(error)\r\n\t\t})\r\n}\r\n\r\nexport function createNewReview(newReview) {\r\n\treturn http.post('review', newReview)\r\n\t\t.then(response => {\r\n\t\t\treturn response.data\r\n\t\t})\r\n\t\t.catch(error => {\r\n\t\t\tconsole.log(error)\r\n\t\t})\r\n}\r\n\r\nexport function updateReview(review) {\r\n\treturn http.put('review', review)\r\n\t\t.then(response => {\r\n\t\t\treturn response.data\r\n\t\t})\r\n\t\t.catch(error => {\r\n\t\t\tconsole.log(error)\r\n\t\t})\r\n}\r\n\r\nexport function updateReviewFeeback(reviewFeedback) {\r\n\treturn http.put('review/data', reviewFeedback)\r\n\t\t.then(response => {\r\n\t\t\treturn response.data\r\n\t\t})\r\n\t\t.catch(error => {\r\n\t\t\tconsole.log(error)\r\n\t\t})\r\n}\r\n\r\nexport function getLatestInstructorReview(termCode, orgCode, classCode, studentId, assignmentId) {\r\n\treturn http.get(`review/instructor_review/${orgCode}/${termCode}/${classCode}/${studentId}/${assignmentId}`)\r\n\t\t.then(response => {\r\n\t\t\treturn response.data\r\n\t\t})\r\n\t\t.catch(error => {\r\n\t\t\tconsole.log(error)\r\n\t\t})\r\n}\r\n\r\nexport function getCriteriaScore(reviewId, criteriaId) {\r\n\treturn http.get(`review/data/score/${reviewId}/${criteriaId}`)\r\n\t\t.then(response => {\r\n\t\t\treturn response.data\r\n\t\t})\r\n\t\t.catch(error => {\r\n\t\t\tconsole.log(error)\r\n\t\t})\r\n}\r\n\r\nexport function getInstructorScores(termCode, orgCode, classCode, assignmentId) {\r\n\treturn http.get(`review/instructor_scores/${orgCode}/${termCode}/${classCode}/${assignmentId}`)\r\n\t\t.then(response => {\r\n\t\t\treturn response.data\r\n\t\t})\r\n\t\t.catch(error => {\r\n\t\t\tconsole.log(error)\r\n\t\t})\r\n}\r\n\r\nexport function getAllInstructorScores(termCode, orgCode, rubricId) {\r\n\treturn http.get(`review/instructor_scores/all/${orgCode}/${termCode}/${rubricId}`)\r\n\t\t.then(response => {\r\n\t\t\treturn response.data\r\n\t\t})\r\n\t\t.catch(error => {\r\n\t\t\tconsole.log(error)\r\n\t\t})\r\n}\r\n\r\nexport function getInstructorScoresForAllCourses(termCode, orgCode, instructorId, rubricId) {\r\n\treturn http.get(`review/instructor_scores/all_courses/${termCode}/${orgCode}/${instructorId}/${rubricId}`)\r\n\t\t.then(response => {\r\n\t\t\treturn response.data\r\n\t\t})\r\n\t\t.catch(error => {\r\n\t\t\tconsole.log(error)\r\n\t\t})\r\n}\r\n\r\nexport function getSelfReviewScoresForAllCourses(termCode, orgCode, instructorId, rubricId) {\r\n\treturn http.get(`review/self_review_scores/all_courses/${termCode}/${orgCode}/${instructorId}/${rubricId}`)\r\n\t\t.then(response => {\r\n\t\t\treturn response.data\r\n\t\t})\r\n\t\t.catch(error => {\r\n\t\t\tconsole.log(error)\r\n\t\t})\r\n}\r\n\r\nexport function GetIndividualOutcomesInstructorScore(termCode, orgCode, classCode, studentId) {\r\n\treturn http.get(`review/individual_outcomes/instructor_scores/${orgCode}/${termCode}/${classCode}/${studentId}`)\r\n\t\t.then(response => {\r\n\t\t\treturn response.data\r\n\t\t})\r\n\t\t.catch(error => {\r\n\t\t\tconsole.log(error)\r\n\t\t})\r\n}\r\n\r\nexport function GetIndividualOutcomesSelfScore(termCode, orgCode, classCode, studentId) {\r\n\treturn http.get(`review/individual_outcomes/self_review_scores/${orgCode}/${termCode}/${classCode}/${studentId}`)\r\n\t\t.then(response => {\r\n\t\t\treturn response.data\r\n\t\t})\r\n\t\t.catch(error => {\r\n\t\t\tconsole.log(error)\r\n\t\t})\r\n}\r\n\r\nexport function getSelfReviewScores(termCode, orgCode, classCode, assignmentId) {\r\n\treturn http.get(`review/self_review_scores/${orgCode}/${termCode}/${classCode}/${assignmentId}`)\r\n\t\t.then(response => {\r\n\t\t\treturn response.data\r\n\t\t})\r\n\t\t.catch(error => {\r\n\t\t\tconsole.log(error)\r\n\t\t})\r\n}\r\n\r\nexport function getAllSelfReviewScores(termCode, orgCode, rubricId) {\r\n\treturn http.get(`review/self_review_scores/all/${orgCode}/${termCode}/${rubricId}`)\r\n\t\t.then(response => {\r\n\t\t\treturn response.data\r\n\t\t})\r\n\t\t.catch(error => {\r\n\t\t\tconsole.log(error)\r\n\t\t})\r\n}\r\n\r\nexport function GetIndividualOutcomesAppraisalScore(termCode, orgCode, classCode, studentId) {\r\n\treturn http.get(`review/individual_outcomes/appraisal_scores/${termCode}/${orgCode}/${classCode}/${studentId}`)\r\n\t\t.then(response => {\r\n\t\t\treturn response.data\r\n\t\t})\r\n\t\t.catch(error => {\r\n\t\t\tconsole.log(error)\r\n\t\t})\r\n}\r\n\r\nexport function getAppraisalScores(termCode, orgCode, classCode, assignmentId) {\r\n\treturn http.get(`review/appraisal_scores/${termCode}/${orgCode}/${classCode}/${assignmentId}`)\r\n\t\t.then(response => {\r\n\t\t\treturn response.data\r\n\t\t})\r\n\t\t.catch(error => {\r\n\t\t\tconsole.log(error)\r\n\t\t})\r\n}\r\n\r\nexport function getAllAppraisalScores(termCode, orgCode, rubricId) {\r\n\treturn http.get(`review/appraisal_scores/all/${termCode}/${orgCode}/${rubricId}`)\r\n\t\t.then(response => {\r\n\t\t\treturn response.data\r\n\t\t})\r\n\t\t.catch(error => {\r\n\t\t\tconsole.log(error)\r\n\t\t})\r\n}\r\n\r\nexport function getAppraisalScoresForAllCourses(termCode, orgCode, instructorId, rubricId) {\r\n\treturn http.get(`review/appraisal_scores/all_courses/${termCode}/${orgCode}/${instructorId}/${rubricId}`)\r\n\t\t.then(response => {\r\n\t\t\treturn response.data\r\n\t\t})\r\n\t\t.catch(error => {\r\n\t\t\tconsole.log(error)\r\n\t\t})\r\n}\r\n\r\nexport function getPeerReviewScores(termCode, orgCode, classCode, assignmentId, reviewType) {\r\n\treturn http.get(`review/peer_review_scores/${orgCode}/${termCode}/${classCode}/${assignmentId}/${reviewType}`)\r\n\t\t.then(response => {\r\n\t\t\treturn response.data\r\n\t\t})\r\n\t\t.catch(error => {\r\n\t\t\tconsole.log(error)\r\n\t\t})\r\n}\r\n\r\nexport function getInstructorHolisticScores(termCode, orgCode, classCode, assignmentId) {\r\n\treturn http.get(`review/instructor_holistic_scores/${orgCode}/${termCode}/${classCode}/${assignmentId}`)\r\n\t\t.then(response => {\r\n\t\t\treturn response.data\r\n\t\t})\r\n\t\t.catch(error => {\r\n\t\t\tconsole.log(error)\r\n\t\t})\r\n}\r\n\r\nexport function getSelfReviewHolisticScores(termCode, orgCode, classCode, assignmentId) {\r\n\treturn http.get(`review/self_review_holistic_scores/${orgCode}/${termCode}/${classCode}/${assignmentId}`)\r\n\t\t.then(response => {\r\n\t\t\treturn response.data\r\n\t\t})\r\n\t\t.catch(error => {\r\n\t\t\tconsole.log(error)\r\n\t\t})\r\n}\r\n\r\nexport function getPeerReviewHolisticScores(termCode, orgCode, classCode, assignmentId, reviewType) {\r\n\treturn http.get(`review/peer_review_holistic_scores/${orgCode}/${termCode}/${classCode}/${assignmentId}/${reviewType}`)\r\n\t\t.then(response => {\r\n\t\t\treturn response.data\r\n\t\t})\r\n\t\t.catch(error => {\r\n\t\t\tconsole.log(error)\r\n\t\t})\r\n}\r\n\r\nexport function getTaskSubmissionStatus(termCode, orgCode, classCode, username) {\r\n\treturn http.get(`review/student/task/submissions/${termCode}/${orgCode}/${classCode}/${username}`)\r\n\t\t.then(response => {\r\n\t\t\treturn response.data\r\n\t\t})\r\n\t\t.catch(error => {\r\n\t\t\tconsole.log(error)\r\n\t\t})\r\n}\r\n\r\nexport function getPeerReviewSubmissionStatus(termCode, orgCode, classCode, username) {\r\n\treturn http.get(`review/student/submission/${termCode}/${orgCode}/${classCode}/${username}/peer_review`)\r\n\t\t.then(response => {\r\n\t\t\treturn response.data\r\n\t\t})\r\n\t\t.catch(error => {\r\n\t\t\tconsole.log(error)\r\n\t\t})\r\n}\r\n\r\nexport function getSelfReviewSubmissionStatus(termCode, orgCode, classCode, username) {\r\n\treturn http.get(`review/student/submission/${termCode}/${orgCode}/${classCode}/${username}/self_review`)\r\n\t\t.then(response => {\r\n\t\t\treturn response.data\r\n\t\t})\r\n\t\t.catch(error => {\r\n\t\t\tconsole.log(error)\r\n\t\t})\r\n}\r\n\r\nexport function getAppraisalSubmissionStatus(termCode, orgCode, classCode, username) {\r\n\treturn http.get(`review/student/submission/${termCode}/${orgCode}/${classCode}/${username}/appraisal`)\r\n\t\t.then(response => {\r\n\t\t\treturn response.data\r\n\t\t})\r\n\t\t.catch(error => {\r\n\t\t\tconsole.log(error)\r\n\t\t})\r\n}\r\n","import http from '@/utils/axios'\r\nimport { Notification } from 'element-ui'\r\n\r\nexport function getTokenByUserId(userId) {\r\n\treturn http.get('canvas/token/' + userId)\r\n\t\t.then(response => {\r\n\t\t\treturn response.data\r\n\t\t})\r\n\t\t.catch(error => {\r\n\t\t\tconsole.log(error)\r\n\t\t})\r\n}\r\n\r\nexport function saveToken(canvasToken) {\r\n\treturn http.post('canvas/token', canvasToken)\r\n\t\t.then(response => {\r\n\t\t\treturn response.data\r\n\t\t})\r\n\t\t.catch(error => {\r\n\t\t\tconsole.log(error)\r\n\t\t})\r\n}\r\n\r\nexport function getCanvasResourses(instructorId, token, code, orgCode, termCode, classCode, assignmentId) {\r\n\treturn http.get('canvas/resources/' + instructorId + '/' + token + '/' + code + '/' + orgCode + '/' + termCode + '/' + classCode + '/' + assignmentId)\r\n\t\t.then(response => {\r\n\t\t\tif (response.data != null) { return response.data } else {\r\n\t\t\t\t// Handling error\r\n\t\t\t\tNotification.error({\r\n\t\t\t\t\tduration: 6000,\r\n\t\t\t\t\ttitle: 'Error',\r\n\t\t\t\t\tmessage: 'Cannot get Canvas resources'\r\n\t\t\t\t})\r\n\t\t\t\treturn []\r\n\t\t\t}\r\n\t\t})\r\n\t\t.catch(error => {\r\n\t\t\tconsole.log(error)\r\n\t\t})\r\n}\r\n\r\nexport function getCanvasAssignmentMatch(assignmentId) {\r\n\treturn http.get('canvas/assignment/match/' + assignmentId)\r\n\t\t.then(response => {\r\n\t\t\tif (response.data != null) {\r\n\t\t\t\treturn response.data\r\n\t\t\t} else {\r\n\t\t\t\treturn null\r\n\t\t\t}\r\n\t\t})\r\n\t\t.catch(error => {\r\n\t\t\tconsole.log(error)\r\n\t\t})\r\n}\r\n\r\nexport function createCanvasAssignmentMatch(match) {\r\n\treturn http.post('canvas/assignment/match', match)\r\n\t\t.then(response => {\r\n\t\t\treturn response.data\r\n\t\t})\r\n\t\t.catch(error => {\r\n\t\t\tconsole.log(error)\r\n\t\t})\r\n}\r\n","// import moment from 'moment';\r\n// Enable namespaced module\r\nexport const namespaced = true\r\n\r\nexport const formatDate = (uploadedDateStr) => {\r\n\tconst a = uploadedDateStr.toString().split(/[^0-9]/)\r\n\tlet uploadedDate\r\n\tconst yearInx = parseInt(a[0])\r\n\tif (yearInx < 2019) {\r\n\t\tconst lasttwo = uploadedDateStr.slice(-2)\r\n\t\tlet hour = parseInt(a[3])\r\n\t\tif (lasttwo == 'PM' && hour < 12) { hour += 12 }\r\n\t\tif (lasttwo == 'AM' && hour == 12) { hour = 0 }\r\n\t\tuploadedDate = new Date(a[2], a[0] - 1, a[1], hour, a[4], a[5])\r\n\t} else { uploadedDate = new Date(a[0], a[1] - 1, a[2], a[3], a[4], a[5]) }\r\n\tconst monthNames = [\r\n\t\t'Jan', 'Feb', 'Mar',\r\n\t\t'Apr', 'May', 'Jun', 'Jul',\r\n\t\t'Aug', 'Sep', 'Oct',\r\n\t\t'Nov', 'Dec'\r\n\t]\r\n\tlet hours = uploadedDate.getHours()\r\n\tlet minutes = uploadedDate.getMinutes()\r\n\tconst ampm = hours >= 12 ? 'pm' : 'am'\r\n\thours = hours % 12\r\n\thours = hours || 12 // the hour '0' should be '12'\r\n\tminutes = minutes < 10 ? '0' + minutes : minutes\r\n\tconst strTime = hours + ':' + minutes + ' ' + ampm\r\n\r\n\tconst date = uploadedDate.getDate()\r\n\tconst monthIndex = uploadedDate.getMonth()\r\n\r\n\tconst days = ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat']\r\n\tconst dayName = days[uploadedDate.getDay()]\r\n\treturn dayName + ', ' + monthNames[monthIndex] + ' ' + date + ' at ' + strTime\r\n}\r\n\r\n//IX added to display YEAR for Admin Template - there has to be a better way to do this and leverage all copied code in FormatDate\r\nexport const formatDateYear = (uploadedDateStr) => {\r\n\tconst a = uploadedDateStr.toString().split(/[^0-9]/)\r\n\tlet uploadedDate\r\n\tconst yearInx = parseInt(a[0])\r\n\tif (yearInx < 2019) {\r\n\t\tconst lasttwo = uploadedDateStr.slice(-2)\r\n\t\tlet hour = parseInt(a[3])\r\n\t\tif (lasttwo == 'PM' && hour < 12) { hour += 12 }\r\n\t\tif (lasttwo == 'AM' && hour == 12) { hour = 0 }\r\n\t\tuploadedDate = new Date(a[2], a[0] - 1, a[1], hour, a[4], a[5])\r\n\t} else { uploadedDate = new Date(a[0], a[1] - 1, a[2], a[3], a[4], a[5]) }\r\n\tconst monthNames = [\r\n\t\t'Jan', 'Feb', 'Mar',\r\n\t\t'Apr', 'May', 'Jun', 'Jul',\r\n\t\t'Aug', 'Sep', 'Oct',\r\n\t\t'Nov', 'Dec'\r\n\t]\r\n\tlet hours = uploadedDate.getHours()\r\n\tlet minutes = uploadedDate.getMinutes()\r\n\tconst ampm = hours >= 12 ? 'pm' : 'am'\r\n\thours = hours % 12\r\n\thours = hours || 12 // the hour '0' should be '12'\r\n\tminutes = minutes < 10 ? '0' + minutes : minutes\r\n\tconst strTime = hours + ':' + minutes + ' ' + ampm\r\n\r\n\tconst date = uploadedDate.getDate()\r\n\tconst monthIndex = uploadedDate.getMonth()\r\n\r\n\tconst days = ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat']\r\n\tconst dayName = days[uploadedDate.getDay()]\r\n\treturn dayName + ', ' + monthNames[monthIndex] + ' ' + date + ', ' + yearInx + ' at ' + strTime\r\n}\r\n\r\n\r\n\r\n","<template>\r\n <div>\r\n <div class=\"breadcumb\">\r\n <div class=\"ic-app-crumbs\">\r\n <span class=\"breadcumb-text\">\r\n <router-link :to=\"{ path: '/course/'+ currentCourse.ClassCode +'/projects/old' }\" style=\"color: #4E5E63; text-decoration: none;\">\r\n {{ currentCourse.ClassDescription }}\r\n </router-link>\r\n <i class=\"fas fa-chevron-right breadcumb-next\" />\r\n Projects\r\n </span>\r\n </div>\r\n </div>\r\n\r\n <div>\r\n <div id=\"assignment_group_1782423_assignments\" class=\"assignment-list\">\r\n <div style=\"margin-bottom: 20px;\">\r\n </div>\r\n\r\n <div v-if=\"assignments\" class=\"collectionViewItems ig-list\">\r\n <div class=\"list-group\" :list=\"assignments\" group=\"people\">\r\n <div\r\n v-for=\"(assignment, key) in assignments\"\r\n :key=\"assignment.Id\"\r\n class=\"list-group-item box-card\"\r\n style=\"width: 100%;\"\r\n >\r\n <el-card style=\"margin-bottom: 5px;\">\r\n <div v-if=\"userRole == 'Instructor'\" slot=\"header\" class=\"clearfix\">\r\n <div>\r\n <span\r\n class=\"instructor-assignment-name\"\r\n :title=\"assignment.AssignmentName\"\r\n style=\"margin-bottom: 5px; width: 80%\"\r\n @click=\"openAssignmentDetailDialog(assignment.Id, key)\"\r\n >\r\n {{ assignment.AssignmentName }}\r\n </span>\r\n\r\n <div style=\"float: right;\">\r\n <div v-if=\"assignment.UsePeerReview\" class=\"assignment-details\" style=\"margin-left: 20px; margin-right: 2px; margin-top: 4px;\">\r\n <el-tooltip\r\n class=\"item\"\r\n effect=\"dark\"\r\n content=\"This project has peer review\"\r\n placement=\"bottom\"\r\n >\r\n <i class=\"fas fa-user-edit\" style=\"font-size: 15px; color: #4E5E63;\" />\r\n </el-tooltip>\r\n </div>\r\n\r\n <div v-if=\"assignment.UseSelfAssessment\" class=\"assignment-details\" style=\"margin-left: 20px; margin-right: 0px; margin-top: 4px;\">\r\n <el-tooltip\r\n class=\"item\"\r\n effect=\"dark\"\r\n content=\"This project has self-review\"\r\n placement=\"bottom\"\r\n >\r\n <i class=\"fas fa-user-check\" style=\"font-size: 15px; color: #4E5E63;\" />\r\n </el-tooltip>\r\n </div>\r\n\r\n <div v-if=\"assignment.IsGroupAssignment\" class=\"assignment-details\" style=\"margin-left: 20px; margin-right: 0px; margin-top: 4px;\">\r\n <el-tooltip\r\n class=\"item\"\r\n effect=\"dark\"\r\n content=\"This project is a group project\"\r\n placement=\"bottom\"\r\n >\r\n <i class=\"fas fa-users\" style=\"font-size: 17px; color: #4E5E63;\" />\r\n </el-tooltip>\r\n </div>\r\n\r\n <div v-if=\"assignment.UseAppraisal\" class=\"assignment-details\" style=\"margin-left: 20px; margin-right: 2px; margin-top: 4px;\">\r\n <el-tooltip\r\n class=\"item\"\r\n effect=\"dark\"\r\n content=\"This project has appraisal\"\r\n placement=\"bottom\"\r\n >\r\n <i class=\"fab fa-rev\" style=\"font-size: 18px; color: #4E5E63; position: relative; top: -1px;\" />\r\n </el-tooltip>\r\n </div>\r\n\r\n <div v-if=\"assignment.UseCanvasIntegration\" class=\"assignment-details\" style=\"margin-left: 20px; margin-right: 0px; margin-top: 4px;\">\r\n <el-tooltip\r\n class=\"item\"\r\n effect=\"dark\"\r\n content=\"This project was synced with an assignment in Canvas\"\r\n placement=\"bottom\"\r\n >\r\n <img src=\"@/assets/img/CanvasIcon.png\" alt=\"Girl in a jacket\" width=\"21\" height=\"19\" style=\"font-size: 18px; color: #4E5E63; position: relative; top: -2px;\">\r\n </el-tooltip>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n <div style=\"height: 20px; margin-top: 5px;\">\r\n <div class=\"assignment-details\">\r\n <strong>\r\n Project Due Date:\r\n </strong>\r\n <span>\r\n {{ assignment.DueDate | formatDate }} EST\r\n </span>\r\n </div>\r\n\r\n </div>\r\n\r\n <div v-if=\"assignment.UseSelfAssessment && assignment.SelfReviewDueDate\" style=\"height: 20px; margin-top: 5px;\">\r\n <div v-if=\"assignment.UseSelfAssessment\" class=\"assignment-details\" style=\"font-size: 13px;\">\r\n <strong>\r\n Self Review Due:\r\n </strong>\r\n <span>\r\n {{ assignment.SelfReviewDueDate | formatDate }} EST\r\n </span>\r\n </div>\r\n </div>\r\n\r\n <div v-if=\"assignment.UsePeerReview && assignment.PeerReviewDueDate\" style=\"height: 20px; margin-top: 5px;\">\r\n <div v-if=\"assignment.UsePeerReview\" class=\"assignment-details\">\r\n <strong>\r\n Peer Review Due Date:\r\n </strong>\r\n <span>\r\n {{ assignment.PeerReviewDueDate | formatDate }} EST\r\n </span>\r\n </div>\r\n </div>\r\n\r\n <div v-if=\"assignment.UseAppraisal\" style=\"height: 20px; margin-top: 5px;\">\r\n <div v-if=\"assignment.UseAppraisal\" class=\"assignment-details\">\r\n <strong>\r\n Appraisal Due Date:\r\n </strong>\r\n <span>\r\n {{ assignment.AppraisalDueDate | formatDate }} EST\r\n </span>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n\r\n <div v-if=\"userRole == 'Student'\" slot=\"header\" class=\"clearfix\">\r\n <div>\r\n <span\r\n class=\"student-assignment-name\"\r\n :title=\"assignment.AssignmentName\"\r\n style=\"margin-bottom: 5px; width: 80%\"\r\n @click=\"openAssignmentDetailDialog(assignment.Id, key)\"\r\n >\r\n {{ assignment.AssignmentName }}\r\n </span>\r\n <div style=\"float: right;\">\r\n <div v-if=\"assignment.UsePeerReview\" class=\"assignment-details\" style=\"margin-left: 15px; margin-right: 3px;\">\r\n <el-tooltip\r\n class=\"item\"\r\n effect=\"dark\"\r\n content=\"This project has peer review\"\r\n placement=\"bottom\"\r\n >\r\n <i class=\"fas fa-user-edit\" style=\"font-size: 15px; color: #4E5E63;\" />\r\n </el-tooltip>\r\n </div>\r\n\r\n <div v-if=\"assignment.UseSelfAssessment\" class=\"assignment-details\" style=\"margin-left: 15px; margin-right: 0px;\">\r\n <el-tooltip\r\n class=\"item\"\r\n effect=\"dark\"\r\n content=\"This project has self-review\"\r\n placement=\"bottom\"\r\n >\r\n <i class=\"fas fa-user-check\" style=\"font-size: 15px; color: #4E5E63;\" />\r\n </el-tooltip>\r\n </div>\r\n\r\n <div v-if=\"assignment.IsGroupAssignment\" class=\"assignment-details\" style=\"margin-left: 15px; margin-right: 0px;\">\r\n <el-tooltip\r\n class=\"item\"\r\n effect=\"dark\"\r\n content=\"This project is a group project\"\r\n placement=\"bottom\"\r\n >\r\n <i class=\"fas fa-users\" style=\"font-size: 17px; color: #4E5E63;\" />\r\n </el-tooltip>\r\n </div>\r\n\r\n <div v-if=\"assignment.UseAppraisal\" class=\"assignment-details\" style=\"margin-left: 15px; margin-right: 0px;\">\r\n <el-tooltip\r\n class=\"item\"\r\n effect=\"dark\"\r\n content=\"This project has appraisal\"\r\n placement=\"bottom\"\r\n >\r\n <i class=\"fab fa-rev\" style=\"font-size: 18px; color: #4E5E63; position: relative; top: -1px;\" />\r\n </el-tooltip>\r\n </div>\r\n\r\n <div v-if=\"assignment.UseCanvasIntegration\" class=\"assignment-details\" style=\"margin-left: 15px; margin-right: 0px;\">\r\n <el-tooltip\r\n class=\"item\"\r\n effect=\"dark\"\r\n content=\"This project was synced with an assignment in Canvas\"\r\n placement=\"bottom\"\r\n >\r\n <img src=\"@/assets/img/CanvasIcon.png\" alt=\"Girl in a jacket\" width=\"21\" height=\"19\" style=\"font-size: 18px; color: #4E5E63; position: relative; top: -2px;\">\r\n </el-tooltip>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n <div style=\"height: 20px; margin-top: 5px;\">\r\n <div class=\"assignment-details\" style=\"font-size: 13.5px;\">\r\n <strong>\r\n <u>\r\n Project Due Date:\r\n </u>\r\n </strong>\r\n <span>\r\n <u>\r\n {{ assignment.DueDate | formatDate }} EST\r\n </u>\r\n </span>\r\n\r\n <span v-if=\"submissionStatus && submissionStatus[key]\" style=\"margin-left: 5px;\">\r\n <el-tooltip\r\n v-if=\"submissionStatus[key].Status == 'No Submission'\"\r\n class=\"item\"\r\n effect=\"dark\"\r\n :content=\"'No Submission Yet'\"\r\n placement=\"bottom\"\r\n >\r\n <i class=\"fas fa-exclamation-circle\" style=\"font-size: 15px; color: #f56c6c;\" />\r\n </el-tooltip>\r\n <el-tooltip\r\n v-else-if=\"new Date(assignment.DueDate) >= new Date(submissionStatus[key].UploadedDate)\"\r\n class=\"item\"\r\n effect=\"dark\"\r\n :content=\"'Submitted on ' + formatDate(submissionStatus[key].UploadedDate) + ' EST' \"\r\n placement=\"bottom\"\r\n >\r\n <i class=\"far fa-check-circle\" style=\"font-size: 15px; color: rgb(11 133 95);\" />\r\n </el-tooltip>\r\n <el-tooltip\r\n v-else\r\n class=\"item\"\r\n effect=\"dark\"\r\n :content=\"'Submitted on ' + formatDate(submissionStatus[key].UploadedDate) + ' EST' \"\r\n placement=\"bottom\"\r\n >\r\n <!-- <i class=\"fas fa-exclamation-circle\" style=\"font-size: 15px; color: #e6a23c;\" /> -->\r\n <i class=\"far fa-check-circle\" style=\"font-size: 15px; color: rgb(11 133 95);\" />\r\n </el-tooltip> <!-- Late - but we do not currently distinguish late submissions -->\r\n </span>\r\n\r\n <!-- <span v-if=\"submissionStatus && submissionStatus[key] && submissionStatus[key].Status != 'No Submission'\" style=\"margin-left: 5px;\">\r\n <el-tooltip\r\n class=\"item\"\r\n effect=\"dark\"\r\n :content=\"'Submitted at: ' + formatDate(submissionStatus[key].UploadedDate) + ' EST' \"\r\n placement=\"bottom\"\r\n >\r\n <i class=\"far fa-check-circle\" style=\"font-size: 15px; color: rgb(11 133 95);\" />\r\n </el-tooltip>\r\n </span> -->\r\n </div>\r\n\r\n </div>\r\n\r\n <div v-if=\"assignment.UseSelfAssessment\" style=\"height: 20px; margin-top: 5px;\">\r\n <div class=\"assignment-details\">\r\n <strong>\r\n Self Review Due Date:\r\n </strong>\r\n <span>\r\n {{ assignment.SelfReviewDueDate | formatDate }} EST\r\n </span>\r\n\r\n <!-- <span v-if=\"selfReviewStatus && selfReviewStatus.find(s => s.AssignmentId == assignment.Id)\" style=\"margin-left: 5px;\">\r\n <el-tag v-if=\"selfReviewStatus.find(s => s.AssignmentId == assignment.Id).Status == 'No Submission'\" type=\"danger\" size=\"mini\">\r\n <i class=\"fas fa-exclamation-circle\" style=\"font-size: 13px; color: #f56c6c;\" />\r\n No Submission</el-tag>\r\n <el-tag v-else-if=\"new Date(assignment.SelfReviewDueDate) >= new Date(selfReviewStatus.find(s => s.AssignmentId == assignment.Id).SubmittedDate)\" type=\"success\" size=\"mini\">\r\n <i class=\"far fa-check-circle\" style=\"font-size: 13px; color: #67c23a;\" />\r\n Submitted on {{ formatDate(selfReviewStatus.find(s => s.AssignmentId == assignment.Id).SubmittedDate) }} EST\r\n </el-tag>\r\n <el-tag v-else type=\"warning\" size=\"mini\">\r\n <i class=\"fas fa-exclamation-circle\" style=\"font-size: 13px; color: #e6a23c;\" />\r\n Submitted late on {{ formatDate(selfReviewStatus.find(s => s.AssignmentId == assignment.Id).SubmittedDate) }} EST\r\n </el-tag>\r\n </span> -->\r\n\r\n <span v-if=\"selfReviewStatus && selfReviewStatus.find(s => s.AssignmentId == assignment.Id)\" style=\"margin-left: 5px;\">\r\n <el-tooltip\r\n v-if=\"selfReviewStatus.find(s => s.AssignmentId == assignment.Id).Status == 'No Submission'\"\r\n class=\"item\"\r\n effect=\"dark\"\r\n :content=\"'No Submission Yet'\"\r\n placement=\"bottom\"\r\n >\r\n <i class=\"fas fa-exclamation-circle\" style=\"font-size: 15px; color: #f56c6c;\" />\r\n </el-tooltip>\r\n <el-tooltip\r\n v-else-if=\"new Date(assignment.SelfReviewDueDate) >= new Date(selfReviewStatus.find(s => s.AssignmentId == assignment.Id).SubmittedDate)\"\r\n class=\"item\"\r\n effect=\"dark\"\r\n :content=\"'Submitted on ' + formatDate(selfReviewStatus.find(s => s.AssignmentId == assignment.Id).SubmittedDate) + ' EST' \"\r\n placement=\"bottom\"\r\n >\r\n <i class=\"far fa-check-circle\" style=\"font-size: 15px; color: rgb(11 133 95);\" />\r\n </el-tooltip>\r\n <el-tooltip\r\n v-else\r\n class=\"item\"\r\n effect=\"dark\"\r\n :content=\"'Submitted on ' + formatDate(selfReviewStatus.find(s => s.AssignmentId == assignment.Id).SubmittedDate) + ' EST' \"\r\n placement=\"bottom\"\r\n >\r\n <!-- <i class=\"fas fa-exclamation-circle\" style=\"font-size: 15px; color: #e6a23c;\" /> -->\r\n <i class=\"far fa-check-circle\" style=\"font-size: 15px; color: rgb(11 133 95);\" />\r\n </el-tooltip> <!-- Late - but we do not currently distinguish late submissions -->\r\n </span>\r\n <span v-else style=\"margin-left: 5px;\">\r\n <el-tooltip\r\n class=\"item\"\r\n effect=\"dark\"\r\n :content=\"'No Submission Yet'\"\r\n placement=\"bottom\"\r\n >\r\n <i class=\"fas fa-exclamation-circle\" style=\"font-size: 15px; color: #f56c6c;\" />\r\n </el-tooltip>\r\n </span>\r\n\r\n </div>\r\n </div>\r\n\r\n <div v-if=\"assignment.UsePeerReview\" style=\"height: 20px; margin-top: 5px;\">\r\n <div class=\"assignment-details\">\r\n <strong>\r\n Peer Review Due Date:\r\n </strong>\r\n <span v-if=\"assignment.PeerReviewDueDate\">\r\n {{ assignment.PeerReviewDueDate | formatDate }} EST\r\n </span>\r\n <span v-else>\r\n No due date specified\r\n </span>\r\n\r\n <span v-if=\"peerReviewStatus && peerReviewStatus.find(s => s.AssignmentId == assignment.Id)\" style=\"margin-left: 5px;\">\r\n <el-tooltip\r\n v-if=\"peerReviewStatus.find(s => s.AssignmentId == assignment.Id).Status == 'No Submission'\"\r\n class=\"item\"\r\n effect=\"dark\"\r\n :content=\"'No Submission Yet'\"\r\n placement=\"bottom\"\r\n >\r\n <i class=\"fas fa-exclamation-circle\" style=\"font-size: 15px; color: #f56c6c;\" />\r\n </el-tooltip>\r\n <el-tooltip\r\n v-else-if=\"peerReviewStatus.find(s => s.AssignmentId == assignment.Id).Status == 'Completed' && new Date(assignment.PeerReviewDueDate) >= new Date(peerReviewStatus.find(s => s.AssignmentId == assignment.Id).SubmittedDate)\"\r\n class=\"item\"\r\n effect=\"dark\"\r\n :content=\"'Completed on ' + formatDate(peerReviewStatus.find(s => s.AssignmentId == assignment.Id).SubmittedDate) + ' EST' \"\r\n placement=\"bottom\"\r\n >\r\n <i class=\"far fa-check-circle\" style=\"font-size: 15px; color: rgb(11 133 95);\" />\r\n </el-tooltip>\r\n <el-tooltip\r\n v-else-if=\"peerReviewStatus.find(s => s.AssignmentId == assignment.Id).Status == 'Completed' && new Date(assignment.PeerReviewDueDate) < new Date(peerReviewStatus.find(s => s.AssignmentId == assignment.Id).SubmittedDate)\"\r\n class=\"item\"\r\n effect=\"dark\"\r\n :content=\"'Completed on ' + formatDate(peerReviewStatus.find(s => s.AssignmentId == assignment.Id).SubmittedDate) + ' EST' \"\r\n placement=\"bottom\"\r\n >\r\n <!-- <i class=\"fas fa-exclamation-circle\" style=\"font-size: 15px; color: #e6a23c;\" /> -->\r\n <i class=\"far fa-check-circle\" style=\"font-size: 15px; color: rgb(11 133 95);\" />\r\n </el-tooltip> <!-- Late - but we do not currently distinguish late submissions -->\r\n <el-tooltip\r\n v-else-if=\"peerReviewStatus.find(s => s.AssignmentId == assignment.Id).Status == 'In Progress'\"\r\n class=\"item\"\r\n effect=\"dark\"\r\n placement=\"bottom\"\r\n >\r\n <div slot=\"content\">\r\n Peer review is in progress. All peers have submitted their papers,\r\n <br>but you have not completed all of your reviews.\r\n </div>\r\n <i class=\"fas fa-tasks\" style=\"font-size: 15px; color: #e6a23c;\" />\r\n </el-tooltip>\r\n <el-tooltip\r\n v-else-if=\"peerReviewStatus.find(s => s.AssignmentId == assignment.Id).Status == 'Partially Completed'\"\r\n class=\"item\"\r\n effect=\"dark\"\r\n placement=\"bottom\"\r\n >\r\n <div slot=\"content\">\r\n Peer review is partially completed. You have reviewed all available papers,\r\n <br>but there are team members who have not submitted their papers.\r\n </div>\r\n <i class=\"fas fa-tasks\" style=\"font-size: 15px; color: #569636;\" />\r\n </el-tooltip>\r\n </span>\r\n <span v-else style=\"margin-left: 5px;\">\r\n <el-tooltip\r\n class=\"item\"\r\n effect=\"dark\"\r\n :content=\"'No Submission Yet'\"\r\n placement=\"bottom\"\r\n >\r\n <i class=\"fas fa-exclamation-circle\" style=\"font-size: 15px; color: #f56c6c;\" />\r\n </el-tooltip>\r\n </span>\r\n </div>\r\n </div>\r\n\r\n <div v-if=\"assignment.UseAppraisal\" style=\"height: 20px; margin-top: 5px;\">\r\n <div class=\"assignment-details\">\r\n <strong>\r\n Appraisal Due Date:\r\n </strong>\r\n <span>\r\n {{ assignment.AppraisalDueDate | formatDate }} EST\r\n </span>\r\n\r\n <span v-if=\"appraisalStatus && appraisalStatus.find(s => s.AssignmentId == assignment.Id)\" style=\"margin-left: 5px;\">\r\n <el-tooltip\r\n v-if=\"appraisalStatus.find(s => s.AssignmentId == assignment.Id).Status == 'No Submission'\"\r\n class=\"item\"\r\n effect=\"dark\"\r\n :content=\"'No Submission Yet'\"\r\n placement=\"bottom\"\r\n >\r\n <i class=\"fas fa-exclamation-circle\" style=\"font-size: 15px; color: #f56c6c;\" />\r\n </el-tooltip>\r\n <el-tooltip\r\n v-else-if=\"new Date(assignment.AppraisalDueDate) >= new Date(appraisalStatus.find(s => s.AssignmentId == assignment.Id).SubmittedDate)\"\r\n class=\"item\"\r\n effect=\"dark\"\r\n :content=\"'Submitted on ' + formatDate(appraisalStatus.find(s => s.AssignmentId == assignment.Id).SubmittedDate) + ' EST' \"\r\n placement=\"bottom\"\r\n >\r\n <i class=\"far fa-check-circle\" style=\"font-size: 15px; color: rgb(11 133 95);\" />\r\n </el-tooltip>\r\n <el-tooltip\r\n v-else\r\n class=\"item\"\r\n effect=\"dark\"\r\n :content=\"'Submitted on ' + formatDate(appraisalStatus.find(s => s.AssignmentId == assignment.Id).SubmittedDate) + ' EST' \"\r\n placement=\"bottom\"\r\n >\r\n <!-- <i class=\"fas fa-exclamation-circle\" style=\"font-size: 15px; color: #e6a23c;\" /> -->\r\n <i class=\"far fa-check-circle\" style=\"font-size: 15px; color: rgb(11 133 95);\" />\r\n </el-tooltip> <!-- Late - but we do not currently distinguish late submissions -->\r\n </span>\r\n <span v-else style=\"margin-left: 5px;\">\r\n <el-tooltip\r\n class=\"item\"\r\n effect=\"dark\"\r\n :content=\"'No Submission Yet'\"\r\n placement=\"bottom\"\r\n >\r\n <i class=\"fas fa-exclamation-circle\" style=\"font-size: 15px; color: #f56c6c;\" />\r\n </el-tooltip>\r\n </span>\r\n\r\n </div>\r\n </div>\r\n\r\n </div>\r\n\r\n <div v-if=\"userRole == 'Instructor'\">\r\n <el-tooltip\r\n style=\"margin-right: 18px; margin-left: 0px; margin-bottom: 5px;\"\r\n class=\"item\"\r\n effect=\"dark\"\r\n content=\"View All Submissions\"\r\n placement=\"bottom\"\r\n >\r\n <el-button class=\"assignment-action-btn\" @click=\"gotoStudentSubmissions(assignment.Id)\">\r\n <i class=\"fab fa-buffer\" style=\"font-size: 24px;\" />\r\n <span style=\"position: relative;top: -3px;margin-left: 6px;\">\r\n View All Submissions\r\n </span>\r\n </el-button>\r\n </el-tooltip>\r\n\r\n <el-tooltip\r\n style=\"margin-right: 18px; margin-left: 0px; margin-bottom: 5px;\"\r\n class=\"item\"\r\n effect=\"dark\"\r\n content=\"View Instructor Feedback\"\r\n placement=\"bottom\"\r\n >\r\n <el-button class=\"assignment-action-btn\" @click=\"gotoStudentScores(assignment.Id, key)\">\r\n <i class=\"far fa-list-alt\" style=\"font-size: 24px;\" />\r\n <span style=\"position: relative;top: -3px;margin-left: 6px;\">\r\n View All Feedback\r\n </span>\r\n </el-button>\r\n </el-tooltip>\r\n\r\n <!-- <el-tooltip style=\"margin-right: 18px; margin-left: 0px; margin-bottom: 5px;\"\r\n\t\t\t\t\t\t\t\t\t\tclass=\"item\" effect=\"dark\" content=\"View Holistic Scores\" placement=\"bottom\"\r\n\t\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\t\t<el-button class=\"assignment-action-btn\" @click=\"gotoStudentHolisticScores(assignment.Id, key)\">\r\n\t\t\t\t\t\t\t\t\t\t\t<i class=\"fas fa-hospital-symbol\" style=\"font-size: 26px;\" />\r\n\t\t\t\t\t\t\t\t\t\t\t<span style=\"position: relative;top: -3px;margin-left: 6px;\">\r\n\t\t\t\t\t\t\t\t\t\t\t\tView Holistic Scores\r\n\t\t\t\t\t\t\t\t\t\t\t</span>\r\n\t\t\t\t\t\t\t\t\t\t</el-button>\r\n\t\t\t\t\t\t\t\t\t</el-tooltip> -->\r\n\r\n <!-- <el-tooltip style=\" margin-left: 0px; padding: 7px 12px;\"\r\n\t\t\t\t\t\t\t\t\t\tclass=\"item\" effect=\"dark\" content=\"Compare Texts\" placement=\"bottom\"\r\n\t\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\t\t<el-button class=\"assignment-action-btn\" @click=\"gotoInstructorCompareTexts(assignment.Id, key)\">\r\n\t\t\t\t\t\t\t\t\t\t\t<img src=\"../../assets/Compare2.png\" style=\"width: 30px; margin-top: 4px;\">\r\n\t\t\t\t\t\t\t\t\t\t</el-button>\r\n\t\t\t\t\t\t\t\t\t</el-tooltip> -->\r\n </div>\r\n\r\n <div v-if=\"userRole == 'Student' && submissionStatus[key]\">\r\n <el-tooltip\r\n v-if=\"submissionStatus[key].Status == 'No Submission'\"\r\n style=\"margin-right: 20px; margin-left: 0px; margin-bottom: 10px;\"\r\n class=\"item\"\r\n effect=\"dark\"\r\n content=\"Submit Project\"\r\n placement=\"bottom\"\r\n >\r\n <el-button class=\"assignment-action-btn\" @click=\"openDialog(assignment.Id, key)\">\r\n <i class=\"fas fa-file-upload\" style=\"font-size: 18px;\" />\r\n <span style=\"position: relative;top: -1px; margin-left: 6px;\">\r\n Submit Project\r\n </span>\r\n </el-button>\r\n </el-tooltip>\r\n\r\n <el-tooltip\r\n v-if=\"submissionStatus[key].Status == 'Feedback Available'\"\r\n class=\"item\"\r\n effect=\"dark\"\r\n content=\"View Feedback\"\r\n placement=\"bottom\"\r\n style=\"margin-right: 20px; margin-left: 0px; margin-bottom: 10px;\"\r\n >\r\n <el-badge :value=\"submissionStatus[key].ReviewCount\" class=\"badge-item\">\r\n <el-button class=\"assignment-action-btn\" @click=\"viewFeedback(assignment.Id)\">\r\n <i class=\"far fa-comment-alt\" style=\"font-size: 18px;\" />\r\n <span style=\"position: relative;top: -1px; margin-left: 6px;\">\r\n View Feedback\r\n </span>\r\n </el-button>\r\n </el-badge>\r\n </el-tooltip>\r\n\r\n <el-tooltip\r\n v-if=\"submissionStatus[key].Status != 'No Submission'\"\r\n class=\"item\"\r\n effect=\"dark\"\r\n content=\"View Submission\"\r\n placement=\"bottom\"\r\n style=\"margin-right: 20px; margin-left: 0px; margin-bottom: 10px;\"\r\n >\r\n <el-button class=\"assignment-action-btn\" @click=\"viewSubmission(submissionStatus[key].DocId, assignment)\">\r\n <i class=\"far fa-file-alt\" style=\"font-size: 18px;\" />\r\n <span style=\"position: relative;top: -1px; margin-left: 6px;\">\r\n View Submission\r\n </span>\r\n </el-button>\r\n </el-tooltip>\r\n\r\n <el-tooltip\r\n v-if=\"submissionStatus[key].Status != 'No Submission'\"\r\n class=\"item\"\r\n effect=\"dark\"\r\n content=\"Download Submission\"\r\n placement=\"bottom\"\r\n style=\"margin-right: 20px; margin-left: 0px; margin-bottom: 10px;\"\r\n >\r\n <el-button class=\"assignment-action-btn\" @click=\"download(submissionStatus[key].DocId, assignment)\">\r\n <i class=\"fas fa-download\" style=\"font-size: 18px;\" />\r\n <span style=\"position: relative;top: -1px; margin-left: 6px;\">\r\n Download Submission\r\n </span>\r\n </el-button>\r\n </el-tooltip>\r\n </div>\r\n </el-card>\r\n </div>\r\n\t\t</div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <el-dialog\r\n id=\"assignment-detail-dialog\"\r\n :visible.sync=\"assignmentDetailDialogVisible\"\r\n width=\"650px\"\r\n center\r\n >\r\n <template slot=\"title\">\r\n <span v-if=\"selectedAssignment\" class=\"dialog-title\">\r\n {{ selectedAssignment.AssignmentName }}\r\n </span>\r\n </template>\r\n <hr>\r\n\r\n <div v-if=\"selectedAssignment\" style=\"word-break: normal;\">\r\n <div style=\"margin-bottom: 3px; margin-top: 10px; font-weight: bold;\">\r\n Important Information\r\n </div>\r\n <div style=\"padding: 8px 16px; padding-top: px; background-color: #ecf8ff; border-radius: 4px; border-left: 5px solid #50bfff; margin: 20px 0; margin-top: 8px; line-height: 2em;\">\r\n <span>\r\n This project is due at <strong>{{ selectedAssignment.DueDate | formatDate }} EST</strong>. It\r\n <span v-if=\"selectedAssignment.IsGroupAssignment\">\r\n is a group project which\r\n </span>\r\n includes\r\n <span v-if=\"!selectedAssignment.UsePeerReview && !selectedAssignment.UseSelfAssessment\">\r\n no sub-tasks.\r\n </span>\r\n <span v-else>\r\n the following tasks:\r\n </span>\r\n\r\n </span>\r\n\r\n <div v-if=\"selectedAssignment.UseSelfAssessment\">\r\n <strong>- Self review: </strong> due at <strong>{{ selectedAssignment.SelfReviewDueDate | formatDate }} EST</strong>\r\n </div>\r\n <div v-if=\"selectedAssignment.UsePeerReview\">\r\n <strong>- Peer review: </strong> due at <strong>{{ selectedAssignment.PeerReviewDueDate | formatDate }} EST</strong>\r\n </div>\r\n <div v-if=\"selectedAssignment.UseAppraisal\">\r\n <strong>- Self appraisal: </strong> due at <strong>{{ selectedAssignment.AppraisalDueDate | formatDate }} EST</strong>\r\n </div>\r\n </div>\r\n <div style=\"margin-bottom: 3px; font-weight: bold;\">\r\n Project Overview\r\n </div>\r\n <!-- <el-input v-model=\"selectedAssignment.Description\" type=\"textarea\" rows=\"15\" :readonly=\"true\" placeholder=\"No description provided.\" /> -->\r\n <editor-content id=\"description-detail-editor\" :editor=\"descriptionDetailEditor\" class=\"el-textarea__inner assignment-detail-editor\" />\r\n </div>\r\n\r\n <span slot=\"footer\" class=\"dialog-footer\">\r\n <el-button v-if=\"userRole == 'Instructor'\" @click=\"gotoStudentSubmissions(selectedAssignment.Id)\">\r\n View Student Submissions\r\n </el-button>\r\n <el-button v-if=\"userRole == 'Instructor'\" @click=\"gotoStudentScores(selectedAssignment.Id)\">\r\n View Student Holistic Scores\r\n </el-button>\r\n <div v-if=\"userRole == 'Student'&& selectedAssignment\" style=\"margin-top: 20px;\">\r\n <el-badge\r\n v-if=\"submissionStatus && submissionStatus[selectedKey] && submissionStatus[selectedKey].Status == 'Feedback Available'\"\r\n :value=\"submissionStatus[selectedKey].ReviewCount\"\r\n class=\"badge-item\"\r\n style=\"vertical-align: initial; margin-left: 0px;\"\r\n >\r\n <el-button\r\n style=\"padding: 10px; margin-bottom: 10px;\"\r\n @click=\"viewFeedback(selectedAssignment.Id)\"\r\n >\r\n <i class=\"far fa-comment-alt\" style=\"font-size: 18px; margin-right: 5px;\" />\r\n View Feedback\r\n </el-button>\r\n </el-badge>\r\n\r\n <el-button\r\n v-if=\"submissionStatus && submissionStatus[selectedKey] && submissionStatus[selectedKey].Status != 'No Submission'\"\r\n style=\"padding: 10px; margin-bottom: 10px; margin-right: 10px;\"\r\n @click=\"viewSubmission(submissionStatus[selectedKey].DocId, selectedAssignment)\"\r\n >\r\n <i class=\"far fa-file-alt\" style=\"font-size: 18px; margin-right: 5px;\" />View Submission\r\n </el-button>\r\n\r\n <el-button\r\n v-if=\"submissionStatus && submissionStatus[selectedKey] && submissionStatus[selectedKey].Status != 'No Submission'\"\r\n style=\"padding: 10px; margin-bottom: 10px; margin-right: 10px;\"\r\n @click=\"download(submissionStatus[selectedKey].DocId, selectedAssignment)\"\r\n >\r\n <i class=\"fas fa-download\" style=\"font-size: 18px; margin-right: 5px;\" />Download Submission\r\n </el-button>\r\n\r\n </div>\r\n </span>\r\n </el-dialog>\r\n\r\n <el-dialog\r\n v-if=\"selectedAssignment\"\r\n id=\"preview-submission-dialog\"\r\n :visible.sync=\"docPreviewDialogVisible\"\r\n width=\"800px\"\r\n style=\"height: 930px;\"\r\n center\r\n >\r\n <template slot=\"title\">\r\n <span class=\"dialog-title\">\r\n Preview of Your Submission for {{ selectedAssignment.AssignmentName }}\r\n </span>\r\n </template>\r\n\r\n <div style=\"height: 930px;\">\r\n <div id=\"submissions_container\" style=\"height: 930px;\">\r\n <nav class=\"ViewerControls ViewerControls--with-annotations\">\r\n <div class=\"ViewerControls-primary\">\r\n <div class=\"ViewerControls--download\">\r\n <div style=\"min-width: 50px; text-align: center;\">\r\n <div>\r\n <button class=\"download-button--button\" title=\"Download annotated PDF\" aria-label=\"Download annotated PDF\" @click=\"downloadPdf()\">\r\n <i style=\"font-size: 22px;\" class=\"fas fa-file-download\" />\r\n </button>\r\n </div>\r\n </div>\r\n </div><div class=\"ViewerControls--title\" /><div class=\"ViewerControls--page-controls\">\r\n <span class=\"ViewerControls--page-number\" style=\"display: flex; align-items: center;\">\r\n Page\r\n <div style=\"padding-left: 10px; padding-right: 10px;\">\r\n <el-input-number v-model=\"pageNum\" :min=\"1\" :max=\"totalPageNumber\" size=\"small\" label=\"Page\" @change=\"changePage\" />\r\n </div>\r\n of {{ totalPageNumber }}\r\n </span>\r\n <svg viewBox=\"0 0 2 26\" style=\"margin-left: 12px; margin-right: 0px; width: 2px; height: 26px; color: rgb(171, 179, 186);\">\r\n <line stroke=\"currentColor\" stroke-dasharray=\"2, 1\" stroke-width=\"1\" x1=\"1\" y1=\"0\" x2=\"1\" y2=\"26\" />\r\n </svg>\r\n </div>\r\n <nav class=\"DocumentControls\">\r\n <div style=\"display: inline-flex; align-items: center; user-select: none;\">\r\n <button class=\"AnnotationControlButton\" aria-label=\"Zoom Out\" title=\"Zoom Out\" aria-disabled=\"false\" @click=\"zoomOut\">\r\n <i style=\"font-size: 20px;\" class=\"fas fa-minus\" />\r\n </button>\r\n <span aria-hidden=\"true\" style=\"text-transform: uppercase; font-size: 0.75rem; color: rgb(238, 238, 239); margin-left: 4px; margin-right: 4px;\">\r\n Zoom\r\n </span>\r\n <button class=\"AnnotationControlButton\" aria-label=\"Zoom In\" title=\"Zoom In\" aria-disabled=\"false\" @click=\"zoomIn\">\r\n <i style=\"font-size: 20px;\" class=\"fas fa-plus\" />\r\n </button>\r\n </div>\r\n <svg viewBox=\"0 0 2 26\" style=\"margin-left: 2px; margin-right: 4px; width: 2px; height: 26px; color: rgb(171, 179, 186);\">\r\n <line stroke=\"currentColor\" stroke-dasharray=\"2, 1\" stroke-width=\"1\" x1=\"1\" y1=\"0\" x2=\"1\" y2=\"26\" />\r\n </svg>\r\n <div class=\"ViewerControls--page-controls\">\r\n <button aria-label=\"Enter Full Screen\" class=\"AnnotationControlButton full-screen-button\" title=\"Zoom Fit Width\" @click=\"zoomFitWidth\">\r\n <i style=\"font-size: 20px;\" class=\"fas fa-expand\" />\r\n </button>\r\n </div>\r\n </nav>\r\n </div>\r\n </nav>\r\n\r\n <div id=\"iframe_holder\" style=\"display: block; height: 700px;\">\r\n <div id=\"pdfDocument\" style=\"resize: vertical; height: 100%;\" />\r\n </div>\r\n </div>\r\n </div>\r\n </el-dialog>\r\n\r\n </div>\r\n</template>\r\n<script>\r\n\r\nimport { mapState } from 'vuex'\r\nimport draggable from 'vuedraggable'\r\nimport * as assignmentService from '@/services/assignment.service'\r\nimport * as submissionService from '@/services/submission.service'\r\nimport * as teamFormationService from '@/services/team_formation.service'\r\nimport * as pdfService from '@/services/pdf.service'\r\nimport * as rubricService from '@/services/rubric.service'\r\nimport * as reviewService from '@/services/review.service'\r\nimport * as surveyService from '@/services/survey.service'\r\nimport * as canvasService from '@/services/canvas.service'\r\nimport * as dateUtils from '@/utils/date-utils'\r\nimport { Notification } from 'element-ui'\r\nimport { Editor, EditorContent, EditorMenuBar } from 'tiptap'\r\nimport {\r\n\tBlockquote,\r\n\tCodeBlock,\r\n\tHardBreak,\r\n\tHeading,\r\n\tImage,\r\n\tOrderedList,\r\n\tBulletList,\r\n\tListItem,\r\n\tTodoItem,\r\n\tTodoList,\r\n\tBold,\r\n\tCode,\r\n\tItalic,\r\n\tLink,\r\n\tTable,\r\n\tTableHeader,\r\n\tTableCell,\r\n\tTableRow,\r\n\tStrike,\r\n\tUnderline,\r\n\tHistory\r\n} from 'tiptap-extensions'\r\n// Handles UI and logics of the Projects page.\r\nexport default {\r\n\tname: 'Assignment',\r\n\tcomponents: {\r\n\t\tdraggable,\r\n\t\tEditorMenuBar,\r\n\t\tEditorContent\r\n\t},\r\n\tfilters: {\r\n\t\tformatDate(dateStr) {\r\n\t\t\tif (dateStr) { return dateUtils.formatDate(dateStr) }\r\n\t\t}\r\n\t},\r\n\tdata() {\r\n\t\treturn {\r\n\t\t\ttermCode: this.$store.state.enrollment.termCode,\r\n\t\t\torgCode: this.$store.state.enrollment.orgCode,\r\n\t\t\tclassCode: this.$store.state.enrollment.currentCourse.ClassCode,\r\n\t\t\tusername: this.$store.state.auth.user.UserName,\r\n\t\t\t// assignments: this.$store.state.assignment.assignments,\r\n\t\t\tdragging: false,\r\n\t\t\tuserRole: '',\r\n\t\t\tcurrentCourse: null,\r\n\t\t\tsearch: '',\r\n\t\t\tsubmissionStatus: [],\r\n\t\t\tpeerReviewStatus: [],\r\n\t\t\tselfReviewStatus: [],\r\n\t\t\tappraisalStatus: [],\r\n\t\t\tuploadDialogVisible: false,\r\n\t\t\teditAssignmentDialogVisible: false,\r\n\t\t\tnewAssignmentDialogVisible: false,\r\n\t\t\tassignmentDetailDialogVisible: false,\r\n\t\t\tsurveyDialogVisible: false,\r\n\t\t\tquestions: [],\r\n\t\t\tsurveyResponses: [],\r\n\t\t\tsurveyId: 1,\r\n\t\t\tsurveyAnswered: false,\r\n\t\t\tfollowupQuestion: null,\r\n\t\t\trepsonseType: 'first',\r\n\t\t\tsubmitSurveyActive: false,\r\n\t\t\tselectedAssignment: null,\r\n\t\t\tselectedKey: null,\r\n\t\t\tfile: null,\r\n\t\t\tfileList: [],\r\n\t\t\tnewAssignmentForm: {\r\n\t\t\t\tOrgCode: '',\r\n\t\t\t\tAssignmentName: '',\r\n\t\t\t\tDueDate: '',\r\n\t\t\t\tDescription: '',\r\n\t\t\t\tIsActive: 'A',\r\n\t\t\t\tIsMandatory: false,\r\n\t\t\t\tIsGroupAssignment: false,\r\n\t\t\t\tDisplayOrder: 0,\r\n\t\t\t\tTemplateId: 0,\r\n\t\t\t\tRubricId: null,\r\n\t\t\t\tGenreId: 0,\r\n\t\t\t\tUploadType: 0,\r\n\t\t\t\tUsePeerReview: false,\r\n\t\t\t\tUseRevisionPlan: false,\r\n\t\t\t\tUsePortfolio: false,\r\n\t\t\t\tUseNormalization: false,\r\n\t\t\t\tUseReviewerComment: false,\r\n\t\t\t\tLastActivityDate: '',\r\n\t\t\t\tUseSelfAssessment: false,\r\n\t\t\t\tUseAppraisal: false,\r\n\t\t\t\tAppraisalRubricId: null,\r\n\t\t\t\tAppraisalDueDate: '',\r\n\t\t\t\tUseCanvasIntegration: false,\r\n\t\t\t\tPeerReviewDueDate: ''\r\n\t\t\t},\r\n\t\t\trules: {\r\n\t\t\t\tAssignmentName: [\r\n\t\t\t\t\t{ required: true, message: 'Please input Project Name', trigger: 'blur' }\r\n\t\t\t\t],\r\n\t\t\t\tDueDate: [\r\n\t\t\t\t\t{ required: true, message: 'Please pick a date', trigger: 'change' }\r\n\t\t\t\t],\r\n\t\t\t\tRubricId: [\r\n\t\t\t\t\t{ required: true, message: 'Please select a rubric', trigger: 'change' }\r\n\t\t\t\t],\r\n\t\t\t\tSelfReviewDueDate: [\r\n\t\t\t\t\t{ required: true, message: 'Please pick a date', trigger: 'change' }\r\n\t\t\t\t],\r\n\t\t\t\tPeerReviewDueDate: [\r\n\t\t\t\t\t{ required: true, message: 'Please pick a date', trigger: 'change' }\r\n\t\t\t\t]\r\n\t\t\t},\r\n\t\t\tformLabelWidth: '180px',\r\n\t\t\trubricList: null,\r\n\t\t\tnewDescriptionEditor: null,\r\n\t\t\teditDescriptionEditor: null,\r\n\t\t\tdescriptionDetailEditor: null,\r\n\t\t\tsurveyWidth: '940px',\r\n\t\t\tsurveyTitle: '',\r\n\t\t\tcanvasAssignmentGroups: null,\r\n\t\t\tcanvasDialogVisible: false,\r\n\t\t\tactiveNames: [],\r\n\t\t\tselectedCanvasAssignment: null,\r\n\t\t\tsubmitCanvasAssignment: false,\r\n\t\t\tassignmentToMatch: null,\r\n\t\t\tcanvasCode: null,\r\n\t\t\tcanvasToken: null,\r\n\t\t\tcanvasCourseId: null,\r\n\t\t\tcanvasUserId: null,\r\n\t\t\tcanvasAssignmentName: null,\r\n\t\t\thtmlUrl: null,\r\n\t\t\tredirectDialogVisible: false,\r\n\t\t\tselectedAssignmentId: null,\r\n\t\t\tisSubmitting: false,\r\n\t\t\t// assignments: null,\r\n\t\t\t// originalAssignments: this.$store.state.assignment.assignments\r\n\t\t\tdocPreviewDialogVisible: false,\r\n\t\t\tmyapi: null,\r\n\t\t\tpageNum: 1,\r\n\t\t\ttotalPageNumber: null,\r\n\t\t\tzoomValue: 140\r\n\t\t}\r\n\t},\r\n\tcomputed: {\r\n\t\t...mapState({\r\n\t\t\tuserInState: state => state.auth.user,\r\n\t\t\troleInState: state => state.enrollment.userRole\r\n\t\t}),\r\n\t\tassignments: {\r\n\t\t\tget() {\r\n\t\t\t\treturn this.$store.state.assignment.assignments\r\n\t\t\t},\r\n\t\t\tset(updatedAssignments) {\r\n\t\t\t\tthis.$store.commit('assignment/SET_ASSIGNMENTS', updatedAssignments)\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\twatch: {\r\n\t\troleInState(newValue) {\r\n\t\t\tthis.userRole = newValue\r\n\t\t},\r\n\t\tuserInState(newValue) {\r\n\t\t\tthis.username = newValue.UserName\r\n\t\t\tif (this.$store.state.enrollment.userRole == 'Student') {\r\n\t\t\t\tthis.submissionStatus = []\r\n\t\t\t\tthis.peerReviewStatus = []\r\n\t\t\t\tthis.selfReviewStatus = []\r\n\t\t\t\tthis.appraisalStatus = []\r\n\t\t\t\tthis.getStudentSubmissionStatus()\r\n\t\t\t\tthis.getPeerReviewSubmissionStatus()\r\n\t\t\t\tthis.getSelfReviewSubmissionStatus()\r\n\t\t\t\tthis.getAppraisalSubmissionStatus()\r\n\t\t\t} else {\r\n\t\t\t\tthis.submissionStatus = []\r\n\t\t\t\tthis.peerReviewStatus = []\r\n\t\t\t\tthis.selfReviewStatus = []\r\n\t\t\t\tthis.appraisalStatus = []\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\tbeforeDestroy() {\r\n\t\tif (this.newDescriptionEditor != null) { this.newDescriptionEditor.destroy() }\r\n\t\tif (this.editDescriptionEditor != null) { this.editDescriptionEditor.destroy() }\r\n\t\tif (this.descriptionDetailEditor != null) { this.descriptionDetailEditor.destroy() }\r\n\t},\r\n\tasync created() {\r\n\t\tthis.userRole = this.$store.state.enrollment.userRole\r\n\t\tthis.currentCourse = this.$store.state.enrollment.currentCourse\r\n\r\n\t\tconsole.log(this.currentCourse)\r\n\r\n\t\tif (this.userRole == 'Student') {\r\n\t\t\tthis.getStudentSubmissionStatus()\r\n\t\t\tthis.getPeerReviewSubmissionStatus()\r\n\t\t\tthis.getSelfReviewSubmissionStatus()\r\n\t\t\tthis.getAppraisalSubmissionStatus()\r\n\t\t} else if (this.userRole == 'Instructor') {\r\n\t\t\tthis.getRubricList()\r\n\t\t}\r\n\r\n\t\tthis.canvasCode = this.getUrlParameter('code')\r\n\r\n\t\tif (this.canvasCode) {\r\n\t\t\tif (this.userRole == 'Instructor') {\r\n\t\t\t\tthis.getCanvasResourses(null, this.canvasCode, null)\r\n\t\t\t} else {\r\n\t\t\t\tconst assignmentId = this.getUrlParameter('assignmentId')\r\n\t\t\t\tconst key = this.assignments.findIndex(a => a.Id == assignmentId)\r\n\t\t\t\tthis.openUploadDialog(assignmentId, key)\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\tmethods: {\r\n\t\tasync orderByDueDates() {\r\n\t\t\tthis.assignments = this.assignments.sort(function(a, b) {\r\n\t\t\t\t// Turn your strings into dates, and then subtract them\r\n\t\t\t\t// to get a value that is either negative, positive, or zero.\r\n\t\t\t\treturn new Date(a.DueDate) - new Date(b.DueDate)\r\n\t\t\t})\r\n\r\n\t\t\t// this.$store.commit('assignment/SET_ASSIGNMENTS', this.assignments)\r\n\r\n\t\t\tfor (let i = 0; i < this.assignments.length; i++) {\r\n\t\t\t\tthis.assignments[i].DisplayOrder = i\r\n\t\t\t\tawait assignmentService.updateAssignment(this.assignments[i])\r\n\t\t\t}\r\n\r\n\t\t\tNotification.success({\r\n\t\t\t\tduration: 6000,\r\n\t\t\t\ttitle: 'Success',\r\n\t\t\t\tmessage: 'Projects order was updated successfully.'\r\n\t\t\t})\r\n\t\t},\r\n\t\tformatDate(dateStr) {\r\n\t\t\treturn dateUtils.formatDate(dateStr)\r\n\t\t},\r\n\t\tuseCanvasIntegration() {\r\n\t\t\tconst demoCourses = ['10743', '11126', '11570', '58299', '55751', '50999', '58432', '50366']\r\n\t\t\t if ((this.termCode == '202105' || this.termCode == '202101') &&\r\n\t\t\t (demoCourses.includes(this.classCode) || this.classCode == 'T0007' || this.classCode == 'TEST01' || this.classCode == 'PTC10')) { return true }\r\n\r\n\t\t\tconst thisCourse = this.$store.state.enrollment.currentCourse\r\n\t\t\tconst courseName = thisCourse.ClassDescription\r\n\t\t\t if ((this.termCode == '202108' || this.termCode == '202201') && courseName.includes('ENC 3250')) { return true }\r\n\t\t\treturn false\r\n\t\t},\r\n\t\tcheckSubmitSurveyActive() {\r\n\t\t\tlet isActive = true\r\n\t\t\tfor (let i = 0; i < this.surveyResponses.length; i++) {\r\n\t\t\t\tif (this.surveyResponses[i] != null) {\r\n\t\t\t\t\tif (this.surveyResponses[i].AnswerId == 0) {\r\n\t\t\t\t\t\tisActive = false\r\n\t\t\t\t\t\tbreak\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tthis.submitSurveyActive = isActive\r\n\t\t},\r\n\t\tgetQuestionNumber(index) {\r\n\t\t\tif (this.surveyId == 4) {\r\n\t\t\t\tif (index > 14) return index - 1\r\n\t\t\t\telse return index\r\n\t\t\t} else {\r\n\t\t\t\treturn index + 1\r\n\t\t\t}\r\n\t\t},\r\n\t\tasync getCanvasResourses(accessToken, code, assignmentId) {\r\n\t\t\tif (assignmentId == null) { assignmentId = this.getUrlParameter('assignmentId') }\r\n\t\t\tthis.assignmentToMatch = this.assignments.find(a => a.Id == assignmentId)\r\n\t\t\tconst canvasResources = await canvasService.getCanvasResourses(this.username, accessToken, code, this.orgCode, this.termCode, this.classCode, assignmentId)\r\n\t\t\tif (canvasResources != null) {\r\n\t\t\t\tif (canvasResources.assignmentGroups && canvasResources.assignmentGroups.length > 0) {\r\n\t\t\t\t\tthis.canvasCourseId = canvasResources.courseId\r\n\t\t\t\t\tthis.canvasAssignmentGroups = canvasResources.assignmentGroups\r\n\r\n\t\t\t\t\tthis.activeNames = this.canvasAssignmentGroups.map(item => item.id)\r\n\t\t\t\t\tconst that = this\r\n\t\t\t\t\tfor (var item of canvasResources.assignmentGroups) {\r\n\t\t\t\t\t\tconst test = item.assignments.find(a => a.isMatched == true)\r\n\t\t\t\t\t\tconsole.log(test)\r\n\t\t\t\t\t\tif (test) {\r\n\t\t\t\t\t\t\tthat.selectedCanvasAssignment = test\r\n\t\t\t\t\t\t\tconsole.log(that.selectedCanvasAssignment)\r\n\t\t\t\t\t\t\tbreak\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\tthis.canvasDialogVisible = true\r\n\t\t\t\t} else {\r\n\t\t\t\t\tNotification.error({\r\n\t\t\t\t\t\tduration: 6000,\r\n\t\t\t\t\t\ttitle: 'Error',\r\n\t\t\t\t\t\tmessage: 'Cannot retrieve Canvas data'\r\n\t\t\t\t\t})\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tNotification.error({\r\n\t\t\t\t\tduration: 6000,\r\n\t\t\t\t\ttitle: 'Error',\r\n\t\t\t\t\tmessage: 'Cannot retrieve Canvas data'\r\n\t\t\t\t})\r\n\t\t\t}\r\n\t\t},\r\n\t\tviewCanvasAssignment(url) {\r\n\t\t\t window.open(url, '_blank')\r\n\t\t},\r\n\t\tasync submitCanvasMatch() {\r\n\t\t\tconst canvasAssignmentMatch = {\r\n\t\t\t\tInstructorId: this.username,\r\n\t\t\t\tAssignmentId: this.assignmentToMatch.Id,\r\n\t\t\t\tCanvasAssignmentId: this.selectedCanvasAssignment.id,\r\n\t\t\t\tCanvasAssignmentName: this.selectedCanvasAssignment.name,\r\n\t\t\t\tHtmlUrl: this.selectedCanvasAssignment.html_url,\r\n\t\t\t\tCanvasCourseId: this.canvasCourseId\r\n\t\t\t}\r\n\t\t\tcanvasService.createCanvasAssignmentMatch(canvasAssignmentMatch)\r\n\t\t\t\t.then(result => {\r\n\t\t\t\t\tNotification.success({\r\n\t\t\t\t\t\tduration: 6000,\r\n\t\t\t\t\t\ttitle: 'Success',\r\n\t\t\t\t\t\tmessage: 'Successfully synced the selected Canvas assignment with ' + this.assignmentToMatch.AssignmentName\r\n\t\t\t\t\t})\r\n\t\t\t\t\t// Update USF Writes assignment to display Canvas icon\r\n\t\t\t\t\tconst index = this.assignments.findIndex(a => a.Id == this.assignmentToMatch.Id)\r\n\t\t\t\t\tthis.assignments[index].UseCanvasIntegration = true\r\n\t\t\t\t\tassignmentService.updateAssignment(this.assignments[index])\r\n\t\t\t\t\t\t.then(assignment => {\r\n\t\t\t\t\t\t\tthis.canvasDialogVisible = false\r\n\t\t\t\t\t\t}).catch(error => {\r\n\t\t\t\t\t\t\tconsole.log(error)\r\n\t\t\t\t\t\t\tNotification.error({\r\n\t\t\t\t\t\t\t\tduration: 6000,\r\n\t\t\t\t\t\t\t\ttitle: 'Error',\r\n\t\t\t\t\t\t\t\tmessage: 'The project were not synced successfully.'\r\n\t\t\t\t\t\t\t})\r\n\t\t\t\t\t\t})\r\n\t\t\t\t}).catch(error => {\r\n\t\t\t\t\tconsole.log(error)\r\n\t\t\t\t\tNotification.error({\r\n\t\t\t\t\t\tduration: 6000,\r\n\t\t\t\t\t\ttitle: 'Error',\r\n\t\t\t\t\t\tmessage: 'Cannot sync the selected assiment with ' + this.assignmentToMatch.AssignmentName\r\n\t\t\t\t\t})\r\n\t\t\t\t})\r\n\t\t},\r\n\t\tgetUrlParameter(sParam) {\r\n\t\t\tconst sPageURL = decodeURIComponent(window.location.search.substring(1))\r\n\r\n\t\t\tconst sURLVariables = sPageURL.split('&')\r\n\r\n\t\t\tlet sParameterName\r\n\r\n\t\t\tlet i\r\n\r\n\t\t\tfor (i = 0; i < sURLVariables.length; i++) {\r\n\t\t\t\tsParameterName = sURLVariables[i].split('=')\r\n\r\n\t\t\t\tif (sParameterName[0] === sParam) {\r\n\t\t\t\t\treturn sParameterName[1] === undefined ? true : sParameterName[1]\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Get lists of all active rubric available for this instructor.\r\n\t\tasync getRubricList() {\r\n\t\t\tthis.rubricList = await rubricService.getRubricList(this.orgCode, this.username)\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Looping through each item in a collection and performing an action asynchronously.\r\n\t\t// @arg The collections and a callback function.\r\n\t\tasync asyncForEach(array, callback) {\r\n\t\t\tfor (let index = 0; index < array.length; index++) {\r\n\t\t\t\tawait callback(array[index], index, array)\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\tasync getPeerReviewSubmissionStatus() {\r\n\t\t\tthis.peerReviewStatus = await reviewService.getPeerReviewSubmissionStatus(this.termCode, this.orgCode, this.classCode, this.username)\r\n\t\t\tconsole.log(this.peerReviewStatus)\r\n\t\t},\r\n\r\n\t\tasync getSelfReviewSubmissionStatus() {\r\n\t\t\tthis.selfReviewStatus = await reviewService.getSelfReviewSubmissionStatus(this.termCode, this.orgCode, this.classCode, this.username)\r\n\t\t},\r\n\r\n\t\tasync getAppraisalSubmissionStatus() {\r\n\t\t\tthis.appraisalStatus = await reviewService.getAppraisalSubmissionStatus(this.termCode, this.orgCode, this.classCode, this.username)\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Get all student submission statuses.\r\n\t\tasync getStudentSubmissionStatus() {\r\n\t\t\tconst status = await submissionService.getStudentSubmissionsStatus(this.termCode, this.orgCode,\r\n\t\t\t\tthis.classCode, this.username)\r\n\t\t\tlet teamId = 0\r\n\t\t\tconst statusList = []\r\n\t\t\tawait this.asyncForEach(this.assignments, async assignment => {\r\n\t\t\t\tlet assignmentStatus\r\n\t\t\t\tlet noSubmission = true\r\n\t\t\t\tif (assignment.IsGroupAssignment) {\r\n\t\t\t\t\tconst thisTeamAssignment = await teamFormationService.getgroupProjectTeamAssignment(this.termCode,\r\n\t\t\t\t\t\tthis.orgCode, this.classCode, this.username, assignment.Id)\r\n\t\t\t\t\tif (thisTeamAssignment) {\r\n\t\t\t\t\t\tteamId = thisTeamAssignment.TeamId\r\n\t\t\t\t\t\tconst groupUpload = await submissionService.getStudentUpload(this.termCode, this.orgCode, this.classCode,\r\n\t\t\t\t\t\t\tteamId, assignment.Id)\r\n\t\t\t\t\t\tif (groupUpload && groupUpload.length > 0) {\r\n\t\t\t\t\t\t\tnoSubmission = false\r\n\r\n\t\t\t\t\t\t\t// check for feedback\r\n\t\t\t\t\t\t\tconst reviewers = await reviewService.getReviewers(this.termCode, this.orgCode, this.classCode,\r\n\t\t\t\t\t\t\t\tteamId, assignment.Id)\r\n\t\t\t\t\t\t\tconst reviewersCount = reviewers ? reviewers.length : 0\r\n\t\t\t\t\t\t\t// add assignment status\r\n\t\t\t\t\t\t\tassignmentStatus = {\r\n\t\t\t\t\t\t\t\tAssignmentId: assignment.Id,\r\n\t\t\t\t\t\t\t\tStatus: reviewersCount > 0 ? 'Feedback Available' : 'Submitted',\r\n\t\t\t\t\t\t\t\tUploadedDate: groupUpload[0].LastActivityDate,\r\n\t\t\t\t\t\t\t\tDocId: groupUpload[0].DocId,\r\n\t\t\t\t\t\t\t\tReviewCount: reviewersCount,\r\n\t\t\t\t\t\t\t\tGroupId: teamId\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t} else {\r\n\t\t\t\t\tif (status && status.length > 0) {\r\n\t\t\t\t\t\tconst thisStatus = status.filter(el => {\r\n\t\t\t\t\t\t\treturn el.AssignmentId == assignment.Id\r\n\t\t\t\t\t\t})\r\n\r\n\t\t\t\t\t\tif (thisStatus && thisStatus.length > 0) {\r\n\t\t\t\t\t\t\tnoSubmission = false\r\n\t\t\t\t\t\t\tassignmentStatus = {\r\n\t\t\t\t\t\t\t\tAssignmentId: assignment.Id,\r\n\t\t\t\t\t\t\t\tStatus: thisStatus[0].SubmissionStatus,\r\n\t\t\t\t\t\t\t\tUploadedDate: thisStatus[0].LastSubmission,\r\n\t\t\t\t\t\t\t\tDocId: thisStatus[0].DocId,\r\n\t\t\t\t\t\t\t\tReviewCount: thisStatus[0].ReviewCount,\r\n\t\t\t\t\t\t\t\tGroupId: teamId\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\tif (noSubmission) {\r\n\t\t\t\t\tassignmentStatus = {\r\n\t\t\t\t\t\tAssignmentId: assignment.Id,\r\n\t\t\t\t\t\tStatus: 'No Submission',\r\n\t\t\t\t\t\tUploadedDate: null,\r\n\t\t\t\t\t\tDocId: null,\r\n\t\t\t\t\t\tReviewCount: 0,\r\n\t\t\t\t\t\tGroupId: teamId\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\tstatusList.push(assignmentStatus)\r\n\t\t\t})\r\n\t\t\tthis.submissionStatus = statusList\r\n\t\t\tconsole.log(this.submissionStatus)\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Open survey dialog when student upload first and last paper.\r\n\t\t// @arg The assignment id and its key in the collection.\r\n\t\tasync openDialog(assignmentId, key) {\r\n\t\t\tlet noSurvey = true\r\n\t\t\tthis.submitSurveyActive = false\r\n\t\t\t// If it is the last assignment\r\n\t\t\tif (key == this.assignments.length - 1) {\r\n\t\t\t\t// Display the Self Efficacy Survey for PTC courses only\r\n\t\t\t\tconst thisCourse = this.$store.state.enrollment.currentCourse\r\n\t\t\t\tif (!thisCourse.ClassDescription.includes('ENC 1101') && !thisCourse.ClassDescription.includes('ENC 1102')) {\r\n\t\t\t\t\tthis.surveyId = 1\r\n\t\t\t\t\tthis.surveyWidth = '940px'\r\n\t\t\t\t\tthis.surveyTitle = 'Self Efficacy Survey (Optional)'\r\n\t\t\t\t\tthis.repsonseType = 'last'\r\n\t\t\t\t\t// check survey response\r\n\t\t\t\t\tconst response = await surveyService.getUserSurveyResponse(this.surveyId, this.termCode, this.classCode, this.username, this.repsonseType)\r\n\t\t\t\t\tif (!response) {\r\n\t\t\t\t\t\t// get survey questions\r\n\t\t\t\t\t\tthis.selectedAssignment = this.assignments[key]\r\n\t\t\t\t\t\tthis.selectedKey = key\r\n\t\t\t\t\t\t// this.surveyDialogVisible = true\r\n\t\t\t\t\t\tthis.surveyResponses = []\r\n\t\t\t\t\t\tnoSurvey = false\r\n\t\t\t\t\t\tconst questions = await surveyService.getSurveyQuestions(this.surveyId)\r\n\t\t\t\t\t\tif (questions && questions.length > 0) {\r\n\t\t\t\t\t\t\tconst thisQuestions = []\r\n\t\t\t\t\t\t\tconst thisResponses = []\r\n\t\t\t\t\t\t\tawait this.asyncForEach(questions, async question => {\r\n\t\t\t\t\t\t\t\tconst answers = await surveyService.getSurveyAnswers(this.surveyId, question.Id)\r\n\t\t\t\t\t\t\t\tconst thisQuestion = {\r\n\t\t\t\t\t\t\t\t\tId: question.Id,\r\n\t\t\t\t\t\t\t\t\tContent: question.Content,\r\n\t\t\t\t\t\t\t\t\tIsOptinal: question.IsOptional,\r\n\t\t\t\t\t\t\t\t\tType: question.Type,\r\n\t\t\t\t\t\t\t\t\tAnswers: answers\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\tlet answerId = 0\r\n\t\t\t\t\t\t\t\tif (answers && answers.length > 0) {\r\n\t\t\t\t\t\t\t\t\tanswerId = answers[0].Id\r\n\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t\tconst response = {\r\n\t\t\t\t\t\t\t\t\tQuestionId: question.Id,\r\n\t\t\t\t\t\t\t\t\tAnswerId: question.Type == 'Open Ended' ? answerId : 0,\r\n\t\t\t\t\t\t\t\t\tResponseDetail: null,\r\n\t\t\t\t\t\t\t\t\tQuestionType: question.Type\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\tthisQuestions.push(thisQuestion)\r\n\t\t\t\t\t\t\t\tthisResponses.push(response)\r\n\t\t\t\t\t\t\t})\r\n\t\t\t\t\t\t\tthis.questions = thisQuestions\r\n\t\t\t\t\t\t\tthis.surveyResponses = thisResponses\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\t// Display the Preferences for Course Delivery in the Spring for 1101 and PTC\r\n\t\t\t\tconst thisCourse = this.$store.state.enrollment.currentCourse\r\n\t\t\t\tconst courseName = thisCourse.ClassDescription\r\n\t\t\t\tconst thisAssignment = this.assignments[key]\r\n\t\t\t\t// if (this.termCode == '202008') {\r\n\t\t\t\t// \t// Assignment Name includes Literacy Narrative Self Review or Display Order = 0 for ENC 1101 courses\r\n\t\t\t\t// \tif ((courseName.includes('ENC 1101') && (thisAssignment.AssignmentName.includes('Literacy Narrative Self Review') || thisAssignment.DisplayOrder == 0)) ||\r\n\t\t\t\t// \t\t// Assignment Name includes DRAFT--Information Design or Display Order = 3 for PTC courses\r\n\t\t\t\t// \t\t(!courseName.includes('ENC 1101') && (thisAssignment.AssignmentName.includes('DRAFT--Information Design') || thisAssignment.DisplayOrder == 3))) {\r\n\t\t\t\t// \t\tthis.surveyId = 3\r\n\t\t\t\t// \t\tthis.surveyTitle = 'Preferences for Course Delivery in the Spring'\r\n\t\t\t\t// \t\tthis.surveyWidth = '650px'\r\n\t\t\t\t// \t\tthis.repsonseType = 'one'\r\n\t\t\t\t// \t\tconst response = await surveyService.getUserSurveyResponse(this.surveyId, this.termCode, this.classCode, this.username, this.repsonseType)\r\n\t\t\t\t// \t\tif (!response) {\r\n\t\t\t\t// \t\t\t// get survey questions\r\n\t\t\t\t// \t\t\tthis.selectedAssignment = this.assignments[key]\r\n\t\t\t\t// \t\t\tthis.selectedKey = key\r\n\t\t\t\t// \t\t\t// this.surveyDialogVisible = true\r\n\t\t\t\t// \t\t\tthis.surveyResponses = []\r\n\t\t\t\t// \t\t\tnoSurvey = false\r\n\t\t\t\t// \t\t\tconst questions = await surveyService.getSurveyQuestions(this.surveyId)\r\n\t\t\t\t// \t\t\tif (questions && questions.length > 0) {\r\n\t\t\t\t// \t\t\t\tconst thisQuestions = []\r\n\t\t\t\t// \t\t\t\tconst thisResponses = []\r\n\t\t\t\t// \t\t\t\tawait this.asyncForEach(questions, async question => {\r\n\t\t\t\t// \t\t\t\t\tconst answers = await surveyService.getSurveyAnswers(this.surveyId, question.Id)\r\n\t\t\t\t// \t\t\t\t\tconst thisQuestion = {\r\n\t\t\t\t// \t\t\t\t\t\tId: question.Id,\r\n\t\t\t\t// \t\t\t\t\t\tContent: question.Content,\r\n\t\t\t\t// \t\t\t\t\t\tIsOptinal: question.IsOptional,\r\n\t\t\t\t// \t\t\t\t\t\tType: question.Type,\r\n\t\t\t\t// \t\t\t\t\t\tAnswers: answers\r\n\t\t\t\t// \t\t\t\t\t}\r\n\t\t\t\t// \t\t\t\t\tlet answerId = 0\r\n\t\t\t\t// \t\t\t\t\tif (answers && answers.length > 0) {\r\n\t\t\t\t// \t\t\t\t\t\tanswerId = answers[0].Id\r\n\t\t\t\t// \t\t\t\t\t}\r\n\r\n\t\t\t\t// \t\t\t\t\tconst response = {\r\n\t\t\t\t// \t\t\t\t\t\tQuestionId: question.Id,\r\n\t\t\t\t// \t\t\t\t\t\tAnswerId: question.Type == 'Open Ended' ? answerId : 0,\r\n\t\t\t\t// \t\t\t\t\t\tResponseDetail: null,\r\n\t\t\t\t// \t\t\t\t\t\tQuestionType: question.Type\r\n\t\t\t\t// \t\t\t\t\t}\r\n\t\t\t\t// \t\t\t\t\tthisQuestions.push(thisQuestion)\r\n\t\t\t\t// \t\t\t\t\tthisResponses.push(response)\r\n\t\t\t\t// \t\t\t\t})\r\n\t\t\t\t// \t\t\t\tthis.questions = thisQuestions\r\n\t\t\t\t// \t\t\t\tthis.surveyResponses = thisResponses\r\n\t\t\t\t// \t\t\t}\r\n\t\t\t\t// \t\t}\r\n\t\t\t\t// \t}\r\n\t\t\t\t// } else\r\n\t\t\t\tif (this.termCode == '202108' || this.termCode == '202201') { // IX Remove or update each term?\r\n\t\t\t\t\t// if ((courseName == 'ENC 1101 SEC 009' || courseName == 'ENC 1101 SEC 053' || courseName == 'ENC 1101 SEC 056') &&\r\n\t\t\t\t\t// \t\tthisAssignment.AssignmentName.includes('Expository Overview Self Review')) {\r\n\t\t\t\t\t// \tthis.surveyId = 4\r\n\t\t\t\t\t// \tthis.surveyTitle = 'Student Contract Grading and Labor Perception Survey'\r\n\t\t\t\t\t// \tthis.surveyWidth = '940px'\r\n\t\t\t\t\t// \tthis.repsonseType = 'one'\r\n\t\t\t\t\t// \tconst response = await surveyService.getUserSurveyResponse(this.surveyId, this.termCode, this.classCode, this.username, this.repsonseType)\r\n\t\t\t\t\t// \tif (!response) {\r\n\t\t\t\t\t// \t\t// get survey questions\r\n\t\t\t\t\t// \t\tthis.selectedAssignment = this.assignments[key]\r\n\t\t\t\t\t// \t\tthis.selectedKey = key\r\n\t\t\t\t\t// \t\t// this.surveyDialogVisible = true\r\n\t\t\t\t\t// \t\tthis.surveyResponses = []\r\n\t\t\t\t\t// \t\tnoSurvey = false\r\n\t\t\t\t\t// \t\tconst allQuestions = await surveyService.getSurveyQuestions(this.surveyId)\r\n\t\t\t\t\t// \t\tif (allQuestions && allQuestions.length > 0) {\r\n\t\t\t\t\t// \t\t\tconst thisQuestions = []\r\n\t\t\t\t\t// \t\t\tconst thisResponses = []\r\n\t\t\t\t\t// \t\t\tthis.followupQuestion = allQuestions[0]\r\n\t\t\t\t\t// \t\t\t// Remove the follow up question from the list\r\n\t\t\t\t\t// \t\t\tallQuestions.shift()\r\n\t\t\t\t\t// \t\t\tawait this.asyncForEach(allQuestions, async question => {\r\n\t\t\t\t\t// \t\t\t\tif (question.Type != 'Heading') {\r\n\t\t\t\t\t// \t\t\t\t\tconst answers = await surveyService.getSurveyAnswers(this.surveyId, question.Id)\r\n\t\t\t\t\t// \t\t\t\t\tconst thisQuestion = {\r\n\t\t\t\t\t// \t\t\t\t\t\tId: question.Id,\r\n\t\t\t\t\t// \t\t\t\t\t\tContent: question.Content,\r\n\t\t\t\t\t// \t\t\t\t\t\tIsOptinal: question.IsOptional,\r\n\t\t\t\t\t// \t\t\t\t\t\tType: question.Type,\r\n\t\t\t\t\t// \t\t\t\t\t\tAnswers: answers\r\n\t\t\t\t\t// \t\t\t\t\t}\r\n\t\t\t\t\t// \t\t\t\t\tlet answerId = 0\r\n\t\t\t\t\t// \t\t\t\t\tif (answers && answers.length > 0) {\r\n\t\t\t\t\t// \t\t\t\t\t\tanswerId = answers[0].Id\r\n\t\t\t\t\t// \t\t\t\t\t}\r\n\r\n\t\t\t\t\t// \t\t\t\t\tconst response = {\r\n\t\t\t\t\t// \t\t\t\t\t\tQuestionId: question.Id,\r\n\t\t\t\t\t// \t\t\t\t\t\tAnswerId: question.Type == 'Open Ended' ? answerId : 0,\r\n\t\t\t\t\t// \t\t\t\t\t\tResponseDetail: null,\r\n\t\t\t\t\t// \t\t\t\t\t\tQuestionType: question.Type\r\n\t\t\t\t\t// \t\t\t\t\t}\r\n\t\t\t\t\t// \t\t\t\t\tthisQuestions.push(thisQuestion)\r\n\t\t\t\t\t// \t\t\t\t\tthisResponses.push(response)\r\n\t\t\t\t\t// \t\t\t\t} else {\r\n\t\t\t\t\t// \t\t\t\t\tconst thisQuestion = {\r\n\t\t\t\t\t// \t\t\t\t\t\tId: question.Id,\r\n\t\t\t\t\t// \t\t\t\t\t\tContent: question.Content,\r\n\t\t\t\t\t// \t\t\t\t\t\tIsOptinal: question.IsOptional,\r\n\t\t\t\t\t// \t\t\t\t\t\tType: question.Type\r\n\t\t\t\t\t// \t\t\t\t\t}\r\n\t\t\t\t\t// \t\t\t\t\tthisQuestions.push(thisQuestion)\r\n\t\t\t\t\t// \t\t\t\t\tthisResponses.push(null)\r\n\t\t\t\t\t// \t\t\t\t}\r\n\t\t\t\t\t// \t\t\t})\r\n\t\t\t\t\t// \t\t\tthis.questions = thisQuestions\r\n\t\t\t\t\t// \t\t\tthis.surveyResponses = thisResponses\r\n\t\t\t\t\t// \t\t}\r\n\t\t\t\t\t// \t}\r\n\t\t\t\t\t// } else\r\n\r\n\t\t\t\t\tif (courseName.includes('ENC 2210') && thisAssignment.AssignmentName.includes('FINAL--Document Series')) {\r\n\t\t\t\t\t\t// Display survey id = 5\r\n\t\t\t\t\t\tthis.surveyId = 5\r\n\t\t\t\t\t\tthis.surveyTitle = 'ENC 2210 Document Series Scenario Survey'\r\n\t\t\t\t\t\tthis.surveyWidth = '650px'\r\n\t\t\t\t\t\tthis.repsonseType = 'one'\r\n\t\t\t\t\t\tconst response = await surveyService.getUserSurveyResponse(this.surveyId, this.termCode, this.classCode, this.username, this.repsonseType)\r\n\t\t\t\t\t\tif (!response) {\r\n\t\t\t\t\t\t\t// get survey questions\r\n\t\t\t\t\t\t\tthis.selectedAssignment = this.assignments[key]\r\n\t\t\t\t\t\t\tthis.selectedKey = key\r\n\t\t\t\t\t\t\tthis.surveyResponses = []\r\n\t\t\t\t\t\t\tnoSurvey = false\r\n\t\t\t\t\t\t\tconst allQuestions = await surveyService.getSurveyQuestions(this.surveyId)\r\n\t\t\t\t\t\t\tif (allQuestions && allQuestions.length > 0) {\r\n\t\t\t\t\t\t\t\tconst thisQuestions = []\r\n\t\t\t\t\t\t\t\tconst thisResponses = []\r\n\t\t\t\t\t\t\t\tawait this.asyncForEach(allQuestions, async question => {\r\n\t\t\t\t\t\t\t\t\tconst answers = await surveyService.getSurveyAnswers(this.surveyId, question.Id)\r\n\t\t\t\t\t\t\t\t\tconst thisQuestion = {\r\n\t\t\t\t\t\t\t\t\t\tId: question.Id,\r\n\t\t\t\t\t\t\t\t\t\tContent: question.Content,\r\n\t\t\t\t\t\t\t\t\t\tIsOptinal: question.IsOptional,\r\n\t\t\t\t\t\t\t\t\t\tType: question.Type,\r\n\t\t\t\t\t\t\t\t\t\tAnswers: answers\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\tlet answerId = 0\r\n\t\t\t\t\t\t\t\t\tif (answers && answers.length > 0) {\r\n\t\t\t\t\t\t\t\t\t\tanswerId = answers[0].Id\r\n\t\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t\t\tconst response = {\r\n\t\t\t\t\t\t\t\t\t\tQuestionId: question.Id,\r\n\t\t\t\t\t\t\t\t\t\tAnswerId: question.Type == 'Open Ended' ? answerId : 0,\r\n\t\t\t\t\t\t\t\t\t\tResponseDetail: null,\r\n\t\t\t\t\t\t\t\t\t\tQuestionType: question.Type\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\tthisQuestions.push(thisQuestion)\r\n\t\t\t\t\t\t\t\t\tthisResponses.push(response)\r\n\t\t\t\t\t\t\t\t})\r\n\t\t\t\t\t\t\t\tthis.questions = thisQuestions\r\n\t\t\t\t\t\t\t\tthis.surveyResponses = thisResponses\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t} else if (courseName.includes('ENC 3246') && thisAssignment.AssignmentName.includes('FINAL--Document Series')) {\r\n\t\t\t\t\t\t// Display survey id = 6\r\n\t\t\t\t\t\tthis.surveyId = 6\r\n\t\t\t\t\t\tthis.surveyTitle = 'ENC 3246 Document Series Scenario Survey'\r\n\t\t\t\t\t\tthis.surveyWidth = '650px'\r\n\t\t\t\t\t\tthis.repsonseType = 'one'\r\n\t\t\t\t\t\tconst response = await surveyService.getUserSurveyResponse(this.surveyId, this.termCode, this.classCode, this.username, this.repsonseType)\r\n\t\t\t\t\t\tif (!response) {\r\n\t\t\t\t\t\t\t// get survey questions\r\n\t\t\t\t\t\t\tthis.selectedAssignment = this.assignments[key]\r\n\t\t\t\t\t\t\tthis.selectedKey = key\r\n\t\t\t\t\t\t\tthis.surveyResponses = []\r\n\t\t\t\t\t\t\tnoSurvey = false\r\n\t\t\t\t\t\t\tconst allQuestions = await surveyService.getSurveyQuestions(this.surveyId)\r\n\t\t\t\t\t\t\tif (allQuestions && allQuestions.length > 0) {\r\n\t\t\t\t\t\t\t\tconst thisQuestions = []\r\n\t\t\t\t\t\t\t\tconst thisResponses = []\r\n\t\t\t\t\t\t\t\tawait this.asyncForEach(allQuestions, async question => {\r\n\t\t\t\t\t\t\t\t\tconst answers = await surveyService.getSurveyAnswers(this.surveyId, question.Id)\r\n\t\t\t\t\t\t\t\t\tconst thisQuestion = {\r\n\t\t\t\t\t\t\t\t\t\tId: question.Id,\r\n\t\t\t\t\t\t\t\t\t\tContent: question.Content,\r\n\t\t\t\t\t\t\t\t\t\tIsOptinal: question.IsOptional,\r\n\t\t\t\t\t\t\t\t\t\tType: question.Type,\r\n\t\t\t\t\t\t\t\t\t\tAnswers: answers\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\tlet answerId = 0\r\n\t\t\t\t\t\t\t\t\tif (answers && answers.length > 0) {\r\n\t\t\t\t\t\t\t\t\t\tanswerId = answers[0].Id\r\n\t\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t\t\tconst response = {\r\n\t\t\t\t\t\t\t\t\t\tQuestionId: question.Id,\r\n\t\t\t\t\t\t\t\t\t\tAnswerId: question.Type == 'Open Ended' ? answerId : 0,\r\n\t\t\t\t\t\t\t\t\t\tResponseDetail: null,\r\n\t\t\t\t\t\t\t\t\t\tQuestionType: question.Type\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\tthisQuestions.push(thisQuestion)\r\n\t\t\t\t\t\t\t\t\tthisResponses.push(response)\r\n\t\t\t\t\t\t\t\t})\r\n\t\t\t\t\t\t\t\tthis.questions = thisQuestions\r\n\t\t\t\t\t\t\t\tthis.surveyResponses = thisResponses\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t} else if (courseName.includes('ENC 3250') && thisAssignment.AssignmentName.includes('FINAL--Document Series')) {\r\n\t\t\t\t\t\t// Display survey id = 7\r\n\t\t\t\t\t\tthis.surveyId = 7\r\n\t\t\t\t\t\tthis.surveyTitle = 'ENC 3250 Document Series Scenario Survey'\r\n\t\t\t\t\t\tthis.surveyWidth = '650px'\r\n\t\t\t\t\t\tthis.repsonseType = 'one'\r\n\t\t\t\t\t\tconst response = await surveyService.getUserSurveyResponse(this.surveyId, this.termCode, this.classCode, this.username, this.repsonseType)\r\n\t\t\t\t\t\tif (!response) {\r\n\t\t\t\t\t\t\t// get survey questions\r\n\t\t\t\t\t\t\tthis.selectedAssignment = this.assignments[key]\r\n\t\t\t\t\t\t\tthis.selectedKey = key\r\n\t\t\t\t\t\t\tthis.surveyResponses = []\r\n\t\t\t\t\t\t\tnoSurvey = false\r\n\t\t\t\t\t\t\tconst allQuestions = await surveyService.getSurveyQuestions(this.surveyId)\r\n\t\t\t\t\t\t\tif (allQuestions && allQuestions.length > 0) {\r\n\t\t\t\t\t\t\t\tconst thisQuestions = []\r\n\t\t\t\t\t\t\t\tconst thisResponses = []\r\n\t\t\t\t\t\t\t\tawait this.asyncForEach(allQuestions, async question => {\r\n\t\t\t\t\t\t\t\t\tconst answers = await surveyService.getSurveyAnswers(this.surveyId, question.Id)\r\n\t\t\t\t\t\t\t\t\tconst thisQuestion = {\r\n\t\t\t\t\t\t\t\t\t\tId: question.Id,\r\n\t\t\t\t\t\t\t\t\t\tContent: question.Content,\r\n\t\t\t\t\t\t\t\t\t\tIsOptinal: question.IsOptional,\r\n\t\t\t\t\t\t\t\t\t\tType: question.Type,\r\n\t\t\t\t\t\t\t\t\t\tAnswers: answers\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\tlet answerId = 0\r\n\t\t\t\t\t\t\t\t\tif (answers && answers.length > 0) {\r\n\t\t\t\t\t\t\t\t\t\tanswerId = answers[0].Id\r\n\t\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t\t\tconst response = {\r\n\t\t\t\t\t\t\t\t\t\tQuestionId: question.Id,\r\n\t\t\t\t\t\t\t\t\t\tAnswerId: question.Type == 'Open Ended' ? answerId : 0,\r\n\t\t\t\t\t\t\t\t\t\tResponseDetail: null,\r\n\t\t\t\t\t\t\t\t\t\tQuestionType: question.Type\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\tthisQuestions.push(thisQuestion)\r\n\t\t\t\t\t\t\t\t\tthisResponses.push(response)\r\n\t\t\t\t\t\t\t\t})\r\n\t\t\t\t\t\t\t\tthis.questions = thisQuestions\r\n\t\t\t\t\t\t\t\tthis.surveyResponses = thisResponses\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tif (noSurvey) { this.openUploadDialog(assignmentId, key) } else {\r\n\t\t\t\tthis.surveyDialogVisible = true\r\n\t\t\t\tif (this.surveyId == 4) {\r\n\t\t\t\t\tconst surveyDialog = document.getElementById('survey-dialog').getElementsByClassName('el-dialog')[0]\r\n\t\t\t\t\tsurveyDialog.style = 'margin-top: 10vh; width: 950px;height: 80vh;overflow: auto;'\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Submit a new survey response.\r\n\t\tasync submitSurvey() {\r\n\t\t\tif (this.surveyResponses.length > 0) {\r\n\t\t\t\t// console.log(this.surveyResponses)\r\n\t\t\t\tconst that = this\r\n\t\t\t\tawait this.asyncForEach(this.surveyResponses, async response => {\r\n\t\t\t\t\tif (response != null) {\r\n\t\t\t\t\t\tconst thisResponse = {\r\n\t\t\t\t\t\t\tUserId: that.username,\r\n\t\t\t\t\t\t\tTermCode: that.termCode,\r\n\t\t\t\t\t\t\tClassCode: that.classCode,\r\n\t\t\t\t\t\t\tSurveyId: that.surveyId,\r\n\t\t\t\t\t\t\tQuestionId: response.QuestionId,\r\n\t\t\t\t\t\t\tAnswerId: response.AnswerId,\r\n\t\t\t\t\t\t\tResponseDetail: response.ResponseDetail,\r\n\t\t\t\t\t\t\tResponseType: that.repsonseType,\r\n\t\t\t\t\t\t\tLastActivityDate: that.getDateStr(new Date())\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tawait surveyService.addNewResponse(thisResponse)\r\n\t\t\t\t\t}\r\n\t\t\t\t})\r\n\t\t\t}\r\n\t\t\tNotification.success({\r\n\t\t\t\tduration: 6000,\r\n\t\t\t\ttitle: 'Success',\r\n\t\t\t\tmessage: 'Your survey response was submitted successfully.'\r\n\t\t\t})\r\n\t\t\tthis.surveyAnswered = true\r\n\t\t\tthis.surveyDialogVisible = false\r\n\t\t\tthis.openUploadDialog(this.selectedAssignment.Id, this.selectedKey)\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Cancel a survey.\r\n\t\tasync cancelSurvey() {\r\n\t\t\t// Check if this survey is mandatory (5,6,7)\r\n\t\t\tif (this.surveyId != 5 && this.surveyId != 6 && this.surveyId != 7) {\r\n\t\t\t\tif (!this.surveyAnswered) {\r\n\t\t\t\t\tconst thisResponse = {\r\n\t\t\t\t\t\tUserId: this.username,\r\n\t\t\t\t\t\tTermCode: this.termCode,\r\n\t\t\t\t\t\tClassCode: this.classCode,\r\n\t\t\t\t\t\tSurveyId: this.surveyId,\r\n\t\t\t\t\t\tQuestionId: 0,\r\n\t\t\t\t\t\tAnswerId: 0,\r\n\t\t\t\t\t\tResponseDetail: 'No Response',\r\n\t\t\t\t\t\tResponseType: this.repsonseType,\r\n\t\t\t\t\t\tLastActivityDate: this.getDateStr(new Date())\r\n\t\t\t\t\t}\r\n\t\t\t\t\tawait surveyService.addNewResponse(thisResponse)\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.surveyDialogVisible = false\r\n\t\t\t\tthis.openUploadDialog(this.selectedAssignment.Id, this.selectedKey)\r\n\t\t\t} else {\r\n\t\t\t\tthis.surveyDialogVisible = false\r\n\t\t\t}\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Open project upload dialog\r\n\t\t// @arg The assignment id and its key in the collection.\r\n\t\tasync openUploadDialog(assignmentId, key) {\r\n\t\t\t// Check if the assignment is synced with a canvas assignment\r\n\t\t\tconst match = await canvasService.getCanvasAssignmentMatch(assignmentId)\r\n\t\t\tif (match != null) {\r\n\t\t\t\tthis.canvasAssignmentName = match.CanvasAssignmentName\r\n\t\t\t\tthis.htmlUrl = match.HtmlUrl\r\n\t\t\t\t// Check if there is a canvas token already\r\n\t\t\t\tconst canvasToken = await canvasService.getTokenByUserId(this.username)\r\n\t\t\t\tif (canvasToken != null) {\r\n\t\t\t\t\tthis.canvasToken = canvasToken.AccessToken\r\n\t\t\t\t\tthis.canvasUserId = canvasToken.CanvasId\r\n\t\t\t\t} else if (this.canvasCode == null) {\r\n\t\t\t\t\tthis.selectedAssignmentId = assignmentId\r\n\t\t\t\t\tthis.redirectDialogVisible = true\r\n\t\t\t\t\treturn\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif (this.$refs.upload) { this.$refs.upload.clearFiles() }\r\n\t\t\tthis.file = null\r\n\t\t\tthis.selectedAssignment = this.assignments[key]\r\n\t\t\tthis.selectedKey = key\r\n\t\t\tthis.isSubmitting = false\r\n\t\t\tif (this.selectedAssignment.IsGroupAssignment) {\r\n\t\t\t\tconst thisTeamAssignment = await teamFormationService.getgroupProjectTeamAssignment(this.termCode,\r\n\t\t\t\t\tthis.orgCode, this.classCode, this.username, assignmentId)\r\n\t\t\t\tif (thisTeamAssignment) {\r\n\t\t\t\t\tthis.uploadDialogVisible = true\r\n\t\t\t\t} else {\r\n\t\t\t\t\tNotification.info({\r\n\t\t\t\t\t\tduration: 6000,\r\n\t\t\t\t\t\ttitle: 'Info',\r\n\t\t\t\t\t\tmessage: 'You cannot upload paper until you are assigned into a group for this assignment.'\r\n\t\t\t\t\t})\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tthis.uploadDialogVisible = true\r\n\t\t\t}\r\n\t\t},\r\n\t\tcanvasLogin() {\r\n\t\t\tconst url = window.location.href\r\n\t\t\tconst arr = url.split('/')\r\n\t\t\tconst protocol = arr[0]\r\n\t\t\t// const protocol = process.env.NODE_ENV === 'production' ? 'https:' :'http:';\r\n\t\t\tconst host = process.env.NODE_ENV === 'production' ? window.location.host : 'localhost:8080'\r\n\r\n\t\t\tconst canvasKey = process.env.NODE_ENV === 'production' ? '130000000000679' : '130000000000815'\r\n\t\t\tconst redirectUri = `${protocol}//${host}`\r\n\t\t\twindow.location.href = 'https://usflearn.instructure.com/login/oauth2/auth?client_id=' + canvasKey + '&response_type=code&redirect_uri=' + redirectUri + '/course/' + this.classCode + '/projects?assignmentId=' + this.selectedAssignmentId\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Submit a paper.\r\n\t\tasync submitPaper() {\r\n\t\t\tif (this.file && this.selectedAssignment) {\r\n\t\t\t\t// Adding confirmation box before submitting re-submission\r\n\t\t\t\t// this.isSubmitting = true\r\n\t\t\t\t// const thisStatus = this.submissionStatus.find(s => s.AssignmentId == this.selectedAssignment.Id)\r\n\t\t\t\t// let status = 'No Submission'\r\n\t\t\t\t// if (thisStatus) {\r\n\t\t\t\t// \tstatus = thisStatus.Status\r\n\t\t\t\t// }\r\n\r\n\t\t\t\t// if (status == 'Submitted' || status == 'Feedback Available') {\r\n\t\t\t\t// \tthis.$confirm('This will override your latest submission. Are you sure?', 'Warning', {\r\n\t\t\t\t// \t\tconfirmButtonText: 'OK',\r\n\t\t\t\t// \t\tcancelButtonText: 'Cancel',\r\n\t\t\t\t// \t\ttype: 'warning'\r\n\t\t\t\t// \t}).then(() => {\r\n\t\t\t\t// \t\tthis.uploadPaper()\r\n\t\t\t\t// \t\tthis.uploadDialogVisible = false\r\n\t\t\t\t// \t\tthis.canvasCode = null\r\n\t\t\t\t// \t}).catch(() => {\r\n\t\t\t\t// \t\tNotification.info({\r\n\t\t\t\t// \t\t\tduration: 6000,\r\n\t\t\t\t// \t\t\ttitle: 'Info',\r\n\t\t\t\t// \t\t\tmessage: 'Action has been cancelled.'\r\n\t\t\t\t// \t\t})\r\n\t\t\t\t// \t\tthis.uploadDialogVisible = false\r\n\t\t\t\t// \t})\r\n\t\t\t\t// } else {\r\n\t\t\t\t// \tthis.uploadPaper()\r\n\t\t\t\t// \tthis.uploadDialogVisible = false\r\n\t\t\t\t// \tthis.canvasCode = null\r\n\t\t\t\t// }\r\n\t\t \t\t// == End -- // Adding confirmation box before submitting re-submission\r\n\t\t\t\tthis.isSubmitting = true\r\n\t\t\t\tconst formData = new FormData()\r\n\t\t\t\tformData.append('data', this.file)\r\n\t\t\t\tformData.append('fileName', this.file.name)\r\n\t\t\t\tformData.append('studentId', this.username)\r\n\t\t\t\tformData.append('assignmentId', this.selectedAssignment.Id)\r\n\r\n\t\t\t\t// Check if this is a Canvas assignment\r\n\t\t\t\tif (this.canvasCode != null || this.canvasToken != null) {\r\n\t\t\t\t\tconst docId = await submissionService.submitPaper(formData)\r\n\t\t\t\t\tif (docId && docId > 0) {\r\n\t\t\t\t\t\tif (this.selectedAssignment.IsGroupAssignment) {\r\n\t\t\t\t\t\t// get team members\r\n\t\t\t\t\t\t\tconst thisTeamAssignment = await teamFormationService.getgroupProjectTeamAssignment(this.termCode,\r\n\t\t\t\t\t\t\t\tthis.orgCode, this.classCode, this.username, this.selectedAssignment.Id)\r\n\t\t\t\t\t\t\tif (thisTeamAssignment) {\r\n\t\t\t\t\t\t\t\tconst teamId = thisTeamAssignment.TeamId\r\n\t\t\t\t\t\t\t\tawait this.addNewSubmissionRecord(this.username, docId, teamId)\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t// upload for individual assignment\r\n\t\t\t\t\t\t\tawait this.addNewSubmissionRecord(this.username, docId)\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\tconst match = await canvasService.getCanvasAssignmentMatch(this.selectedAssignment.Id)\r\n\t\t\t\t\tif (match != null) {\r\n\t\t\t\t\t\tformData.append('canvasCode', this.canvasCode)\r\n\t\t\t\t\t\tformData.append('canvasToken', this.canvasToken)\r\n\t\t\t\t\t\tformData.append('canvasUserId', this.canvasUserId)\r\n\t\t\t\t\t\tformData.append('canvasAssignmentId', match.CanvasAssignmentId)\r\n\t\t\t\t\t\tformData.append('canvasCourseId', match.CanvasCourseId)\r\n\t\t\t\t\t\tconst responseCode = await submissionService.submitToCanvas(formData)\r\n\r\n\t\t\t\t\t\tif (responseCode == 0) {\r\n\t\t\t\t\t\t\tNotification.error({\r\n\t\t\t\t\t\t\t\tduration: 6000,\r\n\t\t\t\t\t\t\t\ttitle: 'Error',\r\n\t\t\t\t\t\t\t\tmessage: 'Your paper was not submitted to Canvas because you do not have access to this assignment in Canvas.'\r\n\t\t\t\t\t\t\t})\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\tNotification.success({\r\n\t\t\t\t\t\t\t\tduration: 6000,\r\n\t\t\t\t\t\t\t\ttitle: 'Success',\r\n\t\t\t\t\t\t\t\tmessage: 'Your paper was successfully submitted to Canvas.'\r\n\t\t\t\t\t\t\t})\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t} else {\r\n\t\t\t\t\tconst docId = await submissionService.submitPaper(formData)\r\n\t\t\t\t\tif (docId && docId > 0) {\r\n\t\t\t\t\t\tif (this.selectedAssignment.IsGroupAssignment) {\r\n\t\t\t\t\t\t// get team members\r\n\t\t\t\t\t\t\tconst thisTeamAssignment = await teamFormationService.getgroupProjectTeamAssignment(this.termCode,\r\n\t\t\t\t\t\t\t\tthis.orgCode, this.classCode, this.username, this.selectedAssignment.Id)\r\n\t\t\t\t\t\t\tif (thisTeamAssignment) {\r\n\t\t\t\t\t\t\t\tconst teamId = thisTeamAssignment.TeamId\r\n\t\t\t\t\t\t\t\tthis.addNewSubmissionRecord(this.username, docId, teamId)\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t// upload for individual assignment\r\n\t\t\t\t\t\t\tthis.addNewSubmissionRecord(this.username, docId)\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tthis.uploadDialogVisible = false\r\n\t\t\tthis.canvasCode = null\r\n\t\t},\r\n\t\tstdTimezoneOffset(date) {\r\n\t\t\tvar jan = new Date(date.getFullYear(), 0, 1)\r\n\t\t\tvar jul = new Date(date.getFullYear(), 6, 1)\r\n\t\t\treturn Math.max(jan.getTimezoneOffset(), jul.getTimezoneOffset())\r\n\t\t},\r\n\t\tisDstObserved(date) {\r\n\t\t\treturn date.getTimezoneOffset() < this.stdTimezoneOffset(date)\r\n\t\t},\r\n\t\tconvertToEST(clientDate) {\r\n\t\t\tlet offset = -5.0 // EST standard\r\n\t\t\t// Check for daylight saving\r\n\t\t\tif (this.isDstObserved(clientDate)) {\r\n\t\t\t\toffset = -4.0\r\n\t\t\t}\r\n\t\t\tconst utc = clientDate.getTime() + (clientDate.getTimezoneOffset() * 60000)\r\n\t\t\tconst serverDate = new Date(utc + (3600000 * offset))\r\n\t\t\t// return serverDate.toLocaleString()\r\n\t\t\treturn this.getDateStr(serverDate)\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Add a new submission record.\r\n\t\t// @arg The student id, the document id, and team id if it is a group project.\r\n\t\tasync addNewSubmissionRecord(studentId, docId, teamId) {\r\n\t\t\tconst newStudentUpload = {\r\n\t\t\t\t'DocId': docId,\r\n\t\t\t\t'OrgCode': this.orgCode,\r\n\t\t\t\t'TermCode': this.termCode,\r\n\t\t\t\t'ClassCode': this.classCode,\r\n\t\t\t\t'AssignmentId': this.selectedAssignment.Id,\r\n\t\t\t\t'StudentUserId': teamId || studentId,\r\n\t\t\t\t'UploadType': 'document',\r\n\t\t\t\t'LastActivityDate': this.convertToEST(new Date())\r\n\t\t\t}\r\n\r\n\t\t\tconst submission = await submissionService.recordSubmission(newStudentUpload)\r\n\t\t\tif (submission != null) {\r\n\t\t\t\tif (this.submissionStatus.length > 0) {\r\n\t\t\t\t\tif (this.submissionStatus[this.selectedKey].Status != 'Feedback Available') { this.submissionStatus[this.selectedKey].Status = 'Submitted' }\r\n\t\t\t\t\tthis.submissionStatus[this.selectedKey].UploadedDate = submission.LastActivityDate\r\n\t\t\t\t\tthis.submissionStatus[this.selectedKey].DocId = submission.DocId\r\n\t\t\t\t} else {\r\n\t\t\t\t\tconst assignmentStatus = {\r\n\t\t\t\t\t\tAssignmentId: this.selectedAssignment.Id,\r\n\t\t\t\t\t\tStatus: 'Submitted',\r\n\t\t\t\t\t\tUploadedDate: submission.LastActivityDate,\r\n\t\t\t\t\t\tDocId: submission.DocId,\r\n\t\t\t\t\t\tReviewCount: 0\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tthis.submissionStatus.push(assignmentStatus)\r\n\t\t\t\t}\r\n\t\t\t\tif (this.canvasCode != null || this.canvasToken != null) {\r\n\t\t\t\t\tNotification.success({\r\n\t\t\t\t\t\tduration: 6000,\r\n\t\t\t\t\t\ttitle: 'Success',\r\n\t\t\t\t\t\tmessage: 'Your paper was submitted successfully to USF Writes.'\r\n\t\t\t\t\t})\r\n\t\t\t\t} else {\r\n\t\t\t\t\tNotification.success({\r\n\t\t\t\t\t\tduration: 6000,\r\n\t\t\t\t\t\ttitle: 'Success',\r\n\t\t\t\t\t\tmessage: 'Your paper was submitted successfully.'\r\n\t\t\t\t\t})\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t},\r\n\t\topenNewAssignmentDialog() {\r\n\t\t\tif (this.newDescriptionEditor != null) {\r\n\t\t\t\tthis.newDescriptionEditor.destroy()\r\n\t\t\t}\r\n\t\t\tthis.newAssignmentDialogVisible = true\r\n\t\t\tthis.selectedAssignment = null\r\n\t\t\tthis.selectedKey = null\r\n\t\t\tthis.setUpNewEditor()\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Open assignment dialog.\r\n\t\t// @arg The assignment id, and its key in the collection.\r\n\t\topenEditAssignmentDialog(assignmentId, key) {\r\n\t\t\tif (this.editDescriptionEditor != null) {\r\n\t\t\t\tthis.editDescriptionEditor.destroy()\r\n\t\t\t}\r\n\t\t\tthis.editAssignmentDialogVisible = true\r\n\t\t\tif (assignmentId != undefined && key != undefined) {\r\n\t\t\t\tthis.selectedAssignment = this.assignments[key]\r\n\t\t\t\tthis.selectedKey = key\r\n\t\t\t}\r\n\t\t\tthis.setUpEditEditor()\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Setup project description editors.\r\n\t\tsetUpNewEditor() {\r\n\t\t\tconst that = this\r\n\t\t\tthis.newDescriptionEditor = new Editor({\r\n\t\t\t\textensions: [\r\n\t\t\t\t\tnew Blockquote(),\r\n\t\t\t\t\tnew CodeBlock(),\r\n\t\t\t\t\tnew HardBreak(),\r\n\t\t\t\t\tnew Heading({ levels: [1, 2, 3] }),\r\n\t\t\t\t\tnew BulletList(),\r\n\t\t\t\t\tnew OrderedList(),\r\n\t\t\t\t\tnew Image(),\r\n\t\t\t\t\tnew ListItem(),\r\n\t\t\t\t\tnew TodoItem(),\r\n\t\t\t\t\tnew TodoList(),\r\n\t\t\t\t\tnew Bold(),\r\n\t\t\t\t\tnew Code(),\r\n\t\t\t\t\tnew Italic(),\r\n\t\t\t\t\tnew Link(),\r\n\t\t\t\t\tnew Strike(),\r\n\t\t\t\t\tnew Underline(),\r\n\t\t\t\t\tnew History(),\r\n\t\t\t\t\tnew Table({\r\n\t\t\t\t\t\tresizable: true\r\n\t\t\t\t\t}),\r\n\t\t\t\t\tnew TableHeader(),\r\n\t\t\t\t\tnew TableCell(),\r\n\t\t\t\t\tnew TableRow()\r\n\t\t\t\t],\r\n\t\t\t\tcontent: '',\r\n\t\t\t\tonUpdate: (state) => {\r\n\t\t\t\t\tthat.newAssignmentForm.Description = state.getHTML()\r\n\t\t\t\t}\r\n\t\t\t})\r\n\t\t},\r\n\t\tsetUpEditEditor() {\r\n\t\t\tconst that = this\r\n\t\t\tthis.editDescriptionEditor = new Editor({\r\n\t\t\t\textensions: [\r\n\t\t\t\t\tnew Blockquote(),\r\n\t\t\t\t\tnew CodeBlock(),\r\n\t\t\t\t\tnew HardBreak(),\r\n\t\t\t\t\tnew Heading({ levels: [1, 2, 3] }),\r\n\t\t\t\t\tnew BulletList(),\r\n\t\t\t\t\tnew OrderedList(),\r\n\t\t\t\t\tnew Image(),\r\n\t\t\t\t\tnew ListItem(),\r\n\t\t\t\t\tnew TodoItem(),\r\n\t\t\t\t\tnew TodoList(),\r\n\t\t\t\t\tnew Bold(),\r\n\t\t\t\t\tnew Code(),\r\n\t\t\t\t\tnew Italic(),\r\n\t\t\t\t\tnew Link(),\r\n\t\t\t\t\tnew Strike(),\r\n\t\t\t\t\tnew Underline(),\r\n\t\t\t\t\tnew History(),\r\n\t\t\t\t\tnew Table({\r\n\t\t\t\t\t\tresizable: true\r\n\t\t\t\t\t}),\r\n\t\t\t\t\tnew TableHeader(),\r\n\t\t\t\t\tnew TableCell(),\r\n\t\t\t\t\tnew TableRow()\r\n\t\t\t\t],\r\n\t\t\t\tcontent: that.selectedAssignment.Description,\r\n\t\t\t\tonUpdate: (state) => {\r\n\t\t\t\t\tthat.selectedAssignment.Description = state.getHTML()\r\n\t\t\t\t}\r\n\t\t\t})\r\n\t\t},\r\n\t\tcloseAssignmentDialog() {\r\n\t\t\tif (this.$refs['newAssignmentForm']) { this.$refs['newAssignmentForm'].resetFields() }\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Submit a project.\r\n\t\tasync addNewAssignment() {\r\n\t\t\tconst that = this\r\n\t\t\tthis.$refs['newAssignmentForm'].validate((valid) => {\r\n\t\t\t\tif (valid) {\r\n\t\t\t\t\tconst newAssignment = {\r\n\t\t\t\t\t\tOrgCode: that.orgCode,\r\n\t\t\t\t\t\tAssignmentName: that.newAssignmentForm.AssignmentName,\r\n\t\t\t\t\t\tDueDate: that.getDateStr(that.newAssignmentForm.DueDate),\r\n\t\t\t\t\t\tDescription: that.newAssignmentForm.Description,\r\n\t\t\t\t\t\tIsActive: 'A',\r\n\t\t\t\t\t\tIsMandatory: false,\r\n\t\t\t\t\t\tIsGroupAssignment: that.newAssignmentForm.IsGroupAssignment,\r\n\t\t\t\t\t\tDisplayOrder: that.assignments ? that.assignments.length : 0,\r\n\t\t\t\t\t\tTemplateId: that.$store.state.enrollment.currentCourse.ProjectTemplate,\r\n\t\t\t\t\t\tRubricId: that.newAssignmentForm.RubricId,\r\n\t\t\t\t\t\tGenreId: 22,\r\n\t\t\t\t\t\tUploadType: 0,\r\n\t\t\t\t\t\tUsePeerReview: that.newAssignmentForm.UsePeerReview,\r\n\t\t\t\t\t\tUseRevisionPlan: false,\r\n\t\t\t\t\t\tUsePortfolio: false,\r\n\t\t\t\t\t\tUseNormalization: false,\r\n\t\t\t\t\t\tUseReviewerComment: false,\r\n\t\t\t\t\t\tLastActivityDate: that.getlastActivityDate(),\r\n\t\t\t\t\t\tUseSelfAssessment: that.newAssignmentForm.UseSelfAssessment,\r\n\t\t\t\t\t\tSelfReviewDueDate: that.newAssignmentForm.SelfReviewDueDate != undefined ? that.getDateStr(that.newAssignmentForm.SelfReviewDueDate) : that.getlastActivityDate(),\r\n\t\t\t\t\t\tUseAppraisal: that.newAssignmentForm.UseAppraisal,\r\n\t\t\t\t\t\tAppraisalRubricId: that.newAssignmentForm.AppraisalRubricId,\r\n\t\t\t\t\t\tAppraisalDueDate: that.newAssignmentForm.AppraisalDueDate,\r\n\t\t\t\t\t\tPeerReviewDueDate: that.newAssignmentForm.PeerReviewDueDate\r\n\t\t\t\t\t}\r\n\t\t\t\t\tassignmentService.addNewAssignment(newAssignment)\r\n\t\t\t\t\t\t.then(assignment => {\r\n\t\t\t\t\t\t\tif (assignment) {\r\n\t\t\t\t\t\t\t\tthis.assignments.push(assignment)\r\n\t\t\t\t\t\t\t\tthis.assignments = this.assignments\r\n\t\t\t\t\t\t\t\tthat.newAssignmentForm = {\r\n\t\t\t\t\t\t\t\t\tOrgCode: '',\r\n\t\t\t\t\t\t\t\t\tAssignmentName: '',\r\n\t\t\t\t\t\t\t\t\tDueDate: '',\r\n\t\t\t\t\t\t\t\t\tDescription: '',\r\n\t\t\t\t\t\t\t\t\tIsActive: 'A',\r\n\t\t\t\t\t\t\t\t\tIsMandatory: false,\r\n\t\t\t\t\t\t\t\t\tIsGroupAssignment: false,\r\n\t\t\t\t\t\t\t\t\tDisplayOrder: 0,\r\n\t\t\t\t\t\t\t\t\tTemplateId: 0,\r\n\t\t\t\t\t\t\t\t\tRubricId: null,\r\n\t\t\t\t\t\t\t\t\tGenreId: 0,\r\n\t\t\t\t\t\t\t\t\tUploadType: 0,\r\n\t\t\t\t\t\t\t\t\tUsePeerReview: false,\r\n\t\t\t\t\t\t\t\t\tUseRevisionPlan: false,\r\n\t\t\t\t\t\t\t\t\tUsePortfolio: false,\r\n\t\t\t\t\t\t\t\t\tUseNormalization: false,\r\n\t\t\t\t\t\t\t\t\tUseReviewerComment: false,\r\n\t\t\t\t\t\t\t\t\tLastActivityDate: '',\r\n\t\t\t\t\t\t\t\t\tUseSelfAssessment: false,\r\n\t\t\t\t\t\t\t\t\tUseAppraisal: false,\r\n\t\t\t\t\t\t\t\t\tAppraisalRubricId: null,\r\n\t\t\t\t\t\t\t\t\tAppraisalDueDate: null,\r\n\t\t\t\t\t\t\t\t\tPeerReviewDueDate: null\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\tNotification.success({\r\n\t\t\t\t\t\t\t\t\tduration: 6000,\r\n\t\t\t\t\t\t\t\t\ttitle: 'Success',\r\n\t\t\t\t\t\t\t\t\tmessage: 'The new project were added successfully.'\r\n\t\t\t\t\t\t\t\t})\r\n\t\t\t\t\t\t\t\tthis.newAssignmentDialogVisible = false\r\n\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\tNotification.error({\r\n\t\t\t\t\t\t\t\t\tduration: 6000,\r\n\t\t\t\t\t\t\t\t\ttitle: 'Error',\r\n\t\t\t\t\t\t\t\t\tmessage: 'The new project were not added successfully due to server error.'\r\n\t\t\t\t\t\t\t\t})\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}).catch(error => {\r\n\t\t\t\t\t\t\tconsole.log(error)\r\n\t\t\t\t\t\t\tNotification.error({\r\n\t\t\t\t\t\t\t\tduration: 6000,\r\n\t\t\t\t\t\t\t\ttitle: 'Error',\r\n\t\t\t\t\t\t\t\tmessage: 'The new project were not added successfully due to server error.'\r\n\t\t\t\t\t\t\t})\r\n\t\t\t\t\t\t})\r\n\t\t\t\t} else {\r\n\t\t\t\t\tNotification.error({\r\n\t\t\t\t\t\tduration: 6000,\r\n\t\t\t\t\t\ttitle: 'Error',\r\n\t\t\t\t\t\tmessage: 'The new project was not created due to validation error.'\r\n\t\t\t\t\t})\r\n\t\t\t\t\treturn false\r\n\t\t\t\t}\r\n\t\t\t})\r\n\t\t},\r\n\t\tasync editAssignment() {\r\n\t\t\tconst that = this\r\n\t\t\tthis.$refs['assignmentForm'].validate((valid) => {\r\n\t\t\t\tif (valid) {\r\n\t\t\t\t\tif (that.selectedAssignment != null) {\r\n\t\t\t\t\t\tthat.selectedAssignment.DueDate = that.getDateStr(that.selectedAssignment.DueDate)\r\n\t\t\t\t\t\tif (that.selectedAssignment.SelfReviewDueDate) {\r\n\t\t\t\t\t\t\tthat.selectedAssignment.SelfReviewDueDate = that.getDateStr(that.selectedAssignment.SelfReviewDueDate)\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tif (that.selectedAssignment.AppraisalDueDate) {\r\n\t\t\t\t\t\t\tthat.selectedAssignment.AppraisalDueDate = that.getDateStr(that.selectedAssignment.AppraisalDueDate)\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tif (that.selectedAssignment.PeerReviewDueDate) {\r\n\t\t\t\t\t\t\tthat.selectedAssignment.PeerReviewDueDate = that.getDateStr(that.selectedAssignment.PeerReviewDueDate)\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tthat.selectedAssignment.LastActivityDate = that.getlastActivityDate()\r\n\t\t\t\t\t\tassignmentService.updateAssignment(that.selectedAssignment)\r\n\t\t\t\t\t\t\t.then(assignment => {\r\n\t\t\t\t\t\t\t\tthat.assignments[that.selectedKey] = that.selectedAssignment\r\n\t\t\t\t\t\t\t\tthat.selectedAssignment = null\r\n\t\t\t\t\t\t\t\tNotification.success({\r\n\t\t\t\t\t\t\t\t\tduration: 6000,\r\n\t\t\t\t\t\t\t\t\ttitle: 'Success',\r\n\t\t\t\t\t\t\t\t\tmessage: 'The project were updated successfully.'\r\n\t\t\t\t\t\t\t\t})\r\n\t\t\t\t\t\t\t\tthis.editAssignmentDialogVisible = false\r\n\t\t\t\t\t\t\t}).catch(error => {\r\n\t\t\t\t\t\t\t\tconsole.log(error)\r\n\t\t\t\t\t\t\t\tNotification.error({\r\n\t\t\t\t\t\t\t\t\tduration: 6000,\r\n\t\t\t\t\t\t\t\t\ttitle: 'Error',\r\n\t\t\t\t\t\t\t\t\tmessage: 'The project were not updated successfully.'\r\n\t\t\t\t\t\t\t\t})\r\n\t\t\t\t\t\t\t})\r\n\t\t\t\t\t}\r\n\t\t\t\t} else {\r\n\t\t\t\t\tNotification.error({\r\n\t\t\t\t\t\tduration: 6000,\r\n\t\t\t\t\t\ttitle: 'Error',\r\n\t\t\t\t\t\tmessage: 'The new project was not created due to validation error.'\r\n\t\t\t\t\t})\r\n\t\t\t\t\treturn false\r\n\t\t\t\t}\r\n\t\t\t})\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Remove a project.\r\n\t\t// @arg The project id and its key in the collection.\r\n\t\tremoveAssignment(assignmentId, key) {\r\n\t\t\tthis.$confirm('This will permanently delete the project. Do you want to continue?', 'Warning', {\r\n\t\t\t\tconfirmButtonText: 'OK',\r\n\t\t\t\tcancelButtonText: 'Cancel',\r\n\t\t\t\ttype: 'warning'\r\n\t\t\t}).then(() => {\r\n\t\t\t\tassignmentService.deleteAssignment(assignmentId)\r\n\t\t\t\t\t.then(assignment => {\r\n\t\t\t\t\t\tthis.assignments.splice(key, 1)\r\n\t\t\t\t\t\tthis.assignments = this.assignments\r\n\t\t\t\t\t\t// this.$store.commit('assignment/SET_ASSIGNMENTS', this.assignments)\r\n\t\t\t\t\t\tNotification.success({\r\n\t\t\t\t\t\t\tduration: 6000,\r\n\t\t\t\t\t\t\ttitle: 'Success',\r\n\t\t\t\t\t\t\tmessage: 'The project were deleted successfully.'\r\n\t\t\t\t\t\t})\r\n\t\t\t\t\t}).catch(error => {\r\n\t\t\t\t\t\tconsole.log(error)\r\n\t\t\t\t\t\tNotification.error({\r\n\t\t\t\t\t\t\tduration: 6000,\r\n\t\t\t\t\t\t\ttitle: 'Error',\r\n\t\t\t\t\t\t\tmessage: 'The project were not deleted successfully.'\r\n\t\t\t\t\t\t})\r\n\t\t\t\t\t})\r\n\t\t\t}).catch(() => {\r\n\t\t\t\tthis.$message({\r\n\t\t\t\t\ttype: 'info',\r\n\t\t\t\t\tmessage: 'Delete canceled'\r\n\t\t\t\t})\r\n\t\t\t})\r\n\t\t},\r\n\t\thandleCommand(command, assignmentId, key) {\r\n\t\t\tif (command == 'edit') {\r\n\t\t\t\tthis.openEditAssignmentDialog(assignmentId, key)\r\n\t\t\t} else if (command == 'delete') {\r\n\t\t\t\tthis.removeAssignment(assignmentId, key)\r\n\t\t\t} else if (command == 'sync') {\r\n\t\t\t\tthis.syncWithCanvas(assignmentId)\r\n\t\t\t}\r\n\t\t},\r\n\t\tasync syncWithCanvas(assignmentId) {\r\n\t\t\t// Check if there is a canvas token for this user\r\n\t\t\tconst canvasToken = await canvasService.getTokenByUserId(this.username)\r\n\t\t\tif (canvasToken != null) {\r\n\t\t\t\t// get and display canvas resources\r\n\t\t\t\tthis.getCanvasResourses(canvasToken.AccessToken, null, assignmentId)\r\n\t\t\t} else {\r\n\t\t\t\tconst url = window.location.href\r\n\t\t\t\tconst arr = url.split('/')\r\n\t\t\t\tconst protocol = arr[0]\r\n\t\t\t\tconst host = process.env.NODE_ENV === 'production' ? window.location.host : 'localhost:8080'\r\n\t\t\t\tconst canvasKey = process.env.NODE_ENV === 'production' ? '130000000000679' : '130000000000815'\r\n\t\t\t\tconst redirectUri = `${protocol}//${host}`\r\n\t\t\t\twindow.location.href = 'https://usflearn.instructure.com/login/oauth2/auth?client_id=' + canvasKey + '&response_type=code&redirect_uri=' + redirectUri + '/course/' + this.classCode + '/projects?assignmentId=' + assignmentId\r\n\t\t\t}\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Open project detail dialog.\r\n\t\t// @arg The project id and its key in the collection.\r\n\t\topenAssignmentDetailDialog(assignmentId, key) {\r\n\t\t\tif (this.descriptionDetailEditor != null) {\r\n\t\t\t\tthis.descriptionDetailEditor.destroy()\r\n\t\t\t}\r\n\r\n\t\t\tthis.assignmentDetailDialogVisible = true\r\n\t\t\tif (assignmentId != undefined && key != undefined) {\r\n\t\t\t\tthis.selectedAssignment = this.assignments[key]\r\n\t\t\t\tthis.selectedKey = key\r\n\t\t\t} else {\r\n\t\t\t\tthis.selectedAssignment = null\r\n\t\t\t\tthis.selectedKey = null\r\n\t\t\t}\r\n\t\t\tthis.setUpDetailEditor()\r\n\t\t},\r\n\t\tsetUpDetailEditor() {\r\n\t\t\tconst that = this\r\n\t\t\tthis.descriptionDetailEditor = new Editor({\r\n\t\t\t\teditable: false,\r\n\t\t\t\textensions: [\r\n\t\t\t\t\tnew Blockquote(),\r\n\t\t\t\t\tnew CodeBlock(),\r\n\t\t\t\t\tnew HardBreak(),\r\n\t\t\t\t\tnew Heading({ levels: [1, 2, 3] }),\r\n\t\t\t\t\tnew BulletList(),\r\n\t\t\t\t\tnew OrderedList(),\r\n\t\t\t\t\tnew Image(),\r\n\t\t\t\t\tnew ListItem(),\r\n\t\t\t\t\tnew TodoItem(),\r\n\t\t\t\t\tnew TodoList(),\r\n\t\t\t\t\tnew Bold(),\r\n\t\t\t\t\tnew Code(),\r\n\t\t\t\t\tnew Italic(),\r\n\t\t\t\t\tnew Link(),\r\n\t\t\t\t\tnew Strike(),\r\n\t\t\t\t\tnew Underline(),\r\n\t\t\t\t\tnew History(),\r\n\t\t\t\t\tnew Table({\r\n\t\t\t\t\t\tresizable: true\r\n\t\t\t\t\t}),\r\n\t\t\t\t\tnew TableHeader(),\r\n\t\t\t\t\tnew TableCell(),\r\n\t\t\t\t\tnew TableRow()\r\n\t\t\t\t],\r\n\t\t\t\tcontent: that.selectedAssignment != null ? that.selectedAssignment.Description : '',\r\n\t\t\t\tonUpdate: (state) => {\r\n\t\t\t\t\tthat.selectedAssignment.Description = state.getHTML()\r\n\t\t\t\t}\r\n\t\t\t})\r\n\t\t},\r\n\t\tgetDateStr(date) {\r\n\t\t\tconst thisDate = this.$moment(date)._d\r\n\t\t\treturn thisDate.getFullYear() + '-' + (thisDate.getMonth() + 1) + '-' +\r\n thisDate.getDate() + ' ' + thisDate.getHours() + ':' + thisDate.getMinutes() + ':' + thisDate.getSeconds()\r\n\t\t},\r\n\t\tgetDateStrWithT(date) {\r\n\t\t\tconst thisDate = this.$moment(date)._d\r\n\t\t\treturn thisDate.getFullYear() + '-' + (thisDate.getMonth() + 1) + '-' +\r\n thisDate.getDate() + 'T' + thisDate.getHours() + ':' + thisDate.getMinutes() + ':' + thisDate.getSeconds()\r\n\t\t},\r\n\t\tgetlastActivityDate() {\r\n\t\t\tconst today = this.$moment()._d\r\n\t\t\treturn today.getFullYear() + '-' + (today.getMonth() + 1) + '-' +\r\n today.getDate() + ' ' + today.getHours() + ':' + today.getMinutes() + ':' + today.getSeconds()\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Verify the file to be uploaded.\r\n\t\t// @arg The file to be uploaded.\r\n\t\tonUploadChange(file) {\r\n\t\t\tconst re = /(?:\\.([^.]+))?$/\r\n\t\t\tconst ext = re.exec(file.name)[1]\r\n\t\t\tif (ext && (ext.toLowerCase() == 'pdf' || ext.toLowerCase() == 'doc' || ext.toLowerCase() == 'docx')) {\r\n\t\t\t\tif (file.size > 0) {\r\n\t\t\t\t\tif (file.size < 20000000) {\r\n\t\t\t\t\t\tif (file.size > 10000000) {\r\n\t\t\t\t\t\t\tthis.$message.warning('This file is more than 10 megabytes, so it might take several minutes to be uploaded.')\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tthis.file = file.raw\r\n\t\t\t\t\t\tconsole.log(this.file)\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tthis.$refs.upload.clearFiles()\r\n\t\t\t\t\t\tthis.$message.warning('This file is more than 20 megabytes, so it will not be uploaded.')\r\n\t\t\t\t\t}\r\n\t\t\t\t} else {\r\n\t\t\t\t\tthis.$refs.upload.clearFiles()\r\n\t\t\t\t\tthis.$message.warning('This file is 0 byte, so it will not be uploaded.')\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tthis.$refs.upload.clearFiles()\r\n\t\t\t\tthis.$message.warning('This file is not a valid file.')\r\n\t\t\t}\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Remove the file.\r\n\t\t// @arg The file and a list of file if any.\r\n\t\thandleRemove(file, fileList) {\r\n\t\t\tthis.file = null\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Logic before removing the file.\r\n\t\t// @arg The file and a list of file if any.\r\n\t\tbeforeRemove(file, fileList) {\r\n\t\t\treturn this.$confirm(`Are you sure you want to delete ${file.name} ?`)\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Handle case where the number of files to be uploaded is greater that the limit.\r\n\t\t// @arg The file and a list of file if any.\r\n\t\thandleExceed(files, fileList) {\r\n\t\t\tthis.$message.warning('You can only upload 1 document at a time!')\r\n\t\t},\r\n\t\tasync viewSubmission(docId, assignment) {\r\n\t\t\tthis.selectedAssignment = assignment\r\n\t\t\tthis.docPreviewDialogVisible = true\r\n\r\n\t\t\tif (docId) {\r\n\t\t\t\tthis.docId = docId\r\n\t\t\t\tawait pdfService.getPdf(docId)\r\n\t\t\t\t\t.then(pdf => {\r\n\t\t\t\t\t\t// Display the pdf\r\n\t\t\t\t\t\tconst pdfDocument = document.querySelector('#pdfDocument')\r\n\t\t\t\t\t\tpdfDocument.innerHTML = pdf\r\n\t\t\t\t\t\t// Setup the doc after being loaded\r\n\t\t\t\t\t\tconst that = this\r\n\t\t\t\t\t\tdocument.getElementById('PdfWebControl').onload = function() {\r\n\t\t\t\t\t\t\tthat.PdfAttachListeners()\r\n\t\t\t\t\t\t\tsetTimeout(function() {\r\n\t\t\t\t\t\t\t\tthat.totalPageNumber = that.myapi.getPageCount()\r\n\t\t\t\t\t\t\t}, 500)\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}).catch((error) => {\r\n\t\t\t\t\t\tconsole.log(error)\r\n\t\t\t\t\t})\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\t// @vuese\r\n\t\t// Configures Rad PDf for displaying the document.\r\n\t\tPdfAttachListeners() {\r\n\t\t\tconst id = 'PdfWebControl'\r\n\t\t\t// eslint-disable-next-line no-undef\r\n\t\t\tthis.myapi = new PdfWebControlApi(id)\r\n\t\t\tthis.myapi.addEventListener('modeChanged', function(evt) {\r\n\t\t\t\tevt.byLine = true\r\n\t\t\t})\r\n\t\t\tconst that = this\r\n\t\t\tthis.myapi.addEventListener('viewChanged', function(evt) {\r\n\t\t\t\tthat.pageNum = that.myapi.getPageViewed().getPageNumber()\r\n\t\t\t})\r\n\r\n\t\t\tthis.myapi.addEventListener('objectAdded', function(evt) {\r\n\t\t\t\tif (evt.obj.getType() == 154) { // Highlight annotation\r\n\t\t\t\t\tconst props = evt.obj.getProperties()\r\n\t\t\t\t\tconst popup = evt.obj.getPopup()\r\n\r\n\t\t\t\t\tevt.obj.setProperties({\r\n\t\t\t\t\t\t'customData': evt.textSelected\r\n\t\t\t\t\t})\r\n\r\n\t\t\t\t\tpopup.setProperties(\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tauthor: 'RAD PDF',\r\n\t\t\t\t\t\t\tsubject: 'In-text Comment',\r\n\t\t\t\t\t\t\ttop: props['top'] - 60,\r\n\t\t\t\t\t\t\tleft: props['left'] - 5,\r\n\t\t\t\t\t\t\theight: 60\r\n\t\t\t\t\t\t})\r\n\r\n\t\t\t\t\tthat.myapi.setMode(that.myapi.Mode.None)\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (evt.obj.getType() == 100) {\r\n\t\t\t\t\tthat.myapi.setMode(that.myapi.Mode.None)\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (evt.obj.getType() == 101) {\r\n\t\t\t\t\tthat.myapi.setMode(that.myapi.Mode.None)\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (evt.obj.getType() == that.myapi.ObjectType.StrikeoutAnnotation) {\r\n\t\t\t\t\tthat.myapi.setMode(that.myapi.Mode.None)\r\n\t\t\t\t}\r\n\t\t\t\tif (evt.obj.getType() == that.myapi.ObjectType.TextAnnotation) {\r\n\t\t\t\t\tthat.myapi.setMode(that.myapi.Mode.None)\r\n\t\t\t\t}\r\n\t\t\t})\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Handles logics when the page number is changed.\r\n\t\tchangePage() {\r\n\t\t\tthis.myapi.setView({ 'page': this.pageNum })\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Handles logics when the zoom out button is clicked.\r\n\t\tzoomOut() {\r\n\t\t\tif (this.myapi) {\r\n\t\t\t\tif (this.zoomValue > 40) { this.myapi.setView({ 'zoom': this.zoomValue -= 20 }) }\r\n\t\t\t}\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Handles logics when the zoom in button is clicked.\r\n\t\tzoomIn() {\r\n\t\t\tif (this.myapi) {\r\n\t\t\t\tif (this.zoomValue < 200 && this.zoomValue > 20) { this.myapi.setView({ 'zoom': this.zoomValue += 20 }) }\r\n\t\t\t}\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Handles logics when the zoom fit width button is clicked.\r\n\t\tzoomFitWidth() {\r\n\t\t\tif (this.myapi) {\r\n\t\t\t\tthis.zoomValue = 140\r\n\t\t\t\tthis.myapi.setView({ 'zoom': -1 })\r\n\t\t\t}\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Handles logics when the download button is clicked.\r\n\t\tasync downloadPdf() {\r\n\t\t\tconst docId = this.docId\r\n\t\t\tconst payload = new URLSearchParams()\r\n\t\t\tpayload.append('UserId', this.username)\r\n\t\t\tpayload.append('DocId', docId)\r\n\t\t\t// get download data\r\n\t\t\tconst data = await pdfService.getDownloadData(payload)\r\n\t\t\tif (data) {\r\n\t\t\t\tconst arrayBuffer = this.base64ToArrayBuffer(data.DownloadData)\r\n\t\t\t\tconst blob = new Blob([arrayBuffer], { type: 'application/pdf' })\r\n\t\t\t\tconst link = document.createElement('a')\r\n\t\t\t\tlink.href = window.URL.createObjectURL(blob)\r\n\t\t\t\tlink.download = data.DocumentName\r\n\t\t\t\tdocument.body.appendChild(link)\r\n\t\t\t\tlink.click()\r\n\t\t\t\tlink.remove()\r\n\t\t\t} else {\r\n\t\t\t\tNotification.error({\r\n\t\t\t\t\tduration: 6000,\r\n\t\t\t\t\ttitle: 'Error',\r\n\t\t\t\t\tmessage: 'Paper cannot be found.'\r\n\t\t\t\t})\r\n\t\t\t}\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Download a file by document id.\r\n\t\t// @arg The document id.\r\n\t\tasync download(docId, assignment) {\r\n\t\t\tlet username = this.username\r\n\t\t\tif (assignment.IsGroupAssignment) {\r\n\t\t\t\tconst thisTeamAssignment = await teamFormationService.getgroupProjectTeamAssignment(this.termCode,\r\n\t\t\t\t\tthis.orgCode, this.classCode, this.username, assignment.Id)\r\n\t\t\t\tif (thisTeamAssignment) {\r\n\t\t\t\t\tusername = thisTeamAssignment.TeamId\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t// get download data\r\n\t\t\tconst payload = new URLSearchParams()\r\n\t\t\tpayload.append('UserId', username)\r\n\t\t\tpayload.append('DocId', docId)\r\n\t\t\tconst data = await pdfService.getDownloadData(payload)\r\n\t\t\tif (data) {\r\n\t\t\t\tconst arrayBuffer = this.base64ToArrayBuffer(data.DownloadData)\r\n\t\t\t\tconst blob = new Blob([arrayBuffer], { type: 'application/pdf' })\r\n\t\t\t\tconst link = document.createElement('a')\r\n\t\t\t\tlink.href = window.URL.createObjectURL(blob)\r\n\t\t\t\tlink.download = data.DocumentName\r\n\t\t\t\tdocument.body.appendChild(link)\r\n\t\t\t\tlink.click()\r\n\t\t\t\tlink.remove()\r\n\t\t\t} else {\r\n\t\t\t\tNotification.error({\r\n\t\t\t\t\tduration: 6000,\r\n\t\t\t\t\ttitle: 'Error',\r\n\t\t\t\t\tmessage: 'Paper cannot be found.'\r\n\t\t\t\t})\r\n\t\t\t}\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Convert base64 value into bytes.\r\n\t\t// @arg The base 64 value.\r\n\t\tbase64ToArrayBuffer(base64) {\r\n\t\t\tconst binaryString = window.atob(base64)\r\n\t\t\tconst binaryLen = binaryString.length\r\n\t\t\tconst bytes = new Uint8Array(binaryLen)\r\n\t\t\tfor (let i = 0; i < binaryLen; i++) {\r\n\t\t\t\tconst ascii = binaryString.charCodeAt(i)\r\n\t\t\t\tbytes[i] = ascii\r\n\t\t\t}\r\n\t\t\treturn bytes\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Go to peer review page.\r\n\t\t// @arg The project id, bolean value indicatting if the project is a group project, and the group id.\r\n\t\tpeerReview(assignmentId, isGroupAssignment, groupId) {\r\n\t\t\tif (isGroupAssignment) {\r\n\t\t\t\tif (groupId && groupId != 0) { this.$router.push('/peer_review?assignmentId=' + assignmentId) } else {\r\n\t\t\t\t\tNotification.info({\r\n\t\t\t\t\t\tduration: 6000,\r\n\t\t\t\t\t\ttitle: 'Info',\r\n\t\t\t\t\t\tmessage: 'You cannot do peer review until you are assigned into a peer review group.'\r\n\t\t\t\t\t})\r\n\t\t\t\t}\r\n\t\t\t} else { this.$router.push('/peer_review?assignmentId=' + assignmentId) }\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Go to self review page.\r\n\t\t// @arg The project id, bolean value indicatting if the project is a group project, and the group id.\r\n\t\tselfReview(assignmentId, isGroupAssignment, groupId) {\r\n\t\t\tif (isGroupAssignment) {\r\n\t\t\t\tif (groupId && groupId != 0) { this.$router.push('/self_review?assignmentId=' + assignmentId) } else {\r\n\t\t\t\t\tNotification.info({\r\n\t\t\t\t\t\tduration: 6000,\r\n\t\t\t\t\t\ttitle: 'Info',\r\n\t\t\t\t\t\tmessage: 'You cannot do self review until you are assigned into a group for this project.'\r\n\t\t\t\t\t})\r\n\t\t\t\t}\r\n\t\t\t} else { this.$router.push('/self_review?assignmentId=' + assignmentId) }\r\n\t\t},\r\n\r\n\t\tappraisal(assignmentId, isGroupAssignment, groupId) {\r\n\t\t\tif (isGroupAssignment) {\r\n\t\t\t\tif (groupId && groupId != 0) { this.$router.push('/student/appraisal/' + assignmentId + '?groupId=' + groupId) } else {\r\n\t\t\t\t\tNotification.info({\r\n\t\t\t\t\t\tduration: 6000,\r\n\t\t\t\t\t\ttitle: 'Info',\r\n\t\t\t\t\t\tmessage: 'You cannot do appraisal until you are assigned into a group and have submitted paper for this project.'\r\n\t\t\t\t\t})\r\n\t\t\t\t}\r\n\t\t\t} else { this.$router.push('/student/appraisal/' + assignmentId) }\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Go to view feedback page.\r\n\t\t// @arg The project id.\r\n\t\tasync viewFeedback(assignmentId) {\r\n\t\t\tthis.$router.push('/view_feedback/' + assignmentId + '/old')\r\n\t\t},\r\n\t\tdraggingEnd() {\r\n\t\t\tthis.dragging = false\r\n\t\t},\r\n\t\tremoveAt(idx) {\r\n\t\t\tthis.assignments = this.assignments.splice(idx, 1)\r\n\t\t\t// this.$store.commit('assignment/SET_ASSIGNMENTS', this.assignments)\r\n\t\t},\r\n\t\tadd() {\r\n\t\t\tconst newAssignment = null\r\n\t\t\tthis.assignments.push(newAssignment)\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Go to student submissions page.\r\n\t\t// @arg The project id.\r\n\t\tgotoStudentSubmissions(assignmentId) {\r\n\t\t\tthis.$router.push('/course/' + this.classCode + '/projects/' + assignmentId + '/submissions')\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Go to student scores page.\r\n\t\t// @arg The project id.\r\n\t\tgotoStudentScores(assignmentId) {\r\n\t\t\tthis.$router.push('/course/' + this.classCode + '/projects/' + assignmentId + '/scores/all')\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Go to student holistic scores page.\r\n\t\t// @arg The project id.\r\n\t\tgotoStudentHolisticScores(assignmentId) {\r\n\t\t\tthis.$router.push('/course/' + this.classCode + '/projects/' + assignmentId + '/scores/holistic')\r\n\t\t},\r\n\t\tgotoInstructorCompareTexts(assignmentId, idx) {\r\n\t\t\tthis.$router.push('/instructor/compare')\r\n\t\t},\r\n\t\tcompareTexts(assignmentId) {\r\n\t\t\tthis.$router.push('/student/compare/' + assignmentId)\r\n\t\t}\r\n\r\n\t}\r\n}\r\n</script>\r\n\r\n<style scoped>\r\n\r\n.icon-spinner{\r\n\tanimation: spin-animation 1.5s infinite;\r\n display: inline-block;\r\n}\r\n\r\n@keyframes spin-animation {\r\n 0% {\r\n transform: rotate(0deg);\r\n }\r\n 100% {\r\n transform: rotate(359deg);\r\n }\r\n}\r\n\r\n.el-table__empty-text{\r\n\tdisplay: none;\r\n}\r\n.assignment-list{\r\n padding: 20px;\r\n box-shadow: 20px 10px 25px 20px rgba(109, 107, 107, 0.1);\r\n}\r\n.instructor-assignment-name{\r\n font-size: 18px;\r\n font-weight: bold;\r\n color: #4E5E63;\r\n white-space: nowrap;\r\n display: inline-block;\r\n overflow: hidden;\r\n}\r\n.student-assignment-name{\r\n font-size: 18px;\r\n font-weight: bold;\r\n color: #4E5E63;\r\n text-overflow: ellipsis;\r\n white-space: nowrap;\r\n width: 268px;\r\n display: inline-block;\r\n overflow: hidden;\r\n}\r\n.assignment-action-btn{\r\n box-shadow: none;\r\n display: inline-block;\r\n vertical-align: middle;\r\n touch-action: manipulation;\r\n cursor: pointer;\r\n padding: 10px 14px;\r\n /* border: 0px none;\r\n background: none; */\r\n}\r\n.assignment-details{\r\n font-size: 13px;\r\n margin-right: 20px;\r\n float: left;\r\n /* margin-bottom: 3px; */\r\n}\r\n\r\n.badge-item {\r\n margin-left: 8px;\r\n margin-right: 8px;\r\n}\r\n.editor-btn{\r\n text-align: center;\r\n box-shadow: none;\r\n display: inline-block;\r\n padding: 0px 8px;\r\n vertical-align: middle;\r\n touch-action: manipulation;\r\n cursor: pointer;\r\n border: 0px none;\r\n background: none;\r\n word-break: normal;\r\n}\r\n\r\n.assignment-edit-editor{\r\n word-break: normal;\r\n padding-right: 5px;\r\n}\r\n\r\n.assignment-detail-editor{\r\n word-break: normal;\r\n padding-right: 5px;\r\n}\r\n\r\n.ViewerControls--with-annotations {\r\n height: 49px;\r\n}\r\n.ViewerControls {\r\n background-color: #636363;\r\n color: #fff;\r\n font-size: 14px;\r\n line-height: 24px;\r\n /* overflow-x: auto; */\r\n /* position: absolute;\r\n width: 100%; */\r\n}\r\n.ViewerControls-primary {\r\n -ms-touch-action: none;\r\n touch-action: none;\r\n pointer-events: all;\r\n display: -webkit-box;\r\n display: -ms-flexbox;\r\n display: flex;\r\n}\r\n.ViewerControls--download, .ViewerControls--title {\r\n -webkit-box-flex: 1;\r\n -ms-flex: 1;\r\n flex: 1;\r\n display: -webkit-box;\r\n display: -ms-flexbox;\r\n display: flex;\r\n -webkit-box-align: center;\r\n -ms-flex-align: center;\r\n align-items: center;\r\n white-space: nowrap;\r\n}\r\n\r\n.download-button--button {\r\n background-color: transparent;\r\n font-size: 16px;\r\n border: none;\r\n height: 48px;\r\n width: 48px;\r\n color: white;\r\n cursor: pointer;\r\n}\r\n/* .download-button--button:hover {\r\n background-color: #777777;\r\n} */\r\n\r\n.ViewerControls--page-controls {\r\n display: -webkit-box;\r\n display: -ms-flexbox;\r\n display: flex;\r\n -webkit-box-align: center;\r\n -ms-flex-align: center;\r\n align-items: center;\r\n white-space: nowrap;\r\n}\r\n\r\n.DocumentControls {\r\n display: -webkit-box;\r\n display: -ms-flexbox;\r\n display: flex;\r\n -webkit-box-align: center;\r\n -ms-flex-align: center;\r\n align-items: center;\r\n}\r\n\r\n.AnnotationControlButton {\r\n width: 48px;\r\n padding: 0;\r\n border: 0 none;\r\n color: #fff;\r\n background-color: #636363;\r\n margin-top: 0;\r\n margin-bottom: 0;\r\n cursor: pointer;\r\n -webkit-box-sizing: content-box;\r\n box-sizing: content-box;\r\n -webkit-touch-callout: none;\r\n user-select: none;\r\n -moz-user-select: none;\r\n -webkit-user-select: none;\r\n -ms-user-select: none;\r\n -webkit-tap-highlight-color: rgba(0,0,0,0);\r\n}\r\n.AnnotationControlButton-inner, .AnnotationControlButton-outer {\r\n -webkit-box-sizing: content-box;\r\n box-sizing: content-box;\r\n display: -webkit-box;\r\n display: -ms-flexbox;\r\n display: flex;\r\n}\r\n\r\n.AnnotationControlButton-inner {\r\n margin: 0;\r\n height: 44px;\r\n width: 48px;\r\n -webkit-box-pack: center;\r\n -ms-flex-pack: center;\r\n justify-content: center;\r\n -webkit-box-align: center;\r\n -ms-flex-align: center;\r\n align-items: center;\r\n}\r\n\r\n.AnnotationControlButton-inner {\r\n margin: 0;\r\n height: 44px;\r\n width: 48px;\r\n -webkit-box-pack: center;\r\n -ms-flex-pack: center;\r\n justify-content: center;\r\n -webkit-box-align: center;\r\n -ms-flex-align: center;\r\n align-items: center;\r\n}\r\n.AnnotationControlButton-outer {\r\n width: 44px;\r\n margin: 1px;\r\n border: 1px solid #636363;\r\n}\r\n\r\n.ViewerControls--current-page {\r\n -moz-appearance: textfield;\r\n margin-top: 10px;\r\n border-radius: 3px;\r\n border: 0;\r\n height: 28px;\r\n width: 36px;\r\n background-color: #fff;\r\n color: #636363;\r\n font-size: 14px;\r\n text-align: center;\r\n vertical-align: top;\r\n}\r\n.next-prev{\r\n text-align: center;\r\n -webkit-box-shadow: none;\r\n box-shadow: none;\r\n display: inline-block;\r\n padding: 0px 10px;\r\n vertical-align: middle;\r\n -ms-touch-action: manipulation;\r\n touch-action: manipulation;\r\n cursor: pointer;\r\n border: 0 none;\r\n background: none;\r\n}\r\n</style>\r\n\r\n<style>\r\n.dialog-title{\r\n font-size: 22px;\r\n font-weight: bold;\r\n color: #4E5E63;\r\n}\r\n\r\n.el-badge__content.is-fixed{\r\n right: 12px !important;\r\n}\r\n\r\n.assignment-edit-editor > .ProseMirror{\r\n height: 100px;\r\n overflow: auto;\r\n}\r\n\r\n.assignment-detail-editor > .ProseMirror{\r\n height: 250px;\r\n overflow: auto;\r\n}\r\n</style>\r\n\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./OldAssignments.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./OldAssignments.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./OldAssignments.vue?vue&type=template&id=70b02e10&scoped=true&\"\nimport script from \"./OldAssignments.vue?vue&type=script&lang=js&\"\nexport * from \"./OldAssignments.vue?vue&type=script&lang=js&\"\nimport style0 from \"./OldAssignments.vue?vue&type=style&index=0&id=70b02e10&scoped=true&lang=css&\"\nimport style1 from \"./OldAssignments.vue?vue&type=style&index=1&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"70b02e10\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('div',{staticClass:\"breadcumb\"},[_c('div',{staticClass:\"ic-app-crumbs\"},[_c('span',{staticClass:\"breadcumb-text\"},[_c('router-link',{staticStyle:{\"color\":\"#4e5e63\",\"text-decoration\":\"none\"},attrs:{\"to\":{ path: '/course/' + _vm.currentCourse.ClassCode + '/projects' }}},[_vm._v(\"\\n \"+_vm._s(_vm.currentCourse.ClassDescription)+\"\\n \")]),_c('i',{staticClass:\"fas fa-chevron-right breadcumb-next\"}),_vm._v(\"\\n Projects\\n \")],1)])]),_c('div',[_c('div',{staticClass:\"assignment-list\",attrs:{\"id\":\"assignment_group_1782423_assignments\"}},[_c('div',{staticStyle:{\"margin-bottom\":\"15px\"}},[(_vm.userRole == 'Instructor')?_c('el-button',{staticStyle:{\"float\":\"right\"},attrs:{\"size\":\"small\"},on:{\"click\":function($event){return _vm.openNewAssignmentDialog()}}},[_c('i',{staticClass:\"fas fa-plus\",staticStyle:{\"font-size\":\"13px\"}}),_c('span',[_vm._v(\" New Project\")])]):_vm._e(),(_vm.userRole == 'Instructor')?_c('el-button',{staticStyle:{\"float\":\"right\",\"margin-right\":\"10px\"},attrs:{\"size\":\"small\"},on:{\"click\":function($event){return _vm.orderByDueDates()}}},[_c('span',[_vm._v(\" Order By Due Dates \")])]):_vm._e(),(_vm.userRole == 'Student')?_c('el-button',{staticStyle:{\"float\":\"right\"},attrs:{\"size\":\"small\"},on:{\"click\":function($event){return _vm.viewByDueDates()}}},[_c('span',[_vm._v(\" View By Due Dates \")])]):_vm._e(),_c('el-input',{staticStyle:{\"width\":\"300px\"},attrs:{\"placeholder\":\"Search for projects by name\",\"size\":\"small\"},model:{value:(_vm.search),callback:function ($$v) {_vm.search=$$v},expression:\"search\"}})],1),(_vm.assignments)?_c('div',{staticClass:\"collectionViewItems ig-list draggable ui-sortable\"},[_c('draggable',{staticClass:\"list-group\",attrs:{\"list\":_vm.assignments,\"group\":\"people\"},on:{\"end\":function($event){return _vm.onDragEnd()}}},_vm._l((_vm.assignments.filter(\n function (a) { return !_vm.search ||\n a.AssignmentName.toLowerCase().includes(_vm.search.toLowerCase()); }\n )),function(assignment,key){return _c('div',{key:assignment.Id,staticClass:\"list-group-item box-card\",staticStyle:{\"width\":\"100%\"}},[_c('el-card',{staticClass:\"assignment-tile\",staticStyle:{\"margin-bottom\":\"5px\",\"border\":\"1px solid #cccecf\",\"border-top\":\"none\"},attrs:{\"shadow\":\"hover\"}},[(_vm.userRole == 'Instructor')?_c('div',{staticClass:\"clearfix\",attrs:{\"slot\":\"header\"},slot:\"header\"},[_c('div',[_c('span',{staticClass:\"instructor-assignment-name\",attrs:{\"title\":assignment.AssignmentName},on:{\"click\":function($event){return _vm.openAssignmentDetailDialog(assignment.Id, key)}}},[_vm._v(\"\\n \"+_vm._s(assignment.AssignmentName)+\"\\n \"),(assignment.IsGroupAssignment)?_c('span',{staticStyle:{\"margin-left\":\"3px\",\"margin-right\":\"3px\"}},[_c('el-tooltip',{staticClass:\"item\",attrs:{\"effect\":\"dark\",\"content\":\"This project is a group project\",\"placement\":\"bottom\"}},[_c('i',{staticClass:\"fas fa-users\",staticStyle:{\"font-size\":\"15px\",\"color\":\"#4E5E63\"}})])],1):_vm._e(),(assignment.UseCanvasIntegration)?_c('span',{staticStyle:{\"margin-left\":\"3px\",\"margin-right\":\"3px\"}},[_c('el-tooltip',{staticClass:\"item\",attrs:{\"effect\":\"dark\",\"content\":\"This project was synced with an assignment in Canvas\",\"placement\":\"bottom\"}},[_c('img',{staticStyle:{\"position\":\"relative\",\"top\":\"0px\"},attrs:{\"src\":require(\"@/assets/img/canvas-logo.png\"),\"alt\":\"Canvas Sync\",\"width\":\"14\",\"height\":\"14\"}})])],1):_vm._e(),_c('br'),_c('span',{staticClass:\"instructor-assignment-name\",staticStyle:{\"font-weight\":\"200\",\"font-size\":\"13px\",\"margin-top\":\"6px\"}},[_vm._v(\"\\n Due Date: \"),_c('b',[_vm._v(_vm._s(_vm._f(\"formatDate\")(assignment.DueDate))+\" EST\")]),_vm._v(\"\\n  \\n \"),(\n _vm.submissionNumbers &&\n _vm.submissionNumbers.filter(\n function (s) { return s.AssignmentId == assignment.Id &&\n s.TaskType == 'student_upload'; }\n ).length > 0\n )?_c('span',[_vm._v(\"\\n |  Submitted:\\n \"),_c('b',[(\n _vm.submissionNumbers &&\n _vm.submissionNumbers.filter(\n function (s) { return s.AssignmentId == assignment.Id &&\n s.TaskType == 'student_upload'; }\n )[0].SubmissionNumber > 1\n )?_c('span',[_vm._v(\"\\n \"+_vm._s(_vm.submissionNumbers.filter(\n function (s) { return s.AssignmentId == assignment.Id &&\n s.TaskType == \"student_upload\"; }\n )[0].SubmissionNumber)+\"\\n students\\n \")]):_c('span',[_vm._v(\"\\n \"+_vm._s(_vm.submissionNumbers.filter(\n function (s) { return s.AssignmentId == assignment.Id &&\n s.TaskType == \"student_upload\"; }\n )[0].SubmissionNumber)+\"\\n student\\n \")])])]):_c('span',[_vm._v(\"\\n |  Submitted: \"),_c('b',[_vm._v(\"0 students\")])])])]),_c('div',{staticStyle:{\"float\":\"right\",\"margin-top\":\"13px\"}},[_c('el-dropdown',{staticStyle:{\"margin-left\":\"18px\",\"margin-right\":\"0px\"},attrs:{\"trigger\":\"click\"},on:{\"command\":function (command) { return _vm.handleCommand(command, assignment.Id, key); }}},[_c('span',{staticClass:\"el-dropdown-link\"},[_c('i',{staticClass:\"fas fa-ellipsis-v\",staticStyle:{\"margin\":\"4px\",\"font-size\":\"17px\"}})]),_c('el-dropdown-menu',{attrs:{\"slot\":\"dropdown\"},slot:\"dropdown\"},[_c('el-dropdown-item',{attrs:{\"command\":\"add\"}},[_c('i',{staticClass:\"fas fa-plus\"}),_vm._v(\" New Task\\n \")]),(_vm.useCanvasIntegration())?_c('el-dropdown-item',{attrs:{\"command\":\"sync\"}},[_c('i',{staticClass:\"fas fa-sync-alt\"}),_vm._v(\" Sync with\\n Canvas\")]):_vm._e(),_c('el-dropdown-item',{attrs:{\"command\":\"edit\"}},[_c('i',{staticClass:\"fas fa-edit\"}),_vm._v(\" Edit Project\\n \")]),_c('el-dropdown-item',{attrs:{\"command\":\"delete\"}},[_c('i',{staticClass:\"fas fa-trash-alt\"}),_vm._v(\" Delete\\n Project\")])],1)],1)],1),_c('div',{staticStyle:{\"float\":\"right\"}},[(\n assignment.IsGroupAssignment &&\n _vm.teamFormationStatus &&\n _vm.teamFormationStatus.filter(\n function (t) { return t.AssignmentId == assignment.Id &&\n t.AssignmentType == 'group_project'; }\n ).length > 0 &&\n _vm.teamFormationStatus.filter(\n function (t) { return t.AssignmentId == assignment.Id &&\n t.AssignmentType == 'group_project'; }\n )[0].IsSubmitted\n )?_c('el-button',{staticClass:\"assignment-action-btn\",staticStyle:{\"padding\":\"7px 15px\",\"margin-top\":\"10px\"},attrs:{\"type\":\"success\",\"plain\":\"\",\"size\":\"mini\"},on:{\"click\":function($event){return _vm.gotoGroupFormation(assignment.Id)}}},[_c('i',{staticClass:\"far fa-check-circle\",staticStyle:{\"font-size\":\"13px\"}}),_vm._v(\"\\n  \\n \"),_c('i',{staticClass:\"fas fa-users\",staticStyle:{\"font-size\":\"13px\"}}),_c('span',{staticStyle:{\"position\":\"relative\",\"top\":\"-1px\",\"margin-left\":\"6px\"}},[_vm._v(\"\\n Group Formation\\n \")])]):_vm._e(),(\n assignment.IsGroupAssignment &&\n _vm.teamFormationStatus &&\n _vm.teamFormationStatus.filter(\n function (t) { return t.AssignmentId == assignment.Id &&\n t.AssignmentType == 'group_project'; }\n ).length == 0\n )?_c('el-button',{staticClass:\"assignment-action-btn\",staticStyle:{\"padding\":\"7px 15px\",\"margin-top\":\"10px\"},attrs:{\"type\":\"danger\",\"plain\":\"\",\"size\":\"mini\"},on:{\"click\":function($event){return _vm.gotoGroupFormation(assignment.Id)}}},[_c('i',{staticClass:\"fas fa-exclamation-circle\",staticStyle:{\"font-size\":\"13px\"}}),_vm._v(\"\\n  \\n \"),_c('i',{staticClass:\"fas fa-users\",staticStyle:{\"font-size\":\"13px\"}}),_c('span',{staticStyle:{\"position\":\"relative\",\"top\":\"-1px\",\"margin-left\":\"6px\"}},[_vm._v(\"\\n Group Formation\\n \")])]):_vm._e(),_c('el-button',{staticClass:\"assignment-action-btn\",staticStyle:{\"padding\":\"7px 15px\",\"margin-top\":\"10px\"},attrs:{\"size\":\"mini\"},on:{\"click\":function($event){return _vm.gotoStudentSubmissions(assignment.Id)}}},[_c('i',{staticClass:\"fab fa-buffer\",staticStyle:{\"font-size\":\"13px\"}}),_c('span',{staticStyle:{\"position\":\"relative\",\"top\":\"-1px\",\"margin-left\":\"6px\"}},[_vm._v(\"\\n View Submissions\\n \")])])],1)])]):_vm._e(),(_vm.userRole == 'Student')?_c('div',{staticClass:\"clearfix\",attrs:{\"slot\":\"header\"},slot:\"header\"},[_c('div',[_c('span',{staticClass:\"student-assignment-name\",attrs:{\"title\":assignment.AssignmentName},on:{\"click\":function($event){return _vm.openAssignmentDetailDialog(assignment.Id, key)}}},[_vm._v(\"\\n \"+_vm._s(assignment.AssignmentName)+\"\\n \"),(assignment.IsGroupAssignment)?_c('span',{staticStyle:{\"margin-left\":\"3px\",\"margin-right\":\"3px\"}},[_c('el-tooltip',{staticClass:\"item\",attrs:{\"effect\":\"dark\",\"content\":\"This project is a group project\",\"placement\":\"bottom\"}},[_c('i',{staticClass:\"fas fa-users\",staticStyle:{\"font-size\":\"15px\",\"color\":\"#4E5E63\"}})])],1):_vm._e(),(assignment.UseCanvasIntegration)?_c('span',{staticStyle:{\"margin-left\":\"3px\",\"margin-right\":\"3px\"}},[_c('el-tooltip',{staticClass:\"item\",attrs:{\"effect\":\"dark\",\"content\":\"This project was synced with an assignment in Canvas\",\"placement\":\"bottom\"}},[_c('img',{staticStyle:{\"position\":\"relative\",\"top\":\"0px\"},attrs:{\"src\":require(\"@/assets/img/canvas-logo.png\"),\"alt\":\"Canvas Sync\",\"width\":\"14\",\"height\":\"14\"}})])],1):_vm._e(),_c('br'),_c('span',{staticClass:\"student-assignment-name\",staticStyle:{\"font-weight\":\"200\",\"font-size\":\"13px\",\"margin-top\":\"6px\"}},[_vm._v(\"\\n Due Date: \"),_c('b',[_vm._v(_vm._s(_vm._f(\"formatDate\")(assignment.DueDate))+\" EST\")]),_vm._v(\"\\n  \\n \"),(_vm.submissionStatus && _vm.submissionStatus[key])?_c('span',[(_vm.submissionStatus[key].Status == 'No Submission')?_c('el-tooltip',{staticClass:\"item\",attrs:{\"effect\":\"dark\",\"content\":'You have not submitted a draft for this Project.',\"placement\":\"bottom\"}},[_c('i',{staticClass:\"fas fa-exclamation-circle\",staticStyle:{\"font-size\":\"15px\",\"color\":\"#f56c6c\"}})]):(\n new Date(assignment.DueDate) >=\n new Date(_vm.submissionStatus[key].UploadedDate)\n )?_c('el-tooltip',{staticClass:\"item\",attrs:{\"effect\":\"dark\",\"content\":'Submitted on ' +\n _vm.formatDate(_vm.submissionStatus[key].UploadedDate) +\n ' EST',\"placement\":\"bottom\"}},[_c('i',{staticClass:\"far fa-check-circle\",staticStyle:{\"font-size\":\"15px\",\"color\":\"rgb(11 133 95)\"}})]):_c('el-tooltip',{staticClass:\"item\",attrs:{\"effect\":\"dark\",\"content\":'Submitted on ' +\n _vm.formatDate(_vm.submissionStatus[key].UploadedDate) +\n ' EST',\"placement\":\"bottom\"}},[_c('i',{staticClass:\"far fa-check-circle\",staticStyle:{\"font-size\":\"15px\",\"color\":\"rgb(11 133 95)\"}})]),(_vm.submissionStatus[key].Status != 'No Submission')?_c('el-tooltip',{staticClass:\"item\",staticStyle:{\"margin-left\":\"10px\"},attrs:{\"effect\":\"dark\",\"content\":'Resubmit Project',\"placement\":\"bottom\"}},[_c('i',{staticClass:\"fas fa-file-upload\",staticStyle:{\"font-size\":\"15px\"},on:{\"click\":function($event){$event.stopPropagation();$event.preventDefault();return _vm.openDialog(assignment.Id, key)}}})]):_vm._e()],1):_vm._e()])]),(_vm.submissionStatus && _vm.submissionStatus[key])?_c('div',{staticStyle:{\"float\":\"right\"}},[(\n _vm.submissionStatus[key].Status == 'Submitted' ||\n _vm.submissionStatus[key].Status == 'Feedback Available'\n )?_c('el-tooltip',{staticClass:\"item\",staticStyle:{\"margin-left\":\"0px\"},attrs:{\"effect\":\"dark\",\"content\":\"View Submission\",\"placement\":\"bottom\"}},[_c('el-button',{staticClass:\"assignment-action-btn\",staticStyle:{\"padding\":\"7px 15px\",\"margin-top\":\"10px\"},attrs:{\"size\":\"mini\"},on:{\"click\":function($event){return _vm.viewSubmission(\n _vm.submissionStatus[key].DocId,\n assignment\n )}}},[_c('i',{staticClass:\"far fa-file-alt\",staticStyle:{\"font-size\":\"13px\"}}),_c('span',{staticStyle:{\"position\":\"relative\",\"margin-left\":\"6px\",\"font-size\":\"13px\"}},[_vm._v(\"\\n View Submission\\n \")])])],1):_vm._e(),(_vm.submissionStatus[key].Status == 'No Submission')?_c('el-tooltip',{staticClass:\"item\",staticStyle:{\"margin-left\":\"0px\"},attrs:{\"effect\":\"dark\",\"content\":\"Submit Project\",\"placement\":\"bottom\"}},[_c('el-button',{staticClass:\"assignment-action-btn\",staticStyle:{\"padding\":\"7px 15px\",\"margin-top\":\"10px\"},attrs:{\"size\":\"mini\"},on:{\"click\":function($event){return _vm.openDialog(assignment.Id, key)}}},[_c('i',{staticClass:\"fas fa-file-upload\",staticStyle:{\"font-size\":\"13px\"}}),_c('span',{staticStyle:{\"position\":\"relative\",\"margin-left\":\"6px\",\"font-size\":\"13px\"}},[_vm._v(\"\\n Submit Project\\n \")])])],1):_vm._e()],1):_vm._e()])]):_vm._e(),(_vm.userRole == 'Instructor')?_c('div',[_c('div',{staticClass:\"project-submission\"},_vm._l((assignment.Tasks),function(task,index){return _c('div',{key:task.Id,staticClass:\"assignment-row\",style:(_vm.heightMin),on:{\"click\":function($event){return _vm.gotoStudentSubmissions(assignment.Id, task.Type)}}},[_c('div',{staticStyle:{\"float\":\"left\",\"padding-left\":\"20px\",\"margin-top\":\"3px\",\"width\":\"35px\"}},[(task.Type == 'instructor_review')?_c('i',{staticClass:\"far fa-file-alt\",staticStyle:{\"font-size\":\"18px\",\"color\":\"#4e5e63\",\"margin-left\":\"10px\",\"margin-right\":\"10px\"},on:{\"click\":function($event){return _vm.gotoStudentSubmissions(assignment.Id, task.Type)}}}):(task.Type == 'self_review')?_c('i',{staticClass:\"fas fa-user-check\",staticStyle:{\"font-size\":\"15px\",\"color\":\"#4e5e63\",\"margin-left\":\"10px\",\"margin-right\":\"10px\"},on:{\"click\":function($event){return _vm.gotoStudentSubmissions(assignment.Id, task.Type)}}}):(task.Type == 'peer_review')?_c('i',{staticClass:\"fas fa-user-edit\",staticStyle:{\"font-size\":\"15px\",\"color\":\"#4e5e63\",\"margin-left\":\"10px\",\"margin-right\":\"10px\"},on:{\"click\":function($event){return _vm.gotoStudentSubmissions(assignment.Id, task.Type)}}}):_c('i',{staticClass:\"fab fa-rev\",staticStyle:{\"font-size\":\"16px\",\"color\":\"#4e5e63\",\"margin-left\":\"10px\",\"margin-right\":\"10px\"},on:{\"click\":function($event){return _vm.gotoStudentSubmissions(assignment.Id, task.Type)}}})]),_c('div',{staticStyle:{\"float\":\"left\",\"width\":\"calc(100% - 65px)\"}},[_c('div',{staticStyle:{\"float\":\"left\"}},[(task.Type != 'instructor_review')?_c('span',{staticStyle:{\"font-size\":\"15px\",\"margin-left\":\"10px\",\"font-weight\":\"bold\"},on:{\"click\":function($event){return _vm.editTask(task, index, key)}}},[_vm._v(\"\\n \"+_vm._s(task.Name)+\"\\n \")]):_c('span',{staticStyle:{\"font-size\":\"15px\",\"margin-left\":\"10px\",\"font-weight\":\"bold\",\"display\":\"inline-block\",\"margin-top\":\"8px\"},on:{\"click\":function($event){return _vm.editTask(task, index, key)}}},[_vm._v(\"\\n \"+_vm._s(task.Name)+\"\\n \")]),_c('p',{staticStyle:{\"margin\":\"0px\",\"margin-top\":\"5px\",\"font-size\":\"11px\",\"margin-left\":\"11px\"}},[(task.Type != 'instructor_review')?_c('span',[_c('span',[_vm._v(\"\\n Due Date: \"),_c('b',[_vm._v(_vm._s(_vm._f(\"formatDate\")(task.DueDate))+\"\\n EST\")]),_vm._v(\"  | \")]),_vm._v(\"\\n Submitted:\\n \"),(_vm.submissionNumbers &&\n _vm.submissionNumbers.length > 0 &&\n _vm.submissionNumbers.filter(\n function (s) { return s.TaskId == task.Id; }\n ).length > 0\n )?_c('span',[(_vm.submissionNumbers &&\n _vm.submissionNumbers.length > 0 &&\n _vm.submissionNumbers.filter(\n function (s) { return s.TaskId == task.Id; }\n )[0].SubmissionNumber > 1\n )?_c('span',[_c('b',[_vm._v(\"\\n \"+_vm._s(_vm.submissionNumbers.filter(\n function (s) { return s.TaskId == task.Id; }\n )[0].SubmissionNumber)+\"\\n students\")]),_vm._v(\" \\n \")]):_c('span',[_c('b',[_vm._v(\"1 student\")]),_vm._v(\" \")])]):_c('span',[_c('b',[_vm._v(\"0 students\")]),_vm._v(\" \")])]):_vm._e()])]),_c('div',{staticStyle:{\"float\":\"right\"}},[(task.Type == 'instructor_review')?_c('el-tooltip',{staticClass:\"item\",attrs:{\"effect\":\"dark\",\"content\":\"View All Instructor Feedback\",\"placement\":\"bottom\"}},[_c('el-button',{staticClass:\"assignment-action-btn\",staticStyle:{\"padding\":\"7px 15px\",\"margin-top\":\"4px\"},attrs:{\"size\":\"mini\"},on:{\"click\":function($event){$event.stopPropagation();$event.preventDefault();return _vm.gotoStudentScores(assignment.Id, key)}}},[_c('i',{staticClass:\"far fa-comments\",staticStyle:{\"font-size\":\"13px\"}})])],1):_vm._e(),(\n task.Type == 'peer_review' &&\n assignment.IsGroupAssignment &&\n _vm.teamFormationStatus &&\n _vm.teamFormationStatus.filter(\n function (t) { return t.AssignmentId == assignment.Id &&\n t.AssignmentType == 'group_peer_review'; }\n ).length > 0 &&\n _vm.teamFormationStatus.filter(\n function (t) { return t.AssignmentId == assignment.Id &&\n t.AssignmentType == 'group_peer_review'; }\n )[0].IsSubmitted\n )?_c('el-button',{staticClass:\"assignment-action-btn\",staticStyle:{\"padding\":\"7px 15px\",\"margin-top\":\"4px\"},attrs:{\"type\":\"success\",\"plain\":\"\",\"size\":\"mini\"},on:{\"click\":function($event){$event.stopPropagation();$event.preventDefault();return _vm.gotoPeerReviewTeamFormation(assignment.Id)}}},[_c('i',{staticClass:\"far fa-check-circle\",staticStyle:{\"font-size\":\"13px\",\"position\":\"relative\",\"top\":\"1px\"}}),_vm._v(\" \\n \"),_c('i',{staticClass:\"fas fa-user-friends\",staticStyle:{\"font-size\":\"13px\",\"position\":\"relative\",\"top\":\"1px\"}}),_c('span',{staticStyle:{\"margin-left\":\"2px\"}},[_vm._v(\"\\n Team Formation\\n \")])]):_vm._e(),(\n task.Type == 'peer_review' &&\n assignment.IsGroupAssignment &&\n _vm.teamFormationStatus &&\n _vm.teamFormationStatus.filter(\n function (t) { return t.AssignmentId == assignment.Id &&\n t.AssignmentType == 'group_peer_review'; }\n ).length == 0\n )?_c('el-button',{staticClass:\"assignment-action-btn\",staticStyle:{\"padding\":\"7px 15px\",\"margin-top\":\"4px\"},attrs:{\"type\":\"danger\",\"plain\":\"\",\"size\":\"mini\"},on:{\"click\":function($event){$event.stopPropagation();$event.preventDefault();return _vm.gotoPeerReviewTeamFormation(assignment.Id)}}},[_c('i',{staticClass:\"fas fa-exclamation-circle\",staticStyle:{\"font-size\":\"13px\",\"position\":\"relative\",\"top\":\"1px\"}}),_vm._v(\" \\n \"),_c('i',{staticClass:\"fas fa-user-friends\",staticStyle:{\"font-size\":\"13px\",\"position\":\"relative\",\"top\":\"1px\"}}),_c('span',{staticStyle:{\"margin-left\":\"2px\"}},[_vm._v(\"\\n Team Formation\\n \")])]):_vm._e(),(\n task.Type == 'peer_review' &&\n !assignment.IsGroupAssignment &&\n _vm.teamFormationStatus &&\n _vm.teamFormationStatus.filter(\n function (t) { return t.AssignmentId == assignment.Id &&\n t.AssignmentType == 'peer_review'; }\n ).length > 0 &&\n _vm.teamFormationStatus.filter(\n function (t) { return t.AssignmentId == assignment.Id &&\n t.AssignmentType == 'peer_review'; }\n )[0].IsSubmitted\n )?_c('el-button',{staticClass:\"assignment-action-btn\",staticStyle:{\"padding\":\"7px 15px\",\"margin-top\":\"4px\"},attrs:{\"type\":\"success\",\"plain\":\"\",\"size\":\"mini\"},on:{\"click\":function($event){$event.stopPropagation();$event.preventDefault();return _vm.gotoPeerReviewTeamFormation(assignment.Id)}}},[_c('i',{staticClass:\"far fa-check-circle\",staticStyle:{\"font-size\":\"13px\",\"position\":\"relative\",\"top\":\"1px\"}}),_vm._v(\" \\n \"),_c('i',{staticClass:\"fas fa-user-friends\",staticStyle:{\"font-size\":\"13px\",\"position\":\"relative\",\"top\":\"1px\"}}),_c('span',{staticStyle:{\"margin-left\":\"2px\"}},[_vm._v(\"\\n Team Formation\\n \")])]):_vm._e(),(\n task.Type == 'peer_review' &&\n !assignment.IsGroupAssignment &&\n _vm.teamFormationStatus &&\n _vm.teamFormationStatus.filter(\n function (t) { return t.AssignmentId == assignment.Id &&\n t.AssignmentType == 'peer_review'; }\n ).length == 0\n )?_c('el-button',{staticClass:\"assignment-action-btn\",staticStyle:{\"padding\":\"7px 15px\",\"margin-top\":\"4px\"},attrs:{\"type\":\"danger\",\"plain\":\"\",\"size\":\"mini\"},on:{\"click\":function($event){$event.stopPropagation();$event.preventDefault();return _vm.gotoPeerReviewTeamFormation(assignment.Id)}}},[_c('i',{staticClass:\"fas fa-exclamation-circle\",staticStyle:{\"font-size\":\"13px\",\"position\":\"relative\",\"top\":\"1px\"}}),_vm._v(\" \\n \"),_c('i',{staticClass:\"fas fa-user-friends\",staticStyle:{\"font-size\":\"13px\",\"position\":\"relative\",\"top\":\"1px\"}}),_c('span',{staticStyle:{\"margin-left\":\"2px\"}},[_vm._v(\"\\n Team Formation\\n \")])]):_vm._e(),_c('el-tooltip',{staticClass:\"item\",attrs:{\"effect\":\"dark\",\"content\":\"View Rubric\",\"placement\":\"bottom\"}},[_c('el-button',{staticClass:\"assignment-action-btn\",staticStyle:{\"padding\":\"7px 15px\",\"margin-top\":\"4px\"},attrs:{\"size\":\"mini\"},on:{\"click\":function($event){$event.stopPropagation();$event.preventDefault();return _vm.previewRubric(task.RubricId)}}},[_c('i',{staticClass:\"fa fa-list-ol\",staticStyle:{\"font-size\":\"13px\"}})])],1),_c('el-tooltip',{staticClass:\"item\",attrs:{\"effect\":\"dark\",\"content\":\"Edit Task\",\"placement\":\"bottom\"}},[_c('el-button',{staticClass:\"assignment-action-btn\",staticStyle:{\"padding\":\"7px 10px\",\"margin-top\":\"4px\"},attrs:{\"size\":\"mini\"},on:{\"click\":function($event){$event.stopPropagation();$event.preventDefault();return _vm.editTask(task, index, key)}}},[_c('i',{staticClass:\"far fa-edit\",staticStyle:{\"font-size\":\"13px\",\"position\":\"relative\",\"top\":\"0px\"}})])],1),_c('el-tooltip',{staticClass:\"item\",attrs:{\"effect\":\"dark\",\"content\":\"Delete Task\",\"placement\":\"bottom\"}},[_c('el-button',{staticClass:\"assignment-action-btn\",staticStyle:{\"padding\":\"7px 10px\",\"margin-top\":\"4px\"},attrs:{\"size\":\"mini\"},on:{\"click\":function($event){$event.stopPropagation();$event.preventDefault();return _vm.deleteTask(task.Id, index, key)}}},[_c('i',{staticClass:\"fas fa-trash-alt\",staticStyle:{\"font-size\":\"13px\",\"position\":\"relative\",\"top\":\"0px\"}})])],1)],1)])])}),0)]):_vm._e(),(_vm.userRole == 'Student' && _vm.submissionStatus[key])?_c('div',[_c('div',{staticClass:\"project-submission\"},_vm._l((assignment.Tasks),function(task){return _c('div',{key:task.Id,staticClass:\"assignment-row\",style:(_vm.heightMin),on:{\"click\":function($event){_vm.gotoDetails(\n assignment,\n _vm.submissionStatus[key].GroupId,\n task,\n _vm.submissionStatus[key].Status,\n _vm.reviewFeedback.filter(function (s) { return s.TaskId == task.Id; }).length > 0\n )}}},[_c('div',{staticStyle:{\"float\":\"left\",\"padding-left\":\"20px\",\"margin-top\":\"3px\",\"width\":\"35px\"}},[(\n task.Type == 'instructor_review' &&\n _vm.submissionStatus &&\n _vm.submissionStatus[key] &&\n _vm.submissionStatus[key].Status != 'No Submission'\n )?_c('i',{staticClass:\"far fa-file-alt\",staticStyle:{\"font-size\":\"18px\",\"color\":\"#4e5e63\",\"margin-left\":\"10px\",\"margin-right\":\"10px\"}}):(\n task.Type == 'instructor_review' &&\n (!_vm.submissionStatus ||\n !_vm.submissionStatus[key] ||\n _vm.submissionStatus[key].Status == 'No Submission')\n )?_c('i',{staticClass:\"far fa-file-alt\",staticStyle:{\"font-size\":\"18px\",\"color\":\"#4e5e63\",\"margin-left\":\"10px\",\"margin-right\":\"10px\"}}):(task.Type == 'self_review')?_c('i',{staticClass:\"fas fa-user-check\",staticStyle:{\"font-size\":\"15px\",\"color\":\"#4e5e63\",\"margin-left\":\"10px\",\"margin-right\":\"10px\",\"cursor\":\"pointer\"},on:{\"click\":function($event){return _vm.gotoTask(\n assignment,\n _vm.submissionStatus[key].GroupId,\n task\n )}}}):(task.Type == 'peer_review')?_c('i',{staticClass:\"fas fa-user-edit\",staticStyle:{\"font-size\":\"15px\",\"color\":\"#4e5e63\",\"margin-left\":\"10px\",\"margin-right\":\"10px\",\"cursor\":\"pointer\"},on:{\"click\":function($event){return _vm.gotoTask(\n assignment,\n _vm.submissionStatus[key].GroupId,\n task\n )}}}):_c('i',{staticClass:\"fab fa-rev\",staticStyle:{\"font-size\":\"16px\",\"color\":\"#4e5e63\",\"margin-left\":\"10px\",\"margin-right\":\"10px\",\"cursor\":\"pointer\"},on:{\"click\":function($event){return _vm.gotoTask(\n assignment,\n _vm.submissionStatus[key].GroupId,\n task\n )}}})]),_c('div',{staticStyle:{\"float\":\"left\",\"width\":\"calc(100% - 65px)\"}},[_c('div',{staticStyle:{\"float\":\"left\"}},[_c('span',{staticClass:\"assignment-title\",staticStyle:{\"font-size\":\"15px\",\"margin-left\":\"10px\"},on:{\"click\":function($event){return _vm.gotoTask(\n assignment,\n _vm.submissionStatus[key].GroupId,\n task\n )}}},[_vm._v(\"\\n \"+_vm._s(task.Name)+\"\\n \")]),_c('p',{staticStyle:{\"margin\":\"0px\",\"margin-top\":\"0px\",\"font-size\":\"11px\",\"margin-left\":\"11px\"}},[(task.Type != 'instructor_review')?_c('span',[_c('b',[_vm._v(\"Due Date:\")]),_vm._v(\"\\n \"+_vm._s(_vm._f(\"formatDate\")(task.DueDate))+\" EST  \\n \")]):_vm._e(),(\n task.Type == 'instructor_review' &&\n _vm.submissionStatus &&\n _vm.submissionStatus[key]\n )?_c('span',{staticStyle:{\"margin-left\":\"5px\"}},[(\n _vm.submissionStatus[key].Status ==\n 'No Submission'\n )?_c('el-tag',{attrs:{\"type\":\"danger\",\"size\":\"mini\"}},[_c('i',{staticClass:\"fas fa-exclamation-circle\",staticStyle:{\"font-size\":\"13px\",\"color\":\"#f56c6c\"}}),_vm._v(\"\\n Please submit your draft to the Project above\\n \")]):(\n ((_vm.reviewFeedback && _vm.reviewFeedback.filter(function (s) { return s.TaskId == task.Id; }).length > 0)))?_c('el-tag',{attrs:{\"type\":\"success\",\"size\":\"mini\"}},[_c('span',[_c('i',{staticClass:\"far fa-check-circle\",staticStyle:{\"font-size\":\"13px\",\"color\":\"#67c23a\"}}),_vm._v(\"\\n View Feedback\")])]):_c('el-tag',{attrs:{\"type\":\"warning\",\"size\":\"mini\"}},[_c('el-tooltip',{staticClass:\"item\",attrs:{\"effect\":\"dark\",\"placement\":\"bottom\"}},[_c('div',{attrs:{\"slot\":\"content\"},slot:\"content\"},[_vm._v(\"\\n You have submitted your paper and are waiting on your Instructor to provide feedback.\\n \")]),_c('span',[_c('i',{staticClass:\"fas fa-tasks\",staticStyle:{\"font-size\":\"13px\",\"color\":\"#e6a23c\"}}),_vm._v(\"\\n Awaiting Instructor Feedback \\n \")])])],1)],1):(\n task.Type == 'peer_review' &&\n _vm.taskSubmissionStatus &&\n _vm.taskSubmissionStatus.find(\n function (s) { return s.TaskId == task.Id; }\n )\n )?_c('span',{staticStyle:{\"margin-left\":\"5px\"}},[(\n _vm.taskSubmissionStatus.find(\n function (s) { return s.TaskId == task.Id; }\n ).Status == 'Completed'\n )?_c('el-tag',{attrs:{\"type\":\"success\",\"size\":\"mini\"}},[_c('i',{staticClass:\"far fa-check-circle\",staticStyle:{\"font-size\":\"13px\",\"color\":\"#67c23a\"}}),_vm._v(\"\\n Completed\\n \")]):(\n _vm.taskSubmissionStatus.find(\n function (s) { return s.TaskId == task.Id; }\n ).Status == 'In Progress'\n )?_c('el-tag',{attrs:{\"type\":\"warning\",\"size\":\"mini\"}},[_c('el-tooltip',{staticClass:\"item\",attrs:{\"effect\":\"dark\",\"placement\":\"bottom\"}},[_c('div',{attrs:{\"slot\":\"content\"},slot:\"content\"},[_vm._v(\"\\n Peer review is in progress. Peers in your group have submitted papers,\\n \"),_c('br'),_vm._v(\"but you have not completed all of your reviews.\\n \")]),_c('span',[_c('i',{staticClass:\"fas fa-tasks\",staticStyle:{\"font-size\":\"13px\",\"color\":\"#e6a23c\"}}),_vm._v(\"\\n In Progress\\n \")])])],1):(\n _vm.taskSubmissionStatus.find(\n function (s) { return s.TaskId == task.Id; }\n ).Status == 'Partially Completed'\n )?_c('el-tag',{attrs:{\"type\":\"warning\",\"size\":\"mini\"}},[_c('el-tooltip',{staticClass:\"item\",attrs:{\"effect\":\"dark\",\"placement\":\"bottom\"}},[_c('div',{attrs:{\"slot\":\"content\"},slot:\"content\"},[_vm._v(\"\\n Peer review is partially completed. You have reviewed all available papers,\\n \"),_c('br'),_vm._v(\"but there are peers in your group who have not submitted papers.\\n \")]),_c('span',[_c('i',{staticClass:\"fas fa-tasks\",staticStyle:{\"font-size\":\"13px\",\"color\":\"#569636\"}}),_vm._v(\"\\n Partially Completed\\n \")])])],1):_vm._e()],1):(\n _vm.taskSubmissionStatus &&\n _vm.taskSubmissionStatus.find(\n function (s) { return s.TaskId == task.Id; }\n )\n )?_c('span',{staticStyle:{\"margin-left\":\"5px\"}},[(\n _vm.taskSubmissionStatus.find(\n function (s) { return s.TaskId == task.Id; }\n ).Status == 'No Submission'\n )?_c('el-tag',{attrs:{\"type\":\"warning\",\"size\":\"mini\"}},[_c('el-tooltip',{staticClass:\"item\",attrs:{\"effect\":\"dark\",\"placement\":\"bottom\"}},[_c('div',{attrs:{\"slot\":\"content\"},slot:\"content\"},[_vm._v(\"\\n You have added feedback for this task but have not pressed Submit.\\n \")]),_c('span',[_c('i',{staticClass:\"fas fa-tasks\",staticStyle:{\"font-size\":\"13px\",\"color\":\"#e6a23c\"}}),_vm._v(\"\\n In Progress - not submitted\\n \")])])],1):(\n _vm.taskSubmissionStatus.find(\n function (s) { return s.TaskId == task.Id; }\n ).SubmittedDate != null\n )?_c('el-tag',{attrs:{\"type\":\"success\",\"size\":\"mini\"}},[_c('i',{staticClass:\"far fa-check-circle\",staticStyle:{\"font-size\":\"13px\",\"color\":\"#67c23a\"}}),_vm._v(\"\\n Submitted on\\n \"+_vm._s(_vm.formatDate(\n _vm.taskSubmissionStatus.find(\n function (s) { return s.TaskId == task.Id; }\n ).SubmittedDate\n ))+\"\\n EST\\n \")]):_c('el-tag',{attrs:{\"type\":\"warning\",\"size\":\"mini\"}},[_c('i',{staticClass:\"fas fa-tasks\",staticStyle:{\"font-size\":\"13px\",\"color\":\"#e6a23c\"}}),_vm._v(\"\\n In Progress\\n \")])],1):_c('span',{staticStyle:{\"margin-left\":\"5px\"}},[_c('el-tag',{attrs:{\"type\":\"danger\",\"size\":\"mini\"}},[_c('i',{staticClass:\"fas fa-exclamation-circle\",staticStyle:{\"font-size\":\"13px\",\"color\":\"#f56c6c\"}}),_vm._v(\"\\n No Submission\\n \")])],1)])]),(\n (task.Type != 'self_review' &&\n task.Type != 'appraisal' &&\n ((_vm.reviewFeedback && _vm.reviewFeedback.filter(function (s) { return s.TaskId == task.Id; }).length > 0)))\n )?_c('div',{staticStyle:{\"float\":\"right\"}},[_c('el-button',{staticClass:\"assignment-action-btn\",staticStyle:{\"margin-top\":\"7px\",\"padding\":\"7px 15px\"},attrs:{\"size\":\"mini\"},on:{\"click\":function($event){$event.stopPropagation();$event.preventDefault();return _vm.viewTaskFeedback(assignment, task)}}},[_c('i',{staticClass:\"far fa-comment-alt\",staticStyle:{\"font-size\":\"13px\"}}),_c('span',{staticStyle:{\"position\":\"relative\",\"top\":\"-1px\",\"margin-left\":\"6px\"}},[_vm._v(\"\\n View Feedback\\n \")])])],1):_vm._e()])])}),0)]):_vm._e()])],1)}),0)],1):_vm._e()])]),_c('el-dialog',{attrs:{\"id\":\"preview-rubric-dialog\",\"visible\":_vm.rubricPreviewDialogVisible,\"width\":\"750px\",\"top\":\"50px\",\"center\":\"\"},on:{\"update:visible\":function($event){_vm.rubricPreviewDialogVisible=$event}}},[_c('template',{slot:\"title\"},[(_vm.rubric)?_c('span',{staticClass:\"rubric-dialog-title\"},[_vm._v(\"\\n Preview \"),_c('b',[_vm._v(_vm._s(_vm.rubric.RubricName))])]):_vm._e()]),_c('div',{attrs:{\"id\":\"rubric\"}},[_c('div',{staticStyle:{\"height\":\"100%\",\"overflow\":\"auto\"}},_vm._l((_vm.criterias),function(criteria,criteriaIndex){return _c('el-card',{key:criteria.Id,staticStyle:{\"margin-bottom\":\"5px\",\"margin-left\":\"3px\"}},[_c('div',{staticClass:\"clearfix\",attrs:{\"slot\":\"header\"},slot:\"header\"},[_c('span',{staticStyle:{\"font-size\":\"16px\",\"font-weight\":\"bold\"}},[_vm._v(\"\\n \"+_vm._s(criteria.CriteriaName)+\"\\n \")]),_c('div',{staticStyle:{\"font-size\":\"14px\",\"margin-top\":\"10px\"}},[(criteria.Description && criteria.Description != '')?_c('el-text',{staticClass:\" criteria-description newLineStringStyle \"},[_vm._v(_vm._s(criteria.Description))]):_vm._e()],1)]),_c('div',[_c('div',[(criteria.UseAsGrade)?_c('el-radio-group',{staticStyle:{\"margin-bottom\":\"10px\",\"min-width\":\"240px\"},attrs:{\"id\":criteria.Id}},_vm._l((criteria.RubricCriteriaMilestones.slice()),function(milestone){return _c('el-tooltip',{key:milestone.Id,staticClass:\"item\",attrs:{\"effect\":\"light\",\"placement\":\"top\"}},[_c('div',{staticStyle:{\"max-width\":\"500px\"},attrs:{\"slot\":\"content\"},slot:\"content\"},[_vm._v(\"\\n \"+_vm._s(milestone.Description)+\"\\n \")]),_c('el-radio-button',{key:milestone.Id,attrs:{\"label\":milestone.Value}})],1)}),1):_vm._e()],1),_c('div',[(criteria.UseAsGrade || criteria.UseAsTextComment)?_c('el-input',{staticClass:\"criteria-comment\",attrs:{\"criteria-index\":criteriaIndex,\"disabled\":true,\"type\":\"textarea\",\"placeholder\":\"Score Explanation\",\"rows\":3,\"maxlength\":8000}}):_vm._e()],1)])])}),1)]),_c('span',{staticClass:\"dialog-footer\",attrs:{\"slot\":\"footer\"},slot:\"footer\"},[_c('el-button',{on:{\"click\":function($event){_vm.rubricPreviewDialogVisible = false}}},[_vm._v(\"\\n close\\n \")]),_c('el-button',{on:{\"click\":_vm.printContent}},[_vm._v(\"\\n print\\n \")])],1)],2),(_vm.selectedAssignment && _vm.userRole == 'Student')?_c('el-dialog',{attrs:{\"id\":\"survey-dialog\",\"visible\":_vm.surveyDialogVisible,\"width\":_vm.surveyWidth,\"center\":\"\"},on:{\"update:visible\":function($event){_vm.surveyDialogVisible=$event},\"closed\":function($event){return _vm.cancelSurvey()}}},[_c('template',{slot:\"title\"},[_c('span',{staticClass:\"dialog-title\"},[_vm._v(\"\\n \"+_vm._s(_vm.surveyTitle)+\"\\n \")])]),_c('hr'),(_vm.surveyId == 4)?_c('div',{staticClass:\"tip\",staticStyle:{\"padding\":\"4px 4px\",\"background-color\":\"#daf1ea\",\"border-radius\":\"4px\",\"border-left\":\"5px solid rgb(28 138 105)\",\"margin-bottom\":\"10px\"}},[_c('p',{staticStyle:{\"font-size\":\"14px\",\"color\":\"#444444\",\"word-break\":\"normal\"}},[_c('b',[_vm._v(\"Introduction:\")]),_vm._v(\" The USF First-Year Composition (FYC) program\\n continues to seek information for program evaluation. The following\\n 20-item survey asks you about your attitudes and perceptions of\\n \"),_c('i',[_vm._v(\"labor-based grading contracts\")]),_vm._v(\". Your responses will be kept\\n private and secure and will not be shared outside of the program\\n evaluation team.\\n \")])]):_vm._e(),(_vm.surveyId == 3)?_c('div',{staticClass:\"tip\",staticStyle:{\"padding\":\"4px 4px\",\"background-color\":\"#daf1ea\",\"border-radius\":\"4px\",\"border-left\":\"5px solid rgb(28 138 105)\",\"margin-bottom\":\"10px\"}},[_c('p',{staticStyle:{\"font-size\":\"14px\",\"color\":\"#444444\",\"word-break\":\"normal\"}},[_vm._v(\"\\n Before you complete your assignment upload, please help us in planning\\n for the spring term by answering the following questions. You will be\\n directed to finish the upload after you submit.\\n \")])]):(_vm.surveyId == 4)?_c('div',{staticClass:\"tip\",staticStyle:{\"padding\":\"4px 4px\",\"background-color\":\"#daf1ea\",\"border-radius\":\"4px\",\"border-left\":\"5px solid rgb(28 138 105)\",\"margin-bottom\":\"10px\"}},[_c('p',{staticStyle:{\"font-size\":\"14px\",\"color\":\"#444444\",\"word-break\":\"normal\"}},[_c('b',[_vm._v(\"Directions:\")]),_vm._v(\" Read each of the following statements and then\\n indicate the extent to which you \"),_c('i',[_vm._v(\"agree\")]),_vm._v(\" or \"),_c('i',[_vm._v(\"disagree\")]),_vm._v(\" with\\n the statement. After selected statements, you will be invited to\\n elaborate on your response. These follow up questions are not\\n required, but your responses do help us better understand why you\\n answered the way you did.\\n \")])]):_c('div',{staticClass:\"tip\",staticStyle:{\"padding\":\"4px 4px\",\"background-color\":\"#daf1ea\",\"border-radius\":\"4px\",\"border-left\":\"5px solid rgb(28 138 105)\",\"margin-bottom\":\"10px\"}},[_c('p',{staticStyle:{\"font-size\":\"14px\",\"color\":\"#444444\",\"word-break\":\"normal\"}},[_vm._v(\"\\n Please complete the following survey before submitting your paper.\\n \")])]),(_vm.questions)?_c('div',{staticStyle:{\"width\":\"100%\",\"margin\":\"auto\",\"margin-top\":\"20px\",\"word-break\":\"normal\"}},_vm._l((_vm.questions),function(question,index){return _c('div',{key:question.Id,staticStyle:{\"margin-top\":\"15px\"}},[(question.Type != 'Heading')?_c('span',[_vm._v(\"\\n \"+_vm._s(_vm.getQuestionNumber(index) + \". \" + question.Content)+\"\\n \")]):_c('span',{staticStyle:{\"font-size\":\"14px\"}},[_c('b',[_vm._v(_vm._s(question.Content))])]),_c('br'),(\n question.Type != 'Heading' &&\n _vm.surveyResponses &&\n _vm.surveyResponses[index]\n )?_c('div',[(question.Type == 'Open Ended')?_c('div',{staticStyle:{\"margin-top\":\"5px\"}},[_c('el-input',{staticStyle:{\"width\":\"100%\"},attrs:{\"type\":\"textarea\",\"rows\":3,\"placeholder\":\"\"},model:{value:(_vm.surveyResponses[index].ResponseDetail),callback:function ($$v) {_vm.$set(_vm.surveyResponses[index], \"ResponseDetail\", $$v)},expression:\"surveyResponses[index].ResponseDetail\"}})],1):(question.Type == 'Multiple Choice')?_c('div',[_c('el-radio-group',{staticStyle:{\"margin-top\":\"5px\",\"width\":\"100%\"},attrs:{\"id\":question.Id},on:{\"input\":function($event){_vm.submitSurveyActive = true}},model:{value:(_vm.surveyResponses[index].AnswerId),callback:function ($$v) {_vm.$set(_vm.surveyResponses[index], \"AnswerId\", $$v)},expression:\"surveyResponses[index].AnswerId\"}},_vm._l((question.Answers),function(answer){return _c('div',{key:answer.Id,staticStyle:{\"margin-top\":\"5px\",\"width\":\"100%\"}},[_c('el-radio',{staticStyle:{\"white-space\":\"normal\",\"word-break\":\"break-all\"},attrs:{\"label\":answer.Id}},[_vm._v(_vm._s(answer.Content))])],1)}),0)],1):(\n question.Type == 'Single Followup' && _vm.followupQuestion != null\n )?_c('div',[_c('el-radio-group',{staticStyle:{\"margin-top\":\"5px\"},attrs:{\"id\":question.Id},on:{\"input\":function($event){return _vm.checkSubmitSurveyActive()}},model:{value:(_vm.surveyResponses[index].AnswerId),callback:function ($$v) {_vm.$set(_vm.surveyResponses[index], \"AnswerId\", $$v)},expression:\"surveyResponses[index].AnswerId\"}},_vm._l((question.Answers),function(answer){return _c('el-radio-button',{key:answer.Id,attrs:{\"label\":answer.Id}},[_vm._v(\"\\n \"+_vm._s(answer.Content)+\"\\n \")])}),1),_c('div',{staticStyle:{\"margin-top\":\"10px\"}},[_c('span',{staticStyle:{\"font-size\":\"13.65px\"}},[_vm._v(\"\\n \"+_vm._s(_vm.followupQuestion.Content)+\"\\n \")]),_c('el-input',{staticStyle:{\"width\":\"100%\",\"margin-top\":\"5px\"},attrs:{\"type\":\"textarea\",\"rows\":3,\"placeholder\":\"\"},model:{value:(_vm.surveyResponses[index].ResponseDetail),callback:function ($$v) {_vm.$set(_vm.surveyResponses[index], \"ResponseDetail\", $$v)},expression:\"surveyResponses[index].ResponseDetail\"}})],1)],1):_c('div',[_c('el-radio-group',{staticStyle:{\"margin-top\":\"5px\"},attrs:{\"id\":question.Id},on:{\"input\":function($event){_vm.submitSurveyActive = true}},model:{value:(_vm.surveyResponses[index].AnswerId),callback:function ($$v) {_vm.$set(_vm.surveyResponses[index], \"AnswerId\", $$v)},expression:\"surveyResponses[index].AnswerId\"}},_vm._l((question.Answers),function(answer){return _c('el-radio-button',{key:answer.Id,attrs:{\"label\":answer.Id}},[_vm._v(\"\\n \"+_vm._s(answer.Content)+\"\\n \")])}),1)],1)]):_vm._e()])}),0):_vm._e(),(_vm.surveyId == 4)?_c('div',{staticStyle:{\"margin-top\":\"20px\",\"text-align\":\"center\"}},[_c('span',{staticStyle:{\"word-break\":\"normal\"}},[_c('b',[_vm._v(\"The FYC Program thanks you for taking the time to provide feedback\\n on our program. If you have any questions, please contact Kara\\n Larson (kklarson@usf.edu).\")])])]):_vm._e(),_c('span',{staticClass:\"dialog-footer\",attrs:{\"slot\":\"footer\"},slot:\"footer\"},[_c('el-button',{attrs:{\"disabled\":!_vm.submitSurveyActive,\"type\":\"primary\"},on:{\"click\":function($event){return _vm.submitSurvey()}}},[_vm._v(\"\\n Submit\\n \")]),(\n _vm.surveyId != 5 &&\n _vm.surveyId != 6 &&\n _vm.surveyId != 7 &&\n _vm.surveyId != 8 &&\n _vm.surveyId != 9 &&\n _vm.surveyId != 10 &&\n _vm.surveyId != 11 &&\n _vm.surveyId != 12 &&\n _vm.surveyId != 13 &&\n _vm.surveyId != 14 &&\n _vm.surveyId != 15\n )?_c('el-button',{on:{\"click\":function($event){_vm.surveyDialogVisible = false}}},[_vm._v(\"\\n Skip\\n \")]):_vm._e()],1)],2):_vm._e(),(_vm.selectedAssignment && _vm.userRole == 'Student')?_c('el-dialog',{attrs:{\"id\":\"upload-dialog\",\"visible\":_vm.uploadDialogVisible,\"width\":\"550px\",\"center\":\"\"},on:{\"update:visible\":function($event){_vm.uploadDialogVisible=$event}}},[_c('template',{slot:\"title\"},[_c('div',{staticStyle:{\"padding-left\":\"10px\",\"padding-right\":\"10px\"}},[_c('span',{staticClass:\"dialog-title\"},[_vm._v(\"\\n Upload Paper for \"+_vm._s(_vm.selectedAssignment.AssignmentName)+\"\\n \")])])]),_c('hr'),(\n _vm.submissionStatus &&\n _vm.submissionStatus.filter(\n function (s) { return s.AssignmentId == _vm.selectedAssignment.Id; }\n )[0].Status == 'Feedback Available'\n )?_c('div',{staticClass:\"tip\",staticStyle:{\"padding\":\"5px 10px\",\"background-color\":\"rgb(253, 226, 226)\",\"border-radius\":\"4px\",\"border-left\":\"5px solid rgb(245, 108, 108)\",\"margin-bottom\":\"10px\"}},[_c('p',{staticStyle:{\"font-size\":\"14px\",\"color\":\"#444444\",\"word-break\":\"normal\"}},[_vm._v(\"\\n Feedback is associated with your draft. If you resubmit and replace\\n this draft, any required feedback must be resubmitted as well.\\n \")])]):_vm._e(),(_vm.selectedAssignment.UseCanvasIntegration && _vm.canvasAssignmentName)?_c('div',{staticClass:\"tip\",staticStyle:{\"padding\":\"5px 10px\",\"background-color\":\"#daf1ea\",\"border-radius\":\"4px\",\"border-left\":\"5px solid rgb(28 138 105)\",\"margin-bottom\":\"10px\"}},[_c('p',{staticStyle:{\"font-size\":\"14px\",\"color\":\"#444444\",\"word-break\":\"normal\"}},[_vm._v(\"\\n This project was synced with\\n \"),_c('a',{staticStyle:{\"color\":\"#009374\"},attrs:{\"href\":\"#\"},on:{\"click\":function($event){return _vm.viewCanvasAssignment(_vm.htmlUrl)}}},[_vm._v(_vm._s(_vm.canvasAssignmentName))]),_vm._v(\"\\n assignment in Canvas. Your paper will be submitted in both USF Writes\\n and Canvas.\\n \")])]):_vm._e(),_c('el-upload',{ref:\"upload\",staticClass:\"upload-demo\",staticStyle:{\"width\":\"360px\",\"margin\":\"auto\",\"margin-top\":\"20px\"},attrs:{\"drag\":\"\",\"action\":\"\",\"on-remove\":_vm.handleRemove,\"before-remove\":_vm.beforeRemove,\"on-change\":_vm.onUploadChange,\"auto-upload\":false,\"multiple\":false,\"limit\":1,\"on-exceed\":_vm.handleExceed,\"list-type\":\"picture\",\"accept\":\".pdf,.PDF,.doc,.DOC,.docx,.DOCX\"}},[_c('i',{staticClass:\"fas fa-cloud-upload-alt\",staticStyle:{\"font-size\":\"50px\",\"margin\":\"45px 0 16px\",\"line-height\":\"50px\"}}),_c('div',{staticClass:\"el-upload__text\",staticStyle:{\"text-align\":\"center\"}},[_vm._v(\"\\n Drop file here or \"),_c('em',[_vm._v(\"click to submit your paper\")])]),_c('div',{staticClass:\"el-upload__tip\",staticStyle:{\"text-align\":\"center\"},attrs:{\"slot\":\"tip\"},slot:\"tip\"},[_vm._v(\"\\n Only pdf, doc, and docx files less than 20mb are accepted.\\n \")])]),_c('span',{staticClass:\"dialog-footer\",attrs:{\"slot\":\"footer\"},slot:\"footer\"},[_c('el-button',{on:{\"click\":function($event){_vm.uploadDialogVisible = false}}},[_vm._v(\" Cancel \")]),(_vm.file)?_c('el-button',{attrs:{\"type\":\"primary\",\"disabled\":_vm.isSubmitting},on:{\"click\":function($event){return _vm.submitPaper()}}},[(_vm.isSubmitting)?_c('i',{staticClass:\"fas fa-spinner icon-spinner\"}):_vm._e(),_vm._v(\"\\n Submit\\n \")]):_vm._e()],1)],2):_vm._e(),(_vm.userRole == 'Instructor')?_c('el-dialog',{staticClass:\"assignment-dialog\",attrs:{\"visible\":_vm.newAssignmentDialogVisible,\"width\":\"650px\",\"center\":\"\"},on:{\"update:visible\":function($event){_vm.newAssignmentDialogVisible=$event},\"closed\":function($event){return _vm.closeAssignmentDialog()}}},[_c('template',{slot:\"title\"},[_c('span',{staticClass:\"dialog-title\"},[_vm._v(\" Add New Project \")])]),_c('hr'),_c('el-form',{ref:\"newAssignmentForm\",staticStyle:{\"margin-top\":\"20px\"},attrs:{\"model\":_vm.newAssignmentForm,\"rules\":_vm.rules}},[_c('el-form-item',{attrs:{\"label\":\"Project Name\",\"prop\":\"AssignmentName\",\"required\":\"\",\"label-width\":_vm.formLabelWidth}},[_c('el-input',{attrs:{\"autocomplete\":\"off\"},model:{value:(_vm.newAssignmentForm.AssignmentName),callback:function ($$v) {_vm.$set(_vm.newAssignmentForm, \"AssignmentName\", $$v)},expression:\"newAssignmentForm.AssignmentName\"}})],1),_c('el-form-item',{attrs:{\"label\":\"Project Due Date\",\"prop\":\"DueDate\",\"required\":\"\",\"label-width\":_vm.formLabelWidth}},[_c('el-date-picker',{staticStyle:{\"width\":\"100%\"},attrs:{\"type\":\"datetime\",\"placeholder\":\"Select a date\",\"format\":\"MMM d, hh:mm a\"},model:{value:(_vm.newAssignmentForm.DueDate),callback:function ($$v) {_vm.$set(_vm.newAssignmentForm, \"DueDate\", $$v)},expression:\"newAssignmentForm.DueDate\"}})],1),_c('el-form-item',{attrs:{\"label\":\"Rubric\",\"prop\":\"RubricId\",\"required\":\"\",\"label-width\":_vm.formLabelWidth}},[_c('el-select',{staticStyle:{\"width\":\"100%\"},attrs:{\"value-key\":\"Id\",\"filterable\":\"\",\"placeholder\":\"Select Rubric\"},model:{value:(_vm.newAssignmentForm.RubricId),callback:function ($$v) {_vm.$set(_vm.newAssignmentForm, \"RubricId\", $$v)},expression:\"newAssignmentForm.RubricId\"}},_vm._l((_vm.rubricList),function(item){return _c('el-option',{key:item.Id,attrs:{\"label\":item.RubricName,\"value\":item.Id}})}),1)],1),_c('el-form-item',{attrs:{\"label\":\"Is Group Project\",\"prop\":\"IsGroupAssignment\",\"label-width\":_vm.formLabelWidth}},[_c('el-checkbox',{staticStyle:{\"margin-top\":\"12px\"},attrs:{\"name\":\"isGroup\"},model:{value:(_vm.newAssignmentForm.IsGroupAssignment),callback:function ($$v) {_vm.$set(_vm.newAssignmentForm, \"IsGroupAssignment\", $$v)},expression:\"newAssignmentForm.IsGroupAssignment\"}})],1),(_vm.newAssignmentForm.UsePeerReview)?_c('el-form-item',{attrs:{\"label\":\"Peer Review Due Date\",\"prop\":\"PeerReviewDueDate\",\"required\":\"\",\"label-width\":_vm.formLabelWidth}},[_c('el-date-picker',{staticStyle:{\"width\":\"100%\"},attrs:{\"type\":\"datetime\",\"placeholder\":\"Select a date\",\"format\":\"MMM d, hh:mm a\"},model:{value:(_vm.newAssignmentForm.PeerReviewDueDate),callback:function ($$v) {_vm.$set(_vm.newAssignmentForm, \"PeerReviewDueDate\", $$v)},expression:\"newAssignmentForm.PeerReviewDueDate\"}})],1):_vm._e(),(_vm.newAssignmentForm.UseSelfAssessment)?_c('el-form-item',{attrs:{\"label\":\"Self Review Due Date\",\"prop\":\"SelfReviewDueDate\",\"required\":\"\",\"label-width\":_vm.formLabelWidth}},[_c('el-date-picker',{staticStyle:{\"width\":\"100%\"},attrs:{\"type\":\"datetime\",\"placeholder\":\"Select a date\",\"format\":\"MMM d, hh:mm a\"},model:{value:(_vm.newAssignmentForm.SelfReviewDueDate),callback:function ($$v) {_vm.$set(_vm.newAssignmentForm, \"SelfReviewDueDate\", $$v)},expression:\"newAssignmentForm.SelfReviewDueDate\"}})],1):_vm._e(),(_vm.newAssignmentForm.UseAppraisal)?_c('el-form-item',{attrs:{\"label\":\"Appraisal Rubric\",\"prop\":\"AppraisalRubricId\",\"required\":\"\",\"label-width\":_vm.formLabelWidth}},[_c('el-select',{staticStyle:{\"width\":\"100%\"},attrs:{\"value-key\":\"Id\",\"filterable\":\"\",\"placeholder\":\"Select Appraisal Rubric\"},model:{value:(_vm.newAssignmentForm.AppraisalRubricId),callback:function ($$v) {_vm.$set(_vm.newAssignmentForm, \"AppraisalRubricId\", $$v)},expression:\"newAssignmentForm.AppraisalRubricId\"}},_vm._l((_vm.rubricList),function(item){return _c('el-option',{key:item.Id,attrs:{\"label\":item.RubricName,\"value\":item.Id}})}),1)],1):_vm._e(),(_vm.newAssignmentForm.UseAppraisal)?_c('el-form-item',{attrs:{\"label\":\"Appraisal Due Date\",\"prop\":\"DueDate\",\"required\":\"\",\"label-width\":_vm.formLabelWidth}},[_c('el-date-picker',{staticStyle:{\"width\":\"100%\"},attrs:{\"type\":\"datetime\",\"placeholder\":\"Select a date\",\"format\":\"MMM d, hh:mm a\"},model:{value:(_vm.newAssignmentForm.AppraisalDueDate),callback:function ($$v) {_vm.$set(_vm.newAssignmentForm, \"AppraisalDueDate\", $$v)},expression:\"newAssignmentForm.AppraisalDueDate\"}})],1):_vm._e(),_c('el-form-item',{staticStyle:{\"margin-bottom\":\"5px\"},attrs:{\"prop\":\"Description\",\"label-width\":_vm.formLabelWidth,\"label\":\"Project Description\"}},[_c('editor-menu-bar',{attrs:{\"editor\":_vm.newDescriptionEditor},scopedSlots:_vm._u([{key:\"default\",fn:function(ref){\n var commands = ref.commands;\n var isActive = ref.isActive;\nreturn _c('div',{staticClass:\"menubar\",staticStyle:{\"margin-bottom\":\"5px\",\"margin-top\":\"5px\"}},[_c('div',{staticClass:\"editor-btn\",class:{ 'is-active': isActive.bold() },attrs:{\"type\":\"button\"},on:{\"click\":commands.bold}},[_c('i',{staticClass:\"fas fa-bold\"})]),_c('div',{staticClass:\"editor-btn\",class:{ 'is-active': isActive.italic() },attrs:{\"type\":\"button\"},on:{\"click\":commands.italic}},[_c('i',{staticClass:\"fas fa-italic\"})]),_c('div',{staticClass:\"editor-btn\",class:{ 'is-active': isActive.strike() },on:{\"click\":commands.strike}},[_c('i',{staticClass:\"fas fa-strikethrough\"})]),_c('div',{staticClass:\"editor-btn\",class:{ 'is-active': isActive.underline() },on:{\"click\":commands.underline}},[_c('i',{staticClass:\"fas fa-underline\"})]),_c('div',{staticClass:\"editor-btn\",class:{ 'is-active': isActive.heading({ level: 1 }) },on:{\"click\":function($event){return commands.heading({ level: 1 })}}},[_c('i',{staticClass:\"fas fa-heading\"}),_c('strong',[_vm._v(\"1\")])]),_c('div',{staticClass:\"editor-btn\",class:{ 'is-active': isActive.heading({ level: 2 }) },on:{\"click\":function($event){return commands.heading({ level: 2 })}}},[_c('i',{staticClass:\"fas fa-heading\"}),_c('strong',[_vm._v(\"2\")])]),_c('div',{staticClass:\"editor-btn\",class:{ 'is-active': isActive.heading({ level: 3 }) },on:{\"click\":function($event){return commands.heading({ level: 3 })}}},[_c('i',{staticClass:\"fas fa-heading\"}),_c('strong',[_vm._v(\"3\")])]),_c('div',{staticClass:\"editor-btn\",class:{ 'is-active': isActive.bullet_list() },on:{\"click\":commands.bullet_list}},[_c('i',{staticClass:\"fas fa-list-ul\"})]),_c('div',{staticClass:\"editor-btn\",class:{ 'is-active': isActive.ordered_list() },on:{\"click\":commands.ordered_list}},[_c('i',{staticClass:\"fas fa-list-ol\"})]),_c('div',{staticClass:\"editor-btn\",class:{ 'is-active': isActive.blockquote() },on:{\"click\":function($event){return commands.blockquote()}}},[_c('i',{staticClass:\"fas fa-quote-right\"})])])}}],null,false,2947961898)}),_c('editor-content',{staticClass:\"el-textarea__inner assignment-edit-editor\",attrs:{\"id\":\"description-editor\",\"editor\":_vm.newDescriptionEditor}})],1)],1),_c('span',{staticClass:\"dialog-footer\",attrs:{\"slot\":\"footer\"},slot:\"footer\"},[_c('el-button',{on:{\"click\":function($event){_vm.newAssignmentDialogVisible = false}}},[_vm._v(\"\\n Cancel\\n \")]),_c('el-button',{attrs:{\"type\":\"primary\"},on:{\"click\":function($event){return _vm.addNewAssignment()}}},[_vm._v(\"\\n Submit\\n \")])],1)],2):_vm._e(),(_vm.selectedAssignment && _vm.userRole == 'Instructor')?_c('el-dialog',{staticClass:\"assignment-dialog\",attrs:{\"visible\":_vm.editAssignmentDialogVisible,\"width\":\"650px\",\"center\":\"\"},on:{\"update:visible\":function($event){_vm.editAssignmentDialogVisible=$event}}},[_c('template',{slot:\"title\"},[_c('span',{staticClass:\"dialog-title\"},[_vm._v(\"\\n Edit \"+_vm._s(_vm.selectedAssignment.AssignmentName)+\"\\n \")])]),_c('hr'),_c('el-form',{ref:\"assignmentForm\",staticStyle:{\"margin-top\":\"20px\"},attrs:{\"model\":_vm.selectedAssignment,\"rules\":_vm.rules}},[_c('el-form-item',{attrs:{\"label\":\"Project Name\",\"prop\":\"AssignmentName\",\"required\":\"\",\"label-width\":_vm.formLabelWidth}},[_c('el-input',{attrs:{\"autocomplete\":\"off\"},model:{value:(_vm.selectedAssignment.AssignmentName),callback:function ($$v) {_vm.$set(_vm.selectedAssignment, \"AssignmentName\", $$v)},expression:\"selectedAssignment.AssignmentName\"}})],1),_c('el-form-item',{attrs:{\"label\":\"Project Due Date\",\"prop\":\"DueDate\",\"required\":\"\",\"label-width\":_vm.formLabelWidth}},[_c('el-date-picker',{staticStyle:{\"width\":\"100%\"},attrs:{\"type\":\"datetime\",\"placeholder\":\"Select a date\",\"format\":\"MMM d, hh:mm a\"},model:{value:(_vm.selectedAssignment.DueDate),callback:function ($$v) {_vm.$set(_vm.selectedAssignment, \"DueDate\", $$v)},expression:\"selectedAssignment.DueDate\"}})],1),_c('el-form-item',{attrs:{\"label\":\"Rubric\",\"prop\":\"RubricId\",\"required\":\"\",\"label-width\":_vm.formLabelWidth}},[_c('el-select',{staticStyle:{\"width\":\"100%\"},attrs:{\"value-key\":\"Id\",\"filterable\":\"\",\"placeholder\":\"Select Rubric\"},model:{value:(_vm.selectedAssignment.RubricId),callback:function ($$v) {_vm.$set(_vm.selectedAssignment, \"RubricId\", $$v)},expression:\"selectedAssignment.RubricId\"}},_vm._l((_vm.rubricList),function(item){return _c('el-option',{key:item.Id,attrs:{\"label\":item.RubricName,\"value\":item.Id}})}),1)],1),_c('el-form-item',{attrs:{\"label\":\"Is Group Project\",\"prop\":\"IsGroupAssignment\",\"label-width\":_vm.formLabelWidth}},[_c('el-checkbox',{staticStyle:{\"margin-top\":\"12px\"},attrs:{\"name\":\"isGroup\"},model:{value:(_vm.selectedAssignment.IsGroupAssignment),callback:function ($$v) {_vm.$set(_vm.selectedAssignment, \"IsGroupAssignment\", $$v)},expression:\"selectedAssignment.IsGroupAssignment\"}})],1),(_vm.selectedAssignment.UsePeerReview)?_c('el-form-item',{attrs:{\"label\":\"Peer Review Due Date\",\"prop\":\"PeerReviewDueDate\",\"required\":\"\",\"label-width\":_vm.formLabelWidth}},[_c('el-date-picker',{staticStyle:{\"width\":\"100%\"},attrs:{\"type\":\"datetime\",\"placeholder\":\"Select a date\",\"format\":\"MMM d, hh:mm a\"},model:{value:(_vm.selectedAssignment.PeerReviewDueDate),callback:function ($$v) {_vm.$set(_vm.selectedAssignment, \"PeerReviewDueDate\", $$v)},expression:\"selectedAssignment.PeerReviewDueDate\"}})],1):_vm._e(),(_vm.selectedAssignment.UseSelfAssessment)?_c('el-form-item',{attrs:{\"label\":\"Self Review Due Date\",\"prop\":\"SelfReviewDueDate\",\"required\":\"\",\"label-width\":_vm.formLabelWidth}},[_c('el-date-picker',{staticStyle:{\"width\":\"100%\"},attrs:{\"type\":\"datetime\",\"placeholder\":\"Select a date\",\"format\":\"MMM d, hh:mm a\"},model:{value:(_vm.selectedAssignment.SelfReviewDueDate),callback:function ($$v) {_vm.$set(_vm.selectedAssignment, \"SelfReviewDueDate\", $$v)},expression:\"selectedAssignment.SelfReviewDueDate\"}})],1):_vm._e(),(_vm.selectedAssignment.UseAppraisal)?_c('el-form-item',{attrs:{\"label\":\"Appraisal Rubric\",\"prop\":\"AppraisalRubricId\",\"required\":\"\",\"label-width\":_vm.formLabelWidth}},[_c('el-select',{staticStyle:{\"width\":\"100%\"},attrs:{\"value-key\":\"Id\",\"filterable\":\"\",\"placeholder\":\"Select Appraisal Rubric\"},model:{value:(_vm.selectedAssignment.AppraisalRubricId),callback:function ($$v) {_vm.$set(_vm.selectedAssignment, \"AppraisalRubricId\", $$v)},expression:\"selectedAssignment.AppraisalRubricId\"}},_vm._l((_vm.rubricList),function(item){return _c('el-option',{key:item.Id,attrs:{\"label\":item.RubricName,\"value\":item.Id}})}),1)],1):_vm._e(),(_vm.selectedAssignment.UseAppraisal)?_c('el-form-item',{attrs:{\"label\":\"Appraisal Due Date\",\"prop\":\"DueDate\",\"required\":\"\",\"label-width\":_vm.formLabelWidth}},[_c('el-date-picker',{staticStyle:{\"width\":\"100%\"},attrs:{\"type\":\"datetime\",\"placeholder\":\"Select a date\",\"format\":\"MMM d, hh:mm a\"},model:{value:(_vm.selectedAssignment.AppraisalDueDate),callback:function ($$v) {_vm.$set(_vm.selectedAssignment, \"AppraisalDueDate\", $$v)},expression:\"selectedAssignment.AppraisalDueDate\"}})],1):_vm._e(),_c('el-form-item',{staticStyle:{\"margin-bottom\":\"5px\"},attrs:{\"prop\":\"Description\",\"label-width\":_vm.formLabelWidth,\"label\":\"Project Description\"}},[_c('editor-menu-bar',{attrs:{\"editor\":_vm.editDescriptionEditor},scopedSlots:_vm._u([{key:\"default\",fn:function(ref){\n var commands = ref.commands;\n var isActive = ref.isActive;\nreturn _c('div',{staticClass:\"menubar\",staticStyle:{\"margin-bottom\":\"5px\",\"margin-top\":\"5px\"}},[_c('div',{staticClass:\"editor-btn\",class:{ 'is-active': isActive.bold() },attrs:{\"type\":\"button\"},on:{\"click\":commands.bold}},[_c('i',{staticClass:\"fas fa-bold\"})]),_c('div',{staticClass:\"editor-btn\",class:{ 'is-active': isActive.italic() },attrs:{\"type\":\"button\"},on:{\"click\":commands.italic}},[_c('i',{staticClass:\"fas fa-italic\"})]),_c('div',{staticClass:\"editor-btn\",class:{ 'is-active': isActive.strike() },on:{\"click\":commands.strike}},[_c('i',{staticClass:\"fas fa-strikethrough\"})]),_c('div',{staticClass:\"editor-btn\",class:{ 'is-active': isActive.underline() },on:{\"click\":commands.underline}},[_c('i',{staticClass:\"fas fa-underline\"})]),_c('div',{staticClass:\"editor-btn\",class:{ 'is-active': isActive.heading({ level: 1 }) },on:{\"click\":function($event){return commands.heading({ level: 1 })}}},[_c('i',{staticClass:\"fas fa-heading\"}),_c('strong',[_vm._v(\"1\")])]),_c('div',{staticClass:\"editor-btn\",class:{ 'is-active': isActive.heading({ level: 2 }) },on:{\"click\":function($event){return commands.heading({ level: 2 })}}},[_c('i',{staticClass:\"fas fa-heading\"}),_c('strong',[_vm._v(\"2\")])]),_c('div',{staticClass:\"editor-btn\",class:{ 'is-active': isActive.heading({ level: 3 }) },on:{\"click\":function($event){return commands.heading({ level: 3 })}}},[_c('i',{staticClass:\"fas fa-heading\"}),_c('strong',[_vm._v(\"3\")])]),_c('div',{staticClass:\"editor-btn\",class:{ 'is-active': isActive.bullet_list() },on:{\"click\":commands.bullet_list}},[_c('i',{staticClass:\"fas fa-list-ul\"})]),_c('div',{staticClass:\"editor-btn\",class:{ 'is-active': isActive.ordered_list() },on:{\"click\":commands.ordered_list}},[_c('i',{staticClass:\"fas fa-list-ol\"})]),_c('div',{staticClass:\"editor-btn\",class:{ 'is-active': isActive.blockquote() },on:{\"click\":function($event){return commands.blockquote()}}},[_c('i',{staticClass:\"fas fa-quote-right\"})])])}}],null,false,2947961898)}),_c('editor-content',{staticClass:\"el-textarea__inner assignment-edit-editor\",attrs:{\"id\":\"description-editor\",\"editor\":_vm.editDescriptionEditor}})],1)],1),_c('span',{staticClass:\"dialog-footer\",attrs:{\"slot\":\"footer\"},slot:\"footer\"},[_c('el-button',{on:{\"click\":function($event){_vm.editAssignmentDialogVisible = false}}},[_vm._v(\"\\n Cancel\\n \")]),_c('el-button',{attrs:{\"type\":\"primary\"},on:{\"click\":function($event){return _vm.editAssignment()}}},[_vm._v(\" Submit \")])],1)],2):_vm._e(),_c('el-dialog',{attrs:{\"id\":\"assignment-detail-dialog\",\"visible\":_vm.assignmentDetailDialogVisible,\"width\":\"650px\",\"center\":\"\"},on:{\"update:visible\":function($event){_vm.assignmentDetailDialogVisible=$event}}},[_c('template',{slot:\"title\"},[(_vm.selectedAssignment)?_c('span',{staticClass:\"dialog-title\"},[_vm._v(\"\\n \"+_vm._s(_vm.selectedAssignment.AssignmentName)+\"\\n \")]):_vm._e()]),_c('hr'),(_vm.selectedAssignment)?_c('div',{staticStyle:{\"word-break\":\"normal\"}},[_c('div',{staticStyle:{\"margin-bottom\":\"3px\",\"margin-top\":\"10px\",\"font-weight\":\"bold\"}},[_vm._v(\"\\n Important Information\\n \")]),_c('div',{staticStyle:{\"padding\":\"8px 16px\",\"padding-top\":\"px\",\"background-color\":\"#ecf8ff\",\"border-radius\":\"4px\",\"border-left\":\"5px solid #50bfff\",\"margin\":\"20px 0\",\"margin-top\":\"8px\",\"line-height\":\"2em\"}},[_c('span',[_vm._v(\"\\n This project is due at\\n \"),_c('strong',[_vm._v(_vm._s(_vm._f(\"formatDate\")(_vm.selectedAssignment.DueDate))+\" EST\")]),_vm._v(\".\\n It\\n \"),(_vm.selectedAssignment.IsGroupAssignment)?_c('span',[_vm._v(\"\\n is a group project which\\n \")]):_vm._e(),_vm._v(\"\\n includes the following tasks:\\n \")]),_vm._l((_vm.selectedAssignment.Tasks),function(task){return _c('div',{key:task.Id},[_c('strong',[_vm._v(\"- \"+_vm._s(task.Name)+\": \")]),_vm._v(\" due at\\n \"),_c('strong',[_vm._v(_vm._s(_vm._f(\"formatDate\")(task.DueDate))+\" EST\")])])})],2),_c('div',{staticStyle:{\"margin-bottom\":\"3px\",\"font-weight\":\"bold\"}},[_vm._v(\"\\n Project Overview\\n \")]),_c('editor-content',{staticClass:\"el-textarea__inner assignment-detail-editor\",attrs:{\"id\":\"description-detail-editor\",\"editor\":_vm.descriptionDetailEditor}})],1):_vm._e(),_c('span',{staticClass:\"dialog-footer\",attrs:{\"slot\":\"footer\"},slot:\"footer\"},[(_vm.userRole == 'Instructor')?_c('el-button',{on:{\"click\":function($event){return _vm.gotoStudentSubmissions(_vm.selectedAssignment.Id)}}},[_vm._v(\"\\n View Student Submissions\\n \")]):_vm._e(),(_vm.userRole == 'Instructor')?_c('el-button',{on:{\"click\":function($event){return _vm.gotoStudentScores(_vm.selectedAssignment.Id)}}},[_vm._v(\"\\n View Student Holistic Scores\\n \")]):_vm._e(),(_vm.userRole == 'Student' && _vm.selectedAssignment)?_c('div',{staticStyle:{\"margin-top\":\"20px\"}},[(\n _vm.submissionStatus &&\n _vm.submissionStatus[_vm.selectedKey] &&\n _vm.submissionStatus[_vm.selectedKey].Status == 'No Submission'\n )?_c('el-button',{staticStyle:{\"padding\":\"10px\",\"margin-bottom\":\"10px\",\"margin-right\":\"10px\"},on:{\"click\":function($event){return _vm.openDialog(_vm.selectedAssignment.Id, _vm.selectedKey)}}},[_c('i',{staticClass:\"fas fa-file-upload\",staticStyle:{\"font-size\":\"18px\"}}),_vm._v(\" Submit\\n Project\\n \")]):_vm._e(),(\n _vm.submissionStatus &&\n _vm.submissionStatus[_vm.selectedKey] &&\n (_vm.submissionStatus[_vm.selectedKey].Status == 'Submitted' ||\n _vm.submissionStatus[_vm.selectedKey].Status == 'Feedback Available')\n )?_c('el-button',{staticStyle:{\"padding\":\"10px\",\"margin-bottom\":\"10px\",\"margin-right\":\"10px\"},on:{\"click\":function($event){return _vm.openDialog(_vm.selectedAssignment.Id, _vm.selectedKey)}}},[_c('i',{staticClass:\"fas fa-file-upload\",staticStyle:{\"font-size\":\"18px\"}}),_vm._v(\" Re-submit\\n Project\\n \")]):_vm._e(),(\n _vm.submissionStatus &&\n _vm.submissionStatus[_vm.selectedKey] &&\n _vm.submissionStatus[_vm.selectedKey].Status == 'Feedback Available'\n )?_c('el-badge',{staticClass:\"badge-item\",staticStyle:{\"vertical-align\":\"initial\",\"margin-left\":\"0px\"},attrs:{\"value\":_vm.submissionStatus[_vm.selectedKey].ReviewCount}},[_c('el-button',{staticStyle:{\"padding\":\"10px\",\"margin-bottom\":\"10px\"},on:{\"click\":function($event){return _vm.viewAllFeedback(_vm.selectedAssignment.Id)}}},[_c('i',{staticClass:\"far fa-comment-alt\",staticStyle:{\"font-size\":\"18px\",\"margin-right\":\"5px\"}}),_vm._v(\"\\n View All Feedback\\n \")])],1):_vm._e(),(\n _vm.submissionStatus &&\n _vm.submissionStatus[_vm.selectedKey] &&\n _vm.submissionStatus[_vm.selectedKey].Status != 'No Submission'\n )?_c('el-button',{staticStyle:{\"padding\":\"10px\",\"margin-bottom\":\"10px\",\"margin-right\":\"10px\"},on:{\"click\":function($event){return _vm.viewSubmission(\n _vm.submissionStatus[_vm.selectedKey].DocId,\n _vm.selectedAssignment\n )}}},[_c('i',{staticClass:\"far fa-file-alt\",staticStyle:{\"font-size\":\"18px\",\"margin-right\":\"5px\"}}),_vm._v(\"View Submission\\n \")]):_vm._e(),(_vm.selectedAssignment.UsePeerReview)?_c('el-button',{staticStyle:{\"padding\":\"10px\",\"margin-bottom\":\"10px\",\"margin-right\":\"10px\"},on:{\"click\":function($event){return _vm.peerReview(\n _vm.selectedAssignment.Id,\n _vm.selectedAssignment.IsGroupAssignment,\n _vm.submissionStatus[_vm.selectedKey].GroupId\n )}}},[_c('i',{staticClass:\"fas fa-user-edit\",staticStyle:{\"font-size\":\"18px\",\"margin-right\":\"0px\"}}),_vm._v(\"\\n Peer Review\\n \")]):_vm._e(),(_vm.selectedAssignment.UseSelfAssessment)?_c('el-button',{staticStyle:{\"padding\":\"10px\",\"margin-bottom\":\"10px\",\"margin-right\":\"10px\"},on:{\"click\":function($event){return _vm.selfReview(\n _vm.selectedAssignment.Id,\n _vm.selectedAssignment.IsGroupAssignment,\n _vm.submissionStatus[_vm.selectedKey].GroupId\n )}}},[_c('i',{staticClass:\"fas fa-user-check\",staticStyle:{\"font-size\":\"18px\",\"margin-right\":\"5px\"}}),_vm._v(\"Self Review\\n \")]):_vm._e(),(_vm.selectedAssignment.UseAppraisal)?_c('el-button',{staticStyle:{\"padding\":\"10px\",\"margin-bottom\":\"10px\",\"margin-right\":\"10px\"},on:{\"click\":function($event){return _vm.appraisal(\n _vm.selectedAssignment.Id,\n _vm.selectedAssignment.IsGroupAssignment,\n _vm.submissionStatus[_vm.selectedKey].GroupId\n )}}},[_c('i',{staticClass:\"fab fa-rev\",staticStyle:{\"font-size\":\"18px\",\"margin-right\":\"0px\"}}),_vm._v(\"\\n Appraisal\\n \")]):_vm._e()],1):_vm._e()],1)],2),_c('el-dialog',{attrs:{\"id\":\"canvas-matching-dialog\",\"visible\":_vm.canvasDialogVisible,\"width\":\"650px;\",\"center\":\"\"},on:{\"update:visible\":function($event){_vm.canvasDialogVisible=$event}}},[_c('template',{slot:\"title\"},[(_vm.canvasAssignmentGroups && _vm.canvasAssignmentGroups.length > 0)?_c('span',{staticClass:\"dialog-title\"},[_vm._v(\"\\n Canvas Assignments Matching\\n \")]):_vm._e()]),_c('hr'),(_vm.canvasAssignmentGroups && _vm.canvasAssignmentGroups.length > 0)?_c('div',[_c('div',{staticClass:\"tip\",staticStyle:{\"padding\":\"4px 4px\",\"background-color\":\"#daf1ea\",\"border-radius\":\"4px\",\"border-left\":\"5px solid rgb(28 138 105)\",\"margin-bottom\":\"10px\"}},[_c('p',{staticStyle:{\"font-size\":\"14px\",\"color\":\"#444444\",\"line-height\":\"1em\"}},[_vm._v(\"\\n Select a Canvas assignment to sync with\\n \"+_vm._s(_vm.assignmentToMatch.AssignmentName)+\".\\n \")]),_c('p',{staticStyle:{\"font-size\":\"14px\",\"color\":\"#444444\",\"line-height\":\"1em\"}},[_vm._v(\"\\n Only Canvas assignments with online file upload submission type are\\n showing.\\n \")])]),_c('el-collapse',{staticStyle:{\"height\":\"500px\",\"overflow\":\"auto\"},model:{value:(_vm.activeNames),callback:function ($$v) {_vm.activeNames=$$v},expression:\"activeNames\"}},_vm._l((_vm.canvasAssignmentGroups),function(group){return _c('el-collapse-item',{key:group.id,staticStyle:{\"font-weight\":\"bold\",\"font-size\":\"1rem\"},attrs:{\"name\":group.id}},[_c('template',{slot:\"title\"},[_c('div',{staticStyle:{\"margin-left\":\"10px\"}},[_c('span',{staticStyle:{\"font-weight\":\"bold\",\"font-size\":\"1rem\"}},[_vm._v(\"\\n \"+_vm._s(group.name)+\"\\n \")])])]),_c('el-radio-group',{staticStyle:{\"width\":\"100%\"},model:{value:(_vm.selectedCanvasAssignment),callback:function ($$v) {_vm.selectedCanvasAssignment=$$v},expression:\"selectedCanvasAssignment\"}},_vm._l((group.assignments),function(canvasAssignment){return _c('div',{key:canvasAssignment.id,staticStyle:{\"margin-top\":\"5px\",\"width\":\"100%\"},on:{\"input\":function($event){_vm.submitCanvasAssignment = true}}},[_c('el-radio',{staticStyle:{\"margin-left\":\"10px\",\"width\":\"98%\"},attrs:{\"label\":canvasAssignment,\"border\":\"\"}},[_c('div',{staticStyle:{\"display\":\"inline-flex\"}},[_c('span',[_vm._v(_vm._s(canvasAssignment.name))]),_c('el-button',{staticStyle:{\"position\":\"absolute\",\"right\":\"5px\",\"top\":\"5px\"},attrs:{\"size\":\"mini\"},on:{\"click\":function($event){return _vm.viewCanvasAssignment(canvasAssignment.html_url)}}},[_c('i',{staticClass:\"fas fa-external-link-alt\"}),_vm._v(\" View in Canvas\\n \")])],1)])],1)}),0)],2)}),1)],1):_vm._e(),_c('span',{staticClass:\"dialog-footer\",attrs:{\"slot\":\"footer\"},slot:\"footer\"},[_c('el-button',{on:{\"click\":function($event){_vm.canvasDialogVisible = false}}},[_vm._v(\" Cancel \")]),(_vm.submitCanvasAssignment)?_c('el-button',{attrs:{\"type\":\"primary\"},on:{\"click\":function($event){return _vm.submitCanvasMatch()}}},[_vm._v(\"\\n Sync\\n \")]):_vm._e()],1)],2),_c('el-dialog',{attrs:{\"title\":\"Redirect to Canvas Login Page\",\"visible\":_vm.redirectDialogVisible,\"width\":\"600px\",\"center\":\"\"},on:{\"update:visible\":function($event){_vm.redirectDialogVisible=$event}}},[_c('div',{staticClass:\"tip\",staticStyle:{\"padding\":\"5px 10px\",\"background-color\":\"#daf1ea\",\"border-radius\":\"4px\",\"border-left\":\"5px solid rgb(28 138 105)\",\"margin-bottom\":\"10px\"}},[_c('p',{staticStyle:{\"font-size\":\"14px\",\"color\":\"#444444\",\"word-break\":\"normal\"}},[_vm._v(\"\\n This project was synced with \"+_vm._s(_vm.canvasAssignmentName)+\" assignment in\\n Canvas. You will be redirected to the Canvas login page for\\n authorization bebore you can submit your paper.\\n \")])]),_c('span',{staticClass:\"dialog-footer\",attrs:{\"slot\":\"footer\"},slot:\"footer\"},[_c('el-button',{on:{\"click\":function($event){_vm.redirectDialogVisible = false}}},[_vm._v(\"Cancel\")]),_c('el-button',{attrs:{\"type\":\"primary\"},on:{\"click\":function($event){return _vm.canvasLogin()}}},[_vm._v(\"Confirm\")])],1)]),(_vm.selectedAssignment)?_c('el-dialog',{staticStyle:{\"height\":\"930px\"},attrs:{\"id\":\"preview-submission-dialog\",\"visible\":_vm.docPreviewDialogVisible,\"width\":\"800px\",\"center\":\"\"},on:{\"update:visible\":function($event){_vm.docPreviewDialogVisible=$event}}},[_c('template',{slot:\"title\"},[_c('span',{staticClass:\"dialog-title\"},[_vm._v(\"\\n Preview of Your Submission for \"+_vm._s(_vm.selectedAssignment.AssignmentName)+\"\\n \")])]),_c('div',{staticStyle:{\"height\":\"930px\"}},[_c('div',{staticStyle:{\"height\":\"930px\"},attrs:{\"id\":\"submissions_container\"}},[_c('nav',{staticClass:\"ViewerControls ViewerControls--with-annotations\"},[_c('div',{staticClass:\"ViewerControls-primary\"},[_c('div',{staticClass:\"ViewerControls--download\"},[_c('div',{staticStyle:{\"min-width\":\"50px\",\"text-align\":\"center\"}},[_c('div',[_c('button',{staticClass:\"download-button--button\",attrs:{\"title\":\"Download Submission\",\"aria-label\":\"Download Submission\"},on:{\"click\":function($event){return _vm.downloadPdf(_vm.selectedAssignment)}}},[_c('i',{staticClass:\"fas fa-file-download\",staticStyle:{\"font-size\":\"22px\"}})])])])]),_c('div',{staticClass:\"ViewerControls--title\"}),_c('div',{staticClass:\"ViewerControls--page-controls\"},[_c('span',{staticClass:\"ViewerControls--page-number\",staticStyle:{\"display\":\"flex\",\"align-items\":\"center\"}},[_vm._v(\"\\n Page\\n \"),_c('div',{staticStyle:{\"padding-left\":\"10px\",\"padding-right\":\"10px\"}},[_c('el-input-number',{attrs:{\"min\":1,\"max\":_vm.totalPageNumber,\"size\":\"small\",\"label\":\"Page\"},on:{\"change\":_vm.changePage},model:{value:(_vm.pageNum),callback:function ($$v) {_vm.pageNum=$$v},expression:\"pageNum\"}})],1),_vm._v(\"\\n of \"+_vm._s(_vm.totalPageNumber)+\"\\n \")]),_c('svg',{staticStyle:{\"margin-left\":\"12px\",\"margin-right\":\"0px\",\"width\":\"2px\",\"height\":\"26px\",\"color\":\"rgb(171, 179, 186)\"},attrs:{\"viewBox\":\"0 0 2 26\"}},[_c('line',{attrs:{\"stroke\":\"currentColor\",\"stroke-dasharray\":\"2, 1\",\"stroke-width\":\"1\",\"x1\":\"1\",\"y1\":\"0\",\"x2\":\"1\",\"y2\":\"26\"}})])]),_c('nav',{staticClass:\"DocumentControls\"},[_c('div',{staticStyle:{\"display\":\"inline-flex\",\"align-items\":\"center\",\"user-select\":\"none\"}},[_c('button',{staticClass:\"AnnotationControlButton\",attrs:{\"aria-label\":\"Zoom Out\",\"title\":\"Zoom Out\",\"aria-disabled\":\"false\"},on:{\"click\":_vm.zoomOut}},[_c('i',{staticClass:\"fas fa-minus\",staticStyle:{\"font-size\":\"20px\"}})]),_c('span',{staticStyle:{\"text-transform\":\"uppercase\",\"font-size\":\"0.75rem\",\"color\":\"rgb(238, 238, 239)\",\"margin-left\":\"4px\",\"margin-right\":\"4px\"},attrs:{\"aria-hidden\":\"true\"}},[_vm._v(\"\\n Zoom\\n \")]),_c('button',{staticClass:\"AnnotationControlButton\",attrs:{\"aria-label\":\"Zoom In\",\"title\":\"Zoom In\",\"aria-disabled\":\"false\"},on:{\"click\":_vm.zoomIn}},[_c('i',{staticClass:\"fas fa-plus\",staticStyle:{\"font-size\":\"20px\"}})])]),_c('svg',{staticStyle:{\"margin-left\":\"2px\",\"margin-right\":\"4px\",\"width\":\"2px\",\"height\":\"26px\",\"color\":\"rgb(171, 179, 186)\"},attrs:{\"viewBox\":\"0 0 2 26\"}},[_c('line',{attrs:{\"stroke\":\"currentColor\",\"stroke-dasharray\":\"2, 1\",\"stroke-width\":\"1\",\"x1\":\"1\",\"y1\":\"0\",\"x2\":\"1\",\"y2\":\"26\"}})]),_c('div',{staticClass:\"ViewerControls--page-controls\"},[_c('button',{staticClass:\"AnnotationControlButton full-screen-button\",attrs:{\"aria-label\":\"Enter Full Screen\",\"title\":\"Zoom Fit Width\"},on:{\"click\":_vm.zoomFitWidth}},[_c('i',{staticClass:\"fas fa-expand\",staticStyle:{\"font-size\":\"20px\"}})])])])])]),_c('div',{staticStyle:{\"display\":\"block\",\"height\":\"700px\"},attrs:{\"id\":\"iframe_holder\"}},[_c('div',{staticStyle:{\"resize\":\"vertical\",\"height\":\"100%\"},attrs:{\"id\":\"pdfDocument\"}})])])])],2):_vm._e(),(_vm.selectedAssignment)?_c('el-dialog',{staticClass:\"assignment-dialog\",attrs:{\"visible\":_vm.newTaskDialogVisible,\"width\":\"650px\",\"center\":\"\"},on:{\"update:visible\":function($event){_vm.newTaskDialogVisible=$event},\"closed\":function($event){return _vm.closeTaskDialog()}}},[_c('template',{slot:\"title\"},[_c('span',{staticClass:\"dialog-title\"},[_vm._v(\"\\n Add New Task To \"+_vm._s(_vm.selectedAssignment.AssignmentName)+\"\\n \")])]),_c('hr'),_c('el-form',{ref:\"newTaskForm\",staticStyle:{\"margin-top\":\"20px\"},attrs:{\"model\":_vm.newTaskForm,\"rules\":_vm.taskRules}},[_c('el-form-item',{attrs:{\"label\":\"Type\",\"prop\":\"Type\",\"required\":\"\",\"label-width\":_vm.formLabelWidth}},[_c('el-select',{staticStyle:{\"width\":\"100%\"},attrs:{\"value-key\":\"Id\",\"filterable\":\"\",\"placeholder\":\"Select Task Type\"},model:{value:(_vm.newTaskForm.Type),callback:function ($$v) {_vm.$set(_vm.newTaskForm, \"Type\", $$v)},expression:\"newTaskForm.Type\"}},_vm._l((_vm.taskTypes),function(item){return _c('el-option',{key:item.value,attrs:{\"label\":item.label,\"value\":item.value,\"disabled\":_vm.selectedAssignment.Tasks.some(function (task) { return task.Type === item.value; })}})}),1)],1),_c('el-form-item',{attrs:{\"label\":\"Task Due Date\",\"prop\":\"DueDate\",\"required\":\"\",\"label-width\":_vm.formLabelWidth}},[_c('el-date-picker',{staticStyle:{\"width\":\"100%\"},attrs:{\"type\":\"datetime\",\"placeholder\":\"Select a date\",\"format\":\"MMM d, hh:mm a\"},model:{value:(_vm.newTaskForm.DueDate),callback:function ($$v) {_vm.$set(_vm.newTaskForm, \"DueDate\", $$v)},expression:\"newTaskForm.DueDate\"}})],1),_c('el-form-item',{attrs:{\"label\":\"Rubric\",\"prop\":\"RubricId\",\"required\":\"\",\"label-width\":_vm.formLabelWidth}},[_c('el-select',{staticStyle:{\"width\":\"100%\"},attrs:{\"value-key\":\"Id\",\"filterable\":\"\",\"placeholder\":\"Select Rubric\"},model:{value:(_vm.newTaskForm.RubricId),callback:function ($$v) {_vm.$set(_vm.newTaskForm, \"RubricId\", $$v)},expression:\"newTaskForm.RubricId\"}},_vm._l((_vm.rubricList),function(item){return _c('el-option',{key:item.Id,attrs:{\"label\":item.RubricName,\"value\":item.Id}})}),1)],1),_c('el-form-item',{staticStyle:{\"margin-bottom\":\"5px\"},attrs:{\"prop\":\"Description\",\"label-width\":_vm.formLabelWidth,\"label\":\"Project Description\"}},[_c('editor-menu-bar',{attrs:{\"editor\":_vm.newTaskEditor},scopedSlots:_vm._u([{key:\"default\",fn:function(ref){\n var commands = ref.commands;\n var isActive = ref.isActive;\nreturn _c('div',{staticClass:\"menubar\",staticStyle:{\"margin-bottom\":\"5px\",\"margin-top\":\"5px\"}},[_c('div',{staticClass:\"editor-btn\",class:{ 'is-active': isActive.bold() },attrs:{\"type\":\"button\"},on:{\"click\":commands.bold}},[_c('i',{staticClass:\"fas fa-bold\"})]),_c('div',{staticClass:\"editor-btn\",class:{ 'is-active': isActive.italic() },attrs:{\"type\":\"button\"},on:{\"click\":commands.italic}},[_c('i',{staticClass:\"fas fa-italic\"})]),_c('div',{staticClass:\"editor-btn\",class:{ 'is-active': isActive.strike() },on:{\"click\":commands.strike}},[_c('i',{staticClass:\"fas fa-strikethrough\"})]),_c('div',{staticClass:\"editor-btn\",class:{ 'is-active': isActive.underline() },on:{\"click\":commands.underline}},[_c('i',{staticClass:\"fas fa-underline\"})]),_c('div',{staticClass:\"editor-btn\",class:{ 'is-active': isActive.heading({ level: 1 }) },on:{\"click\":function($event){return commands.heading({ level: 1 })}}},[_c('i',{staticClass:\"fas fa-heading\"}),_c('strong',[_vm._v(\"1\")])]),_c('div',{staticClass:\"editor-btn\",class:{ 'is-active': isActive.heading({ level: 2 }) },on:{\"click\":function($event){return commands.heading({ level: 2 })}}},[_c('i',{staticClass:\"fas fa-heading\"}),_c('strong',[_vm._v(\"2\")])]),_c('div',{staticClass:\"editor-btn\",class:{ 'is-active': isActive.heading({ level: 3 }) },on:{\"click\":function($event){return commands.heading({ level: 3 })}}},[_c('i',{staticClass:\"fas fa-heading\"}),_c('strong',[_vm._v(\"3\")])]),_c('div',{staticClass:\"editor-btn\",class:{ 'is-active': isActive.bullet_list() },on:{\"click\":commands.bullet_list}},[_c('i',{staticClass:\"fas fa-list-ul\"})]),_c('div',{staticClass:\"editor-btn\",class:{ 'is-active': isActive.ordered_list() },on:{\"click\":commands.ordered_list}},[_c('i',{staticClass:\"fas fa-list-ol\"})]),_c('div',{staticClass:\"editor-btn\",class:{ 'is-active': isActive.blockquote() },on:{\"click\":function($event){return commands.blockquote()}}},[_c('i',{staticClass:\"fas fa-quote-right\"})])])}}],null,false,2947961898)}),_c('editor-content',{staticClass:\"el-textarea__inner assignment-edit-editor\",attrs:{\"id\":\"description-editor\",\"editor\":_vm.newTaskEditor}})],1)],1),_c('span',{staticClass:\"dialog-footer\",attrs:{\"slot\":\"footer\"},slot:\"footer\"},[_c('el-button',{on:{\"click\":function($event){_vm.newTaskDialogVisible = false}}},[_vm._v(\" Cancel \")]),_c('el-button',{attrs:{\"type\":\"primary\"},on:{\"click\":function($event){return _vm.addNewTask()}}},[_vm._v(\" Submit \")])],1)],2):_vm._e(),(_vm.selectedTask)?_c('el-dialog',{staticClass:\"assignment-dialog\",attrs:{\"visible\":_vm.editTaskDialogVisible,\"width\":\"650px\",\"center\":\"\"},on:{\"update:visible\":function($event){_vm.editTaskDialogVisible=$event}}},[_c('template',{slot:\"title\"},[_c('span',{staticClass:\"dialog-title\"},[_vm._v(\" Edit \"+_vm._s(_vm.selectedTask.Name)+\" \")])]),_c('hr'),_c('el-form',{ref:\"taskForm\",staticStyle:{\"margin-top\":\"20px\"},attrs:{\"model\":_vm.selectedTask,\"rules\":_vm.rules}},[_c('el-form-item',{attrs:{\"label\":\"Type\",\"prop\":\"Type\",\"required\":\"\",\"label-width\":_vm.formLabelWidth}},[_c('el-select',{staticStyle:{\"width\":\"100%\"},attrs:{\"value-key\":\"Id\",\"filterable\":\"\",\"placeholder\":\"Select Task Type\"},model:{value:(_vm.selectedTask.Type),callback:function ($$v) {_vm.$set(_vm.selectedTask, \"Type\", $$v)},expression:\"selectedTask.Type\"}},_vm._l((_vm.taskTypes),function(item){return _c('el-option',{key:item.value,attrs:{\"label\":item.label,\"value\":item.value,\"disabled\":_vm.selectedAssignment.Tasks.some(function (task) { return task.Type === item.value; })}})}),1)],1),_c('el-form-item',{attrs:{\"label\":\"Task Due Date\",\"prop\":\"DueDate\",\"required\":\"\",\"label-width\":_vm.formLabelWidth}},[_c('el-date-picker',{staticStyle:{\"width\":\"100%\"},attrs:{\"type\":\"datetime\",\"placeholder\":\"Select a date\",\"format\":\"MMM d, hh:mm a\"},model:{value:(_vm.selectedTask.DueDate),callback:function ($$v) {_vm.$set(_vm.selectedTask, \"DueDate\", $$v)},expression:\"selectedTask.DueDate\"}})],1),_c('el-form-item',{attrs:{\"label\":\"Rubric\",\"prop\":\"RubricId\",\"required\":\"\",\"label-width\":_vm.formLabelWidth}},[_c('el-select',{staticStyle:{\"width\":\"100%\"},attrs:{\"value-key\":\"Id\",\"filterable\":\"\",\"placeholder\":\"Select Rubric\"},model:{value:(_vm.selectedTask.RubricId),callback:function ($$v) {_vm.$set(_vm.selectedTask, \"RubricId\", $$v)},expression:\"selectedTask.RubricId\"}},_vm._l((_vm.rubricList),function(item){return _c('el-option',{key:item.Id,attrs:{\"label\":item.RubricName,\"value\":item.Id}})}),1)],1),_c('el-form-item',{staticStyle:{\"margin-bottom\":\"5px\"},attrs:{\"prop\":\"Description\",\"label-width\":_vm.formLabelWidth,\"label\":\"Project Description\"}},[_c('editor-menu-bar',{attrs:{\"editor\":_vm.editTaskEditor},scopedSlots:_vm._u([{key:\"default\",fn:function(ref){\n var commands = ref.commands;\n var isActive = ref.isActive;\nreturn _c('div',{staticClass:\"menubar\",staticStyle:{\"margin-bottom\":\"5px\",\"margin-top\":\"5px\"}},[_c('div',{staticClass:\"editor-btn\",class:{ 'is-active': isActive.bold() },attrs:{\"type\":\"button\"},on:{\"click\":commands.bold}},[_c('i',{staticClass:\"fas fa-bold\"})]),_c('div',{staticClass:\"editor-btn\",class:{ 'is-active': isActive.italic() },attrs:{\"type\":\"button\"},on:{\"click\":commands.italic}},[_c('i',{staticClass:\"fas fa-italic\"})]),_c('div',{staticClass:\"editor-btn\",class:{ 'is-active': isActive.strike() },on:{\"click\":commands.strike}},[_c('i',{staticClass:\"fas fa-strikethrough\"})]),_c('div',{staticClass:\"editor-btn\",class:{ 'is-active': isActive.underline() },on:{\"click\":commands.underline}},[_c('i',{staticClass:\"fas fa-underline\"})]),_c('div',{staticClass:\"editor-btn\",class:{ 'is-active': isActive.heading({ level: 1 }) },on:{\"click\":function($event){return commands.heading({ level: 1 })}}},[_c('i',{staticClass:\"fas fa-heading\"}),_c('strong',[_vm._v(\"1\")])]),_c('div',{staticClass:\"editor-btn\",class:{ 'is-active': isActive.heading({ level: 2 }) },on:{\"click\":function($event){return commands.heading({ level: 2 })}}},[_c('i',{staticClass:\"fas fa-heading\"}),_c('strong',[_vm._v(\"2\")])]),_c('div',{staticClass:\"editor-btn\",class:{ 'is-active': isActive.heading({ level: 3 }) },on:{\"click\":function($event){return commands.heading({ level: 3 })}}},[_c('i',{staticClass:\"fas fa-heading\"}),_c('strong',[_vm._v(\"3\")])]),_c('div',{staticClass:\"editor-btn\",class:{ 'is-active': isActive.bullet_list() },on:{\"click\":commands.bullet_list}},[_c('i',{staticClass:\"fas fa-list-ul\"})]),_c('div',{staticClass:\"editor-btn\",class:{ 'is-active': isActive.ordered_list() },on:{\"click\":commands.ordered_list}},[_c('i',{staticClass:\"fas fa-list-ol\"})]),_c('div',{staticClass:\"editor-btn\",class:{ 'is-active': isActive.blockquote() },on:{\"click\":function($event){return commands.blockquote()}}},[_c('i',{staticClass:\"fas fa-quote-right\"})])])}}],null,false,2947961898)}),_c('editor-content',{staticClass:\"el-textarea__inner assignment-edit-editor\",attrs:{\"id\":\"description-editor\",\"editor\":_vm.editTaskEditor}})],1)],1),_c('span',{staticClass:\"dialog-footer\",attrs:{\"slot\":\"footer\"},slot:\"footer\"},[_c('el-button',{on:{\"click\":function($event){_vm.editTaskDialogVisible = false}}},[_vm._v(\" Cancel \")]),_c('el-button',{attrs:{\"type\":\"primary\"},on:{\"click\":function($event){return _vm.updateTask()}}},[_vm._v(\" Submit \")])],1)],2):_vm._e()],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import http from '@/utils/axios'\r\n// import { Notification } from 'element-ui'\r\n\r\nexport function getTaskById(id) {\r\n\treturn http.get('task/' + id)\r\n\t\t.then(response => {\r\n\t\t\treturn response.data\r\n\t\t})\r\n\t\t.catch(error => {\r\n\t\t\tconsole.log(error)\r\n\t\t})\r\n}\r\n\r\nexport function addNewTask(task) {\r\n\treturn http.post('task', task)\r\n\t\t.then(response => {\r\n\t\t\treturn response.data\r\n\t\t})\r\n\t\t.catch(error => {\r\n\t\t\tconsole.log(error)\r\n\t\t})\r\n}\r\n\r\nexport function updateTask(task) {\r\n\treturn http.put('task', task)\r\n\t\t.then(response => {\r\n\t\t\treturn response.data\r\n\t\t})\r\n\t\t.catch(error => {\r\n\t\t\tconsole.log(error)\r\n\t\t})\r\n}\r\n\r\nexport function deleteTask(taskId) {\r\n\treturn http.delete('task/' + taskId)\r\n\t\t.then(response => {\r\n\t\t\treturn response.data\r\n\t\t})\r\n\t\t.catch(error => {\r\n\t\t\tconsole.log(error)\r\n\t\t})\r\n}\r\n","<template>\r\n <div>\r\n <div class=\"breadcumb\">\r\n <div class=\"ic-app-crumbs\">\r\n <span class=\"breadcumb-text\">\r\n <router-link\r\n :to=\"{ path: '/course/' + currentCourse.ClassCode + '/projects' }\"\r\n style=\"color: #4e5e63; text-decoration: none\"\r\n >\r\n {{ currentCourse.ClassDescription }}\r\n </router-link>\r\n <i class=\"fas fa-chevron-right breadcumb-next\" />\r\n Projects\r\n </span>\r\n </div>\r\n </div>\r\n\r\n <div>\r\n <div id=\"assignment_group_1782423_assignments\" class=\"assignment-list\">\r\n <div style=\"margin-bottom: 15px\">\r\n <el-button\r\n v-if=\"userRole == 'Instructor'\"\r\n style=\"float: right\"\r\n size=\"small\"\r\n @click=\"openNewAssignmentDialog()\"\r\n >\r\n <i class=\"fas fa-plus\" style=\"font-size: 13px\" />\r\n <span> New Project</span>\r\n </el-button>\r\n\r\n <el-button\r\n v-if=\"userRole == 'Instructor'\"\r\n style=\"float: right; margin-right: 10px\"\r\n size=\"small\"\r\n @click=\"orderByDueDates()\"\r\n >\r\n <span> Order By Due Dates </span>\r\n </el-button>\r\n\r\n <el-button\r\n v-if=\"userRole == 'Student'\"\r\n style=\"float: right\"\r\n size=\"small\"\r\n @click=\"viewByDueDates()\"\r\n >\r\n <span> View By Due Dates </span>\r\n </el-button>\r\n\r\n <!-- <el-button\r\n v-if=\"userRole == 'Student'\"\r\n style=\"float: right; margin-right: 10px\"\r\n size=\"small\"\r\n >\r\n <span> Collapse All Projects </span>\r\n </el-button> -->\r\n <el-input\r\n v-model=\"search\"\r\n placeholder=\"Search for projects by name\"\r\n style=\"width: 300px\"\r\n size=\"small\"\r\n />\r\n </div>\r\n\r\n <div\r\n v-if=\"assignments\"\r\n class=\"collectionViewItems ig-list draggable ui-sortable\"\r\n >\r\n <draggable\r\n class=\"list-group\"\r\n :list=\"assignments\"\r\n group=\"people\"\r\n @end=\"onDragEnd()\"\r\n >\r\n <div\r\n v-for=\"(assignment, key) in assignments.filter(\r\n (a) =>\r\n !search ||\r\n a.AssignmentName.toLowerCase().includes(search.toLowerCase())\r\n )\"\r\n :key=\"assignment.Id\"\r\n class=\"list-group-item box-card\"\r\n style=\"width: 100%\"\r\n >\r\n <el-card\r\n class=\"assignment-tile\"\r\n style=\"\r\n margin-bottom: 5px;\r\n border: 1px solid #cccecf;\r\n border-top: none;\r\n \"\r\n shadow=\"hover\"\r\n >\r\n <div\r\n v-if=\"userRole == 'Instructor'\"\r\n slot=\"header\"\r\n class=\"clearfix\"\r\n >\r\n <div>\r\n <span\r\n class=\"instructor-assignment-name\"\r\n :title=\"assignment.AssignmentName\"\r\n @click=\"openAssignmentDetailDialog(assignment.Id, key)\"\r\n >\r\n {{ assignment.AssignmentName }}\r\n <span v-if=\"assignment.IsGroupAssignment\" style=\"margin-left: 3px; margin-right: 3px;\">\r\n <el-tooltip\r\n class=\"item\"\r\n effect=\"dark\"\r\n content=\"This project is a group project\"\r\n placement=\"bottom\"\r\n >\r\n <i class=\"fas fa-users\" style=\"font-size: 15px; color: #4E5E63;\" />\r\n </el-tooltip>\r\n </span>\r\n <span v-if=\"assignment.UseCanvasIntegration\" style=\"margin-left: 3px; margin-right: 3px;\">\r\n <el-tooltip\r\n class=\"item\"\r\n effect=\"dark\"\r\n content=\"This project was synced with an assignment in Canvas\"\r\n placement=\"bottom\"\r\n >\r\n <img src=\"@/assets/img/canvas-logo.png\" alt=\"Canvas Sync\" width=\"14\" height=\"14\" style=\"position: relative; top: 0px;\">\r\n </el-tooltip>\r\n </span>\r\n <br/>\r\n <span\r\n class=\"instructor-assignment-name\"\r\n style=\"font-weight: 200; font-size: 13px; margin-top: 6px;\"\r\n >\r\n Due Date: <b>{{ assignment.DueDate | formatDate }} EST</b>\r\n \r\n <span\r\n v-if=\"\r\n submissionNumbers &&\r\n submissionNumbers.filter(\r\n (s) =>\r\n s.AssignmentId == assignment.Id &&\r\n s.TaskType == 'student_upload'\r\n ).length > 0\r\n \"\r\n >\r\n | Submitted:\r\n <b>\r\n <span\r\n v-if=\"\r\n submissionNumbers &&\r\n submissionNumbers.filter(\r\n (s) =>\r\n s.AssignmentId == assignment.Id &&\r\n s.TaskType == 'student_upload'\r\n )[0].SubmissionNumber > 1\r\n \"\r\n >\r\n {{\r\n submissionNumbers.filter(\r\n (s) =>\r\n s.AssignmentId == assignment.Id &&\r\n s.TaskType == \"student_upload\"\r\n )[0].SubmissionNumber\r\n }}\r\n students\r\n </span>\r\n <span v-else>\r\n {{\r\n submissionNumbers.filter(\r\n (s) =>\r\n s.AssignmentId == assignment.Id &&\r\n s.TaskType == \"student_upload\"\r\n )[0].SubmissionNumber\r\n }}\r\n student\r\n </span>\r\n </b>\r\n </span>\r\n <span v-else>\r\n | Submitted: <b>0 students</b>\r\n </span>\r\n </span>\r\n </span>\r\n <div style=\"float: right; margin-top: 13px\">\r\n <el-dropdown\r\n trigger=\"click\"\r\n style=\"margin-left: 18px; margin-right: 0px\"\r\n @command=\"\r\n (command) =>\r\n handleCommand(command, assignment.Id, key)\r\n \"\r\n >\r\n <span class=\"el-dropdown-link\">\r\n <i\r\n class=\"fas fa-ellipsis-v\"\r\n style=\"margin: 4px; font-size: 17px\"\r\n />\r\n </span>\r\n <el-dropdown-menu slot=\"dropdown\">\r\n <el-dropdown-item command=\"add\">\r\n <i class=\"fas fa-plus\" /> New Task\r\n </el-dropdown-item>\r\n <el-dropdown-item\r\n v-if=\"useCanvasIntegration()\"\r\n command=\"sync\"\r\n ><i class=\"fas fa-sync-alt\" /> Sync with\r\n Canvas</el-dropdown-item>\r\n <el-dropdown-item\r\n command=\"edit\"\r\n ><i class=\"fas fa-edit\" /> Edit Project\r\n </el-dropdown-item>\r\n <el-dropdown-item\r\n command=\"delete\"\r\n ><i class=\"fas fa-trash-alt\" /> Delete\r\n Project</el-dropdown-item>\r\n </el-dropdown-menu>\r\n </el-dropdown>\r\n </div>\r\n\r\n <div style=\"float: right\">\r\n <el-button\r\n v-if=\"\r\n assignment.IsGroupAssignment &&\r\n teamFormationStatus &&\r\n teamFormationStatus.filter(\r\n (t) =>\r\n t.AssignmentId == assignment.Id &&\r\n t.AssignmentType == 'group_project'\r\n ).length > 0 &&\r\n teamFormationStatus.filter(\r\n (t) =>\r\n t.AssignmentId == assignment.Id &&\r\n t.AssignmentType == 'group_project'\r\n )[0].IsSubmitted\r\n \"\r\n type=\"success\"\r\n plain\r\n class=\"assignment-action-btn\"\r\n size=\"mini\"\r\n style=\"padding: 7px 15px; margin-top: 10px\"\r\n @click=\"gotoGroupFormation(assignment.Id)\"\r\n >\r\n <i\r\n class=\"far fa-check-circle\"\r\n style=\"font-size: 13px\"\r\n />\r\n \r\n <i class=\"fas fa-users\" style=\"font-size: 13px\" />\r\n <span\r\n style=\"\r\n position: relative;\r\n top: -1px;\r\n margin-left: 6px;\r\n \"\r\n >\r\n Group Formation\r\n </span>\r\n </el-button>\r\n <el-button\r\n v-if=\"\r\n assignment.IsGroupAssignment &&\r\n teamFormationStatus &&\r\n teamFormationStatus.filter(\r\n (t) =>\r\n t.AssignmentId == assignment.Id &&\r\n t.AssignmentType == 'group_project'\r\n ).length == 0\r\n \"\r\n type=\"danger\"\r\n plain\r\n class=\"assignment-action-btn\"\r\n size=\"mini\"\r\n style=\"padding: 7px 15px; margin-top: 10px\"\r\n @click=\"gotoGroupFormation(assignment.Id)\"\r\n >\r\n <i\r\n class=\"fas fa-exclamation-circle\"\r\n style=\"font-size: 13px\"\r\n />\r\n \r\n <i class=\"fas fa-users\" style=\"font-size: 13px\" />\r\n <span\r\n style=\"\r\n position: relative;\r\n top: -1px;\r\n margin-left: 6px;\r\n \"\r\n >\r\n Group Formation\r\n </span>\r\n </el-button> \r\n <!-- IX Left this in case we want to try icons ON right side?\r\n <span v-if=\"assignment.UseCanvasIntegration\" style=\"margin-left: 10px; margin-right: 10px;\">\r\n <el-tooltip\r\n class=\"item\"\r\n effect=\"dark\"\r\n content=\"This project was synced with an assignment in Canvas\"\r\n placement=\"bottom\"\r\n >\r\n <img src=\"@/assets/img/canvas-logo.png\" alt=\"Canvas Sync\" width=\"31\" height=\"27\" style=\"position: relative; top: 14px;\">\r\n </el-tooltip>\r\n </span> -->\r\n <el-button\r\n class=\"assignment-action-btn\"\r\n size=\"mini\"\r\n style=\"padding: 7px 15px; margin-top: 10px\"\r\n @click=\"gotoStudentSubmissions(assignment.Id)\"\r\n >\r\n <i class=\"fab fa-buffer\" style=\"font-size: 13px\" />\r\n <span\r\n style=\"\r\n position: relative;\r\n top: -1px;\r\n margin-left: 6px;\r\n \"\r\n >\r\n View Submissions\r\n </span>\r\n </el-button>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div\r\n v-if=\"userRole == 'Student'\"\r\n slot=\"header\"\r\n class=\"clearfix\"\r\n >\r\n <div>\r\n <span\r\n class=\"student-assignment-name\"\r\n :title=\"assignment.AssignmentName\"\r\n @click=\"openAssignmentDetailDialog(assignment.Id, key)\"\r\n >\r\n {{ assignment.AssignmentName }}\r\n <span v-if=\"assignment.IsGroupAssignment\" style=\"margin-left: 3px; margin-right: 3px;\">\r\n <el-tooltip\r\n class=\"item\"\r\n effect=\"dark\"\r\n content=\"This project is a group project\"\r\n placement=\"bottom\"\r\n >\r\n <i class=\"fas fa-users\" style=\"font-size: 15px; color: #4E5E63;\" />\r\n </el-tooltip>\r\n </span>\r\n <span v-if=\"assignment.UseCanvasIntegration\" style=\"margin-left: 3px; margin-right: 3px;\">\r\n <el-tooltip\r\n class=\"item\"\r\n effect=\"dark\"\r\n content=\"This project was synced with an assignment in Canvas\"\r\n placement=\"bottom\"\r\n >\r\n <img src=\"@/assets/img/canvas-logo.png\" alt=\"Canvas Sync\" width=\"14\" height=\"14\" style=\"position: relative; top: 0px;\">\r\n </el-tooltip>\r\n </span>\r\n <br/>\r\n <span\r\n class=\"student-assignment-name\"\r\n style=\"font-weight: 200; font-size: 13px; margin-top: 6px;\"\r\n >\r\n Due Date: <b>{{ assignment.DueDate | formatDate }} EST</b>\r\n \r\n <span v-if=\"submissionStatus && submissionStatus[key]\">\r\n <el-tooltip\r\n v-if=\"submissionStatus[key].Status == 'No Submission'\"\r\n class=\"item\"\r\n effect=\"dark\"\r\n :content=\"'You have not submitted a draft for this Project.'\"\r\n placement=\"bottom\"\r\n >\r\n <i\r\n class=\"fas fa-exclamation-circle\"\r\n style=\"font-size: 15px; color: #f56c6c\"\r\n />\r\n </el-tooltip>\r\n <el-tooltip\r\n v-else-if=\"\r\n new Date(assignment.DueDate) >=\r\n new Date(submissionStatus[key].UploadedDate)\r\n \"\r\n class=\"item\"\r\n effect=\"dark\"\r\n :content=\"\r\n 'Submitted on ' +\r\n formatDate(submissionStatus[key].UploadedDate) +\r\n ' EST'\r\n \"\r\n placement=\"bottom\"\r\n >\r\n <i\r\n class=\"far fa-check-circle\"\r\n style=\"font-size: 15px; color: rgb(11 133 95)\"\r\n />\r\n </el-tooltip>\r\n <el-tooltip\r\n v-else\r\n class=\"item\"\r\n effect=\"dark\"\r\n :content=\"\r\n 'Submitted on ' +\r\n formatDate(submissionStatus[key].UploadedDate) +\r\n ' EST'\r\n \"\r\n placement=\"bottom\"\r\n >\r\n <i\r\n class=\"far fa-check-circle\"\r\n style=\"font-size: 15px; color: rgb(11 133 95)\"\r\n />\r\n </el-tooltip>\r\n\r\n <el-tooltip\r\n v-if=\"submissionStatus[key].Status != 'No Submission'\"\r\n class=\"item\"\r\n effect=\"dark\"\r\n :content=\"'Resubmit Project'\"\r\n placement=\"bottom\"\r\n style=\"margin-left: 10px\"\r\n >\r\n <i\r\n class=\"fas fa-file-upload\"\r\n style=\"font-size: 15px\"\r\n @click.stop.prevent=\"openDialog(assignment.Id, key)\"\r\n />\r\n </el-tooltip>\r\n </span>\r\n </span>\r\n </span>\r\n\r\n <div\r\n v-if=\"submissionStatus && submissionStatus[key]\"\r\n style=\"float: right\"\r\n >\r\n <el-tooltip\r\n v-if=\"\r\n submissionStatus[key].Status == 'Submitted' ||\r\n submissionStatus[key].Status == 'Feedback Available'\r\n \"\r\n style=\"margin-left: 0px\"\r\n class=\"item\"\r\n effect=\"dark\"\r\n content=\"View Submission\"\r\n placement=\"bottom\"\r\n >\r\n <el-button\r\n class=\"assignment-action-btn\"\r\n size=\"mini\"\r\n style=\"padding: 7px 15px; margin-top: 10px;\"\r\n @click=\"\r\n viewSubmission(\r\n submissionStatus[key].DocId,\r\n assignment\r\n )\r\n \"\r\n >\r\n <i class=\"far fa-file-alt\" style=\"font-size: 13px\" />\r\n <span\r\n style=\"\r\n position: relative;\r\n margin-left: 6px;\r\n font-size: 13px;\r\n \"\r\n >\r\n View Submission\r\n </span>\r\n </el-button>\r\n </el-tooltip>\r\n\r\n <el-tooltip\r\n v-if=\"submissionStatus[key].Status == 'No Submission'\"\r\n style=\"margin-left: 0px\"\r\n class=\"item\"\r\n effect=\"dark\"\r\n content=\"Submit Project\"\r\n placement=\"bottom\"\r\n >\r\n <el-button\r\n class=\"assignment-action-btn\"\r\n size=\"mini\"\r\n style=\"padding: 7px 15px; margin-top: 10px;\"\r\n @click=\"openDialog(assignment.Id, key)\"\r\n >\r\n <i\r\n class=\"fas fa-file-upload\"\r\n style=\"font-size: 13px\"\r\n />\r\n <span\r\n style=\"\r\n position: relative;\r\n margin-left: 6px;\r\n font-size: 13px;\r\n \"\r\n >\r\n Submit Project\r\n </span>\r\n </el-button>\r\n </el-tooltip>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div v-if=\"userRole == 'Instructor'\">\r\n <div class=\"project-submission\">\r\n <div\r\n v-for=\"(task, index) in assignment.Tasks\"\r\n :key=\"task.Id\"\r\n :style=\"heightMin\"\r\n class=\"assignment-row\"\r\n @click=\"gotoStudentSubmissions(assignment.Id, task.Type)\"\r\n >\r\n <div\r\n style=\"\r\n float: left;\r\n padding-left: 20px;\r\n margin-top: 3px;\r\n width: 35px;\r\n \"\r\n >\r\n <i\r\n v-if=\"task.Type == 'instructor_review'\"\r\n class=\"far fa-file-alt\"\r\n style=\"\r\n font-size: 18px;\r\n color: #4e5e63;\r\n margin-left: 10px;\r\n margin-right: 10px;\r\n \"\r\n @click=\"\r\n gotoStudentSubmissions(assignment.Id, task.Type)\r\n \"\r\n />\r\n <i\r\n v-else-if=\"task.Type == 'self_review'\"\r\n class=\"fas fa-user-check\"\r\n style=\"\r\n font-size: 15px;\r\n color: #4e5e63;\r\n margin-left: 10px;\r\n margin-right: 10px;\r\n \"\r\n @click=\"\r\n gotoStudentSubmissions(assignment.Id, task.Type)\r\n \"\r\n />\r\n <i\r\n v-else-if=\"task.Type == 'peer_review'\"\r\n class=\"fas fa-user-edit\"\r\n style=\"\r\n font-size: 15px;\r\n color: #4e5e63;\r\n margin-left: 10px;\r\n margin-right: 10px;\r\n \"\r\n @click=\"\r\n gotoStudentSubmissions(assignment.Id, task.Type)\r\n \"\r\n />\r\n <i\r\n v-else\r\n class=\"fab fa-rev\"\r\n style=\"\r\n font-size: 16px;\r\n color: #4e5e63;\r\n margin-left: 10px;\r\n margin-right: 10px;\r\n \"\r\n @click=\"\r\n gotoStudentSubmissions(assignment.Id, task.Type)\r\n \"\r\n />\r\n </div>\r\n <div style=\"float: left; width: calc(100% - 65px)\">\r\n <div style=\"float: left\">\r\n <span\r\n v-if=\"task.Type != 'instructor_review'\"\r\n style=\"\r\n font-size: 15px;\r\n margin-left: 10px;\r\n font-weight: bold;\r\n \"\r\n @click=\"editTask(task, index, key)\"\r\n >\r\n {{ task.Name }}\r\n </span>\r\n\r\n <span\r\n v-else\r\n style=\"\r\n font-size: 15px;\r\n margin-left: 10px;\r\n font-weight: bold;\r\n display: inline-block;\r\n margin-top: 8px;\r\n \"\r\n @click=\"editTask(task, index, key)\"\r\n >\r\n {{ task.Name }}\r\n </span>\r\n <p\r\n style=\"\r\n margin: 0px;\r\n margin-top: 5px;\r\n font-size: 11px;\r\n margin-left: 11px;\r\n \"\r\n >\r\n <span v-if=\"task.Type != 'instructor_review'\">\r\n <span>\r\n Due Date: <b>{{\r\n task.DueDate | formatDate\r\n }}\r\n EST</b> | </span>\r\n Submitted:\r\n <span\r\n v-if=\"submissionNumbers &&\r\n submissionNumbers.length > 0 &&\r\n submissionNumbers.filter(\r\n (s) => s.TaskId == task.Id\r\n ).length > 0\r\n \"\r\n >\r\n <span\r\n v-if=\"submissionNumbers &&\r\n submissionNumbers.length > 0 &&\r\n submissionNumbers.filter(\r\n (s) => s.TaskId == task.Id\r\n )[0].SubmissionNumber > 1\r\n \"\r\n ><b>\r\n {{\r\n submissionNumbers.filter(\r\n (s) => s.TaskId == task.Id\r\n )[0].SubmissionNumber\r\n }}\r\n students</b> \r\n </span>\r\n <span v-else><b>1 student</b> </span>\r\n </span>\r\n <span v-else><b>0 students</b> </span>\r\n <!-- | -->\r\n </span>\r\n <!-- Rubric: <b>{{ rubricList.find(r => r.Id == task.RubricId).RubricName }}</b> -->\r\n </p>\r\n </div>\r\n <div style=\"float: right\">\r\n <el-tooltip\r\n v-if=\"task.Type == 'instructor_review'\"\r\n class=\"item\"\r\n effect=\"dark\"\r\n content=\"View All Instructor Feedback\"\r\n placement=\"bottom\"\r\n >\r\n <el-button\r\n class=\"assignment-action-btn\"\r\n size=\"mini\"\r\n style=\"padding: 7px 15px; margin-top: 4px\"\r\n @click.stop.prevent=\"\r\n gotoStudentScores(assignment.Id, key)\r\n \"\r\n >\r\n <i\r\n class=\"far fa-comments\"\r\n style=\"\r\n font-size: 13px\r\n top: 1px;\r\n \"\r\n />\r\n </el-button>\r\n </el-tooltip>\r\n <el-button\r\n v-if=\"\r\n task.Type == 'peer_review' &&\r\n assignment.IsGroupAssignment &&\r\n teamFormationStatus &&\r\n teamFormationStatus.filter(\r\n (t) =>\r\n t.AssignmentId == assignment.Id &&\r\n t.AssignmentType == 'group_peer_review'\r\n ).length > 0 &&\r\n teamFormationStatus.filter(\r\n (t) =>\r\n t.AssignmentId == assignment.Id &&\r\n t.AssignmentType == 'group_peer_review'\r\n )[0].IsSubmitted\r\n \"\r\n type=\"success\"\r\n plain\r\n class=\"assignment-action-btn\"\r\n size=\"mini\"\r\n style=\"padding: 7px 15px; margin-top: 4px\"\r\n @click.stop.prevent=\"\r\n gotoPeerReviewTeamFormation(assignment.Id)\r\n \"\r\n >\r\n <i\r\n class=\"far fa-check-circle\"\r\n style=\"\r\n font-size: 13px;\r\n position: relative;\r\n top: 1px;\r\n \"\r\n /> \r\n <i\r\n class=\"fas fa-user-friends\"\r\n style=\"\r\n font-size: 13px;\r\n position: relative;\r\n top: 1px;\r\n \"\r\n />\r\n <span style=\"margin-left: 2px\">\r\n Team Formation\r\n </span>\r\n </el-button>\r\n <el-button\r\n v-if=\"\r\n task.Type == 'peer_review' &&\r\n assignment.IsGroupAssignment &&\r\n teamFormationStatus &&\r\n teamFormationStatus.filter(\r\n (t) =>\r\n t.AssignmentId == assignment.Id &&\r\n t.AssignmentType == 'group_peer_review'\r\n ).length == 0\r\n \"\r\n type=\"danger\"\r\n plain\r\n class=\"assignment-action-btn\"\r\n size=\"mini\"\r\n style=\"padding: 7px 15px; margin-top: 4px\"\r\n @click.stop.prevent=\"\r\n gotoPeerReviewTeamFormation(assignment.Id)\r\n \"\r\n >\r\n <i\r\n class=\"fas fa-exclamation-circle\"\r\n style=\"\r\n font-size: 13px;\r\n position: relative;\r\n top: 1px;\r\n \"\r\n /> \r\n <i\r\n class=\"fas fa-user-friends\"\r\n style=\"\r\n font-size: 13px;\r\n position: relative;\r\n top: 1px;\r\n \"\r\n />\r\n <span style=\"margin-left: 2px\">\r\n Team Formation\r\n </span>\r\n </el-button>\r\n\r\n <el-button\r\n v-if=\"\r\n task.Type == 'peer_review' &&\r\n !assignment.IsGroupAssignment &&\r\n teamFormationStatus &&\r\n teamFormationStatus.filter(\r\n (t) =>\r\n t.AssignmentId == assignment.Id &&\r\n t.AssignmentType == 'peer_review'\r\n ).length > 0 &&\r\n teamFormationStatus.filter(\r\n (t) =>\r\n t.AssignmentId == assignment.Id &&\r\n t.AssignmentType == 'peer_review'\r\n )[0].IsSubmitted\r\n \"\r\n type=\"success\"\r\n plain\r\n class=\"assignment-action-btn\"\r\n size=\"mini\"\r\n style=\"padding: 7px 15px; margin-top: 4px\"\r\n @click.stop.prevent=\"\r\n gotoPeerReviewTeamFormation(assignment.Id)\r\n \"\r\n >\r\n <i\r\n class=\"far fa-check-circle\"\r\n style=\"\r\n font-size: 13px;\r\n position: relative;\r\n top: 1px;\r\n \"\r\n /> \r\n <i\r\n class=\"fas fa-user-friends\"\r\n style=\"\r\n font-size: 13px;\r\n position: relative;\r\n top: 1px;\r\n \"\r\n />\r\n <span style=\"margin-left: 2px\">\r\n Team Formation\r\n </span>\r\n </el-button>\r\n\r\n <el-button\r\n v-if=\"\r\n task.Type == 'peer_review' &&\r\n !assignment.IsGroupAssignment &&\r\n teamFormationStatus &&\r\n teamFormationStatus.filter(\r\n (t) =>\r\n t.AssignmentId == assignment.Id &&\r\n t.AssignmentType == 'peer_review'\r\n ).length == 0\r\n \"\r\n type=\"danger\"\r\n plain\r\n class=\"assignment-action-btn\"\r\n size=\"mini\"\r\n style=\"padding: 7px 15px; margin-top: 4px\"\r\n @click.stop.prevent=\"\r\n gotoPeerReviewTeamFormation(assignment.Id)\r\n \"\r\n >\r\n <i\r\n class=\"fas fa-exclamation-circle\"\r\n style=\"\r\n font-size: 13px;\r\n position: relative;\r\n top: 1px;\r\n \"\r\n /> \r\n <i\r\n class=\"fas fa-user-friends\"\r\n style=\"\r\n font-size: 13px;\r\n position: relative;\r\n top: 1px;\r\n \"\r\n />\r\n <span style=\"margin-left: 2px\">\r\n Team Formation\r\n </span>\r\n </el-button>\r\n <el-tooltip\r\n class=\"item\"\r\n effect=\"dark\"\r\n content=\"View Rubric\"\r\n placement=\"bottom\"\r\n >\r\n <el-button\r\n class=\"assignment-action-btn\"\r\n size=\"mini\"\r\n style=\"padding: 7px 15px; margin-top: 4px\"\r\n @click.stop.prevent=\"\r\n previewRubric(task.RubricId)\r\n \"\r\n >\r\n <i\r\n class=\"fa fa-list-ol\"\r\n style=\"\r\n font-size: 13px\r\n top: 1px;\r\n \"\r\n />\r\n </el-button>\r\n </el-tooltip>\r\n <el-tooltip\r\n class=\"item\"\r\n effect=\"dark\"\r\n content=\"Edit Task\"\r\n placement=\"bottom\"\r\n >\r\n <el-button\r\n class=\"assignment-action-btn\"\r\n size=\"mini\"\r\n style=\"padding: 7px 10px; margin-top: 4px\"\r\n @click.stop.prevent=\"editTask(task, index, key)\"\r\n >\r\n <i\r\n class=\"far fa-edit\"\r\n style=\"\r\n font-size: 13px;\r\n position: relative;\r\n top: 0px;\r\n \"\r\n />\r\n </el-button>\r\n </el-tooltip>\r\n <el-tooltip\r\n class=\"item\"\r\n effect=\"dark\"\r\n content=\"Delete Task\"\r\n placement=\"bottom\"\r\n >\r\n <el-button\r\n class=\"assignment-action-btn\"\r\n size=\"mini\"\r\n style=\"padding: 7px 10px; margin-top: 4px\"\r\n @click.stop.prevent=\"\r\n deleteTask(task.Id, index, key)\r\n \"\r\n >\r\n <i\r\n class=\"fas fa-trash-alt\"\r\n style=\"\r\n font-size: 13px;\r\n position: relative;\r\n top: 0px;\r\n \"\r\n />\r\n </el-button>\r\n </el-tooltip>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div v-if=\"userRole == 'Student' && submissionStatus[key]\">\r\n <div class=\"project-submission\">\r\n <div\r\n v-for=\"task in assignment.Tasks\"\r\n :key=\"task.Id\"\r\n :style=\"heightMin\"\r\n class=\"assignment-row\"\r\n @click=\"\r\n gotoDetails(\r\n assignment,\r\n submissionStatus[key].GroupId,\r\n task,\r\n submissionStatus[key].Status,\r\n reviewFeedback.filter((s) => s.TaskId == task.Id).length > 0\r\n )\r\n \"\r\n >\r\n <div\r\n style=\"\r\n float: left;\r\n padding-left: 20px;\r\n margin-top: 3px;\r\n width: 35px;\r\n \"\r\n >\r\n <i\r\n v-if=\"\r\n task.Type == 'instructor_review' &&\r\n submissionStatus &&\r\n submissionStatus[key] &&\r\n submissionStatus[key].Status != 'No Submission'\r\n \"\r\n class=\"far fa-file-alt\"\r\n style=\"\r\n font-size: 18px;\r\n color: #4e5e63;\r\n margin-left: 10px;\r\n margin-right: 10px;\r\n \"\r\n />\r\n <i\r\n v-else-if=\"\r\n task.Type == 'instructor_review' &&\r\n (!submissionStatus ||\r\n !submissionStatus[key] ||\r\n submissionStatus[key].Status == 'No Submission')\r\n \"\r\n class=\"far fa-file-alt\"\r\n style=\"\r\n font-size: 18px;\r\n color: #4e5e63;\r\n margin-left: 10px;\r\n margin-right: 10px;\r\n \"\r\n />\r\n <i\r\n v-else-if=\"task.Type == 'self_review'\"\r\n class=\"fas fa-user-check\"\r\n style=\"\r\n font-size: 15px;\r\n color: #4e5e63;\r\n margin-left: 10px;\r\n margin-right: 10px;\r\n cursor: pointer;\r\n \"\r\n @click=\"\r\n gotoTask(\r\n assignment,\r\n submissionStatus[key].GroupId,\r\n task\r\n )\r\n \"\r\n />\r\n <i\r\n v-else-if=\"task.Type == 'peer_review'\"\r\n class=\"fas fa-user-edit\"\r\n style=\"\r\n font-size: 15px;\r\n color: #4e5e63;\r\n margin-left: 10px;\r\n margin-right: 10px;\r\n cursor: pointer;\r\n \"\r\n @click=\"\r\n gotoTask(\r\n assignment,\r\n submissionStatus[key].GroupId,\r\n task\r\n )\r\n \"\r\n />\r\n <i\r\n v-else\r\n class=\"fab fa-rev\"\r\n style=\"\r\n font-size: 16px;\r\n color: #4e5e63;\r\n margin-left: 10px;\r\n margin-right: 10px;\r\n cursor: pointer;\r\n \"\r\n @click=\"\r\n gotoTask(\r\n assignment,\r\n submissionStatus[key].GroupId,\r\n task\r\n )\r\n \"\r\n />\r\n </div>\r\n <div style=\"float: left; width: calc(100% - 65px)\">\r\n <div style=\"float: left\">\r\n <span\r\n class=\"assignment-title\"\r\n style=\"font-size: 15px; margin-left: 10px\"\r\n @click=\"\r\n gotoTask(\r\n assignment,\r\n submissionStatus[key].GroupId,\r\n task\r\n )\r\n \"\r\n >\r\n {{ task.Name }}\r\n </span>\r\n\r\n <p\r\n style=\"\r\n margin: 0px;\r\n margin-top: 0px;\r\n font-size: 11px;\r\n margin-left: 11px;\r\n \"\r\n >\r\n <span\r\n v-if=\"task.Type != 'instructor_review'\">\r\n <b>Due Date:</b>\r\n {{ task.DueDate | formatDate }} EST \r\n </span>\r\n <span\r\n v-if=\"\r\n task.Type == 'instructor_review' &&\r\n submissionStatus &&\r\n submissionStatus[key]\r\n \"\r\n style=\"margin-left: 5px\"\r\n >\r\n <el-tag\r\n v-if=\"\r\n submissionStatus[key].Status ==\r\n 'No Submission'\r\n \"\r\n type=\"danger\"\r\n size=\"mini\"\r\n >\r\n <i\r\n class=\"fas fa-exclamation-circle\"\r\n style=\"font-size: 13px; color: #f56c6c\"\r\n />\r\n Please submit your draft to the Project above\r\n </el-tag>\r\n <el-tag\r\n v-else-if=\"\r\n ((reviewFeedback && reviewFeedback.filter((s) => s.TaskId == task.Id).length > 0))\"\r\n type=\"success\"\r\n size=\"mini\">\r\n <span>\r\n <i\r\n class=\"far fa-check-circle\"\r\n style=\"font-size: 13px; color: #67c23a\"\r\n />\r\n View Feedback</span>\r\n <!-- Submitted on\r\n {{\r\n formatDate(submissionStatus[key].UploadedDate)\r\n }}\r\n EST -->\r\n </el-tag>\r\n <el-tag\r\n v-else\r\n type=\"warning\"\r\n size=\"mini\">\r\n <el-tooltip\r\n class=\"item\"\r\n effect=\"dark\"\r\n placement=\"bottom\"\r\n >\r\n <div slot=\"content\">\r\n You have submitted your paper and are waiting on your Instructor to provide feedback.\r\n </div>\r\n <span>\r\n <i\r\n class=\"fas fa-tasks\"\r\n style=\"font-size: 13px; color: #e6a23c;\"\r\n />\r\n Awaiting Instructor Feedback \r\n </span>\r\n </el-tooltip>\r\n </el-tag>\r\n </span>\r\n\r\n <span\r\n v-else-if=\"\r\n task.Type == 'peer_review' &&\r\n taskSubmissionStatus &&\r\n taskSubmissionStatus.find(\r\n (s) => s.TaskId == task.Id\r\n )\r\n \"\r\n style=\"margin-left: 5px\"\r\n >\r\n <el-tag\r\n v-if=\"\r\n taskSubmissionStatus.find(\r\n (s) => s.TaskId == task.Id\r\n ).Status == 'Completed'\r\n \"\r\n type=\"success\"\r\n size=\"mini\"\r\n >\r\n <i\r\n class=\"far fa-check-circle\"\r\n style=\"font-size: 13px; color: #67c23a\"\r\n />\r\n Completed\r\n </el-tag>\r\n <el-tag\r\n v-else-if=\"\r\n taskSubmissionStatus.find(\r\n (s) => s.TaskId == task.Id\r\n ).Status == 'In Progress'\r\n \"\r\n type=\"warning\"\r\n size=\"mini\"\r\n >\r\n <el-tooltip\r\n class=\"item\"\r\n effect=\"dark\"\r\n placement=\"bottom\"\r\n >\r\n <div slot=\"content\">\r\n Peer review is in progress. Peers in your group have submitted papers,\r\n <br>but you have not completed all of your reviews.\r\n </div>\r\n <span>\r\n <i\r\n class=\"fas fa-tasks\"\r\n style=\"font-size: 13px; color: #e6a23c;\"\r\n />\r\n In Progress\r\n </span>\r\n </el-tooltip>\r\n </el-tag>\r\n <el-tag\r\n v-else-if=\"\r\n taskSubmissionStatus.find(\r\n (s) => s.TaskId == task.Id\r\n ).Status == 'Partially Completed'\r\n \"\r\n type=\"warning\"\r\n size=\"mini\"\r\n >\r\n <el-tooltip\r\n class=\"item\"\r\n effect=\"dark\"\r\n placement=\"bottom\"\r\n >\r\n <div slot=\"content\">\r\n Peer review is partially completed. You have reviewed all available papers,\r\n <br>but there are peers in your group who have not submitted papers.\r\n </div>\r\n <span>\r\n <i class=\"fas fa-tasks\"\r\n style=\"font-size: 13px; color: #569636;\"\r\n />\r\n Partially Completed\r\n </span>\r\n </el-tooltip>\r\n </el-tag>\r\n </span>\r\n <span\r\n v-else-if=\"\r\n taskSubmissionStatus &&\r\n taskSubmissionStatus.find(\r\n (s) => s.TaskId == task.Id\r\n )\r\n \"\r\n style=\"margin-left: 5px\"\r\n >\r\n <el-tag\r\n v-if=\"\r\n taskSubmissionStatus.find(\r\n (s) => s.TaskId == task.Id\r\n ).Status == 'No Submission'\r\n \"\r\n type=\"warning\"\r\n size=\"mini\"\r\n >\r\n <el-tooltip\r\n class=\"item\"\r\n effect=\"dark\"\r\n placement=\"bottom\"\r\n >\r\n <div slot=\"content\">\r\n You have added feedback for this task but have not pressed Submit.\r\n </div>\r\n <span>\r\n <i class=\"fas fa-tasks\"\r\n style=\"font-size: 13px; color: #e6a23c;\"\r\n />\r\n In Progress - not submitted\r\n </span>\r\n </el-tooltip>\r\n </el-tag>\r\n <el-tag\r\n v-else-if=\"\r\n taskSubmissionStatus.find(\r\n (s) => s.TaskId == task.Id\r\n ).SubmittedDate != null\r\n \"\r\n type=\"success\"\r\n size=\"mini\">\r\n <i\r\n class=\"far fa-check-circle\"\r\n style=\"font-size: 13px; color: #67c23a\"\r\n />\r\n Submitted on\r\n {{\r\n formatDate(\r\n taskSubmissionStatus.find(\r\n (s) => s.TaskId == task.Id\r\n ).SubmittedDate\r\n )\r\n }}\r\n EST\r\n </el-tag>\r\n <el-tag v-else type=\"warning\" size=\"mini\">\r\n <i\r\n class=\"fas fa-tasks\"\r\n style=\"font-size: 13px; color: #e6a23c;\"\r\n />\r\n In Progress\r\n </el-tag>\r\n </span>\r\n <span v-else style=\"margin-left: 5px\">\r\n <el-tag type=\"danger\" size=\"mini\">\r\n <i\r\n class=\"fas fa-exclamation-circle\"\r\n style=\"font-size: 13px; color: #f56c6c\"\r\n />\r\n No Submission\r\n </el-tag>\r\n </span>\r\n </p>\r\n </div>\r\n <div\r\n v-if=\"\r\n (task.Type != 'self_review' &&\r\n task.Type != 'appraisal' &&\r\n ((reviewFeedback && reviewFeedback.filter((s) => s.TaskId == task.Id).length > 0)))\r\n \"\r\n style=\"float: right\"\r\n >\r\n <el-button\r\n class=\"assignment-action-btn\"\r\n size=\"mini\"\r\n style=\"margin-top: 7px; padding: 7px 15px\"\r\n @click.stop.prevent=\"\r\n viewTaskFeedback(assignment, task)\r\n \"\r\n >\r\n <i\r\n class=\"far fa-comment-alt\"\r\n style=\"font-size: 13px\"\r\n />\r\n <span\r\n style=\"\r\n position: relative;\r\n top: -1px;\r\n margin-left: 6px;\r\n \"\r\n >\r\n View Feedback\r\n </span>\r\n </el-button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </el-card>\r\n </div>\r\n </draggable>\r\n </div>\r\n </div>\r\n </div>\r\n <!-- IX this CODE is from RubricDetail and should be extracted to a shared component -->\r\n <el-dialog id=\"preview-rubric-dialog\" :visible.sync=\"rubricPreviewDialogVisible\" width=\"750px\" top=\"50px\" center>\r\n <template slot=\"title\">\r\n <span v-if=\"rubric\" class=\"rubric-dialog-title\">\r\n Preview <b>{{ rubric.RubricName }}</b>\r\n </span>\r\n </template>\r\n <div id=\"rubric\">\r\n <div style=\"height: 100%; overflow: auto;\">\r\n <el-card v-for=\"(criteria, criteriaIndex) in criterias\" :key=\"criteria.Id\" style=\"margin-bottom: 5px; margin-left: 3px;\">\r\n <div slot=\"header\" class=\"clearfix\">\r\n <span style=\"font-size: 16px; font-weight: bold;\">\r\n {{ criteria.CriteriaName }}\r\n </span>\r\n <div style=\"font-size: 14px; margin-top: 10px;\">\r\n <el-text v-if=\"criteria.Description && criteria.Description != ''\" class=\" criteria-description newLineStringStyle \">{{ criteria.Description }}</el-text>\r\n </div>\r\n </div>\r\n <div>\r\n <div>\r\n <el-radio-group\r\n v-if=\"criteria.UseAsGrade\"\r\n :id=\"criteria.Id\"\r\n style=\"margin-bottom: 10px; min-width: 240px;\"\r\n >\r\n <el-tooltip\r\n v-for=\"(milestone) in criteria.RubricCriteriaMilestones.slice()\"\r\n :key=\"milestone.Id\"\r\n class=\"item\"\r\n effect=\"light\"\r\n placement=\"top\"\r\n >\r\n <div slot=\"content\" style=\"max-width: 500px;\">\r\n {{ milestone.Description }}\r\n </div>\r\n <el-radio-button\r\n :key=\"milestone.Id\"\r\n :label=\"milestone.Value\"\r\n />\r\n </el-tooltip>\r\n </el-radio-group>\r\n </div>\r\n <div>\r\n <el-input\r\n v-if=\"criteria.UseAsGrade || criteria.UseAsTextComment\"\r\n\r\n :criteria-index=\"criteriaIndex\"\r\n :disabled=\"true\"\r\n type=\"textarea\"\r\n placeholder=\"Score Explanation\"\r\n :rows=\"3\"\r\n :maxlength=\"8000\"\r\n class=\"criteria-comment\"\r\n />\r\n </div>\r\n </div>\r\n </el-card>\r\n </div>\r\n </div>\r\n <span slot=\"footer\" class=\"dialog-footer\">\r\n <el-button @click=\"rubricPreviewDialogVisible = false\">\r\n close\r\n </el-button>\r\n <el-button @click=\"printContent\">\r\n print\r\n </el-button>\r\n </span>\r\n </el-dialog>\r\n\r\n <el-dialog\r\n v-if=\"selectedAssignment && userRole == 'Student'\"\r\n id=\"survey-dialog\"\r\n :visible.sync=\"surveyDialogVisible\"\r\n :width=\"surveyWidth\"\r\n center\r\n @closed=\"cancelSurvey()\"\r\n >\r\n <template slot=\"title\">\r\n <span class=\"dialog-title\">\r\n {{ surveyTitle }}\r\n </span>\r\n </template>\r\n\r\n <hr>\r\n\r\n <div\r\n v-if=\"surveyId == 4\"\r\n class=\"tip\"\r\n style=\"\r\n padding: 4px 4px;\r\n background-color: #daf1ea;\r\n border-radius: 4px;\r\n border-left: 5px solid rgb(28 138 105);\r\n margin-bottom: 10px;\r\n \"\r\n >\r\n <p style=\"font-size: 14px; color: #444444; word-break: normal\">\r\n <b>Introduction:</b> The USF First-Year Composition (FYC) program\r\n continues to seek information for program evaluation. The following\r\n 20-item survey asks you about your attitudes and perceptions of\r\n <i>labor-based grading contracts</i>. Your responses will be kept\r\n private and secure and will not be shared outside of the program\r\n evaluation team.\r\n </p>\r\n </div>\r\n\r\n <div\r\n v-if=\"surveyId == 3\"\r\n class=\"tip\"\r\n style=\"\r\n padding: 4px 4px;\r\n background-color: #daf1ea;\r\n border-radius: 4px;\r\n border-left: 5px solid rgb(28 138 105);\r\n margin-bottom: 10px;\r\n \"\r\n >\r\n <p style=\"font-size: 14px; color: #444444; word-break: normal\">\r\n Before you complete your assignment upload, please help us in planning\r\n for the spring term by answering the following questions. You will be\r\n directed to finish the upload after you submit.\r\n </p>\r\n </div>\r\n <div\r\n v-else-if=\"surveyId == 4\"\r\n class=\"tip\"\r\n style=\"\r\n padding: 4px 4px;\r\n background-color: #daf1ea;\r\n border-radius: 4px;\r\n border-left: 5px solid rgb(28 138 105);\r\n margin-bottom: 10px;\r\n \"\r\n >\r\n <p style=\"font-size: 14px; color: #444444; word-break: normal\">\r\n <b>Directions:</b> Read each of the following statements and then\r\n indicate the extent to which you <i>agree</i> or <i>disagree</i> with\r\n the statement. After selected statements, you will be invited to\r\n elaborate on your response. These follow up questions are not\r\n required, but your responses do help us better understand why you\r\n answered the way you did.\r\n </p>\r\n </div>\r\n <div\r\n v-else\r\n class=\"tip\"\r\n style=\"\r\n padding: 4px 4px;\r\n background-color: #daf1ea;\r\n border-radius: 4px;\r\n border-left: 5px solid rgb(28 138 105);\r\n margin-bottom: 10px;\r\n \"\r\n >\r\n <p style=\"font-size: 14px; color: #444444; word-break: normal\">\r\n Please complete the following survey before submitting your paper.\r\n </p>\r\n </div>\r\n\r\n <div\r\n v-if=\"questions\"\r\n style=\"width: 100%; margin: auto; margin-top: 20px; word-break: normal\"\r\n >\r\n <div\r\n v-for=\"(question, index) in questions\"\r\n :key=\"question.Id\"\r\n style=\"margin-top: 15px\"\r\n >\r\n <span v-if=\"question.Type != 'Heading'\">\r\n {{ getQuestionNumber(index) + \". \" + question.Content }}\r\n </span>\r\n <span v-else style=\"font-size: 14px\">\r\n <b>{{ question.Content }}</b>\r\n </span>\r\n <br>\r\n <div\r\n v-if=\"\r\n question.Type != 'Heading' &&\r\n surveyResponses &&\r\n surveyResponses[index]\r\n \"\r\n >\r\n <div v-if=\"question.Type == 'Open Ended'\" style=\"margin-top: 5px\">\r\n <el-input\r\n v-model=\"surveyResponses[index].ResponseDetail\"\r\n type=\"textarea\"\r\n :rows=\"3\"\r\n placeholder=\"\"\r\n style=\"width: 100%\"\r\n />\r\n </div>\r\n <div v-else-if=\"question.Type == 'Multiple Choice'\">\r\n <el-radio-group\r\n :id=\"question.Id\"\r\n v-model=\"surveyResponses[index].AnswerId\"\r\n style=\"margin-top: 5px; width: 100%\"\r\n @input=\"submitSurveyActive = true\"\r\n >\r\n <div\r\n v-for=\"answer in question.Answers\"\r\n :key=\"answer.Id\"\r\n style=\"margin-top: 5px; width: 100%\"\r\n >\r\n <el-radio\r\n :label=\"answer.Id\"\r\n style=\"white-space: normal; word-break: break-all\"\r\n >{{ answer.Content }}</el-radio>\r\n </div>\r\n </el-radio-group>\r\n </div>\r\n <div\r\n v-else-if=\"\r\n question.Type == 'Single Followup' && followupQuestion != null\r\n \"\r\n >\r\n <el-radio-group\r\n :id=\"question.Id\"\r\n v-model=\"surveyResponses[index].AnswerId\"\r\n style=\"margin-top: 5px\"\r\n @input=\"checkSubmitSurveyActive()\"\r\n >\r\n <el-radio-button\r\n v-for=\"answer in question.Answers\"\r\n :key=\"answer.Id\"\r\n :label=\"answer.Id\"\r\n >\r\n {{ answer.Content }}\r\n </el-radio-button>\r\n </el-radio-group>\r\n <div style=\"margin-top: 10px\">\r\n <span style=\"font-size: 13.65px\">\r\n {{ followupQuestion.Content }}\r\n </span>\r\n <el-input\r\n v-model=\"surveyResponses[index].ResponseDetail\"\r\n type=\"textarea\"\r\n :rows=\"3\"\r\n placeholder=\"\"\r\n style=\"width: 100%; margin-top: 5px\"\r\n />\r\n </div>\r\n </div>\r\n <div v-else>\r\n <el-radio-group\r\n :id=\"question.Id\"\r\n v-model=\"surveyResponses[index].AnswerId\"\r\n style=\"margin-top: 5px\"\r\n @input=\"submitSurveyActive = true\"\r\n >\r\n <el-radio-button\r\n v-for=\"answer in question.Answers\"\r\n :key=\"answer.Id\"\r\n :label=\"answer.Id\"\r\n >\r\n {{ answer.Content }}\r\n </el-radio-button>\r\n <!-- <el-tooltip\r\n v-for=\"answer in question.Answers\"\r\n :key=\"answer.Id\"\r\n class=\"item\"\r\n effect=\"light\"\r\n placement=\"bottom\"\r\n >\r\n <div slot=\"content\" style=\"max-width: 500px;\">\r\n {{ answer.Description }}\r\n </div>\r\n <el-radio-button\r\n :key=\"answer.Id\"\r\n :label=\"answer.Id\"\r\n >\r\n {{ answer.Content }}\r\n </el-radio-button>\r\n </el-tooltip> -->\r\n </el-radio-group>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div v-if=\"surveyId == 4\" style=\"margin-top: 20px; text-align: center\">\r\n <span\r\n style=\"word-break: normal\"\r\n ><b>The FYC Program thanks you for taking the time to provide feedback\r\n on our program. If you have any questions, please contact Kara\r\n Larson (kklarson@usf.edu).</b></span>\r\n </div>\r\n\r\n <span slot=\"footer\" class=\"dialog-footer\">\r\n <el-button\r\n :disabled=\"!submitSurveyActive\"\r\n type=\"primary\"\r\n @click=\"submitSurvey()\"\r\n >\r\n Submit\r\n </el-button>\r\n <el-button\r\n v-if=\"\r\n surveyId != 5 &&\r\n surveyId != 6 &&\r\n surveyId != 7 &&\r\n surveyId != 8 &&\r\n surveyId != 9 &&\r\n surveyId != 10 &&\r\n surveyId != 11 &&\r\n surveyId != 12 &&\r\n surveyId != 13 &&\r\n surveyId != 14 &&\r\n surveyId != 15\r\n \"\r\n @click=\"surveyDialogVisible = false\"\r\n >\r\n Skip\r\n </el-button>\r\n </span>\r\n </el-dialog>\r\n\r\n <el-dialog\r\n v-if=\"selectedAssignment && userRole == 'Student'\"\r\n id=\"upload-dialog\"\r\n :visible.sync=\"uploadDialogVisible\"\r\n width=\"550px\"\r\n center\r\n >\r\n <template slot=\"title\">\r\n <div style=\"padding-left: 10px; padding-right: 10px\">\r\n <span class=\"dialog-title\">\r\n Upload Paper for {{ selectedAssignment.AssignmentName }}\r\n </span>\r\n </div>\r\n </template>\r\n <hr>\r\n\r\n <div\r\n v-if=\"\r\n submissionStatus &&\r\n submissionStatus.filter(\r\n (s) => s.AssignmentId == selectedAssignment.Id\r\n )[0].Status == 'Feedback Available'\r\n \"\r\n class=\"tip\"\r\n style=\"\r\n padding: 5px 10px;\r\n background-color: rgb(253, 226, 226);\r\n border-radius: 4px;\r\n border-left: 5px solid rgb(245, 108, 108);\r\n margin-bottom: 10px;\r\n \"\r\n >\r\n <p style=\"font-size: 14px; color: #444444; word-break: normal\">\r\n Feedback is associated with your draft. If you resubmit and replace\r\n this draft, any required feedback must be resubmitted as well.\r\n </p>\r\n </div>\r\n\r\n <div\r\n v-if=\"selectedAssignment.UseCanvasIntegration && canvasAssignmentName\"\r\n class=\"tip\"\r\n style=\"\r\n padding: 5px 10px;\r\n background-color: #daf1ea;\r\n border-radius: 4px;\r\n border-left: 5px solid rgb(28 138 105);\r\n margin-bottom: 10px;\r\n \"\r\n >\r\n <p style=\"font-size: 14px; color: #444444; word-break: normal\">\r\n This project was synced with\r\n <a\r\n style=\"color: #009374\"\r\n href=\"#\"\r\n @click=\"viewCanvasAssignment(htmlUrl)\"\r\n >{{ canvasAssignmentName }}</a>\r\n assignment in Canvas. Your paper will be submitted in both USF Writes\r\n and Canvas.\r\n </p>\r\n </div>\r\n <el-upload\r\n ref=\"upload\"\r\n class=\"upload-demo\"\r\n drag\r\n action=\"\"\r\n :on-remove=\"handleRemove\"\r\n :before-remove=\"beforeRemove\"\r\n :on-change=\"onUploadChange\"\r\n :auto-upload=\"false\"\r\n :multiple=\"false\"\r\n :limit=\"1\"\r\n :on-exceed=\"handleExceed\"\r\n list-type=\"picture\"\r\n accept=\".pdf,.PDF,.doc,.DOC,.docx,.DOCX\"\r\n style=\"width: 360px; margin: auto; margin-top: 20px\"\r\n >\r\n <i\r\n class=\"fas fa-cloud-upload-alt\"\r\n style=\"font-size: 50px; margin: 45px 0 16px; line-height: 50px\"\r\n />\r\n <!-- <i class=\" fas fa-file-upload\" /> -->\r\n <div class=\"el-upload__text\" style=\"text-align: center\">\r\n Drop file here or <em>click to submit your paper</em>\r\n </div>\r\n <div slot=\"tip\" class=\"el-upload__tip\" style=\"text-align: center\">\r\n Only pdf, doc, and docx files less than 20mb are accepted.\r\n </div>\r\n </el-upload>\r\n\r\n <span slot=\"footer\" class=\"dialog-footer\">\r\n <el-button @click=\"uploadDialogVisible = false\"> Cancel </el-button>\r\n <el-button v-if=\"file\" type=\"primary\" :disabled=\"isSubmitting\" @click=\"submitPaper()\">\r\n <i v-if=\"isSubmitting\" class=\"fas fa-spinner icon-spinner\" />\r\n Submit\r\n </el-button>\r\n </span>\r\n </el-dialog>\r\n\r\n <el-dialog\r\n v-if=\"userRole == 'Instructor'\"\r\n class=\"assignment-dialog\"\r\n :visible.sync=\"newAssignmentDialogVisible\"\r\n width=\"650px\"\r\n center\r\n @closed=\"closeAssignmentDialog()\"\r\n >\r\n <template slot=\"title\">\r\n <span class=\"dialog-title\"> Add New Project </span>\r\n </template>\r\n <hr>\r\n <el-form\r\n ref=\"newAssignmentForm\"\r\n :model=\"newAssignmentForm\"\r\n :rules=\"rules\"\r\n style=\"margin-top: 20px\"\r\n >\r\n <el-form-item\r\n label=\"Project Name\"\r\n prop=\"AssignmentName\"\r\n required\r\n :label-width=\"formLabelWidth\"\r\n >\r\n <el-input\r\n v-model=\"newAssignmentForm.AssignmentName\"\r\n autocomplete=\"off\"\r\n />\r\n </el-form-item>\r\n <el-form-item\r\n label=\"Project Due Date\"\r\n prop=\"DueDate\"\r\n required\r\n :label-width=\"formLabelWidth\"\r\n >\r\n <el-date-picker\r\n v-model=\"newAssignmentForm.DueDate\"\r\n type=\"datetime\"\r\n placeholder=\"Select a date\"\r\n format=\"MMM d, hh:mm a\"\r\n style=\"width: 100%\"\r\n />\r\n </el-form-item>\r\n <el-form-item\r\n label=\"Rubric\"\r\n prop=\"RubricId\"\r\n required\r\n :label-width=\"formLabelWidth\"\r\n >\r\n <el-select\r\n v-model=\"newAssignmentForm.RubricId\"\r\n value-key=\"Id\"\r\n filterable\r\n placeholder=\"Select Rubric\"\r\n style=\"width: 100%\"\r\n >\r\n <el-option\r\n v-for=\"item in rubricList\"\r\n :key=\"item.Id\"\r\n :label=\"item.RubricName\"\r\n :value=\"item.Id\"\r\n />\r\n </el-select>\r\n </el-form-item>\r\n <!-- <el-form-item label=\"Project Activity\" :label-width=\"formLabelWidth\">\r\n <el-checkbox v-model=\"newAssignmentForm.UsePeerReview\" label=\"Uses Peer Review\" name=\"peerReview\" />\r\n <el-checkbox v-model=\"newAssignmentForm.UseSelfAssessment\" label=\"Uses Self Review\" name=\"selfReview\" style=\"margin-left: 8px;\" />\r\n <el-checkbox v-model=\"newAssignmentForm.IsGroupAssignment\" label=\"Is Group project\" name=\"isGroup\" />\r\n <el-checkbox v-model=\"newAssignmentForm.UseAppraisal\" label=\"Uses Appraisal\" name=\"useAppraisal\" style=\"margin-left: 19px;\" />\r\n </el-form-item> -->\r\n <el-form-item\r\n label=\"Is Group Project\"\r\n prop=\"IsGroupAssignment\"\r\n :label-width=\"formLabelWidth\"\r\n >\r\n <el-checkbox\r\n v-model=\"newAssignmentForm.IsGroupAssignment\"\r\n name=\"isGroup\"\r\n style=\"margin-top: 12px\"\r\n />\r\n </el-form-item>\r\n <el-form-item\r\n v-if=\"newAssignmentForm.UsePeerReview\"\r\n label=\"Peer Review Due Date\"\r\n prop=\"PeerReviewDueDate\"\r\n required\r\n :label-width=\"formLabelWidth\"\r\n >\r\n <el-date-picker\r\n v-model=\"newAssignmentForm.PeerReviewDueDate\"\r\n type=\"datetime\"\r\n placeholder=\"Select a date\"\r\n format=\"MMM d, hh:mm a\"\r\n style=\"width: 100%\"\r\n />\r\n </el-form-item>\r\n <el-form-item\r\n v-if=\"newAssignmentForm.UseSelfAssessment\"\r\n label=\"Self Review Due Date\"\r\n prop=\"SelfReviewDueDate\"\r\n required\r\n :label-width=\"formLabelWidth\"\r\n >\r\n <el-date-picker\r\n v-model=\"newAssignmentForm.SelfReviewDueDate\"\r\n type=\"datetime\"\r\n placeholder=\"Select a date\"\r\n format=\"MMM d, hh:mm a\"\r\n style=\"width: 100%\"\r\n />\r\n </el-form-item>\r\n <el-form-item\r\n v-if=\"newAssignmentForm.UseAppraisal\"\r\n label=\"Appraisal Rubric\"\r\n prop=\"AppraisalRubricId\"\r\n required\r\n :label-width=\"formLabelWidth\"\r\n >\r\n <el-select\r\n v-model=\"newAssignmentForm.AppraisalRubricId\"\r\n value-key=\"Id\"\r\n filterable\r\n placeholder=\"Select Appraisal Rubric\"\r\n style=\"width: 100%\"\r\n >\r\n <el-option\r\n v-for=\"item in rubricList\"\r\n :key=\"item.Id\"\r\n :label=\"item.RubricName\"\r\n :value=\"item.Id\"\r\n />\r\n </el-select>\r\n </el-form-item>\r\n <el-form-item\r\n v-if=\"newAssignmentForm.UseAppraisal\"\r\n label=\"Appraisal Due Date\"\r\n prop=\"DueDate\"\r\n required\r\n :label-width=\"formLabelWidth\"\r\n >\r\n <el-date-picker\r\n v-model=\"newAssignmentForm.AppraisalDueDate\"\r\n type=\"datetime\"\r\n placeholder=\"Select a date\"\r\n format=\"MMM d, hh:mm a\"\r\n style=\"width: 100%\"\r\n />\r\n </el-form-item>\r\n <el-form-item\r\n prop=\"Description\"\r\n :label-width=\"formLabelWidth\"\r\n label=\"Project Description\"\r\n style=\"margin-bottom: 5px\"\r\n >\r\n <editor-menu-bar :editor=\"newDescriptionEditor\">\r\n <div\r\n slot-scope=\"{ commands, isActive }\"\r\n class=\"menubar\"\r\n style=\"margin-bottom: 5px; margin-top: 5px\"\r\n >\r\n <div\r\n class=\"editor-btn\"\r\n :class=\"{ 'is-active': isActive.bold() }\"\r\n type=\"button\"\r\n @click=\"commands.bold\"\r\n >\r\n <i class=\"fas fa-bold\" />\r\n </div>\r\n\r\n <div\r\n class=\"editor-btn\"\r\n :class=\"{ 'is-active': isActive.italic() }\"\r\n type=\"button\"\r\n @click=\"commands.italic\"\r\n >\r\n <i class=\"fas fa-italic\" />\r\n </div>\r\n\r\n <div\r\n class=\"editor-btn\"\r\n :class=\"{ 'is-active': isActive.strike() }\"\r\n @click=\"commands.strike\"\r\n >\r\n <i class=\"fas fa-strikethrough\" />\r\n </div>\r\n\r\n <div\r\n class=\"editor-btn\"\r\n :class=\"{ 'is-active': isActive.underline() }\"\r\n @click=\"commands.underline\"\r\n >\r\n <i class=\"fas fa-underline\" />\r\n </div>\r\n <div\r\n class=\"editor-btn\"\r\n :class=\"{ 'is-active': isActive.heading({ level: 1 }) }\"\r\n @click=\"commands.heading({ level: 1 })\"\r\n >\r\n <i class=\"fas fa-heading\" /><strong>1</strong>\r\n </div>\r\n <div\r\n class=\"editor-btn\"\r\n :class=\"{ 'is-active': isActive.heading({ level: 2 }) }\"\r\n @click=\"commands.heading({ level: 2 })\"\r\n >\r\n <i class=\"fas fa-heading\" /><strong>2</strong>\r\n </div>\r\n\r\n <div\r\n class=\"editor-btn\"\r\n :class=\"{ 'is-active': isActive.heading({ level: 3 }) }\"\r\n @click=\"commands.heading({ level: 3 })\"\r\n >\r\n <i class=\"fas fa-heading\" /><strong>3</strong>\r\n </div>\r\n <div\r\n class=\"editor-btn\"\r\n :class=\"{ 'is-active': isActive.bullet_list() }\"\r\n @click=\"commands.bullet_list\"\r\n >\r\n <i class=\"fas fa-list-ul\" />\r\n </div>\r\n <div\r\n class=\"editor-btn\"\r\n :class=\"{ 'is-active': isActive.ordered_list() }\"\r\n @click=\"commands.ordered_list\"\r\n >\r\n <i class=\"fas fa-list-ol\" />\r\n </div>\r\n <div\r\n class=\"editor-btn\"\r\n :class=\"{ 'is-active': isActive.blockquote() }\"\r\n @click=\"commands.blockquote()\"\r\n >\r\n <i class=\"fas fa-quote-right\" />\r\n </div>\r\n </div>\r\n </editor-menu-bar>\r\n <editor-content\r\n id=\"description-editor\"\r\n :editor=\"newDescriptionEditor\"\r\n class=\"el-textarea__inner assignment-edit-editor\"\r\n />\r\n </el-form-item>\r\n </el-form>\r\n\r\n <span slot=\"footer\" class=\"dialog-footer\">\r\n <el-button @click=\"newAssignmentDialogVisible = false\">\r\n Cancel\r\n </el-button>\r\n <el-button type=\"primary\" @click=\"addNewAssignment()\">\r\n Submit\r\n </el-button>\r\n </span>\r\n </el-dialog>\r\n\r\n <el-dialog\r\n v-if=\"selectedAssignment && userRole == 'Instructor'\"\r\n class=\"assignment-dialog\"\r\n :visible.sync=\"editAssignmentDialogVisible\"\r\n width=\"650px\"\r\n center\r\n >\r\n <template slot=\"title\">\r\n <span class=\"dialog-title\">\r\n Edit {{ selectedAssignment.AssignmentName }}\r\n </span>\r\n </template>\r\n <hr>\r\n <el-form\r\n ref=\"assignmentForm\"\r\n :model=\"selectedAssignment\"\r\n :rules=\"rules\"\r\n style=\"margin-top: 20px\"\r\n >\r\n <el-form-item\r\n label=\"Project Name\"\r\n prop=\"AssignmentName\"\r\n required\r\n :label-width=\"formLabelWidth\"\r\n >\r\n <el-input\r\n v-model=\"selectedAssignment.AssignmentName\"\r\n autocomplete=\"off\"\r\n />\r\n </el-form-item>\r\n <el-form-item\r\n label=\"Project Due Date\"\r\n prop=\"DueDate\"\r\n required\r\n :label-width=\"formLabelWidth\"\r\n >\r\n <el-date-picker\r\n v-model=\"selectedAssignment.DueDate\"\r\n type=\"datetime\"\r\n placeholder=\"Select a date\"\r\n format=\"MMM d, hh:mm a\"\r\n style=\"width: 100%\"\r\n />\r\n </el-form-item>\r\n <el-form-item\r\n label=\"Rubric\"\r\n prop=\"RubricId\"\r\n required\r\n :label-width=\"formLabelWidth\"\r\n >\r\n <el-select\r\n v-model=\"selectedAssignment.RubricId\"\r\n value-key=\"Id\"\r\n filterable\r\n placeholder=\"Select Rubric\"\r\n style=\"width: 100%\"\r\n >\r\n <el-option\r\n v-for=\"item in rubricList\"\r\n :key=\"item.Id\"\r\n :label=\"item.RubricName\"\r\n :value=\"item.Id\"\r\n />\r\n </el-select>\r\n </el-form-item>\r\n <!-- <el-form-item label=\"Project Activity\" :label-width=\"formLabelWidth\">\r\n <el-checkbox v-model=\"selectedAssignment.UsePeerReview\" label=\"Uses Peer Review\" name=\"peerReview\" />\r\n <el-checkbox v-model=\"selectedAssignment.UseSelfAssessment\" label=\"Uses Self Review\" name=\"selfReview\" style=\"margin-left: 8px;\" />\r\n <el-checkbox v-model=\"selectedAssignment.IsGroupAssignment\" label=\"Is Group Project\" name=\"isGroup\" />\r\n <el-checkbox v-model=\"selectedAssignment.UseAppraisal\" label=\"Uses Appraisal\" name=\"useAppraisal\" style=\"margin-left: 19px;\" />\r\n </el-form-item> -->\r\n\r\n <el-form-item\r\n label=\"Is Group Project\"\r\n prop=\"IsGroupAssignment\"\r\n :label-width=\"formLabelWidth\"\r\n >\r\n <el-checkbox\r\n v-model=\"selectedAssignment.IsGroupAssignment\"\r\n name=\"isGroup\"\r\n style=\"margin-top: 12px\"\r\n />\r\n </el-form-item>\r\n <el-form-item\r\n v-if=\"selectedAssignment.UsePeerReview\"\r\n label=\"Peer Review Due Date\"\r\n prop=\"PeerReviewDueDate\"\r\n required\r\n :label-width=\"formLabelWidth\"\r\n >\r\n <el-date-picker\r\n v-model=\"selectedAssignment.PeerReviewDueDate\"\r\n type=\"datetime\"\r\n placeholder=\"Select a date\"\r\n format=\"MMM d, hh:mm a\"\r\n style=\"width: 100%\"\r\n />\r\n </el-form-item>\r\n <el-form-item\r\n v-if=\"selectedAssignment.UseSelfAssessment\"\r\n label=\"Self Review Due Date\"\r\n prop=\"SelfReviewDueDate\"\r\n required\r\n :label-width=\"formLabelWidth\"\r\n >\r\n <el-date-picker\r\n v-model=\"selectedAssignment.SelfReviewDueDate\"\r\n type=\"datetime\"\r\n placeholder=\"Select a date\"\r\n format=\"MMM d, hh:mm a\"\r\n style=\"width: 100%\"\r\n />\r\n </el-form-item>\r\n <el-form-item\r\n v-if=\"selectedAssignment.UseAppraisal\"\r\n label=\"Appraisal Rubric\"\r\n prop=\"AppraisalRubricId\"\r\n required\r\n :label-width=\"formLabelWidth\"\r\n >\r\n <el-select\r\n v-model=\"selectedAssignment.AppraisalRubricId\"\r\n value-key=\"Id\"\r\n filterable\r\n placeholder=\"Select Appraisal Rubric\"\r\n style=\"width: 100%\"\r\n >\r\n <el-option\r\n v-for=\"item in rubricList\"\r\n :key=\"item.Id\"\r\n :label=\"item.RubricName\"\r\n :value=\"item.Id\"\r\n />\r\n </el-select>\r\n </el-form-item>\r\n <el-form-item\r\n v-if=\"selectedAssignment.UseAppraisal\"\r\n label=\"Appraisal Due Date\"\r\n prop=\"DueDate\"\r\n required\r\n :label-width=\"formLabelWidth\"\r\n >\r\n <el-date-picker\r\n v-model=\"selectedAssignment.AppraisalDueDate\"\r\n type=\"datetime\"\r\n placeholder=\"Select a date\"\r\n format=\"MMM d, hh:mm a\"\r\n style=\"width: 100%\"\r\n />\r\n </el-form-item>\r\n <el-form-item\r\n prop=\"Description\"\r\n :label-width=\"formLabelWidth\"\r\n label=\"Project Description\"\r\n style=\"margin-bottom: 5px\"\r\n >\r\n <editor-menu-bar :editor=\"editDescriptionEditor\">\r\n <div\r\n slot-scope=\"{ commands, isActive }\"\r\n class=\"menubar\"\r\n style=\"margin-bottom: 5px; margin-top: 5px\"\r\n >\r\n <div\r\n class=\"editor-btn\"\r\n :class=\"{ 'is-active': isActive.bold() }\"\r\n type=\"button\"\r\n @click=\"commands.bold\"\r\n >\r\n <i class=\"fas fa-bold\" />\r\n </div>\r\n\r\n <div\r\n class=\"editor-btn\"\r\n :class=\"{ 'is-active': isActive.italic() }\"\r\n type=\"button\"\r\n @click=\"commands.italic\"\r\n >\r\n <i class=\"fas fa-italic\" />\r\n </div>\r\n\r\n <div\r\n class=\"editor-btn\"\r\n :class=\"{ 'is-active': isActive.strike() }\"\r\n @click=\"commands.strike\"\r\n >\r\n <i class=\"fas fa-strikethrough\" />\r\n </div>\r\n\r\n <div\r\n class=\"editor-btn\"\r\n :class=\"{ 'is-active': isActive.underline() }\"\r\n @click=\"commands.underline\"\r\n >\r\n <i class=\"fas fa-underline\" />\r\n </div>\r\n <div\r\n class=\"editor-btn\"\r\n :class=\"{ 'is-active': isActive.heading({ level: 1 }) }\"\r\n @click=\"commands.heading({ level: 1 })\"\r\n >\r\n <i class=\"fas fa-heading\" /><strong>1</strong>\r\n </div>\r\n <div\r\n class=\"editor-btn\"\r\n :class=\"{ 'is-active': isActive.heading({ level: 2 }) }\"\r\n @click=\"commands.heading({ level: 2 })\"\r\n >\r\n <i class=\"fas fa-heading\" /><strong>2</strong>\r\n </div>\r\n\r\n <div\r\n class=\"editor-btn\"\r\n :class=\"{ 'is-active': isActive.heading({ level: 3 }) }\"\r\n @click=\"commands.heading({ level: 3 })\"\r\n >\r\n <i class=\"fas fa-heading\" /><strong>3</strong>\r\n </div>\r\n <div\r\n class=\"editor-btn\"\r\n :class=\"{ 'is-active': isActive.bullet_list() }\"\r\n @click=\"commands.bullet_list\"\r\n >\r\n <i class=\"fas fa-list-ul\" />\r\n </div>\r\n <div\r\n class=\"editor-btn\"\r\n :class=\"{ 'is-active': isActive.ordered_list() }\"\r\n @click=\"commands.ordered_list\"\r\n >\r\n <i class=\"fas fa-list-ol\" />\r\n </div>\r\n <div\r\n class=\"editor-btn\"\r\n :class=\"{ 'is-active': isActive.blockquote() }\"\r\n @click=\"commands.blockquote()\"\r\n >\r\n <i class=\"fas fa-quote-right\" />\r\n </div>\r\n </div>\r\n </editor-menu-bar>\r\n <editor-content\r\n id=\"description-editor\"\r\n :editor=\"editDescriptionEditor\"\r\n class=\"el-textarea__inner assignment-edit-editor\"\r\n />\r\n </el-form-item>\r\n </el-form>\r\n\r\n <span slot=\"footer\" class=\"dialog-footer\">\r\n <el-button @click=\"editAssignmentDialogVisible = false\">\r\n Cancel\r\n </el-button>\r\n <el-button type=\"primary\" @click=\"editAssignment()\"> Submit </el-button>\r\n </span>\r\n </el-dialog>\r\n\r\n <el-dialog\r\n id=\"assignment-detail-dialog\"\r\n :visible.sync=\"assignmentDetailDialogVisible\"\r\n width=\"650px\"\r\n center\r\n >\r\n <template slot=\"title\">\r\n <span v-if=\"selectedAssignment\" class=\"dialog-title\">\r\n {{ selectedAssignment.AssignmentName }}\r\n </span>\r\n </template>\r\n <hr>\r\n\r\n <div v-if=\"selectedAssignment\" style=\"word-break: normal\">\r\n <div style=\"margin-bottom: 3px; margin-top: 10px; font-weight: bold\">\r\n Important Information\r\n </div>\r\n <div\r\n style=\"\r\n padding: 8px 16px;\r\n padding-top: px;\r\n background-color: #ecf8ff;\r\n border-radius: 4px;\r\n border-left: 5px solid #50bfff;\r\n margin: 20px 0;\r\n margin-top: 8px;\r\n line-height: 2em;\r\n \"\r\n >\r\n <span>\r\n This project is due at\r\n <strong>{{ selectedAssignment.DueDate | formatDate }} EST</strong>.\r\n It\r\n <span v-if=\"selectedAssignment.IsGroupAssignment\">\r\n is a group project which\r\n </span>\r\n includes the following tasks:\r\n </span>\r\n\r\n <div v-for=\"task in selectedAssignment.Tasks\" :key=\"task.Id\">\r\n <strong>- {{ task.Name }}: </strong> due at\r\n <strong>{{ task.DueDate | formatDate }} EST</strong>\r\n </div>\r\n </div>\r\n <div style=\"margin-bottom: 3px; font-weight: bold\">\r\n Project Overview\r\n </div>\r\n <!-- <el-input v-model=\"selectedAssignment.Description\" type=\"textarea\" rows=\"15\" :readonly=\"true\" placeholder=\"No description provided.\" /> -->\r\n <editor-content\r\n id=\"description-detail-editor\"\r\n :editor=\"descriptionDetailEditor\"\r\n class=\"el-textarea__inner assignment-detail-editor\"\r\n />\r\n </div>\r\n\r\n <span slot=\"footer\" class=\"dialog-footer\">\r\n <el-button\r\n v-if=\"userRole == 'Instructor'\"\r\n @click=\"gotoStudentSubmissions(selectedAssignment.Id)\"\r\n >\r\n View Student Submissions\r\n </el-button>\r\n <el-button\r\n v-if=\"userRole == 'Instructor'\"\r\n @click=\"gotoStudentScores(selectedAssignment.Id)\"\r\n >\r\n View Student Holistic Scores\r\n </el-button>\r\n <div\r\n v-if=\"userRole == 'Student' && selectedAssignment\"\r\n style=\"margin-top: 20px\"\r\n >\r\n <el-button\r\n v-if=\"\r\n submissionStatus &&\r\n submissionStatus[selectedKey] &&\r\n submissionStatus[selectedKey].Status == 'No Submission'\r\n \"\r\n style=\"padding: 10px; margin-bottom: 10px; margin-right: 10px\"\r\n @click=\"openDialog(selectedAssignment.Id, selectedKey)\"\r\n >\r\n <i class=\"fas fa-file-upload\" style=\"font-size: 18px\" /> Submit\r\n Project\r\n </el-button>\r\n <el-button\r\n v-if=\"\r\n submissionStatus &&\r\n submissionStatus[selectedKey] &&\r\n (submissionStatus[selectedKey].Status == 'Submitted' ||\r\n submissionStatus[selectedKey].Status == 'Feedback Available')\r\n \"\r\n style=\"padding: 10px; margin-bottom: 10px; margin-right: 10px\"\r\n @click=\"openDialog(selectedAssignment.Id, selectedKey)\"\r\n >\r\n <i class=\"fas fa-file-upload\" style=\"font-size: 18px\" /> Re-submit\r\n Project\r\n </el-button>\r\n\r\n <el-badge\r\n v-if=\"\r\n submissionStatus &&\r\n submissionStatus[selectedKey] &&\r\n submissionStatus[selectedKey].Status == 'Feedback Available'\r\n \"\r\n :value=\"submissionStatus[selectedKey].ReviewCount\"\r\n class=\"badge-item\"\r\n style=\"vertical-align: initial; margin-left: 0px\"\r\n >\r\n <el-button\r\n style=\"padding: 10px; margin-bottom: 10px\"\r\n @click=\"viewAllFeedback(selectedAssignment.Id)\"\r\n >\r\n <i\r\n class=\"far fa-comment-alt\"\r\n style=\"font-size: 18px; margin-right: 5px\"\r\n />\r\n View All Feedback\r\n </el-button>\r\n </el-badge>\r\n\r\n <el-button\r\n v-if=\"\r\n submissionStatus &&\r\n submissionStatus[selectedKey] &&\r\n submissionStatus[selectedKey].Status != 'No Submission'\r\n \"\r\n style=\"padding: 10px; margin-bottom: 10px; margin-right: 10px\"\r\n @click=\"\r\n viewSubmission(\r\n submissionStatus[selectedKey].DocId,\r\n selectedAssignment\r\n )\r\n \"\r\n >\r\n <i\r\n class=\"far fa-file-alt\"\r\n style=\"font-size: 18px; margin-right: 5px\"\r\n />View Submission\r\n </el-button>\r\n\r\n <el-button\r\n v-if=\"selectedAssignment.UsePeerReview\"\r\n style=\"padding: 10px; margin-bottom: 10px; margin-right: 10px\"\r\n @click=\"\r\n peerReview(\r\n selectedAssignment.Id,\r\n selectedAssignment.IsGroupAssignment,\r\n submissionStatus[selectedKey].GroupId\r\n )\r\n \"\r\n >\r\n <!-- <i class=\"far fa-address-book\" style=\"font-size: 18px; margin-right: 5px;\" /> -->\r\n <i\r\n class=\"fas fa-user-edit\"\r\n style=\"font-size: 18px; margin-right: 0px\"\r\n />\r\n Peer Review\r\n </el-button>\r\n\r\n <el-button\r\n v-if=\"selectedAssignment.UseSelfAssessment\"\r\n style=\"padding: 10px; margin-bottom: 10px; margin-right: 10px\"\r\n @click=\"\r\n selfReview(\r\n selectedAssignment.Id,\r\n selectedAssignment.IsGroupAssignment,\r\n submissionStatus[selectedKey].GroupId\r\n )\r\n \"\r\n >\r\n <i\r\n class=\"fas fa-user-check\"\r\n style=\"font-size: 18px; margin-right: 5px\"\r\n />Self Review\r\n </el-button>\r\n\r\n <el-button\r\n v-if=\"selectedAssignment.UseAppraisal\"\r\n style=\"padding: 10px; margin-bottom: 10px; margin-right: 10px\"\r\n @click=\"\r\n appraisal(\r\n selectedAssignment.Id,\r\n selectedAssignment.IsGroupAssignment,\r\n submissionStatus[selectedKey].GroupId\r\n )\r\n \"\r\n >\r\n <i class=\"fab fa-rev\" style=\"font-size: 18px; margin-right: 0px\" />\r\n Appraisal\r\n </el-button>\r\n </div>\r\n </span>\r\n </el-dialog>\r\n\r\n <el-dialog\r\n id=\"canvas-matching-dialog\"\r\n :visible.sync=\"canvasDialogVisible\"\r\n width=\"650px;\"\r\n center\r\n >\r\n <template slot=\"title\">\r\n <span\r\n v-if=\"canvasAssignmentGroups && canvasAssignmentGroups.length > 0\"\r\n class=\"dialog-title\"\r\n >\r\n Canvas Assignments Matching\r\n </span>\r\n </template>\r\n <hr>\r\n\r\n <div v-if=\"canvasAssignmentGroups && canvasAssignmentGroups.length > 0\">\r\n <div\r\n class=\"tip\"\r\n style=\"\r\n padding: 4px 4px;\r\n background-color: #daf1ea;\r\n border-radius: 4px;\r\n border-left: 5px solid rgb(28 138 105);\r\n margin-bottom: 10px;\r\n \"\r\n >\r\n <p style=\"font-size: 14px; color: #444444; line-height: 1em\">\r\n Select a Canvas assignment to sync with\r\n {{ assignmentToMatch.AssignmentName }}.\r\n </p>\r\n <!-- <p v-else style=\"font-size: 14px; color: #444444; line-height: 1em;\">\r\n {{ assignmentToMatch.AssignmentName }} has already been synced with {{ selectedCanvasAssignment.name }}.\r\n </p> -->\r\n <p style=\"font-size: 14px; color: #444444; line-height: 1em\">\r\n Only Canvas assignments with online file upload submission type are\r\n showing.\r\n </p>\r\n </div>\r\n <!-- <div style=\"margin-bottom: 3px; font-weight: bold;\">\r\n\r\n </div> -->\r\n\r\n <el-collapse\r\n v-model=\"activeNames\"\r\n style=\"height: 500px; overflow: auto\"\r\n >\r\n <el-collapse-item\r\n v-for=\"group in canvasAssignmentGroups\"\r\n :key=\"group.id\"\r\n :name=\"group.id\"\r\n style=\"font-weight: bold; font-size: 1rem\"\r\n >\r\n <template slot=\"title\">\r\n <div style=\"margin-left: 10px\">\r\n <span style=\"font-weight: bold; font-size: 1rem\">\r\n {{ group.name }}\r\n </span>\r\n </div>\r\n </template>\r\n\r\n <el-radio-group\r\n v-model=\"selectedCanvasAssignment\"\r\n style=\"width: 100%\"\r\n >\r\n <div\r\n v-for=\"canvasAssignment in group.assignments\"\r\n :key=\"canvasAssignment.id\"\r\n style=\"margin-top: 5px; width: 100%\"\r\n @input=\"submitCanvasAssignment = true\"\r\n >\r\n <el-radio\r\n :label=\"canvasAssignment\"\r\n border\r\n style=\"margin-left: 10px; width: 98%\"\r\n >\r\n <div style=\"display: inline-flex\">\r\n <span>{{ canvasAssignment.name }}</span>\r\n <el-button\r\n size=\"mini\"\r\n style=\"position: absolute; right: 5px; top: 5px\"\r\n @click=\"viewCanvasAssignment(canvasAssignment.html_url)\"\r\n >\r\n <i class=\"fas fa-external-link-alt\" /> View in Canvas\r\n </el-button>\r\n </div>\r\n </el-radio>\r\n </div>\r\n </el-radio-group>\r\n </el-collapse-item>\r\n </el-collapse>\r\n </div>\r\n\r\n <span slot=\"footer\" class=\"dialog-footer\">\r\n <el-button @click=\"canvasDialogVisible = false\"> Cancel </el-button>\r\n <el-button\r\n v-if=\"submitCanvasAssignment\"\r\n type=\"primary\"\r\n @click=\"submitCanvasMatch()\"\r\n >\r\n Sync\r\n </el-button>\r\n </span>\r\n </el-dialog>\r\n\r\n <el-dialog\r\n title=\"Redirect to Canvas Login Page\"\r\n :visible.sync=\"redirectDialogVisible\"\r\n width=\"600px\"\r\n center\r\n >\r\n <div\r\n class=\"tip\"\r\n style=\"\r\n padding: 5px 10px;\r\n background-color: #daf1ea;\r\n border-radius: 4px;\r\n border-left: 5px solid rgb(28 138 105);\r\n margin-bottom: 10px;\r\n \"\r\n >\r\n <p style=\"font-size: 14px; color: #444444; word-break: normal\">\r\n This project was synced with {{ canvasAssignmentName }} assignment in\r\n Canvas. You will be redirected to the Canvas login page for\r\n authorization bebore you can submit your paper.\r\n </p>\r\n </div>\r\n <span slot=\"footer\" class=\"dialog-footer\">\r\n <el-button @click=\"redirectDialogVisible = false\">Cancel</el-button>\r\n <el-button type=\"primary\" @click=\"canvasLogin()\">Confirm</el-button>\r\n </span>\r\n </el-dialog>\r\n\r\n <el-dialog\r\n v-if=\"selectedAssignment\"\r\n id=\"preview-submission-dialog\"\r\n :visible.sync=\"docPreviewDialogVisible\"\r\n width=\"800px\"\r\n style=\"height: 930px\"\r\n center\r\n >\r\n <template slot=\"title\">\r\n <span class=\"dialog-title\">\r\n Preview of Your Submission for {{ selectedAssignment.AssignmentName }}\r\n </span>\r\n </template>\r\n\r\n <div style=\"height: 930px\">\r\n <div id=\"submissions_container\" style=\"height: 930px\">\r\n <nav class=\"ViewerControls ViewerControls--with-annotations\">\r\n <div class=\"ViewerControls-primary\">\r\n <div class=\"ViewerControls--download\">\r\n <div style=\"min-width: 50px; text-align: center\">\r\n <div>\r\n <button\r\n class=\"download-button--button\"\r\n title=\"Download Submission\"\r\n aria-label=\"Download Submission\"\r\n @click=\"downloadPdf(selectedAssignment)\"\r\n >\r\n <i style=\"font-size: 22px\" class=\"fas fa-file-download\" />\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"ViewerControls--title\" />\r\n <div class=\"ViewerControls--page-controls\">\r\n <span\r\n class=\"ViewerControls--page-number\"\r\n style=\"display: flex; align-items: center\"\r\n >\r\n Page\r\n <div style=\"padding-left: 10px; padding-right: 10px\">\r\n <el-input-number\r\n v-model=\"pageNum\"\r\n :min=\"1\"\r\n :max=\"totalPageNumber\"\r\n size=\"small\"\r\n label=\"Page\"\r\n @change=\"changePage\"\r\n />\r\n </div>\r\n of {{ totalPageNumber }}\r\n </span>\r\n <svg\r\n viewBox=\"0 0 2 26\"\r\n style=\"\r\n margin-left: 12px;\r\n margin-right: 0px;\r\n width: 2px;\r\n height: 26px;\r\n color: rgb(171, 179, 186);\r\n \"\r\n >\r\n <line\r\n stroke=\"currentColor\"\r\n stroke-dasharray=\"2, 1\"\r\n stroke-width=\"1\"\r\n x1=\"1\"\r\n y1=\"0\"\r\n x2=\"1\"\r\n y2=\"26\"\r\n />\r\n </svg>\r\n </div>\r\n <nav class=\"DocumentControls\">\r\n <div\r\n style=\"\r\n display: inline-flex;\r\n align-items: center;\r\n user-select: none;\r\n \"\r\n >\r\n <button\r\n class=\"AnnotationControlButton\"\r\n aria-label=\"Zoom Out\"\r\n title=\"Zoom Out\"\r\n aria-disabled=\"false\"\r\n @click=\"zoomOut\"\r\n >\r\n <i style=\"font-size: 20px\" class=\"fas fa-minus\" />\r\n </button>\r\n <span\r\n aria-hidden=\"true\"\r\n style=\"\r\n text-transform: uppercase;\r\n font-size: 0.75rem;\r\n color: rgb(238, 238, 239);\r\n margin-left: 4px;\r\n margin-right: 4px;\r\n \"\r\n >\r\n Zoom\r\n </span>\r\n <button\r\n class=\"AnnotationControlButton\"\r\n aria-label=\"Zoom In\"\r\n title=\"Zoom In\"\r\n aria-disabled=\"false\"\r\n @click=\"zoomIn\"\r\n >\r\n <i style=\"font-size: 20px\" class=\"fas fa-plus\" />\r\n </button>\r\n </div>\r\n <svg\r\n viewBox=\"0 0 2 26\"\r\n style=\"\r\n margin-left: 2px;\r\n margin-right: 4px;\r\n width: 2px;\r\n height: 26px;\r\n color: rgb(171, 179, 186);\r\n \"\r\n >\r\n <line\r\n stroke=\"currentColor\"\r\n stroke-dasharray=\"2, 1\"\r\n stroke-width=\"1\"\r\n x1=\"1\"\r\n y1=\"0\"\r\n x2=\"1\"\r\n y2=\"26\"\r\n />\r\n </svg>\r\n <div class=\"ViewerControls--page-controls\">\r\n <button\r\n aria-label=\"Enter Full Screen\"\r\n class=\"AnnotationControlButton full-screen-button\"\r\n title=\"Zoom Fit Width\"\r\n @click=\"zoomFitWidth\"\r\n >\r\n <i style=\"font-size: 20px\" class=\"fas fa-expand\" />\r\n </button>\r\n </div>\r\n </nav>\r\n </div>\r\n </nav>\r\n\r\n <div id=\"iframe_holder\" style=\"display: block; height: 700px\">\r\n <div id=\"pdfDocument\" style=\"resize: vertical; height: 100%\" />\r\n </div>\r\n </div>\r\n </div>\r\n </el-dialog>\r\n\r\n <el-dialog\r\n v-if=\"selectedAssignment\"\r\n class=\"assignment-dialog\"\r\n :visible.sync=\"newTaskDialogVisible\"\r\n width=\"650px\"\r\n center\r\n @closed=\"closeTaskDialog()\"\r\n >\r\n <template slot=\"title\">\r\n <span class=\"dialog-title\">\r\n Add New Task To {{ selectedAssignment.AssignmentName }}\r\n </span>\r\n </template>\r\n <hr>\r\n <el-form\r\n ref=\"newTaskForm\"\r\n :model=\"newTaskForm\"\r\n :rules=\"taskRules\"\r\n style=\"margin-top: 20px\"\r\n >\r\n <el-form-item\r\n label=\"Type\"\r\n prop=\"Type\"\r\n required\r\n :label-width=\"formLabelWidth\"\r\n >\r\n <el-select\r\n v-model=\"newTaskForm.Type\"\r\n value-key=\"Id\"\r\n filterable\r\n placeholder=\"Select Task Type\"\r\n style=\"width: 100%\"\r\n >\r\n <el-option\r\n v-for=\"item in taskTypes\"\r\n :key=\"item.value\"\r\n :label=\"item.label\"\r\n :value=\"item.value\"\r\n :disabled=\"selectedAssignment.Tasks.some(task => task.Type === item.value)\"\r\n />\r\n </el-select>\r\n </el-form-item>\r\n <el-form-item\r\n label=\"Task Due Date\"\r\n prop=\"DueDate\"\r\n required\r\n :label-width=\"formLabelWidth\"\r\n >\r\n <el-date-picker\r\n v-model=\"newTaskForm.DueDate\"\r\n type=\"datetime\"\r\n placeholder=\"Select a date\"\r\n format=\"MMM d, hh:mm a\"\r\n style=\"width: 100%\"\r\n />\r\n </el-form-item>\r\n <el-form-item\r\n label=\"Rubric\"\r\n prop=\"RubricId\"\r\n required\r\n :label-width=\"formLabelWidth\"\r\n >\r\n <el-select\r\n v-model=\"newTaskForm.RubricId\"\r\n value-key=\"Id\"\r\n filterable\r\n placeholder=\"Select Rubric\"\r\n style=\"width: 100%\"\r\n >\r\n <el-option\r\n v-for=\"item in rubricList\"\r\n :key=\"item.Id\"\r\n :label=\"item.RubricName\"\r\n :value=\"item.Id\"\r\n />\r\n </el-select>\r\n </el-form-item>\r\n\r\n <el-form-item\r\n prop=\"Description\"\r\n :label-width=\"formLabelWidth\"\r\n label=\"Project Description\"\r\n style=\"margin-bottom: 5px\"\r\n >\r\n <editor-menu-bar :editor=\"newTaskEditor\">\r\n <div\r\n slot-scope=\"{ commands, isActive }\"\r\n class=\"menubar\"\r\n style=\"margin-bottom: 5px; margin-top: 5px\"\r\n >\r\n <div\r\n class=\"editor-btn\"\r\n :class=\"{ 'is-active': isActive.bold() }\"\r\n type=\"button\"\r\n @click=\"commands.bold\"\r\n >\r\n <i class=\"fas fa-bold\" />\r\n </div>\r\n\r\n <div\r\n class=\"editor-btn\"\r\n :class=\"{ 'is-active': isActive.italic() }\"\r\n type=\"button\"\r\n @click=\"commands.italic\"\r\n >\r\n <i class=\"fas fa-italic\" />\r\n </div>\r\n\r\n <div\r\n class=\"editor-btn\"\r\n :class=\"{ 'is-active': isActive.strike() }\"\r\n @click=\"commands.strike\"\r\n >\r\n <i class=\"fas fa-strikethrough\" />\r\n </div>\r\n\r\n <div\r\n class=\"editor-btn\"\r\n :class=\"{ 'is-active': isActive.underline() }\"\r\n @click=\"commands.underline\"\r\n >\r\n <i class=\"fas fa-underline\" />\r\n </div>\r\n <div\r\n class=\"editor-btn\"\r\n :class=\"{ 'is-active': isActive.heading({ level: 1 }) }\"\r\n @click=\"commands.heading({ level: 1 })\"\r\n >\r\n <i class=\"fas fa-heading\" /><strong>1</strong>\r\n </div>\r\n <div\r\n class=\"editor-btn\"\r\n :class=\"{ 'is-active': isActive.heading({ level: 2 }) }\"\r\n @click=\"commands.heading({ level: 2 })\"\r\n >\r\n <i class=\"fas fa-heading\" /><strong>2</strong>\r\n </div>\r\n\r\n <div\r\n class=\"editor-btn\"\r\n :class=\"{ 'is-active': isActive.heading({ level: 3 }) }\"\r\n @click=\"commands.heading({ level: 3 })\"\r\n >\r\n <i class=\"fas fa-heading\" /><strong>3</strong>\r\n </div>\r\n <div\r\n class=\"editor-btn\"\r\n :class=\"{ 'is-active': isActive.bullet_list() }\"\r\n @click=\"commands.bullet_list\"\r\n >\r\n <i class=\"fas fa-list-ul\" />\r\n </div>\r\n <div\r\n class=\"editor-btn\"\r\n :class=\"{ 'is-active': isActive.ordered_list() }\"\r\n @click=\"commands.ordered_list\"\r\n >\r\n <i class=\"fas fa-list-ol\" />\r\n </div>\r\n <div\r\n class=\"editor-btn\"\r\n :class=\"{ 'is-active': isActive.blockquote() }\"\r\n @click=\"commands.blockquote()\"\r\n >\r\n <i class=\"fas fa-quote-right\" />\r\n </div>\r\n </div>\r\n </editor-menu-bar>\r\n <editor-content\r\n id=\"description-editor\"\r\n :editor=\"newTaskEditor\"\r\n class=\"el-textarea__inner assignment-edit-editor\"\r\n />\r\n </el-form-item>\r\n </el-form>\r\n\r\n <span slot=\"footer\" class=\"dialog-footer\">\r\n <el-button @click=\"newTaskDialogVisible = false\"> Cancel </el-button>\r\n <el-button type=\"primary\" @click=\"addNewTask()\"> Submit </el-button>\r\n </span>\r\n </el-dialog>\r\n\r\n <el-dialog\r\n v-if=\"selectedTask\"\r\n class=\"assignment-dialog\"\r\n :visible.sync=\"editTaskDialogVisible\"\r\n width=\"650px\"\r\n center\r\n >\r\n <template slot=\"title\">\r\n <span class=\"dialog-title\"> Edit {{ selectedTask.Name }} </span>\r\n </template>\r\n <hr>\r\n <el-form\r\n ref=\"taskForm\"\r\n :model=\"selectedTask\"\r\n :rules=\"rules\"\r\n style=\"margin-top: 20px\"\r\n >\r\n <el-form-item\r\n label=\"Type\"\r\n prop=\"Type\"\r\n required\r\n :label-width=\"formLabelWidth\"\r\n >\r\n <el-select\r\n v-model=\"selectedTask.Type\"\r\n value-key=\"Id\"\r\n filterable\r\n placeholder=\"Select Task Type\"\r\n style=\"width: 100%\"\r\n >\r\n <el-option\r\n v-for=\"item in taskTypes\"\r\n :key=\"item.value\"\r\n :label=\"item.label\"\r\n :value=\"item.value\"\r\n :disabled=\"selectedAssignment.Tasks.some(task => task.Type === item.value)\"\r\n />\r\n </el-select>\r\n </el-form-item>\r\n <el-form-item\r\n label=\"Task Due Date\"\r\n prop=\"DueDate\"\r\n required\r\n :label-width=\"formLabelWidth\"\r\n >\r\n <el-date-picker\r\n v-model=\"selectedTask.DueDate\"\r\n type=\"datetime\"\r\n placeholder=\"Select a date\"\r\n format=\"MMM d, hh:mm a\"\r\n style=\"width: 100%\"\r\n />\r\n </el-form-item>\r\n <el-form-item\r\n label=\"Rubric\"\r\n prop=\"RubricId\"\r\n required\r\n :label-width=\"formLabelWidth\"\r\n >\r\n <el-select\r\n v-model=\"selectedTask.RubricId\"\r\n value-key=\"Id\"\r\n filterable\r\n placeholder=\"Select Rubric\"\r\n style=\"width: 100%\"\r\n >\r\n <el-option\r\n v-for=\"item in rubricList\"\r\n :key=\"item.Id\"\r\n :label=\"item.RubricName\"\r\n :value=\"item.Id\"\r\n />\r\n </el-select>\r\n </el-form-item>\r\n <el-form-item\r\n prop=\"Description\"\r\n :label-width=\"formLabelWidth\"\r\n label=\"Project Description\"\r\n style=\"margin-bottom: 5px\"\r\n >\r\n <editor-menu-bar :editor=\"editTaskEditor\">\r\n <div\r\n slot-scope=\"{ commands, isActive }\"\r\n class=\"menubar\"\r\n style=\"margin-bottom: 5px; margin-top: 5px\"\r\n >\r\n <div\r\n class=\"editor-btn\"\r\n :class=\"{ 'is-active': isActive.bold() }\"\r\n type=\"button\"\r\n @click=\"commands.bold\"\r\n >\r\n <i class=\"fas fa-bold\" />\r\n </div>\r\n\r\n <div\r\n class=\"editor-btn\"\r\n :class=\"{ 'is-active': isActive.italic() }\"\r\n type=\"button\"\r\n @click=\"commands.italic\"\r\n >\r\n <i class=\"fas fa-italic\" />\r\n </div>\r\n\r\n <div\r\n class=\"editor-btn\"\r\n :class=\"{ 'is-active': isActive.strike() }\"\r\n @click=\"commands.strike\"\r\n >\r\n <i class=\"fas fa-strikethrough\" />\r\n </div>\r\n\r\n <div\r\n class=\"editor-btn\"\r\n :class=\"{ 'is-active': isActive.underline() }\"\r\n @click=\"commands.underline\"\r\n >\r\n <i class=\"fas fa-underline\" />\r\n </div>\r\n <div\r\n class=\"editor-btn\"\r\n :class=\"{ 'is-active': isActive.heading({ level: 1 }) }\"\r\n @click=\"commands.heading({ level: 1 })\"\r\n >\r\n <i class=\"fas fa-heading\" /><strong>1</strong>\r\n </div>\r\n <div\r\n class=\"editor-btn\"\r\n :class=\"{ 'is-active': isActive.heading({ level: 2 }) }\"\r\n @click=\"commands.heading({ level: 2 })\"\r\n >\r\n <i class=\"fas fa-heading\" /><strong>2</strong>\r\n </div>\r\n\r\n <div\r\n class=\"editor-btn\"\r\n :class=\"{ 'is-active': isActive.heading({ level: 3 }) }\"\r\n @click=\"commands.heading({ level: 3 })\"\r\n >\r\n <i class=\"fas fa-heading\" /><strong>3</strong>\r\n </div>\r\n <div\r\n class=\"editor-btn\"\r\n :class=\"{ 'is-active': isActive.bullet_list() }\"\r\n @click=\"commands.bullet_list\"\r\n >\r\n <i class=\"fas fa-list-ul\" />\r\n </div>\r\n <div\r\n class=\"editor-btn\"\r\n :class=\"{ 'is-active': isActive.ordered_list() }\"\r\n @click=\"commands.ordered_list\"\r\n >\r\n <i class=\"fas fa-list-ol\" />\r\n </div>\r\n <div\r\n class=\"editor-btn\"\r\n :class=\"{ 'is-active': isActive.blockquote() }\"\r\n @click=\"commands.blockquote()\"\r\n >\r\n <i class=\"fas fa-quote-right\" />\r\n </div>\r\n </div>\r\n </editor-menu-bar>\r\n <editor-content\r\n id=\"description-editor\"\r\n :editor=\"editTaskEditor\"\r\n class=\"el-textarea__inner assignment-edit-editor\"\r\n />\r\n </el-form-item>\r\n </el-form>\r\n\r\n <span slot=\"footer\" class=\"dialog-footer\">\r\n <el-button @click=\"editTaskDialogVisible = false\"> Cancel </el-button>\r\n <el-button type=\"primary\" @click=\"updateTask()\"> Submit </el-button>\r\n </span>\r\n </el-dialog>\r\n </div>\r\n</template>\r\n<script>\r\nimport { mapState } from 'vuex'\r\nimport draggable from 'vuedraggable'\r\nimport * as assignmentService from '@/services/assignment.service'\r\nimport * as taskService from '@/services/task.service'\r\nimport * as submissionService from '@/services/submission.service'\r\nimport * as teamFormationService from '@/services/team_formation.service'\r\nimport * as pdfService from '@/services/pdf.service'\r\nimport * as rubricService from '@/services/rubric.service'\r\nimport * as reviewService from '@/services/review.service'\r\nimport * as surveyService from '@/services/survey.service'\r\nimport * as canvasService from '@/services/canvas.service'\r\nimport * as dateUtils from '@/utils/date-utils'\r\nimport { Notification } from 'element-ui'\r\nimport { Editor, EditorContent, EditorMenuBar } from 'tiptap'\r\nimport {\r\n\tBlockquote,\r\n\tCodeBlock,\r\n\tHardBreak,\r\n\tHeading,\r\n\tImage,\r\n\tOrderedList,\r\n\tBulletList,\r\n\tListItem,\r\n\tTodoItem,\r\n\tTodoList,\r\n\tBold,\r\n\tCode,\r\n\tItalic,\r\n\tLink,\r\n\tTable,\r\n\tTableHeader,\r\n\tTableCell,\r\n\tTableRow,\r\n\tStrike,\r\n\tUnderline,\r\n\tHistory\r\n} from 'tiptap-extensions'\r\n// Handles UI and logics of the Projects page.\r\nexport default {\r\n\tname: 'Assignment',\r\n\tcomponents: {\r\n\t\tdraggable,\r\n\t\tEditorMenuBar,\r\n\t\tEditorContent\r\n\t},\r\n\tfilters: {\r\n\t\tformatDate(dateStr) {\r\n\t\t\tif (dateStr) {\r\n\t\t\t\treturn dateUtils.formatDate(dateStr)\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\tdata() {\r\n\t\treturn {\r\n\t\t\theightMax:\r\n 'height: 80px; border-top: 1px solid rgb(204, 206, 207); display: flex; align-items: center;',\r\n\t\t\theightMin:\r\n 'height: 60px; border-top: 1px solid rgb(204, 206, 207); display: flex; align-items: center;',\r\n\t\t\ttermCode: this.$store.state.enrollment.termCode,\r\n\t\t\torgCode: this.$store.state.enrollment.orgCode,\r\n\t\t\tclassCode: this.$store.state.enrollment.currentCourse.ClassCode,\r\n\t\t\tusername: this.$store.state.auth.user.UserName,\r\n\t\t\t// assignments: this.$store.state.assignment.assignments,\r\n\t\t\tdragging: false,\r\n\t\t\tuserRole: '',\r\n\t\t\tcurrentCourse: null,\r\n\t\t\tsearch: '',\r\n\t\t\tsubmissionStatus: [],\r\n\t\t\ttaskSubmissionStatus: [],\r\n\t\t\tpeerReviewStatus: [],\r\n\t\t\tselfReviewStatus: [],\r\n\t\t\tappraisalStatus: [],\r\n\t\t\tuploadDialogVisible: false,\r\n\t\t\teditAssignmentDialogVisible: false,\r\n\t\t\tnewAssignmentDialogVisible: false,\r\n\t\t\tassignmentDetailDialogVisible: false,\r\n\t\t\tsurveyDialogVisible: false,\r\n\t\t\tquestions: [],\r\n\t\t\tsurveyResponses: [],\r\n\t\t\tnoSurvey: true,\r\n\t\t\tsurveyId: 1,\r\n\t\t\tsurveyAnswered: false,\r\n\t\t\tfollowupQuestion: null,\r\n\t\t\trepsonseType: 'first',\r\n\t\t\tsubmitSurveyActive: false,\r\n\t\t\tselectedAssignment: null,\r\n\t\t\tselectedKey: null,\r\n\t\t\tfile: null,\r\n\t\t\tfileList: [],\r\n\t\t\tnewAssignmentForm: {\r\n\t\t\t\tOrgCode: '',\r\n\t\t\t\tAssignmentName: '',\r\n\t\t\t\tDueDate: '',\r\n\t\t\t\tDescription: '',\r\n\t\t\t\tIsActive: 'A',\r\n\t\t\t\tIsMandatory: false,\r\n\t\t\t\tIsGroupAssignment: false,\r\n\t\t\t\tDisplayOrder: 0,\r\n\t\t\t\tTemplateId: 0,\r\n\t\t\t\tRubricId: null,\r\n\t\t\t\tGenreId: 0,\r\n\t\t\t\tUploadType: 0,\r\n\t\t\t\tUsePeerReview: false,\r\n\t\t\t\tUseRevisionPlan: false,\r\n\t\t\t\tUsePortfolio: false,\r\n\t\t\t\tUseNormalization: false,\r\n\t\t\t\tUseReviewerComment: false,\r\n\t\t\t\tLastActivityDate: '',\r\n\t\t\t\tUseSelfAssessment: false,\r\n\t\t\t\tUseAppraisal: false,\r\n\t\t\t\tAppraisalRubricId: null,\r\n\t\t\t\tAppraisalDueDate: '',\r\n\t\t\t\tUseCanvasIntegration: false,\r\n\t\t\t\tPeerReviewDueDate: ''\r\n\t\t\t},\r\n\t\t\tnewTaskForm: {\r\n\t\t\t\tAssignmentId: 0,\r\n\t\t\t\tName: '',\r\n\t\t\t\tDescription: null,\r\n\t\t\t\tDueDate: null,\r\n\t\t\t\tRubricId: null,\r\n\t\t\t\tType: '',\r\n\t\t\t\tSyncWithCanvas: null,\r\n\t\t\t\tDisplayOrder: null,\r\n\t\t\t\tUpdatedDate: null\r\n\t\t\t},\r\n\t\t\ttaskTypes: [\r\n\t\t\t\t{\r\n\t\t\t\t\tlabel: 'Instructor Review',\r\n\t\t\t\t\tvalue: 'instructor_review'\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tlabel: 'Self Review',\r\n\t\t\t\t\tvalue: 'self_review'\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tlabel: 'Peer Review',\r\n\t\t\t\t\tvalue: 'peer_review'\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tlabel: 'Appraisal',\r\n\t\t\t\t\tvalue: 'appraisal'\r\n\t\t\t\t}\r\n\t\t\t],\r\n\t\t\ttemplateRules: {\r\n\t\t\t\tTemplateName: [\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\trequired: true,\r\n\t\t\t\t\t\tmessage: 'Please input template name',\r\n\t\t\t\t\t\ttrigger: 'blur'\r\n\t\t\t\t\t}\r\n\t\t\t\t],\r\n\t\t\t\tClassType: [\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\trequired: true,\r\n\t\t\t\t\t\tmessage: 'Please select a course type',\r\n\t\t\t\t\t\ttrigger: 'change'\r\n\t\t\t\t\t}\r\n\t\t\t\t]\r\n\t\t\t},\r\n\t\t\trules: {\r\n\t\t\t\tAssignmentName: [\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\trequired: true,\r\n\t\t\t\t\t\tmessage: 'Please input project name',\r\n\t\t\t\t\t\ttrigger: 'blur'\r\n\t\t\t\t\t}\r\n\t\t\t\t],\r\n\t\t\t\tDueDate: [\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\trequired: true,\r\n\t\t\t\t\t\tmessage: 'Please select a date',\r\n\t\t\t\t\t\ttrigger: 'change'\r\n\t\t\t\t\t}\r\n\t\t\t\t],\r\n\t\t\t\tRubricId: [\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\trequired: true,\r\n\t\t\t\t\t\tmessage: 'Please select a rubric',\r\n\t\t\t\t\t\ttrigger: 'change'\r\n\t\t\t\t\t}\r\n\t\t\t\t]\r\n\t\t\t},\r\n\t\t\ttaskRules: {\r\n\t\t\t\tType: [\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\trequired: true,\r\n\t\t\t\t\t\tmessage: 'Please select a type',\r\n\t\t\t\t\t\ttrigger: 'change'\r\n\t\t\t\t\t}\r\n\t\t\t\t],\r\n\t\t\t\tDueDate: [\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\trequired: true,\r\n\t\t\t\t\t\tmessage: 'Please select a date',\r\n\t\t\t\t\t\ttrigger: 'change'\r\n\t\t\t\t\t}\r\n\t\t\t\t],\r\n\t\t\t\tRubricId: [\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\trequired: true,\r\n\t\t\t\t\t\tmessage: 'Please select a rubric',\r\n\t\t\t\t\t\ttrigger: 'change'\r\n\t\t\t\t\t}\r\n\t\t\t\t]\r\n\t\t\t},\r\n\t\t\tformLabelWidth: '180px',\r\n\t\t\trubricList: null,\r\n rubric: null,\r\n criterias: [],\r\n\t\t\tnewDescriptionEditor: null,\r\n\t\t\teditDescriptionEditor: null,\r\n\t\t\tdescriptionDetailEditor: null,\r\n\t\t\tsurveyWidth: '940px',\r\n\t\t\tsurveyTitle: '',\r\n\t\t\tcanvasAssignmentGroups: null,\r\n\t\t\tcanvasDialogVisible: false,\r\n\t\t\tactiveNames: [],\r\n\t\t\tselectedCanvasAssignment: null,\r\n\t\t\tsubmitCanvasAssignment: false,\r\n\t\t\tassignmentToMatch: null,\r\n\t\t\tcanvasCode: null,\r\n\t\t\tcanvasToken: null,\r\n\t\t\tcanvasCourseId: null,\r\n\t\t\tcanvasUserId: null,\r\n\t\t\tcanvasAssignmentName: null,\r\n\t\t\thtmlUrl: null,\r\n\t\t\tredirectDialogVisible: false,\r\n selectedAssignmentId: null,\r\n isSubmitting: false,\r\n docPreviewDialogVisible: false,\r\n rubricPreviewDialogVisible: false,\r\n\t\t\tmyapi: null,\r\n\t\t\tpageNum: 1,\r\n\t\t\ttotalPageNumber: null,\r\n\t\t\tzoomValue: 140,\r\n\t\t\tdescriptionEditor: null,\r\n\t\t\tnewTaskEditor: null,\r\n\t\t\teditTaskEditor: null,\r\n\t\t\tnewTaskDialogVisible: false,\r\n\t\t\tselectedTask: null,\r\n\t\t\tselectedTaskIndex: null,\r\n\t\t\teditTaskDialogVisible: false,\r\n\t\t\tsubmissionNumbers: null,\r\n\t\t\treviewFeedback: null,\r\n\t\t\tviewingByDueDate: false,\r\n\t\t\ttmpAssignments: null,\r\n\t\t\tteamFormationStatus: null\r\n\t\t}\r\n\t},\r\n\tcomputed: {\r\n\t\t...mapState({\r\n\t\t\tuserInState: (state) => state.auth.user,\r\n\t\t\troleInState: (state) => state.enrollment.userRole\r\n\t\t}),\r\n\t\tassignments: {\r\n\t\t\tget() {\r\n\t\t\t\treturn this.$store.state.assignment.assignments\r\n\t\t\t},\r\n\t\t\tset(updatedAssignments) {\r\n\t\t\t\tif (!this.viewingByDueDate) {\r\n\t\t\t\t\tthis.$store.commit('assignment/SET_ASSIGNMENTS', updatedAssignments)\r\n\t\t\t\t}\r\n\t\t\t}\r\n }\r\n\t},\r\n\twatch: {\r\n\t\troleInState(newValue) {\r\n\t\t\tthis.userRole = newValue\r\n\t\t},\r\n\t\tuserInState(newValue) {\r\n\t\t\tthis.username = newValue.UserName\r\n\t\t\tif (this.$store.state.enrollment.userRole == 'Student') {\r\n\t\t\t\tthis.submissionStatus = []\r\n\t\t\t\tthis.peerReviewStatus = []\r\n\t\t\t\tthis.selfReviewStatus = []\r\n\t\t\t\tthis.appraisalStatus = []\r\n\t\t\t\tthis.getStudentSubmissionStatus()\r\n\t\t\t\tthis.getTaskSubmissionStatus()\r\n\t\t\t\tthis.getReviewFeedback()\r\n\t\t\t} else {\r\n\t\t\t\tthis.submissionStatus = []\r\n\t\t\t\tthis.peerReviewStatus = []\r\n\t\t\t\tthis.selfReviewStatus = []\r\n\t\t\t\tthis.appraisalStatus = []\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\tbeforeDestroy() {\r\n\t\tif (this.newDescriptionEditor != null) {\r\n\t\t\tthis.newDescriptionEditor.destroy()\r\n\t\t}\r\n\t\tif (this.editDescriptionEditor != null) {\r\n\t\t\tthis.editDescriptionEditor.destroy()\r\n\t\t}\r\n\t\tif (this.descriptionDetailEditor != null) {\r\n\t\t\tthis.descriptionDetailEditor.destroy()\r\n\t\t}\r\n\t},\r\n\tasync created() {\r\n\t\tthis.userRole = this.$store.state.enrollment.userRole\r\n\t\tthis.currentCourse = this.$store.state.enrollment.currentCourse\r\n\r\n\t\tif (this.userRole == 'Student') {\r\n\t\t\tthis.getStudentSubmissionStatus()\r\n\t\t\tthis.getTaskSubmissionStatus()\r\n\t\t\tthis.getReviewFeedback()\r\n\t\t} else if (this.userRole == 'Instructor') {\r\n\t\t\tawait this.getRubricList()\r\n\t\t\tthis.submissionNumbers = await submissionService.GetSubmissionNumber(\r\n\t\t\t\tthis.termCode,\r\n\t\t\t\tthis.orgCode,\r\n\t\t\t\tthis.classCode\r\n\t\t\t)\r\n\t\t\tthis.teamFormationStatus =\r\n await teamFormationService.getTeamFormationStatus(\r\n \tthis.termCode,\r\n \tthis.orgCode,\r\n \tthis.classCode\r\n )\r\n\t\t}\r\n\r\n\t\tthis.canvasCode = this.getUrlParameter('code')\r\n\r\n\t\tif (this.canvasCode) {\r\n\t\t\tif (this.userRole == 'Instructor') {\r\n\t\t\t\tthis.getCanvasResourses(null, this.canvasCode, null)\r\n\t\t\t} else {\r\n\t\t\t\tconst assignmentId = this.getUrlParameter('assignmentId')\r\n\t\t\t\tconst key = this.assignments.findIndex((a) => a.Id == assignmentId)\r\n\t\t\t\tthis.openUploadDialog(assignmentId, key)\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n methods: {\r\n // @vuese\r\n\t\t// Display a preview of the rubric.\r\n previewRubric(id) {\r\n this.getRubric(id)\r\n\t\t\tthis.rubricPreviewDialogVisible = true\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Get rubric by id.\r\n\t\t// @arg The id of the rubric.\r\n\t\tasync getRubric(id) {\r\n\t\t\tthis.rubric = await rubricService.getRubricById(id)\r\n\t\t\tthis.criterias = this.rubric.RubricCriterias\r\n\t\t},\r\n\t\tviewTaskFeedback(assignment, task) {\r\n console.log('View Task Feedback', task)\r\n if (task.Type == 'peer_review' && assignment.IsGroupAssignment) {\r\n //DON\"T CHANGE TASK TYPE AS THIS IS RETAINED AND EVERYTHING BREAKS UNTIL WE \r\n //IMPLEMENT THIS TYPE ACROSS HTE CODE - OR FIGURE IT OUT. SIGH.\r\n //task.Type = 'group_peer_review' //IX FIX THIS IS A REALLYT LAME HACK\r\n \t\tthis.$router.push(\r\n\t\t\t\t'/view_feedback/' + assignment.Id + '/' + task.Id + '?task=' + 'group_peer_review'\r\n )\r\n } else\r\n\t\t\tthis.$router.push(\r\n\t\t\t\t'/view_feedback/' + assignment.Id + '/' + task.Id + '?task=' + task.Type\r\n\t\t\t)\r\n\t\t},\r\n\t\tasync getReviewFeedback() {\r\n\t\t\tthis.reviewFeedback = await reviewService.getReviewFeedback(\r\n\t\t\t\tthis.termCode,\r\n\t\t\t\tthis.orgCode,\r\n\t\t\t\tthis.classCode,\r\n\t\t\t\tthis.username\r\n\t\t\t)\r\n\t\t\tconsole.log('Review Feedback', this.reviewFeedback)\r\n\t\t},\r\n gotoDetails(assignment, groupId, task, draftStatus, feedback) {\r\n console.log(draftStatus)\r\n console.log(feedback)\r\n if (draftStatus == 'No Submission') {\r\n Notification.info({\r\n\t\t\t\t duration: 6000,\r\n\t\t\t\t title: 'Info',\r\n\t\t\t message: 'You have not submitted a Draft for Review'\r\n })\r\n } else if (task.Type == 'instructor_review') {\r\n if ((feedback)) {\r\n this.viewTaskFeedback(assignment, task)\r\n } else {\r\n Notification.info({\r\n duration: 6000,\r\n title: 'Info',\r\n message: 'Your Instructor has not yet provided Feedback'\r\n })\r\n } \r\n\t\t\t} else {\r\n\t\t\t\tthis.gotoTask(assignment, groupId, task)\r\n\t\t\t}\r\n\t\t},\r\n\t\tupdateTask() {\r\n\t\t\tconst that = this\r\n\t\t\tthis.$refs['taskForm'].validate((valid) => {\r\n\t\t\t\tif (valid) {\r\n\t\t\t\t\tif (that.selectedTask != null) {\r\n\t\t\t\t\t\tconsole.log(that.selectedTask.Description)\r\n\t\t\t\t\t\tthat.selectedTask.DueDate = that.getDateStr(\r\n\t\t\t\t\t\t\tthat.selectedTask.DueDate\r\n\t\t\t\t\t\t)\r\n\t\t\t\t\t\tif (that.selectedTask.DueDate) {\r\n\t\t\t\t\t\t\tthat.selectedTask.DueDate = that.getDateStr(\r\n\t\t\t\t\t\t\t\tthat.selectedTask.DueDate\r\n\t\t\t\t\t\t\t)\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tthat.selectedTask.Name = that.taskTypes.find(\r\n\t\t\t\t\t\t\t(t) => t.value == that.selectedTask.Type\r\n\t\t\t\t\t\t).label\r\n\t\t\t\t\t\tthat.selectedTask.LastActivityDate = that.getlastActivityDate()\r\n\t\t\t\t\t\ttaskService\r\n\t\t\t\t\t\t\t.updateTask(that.selectedTask)\r\n\t\t\t\t\t\t\t.then((task) => {\r\n\t\t\t\t\t\t\t\tvar assignments = that.assignments\r\n\t\t\t\t\t\t\t\tassignments[that.selectedKey].Tasks[that.selectedTaskIndex] = task\r\n\t\t\t\t\t\t\t\tthat.assignments = assignments\r\n\t\t\t\t\t\t\t\tconsole.log(that.assignments[that.selectedKey].Tasks[that.selectedTaskIndex])\r\n\t\t\t\t\t\t\t\tthat.selectedTask = null\r\n\t\t\t\t\t\t\t\tNotification.success({\r\n\t\t\t\t\t\t\t\t\tduration: 6000,\r\n\t\t\t\t\t\t\t\t\ttitle: 'Success',\r\n\t\t\t\t\t\t\t\t\tmessage: 'Edit Task successful.'\r\n\t\t\t\t\t\t\t\t})\r\n\t\t\t\t\t\t\t\tthis.selectedTask = null\r\n\t\t\t\t\t\t\t\tthis.editTaskDialogVisible = false\r\n\t\t\t\t\t\t\t})\r\n\t\t\t\t\t\t\t.catch((error) => {\r\n\t\t\t\t\t\t\t\tconsole.log(error)\r\n\t\t\t\t\t\t\t\tNotification.error({\r\n\t\t\t\t\t\t\t\t\tduration: 6000,\r\n\t\t\t\t\t\t\t\t\ttitle: 'Error',\r\n\t\t\t\t\t\t\t\t\tmessage: 'Edit Task failed.'\r\n\t\t\t\t\t\t\t\t})\r\n\t\t\t\t\t\t\t})\r\n\t\t\t\t\t}\r\n\t\t\t\t} else {\r\n\t\t\t\t\tNotification.error({\r\n\t\t\t\t\t\tduration: 6000,\r\n\t\t\t\t\t\ttitle: 'Error',\r\n\t\t\t\t\t\tmessage: 'Edit Task failed due to data validation error.'\r\n\t\t\t\t\t})\r\n\t\t\t\t\treturn false\r\n\t\t\t\t}\r\n\t\t\t})\r\n\t\t},\r\n\t\teditTask(task, taskIndex, assignmentIndex) {\r\n\t\t\tif (this.editTaskEditor != null) {\r\n\t\t\t\tthis.editTaskEditor.destroy()\r\n\t\t\t}\r\n\t\t\tthis.selectedTask = task\r\n\t\t\tthis.selectedTaskIndex = taskIndex\r\n this.selectedKey = assignmentIndex\r\n this.selectedAssignment = this.assignments[assignmentIndex]\r\n \r\n\t\t\tif (this.editDescriptionEditor != null) {\r\n\t\t\t\tthis.editDescriptionEditor.destroy()\r\n\t\t\t}\r\n this.editTaskDialogVisible = true\r\n\r\n\t\t\tthis.setUpEditTaskEditor()\r\n\t\t},\r\n\t\tdeleteTask(taskId, taskIndex, assignmentIndex) {\r\n\t\t\tthis.$confirm(\r\n\t\t\t\t'This will permanently delete the task. Do you want to continue?',\r\n\t\t\t\t'Warning',\r\n\t\t\t\t{\r\n\t\t\t\t\tconfirmButtonText: 'OK',\r\n\t\t\t\t\tcancelButtonText: 'Cancel',\r\n\t\t\t\t\ttype: 'warning'\r\n\t\t\t\t}\r\n\t\t\t)\r\n\t\t\t\t.then(() => {\r\n\t\t\t\t\ttaskService\r\n\t\t\t\t\t\t.deleteTask(taskId)\r\n\t\t\t\t\t\t.then((task) => {\r\n\t\t\t\t\t\t\tthis.assignments[assignmentIndex].Tasks.splice(taskIndex, 1)\r\n\t\t\t\t\t\t\tthis.assignments = this.assignments\r\n\t\t\t\t\t\t\t// this.$store.commit('assignment/SET_ASSIGNMENTS', this.assignments)\r\n\t\t\t\t\t\t\tNotification.success({\r\n\t\t\t\t\t\t\t\tduration: 6000,\r\n\t\t\t\t\t\t\t\ttitle: 'Success',\r\n\t\t\t\t\t\t\t\tmessage: 'Delete Task successful.'\r\n\t\t\t\t\t\t\t})\r\n\t\t\t\t\t\t})\r\n\t\t\t\t\t\t.catch((error) => {\r\n\t\t\t\t\t\t\tconsole.log(error)\r\n\t\t\t\t\t\t\tNotification.error({\r\n\t\t\t\t\t\t\t\tduration: 6000,\r\n\t\t\t\t\t\t\t\ttitle: 'Error',\r\n\t\t\t\t\t\t\t\tmessage: 'Delete Task failed.'\r\n\t\t\t\t\t\t\t})\r\n\t\t\t\t\t\t})\r\n\t\t\t\t})\r\n\t\t\t\t.catch(() => {\r\n\t\t\t\t\tthis.$message({\r\n\t\t\t\t\t\ttype: 'info',\r\n\t\t\t\t\t\tmessage: 'Delete Task canceled'\r\n\t\t\t\t\t})\r\n\t\t\t\t})\r\n\t\t},\r\n\t\taddNewTask() { //IX THIS IS REPLICATED IN NewProjectTemplate - should extract\r\n\t\t\tconst that = this\r\n\t\t\tthis.$refs['newTaskForm'].validate((valid) => {\r\n\t\t\t\tif (valid) {\r\n\t\t\t\t\tconst newTask = {\r\n\t\t\t\t\t\tAssignmentId: that.selectedAssignment.Id,\r\n\t\t\t\t\t\tName: that.taskTypes.find((t) => t.value == that.newTaskForm.Type)\r\n\t\t\t\t\t\t\t.label,\r\n\t\t\t\t\t\tDescription: that.newTaskForm.Description,\r\n\t\t\t\t\t\tDueDate: that.getDateStr(that.newTaskForm.DueDate),\r\n\t\t\t\t\t\tRubricId: that.newTaskForm.RubricId,\r\n\t\t\t\t\t\tType: that.newTaskForm.Type,\r\n\t\t\t\t\t\tSyncWithCanvas: 0,\r\n\t\t\t\t\t\tDisplayOrder: that.selectedAssignment.Tasks\r\n\t\t\t\t\t\t\t? that.selectedAssignment.Tasks.length\r\n\t\t\t\t\t\t\t: 0, // IX added to increment DispalyOrder\r\n\t\t\t\t\t\tUpdatedDate: that.getlastActivityDate()\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\ttaskService.addNewTask(newTask).then((task) => {\r\n\t\t\t\t\t\tconsole.log(task)\r\n\t\t\t\t\t\tif (task) {\r\n\t\t\t\t\t\t\tthat.selectedAssignment.Tasks.push(task)\r\n\t\t\t\t\t\t\tvar assignments = that.assignments\r\n\t\t\t\t\t\t\tassignments[that.selectedKey] = that.selectedAssignment\r\n\t\t\t\t\t\t\tthat.assignments = assignments\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t})\r\n\r\n\t\t\t\t\tNotification.success({\r\n\t\t\t\t\t\tduration: 6000,\r\n\t\t\t\t\t\ttitle: 'Success',\r\n\t\t\t\t\t\tmessage: 'Add New Project successful.'\r\n\t\t\t\t\t})\r\n\t\t\t\t\tthis.newTaskDialogVisible = false\r\n\t\t\t\t}\r\n\t\t\t})\r\n\t\t},\r\n\t\tremoveAssignment(assignmentId, key) {\r\n\t\t\tthis.$confirm(\r\n\t\t\t\t'This will permanently delete the Project. Do you want to continue?',\r\n\t\t\t\t'Warning',\r\n\t\t\t\t{\r\n\t\t\t\t\tconfirmButtonText: 'OK',\r\n\t\t\t\t\tcancelButtonText: 'Cancel',\r\n\t\t\t\t\ttype: 'warning'\r\n\t\t\t\t}\r\n\t\t\t)\r\n\t\t\t\t.then(() => {\r\n\t\t\t\t\tassignmentService\r\n\t\t\t\t\t\t.deleteAssignment(assignmentId)\r\n\t\t\t\t\t\t.then((assignment) => {\r\n\t\t\t\t\t\t\tthis.assignments.splice(key, 1)\r\n\t\t\t\t\t\t\tthis.assignments = this.assignments\r\n\t\t\t\t\t\t\t// this.$store.commit('assignment/SET_ASSIGNMENTS', this.assignments)\r\n\t\t\t\t\t\t\tNotification.success({\r\n\t\t\t\t\t\t\t\tduration: 6000,\r\n\t\t\t\t\t\t\t\ttitle: 'Success',\r\n\t\t\t\t\t\t\t\tmessage: 'Delete Project successful.'\r\n\t\t\t\t\t\t\t})\r\n\t\t\t\t\t\t})\r\n\t\t\t\t\t\t.catch((error) => {\r\n\t\t\t\t\t\t\tconsole.log(error)\r\n\t\t\t\t\t\t\tNotification.error({\r\n\t\t\t\t\t\t\t\tduration: 6000,\r\n\t\t\t\t\t\t\t\ttitle: 'Error',\r\n\t\t\t\t\t\t\t\tmessage: 'Delete Project failed.'\r\n\t\t\t\t\t\t\t})\r\n\t\t\t\t\t\t})\r\n\t\t\t\t})\r\n\t\t\t\t.catch(() => {\r\n\t\t\t\t\tthis.$message({\r\n\t\t\t\t\t\ttype: 'info',\r\n\t\t\t\t\t\tmessage: 'Delete Project canceled'\r\n\t\t\t\t\t})\r\n\t\t\t\t})\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Open add new/ edit project dialog.\r\n\t\t// @arg The project id and its key in the collection.\r\n\t\topenNewAssignmentDialog(assignmentId, key) {\r\n\t\t\tif (this.newDescriptionEditor != null) {\r\n\t\t\t\tthis.newDescriptionEditor.destroy()\r\n\t\t\t}\r\n\t\t\tthis.newAssignmentDialogVisible = true\r\n\t\t\tthis.selectedAssignment = null\r\n\t\t\tthis.selectedKey = null\r\n\t\t\tthis.selectedTask = null\r\n\t\t\tthis.setUpNewEditor()\r\n\t\t},\r\n\t\topenNewTaskDialog(assignmentId, key) {\r\n\t\t\tif (this.newTaskEditor != null) {\r\n\t\t\t\tthis.newTaskEditor.destroy()\r\n\t\t\t}\r\n\t\t\tthis.newTaskDialogVisible = true\r\n\t\t\tif (assignmentId != undefined && key != undefined) {\r\n\t\t\t\tthis.selectedAssignment = this.assignments[key]\r\n\t\t\t\tthis.selectedKey = key\r\n\t\t\t}\r\n\r\n\t\t\tthis.selectedTask = null\r\n\t\t\tthis.setUpNewTaskEditor()\r\n\t\t},\r\n\t\topenEditAssignmentDialog(assignmentId, key) {\r\n\t\t\tif (this.editDescriptionEditor != null) {\r\n\t\t\t\tthis.editDescriptionEditor.destroy()\r\n\t\t\t}\r\n\t\t\tthis.editAssignmentDialogVisible = true\r\n\t\t\tif (assignmentId != undefined && key != undefined) {\r\n\t\t\t\tthis.selectedAssignment = this.assignments[key]\r\n\t\t\t\tconsole.log(this.selectedAssignment)\r\n\t\t\t\tthis.selectedKey = key\r\n\t\t\t}\r\n\t\t\tthis.setUpEditEditor()\r\n\t\t},\r\n\t\tsetUpNewTaskEditor() {\r\n\t\t\tconst that = this\r\n\t\t\tthis.newTaskEditor = new Editor({\r\n\t\t\t\textensions: [\r\n\t\t\t\t\tnew Blockquote(),\r\n\t\t\t\t\tnew CodeBlock(),\r\n\t\t\t\t\tnew HardBreak(),\r\n\t\t\t\t\tnew Heading({ levels: [1, 2, 3] }),\r\n\t\t\t\t\tnew BulletList(),\r\n\t\t\t\t\tnew OrderedList(),\r\n\t\t\t\t\tnew Image(),\r\n\t\t\t\t\tnew ListItem(),\r\n\t\t\t\t\tnew TodoItem(),\r\n\t\t\t\t\tnew TodoList(),\r\n\t\t\t\t\tnew Bold(),\r\n\t\t\t\t\tnew Code(),\r\n\t\t\t\t\tnew Italic(),\r\n\t\t\t\t\tnew Link(),\r\n\t\t\t\t\tnew Strike(),\r\n\t\t\t\t\tnew Underline(),\r\n\t\t\t\t\tnew History(),\r\n\t\t\t\t\tnew Table({\r\n\t\t\t\t\t\tresizable: true\r\n\t\t\t\t\t}),\r\n\t\t\t\t\tnew TableHeader(),\r\n\t\t\t\t\tnew TableCell(),\r\n\t\t\t\t\tnew TableRow()\r\n\t\t\t\t],\r\n\t\t\t\tcontent: '',\r\n\t\t\t\tonUpdate: (state) => {\r\n\t\t\t\t\tthat.newTaskForm.Description = state.getHTML()\r\n\t\t\t\t}\r\n\t\t\t})\r\n\t\t},\r\n\t\tsetUpEditTaskEditor() {\r\n\t\t\tconst that = this\r\n\t\t\tthis.editTaskEditor = new Editor({\r\n\t\t\t\textensions: [\r\n\t\t\t\t\tnew Blockquote(),\r\n\t\t\t\t\tnew CodeBlock(),\r\n\t\t\t\t\tnew HardBreak(),\r\n\t\t\t\t\tnew Heading({ levels: [1, 2, 3] }),\r\n\t\t\t\t\tnew BulletList(),\r\n\t\t\t\t\tnew OrderedList(),\r\n\t\t\t\t\tnew Image(),\r\n\t\t\t\t\tnew ListItem(),\r\n\t\t\t\t\tnew TodoItem(),\r\n\t\t\t\t\tnew TodoList(),\r\n\t\t\t\t\tnew Bold(),\r\n\t\t\t\t\tnew Code(),\r\n\t\t\t\t\tnew Italic(),\r\n\t\t\t\t\tnew Link(),\r\n\t\t\t\t\tnew Strike(),\r\n\t\t\t\t\tnew Underline(),\r\n\t\t\t\t\tnew History(),\r\n\t\t\t\t\tnew Table({\r\n\t\t\t\t\t\tresizable: true\r\n\t\t\t\t\t}),\r\n\t\t\t\t\tnew TableHeader(),\r\n\t\t\t\t\tnew TableCell(),\r\n\t\t\t\t\tnew TableRow()\r\n\t\t\t\t],\r\n\t\t\t\tcontent: that.selectedTask.Description,\r\n\t\t\t\tonUpdate: (state) => {\r\n\t\t\t\t\tthat.selectedTask.Description = state.getHTML()\r\n\t\t\t\t}\r\n\t\t\t})\r\n\t\t},\r\n\t\tsetUpNewEditor() {\r\n\t\t\tconst that = this\r\n\t\t\tthis.newDescriptionEditor = new Editor({\r\n\t\t\t\textensions: [\r\n\t\t\t\t\tnew Blockquote(),\r\n\t\t\t\t\tnew CodeBlock(),\r\n\t\t\t\t\tnew HardBreak(),\r\n\t\t\t\t\tnew Heading({ levels: [1, 2, 3] }),\r\n\t\t\t\t\tnew BulletList(),\r\n\t\t\t\t\tnew OrderedList(),\r\n\t\t\t\t\tnew Image(),\r\n\t\t\t\t\tnew ListItem(),\r\n\t\t\t\t\tnew TodoItem(),\r\n\t\t\t\t\tnew TodoList(),\r\n\t\t\t\t\tnew Bold(),\r\n\t\t\t\t\tnew Code(),\r\n\t\t\t\t\tnew Italic(),\r\n\t\t\t\t\tnew Link(),\r\n\t\t\t\t\tnew Strike(),\r\n\t\t\t\t\tnew Underline(),\r\n\t\t\t\t\tnew History(),\r\n\t\t\t\t\tnew Table({\r\n\t\t\t\t\t\tresizable: true\r\n\t\t\t\t\t}),\r\n\t\t\t\t\tnew TableHeader(),\r\n\t\t\t\t\tnew TableCell(),\r\n\t\t\t\t\tnew TableRow()\r\n\t\t\t\t],\r\n\t\t\t\tcontent: '',\r\n\t\t\t\tonUpdate: (state) => {\r\n\t\t\t\t\tthat.newAssignmentForm.Description = state.getHTML()\r\n\t\t\t\t}\r\n\t\t\t})\r\n\t\t},\r\n\t\tsetUpEditEditor() {\r\n\t\t\tconst that = this\r\n\t\t\tthis.editDescriptionEditor = new Editor({\r\n\t\t\t\textensions: [\r\n\t\t\t\t\tnew Blockquote(),\r\n\t\t\t\t\tnew CodeBlock(),\r\n\t\t\t\t\tnew HardBreak(),\r\n\t\t\t\t\tnew Heading({ levels: [1, 2, 3] }),\r\n\t\t\t\t\tnew BulletList(),\r\n\t\t\t\t\tnew OrderedList(),\r\n\t\t\t\t\tnew Image(),\r\n\t\t\t\t\tnew ListItem(),\r\n\t\t\t\t\tnew TodoItem(),\r\n\t\t\t\t\tnew TodoList(),\r\n\t\t\t\t\tnew Bold(),\r\n\t\t\t\t\tnew Code(),\r\n\t\t\t\t\tnew Italic(),\r\n\t\t\t\t\tnew Link(),\r\n\t\t\t\t\tnew Strike(),\r\n\t\t\t\t\tnew Underline(),\r\n\t\t\t\t\tnew History(),\r\n\t\t\t\t\tnew Table({\r\n\t\t\t\t\t\tresizable: true\r\n\t\t\t\t\t}),\r\n\t\t\t\t\tnew TableHeader(),\r\n\t\t\t\t\tnew TableCell(),\r\n\t\t\t\t\tnew TableRow()\r\n\t\t\t\t],\r\n\t\t\t\tcontent: that.selectedAssignment.Description,\r\n\t\t\t\tonUpdate: (state) => {\r\n\t\t\t\t\tthat.selectedAssignment.Description = state.getHTML()\r\n\t\t\t\t}\r\n\t\t\t})\r\n\t\t},\r\n\t\tcloseAssignmentDialog() {\r\n\t\t\tif (this.$refs['newAssignmentForm']) {\r\n\t\t\t\tthis.$refs['newAssignmentForm'].resetFields()\r\n\t\t\t}\r\n\t\t},\r\n\t\tcloseTaskDialog() {\r\n\t\t\tif (this.$refs['newTaskForm']) {\r\n\t\t\t\tthis.$refs['newTaskForm'].resetFields()\r\n\t\t\t}\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Submit a project.\r\n\t\tasync addNewAssignment() {\r\n\t\t\tconst that = this\r\n\t\t\tthis.$refs['newAssignmentForm'].validate((valid) => {\r\n\t\t\t\tif (valid) {\r\n\t\t\t\t\tconst newAssignment = {\r\n\t\t\t\t\t\tOrgCode: that.orgCode,\r\n\t\t\t\t\t\tAssignmentName: that.newAssignmentForm.AssignmentName,\r\n\t\t\t\t\t\tDueDate: that.getDateStr(that.newAssignmentForm.DueDate),\r\n\t\t\t\t\t\tDescription: that.newAssignmentForm.Description,\r\n\t\t\t\t\t\tIsActive: 'A',\r\n\t\t\t\t\t\tIsMandatory: false,\r\n\t\t\t\t\t\tIsGroupAssignment: that.newAssignmentForm.IsGroupAssignment,\r\n\t\t\t\t\t\tDisplayOrder: that.assignments ? that.assignments.length : 0,\r\n\t\t\t\t\t\tTemplateId:\r\n that.$store.state.enrollment.currentCourse.ProjectTemplate,\r\n\t\t\t\t\t\tRubricId: that.newAssignmentForm.RubricId,\r\n\t\t\t\t\t\tGenreId: 22,\r\n\t\t\t\t\t\tUploadType: 0,\r\n\t\t\t\t\t\tUsePeerReview: false,\r\n\t\t\t\t\t\tUseRevisionPlan: false,\r\n\t\t\t\t\t\tUsePortfolio: false,\r\n\t\t\t\t\t\tUseNormalization: false,\r\n\t\t\t\t\t\tUseReviewerComment: false,\r\n\t\t\t\t\t\tLastActivityDate: that.getlastActivityDate(),\r\n\t\t\t\t\t\tUseSelfAssessment: false,\r\n\t\t\t\t\t\tSelfReviewDueDate: that.getlastActivityDate(),\r\n\t\t\t\t\t\tUseAppraisal: false,\r\n\t\t\t\t\t\tAppraisalRubricId: null,\r\n\t\t\t\t\t\tAppraisalDueDate: null,\r\n\t\t\t\t\t\tPeerReviewDueDate: null\r\n\t\t\t\t\t}\r\n\t\t\t\t\tassignmentService\r\n\t\t\t\t\t\t.addNewAssignment(newAssignment)\r\n\t\t\t\t\t\t.then((assignment) => {\r\n\t\t\t\t\t\t\tif (assignment) {\r\n\t\t\t\t\t\t\t\tthat.newAssignmentForm = {\r\n\t\t\t\t\t\t\t\t\tOrgCode: '',\r\n\t\t\t\t\t\t\t\t\tAssignmentName: '',\r\n\t\t\t\t\t\t\t\t\tDueDate: '',\r\n\t\t\t\t\t\t\t\t\tDescription: '',\r\n\t\t\t\t\t\t\t\t\tIsActive: 'A',\r\n\t\t\t\t\t\t\t\t\tIsMandatory: false,\r\n\t\t\t\t\t\t\t\t\tIsGroupAssignment: false,\r\n\t\t\t\t\t\t\t\t\tDisplayOrder: 0,\r\n\t\t\t\t\t\t\t\t\tTemplateId: 0,\r\n\t\t\t\t\t\t\t\t\tRubricId: null,\r\n\t\t\t\t\t\t\t\t\tGenreId: 0,\r\n\t\t\t\t\t\t\t\t\tUploadType: 0,\r\n\t\t\t\t\t\t\t\t\tUsePeerReview: false,\r\n\t\t\t\t\t\t\t\t\tUseRevisionPlan: false,\r\n\t\t\t\t\t\t\t\t\tUsePortfolio: false,\r\n\t\t\t\t\t\t\t\t\tUseNormalization: false,\r\n\t\t\t\t\t\t\t\t\tUseReviewerComment: false,\r\n\t\t\t\t\t\t\t\t\tLastActivityDate: '',\r\n\t\t\t\t\t\t\t\t\tUseSelfAssessment: false,\r\n\t\t\t\t\t\t\t\t\tUseAppraisal: false,\r\n\t\t\t\t\t\t\t\t\tAppraisalRubricId: null,\r\n\t\t\t\t\t\t\t\t\tAppraisalDueDate: null,\r\n\t\t\t\t\t\t\t\t\tPeerReviewDueDate: null\r\n\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t\t// Add new default instructor review task\r\n\t\t\t\t\t\t\t\tconst newTask = {\r\n\t\t\t\t\t\t\t\t\tAssignmentId: assignment.Id,\r\n\t\t\t\t\t\t\t\t\tName: 'Instructor Review',\r\n\t\t\t\t\t\t\t\t\tDescription: null,\r\n\t\t\t\t\t\t\t\t\tDueDate: that.getDateStr(newAssignment.DueDate),\r\n\t\t\t\t\t\t\t\t\tRubricId: newAssignment.RubricId,\r\n\t\t\t\t\t\t\t\t\tType: 'instructor_review',\r\n\t\t\t\t\t\t\t\t\tSyncWithCanvas: 0,\r\n\t\t\t\t\t\t\t\t\tDisplayOrder: 0, // IX Shouldn't the first Task be 0?\r\n\t\t\t\t\t\t\t\t\tUpdatedDate: that.getlastActivityDate()\r\n\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t\tconsole.log(newTask)\r\n\r\n\t\t\t\t\t\t\t\ttaskService.addNewTask(newTask).then((task) => {\r\n\t\t\t\t\t\t\t\t\tconsole.log(task)\r\n\t\t\t\t\t\t\t\t\tif (task) {\r\n\t\t\t\t\t\t\t\t\t\tvar assignmentTasks = []\r\n\t\t\t\t\t\t\t\t\t\tassignmentTasks.push(task)\r\n\t\t\t\t\t\t\t\t\t\tassignment.Tasks = assignmentTasks\r\n\t\t\t\t\t\t\t\t\t\tthis.assignments.push(assignment)\r\n\t\t\t\t\t\t\t\t\t\tthis.assignments = this.assignments\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t})\r\n\r\n\t\t\t\t\t\t\t\tNotification.success({\r\n\t\t\t\t\t\t\t\t\tduration: 6000,\r\n\t\t\t\t\t\t\t\t\ttitle: 'Success',\r\n\t\t\t\t\t\t\t\t\tmessage: 'Add New Project successful.'\r\n\t\t\t\t\t\t\t\t})\r\n\t\t\t\t\t\t\t\tthis.newAssignmentDialogVisible = false\r\n\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\tNotification.error({\r\n\t\t\t\t\t\t\t\t\tduration: 6000,\r\n\t\t\t\t\t\t\t\t\ttitle: 'Error',\r\n\t\t\t\t\t\t\t\t\tmessage: 'Add New Project failed.'\r\n\t\t\t\t\t\t\t\t})\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t})\r\n\t\t\t\t\t\t.catch((error) => {\r\n\t\t\t\t\t\t\tconsole.log(error)\r\n\t\t\t\t\t\t\tNotification.error({\r\n\t\t\t\t\t\t\t\tduration: 6000,\r\n\t\t\t\t\t\t\t\ttitle: 'Error',\r\n\t\t\t\t\t\t\t\tmessage: 'Add New Project failed.'\r\n\t\t\t\t\t\t\t})\r\n\t\t\t\t\t\t})\r\n\t\t\t\t} else {\r\n\t\t\t\t\tNotification.error({\r\n\t\t\t\t\t\tduration: 6000,\r\n\t\t\t\t\t\ttitle: 'Error',\r\n\t\t\t\t\t\tmessage: 'Add New Project failed due to data validation error.'\r\n\t\t\t\t\t})\r\n\t\t\t\t\treturn false\r\n\t\t\t\t}\r\n\t\t\t})\r\n\t\t},\r\n\t\tasync editAssignment() {\r\n\t\t\tconst that = this\r\n\t\t\tthis.$refs['assignmentForm'].validate((valid) => {\r\n\t\t\t\tif (valid) {\r\n\t\t\t\t\tif (that.selectedAssignment != null) {\r\n\t\t\t\t\t\tconsole.log(that.selectedAssignment.Description)\r\n\t\t\t\t\t\tthat.selectedAssignment.DueDate = that.getDateStr(\r\n\t\t\t\t\t\t\tthat.selectedAssignment.DueDate\r\n\t\t\t\t\t\t)\r\n\t\t\t\t\t\tif (that.selectedAssignment.SelfReviewDueDate) {\r\n\t\t\t\t\t\t\tthat.selectedAssignment.SelfReviewDueDate = that.getDateStr(\r\n\t\t\t\t\t\t\t\tthat.selectedAssignment.SelfReviewDueDate\r\n\t\t\t\t\t\t\t)\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tif (that.selectedAssignment.AppraisalDueDate) {\r\n\t\t\t\t\t\t\tthat.selectedAssignment.AppraisalDueDate = that.getDateStr(\r\n\t\t\t\t\t\t\t\tthat.selectedAssignment.AppraisalDueDate\r\n\t\t\t\t\t\t\t)\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tif (that.selectedAssignment.PeerReviewDueDate) {\r\n\t\t\t\t\t\t\tthat.selectedAssignment.PeerReviewDueDate = that.getDateStr(\r\n\t\t\t\t\t\t\t\tthat.selectedAssignment.PeerReviewDueDate\r\n\t\t\t\t\t\t\t)\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tthat.selectedAssignment.LastActivityDate =\r\n that.getlastActivityDate()\r\n\t\t\t\t\t\tassignmentService\r\n\t\t\t\t\t\t\t.updateAssignment(that.selectedAssignment)\r\n\t\t\t\t\t\t\t.then((assignment) => {\r\n\t\t\t\t\t\t\t\tthat.assignments[that.selectedKey] = that.selectedAssignment\r\n\t\t\t\t\t\t\t\tthat.selectedAssignment = null\r\n\t\t\t\t\t\t\t\tthat.selectedTask = null\r\n\t\t\t\t\t\t\t\tNotification.success({\r\n\t\t\t\t\t\t\t\t\tduration: 6000,\r\n\t\t\t\t\t\t\t\t\ttitle: 'Success',\r\n\t\t\t\t\t\t\t\t\tmessage: 'Edit Project successful.'\r\n\t\t\t\t\t\t\t\t})\r\n\t\t\t\t\t\t\t\tthis.editAssignmentDialogVisible = false\r\n\t\t\t\t\t\t\t})\r\n\t\t\t\t\t\t\t.catch((error) => {\r\n\t\t\t\t\t\t\t\tconsole.log(error)\r\n\t\t\t\t\t\t\t\tNotification.error({\r\n\t\t\t\t\t\t\t\t\tduration: 6000,\r\n\t\t\t\t\t\t\t\t\ttitle: 'Error',\r\n\t\t\t\t\t\t\t\t\tmessage: 'Edit Project failed.'\r\n\t\t\t\t\t\t\t\t})\r\n\t\t\t\t\t\t\t})\r\n\t\t\t\t\t}\r\n\t\t\t\t} else {\r\n\t\t\t\t\tNotification.error({\r\n\t\t\t\t\t\tduration: 6000,\r\n\t\t\t\t\t\ttitle: 'Error',\r\n\t\t\t\t\t\tmessage: 'Edit Project failed due to data validation error.'\r\n\t\t\t\t\t})\r\n\t\t\t\t\treturn false\r\n\t\t\t\t}\r\n\t\t\t})\r\n\t\t},\r\n\t\topenAssignmentDetailDialog(assignmentId, key) {\r\n\t\t\tif (this.descriptionDetailEditor != null) {\r\n\t\t\t\tthis.descriptionDetailEditor.destroy()\r\n\t\t\t}\r\n\r\n\t\t\tthis.assignmentDetailDialogVisible = true\r\n\t\t\tif (assignmentId != undefined && key != undefined) {\r\n\t\t\t\tthis.selectedAssignment = this.assignments[key]\r\n\t\t\t\tthis.selectedKey = key\r\n\t\t\t} else {\r\n\t\t\t\tthis.selectedAssignment = null\r\n\t\t\t\tthis.selectedKey = null\r\n\t\t\t\tthis.selectedTask = null\r\n\t\t\t}\r\n\t\t\tthis.setUpDetailEditor()\r\n\t\t},\r\n\t\tsetUpDetailEditor() {\r\n\t\t\tconst that = this\r\n\t\t\tthis.descriptionDetailEditor = new Editor({\r\n\t\t\t\teditable: false,\r\n\t\t\t\textensions: [\r\n\t\t\t\t\tnew Blockquote(),\r\n\t\t\t\t\tnew CodeBlock(),\r\n\t\t\t\t\tnew HardBreak(),\r\n\t\t\t\t\tnew Heading({ levels: [1, 2, 3] }),\r\n\t\t\t\t\tnew BulletList(),\r\n\t\t\t\t\tnew OrderedList(),\r\n\t\t\t\t\tnew Image(),\r\n\t\t\t\t\tnew ListItem(),\r\n\t\t\t\t\tnew TodoItem(),\r\n\t\t\t\t\tnew TodoList(),\r\n\t\t\t\t\tnew Bold(),\r\n\t\t\t\t\tnew Code(),\r\n\t\t\t\t\tnew Italic(),\r\n\t\t\t\t\tnew Link(),\r\n\t\t\t\t\tnew Strike(),\r\n\t\t\t\t\tnew Underline(),\r\n\t\t\t\t\tnew History(),\r\n\t\t\t\t\tnew Table({\r\n\t\t\t\t\t\tresizable: true\r\n\t\t\t\t\t}),\r\n\t\t\t\t\tnew TableHeader(),\r\n\t\t\t\t\tnew TableCell(),\r\n\t\t\t\t\tnew TableRow()\r\n\t\t\t\t],\r\n\t\t\t\tcontent:\r\n that.selectedAssignment != null\r\n \t? that.selectedAssignment.Description\r\n \t: '',\r\n\t\t\t\tonUpdate: (state) => {\r\n\t\t\t\t\tthat.selectedAssignment.Description = state.getHTML()\r\n\t\t\t\t}\r\n\t\t\t})\r\n\t\t},\r\n\t\t// openNewTaskDialog(assignmentId, key) {\r\n\t\t// \tif (this.newTaskEditor != null) {\r\n\t\t// \t\tthis.newTaskEditor.destroy()\r\n\t\t// \t}\r\n\t\t// \tthis.newTaskDialogVisible = true\r\n\t\t// \tif (assignmentId != undefined && key != undefined) {\r\n\t\t// \t\tthis.selectedAssignment = this.assignments[key]\r\n\t\t// \t\tthis.selectedKey = key\r\n\t\t// \t}\r\n\r\n\t\t// \tthis.selectedTask = null\r\n\t\t// \tthis.setUpNewTaskEditor()\r\n\t\t// },\r\n\t\tgotoGroupFormation(assignmentId) {\r\n\t\t\tthis.$router.push(\r\n\t\t\t\t'/course/' +\r\n this.classCode +\r\n '/team_formation/group_project?assignmentId=' +\r\n assignmentId\r\n\t\t\t)\r\n\t\t},\r\n\t\tgotoPeerReviewTeamFormation(assignmentId) {\r\n\t\t\tthis.$router.push(\r\n\t\t\t\t'/course/' +\r\n this.classCode +\r\n '/team_formation/peer_review/?assignmentId=' +\r\n assignmentId\r\n\t\t\t)\r\n\t\t},\r\n\t\tgotoTask(assignment, groupId, task) {\r\n\t\t\tif (task.Type == 'self_review') {\r\n\t\t\t\tif (assignment.IsGroupAssignment) {\r\n\t\t\t\t\tif (groupId && groupId != 0) {\r\n\t\t\t\t\t\tthis.$router.push(\r\n\t\t\t\t\t\t\t'/self_review?assignmentId=' +\r\n assignment.Id +\r\n '&taskId=' +\r\n task.Id\r\n\t\t\t\t\t\t)\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tNotification.info({\r\n\t\t\t\t\t\t\tduration: 6000,\r\n\t\t\t\t\t\t\ttitle: 'Info',\r\n\t\t\t\t\t\t\tmessage:\r\n 'Your instructor must include you in a Group before you can complete the Self Review Task for this Project.'\r\n\t\t\t\t\t\t})\r\n\t\t\t\t\t}\r\n\t\t\t\t} else {\r\n\t\t\t\t\tthis.$router.push(\r\n\t\t\t\t\t\t'/self_review?assignmentId=' + assignment.Id + '&taskId=' + task.Id\r\n\t\t\t\t\t)\r\n\t\t\t\t}\r\n\t\t\t} else if (task.Type == 'peer_review' || task.Type == 'group_peer_review') {\r\n\t\t\t\tif (assignment.IsGroupAssignment) {\r\n\t\t\t\t\tif (groupId && groupId != 0) {\r\n\t\t\t\t\t\tthis.$router.push(\r\n\t\t\t\t\t\t\t'/peer_review?assignmentId=' +\r\n assignment.Id +\r\n '&taskId=' +\r\n task.Id\r\n\t\t\t\t\t\t)\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tNotification.info({\r\n\t\t\t\t\t\t\tduration: 6000,\r\n\t\t\t\t\t\t\ttitle: 'Info',\r\n\t\t\t\t\t\t\tmessage:\r\n 'Your instructor must include you in a Peer Review Group before you can complete the Peer Review Task for this Project.'\r\n\t\t\t\t\t\t})\r\n\t\t\t\t\t}\r\n\t\t\t\t} else {\r\n\t\t\t\t\tthis.$router.push(\r\n\t\t\t\t\t\t'/peer_review?assignmentId=' + assignment.Id + '&taskId=' + task.Id\r\n\t\t\t\t\t)\r\n\t\t\t\t}\r\n\t\t\t} else if (task.Type == 'appraisal') {\r\n\t\t\t\t// type == appraisal\r\n\t\t\t\tif (assignment.IsGroupAssignment) {\r\n\t\t\t\t\tif (groupId && groupId != 0) {\r\n\t\t\t\t\t\tthis.$router.push(\r\n\t\t\t\t\t\t\t'/student/appraisal/' +\r\n assignment.Id +\r\n '/' +\r\n task.Id +\r\n '?groupId=' +\r\n groupId\r\n\t\t\t\t\t\t)\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tNotification.info({\r\n\t\t\t\t\t\t\tduration: 6000,\r\n\t\t\t\t\t\t\ttitle: 'Info',\r\n\t\t\t\t\t\t\tmessage:\r\n 'Your instructor must include you in a Group before you can complete the Appraisal Task for this Project.'\r\n\t\t\t\t\t\t})\r\n\t\t\t\t\t}\r\n\t\t\t\t} else {\r\n\t\t\t\t\tthis.$router.push(\r\n\t\t\t\t\t\t'/student/appraisal/' + assignment.Id + '/' + task.Id\r\n\t\t\t\t\t)\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t},\r\n\t\tasync viewSubmission(docId, assignment) {\r\n\t\t\tthis.selectedAssignment = assignment\r\n\t\t\tthis.docPreviewDialogVisible = true\r\n\r\n\t\t\tif (docId) {\r\n\t\t\t\tthis.docId = docId\r\n\t\t\t\tawait pdfService\r\n\t\t\t\t\t.getPdf(docId)\r\n\t\t\t\t\t.then((pdf) => {\r\n\t\t\t\t\t\t// Display the pdf\r\n\t\t\t\t\t\tconst pdfDocument = document.querySelector('#pdfDocument')\r\n\t\t\t\t\t\tpdfDocument.innerHTML = pdf\r\n\t\t\t\t\t\t// Setup the doc after being loaded\r\n\t\t\t\t\t\tconst that = this\r\n\t\t\t\t\t\tdocument.getElementById('PdfWebControl').onload = function() {\r\n\t\t\t\t\t\t\tthat.PdfAttachListeners()\r\n\t\t\t\t\t\t\tsetTimeout(function() {\r\n\t\t\t\t\t\t\t\tthat.totalPageNumber = that.myapi.getPageCount()\r\n\t\t\t\t\t\t\t}, 500)\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t})\r\n\t\t\t\t\t.catch((error) => {\r\n\t\t\t\t\t\tconsole.log(error)\r\n\t\t\t\t\t})\r\n\t\t\t}\r\n\t\t},\r\n\t\tviewByDueDates() {\r\n\t\t\tthis.viewingByDueDate = true\r\n\t\t\tthis.tmpAssignments = this.assignments\r\n\t\t\tthis.assignments = this.assignments.sort(function(a, b) {\r\n\t\t\t\t// Turn your strings into dates, and then subtract them\r\n\t\t\t\t// to get a value that is either negative, positive, or zero.\r\n\t\t\t\treturn new Date(a.DueDate) - new Date(b.DueDate)\r\n\t\t\t})\r\n\t\t\tfor (let i = 0; i < this.assignments.length; i++) {\r\n\t\t\t\tthis.assignments[i].Tasks = this.assignments[i].Tasks.sort(function(\r\n\t\t\t\t\ta,\r\n\t\t\t\t\tb\r\n\t\t\t\t) {\r\n\t\t\t\t\t// Turn your strings into dates, and then subtract them\r\n\t\t\t\t\t// to get a value that is either negative, positive, or zero.\r\n\t\t\t\t\treturn new Date(a.DueDate) - new Date(b.DueDate)\r\n\t\t\t\t})\r\n\t\t\t}\r\n\r\n\t\t\tNotification.success({\r\n\t\t\t\tduration: 6000,\r\n\t\t\t\ttitle: 'Success',\r\n\t\t\t\tmessage: 'Sort Projects by Due Date succesful.'\r\n\t\t\t})\r\n\t\t},\r\n\t\tdefaultView() {\r\n\t\t\tthis.viewingByDueDate = false\r\n\t\t\tthis.assignments = this.tmpAssignments\r\n\t\t},\r\n\t\tasync orderByDueDates() {\r\n\t\t\tthis.assignments = this.assignments.sort(function(a, b) {\r\n\t\t\t\t// Turn your strings into dates, and then subtract them\r\n\t\t\t\t// to get a value that is either negative, positive, or zero.\r\n\t\t\t\treturn new Date(a.DueDate) - new Date(b.DueDate)\r\n\t\t\t})\r\n\r\n\t\t\tfor (let i = 0; i < this.assignments.length; i++) {\r\n\t\t\t\tthis.assignments[i].Tasks = this.assignments[i].Tasks.sort(function(\r\n\t\t\t\t\ta,\r\n\t\t\t\t\tb\r\n\t\t\t\t) {\r\n\t\t\t\t\t// Turn your strings into dates, and then subtract them\r\n\t\t\t\t\t// to get a value that is either negative, positive, or zero.\r\n\t\t\t\t\treturn new Date(a.DueDate) - new Date(b.DueDate)\r\n\t\t\t\t})\r\n\t\t\t}\r\n\r\n\t\t\t// this.$store.commit('assignment/SET_ASSIGNMENTS', this.assignments)\r\n\r\n\t\t\tfor (let i = 0; i < this.assignments.length; i++) {\r\n\t\t\t\tthis.assignments[i].DisplayOrder = i\r\n\t\t\t\tfor (let j = 0; j < this.assignments[i].Tasks.length; j++) {\r\n\t\t\t\t\tthis.assignments[i].Tasks[j].DisplayOrder = j\r\n\t\t\t\t\tawait taskService.updateTask(this.assignments[i].Tasks[j])\r\n\t\t\t\t}\r\n\t\t\t\tawait assignmentService.updateAssignment(this.assignments[i])\r\n\t\t\t}\r\n\r\n\t\t\tNotification.success({\r\n\t\t\t\tduration: 6000,\r\n\t\t\t\ttitle: 'Success',\r\n\t\t\t\tmessage: 'Order Projects successful.'\r\n\t\t\t})\r\n\t\t},\r\n\t\tasync onDragEnd() {\r\n\t\t\tif (this.userRole != 'Student') {\r\n\t\t\t\tfor (let i = 0; i < this.assignments.length; i++) {\r\n\t\t\t\t\tif (this.assignments[i].DisplayOrder != i) {\r\n\t\t\t\t\t\tthis.assignments[i].DisplayOrder = i\r\n\t\t\t\t\t\tawait assignmentService.updateAssignment(this.assignments[i])\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tNotification.success({\r\n\t\t\t\t\tduration: 6000,\r\n\t\t\t\t\ttitle: 'Success',\r\n\t\t\t\t\tmessage: 'Order Projects successful.'\r\n\t\t\t\t})\r\n\t\t\t}\r\n\t\t},\r\n formatDate(dateStr) {\r\n if (dateStr != null) {\r\n return dateUtils.formatDate(dateStr)\r\n } else {\r\n return 'NaN'\r\n }\r\n\t\t},\r\n\t\tuseCanvasIntegration() {\r\n\t\t\tconst demoCourses = [\r\n\t\t\t\t'10743',\r\n\t\t\t\t'11126',\r\n\t\t\t\t'11570',\r\n\t\t\t\t'58299',\r\n\t\t\t\t'55751',\r\n\t\t\t\t'50999',\r\n\t\t\t\t'58432',\r\n\t\t\t\t'50366'\r\n\t\t\t]\r\n\t\t\tif (\r\n\t\t\t\t((this.termCode >= '202105') && //IX Any TEST course after Fall 2021 can synch to Canvas\r\n (demoCourses.includes(this.classCode)) ||\r\n this.classCode == 'T0007' ||\r\n this.classCode == 'TEST01' ||\r\n this.classCode == 'PTC10')\r\n\t\t\t) {\r\n\t\t\t\treturn true\r\n\t\t\t}\r\n\r\n\t\t\tconst thisCourse = this.$store.state.enrollment.currentCourse\r\n\t\t\tconst courseName = thisCourse.ClassDescription\r\n\t\t\tif (\r\n\t\t\t\t(this.termCode >= '202108') && //IX Any 3250 course after Fall 2021 can synch to Canvas\r\n courseName.includes('ENC 3250')\r\n\t\t\t) {\r\n\t\t\t\treturn true\r\n\t\t\t}\r\n\t\t\treturn false\r\n\t\t},\r\n\t\tcheckSubmitSurveyActive() {\r\n\t\t\tlet isActive = true\r\n\t\t\tfor (let i = 0; i < this.surveyResponses.length; i++) {\r\n\t\t\t\tif (this.surveyResponses[i] != null) {\r\n\t\t\t\t\tif (this.surveyResponses[i].AnswerId == 0) {\r\n\t\t\t\t\t\tisActive = false\r\n\t\t\t\t\t\tbreak\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tthis.submitSurveyActive = isActive\r\n\t\t},\r\n\t\tgetQuestionNumber(index) {\r\n\t\t\tif (this.surveyId == 4) {\r\n\t\t\t\tif (index > 14) return index - 1\r\n\t\t\t\telse return index\r\n\t\t\t} else {\r\n\t\t\t\treturn index + 1\r\n\t\t\t}\r\n\t\t},\r\n\t\tasync getCanvasResourses(accessToken, code, assignmentId) {\r\n\t\t\tif (assignmentId == null) {\r\n\t\t\t\tassignmentId = this.getUrlParameter('assignmentId')\r\n\t\t\t}\r\n\t\t\tthis.assignmentToMatch = this.assignments.find(\r\n\t\t\t\t(a) => a.Id == assignmentId\r\n\t\t\t)\r\n\t\t\tconst canvasResources = await canvasService.getCanvasResourses(\r\n\t\t\t\tthis.username,\r\n\t\t\t\taccessToken,\r\n\t\t\t\tcode,\r\n\t\t\t\tthis.orgCode,\r\n\t\t\t\tthis.termCode,\r\n\t\t\t\tthis.classCode,\r\n\t\t\t\tassignmentId\r\n\t\t\t)\r\n\t\t\tif (canvasResources != null) {\r\n\t\t\t\tif (\r\n\t\t\t\t\tcanvasResources.assignmentGroups &&\r\n canvasResources.assignmentGroups.length > 0\r\n\t\t\t\t) {\r\n\t\t\t\t\tthis.canvasCourseId = canvasResources.courseId\r\n\t\t\t\t\tthis.canvasAssignmentGroups = canvasResources.assignmentGroups\r\n\r\n\t\t\t\t\tthis.activeNames = this.canvasAssignmentGroups.map((item) => item.id)\r\n\t\t\t\t\tconst that = this\r\n\t\t\t\t\tfor (var item of canvasResources.assignmentGroups) {\r\n\t\t\t\t\t\tconst test = item.assignments.find((a) => a.isMatched == true)\r\n\t\t\t\t\t\tconsole.log(test)\r\n\t\t\t\t\t\tif (test) {\r\n\t\t\t\t\t\t\tthat.selectedCanvasAssignment = test\r\n\t\t\t\t\t\t\tconsole.log(that.selectedCanvasAssignment)\r\n\t\t\t\t\t\t\tbreak\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\tthis.canvasDialogVisible = true\r\n\t\t\t\t} else {\r\n\t\t\t\t\tNotification.error({\r\n\t\t\t\t\t\tduration: 6000,\r\n\t\t\t\t\t\ttitle: 'Error',\r\n\t\t\t\t\t\tmessage: 'Retrieve Canvas data failed.'\r\n\t\t\t\t\t})\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tNotification.error({\r\n\t\t\t\t\tduration: 6000,\r\n\t\t\t\t\ttitle: 'Error',\r\n\t\t\t\t\tmessage: 'Retrieve Canvas data failed,'\r\n\t\t\t\t})\r\n\t\t\t}\r\n\t\t},\r\n\t\tviewCanvasAssignment(url) {\r\n\t\t\twindow.open(url, '_blank')\r\n\t\t},\r\n\t\tasync submitCanvasMatch() {\r\n\t\t\tconst canvasAssignmentMatch = {\r\n\t\t\t\tInstructorId: this.username,\r\n\t\t\t\tAssignmentId: this.assignmentToMatch.Id,\r\n\t\t\t\tCanvasAssignmentId: this.selectedCanvasAssignment.id,\r\n\t\t\t\tCanvasAssignmentName: this.selectedCanvasAssignment.name,\r\n\t\t\t\tHtmlUrl: this.selectedCanvasAssignment.html_url,\r\n\t\t\t\tCanvasCourseId: this.canvasCourseId\r\n\t\t\t}\r\n\t\t\tcanvasService\r\n\t\t\t\t.createCanvasAssignmentMatch(canvasAssignmentMatch)\r\n\t\t\t\t.then((result) => {\r\n\t\t\t\t\tNotification.success({\r\n\t\t\t\t\t\tduration: 6000,\r\n\t\t\t\t\t\ttitle: 'Success',\r\n\t\t\t\t\t\tmessage:\r\n 'Sync Project successful with selected Canvas assignment ' +\r\n this.assignmentToMatch.AssignmentName\r\n\t\t\t\t\t})\r\n\t\t\t\t\t// Update USF Writes assignment to display Canvas icon\r\n\t\t\t\t\tconst index = this.assignments.findIndex(\r\n\t\t\t\t\t\t(a) => a.Id == this.assignmentToMatch.Id\r\n\t\t\t\t\t)\r\n\t\t\t\t\tthis.assignments[index].UseCanvasIntegration = true\r\n\t\t\t\t\tassignmentService\r\n\t\t\t\t\t\t.updateAssignment(this.assignments[index])\r\n\t\t\t\t\t\t.then((assignment) => {\r\n\t\t\t\t\t\t\tthis.canvasDialogVisible = false\r\n\t\t\t\t\t\t})\r\n\t\t\t\t\t\t.catch((error) => {\r\n\t\t\t\t\t\t\tconsole.log(error)\r\n\t\t\t\t\t\t\tNotification.error({\r\n\t\t\t\t\t\t\t\tduration: 6000,\r\n\t\t\t\t\t\t\t\ttitle: 'Error',\r\n\t\t\t\t\t\t\t\tmessage: 'Sync Project failed.'\r\n\t\t\t\t\t\t\t})\r\n\t\t\t\t\t\t})\r\n\t\t\t\t})\r\n\t\t\t\t.catch((error) => {\r\n\t\t\t\t\tconsole.log(error)\r\n\t\t\t\t\tNotification.error({\r\n\t\t\t\t\t\tduration: 6000,\r\n\t\t\t\t\t\ttitle: 'Error',\r\n\t\t\t\t\t\tmessage:\r\n 'Sync selected assignment failed with ' +\r\n this.assignmentToMatch.AssignmentName\r\n\t\t\t\t\t})\r\n\t\t\t\t})\r\n\t\t},\r\n\t\tgetUrlParameter(sParam) {\r\n\t\t\tconst sPageURL = decodeURIComponent(window.location.search.substring(1))\r\n\r\n\t\t\tconst sURLVariables = sPageURL.split('&')\r\n\r\n\t\t\tlet sParameterName\r\n\r\n\t\t\tlet i\r\n\r\n\t\t\tfor (i = 0; i < sURLVariables.length; i++) {\r\n\t\t\t\tsParameterName = sURLVariables[i].split('=')\r\n\r\n\t\t\t\tif (sParameterName[0] === sParam) {\r\n\t\t\t\t\treturn sParameterName[1] === undefined ? true : sParameterName[1]\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Get lists of all active rubric available for this instructor.\r\n\t\tasync getRubricList() {\r\n\t\t\tthis.rubricList = await rubricService.getRubricList(\r\n\t\t\t\tthis.orgCode,\r\n\t\t\t\tthis.username\r\n\t\t\t)\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Looping through each item in a collection and performing an action asynchronously.\r\n\t\t// @arg The collections and a callback function.\r\n\t\tasync asyncForEach(array, callback) {\r\n\t\t\tfor (let index = 0; index < array.length; index++) {\r\n\t\t\t\tawait callback(array[index], index, array)\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\tasync getPeerReviewSubmissionStatus() {\r\n\t\t\tthis.peerReviewStatus = await reviewService.getPeerReviewSubmissionStatus(\r\n\t\t\t\tthis.termCode,\r\n\t\t\t\tthis.orgCode,\r\n\t\t\t\tthis.classCode,\r\n\t\t\t\tthis.username\r\n\t\t\t)\r\n\t\t\tconsole.log('Peer Review status', this.peerReviewStatus)\r\n\t\t},\r\n\r\n\t\tasync getSelfReviewSubmissionStatus() {\r\n\t\t\tthis.selfReviewStatus = await reviewService.getSelfReviewSubmissionStatus(\r\n\t\t\t\tthis.termCode,\r\n\t\t\t\tthis.orgCode,\r\n\t\t\t\tthis.classCode,\r\n\t\t\t\tthis.username\r\n\t\t\t)\r\n\t\t},\r\n\r\n\t\tasync getAppraisalSubmissionStatus() {\r\n\t\t\tthis.appraisalStatus = await reviewService.getAppraisalSubmissionStatus(\r\n\t\t\t\tthis.termCode,\r\n\t\t\t\tthis.orgCode,\r\n\t\t\t\tthis.classCode,\r\n\t\t\t\tthis.username\r\n\t\t\t)\r\n\t\t},\r\n\t\tasync getTaskSubmissionStatus() {\r\n\t\t\tthis.taskSubmissionStatus = await reviewService.getTaskSubmissionStatus(\r\n\t\t\t\tthis.termCode,\r\n\t\t\t\tthis.orgCode,\r\n\t\t\t\tthis.classCode,\r\n\t\t\t\tthis.username\r\n\t\t\t)\r\n\t\t\tconsole.log('Task Submission status', this.taskSubmissionStatus)\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Get all student submission statuses.\r\n\t\tasync getStudentSubmissionStatus() {\r\n\t\t\tconst status = await submissionService.getStudentSubmissionsStatus(\r\n\t\t\t\tthis.termCode,\r\n\t\t\t\tthis.orgCode,\r\n\t\t\t\tthis.classCode,\r\n\t\t\t\tthis.username\r\n\t\t\t)\r\n\t\t\tlet teamId = 0\r\n\t\t\tconst statusList = []\r\n\t\t\tawait this.asyncForEach(this.assignments, async(assignment) => {\r\n\t\t\t\tlet assignmentStatus\r\n\t\t\t\tlet noSubmission = true\r\n\t\t\t\tif (assignment.IsGroupAssignment) {\r\n\t\t\t\t\tconst thisTeamAssignment =\r\n await teamFormationService.getgroupProjectTeamAssignment(\r\n \tthis.termCode,\r\n \tthis.orgCode,\r\n \tthis.classCode,\r\n \tthis.username,\r\n \tassignment.Id\r\n )\r\n\t\t\t\t\tif (thisTeamAssignment) {\r\n\t\t\t\t\t\tteamId = thisTeamAssignment.TeamId\r\n\t\t\t\t\t\tconst groupUpload = await submissionService.getStudentUpload(\r\n\t\t\t\t\t\t\tthis.termCode,\r\n\t\t\t\t\t\t\tthis.orgCode,\r\n\t\t\t\t\t\t\tthis.classCode,\r\n\t\t\t\t\t\t\tteamId,\r\n\t\t\t\t\t\t\tassignment.Id\r\n\t\t\t\t\t\t)\r\n\t\t\t\t\t\tif (groupUpload && groupUpload.length > 0) {\r\n\t\t\t\t\t\t\tnoSubmission = false\r\n\r\n\t\t\t\t\t\t\t// check for feedback\r\n\t\t\t\t\t\t\tconst reviewers = await reviewService.getReviewers(\r\n\t\t\t\t\t\t\t\tthis.termCode,\r\n\t\t\t\t\t\t\t\tthis.orgCode,\r\n\t\t\t\t\t\t\t\tthis.classCode,\r\n\t\t\t\t\t\t\t\tteamId,\r\n\t\t\t\t\t\t\t\tassignment.Id,\r\n null\r\n\t\t\t\t\t\t\t)\r\n\t\t\t\t\t\t\tconst reviewersCount = reviewers ? reviewers.length : 0\r\n\t\t\t\t\t\t\t// add assignment status\r\n\t\t\t\t\t\t\tassignmentStatus = {\r\n\t\t\t\t\t\t\t\tAssignmentId: assignment.Id,\r\n\t\t\t\t\t\t\t\tStatus: reviewersCount > 0 ? 'Feedback Available' : 'Submitted',\r\n\t\t\t\t\t\t\t\tUploadedDate: groupUpload[0].LastActivityDate,\r\n\t\t\t\t\t\t\t\tDocId: groupUpload[0].DocId,\r\n\t\t\t\t\t\t\t\tReviewCount: reviewersCount,\r\n\t\t\t\t\t\t\t\tGroupId: teamId\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t} else {\r\n\t\t\t\t\tif (status && status.length > 0) {\r\n\t\t\t\t\t\tconst thisStatus = status.filter((el) => {\r\n\t\t\t\t\t\t\treturn el.AssignmentId == assignment.Id\r\n\t\t\t\t\t\t})\r\n\r\n\t\t\t\t\t\tif (thisStatus && thisStatus.length > 0) {\r\n\t\t\t\t\t\t\tnoSubmission = false\r\n\t\t\t\t\t\t\tassignmentStatus = {\r\n\t\t\t\t\t\t\t\tAssignmentId: assignment.Id,\r\n\t\t\t\t\t\t\t\tStatus: thisStatus[0].SubmissionStatus,\r\n\t\t\t\t\t\t\t\tUploadedDate: thisStatus[0].LastSubmission,\r\n\t\t\t\t\t\t\t\tDocId: thisStatus[0].DocId,\r\n\t\t\t\t\t\t\t\tReviewCount: thisStatus[0].ReviewCount,\r\n\t\t\t\t\t\t\t\tGroupId: teamId\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\tif (noSubmission) {\r\n\t\t\t\t\tassignmentStatus = {\r\n\t\t\t\t\t\tAssignmentId: assignment.Id,\r\n\t\t\t\t\t\tStatus: 'No Submission',\r\n\t\t\t\t\t\tUploadedDate: null,\r\n\t\t\t\t\t\tDocId: null,\r\n\t\t\t\t\t\tReviewCount: 0,\r\n\t\t\t\t\t\tGroupId: teamId\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\tstatusList.push(assignmentStatus)\r\n\t\t\t})\r\n\t\t\tthis.submissionStatus = statusList\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Get all Questions (and answers) for a Survey\r\n\t\tasync getSurveyQuestions(key) {\r\n\t\t\tthis.selectedAssignment = this.assignments[key]\r\n\t\t\tthis.selectedKey = key\r\n\t\t\tthis.surveyResponses = []\r\n\t\t\tthis.noSurvey = false\r\n\t\t\tconst allQuestions = await surveyService.getSurveyQuestions(\r\n\t\t\t\tthis.surveyId\r\n\t\t\t)\r\n\t\t\tif (allQuestions && allQuestions.length > 0) {\r\n\t\t\t\tconst thisQuestions = []\r\n\t\t\t\tconst thisResponses = []\r\n\t\t\t\tawait this.asyncForEach(allQuestions, async(question) => {\r\n\t\t\t\t\tconst answers = await surveyService.getSurveyAnswers(\r\n\t\t\t\t\t\tthis.surveyId,\r\n\t\t\t\t\t\tquestion.Id\r\n\t\t\t\t\t)\r\n\t\t\t\t\tconst thisQuestion = {\r\n\t\t\t\t\t\tId: question.Id,\r\n\t\t\t\t\t\tContent: question.Content,\r\n\t\t\t\t\t\tIsOptinal: question.IsOptional,\r\n\t\t\t\t\t\tType: question.Type,\r\n\t\t\t\t\t\tAnswers: answers\r\n\t\t\t\t\t}\r\n\t\t\t\t\tlet answerId = 0\r\n\t\t\t\t\tif (answers && answers.length > 0) {\r\n\t\t\t\t\t\tanswerId = answers[0].Id\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tconst response = {\r\n\t\t\t\t\t\tQuestionId: question.Id,\r\n\t\t\t\t\t\tAnswerId: question.Type == 'Open Ended' ? answerId : 0,\r\n\t\t\t\t\t\tResponseDetail: null,\r\n\t\t\t\t\t\tQuestionType: question.Type\r\n\t\t\t\t\t}\r\n\t\t\t\t\tthisQuestions.push(thisQuestion)\r\n\t\t\t\t\tthisResponses.push(response)\r\n\t\t\t\t})\r\n\t\t\t\tthis.questions = thisQuestions\r\n\t\t\t\tthis.surveyResponses = thisResponses\r\n\t\t\t}\r\n\t\t},\r\n \t\t// @vuese\r\n\t\t// Open an upoload dialog if when submitting\r\n\t\t// @arg The assignment id and its key in the collection.\r\n async openDialog(assignmentId, key) {\r\n \t// IX created new openSurveyDialog - and bypassed all SURVEYS as per Mark 7/9/2024\r\n\t\t\t\tthis.openUploadDialog(assignmentId, key)\r\n },\r\n\t\t// @vuese\r\n\t\t// Open a Survey dialog if any of the conditions below are met when submitting\r\n\t\t// @arg The assignment id and its key in the collection.\r\n\t\tasync openSurveyDialog(assignmentId, key) {\r\n\t\t\tthis.noSurvey = true\r\n\t\t\tthis.submitSurveyActive = false\r\n\t\t\t// IX promoted these here - they are used for all conditions?\r\n\t\t\tconst thisCourse = this.$store.state.enrollment.currentCourse\r\n\t\t\tconst courseNumber = thisCourse.CourseNumber\r\n\t\t\tconst thisAssignment = this.assignments[key]\r\n\t\t\t// If it is the last assignment display the Self Efficacy Survey for PTC courses only\r\n\t\t\tif (\r\n\t\t\t\tkey == this.assignments.length - 1 &&\r\n courseNumber != 1101 &&\r\n courseNumber != 1102\r\n ) {\r\n if (\r\n\t\t\t\t\tthis.termCode > 202305 // IX Added new questions and rearranged order\r\n\t\t\t\t) {\r\n\t\t\t\t\tthis.surveyId = 16\r\n } else {\r\n this.surveyId = 1\r\n }\r\n\t\t\t\tthis.surveyWidth = '940px'\r\n\t\t\t\tthis.surveyTitle = 'Self Efficacy Survey (Optional)'\r\n\t\t\t\tthis.repsonseType = 'last'\r\n\t\t\t\t// check survey response\r\n\t\t\t\tconst response = await surveyService.getUserSurveyResponse(\r\n\t\t\t\t\tthis.surveyId,\r\n\t\t\t\t\tthis.termCode,\r\n\t\t\t\t\tthis.classCode,\r\n\t\t\t\t\tthis.username,\r\n\t\t\t\t\tthis.repsonseType\r\n\t\t\t\t)\r\n\t\t\t\tif (!response) {\r\n\t\t\t\t\t// get survey questions\r\n\t\t\t\t\tthis.getSurveyQuestions(key)\r\n\t\t\t\t}\r\n\t\t\t\t// Display the Preferences for Course Delivery Survey in the Spring for 1101 and PTC AND\r\n\t\t\t\t// Assignment Name includes Literacy Narrative Self Review or Display Order = 0 for ENC 1101 courses\r\n\t\t\t\t// \telse if (this.termcode == '202008' && ((courseName.includes('ENC 1101') && (thisAssignment.AssignmentName.includes('Literacy Narrative Self Review') || thisAssignment.DisplayOrder == 0)) ||\r\n\t\t\t\t// \t\t// Assignment Name includes DRAFT--Information Design or Display Order = 3 for PTC courses\r\n\t\t\t\t// \t\t(!courseName.includes('ENC 1101') && (thisAssignment.AssignmentName.includes('DRAFT--Information Design') || thisAssignment.DisplayOrder == 3)))) {\r\n\t\t\t\t// \t\tthis.surveyId = 3\r\n\t\t\t\t// \t\tthis.surveyTitle = 'Preferences for Course Delivery in the Spring'\r\n\t\t\t\t// \t\tthis.surveyWidth = '650px'\r\n\t\t\t\t// \t\tthis.repsonseType = 'one'\r\n\t\t\t\t// \t\tconst response = await surveyService.getUserSurveyResponse(this.surveyId, this.termCode, this.classCode, this.username, this.repsonseType)\r\n\t\t\t\t// \t\tif (!response) {\r\n\t\t\t\t// \t\t\t// get survey questions\r\n\t\t\t\t//\t\t\tthis.getSurveyQuestions(key)\r\n\t\t\t\t// \t\t\t}\r\n\t\t\t\t// \t\t}\r\n\t\t\t\t// \t}\r\n\t\t\t\t// } else if (this.termcode == '202008' && (courseName == 'ENC 1101 SEC 009' || courseName == 'ENC 1101 SEC 053' || courseName == 'ENC 1101 SEC 056') &&\r\n\t\t\t\t// \t\tthisAssignment.AssignmentName.includes('Expository Overview Self Review')) {\r\n\t\t\t\t// \tthis.surveyId = 4\r\n\t\t\t\t// \tthis.surveyTitle = 'Student Contract Grading and Labor Perception Survey'\r\n\t\t\t\t// \tthis.surveyWidth = '940px'\r\n\t\t\t\t// \tthis.repsonseType = 'one'\r\n\t\t\t\t// \tconst response = await surveyService.getUserSurveyResponse(this.surveyId, this.termCode, this.classCode, this.username, this.repsonseType)\r\n\t\t\t\t// \tif (!response) {\r\n\t\t\t\t// \t\t// get survey questions\r\n\t\t\t\t// \t\tthis.selectedAssignment = this.assignments[key]\r\n\t\t\t\t// \t\tthis.selectedKey = key\r\n\t\t\t\t// \t\t// this.surveyDialogVisible = true\r\n\t\t\t\t// \t\tthis.surveyResponses = []\r\n\t\t\t\t// \t\tnoSurvey = false\r\n\t\t\t\t// \t\tconst allQuestions = await surveyService.getSurveyQuestions(this.surveyId)\r\n\t\t\t\t// \t\tif (allQuestions && allQuestions.length > 0) {\r\n\t\t\t\t// \t\t\tconst thisQuestions = []\r\n\t\t\t\t// \t\t\tconst thisResponses = []\r\n\t\t\t\t// \t\t\tthis.followupQuestion = allQuestions[0]\r\n\t\t\t\t// \t\t\t// Remove the follow up question from the list\r\n\t\t\t\t// \t\t\tallQuestions.shift()\r\n\t\t\t\t// \t\t\tawait this.asyncForEach(allQuestions, async question => {\r\n\t\t\t\t// \t\t\t\tif (question.Type != 'Heading') {\r\n\t\t\t\t// \t\t\t\t\tconst answers = await surveyService.getSurveyAnswers(this.surveyId, question.Id)\r\n\t\t\t\t// \t\t\t\t\tconst thisQuestion = {\r\n\t\t\t\t// \t\t\t\t\t\tId: question.Id,\r\n\t\t\t\t// \t\t\t\t\t\tContent: question.Content,\r\n\t\t\t\t// \t\t\t\t\t\tIsOptinal: question.IsOptional,\r\n\t\t\t\t// \t\t\t\t\t\tType: question.Type,\r\n\t\t\t\t// \t\t\t\t\t\tAnswers: answers\r\n\t\t\t\t// \t\t\t\t\t}\r\n\t\t\t\t// \t\t\t\t\tlet answerId = 0\r\n\t\t\t\t// \t\t\t\t\tif (answers && answers.length > 0) {\r\n\t\t\t\t// \t\t\t\t\t\tanswerId = answers[0].Id\r\n\t\t\t\t// \t\t\t\t\t}\r\n\r\n\t\t\t\t// \t\t\t\t\tconst response = {\r\n\t\t\t\t// \t\t\t\t\t\tQuestionId: question.Id,\r\n\t\t\t\t// \t\t\t\t\t\tAnswerId: question.Type == 'Open Ended' ? answerId : 0,\r\n\t\t\t\t// \t\t\t\t\t\tResponseDetail: null,\r\n\t\t\t\t// \t\t\t\t\t\tQuestionType: question.Type\r\n\t\t\t\t// \t\t\t\t\t}\r\n\t\t\t\t// \t\t\t\t\tthisQuestions.push(thisQuestion)\r\n\t\t\t\t// \t\t\t\t\tthisResponses.push(response)\r\n\t\t\t\t// \t\t\t\t} else {\r\n\t\t\t\t// \t\t\t\t\tconst thisQuestion = {\r\n\t\t\t\t// \t\t\t\t\t\tId: question.Id,\r\n\t\t\t\t// \t\t\t\t\t\tContent: question.Content,\r\n\t\t\t\t// \t\t\t\t\t\tIsOptinal: question.IsOptional,\r\n\t\t\t\t// \t\t\t\t\t\tType: question.Type\r\n\t\t\t\t// \t\t\t\t\t}\r\n\t\t\t\t// \t\t\t\t\tthisQuestions.push(thisQuestion)\r\n\t\t\t\t// \t\t\t\t\tthisResponses.push(null)\r\n\t\t\t\t// \t\t\t\t}\r\n\t\t\t\t// \t\t\t})\r\n\t\t\t\t// \t\t\tthis.questions = thisQuestions\r\n\t\t\t\t// \t\t\tthis.surveyResponses = thisResponses\r\n\t\t\t\t// \t\t}\r\n\t\t\t\t// \t}\r\n\t\t\t\t// } else\r\n\t\t\t} else if (\r\n\t\t\t\tcourseNumber == 2210 &&\r\n thisAssignment.AssignmentName.includes('FINAL--Document Series')\r\n\t\t\t) {\r\n\t\t\t\t// Display survey id = 5 if before 202208 and 11 if before 202308 and 15 if after for new scenarios\r\n\t\t\t\tif (\r\n\t\t\t\t\tthis.termCode == '202101' ||\r\n this.termCode == '202108' ||\r\n this.termCode == '202201' // We did not collect data for SUMMER 202205\r\n\t\t\t\t) {\r\n\t\t\t\t\tthis.surveyId = 5\r\n } else if (\r\n this.termCode == '202208' ||\r\n this.termCode == '202301' ||\r\n this.termCode == '202305'\r\n ) {\r\n\t\t\t\t\tthis.surveyId = 11\r\n } else {\r\n this.surveyId = 15\r\n }\r\n\t\t\t\tthis.surveyTitle = 'ENC 2210 Document Series Scenario Survey'\r\n\t\t\t\tthis.surveyWidth = '650px'\r\n\t\t\t\tthis.repsonseType = 'one'\r\n\t\t\t\tconst response = await surveyService.getUserSurveyResponse(\r\n\t\t\t\t\tthis.surveyId,\r\n\t\t\t\t\tthis.termCode,\r\n\t\t\t\t\tthis.classCode,\r\n\t\t\t\t\tthis.username,\r\n\t\t\t\t\tthis.repsonseType\r\n\t\t\t\t)\r\n\t\t\t\tif (!response) {\r\n\t\t\t\t\t// get survey questions\r\n\t\t\t\t\tthis.getSurveyQuestions(key)\r\n\t\t\t\t}\r\n\t\t\t} else if (\r\n\t\t\t\tcourseNumber == 3246 &&\r\n thisAssignment.AssignmentName.includes('FINAL--Document Series')\r\n\t\t\t) {\r\n\t\t\t\t// Display survey id = 6 if before 202208 and 12 if after for new scenarios\r\n\t\t\t\tif (\r\n\t\t\t\t\tthis.termCode == '202101' ||\r\n this.termCode == '202108' ||\r\n this.termCode == '202201'\r\n\t\t\t\t) {\r\n\t\t\t\t\tthis.surveyId = 6\r\n\t\t\t\t} else {\r\n\t\t\t\t\tthis.surveyId = 12\r\n\t\t\t\t}\r\n\t\t\t\tthis.surveyTitle = 'ENC 3246 Document Series Scenario Survey'\r\n\t\t\t\tthis.surveyWidth = '650px'\r\n\t\t\t\tthis.repsonseType = 'one'\r\n\t\t\t\tconst response = await surveyService.getUserSurveyResponse(\r\n\t\t\t\t\tthis.surveyId,\r\n\t\t\t\t\tthis.termCode,\r\n\t\t\t\t\tthis.classCode,\r\n\t\t\t\t\tthis.username,\r\n\t\t\t\t\tthis.repsonseType\r\n\t\t\t\t)\r\n\t\t\t\tif (!response) {\r\n\t\t\t\t\t// get survey questions\r\n\t\t\t\t\tthis.getSurveyQuestions(key)\r\n\t\t\t\t}\r\n\t\t\t} else if (\r\n\t\t\t\tcourseNumber == 3250 &&\r\n thisAssignment.AssignmentName.includes('FINAL--Document Series')\r\n\t\t\t) {\r\n\t\t\t\t// Display survey id = 7 if before 202208 and 13 if after for new scenarios\r\n\t\t\t\tif (\r\n\t\t\t\t\tthis.termCode == '202101' ||\r\n this.termCode == '202108' ||\r\n this.termCode == '202201'\r\n\t\t\t\t) {\r\n\t\t\t\t\tthis.surveyId = 7\r\n\t\t\t\t} else {\r\n\t\t\t\t\tthis.surveyId = 13\r\n\t\t\t\t}\r\n\t\t\t\tthis.surveyTitle = 'ENC 3250 Document Series Scenario Survey'\r\n\t\t\t\tthis.surveyWidth = '650px'\r\n\t\t\t\tthis.repsonseType = 'one'\r\n\t\t\t\tconst response = await surveyService.getUserSurveyResponse(\r\n\t\t\t\t\tthis.surveyId,\r\n\t\t\t\t\tthis.termCode,\r\n\t\t\t\t\tthis.classCode,\r\n\t\t\t\t\tthis.username,\r\n\t\t\t\t\tthis.repsonseType\r\n\t\t\t\t)\r\n\t\t\t\tif (!response) {\r\n\t\t\t\t\t// get survey questions\r\n\t\t\t\t\tthis.getSurveyQuestions(key)\r\n\t\t\t\t}\r\n\t\t\t} else if (\r\n\t\t\t\tcourseNumber == 2210 &&\r\n thisAssignment.AssignmentName.includes(\r\n \t'FINAL--Information Design--Visual Report'\r\n )\r\n\t\t\t) {\r\n\t\t\t\t// IX Added new Survey. We need a better way to track assignment name - as this can be changed.\r\n\t\t\t\t// Display survey id = 8 if before 202308 and 14 if after for new scenarios\r\n if (\r\n\t\t\t\t\tthis.termCode == '202208' ||\r\n this.termCode == '202301' // We did not collect data for SUMMER 202305 (no project in summer?)\r\n\t\t\t\t) {\r\n\t\t\t\t\tthis.surveyId = 8\r\n\t\t\t\t} else {\r\n\t\t\t\t\tthis.surveyId = 14\r\n\t\t\t\t}\r\n\t\t\t\tthis.surveyTitle = 'ENC 2210 Info Design Scenario Survey'\r\n\t\t\t\tthis.surveyWidth = '650px'\r\n\t\t\t\tthis.repsonseType = 'one'\r\n\t\t\t\tconst response = await surveyService.getUserSurveyResponse(\r\n\t\t\t\t\tthis.surveyId,\r\n\t\t\t\t\tthis.termCode,\r\n\t\t\t\t\tthis.classCode,\r\n\t\t\t\t\tthis.username,\r\n\t\t\t\t\tthis.repsonseType\r\n\t\t\t\t)\r\n\t\t\t\tif (!response) {\r\n\t\t\t\t\t// get survey questions\r\n\t\t\t\t\tthis.getSurveyQuestions(key)\r\n\t\t\t\t}\r\n\t\t\t} else if (\r\n\t\t\t\tcourseNumber == 3246 &&\r\n thisAssignment.AssignmentName.includes(\r\n \t'FINAL--Information Design--Visual Report'\r\n )\r\n\t\t\t) {\r\n\t\t\t\t// Display survey id = 9\r\n\t\t\t\tthis.surveyId = 9\r\n\t\t\t\tthis.surveyTitle = 'ENC 3246 Info Design Scenario Survey'\r\n\t\t\t\tthis.surveyWidth = '650px'\r\n\t\t\t\tthis.repsonseType = 'one'\r\n\t\t\t\tconst response = await surveyService.getUserSurveyResponse(\r\n\t\t\t\t\tthis.surveyId,\r\n\t\t\t\t\tthis.termCode,\r\n\t\t\t\t\tthis.classCode,\r\n\t\t\t\t\tthis.username,\r\n\t\t\t\t\tthis.repsonseType\r\n\t\t\t\t)\r\n\t\t\t\tif (!response) {\r\n\t\t\t\t\t// get survey questions\r\n\t\t\t\t\tthis.getSurveyQuestions(key)\r\n\t\t\t\t}\r\n\t\t\t} else if (\r\n\t\t\t\tcourseNumber == 3250 &&\r\n thisAssignment.AssignmentName.includes(\r\n \t'FINAL--Information Design--Visual Report'\r\n )\r\n\t\t\t) {\r\n\t\t\t\t// Display survey id = 10\r\n\t\t\t\tthis.surveyId = 10\r\n\t\t\t\tthis.surveyTitle = 'ENC 3250 Info Design Scenario Survey'\r\n\t\t\t\tthis.surveyWidth = '650px'\r\n\t\t\t\tthis.repsonseType = 'one'\r\n\t\t\t\tconst response = await surveyService.getUserSurveyResponse(\r\n\t\t\t\t\tthis.surveyId,\r\n\t\t\t\t\tthis.termCode,\r\n\t\t\t\t\tthis.classCode,\r\n\t\t\t\t\tthis.username,\r\n\t\t\t\t\tthis.repsonseType\r\n\t\t\t\t)\r\n\t\t\t\tif (!response) {\r\n\t\t\t\t\t// get survey questions\r\n\t\t\t\t\tthis.getSurveyQuestions(key)\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tif (this.noSurvey) {\r\n\t\t\t\tthis.openUploadDialog(assignmentId, key)\r\n\t\t\t} else {\r\n\t\t\t\tthis.surveyDialogVisible = true\r\n\t\t\t\tif (this.surveyId == 4) {\r\n\t\t\t\t\tconst surveyDialog = document\r\n\t\t\t\t\t\t.getElementById('survey-dialog')\r\n\t\t\t\t\t\t.getElementsByClassName('el-dialog')[0]\r\n\t\t\t\t\tsurveyDialog.style =\r\n 'margin-top: 10vh; width: 950px;height: 80vh;overflow: auto;'\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Submit a new survey response.\r\n\t\tasync submitSurvey() {\r\n\t\t\tif (this.surveyResponses.length > 0) {\r\n\t\t\t\t// console.log(this.surveyResponses)\r\n\t\t\t\tconst that = this\r\n\t\t\t\tawait this.asyncForEach(this.surveyResponses, async(response) => {\r\n\t\t\t\t\tif (response != null) {\r\n\t\t\t\t\t\tconst thisResponse = {\r\n\t\t\t\t\t\t\tUserId: that.username,\r\n\t\t\t\t\t\t\tTermCode: that.termCode,\r\n\t\t\t\t\t\t\tClassCode: that.classCode,\r\n\t\t\t\t\t\t\tSurveyId: that.surveyId,\r\n\t\t\t\t\t\t\tQuestionId: response.QuestionId,\r\n\t\t\t\t\t\t\tAnswerId: response.AnswerId,\r\n\t\t\t\t\t\t\tResponseDetail: response.ResponseDetail,\r\n\t\t\t\t\t\t\tResponseType: that.repsonseType,\r\n\t\t\t\t\t\t\tLastActivityDate: that.getDateStr(new Date())\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tawait surveyService.addNewResponse(thisResponse)\r\n\t\t\t\t\t}\r\n\t\t\t\t})\r\n\t\t\t}\r\n\t\t\tNotification.success({\r\n\t\t\t\tduration: 6000,\r\n\t\t\t\ttitle: 'Success',\r\n\t\t\t\tmessage: 'Your Survey Response was successful.'\r\n\t\t\t})\r\n\t\t\tthis.surveyAnswered = true\r\n\t\t\tthis.surveyDialogVisible = false\r\n\t\t\tthis.openUploadDialog(this.selectedAssignment.Id, this.selectedKey)\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Cancel a survey.\r\n\t\tasync cancelSurvey() {\r\n\t\t\t// Check if this survey is mandatory (5,6,7,8,9,10,11,12,13,14,15) - IX we should get this from the SURVEYS table...\r\n\t\t\tif (\r\n\t\t\t\tthis.surveyId != 5 &&\r\n this.surveyId != 6 &&\r\n this.surveyId != 7 &&\r\n this.surveyId != 8 &&\r\n this.surveyId != 9 &&\r\n this.surveyId != 10 &&\r\n this.surveyId != 11 &&\r\n this.surveyId != 12 &&\r\n this.surveyId != 13 &&\r\n this.surveyId != 14 &&\r\n this.surveyId != 15\r\n\t\t\t) {\r\n\t\t\t\tif (!this.surveyAnswered) {\r\n\t\t\t\t\tconst thisResponse = {\r\n\t\t\t\t\t\tUserId: this.username,\r\n\t\t\t\t\t\tTermCode: this.termCode,\r\n\t\t\t\t\t\tClassCode: this.classCode,\r\n\t\t\t\t\t\tSurveyId: this.surveyId,\r\n\t\t\t\t\t\tQuestionId: 0,\r\n\t\t\t\t\t\tAnswerId: 0,\r\n\t\t\t\t\t\tResponseDetail: 'No Response',\r\n\t\t\t\t\t\tResponseType: this.repsonseType,\r\n\t\t\t\t\t\tLastActivityDate: this.getDateStr(new Date())\r\n\t\t\t\t\t}\r\n\t\t\t\t\tawait surveyService.addNewResponse(thisResponse)\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.surveyDialogVisible = false\r\n\t\t\t\tthis.openUploadDialog(this.selectedAssignment.Id, this.selectedKey)\r\n\t\t\t} else {\r\n\t\t\t\tthis.surveyDialogVisible = false\r\n\t\t\t}\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Open project upload dialog\r\n\t\t// @arg The assignment id and its key in the collection.\r\n\t\tasync openUploadDialog(assignmentId, key) {\r\n\t\t\t// Check if the assignment is synced with a canvas assignment\r\n\t\t\tconst match = await canvasService.getCanvasAssignmentMatch(assignmentId)\r\n\t\t\tif (match != null) {\r\n\t\t\t\tthis.canvasAssignmentName = match.CanvasAssignmentName\r\n\t\t\t\tthis.htmlUrl = match.HtmlUrl\r\n\t\t\t\t// Check if there is a canvas token already\r\n\t\t\t\tconst canvasToken = await canvasService.getTokenByUserId(this.username)\r\n\t\t\t\tif (canvasToken != null) {\r\n\t\t\t\t\tthis.canvasToken = canvasToken.AccessToken\r\n\t\t\t\t\tthis.canvasUserId = canvasToken.CanvasId\r\n\t\t\t\t} else if (this.canvasCode == null) {\r\n\t\t\t\t\tthis.selectedAssignmentId = assignmentId\r\n\t\t\t\t\tthis.redirectDialogVisible = true\r\n\t\t\t\t\treturn\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif (this.$refs.upload) {\r\n\t\t\t\tthis.$refs.upload.clearFiles()\r\n\t\t\t}\r\n\t\t\tthis.selectedAssignment = this.assignments[key]\r\n this.selectedKey = key\r\n this.isSubmitting = false\r\n\t\t\tif (this.selectedAssignment.IsGroupAssignment) {\r\n\t\t\t\tconst thisTeamAssignment =\r\n await teamFormationService.getgroupProjectTeamAssignment(\r\n \tthis.termCode,\r\n \tthis.orgCode,\r\n \tthis.classCode,\r\n \tthis.username,\r\n \tassignmentId\r\n )\r\n\t\t\t\tif (thisTeamAssignment) {\r\n\t\t\t\t\tthis.uploadDialogVisible = true\r\n\t\t\t\t} else {\r\n\t\t\t\t\tNotification.info({\r\n\t\t\t\t\t\tduration: 6000,\r\n\t\t\t\t\t\ttitle: 'Info',\r\n\t\t\t\t\t\tmessage:\r\n 'Your instructor must include you in a Group before you can upload a submission for this Project.'\r\n\t\t\t\t\t})\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tthis.uploadDialogVisible = true\r\n\t\t\t}\r\n\t\t},\r\n\t\tcanvasLogin() {\r\n\t\t\tconst url = window.location.href\r\n\t\t\tconst arr = url.split('/')\r\n\t\t\tconst protocol = arr[0]\r\n\t\t\t// const protocol = process.env.NODE_ENV === 'production' ? 'https:' :'http:';\r\n\t\t\tconst host =\r\n process.env.NODE_ENV === 'production'\r\n \t? window.location.host\r\n \t: 'localhost:8080'\r\n\r\n\t\t\tconst canvasKey =\r\n process.env.NODE_ENV === 'production'\r\n \t? '130000000000679'\r\n \t: '130000000000815'\r\n\t\t\tconst redirectUri = `${protocol}//${host}`\r\n\t\t\twindow.location.href =\r\n 'https://usflearn.instructure.com/login/oauth2/auth?client_id=' +\r\n canvasKey +\r\n '&response_type=code&redirect_uri=' +\r\n redirectUri +\r\n '/course/' +\r\n this.classCode +\r\n '/projects?assignmentId=' +\r\n this.selectedAssignmentId\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Submit a paper.\r\n\t\tasync submitPaper() {\r\n if (this.file && this.selectedAssignment) {\r\n this.isSubmitting = true\r\n\t\t\t\tconst formData = new FormData()\r\n\t\t\t\tformData.append('data', this.file)\r\n\t\t\t\tformData.append('fileName', this.file.name)\r\n\t\t\t\tformData.append('studentId', this.username)\r\n\t\t\t\tformData.append('assignmentId', this.selectedAssignment.Id)\r\n\r\n\t\t\t\t// Check if this is a Canvas assignment\r\n\t\t\t\tif (this.canvasCode != null || this.canvasToken != null) {\r\n\t\t\t\t\tconst docId = await submissionService.submitPaper(formData)\r\n\t\t\t\t\tif (docId && docId > 0) {\r\n\t\t\t\t\t\tif (this.selectedAssignment.IsGroupAssignment) {\r\n\t\t\t\t\t\t\t// get team members\r\n\t\t\t\t\t\t\tconst thisTeamAssignment =\r\n await teamFormationService.getgroupProjectTeamAssignment(\r\n \tthis.termCode,\r\n \tthis.orgCode,\r\n \tthis.classCode,\r\n \tthis.username,\r\n \tthis.selectedAssignment.Id\r\n )\r\n\t\t\t\t\t\t\tif (thisTeamAssignment) {\r\n\t\t\t\t\t\t\t\tconst teamId = thisTeamAssignment.TeamId\r\n\t\t\t\t\t\t\t\tawait this.addNewSubmissionRecord(this.username, docId, teamId)\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t// upload for individual assignment\r\n\t\t\t\t\t\t\tawait this.addNewSubmissionRecord(this.username, docId)\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\tconst match = await canvasService.getCanvasAssignmentMatch(\r\n\t\t\t\t\t\tthis.selectedAssignment.Id\r\n\t\t\t\t\t)\r\n\t\t\t\t\tif (match != null) {\r\n\t\t\t\t\t\tformData.append('canvasCode', this.canvasCode)\r\n\t\t\t\t\t\tformData.append('canvasToken', this.canvasToken)\r\n\t\t\t\t\t\tformData.append('canvasUserId', this.canvasUserId)\r\n\t\t\t\t\t\tformData.append('canvasAssignmentId', match.CanvasAssignmentId)\r\n\t\t\t\t\t\tformData.append('canvasCourseId', match.CanvasCourseId)\r\n\t\t\t\t\t\tconst responseCode = await submissionService.submitToCanvas(\r\n\t\t\t\t\t\t\tformData\r\n\t\t\t\t\t\t)\r\n\r\n\t\t\t\t\t\tif (responseCode == 0) {\r\n\t\t\t\t\t\t\tNotification.error({\r\n\t\t\t\t\t\t\t\tduration: 6000,\r\n\t\t\t\t\t\t\t\ttitle: 'Error',\r\n\t\t\t\t\t\t\t\tmessage:\r\n 'Your paper was not submitted to Canvas because you do not have access to this assignment in Canvas.'\r\n\t\t\t\t\t\t\t})\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\tNotification.success({\r\n\t\t\t\t\t\t\t\tduration: 6000,\r\n\t\t\t\t\t\t\t\ttitle: 'Success',\r\n\t\t\t\t\t\t\t\tmessage: 'Your paper was successfully submitted to Canvas.'\r\n\t\t\t\t\t\t\t})\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t} else {\r\n\t\t\t\t\tconst docId = await submissionService.submitPaper(formData)\r\n\t\t\t\t\tif (docId && docId > 0) {\r\n\t\t\t\t\t\tif (this.selectedAssignment.IsGroupAssignment) {\r\n\t\t\t\t\t\t\t// get team members\r\n\t\t\t\t\t\t\tconst thisTeamAssignment =\r\n await teamFormationService.getgroupProjectTeamAssignment(\r\n \tthis.termCode,\r\n \tthis.orgCode,\r\n \tthis.classCode,\r\n \tthis.username,\r\n \tthis.selectedAssignment.Id\r\n )\r\n\t\t\t\t\t\t\tif (thisTeamAssignment) {\r\n\t\t\t\t\t\t\t\tconst teamId = thisTeamAssignment.TeamId\r\n\t\t\t\t\t\t\t\tthis.addNewSubmissionRecord(this.username, docId, teamId)\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t// upload for individual assignment\r\n\t\t\t\t\t\t\tthis.addNewSubmissionRecord(this.username, docId)\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tthis.uploadDialogVisible = false\r\n\t\t\tthis.canvasCode = null\r\n\t\t},\r\n\t\tstdTimezoneOffset(date) {\r\n\t\t\tvar jan = new Date(date.getFullYear(), 0, 1)\r\n\t\t\tvar jul = new Date(date.getFullYear(), 6, 1)\r\n\t\t\treturn Math.max(jan.getTimezoneOffset(), jul.getTimezoneOffset())\r\n\t\t},\r\n\t\tisDstObserved(date) {\r\n\t\t\treturn date.getTimezoneOffset() < this.stdTimezoneOffset(date)\r\n\t\t},\r\n\t\tconvertToEST(clientDate) {\r\n\t\t\tlet offset = -5.0 // EST standard\r\n\t\t\t// Check for daylight saving\r\n\t\t\tif (this.isDstObserved(clientDate)) {\r\n\t\t\t\toffset = -4.0\r\n\t\t\t}\r\n\t\t\tconst utc = clientDate.getTime() + clientDate.getTimezoneOffset() * 60000\r\n\t\t\tconst serverDate = new Date(utc + 3600000 * offset)\r\n\t\t\t// return serverDate.toLocaleString()\r\n\t\t\treturn this.getDateStr(serverDate)\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Add a new submission record.\r\n\t\t// @arg The student id, the document id, and team id if it is a group project.\r\n\t\tasync addNewSubmissionRecord(studentId, docId, teamId) {\r\n\t\t\tconst newStudentUpload = {\r\n\t\t\t\tDocId: docId,\r\n\t\t\t\tOrgCode: this.orgCode,\r\n\t\t\t\tTermCode: this.termCode,\r\n\t\t\t\tClassCode: this.classCode,\r\n\t\t\t\tAssignmentId: this.selectedAssignment.Id,\r\n\t\t\t\tStudentUserId: teamId || studentId,\r\n\t\t\t\tUploadType: 'document',\r\n\t\t\t\tLastActivityDate: this.convertToEST(new Date())\r\n\t\t\t}\r\n\r\n\t\t\tconst submission = await submissionService.recordSubmission(\r\n\t\t\t\tnewStudentUpload\r\n\t\t\t)\r\n\t\t\tif (submission != null) {\r\n\t\t\t\tif (this.submissionStatus.length > 0) {\r\n\t\t\t\t\tif (\r\n\t\t\t\t\t\tthis.submissionStatus[this.selectedKey].Status !=\r\n 'Feedback Available'\r\n\t\t\t\t\t) {\r\n\t\t\t\t\t\tthis.submissionStatus[this.selectedKey].Status = 'Submitted'\r\n\t\t\t\t\t}\r\n\t\t\t\t\tthis.submissionStatus[this.selectedKey].UploadedDate =\r\n submission.LastActivityDate\r\n\t\t\t\t\tthis.submissionStatus[this.selectedKey].DocId = submission.DocId\r\n\t\t\t\t} else {\r\n\t\t\t\t\tconst assignmentStatus = {\r\n\t\t\t\t\t\tAssignmentId: this.selectedAssignment.Id,\r\n\t\t\t\t\t\tStatus: 'Submitted',\r\n\t\t\t\t\t\tUploadedDate: submission.LastActivityDate,\r\n\t\t\t\t\t\tDocId: submission.DocId,\r\n\t\t\t\t\t\tReviewCount: 0\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tthis.submissionStatus.push(assignmentStatus)\r\n\t\t\t\t}\r\n\t\t\t\tif (this.canvasCode != null || this.canvasToken != null) {\r\n\t\t\t\t\tNotification.success({\r\n\t\t\t\t\t\tduration: 6000,\r\n\t\t\t\t\t\ttitle: 'Success',\r\n\t\t\t\t\t\tmessage: 'Your paper was submitted successfully to USF Writes.'\r\n\t\t\t\t\t})\r\n\t\t\t\t} else {\r\n\t\t\t\t\tNotification.success({\r\n\t\t\t\t\t\tduration: 6000,\r\n\t\t\t\t\t\ttitle: 'Success',\r\n\t\t\t\t\t\tmessage: 'Your paper was submitted successfully.'\r\n\t\t\t\t\t})\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t},\r\n\t\t// openNewAssignmentDialog() {\r\n\t\t// \tif (this.newDescriptionEditor != null) {\r\n\t\t// \t\tthis.newDescriptionEditor.destroy()\r\n\t\t// \t}\r\n\t\t// \tthis.newAssignmentDialogVisible = true\r\n\t\t// \tthis.selectedAssignment = null\r\n\t\t// \tthis.selectedKey = null\r\n\t\t// \tthis.setUpNewEditor()\r\n\t\t// },\r\n\t\t// @vuese\r\n\t\t// Open assignment dialog.\r\n\t\t// @arg The assignment id, and its key in the collection.\r\n\t\t// openEditAssignmentDialog(assignmentId, key) {\r\n\t\t// \tif (this.editDescriptionEditor != null) {\r\n\t\t// \t\tthis.editDescriptionEditor.destroy()\r\n\t\t// \t}\r\n\t\t// \tthis.editAssignmentDialogVisible = true\r\n\t\t// \tif (assignmentId != undefined && key != undefined) {\r\n\t\t// \t\tthis.selectedAssignment = this.assignments[key]\r\n\t\t// \t\tthis.selectedKey = key\r\n\t\t// \t}\r\n\t\t// \tthis.setUpEditEditor()\r\n\t\t// },\r\n\t\t// @vuese\r\n\t\t// Setup project description editors.\r\n\t\t// setUpNewEditor() {\r\n\t\t// \tconst that = this\r\n\t\t// \tthis.newDescriptionEditor = new Editor({\r\n\t\t// \t\textensions: [\r\n\t\t// \t\t\tnew Blockquote(),\r\n\t\t// \t\t\tnew CodeBlock(),\r\n\t\t// \t\t\tnew HardBreak(),\r\n\t\t// \t\t\tnew Heading({ levels: [1, 2, 3] }),\r\n\t\t// \t\t\tnew BulletList(),\r\n\t\t// \t\t\tnew OrderedList(),\r\n\t\t// \t\t\tnew Image(),\r\n\t\t// \t\t\tnew ListItem(),\r\n\t\t// \t\t\tnew TodoItem(),\r\n\t\t// \t\t\tnew TodoList(),\r\n\t\t// \t\t\tnew Bold(),\r\n\t\t// \t\t\tnew Code(),\r\n\t\t// \t\t\tnew Italic(),\r\n\t\t// \t\t\tnew Link(),\r\n\t\t// \t\t\tnew Strike(),\r\n\t\t// \t\t\tnew Underline(),\r\n\t\t// \t\t\tnew History(),\r\n\t\t// \t\t\tnew Table({\r\n\t\t// \t\t\t\tresizable: true\r\n\t\t// \t\t\t}),\r\n\t\t// \t\t\tnew TableHeader(),\r\n\t\t// \t\t\tnew TableCell(),\r\n\t\t// \t\t\tnew TableRow()\r\n\t\t// \t\t],\r\n\t\t// \t\tcontent: '',\r\n\t\t// \t\tonUpdate: (state) => {\r\n\t\t// \t\t\tthat.newAssignmentForm.Description = state.getHTML()\r\n\t\t// \t\t}\r\n\t\t// \t})\r\n\t\t// },\r\n\t\t// setUpEditEditor() {\r\n\t\t// \tconst that = this\r\n\t\t// \tthis.editDescriptionEditor = new Editor({\r\n\t\t// \t\textensions: [\r\n\t\t// \t\t\tnew Blockquote(),\r\n\t\t// \t\t\tnew CodeBlock(),\r\n\t\t// \t\t\tnew HardBreak(),\r\n\t\t// \t\t\tnew Heading({ levels: [1, 2, 3] }),\r\n\t\t// \t\t\tnew BulletList(),\r\n\t\t// \t\t\tnew OrderedList(),\r\n\t\t// \t\t\tnew Image(),\r\n\t\t// \t\t\tnew ListItem(),\r\n\t\t// \t\t\tnew TodoItem(),\r\n\t\t// \t\t\tnew TodoList(),\r\n\t\t// \t\t\tnew Bold(),\r\n\t\t// \t\t\tnew Code(),\r\n\t\t// \t\t\tnew Italic(),\r\n\t\t// \t\t\tnew Link(),\r\n\t\t// \t\t\tnew Strike(),\r\n\t\t// \t\t\tnew Underline(),\r\n\t\t// \t\t\tnew History(),\r\n\t\t// \t\t\tnew Table({\r\n\t\t// \t\t\t\tresizable: true\r\n\t\t// \t\t\t}),\r\n\t\t// \t\t\tnew TableHeader(),\r\n\t\t// \t\t\tnew TableCell(),\r\n\t\t// \t\t\tnew TableRow()\r\n\t\t// \t\t],\r\n\t\t// \t\tcontent: that.selectedAssignment.Description,\r\n\t\t// \t\tonUpdate: (state) => {\r\n\t\t// \t\t\tthat.selectedAssignment.Description = state.getHTML()\r\n\t\t// \t\t}\r\n\t\t// \t})\r\n\t\t// },\r\n\t\t// closeAssignmentDialog() {\r\n\t\t// \tif (this.$refs['newAssignmentForm']) { this.$refs['newAssignmentForm'].resetFields() }\r\n\t\t// },\r\n\t\t// // @vuese\r\n\t\t// // Submit a project.\r\n\t\t// async addNewAssignment() {\r\n\t\t// \tconst that = this\r\n\t\t// \tthis.$refs['newAssignmentForm'].validate((valid) => {\r\n\t\t// \t\tif (valid) {\r\n\t\t// \t\t\tconst newAssignment = {\r\n\t\t// \t\t\t\tOrgCode: that.orgCode,\r\n\t\t// \t\t\t\tAssignmentName: that.newAssignmentForm.AssignmentName,\r\n\t\t// \t\t\t\tDueDate: that.getDateStr(that.newAssignmentForm.DueDate),\r\n\t\t// \t\t\t\tDescription: that.newAssignmentForm.Description,\r\n\t\t// \t\t\t\tIsActive: 'A',\r\n\t\t// \t\t\t\tIsMandatory: false,\r\n\t\t// \t\t\t\tIsGroupAssignment: that.newAssignmentForm.IsGroupAssignment,\r\n\t\t// \t\t\t\tDisplayOrder: that.assignments ? that.assignments.length : 0,\r\n\t\t// \t\t\t\tTemplateId: that.$store.state.enrollment.currentCourse.ProjectTemplate,\r\n\t\t// \t\t\t\tRubricId: that.newAssignmentForm.RubricId,\r\n\t\t// \t\t\t\tGenreId: 22,\r\n\t\t// \t\t\t\tUploadType: 0,\r\n\t\t// \t\t\t\tUsePeerReview: that.newAssignmentForm.UsePeerReview,\r\n\t\t// \t\t\t\tUseRevisionPlan: false,\r\n\t\t// \t\t\t\tUsePortfolio: false,\r\n\t\t// \t\t\t\tUseNormalization: false,\r\n\t\t// \t\t\t\tUseReviewerComment: false,\r\n\t\t// \t\t\t\tLastActivityDate: that.getlastActivityDate(),\r\n\t\t// \t\t\t\tUseSelfAssessment: that.newAssignmentForm.UseSelfAssessment,\r\n\t\t// \t\t\t\tSelfReviewDueDate: that.newAssignmentForm.SelfReviewDueDate != undefined ? that.getDateStr(that.newAssignmentForm.SelfReviewDueDate) : that.getlastActivityDate(),\r\n\t\t// \t\t\t\tUseAppraisal: that.newAssignmentForm.UseAppraisal,\r\n\t\t// \t\t\t\tAppraisalRubricId: that.newAssignmentForm.AppraisalRubricId,\r\n\t\t// \t\t\t\tAppraisalDueDate: that.newAssignmentForm.AppraisalDueDate,\r\n\t\t// \t\t\t\tPeerReviewDueDate: that.newAssignmentForm.PeerReviewDueDate\r\n\t\t// \t\t\t}\r\n\t\t// \t\t\tassignmentService.addNewAssignment(newAssignment)\r\n\t\t// \t\t\t\t.then(assignment => {\r\n\t\t// \t\t\t\t\tif (assignment) {\r\n\t\t// \t\t\t\t\t\tthis.assignments.push(assignment)\r\n\t\t// \t\t\t\t\t\tthis.assignments = this.assignments\r\n\t\t// \t\t\t\t\t\tthat.newAssignmentForm = {\r\n\t\t// \t\t\t\t\t\t\tOrgCode: '',\r\n\t\t// \t\t\t\t\t\t\tAssignmentName: '',\r\n\t\t// \t\t\t\t\t\t\tDueDate: '',\r\n\t\t// \t\t\t\t\t\t\tDescription: '',\r\n\t\t// \t\t\t\t\t\t\tIsActive: 'A',\r\n\t\t// \t\t\t\t\t\t\tIsMandatory: false,\r\n\t\t// \t\t\t\t\t\t\tIsGroupAssignment: false,\r\n\t\t// \t\t\t\t\t\t\tDisplayOrder: 0,\r\n\t\t// \t\t\t\t\t\t\tTemplateId: 0,\r\n\t\t// \t\t\t\t\t\t\tRubricId: null,\r\n\t\t// \t\t\t\t\t\t\tGenreId: 0,\r\n\t\t// \t\t\t\t\t\t\tUploadType: 0,\r\n\t\t// \t\t\t\t\t\t\tUsePeerReview: false,\r\n\t\t// \t\t\t\t\t\t\tUseRevisionPlan: false,\r\n\t\t// \t\t\t\t\t\t\tUsePortfolio: false,\r\n\t\t// \t\t\t\t\t\t\tUseNormalization: false,\r\n\t\t// \t\t\t\t\t\t\tUseReviewerComment: false,\r\n\t\t// \t\t\t\t\t\t\tLastActivityDate: '',\r\n\t\t// \t\t\t\t\t\t\tUseSelfAssessment: false,\r\n\t\t// \t\t\t\t\t\t\tUseAppraisal: false,\r\n\t\t// \t\t\t\t\t\t\tAppraisalRubricId: null,\r\n\t\t// \t\t\t\t\t\t\tAppraisalDueDate: null,\r\n\t\t// \t\t\t\t\t\t\tPeerReviewDueDate: null\r\n\t\t// \t\t\t\t\t\t}\r\n\t\t// \t\t\t\t\t\tNotification.success({\r\n\t\t// \t\t\t\t\t\t\tduration: 6000,\r\n\t\t// \t\t\t\t\t\t\ttitle: 'Success',\r\n\t\t// \t\t\t\t\t\t\tmessage: 'The new project were added successfully.'\r\n\t\t// \t\t\t\t\t\t})\r\n\t\t// \t\t\t\t\t\tthis.newAssignmentDialogVisible = false\r\n\t\t// \t\t\t\t\t} else {\r\n\t\t// \t\t\t\t\t\tNotification.error({\r\n\t\t// \t\t\t\t\t\t\tduration: 6000,\r\n\t\t// \t\t\t\t\t\t\ttitle: 'Error',\r\n\t\t// \t\t\t\t\t\t\tmessage: 'The new project were not added successfully due to server error.'\r\n\t\t// \t\t\t\t\t\t})\r\n\t\t// \t\t\t\t\t}\r\n\t\t// \t\t\t\t}).catch(error => {\r\n\t\t// \t\t\t\t\tconsole.log(error)\r\n\t\t// \t\t\t\t\tNotification.error({\r\n\t\t// \t\t\t\t\t\tduration: 6000,\r\n\t\t// \t\t\t\t\t\ttitle: 'Error',\r\n\t\t// \t\t\t\t\t\tmessage: 'The new project were not added successfully due to server error.'\r\n\t\t// \t\t\t\t\t})\r\n\t\t// \t\t\t\t})\r\n\t\t// \t\t} else {\r\n\t\t// \t\t\tNotification.error({\r\n\t\t// \t\t\t\tduration: 6000,\r\n\t\t// \t\t\t\ttitle: 'Error',\r\n\t\t// \t\t\t\tmessage: 'The new project was not created due to validation error.'\r\n\t\t// \t\t\t})\r\n\t\t// \t\t\treturn false\r\n\t\t// \t\t}\r\n\t\t// \t})\r\n\t\t// },\r\n\t\t// async editAssignment() {\r\n\t\t// \tconst that = this\r\n\t\t// \tthis.$refs['assignmentForm'].validate((valid) => {\r\n\t\t// \t\tif (valid) {\r\n\t\t// \t\t\tif (that.selectedAssignment != null) {\r\n\t\t// \t\t\t\tthat.selectedAssignment.DueDate = that.getDateStr(that.selectedAssignment.DueDate)\r\n\t\t// \t\t\t\tif (that.selectedAssignment.SelfReviewDueDate) {\r\n\t\t// \t\t\t\t\tthat.selectedAssignment.SelfReviewDueDate = that.getDateStr(that.selectedAssignment.SelfReviewDueDate)\r\n\t\t// \t\t\t\t}\r\n\t\t// \t\t\t\tif (that.selectedAssignment.AppraisalDueDate) {\r\n\t\t// \t\t\t\t\tthat.selectedAssignment.AppraisalDueDate = that.getDateStr(that.selectedAssignment.AppraisalDueDate)\r\n\t\t// \t\t\t\t}\r\n\t\t// \t\t\t\tif (that.selectedAssignment.PeerReviewDueDate) {\r\n\t\t// \t\t\t\t\tthat.selectedAssignment.PeerReviewDueDate = that.getDateStr(that.selectedAssignment.PeerReviewDueDate)\r\n\t\t// \t\t\t\t}\r\n\t\t// \t\t\t\tthat.selectedAssignment.LastActivityDate = that.getlastActivityDate()\r\n\t\t// \t\t\t\tassignmentService.updateAssignment(that.selectedAssignment)\r\n\t\t// \t\t\t\t\t.then(assignment => {\r\n\t\t// \t\t\t\t\t\tthat.assignments[that.selectedKey] = that.selectedAssignment\r\n\t\t// \t\t\t\t\t\tthat.selectedAssignment = null\r\n\t\t// \t\t\t\t\t\tNotification.success({\r\n\t\t// \t\t\t\t\t\t\tduration: 6000,\r\n\t\t// \t\t\t\t\t\t\ttitle: 'Success',\r\n\t\t// \t\t\t\t\t\t\tmessage: 'The project were updated successfully.'\r\n\t\t// \t\t\t\t\t\t})\r\n\t\t// \t\t\t\t\t\tthis.editAssignmentDialogVisible = false\r\n\t\t// \t\t\t\t\t}).catch(error => {\r\n\t\t// \t\t\t\t\t\tconsole.log(error)\r\n\t\t// \t\t\t\t\t\tNotification.error({\r\n\t\t// \t\t\t\t\t\t\tduration: 6000,\r\n\t\t// \t\t\t\t\t\t\ttitle: 'Error',\r\n\t\t// \t\t\t\t\t\t\tmessage: 'The project were not updated successfully.'\r\n\t\t// \t\t\t\t\t\t})\r\n\t\t// \t\t\t\t\t})\r\n\t\t// \t\t\t}\r\n\t\t// \t\t} else {\r\n\t\t// \t\t\tNotification.error({\r\n\t\t// \t\t\t\tduration: 6000,\r\n\t\t// \t\t\t\ttitle: 'Error',\r\n\t\t// \t\t\t\tmessage: 'The new project was not created due to validation error.'\r\n\t\t// \t\t\t})\r\n\t\t// \t\t\treturn false\r\n\t\t// \t\t}\r\n\t\t// \t})\r\n\t\t// },\r\n\t\t// @vuese\r\n\t\t// Remove a project.\r\n\t\t// @arg The project id and its key in the collection.\r\n\t\t// removeAssignment(assignmentId, key) {\r\n\t\t// \tthis.$confirm('This will permanently delete the project. Do you want to continue?', 'Warning', {\r\n\t\t// \t\tconfirmButtonText: 'OK',\r\n\t\t// \t\tcancelButtonText: 'Cancel',\r\n\t\t// \t\ttype: 'warning'\r\n\t\t// \t}).then(() => {\r\n\t\t// \t\tassignmentService.deleteAssignment(assignmentId)\r\n\t\t// \t\t\t.then(assignment => {\r\n\t\t// \t\t\t\tthis.assignments.splice(key, 1)\r\n\t\t// \t\t\t\tthis.assignments = this.assignments\r\n\t\t// \t\t\t\t// this.$store.commit('assignment/SET_ASSIGNMENTS', this.assignments)\r\n\t\t// \t\t\t\tNotification.success({\r\n\t\t// \t\t\t\t\tduration: 6000,\r\n\t\t// \t\t\t\t\ttitle: 'Success',\r\n\t\t// \t\t\t\t\tmessage: 'The project were deleted successfully.'\r\n\t\t// \t\t\t\t})\r\n\t\t// \t\t\t}).catch(error => {\r\n\t\t// \t\t\t\tconsole.log(error)\r\n\t\t// \t\t\t\tNotification.error({\r\n\t\t// \t\t\t\t\tduration: 6000,\r\n\t\t// \t\t\t\t\ttitle: 'Error',\r\n\t\t// \t\t\t\t\tmessage: 'The project were not deleted successfully.'\r\n\t\t// \t\t\t\t})\r\n\t\t// \t\t\t})\r\n\t\t// \t}).catch(() => {\r\n\t\t// \t\tthis.$message({\r\n\t\t// \t\t\ttype: 'info',\r\n\t\t// \t\t\tmessage: 'Delete canceled'\r\n\t\t// \t\t})\r\n\t\t// \t})\r\n\t\t// },\r\n\t\thandleCommand(command, assignmentId, key) {\r\n\t\t\tif (command == 'add') {\r\n\t\t\t\tthis.openNewTaskDialog(assignmentId, key)\r\n\t\t\t} else if (command == 'edit') {\r\n\t\t\t\tthis.openEditAssignmentDialog(assignmentId, key)\r\n\t\t\t} else if (command == 'delete') {\r\n\t\t\t\tthis.removeAssignment(assignmentId, key)\r\n\t\t\t} else if (command == 'sync') {\r\n\t\t\t\tthis.syncWithCanvas(assignmentId)\r\n\t\t\t}\r\n\t\t},\r\n\t\tasync syncWithCanvas(assignmentId) {\r\n\t\t\t// Check if there is a canvas token for this user\r\n\t\t\tconst canvasToken = await canvasService.getTokenByUserId(this.username)\r\n\t\t\tif (canvasToken != null) {\r\n\t\t\t\t// get and display canvas resources\r\n\t\t\t\tthis.getCanvasResourses(canvasToken.AccessToken, null, assignmentId)\r\n\t\t\t} else {\r\n\t\t\t\tconst url = window.location.href\r\n\t\t\t\tconst arr = url.split('/')\r\n\t\t\t\tconst protocol = arr[0]\r\n\t\t\t\tconst host =\r\n process.env.NODE_ENV === 'production'\r\n \t? window.location.host\r\n \t: 'localhost:8080'\r\n\t\t\t\tconst canvasKey =\r\n process.env.NODE_ENV === 'production'\r\n \t? '130000000000679'\r\n \t: '130000000000815'\r\n\t\t\t\tconst redirectUri = `${protocol}//${host}`\r\n\t\t\t\twindow.location.href =\r\n 'https://usflearn.instructure.com/login/oauth2/auth?client_id=' +\r\n canvasKey +\r\n '&response_type=code&redirect_uri=' +\r\n redirectUri +\r\n '/course/' +\r\n this.classCode +\r\n '/projects?assignmentId=' +\r\n assignmentId\r\n\t\t\t}\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Open project detail dialog.\r\n\t\t// @arg The project id and its key in the collection.\r\n\t\t// openAssignmentDetailDialog(assignmentId, key) {\r\n\t\t// \tif (this.descriptionDetailEditor != null) {\r\n\t\t// \t\tthis.descriptionDetailEditor.destroy()\r\n\t\t// \t}\r\n\r\n\t\t// \tthis.assignmentDetailDialogVisible = true\r\n\t\t// \tif (assignmentId != undefined && key != undefined) {\r\n\t\t// \t\tthis.selectedAssignment = this.assignments[key]\r\n\t\t// \t\tthis.selectedKey = key\r\n\t\t// \t} else {\r\n\t\t// \t\tthis.selectedAssignment = null\r\n\t\t// \t\tthis.selectedKey = null\r\n\t\t// \t}\r\n\t\t// \tthis.setUpDetailEditor()\r\n\t\t// },\r\n\t\t// setUpDetailEditor() {\r\n\t\t// \tconst that = this\r\n\t\t// \tthis.descriptionDetailEditor = new Editor({\r\n\t\t// \t\teditable: false,\r\n\t\t// \t\textensions: [\r\n\t\t// \t\t\tnew Blockquote(),\r\n\t\t// \t\t\tnew CodeBlock(),\r\n\t\t// \t\t\tnew HardBreak(),\r\n\t\t// \t\t\tnew Heading({ levels: [1, 2, 3] }),\r\n\t\t// \t\t\tnew BulletList(),\r\n\t\t// \t\t\tnew OrderedList(),\r\n\t\t// \t\t\tnew Image(),\r\n\t\t// \t\t\tnew ListItem(),\r\n\t\t// \t\t\tnew TodoItem(),\r\n\t\t// \t\t\tnew TodoList(),\r\n\t\t// \t\t\tnew Bold(),\r\n\t\t// \t\t\tnew Code(),\r\n\t\t// \t\t\tnew Italic(),\r\n\t\t// \t\t\tnew Link(),\r\n\t\t// \t\t\tnew Strike(),\r\n\t\t// \t\t\tnew Underline(),\r\n\t\t// \t\t\tnew History(),\r\n\t\t// \t\t\tnew Table({\r\n\t\t// \t\t\t\tresizable: true\r\n\t\t// \t\t\t}),\r\n\t\t// \t\t\tnew TableHeader(),\r\n\t\t// \t\t\tnew TableCell(),\r\n\t\t// \t\t\tnew TableRow()\r\n\t\t// \t\t],\r\n\t\t// \t\tcontent: that.selectedAssignment != null ? that.selectedAssignment.Description : '',\r\n\t\t// \t\tonUpdate: (state) => {\r\n\t\t// \t\t\tthat.selectedAssignment.Description = state.getHTML()\r\n\t\t// \t\t}\r\n\t\t// \t})\r\n\t\t// },\r\n\t\tgetDateStr(date) {\r\n\t\t\tconst thisDate = this.$moment(date)._d\r\n\t\t\treturn (\r\n\t\t\t\tthisDate.getFullYear() +\r\n '-' +\r\n (thisDate.getMonth() + 1) +\r\n '-' +\r\n thisDate.getDate() +\r\n ' ' +\r\n thisDate.getHours() +\r\n ':' +\r\n thisDate.getMinutes() +\r\n ':' +\r\n thisDate.getSeconds()\r\n\t\t\t)\r\n\t\t},\r\n\t\tgetDateStrWithT(date) {\r\n\t\t\tconst thisDate = this.$moment(date)._d\r\n\t\t\treturn (\r\n\t\t\t\tthisDate.getFullYear() +\r\n '-' +\r\n (thisDate.getMonth() + 1) +\r\n '-' +\r\n thisDate.getDate() +\r\n 'T' +\r\n thisDate.getHours() +\r\n ':' +\r\n thisDate.getMinutes() +\r\n ':' +\r\n thisDate.getSeconds()\r\n\t\t\t)\r\n\t\t},\r\n\t\tgetlastActivityDate() {\r\n\t\t\tconst today = this.$moment()._d\r\n\t\t\treturn (\r\n\t\t\t\ttoday.getFullYear() +\r\n '-' +\r\n (today.getMonth() + 1) +\r\n '-' +\r\n today.getDate() +\r\n ' ' +\r\n today.getHours() +\r\n ':' +\r\n today.getMinutes() +\r\n ':' +\r\n today.getSeconds()\r\n\t\t\t)\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Verify the file to be uploaded.\r\n\t\t// @arg The file to be uploaded.\r\n\t\tonUploadChange(file) {\r\n\t\t\tconst re = /(?:\\.([^.]+))?$/\r\n\t\t\tconst ext = re.exec(file.name)[1]\r\n\t\t\tif (\r\n\t\t\t\text &&\r\n (ext.toLowerCase() == 'pdf' ||\r\n ext.toLowerCase() == 'doc' ||\r\n ext.toLowerCase() == 'docx')\r\n\t\t\t) {\r\n\t\t\t\tif (file.size > 0) {\r\n\t\t\t\t\tif (file.size < 20000000) {\r\n\t\t\t\t\t\tif (file.size > 10000000) {\r\n\t\t\t\t\t\t\tthis.$message.warning(\r\n\t\t\t\t\t\t\t\t'Upload may take several minutes due to large file size.'\r\n\t\t\t\t\t\t\t)\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tthis.file = file.raw\r\n\t\t\t\t\t\tconsole.log(this.file)\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tthis.$refs.upload.clearFiles()\r\n\t\t\t\t\t\tthis.$message.warning(\r\n\t\t\t\t\t\t\t'Upload failed due to file size greater than 20 megabytes.'\r\n\t\t\t\t\t\t)\r\n\t\t\t\t\t}\r\n\t\t\t\t} else {\r\n\t\t\t\t\tthis.$refs.upload.clearFiles()\r\n\t\t\t\t\tthis.$message.warning('Upload failed due to empty file.')\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tthis.$refs.upload.clearFiles()\r\n\t\t\t\tthis.$message.warning('Upload failed due to invalid file.')\r\n\t\t\t}\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Remove the file.\r\n\t\t// @arg The file and a list of file if any.\r\n\t\thandleRemove(file, fileList) {\r\n\t\t\tthis.file = null\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Logic before removing the file.\r\n\t\t// @arg The file and a list of file if any.\r\n\t\tbeforeRemove(file, fileList) {\r\n\t\t\treturn this.$confirm(`Are you sure you want to delete ${file.name} ?`)\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Handle case where the number of files to be uploaded is greater that the limit.\r\n\t\t// @arg The file and a list of file if any.\r\n\t\thandleExceed(files, fileList) {\r\n\t\t\tthis.$message.warning('You can upload only 1 document at a time!')\r\n\t\t},\r\n\t\tasync preview(docId, assignment) {\r\n\t\t\tthis.selectedAssignment = assignment\r\n\t\t\tthis.docPreviewDialogVisible = true\r\n\r\n\t\t\tif (docId) {\r\n\t\t\t\tthis.docId = docId\r\n\t\t\t\tawait pdfService\r\n\t\t\t\t\t.getPdf(docId)\r\n\t\t\t\t\t.then((pdf) => {\r\n\t\t\t\t\t\t// Display the pdf\r\n\t\t\t\t\t\tconst pdfDocument = document.querySelector('#pdfDocument')\r\n\t\t\t\t\t\tpdfDocument.innerHTML = pdf\r\n\t\t\t\t\t\t// Setup the doc after being loaded\r\n\t\t\t\t\t\tconst that = this\r\n\t\t\t\t\t\tdocument.getElementById('PdfWebControl').onload = function() {\r\n\t\t\t\t\t\t\tthat.PdfAttachListeners()\r\n\t\t\t\t\t\t\tsetTimeout(function() {\r\n\t\t\t\t\t\t\t\tthat.totalPageNumber = that.myapi.getPageCount()\r\n\t\t\t\t\t\t\t}, 500)\r\n\t\t\t\t\t\t\tthat.autoSavePdf()\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t})\r\n\t\t\t\t\t.catch((error) => {\r\n\t\t\t\t\t\tconsole.log(error)\r\n\t\t\t\t\t})\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\t// @vuese\r\n\t\t// Configures Rad PDf for displaying the document.\r\n\t\tPdfAttachListeners() {\r\n\t\t\tconst id = 'PdfWebControl'\r\n\t\t\t// eslint-disable-next-line no-undef\r\n\t\t\tthis.myapi = new PdfWebControlApi(id)\r\n\t\t\tthis.myapi.addEventListener('modeChanged', function(evt) {\r\n\t\t\t\tevt.byLine = true\r\n\t\t\t})\r\n\t\t\tconst that = this\r\n\t\t\tthis.myapi.addEventListener('viewChanged', function(evt) {\r\n\t\t\t\tthat.pageNum = that.myapi.getPageViewed().getPageNumber()\r\n\t\t\t})\r\n\r\n\t\t\tthis.myapi.addEventListener('objectAdded', function(evt) {\r\n\t\t\t\tif (evt.obj.getType() == 154) {\r\n\t\t\t\t\t// Highlight annotation\r\n\t\t\t\t\tconst props = evt.obj.getProperties()\r\n\t\t\t\t\tconst popup = evt.obj.getPopup()\r\n\r\n\t\t\t\t\tevt.obj.setProperties({\r\n\t\t\t\t\t\tcustomData: evt.textSelected\r\n\t\t\t\t\t})\r\n\r\n\t\t\t\t\tpopup.setProperties({\r\n\t\t\t\t\t\tauthor: 'RAD PDF',\r\n\t\t\t\t\t\tsubject: 'In-text Comment',\r\n\t\t\t\t\t\ttop: props['top'] - 60,\r\n\t\t\t\t\t\tleft: props['left'] - 5,\r\n\t\t\t\t\t\theight: 60\r\n\t\t\t\t\t})\r\n\r\n\t\t\t\t\tthat.myapi.setMode(that.myapi.Mode.None)\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (evt.obj.getType() == 100) {\r\n\t\t\t\t\tthat.myapi.setMode(that.myapi.Mode.None)\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (evt.obj.getType() == 101) {\r\n\t\t\t\t\tthat.myapi.setMode(that.myapi.Mode.None)\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (evt.obj.getType() == that.myapi.ObjectType.StrikeoutAnnotation) {\r\n\t\t\t\t\tthat.myapi.setMode(that.myapi.Mode.None)\r\n\t\t\t\t}\r\n\t\t\t\tif (evt.obj.getType() == that.myapi.ObjectType.TextAnnotation) {\r\n\t\t\t\t\tthat.myapi.setMode(that.myapi.Mode.None)\r\n\t\t\t\t}\r\n\t\t\t})\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Handles logics when the page number is changed.\r\n\t\tchangePage() {\r\n\t\t\tthis.myapi.setView({ page: this.pageNum })\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Handles logics when the zoom out button is clicked.\r\n\t\tzoomOut() {\r\n\t\t\tif (this.myapi) {\r\n\t\t\t\tif (this.zoomValue > 40) {\r\n\t\t\t\t\tthis.myapi.setView({ zoom: (this.zoomValue -= 20) })\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Handles logics when the zoom in button is clicked.\r\n\t\tzoomIn() {\r\n\t\t\tif (this.myapi) {\r\n\t\t\t\tif (this.zoomValue < 200 && this.zoomValue > 20) {\r\n\t\t\t\t\tthis.myapi.setView({ zoom: (this.zoomValue += 20) })\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Handles logics when the zoom fit width button is clicked.\r\n\t\tzoomFitWidth() {\r\n\t\t\tif (this.myapi) {\r\n\t\t\t\tthis.zoomValue = 140\r\n\t\t\t\tthis.myapi.setView({ zoom: -1 })\r\n\t\t\t}\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Handles logics when the download button is clicked.\r\n\t\t// downloadPdf() {\r\n\t\t// \tif (this.myapi) {\r\n\t\t// \t\tthis.myapi.download()\r\n\t\t// \t}\r\n\t\t// \treturn false\r\n\t\t// },\r\n\t\tdownloadPdf(assignment) {\r\n\t\t\tconst submission = this.submissionStatus.find(\r\n\t\t\t\t(s) => s.AssignmentId == assignment.Id\r\n\t\t\t)\r\n\t\t\tthis.download(submission.DocId, assignment)\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Download a file by document id.\r\n\t\t// @arg The document id.\r\n\t\tasync download(docId, assignment) {\r\n\t\t\tlet username = this.username\r\n\t\t\tif (assignment.IsGroupAssignment) {\r\n\t\t\t\tconst thisTeamAssignment =\r\n await teamFormationService.getgroupProjectTeamAssignment(\r\n \tthis.termCode,\r\n \tthis.orgCode,\r\n \tthis.classCode,\r\n \tthis.username,\r\n \tassignment.Id\r\n )\r\n\t\t\t\tif (thisTeamAssignment) {\r\n\t\t\t\t\tusername = thisTeamAssignment.TeamId\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t// get download data\r\n\t\t\tconst payload = new URLSearchParams()\r\n\t\t\tpayload.append('UserId', username)\r\n\t\t\tpayload.append('DocId', docId)\r\n\t\t\tconst data = await pdfService.getDownloadData(payload)\r\n\t\t\tif (data) {\r\n\t\t\t\tconst arrayBuffer = this.base64ToArrayBuffer(data.DownloadData)\r\n\t\t\t\tconst blob = new Blob([arrayBuffer], { type: 'application/pdf' })\r\n\t\t\t\tconst link = document.createElement('a')\r\n\t\t\t\tlink.href = window.URL.createObjectURL(blob)\r\n\t\t\t\tlink.download = data.DocumentName\r\n\t\t\t\tdocument.body.appendChild(link)\r\n\t\t\t\tlink.click()\r\n\t\t\t\tlink.remove()\r\n\t\t\t} else {\r\n\t\t\t\tNotification.error({\r\n\t\t\t\t\tduration: 6000,\r\n\t\t\t\t\ttitle: 'Error',\r\n\t\t\t\t\tmessage: 'Paper cannot be found.'\r\n\t\t\t\t})\r\n\t\t\t}\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Convert base64 value into bytes.\r\n\t\t// @arg The base 64 value.\r\n\t\tbase64ToArrayBuffer(base64) {\r\n\t\t\tconst binaryString = window.atob(base64)\r\n\t\t\tconst binaryLen = binaryString.length\r\n\t\t\tconst bytes = new Uint8Array(binaryLen)\r\n\t\t\tfor (let i = 0; i < binaryLen; i++) {\r\n\t\t\t\tconst ascii = binaryString.charCodeAt(i)\r\n\t\t\t\tbytes[i] = ascii\r\n\t\t\t}\r\n\t\t\treturn bytes\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Go to peer review page.\r\n\t\t// @arg The project id, bolean value indicatting if the project is a group project, and the group id.\r\n\t\tpeerReview(assignmentId, isGroupAssignment, groupId) {\r\n\t\t\tif (isGroupAssignment) {\r\n\t\t\t\tif (groupId && groupId != 0) {\r\n\t\t\t\t\tthis.$router.push('/peer_review?assignmentId=' + assignmentId)\r\n\t\t\t\t} else {\r\n\t\t\t\t\tNotification.info({\r\n\t\t\t\t\t\tduration: 6000,\r\n\t\t\t\t\t\ttitle: 'Info',\r\n\t\t\t\t\t\tmessage:\r\n 'Your instructor must include you in a Peer Review Group before you can complete the Peer Review Task for this Project.'\r\n\t\t\t\t\t})\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tthis.$router.push('/peer_review?assignmentId=' + assignmentId)\r\n\t\t\t}\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Go to self review page.\r\n\t\t// @arg The project id, bolean value indicatting if the project is a group project, and the group id.\r\n\t\tselfReview(assignmentId, isGroupAssignment, groupId) {\r\n\t\t\tif (isGroupAssignment) {\r\n\t\t\t\tif (groupId && groupId != 0) {\r\n\t\t\t\t\tthis.$router.push('/self_review?assignmentId=' + assignmentId)\r\n\t\t\t\t} else {\r\n\t\t\t\t\tNotification.info({\r\n\t\t\t\t\t\tduration: 6000,\r\n\t\t\t\t\t\ttitle: 'Info',\r\n\t\t\t\t\t\tmessage:\r\n 'Your instructor must include you in a Group before you can complete the Self Review Task for this Project.'\r\n\t\t\t\t\t})\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tthis.$router.push('/self_review?assignmentId=' + assignmentId)\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\tappraisal(assignmentId, isGroupAssignment, groupId) {\r\n\t\t\tif (isGroupAssignment) {\r\n\t\t\t\tif (groupId && groupId != 0) {\r\n\t\t\t\t\tthis.$router.push(\r\n\t\t\t\t\t\t'/student/appraisal/' + assignmentId + '?groupId=' + groupId\r\n\t\t\t\t\t)\r\n\t\t\t\t} else {\r\n\t\t\t\t\tNotification.info({\r\n\t\t\t\t\t\tduration: 6000,\r\n\t\t\t\t\t\ttitle: 'Info',\r\n\t\t\t\t\t\tmessage:\r\n 'Your instructor must include you in a Group before you can complete the Appraisal Task for this Project.'\r\n\t\t\t\t\t})\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tthis.$router.push('/student/appraisal/' + assignmentId)\r\n\t\t\t}\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Go to view feedback page.\r\n\t\t// @arg The project id.\r\n\t\tasync viewAllFeedback(assignmentId) {\r\n\t\t\tthis.$router.push('/view_feedback/' + assignmentId)\r\n\t\t},\r\n\t\tdraggingEnd() {\r\n\t\t\tthis.dragging = false\r\n\t\t},\r\n\t\tremoveAt(idx) {\r\n\t\t\tthis.assignments = this.assignments.splice(idx, 1)\r\n\t\t\t// this.$store.commit('assignment/SET_ASSIGNMENTS', this.assignments)\r\n\t\t},\r\n\t\tadd() {\r\n\t\t\tconst newAssignment = null\r\n\t\t\tthis.assignments.push(newAssignment)\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Go to student submissions page.\r\n\t\t// @arg The project id.\r\n\t\tgotoStudentSubmissions(assignmentId, taskType) {\r\n\t\t\tif (taskType) {\r\n\t\t\t\tthis.$router.push(\r\n\t\t\t\t\t'/course/' +\r\n this.classCode +\r\n '/projects/' +\r\n assignmentId +\r\n '/submissions?task=' +\r\n taskType\r\n\t\t\t\t)\r\n\t\t\t} else {\r\n\t\t\t\tthis.$router.push(\r\n\t\t\t\t\t'/course/' +\r\n this.classCode +\r\n '/projects/' +\r\n assignmentId +\r\n '/submissions'\r\n\t\t\t\t)\r\n\t\t\t}\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Go to student scores page.\r\n\t\t// @arg The project id.\r\n\t\tgotoStudentScores(assignmentId) {\r\n\t\t\tthis.$router.push(\r\n\t\t\t\t'/course/' +\r\n this.classCode +\r\n '/projects/' +\r\n assignmentId +\r\n '/scores/all'\r\n\t\t\t)\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Go to student holistic scores page.\r\n\t\t// @arg The project id.\r\n\t\tgotoStudentHolisticScores(assignmentId) {\r\n\t\t\tthis.$router.push(\r\n\t\t\t\t'/course/' +\r\n this.classCode +\r\n '/projects/' +\r\n assignmentId +\r\n '/scores/holistic'\r\n\t\t\t)\r\n\t\t},\r\n\t\tgotoInstructorCompareTexts(assignmentId, idx) {\r\n\t\t\tthis.$router.push('/instructor/compare')\r\n\t\t},\r\n\t\tcompareTexts(assignmentId) {\r\n\t\t\tthis.$router.push('/student/compare/' + assignmentId)\r\n },\r\n printContent() {\r\n var printableContent = document.getElementById('preview-rubric-dialog').innerHTML\r\n const printWindow = window.open('', '', 'height=750,width=750')\r\n printWindow.document.write(printableContent)\r\n printWindow.print()\r\n }\r\n\t}\r\n}\r\n</script>\r\n\r\n<style scoped>\r\n.el-table__empty-text {\r\n display: none;\r\n}\r\n\r\n.assignment-list {\r\n padding: 15px;\r\n box-shadow: 20px 10px 25px 20px rgba(109, 107, 107, 0.1);\r\n}\r\n\r\n.instructor-assignment-name {\r\n font-size: 18px;\r\n font-weight: bold;\r\n color: #4e5e63;\r\n white-space: nowrap;\r\n display: inline-block;\r\n overflow: hidden;\r\n}\r\n\r\n.student-assignment-name {\r\n font-size: 18px;\r\n font-weight: bold;\r\n color: #4e5e63;\r\n text-overflow: ellipsis;\r\n white-space: nowrap;\r\n display: inline-block;\r\n overflow: hidden;\r\n}\r\n\r\n.assignment-row:hover {\r\n background: #f0f8ff;\r\n /* #eef7ff; */\r\n}\r\n\r\n.assignment-title {\r\n font-size: 18px;\r\n font-weight: bold;\r\n color: #4e5e63;\r\n text-overflow: ellipsis;\r\n white-space: nowrap;\r\n width: 400px;\r\n display: inline-block;\r\n overflow: hidden;\r\n}\r\n\r\n.assignment-title:hover {\r\n text-decoration: underline;\r\n text-decoration-thickness: 2px;\r\n}\r\n\r\n.assignment-action-btn {\r\n box-shadow: none;\r\n display: inline-block;\r\n vertical-align: middle;\r\n touch-action: manipulation;\r\n cursor: pointer;\r\n padding: 10px 14px;\r\n /* border: 0px none;\r\n background: none; */\r\n}\r\n\r\n.assignment-details {\r\n font-size: 13px;\r\n margin-right: 20px;\r\n /* margin-bottom: 3px; */\r\n}\r\n\r\n/*\r\n.dialog-title{\r\n font-size: 22px;\r\n font-weight: bold;\r\n color: #4E5E63;\r\n} */\r\n.badge-item {\r\n margin-left: 8px;\r\n margin-right: 8px;\r\n}\r\n\r\n.editor-btn {\r\n text-align: center;\r\n box-shadow: none;\r\n display: inline-block;\r\n padding: 0px 8px;\r\n vertical-align: middle;\r\n touch-action: manipulation;\r\n cursor: pointer;\r\n border: 0px none;\r\n background: none;\r\n word-break: normal;\r\n}\r\n\r\n.assignment-edit-editor {\r\n word-break: normal;\r\n padding-right: 5px;\r\n}\r\n\r\n.assignment-detail-editor {\r\n word-break: normal;\r\n padding-right: 5px;\r\n}\r\n\r\n#full_width_container.full-width {\r\n position: absolute;\r\n top: 3.1325em;\r\n bottom: 2px;\r\n left: 215px;\r\n right: 0;\r\n min-width: 460px;\r\n}\r\n\r\n#full_width_container {\r\n position: absolute;\r\n top: 3.1325em;\r\n bottom: 2px;\r\n left: 65px;\r\n right: 0;\r\n min-width: 460px;\r\n}\r\n\r\n#left_side {\r\n top: 0;\r\n bottom: 0;\r\n overflow-y: hidden;\r\n left: 0;\r\n min-width: 700px;\r\n}\r\n\r\n#right_side {\r\n top: 0;\r\n bottom: 0;\r\n right: 0;\r\n font-size: 14px;\r\n font-size: 0.875rem;\r\n}\r\n\r\n.el-input-number--small {\r\n width: 100px;\r\n}\r\n\r\n.el-radio-button >>> .el-radio-button__inner {\r\n padding: 12px 15px;\r\n}\r\n\r\n.full_height {\r\n height: 100%;\r\n overflow-x: auto;\r\n}\r\n\r\n#left_side_inner,\r\n#submissions_container,\r\n#iframe_holder {\r\n height: 100%;\r\n width: 100%;\r\n border: 0 none;\r\n}\r\n\r\niframe {\r\n width: 100%;\r\n border: 0px;\r\n overflow: auto;\r\n height: 99%;\r\n min-height: 0px;\r\n}\r\n\r\n#width_resizer {\r\n position: absolute;\r\n top: 0;\r\n bottom: 0;\r\n left: 0;\r\n background: #bbb\r\n url(https://du11hjcvx0uqb.cloudfront.net/dist/images/splitpane_handle-ew-1b67cccf0f.gif)\r\n no-repeat scroll 50% 50%;\r\n cursor: pointer;\r\n width: 7px;\r\n border-right: 1px solid #838383;\r\n z-index: 2;\r\n}\r\n\r\n.right_side_content {\r\n position: absolute;\r\n top: 0;\r\n bottom: 0;\r\n left: 8px;\r\n right: 0;\r\n}\r\n\r\n#right_side #rightside_inner {\r\n overflow-y: auto;\r\n position: relative;\r\n}\r\n\r\n.ViewerControls--with-annotations {\r\n height: 49px;\r\n}\r\n\r\n.ViewerControls {\r\n background-color: #636363;\r\n color: #fff;\r\n font-size: 14px;\r\n line-height: 24px;\r\n /* overflow-x: auto; */\r\n /* position: absolute;\r\n width: 100%; */\r\n}\r\n\r\n.ViewerControls-primary {\r\n -ms-touch-action: none;\r\n touch-action: none;\r\n pointer-events: all;\r\n display: -webkit-box;\r\n display: -ms-flexbox;\r\n display: flex;\r\n}\r\n\r\n.ViewerControls--download,\r\n.ViewerControls--title {\r\n -webkit-box-flex: 1;\r\n -ms-flex: 1;\r\n flex: 1;\r\n display: -webkit-box;\r\n display: -ms-flexbox;\r\n display: flex;\r\n -webkit-box-align: center;\r\n -ms-flex-align: center;\r\n align-items: center;\r\n white-space: nowrap;\r\n}\r\n\r\n.download-button--button {\r\n background-color: transparent;\r\n font-size: 16px;\r\n border: none;\r\n height: 48px;\r\n width: 48px;\r\n color: white;\r\n cursor: pointer;\r\n}\r\n\r\n/* .download-button--button:hover {\r\n background-color: #777777;\r\n} */\r\n\r\n.ViewerControls--page-controls {\r\n display: -webkit-box;\r\n display: -ms-flexbox;\r\n display: flex;\r\n -webkit-box-align: center;\r\n -ms-flex-align: center;\r\n align-items: center;\r\n white-space: nowrap;\r\n}\r\n\r\n.DocumentControls {\r\n display: -webkit-box;\r\n display: -ms-flexbox;\r\n display: flex;\r\n -webkit-box-align: center;\r\n -ms-flex-align: center;\r\n align-items: center;\r\n}\r\n\r\n.AnnotationControlButton {\r\n width: 48px;\r\n padding: 0;\r\n border: 0 none;\r\n color: #fff;\r\n background-color: #636363;\r\n margin-top: 0;\r\n margin-bottom: 0;\r\n cursor: pointer;\r\n -webkit-box-sizing: content-box;\r\n box-sizing: content-box;\r\n -webkit-touch-callout: none;\r\n user-select: none;\r\n -moz-user-select: none;\r\n -webkit-user-select: none;\r\n -ms-user-select: none;\r\n -webkit-tap-highlight-color: rgba(0, 0, 0, 0);\r\n}\r\n\r\n.AnnotationControlButton-inner,\r\n.AnnotationControlButton-outer {\r\n -webkit-box-sizing: content-box;\r\n box-sizing: content-box;\r\n display: -webkit-box;\r\n display: -ms-flexbox;\r\n display: flex;\r\n}\r\n\r\n.AnnotationControlButton-inner {\r\n margin: 0;\r\n height: 44px;\r\n width: 48px;\r\n -webkit-box-pack: center;\r\n -ms-flex-pack: center;\r\n justify-content: center;\r\n -webkit-box-align: center;\r\n -ms-flex-align: center;\r\n align-items: center;\r\n}\r\n\r\n.AnnotationControlButton-inner {\r\n margin: 0;\r\n height: 44px;\r\n width: 48px;\r\n -webkit-box-pack: center;\r\n -ms-flex-pack: center;\r\n justify-content: center;\r\n -webkit-box-align: center;\r\n -ms-flex-align: center;\r\n align-items: center;\r\n}\r\n\r\n.AnnotationControlButton-outer {\r\n width: 44px;\r\n margin: 1px;\r\n border: 1px solid #636363;\r\n}\r\n\r\n.ViewerControls--current-page {\r\n -moz-appearance: textfield;\r\n margin-top: 10px;\r\n border-radius: 3px;\r\n border: 0;\r\n height: 28px;\r\n width: 36px;\r\n background-color: #fff;\r\n color: #636363;\r\n font-size: 14px;\r\n text-align: center;\r\n vertical-align: top;\r\n}\r\n\r\n.next-prev {\r\n text-align: center;\r\n -webkit-box-shadow: none;\r\n box-shadow: none;\r\n display: inline-block;\r\n padding: 0px 10px;\r\n vertical-align: middle;\r\n -ms-touch-action: manipulation;\r\n touch-action: manipulation;\r\n cursor: pointer;\r\n border: 0 none;\r\n background: none;\r\n}\r\n</style>\r\n<style>\r\n.el-badge__content {\r\n margin-right: -3px;\r\n background-color: #569636;\r\n font-size: 8px;\r\n height: 12px;\r\n line-height: inherit;\r\n padding: 0 5px;\r\n padding-top: 1px;\r\n}\r\n\r\n#preview-submission-dialog > .el-dialog {\r\n margin-top: 10vh !important;\r\n}\r\n\r\n.assignment-tile > .el-card__header {\r\n padding: 10px;\r\n background: #cad2d8;\r\n border: 1px solid #cccecf;\r\n}\r\n\r\n.assignment-tile > .el-card__body {\r\n padding: 0px;\r\n}\r\n\r\n.dialog-title {\r\n font-size: 22px;\r\n font-weight: bold;\r\n color: #4e5e63;\r\n}\r\n\r\n.el-badge__content.is-fixed {\r\n right: 12px !important;\r\n}\r\n\r\n.assignment-edit-editor > .ProseMirror {\r\n height: 100px;\r\n overflow: auto;\r\n}\r\n\r\n.assignment-detail-editor > .ProseMirror {\r\n height: 250px;\r\n overflow: auto;\r\n}\r\n\r\n.newLineStringStyle {\r\n white-space: pre-line;\r\n word-break: break-word;\r\n}\r\n</style>\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./NewAssignments.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./NewAssignments.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./NewAssignments.vue?vue&type=template&id=09409b32&scoped=true&\"\nimport script from \"./NewAssignments.vue?vue&type=script&lang=js&\"\nexport * from \"./NewAssignments.vue?vue&type=script&lang=js&\"\nimport style0 from \"./NewAssignments.vue?vue&type=style&index=0&id=09409b32&scoped=true&lang=css&\"\nimport style1 from \"./NewAssignments.vue?vue&type=style&index=1&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"09409b32\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('div',{staticStyle:{\"height\":\"50px\",\"border-bottom\":\"#cccccc solid 1px\"},attrs:{\"id\":\"filter\"}},[_c('div',{staticClass:\"filter-divider\",staticStyle:{\"width\":\"220px\"}},[_c('el-button',{staticStyle:{\"text-align\":\"center\",\"-webkit-box-shadow\":\"none\",\"box-shadow\":\"none\",\"display\":\"inline-block\",\"padding\":\"0px\",\"padding-right\":\"10px\",\"vertical-align\":\"middle\",\"-ms-touch-action\":\"manipulation\",\"touch-action\":\"manipulation\",\"cursor\":\"pointer\",\"border\":\"0 none\",\"background\":\"none\"},attrs:{\"title\":\"Back to Student Submissions\"},on:{\"click\":function($event){return _vm.backToStudentSubmissions()}}},[_c('i',{staticClass:\"fas fa-chevron-left\",staticStyle:{\"font-size\":\"25px\"}})]),_c('el-tooltip',{staticClass:\"item\",attrs:{\"effect\":\"light\",\"content\":\"Select a project\",\"placement\":\"bottom\"}},[_c('el-select',{staticStyle:{\"margin-top\":\"5px\",\"width\":\"80%\"},attrs:{\"id\":\"assignments-selection\",\"value-key\":\"Id\",\"filterable\":\"\",\"placeholder\":\"Select Project\",\"no-match-text\":\"No Matching Data\",\"no-data-text\":\"No data\",\"loading-text\":\"Loading\"},on:{\"change\":function($event){return _vm.onAssignmentChange()}},model:{value:(_vm.currentAssignment),callback:function ($$v) {_vm.currentAssignment=$$v},expression:\"currentAssignment\"}},_vm._l((_vm.assignments),function(item){return _c('el-option',{key:item.Id,attrs:{\"label\":item.AssignmentName,\"value\":item}})}),1)],1)],1),_c('div',[(!_vm.isGroupProject)?_c('div',{staticClass:\"filter-divider\",staticStyle:{\"width\":\"285px\"}},[_c('el-button',{staticStyle:{\"text-align\":\"center\",\"-webkit-box-shadow\":\"none\",\"box-shadow\":\"none\",\"display\":\"inline-block\",\"padding\":\"0px 10px\",\"vertical-align\":\"middle\",\"-ms-touch-action\":\"manipulation\",\"touch-action\":\"manipulation\",\"cursor\":\"pointer\",\"border\":\"0 none\",\"background\":\"none\"},attrs:{\"disabled\":_vm.prevBtnDisable,\"title\":\"Previous student\"},on:{\"click\":_vm.previousStudent}},[_c('i',{staticClass:\"fas fa-arrow-left\",staticStyle:{\"font-size\":\"25px\"}})]),_c('el-tooltip',{staticClass:\"item\",attrs:{\"effect\":\"light\",\"content\":\"Select a student\",\"placement\":\"bottom\"}},[_c('el-select',{staticStyle:{\"margin-top\":\"5px\",\"width\":\"200px\"},attrs:{\"id\":\"students-selection\",\"value-key\":\"UserName\",\"filterable\":\"\",\"placeholder\":\"Select Student\"},on:{\"change\":function($event){return _vm.onStudentChange()}},model:{value:(_vm.currentStudent),callback:function ($$v) {_vm.currentStudent=$$v},expression:\"currentStudent\"}},_vm._l((_vm.students),function(item){return _c('el-option',{key:item.UserName,attrs:{\"label\":item.LastName + ', ' + item.FirstName,\"value\":item}})}),1)],1),_c('el-button',{staticStyle:{\"text-align\":\"center\",\"-webkit-box-shadow\":\"none\",\"box-shadow\":\"none\",\"display\":\"inline-block\",\"padding\":\"0px 10px\",\"vertical-align\":\"middle\",\"-ms-touch-action\":\"manipulation\",\"touch-action\":\"manipulation\",\"cursor\":\"pointer\",\"border\":\"0 none\",\"background\":\"none\"},attrs:{\"disabled\":_vm.nextBtnDisable,\"title\":\"Next student\"},on:{\"click\":_vm.nextStudent}},[_c('i',{staticClass:\"fas fa-arrow-right\",staticStyle:{\"font-size\":\"25px\"}})])],1):_c('div',{staticClass:\"filter-divider\",staticStyle:{\"width\":\"285px\"}},[_c('el-button',{staticStyle:{\"text-align\":\"center\",\"-webkit-box-shadow\":\"none\",\"box-shadow\":\"none\",\"display\":\"inline-block\",\"padding\":\"0px 10px\",\"vertical-align\":\"middle\",\"-ms-touch-action\":\"manipulation\",\"touch-action\":\"manipulation\",\"cursor\":\"pointer\",\"border\":\"0 none\",\"background\":\"none\"},attrs:{\"disabled\":_vm.prevGroupBtnDisable,\"title\":\"Previous Group\"},on:{\"click\":_vm.previousGroup}},[_c('i',{staticClass:\"fas fa-arrow-left\",staticStyle:{\"font-size\":\"25px\"}})]),_c('el-tooltip',{staticClass:\"item\",attrs:{\"effect\":\"light\",\"content\":\"Select a group\",\"placement\":\"bottom\"}},[_c('el-select',{staticStyle:{\"margin-top\":\"5px\",\"width\":\"200px\"},attrs:{\"id\":\"groups-selection\",\"value-key\":\"GroupId\",\"filterable\":\"\",\"placeholder\":\"Select Group\"},on:{\"change\":function($event){return _vm.onGroupChange()}},model:{value:(_vm.currentGroup),callback:function ($$v) {_vm.currentGroup=$$v},expression:\"currentGroup\"}},_vm._l((_vm.groups),function(item){return _c('el-option',{key:item.GroupId,attrs:{\"label\":item.GroupName,\"value\":item}})}),1)],1),_c('el-button',{staticStyle:{\"text-align\":\"center\",\"-webkit-box-shadow\":\"none\",\"box-shadow\":\"none\",\"display\":\"inline-block\",\"padding\":\"0px 10px\",\"vertical-align\":\"middle\",\"-ms-touch-action\":\"manipulation\",\"touch-action\":\"manipulation\",\"cursor\":\"pointer\",\"border\":\"0 none\",\"background\":\"none\"},attrs:{\"disabled\":_vm.nextGroupBtnDisable,\"title\":\"Next Group\"},on:{\"click\":_vm.nextGroup}},[_c('i',{staticClass:\"fas fa-arrow-right\",staticStyle:{\"font-size\":\"25px\"}})])],1)]),_c('div',{staticStyle:{\"width\":\"350px\",\"float\":\"left\"}},[_c('el-tooltip',{staticClass:\"item\",attrs:{\"effect\":\"light\",\"content\":\"Submission to view\",\"placement\":\"bottom\"}},[_c('el-select',{staticStyle:{\"margin-top\":\"5px\",\"margin-left\":\"10px\",\"margin-right\":\"10px\",\"width\":\"200px\"},attrs:{\"id\":\"submissions-selection\",\"value-key\":\"docId\",\"filterable\":\"\",\"placeholder\":\"Select Submission\",\"no-match-text\":\"No Matching Data\",\"no-data-text\":\"No data\",\"loading-text\":\"Loading\"},on:{\"change\":function($event){return _vm.onSubmissionChange()}},model:{value:(_vm.currentSubmission),callback:function ($$v) {_vm.currentSubmission=$$v},expression:\"currentSubmission\"}},_vm._l((_vm.submissions),function(item){return _c('el-option',{key:item.docId,attrs:{\"label\":_vm._f(\"formatDate\")(item.uploadedDate),\"value\":item}})}),1)],1),(_vm.docId && _vm.onTime)?_c('el-tooltip',{staticClass:\"item\",attrs:{\"effect\":\"light\",\"content\":'Submitted on time at ' + _vm.formatDate(_vm.uploadedDate) + '. Due date is ' + _vm.formatDate(_vm.dueDate) + '.',\"placement\":\"bottom\"}},[_c('i',{staticClass:\"far fa-calendar-check\",staticStyle:{\"font-size\":\"30px\",\"color\":\"rgb(59, 146, 120)\",\"position\":\"absolute\",\"margin-top\":\"10px\"}})]):(_vm.docId && !_vm.onTime)?_c('el-tooltip',{staticClass:\"item\",attrs:{\"effect\":\"light\",\"content\":'Submitted late at ' + _vm.formatDate(_vm.uploadedDate) + '. Due date is ' + _vm.formatDate(_vm.dueDate) + '.',\"placement\":\"bottom\"}},[_c('i',{staticClass:\"far fa-calendar-times\",staticStyle:{\"font-size\":\"30px\",\"color\":\"#f57575\",\"position\":\"absolute\",\"margin-top\":\"10px\"}})]):_vm._e()],1),_c('div',{staticStyle:{\"float\":\"right\",\"position\":\"absolute\",\"right\":\"0\"}},[_c('el-tooltip',{staticClass:\"item\",staticStyle:{\"display\":\"none\"},attrs:{\"id\":\"savedMessage\",\"effect\":\"light\",\"placement\":\"bottom\",\"content\":'Your feedback was successfully saved.'}},[_c('el-tag',{staticStyle:{\"line-height\":\"40px\",\"height\":\"40px\",\"margin-right\":\"5px\"},attrs:{\"type\":\"success\"}},[_vm._v(\"\\n Saved!\\n \")])],1),(_vm.review && _vm.clearBtnEnabled)?_c('el-button',{staticClass:\"submit-button\",staticStyle:{\"margin-top\":\"5px\",\"margin-right\":\"5px\"},attrs:{\"title\":\"Clear all feedback to start over\"},on:{\"click\":function($event){return _vm.clearFeedback()}}},[_vm._v(\"\\n Clear\\n \")]):_vm._e(),(_vm.review)?_c('el-button',{staticClass:\"submit-button\",staticStyle:{\"margin-top\":\"5px\",\"margin-right\":\"5px\"},attrs:{\"type\":_vm.statusType,\"title\":_vm.submitTooltip},on:{\"click\":function($event){return _vm.submitReview()}}},[_vm._v(\"\\n Submit\\n \")]):(!_vm.submitButtonHidden)?_c('el-button',{staticClass:\"submit-button\",staticStyle:{\"margin-top\":\"5px\",\"margin-right\":\"5px\"},attrs:{\"type\":\"info\",\"disabled\":true}},[_vm._v(\"\\n Submit\\n \")]):_vm._e()],1)]),_c('div',{class:_vm.fullWidth,attrs:{\"id\":\"full_width_container\"}},[_c('rs-panes',{attrs:{\"split-to\":\"columns\",\"allow-resize\":true,\"units\":\"percents\",\"size\":_vm.docColSize,\"min-size\":0,\"resizer-thickness\":6}},[_c('div',{staticStyle:{\"height\":\"100%\"},attrs:{\"slot\":\"firstPane\"},slot:\"firstPane\"},[_c('div',{staticClass:\"full_height\",attrs:{\"id\":\"left_side\"}},[_c('div',{attrs:{\"id\":\"left_side_inner\"}},[_c('div',{attrs:{\"id\":\"submissions_container\"}},[_c('nav',{staticClass:\"ViewerControls ViewerControls--with-annotations\"},[_c('div',{staticClass:\"ViewerControls-primary\"},[_c('div',{staticClass:\"ViewerControls--download\"},[_c('div',{staticStyle:{\"min-width\":\"50px\",\"text-align\":\"center\"}},[_c('div',[_c('div',{staticStyle:{\"float\":\"left\"}},[_c('button',{staticClass:\"download-button--button\",attrs:{\"title\":\"Download annotated PDF\",\"aria-label\":\"Download annotated PDF\"},on:{\"click\":function($event){return _vm.downloadPdf()}}},[_c('i',{staticClass:\"fas fa-file-download\",staticStyle:{\"font-size\":\"22px\"}})])]),(!_vm.submitButtonHidden)?_c('div',[_c('button',{staticClass:\"download-button--button\",attrs:{\"title\":\"Save annotations\",\"aria-label\":\"Save annotations\"},on:{\"click\":function($event){return _vm.saveAnnotation()}}},[_c('i',{staticClass:\"fas fa-save\",staticStyle:{\"font-size\":\"24px\",\"margin-top\":\"2px\"}})])]):_vm._e()])])]),_c('div',{staticClass:\"ViewerControls--title\"}),_c('div',{staticClass:\"ViewerControls--page-controls\"},[_c('span',{staticClass:\"ViewerControls--page-number\",staticStyle:{\"display\":\"flex\",\"align-items\":\"center\"}},[_vm._v(\"\\n Page\\n \"),_c('div',{staticStyle:{\"padding-left\":\"10px\",\"padding-right\":\"10px\"}},[_c('el-input-number',{attrs:{\"min\":1,\"max\":_vm.totalPageNumber,\"size\":\"small\",\"label\":\"Page\"},on:{\"change\":_vm.changePage},model:{value:(_vm.pageNum),callback:function ($$v) {_vm.pageNum=$$v},expression:\"pageNum\"}})],1),_vm._v(\"\\n of \"+_vm._s(_vm.totalPageNumber)+\"\\n \")]),_c('svg',{staticStyle:{\"margin-left\":\"12px\",\"margin-right\":\"0px\",\"width\":\"2px\",\"height\":\"26px\",\"color\":\"rgb(171, 179, 186)\"},attrs:{\"viewBox\":\"0 0 2 26\"}},[_c('line',{attrs:{\"stroke\":\"currentColor\",\"stroke-dasharray\":\"2, 1\",\"stroke-width\":\"1\",\"x1\":\"1\",\"y1\":\"0\",\"x2\":\"1\",\"y2\":\"26\"}})])]),_c('nav',{staticClass:\"DocumentControls\"},[_c('div',{staticStyle:{\"display\":\"inline-flex\",\"align-items\":\"center\",\"user-select\":\"none\"}},[_c('button',{staticClass:\"AnnotationControlButton\",attrs:{\"aria-label\":\"Zoom Out\",\"title\":\"Zoom Out\",\"aria-disabled\":\"false\"},on:{\"click\":_vm.zoomOut}},[_c('i',{staticClass:\"fas fa-minus\",staticStyle:{\"font-size\":\"20px\"}})]),_c('span',{staticStyle:{\"text-transform\":\"uppercase\",\"font-size\":\"0.75rem\",\"color\":\"rgb(238, 238, 239)\",\"margin-left\":\"4px\",\"margin-right\":\"4px\"},attrs:{\"aria-hidden\":\"true\"}},[_vm._v(\"\\n Zoom\\n \")]),_c('button',{staticClass:\"AnnotationControlButton\",attrs:{\"aria-label\":\"Zoom In\",\"title\":\"Zoom In\",\"aria-disabled\":\"false\"},on:{\"click\":_vm.zoomIn}},[_c('i',{staticClass:\"fas fa-plus\",staticStyle:{\"font-size\":\"20px\"}})])]),_c('svg',{staticStyle:{\"margin-left\":\"2px\",\"margin-right\":\"4px\",\"width\":\"2px\",\"height\":\"26px\",\"color\":\"rgb(171, 179, 186)\"},attrs:{\"viewBox\":\"0 0 2 26\"}},[_c('line',{attrs:{\"stroke\":\"currentColor\",\"stroke-dasharray\":\"2, 1\",\"stroke-width\":\"1\",\"x1\":\"1\",\"y1\":\"0\",\"x2\":\"1\",\"y2\":\"26\"}})]),_c('div',{staticClass:\"ViewerControls--page-controls\"},[_c('button',{staticClass:\"AnnotationControlButton full-screen-button\",attrs:{\"aria-label\":\"Enter Full Screen\",\"title\":\"Zoom Fit Width\"},on:{\"click\":_vm.zoomFitWidth}},[_c('i',{staticClass:\"fas fa-expand\",staticStyle:{\"font-size\":\"20px\"}})]),_c('svg',{staticStyle:{\"margin-left\":\"4px\",\"margin-right\":\"4px\",\"width\":\"2px\",\"height\":\"26px\",\"color\":\"rgb(171, 179, 186)\"},attrs:{\"viewBox\":\"0 0 2 26\"}},[_c('line',{attrs:{\"stroke\":\"currentColor\",\"stroke-dasharray\":\"2, 1\",\"stroke-width\":\"1\",\"x1\":\"1\",\"y1\":\"0\",\"x2\":\"1\",\"y2\":\"26\"}})])])]),(!_vm.submitButtonHidden)?_c('nav',{staticClass:\"AnnotationControls\"},[_c('button',{staticClass:\"AnnotationControlButton\",attrs:{\"aria-label\":\"Enter selection mode\",\"title\":\"Selection\"},on:{\"click\":_vm.selectTextPdf}},[_c('div',{staticClass:\"AnnotationControlButton-outer\"},[_c('div',{staticClass:\"AnnotationControlButton-inner\"},[_c('i',{staticClass:\"fas fa-mouse-pointer\",staticStyle:{\"font-size\":\"20px\"}})])])]),_c('button',{staticClass:\"AnnotationControlButton\",attrs:{\"aria-label\":\"highlight annotation\",\"title\":\"Highlight annotation\"},on:{\"click\":_vm.highlightPdf}},[_c('div',{staticClass:\"AnnotationControlButton-outer\"},[_c('div',{staticClass:\"AnnotationControlButton-inner\"},[_c('i',{staticClass:\"fas fa-highlighter\",staticStyle:{\"font-size\":\"20px\"}})])])]),_c('button',{staticClass:\"AnnotationControlButton\",attrs:{\"aria-label\":\"strikeout annotation\",\"title\":\"Strikeout annotation\"},on:{\"click\":_vm.strikeOutPdf}},[_c('div',{staticClass:\"AnnotationControlButton-outer\"},[_c('div',{staticClass:\"AnnotationControlButton-inner\"},[_c('i',{staticClass:\"fas fa-strikethrough\",staticStyle:{\"font-size\":\"20px\"}})])])]),_c('button',{staticClass:\"AnnotationControlButton\",attrs:{\"aria-label\":\"free draw annotation\",\"title\":\"Free draw annotation\"},on:{\"click\":_vm.freeDrawPdf}},[_c('div',{staticClass:\"AnnotationControlButton-outer\"},[_c('div',{staticClass:\"AnnotationControlButton-inner\"},[_c('i',{staticClass:\"fas fa-paint-brush\",staticStyle:{\"font-size\":\"20px\"}})])])]),_c('button',{staticClass:\"AnnotationControlButton\",attrs:{\"aria-label\":\"Sticky note annotation\",\"title\":\"Sticky note annotation\"},on:{\"click\":_vm.stickyNotePdf}},[_c('div',{staticClass:\"AnnotationControlButton-outer\"},[_c('div',{staticClass:\"AnnotationControlButton-inner\"},[_c('i',{staticClass:\"far fa-sticky-note\",staticStyle:{\"font-size\":\"20px\"}})])])])]):_vm._e()])]),_c('div',{staticStyle:{\"display\":\"block\",\"height\":\"calc(100% - 45px)\"},attrs:{\"id\":\"iframe_holder\"}},[_c('div',{staticStyle:{\"resize\":\"vertical\",\"height\":\"100%\"},attrs:{\"id\":\"pdfDocument\"}})])])]),_c('div',{staticStyle:{\"display\":\"none\",\"position\":\"relative\",\"top\":\"-100%\",\"z-index\":\"1\",\"height\":\"100%\",\"width\":\"100%\",\"border\":\"0 none\"},attrs:{\"id\":\"resize_overlay\"}})])]),_c('div',{attrs:{\"slot\":\"secondPane\"},slot:\"secondPane\"},[_c('div',{staticClass:\"full_height\",attrs:{\"id\":\"right_side\"}},[_c('div',{staticClass:\"right_side_content\"},[_c('div',{staticClass:\"full_height\",attrs:{\"id\":\"rightside_inner\"}},[_c('div',{attrs:{\"id\":\"rubric\"}},[_c('div',{staticStyle:{\"height\":\"100%\",\"overflow\":\"auto\"}},_vm._l((_vm.rubricCriteria),function(criteria,criteriaIndex){return _c('el-card',{key:criteria.Id,staticStyle:{\"margin-bottom\":\"5px\",\"margin-left\":\"3px\"}},[_c('div',{staticClass:\"clearfix\",attrs:{\"slot\":\"header\"},slot:\"header\"},[_c('span',{staticStyle:{\"font-size\":\"16px\",\"font-weight\":\"bold\"}},[_vm._v(\"\\n \"+_vm._s(criteria.CriteriaName)+\"\\n \")]),_c('div',{staticStyle:{\"font-size\":\"14px\",\"margin-top\":\"10px\"}},[(criteria.Description && criteria.Description != '')?_c('el-input',{staticClass:\"criteria-description\",staticStyle:{\"border\":\"none\"},attrs:{\"value\":criteria.Description,\"readonly\":true,\"type\":\"textarea\",\"autosize\":true,\"maxlength\":8000}}):_vm._e()],1)]),_c('div',[(_vm.termCode == '201908')?_c('div',[(criteria.UseAsGrade)?_c('el-radio-group',{staticStyle:{\"margin-bottom\":\"10px\",\"min-width\":\"240px\"},attrs:{\"id\":criteria.Id},on:{\"input\":function($event){return _vm.saveReview(criteriaIndex)}},model:{value:(_vm.criteriaFeedback[criteriaIndex].Mark),callback:function ($$v) {_vm.$set(_vm.criteriaFeedback[criteriaIndex], \"Mark\", $$v)},expression:\"criteriaFeedback[criteriaIndex].Mark\"}},_vm._l((criteria.RubricCriteriaMilestones.slice()),function(milestone,key){return _c('el-tooltip',{key:milestone.Id,staticClass:\"item\",attrs:{\"effect\":\"light\",\"placement\":\"top\"}},[_c('div',{staticStyle:{\"max-width\":\"500px\"},attrs:{\"slot\":\"content\"},slot:\"content\"},[_vm._v(\"\\n \"+_vm._s(milestone.Description)+\"\\n \")]),_c('el-radio-button',{key:milestone.Id,attrs:{\"label\":criteria.RubricCriteriaMilestones.length - key}})],1)}),1):_vm._e()],1):_c('div',[(criteria.UseAsGrade)?_c('el-radio-group',{staticStyle:{\"margin-bottom\":\"10px\",\"min-width\":\"240px\"},attrs:{\"id\":criteria.Id},on:{\"input\":function($event){return _vm.saveReview(criteriaIndex)}},model:{value:(_vm.criteriaFeedback[criteriaIndex].Mark),callback:function ($$v) {_vm.$set(_vm.criteriaFeedback[criteriaIndex], \"Mark\", $$v)},expression:\"criteriaFeedback[criteriaIndex].Mark\"}},_vm._l((criteria.RubricCriteriaMilestones.slice()),function(milestone){return _c('el-tooltip',{key:milestone.Id,staticClass:\"item\",attrs:{\"effect\":\"light\",\"placement\":\"top\"}},[_c('div',{staticStyle:{\"max-width\":\"500px\"},attrs:{\"slot\":\"content\"},slot:\"content\"},[_vm._v(\"\\n \"+_vm._s(milestone.Description)+\"\\n \")]),_c('el-radio-button',{key:milestone.Id,attrs:{\"label\":milestone.Value}})],1)}),1):_vm._e()],1),_c('div',[(criteria.UseAsGrade || criteria.UseAsTextComment)?_c('el-input',{staticClass:\"criteria-comment\",attrs:{\"criteria-index\":criteriaIndex,\"type\":\"textarea\",\"placeholder\":\"Enter text here\",\"rows\":3,\"maxlength\":8000},model:{value:(_vm.criteriaFeedback[criteriaIndex].Comment),callback:function ($$v) {_vm.$set(_vm.criteriaFeedback[criteriaIndex], \"Comment\", $$v)},expression:\"criteriaFeedback[criteriaIndex].Comment\"}}):_vm._e()],1)])])}),1)])])])])])])],1)])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n <div>\r\n <div id=\"filter\" style=\"height: 50px; border-bottom: #cccccc solid 1px;\">\r\n <div class=\"filter-divider\" style=\"width: 220px;\">\r\n <el-button\r\n style=\"text-align: center; -webkit-box-shadow: none; box-shadow: none;\r\n display: inline-block; padding: 0px; padding-right: 10px; vertical-align: middle;\r\n -ms-touch-action: manipulation; touch-action: manipulation;\r\n cursor: pointer; border: 0 none; background: none;\"\r\n title=\"Back to Student Submissions\"\r\n @click=\"backToStudentSubmissions()\"\r\n >\r\n <i class=\"fas fa-chevron-left\" style=\"font-size: 25px;\" />\r\n </el-button>\r\n <!-- Project Selection -->\r\n <el-tooltip class=\"item\" effect=\"light\" content=\"Select a project\" placement=\"bottom\">\r\n <el-select\r\n id=\"assignments-selection\"\r\n v-model=\"currentAssignment\"\r\n value-key=\"Id\"\r\n filterable\r\n placeholder=\"Select Project\"\r\n no-match-text=\"No Matching Data\"\r\n no-data-text=\"No data\"\r\n loading-text=\"Loading\"\r\n style=\"margin-top: 5px; width: 80%;\"\r\n @change=\"onAssignmentChange()\"\r\n >\r\n <el-option\r\n v-for=\"item in assignments\"\r\n :key=\"item.Id\"\r\n :label=\"item.AssignmentName\"\r\n :value=\"item\"\r\n />\r\n </el-select>\r\n </el-tooltip>\r\n </div>\r\n <!-- Student or Group Selection -->\r\n <div>\r\n <div v-if=\"!isGroupProject\" class=\"filter-divider\" style=\"width: 285px;\">\r\n <el-button\r\n style=\"text-align: center; -webkit-box-shadow: none; box-shadow: none;\r\n display: inline-block; padding: 0px 10px; vertical-align: middle;\r\n -ms-touch-action: manipulation; touch-action: manipulation;\r\n cursor: pointer; border: 0 none; background: none;\"\r\n :disabled=\"prevBtnDisable\"\r\n title=\"Previous student\"\r\n @click=\"previousStudent\"\r\n >\r\n <i class=\"fas fa-arrow-left\" style=\"font-size: 25px;\" />\r\n </el-button>\r\n\r\n <el-tooltip class=\"item\" effect=\"light\" content=\"Select a student\" placement=\"bottom\">\r\n <el-select\r\n id=\"students-selection\"\r\n v-model=\"currentStudent\"\r\n value-key=\"UserName\"\r\n filterable\r\n placeholder=\"Select Student\"\r\n style=\"margin-top: 5px; width: 200px;\"\r\n @change=\"onStudentChange()\"\r\n >\r\n <el-option\r\n v-for=\"item in students\"\r\n :key=\"item.UserName\"\r\n :label=\"item.LastName + ', ' + item.FirstName\"\r\n :value=\"item\"\r\n />\r\n </el-select>\r\n </el-tooltip>\r\n\r\n <el-button\r\n style=\"text-align: center; -webkit-box-shadow: none; box-shadow: none;\r\n display: inline-block; padding: 0px 10px; vertical-align: middle;\r\n -ms-touch-action: manipulation; touch-action: manipulation;\r\n cursor: pointer; border: 0 none; background: none;\"\r\n :disabled=\"nextBtnDisable\"\r\n title=\"Next student\"\r\n @click=\"nextStudent\"\r\n >\r\n <i style=\"font-size: 25px;\" class=\"fas fa-arrow-right\" />\r\n </el-button>\r\n </div>\r\n\r\n <div v-else class=\"filter-divider\" style=\"width: 285px;\">\r\n <el-button\r\n style=\"text-align: center; -webkit-box-shadow: none; box-shadow: none;\r\n display: inline-block; padding: 0px 10px; vertical-align: middle;\r\n -ms-touch-action: manipulation; touch-action: manipulation;\r\n cursor: pointer; border: 0 none; background: none;\"\r\n :disabled=\"prevGroupBtnDisable\"\r\n title=\"Previous Group\"\r\n @click=\"previousGroup\"\r\n >\r\n <i class=\"fas fa-arrow-left\" style=\"font-size: 25px;\" />\r\n </el-button>\r\n\r\n <el-tooltip class=\"item\" effect=\"light\" content=\"Select a group\" placement=\"bottom\">\r\n <el-select\r\n id=\"groups-selection\"\r\n v-model=\"currentGroup\"\r\n value-key=\"GroupId\"\r\n filterable\r\n placeholder=\"Select Group\"\r\n style=\"margin-top: 5px; width: 200px;\"\r\n @change=\"onGroupChange()\"\r\n >\r\n <el-option\r\n v-for=\"item in groups\"\r\n :key=\"item.GroupId\"\r\n :label=\"item.GroupName\"\r\n :value=\"item\"\r\n />\r\n </el-select>\r\n </el-tooltip>\r\n\r\n <el-button\r\n style=\"text-align: center; -webkit-box-shadow: none; box-shadow: none;\r\n display: inline-block; padding: 0px 10px; vertical-align: middle;\r\n -ms-touch-action: manipulation; touch-action: manipulation;\r\n cursor: pointer; border: 0 none; background: none;\"\r\n :disabled=\"nextGroupBtnDisable\"\r\n title=\"Next Group\"\r\n @click=\"nextGroup\"\r\n >\r\n <i style=\"font-size: 25px;\" class=\"fas fa-arrow-right\" />\r\n </el-button>\r\n </div>\r\n </div>\r\n\r\n <div style=\"width: 350px; float:left;\">\r\n <el-tooltip class=\"item\" effect=\"light\" content=\"Submission to view\" placement=\"bottom\">\r\n <el-select\r\n id=\"submissions-selection\"\r\n v-model=\"currentSubmission\"\r\n value-key=\"docId\"\r\n filterable\r\n placeholder=\"Select Submission\"\r\n no-match-text=\"No Matching Data\"\r\n no-data-text=\"No data\"\r\n loading-text=\"Loading\"\r\n style=\"margin-top: 5px; margin-left: 10px; margin-right: 10px; width: 200px;\"\r\n @change=\"onSubmissionChange()\"\r\n >\r\n <el-option\r\n v-for=\"item in submissions\"\r\n :key=\"item.docId\"\r\n :label=\"item.uploadedDate | formatDate\"\r\n :value=\"item\"\r\n />\r\n </el-select>\r\n </el-tooltip>\r\n\r\n <!-- <el-tooltip v-if=\"docId && onTime\" class=\"item\" effect=\"light\" :content=\"'Submitted on time at ' + formatDate(uploadedDate) + '. Due date is ' + formatDate(dueDate) + '.'\" placement=\"bottom\">\r\n\t\t\t\t\t<el-tag type=\"success\" style=\"line-height: 38px; height: 38px;\">\r\n\t\t\t\t\t\tOn Time\r\n\t\t\t\t\t</el-tag>\r\n\t\t\t\t</el-tooltip>\r\n\t\t\t\t<el-tooltip v-else-if=\"docId && !onTime\" class=\"item\" effect=\"light\" :content=\"'Submitted late at ' + formatDate(uploadedDate) + '. Due date is ' + formatDate(dueDate) + '.'\" placement=\"bottom\">\r\n\t\t\t\t\t<el-tag type=\"danger\" style=\"line-height: 38px; height: 38px;\">\r\n\t\t\t\t\t\tLate\r\n\t\t\t\t\t</el-tag>\r\n\t\t\t\t</el-tooltip> -->\r\n <el-tooltip\r\n v-if=\"docId && onTime\"\r\n class=\"item\"\r\n effect=\"light\"\r\n :content=\"'Submitted on time at ' + formatDate(uploadedDate) + '. Due date is ' + formatDate(dueDate) + '.'\"\r\n placement=\"bottom\"\r\n >\r\n <i class=\"far fa-calendar-check\" style=\"font-size: 30px; color: rgb(59, 146, 120); position: absolute; margin-top: 10px;\" />\r\n </el-tooltip>\r\n <el-tooltip\r\n v-else-if=\"docId && !onTime\"\r\n class=\"item\"\r\n effect=\"light\"\r\n :content=\"'Submitted late at ' + formatDate(uploadedDate) + '. Due date is ' + formatDate(dueDate) + '.'\"\r\n placement=\"bottom\"\r\n >\r\n <i class=\"far fa-calendar-times\" style=\"font-size: 30px; color: #f57575; position: absolute; margin-top: 10px;\" />\r\n </el-tooltip>\r\n </div>\r\n <div style=\"float:right; position: absolute; right: 0;\">\r\n <el-tooltip\r\n id=\"savedMessage\"\r\n class=\"item\"\r\n effect=\"light\"\r\n placement=\"bottom\"\r\n :content=\"'Your feedback was successfully saved.'\"\r\n style=\"display: none;\"\r\n >\r\n <el-tag type=\"success\" style=\"line-height: 40px; height: 40px; margin-right: 5px;\">\r\n Saved!\r\n </el-tag>\r\n </el-tooltip>\r\n\r\n <el-button\r\n v-if=\"review && clearBtnEnabled\"\r\n class=\"submit-button\"\r\n style=\"margin-top: 5px; margin-right: 5px;\"\r\n title=\"Clear all feedback to start over\"\r\n @click=\"clearFeedback()\"\r\n >\r\n Clear\r\n </el-button>\r\n <el-button\r\n v-if=\"review\"\r\n class=\"submit-button\"\r\n :type=\"statusType\"\r\n style=\"margin-top: 5px; margin-right: 5px;\"\r\n :title=\"submitTooltip\"\r\n @click=\"submitReview()\"\r\n >\r\n Submit\r\n </el-button>\r\n <el-button\r\n v-else-if=\"!submitButtonHidden\"\r\n class=\"submit-button\"\r\n type=\"info\"\r\n :disabled=\"true\"\r\n style=\"margin-top: 5px; margin-right: 5px;\"\r\n >\r\n Submit\r\n </el-button>\r\n </div>\r\n </div>\r\n <div id=\"full_width_container\" :class=\"fullWidth\">\r\n <rs-panes split-to=\"columns\" :allow-resize=\"true\" units=\"percents\" :size=\"docColSize\" :min-size=\"0\" :resizer-thickness=\"6\">\r\n <div slot=\"firstPane\" style=\"height: 100%;\">\r\n <div id=\"left_side\" class=\"full_height\">\r\n <div id=\"left_side_inner\">\r\n <div id=\"submissions_container\">\r\n <nav class=\"ViewerControls ViewerControls--with-annotations\">\r\n <div class=\"ViewerControls-primary\">\r\n <div class=\"ViewerControls--download\">\r\n <div style=\"min-width: 50px; text-align: center;\">\r\n <div>\r\n\t\t\t\t\t\t<div style=\"float:left;\">\r\n <button class=\"download-button--button\" title=\"Download annotated PDF\" aria-label=\"Download annotated PDF\" @click=\"downloadPdf()\">\r\n <i style=\"font-size: 22px;\" class=\"fas fa-file-download\" />\r\n </button>\r\n </div>\r\n\t\t\t\t\t\t<div v-if=\"!submitButtonHidden\">\r\n <button class=\"download-button--button\" title=\"Save annotations\" aria-label=\"Save annotations\" @click=\"saveAnnotation()\">\r\n <i style=\"font-size: 24px; margin-top: 2px;\" class=\"fas fa-save\" />\r\n </button>\r\n </div>\r\n\t\t\t\t\t\t</div>\r\n </div>\r\n </div><div class=\"ViewerControls--title\" /><div class=\"ViewerControls--page-controls\">\r\n <span class=\"ViewerControls--page-number\" style=\"display: flex; align-items: center;\">\r\n Page\r\n <div style=\"padding-left: 10px; padding-right: 10px;\">\r\n <el-input-number v-model=\"pageNum\" :min=\"1\" :max=\"totalPageNumber\" size=\"small\" label=\"Page\" @change=\"changePage\" />\r\n </div>\r\n of {{ totalPageNumber }}\r\n </span>\r\n <svg viewBox=\"0 0 2 26\" style=\"margin-left: 12px; margin-right: 0px; width: 2px; height: 26px; color: rgb(171, 179, 186);\">\r\n <line stroke=\"currentColor\" stroke-dasharray=\"2, 1\" stroke-width=\"1\" x1=\"1\" y1=\"0\" x2=\"1\" y2=\"26\" />\r\n </svg>\r\n </div>\r\n <nav class=\"DocumentControls\">\r\n <div style=\"display: inline-flex; align-items: center; user-select: none;\">\r\n <button class=\"AnnotationControlButton\" aria-label=\"Zoom Out\" title=\"Zoom Out\" aria-disabled=\"false\" @click=\"zoomOut\">\r\n <i style=\"font-size: 20px;\" class=\"fas fa-minus\" />\r\n </button>\r\n <span aria-hidden=\"true\" style=\"text-transform: uppercase; font-size: 0.75rem; color: rgb(238, 238, 239); margin-left: 4px; margin-right: 4px;\">\r\n Zoom\r\n </span>\r\n <button class=\"AnnotationControlButton\" aria-label=\"Zoom In\" title=\"Zoom In\" aria-disabled=\"false\" @click=\"zoomIn\">\r\n <i style=\"font-size: 20px;\" class=\"fas fa-plus\" />\r\n </button>\r\n </div>\r\n <svg viewBox=\"0 0 2 26\" style=\"margin-left: 2px; margin-right: 4px; width: 2px; height: 26px; color: rgb(171, 179, 186);\">\r\n <line stroke=\"currentColor\" stroke-dasharray=\"2, 1\" stroke-width=\"1\" x1=\"1\" y1=\"0\" x2=\"1\" y2=\"26\" />\r\n </svg>\r\n <div class=\"ViewerControls--page-controls\">\r\n <button aria-label=\"Enter Full Screen\" class=\"AnnotationControlButton full-screen-button\" title=\"Zoom Fit Width\" @click=\"zoomFitWidth\">\r\n <i style=\"font-size: 20px;\" class=\"fas fa-expand\" />\r\n </button>\r\n <svg viewBox=\"0 0 2 26\" style=\"margin-left: 4px; margin-right: 4px; width: 2px; height: 26px; color: rgb(171, 179, 186);\">\r\n <line stroke=\"currentColor\" stroke-dasharray=\"2, 1\" stroke-width=\"1\" x1=\"1\" y1=\"0\" x2=\"1\" y2=\"26\" />\r\n </svg>\r\n </div>\r\n </nav>\r\n <nav v-if=\"!submitButtonHidden\" class=\"AnnotationControls\">\r\n <button aria-label=\"Enter selection mode\" class=\"AnnotationControlButton\" title=\"Selection\" @click=\"selectTextPdf\">\r\n <div class=\"AnnotationControlButton-outer\">\r\n <div class=\"AnnotationControlButton-inner\">\r\n <i style=\"font-size: 20px;\" class=\"fas fa-mouse-pointer\" />\r\n </div>\r\n </div>\r\n </button>\r\n <button aria-label=\"highlight annotation\" class=\"AnnotationControlButton\" title=\"Highlight annotation\" @click=\"highlightPdf\">\r\n <div class=\"AnnotationControlButton-outer\">\r\n <div class=\"AnnotationControlButton-inner\">\r\n <i style=\"font-size: 20px;\" class=\"fas fa-highlighter\" />\r\n </div>\r\n </div>\r\n </button>\r\n <!-- <button aria-label=\"freetext annotation\" class=\"AnnotationControlButton\" title=\"Freetext annotation\" @click=\"freeTextPdf\">\r\n\t\t\t\t\t\t\t\t\t\t<div class=\"AnnotationControlButton-outer\">\r\n\t\t\t\t\t\t\t\t\t\t\t<div class=\"AnnotationControlButton-inner\">\r\n\t\t\t\t\t\t\t\t\t\t\t\t<i style=\"font-size: 20px;\" class=\"fas fa-font\" />\r\n\t\t\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t\t</button> -->\r\n <button aria-label=\"strikeout annotation\" class=\"AnnotationControlButton\" title=\"Strikeout annotation\" @click=\"strikeOutPdf\">\r\n <div class=\"AnnotationControlButton-outer\">\r\n <div class=\"AnnotationControlButton-inner\">\r\n <i style=\"font-size: 20px;\" class=\"fas fa-strikethrough\" />\r\n </div>\r\n </div>\r\n </button>\r\n <button aria-label=\"free draw annotation\" class=\"AnnotationControlButton\" title=\"Free draw annotation\" @click=\"freeDrawPdf\">\r\n <div class=\"AnnotationControlButton-outer\">\r\n <div class=\"AnnotationControlButton-inner\">\r\n <i style=\"font-size: 20px;\" class=\"fas fa-paint-brush\" />\r\n </div>\r\n </div>\r\n </button>\r\n <button aria-label=\"Sticky note annotation\" class=\"AnnotationControlButton\" title=\"Sticky note annotation\" @click=\"stickyNotePdf\">\r\n <div class=\"AnnotationControlButton-outer\">\r\n <div class=\"AnnotationControlButton-inner\">\r\n <i style=\"font-size: 20px;\" class=\"far fa-sticky-note\" />\r\n </div>\r\n </div>\r\n </button>\r\n </nav>\r\n </div>\r\n </nav>\r\n\r\n <div id=\"iframe_holder\" style=\"display: block; height: calc(100% - 45px);\">\r\n <div id=\"pdfDocument\" style=\"resize: vertical; height: 100%;\" />\r\n </div>\r\n </div>\r\n </div>\r\n <div id=\"resize_overlay\" style=\"display: none; position: relative;top: -100%; z-index: 1; height: 100%; width: 100%; border: 0 none;\" />\r\n </div>\r\n </div>\r\n\r\n <div slot=\"secondPane\">\r\n <div id=\"right_side\" class=\"full_height\">\r\n <!-- <div id=\"width_resizer\" class=\"full_height ui-draggable\" /> -->\r\n <div class=\"right_side_content\">\r\n <div id=\"rightside_inner\" class=\"full_height\">\r\n <div id=\"rubric\">\r\n <div style=\"height: 100%; overflow: auto;\">\r\n <el-card v-for=\"(criteria, criteriaIndex) in rubricCriteria\" :key=\"criteria.Id\" style=\"margin-bottom: 5px; margin-left: 3px;\">\r\n <div slot=\"header\" class=\"clearfix\">\r\n <span style=\"font-size: 16px; font-weight: bold;\">\r\n {{ criteria.CriteriaName }}\r\n </span>\r\n <div style=\"font-size: 14px; margin-top: 10px;\">\r\n <el-input\r\n v-if=\"criteria.Description && criteria.Description != ''\"\r\n :value=\"criteria.Description\"\r\n :readonly=\"true\"\r\n type=\"textarea\"\r\n :autosize=\"true\"\r\n :maxlength=\"8000\"\r\n class=\"criteria-description\"\r\n style=\"border: none;\"\r\n />\r\n </div>\r\n </div>\r\n <div>\r\n <div v-if=\"termCode == '201908'\">\r\n <el-radio-group\r\n v-if=\"criteria.UseAsGrade\"\r\n :id=\"criteria.Id\"\r\n v-model=\"criteriaFeedback[criteriaIndex].Mark\"\r\n style=\"margin-bottom: 10px; min-width: 240px;\"\r\n @input=\"saveReview(criteriaIndex)\"\r\n >\r\n <el-tooltip\r\n v-for=\"(milestone, key) in criteria.RubricCriteriaMilestones.slice()\"\r\n :key=\"milestone.Id\"\r\n class=\"item\"\r\n effect=\"light\"\r\n placement=\"top\"\r\n >\r\n <div slot=\"content\" style=\"max-width: 500px;\">\r\n {{ milestone.Description }}\r\n </div>\r\n <el-radio-button\r\n :key=\"milestone.Id\"\r\n :label=\"criteria.RubricCriteriaMilestones.length - key\"\r\n />\r\n </el-tooltip>\r\n </el-radio-group>\r\n </div>\r\n <div v-else>\r\n <el-radio-group\r\n v-if=\"criteria.UseAsGrade\"\r\n :id=\"criteria.Id\"\r\n v-model=\"criteriaFeedback[criteriaIndex].Mark\"\r\n style=\"margin-bottom: 10px; min-width: 240px;\"\r\n @input=\"saveReview(criteriaIndex)\"\r\n >\r\n <el-tooltip\r\n v-for=\"milestone in criteria.RubricCriteriaMilestones.slice()\"\r\n :key=\"milestone.Id\"\r\n class=\"item\"\r\n effect=\"light\"\r\n placement=\"top\"\r\n >\r\n <div slot=\"content\" style=\"max-width: 500px;\">\r\n {{ milestone.Description }}\r\n </div>\r\n <el-radio-button\r\n :key=\"milestone.Id\"\r\n :label=\"milestone.Value\"\r\n />\r\n </el-tooltip>\r\n </el-radio-group>\r\n </div>\r\n <div>\r\n <el-input\r\n v-if=\"criteria.UseAsGrade || criteria.UseAsTextComment\"\r\n v-model=\"criteriaFeedback[criteriaIndex].Comment\"\r\n :criteria-index=\"criteriaIndex\"\r\n type=\"textarea\"\r\n placeholder=\"Enter text here\"\r\n :rows=\"3\"\r\n :maxlength=\"8000\"\r\n class=\"criteria-comment\"\r\n />\r\n </div>\r\n </div>\r\n </el-card>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </rs-panes>\r\n </div>\r\n </div>\r\n</template>\r\n\r\n<script>\r\nimport * as pdfService from '@/services/pdf.service'\r\nimport * as submissionService from '@/services/submission.service'\r\nimport * as reviewService from '@/services/review.service'\r\nimport * as rubricService from '@/services/rubric.service'\r\nimport * as dateUtils from '@/utils/date-utils'\r\nimport ResSplitPane from 'vue-resize-split-pane'\r\nimport * as urlUtils from '@/utils/url-utils'\r\nimport { Notification } from 'element-ui'\r\n// Handle UI and logics for the Instructor Review page.\r\nexport default {\r\n\tcomponents: {\r\n\t\t'rs-panes': ResSplitPane\r\n\t},\r\n\tfilters: {\r\n\t\tformatDate(dateStr) {\r\n\t\t\treturn dateUtils.formatDate(dateStr)\r\n\t\t}\r\n\t},\r\n\tdata() {\r\n\t\treturn {\r\n\t\t\ttermCode: this.$store.state.enrollment.termCode,\r\n\t\t\torgCode: this.$store.state.enrollment.orgCode,\r\n\t\t\tclassCode: this.$store.state.enrollment.currentCourse.ClassCode,\r\n\t\t\tassignmentId: null,\r\n\t\t\ttaskId: null,\r\n\t\t\trevieweeId: null,\r\n\t\t\treviewerId: null,\r\n\t\t\treviewerRole: 'Instructor',\r\n\t\t\tassignments: [],\r\n\t\t\tdocId: null,\r\n\t\t\tcurrentAssignment: null,\r\n\t\t\tcurrentTask: null,\r\n\t\t\tstudents: null,\r\n\t\t\tcurrentStudent: null,\r\n\t\t\tonTime: false,\r\n\t\t\tuploadedDate: null,\r\n\t\t\tdueDate: null,\r\n\t\t\tsubmissions: [],\r\n\t\t\tcurrentSubmission: null,\r\n\t\t\trubricCriteria: null,\r\n\t\t\tcriteriaFeedback: null,\r\n\t\t\treview: null,\r\n\t\t\tmyapi: null,\r\n\t\t\tpageNum: 1,\r\n\t\t\ttotalPageNumber: null,\r\n\t\t\tzoomValue: 140,\r\n\t\t\tprevBtnDisable: false,\r\n\t\t\tnextBtnDisable: false,\r\n\t\t\tprevGroupBtnDisable: false,\r\n\t\t\tnextGroupBtnDisable: false,\r\n\t\t\tteams: null,\r\n\t\t\tisGroupProject: false,\r\n\t\t\tgroups: [],\r\n\t\t\tcurrentGroup: null,\r\n\t\t\t// groupId: null,\r\n\t\t\treviewType: null,\r\n\t\t\tstatusType: 'danger',\r\n\t\t\tsubmitTooltip: 'Your feedback is saved, but has not yet been submitted.',\r\n\t\t\teventAdded: false,\r\n\t\t\tcIndex: null,\r\n\t\t\tclearBtnEnabled: false,\r\n\t\t\tdocColSize: 70,\r\n\t\t\tsubmitButtonHidden: false\r\n\t\t}\r\n\t},\r\n\tcomputed: {\r\n\t\tfullWidth() {\r\n\t\t\tconst mainNav = document.querySelector('#main-nav')\r\n\t\t\tif (mainNav && !mainNav.classList.contains('full-width')) {\r\n\t\t\t\treturn ''\r\n\t\t\t} else { return 'full-width' }\r\n\t\t}\r\n\t},\r\n\tmounted() {\r\n\t\tconst resizer = document.querySelector('.columnsres')\r\n\t\tresizer.addEventListener('mousedown', function(e) {\r\n\t\t\tdocument.querySelector('#resize_overlay').style.display = 'block'\r\n\t\t})\r\n\t\tdocument.addEventListener('mouseup', function(e) {\r\n\t\t\tdocument.querySelector('#resize_overlay').style.display = 'none'\r\n\t\t})\r\n\t\tconst that = this\r\n\t\twindow.onbeforeunload = function(e) {\r\n\t\t\tthat.saveReviewBeforeRefresh()\r\n\t\t\treturn\r\n\t\t}\r\n\t},\r\n\tcreated() {\r\n\t\t// Get necessary information from query string\r\n\t\tthis.assignmentId = this.getUrlParameter('assignmentId')\r\n\t\tthis.taskId = this.getUrlParameter('taskId')\r\n\t\tthis.revieweeId = this.getUrlParameter('revieweeId')\r\n\t\t// this.reviewerId = this.getUrlParameter('reviewerId');\r\n\t\tthis.reviewerId = this.$store.state.auth.user.UserName\r\n\t\t// Set up assignments selection\r\n\t\tthis.setUpAssignmentSelection()\r\n\t},\r\n\tmethods: {\r\n\t\tclearFeedback() {\r\n\t\t\tif (this.review != null) {\r\n\t\t\t\tthis.$confirm('All of your feedback will be removed. Continue?', 'Warning', {\r\n\t\t\t\t\tconfirmButtonText: 'OK',\r\n\t\t\t\t\tcancelButtonText: 'Cancel',\r\n\t\t\t\t\ttype: 'warning'\r\n\t\t\t\t}).then(() => {\r\n\t\t\t\t\t// Update this review\r\n\t\t\t\t\tconst review = this.review\r\n\t\t\t\t\treview.LastActivityDate = this.getlastActivityDate()\r\n\r\n\t\t\t\t\tthis.criteriaFeedback.forEach(element => {\r\n\t\t\t\t\t\telement.Mark = 999\r\n\t\t\t\t\t\telement.Comment = ''\r\n\t\t\t\t\t\telement.AudioPath = null\r\n\t\t\t\t\t\telement.LetterGrade = null\r\n\t\t\t\t\t})\r\n\t\t\t\t\tconst lastCriteriaScore = this.criteriaFeedback[this.criteriaFeedback.length - 1].Mark\r\n\t\t\t\t\treview.HolisticScore = lastCriteriaScore == null ? 999 : lastCriteriaScore\r\n\t\t\t\t\tconsole.log(review)\r\n\t\t\t\t\treviewService.updateReview(review)\r\n\t\t\t\t\t\t.then(updatedReview => {\r\n\t\t\t\t\t\t\tthis.review = updatedReview\r\n\t\t\t\t\t\t\tthis.criteriaFeedback = updatedReview.ReviewData\r\n\t\t\t\t\t\t\tthis.statusType = 'primary'\r\n\t\t\t\t\t\t\tthis.submitTooltip = 'Your feedback is cleared.'\r\n\t\t\t\t\t\t\tNotification.success({\r\n\t\t\t\t\t\t\t\tduration: 6000,\r\n\t\t\t\t\t\t\t\ttitle: 'Success',\r\n\t\t\t\t\t\t\t\tmessage: 'Your feedback was successfully cleared.'\r\n\t\t\t\t\t\t\t})\r\n\t\t\t\t\t\t\tthis.clearBtnEnabled = false\r\n\t\t\t\t\t\t}).catch((error) => {\r\n\t\t\t\t\t\t\tconsole.log(error)\r\n\t\t\t\t\t\t\tNotification.error({\r\n\t\t\t\t\t\t\t\tduration: 6000,\r\n\t\t\t\t\t\t\t\ttitle: 'Error',\r\n\t\t\t\t\t\t\t\tmessage: 'Your feedback was not cleared.'\r\n\t\t\t\t\t\t\t})\r\n\t\t\t\t\t\t})\r\n\t\t\t\t}).catch(() => {\r\n\t\t\t\t\tthis.$message({\r\n\t\t\t\t\t\ttype: 'info',\r\n\t\t\t\t\t\tmessage: 'Clear feedback canceled!'\r\n\t\t\t\t\t})\r\n\t\t\t\t})\r\n\t\t\t}\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Format a date value.\r\n\t\t// @arg The date value to be formatted.\r\n\t\tformatDate(date) {\r\n\t\t\tconst dateStr = this.getDateStr(date)\r\n\t\t\treturn dateUtils.formatDate(dateStr)\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Setup project selection drop down.\r\n\t\tasync setUpAssignmentSelection() {\r\n\t\t\t// Get all assignments that have uploaded papers\r\n\t\t\tconst assignments = await submissionService.getUploadedAssignments(this.termCode, this.orgCode, this.classCode)\r\n\t\t\tif (assignments.length > 0) {\r\n\t\t\t\tthis.assignments = assignments\r\n\t\t\t\t//this.assignments = assignments.filter(function(el) {\r\n\t\t\t\t//\treturn el.Tasks.filter(t => t.Type == 'instructor_review') != null && el.Tasks.filter(t => t.Type == 'instructor_review').length > 0\r\n\t\t\t\t//})\r\n\t\t\t\tconsole.log(this.assignments)\r\n\t\t\t\tconst that = this\r\n\t\t\t\tif (this.assignmentId) {\r\n\t\t\t\t\tthis.currentAssignment = assignments.find(function(el) {\r\n\t\t\t\t\t\treturn el.Id == that.assignmentId\r\n\t\t\t\t\t})\r\n\r\n\t\t\t\t\tvar tasks = this.currentAssignment.Tasks.filter(t => t.Type == 'instructor_review')\r\n\t\t\t\t\tif (tasks != null && tasks.length > 0) {\r\n\t\t\t\t\t\tthis.currentTask = tasks[0]\r\n\t\t\t\t\t\tthis.taskId = this.currentTask.Id\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tthis.currentTask = null\r\n\t\t\t\t\t\tthis.taskId = null\r\n\t\t\t\t\t}\r\n\t\t\t\t} else {\r\n\t\t\t\t\tthis.currentAssignment = assignments[0]\r\n\t\t\t\t\tthis.assignmentId = this.currentAssignment.Id\r\n\r\n\t\t\t\t\tif (this.currentAssignment.Tasks != null && this.currentAssignment.Tasks.length > 0) {\r\n\t\t\t\t\t\tvar instructorReviewTasks = this.currentAssignment.Tasks.filter(t => t.Type == 'instructor_review')\r\n\t\t\t\t\t\tif (instructorReviewTasks != null && instructorReviewTasks.length > 0) {\r\n\t\t\t\t\t\t\tthis.currentTask = instructorReviewTasks[0]\r\n\t\t\t\t\t\t\tthis.taskId = this.currentTask.Id\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\tthis.currentTask = null\r\n\t\t\t\t\t\t\tthis.taskId = null\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (this.currentAssignment) {\r\n\t\t\t\t\tif (this.currentAssignment.IsGroupAssignment) {\r\n\t\t\t\t\t\tthis.isGroupProject = true\r\n\t\t\t\t\t\t// set up group selection\r\n\t\t\t\t\t\tconst groupSetupComplete = await this.setUpGroupSelection()\r\n\t\t\t\t\t\tif (groupSetupComplete) { this.displayDocumentAndReview() } // Set up submissions selection, document, and rubric\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t // Set up students selection\r\n\t\t\t\t\t\tconst studentSetupComplete = await this.setUpStudentSelection()\r\n\t\t\t\t\t\tif (studentSetupComplete) { this.displayDocumentAndReview() } // Set up submissions selection, document, and rubric\r\n\t\t\t\t\t}\r\n\t\t\t\t} else {\r\n\t\t\t\t\tNotification.error({\r\n\t\t\t\t\t\tduration: 6000,\r\n\t\t\t\t\t\ttitle: 'Error',\r\n\t\t\t\t\t\tmessage: 'No submission found!'\r\n\t\t\t\t\t})\r\n\t\t\t\t\tdocument.getElementById('full_width_container').style.display = 'none'\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tNotification.error({\r\n\t\t\t\t\tduration: 6000,\r\n\t\t\t\t\ttitle: 'Error',\r\n\t\t\t\t\tmessage: 'No submission found!'\r\n\t\t\t\t})\r\n\t\t\t\tdocument.getElementById('full_width_container').style.display = 'none'\r\n\t\t\t}\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Setup student selection drop down.\r\n\t\tasync setUpStudentSelection() {\r\n\t\t\t// Get all students who have uploaded paper for this assignment\r\n\t\t\tconst uploadedStudents = await submissionService.getUploadedStudents(this.termCode,\r\n\t\t\t\tthis.orgCode, this.classCode, this.assignmentId)\r\n\t\t\tconst that = this\r\n\t\t\tif (uploadedStudents.length > 0) {\r\n\t\t\t\tthis.students = uploadedStudents\r\n\t\t\t\tif (this.revieweeId) {\r\n\t\t\t\t\tconst thisReviewee = uploadedStudents.find(function(el) {\r\n\t\t\t\t\t\treturn el.UserName == that.revieweeId\r\n\t\t\t\t\t})\r\n\t\t\t\t\tif (thisReviewee != undefined) { this.currentStudent = thisReviewee } else {\r\n\t\t\t\t\t\tthis.currentStudent = uploadedStudents[0]\r\n\t\t\t\t\t\tthis.revieweeId = uploadedStudents[0].UserName\r\n\t\t\t\t\t}\r\n\t\t\t\t} else {\r\n\t\t\t\t\tthis.currentStudent = uploadedStudents[0]\r\n\t\t\t\t\tthis.revieweeId = uploadedStudents[0].UserName\r\n\t\t\t\t}\r\n\t\t\t\t// Set up previous and next buttons\r\n\t\t\t\tconst thisIndex = this.students.findIndex(x => x.UserName == this.currentStudent.UserName)\r\n\t\t\t\tif (thisIndex == 0) {\r\n\t\t\t\t\tthis.prevBtnDisable = true\r\n\t\t\t\t}\r\n\t\t\t\tif (thisIndex == this.students.length - 1) {\r\n\t\t\t\t\tthis.nextBtnDisable = true\r\n\t\t\t\t}\r\n\t\t\t\treturn true\r\n\t\t\t} else {\r\n\t\t\t\tthis.students = []\r\n\t\t\t\tdocument.getElementById('full_width_container').style.display = 'none'\r\n\t\t\t\tNotification.error({\r\n\t\t\t\t\tduration: 6000,\r\n\t\t\t\t\ttitle: 'Error',\r\n\t\t\t\t\tmessage: 'No submission found!'\r\n\t\t\t\t})\r\n\t\t\t\treturn false\r\n\t\t\t}\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Setup group selection drop down.\r\n\t\tasync setUpGroupSelection() {\r\n\t\t\tconst that = this\r\n\t\t\tconst groups = await submissionService.getGroupSubmissionsStatus(this.termCode, this.orgCode, this.classCode, this.assignmentId)\r\n\t\t\tif (groups && groups.length > 0) {\r\n\t\t\t\tconst submittedGroups = groups.filter(function(el) {\r\n\t\t\t\t\treturn el.SubmissionStatus == 'Submitted'\r\n\t\t\t\t})\r\n\t\t\t\tif (submittedGroups && submittedGroups.length > 0) {\r\n\t\t\t\t\tthis.groups = submittedGroups\r\n\t\t\t\t\tif (this.revieweeId && !isNaN(this.revieweeId)) {\r\n\t\t\t\t\t\tthis.currentGroup = submittedGroups.find(function(el) {\r\n\t\t\t\t\t\t\treturn el.GroupId == that.revieweeId\r\n\t\t\t\t\t\t})\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tthis.currentGroup = submittedGroups[0]\r\n\t\t\t\t\t\tthis.revieweeId = this.currentGroup.GroupId\r\n\t\t\t\t\t}\r\n\t\t\t\t\t// Set up previous and next buttons\r\n\t\t\t\t\tconst thisIndex = this.groups.findIndex(x => x.GroupId == this.currentGroup.GroupId)\r\n\t\t\t\t\tif (thisIndex == 0) {\r\n\t\t\t\t\t\tthis.prevGroupBtnDisable = true\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif (thisIndex == this.groups.length - 1) {\r\n\t\t\t\t\t\tthis.nextGroupBtnDisable = true\r\n\t\t\t\t\t}\r\n\t\t\t\t\treturn true\r\n\t\t\t\t} else {\r\n\t\t\t\t\tdocument.getElementById('full_width_container').style.display = 'none'\r\n\t\t\t\t\tNotification.error({\r\n\t\t\t\t\t\tduration: 6000,\r\n\t\t\t\t\t\ttitle: 'Error',\r\n\t\t\t\t\t\tmessage: 'No group found!'\r\n\t\t\t\t\t})\r\n\t\t\t\t\treturn false\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tdocument.getElementById('full_width_container').style.display = 'none'\r\n\t\t\t\tNotification.error({\r\n\t\t\t\t\tduration: 6000,\r\n\t\t\t\t\ttitle: 'Error',\r\n\t\t\t\t\tmessage: 'No group found!'\r\n\t\t\t\t})\r\n\t\t\t\treturn false\r\n\t\t\t}\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Display document and review.\r\n\t\tasync displayDocumentAndReview() {\r\n\t\t\tlet latestReview\r\n\t\t\tlet docId\r\n\t\t\tconst submissions = await submissionService.getStudentUpload(this.termCode, this.orgCode,\r\n\t\t\t\tthis.classCode, this.revieweeId, this.assignmentId)\r\n\t\t\t//console.log('SUBMISSIONS ARRAY', submissions) //IX what is going on here? Whay do we make a new doc?\r\n\t\t\tif (submissions.length > 0) {\r\n\t\t\t\t// Setup submission status\r\n\t\t\t\t// this.uploadedDate = new Date(submissions[0].LastActivityDate)\r\n\t\t\t\t// this.dueDate = new Date(this.currentAssignment.DueDate)\r\n\r\n\t\t\t\tthis.uploadedDate = this.$moment(submissions[0].LastActivityDate)._d\r\n\t\t\t\tthis.dueDate = this.$moment(this.currentAssignment.DueDate)._d\r\n\t\t\t\tif (this.uploadedDate <= this.dueDate) { this.onTime = true } else { this.onTime = false }\r\n\t\t\t\t// Get latest review\r\n\t\t\t\tconst reviews = await reviewService.getReview(this.termCode, this.orgCode, this.classCode,\r\n\t\t\t\t\tthis.assignmentId, this.reviewerId, this.revieweeId, this.reviewerRole, 'instructor_review')\r\n\t\t\t\t//console.log('REVIEW ARRAY', reviews) //IX for debugging resubmissions\r\n\t\t\t\tif (reviews.length > 0) {\r\n\t\t\t\t\tlatestReview = reviews[0]\r\n\t\t\t\t\t// First check if there is new submission\r\n\t\t\t\t\tconst uploadedDateOfLatestReview = latestReview.UploadedDate\r\n\t\t\t\t\tif (uploadedDateOfLatestReview != null) {\r\n\t\t\t\t\t\tconst date1 = this.$moment(uploadedDateOfLatestReview)\r\n\t\t\t\t\t\tconst uploadedDateOfLatestSubmission = submissions[0].LastActivityDate\r\n\t\t\t\t\t\tconst date2 = this.$moment(uploadedDateOfLatestSubmission)\r\n\t\t\t\t\t\t// If uploadedDateOfLatestSubmission > uploadedDateOfLatestReview -> there is new submission\r\n\t\t\t\t\t\t// Then create latest review using latest submission.\r\n\t\t\t\t\t\tif (date2._d > date1._d) {\r\n\t\t\t\t\t\t\tconst newDocId = await pdfService.createPdf(submissions[0].DocId)\r\n\t\t\t\t\t\t\tif (newDocId > 0) {\r\n\t\t\t\t\t\t\t\tconst newReview = await this.createNewReview(this.orgCode, this.termCode,\r\n\t\t\t\t\t\t\t\t\tthis.classCode, this.assignmentId, this.taskId, this.reviewerId, this.revieweeId,\r\n\t\t\t\t\t\t\t\t\tthis.reviewerRole, newDocId, submissions[0].LastActivityDate, latestReview)\r\n\t\t\t\t\t\t\t\tif (newReview) {\r\n\t\t\t\t\t\t\t\t\tthis.clearBtnEnabled = true\r\n\t\t\t\t\t\t\t\t\treviews.splice(0, 0, newReview)\r\n\t\t\t\t\t\t\t\t\tlatestReview = newReview\r\n\t\t\t\t\t\t\t\t} else { latestReview = reviews[0] }\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tdocId = latestReview.DocId\r\n\t\t\t\t\tconst that = this\r\n\t\t\t\t\treviews.forEach(function(el) {\r\n\t\t\t\t\t\tconst submission = {\r\n\t\t\t\t\t\t\treview: el,\r\n\t\t\t\t\t\t\tuploadedDate: el.UploadedDate,\r\n\t\t\t\t\t\t\tdocId: el.DocId\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tthat.submissions.push(submission)\r\n\t\t\t\t\t})\r\n\t\t\t\t\tthis.currentSubmission = this.submissions[0]\r\n\t\t\t\t} else {\r\n\t\t\t\t\tif ((typeof (this.currentTask) === 'undefined' || this.currentTask === null)) {\r\n\t\t\t\t\t\t// VIEWING ONLY. We need to make this its own vue\r\n\t\t\t\t\t\tconst that = this\r\n\t\t\t\t\t\tdocId = submissions[0].DocId\r\n\t\t\t\t\t\tsubmissions.forEach(function(el) {\r\n\t\t\t\t\t\t\tconst submission = {\r\n\t\t\t\t\t\t\t\treview: null,\r\n\t\t\t\t\t\t\t\tuploadedDate: el.LastActivityDate,\r\n\t\t\t\t\t\t\t\tdocId: el.DocId\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\tthat.submissions.push(submission)\r\n\t\t\t\t\t\t})\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\t// If there is no review, display latest submission with empty rubric\r\n\t\t\t\t\t\t// Get new doc id\r\n\t\t\t\t\t\tdocId = await pdfService.createPdf(submissions[0].DocId)\r\n\t\t\t\t\t\tconst submission = {\r\n\t\t\t\t\t\t\treview: null,\r\n\t\t\t\t\t\t\tuploadedDate: submissions[0].LastActivityDate,\r\n\t\t\t\t\t\t\tdocId: submissions[0].DocId\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tthis.submissions.push(submission)\r\n\t\t\t\t\t}\r\n\t\t\t\t\tthis.currentSubmission = this.submissions[0]\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// Display the latest review if there is a Task and Rubric for Instructor Review - else just display Draft full screen\r\n\t\t\t\tif ((typeof (this.currentTask) === 'undefined' || this.currentTask === null)) {\r\n\t\t\t\t\tthis.docColSize = 100\r\n\t\t\t\t\tthis.submitButtonHidden = true\r\n\t\t\t\t} else {\r\n\t\t\t\t\tthis.docColSize = 70\r\n\t\t\t\t\tthis.submitButtonHidden = false\r\n\t\t\t\t\tawait this.displayReview(latestReview)\r\n\t\t\t\t}\r\n\t\t\t\t// Display the document\r\n\t\t\t\tawait this.displayDocument(docId)\r\n\r\n\t\t\t\tdocument.getElementById('full_width_container').style.display = 'block'\r\n\t\t\t} else {\r\n\t\t\t\tNotification.error({\r\n\t\t\t\t\tduration: 6000,\r\n\t\t\t\t\ttitle: 'Error',\r\n\t\t\t\t\tmessage: 'No submission found!'\r\n\t\t\t\t})\r\n\t\t\t}\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Display document by document id.\r\n\t\t// @arg The document id.\r\n\t\tasync displayDocument(docId) {\r\n\t\t\tif (docId) {\r\n\t\t\t\tthis.docId = docId\r\n\t\t\t\tawait pdfService.getPdf(docId)\r\n\t\t\t\t\t.then(pdf => {\r\n\t\t\t\t\t\t// Display the pdf\r\n\t\t\t\t\t\tconst pdfDocument = document.querySelector('#pdfDocument')\r\n\t\t\t\t\t\tpdfDocument.innerHTML = pdf\r\n\t\t\t\t\t\t// Setup the doc after being loaded\r\n\t\t\t\t\t\tconst that = this\r\n\t\t\t\t\t\tdocument.getElementById('PdfWebControl').onload = function() {\r\n\t\t\t\t\t\t\tthat.PdfAttachListeners()\r\n\t\t\t\t\t\t\tsetTimeout(function() {\r\n\t\t\t\t\t\t\t\tthat.totalPageNumber = that.myapi.getPageCount()\r\n\t\t\t\t\t\t\t}, 500)\r\n\t\t\t\t\t\t\tthat.autoSavePdf()\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}).catch((error) => {\r\n\t\t\t\t\t\tconsole.log(error)\r\n\t\t\t\t\t})\r\n\t\t\t}\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Auto save the pdf every 2 minutes.\r\n\t\tautoSavePdf() {\r\n\t\t\tconst that = this\r\n\t\t\twindow.setInterval(function() {\r\n\t\t\t\tconst iframe = document.getElementById('PdfWebControl')\r\n\t\t\t\tif (iframe) {\r\n\t\t\t\t\tconst innerDoc = iframe.contentDocument || iframe.contentWindow.document\r\n\t\t\t\t\tconst page = that.myapi.getPageViewed()\r\n\t\t\t\t\tconst objCount = page.getObjectCount()\r\n\r\n\t\t\t\t\tif (objCount == 0) {\r\n\t\t\t\t\t\tif (that.myapi.getHasUnsavedChanges()) {\r\n\t\t\t\t\t\t\tthat.myapi.save()\r\n\t\t\t\t\t\t\treturn\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tlet found\r\n\t\t\t\t\tconst pdfe_msgt = innerDoc.getElementById('pdfe_msgt')\r\n\t\t\t\t\tfor (let i = 0; i < objCount; i++) {\r\n\t\t\t\t\t\t// get this object\r\n\t\t\t\t\t\tconst aTags = innerDoc.getElementsByTagName('div')\r\n\t\t\t\t\t\tfor (let i = 0; i < aTags.length; i++) {\r\n\t\t\t\t\t\t\tif (aTags[i].innerHTML == 'DEL') {\r\n\t\t\t\t\t\t\t\tfound = aTags[i]\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif ((typeof (found) === 'undefined' || found === null) || (typeof (pdfe_msgt) === 'undefined' || pdfe_msgt === null)) {\r\n\t\t\t\t\t\treturn\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif (pdfe_msgt.style.visibility == 'visible') {\r\n\t\t\t\t\t\treturn\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tif (found.style.visibility == 'visible') {\r\n\t\t\t\t\t\t\treturn\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tconst activeEl = innerDoc.activeElement\r\n\t\t\t\t\tif (activeEl) {\r\n\t\t\t\t\t\tconst isEditting = activeEl.getAttribute('contenteditable')\r\n\t\t\t\t\t\tif (isEditting) { return }\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif (that.myapi.getHasUnsavedChanges()) {\r\n\t\t\t\t\t\tthat.myapi.save()\r\n\t\t\t\t\t\tif (that.review == null) { that.saveReview() }\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}, 120 * 1000)\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Display the review.\r\n\t\t// @arg The review to be displayed.\r\n\t\tasync displayReview(review) {\r\n\t\t\tthis.review = review\r\n\t\t\tconst rubricId = this.currentTask.RubricId\r\n\t\t\tif (review && review.EmailSent == 'Y') {\r\n\t\t\t\tthis.statusType = 'primary'\r\n\t\t\t\tthis.submitTooltip = 'Your feedback is submitted.'\r\n\t\t\t} else if (review && review.IsSaved == 'Y') {\r\n\t\t\t\tthis.statusType = 'danger'\r\n\t\t\t\tthis.submitTooltip = 'Your feedback is saved, but has not yet been submitted.'\r\n\t\t\t} else {\r\n\t\t\t\tthis.statusType = 'info'\r\n\t\t\t}\r\n\r\n\t\t\t// Get the rubric from current assignment.\r\n\t\t\tawait rubricService.getRubricById(rubricId)\r\n\t\t\t\t.then(rubric => {\r\n\t\t\t\t\tthis.rubricCriteria = rubric.RubricCriterias\r\n\t\t\t\t\tif (review) {\r\n\t\t\t\t\t\tif (review.ReviewData.length == 0) { this.criteriaFeedback = this.getDefaultCriteriaFeedback(rubric.RubricCriterias) } else { this.criteriaFeedback = review.ReviewData }\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tthis.criteriaFeedback = this.getDefaultCriteriaFeedback(rubric.RubricCriterias)\r\n\t\t\t\t\t}\r\n\t\t\t\t}).catch((error) => {\r\n\t\t\t\t\tconsole.log(error)\r\n\t\t\t\t})\r\n\r\n\t\t\tconst criteriaComments = document.querySelectorAll('.criteria-comment >.el-textarea__inner')\r\n\t\t\tconst that = this\r\n\t\t\tcriteriaComments.forEach(function(item) {\r\n\t\t\t\tconst criteriaIndex = item.getAttribute('criteria-index')\r\n\r\n\t\t\t\titem.addEventListener('focus', function(e) {\r\n\t\t\t\t\tthat.cIndex = this.getAttribute('criteria-index')\r\n\t\t\t\t})\r\n\r\n\t\t\t\titem.addEventListener('focusout', function(e) {\r\n\t\t\t\t\tlet scoreClicked = false\r\n\t\t\t\t\tif (!that.review) {\r\n\t\t\t\t\t\t// Check if reviewer click on a criteria score after focus out\r\n\t\t\t\t\t\tconst nextTarget = e.relatedTarget\r\n\t\t\t\t\t\tif (nextTarget && nextTarget.classList && nextTarget.classList.length > 0 &&\r\n\t\t\t\t\t\t e.relatedTarget.classList[0] == 'el-radio-button') { scoreClicked = true }\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif (!scoreClicked) {\r\n\t\t\t\t\t\tthat.saveReview(criteriaIndex)\r\n\t\t\t\t\t}\r\n\t\t\t\t})\r\n\t\t\t})\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Get a default criteria feedback.\r\n\t\t// @arg The rubic criteria used.\r\n\t\tgetDefaultCriteriaFeedback(criteria) {\r\n\t\t\tconst criteriaFeedbacks = []\r\n\t\t\tfor (let i = 0; i < criteria.length; i++) {\r\n\t\t\t\tconst criteriaFeedback = {\r\n\t\t\t\t\tCriteriaId: criteria[i].Id,\r\n\t\t\t\t\tMark: 999,\r\n\t\t\t\t\tComment: '',\r\n\t\t\t\t\tAudioPath: null,\r\n\t\t\t\t\tLetterGrade: null\r\n\t\t\t\t}\r\n\t\t\t\tcriteriaFeedbacks.push(criteriaFeedback)\r\n\t\t\t}\r\n\t\t\treturn criteriaFeedbacks\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Create new review.\r\n\t\t// @arg The arguments needed for creating new review.\r\n\t\tasync createNewReview(orgCode, termCode, classCode, assignmentId, taskId, reviewerId, revieweeId,\r\n\t\t\treviewerRole, docId, uploadedDateStr, latestReview) {\r\n\t\t\tconst reviewType = 'instructor_review'\r\n\t\t\tconst lastActivityDate = this.getlastActivityDate()\r\n\t\t\tlet criteriaFeedback = []\r\n\t\t\tif (latestReview != null) {\r\n\t\t\t\tif (latestReview.ReviewData.length > 0) { criteriaFeedback = this.getPreviousFeedback(latestReview) }\r\n\t\t\t}\r\n\r\n\t\t\tlet holisticScore = 999\r\n\t\t\tif (criteriaFeedback.length > 0) { holisticScore = criteriaFeedback[criteriaFeedback.length - 1].Mark }\r\n\t\t\tconst newReview = {\r\n\t\t\t\tDocId: docId,\r\n\t\t\t\tTermCode: termCode,\r\n\t\t\t\tOrgCode: orgCode,\r\n\t\t\t\tClassCode: classCode,\r\n\t\t\t\tRevieweeId: revieweeId,\r\n\t\t\t\tAssignmentId: assignmentId,\r\n\t\t\t\tReviewerId: reviewerId,\r\n\t\t\t\tReviewType: reviewType,\r\n\t\t\t\tUploadedDate: uploadedDateStr,\r\n\t\t\t\tIsSaved: 'Y',\r\n\t\t\t\tEmailSent: 'N',\r\n\t\t\t\tLastActivityDate: lastActivityDate,\r\n\t\t\t\tReviewerRole: reviewerRole,\r\n\t\t\t\tFinalGrade: 'NG',\r\n\t\t\t\tPercentScore: 0,\r\n\t\t\t\tHolisticScore: holisticScore,\r\n\t\t\t\tReviewData: criteriaFeedback,\r\n\t\t\t\tTaskId: taskId\r\n\t\t\t}\r\n\t\t\tconst thisReview = await reviewService.createNewReview(newReview)\r\n\t\t\treturn thisReview\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Auto save the review before a page refresh.\r\n\t\tsaveReviewBeforeRefresh() {\r\n\t\t\tif (this.review != null) {\r\n\t\t\t\tif (this.cIndex != null) {\r\n\t\t\t\t\tconsole.log(this.criteriaFeedback[this.cIndex])\r\n\t\t\t\t\t// Update this review feedback\r\n\t\t\t\t\tconst api = urlUtils.getBaseApiURL() + '/review/data'\r\n\t\t\t\t\tconst xmlhttp = new XMLHttpRequest()\r\n\t\t\t\t\txmlhttp.open('PUT', api, false)// the false is for making the call synchronous\r\n\t\t\t\t\txmlhttp.setRequestHeader('Content-Type', 'application/json;charset=UTF-8')\r\n\t\t\t\t\txmlhttp.send(JSON.stringify(this.criteriaFeedback[this.cIndex]))\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tif (this.cIndex != null && this.criteriaFeedback[this.cIndex].Comment != '') {\r\n\t\t\t\t\t// Create new review\r\n\t\t\t\t\tconst reviewType = 'instructor_review'\r\n\t\t\t\t\tconst lastActivityDate = this.getlastActivityDate()\r\n\t\t\t\t\tconst lastCriteriaScore = this.criteriaFeedback[this.criteriaFeedback.length - 1].Mark\r\n\t\t\t\t\tconst holisticScore = lastCriteriaScore == null ? 999 : lastCriteriaScore\r\n\t\t\t\t\tconst newReview = {\r\n\t\t\t\t\t\tDocId: this.docId,\r\n\t\t\t\t\t\tTermCode: this.termCode,\r\n\t\t\t\t\t\tOrgCode: this.orgCode,\r\n\t\t\t\t\t\tClassCode: this.classCode,\r\n\t\t\t\t\t\tRevieweeId: this.revieweeId,\r\n\t\t\t\t\t\tAssignmentId: this.assignmentId,\r\n\t\t\t\t\t\tReviewerId: this.reviewerId,\r\n\t\t\t\t\t\tReviewType: reviewType,\r\n\t\t\t\t\t\tUploadedDate: this.getDateStr(this.uploadedDate),\r\n\t\t\t\t\t\tIsSaved: 'Y',\r\n\t\t\t\t\t\tEmailSent: 'N',\r\n\t\t\t\t\t\tLastActivityDate: lastActivityDate,\r\n\t\t\t\t\t\tReviewerRole: this.reviewerRole,\r\n\t\t\t\t\t\tFinalGrade: 'NG',\r\n\t\t\t\t\t\tPercentScore: 0,\r\n\t\t\t\t\t\tHolisticScore: holisticScore,\r\n\t\t\t\t\t\tReviewData: this.criteriaFeedback,\r\n\t\t\t\t\t\tTaskId: this.taskId\r\n\t\t\t\t\t}\r\n\t\t\t\t\tconst api = urlUtils.getBaseApiURL() + '/review'\r\n\t\t\t\t\tconst xmlhttp = new XMLHttpRequest()\r\n\t\t\t\t\txmlhttp.open('POST', api, false)// the false is for making the call synchronous\r\n\t\t\t\t\txmlhttp.setRequestHeader('Content-Type', 'application/json;charset=UTF-8')\r\n\t\t\t\t\txmlhttp.send(JSON.stringify(newReview))\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Auto save the review.\r\n\t\t// @arg The criteria index.\r\n\t\tsaveReview(criteriaIndex) {\r\n\t\t\tif (this.review != null) {\r\n\t\t\t\t// Update this review feedback\r\n\t\t\t\treviewService.updateReviewFeeback(this.criteriaFeedback[criteriaIndex])\r\n\t\t\t\t\t.then(review => {\r\n\t\t\t\t\t\tconst message = document.getElementById('savedMessage')\r\n\t\t\t\t\t\tmessage.style.display = 'inline-block'\r\n\t\t\t\t\t\tsetTimeout(function() {\r\n\t\t\t\t\t\t\tif (message.style.display == 'inline-block') { message.style.display = 'none' }\r\n\t\t\t\t\t\t}, 3000)\r\n\t\t\t\t\t}).catch((error) => {\r\n\t\t\t\t\t\tconsole.log(error)\r\n\t\t\t\t\t\tNotification.error({\r\n\t\t\t\t\t\t\tduration: 6000,\r\n\t\t\t\t\t\t\ttitle: 'Error',\r\n\t\t\t\t\t\t\tmessage: 'Your feedback was not saved.'\r\n\t\t\t\t\t\t})\r\n\t\t\t\t\t})\r\n\t\t\t} else {\r\n\t\t\t\t// Create new review\r\n\t\t\t\tconst reviewType = 'instructor_review'\r\n\t\t\t\tconst lastActivityDate = this.getlastActivityDate()\r\n\t\t\t\tconst lastCriteriaScore = this.criteriaFeedback[this.criteriaFeedback.length - 1].Mark\r\n\t\t\t\tconst holisticScore = lastCriteriaScore == null ? 999 : lastCriteriaScore\r\n\t\t\t\tconst newReview = {\r\n\t\t\t\t\tDocId: this.docId,\r\n\t\t\t\t\tTermCode: this.termCode,\r\n\t\t\t\t\tOrgCode: this.orgCode,\r\n\t\t\t\t\tClassCode: this.classCode,\r\n\t\t\t\t\tRevieweeId: this.revieweeId,\r\n\t\t\t\t\tAssignmentId: this.assignmentId,\r\n\t\t\t\t\tReviewerId: this.reviewerId,\r\n\t\t\t\t\tReviewType: reviewType,\r\n\t\t\t\t\tUploadedDate: this.getDateStr(this.uploadedDate),\r\n\t\t\t\t\tIsSaved: 'Y',\r\n\t\t\t\t\tEmailSent: 'N',\r\n\t\t\t\t\tLastActivityDate: lastActivityDate,\r\n\t\t\t\t\tReviewerRole: this.reviewerRole,\r\n\t\t\t\t\tFinalGrade: 'NG',\r\n\t\t\t\t\tPercentScore: 0,\r\n\t\t\t\t\tHolisticScore: holisticScore,\r\n\t\t\t\t\tReviewData: this.criteriaFeedback,\r\n\t\t\t\t\tTaskId: this.taskId\r\n\t\t\t\t}\r\n\t\t\t\treviewService.createNewReview(newReview)\r\n\t\t\t\t\t.then(review => {\r\n\t\t\t\t\t\tthis.review = review\r\n\t\t\t\t\t\tthis.criteriaFeedback = review.ReviewData\r\n\t\t\t\t\t\tthis.statusType = 'danger'\r\n\t\t\t\t\t\tthis.submitTooltip = 'Your feedback is saved, but has not yet been submitted.'\r\n\t\t\t\t\t\tconst message = document.getElementById('savedMessage')\r\n\t\t\t\t\t\tmessage.style.display = 'inline-block'\r\n\t\t\t\t\t\tsetTimeout(function() {\r\n\t\t\t\t\t\t\tif (message.style.display == 'inline-block') { message.style.display = 'none' }\r\n\t\t\t\t\t\t}, 3000)\r\n\t\t\t\t\t}).catch((error) => {\r\n\t\t\t\t\t\tconsole.log(error)\r\n\t\t\t\t\t\tNotification.error({\r\n\t\t\t\t\t\t\tduration: 6000,\r\n\t\t\t\t\t\t\ttitle: 'Error',\r\n\t\t\t\t\t\t\tmessage: 'Your feedback was not saved.'\r\n\t\t\t\t\t\t})\r\n\t\t\t\t\t})\r\n\t\t\t}\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Submit a review.\r\n\t\tsubmitReview() {\r\n\t\t\tif (this.review != null) {\r\n\t\t\t\t// Update this review\r\n\t\t\t\tconst review = this.review\r\n\t\t\t\treview.IsSaved = 'N'\r\n\t\t\t\treview.EmailSent = 'Y'\r\n\t\t\t\treview.LastActivityDate = this.getlastActivityDate()\r\n\t\t\t\tconst lastCriteriaScore = this.criteriaFeedback[this.criteriaFeedback.length - 1].Mark\r\n\t\t\t\treview.HolisticScore = lastCriteriaScore == null ? 999 : lastCriteriaScore\r\n\t\t\t\treviewService.updateReview(review)\r\n\t\t\t\t\t.then(updatedReview => {\r\n\t\t\t\t\t\tthis.review = updatedReview\r\n\t\t\t\t\t\tthis.criteriaFeedback = updatedReview.ReviewData\r\n\t\t\t\t\t\tthis.statusType = 'primary'\r\n\t\t\t\t\t\tthis.submitTooltip = 'Your feedback is submitted.'\r\n\t\t\t\t\t\tNotification.success({\r\n\t\t\t\t\t\t\tduration: 6000,\r\n\t\t\t\t\t\t\ttitle: 'Success',\r\n\t\t\t\t\t\t\tmessage: 'Your feedback was submitted successfully.'\r\n\t\t\t\t\t\t})\r\n\t\t\t\t\t\tthis.myapi.save()\r\n\t\t\t\t\t\tconst that = this\r\n\t\t\t\t\t\tsetTimeout(function() {\r\n\t\t\t\t\t\t\tpdfService.processCommentText(that.review.DocId)\r\n\t\t\t\t\t\t}, 2000)\r\n\t\t\t\t\t}).catch((error) => {\r\n\t\t\t\t\t\tconsole.log(error)\r\n\t\t\t\t\t\tNotification.error({\r\n\t\t\t\t\t\t\tduration: 6000,\r\n\t\t\t\t\t\t\ttitle: 'Error',\r\n\t\t\t\t\t\t\tmessage: 'Your feedback was not submitted successfully.'\r\n\t\t\t\t\t\t})\r\n\t\t\t\t\t})\r\n\t\t\t}\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Get previous feedback.\r\n\t\t// @arg The previously submitted review.\r\n\t\tgetPreviousFeedback(review) {\r\n\t\t\tconst criteriaFeedbacks = []\r\n\t\t\tfor (let i = 0; i < review.ReviewData.length; i++) {\r\n\t\t\t\tconst criteria = review.ReviewData[i]\r\n\t\t\t\tconst criteriaFeedback = {\r\n\t\t\t\t\tCriteriaId: criteria.CriteriaId,\r\n\t\t\t\t\tMark: criteria.Mark == null ? 999 : criteria.Mark,\r\n\t\t\t\t\tComment: criteria.Comment,\r\n\t\t\t\t\tAudioPath: criteria.AudioPath\r\n\t\t\t\t}\r\n\t\t\t\tcriteriaFeedbacks.push(criteriaFeedback)\r\n\t\t\t}\r\n\t\t\treturn criteriaFeedbacks\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Handles logics when a project is selected.\r\n\t\tasync onAssignmentChange() {\r\n\t\t\tthis.pageNum = 1\r\n\t\t\tthis.review = null\r\n\t\t\tthis.submissions = []\r\n\t\t\tthis.currentSubmission = null\r\n\t\t\tthis.rubricCriteria = null\r\n\t\t\t// this.revieweeId = null;\r\n\t\t\tthis.assignmentId = this.currentAssignment.Id\r\n\t\t\tthis.currentTask = null\r\n\t\t\tthis.taskId = null\r\n\t\t\tthis.docColSize = 100\r\n\t\t\tthis.submitButtonHidden = true\r\n\r\n\t\t\tif (this.currentAssignment.Tasks != null && this.currentAssignment.Tasks.length > 0) {\r\n\t\t\t\tvar instructorReviewTasks = this.currentAssignment.Tasks.filter(t => t.Type == 'instructor_review')\r\n\t\t\t\tif (instructorReviewTasks != null && instructorReviewTasks.length > 0) {\r\n\t\t\t\t\tthis.currentTask = instructorReviewTasks[0]\r\n\t\t\t\t\tthis.taskId = instructorReviewTasks[0].Id\r\n\t\t\t\t\tthis.docColSize = 70\r\n\t\t\t\t\tthis.submitButtonHidden = false\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif (this.currentAssignment.IsGroupAssignment) {\r\n\t\t\t\tthis.isGroupProject = true\r\n\t\t\t\t// set up group selection\r\n\t\t\t\tconst groupSetupComplete = await this.setUpGroupSelection()\r\n\t\t\t\tif (groupSetupComplete) { this.displayDocumentAndReview() } // Set up submissions selection, document, and rubric\r\n\t\t\t\tthis.$router.push('/instructor_review?revieweeId=' + this.revieweeId + '&assignmentId=' + this.assignmentId + '&taskId=' + this.taskId)\r\n\t\t\t} else {\r\n\t\t\t\tthis.isGroupProject = false\r\n\t\t\t\t// Set up students selection\r\n\t\t\t\tconst studentSetupComplete = await this.setUpStudentSelection()\r\n\t\t\t\tif (studentSetupComplete) { this.displayDocumentAndReview() } // Set up submissions selection, document, and rubric\r\n\t\t\t\tthis.$router.push('/instructor_review?revieweeId=' + this.revieweeId + '&assignmentId=' + this.assignmentId + '&taskId=' + this.taskId)\r\n\t\t\t}\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Handles logics when a student is selected.\r\n\t\tonStudentChange() {\r\n\t\t\tthis.prevBtnDisable = false\r\n\t\t\tthis.nextBtnDisable = false\r\n\t\t\tthis.pageNum = 1\r\n\t\t\tthis.submissions = []\r\n\t\t\tthis.currentSubmission = null\r\n\t\t\tthis.rubricCriteria = null\r\n\t\t\tthis.revieweeId = this.currentStudent.UserName\r\n\t\t\tconst thisIndex = this.students.findIndex(x => x.UserName == this.currentStudent.UserName)\r\n\t\t\tif (thisIndex == 0) {\r\n\t\t\t\tthis.prevBtnDisable = true\r\n\t\t\t\tif (this.students.length > 1 && this.nextBtnDisable == true) { this.nextBtnDisable = false }\r\n\t\t\t}\r\n\t\t\tif (thisIndex == this.students.length - 1) {\r\n\t\t\t\tthis.nextBtnDisable = true\r\n\t\t\t\tif (this.students.length > 1 && this.prevBtnDisable == true) { this.prevBtnDisable = false }\r\n\t\t\t}\r\n\t\t\tthis.displayDocumentAndReview()\r\n\t\t\tthis.$router.push('/instructor_review?revieweeId=' + this.revieweeId + '&assignmentId=' + this.assignmentId + '&taskId=' + this.taskId)\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Handles logics when the previous student arrow is clicked.\r\n\t\tasync previousStudent() {\r\n\t\t\tconst thisIndex = this.students.findIndex(x => x.UserName == this.currentStudent.UserName)\r\n\t\t\tif (thisIndex - 1 == 0) {\r\n\t\t\t\tthis.prevBtnDisable = true\r\n\t\t\t}\r\n\t\t\tif (this.students.length > 1) { this.nextBtnDisable = false }\r\n\r\n\t\t\tthis.currentStudent = this.students[thisIndex - 1]\r\n\t\t\tthis.pageNum = 1\r\n\t\t\tthis.submissions = []\r\n\t\t\tthis.currentSubmission = null\r\n\t\t\tthis.revieweeId = this.currentStudent.UserName\r\n\t\t\tthis.rubricCriteria = null\r\n\t\t\tthis.prevBtnDisable = true\r\n\t\t\tawait this.displayDocumentAndReview()\r\n\t\t\tif (thisIndex - 1 != 0) { this.prevBtnDisable = false }\r\n\r\n\t\t\tthis.$router.push('/instructor_review?revieweeId=' + this.revieweeId + '&assignmentId=' + this.assignmentId + '&taskId=' + this.taskId)\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Handles logics when the next student arrow is clicked.\r\n\t\tasync nextStudent() {\r\n\t\t\tconst thisIndex = this.students.findIndex(x => x.UserName == this.currentStudent.UserName)\r\n\t\t\tif (thisIndex == this.students.length - 2) {\r\n\t\t\t\tthis.nextBtnDisable = true\r\n\t\t\t}\r\n\t\t\tif (this.students.length > 1) { this.prevBtnDisable = false }\r\n\t\t\tthis.currentStudent = this.students[thisIndex + 1]\r\n\t\t\tthis.pageNum = 1\r\n\t\t\tthis.submissions = []\r\n\t\t\tthis.currentSubmission = null\r\n\t\t\tthis.revieweeId = this.currentStudent.UserName\r\n\t\t\tthis.rubricCriteria = null\r\n\t\t\tthis.nextBtnDisable = true\r\n\t\t\tawait this.displayDocumentAndReview()\r\n\t\t\tif (thisIndex != this.students.length - 2) { this.nextBtnDisable = false }\r\n\r\n\t\t\tthis.$router.push('/instructor_review?revieweeId=' + this.revieweeId + '&assignmentId=' + this.assignmentId + '&taskId=' + this.taskId)\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Handles logics when a group is selected.\r\n\t\tonGroupChange() {\r\n\t\t\tthis.prevBtnDisable = false\r\n\t\t\tthis.nextBtnDisable = false\r\n\t\t\tthis.pageNum = 1\r\n\t\t\tthis.submissions = []\r\n\t\t\tthis.currentSubmission = null\r\n\t\t\tthis.revieweeId = this.currentGroup.GroupId\r\n\t\t\tthis.rubricCriteria = null\r\n\t\t\tconst thisIndex = this.groups.findIndex(x => x.GroupId == this.currentGroup.GroupId)\r\n\t\t\tif (thisIndex == 0) {\r\n\t\t\t\tthis.prevGroupBtnDisable = true\r\n\t\t\t\tif (this.groups.length > 1 && this.nextGroupBtnDisable == true) { this.nextGroupBtnDisable = false }\r\n\t\t\t}\r\n\t\t\tif (thisIndex == this.groups.length - 1) {\r\n\t\t\t\tthis.nextGroupBtnDisable = true\r\n\t\t\t\tif (this.groups.length > 1 && this.prevGroupBtnDisable == true) { this.prevGroupBtnDisable = false }\r\n\t\t\t}\r\n\r\n\t\t\tthis.displayDocumentAndReview()\r\n\t\t\tthis.$router.push('/instructor_review?revieweeId=' + this.revieweeId + '&assignmentId=' + this.assignmentId + '&taskId=' + this.taskId)\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Handles logics when the previous group arrow is clicked.\r\n\t\tasync previousGroup() {\r\n\t\t\tconst thisIndex = this.groups.findIndex(x => x.GroupId == this.currentGroup.GroupId)\r\n\t\t\tif (thisIndex - 1 == 0) {\r\n\t\t\t\tthis.prevGroupBtnDisable = true\r\n\t\t\t}\r\n\t\t\tif (this.groups.length > 1) { this.nextGroupBtnDisable = false }\r\n\t\t\tthis.currentGroup = this.groups[thisIndex - 1]\r\n\t\t\tthis.pageNum = 1\r\n\t\t\tthis.submissions = []\r\n\t\t\tthis.currentSubmission = null\r\n\t\t\tthis.revieweeId = this.currentGroup.GroupId\r\n\t\t\tthis.rubricCriteria = null\r\n\t\t\tthis.prevGroupBtnDisable = true\r\n\t\t\tawait this.displayDocumentAndReview()\r\n\t\t\tif (thisIndex - 1 != 0) { this.prevGroupBtnDisable = false }\r\n\r\n\t\t\tthis.$router.push('/instructor_review?revieweeId=' + this.revieweeId + '&assignmentId=' + this.assignmentId + '&taskId=' + this.taskId)\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Handles logics when the next group arrow is clicked.\r\n\t\tasync nextGroup() {\r\n\t\t\tconst thisIndex = this.groups.findIndex(x => x.GroupId == this.currentGroup.GroupId)\r\n\t\t\tif (thisIndex == this.groups.length - 2) {\r\n\t\t\t\tthis.nextGroupBtnDisable = true\r\n\t\t\t}\r\n\t\t\tif (this.groups.length > 1) { this.prevGroupBtnDisable = false }\r\n\t\t\tthis.currentGroup = this.groups[thisIndex + 1]\r\n\t\t\tthis.pageNum = 1\r\n\t\t\tthis.submissions = []\r\n\t\t\tthis.currentSubmission = null\r\n\t\t\tthis.revieweeId = this.currentGroup.GroupId\r\n\t\t\tthis.rubricCriteria = null\r\n\t\t\tthis.nextGroupBtnDisable = true\r\n\t\t\tawait this.displayDocumentAndReview()\r\n\t\t\tif (thisIndex != this.groups.length - 2) { this.nextGroupBtnDisable = false }\r\n\r\n\t\t\tthis.$router.push('/instructor_review?revieweeId=' + this.revieweeId + '&assignmentId=' + this.assignmentId + '&taskId=' + this.taskId)\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Handles logics when a submission is selected\r\n\t\tasync onSubmissionChange() {\r\n\t\t\tthis.pageNum = 1\r\n\t\t\tthis.rubricCriteria = null\r\n\t\t\t// Display the doc based on latest submission or latest review\r\n\t\t\tawait this.displayDocument(this.currentSubmission.docId)\r\n\r\n\t\t\t// Display the latest review\r\n\t\t\tawait this.displayReview(this.currentSubmission.review)\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Configures Rad PDf for displaying the document.\r\n\t\tPdfAttachListeners() {\r\n\t\t\tconst id = 'PdfWebControl'\r\n\t\t\t// eslint-disable-next-line no-undef\r\n\t\t\tthis.myapi = new PdfWebControlApi(id)\r\n\t\t\tthis.myapi.addEventListener('modeChanged', function(evt) {\r\n\t\t\t\tevt.byLine = true\r\n\t\t\t})\r\n\t\t\tconst that = this\r\n\t\t\tthis.myapi.addEventListener('viewChanged', function(evt) {\r\n\t\t\t\tthat.pageNum = that.myapi.getPageViewed().getPageNumber()\r\n\t\t\t})\r\n\r\n\t\t\tthis.myapi.addEventListener('objectAdded', function(evt) {\r\n\t\t\t\tif (evt.obj.getType() == 154) { // Highlight annotation\r\n\t\t\t\t\tconst props = evt.obj.getProperties()\r\n\t\t\t\t\tconst popup = evt.obj.getPopup()\r\n\r\n\t\t\t\t\tevt.obj.setProperties({\r\n\t\t\t\t\t\t'customData': evt.textSelected\r\n\t\t\t\t\t})\r\n\r\n\t\t\t\t\tpopup.setProperties(\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tauthor: 'RAD PDF',\r\n\t\t\t\t\t\t\tsubject: 'In-text Comment',\r\n\t\t\t\t\t\t\ttop: props['top'] - 60,\r\n\t\t\t\t\t\t\tleft: props['left'] - 5,\r\n\t\t\t\t\t\t\theight: 60\r\n\t\t\t\t\t\t})\r\n\t\t\t\t\tthat.myapi.setMode(that.myapi.Mode.None)\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (evt.obj.getType() == 100) {\r\n\t\t\t\t\tthat.myapi.setMode(that.myapi.Mode.None)\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (evt.obj.getType() == 101) {\r\n\t\t\t\t\tthat.myapi.setMode(that.myapi.Mode.None)\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (evt.obj.getType() == that.myapi.ObjectType.StrikeoutAnnotation) {\r\n\t\t\t\t\tthat.myapi.setMode(that.myapi.Mode.None)\r\n\t\t\t\t}\r\n\t\t\t\tif (evt.obj.getType() == that.myapi.ObjectType.TextAnnotation) {\r\n\t\t\t\t\tthat.myapi.setMode(that.myapi.Mode.None)\r\n\t\t\t\t}\r\n\t\t\t})\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Handles logics when the page number is changed.\r\n\t\tchangePage() {\r\n\t\t\tthis.myapi.setView({ 'page': this.pageNum })\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Handles logics when the zoom out button is clicked.\r\n\t\tzoomOut() {\r\n\t\t\tif (this.myapi) {\r\n\t\t\t\tif (this.zoomValue > 40) { this.myapi.setView({ 'zoom': this.zoomValue -= 20 }) }\r\n\t\t\t}\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Handles logics when the zoom in button is clicked.\r\n\t\tzoomIn() {\r\n\t\t\tif (this.myapi) {\r\n\t\t\t\tif (this.zoomValue < 200 && this.zoomValue > 20) { this.myapi.setView({ 'zoom': this.zoomValue += 20 }) }\r\n\t\t\t}\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Handles logics when the zoom fit width button is clicked.\r\n\t\tzoomFitWidth() {\r\n\t\t\tif (this.myapi) {\r\n\t\t\t\tthis.zoomValue = 140\r\n\t\t\t\tthis.myapi.setView({ 'zoom': -1 })\r\n\t\t\t}\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Handles logics when the download button is clicked.\r\n\t\tdownloadPdf() {\r\n\t\t\tif (this.myapi) {\r\n\t\t\t\tthis.myapi.download()\r\n\t\t\t}\r\n\t\t\treturn false\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Handles logics when the select save annotation button is clicked.\r\n\t\tsaveAnnotation() {\r\n\t\t\t// eslint-disable-next-line no-undef\r\n\t\t\tconst that = this\r\n\t\t\tconst iframe = document.getElementById('PdfWebControl')\r\n\t\t\tif (iframe) {\r\n\t\t\t\tconst innerDoc = iframe.contentDocument || iframe.contentWindow.document\r\n\t\t\t\tconst page = that.myapi.getPageViewed()\r\n\t\t\t\tconst objCount = page.getObjectCount()\r\n\r\n\t\t\t\tif (objCount == 0) {\r\n\t\t\t\t\tif (that.myapi.getHasUnsavedChanges()) {\r\n\t\t\t\t\t\tthat.myapi.save()\r\n\t\t\t\t\t\treturn\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tlet found\r\n\t\t\t\tconst pdfe_msgt = innerDoc.getElementById('pdfe_msgt')\r\n\t\t\t\tfor (let i = 0; i < objCount; i++) {\r\n\t\t\t\t\t// get this object\r\n\t\t\t\t\tconst aTags = innerDoc.getElementsByTagName('div')\r\n\t\t\t\t\tfor (let i = 0; i < aTags.length; i++) {\r\n\t\t\t\t\t\tif (aTags[i].innerHTML == 'DEL') {\r\n\t\t\t\t\t\t\t\tfound = aTags[i]\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif ((typeof (found) === 'undefined' || found === null) || (typeof (pdfe_msgt) === 'undefined' || pdfe_msgt === null)) {\r\n\t\t\t\t\treturn\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (pdfe_msgt.style.visibility == 'visible') {\r\n\t\t\t\t\treturn\r\n\t\t\t\t} else {\r\n\t\t\t\t\tif (found.style.visibility == 'visible') {\r\n\t\t\t\t\t\treturn\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tconst activeEl = innerDoc.activeElement\r\n\t\t\t\tif (activeEl) {\r\n\t\t\t\t\t\tconst isEditting = activeEl.getAttribute('contenteditable')\r\n\t\t\t\t\tif (isEditting) { return }\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (that.myapi.getHasUnsavedChanges()) {\r\n\t\t\t\tthat.myapi.save()\r\n\t\t\t\t\tif (that.review == null) { that.saveReview() }\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tNotification.success({\r\n\t\t\t\tduration: 6000,\r\n\t\t\t\ttitle: 'Success',\r\n\t\t\t\tmessage: 'All annotations have been saved'\r\n\t\t\t})\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Handles logics when the select text button is clicked.\r\n\t\tselectTextPdf() {\r\n\t\t\tif (this.myapi) {\r\n\t\t\t\tthis.myapi.setMode(this.myapi.Mode.SelectText)\r\n\t\t\t}\r\n\t\t\treturn false\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Handles logics when the highlight button is clicked.\r\n\t\thighlightPdf() {\r\n\t\t\tif (this.myapi) {\r\n\t\t\t\tthis.myapi.setMode(this.myapi.Mode.InsertHighlightAnnotation)\r\n\t\t\t}\r\n\t\t\treturn false\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Handles logics when the free text button is clicked.\r\n\t\tfreeTextPdf() {\r\n\t\t\tif (this.myapi) {\r\n\t\t\t\tthis.myapi.setMode(this.myapi.Mode.InsertTextShape)\r\n\t\t\t}\r\n\t\t\treturn false\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Handles logics when the strike out button is clicked.\r\n\t\tstrikeOutPdf() {\r\n\t\t\tif (this.myapi) {\r\n\t\t\t\tthis.myapi.setMode(this.myapi.Mode.InsertStrikeoutAnnotation)\r\n\t\t\t}\r\n\t\t\treturn false\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Handles logics when the free draw button is clicked.\r\n\t\tfreeDrawPdf() {\r\n\t\t\tif (this.myapi) {\r\n\t\t\t\tthis.myapi.setMode(this.myapi.Mode.InsertInkShape)\r\n\t\t\t}\r\n\t\t\treturn false\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Handles logics when the sticky note button is clicked.\r\n\t\tstickyNotePdf() {\r\n\t\t\tif (this.myapi) {\r\n\t\t\t\tthis.myapi.setMode(this.myapi.Mode.InsertTextAnnotation)\r\n\t\t\t}\r\n\t\t\treturn false\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Go back to Student Submissions page.\r\n\t\tbackToStudentSubmissions() {\r\n\t\t\tthis.$router.push('/course/' + this.classCode + '/projects/' + this.assignmentId + '/submissions')\r\n\t\t},\r\n\t\tgetUrlParameter(sParam) {\r\n\t\t\tconst sPageURL = decodeURIComponent(window.location.search.substring(1))\r\n\r\n\t\t\tconst sURLVariables = sPageURL.split('&')\r\n\r\n\t\t\tlet sParameterName\r\n\r\n\t\t\tlet i\r\n\r\n\t\t\tfor (i = 0; i < sURLVariables.length; i++) {\r\n\t\t\t\tsParameterName = sURLVariables[i].split('=')\r\n\r\n\t\t\t\tif (sParameterName[0] === sParam) {\r\n\t\t\t\t\treturn sParameterName[1] === undefined ? true : sParameterName[1]\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t},\r\n\t\tgetlastActivityDate() {\r\n\t\t\tconst today = this.$moment()._d\r\n\t\t\treturn today.getFullYear() + '-' + (today.getMonth() + 1) + '-' +\r\n today.getDate() + ' ' + today.getHours() + ':' + today.getMinutes() + ':' + today.getSeconds()\r\n\t\t},\r\n\t\tgetDateStr(date) {\r\n\t\t\tconst thisDate = this.$moment(date)._d\r\n\t\t\treturn thisDate.getFullYear() + '-' + (thisDate.getMonth() + 1) + '-' +\r\n thisDate.getDate() + ' ' + thisDate.getHours() + ':' + thisDate.getMinutes() + ':' + thisDate.getSeconds()\r\n\t\t}\r\n\t}\r\n}\r\n</script>\r\n\r\n<style scoped>\r\nbody{\r\n background: #F1F3FA;\r\n}\r\n#content-wrapper {\r\n margin-left: 65px;\r\n}\r\n\r\n.el-card{\r\n border: 1px solid #d4d5d6;\r\n}\r\n.el-card.is-always-shadow, .el-card.is-hover-shadow:focus, .el-card.is-hover-shadow:hover {\r\n -webkit-box-shadow: 0 2px 12px 0 #F1F3FA;\r\n box-shadow: 0 2px 12px 0 #F1F3FA;\r\n}\r\n\r\n.el-card__header {\r\n padding: 12px 12px;\r\n}\r\n\r\n.el-card__body {\r\n padding: 10px;\r\n}\r\n\r\n.el-textarea__inner {\r\n padding: 5px 10px;\r\n}\r\n\r\n.filter-btn{\r\n text-align: center;\r\n box-shadow: none;\r\n display: inline-block;\r\n padding: 0px 10px;\r\n vertical-align: middle;\r\n touch-action: manipulation;\r\n cursor: pointer;\r\n color: #636363;\r\n}\r\n\r\n.filter-divider{\r\n float: left;\r\n border-right: solid 1px #cccccc;\r\n height: 50px;\r\n}\r\n\r\n#full_width_container.full-width{\r\n position: absolute;\r\n top: 3.1325em;\r\n bottom: 2px;\r\n left: 215px;\r\n right: 0;\r\n min-width: 460px;\r\n}\r\n\r\n#full_width_container{\r\n position: absolute;\r\n top: 3.1325em;\r\n bottom: 2px;\r\n left: 65px;\r\n right: 0;\r\n min-width: 460px;\r\n}\r\n\r\n#left_side {\r\n top: 0;\r\n bottom: 0;\r\n overflow-y: hidden;\r\n left: 0;\r\n min-width: 700px;\r\n}\r\n#right_side {\r\n top: 0;\r\n bottom: 0;\r\n right: 0;\r\n font-size: 14px;\r\n font-size: .875rem;\r\n}\r\n.el-input-number--small{\r\n width: 100px;\r\n}\r\n.el-radio-button >>> .el-radio-button__inner{\r\n padding: 12px 15px;\r\n}\r\n\r\n.full_height {\r\n height: 100%;\r\n overflow-x: auto;\r\n}\r\n\r\n#left_side_inner, #submissions_container, #iframe_holder{\r\n height: 100%;\r\n width: 100%;\r\n border: 0 none;\r\n}\r\niframe{\r\n width: 100%;\r\n border: 0px;\r\n overflow: auto;\r\n height: 99%;\r\n min-height: 0px;\r\n}\r\n\r\n#width_resizer {\r\n position: absolute;\r\n top: 0;\r\n bottom: 0;\r\n left: 0;\r\n background: #bbb url(https://du11hjcvx0uqb.cloudfront.net/dist/images/splitpane_handle-ew-1b67cccf0f.gif) no-repeat scroll 50% 50%;\r\n cursor: pointer;\r\n width: 7px;\r\n border-right: 1px solid #838383;\r\n z-index: 2;\r\n}\r\n\r\n.right_side_content {\r\n position: absolute;\r\n top: 0;\r\n bottom: 0;\r\n left: 2px;\r\n right: 0;\r\n}\r\n#right_side #rightside_inner {\r\n overflow-y: auto;\r\n position: relative;\r\n}\r\n\r\n.ViewerControls--with-annotations {\r\n height: 49px;\r\n}\r\n.ViewerControls {\r\n background-color: #636363;\r\n color: #fff;\r\n font-size: 14px;\r\n line-height: 24px;\r\n /* overflow-x: auto; */\r\n /* position: absolute;\r\n width: 100%; */\r\n}\r\n.ViewerControls-primary {\r\n -ms-touch-action: none;\r\n touch-action: none;\r\n pointer-events: all;\r\n display: -webkit-box;\r\n display: -ms-flexbox;\r\n display: flex;\r\n}\r\n.ViewerControls--download, .ViewerControls--title {\r\n -webkit-box-flex: 1;\r\n -ms-flex: 1;\r\n flex: 1;\r\n display: -webkit-box;\r\n display: -ms-flexbox;\r\n display: flex;\r\n -webkit-box-align: center;\r\n -ms-flex-align: center;\r\n align-items: center;\r\n white-space: nowrap;\r\n}\r\n\r\n.download-button--button {\r\n background-color: transparent;\r\n font-size: 16px;\r\n border: none;\r\n height: 48px;\r\n width: 48px;\r\n color: white;\r\n cursor: pointer;\r\n}\r\n/* .download-button--button:hover {\r\n background-color: #777777;\r\n} */\r\n\r\n.ViewerControls--page-controls {\r\n display: -webkit-box;\r\n display: -ms-flexbox;\r\n display: flex;\r\n -webkit-box-align: center;\r\n -ms-flex-align: center;\r\n align-items: center;\r\n white-space: nowrap;\r\n}\r\n\r\n.DocumentControls {\r\n display: -webkit-box;\r\n display: -ms-flexbox;\r\n display: flex;\r\n -webkit-box-align: center;\r\n -ms-flex-align: center;\r\n align-items: center;\r\n}\r\n\r\n.AnnotationControlButton {\r\n width: 48px;\r\n padding: 0;\r\n border: 0 none;\r\n color: #fff;\r\n background-color: #636363;\r\n margin-top: 0;\r\n margin-bottom: 0;\r\n cursor: pointer;\r\n -webkit-box-sizing: content-box;\r\n box-sizing: content-box;\r\n -webkit-touch-callout: none;\r\n user-select: none;\r\n -moz-user-select: none;\r\n -webkit-user-select: none;\r\n -ms-user-select: none;\r\n -webkit-tap-highlight-color: rgba(0,0,0,0);\r\n}\r\n.AnnotationControlButton-inner, .AnnotationControlButton-outer {\r\n -webkit-box-sizing: content-box;\r\n box-sizing: content-box;\r\n display: -webkit-box;\r\n display: -ms-flexbox;\r\n display: flex;\r\n}\r\n\r\n.AnnotationControlButton-inner {\r\n margin: 0;\r\n height: 44px;\r\n width: 48px;\r\n -webkit-box-pack: center;\r\n -ms-flex-pack: center;\r\n justify-content: center;\r\n -webkit-box-align: center;\r\n -ms-flex-align: center;\r\n align-items: center;\r\n}\r\n\r\n.AnnotationControlButton-inner {\r\n margin: 0;\r\n height: 44px;\r\n width: 48px;\r\n -webkit-box-pack: center;\r\n -ms-flex-pack: center;\r\n justify-content: center;\r\n -webkit-box-align: center;\r\n -ms-flex-align: center;\r\n align-items: center;\r\n}\r\n.AnnotationControlButton-outer {\r\n width: 44px;\r\n margin: 1px;\r\n border: 1px solid #636363;\r\n}\r\n\r\n.ViewerControls--current-page {\r\n -moz-appearance: textfield;\r\n margin-top: 10px;\r\n border-radius: 3px;\r\n border: 0;\r\n height: 28px;\r\n width: 36px;\r\n background-color: #fff;\r\n color: #636363;\r\n font-size: 14px;\r\n text-align: center;\r\n vertical-align: top;\r\n}\r\n.next-prev{\r\n text-align: center;\r\n -webkit-box-shadow: none;\r\n box-shadow: none;\r\n display: inline-block;\r\n padding: 0px 10px;\r\n vertical-align: middle;\r\n -ms-touch-action: manipulation;\r\n touch-action: manipulation;\r\n cursor: pointer;\r\n border: 0 none;\r\n background: none;\r\n}\r\n\r\n.submission-status-btn{\r\n box-shadow: none;\r\n display: inline-block;\r\n vertical-align: middle;\r\n touch-action: manipulation;\r\n cursor: pointer;\r\n padding: 6.5px 10px;\r\n /* border: 0px none;\r\n background: none; */\r\n}\r\n/* .AnnotationControlButton.selected .AnnotationControlButton-outer {\r\n border-color: #fff;\r\n border: 1px solid #fff;\r\n color: #636363;\r\n}\r\n.AnnotationControlButton.selected {\r\n outline: none;\r\n background-color: #fff;\r\n}\r\n\r\n.AnnotationControlButton:active .AnnotationControlButton-outer {\r\n -webkit-box-shadow: inset 0 0 2px #000;\r\n box-shadow: inset 0 0 2px #000;\r\n}\r\n.AnnotationControlButton:hover:enabled .AnnotationControlButton-outer {\r\n border-color: #777777;\r\n}\r\n.AnnotationControlButton:hover:enabled {\r\n background-color: #777777;\r\n} */\r\n\r\n</style>\r\n\r\n<style>\r\n.el-radio-button__orig-radio:disabled:checked+.el-radio-button__inner {\r\n background-color: #0A7756;\r\n color: white;\r\n}\r\n.Resizer.columnsres{\r\n z-index: 1;\r\n}\r\n</style>\r\n\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./InstructorReview.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./InstructorReview.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./InstructorReview.vue?vue&type=template&id=0786851c&scoped=true&\"\nimport script from \"./InstructorReview.vue?vue&type=script&lang=js&\"\nexport * from \"./InstructorReview.vue?vue&type=script&lang=js&\"\nimport style0 from \"./InstructorReview.vue?vue&type=style&index=0&id=0786851c&scoped=true&lang=css&\"\nimport style1 from \"./InstructorReview.vue?vue&type=style&index=1&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"0786851c\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('div',{attrs:{\"id\":\"filter\"}},[_c('div',{staticClass:\"filter-divider\",staticStyle:{\"width\":\"220px\"}},[(!_vm.readOnly && _vm.reviewerRole == 'Instructor')?_c('el-button',{staticStyle:{\"text-align\":\"center\",\"-webkit-box-shadow\":\"none\",\"box-shadow\":\"none\",\"display\":\"inline-block\",\"padding\":\"0px\",\"padding-right\":\"10px\",\"vertical-align\":\"middle\",\"-ms-touch-action\":\"manipulation\",\"touch-action\":\"manipulation\",\"cursor\":\"pointer\",\"border\":\"0 none\",\"background\":\"none\"},attrs:{\"title\":\"Back to Student Submissions\"},on:{\"click\":function($event){return _vm.backToStudentSubmissions()}}},[_c('i',{staticClass:\"fas fa-chevron-left\",staticStyle:{\"font-size\":\"25px\"}})]):_vm._e(),(_vm.readOnly || _vm.reviewerRole == 'Student')?_c('el-button',{staticStyle:{\"text-align\":\"center\",\"-webkit-box-shadow\":\"none\",\"box-shadow\":\"none\",\"display\":\"inline-block\",\"padding\":\"0px\",\"padding-right\":\"10px\",\"vertical-align\":\"middle\",\"-ms-touch-action\":\"manipulation\",\"touch-action\":\"manipulation\",\"cursor\":\"pointer\",\"border\":\"0 none\",\"background\":\"none\"},attrs:{\"title\":\"Back to Projects\"},on:{\"click\":function($event){return _vm.backToAssignments()}}},[_c('i',{staticClass:\"fas fa-chevron-left\",staticStyle:{\"font-size\":\"25px\"}})]):_vm._e(),_c('el-tooltip',{staticClass:\"item\",attrs:{\"effect\":\"light\",\"content\":\"Select a project\",\"placement\":\"bottom\"}},[_c('el-select',{staticStyle:{\"margin-top\":\"5px\",\"width\":\"80%\"},attrs:{\"id\":\"assignments-selection\",\"value-key\":\"Id\",\"filterable\":\"\",\"placeholder\":\"Select Project\",\"no-match-text\":\"No Matching Data\",\"no-data-text\":\"No data\",\"loading-text\":\"Loading\",\"disabled\":_vm.readOnly},on:{\"change\":function($event){return _vm.onAssignmentChange()}},model:{value:(_vm.currentAssignment),callback:function ($$v) {_vm.currentAssignment=$$v},expression:\"currentAssignment\"}},_vm._l((_vm.assignments),function(item){return _c('el-option',{key:item.Id,attrs:{\"label\":item.AssignmentName,\"value\":item}})}),1)],1)],1),(!_vm.readOnly || this.$store.state.enrollment.userRole == 'Instructor')?_c('div',[(!_vm.isGroupProject)?_c('div',{staticClass:\"filter-divider\",staticStyle:{\"width\":\"285px\"}},[_c('el-button',{staticStyle:{\"text-align\":\"center\",\"-webkit-box-shadow\":\"none\",\"box-shadow\":\"none\",\"display\":\"inline-block\",\"padding\":\"0px 10px\",\"vertical-align\":\"middle\",\"-ms-touch-action\":\"manipulation\",\"touch-action\":\"manipulation\",\"cursor\":\"pointer\",\"border\":\"0 none\",\"background\":\"none\"},attrs:{\"disabled\":_vm.prevBtnDisable,\"title\":\"Previous student\"},on:{\"click\":_vm.previousStudent}},[_c('i',{staticClass:\"fas fa-arrow-left\",staticStyle:{\"font-size\":\"25px\"}})]),_c('el-tooltip',{staticClass:\"item\",attrs:{\"effect\":\"light\",\"content\":\"Select a student\",\"placement\":\"bottom\"}},[_c('el-select',{staticStyle:{\"margin-top\":\"5px\",\"width\":\"200px\"},attrs:{\"id\":\"students-selection\",\"value-key\":\"UserName\",\"filterable\":\"\",\"placeholder\":\"Select Student\"},on:{\"change\":function($event){return _vm.onStudentChange()}},model:{value:(_vm.currentStudent),callback:function ($$v) {_vm.currentStudent=$$v},expression:\"currentStudent\"}},_vm._l((_vm.students),function(item){return _c('el-option',{key:item.UserName,attrs:{\"label\":item.LastName + ', ' + item.FirstName,\"value\":item}})}),1)],1),_c('el-button',{staticStyle:{\"text-align\":\"center\",\"-webkit-box-shadow\":\"none\",\"box-shadow\":\"none\",\"display\":\"inline-block\",\"padding\":\"0px 10px\",\"vertical-align\":\"middle\",\"-ms-touch-action\":\"manipulation\",\"touch-action\":\"manipulation\",\"cursor\":\"pointer\",\"border\":\"0 none\",\"background\":\"none\"},attrs:{\"disabled\":_vm.nextBtnDisable,\"title\":\"Next student\"},on:{\"click\":_vm.nextStudent}},[_c('i',{staticClass:\"fas fa-arrow-right\",staticStyle:{\"font-size\":\"25px\"}})])],1):_c('div',{staticClass:\"filter-divider\",staticStyle:{\"width\":\"285px\"}},[_c('el-button',{staticStyle:{\"text-align\":\"center\",\"-webkit-box-shadow\":\"none\",\"box-shadow\":\"none\",\"display\":\"inline-block\",\"padding\":\"0px 10px\",\"vertical-align\":\"middle\",\"-ms-touch-action\":\"manipulation\",\"touch-action\":\"manipulation\",\"cursor\":\"pointer\",\"border\":\"0 none\",\"background\":\"none\"},attrs:{\"disabled\":_vm.prevGroupBtnDisable,\"title\":\"Previous Group\"},on:{\"click\":_vm.previousGroup}},[_c('i',{staticClass:\"fas fa-arrow-left\",staticStyle:{\"font-size\":\"25px\"}})]),_c('el-tooltip',{staticClass:\"item\",attrs:{\"effect\":\"light\",\"content\":\"Select a group\",\"placement\":\"bottom\"}},[_c('el-select',{staticStyle:{\"margin-top\":\"5px\",\"width\":\"200px\"},attrs:{\"id\":\"groups-selection\",\"value-key\":\"GroupId\",\"filterable\":\"\",\"placeholder\":\"Select Group\"},on:{\"change\":function($event){return _vm.onGroupChange()}},model:{value:(_vm.currentGroup),callback:function ($$v) {_vm.currentGroup=$$v},expression:\"currentGroup\"}},_vm._l((_vm.groups),function(item){return _c('el-option',{key:item.GroupId,attrs:{\"label\":item.GroupName,\"value\":item}})}),1)],1),_c('el-button',{staticStyle:{\"text-align\":\"center\",\"-webkit-box-shadow\":\"none\",\"box-shadow\":\"none\",\"display\":\"inline-block\",\"padding\":\"0px 10px\",\"vertical-align\":\"middle\",\"-ms-touch-action\":\"manipulation\",\"touch-action\":\"manipulation\",\"cursor\":\"pointer\",\"border\":\"0 none\",\"background\":\"none\"},attrs:{\"disabled\":_vm.nextGroupBtnDisable,\"title\":\"Next Group\"},on:{\"click\":_vm.nextGroup}},[_c('i',{staticClass:\"fas fa-arrow-right\",staticStyle:{\"font-size\":\"25px\"}})])],1)]):_vm._e(),(!_vm.readOnly)?_c('div',{staticStyle:{\"width\":\"380px\",\"float\":\"left\"}},[_c('el-tooltip',{staticClass:\"item\",attrs:{\"effect\":\"light\",\"content\":\"Submission to view\",\"placement\":\"bottom\"}},[_c('el-select',{staticStyle:{\"margin-top\":\"5px\",\"margin-left\":\"10px\",\"margin-right\":\"10px\"},attrs:{\"id\":\"submissions-selection\",\"value-key\":\"docId\",\"filterable\":\"\",\"placeholder\":\"Select Submission\",\"no-match-text\":\"No Matching Data\",\"no-data-text\":\"No data\",\"loading-text\":\"Loading\"},on:{\"change\":function($event){return _vm.onSubmissionChange()}},model:{value:(_vm.currentSubmission),callback:function ($$v) {_vm.currentSubmission=$$v},expression:\"currentSubmission\"}},_vm._l((_vm.submissions),function(item){return _c('el-option',{key:item.docId,attrs:{\"label\":_vm._f(\"formatDate\")(item.uploadedDate),\"value\":item}})}),1)],1),(_vm.onTime)?_c('el-tooltip',{staticClass:\"item\",attrs:{\"effect\":\"light\",\"content\":'Submitted on time at ' + _vm.formatDate(_vm.uploadedDate) + '. Due date is ' + _vm.formatDate(_vm.dueDate) + '.',\"placement\":\"bottom\"}},[_c('el-tag',{staticStyle:{\"line-height\":\"38px\",\"height\":\"38px\"},attrs:{\"type\":\"success\"}},[_vm._v(\"\\n Submitted On Time\\n \")])],1):_c('el-tooltip',{staticClass:\"item\",attrs:{\"effect\":\"light\",\"content\":'Submitted late at ' + _vm.formatDate(_vm.uploadedDate) + '. Due date is ' + _vm.formatDate(_vm.dueDate) + '.',\"placement\":\"bottom\"}},[_c('el-tag',{staticStyle:{\"line-height\":\"38px\",\"height\":\"38px\"},attrs:{\"type\":\"danger\"}},[_vm._v(\"\\n Submitted Late\\n \")])],1)],1):_vm._e(),_c('div',{staticStyle:{\"float\":\"right\"}},[(_vm.review && !_vm.readOnly)?_c('el-button',{staticStyle:{\"margin-top\":\"5px\",\"margin-right\":\"5px\"},attrs:{\"type\":_vm.statusType,\"title\":_vm.submitTooltip},on:{\"click\":function($event){return _vm.submitReview()}}},[_vm._v(\"\\n Submit\\n \")]):_vm._e(),(!_vm.review && !_vm.readOnly)?_c('el-button',{staticStyle:{\"margin-top\":\"5px\",\"margin-right\":\"5px\"},attrs:{\"type\":\"info\",\"disabled\":\"true\"}},[_vm._v(\"\\n Submit\\n \")]):_vm._e()],1)]),_c('div',{attrs:{\"id\":\"full_width_container\"}},[_c('rs-panes',{attrs:{\"split-to\":\"columns\",\"allow-resize\":true,\"units\":\"percents\",\"size\":70,\"min-size\":0,\"resizer-thickness\":6}},[_c('div',{staticStyle:{\"height\":\"100%\"},attrs:{\"slot\":\"firstPane\"},slot:\"firstPane\"},[_c('div',{staticClass:\"full_height\",attrs:{\"id\":\"left_side\"}},[_c('div',{attrs:{\"id\":\"left_side_inner\"}},[_c('div',{attrs:{\"id\":\"submissions_container\"}},[_c('nav',{staticClass:\"ViewerControls ViewerControls--with-annotations\"},[_c('div',{staticClass:\"ViewerControls-primary\"},[_c('div',{staticClass:\"ViewerControls--download\"},[_c('div',{staticStyle:{\"min-width\":\"50px\",\"text-align\":\"center\"}},[_c('div',[_c('button',{staticClass:\"download-button--button\",attrs:{\"title\":\"Download annotated PDF\",\"aria-label\":\"Download annotated PDF\"},on:{\"click\":function($event){return _vm.downloadPdf()}}},[_c('i',{staticClass:\"fas fa-file-download\",staticStyle:{\"font-size\":\"22px\"}})])])])]),_c('div',{staticClass:\"ViewerControls--title\"}),_c('div',{staticClass:\"ViewerControls--page-controls\"},[_c('span',{staticClass:\"ViewerControls--page-number\",staticStyle:{\"display\":\"flex\",\"align-items\":\"center\"}},[_vm._v(\"\\n Page\\n \"),_c('div',{staticStyle:{\"padding-left\":\"10px\",\"padding-right\":\"10px\"}},[_c('el-input-number',{attrs:{\"min\":1,\"max\":_vm.totalPageNumber,\"size\":\"small\",\"label\":\"Page\"},on:{\"change\":_vm.changePage},model:{value:(_vm.pageNum),callback:function ($$v) {_vm.pageNum=$$v},expression:\"pageNum\"}})],1),_vm._v(\"\\n of \"+_vm._s(_vm.totalPageNumber)+\"\\n \")]),_c('svg',{staticStyle:{\"margin-left\":\"12px\",\"margin-right\":\"0px\",\"width\":\"2px\",\"height\":\"26px\",\"color\":\"rgb(171, 179, 186)\"},attrs:{\"viewBox\":\"0 0 2 26\"}},[_c('line',{attrs:{\"stroke\":\"currentColor\",\"stroke-dasharray\":\"2, 1\",\"stroke-width\":\"1\",\"x1\":\"1\",\"y1\":\"0\",\"x2\":\"1\",\"y2\":\"26\"}})])]),_c('nav',{staticClass:\"DocumentControls\"},[_c('div',{staticStyle:{\"display\":\"inline-flex\",\"align-items\":\"center\",\"user-select\":\"none\"}},[_c('button',{staticClass:\"AnnotationControlButton\",attrs:{\"aria-label\":\"Zoom Out\",\"title\":\"Zoom Out\",\"aria-disabled\":\"false\"},on:{\"click\":_vm.zoomOut}},[_c('i',{staticClass:\"fas fa-minus\",staticStyle:{\"font-size\":\"20px\"}})]),_c('span',{staticStyle:{\"text-transform\":\"uppercase\",\"font-size\":\"0.75rem\",\"color\":\"rgb(238, 238, 239)\",\"margin-left\":\"4px\",\"margin-right\":\"4px\"},attrs:{\"aria-hidden\":\"true\"}},[_vm._v(\"\\n Zoom\\n \")]),_c('button',{staticClass:\"AnnotationControlButton\",attrs:{\"aria-label\":\"Zoom In\",\"title\":\"Zoom In\",\"aria-disabled\":\"false\"},on:{\"click\":_vm.zoomIn}},[_c('i',{staticClass:\"fas fa-plus\",staticStyle:{\"font-size\":\"20px\"}})])]),_c('svg',{staticStyle:{\"margin-left\":\"2px\",\"margin-right\":\"4px\",\"width\":\"2px\",\"height\":\"26px\",\"color\":\"rgb(171, 179, 186)\"},attrs:{\"viewBox\":\"0 0 2 26\"}},[_c('line',{attrs:{\"stroke\":\"currentColor\",\"stroke-dasharray\":\"2, 1\",\"stroke-width\":\"1\",\"x1\":\"1\",\"y1\":\"0\",\"x2\":\"1\",\"y2\":\"26\"}})]),_c('div',{staticClass:\"ViewerControls--page-controls\"},[_c('button',{staticClass:\"AnnotationControlButton full-screen-button\",attrs:{\"aria-label\":\"Enter Full Screen\",\"title\":\"Zoom Fit Width\"},on:{\"click\":_vm.zoomFitWidth}},[_c('i',{staticClass:\"fas fa-expand\",staticStyle:{\"font-size\":\"20px\"}})]),(!_vm.readOnly)?_c('svg',{staticStyle:{\"margin-left\":\"4px\",\"margin-right\":\"4px\",\"width\":\"2px\",\"height\":\"26px\",\"color\":\"rgb(171, 179, 186)\"},attrs:{\"viewBox\":\"0 0 2 26\"}},[_c('line',{attrs:{\"stroke\":\"currentColor\",\"stroke-dasharray\":\"2, 1\",\"stroke-width\":\"1\",\"x1\":\"1\",\"y1\":\"0\",\"x2\":\"1\",\"y2\":\"26\"}})]):_vm._e()])]),(!_vm.readOnly)?_c('nav',{staticClass:\"AnnotationControls\"},[_c('button',{staticClass:\"AnnotationControlButton\",attrs:{\"aria-label\":\"Enter selection mode\",\"title\":\"Selection\"},on:{\"click\":_vm.selectTextPdf}},[_c('div',{staticClass:\"AnnotationControlButton-outer\"},[_c('div',{staticClass:\"AnnotationControlButton-inner\"},[_c('i',{staticClass:\"fas fa-mouse-pointer\",staticStyle:{\"font-size\":\"20px\"}})])])]),_c('button',{staticClass:\"AnnotationControlButton\",attrs:{\"aria-label\":\"highlight annotation\",\"title\":\"Highlight annotation\"},on:{\"click\":_vm.highlightPdf}},[_c('div',{staticClass:\"AnnotationControlButton-outer\"},[_c('div',{staticClass:\"AnnotationControlButton-inner\"},[_c('i',{staticClass:\"fas fa-highlighter\",staticStyle:{\"font-size\":\"20px\"}})])])]),_c('button',{staticClass:\"AnnotationControlButton\",attrs:{\"aria-label\":\"strikeout annotation\",\"title\":\"Strikeout annotation\"},on:{\"click\":_vm.strikeOutPdf}},[_c('div',{staticClass:\"AnnotationControlButton-outer\"},[_c('div',{staticClass:\"AnnotationControlButton-inner\"},[_c('i',{staticClass:\"fas fa-strikethrough\",staticStyle:{\"font-size\":\"20px\"}})])])]),_c('button',{staticClass:\"AnnotationControlButton\",attrs:{\"aria-label\":\"free draw annotation\",\"title\":\"Free draw annotation\"},on:{\"click\":_vm.freeDrawPdf}},[_c('div',{staticClass:\"AnnotationControlButton-outer\"},[_c('div',{staticClass:\"AnnotationControlButton-inner\"},[_c('i',{staticClass:\"fas fa-paint-brush\",staticStyle:{\"font-size\":\"20px\"}})])])]),_c('button',{staticClass:\"AnnotationControlButton\",attrs:{\"aria-label\":\"Sticky note annotation\",\"title\":\"Sticky note annotation\"},on:{\"click\":_vm.stickyNotePdf}},[_c('div',{staticClass:\"AnnotationControlButton-outer\"},[_c('div',{staticClass:\"AnnotationControlButton-inner\"},[_c('i',{staticClass:\"far fa-sticky-note\",staticStyle:{\"font-size\":\"20px\"}})])])])]):_vm._e()])]),_c('div',{staticStyle:{\"display\":\"block\",\"height\":\"calc(100% - 45px)\"},attrs:{\"id\":\"iframe_holder\"}},[_c('div',{staticStyle:{\"resize\":\"vertical\",\"height\":\"100%\"},attrs:{\"id\":\"pdfDocument\"}})])])]),_c('div',{staticStyle:{\"display\":\"none\",\"position\":\"relative\",\"top\":\"-100%\",\"z-index\":\"1\",\"height\":\"100%\",\"width\":\"100%\",\"border\":\"0 none\"},attrs:{\"id\":\"resize_overlay\"}})])]),_c('div',{attrs:{\"slot\":\"secondPane\"},slot:\"secondPane\"},[_c('div',{staticClass:\"full_height\",attrs:{\"id\":\"right_side\"}},[_c('div',{staticClass:\"right_side_content\"},[_c('div',{staticClass:\"full_height\",attrs:{\"id\":\"rightside_inner\"}},[_c('div',{attrs:{\"id\":\"rubric\"}},[_c('div',{staticStyle:{\"height\":\"100%\",\"overflow\":\"auto\"}},_vm._l((_vm.rubricCriteria),function(criteria,criteriaIndex){return _c('el-card',{key:criteria.Id,staticStyle:{\"margin-bottom\":\"5px\",\"margin-left\":\"3px\"}},[_c('div',{staticClass:\"clearfix\",attrs:{\"slot\":\"header\"},slot:\"header\"},[_c('span',{staticStyle:{\"font-size\":\"16px\",\"font-weight\":\"bold\"}},[_vm._v(\"\\n \"+_vm._s(criteria.CriteriaName)+\"\\n \")]),_c('div',{staticStyle:{\"font-size\":\"14px\",\"margin-top\":\"10px\"}},[(criteria.Description && criteria.Description != '')?_c('el-input',{staticClass:\"criteria-description\",staticStyle:{\"border\":\"none\"},attrs:{\"value\":criteria.Description,\"readonly\":true,\"type\":\"textarea\",\"autosize\":true,\"maxlength\":8000}}):_vm._e()],1)]),_c('div',[_c('div',[(criteria.UseAsGrade)?_c('el-radio-group',{staticStyle:{\"margin-bottom\":\"10px\",\"min-width\":\"240px\"},attrs:{\"id\":criteria.Id,\"disabled\":_vm.readOnly},on:{\"input\":_vm.saveReview},model:{value:(_vm.criteriaFeedback[criteriaIndex].Mark),callback:function ($$v) {_vm.$set(_vm.criteriaFeedback[criteriaIndex], \"Mark\", $$v)},expression:\"criteriaFeedback[criteriaIndex].Mark\"}},_vm._l((criteria.RubricCriteriaMilestones.slice().reverse()),function(milestone,key){return _c('el-tooltip',{key:milestone.Id,staticClass:\"item\",attrs:{\"effect\":\"light\",\"placement\":\"top\"}},[_c('div',{staticStyle:{\"max-width\":\"500px\"},attrs:{\"slot\":\"content\"},slot:\"content\"},[_vm._v(\"\\n \"+_vm._s(milestone.Description)+\"\\n \")]),_c('el-radio-button',{key:milestone.Id,attrs:{\"label\":criteria.RubricCriteriaMilestones.length - key}})],1)}),1):_vm._e()],1),_c('div',[(criteria.UseAsGrade || criteria.UseAsTextComment)?_c('el-input',{staticClass:\"criteria-comment\",attrs:{\"type\":\"textarea\",\"placeholder\":\"Score Explanation\",\"rows\":3,\"maxlength\":8000,\"readonly\":_vm.readOnly},model:{value:(_vm.criteriaFeedback[criteriaIndex].Comment),callback:function ($$v) {_vm.$set(_vm.criteriaFeedback[criteriaIndex], \"Comment\", $$v)},expression:\"criteriaFeedback[criteriaIndex].Comment\"}}):_vm._e()],1)])])}),1)])])])])])])],1)])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n <div>\r\n <div id=\"filter\">\r\n <div class=\"filter-divider\" style=\"width: 220px;\">\r\n <el-button\r\n v-if=\"!readOnly && reviewerRole == 'Instructor'\"\r\n style=\"text-align: center; -webkit-box-shadow: none; box-shadow: none;\r\n display: inline-block; padding: 0px; padding-right: 10px; vertical-align: middle;\r\n -ms-touch-action: manipulation; touch-action: manipulation;\r\n cursor: pointer; border: 0 none; background: none;\"\r\n title=\"Back to Student Submissions\"\r\n @click=\"backToStudentSubmissions()\"\r\n >\r\n <i class=\"fas fa-chevron-left\" style=\"font-size: 25px;\" />\r\n <!-- <i class=\"far fa-address-book\" style=\"font-size: 25px;\" /> -->\r\n </el-button>\r\n <el-button\r\n v-if=\"readOnly || reviewerRole == 'Student'\"\r\n style=\"text-align: center; -webkit-box-shadow: none; box-shadow: none;\r\n display: inline-block; padding: 0px; padding-right: 10px; vertical-align: middle;\r\n -ms-touch-action: manipulation; touch-action: manipulation;\r\n cursor: pointer; border: 0 none; background: none;\"\r\n title=\"Back to Projects\"\r\n @click=\"backToAssignments()\"\r\n >\r\n <i class=\"fas fa-chevron-left\" style=\"font-size: 25px;\" />\r\n <!-- <i class=\"fas fa-tasks\" style=\"font-size: 25px;\" /> -->\r\n </el-button>\r\n <el-tooltip class=\"item\" effect=\"light\" content=\"Select a project\" placement=\"bottom\">\r\n <el-select\r\n id=\"assignments-selection\"\r\n v-model=\"currentAssignment\"\r\n value-key=\"Id\"\r\n filterable\r\n placeholder=\"Select Project\"\r\n no-match-text=\"No Matching Data\"\r\n no-data-text=\"No data\"\r\n loading-text=\"Loading\"\r\n style=\"margin-top: 5px; width: 80%;\"\r\n :disabled=\"readOnly\"\r\n @change=\"onAssignmentChange()\"\r\n >\r\n <el-option\r\n v-for=\"item in assignments\"\r\n :key=\"item.Id\"\r\n :label=\"item.AssignmentName\"\r\n :value=\"item\"\r\n />\r\n </el-select>\r\n </el-tooltip>\r\n </div>\r\n <div v-if=\"!readOnly || this.$store.state.enrollment.userRole == 'Instructor'\">\r\n <div v-if=\"!isGroupProject\" class=\"filter-divider\" style=\"width: 285px;\">\r\n <el-button\r\n style=\"text-align: center; -webkit-box-shadow: none; box-shadow: none;\r\n display: inline-block; padding: 0px 10px; vertical-align: middle;\r\n -ms-touch-action: manipulation; touch-action: manipulation;\r\n cursor: pointer; border: 0 none; background: none;\"\r\n :disabled=\"prevBtnDisable\"\r\n title=\"Previous student\"\r\n @click=\"previousStudent\"\r\n >\r\n <i class=\"fas fa-arrow-left\" style=\"font-size: 25px;\" />\r\n </el-button>\r\n\r\n <el-tooltip class=\"item\" effect=\"light\" content=\"Select a student\" placement=\"bottom\">\r\n <el-select\r\n id=\"students-selection\"\r\n v-model=\"currentStudent\"\r\n value-key=\"UserName\"\r\n filterable\r\n placeholder=\"Select Student\"\r\n style=\"margin-top: 5px; width: 200px;\"\r\n @change=\"onStudentChange()\"\r\n >\r\n <el-option\r\n v-for=\"item in students\"\r\n :key=\"item.UserName\"\r\n :label=\"item.LastName + ', ' + item.FirstName\"\r\n :value=\"item\"\r\n />\r\n </el-select>\r\n </el-tooltip>\r\n\r\n <el-button\r\n style=\"text-align: center; -webkit-box-shadow: none; box-shadow: none;\r\n display: inline-block; padding: 0px 10px; vertical-align: middle;\r\n -ms-touch-action: manipulation; touch-action: manipulation;\r\n cursor: pointer; border: 0 none; background: none;\"\r\n :disabled=\"nextBtnDisable\"\r\n title=\"Next student\"\r\n @click=\"nextStudent\"\r\n >\r\n <i style=\"font-size: 25px;\" class=\"fas fa-arrow-right\" />\r\n </el-button>\r\n <!-- <a id=\"nextBtn\" class=\"filter-btn\" @click=\"nextStudent\">\r\n\t\t\t\t\t<i style=\"font-size: 25px;\" class=\"fas fa-arrow-right\" />\r\n\t\t\t\t</a> -->\r\n\r\n <!-- <span> 16/19 Graded </span> -->\r\n </div>\r\n\r\n <div v-else class=\"filter-divider\" style=\"width: 285px;\">\r\n <el-button\r\n style=\"text-align: center; -webkit-box-shadow: none; box-shadow: none;\r\n display: inline-block; padding: 0px 10px; vertical-align: middle;\r\n -ms-touch-action: manipulation; touch-action: manipulation;\r\n cursor: pointer; border: 0 none; background: none;\"\r\n :disabled=\"prevGroupBtnDisable\"\r\n title=\"Previous Group\"\r\n @click=\"previousGroup\"\r\n >\r\n <i class=\"fas fa-arrow-left\" style=\"font-size: 25px;\" />\r\n </el-button>\r\n\r\n <el-tooltip class=\"item\" effect=\"light\" content=\"Select a group\" placement=\"bottom\">\r\n <el-select\r\n id=\"groups-selection\"\r\n v-model=\"currentGroup\"\r\n value-key=\"GroupId\"\r\n filterable\r\n placeholder=\"Select Group\"\r\n style=\"margin-top: 5px; width: 200px;\"\r\n @change=\"onGroupChange()\"\r\n >\r\n <el-option\r\n v-for=\"item in groups\"\r\n :key=\"item.GroupId\"\r\n :label=\"item.GroupName\"\r\n :value=\"item\"\r\n />\r\n </el-select>\r\n </el-tooltip>\r\n\r\n <el-button\r\n style=\"text-align: center; -webkit-box-shadow: none; box-shadow: none;\r\n display: inline-block; padding: 0px 10px; vertical-align: middle;\r\n -ms-touch-action: manipulation; touch-action: manipulation;\r\n cursor: pointer; border: 0 none; background: none;\"\r\n :disabled=\"nextGroupBtnDisable\"\r\n title=\"Next Group\"\r\n @click=\"nextGroup\"\r\n >\r\n <i style=\"font-size: 25px;\" class=\"fas fa-arrow-right\" />\r\n </el-button>\r\n </div>\r\n </div>\r\n\r\n <div v-if=\"!readOnly\" style=\"width: 380px; float:left;\">\r\n <el-tooltip class=\"item\" effect=\"light\" content=\"Submission to view\" placement=\"bottom\">\r\n <el-select\r\n id=\"submissions-selection\"\r\n v-model=\"currentSubmission\"\r\n value-key=\"docId\"\r\n filterable\r\n placeholder=\"Select Submission\"\r\n no-match-text=\"No Matching Data\"\r\n no-data-text=\"No data\"\r\n loading-text=\"Loading\"\r\n style=\"margin-top: 5px; margin-left: 10px; margin-right: 10px;\"\r\n @change=\"onSubmissionChange()\"\r\n >\r\n <el-option\r\n v-for=\"item in submissions\"\r\n :key=\"item.docId\"\r\n :label=\"item.uploadedDate | formatDate\"\r\n :value=\"item\"\r\n />\r\n </el-select>\r\n </el-tooltip>\r\n\r\n <el-tooltip v-if=\"onTime\" class=\"item\" effect=\"light\" :content=\"'Submitted on time at ' + formatDate(uploadedDate) + '. Due date is ' + formatDate(dueDate) + '.'\" placement=\"bottom\">\r\n <el-tag type=\"success\" style=\"line-height: 38px; height: 38px;\">\r\n Submitted On Time\r\n </el-tag>\r\n </el-tooltip>\r\n <el-tooltip v-else class=\"item\" effect=\"light\" :content=\"'Submitted late at ' + formatDate(uploadedDate) + '. Due date is ' + formatDate(dueDate) + '.'\" placement=\"bottom\">\r\n <el-tag type=\"danger\" style=\"line-height: 38px; height: 38px;\">\r\n Submitted Late\r\n </el-tag>\r\n </el-tooltip>\r\n </div>\r\n <div style=\"float:right;\">\r\n <el-button\r\n v-if=\"review && !readOnly\"\r\n :type=\"statusType\"\r\n style=\"margin-top: 5px; margin-right: 5px;\"\r\n :title=\"submitTooltip\"\r\n @click=\"submitReview()\"\r\n >\r\n Submit\r\n </el-button>\r\n <el-button\r\n v-if=\"!review && !readOnly\"\r\n type=\"info\"\r\n disabled=\"true\"\r\n style=\"margin-top: 5px; margin-right: 5px;\"\r\n >\r\n Submit\r\n </el-button>\r\n </div>\r\n </div>\r\n <div id=\"full_width_container\">\r\n <rs-panes split-to=\"columns\" :allow-resize=\"true\" units=\"percents\" :size=\"70\" :min-size=\"0\" :resizer-thickness=\"6\">\r\n <div slot=\"firstPane\" style=\"height: 100%;\">\r\n <div id=\"left_side\" class=\"full_height\">\r\n <div id=\"left_side_inner\">\r\n <div id=\"submissions_container\">\r\n <nav class=\"ViewerControls ViewerControls--with-annotations\">\r\n <div class=\"ViewerControls-primary\">\r\n <div class=\"ViewerControls--download\">\r\n <div style=\"min-width: 50px; text-align: center;\">\r\n <div>\r\n <button class=\"download-button--button\" title=\"Download annotated PDF\" aria-label=\"Download annotated PDF\" @click=\"downloadPdf()\">\r\n <i style=\"font-size: 22px;\" class=\"fas fa-file-download\" />\r\n </button>\r\n </div>\r\n </div>\r\n </div><div class=\"ViewerControls--title\" /><div class=\"ViewerControls--page-controls\">\r\n <span class=\"ViewerControls--page-number\" style=\"display: flex; align-items: center;\">\r\n Page\r\n <div style=\"padding-left: 10px; padding-right: 10px;\">\r\n <el-input-number v-model=\"pageNum\" :min=\"1\" :max=\"totalPageNumber\" size=\"small\" label=\"Page\" @change=\"changePage\" />\r\n </div>\r\n of {{ totalPageNumber }}\r\n </span>\r\n <svg viewBox=\"0 0 2 26\" style=\"margin-left: 12px; margin-right: 0px; width: 2px; height: 26px; color: rgb(171, 179, 186);\">\r\n <line stroke=\"currentColor\" stroke-dasharray=\"2, 1\" stroke-width=\"1\" x1=\"1\" y1=\"0\" x2=\"1\" y2=\"26\" />\r\n </svg>\r\n </div>\r\n <nav class=\"DocumentControls\">\r\n <div style=\"display: inline-flex; align-items: center; user-select: none;\">\r\n <button class=\"AnnotationControlButton\" aria-label=\"Zoom Out\" title=\"Zoom Out\" aria-disabled=\"false\" @click=\"zoomOut\">\r\n <i style=\"font-size: 20px;\" class=\"fas fa-minus\" />\r\n </button>\r\n <span aria-hidden=\"true\" style=\"text-transform: uppercase; font-size: 0.75rem; color: rgb(238, 238, 239); margin-left: 4px; margin-right: 4px;\">\r\n Zoom\r\n </span>\r\n <button class=\"AnnotationControlButton\" aria-label=\"Zoom In\" title=\"Zoom In\" aria-disabled=\"false\" @click=\"zoomIn\">\r\n <i style=\"font-size: 20px;\" class=\"fas fa-plus\" />\r\n </button>\r\n </div>\r\n <svg viewBox=\"0 0 2 26\" style=\"margin-left: 2px; margin-right: 4px; width: 2px; height: 26px; color: rgb(171, 179, 186);\">\r\n <line stroke=\"currentColor\" stroke-dasharray=\"2, 1\" stroke-width=\"1\" x1=\"1\" y1=\"0\" x2=\"1\" y2=\"26\" />\r\n </svg>\r\n <div class=\"ViewerControls--page-controls\">\r\n <button aria-label=\"Enter Full Screen\" class=\"AnnotationControlButton full-screen-button\" title=\"Zoom Fit Width\" @click=\"zoomFitWidth\">\r\n <i style=\"font-size: 20px;\" class=\"fas fa-expand\" />\r\n </button>\r\n <svg v-if=\"!readOnly\" viewBox=\"0 0 2 26\" style=\"margin-left: 4px; margin-right: 4px; width: 2px; height: 26px; color: rgb(171, 179, 186);\">\r\n <line stroke=\"currentColor\" stroke-dasharray=\"2, 1\" stroke-width=\"1\" x1=\"1\" y1=\"0\" x2=\"1\" y2=\"26\" />\r\n </svg>\r\n </div>\r\n </nav>\r\n <nav v-if=\"!readOnly\" class=\"AnnotationControls\">\r\n <button aria-label=\"Enter selection mode\" class=\"AnnotationControlButton\" title=\"Selection\" @click=\"selectTextPdf\">\r\n <div class=\"AnnotationControlButton-outer\">\r\n <div class=\"AnnotationControlButton-inner\">\r\n <i style=\"font-size: 20px;\" class=\"fas fa-mouse-pointer\" />\r\n </div>\r\n </div>\r\n </button>\r\n <button aria-label=\"highlight annotation\" class=\"AnnotationControlButton\" title=\"Highlight annotation\" @click=\"highlightPdf\">\r\n <div class=\"AnnotationControlButton-outer\">\r\n <div class=\"AnnotationControlButton-inner\">\r\n <i style=\"font-size: 20px;\" class=\"fas fa-highlighter\" />\r\n </div>\r\n </div>\r\n </button>\r\n <!-- <button aria-label=\"freetext annotation\" class=\"AnnotationControlButton\" title=\"Freetext annotation\" @click=\"freeTextPdf\">\r\n\t\t\t\t\t\t\t\t\t\t<div class=\"AnnotationControlButton-outer\">\r\n\t\t\t\t\t\t\t\t\t\t\t<div class=\"AnnotationControlButton-inner\">\r\n\t\t\t\t\t\t\t\t\t\t\t\t<i style=\"font-size: 20px;\" class=\"fas fa-font\" />\r\n\t\t\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t\t</button> -->\r\n <button aria-label=\"strikeout annotation\" class=\"AnnotationControlButton\" title=\"Strikeout annotation\" @click=\"strikeOutPdf\">\r\n <div class=\"AnnotationControlButton-outer\">\r\n <div class=\"AnnotationControlButton-inner\">\r\n <i style=\"font-size: 20px;\" class=\"fas fa-strikethrough\" />\r\n </div>\r\n </div>\r\n </button>\r\n <button aria-label=\"free draw annotation\" class=\"AnnotationControlButton\" title=\"Free draw annotation\" @click=\"freeDrawPdf\">\r\n <div class=\"AnnotationControlButton-outer\">\r\n <div class=\"AnnotationControlButton-inner\">\r\n <i style=\"font-size: 20px;\" class=\"fas fa-paint-brush\" />\r\n </div>\r\n </div>\r\n </button>\r\n <button aria-label=\"Sticky note annotation\" class=\"AnnotationControlButton\" title=\"Sticky note annotation\" @click=\"stickyNotePdf\">\r\n <div class=\"AnnotationControlButton-outer\">\r\n <div class=\"AnnotationControlButton-inner\">\r\n <i style=\"font-size: 20px;\" class=\"far fa-sticky-note\" />\r\n </div>\r\n </div>\r\n </button>\r\n </nav>\r\n </div>\r\n </nav>\r\n\r\n <div id=\"iframe_holder\" style=\"display: block; height: calc(100% - 45px);\">\r\n <div id=\"pdfDocument\" style=\"resize: vertical; height: 100%;\" />\r\n </div>\r\n </div>\r\n </div>\r\n <div id=\"resize_overlay\" style=\"display: none; position: relative;top: -100%; z-index: 1; height: 100%; width: 100%; border: 0 none;\" />\r\n </div>\r\n </div>\r\n\r\n <div slot=\"secondPane\">\r\n <div id=\"right_side\" class=\"full_height\">\r\n <!-- <div id=\"width_resizer\" class=\"full_height ui-draggable\" @click=\"test()\" /> -->\r\n <div class=\"right_side_content\">\r\n <div id=\"rightside_inner\" class=\"full_height\">\r\n <div id=\"rubric\">\r\n <div style=\"height: 100%; overflow: auto;\">\r\n <el-card v-for=\"(criteria, criteriaIndex) in rubricCriteria\" :key=\"criteria.Id\" style=\"margin-bottom: 5px; margin-left: 3px;\">\r\n <div slot=\"header\" class=\"clearfix\">\r\n <span style=\"font-size: 16px; font-weight: bold;\">\r\n {{ criteria.CriteriaName }}\r\n </span>\r\n <div style=\"font-size: 14px; margin-top: 10px;\">\r\n <el-input\r\n v-if=\"criteria.Description && criteria.Description != ''\"\r\n :value=\"criteria.Description\"\r\n :readonly=\"true\"\r\n type=\"textarea\"\r\n :autosize=\"true\"\r\n :maxlength=\"8000\"\r\n class=\"criteria-description\"\r\n style=\"border: none;\"\r\n />\r\n </div>\r\n <!-- <el-button style=\"float: right; padding: 3px 0\" type=\"text\">\r\n\t\t\t\t\t\t\t\t\t\t\tClose\r\n\t\t\t\t\t\t\t\t\t\t</el-button> -->\r\n </div>\r\n <div>\r\n <div>\r\n <el-radio-group\r\n v-if=\"criteria.UseAsGrade\"\r\n :id=\"criteria.Id\"\r\n v-model=\"criteriaFeedback[criteriaIndex].Mark\"\r\n style=\"margin-bottom: 10px; min-width: 240px;\"\r\n :disabled=\"readOnly\"\r\n @input=\"saveReview\"\r\n >\r\n <el-tooltip\r\n v-for=\"(milestone, key) in criteria.RubricCriteriaMilestones.slice().reverse()\"\r\n :key=\"milestone.Id\"\r\n class=\"item\"\r\n effect=\"light\"\r\n placement=\"top\"\r\n >\r\n <div slot=\"content\" style=\"max-width: 500px;\">\r\n {{ milestone.Description }}\r\n </div>\r\n <el-radio-button\r\n :key=\"milestone.Id\"\r\n :label=\"criteria.RubricCriteriaMilestones.length - key\"\r\n />\r\n </el-tooltip>\r\n </el-radio-group>\r\n </div>\r\n <div>\r\n <el-input\r\n v-if=\"criteria.UseAsGrade || criteria.UseAsTextComment\"\r\n v-model=\"criteriaFeedback[criteriaIndex].Comment\"\r\n type=\"textarea\"\r\n placeholder=\"Score Explanation\"\r\n :rows=\"3\"\r\n :maxlength=\"8000\"\r\n class=\"criteria-comment\"\r\n :readonly=\"readOnly\"\r\n />\r\n </div>\r\n </div>\r\n </el-card>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </rs-panes>\r\n </div>\r\n </div>\r\n</template>\r\n\r\n<script>\r\nimport * as pdfService from '@/services/pdf.service'\r\nimport * as assignmentService from '@/services/assignment.service'\r\nimport * as submissionService from '@/services/submission.service'\r\nimport * as reviewService from '@/services/review.service'\r\nimport * as rubricService from '@/services/rubric.service'\r\nimport * as teamFormationService from '@/services/team_formation.service'\r\nimport { Notification } from 'element-ui'\r\nimport * as dateUtils from '@/utils/date-utils'\r\nimport ResSplitPane from 'vue-resize-split-pane'\r\nexport default {\r\n\tcomponents: {\r\n\t\t'rs-panes': ResSplitPane\r\n\t},\r\n\tfilters: {\r\n\t\tformatDate(dateStr) {\r\n\t\t\treturn dateUtils.formatDate(dateStr)\r\n\t\t}\r\n\t},\r\n\t// props: {\r\n\t// \t'allowResize': { type: Boolean, default: false },\r\n\t// \t'splitTo': { type: String, default: 'columns' }, // columns || rows\r\n\t// \t'primary': { type: String, default: 'first' }, // first || second\r\n\t// \t'size': { type: Number, default: 70 }, // in pixels || percents\r\n\t// \t'units': { type: String, default: 'percents' }, // pixels || percents\r\n\t// \t'minSize': { type: Number, default: 70 }, // in pixels || percents\r\n\t// \t'maxSize': { type: Number, default: 0 }, // in pixels || percents\r\n\t// \t'step': { type: Number, default: 0 }, // in pixels only\r\n\t// \t'resizerThickness': { type: Number, default: 2 }, //in px - width of the resizer\r\n\t// \t'resizerColor': { type: String, default: '#AAA' }, // any css color - if you set transparency, it will afect the border too\r\n\t// \t'resizerBorderColor': { type: String, default: 'rgba(0,0,0, 0.15)' }, // any css color - #FFF, rgb(0,0,0), rgba(0,0,0,0)\r\n\t// \t'resizerBorderThickness': { type: Number, default: 3 }, // in px - border that forms the shadow\r\n\t// },\r\n\tdata() {\r\n\t\treturn {\r\n\t\t\ttermCode: this.$store.state.enrollment.termCode,\r\n\t\t\torgCode: this.$store.state.enrollment.orgCode,\r\n\t\t\tclassCode: this.$store.state.enrollment.currentCourse.ClassCode,\r\n\t\t\tassignmentId: null,\r\n\t\t\trevieweeId: null,\r\n\t\t\treviewerId: null,\r\n\t\t\treviewerRole: this.$store.state.enrollment.userRole,\r\n\t\t\tassignments: [],\r\n\t\t\tdocId: null,\r\n\t\t\tcurrentAssignment: null,\r\n\t\t\tstudents: null,\r\n\t\t\tcurrentStudent: null,\r\n\t\t\tonTime: false,\r\n\t\t\tuploadedDate: null,\r\n\t\t\tdueDate: null,\r\n\t\t\tsubmissions: [],\r\n\t\t\tcurrentSubmission: null,\r\n\t\t\trubricCriteria: null,\r\n\t\t\tcriteriaFeedback: null,\r\n\t\t\treview: null,\r\n\t\t\tmyapi: null,\r\n\t\t\tpageNum: 1,\r\n\t\t\ttotalPageNumber: null,\r\n\t\t\tzoomValue: 140,\r\n\t\t\tprevBtnDisable: false,\r\n\t\t\tnextBtnDisable: false,\r\n\t\t\tprevGroupBtnDisable: false,\r\n\t\t\tnextGroupBtnDisable: false,\r\n\t\t\tteams: null,\r\n\t\t\tisGroupProject: false,\r\n\t\t\tgroups: [],\r\n\t\t\tcurrentGroup: null,\r\n\t\t\tgroupId: null,\r\n\t\t\treadOnly: false,\r\n\t\t\treviewType: null,\r\n\t\t\tstatusType: 'danger',\r\n\t\t\tsubmitTooltip: 'Your feedback is saved, but has not yet been submitted.'\r\n \t}\r\n\t},\r\n\tmounted() {\r\n\t\tconst resizer = document.querySelector('.columnsres')\r\n\t\tresizer.addEventListener('mousedown', function(e) {\r\n\t\t\tdocument.querySelector('#resize_overlay').style.display = 'block'\r\n\t\t})\r\n\t\tdocument.addEventListener('mouseup', function(e) {\r\n\t\t\tdocument.querySelector('#resize_overlay').style.display = 'none'\r\n\t\t})\r\n\t},\r\n\tcreated() {\r\n\t\t// Get necessary information from query string\r\n\t\tthis.assignmentId = this.getUrlParameter('assignmentId')\r\n\t\tthis.revieweeId = this.getUrlParameter('revieweeId')\r\n\t\tthis.reviewerId = this.getUrlParameter('reviewerId')\r\n\t\tthis.groupId = this.getUrlParameter('groupId')\r\n\t\tif (this.reviewerId == null) { this.reviewerId = this.$store.state.auth.user.UserName }\r\n\t\t// Set reviewerRole for readOnly\r\n\t\tthis.readOnly = (this.getUrlParameter('readOnly') === 'true')\r\n\t\tthis.reviewType = this.getUrlParameter('reviewType')\r\n\t\tif (this.readOnly == true && this.reviewType == 'instructorReview') {\r\n\t\t\tthis.reviewerRole = 'Instructor'\r\n\t\t} else if (this.readOnly == true && this.reviewType == 'peerReview') {\r\n\t\t\tthis.reviewerRole = 'Student'\r\n\t\t}\r\n\t\t// Set up assignments selection\r\n\t\tthis.setUpAssignmentSelection()\r\n\t},\r\n\tmethods: {\r\n\t\ttest2(e) {\r\n\t\t\tconsole.log(e)\r\n\t\t},\r\n\t\ttest() {\r\n\t\t\talert('aaa')\r\n\t\t},\r\n\t\tformatDate(dateStr) {\r\n\t\t\treturn dateUtils.formatDate(dateStr)\r\n\t\t},\r\n\t\tasync setUpAssignmentSelection() {\r\n\t\t\t// Get all assignments that have uploaded papers\r\n\t\t\tlet assignments = []\r\n\t\t\tif (this.reviewerRole == 'Instructor') { assignments = await submissionService.getUploadedAssignments(this.termCode, this.orgCode, this.classCode) } else if (this.reviewerRole == 'Student') {\r\n\t\t\t\tconst teams = await teamFormationService.getPeerReviewTeamAssignment(this.termCode, this.orgCode,\r\n\t\t\t\t\tthis.classCode, this.reviewerId)\r\n\t\t\t\tif (teams.length > 0) {\r\n\t\t\t\t\tthis.teams = teams\r\n\t\t\t\t\tlet assignmentQuery = ''\r\n\t\t\t\t\tfor (let i = 0; i < teams.length; i++) {\r\n\t\t\t\t\t\tif (teams.length == 1 || i == (teams.length - 1)) { assignmentQuery += 'Id eq ' + teams[i].AssignmentId } else { assignmentQuery += 'Id eq ' + teams[i].AssignmentId + ' or ' }\r\n\t\t\t\t\t}\r\n\t\t\t\t\tassignments = await assignmentService.getAssignmentsByQuery(assignmentQuery)\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif (assignments.length > 0) {\r\n\t\t\t\tthis.assignments = assignments\r\n\t\t\t\tconst that = this\r\n\t\t\t\tif (this.assignmentId) {\r\n\t\t\t\t\tthis.currentAssignment = assignments.find(function(el) {\r\n\t\t\t\t\t\treturn el.Id == that.assignmentId\r\n\t\t\t\t\t})\r\n\t\t\t\t} else {\r\n\t\t\t\t\tthis.currentAssignment = assignments[0]\r\n\t\t\t\t\tthis.assignmentId = this.currentAssignment.Id\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (this.currentAssignment.IsGroupAssignment && this.reviewerRole == 'Instructor') {\r\n\t\t\t\t\tthis.isGroupProject = true\r\n\t\t\t\t\t// set up group selection\r\n\t\t\t\t\tconst groupSetupComplete = await this.setUpGroupSelection()\r\n\t\t\t\t\tif (groupSetupComplete) { this.displayDocumentAndReview() } // Set up submissions selection, document, and rubric\r\n\t\t\t\t} else {\r\n\t\t\t\t\t// Set up students selection\r\n\t\t\t\t\tconst studentSetupComplete = await this.setUpStudentSelection()\r\n\t\t\t\t\tif (studentSetupComplete) { this.displayDocumentAndReview() } // Set up submissions selection, document, and rubric\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tNotification.error({\r\n\t\t\t\t\tduration: 6000,\r\n\t\t\t\t\ttitle: 'Error',\r\n\t\t\t\t\tmessage: 'No submission found!'\r\n\t\t\t\t})\r\n\t\t\t\tdocument.getElementById('full_width_container').style.display = 'none'\r\n\t\t\t}\r\n\t\t},\r\n\t\tasync setUpStudentSelection() {\r\n\t\t\t// Get all students who have uploaded paper for this assignment\r\n\t\t\tlet uploadedStudents\r\n\t\t\tconst that = this\r\n\t\t\tif (this.reviewerRole == 'Instructor') {\r\n\t\t\t\tuploadedStudents = await submissionService.getUploadedStudents(this.termCode,\r\n\t\t\t\t\tthis.orgCode, this.classCode, this.assignmentId)\r\n\t\t\t} else if (this.reviewerRole == 'Student') {\r\n\t\t\t\tconst thisTeam = this.teams.find(function(el) {\r\n\t\t\t\t\treturn el.AssignmentId == that.assignmentId\r\n\t\t\t\t})\r\n\t\t\t\tuploadedStudents = await submissionService.getUploadedPeers(this.termCode,\r\n\t\t\t\t\tthis.orgCode, this.classCode, this.assignmentId, this.reviewerId, thisTeam.TeamId)\r\n\t\t\t}\r\n\t\t\tif (uploadedStudents.length > 0) {\r\n\t\t\t\tthis.students = uploadedStudents\r\n\t\t\t\tif (this.revieweeId) {\r\n\t\t\t\t\tconst thisReviewee = uploadedStudents.find(function(el) {\r\n\t\t\t\t\t\treturn el.UserName == that.revieweeId\r\n\t\t\t\t\t})\r\n\t\t\t\t\tif (thisReviewee != undefined) { this.currentStudent = thisReviewee } else {\r\n\t\t\t\t\t\tthis.currentStudent = uploadedStudents[0]\r\n\t\t\t\t\t\tthis.revieweeId = uploadedStudents[0].UserName\r\n\t\t\t\t\t}\r\n\t\t\t\t} else {\r\n\t\t\t\t\tthis.currentStudent = uploadedStudents[0]\r\n\t\t\t\t\tthis.revieweeId = uploadedStudents[0].UserName\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// Set up previous and next buttons\r\n\t\t\t\tconst thisIndex = this.students.findIndex(x => x.UserName == this.currentStudent.UserName)\r\n\t\t\t\tif (thisIndex == 0) {\r\n\t\t\t\t\tthis.prevBtnDisable = true\r\n\t\t\t\t}\r\n\t\t\t\tif (thisIndex == this.students.length - 1) {\r\n\t\t\t\t\tthis.nextBtnDisable = true\r\n\t\t\t\t}\r\n\t\t\t\treturn true\r\n\t\t\t} else {\r\n\t\t\t\tdocument.getElementById('full_width_container').style.display = 'none'\r\n\t\t\t\tNotification.error({\r\n\t\t\t\t\tduration: 6000,\r\n\t\t\t\t\ttitle: 'Error',\r\n\t\t\t\t\tmessage: 'No submission found!'\r\n\t\t\t\t})\r\n\t\t\t\treturn false\r\n\t\t\t}\r\n\t\t},\r\n\t\tasync setUpGroupSelection() {\r\n\t\t\t// let groups = await teamFormationService.getAssignedTeams(this.termCode, this.orgCode, this.classCode,\r\n\t\t\t// this.assignmentId, 'group_project');\r\n\t\t\tconst groups = await submissionService.getGroupSubmissionsStatus(this.termCode, this.orgCode, this.classCode,\r\n\t\t\t\tthis.assignmentId)\r\n\t\t\tconst submittedGroups = groups.filter(function(el) {\r\n\t\t\t\treturn el.SubmissionStatus == 'Submitted for Grading'\r\n\t\t\t})\r\n\t\t\tif (submittedGroups && submittedGroups.length > 0) {\r\n\t\t\t\tthis.groups = submittedGroups\r\n\t\t\t\tconst that = this\r\n\t\t\t\tif (this.groupId) {\r\n\t\t\t\t\tthis.currentGroup = submittedGroups.find(function(el) {\r\n\t\t\t\t\t\treturn el.GroupId == that.groupId\r\n\t\t\t\t\t})\r\n\t\t\t\t} else {\r\n\t\t\t\t\tthis.currentGroup = submittedGroups[0]\r\n\t\t\t\t}\r\n\t\t\t\tthis.revieweeId = this.currentGroup.StudentId\r\n\r\n\t\t\t\t// Set up previous and next buttons\r\n\t\t\t\tconst thisIndex = this.groups.findIndex(x => x.GroupId == this.currentGroup.GroupId)\r\n\t\t\t\tif (thisIndex == 0) {\r\n\t\t\t\t\tthis.prevGroupBtnDisable = true\r\n\t\t\t\t}\r\n\t\t\t\tif (thisIndex == this.groups.length - 1) {\r\n\t\t\t\t\tthis.nextGroupBtnDisable = true\r\n\t\t\t\t}\r\n\t\t\t\treturn true\r\n\t\t\t} else {\r\n\t\t\t\tdocument.getElementById('full_width_container').style.display = 'none'\r\n\t\t\t\tNotification.error({\r\n\t\t\t\t\tduration: 6000,\r\n\t\t\t\t\ttitle: 'Error',\r\n\t\t\t\t\tmessage: 'No group found!'\r\n\t\t\t\t})\r\n\t\t\t\treturn false\r\n\t\t\t}\r\n\t\t},\r\n\t\tasync displayDocumentAndReview() {\r\n\t\t\tlet latestReview\r\n\t\t\tlet docId\r\n\t\t\tconst submissions = await submissionService.getStudentUpload(this.termCode, this.orgCode,\r\n\t\t\t\tthis.classCode, this.revieweeId, this.assignmentId)\r\n\t\t\tif (submissions.length > 0) {\r\n\t\t\t\t// Setup submission status\r\n\t\t\t\tthis.uploadedDate = new Date(submissions[0].LastActivityDate)\r\n\t\t\t\tthis.dueDate = new Date(this.currentAssignment.DueDate)\r\n\t\t\t\tif (this.uploadedDate <= this.dueDate) { this.onTime = true }\r\n\t\t\t\t// Get latest review\r\n\t\t\t\tconst reviews = await reviewService.getReview(this.termCode, this.orgCode, this.classCode,\r\n\t\t\t\t\tthis.assignmentId, this.reviewerId, this.revieweeId, this.reviewerRole)\r\n\t\t\t\tif (reviews.length > 0) {\r\n\t\t\t\t\tlatestReview = reviews[0]\r\n\t\t\t\t\tif (!this.readOnly) {\r\n\t\t\t\t\t\t// First check if there is new submission\r\n\t\t\t\t\t\tconst uploadedDateOfLatestReview = latestReview.IdInfo.UploadedDate\r\n\t\t\t\t\t\tif (uploadedDateOfLatestReview != null) {\r\n\t\t\t\t\t\t\tconst date1 = this.$moment(uploadedDateOfLatestReview)\r\n\t\t\t\t\t\t\tconst uploadedDateOfLatestSubmission = submissions[0].LastActivityDate\r\n\t\t\t\t\t\t\tconst date2 = this.$moment(uploadedDateOfLatestSubmission)\r\n\t\t\t\t\t\t\t// If uploadedDateOfLatestSubmission > uploadedDateOfLatestReview -> there is new submission\r\n\t\t\t\t\t\t\t// Then create latest review using latest submission.\r\n\t\t\t\t\t\t\tif (date2._d > date1._d) {\r\n\t\t\t\t\t\t\t\tconst newDocId = await pdfService.createPdf(submissions[0].DocId)\r\n\t\t\t\t\t\t\t\tif (newDocId > 0) {\r\n\t\t\t\t\t\t\t\t\tconst newReview = await this.createNewReview(this.orgCode, this.termCode,\r\n\t\t\t\t\t\t\t\t\t\tthis.classCode, this.assignmentId, this.reviewerId, this.revieweeId,\r\n\t\t\t\t\t\t\t\t\t\tthis.reviewerRole, newDocId, submissions[0].LastActivityDate, latestReview)\r\n\t\t\t\t\t\t\t\t\tif (newReview) {\r\n\t\t\t\t\t\t\t\t\t\treviews.splice(0, 0, newReview)\r\n\t\t\t\t\t\t\t\t\t\tlatestReview = newReview\r\n\t\t\t\t\t\t\t\t\t} else { latestReview = reviews[0] }\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tdocId = latestReview.DocId\r\n\t\t\t\t\tconst that = this\r\n\t\t\t\t\treviews.forEach(function(el) {\r\n\t\t\t\t\t\tconst submission = {\r\n\t\t\t\t\t\t\treview: el,\r\n\t\t\t\t\t\t\tuploadedDate: el.IdInfo.UploadedDate,\r\n\t\t\t\t\t\t\tdocId: el.DocId\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tthat.submissions.push(submission)\r\n\t\t\t\t\t})\r\n\t\t\t\t\tthis.currentSubmission = this.submissions[0]\r\n\t\t\t\t} else {\r\n\t\t\t\t\t// If there is no review, display latest submission with empty rubric\r\n\t\t\t\t\t// Get new doc id\r\n\t\t\t\t\tdocId = await pdfService.createPdf(submissions[0].DocId)\r\n\t\t\t\t\tconst submission = {\r\n\t\t\t\t\t\treview: null,\r\n\t\t\t\t\t\tuploadedDate: submissions[0].LastActivityDate,\r\n\t\t\t\t\t\tdocId: submissions[0].DocId\r\n\t\t\t\t\t}\r\n\t\t\t\t\tthis.submissions.push(submission)\r\n\t\t\t\t\tthis.currentSubmission = this.submissions[0]\r\n\t\t\t\t}\r\n\t\t\t\t// Display the document\r\n\t\t\t\tawait this.displayDocument(docId)\r\n\t\t\t\t// Display the latest review\r\n\t\t\t\tawait this.displayReview(latestReview)\r\n\r\n\t\t\t\tdocument.getElementById('full_width_container').style.display = 'block'\r\n\t\t\t} else {\r\n\t\t\t\tNotification.error({\r\n\t\t\t\t\tduration: 6000,\r\n\t\t\t\t\ttitle: 'Error',\r\n\t\t\t\t\tmessage: 'No submission found!'\r\n\t\t\t\t})\r\n\t\t\t}\r\n\t\t},\r\n\t\tasync displayDocument(docId) {\r\n\t\t\tif (docId) {\r\n\t\t\t\tthis.docId = docId\r\n\t\t\t\tawait pdfService.getPdf(docId)\r\n\t\t\t\t\t.then(pdf => {\r\n\t\t\t\t\t\t// Display the pdf\r\n\t\t\t\t\t\tconst pdfDocument = document.querySelector('#pdfDocument')\r\n\t\t\t\t\t\tpdfDocument.innerHTML = pdf\r\n\t\t\t\t\t\t// // Collapse the left side bar menu\r\n\t\t\t\t\t\t// let arrowBtn = document.querySelector('#menu-toggle');\r\n\t\t\t\t\t\t// if(arrowBtn.classList.contains('is-active')){\r\n\t\t\t\t\t\t// \tarrowBtn.click();\r\n\t\t\t\t\t\t// }\r\n\t\t\t\t\t\t// Setup the doc after being loaded\r\n\t\t\t\t\t\tconst that = this\r\n\t\t\t\t\t\tdocument.getElementById('PdfWebControl').onload = function() {\r\n\t\t\t\t\t\t\tthat.PdfAttachListeners()\r\n\t\t\t\t\t\t\tsetTimeout(function() {\r\n\t\t\t\t\t\t\t\tthat.totalPageNumber = that.myapi.getPageCount()\r\n\t\t\t\t\t\t\t}, 500)\r\n\t\t\t\t\t\t\tthat.autoSavePdf()\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}).catch((error) => {\r\n\t\t\t\t\t\tconsole.log(error)\r\n\t\t\t\t\t})\r\n\t\t\t}\r\n\t\t},\r\n\t\tautoSavePdf() {\r\n\t\t\tconst that = this\r\n\t\t\twindow.setInterval(function() {\r\n\t\t\t\tconst iframe = document.getElementById('PdfWebControl')\r\n\t\t\t\tconst innerDoc = iframe.contentDocument || iframe.contentWindow.document\r\n\t\t\t\tconst page = that.myapi.getPageViewed()\r\n\t\t\t\tconst objCount = page.getObjectCount()\r\n\r\n\t\t\t\tif (objCount == 0) {\r\n\t\t\t\t\t// eslint-disable-next-line no-undef\r\n\t\t\t\t\tif (myapi.getHasUnsavedChanges()) {\r\n\t\t\t\t\t\t// eslint-disable-next-line no-undef\r\n\t\t\t\t\t\tmyapi.save()\r\n\t\t\t\t\t\treturn\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tlet found\r\n\t\t\t\tconst pdfe_msgt = innerDoc.getElementById('pdfe_msgt')\r\n\t\t\t\tfor (let i = 0; i < objCount; i++) {\r\n\t\t\t\t\t// get this object\r\n\t\t\t\t\tconst aTags = innerDoc.getElementsByTagName('div')\r\n\t\t\t\t\tfor (let i = 0; i < aTags.length; i++) {\r\n\t\t\t\t\t\tif (aTags[i].innerHTML == 'DEL') {\r\n\t\t\t\t\t\t\tfound = aTags[i]\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif ((typeof (found) === 'undefined' || found === null) || (typeof (pdfe_msgt) === 'undefined' || pdfe_msgt === null)) {\r\n\t\t\t\t\treturn\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (pdfe_msgt.style.visibility == 'visible') {\r\n\t\t\t\t\treturn\r\n\t\t\t\t} else {\r\n\t\t\t\t\tif (found.style.visibility == 'visible') {\r\n\t\t\t\t\t\treturn\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (that.myapi.getHasUnsavedChanges()) {\r\n\t\t\t\t\tthat.myapi.save()\r\n\t\t\t\t}\r\n\t\t\t}, 60 * 1000)\r\n\t\t},\r\n\t\tasync displayReview(review) {\r\n\t\t\tthis.review = review\r\n\t\t\tconst rubricId = this.currentAssignment.RubricId\r\n\t\t\tif (review && review.Status.EmailSent) {\r\n\t\t\t\tthis.statusType = 'primary'\r\n\t\t\t\tthis.submitTooltip = 'Your feedback is submitted.'\r\n\t\t\t}\r\n\r\n\t\t\t// Get the rubric from current assignment.\r\n\t\t\tawait rubricService.getRubricById(rubricId)\r\n\t\t\t\t.then(rubric => {\r\n\t\t\t\t\tthis.rubricCriteria = rubric.RubricCriterias\r\n\t\t\t\t\tif (review) {\r\n\t\t\t\t\t\tif (review.CriteriaFeedback.length == 0) { this.criteriaFeedback = this.getDefaultCriteriaFeedback(rubric.RubricCriterias) } else { this.criteriaFeedback = review.CriteriaFeedback }\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tthis.criteriaFeedback = this.getDefaultCriteriaFeedback(rubric.RubricCriterias)\r\n\t\t\t\t\t}\r\n\t\t\t\t}).catch((error) => {\r\n\t\t\t\t\tconsole.log(error)\r\n\t\t\t\t})\r\n\r\n\t\t\t// Setup auto save for comment boxes\r\n\t\t\tconst criteriaComments = document.querySelectorAll('.el-textarea__inner')\r\n\t\t\tconst that = this\r\n\t\t\tcriteriaComments.forEach(function(item) {\r\n\t\t\t\titem.addEventListener('focusout', that.saveReview)\r\n\t\t\t})\r\n\t\t},\r\n\t\tgetDefaultCriteriaFeedback(criteria) {\r\n\t\t\tconst criteriaFeedbacks = []\r\n\t\t\tfor (let i = 0; i < criteria.length; i++) {\r\n\t\t\t\tconst criteriaFeedback = {\r\n\t\t\t\t\tCriteriaId: criteria[i].Id,\r\n\t\t\t\t\tMark: 999,\r\n\t\t\t\t\tComment: '',\r\n\t\t\t\t\tAudioPath: null,\r\n\t\t\t\t\tLetterGrade: null\r\n\t\t\t\t}\r\n\t\t\t\tcriteriaFeedbacks.push(criteriaFeedback)\r\n\t\t\t}\r\n\t\t\treturn criteriaFeedbacks\r\n\t\t},\r\n\t\tasync createNewReview(orgCode, termCode, classCode, assignmentId, reviewerId, revieweeId,\r\n\t\t\treviewerRole, docId, uploadedDateStr, latestReview) {\r\n\t\t\tlet reviewType\r\n\t\t\tif (reviewerRole == 'Instructor') { reviewType = 'instructor_review' } else if (reviewerRole == 'Student') { reviewType = 'peer_review' }\r\n\t\t\tconst lastActivityDate = this.getlastActivityDate()\r\n\t\t\tlet criteriaFeedback = []\r\n\t\t\tif (latestReview != null) {\r\n\t\t\t\tif (latestReview.CriteriaFeedback.length > 0) { criteriaFeedback = this.getPreviousFeedback(latestReview) }\r\n\t\t\t}\r\n\t\t\tconst lastCriteriaScore = criteriaFeedback[criteriaFeedback.length - 1].Mark\r\n\t\t const holisticScore = lastCriteriaScore == null ? 999 : lastCriteriaScore\r\n\t\t\tconst newReview = {\r\n\t\t\t\tDocId: docId,\r\n\t\t\t\tIdInfo: {\r\n\t\t\t\t\tTermCode: termCode,\r\n\t\t\t\t\tOrganization: orgCode,\r\n\t\t\t\t\tClassCode: classCode,\r\n\t\t\t\t\tRevieweeId: revieweeId,\r\n\t\t\t\t\tAssignmentId: assignmentId,\r\n\t\t\t\t\tReviewerId: reviewerId,\r\n\t\t\t\t\tReviewType: reviewType,\r\n\t\t\t\t\tUploadedDate: uploadedDateStr\r\n\t\t\t\t},\r\n\t\t\t\tStatus: {\r\n\t\t\t\t\tInProgress: true,\r\n\t\t\t\t\tEmailSent: false,\r\n\t\t\t\t\tLastActivity: lastActivityDate\r\n\t\t\t\t},\r\n\t\t\t\tGraderRole: reviewerRole,\r\n\t\t\t\tFinalGrade: 'NG',\r\n\t\t\t\tPercentScore: 0,\r\n\t\t\t\tHolisticScore: holisticScore,\r\n\t\t\t\tCriteriaFeedback: criteriaFeedback\r\n\t\t\t}\r\n\t\t\tconst thisReview = await reviewService.createNewReview(newReview)\r\n\t\t\treturn thisReview\r\n\t\t},\r\n\t\tsaveReview() {\r\n\t\t\tif (this.review != null) {\r\n\t\t\t\t// Update this review\r\n\t\t\t\tconst currentReview = this.review\r\n\t\t\t\tconst lastActivityDate = this.getlastActivityDate()\r\n\t\t\t\tcurrentReview.CriteriaFeedback = this.criteriaFeedback\r\n\t\t\t\tcurrentReview.Status.LastActivity = lastActivityDate\r\n\t\t\t\tconst lastCriteriaScore = this.criteriaFeedback[this.criteriaFeedback.length - 1].Mark\r\n\t\t\t\tcurrentReview.HolisticScore = lastCriteriaScore == null ? 999 : lastCriteriaScore\r\n\t\t\t\treviewService.updateReview(currentReview)\r\n\t\t\t\t\t.then(updatedReview => {\r\n\t\t\t\t\t\tthis.review = updatedReview\r\n\t\t\t\t\t\tthis.criteriaFeedback = updatedReview.CriteriaFeedback\r\n\r\n\t\t\t\t\t\t// Update reviews for group members\r\n\t\t\t\t\t\tif (this.reviewerRole == 'Instructor' && this.isGroupProject && updatedReview.Status.EmailSent) {\r\n\t\t\t\t\t\t\tconst that = this\r\n\t\t\t\t\t\t\tthis.currentGroup.StudentNames.forEach(async function(studentId) {\r\n\t\t\t\t\t\t\t\tif (that.revieweeId != studentId) {\r\n\t\t\t\t\t\t\t\t\tconst memberReviews = await reviewService.getReview(that.termCode, that.orgCode, that.classCode,\r\n\t\t\t\t\t\t\t\t\t\tthat.assignmentId, that.reviewerId, studentId, that.reviewerRole)\r\n\t\t\t\t\t\t\t\t\tif (memberReviews && memberReviews.length > 0) {\r\n\t\t\t\t\t\t\t\t\t\tconst thisMemberReview = memberReviews[0]\r\n\t\t\t\t\t\t\t\t\t\tthisMemberReview.CriteriaFeedback = that.criteriaFeedback\r\n\t\t\t\t\t\t\t\t\t\tconst thisLastCriteriaScore = that.criteriaFeedback[that.criteriaFeedback.length - 1].Mark\r\n\t\t\t\t\t\t\t\t\t\tthisMemberReview.HolisticScore = thisLastCriteriaScore == null ? 999 : thisLastCriteriaScore\r\n\t\t\t\t\t\t\t\t\t\tthisMemberReview.Status.LastActivity = lastActivityDate\r\n\t\t\t\t\t\t\t\t\t\treviewService.updateReview(thisMemberReview)\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t})\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}).catch((error) => {\r\n\t\t\t\t\t\tconsole.log(error)\r\n\t\t\t\t\t})\r\n\t\t\t} else {\r\n\t\t\t\t// Create new review\r\n\t\t\t\tlet reviewType\r\n\t\t\t\tif (this.reviewerRole == 'Instructor') { reviewType = 'instructor_review' } else if (this.reviewerRole == 'Student') { reviewType = 'peer_review' }\r\n\t\t\t\tconst lastActivityDate = this.getlastActivityDate()\r\n\t\t\t\tconst lastCriteriaScore = this.criteriaFeedback[this.criteriaFeedback.length - 1].Mark\r\n\t\t\t\tconst holisticScore = lastCriteriaScore == null ? 999 : lastCriteriaScore\r\n\t\t\t\tconst newReview = {\r\n\t\t\t\t\tDocId: this.docId,\r\n\t\t\t\t\tIdInfo: {\r\n\t\t\t\t\t\tTermCode: this.termCode,\r\n\t\t\t\t\t\tOrganization: this.orgCode,\r\n\t\t\t\t\t\tClassCode: this.classCode,\r\n\t\t\t\t\t\tRevieweeId: this.revieweeId,\r\n\t\t\t\t\t\tAssignmentId: this.assignmentId,\r\n\t\t\t\t\t\tReviewerId: this.reviewerId,\r\n\t\t\t\t\t\tReviewType: reviewType,\r\n\t\t\t\t\t\tUploadedDate: this.getDateStr(this.uploadedDate)\r\n\t\t\t\t\t},\r\n\t\t\t\t\tStatus: {\r\n\t\t\t\t\t\tInProgress: true,\r\n\t\t\t\t\t\tEmailSent: false,\r\n\t\t\t\t\t\tLastActivity: lastActivityDate\r\n\t\t\t\t\t},\r\n\t\t\t\t\tGraderRole: this.reviewerRole,\r\n\t\t\t\t\tFinalGrade: 'NG',\r\n\t\t\t\t\tPercentScore: 0,\r\n\t\t\t\t\tHolisticScore: holisticScore,\r\n\t\t\t\t\tCriteriaFeedback: this.criteriaFeedback\r\n\t\t\t\t}\r\n\t\t\t\tconsole.log(newReview)\r\n\t\t\t\treviewService.createNewReview(newReview)\r\n\t\t\t\t\t.then(review => {\r\n\t\t\t\t\t\tthis.review = review\r\n\t\t\t\t\t\tthis.criteriaFeedback = review.CriteriaFeedback\r\n\t\t\t\t\t}).catch((error) => {\r\n\t\t\t\t\t\tconsole.log(error)\r\n\t\t\t\t\t})\r\n\t\t\t}\r\n\t\t},\r\n\t\tasync submitReview() {\r\n\t\t\tif (this.review != null) {\r\n\t\t\t\t// Update this review\r\n\t\t\t\tconst review = this.review\r\n\t\t\t\treview.Status.InProgress = false\r\n\t\t\t\treview.Status.EmailSent = true\r\n\t\t\t\treview.Status.LastActivity = this.getlastActivityDate()\r\n\t\t\t\tconst lastCriteriaScore = this.criteriaFeedback[this.criteriaFeedback.length - 1].Mark\r\n\t\t\t\treview.HolisticScore = lastCriteriaScore == null ? 999 : lastCriteriaScore\r\n\r\n\t\t\t\tconst updatedReview = await reviewService.updateReview(review)\r\n\t\t\t\tthis.review = updatedReview\r\n\t\t\t\tthis.criteriaFeedback = updatedReview.CriteriaFeedback\r\n\t\t\t\tif (this.reviewerRole == 'Instructor' && this.isGroupProject) {\r\n\t\t\t\t\tconst that = this\r\n\t\t\t\t\tthis.currentGroup.StudentNames.forEach(async function(studentId) {\r\n\t\t\t\t\t\tif (that.revieweeId != studentId) {\r\n\t\t\t\t\t\t\tconst newReview = {\r\n\t\t\t\t\t\t\t\tDocId: that.docId,\r\n\t\t\t\t\t\t\t\tIdInfo: {\r\n\t\t\t\t\t\t\t\t\tTermCode: that.termCode,\r\n\t\t\t\t\t\t\t\t\tOrganization: that.orgCode,\r\n\t\t\t\t\t\t\t\t\tClassCode: that.classCode,\r\n\t\t\t\t\t\t\t\t\tRevieweeId: studentId,\r\n\t\t\t\t\t\t\t\t\tAssignmentId: that.assignmentId,\r\n\t\t\t\t\t\t\t\t\tReviewerId: that.reviewerId,\r\n\t\t\t\t\t\t\t\t\tReviewType: 'instructor_review',\r\n\t\t\t\t\t\t\t\t\tUploadedDate: that.getDateStr(that.uploadedDate)\r\n\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\tStatus: {\r\n\t\t\t\t\t\t\t\t\tInProgress: false,\r\n\t\t\t\t\t\t\t\t\tEmailSent: true,\r\n\t\t\t\t\t\t\t\t\tLastActivity: that.getlastActivityDate()\r\n\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\tGraderRole: that.reviewerRole,\r\n\t\t\t\t\t\t\t\tFinalGrade: 'NG',\r\n\t\t\t\t\t\t\t\tPercentScore: 0,\r\n\t\t\t\t\t\t\t\tHolisticScore: that.review.HolisticScore,\r\n\t\t\t\t\t\t\t\tCriteriaFeedback: that.criteriaFeedback\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\tawait reviewService.createNewReview(newReview)\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t})\r\n\t\t\t\t}\r\n\t\t\t\tthis.myapi.save()\r\n\t\t\t\tthis.statusType = 'primary'\r\n\t\t\t\tthis.submitTooltip = 'Your feedback is submitted.'\r\n\t\t\t}\r\n\t\t},\r\n\t\tgetPreviousFeedback(review) {\r\n\t\t\tconst criteriaFeedbacks = []\r\n\t\t\tfor (let i = 0; i < review.CriteriaFeedback.length; i++) {\r\n\t\t\t\tconst criteria = review.CriteriaFeedback[i]\r\n\t\t\t\tconst criteriaFeedback = {\r\n\t\t\t\t\tCriteriaId: criteria.CriteriaId,\r\n\t\t\t\t\tMark: criteria.Mark == null ? 999 : criteria.Mark,\r\n\t\t\t\t\tComment: criteria.Comment,\r\n\t\t\t\t\tAudioPath: criteria.AudioPath\r\n\t\t\t\t}\r\n\t\t\t\tcriteriaFeedbacks.push(criteriaFeedback)\r\n\t\t\t}\r\n\t\t\treturn criteriaFeedbacks\r\n\t\t},\r\n\t\tasync onAssignmentChange() {\r\n\t\t\tthis.pageNum = 1\r\n\t\t\tthis.review = null\r\n\t\t\tthis.submissions = []\r\n\t\t\tthis.currentSubmission = null\r\n\t\t\t// this.revieweeId = null;\r\n\t\t\tthis.assignmentId = this.currentAssignment.Id\r\n\t\t\tif (this.currentAssignment.IsGroupAssignment && this.reviewerRole == 'Instructor') {\r\n\t\t\t\tthis.isGroupProject = true\r\n\t\t\t\t// set up group selection\r\n\t\t\t\tconst groupSetupComplete = await this.setUpGroupSelection()\r\n\t\t\t\tif (groupSetupComplete) { this.displayDocumentAndReview() } // Set up submissions selection, document, and rubric\r\n\t\t\t\tthis.$router.push('/rubric?reviewerId=' + this.reviewerId + '&groupId=' + this.groupId + '&assignmentId=' + this.assignmentId)\r\n\t\t\t} else {\r\n\t\t\t\tthis.isGroupProject = false\r\n\t\t\t\t// Set up students selection\r\n\t\t\t\tconst studentSetupComplete = await this.setUpStudentSelection()\r\n\t\t\t\tif (studentSetupComplete) { this.displayDocumentAndReview() } // Set up submissions selection, document, and rubric\r\n\t\t\t\tthis.$router.push('/rubric?reviewerId=' + this.reviewerId + '&revieweeId=' + this.revieweeId + '&assignmentId=' + this.assignmentId)\r\n\t\t\t}\r\n\t\t},\r\n\t\tonStudentChange() {\r\n\t\t\tthis.pageNum = 1\r\n\t\t\tthis.submissions = []\r\n\t\t\tthis.currentSubmission = null\r\n\t\t\tthis.revieweeId = this.currentStudent.UserName\r\n\t\t\tconst thisIndex = this.students.findIndex(x => x.UserName == this.currentStudent.UserName)\r\n\t\t\tif (thisIndex == 0) {\r\n\t\t\t\tthis.prevBtnDisable = true\r\n\t\t\t\tif (this.students.length > 1 && this.nextBtnDisable == true) { this.nextBtnDisable = false }\r\n\t\t\t}\r\n\t\t\tif (thisIndex == this.students.length - 1) {\r\n\t\t\t\tthis.nextBtnDisable = true\r\n\t\t\t\tif (this.students.length > 1 && this.prevBtnDisable == true) { this.prevBtnDisable = false }\r\n\t\t\t}\r\n\t\t\tthis.displayDocumentAndReview()\r\n\t\t\tthis.$router.push('/rubric?reviewerId=' + this.reviewerId + '&revieweeId=' + this.revieweeId + '&assignmentId=' + this.assignmentId)\r\n\t\t},\r\n\t\tpreviousStudent() {\r\n\t\t\tconst thisIndex = this.students.findIndex(x => x.UserName == this.currentStudent.UserName)\r\n\t\t\tif (thisIndex == 0) {\r\n\t\t\t\tthis.prevBtnDisable = true\r\n\t\t\t} else {\r\n\t\t\t\tif (this.students.length > 1) { this.nextBtnDisable = false }\r\n\t\t\t\tthis.currentStudent = this.students[thisIndex - 1]\r\n\t\t\t\tthis.pageNum = 1\r\n\t\t\t\tthis.submissions = []\r\n\t\t\t\tthis.currentSubmission = null\r\n\t\t\t\tthis.revieweeId = this.currentStudent.UserName\r\n\t\t\t\tthis.displayDocumentAndReview()\r\n\t\t\t\tthis.$router.push('/rubric?reviewerId=' + this.reviewerId + '&revieweeId=' + this.revieweeId + '&assignmentId=' + this.assignmentId)\r\n\t\t\t}\r\n\t\t},\r\n\t\tnextStudent() {\r\n\t\t\tconst thisIndex = this.students.findIndex(x => x.UserName == this.currentStudent.UserName)\r\n\t\t\tif (thisIndex == this.students.length - 1) {\r\n\t\t\t\tthis.nextBtnDisable = true\r\n\t\t\t} else {\r\n\t\t\t\tif (this.students.length > 1) { this.prevBtnDisable = false }\r\n\t\t\t\tthis.currentStudent = this.students[thisIndex + 1]\r\n\t\t\t\tthis.pageNum = 1\r\n\t\t\t\tthis.submissions = []\r\n\t\t\t\tthis.currentSubmission = null\r\n\t\t\t\tthis.revieweeId = this.currentStudent.UserName\r\n\t\t\t\tthis.displayDocumentAndReview()\r\n\t\t\t\tthis.$router.push('/rubric?reviewerId=' + this.reviewerId + '&revieweeId=' + this.revieweeId + '&assignmentId=' + this.assignmentId)\r\n\t\t\t}\r\n\t\t},\r\n\t\tonGroupChange() {\r\n\t\t\tthis.pageNum = 1\r\n\t\t\tthis.submissions = []\r\n\t\t\tthis.currentSubmission = null\r\n\t\t\tthis.revieweeId = this.currentGroup.StudentId\r\n\t\t\tthis.groupId = this.currentGroup.GroupId\r\n\t\t\tconst thisIndex = this.groups.findIndex(x => x.GroupId == this.currentGroup.GroupId)\r\n\t\t\tif (thisIndex == 0) {\r\n\t\t\t\tthis.prevGroupBtnDisable = true\r\n\t\t\t\tif (this.groups.length > 1 && this.nextGroupBtnDisable == true) { this.nextGroupBtnDisable = false }\r\n\t\t\t}\r\n\t\t\tif (thisIndex == this.groups.length - 1) {\r\n\t\t\t\tthis.nextGroupBtnDisable = true\r\n\t\t\t\tif (this.groups.length > 1 && this.prevGroupBtnDisable == true) { this.prevGroupBtnDisable = false }\r\n\t\t\t}\r\n\r\n\t\t\tthis.displayDocumentAndReview()\r\n\t\t\tthis.$router.push('/rubric?reviewerId=' + this.reviewerId + '&groupId=' + this.currentGroup.GroupId + '&assignmentId=' + this.assignmentId)\r\n\t\t},\r\n\t\tpreviousGroup() {\r\n\t\t\tconst thisIndex = this.groups.findIndex(x => x.GroupId == this.currentGroup.GroupId)\r\n\t\t\tif (thisIndex == 0) {\r\n\t\t\t\tthis.prevGroupBtnDisable = true\r\n\t\t\t} else {\r\n\t\t\t\tif (this.groups.length > 1) { this.nextGroupBtnDisable = false }\r\n\t\t\t\tthis.currentGroup = this.groups[thisIndex - 1]\r\n\t\t\t\tthis.pageNum = 1\r\n\t\t\t\tthis.submissions = []\r\n\t\t\t\tthis.currentSubmission = null\r\n\t\t\t\tthis.revieweeId = this.currentGroup.StudentId\r\n\t\t\t\tthis.groupId = this.currentGroup.GroupId\r\n\t\t\t\tthis.displayDocumentAndReview()\r\n\t\t\t\tthis.$router.push('/rubric?reviewerId=' + this.reviewerId + '&groupId=' + this.currentGroup.GroupId + '&assignmentId=' + this.assignmentId)\r\n\t\t\t}\r\n\t\t},\r\n\t\tnextGroup() {\r\n\t\t\tconst thisIndex = this.groups.findIndex(x => x.GroupId == this.currentGroup.GroupId)\r\n\t\t\tif (thisIndex == this.groups.length - 1) {\r\n\t\t\t\tthis.nextGroupBtnDisable = true\r\n\t\t\t} else {\r\n\t\t\t\tif (this.groups.length > 1) { this.prevGroupBtnDisable = false }\r\n\t\t\t\tthis.currentGroup = this.groups[thisIndex + 1]\r\n\t\t\t\tthis.pageNum = 1\r\n\t\t\t\tthis.submissions = []\r\n\t\t\t\tthis.currentSubmission = null\r\n\t\t\t\tthis.revieweeId = this.currentGroup.StudentId\r\n\t\t\t\tthis.groupId = this.currentGroup.GroupId\r\n\t\t\t\tthis.displayDocumentAndReview()\r\n\t\t\t\tthis.$router.push('/rubric?reviewerId=' + this.reviewerId + '&groupId=' + this.currentGroup.GroupId + '&assignmentId=' + this.assignmentId)\r\n\t\t\t}\r\n\t\t},\r\n\t\tasync onSubmissionChange() {\r\n\t\t\tthis.pageNum = 1\r\n\t\t\t// Display the doc based on latest submission or latest review\r\n\t\t\tawait this.displayDocument(this.currentSubmission.docId)\r\n\r\n\t\t\t// Display the latest review\r\n\t\t\tawait this.displayReview(this.currentSubmission.review)\r\n\t\t},\r\n\t\tPdfAttachListeners() {\r\n\t\t\tconst id = 'PdfWebControl'\r\n\t\t\t// eslint-disable-next-line no-undef\r\n\t\t\tthis.myapi = new PdfWebControlApi(id)\r\n\t\t\tthis.myapi.addEventListener('modeChanged', function(evt) {\r\n\t\t\t\tevt.byLine = true\r\n\t\t\t})\r\n\t\t\tconst that = this\r\n\t\t\tthis.myapi.addEventListener('viewChanged', function(evt) {\r\n\t\t\t\tthat.pageNum = that.myapi.getPageViewed().getPageNumber()\r\n\t\t\t})\r\n\r\n\t\t\tthis.myapi.addEventListener('objectAdded', function(evt) {\r\n\t\t\t\tif (evt.obj.getType() == 154) { // Highlight annotation\r\n\t\t\t\t\tconst props = evt.obj.getProperties()\r\n\t\t\t\t\tconst popup = evt.obj.getPopup()\r\n\r\n\t\t\t\t\tevt.obj.setProperties({\r\n\t\t\t\t\t\t'customData': evt.textSelected\r\n\t\t\t\t\t})\r\n\r\n\t\t\t\t\tpopup.setProperties(\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tauthor: 'RAD PDF',\r\n\t\t\t\t\t\t\tsubject: 'In-text Comment',\r\n\t\t\t\t\t\t\ttop: props['top'] - 60,\r\n\t\t\t\t\t\t\tleft: props['left'] - 5,\r\n\t\t\t\t\t\t\theight: 60\r\n\t\t\t\t\t\t})\r\n\r\n\t\t\t\t\tthat.myapi.setMode(that.myapi.Mode.None)\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (evt.obj.getType() == 100) {\r\n\t\t\t\t\tthat.myapi.setMode(that.myapi.Mode.None)\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (evt.obj.getType() == 101) {\r\n\t\t\t\t\tthat.myapi.setMode(that.myapi.Mode.None)\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (evt.obj.getType() == that.myapi.ObjectType.StrikeoutAnnotation) {\r\n\t\t\t\t\tthat.myapi.setMode(that.myapi.Mode.None)\r\n\t\t\t\t}\r\n\t\t\t\tif (evt.obj.getType() == that.myapi.ObjectType.TextAnnotation) {\r\n\t\t\t\t\tthat.myapi.setMode(that.myapi.Mode.None)\r\n\t\t\t\t}\r\n\t\t\t})\r\n\t\t},\r\n\t\tchangePage() {\r\n\t\t\tthis.myapi.setView({ 'page': this.pageNum })\r\n\t\t},\r\n\t\tzoomOut() {\r\n\t\t\tif (this.myapi) {\r\n\t\t\t\tif (this.zoomValue > 40) { this.myapi.setView({ 'zoom': this.zoomValue -= 20 }) }\r\n\t\t\t}\r\n\t\t},\r\n\t\tzoomIn() {\r\n\t\t\tif (this.myapi) {\r\n\t\t\t\tif (this.zoomValue < 200 && this.zoomValue > 20) { this.myapi.setView({ 'zoom': this.zoomValue += 20 }) }\r\n\t\t\t}\r\n\t\t},\r\n\t\tzoomFitWidth() {\r\n\t\t\tif (this.myapi) {\r\n\t\t\t\tthis.zoomValue = 140\r\n\t\t\t\tthis.myapi.setView({ 'zoom': -1 })\r\n\t\t\t}\r\n\t\t},\r\n\t\tdownloadPdf() {\r\n\t\t\tif (this.myapi) {\r\n\t\t\t\tthis.myapi.download()\r\n\t\t\t}\r\n\t\t\treturn false\r\n\t\t},\r\n\t\tselectTextPdf() {\r\n\t\t\tif (this.myapi) {\r\n\t\t\t\tthis.myapi.setMode(this.myapi.Mode.SelectText)\r\n\t\t\t}\r\n\t\t\treturn false\r\n\t\t},\r\n\t\thighlightPdf() {\r\n\t\t\tif (this.myapi) {\r\n\t\t\t\tthis.myapi.setMode(this.myapi.Mode.InsertHighlightAnnotation)\r\n\t\t\t}\r\n\t\t\treturn false\r\n\t\t},\r\n\t\tfreeTextPdf() {\r\n\t\t\tif (this.myapi) {\r\n\t\t\t\tthis.myapi.setMode(this.myapi.Mode.InsertTextShape)\r\n\t\t\t}\r\n\t\t\treturn false\r\n\t\t},\r\n\t\tstrikeOutPdf() {\r\n\t\t\tif (this.myapi) {\r\n\t\t\t\tthis.myapi.setMode(this.myapi.Mode.InsertStrikeoutAnnotation)\r\n\t\t\t}\r\n\t\t\treturn false\r\n\t\t},\r\n\t\tfreeDrawPdf() {\r\n\t\t\tif (this.myapi) {\r\n\t\t\t\tthis.myapi.setMode(this.myapi.Mode.InsertInkShape)\r\n\t\t\t}\r\n\t\t\treturn false\r\n\t\t},\r\n\t\tstickyNotePdf() {\r\n\t\t\tif (this.myapi) {\r\n\t\t\t\tthis.myapi.setMode(this.myapi.Mode.InsertTextAnnotation)\r\n\t\t\t}\r\n\t\t\treturn false\r\n\t\t},\r\n\t\tbackToStudentSubmissions() {\r\n\t\t\tthis.$router.push('/course/' + this.classCode + '/assignments/' + this.assignmentId + '/submissions')\r\n\t\t},\r\n\t\tbackToAssignments() {\r\n\t\t\tthis.$router.push('/course/' + this.classCode + '/assignments/')\r\n\t\t},\r\n\t\tgetUrlParameter(sParam) {\r\n\t\t\tconst sPageURL = decodeURIComponent(window.location.search.substring(1))\r\n\r\n\t\t\tconst sURLVariables = sPageURL.split('&')\r\n\r\n\t\t\tlet sParameterName\r\n\r\n\t\t\tlet i\r\n\r\n\t\t\tfor (i = 0; i < sURLVariables.length; i++) {\r\n\t\t\t\tsParameterName = sURLVariables[i].split('=')\r\n\r\n\t\t\t\tif (sParameterName[0] === sParam) {\r\n\t\t\t\t\treturn sParameterName[1] === undefined ? true : sParameterName[1]\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t},\r\n\t\tgetlastActivityDate() {\r\n\t\t\t// let currentZone = this.$moment.tz.guess();\r\n\t\t\t// if (currentZone != zoneName) {\r\n\t\t\t// \tlet today = this.$moment().tz(zoneName)._d;\r\n\t\t\t// \treturn today.getFullYear() + '-' + (today.getMonth() + 1) + '-' +\r\n\t\t\t// today.getDate() + ' ' + today.getHours() + ':' + today.getMinutes() + ':' + today.getSeconds();\r\n\t\t\t// } else {\r\n\r\n\t\t\t// }\r\n\t\t\tconst today = this.$moment()._d\r\n\t\t\treturn today.getFullYear() + '-' + (today.getMonth() + 1) + '-' +\r\n today.getDate() + ' ' + today.getHours() + ':' + today.getMinutes() + ':' + today.getSeconds()\r\n\t\t},\r\n\t\tgetDateStr(date) {\r\n\t\t\tconst thisDate = this.$moment(date)._d\r\n\t\t\treturn thisDate.getFullYear() + '-' + (thisDate.getMonth() + 1) + '-' +\r\n thisDate.getDate() + ' ' + thisDate.getHours() + ':' + thisDate.getMinutes() + ':' + thisDate.getSeconds()\r\n\t\t}\r\n\t}\r\n}\r\n</script>\r\n\r\n<style scoped>\r\nbody{\r\n background: #F1F3FA;\r\n}\r\n#content-wrapper {\r\n margin-left: 65px;\r\n}\r\n\r\n.el-card{\r\n border: 1px solid #d4d5d6;\r\n}\r\n.el-card.is-always-shadow, .el-card.is-hover-shadow:focus, .el-card.is-hover-shadow:hover {\r\n -webkit-box-shadow: 0 2px 12px 0 #F1F3FA;\r\n box-shadow: 0 2px 12px 0 #F1F3FA;\r\n}\r\n\r\n.el-card__header {\r\n padding: 12px 12px;\r\n}\r\n\r\n.el-card__body {\r\n padding: 10px;\r\n}\r\n\r\n.el-textarea__inner {\r\n padding: 5px 10px;\r\n}\r\n\r\n.filter-btn{\r\n text-align: center;\r\n box-shadow: none;\r\n display: inline-block;\r\n padding: 0px 10px;\r\n vertical-align: middle;\r\n touch-action: manipulation;\r\n cursor: pointer;\r\n color: #636363;\r\n}\r\n\r\n.filter-divider{\r\n float: left;\r\n border-right: solid 1px #cccccc;\r\n height: 50px;\r\n}\r\n\r\n#full_width_container {\r\n position: absolute;\r\n top: 3.1325em;\r\n bottom: 2px;\r\n left: 215px;\r\n right: 0;\r\n min-width: 460px;\r\n}\r\n\r\n#full_width_container.full-width{\r\n position: absolute;\r\n top: 3.1325em;\r\n bottom: 2px;\r\n left: 65px;\r\n right: 0;\r\n min-width: 460px;\r\n}\r\n\r\n#left_side {\r\n /* position: absolute; */\r\n top: 0;\r\n bottom: 0;\r\n overflow-y: hidden;\r\n left: 0;\r\n right: 30%;\r\n min-width: 700px;\r\n}\r\n#right_side {\r\n /* position: absolute; */\r\n top: 0;\r\n bottom: 0;\r\n right: 0;\r\n font-size: 14px;\r\n font-size: .875rem;\r\n}\r\n.el-input-number--small{\r\n width: 100px;\r\n}\r\n.el-radio-button >>> .el-radio-button__inner{\r\n padding: 12px 15px;\r\n}\r\n\r\n.full_height {\r\n height: 100%;\r\n overflow-x: auto;\r\n}\r\n\r\n#left_side_inner, #submissions_container, #iframe_holder{\r\n height: 100%;\r\n width: 100%;\r\n border: 0 none;\r\n}\r\niframe{\r\n width: 100%;\r\n border: 0px;\r\n overflow: auto;\r\n height: 99%;\r\n min-height: 0px;\r\n}\r\n\r\n.columnsres {\r\n position: absolute;\r\n top: 0;\r\n bottom: 0;\r\n left: 0;\r\n background: #bbb url(https://du11hjcvx0uqb.cloudfront.net/dist/images/splitpane_handle-ew-1b67cccf0f.gif) no-repeat scroll 50% 50%;\r\n cursor: pointer;\r\n width: 7px;\r\n border-right: 1px solid #838383;\r\n z-index: 2;\r\n}\r\n.right_side_content {\r\n /* position: absolute; */\r\n top: 0;\r\n bottom: 0;\r\n right: 0;\r\n}\r\n#right_side #rightside_inner {\r\n overflow-y: auto;\r\n position: relative;\r\n}\r\n\r\n.ViewerControls--with-annotations {\r\n height: 49px;\r\n}\r\n.ViewerControls {\r\n background-color: #636363;\r\n color: #fff;\r\n font-size: 14px;\r\n line-height: 24px;\r\n /* overflow-x: auto; */\r\n /* position: absolute;\r\n width: 100%; */\r\n}\r\n.ViewerControls-primary {\r\n -ms-touch-action: none;\r\n touch-action: none;\r\n pointer-events: all;\r\n display: -webkit-box;\r\n display: -ms-flexbox;\r\n display: flex;\r\n}\r\n.ViewerControls--download, .ViewerControls--title {\r\n -webkit-box-flex: 1;\r\n -ms-flex: 1;\r\n flex: 1;\r\n display: -webkit-box;\r\n display: -ms-flexbox;\r\n display: flex;\r\n -webkit-box-align: center;\r\n -ms-flex-align: center;\r\n align-items: center;\r\n white-space: nowrap;\r\n}\r\n\r\n.download-button--button {\r\n background-color: transparent;\r\n font-size: 16px;\r\n border: none;\r\n height: 48px;\r\n width: 48px;\r\n color: white;\r\n cursor: pointer;\r\n}\r\n/* .download-button--button:hover {\r\n background-color: #777777;\r\n} */\r\n\r\n.ViewerControls--page-controls {\r\n display: -webkit-box;\r\n display: -ms-flexbox;\r\n display: flex;\r\n -webkit-box-align: center;\r\n -ms-flex-align: center;\r\n align-items: center;\r\n white-space: nowrap;\r\n}\r\n\r\n.DocumentControls {\r\n display: -webkit-box;\r\n display: -ms-flexbox;\r\n display: flex;\r\n -webkit-box-align: center;\r\n -ms-flex-align: center;\r\n align-items: center;\r\n}\r\n\r\n.AnnotationControlButton {\r\n width: 48px;\r\n padding: 0;\r\n border: 0 none;\r\n color: #fff;\r\n background-color: #636363;\r\n margin-top: 0;\r\n margin-bottom: 0;\r\n cursor: pointer;\r\n -webkit-box-sizing: content-box;\r\n box-sizing: content-box;\r\n -webkit-touch-callout: none;\r\n user-select: none;\r\n -moz-user-select: none;\r\n -webkit-user-select: none;\r\n -ms-user-select: none;\r\n -webkit-tap-highlight-color: rgba(0,0,0,0);\r\n}\r\n.AnnotationControlButton-inner, .AnnotationControlButton-outer {\r\n -webkit-box-sizing: content-box;\r\n box-sizing: content-box;\r\n display: -webkit-box;\r\n display: -ms-flexbox;\r\n display: flex;\r\n}\r\n\r\n.AnnotationControlButton-inner {\r\n margin: 0;\r\n height: 44px;\r\n width: 48px;\r\n -webkit-box-pack: center;\r\n -ms-flex-pack: center;\r\n justify-content: center;\r\n -webkit-box-align: center;\r\n -ms-flex-align: center;\r\n align-items: center;\r\n}\r\n\r\n.AnnotationControlButton-inner {\r\n margin: 0;\r\n height: 44px;\r\n width: 48px;\r\n -webkit-box-pack: center;\r\n -ms-flex-pack: center;\r\n justify-content: center;\r\n -webkit-box-align: center;\r\n -ms-flex-align: center;\r\n align-items: center;\r\n}\r\n.AnnotationControlButton-outer {\r\n width: 44px;\r\n margin: 1px;\r\n border: 1px solid #636363;\r\n}\r\n\r\n.ViewerControls--current-page {\r\n -moz-appearance: textfield;\r\n margin-top: 10px;\r\n border-radius: 3px;\r\n border: 0;\r\n height: 28px;\r\n width: 36px;\r\n background-color: #fff;\r\n color: #636363;\r\n font-size: 14px;\r\n text-align: center;\r\n vertical-align: top;\r\n}\r\n.next-prev{\r\n text-align: center;\r\n -webkit-box-shadow: none;\r\n box-shadow: none;\r\n display: inline-block;\r\n padding: 0px 10px;\r\n vertical-align: middle;\r\n -ms-touch-action: manipulation;\r\n touch-action: manipulation;\r\n cursor: pointer;\r\n border: 0 none;\r\n background: none;\r\n}\r\n/* .AnnotationControlButton.selected .AnnotationControlButton-outer {\r\n border-color: #fff;\r\n border: 1px solid #fff;\r\n color: #636363;\r\n}\r\n.AnnotationControlButton.selected {\r\n outline: none;\r\n background-color: #fff;\r\n}\r\n\r\n.AnnotationControlButton:active .AnnotationControlButton-outer {\r\n -webkit-box-shadow: inset 0 0 2px #000;\r\n box-shadow: inset 0 0 2px #000;\r\n}\r\n.AnnotationControlButton:hover:enabled .AnnotationControlButton-outer {\r\n border-color: #777777;\r\n}\r\n.AnnotationControlButton:hover:enabled {\r\n background-color: #777777;\r\n} */\r\n\r\n</style>\r\n\r\n<style>\r\n.el-radio-button__orig-radio:disabled:checked+.el-radio-button__inner {\r\n background-color: #0A7756;\r\n color: white;\r\n}\r\n</style>\r\n\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ScorePaper.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ScorePaper.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./ScorePaper.vue?vue&type=template&id=187b13c6&scoped=true&\"\nimport script from \"./ScorePaper.vue?vue&type=script&lang=js&\"\nexport * from \"./ScorePaper.vue?vue&type=script&lang=js&\"\nimport style0 from \"./ScorePaper.vue?vue&type=style&index=0&id=187b13c6&scoped=true&lang=css&\"\nimport style1 from \"./ScorePaper.vue?vue&type=style&index=1&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"187b13c6\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('div',{staticStyle:{\"height\":\"50px\",\"border-bottom\":\"#cccccc solid 1px\"},attrs:{\"id\":\"filter\"}},[_c('div',{staticClass:\"filter-divider\",staticStyle:{\"width\":\"220px\"}},[(_vm.readOnly)?_c('el-button',{staticStyle:{\"text-align\":\"center\",\"-webkit-box-shadow\":\"none\",\"box-shadow\":\"none\",\"display\":\"inline-block\",\"padding\":\"0px\",\"padding-right\":\"10px\",\"vertical-align\":\"middle\",\"-ms-touch-action\":\"manipulation\",\"touch-action\":\"manipulation\",\"cursor\":\"pointer\",\"border\":\"0 none\",\"background\":\"none\"},attrs:{\"title\":\"Back to Student Submissions\"},on:{\"click\":function($event){return _vm.backToStudentSubmissions()}}},[_c('i',{staticClass:\"fas fa-chevron-left\",staticStyle:{\"font-size\":\"25px\"}})]):_c('el-button',{staticStyle:{\"text-align\":\"center\",\"-webkit-box-shadow\":\"none\",\"box-shadow\":\"none\",\"display\":\"inline-block\",\"padding\":\"0px\",\"padding-right\":\"10px\",\"vertical-align\":\"middle\",\"-ms-touch-action\":\"manipulation\",\"touch-action\":\"manipulation\",\"cursor\":\"pointer\",\"border\":\"0 none\",\"background\":\"none\"},attrs:{\"title\":\"Back to Projects\"},on:{\"click\":function($event){return _vm.backToAssignments()}}},[_c('i',{staticClass:\"fas fa-chevron-left\",staticStyle:{\"font-size\":\"25px\"}})]),_c('el-tooltip',{staticClass:\"item\",attrs:{\"effect\":\"light\",\"content\":\"Select a project\",\"placement\":\"bottom\"}},[_c('el-select',{staticStyle:{\"margin-top\":\"5px\",\"width\":\"80%\"},attrs:{\"id\":\"assignments-selection\",\"value-key\":\"Id\",\"filterable\":\"\",\"placeholder\":\"Select Project\",\"no-match-text\":\"No Matching Data\",\"no-data-text\":\"No data\",\"loading-text\":\"Loading\",\"disabled\":_vm.readOnly},on:{\"change\":function($event){return _vm.onAssignmentChange()}},model:{value:(_vm.currentAssignment),callback:function ($$v) {_vm.currentAssignment=$$v},expression:\"currentAssignment\"}},_vm._l((_vm.assignments),function(item){return _c('el-option',{key:item.Id,attrs:{\"label\":item.AssignmentName,\"value\":item}})}),1)],1)],1),(!_vm.noSubmission)?_c('div',[(!_vm.isGroupProject)?_c('div',{staticClass:\"filter-divider\",staticStyle:{\"width\":\"285px\"}},[_c('el-button',{staticStyle:{\"text-align\":\"center\",\"-webkit-box-shadow\":\"none\",\"box-shadow\":\"none\",\"display\":\"inline-block\",\"padding\":\"0px 10px\",\"vertical-align\":\"middle\",\"-ms-touch-action\":\"manipulation\",\"touch-action\":\"manipulation\",\"cursor\":\"pointer\",\"border\":\"0 none\",\"background\":\"none\"},attrs:{\"disabled\":_vm.prevBtnDisable,\"title\":\"Previous student\"},on:{\"click\":_vm.previousStudent}},[_c('i',{staticClass:\"fas fa-arrow-left\",staticStyle:{\"font-size\":\"25px\"}})]),_c('el-tooltip',{staticClass:\"item\",attrs:{\"effect\":\"light\",\"content\":\"Select a student\",\"placement\":\"bottom\"}},[_c('el-select',{staticStyle:{\"margin-top\":\"5px\",\"width\":\"200px\"},attrs:{\"id\":\"students-selection\",\"value-key\":\"UserName\",\"filterable\":\"\",\"placeholder\":\"Select Student\"},on:{\"change\":function($event){return _vm.onStudentChange()}},model:{value:(_vm.currentStudent),callback:function ($$v) {_vm.currentStudent=$$v},expression:\"currentStudent\"}},_vm._l((_vm.students),function(item){return _c('el-option',{key:item.UserName,attrs:{\"label\":item.LastName + ', ' + item.FirstName,\"value\":item}})}),1)],1),_c('el-button',{staticStyle:{\"text-align\":\"center\",\"-webkit-box-shadow\":\"none\",\"box-shadow\":\"none\",\"display\":\"inline-block\",\"padding\":\"0px 10px\",\"vertical-align\":\"middle\",\"-ms-touch-action\":\"manipulation\",\"touch-action\":\"manipulation\",\"cursor\":\"pointer\",\"border\":\"0 none\",\"background\":\"none\"},attrs:{\"disabled\":_vm.nextBtnDisable,\"title\":\"Next student\"},on:{\"click\":_vm.nextStudent}},[_c('i',{staticClass:\"fas fa-arrow-right\",staticStyle:{\"font-size\":\"25px\"}})])],1):_c('div',{staticClass:\"filter-divider\",staticStyle:{\"width\":\"285px\"}},[_c('el-button',{staticStyle:{\"text-align\":\"center\",\"-webkit-box-shadow\":\"none\",\"box-shadow\":\"none\",\"display\":\"inline-block\",\"padding\":\"0px 10px\",\"vertical-align\":\"middle\",\"-ms-touch-action\":\"manipulation\",\"touch-action\":\"manipulation\",\"cursor\":\"pointer\",\"border\":\"0 none\",\"background\":\"none\"},attrs:{\"disabled\":_vm.prevGroupBtnDisable,\"title\":\"Previous Group\"},on:{\"click\":_vm.previousGroup}},[_c('i',{staticClass:\"fas fa-arrow-left\",staticStyle:{\"font-size\":\"25px\"}})]),_c('el-tooltip',{staticClass:\"item\",attrs:{\"effect\":\"light\",\"content\":\"Select a group\",\"placement\":\"bottom\"}},[_c('el-select',{staticStyle:{\"margin-top\":\"5px\",\"width\":\"200px\"},attrs:{\"id\":\"groups-selection\",\"value-key\":\"GroupId\",\"filterable\":\"\",\"placeholder\":\"Select Group\"},on:{\"change\":function($event){return _vm.onGroupChange()}},model:{value:(_vm.currentGroup),callback:function ($$v) {_vm.currentGroup=$$v},expression:\"currentGroup\"}},_vm._l((_vm.groups),function(item){return _c('el-option',{key:item.GroupId,attrs:{\"label\":item.GroupName,\"value\":item}})}),1)],1),_c('el-button',{staticStyle:{\"text-align\":\"center\",\"-webkit-box-shadow\":\"none\",\"box-shadow\":\"none\",\"display\":\"inline-block\",\"padding\":\"0px 10px\",\"vertical-align\":\"middle\",\"-ms-touch-action\":\"manipulation\",\"touch-action\":\"manipulation\",\"cursor\":\"pointer\",\"border\":\"0 none\",\"background\":\"none\"},attrs:{\"disabled\":_vm.nextGroupBtnDisable,\"title\":\"Next Group\"},on:{\"click\":_vm.nextGroup}},[_c('i',{staticClass:\"fas fa-arrow-right\",staticStyle:{\"font-size\":\"25px\"}})])],1)]):_vm._e(),(!_vm.readOnly && !_vm.noSubmission)?_c('div',{staticStyle:{\"width\":\"350px\",\"float\":\"left\"}},[_c('el-tooltip',{staticClass:\"item\",attrs:{\"effect\":\"light\",\"content\":\"Submission to view\",\"placement\":\"bottom\"}},[_c('el-select',{staticStyle:{\"margin-top\":\"5px\",\"margin-left\":\"10px\",\"margin-right\":\"10px\"},attrs:{\"id\":\"submissions-selection\",\"value-key\":\"docId\",\"filterable\":\"\",\"placeholder\":\"Select Submission\",\"no-match-text\":\"No Matching Data\",\"no-data-text\":\"No data\",\"loading-text\":\"Loading\"},on:{\"change\":function($event){return _vm.onSubmissionChange()}},model:{value:(_vm.currentSubmission),callback:function ($$v) {_vm.currentSubmission=$$v},expression:\"currentSubmission\"}},_vm._l((_vm.submissions),function(item){return _c('el-option',{key:item.docId,attrs:{\"label\":_vm._f(\"formatDate\")(item.uploadedDate),\"value\":item}})}),1)],1),(_vm.docId && _vm.onTime)?_c('el-tooltip',{staticClass:\"item\",attrs:{\"effect\":\"light\",\"content\":'Submitted on time at ' + _vm.formatDate(_vm.uploadedDate) + '. Due date is ' + _vm.formatDate(_vm.dueDate) + '.',\"placement\":\"bottom\"}},[_c('i',{staticClass:\"far fa-calendar-check\",staticStyle:{\"font-size\":\"30px\",\"color\":\"rgb(59, 146, 120)\",\"position\":\"absolute\",\"margin-top\":\"10px\"}})]):(_vm.docId && !_vm.onTime)?_c('el-tooltip',{staticClass:\"item\",attrs:{\"effect\":\"light\",\"content\":'Submitted late at ' + _vm.formatDate(_vm.uploadedDate) + '. Due date is ' + _vm.formatDate(_vm.dueDate) + '.',\"placement\":\"bottom\"}},[_c('i',{staticClass:\"far fa-calendar-times\",staticStyle:{\"font-size\":\"30px\",\"color\":\"#f57575\",\"position\":\"absolute\",\"margin-top\":\"10px\"}})]):_vm._e()],1):_vm._e(),_c('div',{staticStyle:{\"float\":\"right\",\"position\":\"absolute\",\"right\":\"0\"}},[_c('el-tooltip',{staticClass:\"item\",staticStyle:{\"display\":\"none\"},attrs:{\"id\":\"savedMessage\",\"effect\":\"light\",\"placement\":\"bottom\",\"content\":'Your feedback was successfully saved.'}},[_c('el-tag',{staticStyle:{\"line-height\":\"40px\",\"height\":\"40px\",\"margin-right\":\"5px\"},attrs:{\"type\":\"success\"}},[_vm._v(\"\\n Saved!\\n \")])],1),(_vm.review && !_vm.readOnly)?_c('el-button',{staticStyle:{\"margin-top\":\"5px\",\"margin-right\":\"5px\"},attrs:{\"type\":_vm.statusType,\"title\":_vm.submitTooltip},on:{\"click\":function($event){return _vm.submitReview()}}},[_vm._v(\"\\n Submit\\n \")]):_vm._e(),(!_vm.review && !_vm.readOnly && !_vm.noSubmission)?_c('el-button',{staticStyle:{\"margin-top\":\"5px\",\"margin-right\":\"5px\"},attrs:{\"type\":\"info\",\"disabled\":true}},[_vm._v(\"\\n Submit\\n \")]):_vm._e()],1)]),_c('div',{class:_vm.fullWidth,attrs:{\"id\":\"full_width_container\"}},[_c('rs-panes',{attrs:{\"split-to\":\"columns\",\"allow-resize\":true,\"units\":\"percents\",\"size\":70,\"min-size\":0,\"resizer-thickness\":6}},[_c('div',{staticStyle:{\"height\":\"100%\"},attrs:{\"slot\":\"firstPane\"},slot:\"firstPane\"},[_c('div',{staticClass:\"full_height\",attrs:{\"id\":\"left_side\"}},[_c('div',{attrs:{\"id\":\"left_side_inner\"}},[_c('div',{attrs:{\"id\":\"submissions_container\"}},[_c('nav',{staticClass:\"ViewerControls ViewerControls--with-annotations\"},[_c('div',{staticClass:\"ViewerControls-primary\"},[_c('div',{staticClass:\"ViewerControls--download\"},[_c('div',{staticStyle:{\"min-width\":\"50px\",\"text-align\":\"center\"}},[_c('div',[_c('button',{staticClass:\"download-button--button\",attrs:{\"title\":\"Download annotated PDF\",\"aria-label\":\"Download annotated PDF\"},on:{\"click\":function($event){return _vm.downloadPdf()}}},[_c('i',{staticClass:\"fas fa-file-download\",staticStyle:{\"font-size\":\"22px\"}})])])])]),_c('div',{staticClass:\"ViewerControls--title\"}),_c('div',{staticClass:\"ViewerControls--page-controls\"},[_c('span',{staticClass:\"ViewerControls--page-number\",staticStyle:{\"display\":\"flex\",\"align-items\":\"center\"}},[_vm._v(\"\\n Page\\n \"),_c('div',{staticStyle:{\"padding-left\":\"10px\",\"padding-right\":\"10px\"}},[_c('el-input-number',{attrs:{\"min\":1,\"max\":_vm.totalPageNumber,\"size\":\"small\",\"label\":\"Page\"},on:{\"change\":_vm.changePage},model:{value:(_vm.pageNum),callback:function ($$v) {_vm.pageNum=$$v},expression:\"pageNum\"}})],1),_vm._v(\"\\n of \"+_vm._s(_vm.totalPageNumber)+\"\\n \")]),_c('svg',{staticStyle:{\"margin-left\":\"12px\",\"margin-right\":\"0px\",\"width\":\"2px\",\"height\":\"26px\",\"color\":\"rgb(171, 179, 186)\"},attrs:{\"viewBox\":\"0 0 2 26\"}},[_c('line',{attrs:{\"stroke\":\"currentColor\",\"stroke-dasharray\":\"2, 1\",\"stroke-width\":\"1\",\"x1\":\"1\",\"y1\":\"0\",\"x2\":\"1\",\"y2\":\"26\"}})])]),_c('nav',{staticClass:\"DocumentControls\"},[_c('div',{staticStyle:{\"display\":\"inline-flex\",\"align-items\":\"center\",\"user-select\":\"none\"}},[_c('button',{staticClass:\"AnnotationControlButton\",attrs:{\"aria-label\":\"Zoom Out\",\"title\":\"Zoom Out\",\"aria-disabled\":\"false\"},on:{\"click\":_vm.zoomOut}},[_c('i',{staticClass:\"fas fa-minus\",staticStyle:{\"font-size\":\"20px\"}})]),_c('span',{staticStyle:{\"text-transform\":\"uppercase\",\"font-size\":\"0.75rem\",\"color\":\"rgb(238, 238, 239)\",\"margin-left\":\"4px\",\"margin-right\":\"4px\"},attrs:{\"aria-hidden\":\"true\"}},[_vm._v(\"\\n Zoom\\n \")]),_c('button',{staticClass:\"AnnotationControlButton\",attrs:{\"aria-label\":\"Zoom In\",\"title\":\"Zoom In\",\"aria-disabled\":\"false\"},on:{\"click\":_vm.zoomIn}},[_c('i',{staticClass:\"fas fa-plus\",staticStyle:{\"font-size\":\"20px\"}})])]),_c('svg',{staticStyle:{\"margin-left\":\"2px\",\"margin-right\":\"4px\",\"width\":\"2px\",\"height\":\"26px\",\"color\":\"rgb(171, 179, 186)\"},attrs:{\"viewBox\":\"0 0 2 26\"}},[_c('line',{attrs:{\"stroke\":\"currentColor\",\"stroke-dasharray\":\"2, 1\",\"stroke-width\":\"1\",\"x1\":\"1\",\"y1\":\"0\",\"x2\":\"1\",\"y2\":\"26\"}})]),_c('div',{staticClass:\"ViewerControls--page-controls\"},[_c('button',{staticClass:\"AnnotationControlButton full-screen-button\",attrs:{\"aria-label\":\"Enter Full Screen\",\"title\":\"Zoom Fit Width\"},on:{\"click\":_vm.zoomFitWidth}},[_c('i',{staticClass:\"fas fa-expand\",staticStyle:{\"font-size\":\"20px\"}})]),(!_vm.readOnly)?_c('svg',{staticStyle:{\"margin-left\":\"4px\",\"margin-right\":\"4px\",\"width\":\"2px\",\"height\":\"26px\",\"color\":\"rgb(171, 179, 186)\"},attrs:{\"viewBox\":\"0 0 2 26\"}},[_c('line',{attrs:{\"stroke\":\"currentColor\",\"stroke-dasharray\":\"2, 1\",\"stroke-width\":\"1\",\"x1\":\"1\",\"y1\":\"0\",\"x2\":\"1\",\"y2\":\"26\"}})]):_vm._e()])]),(!_vm.readOnly)?_c('nav',{staticClass:\"AnnotationControls\"},[_c('button',{staticClass:\"AnnotationControlButton\",attrs:{\"aria-label\":\"Enter selection mode\",\"title\":\"Selection\"},on:{\"click\":_vm.selectTextPdf}},[_c('div',{staticClass:\"AnnotationControlButton-outer\"},[_c('div',{staticClass:\"AnnotationControlButton-inner\"},[_c('i',{staticClass:\"fas fa-mouse-pointer\",staticStyle:{\"font-size\":\"20px\"}})])])]),_c('button',{staticClass:\"AnnotationControlButton\",attrs:{\"aria-label\":\"highlight annotation\",\"title\":\"Highlight annotation\"},on:{\"click\":_vm.highlightPdf}},[_c('div',{staticClass:\"AnnotationControlButton-outer\"},[_c('div',{staticClass:\"AnnotationControlButton-inner\"},[_c('i',{staticClass:\"fas fa-highlighter\",staticStyle:{\"font-size\":\"20px\"}})])])]),_c('button',{staticClass:\"AnnotationControlButton\",attrs:{\"aria-label\":\"strikeout annotation\",\"title\":\"Strikeout annotation\"},on:{\"click\":_vm.strikeOutPdf}},[_c('div',{staticClass:\"AnnotationControlButton-outer\"},[_c('div',{staticClass:\"AnnotationControlButton-inner\"},[_c('i',{staticClass:\"fas fa-strikethrough\",staticStyle:{\"font-size\":\"20px\"}})])])]),_c('button',{staticClass:\"AnnotationControlButton\",attrs:{\"aria-label\":\"free draw annotation\",\"title\":\"Free draw annotation\"},on:{\"click\":_vm.freeDrawPdf}},[_c('div',{staticClass:\"AnnotationControlButton-outer\"},[_c('div',{staticClass:\"AnnotationControlButton-inner\"},[_c('i',{staticClass:\"fas fa-paint-brush\",staticStyle:{\"font-size\":\"20px\"}})])])]),_c('button',{staticClass:\"AnnotationControlButton\",attrs:{\"aria-label\":\"Sticky note annotation\",\"title\":\"Sticky note annotation\"},on:{\"click\":_vm.stickyNotePdf}},[_c('div',{staticClass:\"AnnotationControlButton-outer\"},[_c('div',{staticClass:\"AnnotationControlButton-inner\"},[_c('i',{staticClass:\"far fa-sticky-note\",staticStyle:{\"font-size\":\"20px\"}})])])])]):_vm._e()])]),_c('div',{staticStyle:{\"display\":\"block\",\"height\":\"calc(100% - 45px)\"},attrs:{\"id\":\"iframe_holder\"}},[_c('div',{staticStyle:{\"resize\":\"vertical\",\"height\":\"100%\"},attrs:{\"id\":\"pdfDocument\"}})])])]),_c('div',{staticStyle:{\"display\":\"none\",\"position\":\"relative\",\"top\":\"-100%\",\"z-index\":\"1\",\"height\":\"100%\",\"width\":\"100%\",\"border\":\"0 none\"},attrs:{\"id\":\"resize_overlay\"}})])]),_c('div',{attrs:{\"slot\":\"secondPane\"},slot:\"secondPane\"},[_c('div',{staticClass:\"full_height\",attrs:{\"id\":\"right_side\"}},[_c('div',{staticClass:\"right_side_content\"},[_c('div',{staticClass:\"full_height\",attrs:{\"id\":\"rightside_inner\"}},[_c('div',{attrs:{\"id\":\"rubric\"}},[_c('div',{staticStyle:{\"height\":\"100%\",\"overflow\":\"auto\"}},_vm._l((_vm.rubricCriteria),function(criteria,criteriaIndex){return _c('el-card',{key:criteria.Id,staticStyle:{\"margin-bottom\":\"5px\",\"margin-left\":\"3px\"}},[_c('div',{staticClass:\"clearfix\",attrs:{\"slot\":\"header\"},slot:\"header\"},[_c('span',{staticStyle:{\"font-size\":\"16px\",\"font-weight\":\"bold\"}},[_vm._v(\"\\n \"+_vm._s(criteria.CriteriaName)+\"\\n \")]),_c('div',{staticStyle:{\"font-size\":\"14px\",\"margin-top\":\"10px\"}},[(criteria.Description && criteria.Description != '')?_c('el-input',{staticClass:\"criteria-description\",staticStyle:{\"border\":\"none\"},attrs:{\"value\":criteria.Description,\"readonly\":true,\"type\":\"textarea\",\"autosize\":true,\"maxlength\":8000}}):_vm._e()],1)]),_c('div',[(_vm.termCode == '201901')?_c('div',[(criteria.UseAsGrade)?_c('el-radio-group',{staticStyle:{\"margin-bottom\":\"10px\",\"min-width\":\"240px\"},attrs:{\"id\":criteria.Id,\"disabled\":_vm.readOnly},on:{\"input\":function($event){return _vm.saveReview(criteriaIndex)}},model:{value:(_vm.criteriaFeedback[criteriaIndex].Mark),callback:function ($$v) {_vm.$set(_vm.criteriaFeedback[criteriaIndex], \"Mark\", $$v)},expression:\"criteriaFeedback[criteriaIndex].Mark\"}},_vm._l((criteria.RubricCriteriaMilestones.slice()),function(milestone,key){return _c('el-tooltip',{key:milestone.Id,staticClass:\"item\",attrs:{\"effect\":\"light\",\"placement\":\"top\"}},[_c('div',{staticStyle:{\"max-width\":\"500px\"},attrs:{\"slot\":\"content\"},slot:\"content\"},[_vm._v(\"\\n \"+_vm._s(milestone.Description)+\"\\n \")]),_c('el-radio-button',{key:milestone.Id,attrs:{\"label\":criteria.RubricCriteriaMilestones.length - key}})],1)}),1):_vm._e()],1):_c('div',[(criteria.UseAsGrade)?_c('el-radio-group',{staticStyle:{\"margin-bottom\":\"10px\",\"min-width\":\"240px\"},attrs:{\"id\":criteria.Id,\"disabled\":_vm.readOnly},on:{\"input\":function($event){return _vm.saveReview(criteriaIndex)}},model:{value:(_vm.criteriaFeedback[criteriaIndex].Mark),callback:function ($$v) {_vm.$set(_vm.criteriaFeedback[criteriaIndex], \"Mark\", $$v)},expression:\"criteriaFeedback[criteriaIndex].Mark\"}},_vm._l((criteria.RubricCriteriaMilestones.slice()),function(milestone){return _c('el-tooltip',{key:milestone.Id,staticClass:\"item\",attrs:{\"effect\":\"light\",\"placement\":\"top\"}},[_c('div',{staticStyle:{\"max-width\":\"500px\"},attrs:{\"slot\":\"content\"},slot:\"content\"},[_vm._v(\"\\n \"+_vm._s(milestone.Description)+\"\\n \")]),_c('el-radio-button',{key:milestone.Id,attrs:{\"label\":milestone.Value}})],1)}),1):_vm._e()],1),_c('div',[(criteria.UseAsGrade || criteria.UseAsTextComment)?_c('el-input',{staticClass:\"criteria-comment\",attrs:{\"criteria-index\":criteriaIndex,\"type\":\"textarea\",\"placeholder\":\"Enter text here\",\"rows\":3,\"maxlength\":8000,\"readonly\":_vm.readOnly},model:{value:(_vm.criteriaFeedback[criteriaIndex].Comment),callback:function ($$v) {_vm.$set(_vm.criteriaFeedback[criteriaIndex], \"Comment\", $$v)},expression:\"criteriaFeedback[criteriaIndex].Comment\"}}):_vm._e()],1)])])}),1)])])])])])])],1)])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n <div>\r\n <div id=\"filter\" style=\"height: 50px; border-bottom: #cccccc solid 1px;\">\r\n <div class=\"filter-divider\" style=\"width: 220px;\">\r\n <el-button\r\n v-if=\"readOnly\"\r\n style=\"text-align: center; -webkit-box-shadow: none; box-shadow: none;\r\n display: inline-block; padding: 0px; padding-right: 10px; vertical-align: middle;\r\n -ms-touch-action: manipulation; touch-action: manipulation;\r\n cursor: pointer; border: 0 none; background: none;\"\r\n title=\"Back to Student Submissions\"\r\n @click=\"backToStudentSubmissions()\"\r\n >\r\n <i class=\"fas fa-chevron-left\" style=\"font-size: 25px;\" />\r\n </el-button>\r\n <el-button\r\n v-else\r\n style=\"text-align: center; -webkit-box-shadow: none; box-shadow: none;\r\n display: inline-block; padding: 0px; padding-right: 10px; vertical-align: middle;\r\n -ms-touch-action: manipulation; touch-action: manipulation;\r\n cursor: pointer; border: 0 none; background: none;\"\r\n title=\"Back to Projects\"\r\n @click=\"backToAssignments()\"\r\n >\r\n <i class=\"fas fa-chevron-left\" style=\"font-size: 25px;\" />\r\n </el-button>\r\n\r\n <!-- Project Selection -->\r\n <el-tooltip class=\"item\" effect=\"light\" content=\"Select a project\" placement=\"bottom\">\r\n <el-select\r\n id=\"assignments-selection\"\r\n v-model=\"currentAssignment\"\r\n value-key=\"Id\"\r\n filterable\r\n placeholder=\"Select Project\"\r\n no-match-text=\"No Matching Data\"\r\n no-data-text=\"No data\"\r\n loading-text=\"Loading\"\r\n style=\"margin-top: 5px; width: 80%;\"\r\n :disabled=\"readOnly\"\r\n @change=\"onAssignmentChange()\"\r\n >\r\n <el-option\r\n v-for=\"item in assignments\"\r\n :key=\"item.Id\"\r\n :label=\"item.AssignmentName\"\r\n :value=\"item\"\r\n />\r\n </el-select>\r\n </el-tooltip>\r\n </div>\r\n\r\n <!-- Student or Group Selection -->\r\n <div v-if=\"!noSubmission\">\r\n <div v-if=\"!isGroupProject\" class=\"filter-divider\" style=\"width: 285px;\">\r\n <el-button\r\n style=\"text-align: center; -webkit-box-shadow: none; box-shadow: none;\r\n display: inline-block; padding: 0px 10px; vertical-align: middle;\r\n -ms-touch-action: manipulation; touch-action: manipulation;\r\n cursor: pointer; border: 0 none; background: none;\"\r\n :disabled=\"prevBtnDisable\"\r\n title=\"Previous student\"\r\n @click=\"previousStudent\"\r\n >\r\n <i class=\"fas fa-arrow-left\" style=\"font-size: 25px;\" />\r\n </el-button>\r\n\r\n <el-tooltip class=\"item\" effect=\"light\" content=\"Select a student\" placement=\"bottom\">\r\n <el-select\r\n id=\"students-selection\"\r\n v-model=\"currentStudent\"\r\n value-key=\"UserName\"\r\n filterable\r\n placeholder=\"Select Student\"\r\n style=\"margin-top: 5px; width: 200px;\"\r\n @change=\"onStudentChange()\"\r\n >\r\n <el-option\r\n v-for=\"item in students\"\r\n :key=\"item.UserName\"\r\n :label=\"item.LastName + ', ' + item.FirstName\"\r\n :value=\"item\"\r\n />\r\n </el-select>\r\n </el-tooltip>\r\n\r\n <el-button\r\n style=\"text-align: center; -webkit-box-shadow: none; box-shadow: none;\r\n display: inline-block; padding: 0px 10px; vertical-align: middle;\r\n -ms-touch-action: manipulation; touch-action: manipulation;\r\n cursor: pointer; border: 0 none; background: none;\"\r\n :disabled=\"nextBtnDisable\"\r\n title=\"Next student\"\r\n @click=\"nextStudent\"\r\n >\r\n <i style=\"font-size: 25px;\" class=\"fas fa-arrow-right\" />\r\n </el-button>\r\n </div>\r\n\r\n <div v-else class=\"filter-divider\" style=\"width: 285px;\">\r\n <el-button\r\n style=\"text-align: center; -webkit-box-shadow: none; box-shadow: none;\r\n display: inline-block; padding: 0px 10px; vertical-align: middle;\r\n -ms-touch-action: manipulation; touch-action: manipulation;\r\n cursor: pointer; border: 0 none; background: none;\"\r\n :disabled=\"prevGroupBtnDisable\"\r\n title=\"Previous Group\"\r\n @click=\"previousGroup\"\r\n >\r\n <i class=\"fas fa-arrow-left\" style=\"font-size: 25px;\" />\r\n </el-button>\r\n\r\n <el-tooltip class=\"item\" effect=\"light\" content=\"Select a group\" placement=\"bottom\">\r\n <el-select\r\n id=\"groups-selection\"\r\n v-model=\"currentGroup\"\r\n value-key=\"GroupId\"\r\n filterable\r\n placeholder=\"Select Group\"\r\n style=\"margin-top: 5px; width: 200px;\"\r\n @change=\"onGroupChange()\"\r\n >\r\n <el-option\r\n v-for=\"item in groups\"\r\n :key=\"item.GroupId\"\r\n :label=\"item.GroupName\"\r\n :value=\"item\"\r\n />\r\n </el-select>\r\n </el-tooltip>\r\n\r\n <el-button\r\n style=\"text-align: center; -webkit-box-shadow: none; box-shadow: none;\r\n display: inline-block; padding: 0px 10px; vertical-align: middle;\r\n -ms-touch-action: manipulation; touch-action: manipulation;\r\n cursor: pointer; border: 0 none; background: none;\"\r\n :disabled=\"nextGroupBtnDisable\"\r\n title=\"Next Group\"\r\n @click=\"nextGroup\"\r\n >\r\n <i style=\"font-size: 25px;\" class=\"fas fa-arrow-right\" />\r\n </el-button>\r\n </div>\r\n </div>\r\n\r\n <div v-if=\"!readOnly && !noSubmission\" style=\"width: 350px; float:left;\">\r\n <el-tooltip class=\"item\" effect=\"light\" content=\"Submission to view\" placement=\"bottom\">\r\n <el-select\r\n id=\"submissions-selection\"\r\n v-model=\"currentSubmission\"\r\n value-key=\"docId\"\r\n filterable\r\n placeholder=\"Select Submission\"\r\n no-match-text=\"No Matching Data\"\r\n no-data-text=\"No data\"\r\n loading-text=\"Loading\"\r\n style=\"margin-top: 5px; margin-left: 10px; margin-right: 10px;\"\r\n @change=\"onSubmissionChange()\"\r\n >\r\n <el-option\r\n v-for=\"item in submissions\"\r\n :key=\"item.docId\"\r\n :label=\"item.uploadedDate | formatDate\"\r\n :value=\"item\"\r\n />\r\n </el-select>\r\n </el-tooltip>\r\n\r\n <!-- <el-tooltip v-if=\"docId && onTime\" class=\"item\" effect=\"light\" :content=\"'Submitted on time at ' + formatDate(uploadedDate) + '. Due date is ' + formatDate(dueDate) + '.'\" placement=\"bottom\">\r\n\t\t\t\t\t<el-tag type=\"success\" style=\"line-height: 38px; height: 38px;\">\r\n\t\t\t\t\t\tOn Time\r\n\t\t\t\t\t</el-tag>\r\n\t\t\t\t</el-tooltip>\r\n\t\t\t\t<el-tooltip v-else-if=\"docId && !onTime\" class=\"item\" effect=\"light\" :content=\"'Submitted late at ' + formatDate(uploadedDate) + '. Due date is ' + formatDate(dueDate) + '.'\" placement=\"bottom\">\r\n\t\t\t\t\t<el-tag type=\"danger\" style=\"line-height: 38px; height: 38px;\">\r\n\t\t\t\t\t\tLate\r\n\t\t\t\t\t</el-tag>\r\n\t\t\t\t</el-tooltip> -->\r\n <el-tooltip\r\n v-if=\"docId && onTime\"\r\n class=\"item\"\r\n effect=\"light\"\r\n :content=\"'Submitted on time at ' + formatDate(uploadedDate) + '. Due date is ' + formatDate(dueDate) + '.'\"\r\n placement=\"bottom\"\r\n >\r\n <i class=\"far fa-calendar-check\" style=\"font-size: 30px; color: rgb(59, 146, 120); position: absolute; margin-top: 10px;\" />\r\n </el-tooltip>\r\n <el-tooltip\r\n v-else-if=\"docId && !onTime\"\r\n class=\"item\"\r\n effect=\"light\"\r\n :content=\"'Submitted late at ' + formatDate(uploadedDate) + '. Due date is ' + formatDate(dueDate) + '.'\"\r\n placement=\"bottom\"\r\n >\r\n <i class=\"far fa-calendar-times\" style=\"font-size: 30px; color: #f57575; position: absolute; margin-top: 10px;\" />\r\n </el-tooltip>\r\n </div>\r\n <div style=\"float:right; position: absolute; right: 0;\">\r\n <el-tooltip\r\n id=\"savedMessage\"\r\n class=\"item\"\r\n effect=\"light\"\r\n placement=\"bottom\"\r\n :content=\"'Your feedback was successfully saved.'\"\r\n style=\"display: none;\"\r\n >\r\n <el-tag type=\"success\" style=\"line-height: 40px; height: 40px; margin-right: 5px;\">\r\n Saved!\r\n </el-tag>\r\n </el-tooltip>\r\n <el-button\r\n v-if=\"review && !readOnly\"\r\n :type=\"statusType\"\r\n style=\"margin-top: 5px; margin-right: 5px;\"\r\n :title=\"submitTooltip\"\r\n @click=\"submitReview()\"\r\n >\r\n Submit\r\n </el-button>\r\n <el-button\r\n v-if=\"!review && !readOnly && !noSubmission\"\r\n type=\"info\"\r\n :disabled=\"true\"\r\n style=\"margin-top: 5px; margin-right: 5px;\"\r\n >\r\n Submit\r\n </el-button>\r\n </div>\r\n </div>\r\n <div id=\"full_width_container\" :class=\"fullWidth\">\r\n <rs-panes split-to=\"columns\" :allow-resize=\"true\" units=\"percents\" :size=\"70\" :min-size=\"0\" :resizer-thickness=\"6\">\r\n <div slot=\"firstPane\" style=\"height: 100%;\">\r\n <div id=\"left_side\" class=\"full_height\">\r\n <div id=\"left_side_inner\">\r\n <div id=\"submissions_container\">\r\n <nav class=\"ViewerControls ViewerControls--with-annotations\">\r\n <div class=\"ViewerControls-primary\">\r\n <div class=\"ViewerControls--download\">\r\n <div style=\"min-width: 50px; text-align: center;\">\r\n <div>\r\n <button class=\"download-button--button\" title=\"Download annotated PDF\" aria-label=\"Download annotated PDF\" @click=\"downloadPdf()\">\r\n <i style=\"font-size: 22px;\" class=\"fas fa-file-download\" />\r\n </button>\r\n </div>\r\n </div>\r\n </div><div class=\"ViewerControls--title\" /><div class=\"ViewerControls--page-controls\">\r\n <span class=\"ViewerControls--page-number\" style=\"display: flex; align-items: center;\">\r\n Page\r\n <div style=\"padding-left: 10px; padding-right: 10px;\">\r\n <el-input-number v-model=\"pageNum\" :min=\"1\" :max=\"totalPageNumber\" size=\"small\" label=\"Page\" @change=\"changePage\" />\r\n </div>\r\n of {{ totalPageNumber }}\r\n </span>\r\n <svg viewBox=\"0 0 2 26\" style=\"margin-left: 12px; margin-right: 0px; width: 2px; height: 26px; color: rgb(171, 179, 186);\">\r\n <line stroke=\"currentColor\" stroke-dasharray=\"2, 1\" stroke-width=\"1\" x1=\"1\" y1=\"0\" x2=\"1\" y2=\"26\" />\r\n </svg>\r\n </div>\r\n <nav class=\"DocumentControls\">\r\n <div style=\"display: inline-flex; align-items: center; user-select: none;\">\r\n <button class=\"AnnotationControlButton\" aria-label=\"Zoom Out\" title=\"Zoom Out\" aria-disabled=\"false\" @click=\"zoomOut\">\r\n <i style=\"font-size: 20px;\" class=\"fas fa-minus\" />\r\n </button>\r\n <span aria-hidden=\"true\" style=\"text-transform: uppercase; font-size: 0.75rem; color: rgb(238, 238, 239); margin-left: 4px; margin-right: 4px;\">\r\n Zoom\r\n </span>\r\n <button class=\"AnnotationControlButton\" aria-label=\"Zoom In\" title=\"Zoom In\" aria-disabled=\"false\" @click=\"zoomIn\">\r\n <i style=\"font-size: 20px;\" class=\"fas fa-plus\" />\r\n </button>\r\n </div>\r\n <svg viewBox=\"0 0 2 26\" style=\"margin-left: 2px; margin-right: 4px; width: 2px; height: 26px; color: rgb(171, 179, 186);\">\r\n <line stroke=\"currentColor\" stroke-dasharray=\"2, 1\" stroke-width=\"1\" x1=\"1\" y1=\"0\" x2=\"1\" y2=\"26\" />\r\n </svg>\r\n <div class=\"ViewerControls--page-controls\">\r\n <button aria-label=\"Enter Full Screen\" class=\"AnnotationControlButton full-screen-button\" title=\"Zoom Fit Width\" @click=\"zoomFitWidth\">\r\n <i style=\"font-size: 20px;\" class=\"fas fa-expand\" />\r\n </button>\r\n <svg v-if=\"!readOnly\" viewBox=\"0 0 2 26\" style=\"margin-left: 4px; margin-right: 4px; width: 2px; height: 26px; color: rgb(171, 179, 186);\">\r\n <line stroke=\"currentColor\" stroke-dasharray=\"2, 1\" stroke-width=\"1\" x1=\"1\" y1=\"0\" x2=\"1\" y2=\"26\" />\r\n </svg>\r\n </div>\r\n </nav>\r\n <nav v-if=\"!readOnly\" class=\"AnnotationControls\">\r\n <button aria-label=\"Enter selection mode\" class=\"AnnotationControlButton\" title=\"Selection\" @click=\"selectTextPdf\">\r\n <div class=\"AnnotationControlButton-outer\">\r\n <div class=\"AnnotationControlButton-inner\">\r\n <i style=\"font-size: 20px;\" class=\"fas fa-mouse-pointer\" />\r\n </div>\r\n </div>\r\n </button>\r\n <button aria-label=\"highlight annotation\" class=\"AnnotationControlButton\" title=\"Highlight annotation\" @click=\"highlightPdf\">\r\n <div class=\"AnnotationControlButton-outer\">\r\n <div class=\"AnnotationControlButton-inner\">\r\n <i style=\"font-size: 20px;\" class=\"fas fa-highlighter\" />\r\n </div>\r\n </div>\r\n </button>\r\n <!-- <button aria-label=\"freetext annotation\" class=\"AnnotationControlButton\" title=\"Freetext annotation\" @click=\"freeTextPdf\">\r\n\t\t\t\t\t\t\t\t\t\t<div class=\"AnnotationControlButton-outer\">\r\n\t\t\t\t\t\t\t\t\t\t\t<div class=\"AnnotationControlButton-inner\">\r\n\t\t\t\t\t\t\t\t\t\t\t\t<i style=\"font-size: 20px;\" class=\"fas fa-font\" />\r\n\t\t\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t\t</button> -->\r\n <button aria-label=\"strikeout annotation\" class=\"AnnotationControlButton\" title=\"Strikeout annotation\" @click=\"strikeOutPdf\">\r\n <div class=\"AnnotationControlButton-outer\">\r\n <div class=\"AnnotationControlButton-inner\">\r\n <i style=\"font-size: 20px;\" class=\"fas fa-strikethrough\" />\r\n </div>\r\n </div>\r\n </button>\r\n <button aria-label=\"free draw annotation\" class=\"AnnotationControlButton\" title=\"Free draw annotation\" @click=\"freeDrawPdf\">\r\n <div class=\"AnnotationControlButton-outer\">\r\n <div class=\"AnnotationControlButton-inner\">\r\n <i style=\"font-size: 20px;\" class=\"fas fa-paint-brush\" />\r\n </div>\r\n </div>\r\n </button>\r\n <button aria-label=\"Sticky note annotation\" class=\"AnnotationControlButton\" title=\"Sticky note annotation\" @click=\"stickyNotePdf\">\r\n <div class=\"AnnotationControlButton-outer\">\r\n <div class=\"AnnotationControlButton-inner\">\r\n <i style=\"font-size: 20px;\" class=\"far fa-sticky-note\" />\r\n </div>\r\n </div>\r\n </button>\r\n </nav>\r\n </div>\r\n </nav>\r\n\r\n <div id=\"iframe_holder\" style=\"display: block; height: calc(100% - 45px);\">\r\n <div id=\"pdfDocument\" style=\"resize: vertical; height: 100%;\" />\r\n </div>\r\n </div>\r\n </div>\r\n <div id=\"resize_overlay\" style=\"display: none; position: relative;top: -100%; z-index: 1; height: 100%; width: 100%; border: 0 none;\" />\r\n </div>\r\n </div>\r\n\r\n <div slot=\"secondPane\">\r\n <div id=\"right_side\" class=\"full_height\">\r\n <!-- <div id=\"width_resizer\" class=\"full_height ui-draggable\" /> -->\r\n <div class=\"right_side_content\">\r\n <div id=\"rightside_inner\" class=\"full_height\">\r\n <div id=\"rubric\">\r\n <div style=\"height: 100%; overflow: auto;\">\r\n <el-card v-for=\"(criteria, criteriaIndex) in rubricCriteria\" :key=\"criteria.Id\" style=\"margin-bottom: 5px; margin-left: 3px;\">\r\n <div slot=\"header\" class=\"clearfix\">\r\n <span style=\"font-size: 16px; font-weight: bold;\">\r\n {{ criteria.CriteriaName }}\r\n </span>\r\n <div style=\"font-size: 14px; margin-top: 10px;\">\r\n <el-input\r\n v-if=\"criteria.Description && criteria.Description != ''\"\r\n :value=\"criteria.Description\"\r\n :readonly=\"true\"\r\n type=\"textarea\"\r\n :autosize=\"true\"\r\n :maxlength=\"8000\"\r\n class=\"criteria-description\"\r\n style=\"border: none;\"\r\n />\r\n </div>\r\n </div>\r\n <div>\r\n <div v-if=\"termCode == '201901'\">\r\n <el-radio-group\r\n v-if=\"criteria.UseAsGrade\"\r\n :id=\"criteria.Id\"\r\n v-model=\"criteriaFeedback[criteriaIndex].Mark\"\r\n style=\"margin-bottom: 10px; min-width: 240px;\"\r\n :disabled=\"readOnly\"\r\n @input=\"saveReview(criteriaIndex)\"\r\n >\r\n <el-tooltip\r\n v-for=\"(milestone, key) in criteria.RubricCriteriaMilestones.slice()\"\r\n :key=\"milestone.Id\"\r\n class=\"item\"\r\n effect=\"light\"\r\n placement=\"top\"\r\n >\r\n <div slot=\"content\" style=\"max-width: 500px;\">\r\n {{ milestone.Description }}\r\n </div>\r\n <el-radio-button\r\n :key=\"milestone.Id\"\r\n :label=\"criteria.RubricCriteriaMilestones.length - key\"\r\n />\r\n </el-tooltip>\r\n </el-radio-group>\r\n </div>\r\n <div v-else>\r\n <el-radio-group\r\n v-if=\"criteria.UseAsGrade\"\r\n :id=\"criteria.Id\"\r\n v-model=\"criteriaFeedback[criteriaIndex].Mark\"\r\n style=\"margin-bottom: 10px; min-width: 240px;\"\r\n :disabled=\"readOnly\"\r\n @input=\"saveReview(criteriaIndex)\"\r\n >\r\n <el-tooltip\r\n v-for=\"milestone in criteria.RubricCriteriaMilestones.slice()\"\r\n :key=\"milestone.Id\"\r\n class=\"item\"\r\n effect=\"light\"\r\n placement=\"top\"\r\n >\r\n <div slot=\"content\" style=\"max-width: 500px;\">\r\n {{ milestone.Description }}\r\n </div>\r\n <el-radio-button\r\n :key=\"milestone.Id\"\r\n :label=\"milestone.Value\"\r\n />\r\n </el-tooltip>\r\n </el-radio-group>\r\n </div>\r\n <div>\r\n <el-input\r\n v-if=\"criteria.UseAsGrade || criteria.UseAsTextComment\"\r\n v-model=\"criteriaFeedback[criteriaIndex].Comment\"\r\n :criteria-index=\"criteriaIndex\"\r\n type=\"textarea\"\r\n placeholder=\"Enter text here\"\r\n :rows=\"3\"\r\n :maxlength=\"8000\"\r\n class=\"criteria-comment\"\r\n :readonly=\"readOnly\"\r\n />\r\n </div>\r\n </div>\r\n </el-card>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </rs-panes>\r\n </div>\r\n </div>\r\n</template>\r\n\r\n<script>\r\nimport * as pdfService from '@/services/pdf.service'\r\nimport * as assignmentService from '@/services/assignment.service'\r\nimport * as submissionService from '@/services/submission.service'\r\nimport * as reviewService from '@/services/review.service'\r\nimport * as rubricService from '@/services/rubric.service'\r\nimport * as teamFormationService from '@/services/team_formation.service'\r\nimport { Notification } from 'element-ui'\r\nimport * as dateUtils from '@/utils/date-utils'\r\nimport ResSplitPane from 'vue-resize-split-pane'\r\nimport * as urlUtils from '@/utils/url-utils'\r\n// Handle UI and logics for the Peer Review page.\r\nexport default {\r\n\tcomponents: {\r\n\t\t'rs-panes': ResSplitPane\r\n\t},\r\n\tfilters: {\r\n\t\tformatDate(dateStr) {\r\n\t\t\treturn dateUtils.formatDate(dateStr)\r\n\t\t}\r\n\t},\r\n\tdata() {\r\n\t\treturn {\r\n\t\t\ttermCode: this.$store.state.enrollment.termCode,\r\n\t\t\torgCode: this.$store.state.enrollment.orgCode,\r\n\t\t\tclassCode: this.$store.state.enrollment.currentCourse.ClassCode,\r\n\t\t\tassignmentId: null,\r\n\t\t\ttaskId: null,\r\n\t\t\trevieweeId: null,\r\n\t\t\treviewerId: null,\r\n\t\t\treviewerRole: 'Student',\r\n\t\t\tassignments: [],\r\n\t\t\tdocId: null,\r\n\t\t\tcurrentAssignment: null,\r\n\t\t\tcurrentTask: null,\r\n\t\t\tstudents: null,\r\n\t\t\tcurrentStudent: null,\r\n\t\t\tonTime: false,\r\n\t\t\tuploadedDate: null,\r\n\t\t\tdueDate: null,\r\n\t\t\tsubmissions: [],\r\n\t\t\tcurrentSubmission: null,\r\n\t\t\trubricCriteria: null,\r\n\t\t\tcriteriaFeedback: null,\r\n\t\t\treview: null,\r\n\t\t\tmyapi: null,\r\n\t\t\tpageNum: 1,\r\n\t\t\ttotalPageNumber: null,\r\n\t\t\tzoomValue: 140,\r\n\t\t\tprevBtnDisable: false,\r\n\t\t\tnextBtnDisable: false,\r\n\t\t\tprevGroupBtnDisable: false,\r\n\t\t\tnextGroupBtnDisable: false,\r\n\t\t\tteams: null,\r\n\t\t\tisGroupProject: false,\r\n\t\t\tgroups: [],\r\n\t\t\tcurrentGroup: null,\r\n\t\t\tgroupId: null,\r\n\t\t\treadOnly: false,\r\n\t\t\treviewType: null,\r\n\t\t\tstatusType: 'danger',\r\n\t\t\tsubmitTooltip: 'Your feedback is saved, but has not yet been submitted.',\r\n\t\t\tnoSubmission: true,\r\n\t\t\tcIndex: null,\r\n\t\t\tuserRole: null\r\n \t}\r\n\t},\r\n\tcomputed: {\r\n\t\tfullWidth() {\r\n\t\t\tconst mainNav = document.querySelector('#main-nav')\r\n\t\t\tif (mainNav && !mainNav.classList.contains('full-width')) {\r\n\t\t\t\treturn ''\r\n\t\t\t} else { return 'full-width' }\r\n\t\t}\r\n\t},\r\n\tmounted() {\r\n\t\tconst resizer = document.querySelector('.columnsres')\r\n\t\tresizer.addEventListener('mousedown', function(e) {\r\n\t\t\tdocument.querySelector('#resize_overlay').style.display = 'block'\r\n\t\t})\r\n\t\tdocument.addEventListener('mouseup', function(e) {\r\n\t\t\tdocument.querySelector('#resize_overlay').style.display = 'none'\r\n\t\t})\r\n\t\tconst that = this\r\n\t\twindow.onbeforeunload = function(e) {\r\n\t\t\tthat.saveReviewBeforeRefresh()\r\n\t\t\treturn\r\n\t\t}\r\n\t},\r\n\tcreated() {\r\n\t\t// Get necessary information from query string\r\n\t\tthis.userRole = this.$store.state.enrollment.userRole\r\n\t\tif (this.userRole == 'Instructor') {\r\n\t\t\tthis.reviewerId = this.getUrlParameter('reviewerId')\r\n\t\t\tthis.readOnly = true\r\n\t\t} else if (this.userRole == 'Student') {\r\n\t\t\tthis.reviewerId = this.$store.state.auth.user.UserName\r\n\t\t}\r\n\t\tthis.assignmentId = this.getUrlParameter('assignmentId')\r\n\t\tthis.taskId = this.getUrlParameter('taskId')\r\n\t\tthis.revieweeId = this.getUrlParameter('revieweeId')\r\n\t\t// Set up assignments selection\r\n\t\tthis.setUpAssignmentSelection()\r\n\t},\r\n\tmethods: {\r\n\t\t// @vuese\r\n\t\t// Format a date value.\r\n\t\t// @arg The date value to be formatted.\r\n\t\tformatDate(date) {\r\n\t\t\tconst dateStr = this.getDateStr(date)\r\n\t\t\treturn dateUtils.formatDate(dateStr)\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Setup project selection drop down.\r\n\t\tasync setUpAssignmentSelection() {\r\n\t\t\t// Get all assignments that have uploaded papers and use peer review.\r\n\t\t\tlet assignments = this.$store.state.assignment.assignments\r\n\t\t\tif (!assignments) { assignments = await assignmentService.getAssignmentsByClass(this.termCode, this.orgCode, this.classCode) }\r\n\t\t\tif (assignments.length > 0) {\r\n\t\t\t\tthis.assignments = assignments.filter(function(el) {\r\n\t\t\t\t\treturn el.Tasks.filter(t => t.Type == 'peer_review') != null && el.Tasks.filter(t => t.Type == 'peer_review').length > 0\r\n\t\t\t\t})\r\n\t\t\t\tconsole.log(this.assignments)\r\n\r\n\t\t\t\tconst that = this\r\n\t\t\t\tif (this.assignmentId) {\r\n\t\t\t\t\tthis.currentAssignment = this.assignments.find(function(el) {\r\n\t\t\t\t\t\treturn el.Id == that.assignmentId\r\n\t\t\t\t\t})\r\n\r\n\t\t\t\t\tvar tasks = this.currentAssignment.Tasks.filter(t => t.Type == 'peer_review')\r\n\r\n\t\t\t\t\tif (tasks != null && tasks.length > 0) {\r\n\t\t\t\t\t\tthis.currentTask = tasks[0]\r\n\t\t\t\t\t\tthis.taskId = this.currentTask.Id\r\n\t\t\t\t\t}\r\n\t\t\t\t} else {\r\n\t\t\t\t\tthis.currentAssignment = this.assignments[0]\r\n\t\t\t\t\tthis.assignmentId = this.currentAssignment.Id\r\n\r\n\t\t\t\t\tif (this.currentAssignment.Tasks != null && this.currentAssignment.Tasks.length > 0) {\r\n\t\t\t\t\t\tvar selfReviewTasks = this.currentAssignment.Tasks.filter(t => t.Type == 'peer_review')\r\n\t\t\t\t\t\tif (selfReviewTasks != null && selfReviewTasks.length > 0) {\r\n\t\t\t\t\t\t\tthis.currentTask = selfReviewTasks[0]\r\n\t\t\t\t\t\t\tthis.taskId = this.currentTask.Id\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (this.currentAssignment) {\r\n\t\t\t\t\tif (this.currentAssignment.IsGroupAssignment) {\r\n\t\t\t\t\t\tthis.isGroupProject = true\r\n\t\t\t\t\t\t// set up group selection\r\n\t\t\t\t\t\tconst groupSetupComplete = await this.setUpGroupSelection()\r\n\t\t\t\t\t\tif (groupSetupComplete) { this.displayDocumentAndReview() } // Set up submissions selection, document, and rubric\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t // Set up students selection\r\n\t\t\t\t\t\tconst studentSetupComplete = await this.setUpStudentSelection()\r\n\t\t\t\t\t\tif (studentSetupComplete) { this.displayDocumentAndReview() } // Set up submissions selection, document, and rubric\r\n\t\t\t\t\t}\r\n\t\t\t\t} else {\r\n\t\t\t\t\tNotification.info({\r\n\t\t\t\t\t\tduration: 6000,\r\n\t\t\t\t\t\ttitle: 'Info',\r\n\t\t\t\t\t\tmessage: 'Your peers have not submitted papers for this project.'\r\n\t\t\t\t\t})\r\n\t\t\t\t\tdocument.getElementById('full_width_container').style.display = 'none'\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tNotification.info({\r\n\t\t\t\t\tduration: 6000,\r\n\t\t\t\t\ttitle: 'Info',\r\n\t\t\t\t\tmessage: 'Your peers have not submitted papers for this project.'\r\n\t\t\t\t})\r\n\t\t\t\tdocument.getElementById('full_width_container').style.display = 'none'\r\n\t\t\t}\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Setup student selection drop down.\r\n\t\tasync setUpStudentSelection() {\r\n\t\t\t// Get all peers who have uploaded paper for this assignment\r\n\t\t\tconst that = this\r\n\t\t\tlet noSubmission = true\r\n\t\t\tconst teams = await teamFormationService.getPeerReviewTeamAssignment(this.termCode, this.orgCode,\r\n\t\t\t\tthis.classCode, this.reviewerId)\r\n\t\t\tif (teams.length > 0) {\r\n\t\t\t\tthis.teams = teams\r\n\t\t\t\tconst thisTeam = this.teams.find(function(el) {\r\n\t\t\t\t\treturn el.AssignmentId == that.assignmentId\r\n\t\t\t\t})\r\n\t\t\t\tif (thisTeam) {\r\n\t\t\t\t\tconst uploadedStudents = await submissionService.getUploadedPeers(this.termCode, this.orgCode, this.classCode,\r\n\t\t\t\t\t\tthis.assignmentId, this.reviewerId, thisTeam.TeamId)\r\n\t\t\t\t\tif (uploadedStudents.length > 0) {\r\n\t\t\t\t\t\tnoSubmission = false\r\n\r\n\t\t\t\t\t\t// Setup student selection drop down\r\n\t\t\t\t\t\tthis.students = uploadedStudents\r\n\t\t\t\t\t\tif (this.revieweeId) {\r\n\t\t\t\t\t\t\tconst thisReviewee = uploadedStudents.find(function(el) {\r\n\t\t\t\t\t\t\t\treturn el.UserName == that.revieweeId\r\n\t\t\t\t\t\t\t})\r\n\t\t\t\t\t\t\tif (thisReviewee != undefined) { this.currentStudent = thisReviewee } else {\r\n\t\t\t\t\t\t\t\tthis.currentStudent = uploadedStudents[0]\r\n\t\t\t\t\t\t\t\tthis.revieweeId = uploadedStudents[0].UserName\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\tthis.currentStudent = uploadedStudents[0]\r\n\t\t\t\t\t\t\tthis.revieweeId = uploadedStudents[0].UserName\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\t// Set up previous and next buttons\r\n\t\t\t\t\t\tconst thisIndex = this.students.findIndex(x => x.UserName == this.currentStudent.UserName)\r\n\t\t\t\t\t\tif (thisIndex == 0) {\r\n\t\t\t\t\t\t\tthis.prevBtnDisable = true\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tif (thisIndex == this.students.length - 1) {\r\n\t\t\t\t\t\t\tthis.nextBtnDisable = true\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tthis.noSubmission = noSubmission\r\n\t\t\tif (this.noSubmission) {\r\n\t\t\t\tthis.students = []\r\n\t\t\t\tdocument.getElementById('full_width_container').style.display = 'none'\r\n\t\t\t\tNotification.info({\r\n\t\t\t\t\tduration: 6000,\r\n\t\t\t\t\ttitle: 'Info',\r\n\t\t\t\t\tmessage: 'Your peers have not submitted papers for this project.'\r\n\t\t\t\t})\r\n\t\t\t\treturn false\r\n\t\t\t} else { return true }\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Setup group selection drop down.\r\n\t\tasync setUpGroupSelection() {\r\n\t\t\t// Need to change for group peer review.\r\n\t\t // Adding getGroupPeerReviewTeamAssignment\r\n\t\t\tconst that = this\r\n\t\t\tlet noSubmission = true\r\n\t\t\tconst groups = await submissionService.getGroupSubmissionsStatus(this.termCode, this.orgCode, this.classCode, this.assignmentId)\r\n\t\t\tif (groups && groups.length > 0) {\r\n\t\t\t\tif (!this.readOnly) {\r\n\t\t\t\t\tthis.reviewerId = this.$store.state.auth.user.UserName\r\n\t\t\t\t\tconst thisGroup = groups.filter(function(el) {\r\n\t\t\t\t\t\treturn el.StudentNames.includes(that.reviewerId)\r\n\t\t\t\t\t})\r\n\t\t\t\t\tif (thisGroup) {\r\n\t\t\t\t\t\tthis.reviewerId = thisGroup[0].GroupId\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\tconst submittedGroups = groups.filter(function(el) {\r\n\t\t\t\t\treturn el.SubmissionStatus == 'Submitted' && el.GroupId != that.reviewerId\r\n\t\t\t\t})\r\n\t\t\t\tif (submittedGroups && submittedGroups.length > 0) {\r\n\t\t\t\t\tnoSubmission = false\r\n\t\t\t\t\tthis.groups = submittedGroups\r\n\t\t\t\t\tif (this.revieweeId) {\r\n\t\t\t\t\t\tthis.currentGroup = submittedGroups.find(function(el) {\r\n\t\t\t\t\t\t\treturn el.GroupId == that.revieweeId\r\n\t\t\t\t\t\t})\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tthis.currentGroup = submittedGroups[0]\r\n\t\t\t\t\t\tthis.revieweeId = this.currentGroup.GroupId\r\n\t\t\t\t\t}\r\n\t\t\t\t\tthis.prevGroupBtnDisable = false\r\n\t\t\t\t\tthis.nextGroupBtnDisable = false\r\n\t\t\t\t\t// Set up previous and next buttons\r\n\t\t\t\t\tconst thisIndex = this.groups.findIndex(x => x.GroupId == this.currentGroup.GroupId)\r\n\t\t\t\t\tif (thisIndex == 0) {\r\n\t\t\t\t\t\tthis.prevGroupBtnDisable = true\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif (thisIndex == this.groups.length - 1) {\r\n\t\t\t\t\t\tthis.nextGroupBtnDisable = true\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tthis.noSubmission = noSubmission\r\n\t\t\tif (this.noSubmission) {\r\n\t\t\t\tdocument.getElementById('full_width_container').style.display = 'none'\r\n\t\t\t\tNotification.info({\r\n\t\t\t\t\tduration: 6000,\r\n\t\t\t\t\ttitle: 'Info',\r\n\t\t\t\t\tmessage: 'Your peers have not submitted papers for this project.'\r\n\t\t\t\t})\r\n\t\t\t\treturn false\r\n\t\t\t} else { return true }\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Display document and review.\r\n\t\tasync displayDocumentAndReview() {\r\n\t\t\tlet latestReview\r\n\t\t\tlet docId\r\n\t\t\tconst submissions = await submissionService.getStudentUpload(this.termCode, this.orgCode,\r\n\t\t\t\tthis.classCode, this.revieweeId, this.assignmentId)\r\n\t\t\tif (submissions.length > 0) {\r\n\t\t\t\t// Setup submission status\r\n\t\t\t\t// this.uploadedDate = new Date(submissions[0].LastActivityDate)\r\n\t\t\t\tthis.uploadedDate = this.$moment(submissions[0].LastActivityDate)._d\r\n\t\t\t\t// this.dueDate = new Date(this.currentAssignment.DueDate)\r\n\t\t\t\tthis.dueDate = this.$moment(this.currentTask.DueDate)._d\r\n\r\n\t\t\t\tif (this.uploadedDate <= this.dueDate) { this.onTime = true } else { this.onTime = false }\r\n\t\t\t\t// Get latest review\r\n\t\t\t\tlet review_type = 'peer_review'\r\n\t\t\t\tif (this.isGroupProject) { review_type = 'group_peer_review' }\r\n\t\t\t\tconst reviews = await reviewService.getReview(this.termCode, this.orgCode, this.classCode,\r\n\t\t\t\t\tthis.assignmentId, this.reviewerId, this.revieweeId, this.reviewerRole, review_type)\r\n\t\t\t\tif (reviews.length > 0) {\r\n\t\t\t\t\tlatestReview = reviews[0]\r\n\t\t\t\t\tif (!this.readOnly) {\r\n\t\t\t\t\t\t// First check if there is new submission\r\n\t\t\t\t\t\tconst uploadedDateOfLatestReview = latestReview.UploadedDate\r\n\t\t\t\t\t\tif (uploadedDateOfLatestReview != null) {\r\n\t\t\t\t\t\t\tconst date1 = this.$moment(uploadedDateOfLatestReview)\r\n\t\t\t\t\t\t\tconst uploadedDateOfLatestSubmission = submissions[0].LastActivityDate\r\n\t\t\t\t\t\t\tconst date2 = this.$moment(uploadedDateOfLatestSubmission)\r\n\t\t\t\t\t\t\t// If uploadedDateOfLatestSubmission > uploadedDateOfLatestReview -> there is new submission\r\n\t\t\t\t\t\t\t// Then create latest review using latest submission.\r\n\t\t\t\t\t\t\tif (date2._d > date1._d) {\r\n\t\t\t\t\t\t\t\tconst newDocId = await pdfService.createPdf(submissions[0].DocId)\r\n\t\t\t\t\t\t\t\tif (newDocId > 0) {\r\n\t\t\t\t\t\t\t\t\tconst newReview = await this.createNewReview(this.orgCode, this.termCode,\r\n\t\t\t\t\t\t\t\t\t\tthis.classCode, this.assignmentId, this.taskId, this.reviewerId, this.revieweeId,\r\n\t\t\t\t\t\t\t\t\t\tthis.reviewerRole, newDocId, submissions[0].LastActivityDate, latestReview)\r\n\t\t\t\t\t\t\t\t\tif (newReview) {\r\n\t\t\t\t\t\t\t\t\t\treviews.splice(0, 0, newReview)\r\n\t\t\t\t\t\t\t\t\t\tlatestReview = newReview\r\n\t\t\t\t\t\t\t\t\t} else { latestReview = reviews[0] }\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tdocId = latestReview.DocId\r\n\t\t\t\t\tconst that = this\r\n\t\t\t\t\treviews.forEach(function(el) {\r\n\t\t\t\t\t\tconst submission = {\r\n\t\t\t\t\t\t\treview: el,\r\n\t\t\t\t\t\t\tuploadedDate: el.UploadedDate,\r\n\t\t\t\t\t\t\tdocId: el.DocId\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tthat.submissions.push(submission)\r\n\t\t\t\t\t})\r\n\t\t\t\t\tthis.currentSubmission = this.submissions[0]\r\n\t\t\t\t} else {\r\n\t\t\t\t\t// If there is no review, display latest submission with empty rubric\r\n\t\t\t\t\t// Get new doc id\r\n\t\t\t\t\tdocId = await pdfService.createPdf(submissions[0].DocId)\r\n\t\t\t\t\tconst submission = {\r\n\t\t\t\t\t\treview: null,\r\n\t\t\t\t\t\tuploadedDate: submissions[0].LastActivityDate,\r\n\t\t\t\t\t\tdocId: submissions[0].DocId\r\n\t\t\t\t\t}\r\n\t\t\t\t\tthis.submissions.push(submission)\r\n\t\t\t\t\tthis.currentSubmission = this.submissions[0]\r\n\t\t\t\t}\r\n\t\t\t\t// Display the document\r\n\t\t\t\tawait this.displayDocument(docId)\r\n\t\t\t\t// Display the latest review\r\n\t\t\t\tawait this.displayReview(latestReview)\r\n\t\t\t\tdocument.getElementById('full_width_container').style.display = 'block'\r\n\t\t\t} else {\r\n\t\t\t\tNotification.error({\r\n\t\t\t\t\tduration: 6000,\r\n\t\t\t\t\ttitle: 'Error',\r\n\t\t\t\t\tmessage: 'No submission found!'\r\n\t\t\t\t})\r\n\t\t\t}\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Display document by document id.\r\n\t\t// @arg The document id.\r\n\t\tasync displayDocument(docId) {\r\n\t\t\tif (docId) {\r\n\t\t\t\tthis.docId = docId\r\n\t\t\t\tawait pdfService.getPdf(docId)\r\n\t\t\t\t\t.then(pdf => {\r\n\t\t\t\t\t\t// Display the pdf\r\n\t\t\t\t\t\tconst pdfDocument = document.querySelector('#pdfDocument')\r\n\t\t\t\t\t\tpdfDocument.innerHTML = pdf\r\n\t\t\t\t\t\t// Setup the doc after being loaded\r\n\t\t\t\t\t\tconst that = this\r\n\t\t\t\t\t\tdocument.getElementById('PdfWebControl').onload = function() {\r\n\t\t\t\t\t\t\tthat.PdfAttachListeners()\r\n\t\t\t\t\t\t\tsetTimeout(function() {\r\n\t\t\t\t\t\t\t\tthat.totalPageNumber = that.myapi.getPageCount()\r\n\t\t\t\t\t\t\t}, 500)\r\n\t\t\t\t\t\t\tthat.autoSavePdf()\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}).catch((error) => {\r\n\t\t\t\t\t\tconsole.log(error)\r\n\t\t\t\t\t})\r\n\t\t\t}\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Auto save the pdf every 2 minutes.\r\n\t\tautoSavePdf() {\r\n\t\t\tconst that = this\r\n\t\t\twindow.setInterval(function() {\r\n\t\t\t\tconst iframe = document.getElementById('PdfWebControl')\r\n\t\t\t\tif (iframe) {\r\n\t\t\t\t\tconst innerDoc = iframe.contentDocument || iframe.contentWindow.document\r\n\t\t\t\t\tconst page = that.myapi.getPageViewed()\r\n\t\t\t\t\tconst objCount = page.getObjectCount()\r\n\r\n\t\t\t\t\tif (objCount == 0) {\r\n\t\t\t\t\t\tif (that.myapi.getHasUnsavedChanges()) {\r\n\t\t\t\t\t\t\tthat.myapi.save()\r\n\t\t\t\t\t\t\treturn\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tlet found\r\n\t\t\t\t\tconst pdfe_msgt = innerDoc.getElementById('pdfe_msgt')\r\n\t\t\t\t\tfor (let i = 0; i < objCount; i++) {\r\n\t\t\t\t\t// get this object\r\n\t\t\t\t\t\tconst aTags = innerDoc.getElementsByTagName('div')\r\n\t\t\t\t\t\tfor (let i = 0; i < aTags.length; i++) {\r\n\t\t\t\t\t\t\tif (aTags[i].innerHTML == 'DEL') {\r\n\t\t\t\t\t\t\t\tfound = aTags[i]\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif ((typeof (found) === 'undefined' || found === null) || (typeof (pdfe_msgt) === 'undefined' || pdfe_msgt === null)) {\r\n\t\t\t\t\t\treturn\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif (pdfe_msgt.style.visibility == 'visible') {\r\n\t\t\t\t\t\treturn\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tif (found.style.visibility == 'visible') {\r\n\t\t\t\t\t\t\treturn\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tconst activeEl = innerDoc.activeElement\r\n\t\t\t\t\tif (activeEl) {\r\n\t\t\t\t\t\tconst isEditting = activeEl.getAttribute('contenteditable')\r\n\t\t\t\t\t\tif (isEditting) { return }\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif (that.myapi.getHasUnsavedChanges()) {\r\n\t\t\t\t\t\tthat.myapi.save()\r\n\t\t\t\t\t\tif (that.review == null) { that.saveReview() }\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}, 120 * 1000)\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Display the review.\r\n\t\t// @arg The review to be displayed.\r\n\t\tasync displayReview(review) {\r\n\t\t\tthis.review = review\r\n\t\t\tconst rubricId = this.currentTask.RubricId\r\n\t\t\tif (review && review.EmailSent == 'Y') {\r\n\t\t\t\tthis.statusType = 'primary'\r\n\t\t\t\tthis.submitTooltip = 'Your feedback is submitted.'\r\n\t\t\t} else if (review && review.IsSaved == 'Y') {\r\n\t\t\t\tthis.statusType = 'danger'\r\n\t\t\t\tthis.submitTooltip = 'Your feedback is saved, but has not yet been submitted.'\r\n\t\t\t} else {\r\n\t\t\t\tthis.statusType = 'info'\r\n\t\t\t}\r\n\r\n\t\t\t// Get the rubric from current assignment.\r\n\t\t\tawait rubricService.getRubricById(rubricId)\r\n\t\t\t\t.then(rubric => {\r\n\t\t\t\t\tthis.rubricCriteria = rubric.RubricCriterias\r\n\t\t\t\t\tif (review) {\r\n\t\t\t\t\t\tif (review.ReviewData.length == 0) { this.criteriaFeedback = this.getDefaultCriteriaFeedback(rubric.RubricCriterias) } else { this.criteriaFeedback = review.ReviewData }\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tthis.criteriaFeedback = this.getDefaultCriteriaFeedback(rubric.RubricCriterias)\r\n\t\t\t\t\t}\r\n\t\t\t\t}).catch((error) => {\r\n\t\t\t\t\tconsole.log(error)\r\n\t\t\t\t})\r\n\r\n\t\t\t// Setup auto save for comment boxes\r\n\t\t\tconst criteriaComments = document.querySelectorAll('.criteria-comment >.el-textarea__inner')\r\n\t\t\tconst that = this\r\n\t\t\tcriteriaComments.forEach(function(item) {\r\n\t\t\t\tconst criteriaIndex = item.getAttribute('criteria-index')\r\n\r\n\t\t\t\titem.addEventListener('focus', function(e) {\r\n\t\t\t\t\tthat.cIndex = this.getAttribute('criteria-index')\r\n\t\t\t\t})\r\n\r\n\t\t\t\titem.addEventListener('focusout', function(e) {\r\n\t\t\t\t\tlet scoreClicked = false\r\n\t\t\t\t\tif (!that.review) {\r\n\t\t\t\t\t\t// Check if reviewer click on a criteria score after focus out\r\n\t\t\t\t\t\tconst nextTarget = e.relatedTarget\r\n\t\t\t\t\t\tif (nextTarget && nextTarget.classList && nextTarget.classList.length > 0 &&\r\n\t\t\t\t\t\t e.relatedTarget.classList[0] == 'el-radio-button') { scoreClicked = true }\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif (!scoreClicked && !this.readOnly) {\r\n\t\t\t\t\t\tthat.saveReview(criteriaIndex)\r\n\t\t\t\t\t}\r\n\t\t\t\t})\r\n\t\t\t})\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Get a default criteria feedback.\r\n\t\t// @arg The rubic criteria used.\r\n\t\tgetDefaultCriteriaFeedback(criteria) {\r\n\t\t\tconst criteriaFeedbacks = []\r\n\t\t\tfor (let i = 0; i < criteria.length; i++) {\r\n\t\t\t\tconst criteriaFeedback = {\r\n\t\t\t\t\tCriteriaId: criteria[i].Id,\r\n\t\t\t\t\tMark: 999,\r\n\t\t\t\t\tComment: '',\r\n\t\t\t\t\tAudioPath: null,\r\n\t\t\t\t\tLetterGrade: null\r\n\t\t\t\t}\r\n\t\t\t\tcriteriaFeedbacks.push(criteriaFeedback)\r\n\t\t\t}\r\n\t\t\treturn criteriaFeedbacks\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Create new review.\r\n\t\t// @arg The arguments needed for creating new review.\r\n\t\tasync createNewReview(orgCode, termCode, classCode, assignmentId, taskId, reviewerId, revieweeId,\r\n\t\t\treviewerRole, docId, uploadedDateStr, latestReview) {\r\n\t\t\tlet reviewType\r\n\t\t\tif (this.isGroupProject) { reviewType = 'group_peer_review' } else { reviewType = 'peer_review' }\r\n\t\t\tconst lastActivityDate = this.getlastActivityDate()\r\n\t\t\tlet criteriaFeedback = []\r\n\t\t\tif (latestReview != null) {\r\n\t\t\t\tif (latestReview.ReviewData.length > 0) { criteriaFeedback = this.getPreviousFeedback(latestReview) }\r\n\t\t\t}\r\n\r\n\t\t\tlet holisticScore = 999\r\n\t\t\tif (criteriaFeedback.length > 0) { holisticScore = criteriaFeedback[criteriaFeedback.length - 1].Mark }\r\n\r\n\t\t\tconst newReview = {\r\n\t\t\t\tDocId: docId,\r\n\t\t\t\tTermCode: termCode,\r\n\t\t\t\tOrgCode: orgCode,\r\n\t\t\t\tClassCode: classCode,\r\n\t\t\t\tRevieweeId: revieweeId,\r\n\t\t\t\tAssignmentId: assignmentId,\r\n\t\t\t\tReviewerId: reviewerId,\r\n\t\t\t\tReviewType: reviewType,\r\n\t\t\t\tUploadedDate: uploadedDateStr,\r\n\t\t\t\tIsSaved: 'Y',\r\n\t\t\t\tEmailSent: 'N',\r\n\t\t\t\tLastActivityDate: lastActivityDate,\r\n\t\t\t\tReviewerRole: reviewerRole,\r\n\t\t\t\tFinalGrade: 'NG',\r\n\t\t\t\tPercentScore: 0,\r\n\t\t\t\tHolisticScore: holisticScore,\r\n\t\t\t\tReviewData: criteriaFeedback,\r\n\t\t\t\tTaskId: taskId\r\n\t\t\t}\r\n\t\t\tconst thisReview = await reviewService.createNewReview(newReview)\r\n\t\t\treturn thisReview\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Auto save the review before a page refresh.\r\n\t\tasync saveReviewBeforeRefresh() {\r\n\t\t\tif (this.review != null) {\r\n\t\t\t\tif (this.cIndex != null) {\r\n\t\t\t\t\t// Update this review feedback\r\n\t\t\t\t\tconst api = urlUtils.getBaseApiURL() + '/review/data'\r\n\t\t\t\t\tconst xmlhttp = new XMLHttpRequest()\r\n\t\t\t\t\txmlhttp.open('PUT', api, false)// the false is for making the call synchronous\r\n\t\t\t\t\txmlhttp.setRequestHeader('Content-Type', 'application/json;charset=UTF-8')\r\n\t\t\t\t\txmlhttp.send(JSON.stringify(this.criteriaFeedback[this.cIndex]))\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tif (this.cIndex != null && this.criteriaFeedback[this.cIndex].Comment != '') {\r\n\t\t\t\t\t// Create new review\r\n\t\t\t\t\tconst reviewType = 'peer_review'\r\n\t\t\t\t\tconst lastActivityDate = this.getlastActivityDate()\r\n\t\t\t\t\tconst lastCriteriaScore = this.criteriaFeedback[this.criteriaFeedback.length - 1].Mark\r\n\t\t\t\t\tconst holisticScore = lastCriteriaScore == null ? 999 : lastCriteriaScore\r\n\t\t\t\t\tconst newReview = {\r\n\t\t\t\t\t\tDocId: this.docId,\r\n\t\t\t\t\t\tTermCode: this.termCode,\r\n\t\t\t\t\t\tOrgCode: this.orgCode,\r\n\t\t\t\t\t\tClassCode: this.classCode,\r\n\t\t\t\t\t\tRevieweeId: this.revieweeId,\r\n\t\t\t\t\t\tAssignmentId: this.assignmentId,\r\n\t\t\t\t\t\tReviewerId: this.reviewerId,\r\n\t\t\t\t\t\tReviewType: reviewType,\r\n\t\t\t\t\t\tUploadedDate: this.getDateStr(this.uploadedDate),\r\n\t\t\t\t\t\tIsSaved: 'Y',\r\n\t\t\t\t\t\tEmailSent: 'N',\r\n\t\t\t\t\t\tLastActivityDate: lastActivityDate,\r\n\t\t\t\t\t\tReviewerRole: this.reviewerRole,\r\n\t\t\t\t\t\tFinalGrade: 'NG',\r\n\t\t\t\t\t\tPercentScore: 0,\r\n\t\t\t\t\t\tHolisticScore: holisticScore,\r\n\t\t\t\t\t\tReviewData: this.criteriaFeedback,\r\n\t\t\t\t\t\tTaskId: this.taskId\r\n\t\t\t\t\t}\r\n\t\t\t\t\tconst api = urlUtils.getBaseApiURL() + '/review'\r\n\t\t\t\t\tconst xmlhttp = new XMLHttpRequest()\r\n\t\t\t\t\txmlhttp.open('POST', api, false)// the false is for making the call synchronous\r\n\t\t\t\t\txmlhttp.setRequestHeader('Content-Type', 'application/json;charset=UTF-8')\r\n\t\t\t\t\txmlhttp.send(JSON.stringify(newReview))\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Auto save the review.\r\n\t\t// @arg The criteria index.\r\n\t\tsaveReview(criteriaIndex) {\r\n\t\t\tif (this.review != null) {\r\n\t\t\t\t// Update this review feedback\r\n\t\t\t\treviewService.updateReviewFeeback(this.criteriaFeedback[criteriaIndex])\r\n\t\t\t\t\t.then(review => {\r\n\t\t\t\t\t\tconst message = document.getElementById('savedMessage')\r\n\t\t\t\t\t\tmessage.style.display = 'inline-block'\r\n\t\t\t\t\t\tsetTimeout(function() {\r\n\t\t\t\t\t\t\tif (message.style.display == 'inline-block') { message.style.display = 'none' }\r\n\t\t\t\t\t\t}, 3000)\r\n\t\t\t\t\t}).catch((error) => {\r\n\t\t\t\t\t\tconsole.log(error)\r\n\t\t\t\t\t\tNotification.error({\r\n\t\t\t\t\t\t\tduration: 6000,\r\n\t\t\t\t\t\t\ttitle: 'Error',\r\n\t\t\t\t\t\t\tmessage: 'Your feedback was not saved.'\r\n\t\t\t\t\t\t})\r\n\t\t\t\t\t})\r\n\t\t\t} else {\r\n\t\t\t\t// Create new review\r\n\t\t\t\tlet reviewType\r\n\t\t\t\tif (this.isGroupProject) { reviewType = 'group_peer_review' } else { reviewType = 'peer_review' }\r\n\t\t\t\tconst lastActivityDate = this.getlastActivityDate()\r\n\t\t\t\tconst lastCriteriaScore = this.criteriaFeedback[this.criteriaFeedback.length - 1].Mark\r\n\t\t\t\tconst holisticScore = lastCriteriaScore == null ? 999 : lastCriteriaScore\r\n\t\t\t\tconst newReview = {\r\n\t\t\t\t\tDocId: this.docId,\r\n\t\t\t\t\tTermCode: this.termCode,\r\n\t\t\t\t\tOrgCode: this.orgCode,\r\n\t\t\t\t\tClassCode: this.classCode,\r\n\t\t\t\t\tRevieweeId: this.revieweeId,\r\n\t\t\t\t\tAssignmentId: this.assignmentId,\r\n\t\t\t\t\tReviewerId: this.reviewerId,\r\n\t\t\t\t\tReviewType: reviewType,\r\n\t\t\t\t\tUploadedDate: this.getDateStr(this.uploadedDate),\r\n\t\t\t\t\tIsSaved: 'Y',\r\n\t\t\t\t\tEmailSent: 'N',\r\n\t\t\t\t\tLastActivityDate: lastActivityDate,\r\n\t\t\t\t\tReviewerRole: this.reviewerRole,\r\n\t\t\t\t\tFinalGrade: 'NG',\r\n\t\t\t\t\tPercentScore: 0,\r\n\t\t\t\t\tHolisticScore: holisticScore,\r\n\t\t\t\t\tReviewData: this.criteriaFeedback,\r\n\t\t\t\t\tTaskId: this.taskId\r\n\t\t\t\t}\r\n\t\t\t\treviewService.createNewReview(newReview)\r\n\t\t\t\t\t.then(review => {\r\n\t\t\t\t\t\tthis.review = review\r\n\t\t\t\t\t\tthis.criteriaFeedback = review.ReviewData\r\n\t\t\t\t\t\tthis.statusType = 'danger'\r\n\t\t\t\t\t\tthis.submitTooltip = 'Your feedback is saved, but has not yet been submitted.'\r\n\t\t\t\t\t\tconst message = document.getElementById('savedMessage')\r\n\t\t\t\t\t\tmessage.style.display = 'inline-block'\r\n\t\t\t\t\t\tsetTimeout(function() {\r\n\t\t\t\t\t\t\tif (message.style.display == 'inline-block') { message.style.display = 'none' }\r\n\t\t\t\t\t\t}, 3000)\r\n\t\t\t\t\t}).catch((error) => {\r\n\t\t\t\t\t\tconsole.log(error)\r\n\t\t\t\t\t\tNotification.error({\r\n\t\t\t\t\t\t\tduration: 6000,\r\n\t\t\t\t\t\t\ttitle: 'Error',\r\n\t\t\t\t\t\t\tmessage: 'Your feedback was not saved.'\r\n\t\t\t\t\t\t})\r\n\t\t\t\t\t})\r\n\t\t\t}\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Submit a review.\r\n\t\tsubmitReview() {\r\n\t\t\tif (this.review != null) {\r\n\t\t\t\tconst review = this.review\r\n\t\t\t\treview.IsSaved = 'N'\r\n\t\t\t\treview.EmailSent = 'Y'\r\n\t\t\t\treview.LastActivityDate = this.getlastActivityDate()\r\n\t\t\t\tconst lastCriteriaScore = this.criteriaFeedback[this.criteriaFeedback.length - 1].Mark\r\n\t\t\t\treview.HolisticScore = lastCriteriaScore == null ? 999 : lastCriteriaScore\r\n\t\t\t\treviewService.updateReview(review).then(updatedReview => {\r\n\t\t\t\t\tthis.review = updatedReview\r\n\t\t\t\t\tthis.criteriaFeedback = updatedReview.ReviewData\r\n\t\t\t\t\tthis.statusType = 'primary'\r\n\t\t\t\t\tthis.submitTooltip = 'Your feedback is submitted.'\r\n\t\t\t\t\tNotification.success({\r\n\t\t\t\t\t\tduration: 6000,\r\n\t\t\t\t\t\ttitle: 'Success',\r\n\t\t\t\t\t\tmessage: 'Your feedback was submitted successfully.'\r\n\t\t\t\t\t})\r\n\t\t\t\t\tthis.myapi.save()\r\n\t\t\t\t\tconst that = this\r\n\t\t\t\t\tsetTimeout(function() {\r\n\t\t\t\t\t\tpdfService.processCommentText(that.review.DocId)\r\n\t\t\t\t\t}, 2000)\r\n\t\t\t\t}).catch((error) => {\r\n\t\t\t\t\tconsole.log(error)\r\n\t\t\t\t\tNotification.error({\r\n\t\t\t\t\t\tduration: 6000,\r\n\t\t\t\t\t\ttitle: 'Error',\r\n\t\t\t\t\t\tmessage: 'Your feedback was not submitted successfully.'\r\n\t\t\t\t\t})\r\n\t\t\t\t})\r\n\t\t\t}\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Get previous feedback.\r\n\t\t// @arg The previously submitted review.\r\n\t\tgetPreviousFeedback(review) {\r\n\t\t\tconst criteriaFeedbacks = []\r\n\t\t\tfor (let i = 0; i < review.ReviewData.length; i++) {\r\n\t\t\t\tconst criteria = review.ReviewData[i]\r\n\t\t\t\tconst criteriaFeedback = {\r\n\t\t\t\t\tCriteriaId: criteria.CriteriaId,\r\n\t\t\t\t\tMark: criteria.Mark == null ? 999 : criteria.Mark,\r\n\t\t\t\t\tComment: criteria.Comment,\r\n\t\t\t\t\tAudioPath: criteria.AudioPath\r\n\t\t\t\t}\r\n\t\t\t\tcriteriaFeedbacks.push(criteriaFeedback)\r\n\t\t\t}\r\n\t\t\treturn criteriaFeedbacks\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Handles logics when a project is selected.\r\n\t\tasync onAssignmentChange() {\r\n\t\t\tthis.pageNum = 1\r\n\t\t\tthis.noSubmission = true\r\n\t\t\tthis.review = null\r\n\t\t\tthis.submissions = []\r\n\t\t\tthis.currentSubmission = null\r\n\t\t\tthis.rubricCriteria = null\r\n\t\t\t// this.revieweeId = null;\r\n\t\t\tthis.assignmentId = this.currentAssignment.Id\r\n\t\t\tthis.currentTask = null\r\n\t\t\tthis.taskId = null\r\n\r\n\t\t\tif (this.currentAssignment.Tasks != null && this.currentAssignment.Tasks.length > 0) {\r\n\t\t\t\tvar peerReviewTasks = this.currentAssignment.Tasks.filter(t => t.Type == 'peer_review')\r\n\t\t\t\tif (peerReviewTasks != null && peerReviewTasks.length > 0) {\r\n\t\t\t\t\tthis.currentTask = peerReviewTasks[0]\r\n\t\t\t\t\tthis.taskId = peerReviewTasks[0].Id\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif (this.currentAssignment.IsGroupAssignment) {\r\n\t\t\t\tthis.revieweeId = null\r\n\t\t\t\tthis.isGroupProject = true\r\n\t\t\t\t// set up group selection\r\n\t\t\t\tconst groupSetupComplete = await this.setUpGroupSelection()\r\n\t\t\t\tif (groupSetupComplete) { this.displayDocumentAndReview() } // Set up submissions selection, document, and rubric\r\n\t\t\t\tthis.$router.push('/peer_review?revieweeId=' + this.revieweeId + '&assignmentId=' + this.assignmentId)\r\n\t\t\t} else {\r\n\t\t\t\tthis.reviewerId = this.$store.state.auth.user.UserName\r\n\t\t\t\tthis.isGroupProject = false\r\n\t\t\t\t// Set up students selection\r\n\t\t\t\tconst studentSetupComplete = await this.setUpStudentSelection()\r\n\t\t\t\tif (studentSetupComplete) { this.displayDocumentAndReview() } // Set up submissions selection, document, and rubric\r\n\t\t\t\tthis.$router.push('/peer_review?revieweeId=' + this.revieweeId + '&assignmentId=' + this.assignmentId)\r\n\t\t\t}\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Handles logics when a student is selected.\r\n\t\tonStudentChange() {\r\n\t\t\tthis.prevBtnDisable = false\r\n\t\t\tthis.nextBtnDisable = false\r\n\t\t\tthis.pageNum = 1\r\n\t\t\tthis.submissions = []\r\n\t\t\tthis.currentSubmission = null\r\n\t\t\tthis.rubricCriteria = null\r\n\t\t\tthis.revieweeId = this.currentStudent.UserName\r\n\t\t\tconst thisIndex = this.students.findIndex(x => x.UserName == this.currentStudent.UserName)\r\n\t\t\tif (thisIndex == 0) {\r\n\t\t\t\tthis.prevBtnDisable = true\r\n\t\t\t\tif (this.students.length > 1 && this.nextBtnDisable == true) { this.nextBtnDisable = false }\r\n\t\t\t}\r\n\t\t\tif (thisIndex == this.students.length - 1) {\r\n\t\t\t\tthis.nextBtnDisable = true\r\n\t\t\t\tif (this.students.length > 1 && this.prevBtnDisable == true) { this.prevBtnDisable = false }\r\n\t\t\t}\r\n\t\t\tthis.displayDocumentAndReview()\r\n\t\t\tthis.$router.push('/peer_review?revieweeId=' + this.revieweeId + '&assignmentId=' + this.assignmentId)\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Handles logics when the previous student arrow is clicked.\r\n\t\tasync previousStudent() {\r\n\t\t\tconst thisIndex = this.students.findIndex(x => x.UserName == this.currentStudent.UserName)\r\n\t\t\tif (thisIndex - 1 == 0) {\r\n\t\t\t\tthis.prevBtnDisable = true\r\n\t\t\t}\r\n\t\t\tif (this.students.length > 1) { this.nextBtnDisable = false }\r\n\t\t\tthis.currentStudent = this.students[thisIndex - 1]\r\n\t\t\tthis.pageNum = 1\r\n\t\t\tthis.submissions = []\r\n\t\t\tthis.currentSubmission = null\r\n\t\t\tthis.revieweeId = this.currentStudent.UserName\r\n\t\t\tthis.rubricCriteria = null\r\n\t\t\tthis.prevBtnDisable = true\r\n\t\t\tawait this.displayDocumentAndReview()\r\n\t\t\tif (thisIndex - 1 != 0) { this.prevBtnDisable = false }\r\n\r\n\t\t\tthis.$router.push('/peer_review?revieweeId=' + this.revieweeId + '&assignmentId=' + this.assignmentId)\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Handles logics when the next student arrow is clicked.\r\n\t\tasync nextStudent() {\r\n\t\t\tconst thisIndex = this.students.findIndex(x => x.UserName == this.currentStudent.UserName)\r\n\t\t\tif (thisIndex == this.students.length - 2) {\r\n\t\t\t\tthis.nextBtnDisable = true\r\n\t\t\t}\r\n\t\t\tif (this.students.length > 1) { this.prevBtnDisable = false }\r\n\t\t\tthis.currentStudent = this.students[thisIndex + 1]\r\n\t\t\tthis.pageNum = 1\r\n\t\t\tthis.submissions = []\r\n\t\t\tthis.currentSubmission = null\r\n\t\t\tthis.revieweeId = this.currentStudent.UserName\r\n\t\t\tthis.rubricCriteria = null\r\n\t\t\tthis.nextBtnDisable = true\r\n\t\t\tawait this.displayDocumentAndReview()\r\n\t\t\tif (thisIndex != this.students.length - 2) { this.nextBtnDisable = false }\r\n\r\n\t\t\tthis.$router.push('/peer_review?revieweeId=' + this.revieweeId + '&assignmentId=' + this.assignmentId)\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Handles logics when a group is selected.\r\n\t\tonGroupChange() {\r\n\t\t\tthis.prevBtnDisable = false\r\n\t\t\tthis.nextBtnDisable = false\r\n\t\t\tthis.pageNum = 1\r\n\t\t\tthis.submissions = []\r\n\t\t\tthis.currentSubmission = null\r\n\t\t\tthis.rubricCriteria = null\r\n\t\t\tthis.revieweeId = this.currentGroup.GroupId\r\n\t\t\tconst thisIndex = this.groups.findIndex(x => x.GroupId == this.currentGroup.GroupId)\r\n\t\t\tif (thisIndex == 0) {\r\n\t\t\t\tthis.prevGroupBtnDisable = true\r\n\t\t\t\tif (this.groups.length > 1 && this.nextGroupBtnDisable == true) { this.nextGroupBtnDisable = false }\r\n\t\t\t}\r\n\t\t\tif (thisIndex == this.groups.length - 1) {\r\n\t\t\t\tthis.nextGroupBtnDisable = true\r\n\t\t\t\tif (this.groups.length > 1 && this.prevGroupBtnDisable == true) { this.prevGroupBtnDisable = false }\r\n\t\t\t}\r\n\r\n\t\t\tthis.displayDocumentAndReview()\r\n\t\t\tthis.$router.push('/peer_review?revieweeId=' + this.revieweeId + '&assignmentId=' + this.assignmentId)\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Handles logics when the previous group arrow is clicked.\r\n\t\tasync previousGroup() {\r\n\t\t\tconst thisIndex = this.groups.findIndex(x => x.GroupId == this.currentGroup.GroupId)\r\n\t\t\tif (thisIndex - 1 == 0) {\r\n\t\t\t\tthis.prevGroupBtnDisable = true\r\n\t\t\t}\r\n\t\t\tif (this.groups.length > 1) { this.nextGroupBtnDisable = false }\r\n\t\t\tthis.currentGroup = this.groups[thisIndex - 1]\r\n\t\t\tthis.pageNum = 1\r\n\t\t\tthis.submissions = []\r\n\t\t\tthis.currentSubmission = null\r\n\t\t\tthis.revieweeId = this.currentGroup.GroupId\r\n\t\t\tthis.rubricCriteria = null\r\n\t\t\tthis.prevGroupBtnDisable = true\r\n\t\t\tawait this.displayDocumentAndReview()\r\n\t\t\tif (thisIndex - 1 != 0) { this.prevGroupBtnDisable = false }\r\n\r\n\t\t\tthis.$router.push('/peer_review?revieweeId=' + this.revieweeId + '&assignmentId=' + this.assignmentId)\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Handles logics when the next group arrow is clicked.\r\n\t\tasync nextGroup() {\r\n\t\t\tconst thisIndex = this.groups.findIndex(x => x.GroupId == this.currentGroup.GroupId)\r\n\t\t\tif (thisIndex == this.groups.length - 2) {\r\n\t\t\t\tthis.nextGroupBtnDisable = true\r\n\t\t\t}\r\n\t\t\tif (this.groups.length > 1) { this.prevGroupBtnDisable = false }\r\n\t\t\tthis.currentGroup = this.groups[thisIndex + 1]\r\n\t\t\tthis.pageNum = 1\r\n\t\t\tthis.submissions = []\r\n\t\t\tthis.currentSubmission = null\r\n\t\t\tthis.revieweeId = this.currentGroup.GroupId\r\n\t\t\tthis.rubricCriteria = null\r\n\t\t\tthis.nextGroupBtnDisable = true\r\n\t\t\tawait this.displayDocumentAndReview()\r\n\t\t\tif (thisIndex != this.groups.length - 2) { this.nextGroupBtnDisable = false }\r\n\r\n\t\t\tthis.$router.push('/peer_review?revieweeId=' + this.revieweeId + '&assignmentId=' + this.assignmentId)\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Handles logics when a submission is selected\r\n\t\tasync onSubmissionChange() {\r\n\t\t\tthis.pageNum = 1\r\n\t\t\tthis.rubricCriteria = null\r\n\t\t\t// Display the doc based on latest submission or latest review\r\n\t\t\tawait this.displayDocument(this.currentSubmission.docId)\r\n\r\n\t\t\t// Display the latest review\r\n\t\t\tawait this.displayReview(this.currentSubmission.review)\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Configures Rad PDf for displaying the document.\r\n\t\tPdfAttachListeners() {\r\n\t\t\tconst id = 'PdfWebControl'\r\n\t\t\t// eslint-disable-next-line no-undef\r\n\t\t\tthis.myapi = new PdfWebControlApi(id)\r\n\t\t\tthis.myapi.addEventListener('modeChanged', function(evt) {\r\n\t\t\t\tevt.byLine = true\r\n\t\t\t})\r\n\t\t\tconst that = this\r\n\t\t\tthis.myapi.addEventListener('viewChanged', function(evt) {\r\n\t\t\t\tthat.pageNum = that.myapi.getPageViewed().getPageNumber()\r\n\t\t\t})\r\n\r\n\t\t\tthis.myapi.addEventListener('objectAdded', function(evt) {\r\n\t\t\t\tif (evt.obj.getType() == 154) { // Highlight annotation\r\n\t\t\t\t\tconst props = evt.obj.getProperties()\r\n\t\t\t\t\tconst popup = evt.obj.getPopup()\r\n\r\n\t\t\t\t\tevt.obj.setProperties({\r\n\t\t\t\t\t\t'customData': evt.textSelected\r\n\t\t\t\t\t})\r\n\r\n\t\t\t\t\tpopup.setProperties(\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tauthor: 'RAD PDF',\r\n\t\t\t\t\t\t\tsubject: 'In-text Comment',\r\n\t\t\t\t\t\t\ttop: props['top'] - 60,\r\n\t\t\t\t\t\t\tleft: props['left'] - 5,\r\n\t\t\t\t\t\t\theight: 60\r\n\t\t\t\t\t\t})\r\n\r\n\t\t\t\t\tthat.myapi.setMode(that.myapi.Mode.None)\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (evt.obj.getType() == 100) {\r\n\t\t\t\t\tthat.myapi.setMode(that.myapi.Mode.None)\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (evt.obj.getType() == 101) {\r\n\t\t\t\t\tthat.myapi.setMode(that.myapi.Mode.None)\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (evt.obj.getType() == that.myapi.ObjectType.StrikeoutAnnotation) {\r\n\t\t\t\t\tthat.myapi.setMode(that.myapi.Mode.None)\r\n\t\t\t\t}\r\n\t\t\t\tif (evt.obj.getType() == that.myapi.ObjectType.TextAnnotation) {\r\n\t\t\t\t\tthat.myapi.setMode(that.myapi.Mode.None)\r\n\t\t\t\t}\r\n\t\t\t})\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Handles logics when the page number is changed.\r\n\t\tchangePage() {\r\n\t\t\tthis.myapi.setView({ 'page': this.pageNum })\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Handles logics when the zoom out button is clicked.\r\n\t\tzoomOut() {\r\n\t\t\tif (this.myapi) {\r\n\t\t\t\tif (this.zoomValue > 40) { this.myapi.setView({ 'zoom': this.zoomValue -= 20 }) }\r\n\t\t\t}\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Handles logics when the zoom in button is clicked.\r\n\t\tzoomIn() {\r\n\t\t\tif (this.myapi) {\r\n\t\t\t\tif (this.zoomValue < 200 && this.zoomValue > 20) { this.myapi.setView({ 'zoom': this.zoomValue += 20 }) }\r\n\t\t\t}\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Handles logics when the zoom fit width button is clicked.\r\n\t\tzoomFitWidth() {\r\n\t\t\tif (this.myapi) {\r\n\t\t\t\tthis.zoomValue = 140\r\n\t\t\t\tthis.myapi.setView({ 'zoom': -1 })\r\n\t\t\t}\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Handles logics when the download button is clicked.\r\n\t\tdownloadPdf() {\r\n\t\t\tif (this.myapi) {\r\n\t\t\t\tthis.myapi.download()\r\n\t\t\t}\r\n\t\t\treturn false\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Handles logics when the select text button is clicked.\r\n\t\tselectTextPdf() {\r\n\t\t\tif (this.myapi) {\r\n\t\t\t\tthis.myapi.setMode(this.myapi.Mode.SelectText)\r\n\t\t\t}\r\n\t\t\treturn false\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Handles logics when the highlight button is clicked.\r\n\t\thighlightPdf() {\r\n\t\t\tif (this.myapi) {\r\n\t\t\t\tthis.myapi.setMode(this.myapi.Mode.InsertHighlightAnnotation)\r\n\t\t\t}\r\n\t\t\treturn false\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Handles logics when the free text button is clicked.\r\n\t\tfreeTextPdf() {\r\n\t\t\tif (this.myapi) {\r\n\t\t\t\tthis.myapi.setMode(this.myapi.Mode.InsertTextShape)\r\n\t\t\t}\r\n\t\t\treturn false\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Handles logics when the strike out button is clicked.\r\n\t\tstrikeOutPdf() {\r\n\t\t\tif (this.myapi) {\r\n\t\t\t\tthis.myapi.setMode(this.myapi.Mode.InsertStrikeoutAnnotation)\r\n\t\t\t}\r\n\t\t\treturn false\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Handles logics when the free draw button is clicked.\r\n\t\tfreeDrawPdf() {\r\n\t\t\tif (this.myapi) {\r\n\t\t\t\tthis.myapi.setMode(this.myapi.Mode.InsertInkShape)\r\n\t\t\t}\r\n\t\t\treturn false\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Handles logics when the sticky note button is clicked.\r\n\t\tstickyNotePdf() {\r\n\t\t\tif (this.myapi) {\r\n\t\t\t\tthis.myapi.setMode(this.myapi.Mode.InsertTextAnnotation)\r\n\t\t\t}\r\n\t\t\treturn false\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Go back to Student Submissions page.\r\n\t\tbackToStudentSubmissions() {\r\n\t\t\tthis.$router.push('/course/' + this.classCode + '/projects/' + this.assignmentId + '/submissions')\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Go back to Projects page.\r\n\t\tbackToAssignments() {\r\n\t\t\tthis.$router.push('/course/' + this.classCode + '/projects/')\r\n\t\t},\r\n\t\tgetUrlParameter(sParam) {\r\n\t\t\tconst sPageURL = decodeURIComponent(window.location.search.substring(1))\r\n\r\n\t\t\tconst sURLVariables = sPageURL.split('&')\r\n\r\n\t\t\tlet sParameterName\r\n\r\n\t\t\tlet i\r\n\r\n\t\t\tfor (i = 0; i < sURLVariables.length; i++) {\r\n\t\t\t\tsParameterName = sURLVariables[i].split('=')\r\n\r\n\t\t\t\tif (sParameterName[0] === sParam) {\r\n\t\t\t\t\treturn sParameterName[1] === undefined ? true : sParameterName[1]\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t},\r\n\t\tgetlastActivityDate() {\r\n\t\t\t// let currentZone = this.$moment.tz.guess();\r\n\t\t\t// if (currentZone != zoneName) {\r\n\t\t\t// \tlet today = this.$moment().tz(zoneName)._d;\r\n\t\t\t// \treturn today.getFullYear() + '-' + (today.getMonth() + 1) + '-' +\r\n\t\t\t// today.getDate() + ' ' + today.getHours() + ':' + today.getMinutes() + ':' + today.getSeconds();\r\n\t\t\t// } else {\r\n\r\n\t\t\t// }\r\n\t\t\tconst today = this.$moment()._d\r\n\t\t\treturn today.getFullYear() + '-' + (today.getMonth() + 1) + '-' +\r\n today.getDate() + ' ' + today.getHours() + ':' + today.getMinutes() + ':' + today.getSeconds()\r\n\t\t},\r\n\t\tgetDateStr(date) {\r\n\t\t\tconst thisDate = this.$moment(date)._d\r\n\t\t\treturn thisDate.getFullYear() + '-' + (thisDate.getMonth() + 1) + '-' +\r\n thisDate.getDate() + ' ' + thisDate.getHours() + ':' + thisDate.getMinutes() + ':' + thisDate.getSeconds()\r\n\t\t}\r\n\t}\r\n}\r\n</script>\r\n\r\n<style scoped>\r\nbody{\r\n background: #F1F3FA;\r\n}\r\n#content-wrapper {\r\n margin-left: 65px;\r\n}\r\n\r\n.el-card{\r\n border: 1px solid #d4d5d6;\r\n}\r\n.el-card.is-always-shadow, .el-card.is-hover-shadow:focus, .el-card.is-hover-shadow:hover {\r\n -webkit-box-shadow: 0 2px 12px 0 #F1F3FA;\r\n box-shadow: 0 2px 12px 0 #F1F3FA;\r\n}\r\n\r\n.el-card__header {\r\n padding: 12px 12px;\r\n}\r\n\r\n.el-card__body {\r\n padding: 10px;\r\n}\r\n\r\n.el-textarea__inner {\r\n padding: 5px 10px;\r\n}\r\n\r\n.filter-btn{\r\n text-align: center;\r\n box-shadow: none;\r\n display: inline-block;\r\n padding: 0px 10px;\r\n vertical-align: middle;\r\n touch-action: manipulation;\r\n cursor: pointer;\r\n color: #636363;\r\n}\r\n\r\n.filter-divider{\r\n float: left;\r\n border-right: solid 1px #cccccc;\r\n height: 50px;\r\n}\r\n\r\n#full_width_container.full-width {\r\n position: absolute;\r\n top: 3.1325em;\r\n bottom: 2px;\r\n left: 215px;\r\n right: 0;\r\n min-width: 460px;\r\n}\r\n\r\n#full_width_container{\r\n position: absolute;\r\n top: 3.1325em;\r\n bottom: 2px;\r\n left: 65px;\r\n right: 0;\r\n min-width: 460px;\r\n}\r\n\r\n#left_side {\r\n top: 0;\r\n bottom: 0;\r\n overflow-y: hidden;\r\n left: 0;\r\n min-width: 700px;\r\n}\r\n#right_side {\r\n top: 0;\r\n bottom: 0;\r\n right: 0;\r\n font-size: 14px;\r\n font-size: .875rem;\r\n}\r\n\r\n.el-input-number--small{\r\n width: 100px;\r\n}\r\n.el-radio-button >>> .el-radio-button__inner{\r\n padding: 12px 15px;\r\n}\r\n\r\n.full_height {\r\n height: 100%;\r\n overflow-x: auto;\r\n}\r\n\r\n#left_side_inner, #submissions_container, #iframe_holder{\r\n height: 100%;\r\n width: 100%;\r\n border: 0 none;\r\n}\r\niframe{\r\n width: 100%;\r\n border: 0px;\r\n overflow: auto;\r\n height: 99%;\r\n min-height: 0px;\r\n}\r\n\r\n#width_resizer {\r\n position: absolute;\r\n top: 0;\r\n bottom: 0;\r\n left: 0;\r\n background: #bbb url(https://du11hjcvx0uqb.cloudfront.net/dist/images/splitpane_handle-ew-1b67cccf0f.gif) no-repeat scroll 50% 50%;\r\n cursor: pointer;\r\n width: 7px;\r\n border-right: 1px solid #838383;\r\n z-index: 2;\r\n}\r\n.right_side_content {\r\n position: absolute;\r\n top: 0;\r\n bottom: 0;\r\n left: 8px;\r\n right: 0;\r\n}\r\n#right_side #rightside_inner {\r\n overflow-y: auto;\r\n position: relative;\r\n}\r\n\r\n.ViewerControls--with-annotations {\r\n height: 49px;\r\n}\r\n.ViewerControls {\r\n background-color: #636363;\r\n color: #fff;\r\n font-size: 14px;\r\n line-height: 24px;\r\n /* overflow-x: auto; */\r\n /* position: absolute;\r\n width: 100%; */\r\n}\r\n.ViewerControls-primary {\r\n -ms-touch-action: none;\r\n touch-action: none;\r\n pointer-events: all;\r\n display: -webkit-box;\r\n display: -ms-flexbox;\r\n display: flex;\r\n}\r\n.ViewerControls--download, .ViewerControls--title {\r\n -webkit-box-flex: 1;\r\n -ms-flex: 1;\r\n flex: 1;\r\n display: -webkit-box;\r\n display: -ms-flexbox;\r\n display: flex;\r\n -webkit-box-align: center;\r\n -ms-flex-align: center;\r\n align-items: center;\r\n white-space: nowrap;\r\n}\r\n\r\n.download-button--button {\r\n background-color: transparent;\r\n font-size: 16px;\r\n border: none;\r\n height: 48px;\r\n width: 48px;\r\n color: white;\r\n cursor: pointer;\r\n}\r\n/* .download-button--button:hover {\r\n background-color: #777777;\r\n} */\r\n\r\n.ViewerControls--page-controls {\r\n display: -webkit-box;\r\n display: -ms-flexbox;\r\n display: flex;\r\n -webkit-box-align: center;\r\n -ms-flex-align: center;\r\n align-items: center;\r\n white-space: nowrap;\r\n}\r\n\r\n.DocumentControls {\r\n display: -webkit-box;\r\n display: -ms-flexbox;\r\n display: flex;\r\n -webkit-box-align: center;\r\n -ms-flex-align: center;\r\n align-items: center;\r\n}\r\n\r\n.AnnotationControlButton {\r\n width: 48px;\r\n padding: 0;\r\n border: 0 none;\r\n color: #fff;\r\n background-color: #636363;\r\n margin-top: 0;\r\n margin-bottom: 0;\r\n cursor: pointer;\r\n -webkit-box-sizing: content-box;\r\n box-sizing: content-box;\r\n -webkit-touch-callout: none;\r\n user-select: none;\r\n -moz-user-select: none;\r\n -webkit-user-select: none;\r\n -ms-user-select: none;\r\n -webkit-tap-highlight-color: rgba(0,0,0,0);\r\n}\r\n.AnnotationControlButton-inner, .AnnotationControlButton-outer {\r\n -webkit-box-sizing: content-box;\r\n box-sizing: content-box;\r\n display: -webkit-box;\r\n display: -ms-flexbox;\r\n display: flex;\r\n}\r\n\r\n.AnnotationControlButton-inner {\r\n margin: 0;\r\n height: 44px;\r\n width: 48px;\r\n -webkit-box-pack: center;\r\n -ms-flex-pack: center;\r\n justify-content: center;\r\n -webkit-box-align: center;\r\n -ms-flex-align: center;\r\n align-items: center;\r\n}\r\n\r\n.AnnotationControlButton-inner {\r\n margin: 0;\r\n height: 44px;\r\n width: 48px;\r\n -webkit-box-pack: center;\r\n -ms-flex-pack: center;\r\n justify-content: center;\r\n -webkit-box-align: center;\r\n -ms-flex-align: center;\r\n align-items: center;\r\n}\r\n.AnnotationControlButton-outer {\r\n width: 44px;\r\n margin: 1px;\r\n border: 1px solid #636363;\r\n}\r\n\r\n.ViewerControls--current-page {\r\n -moz-appearance: textfield;\r\n margin-top: 10px;\r\n border-radius: 3px;\r\n border: 0;\r\n height: 28px;\r\n width: 36px;\r\n background-color: #fff;\r\n color: #636363;\r\n font-size: 14px;\r\n text-align: center;\r\n vertical-align: top;\r\n}\r\n.next-prev{\r\n text-align: center;\r\n -webkit-box-shadow: none;\r\n box-shadow: none;\r\n display: inline-block;\r\n padding: 0px 10px;\r\n vertical-align: middle;\r\n -ms-touch-action: manipulation;\r\n touch-action: manipulation;\r\n cursor: pointer;\r\n border: 0 none;\r\n background: none;\r\n}\r\n</style>\r\n\r\n<style>\r\n.el-radio-button__orig-radio:disabled:checked+.el-radio-button__inner {\r\n background-color: #0A7756;\r\n color: white;\r\n}\r\n</style>\r\n\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PeerReview.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PeerReview.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./PeerReview.vue?vue&type=template&id=9097b336&scoped=true&\"\nimport script from \"./PeerReview.vue?vue&type=script&lang=js&\"\nexport * from \"./PeerReview.vue?vue&type=script&lang=js&\"\nimport style0 from \"./PeerReview.vue?vue&type=style&index=0&id=9097b336&scoped=true&lang=css&\"\nimport style1 from \"./PeerReview.vue?vue&type=style&index=1&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"9097b336\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('div',{staticStyle:{\"height\":\"50px\",\"border-bottom\":\"#cccccc solid 1px\"},attrs:{\"id\":\"filter\"}},[_c('div',{staticClass:\"filter-divider\",staticStyle:{\"width\":\"400px\"}},[_c('el-button',{staticStyle:{\"text-align\":\"center\",\"-webkit-box-shadow\":\"none\",\"box-shadow\":\"none\",\"display\":\"inline-block\",\"padding\":\"0px\",\"padding-right\":\"10px\",\"vertical-align\":\"middle\",\"-ms-touch-action\":\"manipulation\",\"touch-action\":\"manipulation\",\"cursor\":\"pointer\",\"border\":\"0 none\",\"background\":\"none\"},attrs:{\"title\":\"Back to Projects\"},on:{\"click\":function($event){return _vm.backToAssignments()}}},[_c('i',{staticClass:\"fas fa-chevron-left\",staticStyle:{\"font-size\":\"25px\"}})]),_c('el-tooltip',{staticClass:\"item\",attrs:{\"effect\":\"light\",\"content\":\"Project Name\",\"placement\":\"bottom\"}},[_c('el-select',{staticStyle:{\"margin-top\":\"5px\",\"width\":\"90%\"},attrs:{\"id\":\"assignments-selection\",\"value-key\":\"Id\",\"filterable\":\"\",\"placeholder\":\"Project Name\",\"no-match-text\":\"No Matching Data\",\"no-data-text\":\"No data\",\"loading-text\":\"Loading\",\"disabled\":true},on:{\"change\":function($event){return _vm.onAssignmentChange()}},model:{value:(_vm.currentAssignment),callback:function ($$v) {_vm.currentAssignment=$$v},expression:\"currentAssignment\"}},_vm._l((_vm.assignments),function(item){return _c('el-option',{key:item.Id,attrs:{\"label\":item.AssignmentName,\"value\":item}})}),1)],1)],1),_c('div',[_c('div',{staticClass:\"filter-divider\",staticStyle:{\"width\":\"285px\"}},[_c('el-button',{staticStyle:{\"text-align\":\"center\",\"-webkit-box-shadow\":\"none\",\"box-shadow\":\"none\",\"display\":\"inline-block\",\"padding\":\"0px 10px\",\"vertical-align\":\"middle\",\"-ms-touch-action\":\"manipulation\",\"touch-action\":\"manipulation\",\"cursor\":\"pointer\",\"border\":\"0 none\",\"background\":\"none\"},attrs:{\"disabled\":_vm.prevBtnDisable,\"title\":\"Previous Reviewer\"},on:{\"click\":_vm.previousReviewer}},[_c('i',{staticClass:\"fas fa-arrow-left\",staticStyle:{\"font-size\":\"25px\"}})]),_c('el-tooltip',{staticClass:\"item\",attrs:{\"effect\":\"light\",\"content\":\"Select a reviewer to view feedback\",\"placement\":\"bottom\"}},[_c('el-select',{staticStyle:{\"margin-top\":\"5px\",\"width\":\"200px\"},attrs:{\"id\":\"reviewers-selection\",\"value-key\":\"UserName\",\"filterable\":\"\",\"placeholder\":\"Select Reviewer\"},on:{\"change\":function($event){return _vm.onReviewerChange()}},model:{value:(_vm.currentReviewer),callback:function ($$v) {_vm.currentReviewer=$$v},expression:\"currentReviewer\"}},_vm._l((_vm.reviewers),function(item){return _c('el-option',{key:item.UserName,attrs:{\"label\":item.LastName + ', ' + item.FirstName,\"value\":item}})}),1)],1),_c('el-button',{staticStyle:{\"text-align\":\"center\",\"-webkit-box-shadow\":\"none\",\"box-shadow\":\"none\",\"display\":\"inline-block\",\"padding\":\"0px 10px\",\"vertical-align\":\"middle\",\"-ms-touch-action\":\"manipulation\",\"touch-action\":\"manipulation\",\"cursor\":\"pointer\",\"border\":\"0 none\",\"background\":\"none\"},attrs:{\"disabled\":_vm.nextBtnDisable,\"title\":\"Next Reviewer\"},on:{\"click\":_vm.nextReviewer}},[_c('i',{staticClass:\"fas fa-arrow-right\",staticStyle:{\"font-size\":\"25px\"}})])],1),_c('div',{staticStyle:{\"width\":\"350px\",\"float\":\"left\"}},[_c('el-tooltip',{staticClass:\"item\",attrs:{\"effect\":\"light\",\"content\":\"Feedback to view\",\"placement\":\"bottom\"}},[_c('el-select',{staticStyle:{\"margin-top\":\"5px\",\"margin-left\":\"10px\",\"margin-right\":\"10px\",\"width\":\"200px\"},attrs:{\"id\":\"feedbacks-selection\",\"value-key\":\"DocId\",\"filterable\":\"\",\"placeholder\":\"Select Feedback\",\"no-match-text\":\"No Matching Data\",\"no-data-text\":\"No data\",\"loading-text\":\"Loading\"},on:{\"change\":function($event){return _vm.onFeedbackChange()}},model:{value:(_vm.currentFeedback),callback:function ($$v) {_vm.currentFeedback=$$v},expression:\"currentFeedback\"}},_vm._l((_vm.feedbacks),function(item){return _c('el-option',{key:item.DocId,attrs:{\"label\":_vm._f(\"formatDate\")(item.UploadedDate),\"value\":item}})}),1)],1)],1)])]),_c('div',{class:_vm.fullWidth,attrs:{\"id\":\"full_width_container\"}},[_c('rs-panes',{attrs:{\"split-to\":\"columns\",\"allow-resize\":true,\"units\":\"percents\",\"size\":70,\"min-size\":0,\"resizer-thickness\":6}},[_c('div',{staticStyle:{\"height\":\"100%\"},attrs:{\"slot\":\"firstPane\"},slot:\"firstPane\"},[_c('div',{staticClass:\"full_height\",attrs:{\"id\":\"left_side\"}},[_c('div',{attrs:{\"id\":\"left_side_inner\"}},[_c('div',{attrs:{\"id\":\"submissions_container\"}},[_c('nav',{staticClass:\"ViewerControls ViewerControls--with-annotations\"},[_c('div',{staticClass:\"ViewerControls-primary\"},[_c('div',{staticClass:\"ViewerControls--download\"},[_c('div',{staticStyle:{\"min-width\":\"50px\",\"text-align\":\"center\"}},[_c('div',[_c('button',{staticClass:\"download-button--button\",attrs:{\"title\":\"Download annotated PDF\",\"aria-label\":\"Download annotated PDF\"},on:{\"click\":function($event){return _vm.downloadPdf()}}},[_c('i',{staticClass:\"fas fa-file-download\",staticStyle:{\"font-size\":\"22px\"}})])])])]),_c('div',{staticClass:\"ViewerControls--title\"}),_c('div',{staticClass:\"ViewerControls--page-controls\"},[_c('span',{staticClass:\"ViewerControls--page-number\",staticStyle:{\"display\":\"flex\",\"align-items\":\"center\"}},[_vm._v(\"\\n Page\\n \"),_c('div',{staticStyle:{\"padding-left\":\"10px\",\"padding-right\":\"10px\"}},[_c('el-input-number',{attrs:{\"min\":1,\"max\":_vm.totalPageNumber,\"size\":\"small\",\"label\":\"Page\"},on:{\"change\":_vm.changePage},model:{value:(_vm.pageNum),callback:function ($$v) {_vm.pageNum=$$v},expression:\"pageNum\"}})],1),_vm._v(\"\\n of \"+_vm._s(_vm.totalPageNumber)+\"\\n \")]),_c('svg',{staticStyle:{\"margin-left\":\"12px\",\"margin-right\":\"0px\",\"width\":\"2px\",\"height\":\"26px\",\"color\":\"rgb(171, 179, 186)\"},attrs:{\"viewBox\":\"0 0 2 26\"}},[_c('line',{attrs:{\"stroke\":\"currentColor\",\"stroke-dasharray\":\"2, 1\",\"stroke-width\":\"1\",\"x1\":\"1\",\"y1\":\"0\",\"x2\":\"1\",\"y2\":\"26\"}})])]),_c('nav',{staticClass:\"DocumentControls\"},[_c('div',{staticStyle:{\"display\":\"inline-flex\",\"align-items\":\"center\",\"user-select\":\"none\"}},[_c('button',{staticClass:\"AnnotationControlButton\",attrs:{\"aria-label\":\"Zoom Out\",\"title\":\"Zoom Out\",\"aria-disabled\":\"false\"},on:{\"click\":_vm.zoomOut}},[_c('i',{staticClass:\"fas fa-minus\",staticStyle:{\"font-size\":\"20px\"}})]),_c('span',{staticStyle:{\"text-transform\":\"uppercase\",\"font-size\":\"0.75rem\",\"color\":\"rgb(238, 238, 239)\",\"margin-left\":\"4px\",\"margin-right\":\"4px\"},attrs:{\"aria-hidden\":\"true\"}},[_vm._v(\"\\n Zoom\\n \")]),_c('button',{staticClass:\"AnnotationControlButton\",attrs:{\"aria-label\":\"Zoom In\",\"title\":\"Zoom In\",\"aria-disabled\":\"false\"},on:{\"click\":_vm.zoomIn}},[_c('i',{staticClass:\"fas fa-plus\",staticStyle:{\"font-size\":\"20px\"}})])]),_c('svg',{staticStyle:{\"margin-left\":\"2px\",\"margin-right\":\"4px\",\"width\":\"2px\",\"height\":\"26px\",\"color\":\"rgb(171, 179, 186)\"},attrs:{\"viewBox\":\"0 0 2 26\"}},[_c('line',{attrs:{\"stroke\":\"currentColor\",\"stroke-dasharray\":\"2, 1\",\"stroke-width\":\"1\",\"x1\":\"1\",\"y1\":\"0\",\"x2\":\"1\",\"y2\":\"26\"}})]),_c('div',{staticClass:\"ViewerControls--page-controls\"},[_c('button',{staticClass:\"AnnotationControlButton full-screen-button\",attrs:{\"aria-label\":\"Enter Full Screen\",\"title\":\"Zoom Fit Width\"},on:{\"click\":_vm.zoomFitWidth}},[_c('i',{staticClass:\"fas fa-expand\",staticStyle:{\"font-size\":\"20px\"}})]),_c('svg',{staticStyle:{\"margin-left\":\"4px\",\"margin-right\":\"4px\",\"width\":\"2px\",\"height\":\"26px\",\"color\":\"rgb(171, 179, 186)\"},attrs:{\"viewBox\":\"0 0 2 26\"}},[_c('line',{attrs:{\"stroke\":\"currentColor\",\"stroke-dasharray\":\"2, 1\",\"stroke-width\":\"1\",\"x1\":\"1\",\"y1\":\"0\",\"x2\":\"1\",\"y2\":\"26\"}})])])]),_c('nav',{staticClass:\"AnnotationControls\"},[_c('button',{staticClass:\"AnnotationControlButton\",attrs:{\"aria-label\":\"Enter selection mode\",\"title\":\"Selection\"},on:{\"click\":_vm.selectTextPdf}},[_c('div',{staticClass:\"AnnotationControlButton-outer\"},[_c('div',{staticClass:\"AnnotationControlButton-inner\"},[_c('i',{staticClass:\"fas fa-mouse-pointer\",staticStyle:{\"font-size\":\"20px\"}})])])])])])]),_c('div',{staticStyle:{\"display\":\"block\",\"height\":\"calc(100% - 45px)\"},attrs:{\"id\":\"iframe_holder\"}},[_c('div',{staticStyle:{\"resize\":\"vertical\",\"height\":\"100%\"},attrs:{\"id\":\"pdfDocument\"}})])])]),_c('div',{staticStyle:{\"display\":\"none\",\"position\":\"relative\",\"top\":\"-100%\",\"z-index\":\"1\",\"height\":\"100%\",\"width\":\"100%\",\"border\":\"0 none\"},attrs:{\"id\":\"resize_overlay\"}})])]),_c('div',{attrs:{\"slot\":\"secondPane\"},slot:\"secondPane\"},[_c('div',{staticClass:\"full_height\",attrs:{\"id\":\"right_side\"}},[_c('div',{staticClass:\"right_side_content\"},[_c('div',{staticClass:\"full_height\",attrs:{\"id\":\"rightside_inner\"}},[_c('div',{attrs:{\"id\":\"rubric\"}},[_c('div',{staticStyle:{\"height\":\"100%\",\"overflow\":\"auto\"}},_vm._l((_vm.rubricCriteria),function(criteria,criteriaIndex){return _c('el-card',{key:criteria.Id,staticStyle:{\"margin-bottom\":\"5px\",\"margin-left\":\"3px\"}},[_c('div',{staticClass:\"clearfix\",attrs:{\"slot\":\"header\"},slot:\"header\"},[_c('span',{staticStyle:{\"font-size\":\"16px\",\"font-weight\":\"bold\"}},[_vm._v(\"\\n \"+_vm._s(criteria.CriteriaName)+\"\\n \")]),_c('div',{staticStyle:{\"font-size\":\"14px\",\"margin-top\":\"10px\"}},[(criteria.Description && criteria.Description != '')?_c('el-input',{staticClass:\"criteria-description\",staticStyle:{\"border\":\"none\"},attrs:{\"value\":criteria.Description,\"readonly\":true,\"type\":\"textarea\",\"autosize\":true,\"maxlength\":8000}}):_vm._e()],1)]),_c('div',[(_vm.termCode == '201901')?_c('div',[(criteria.UseAsGrade)?_c('el-radio-group',{staticStyle:{\"margin-bottom\":\"10px\",\"min-width\":\"240px\"},attrs:{\"id\":criteria.Id,\"disabled\":true},model:{value:(_vm.criteriaFeedback[criteriaIndex].Mark),callback:function ($$v) {_vm.$set(_vm.criteriaFeedback[criteriaIndex], \"Mark\", $$v)},expression:\"criteriaFeedback[criteriaIndex].Mark\"}},_vm._l((criteria.RubricCriteriaMilestones.slice()),function(milestone,key){return _c('el-tooltip',{key:milestone.Id,staticClass:\"item\",attrs:{\"effect\":\"light\",\"placement\":\"top\"}},[_c('div',{staticStyle:{\"max-width\":\"500px\"},attrs:{\"slot\":\"content\"},slot:\"content\"},[_vm._v(\"\\n \"+_vm._s(milestone.Description)+\"\\n \")]),_c('el-radio-button',{key:milestone.Id,attrs:{\"label\":criteria.RubricCriteriaMilestones.length - key}})],1)}),1):_vm._e()],1):_c('div',[(criteria.UseAsGrade)?_c('el-radio-group',{staticStyle:{\"margin-bottom\":\"10px\",\"min-width\":\"240px\"},attrs:{\"id\":criteria.Id,\"disabled\":true},model:{value:(_vm.criteriaFeedback[criteriaIndex].Mark),callback:function ($$v) {_vm.$set(_vm.criteriaFeedback[criteriaIndex], \"Mark\", $$v)},expression:\"criteriaFeedback[criteriaIndex].Mark\"}},_vm._l((criteria.RubricCriteriaMilestones.slice()),function(milestone){return _c('el-tooltip',{key:milestone.Id,staticClass:\"item\",attrs:{\"effect\":\"light\",\"placement\":\"top\"}},[_c('div',{staticStyle:{\"max-width\":\"500px\"},attrs:{\"slot\":\"content\"},slot:\"content\"},[_vm._v(\"\\n \"+_vm._s(milestone.Description)+\"\\n \")]),_c('el-radio-button',{key:milestone.Id,attrs:{\"label\":milestone.Value}})],1)}),1):_vm._e()],1),_c('div',[(criteria.UseAsGrade || criteria.UseAsTextComment)?_c('el-input',{staticClass:\"criteria-comment\",attrs:{\"type\":\"textarea\",\"placeholder\":\"Enter text here\",\"rows\":3,\"maxlength\":8000,\"readonly\":true},model:{value:(_vm.criteriaFeedback[criteriaIndex].Comment),callback:function ($$v) {_vm.$set(_vm.criteriaFeedback[criteriaIndex], \"Comment\", $$v)},expression:\"criteriaFeedback[criteriaIndex].Comment\"}}):_vm._e()],1)])])}),1)])])])])])])],1)])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n <div>\r\n <div id=\"filter\" style=\"height: 50px; border-bottom: #cccccc solid 1px;\">\r\n <div class=\"filter-divider\" style=\"width: 400px;\">\r\n <el-button\r\n style=\"text-align: center; -webkit-box-shadow: none; box-shadow: none;\r\n display: inline-block; padding: 0px; padding-right: 10px; vertical-align: middle;\r\n -ms-touch-action: manipulation; touch-action: manipulation;\r\n cursor: pointer; border: 0 none; background: none;\"\r\n title=\"Back to Projects\"\r\n @click=\"backToAssignments()\"\r\n >\r\n <i class=\"fas fa-chevron-left\" style=\"font-size: 25px;\" />\r\n </el-button>\r\n <el-tooltip class=\"item\" effect=\"light\" content=\"Project Name\" placement=\"bottom\">\r\n <el-select\r\n id=\"assignments-selection\"\r\n v-model=\"currentAssignment\"\r\n value-key=\"Id\"\r\n filterable\r\n placeholder=\"Project Name\"\r\n no-match-text=\"No Matching Data\"\r\n no-data-text=\"No data\"\r\n loading-text=\"Loading\"\r\n style=\"margin-top: 5px; width: 90%;\"\r\n :disabled=\"true\"\r\n @change=\"onAssignmentChange()\"\r\n >\r\n <el-option\r\n v-for=\"item in assignments\"\r\n :key=\"item.Id\"\r\n :label=\"item.AssignmentName\"\r\n :value=\"item\"\r\n />\r\n </el-select>\r\n </el-tooltip>\r\n </div>\r\n\r\n <!-- Reviewer Selection -->\r\n <div>\r\n <div class=\"filter-divider\" style=\"width: 285px;\">\r\n <el-button\r\n style=\"text-align: center; -webkit-box-shadow: none; box-shadow: none;\r\n display: inline-block; padding: 0px 10px; vertical-align: middle;\r\n -ms-touch-action: manipulation; touch-action: manipulation;\r\n cursor: pointer; border: 0 none; background: none;\"\r\n :disabled=\"prevBtnDisable\"\r\n title=\"Previous Reviewer\"\r\n @click=\"previousReviewer\"\r\n >\r\n <i class=\"fas fa-arrow-left\" style=\"font-size: 25px;\" />\r\n </el-button>\r\n\r\n <el-tooltip class=\"item\" effect=\"light\" content=\"Select a reviewer to view feedback\" placement=\"bottom\">\r\n <el-select\r\n id=\"reviewers-selection\"\r\n v-model=\"currentReviewer\"\r\n value-key=\"UserName\"\r\n filterable\r\n placeholder=\"Select Reviewer\"\r\n style=\"margin-top: 5px; width: 200px;\"\r\n @change=\"onReviewerChange()\"\r\n >\r\n <el-option\r\n v-for=\"item in reviewers\"\r\n :key=\"item.UserName\"\r\n :label=\"item.LastName + ', ' + item.FirstName\"\r\n :value=\"item\"\r\n />\r\n </el-select>\r\n </el-tooltip>\r\n\r\n <el-button\r\n style=\"text-align: center; -webkit-box-shadow: none; box-shadow: none;\r\n display: inline-block; padding: 0px 10px; vertical-align: middle;\r\n -ms-touch-action: manipulation; touch-action: manipulation;\r\n cursor: pointer; border: 0 none; background: none;\"\r\n :disabled=\"nextBtnDisable\"\r\n title=\"Next Reviewer\"\r\n @click=\"nextReviewer\"\r\n >\r\n <i style=\"font-size: 25px;\" class=\"fas fa-arrow-right\" />\r\n </el-button>\r\n </div>\r\n\r\n <div style=\"width: 350px; float:left;\">\r\n <el-tooltip class=\"item\" effect=\"light\" content=\"Feedback to view\" placement=\"bottom\">\r\n <el-select\r\n id=\"feedbacks-selection\"\r\n v-model=\"currentFeedback\"\r\n value-key=\"DocId\"\r\n filterable\r\n placeholder=\"Select Feedback\"\r\n no-match-text=\"No Matching Data\"\r\n no-data-text=\"No data\"\r\n loading-text=\"Loading\"\r\n style=\"margin-top: 5px; margin-left: 10px; margin-right: 10px; width: 200px;\"\r\n @change=\"onFeedbackChange()\"\r\n >\r\n <el-option\r\n v-for=\"item in feedbacks\"\r\n :key=\"item.DocId\"\r\n :label=\"item.UploadedDate | formatDate\"\r\n :value=\"item\"\r\n />\r\n </el-select>\r\n </el-tooltip>\r\n </div>\r\n </div>\r\n </div>\r\n <div id=\"full_width_container\" :class=\"fullWidth\">\r\n <rs-panes split-to=\"columns\" :allow-resize=\"true\" units=\"percents\" :size=\"70\" :min-size=\"0\" :resizer-thickness=\"6\">\r\n <div slot=\"firstPane\" style=\"height: 100%;\">\r\n <div id=\"left_side\" class=\"full_height\">\r\n <div id=\"left_side_inner\">\r\n <div id=\"submissions_container\">\r\n <nav class=\"ViewerControls ViewerControls--with-annotations\">\r\n <div class=\"ViewerControls-primary\">\r\n <div class=\"ViewerControls--download\">\r\n <div style=\"min-width: 50px; text-align: center;\">\r\n <div>\r\n <button class=\"download-button--button\" title=\"Download annotated PDF\" aria-label=\"Download annotated PDF\" @click=\"downloadPdf()\">\r\n <i style=\"font-size: 22px;\" class=\"fas fa-file-download\" />\r\n </button>\r\n </div>\r\n </div>\r\n </div><div class=\"ViewerControls--title\" /><div class=\"ViewerControls--page-controls\">\r\n <span class=\"ViewerControls--page-number\" style=\"display: flex; align-items: center;\">\r\n Page\r\n <div style=\"padding-left: 10px; padding-right: 10px;\">\r\n <el-input-number v-model=\"pageNum\" :min=\"1\" :max=\"totalPageNumber\" size=\"small\" label=\"Page\" @change=\"changePage\" />\r\n </div>\r\n of {{ totalPageNumber }}\r\n </span>\r\n <svg viewBox=\"0 0 2 26\" style=\"margin-left: 12px; margin-right: 0px; width: 2px; height: 26px; color: rgb(171, 179, 186);\">\r\n <line stroke=\"currentColor\" stroke-dasharray=\"2, 1\" stroke-width=\"1\" x1=\"1\" y1=\"0\" x2=\"1\" y2=\"26\" />\r\n </svg>\r\n </div>\r\n <nav class=\"DocumentControls\">\r\n <div style=\"display: inline-flex; align-items: center; user-select: none;\">\r\n <button class=\"AnnotationControlButton\" aria-label=\"Zoom Out\" title=\"Zoom Out\" aria-disabled=\"false\" @click=\"zoomOut\">\r\n <i style=\"font-size: 20px;\" class=\"fas fa-minus\" />\r\n </button>\r\n <span aria-hidden=\"true\" style=\"text-transform: uppercase; font-size: 0.75rem; color: rgb(238, 238, 239); margin-left: 4px; margin-right: 4px;\">\r\n Zoom\r\n </span>\r\n <button class=\"AnnotationControlButton\" aria-label=\"Zoom In\" title=\"Zoom In\" aria-disabled=\"false\" @click=\"zoomIn\">\r\n <i style=\"font-size: 20px;\" class=\"fas fa-plus\" />\r\n </button>\r\n </div>\r\n <svg viewBox=\"0 0 2 26\" style=\"margin-left: 2px; margin-right: 4px; width: 2px; height: 26px; color: rgb(171, 179, 186);\">\r\n <line stroke=\"currentColor\" stroke-dasharray=\"2, 1\" stroke-width=\"1\" x1=\"1\" y1=\"0\" x2=\"1\" y2=\"26\" />\r\n </svg>\r\n <div class=\"ViewerControls--page-controls\">\r\n <button aria-label=\"Enter Full Screen\" class=\"AnnotationControlButton full-screen-button\" title=\"Zoom Fit Width\" @click=\"zoomFitWidth\">\r\n <i style=\"font-size: 20px;\" class=\"fas fa-expand\" />\r\n </button>\r\n <svg viewBox=\"0 0 2 26\" style=\"margin-left: 4px; margin-right: 4px; width: 2px; height: 26px; color: rgb(171, 179, 186);\">\r\n <line stroke=\"currentColor\" stroke-dasharray=\"2, 1\" stroke-width=\"1\" x1=\"1\" y1=\"0\" x2=\"1\" y2=\"26\" />\r\n </svg>\r\n </div>\r\n </nav>\r\n <nav class=\"AnnotationControls\">\r\n <button aria-label=\"Enter selection mode\" class=\"AnnotationControlButton\" title=\"Selection\" @click=\"selectTextPdf\">\r\n <div class=\"AnnotationControlButton-outer\">\r\n <div class=\"AnnotationControlButton-inner\">\r\n <i style=\"font-size: 20px;\" class=\"fas fa-mouse-pointer\" />\r\n </div>\r\n </div>\r\n </button>\r\n </nav>\r\n </div>\r\n </nav>\r\n\r\n <div id=\"iframe_holder\" style=\"display: block; height: calc(100% - 45px);\">\r\n <div id=\"pdfDocument\" style=\"resize: vertical; height: 100%;\" />\r\n </div>\r\n </div>\r\n </div>\r\n <div id=\"resize_overlay\" style=\"display: none; position: relative;top: -100%; z-index: 1; height: 100%; width: 100%; border: 0 none;\" />\r\n </div>\r\n </div>\r\n\r\n <div slot=\"secondPane\">\r\n <div id=\"right_side\" class=\"full_height\">\r\n <!-- <div id=\"width_resizer\" class=\"full_height ui-draggable\" /> -->\r\n <div class=\"right_side_content\">\r\n <div id=\"rightside_inner\" class=\"full_height\">\r\n <div id=\"rubric\">\r\n <div style=\"height: 100%; overflow: auto;\">\r\n <el-card v-for=\"(criteria, criteriaIndex) in rubricCriteria\" :key=\"criteria.Id\" style=\"margin-bottom: 5px; margin-left: 3px;\">\r\n <div slot=\"header\" class=\"clearfix\">\r\n <span style=\"font-size: 16px; font-weight: bold;\">\r\n {{ criteria.CriteriaName }}\r\n </span>\r\n <div style=\"font-size: 14px; margin-top: 10px;\">\r\n <el-input\r\n v-if=\"criteria.Description && criteria.Description != ''\"\r\n :value=\"criteria.Description\"\r\n :readonly=\"true\"\r\n type=\"textarea\"\r\n :autosize=\"true\"\r\n :maxlength=\"8000\"\r\n class=\"criteria-description\"\r\n style=\"border: none;\"\r\n />\r\n </div>\r\n </div>\r\n <div>\r\n <div v-if=\"termCode == '201901'\">\r\n <el-radio-group\r\n v-if=\"criteria.UseAsGrade\"\r\n :id=\"criteria.Id\"\r\n v-model=\"criteriaFeedback[criteriaIndex].Mark\"\r\n style=\"margin-bottom: 10px; min-width: 240px;\"\r\n :disabled=\"true\"\r\n >\r\n <el-tooltip\r\n v-for=\"(milestone, key) in criteria.RubricCriteriaMilestones.slice()\"\r\n :key=\"milestone.Id\"\r\n class=\"item\"\r\n effect=\"light\"\r\n placement=\"top\"\r\n >\r\n <div slot=\"content\" style=\"max-width: 500px;\">\r\n {{ milestone.Description }}\r\n </div>\r\n <el-radio-button\r\n :key=\"milestone.Id\"\r\n :label=\"criteria.RubricCriteriaMilestones.length - key\"\r\n />\r\n </el-tooltip>\r\n </el-radio-group>\r\n </div>\r\n <div v-else>\r\n <el-radio-group\r\n v-if=\"criteria.UseAsGrade\"\r\n :id=\"criteria.Id\"\r\n v-model=\"criteriaFeedback[criteriaIndex].Mark\"\r\n style=\"margin-bottom: 10px; min-width: 240px;\"\r\n :disabled=\"true\"\r\n >\r\n <el-tooltip\r\n v-for=\"milestone in criteria.RubricCriteriaMilestones.slice()\"\r\n :key=\"milestone.Id\"\r\n class=\"item\"\r\n effect=\"light\"\r\n placement=\"top\"\r\n >\r\n <div slot=\"content\" style=\"max-width: 500px;\">\r\n {{ milestone.Description }}\r\n </div>\r\n <el-radio-button\r\n :key=\"milestone.Id\"\r\n :label=\"milestone.Value\"\r\n />\r\n </el-tooltip>\r\n </el-radio-group>\r\n </div>\r\n <div>\r\n <el-input\r\n v-if=\"criteria.UseAsGrade || criteria.UseAsTextComment\"\r\n v-model=\"criteriaFeedback[criteriaIndex].Comment\"\r\n type=\"textarea\"\r\n placeholder=\"Enter text here\"\r\n :rows=\"3\"\r\n :maxlength=\"8000\"\r\n class=\"criteria-comment\"\r\n :readonly=\"true\"\r\n />\r\n </div>\r\n </div>\r\n </el-card>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </rs-panes>\r\n </div>\r\n </div>\r\n</template>\r\n\r\n<script>\r\nimport * as pdfService from '@/services/pdf.service'\r\nimport * as assignmentService from '@/services/assignment.service'\r\nimport * as taskService from '@/services/task.service'\r\nimport * as reviewService from '@/services/review.service'\r\nimport * as rubricService from '@/services/rubric.service'\r\nimport * as teamFormationService from '@/services/team_formation.service'\r\nimport * as submissionService from '@/services/submission.service'\r\nimport { Notification } from 'element-ui'\r\nimport * as dateUtils from '@/utils/date-utils'\r\nimport ResSplitPane from 'vue-resize-split-pane'\r\nimport * as urlUtils from '@/utils/url-utils'\r\n// Handle UI and logics for the View Feedback page.\r\nexport default {\r\n\tcomponents: {\r\n\t\t'rs-panes': ResSplitPane\r\n\t},\r\n\tfilters: {\r\n\t\tformatDate(dateStr) {\r\n\t\t\treturn dateUtils.formatDate(dateStr)\r\n\t\t}\r\n\t},\r\n\tdata() {\r\n\t\treturn {\r\n\t\t\ttermCode: this.$store.state.enrollment.termCode,\r\n\t\t\torgCode: this.$store.state.enrollment.orgCode,\r\n\t\t\tclassCode: this.$store.state.enrollment.currentCourse.ClassCode,\r\n\t\t\tassignmentId: this.$route.params.assignmentId,\r\n\t\t\ttaskId: null,\r\n\t\t\trevieweeId: null,\r\n\t\t\treviewerId: null,\r\n\t\t\treviewerRole: 'Student',\r\n\t\t\tassignments: [],\r\n\t\t\tdocId: null,\r\n\t\t\tcurrentAssignment: null,\r\n\t\t\tcurrentTask: null,\r\n\t\t\tstudents: null,\r\n\t\t\tcurrentStudent: null,\r\n\t\t\treviewers: [],\r\n\t\t\tcurrentReviewer: null,\r\n\t\t\tonTime: false,\r\n\t\t\tuploadedDate: null,\r\n\t\t\tdueDate: null,\r\n\t\t\tsubmissions: [],\r\n\t\t\tcurrentSubmission: null,\r\n\t\t\trubricCriteria: null,\r\n\t\t\tcriteriaFeedback: null,\r\n\t\t\treview: null,\r\n\t\t\tmyapi: null,\r\n\t\t\tpageNum: 1,\r\n\t\t\ttotalPageNumber: null,\r\n\t\t\tzoomValue: 140,\r\n\t\t\tprevBtnDisable: false,\r\n\t\t\tnextBtnDisable: false,\r\n\t\t\tprevGroupBtnDisable: false,\r\n\t\t\tnextGroupBtnDisable: false,\r\n\t\t\tteams: null,\r\n\t\t\tisGroupProject: false,\r\n\t\t\tgroups: [],\r\n\t\t\tcurrentGroup: null,\r\n\t\t\tgroupId: null,\r\n\t\t\treviewType: null,\r\n\t\t\tfeedbacks: [],\r\n\t\t\tcurrentFeedback: null,\r\n\t\t\ttaskType: null\r\n \t}\r\n\t},\r\n\tcomputed: {\r\n\t\tfullWidth() {\r\n\t\t\tconst mainNav = document.querySelector('#main-nav')\r\n\t\t\tif (mainNav && !mainNav.classList.contains('full-width')) {\r\n\t\t\t\treturn ''\r\n\t\t\t} else { return 'full-width' }\r\n\t\t}\r\n\t},\r\n\tmounted() {\r\n\t\tconst resizer = document.querySelector('.columnsres')\r\n\t\tresizer.addEventListener('mousedown', function(e) {\r\n\t\t\tdocument.querySelector('#resize_overlay').style.display = 'block'\r\n\t\t})\r\n\t\tdocument.addEventListener('mouseup', function(e) {\r\n\t\t\tdocument.querySelector('#resize_overlay').style.display = 'none'\r\n\t\t})\r\n\t},\r\n\tcreated() {\r\n\t\tthis.revieweeId = this.$store.state.auth.user.UserName\r\n\t\tthis.taskType = this.getUrlParameter('task')\r\n\t\t// Set up assignments selection\r\n\t\tthis.setUpAssignmentSelection()\r\n\t},\r\n\tmethods: {\r\n\t\tgetUrlParameter(sParam) {\r\n\t\t\tconst sPageURL = decodeURIComponent(window.location.search.substring(1))\r\n\t\t\tconst sURLVariables = sPageURL.split('&')\r\n\t\t\tlet sParameterName\r\n\t\t\tlet i\r\n\t\t\tfor (i = 0; i < sURLVariables.length; i++) {\r\n\t\t\t\tsParameterName = sURLVariables[i].split('=')\r\n\r\n\t\t\t\tif (sParameterName[0] === sParam) {\r\n\t\t\t\t\treturn sParameterName[1] === undefined ? true : sParameterName[1]\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Format a date value.\r\n\t\t// @arg The date value to be formatted.\r\n\t\tformatDate(dateStr) {\r\n\t\t\treturn dateUtils.formatDate(dateStr)\r\n\t\t},\r\n\t\t// Setup project selection drop down.\r\n\t\tasync setUpAssignmentSelection() {\r\n\t\t\t// This gets run on create.\r\n\t\t\t// Get all assignments that have uploaded papers - BUT WE ARE NOT!?! We are getting only THIS assignment? Not sure Dat logic here yet.\r\n\t\t\tconst assignment = await assignmentService.getAssignmentById(this.assignmentId)\r\n\t\t\tif (assignment) {\r\n\t\t\t\tthis.assignments.push(assignment)\r\n\t\t\t\tthis.currentAssignment = assignment\r\n\t\t\t\tconst hasTeam = await this.getTeam()\r\n\t\t\t\tif ((this.currentAssignment.IsGroupAssignment) && (!hasTeam)) {\r\n\t\t\t\t\tNotification.info({\r\n\t\t\t\t\t\tduration: 6000,\r\n\t\t\t\t\t\ttitle: 'Info',\r\n\t\t\t\t\t\tmessage: 'You have not been assigned to a Team for this Group Project'\r\n\t\t\t\t\t})\r\n\t\t\t\t\tdocument.getElementById('full_width_container').style.display = 'none'\r\n\t\t\t\t} else {\r\n\t\t\t\t\tconst submissions = await submissionService.getStudentUpload(this.termCode, this.orgCode,\r\n\t\t\t\t\t\tthis.classCode, this.revieweeId, this.assignmentId)\r\n\t\t\t\t\tif (Array.isArray(submissions) && !submissions.length) {\r\n\t\t\t\t\t\tNotification.warning({\r\n\t\t\t\t\t\t\tduration: 6000,\r\n\t\t\t\t\t\t\ttitle: 'Warning',\r\n\t\t\t\t\t\t\tmessage: 'You have not submitted a Draft for this Project'\r\n\t\t\t\t\t\t})\r\n\t\t\t\t\t\tdocument.getElementById('full_width_container').style.display = 'none'\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tconst reviewerSetupComplete = await this.setUpReviewerSelection()\r\n\t\t\t\t\t\tif (reviewerSetupComplete) { this.displayDocumentAndReview() }\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tNotification.error({\r\n\t\t\t\t\tduration: 6000,\r\n\t\t\t\t\ttitle: 'Error',\r\n\t\t\t\t\tmessage: 'No Assignment found!'\r\n\t\t\t\t})\r\n\t\t\t\tdocument.getElementById('full_width_container').style.display = 'none'\r\n\t\t\t}\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Get group project team assignment.\r\n\t\tasync getTeam() {\r\n\t\t\tconst thisTeam = await teamFormationService.getgroupProjectTeamAssignment(this.termCode, this.orgCode,\r\n\t\t\t\tthis.classCode, this.revieweeId, this.assignmentId)\r\n\t\t\tif (thisTeam) {\r\n\t\t\t\tthis.revieweeId = thisTeam.TeamId\r\n\t\t\t\treturn true\r\n\t\t\t} else { return false }\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Setup reviewer selection drop down.\r\n\t\tasync setUpReviewerSelection() {\r\n\t\t\t// Get all students who have uploaded paper for this assignment\r\n\t\t\tif (this.taskType == undefined) {\r\n\t\t\t\tthis.taskType = null\r\n\t\t\t}\r\n\t\t\tconst reviewers = await reviewService.getReviewers(this.termCode, this.orgCode, this.classCode,\r\n\t\t\t\tthis.revieweeId, this.assignmentId, this.taskType)\r\n\t\t\tif (reviewers.length > 0) {\r\n\t\t\t\tthis.reviewers = reviewers\r\n\t\t\t\tthis.currentReviewer = reviewers[0]\r\n\t\t\t\tthis.reviewerId = this.currentReviewer.UserName.split(';')[1]\r\n\t\t\t\t// Set up previous and next buttons\r\n\t\t\t\tconst thisIndex = this.reviewers.findIndex(x => x.UserName == this.currentReviewer.UserName)\r\n\t\t\t\tif (thisIndex == 0) {\r\n\t\t\t\t\tthis.prevBtnDisable = true\r\n\t\t\t\t}\r\n\t\t\t\tif (thisIndex == this.reviewers.length - 1) {\r\n\t\t\t\t\tthis.nextBtnDisable = true\r\n\t\t\t\t}\r\n\t\t\t\treturn true\r\n\t\t\t} else {\r\n\t\t\t\tdocument.getElementById('full_width_container').style.display = 'none'\r\n\t\t\t\tNotification.info({\r\n\t\t\t\t\tduration: 6000,\r\n\t\t\t\t\ttitle: 'Info',\r\n\t\t\t\t\tmessage: 'No feedback found!'\r\n\t\t\t\t})\r\n\t\t\t\treturn false\r\n\t\t\t}\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Display document and review.\r\n\t\tasync displayDocumentAndReview() {\r\n\t\t\tlet latestReview\r\n\t\t\tlet docId\r\n\r\n\t\t\t// const submissions = await submissionService.getStudentUpload(this.termCode, this.orgCode,\r\n\t\t\t// \tthis.classCode, this.revieweeId, this.assignmentId)\r\n\t\t\t// if (submissions.length > 0) {\r\n\t\t\t// \tconsole.log(submissions)\r\n\t\t\t// }\r\n\t\t\tlet reviews = await reviewService.getReview(this.termCode, this.orgCode, this.classCode,\r\n\t\t\t\tthis.assignmentId, this.reviewerId, this.revieweeId, 'all', 'all')\r\n\t\t\tif (reviews.length > 0) {\r\n\t\t\t\treviews = reviews.filter(r => r.EmailSent == 'Y')\r\n\t\t\t\tthis.feedbacks = reviews\r\n\t\t\t\tlatestReview = reviews[0]\r\n\t\t\t\tthis.currentFeedback = latestReview\r\n\t\t\t\tthis.reviewerRole = latestReview.GraderRole\r\n\t\t\t\tthis.taskId = latestReview.TaskId\r\n\t\t\t\tconsole.log(this.taskId)\r\n\t\t\t\tdocId = latestReview.DocId\r\n\t\t\t\tawait this.displayDocument(docId)\r\n\t\t\t\t// Display the latest review\r\n\t\t\t\tawait this.displayReview(latestReview)\r\n\r\n\t\t\t\tdocument.getElementById('full_width_container').style.display = 'block'\r\n\t\t\t} else {\r\n\t\t\t\tNotification.error({\r\n\t\t\t\t\tduration: 6000,\r\n\t\t\t\t\ttitle: 'Error',\r\n\t\t\t\t\tmessage: 'No review found!'\r\n\t\t\t\t})\r\n\t\t\t}\r\n\t\t},\r\n\t\tasync onFeedbackChange() {\r\n\t\t\tthis.pageNum = 1\r\n\t\t\tthis.rubricCriteria = null\r\n\t\t\t// Display the doc based on latest submission or latest review\r\n\t\t\tawait this.displayDocument(this.currentFeedback.DocId)\r\n\r\n\t\t\t// Display the latest review\r\n\t\t\tawait this.displayReview(this.currentFeedback)\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Display document by document id.\r\n\t\t// @arg The document id.\r\n\t\tasync displayDocument(docId) {\r\n\t\t\tif (docId) {\r\n\t\t\t\tthis.docId = docId\r\n\t\t\t\tawait pdfService.getPdf(docId)\r\n\t\t\t\t\t.then(pdf => {\r\n\t\t\t\t\t\t// Display the pdf\r\n\t\t\t\t\t\tconst pdfDocument = document.querySelector('#pdfDocument')\r\n\t\t\t\t\t\tpdfDocument.innerHTML = pdf\r\n\t\t\t\t\t\t// Setup the doc after being loaded\r\n\t\t\t\t\t\tconst that = this\r\n\t\t\t\t\t\tdocument.getElementById('PdfWebControl').onload = function() {\r\n\t\t\t\t\t\t\tthat.PdfAttachListeners()\r\n\t\t\t\t\t\t\tsetTimeout(function() {\r\n\t\t\t\t\t\t\t\tthat.totalPageNumber = that.myapi.getPageCount()\r\n\t\t\t\t\t\t\t}, 500)\r\n\r\n\t\t\t\t\t\t\tthat.autoSavePdf()\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}).catch((error) => {\r\n\t\t\t\t\t\tconsole.log(error)\r\n\t\t\t\t\t})\r\n\t\t\t}\r\n\t\t},\r\n\t\tautoSavePdf() {\r\n\t\t\tconst that = this\r\n\t\t\twindow.setInterval(function() {\r\n\t\t\t\tconst iframe = document.getElementById('PdfWebControl')\r\n\t\t\t\tif (iframe) {\r\n\t\t\t\t\tconst innerDoc = iframe.contentDocument || iframe.contentWindow.document\r\n\t\t\t\t\tconst page = that.myapi.getPageViewed()\r\n\t\t\t\t\tconst objCount = page.getObjectCount()\r\n\r\n\t\t\t\t\tif (objCount == 0) {\r\n\t\t\t\t\t\tif (that.myapi.getHasUnsavedChanges()) {\r\n\t\t\t\t\t\t\tthat.myapi.save()\r\n\t\t\t\t\t\t\treturn\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tlet found\r\n\t\t\t\t\tconst pdfe_msgt = innerDoc.getElementById('pdfe_msgt')\r\n\t\t\t\t\tfor (let i = 0; i < objCount; i++) {\r\n\t\t\t\t\t\t// get this object\r\n\t\t\t\t\t\tconst aTags = innerDoc.getElementsByTagName('div')\r\n\t\t\t\t\t\tfor (let i = 0; i < aTags.length; i++) {\r\n\t\t\t\t\t\t\tif (aTags[i].innerHTML == 'DEL') {\r\n\t\t\t\t\t\t\t\tfound = aTags[i]\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif ((typeof (found) === 'undefined' || found === null) || (typeof (pdfe_msgt) === 'undefined' || pdfe_msgt === null)) {\r\n\t\t\t\t\t\treturn\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif (pdfe_msgt.style.visibility == 'visible') {\r\n\t\t\t\t\t\treturn\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tif (found.style.visibility == 'visible') {\r\n\t\t\t\t\t\t\treturn\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tconst activeEl = innerDoc.activeElement\r\n\t\t\t\t\tif (activeEl) {\r\n\t\t\t\t\t\tconst isEditting = activeEl.getAttribute('contenteditable')\r\n\t\t\t\t\t\tif (isEditting) { return }\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif (that.myapi.getHasUnsavedChanges()) {\r\n\t\t\t\t\t\tthat.myapi.save()\r\n\t\t\t\t\t\tif (that.review == null) { that.saveReview() }\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}, 120 * 1000)\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Display the review.\r\n\t\t// @arg The review to be displayed.\r\n\t\tasync displayReview(review) {\r\n\t\t\tthis.review = review\r\n\t\t\t// get task and rubric for the task\r\n\t\t\tconst task = await taskService.getTaskById(this.taskId)\r\n\t\t\tconsole.log(task)\r\n\t\t\tconst rubricId = task.RubricId\r\n\t\t\t// Get the rubric from current assignment.\r\n\t\t\tawait rubricService.getRubricById(rubricId)\r\n\t\t\t\t.then(rubric => {\r\n\t\t\t\t\tthis.rubricCriteria = rubric.RubricCriterias\r\n\t\t\t\t\tif (review) {\r\n\t\t\t\t\t\tif (review.ReviewData.length == 0) { this.criteriaFeedback = this.getDefaultCriteriaFeedback(rubric.RubricCriterias) } else { this.criteriaFeedback = review.ReviewData }\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tthis.criteriaFeedback = this.getDefaultCriteriaFeedback(rubric.RubricCriterias)\r\n\t\t\t\t\t}\r\n\t\t\t\t}).catch((error) => {\r\n\t\t\t\t\tconsole.log(error)\r\n\t\t\t\t})\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Get a default criteria feedback.\r\n\t\t// @arg The rubic criteria used.\r\n\t\tgetDefaultCriteriaFeedback(criteria) {\r\n\t\t\tconst criteriaFeedbacks = []\r\n\t\t\tfor (let i = 0; i < criteria.length; i++) {\r\n\t\t\t\tconst criteriaFeedback = {\r\n\t\t\t\t\tCriteriaId: criteria[i].Id,\r\n\t\t\t\t\tMark: 999,\r\n\t\t\t\t\tComment: '',\r\n\t\t\t\t\tAudioPath: null,\r\n\t\t\t\t\tLetterGrade: null\r\n\t\t\t\t}\r\n\t\t\t\tcriteriaFeedbacks.push(criteriaFeedback)\r\n\t\t\t}\r\n\t\t\treturn criteriaFeedbacks\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Handles logics when a project is selected.\r\n\t\tasync onAssignmentChange() {\r\n\t\t\tthis.pageNum = 1\r\n\t\t\tthis.review = null\r\n\t\t\tthis.submissions = []\r\n\t\t\tthis.currentSubmission = null\r\n\t\t\t// this.revieweeId = null;\r\n\t\t\tthis.assignmentId = this.currentAssignment.Id\r\n\t\t\tthis.revieweeId = this.$store.state.auth.user.UserName\r\n\t\t\tif (this.currentAssignment.IsGroupAssignment) {\r\n\t\t\t\tconst hasTeam = await this.getTeam()\r\n\t\t\t\tif (hasTeam) {\r\n\t\t\t\t\tconst reviewerSetupComplete = await this.setUpReviewerSelection()\r\n\t\t\t\t\tif (reviewerSetupComplete) { this.displayDocumentAndReview() }\r\n\t\t\t\t} else {\r\n\t\t\t\t\tNotification.info({\r\n\t\t\t\t\t\tduration: 6000,\r\n\t\t\t\t\t\ttitle: 'Info',\r\n\t\t\t\t\t\tmessage: 'You have not been assigned into a team for this group project.'\r\n\t\t\t\t\t})\r\n\t\t\t\t\tdocument.getElementById('full_width_container').style.display = 'none'\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tconst reviewerSetupComplete = await this.setUpReviewerSelection()\r\n\t\t\t\tif (reviewerSetupComplete) { this.displayDocumentAndReview() }\r\n\t\t\t}\r\n\t\t\tthis.$router.push('/view_feedback/' + this.assignmentId + '/' + this.taskId + '?task=' + this.taskType)\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Handles logics when a reviewer is selected.\r\n\t\tonReviewerChange() {\r\n\t\t\tthis.pageNum = 1\r\n\t\t\tthis.reviewerId = this.currentReviewer.UserName.split(';')[1]\r\n\t\t\tconst thisIndex = this.reviewers.findIndex(x => x.UserName == this.currentReviewer.UserName)\r\n\t\t\tif (thisIndex == 0) {\r\n\t\t\t\tthis.prevBtnDisable = true\r\n\t\t\t\tif (this.reviewers.length > 1 && this.nextBtnDisable == true) { this.nextBtnDisable = false }\r\n\t\t\t}\r\n\t\t\tif (thisIndex == this.reviewers.length - 1) {\r\n\t\t\t\tthis.nextBtnDisable = true\r\n\t\t\t\tif (this.reviewers.length > 1 && this.prevBtnDisable == true) { this.prevBtnDisable = false }\r\n\t\t\t}\r\n\t\t\tthis.displayDocumentAndReview()\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Handles logics when the previous reviewer arrow is clicked.\r\n\t\tpreviousReviewer() {\r\n\t\t\tconst thisIndex = this.reviewers.findIndex(x => x.UserName == this.currentReviewer.UserName)\r\n\t\t\tif (thisIndex - 1 == 0) {\r\n\t\t\t\tthis.prevBtnDisable = true\r\n\t\t\t}\r\n\t\t\tif (this.reviewers.length > 1) { this.nextBtnDisable = false }\r\n\t\t\tthis.currentReviewer = this.reviewers[thisIndex - 1]\r\n\t\t\tthis.pageNum = 1\r\n\t\t\tthis.reviewerId = this.currentReviewer.UserName.split(';')[1]\r\n\t\t\tthis.displayDocumentAndReview()\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Handles logics when the next reviewer arrow is clicked.\r\n\t\tnextReviewer() {\r\n\t\t\tconst thisIndex = this.reviewers.findIndex(x => x.UserName == this.currentReviewer.UserName)\r\n\t\t\tif (thisIndex == this.reviewers.length - 2) {\r\n\t\t\t\tthis.nextBtnDisable = true\r\n\t\t\t}\r\n\t\t\tif (this.reviewers.length > 1) { this.prevBtnDisable = false }\r\n\t\t\tthis.currentReviewer = this.reviewers[thisIndex + 1]\r\n\t\t\tthis.pageNum = 1\r\n\t\t\tthis.reviewerId = this.currentReviewer.UserName.split(';')[1]\r\n\t\t\tthis.displayDocumentAndReview()\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Configures Rad PDf for displaying the document.\r\n\t\tPdfAttachListeners() {\r\n\t\t\tconst id = 'PdfWebControl'\r\n\t\t\t// eslint-disable-next-line no-undef\r\n\t\t\tthis.myapi = new PdfWebControlApi(id)\r\n\t\t\tthis.myapi.addEventListener('modeChanged', function(evt) {\r\n\t\t\t\tevt.byLine = true\r\n\t\t\t})\r\n\t\t\tconst that = this\r\n\t\t\tthis.myapi.addEventListener('viewChanged', function(evt) {\r\n\t\t\t\tthat.pageNum = that.myapi.getPageViewed().getPageNumber()\r\n\t\t\t})\r\n\r\n\t\t\tthis.myapi.addEventListener('objectAdded', function(evt) {\r\n\t\t\t\tif (evt.obj.getType() == 154) { // Highlight annotation\r\n\t\t\t\t\tconst props = evt.obj.getProperties()\r\n\t\t\t\t\tconst popup = evt.obj.getPopup()\r\n\r\n\t\t\t\t\tevt.obj.setProperties({\r\n\t\t\t\t\t\t'customData': evt.textSelected\r\n\t\t\t\t\t})\r\n\r\n\t\t\t\t\tpopup.setProperties(\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tauthor: 'RAD PDF',\r\n\t\t\t\t\t\t\tsubject: 'In-text Comment',\r\n\t\t\t\t\t\t\ttop: props['top'] - 60,\r\n\t\t\t\t\t\t\tleft: props['left'] - 5,\r\n\t\t\t\t\t\t\theight: 60\r\n\t\t\t\t\t\t})\r\n\r\n\t\t\t\t\tthat.myapi.setMode(that.myapi.Mode.None)\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (evt.obj.getType() == 100) {\r\n\t\t\t\t\tthat.myapi.setMode(that.myapi.Mode.None)\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (evt.obj.getType() == 101) {\r\n\t\t\t\t\tthat.myapi.setMode(that.myapi.Mode.None)\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (evt.obj.getType() == that.myapi.ObjectType.StrikeoutAnnotation) {\r\n\t\t\t\t\tthat.myapi.setMode(that.myapi.Mode.None)\r\n\t\t\t\t}\r\n\t\t\t\tif (evt.obj.getType() == that.myapi.ObjectType.TextAnnotation) {\r\n\t\t\t\t\tthat.myapi.setMode(that.myapi.Mode.None)\r\n\t\t\t\t}\r\n\t\t\t})\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Handles logics when the page number is changed.\r\n\t\tchangePage() {\r\n\t\t\tthis.myapi.setView({ 'page': this.pageNum })\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Handles logics when the zoom out button is clicked.\r\n\t\tzoomOut() {\r\n\t\t\tif (this.myapi) {\r\n\t\t\t\tif (this.zoomValue > 40) { this.myapi.setView({ 'zoom': this.zoomValue -= 20 }) }\r\n\t\t\t}\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Handles logics when the zoom in button is clicked.\r\n\t\tzoomIn() {\r\n\t\t\tif (this.myapi) {\r\n\t\t\t\tif (this.zoomValue < 200 && this.zoomValue > 20) { this.myapi.setView({ 'zoom': this.zoomValue += 20 }) }\r\n\t\t\t}\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Handles logics when the zoom fit width button is clicked.\r\n\t\tzoomFitWidth() {\r\n\t\t\tif (this.myapi) {\r\n\t\t\t\tthis.zoomValue = 140\r\n\t\t\t\tthis.myapi.setView({ 'zoom': -1 })\r\n\t\t\t}\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Handles logics when the download button is clicked.\r\n\t\tdownloadPdf() {\r\n\t\t\t// const myapi = new PdfWebControlApi('PdfWebControl')\r\n\t\t\tif (this.myapi) {\r\n\t\t\t\tconst downloadUrl = this.myapi.getDownloadUrl()\r\n\t\t\t\tconst url = urlUtils.getBaseURL() + '/' + downloadUrl\r\n\t\t\t\tconst a = document.createElement('a')\r\n\t\t\t\ta.href = url\r\n\t\t\t\ta.download = url.split('/').pop()\r\n\t\t\t\tdocument.body.appendChild(a)\r\n\t\t\t\ta.click()\r\n\t\t\t\tdocument.body.removeChild(a)\r\n\r\n\t\t\t\t// console.log(downloadUrl)\r\n\t\t\t\t// myapi.download()\r\n\t\t\t}\r\n\t\t\treturn false\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Handles logics when the select text button is clicked.\r\n\t\tselectTextPdf() {\r\n\t\t\tif (this.myapi) {\r\n\t\t\t\tthis.myapi.setMode(this.myapi.Mode.SelectText)\r\n\t\t\t}\r\n\t\t\treturn false\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Handles logics when the highlight button is clicked.\r\n\t\thighlightPdf() {\r\n\t\t\tif (this.myapi) {\r\n\t\t\t\tthis.myapi.setMode(this.myapi.Mode.InsertHighlightAnnotation)\r\n\t\t\t}\r\n\t\t\treturn false\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Handles logics when the free text button is clicked.\r\n\t\tfreeTextPdf() {\r\n\t\t\tif (this.myapi) {\r\n\t\t\t\tthis.myapi.setMode(this.myapi.Mode.InsertTextShape)\r\n\t\t\t}\r\n\t\t\treturn false\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Handles logics when the strike out button is clicked.\r\n\t\tstrikeOutPdf() {\r\n\t\t\tif (this.myapi) {\r\n\t\t\t\tthis.myapi.setMode(this.myapi.Mode.InsertStrikeoutAnnotation)\r\n\t\t\t}\r\n\t\t\treturn false\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Handles logics when the free draw button is clicked.\r\n\t\tfreeDrawPdf() {\r\n\t\t\tif (this.myapi) {\r\n\t\t\t\tthis.myapi.setMode(this.myapi.Mode.InsertInkShape)\r\n\t\t\t}\r\n\t\t\treturn false\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Handles logics when the sticky note button is clicked.\r\n\t\tstickyNotePdf() {\r\n\t\t\tif (this.myapi) {\r\n\t\t\t\tthis.myapi.setMode(this.myapi.Mode.InsertTextAnnotation)\r\n\t\t\t}\r\n\t\t\treturn false\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Go back to Student Submissions page.\r\n\t\tbackToStudentSubmissions() {\r\n\t\t\tthis.$router.push('/course/' + this.classCode + '/projects/' + this.assignmentId + '/submissions')\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Go back to Projects page.\r\n\t\tbackToAssignments() {\r\n\t\t\tthis.$router.push('/course/' + this.classCode + '/projects')\r\n\t\t},\r\n\t\tgetlastActivityDate() {\r\n\t\t\tconst today = this.$moment()._d\r\n\t\t\treturn today.getFullYear() + '-' + (today.getMonth() + 1) + '-' +\r\n today.getDate() + ' ' + today.getHours() + ':' + today.getMinutes() + ':' + today.getSeconds()\r\n\t\t},\r\n\t\tgetDateStr(date) {\r\n\t\t\tconst thisDate = this.$moment(date)._d\r\n\t\t\treturn thisDate.getFullYear() + '-' + (thisDate.getMonth() + 1) + '-' +\r\n thisDate.getDate() + ' ' + thisDate.getHours() + ':' + thisDate.getMinutes() + ':' + thisDate.getSeconds()\r\n\t\t},\r\n\t\tstdTimezoneOffset(date) {\r\n\t\t\tvar jan = new Date(date.getFullYear(), 0, 1)\r\n\t\t\tvar jul = new Date(date.getFullYear(), 6, 1)\r\n\t\t\treturn Math.max(jan.getTimezoneOffset(), jul.getTimezoneOffset())\r\n\t\t},\r\n\t\tisDstObserved(date) {\r\n\t\t\treturn date.getTimezoneOffset() < this.stdTimezoneOffset(date)\r\n\t\t},\r\n\t\tconvertToEST(clientDate) {\r\n\t\t\tlet offset = -5.0 // EST standard\r\n\t\t\t// Check for daylight saving\r\n\t\t\tif (this.isDstObserved(clientDate)) {\r\n\t\t\t\toffset = -4.0\r\n\t\t\t}\r\n\t\t\tconst utc = clientDate.getTime() + (clientDate.getTimezoneOffset() * 60000)\r\n\t\t\tconst serverDate = new Date(utc + (3600000 * offset))\r\n\t\t\t// return serverDate.toLocaleString()\r\n\t\t\treturn this.getDateStr(serverDate)\r\n\t\t}\r\n\t}\r\n}\r\n</script>\r\n\r\n<style scoped>\r\nbody{\r\n background: #F1F3FA;\r\n}\r\n#content-wrapper {\r\n margin-left: 65px;\r\n}\r\n\r\n.el-card{\r\n border: 1px solid #d4d5d6;\r\n}\r\n.el-card.is-always-shadow, .el-card.is-hover-shadow:focus, .el-card.is-hover-shadow:hover {\r\n -webkit-box-shadow: 0 2px 12px 0 #F1F3FA;\r\n box-shadow: 0 2px 12px 0 #F1F3FA;\r\n}\r\n\r\n.el-card__header {\r\n padding: 12px 12px;\r\n}\r\n\r\n.el-card__body {\r\n padding: 10px;\r\n}\r\n\r\n.el-textarea__inner {\r\n padding: 5px 10px;\r\n}\r\n\r\n.filter-btn{\r\n text-align: center;\r\n box-shadow: none;\r\n display: inline-block;\r\n padding: 0px 10px;\r\n vertical-align: middle;\r\n touch-action: manipulation;\r\n cursor: pointer;\r\n color: #636363;\r\n}\r\n\r\n.filter-divider{\r\n float: left;\r\n border-right: solid 1px #cccccc;\r\n height: 50px;\r\n}\r\n\r\n#full_width_container.full-width {\r\n position: absolute;\r\n top: 3.1325em;\r\n bottom: 2px;\r\n left: 215px;\r\n right: 0;\r\n min-width: 460px;\r\n}\r\n\r\n#full_width_container{\r\n position: absolute;\r\n top: 3.1325em;\r\n bottom: 2px;\r\n left: 65px;\r\n right: 0;\r\n min-width: 460px;\r\n}\r\n\r\n#left_side {\r\n top: 0;\r\n bottom: 0;\r\n overflow-y: hidden;\r\n left: 0;\r\n min-width: 700px;\r\n}\r\n#right_side {\r\n top: 0;\r\n bottom: 0;\r\n right: 0;\r\n font-size: 14px;\r\n font-size: .875rem;\r\n}\r\n.el-input-number--small{\r\n width: 100px;\r\n}\r\n.el-radio-button >>> .el-radio-button__inner{\r\n padding: 12px 15px;\r\n}\r\n\r\n.full_height {\r\n height: 100%;\r\n overflow-x: auto;\r\n}\r\n\r\n#left_side_inner, #submissions_container, #iframe_holder{\r\n height: 100%;\r\n width: 100%;\r\n border: 0 none;\r\n}\r\niframe{\r\n width: 100%;\r\n border: 0px;\r\n overflow: auto;\r\n height: 99%;\r\n min-height: 0px;\r\n}\r\n\r\n#width_resizer {\r\n position: absolute;\r\n top: 0;\r\n bottom: 0;\r\n left: 0;\r\n background: #bbb url(https://du11hjcvx0uqb.cloudfront.net/dist/images/splitpane_handle-ew-1b67cccf0f.gif) no-repeat scroll 50% 50%;\r\n cursor: pointer;\r\n width: 7px;\r\n border-right: 1px solid #838383;\r\n z-index: 2;\r\n}\r\n.right_side_content {\r\n position: absolute;\r\n top: 0;\r\n bottom: 0;\r\n left: 8px;\r\n right: 0;\r\n}\r\n#right_side #rightside_inner {\r\n overflow-y: auto;\r\n position: relative;\r\n}\r\n\r\n.ViewerControls--with-annotations {\r\n height: 49px;\r\n}\r\n.ViewerControls {\r\n background-color: #636363;\r\n color: #fff;\r\n font-size: 14px;\r\n line-height: 24px;\r\n /* overflow-x: auto; */\r\n /* position: absolute;\r\n width: 100%; */\r\n}\r\n.ViewerControls-primary {\r\n -ms-touch-action: none;\r\n touch-action: none;\r\n pointer-events: all;\r\n display: -webkit-box;\r\n display: -ms-flexbox;\r\n display: flex;\r\n}\r\n.ViewerControls--download, .ViewerControls--title {\r\n -webkit-box-flex: 1;\r\n -ms-flex: 1;\r\n flex: 1;\r\n display: -webkit-box;\r\n display: -ms-flexbox;\r\n display: flex;\r\n -webkit-box-align: center;\r\n -ms-flex-align: center;\r\n align-items: center;\r\n white-space: nowrap;\r\n}\r\n\r\n.download-button--button {\r\n background-color: transparent;\r\n font-size: 16px;\r\n border: none;\r\n height: 48px;\r\n width: 48px;\r\n color: white;\r\n cursor: pointer;\r\n}\r\n/* .download-button--button:hover {\r\n background-color: #777777;\r\n} */\r\n\r\n.ViewerControls--page-controls {\r\n display: -webkit-box;\r\n display: -ms-flexbox;\r\n display: flex;\r\n -webkit-box-align: center;\r\n -ms-flex-align: center;\r\n align-items: center;\r\n white-space: nowrap;\r\n}\r\n\r\n.DocumentControls {\r\n display: -webkit-box;\r\n display: -ms-flexbox;\r\n display: flex;\r\n -webkit-box-align: center;\r\n -ms-flex-align: center;\r\n align-items: center;\r\n}\r\n\r\n.AnnotationControlButton {\r\n width: 48px;\r\n padding: 0;\r\n border: 0 none;\r\n color: #fff;\r\n background-color: #636363;\r\n margin-top: 0;\r\n margin-bottom: 0;\r\n cursor: pointer;\r\n -webkit-box-sizing: content-box;\r\n box-sizing: content-box;\r\n -webkit-touch-callout: none;\r\n user-select: none;\r\n -moz-user-select: none;\r\n -webkit-user-select: none;\r\n -ms-user-select: none;\r\n -webkit-tap-highlight-color: rgba(0,0,0,0);\r\n}\r\n.AnnotationControlButton-inner, .AnnotationControlButton-outer {\r\n -webkit-box-sizing: content-box;\r\n box-sizing: content-box;\r\n display: -webkit-box;\r\n display: -ms-flexbox;\r\n display: flex;\r\n}\r\n\r\n.AnnotationControlButton-inner {\r\n margin: 0;\r\n height: 44px;\r\n width: 48px;\r\n -webkit-box-pack: center;\r\n -ms-flex-pack: center;\r\n justify-content: center;\r\n -webkit-box-align: center;\r\n -ms-flex-align: center;\r\n align-items: center;\r\n}\r\n\r\n.AnnotationControlButton-inner {\r\n margin: 0;\r\n height: 44px;\r\n width: 48px;\r\n -webkit-box-pack: center;\r\n -ms-flex-pack: center;\r\n justify-content: center;\r\n -webkit-box-align: center;\r\n -ms-flex-align: center;\r\n align-items: center;\r\n}\r\n.AnnotationControlButton-outer {\r\n width: 44px;\r\n margin: 1px;\r\n border: 1px solid #636363;\r\n}\r\n\r\n.ViewerControls--current-page {\r\n -moz-appearance: textfield;\r\n margin-top: 10px;\r\n border-radius: 3px;\r\n border: 0;\r\n height: 28px;\r\n width: 36px;\r\n background-color: #fff;\r\n color: #636363;\r\n font-size: 14px;\r\n text-align: center;\r\n vertical-align: top;\r\n}\r\n.next-prev{\r\n text-align: center;\r\n -webkit-box-shadow: none;\r\n box-shadow: none;\r\n display: inline-block;\r\n padding: 0px 10px;\r\n vertical-align: middle;\r\n -ms-touch-action: manipulation;\r\n touch-action: manipulation;\r\n cursor: pointer;\r\n border: 0 none;\r\n background: none;\r\n}\r\n/* .AnnotationControlButton.selected .AnnotationControlButton-outer {\r\n border-color: #fff;\r\n border: 1px solid #fff;\r\n color: #636363;\r\n}\r\n.AnnotationControlButton.selected {\r\n outline: none;\r\n background-color: #fff;\r\n}\r\n\r\n.AnnotationControlButton:active .AnnotationControlButton-outer {\r\n -webkit-box-shadow: inset 0 0 2px #000;\r\n box-shadow: inset 0 0 2px #000;\r\n}\r\n.AnnotationControlButton:hover:enabled .AnnotationControlButton-outer {\r\n border-color: #777777;\r\n}\r\n.AnnotationControlButton:hover:enabled {\r\n background-color: #777777;\r\n} */\r\n\r\n</style>\r\n\r\n<style>\r\n.el-radio-button__orig-radio:disabled:checked+.el-radio-button__inner {\r\n background-color: #0A7756;\r\n color: white;\r\n}\r\n</style>\r\n\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ViewFeedback.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ViewFeedback.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./ViewFeedback.vue?vue&type=template&id=55caa835&scoped=true&\"\nimport script from \"./ViewFeedback.vue?vue&type=script&lang=js&\"\nexport * from \"./ViewFeedback.vue?vue&type=script&lang=js&\"\nimport style0 from \"./ViewFeedback.vue?vue&type=style&index=0&id=55caa835&scoped=true&lang=css&\"\nimport style1 from \"./ViewFeedback.vue?vue&type=style&index=1&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"55caa835\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('div',{staticStyle:{\"height\":\"50px\",\"border-bottom\":\"#cccccc solid 1px\"},attrs:{\"id\":\"filter\"}},[_c('div',{staticClass:\"filter-divider\",staticStyle:{\"width\":\"400px\"}},[_c('el-button',{staticStyle:{\"text-align\":\"center\",\"-webkit-box-shadow\":\"none\",\"box-shadow\":\"none\",\"display\":\"inline-block\",\"padding\":\"0px\",\"padding-right\":\"10px\",\"vertical-align\":\"middle\",\"-ms-touch-action\":\"manipulation\",\"touch-action\":\"manipulation\",\"cursor\":\"pointer\",\"border\":\"0 none\",\"background\":\"none\"},attrs:{\"title\":\"Back to OLD Projects\"},on:{\"click\":function($event){return _vm.backToAssignments()}}},[_c('i',{staticClass:\"fas fa-chevron-left\",staticStyle:{\"font-size\":\"25px\"}})]),_c('el-tooltip',{staticClass:\"item\",attrs:{\"effect\":\"light\",\"content\":\"Project Name\",\"placement\":\"bottom\"}},[_c('el-select',{staticStyle:{\"margin-top\":\"5px\",\"width\":\"90%\"},attrs:{\"id\":\"assignments-selection\",\"value-key\":\"Id\",\"filterable\":\"\",\"placeholder\":\"Project Name\",\"no-match-text\":\"No Matching Data\",\"no-data-text\":\"No data\",\"loading-text\":\"Loading\",\"disabled\":true},on:{\"change\":function($event){return _vm.onAssignmentChange()}},model:{value:(_vm.currentAssignment),callback:function ($$v) {_vm.currentAssignment=$$v},expression:\"currentAssignment\"}},_vm._l((_vm.assignments),function(item){return _c('el-option',{key:item.Id,attrs:{\"label\":item.AssignmentName,\"value\":item}})}),1)],1)],1),_c('div',[_c('div',{staticClass:\"filter-divider\",staticStyle:{\"width\":\"285px\"}},[_c('el-button',{staticStyle:{\"text-align\":\"center\",\"-webkit-box-shadow\":\"none\",\"box-shadow\":\"none\",\"display\":\"inline-block\",\"padding\":\"0px 10px\",\"vertical-align\":\"middle\",\"-ms-touch-action\":\"manipulation\",\"touch-action\":\"manipulation\",\"cursor\":\"pointer\",\"border\":\"0 none\",\"background\":\"none\"},attrs:{\"disabled\":_vm.prevBtnDisable,\"title\":\"Previous Reviewer\"},on:{\"click\":_vm.previousReviewer}},[_c('i',{staticClass:\"fas fa-arrow-left\",staticStyle:{\"font-size\":\"25px\"}})]),_c('el-tooltip',{staticClass:\"item\",attrs:{\"effect\":\"light\",\"content\":\"Select a reviewer to view feedback\",\"placement\":\"bottom\"}},[_c('el-select',{staticStyle:{\"margin-top\":\"5px\",\"width\":\"200px\"},attrs:{\"id\":\"reviewers-selection\",\"value-key\":\"UserName\",\"filterable\":\"\",\"placeholder\":\"Select Reviewer\"},on:{\"change\":function($event){return _vm.onReviewerChange()}},model:{value:(_vm.currentReviewer),callback:function ($$v) {_vm.currentReviewer=$$v},expression:\"currentReviewer\"}},_vm._l((_vm.reviewers),function(item){return _c('el-option',{key:item.UserName,attrs:{\"label\":item.LastName + ', ' + item.FirstName,\"value\":item}})}),1)],1),_c('el-button',{staticStyle:{\"text-align\":\"center\",\"-webkit-box-shadow\":\"none\",\"box-shadow\":\"none\",\"display\":\"inline-block\",\"padding\":\"0px 10px\",\"vertical-align\":\"middle\",\"-ms-touch-action\":\"manipulation\",\"touch-action\":\"manipulation\",\"cursor\":\"pointer\",\"border\":\"0 none\",\"background\":\"none\"},attrs:{\"disabled\":_vm.nextBtnDisable,\"title\":\"Next Reviewer\"},on:{\"click\":_vm.nextReviewer}},[_c('i',{staticClass:\"fas fa-arrow-right\",staticStyle:{\"font-size\":\"25px\"}})])],1),_c('div',{staticStyle:{\"width\":\"350px\",\"float\":\"left\"}},[_c('el-tooltip',{staticClass:\"item\",attrs:{\"effect\":\"light\",\"content\":\"Feedback to view\",\"placement\":\"bottom\"}},[_c('el-select',{staticStyle:{\"margin-top\":\"5px\",\"margin-left\":\"10px\",\"margin-right\":\"10px\",\"width\":\"200px\"},attrs:{\"id\":\"feedbacks-selection\",\"value-key\":\"DocId\",\"filterable\":\"\",\"placeholder\":\"Select Feedback\",\"no-match-text\":\"No Matching Data\",\"no-data-text\":\"No data\",\"loading-text\":\"Loading\"},on:{\"change\":function($event){return _vm.onFeedbackChange()}},model:{value:(_vm.currentFeedback),callback:function ($$v) {_vm.currentFeedback=$$v},expression:\"currentFeedback\"}},_vm._l((_vm.feedbacks),function(item){return _c('el-option',{key:item.DocId,attrs:{\"label\":_vm._f(\"formatDate\")(item.UploadedDate),\"value\":item}})}),1)],1)],1)])]),_c('div',{class:_vm.fullWidth,attrs:{\"id\":\"full_width_container\"}},[_c('rs-panes',{attrs:{\"split-to\":\"columns\",\"allow-resize\":true,\"units\":\"percents\",\"size\":70,\"min-size\":0,\"resizer-thickness\":6}},[_c('div',{staticStyle:{\"height\":\"100%\"},attrs:{\"slot\":\"firstPane\"},slot:\"firstPane\"},[_c('div',{staticClass:\"full_height\",attrs:{\"id\":\"left_side\"}},[_c('div',{attrs:{\"id\":\"left_side_inner\"}},[_c('div',{attrs:{\"id\":\"submissions_container\"}},[_c('nav',{staticClass:\"ViewerControls ViewerControls--with-annotations\"},[_c('div',{staticClass:\"ViewerControls-primary\"},[_c('div',{staticClass:\"ViewerControls--download\"},[_c('div',{staticStyle:{\"min-width\":\"50px\",\"text-align\":\"center\"}},[_c('div',[_c('button',{staticClass:\"download-button--button\",attrs:{\"title\":\"Download annotated PDF\",\"aria-label\":\"Download annotated PDF\"},on:{\"click\":function($event){return _vm.downloadPdf()}}},[_c('i',{staticClass:\"fas fa-file-download\",staticStyle:{\"font-size\":\"22px\"}})])])])]),_c('div',{staticClass:\"ViewerControls--title\"}),_c('div',{staticClass:\"ViewerControls--page-controls\"},[_c('span',{staticClass:\"ViewerControls--page-number\",staticStyle:{\"display\":\"flex\",\"align-items\":\"center\"}},[_vm._v(\"\\n Page\\n \"),_c('div',{staticStyle:{\"padding-left\":\"10px\",\"padding-right\":\"10px\"}},[_c('el-input-number',{attrs:{\"min\":1,\"max\":_vm.totalPageNumber,\"size\":\"small\",\"label\":\"Page\"},on:{\"change\":_vm.changePage},model:{value:(_vm.pageNum),callback:function ($$v) {_vm.pageNum=$$v},expression:\"pageNum\"}})],1),_vm._v(\"\\n of \"+_vm._s(_vm.totalPageNumber)+\"\\n \")]),_c('svg',{staticStyle:{\"margin-left\":\"12px\",\"margin-right\":\"0px\",\"width\":\"2px\",\"height\":\"26px\",\"color\":\"rgb(171, 179, 186)\"},attrs:{\"viewBox\":\"0 0 2 26\"}},[_c('line',{attrs:{\"stroke\":\"currentColor\",\"stroke-dasharray\":\"2, 1\",\"stroke-width\":\"1\",\"x1\":\"1\",\"y1\":\"0\",\"x2\":\"1\",\"y2\":\"26\"}})])]),_c('nav',{staticClass:\"DocumentControls\"},[_c('div',{staticStyle:{\"display\":\"inline-flex\",\"align-items\":\"center\",\"user-select\":\"none\"}},[_c('button',{staticClass:\"AnnotationControlButton\",attrs:{\"aria-label\":\"Zoom Out\",\"title\":\"Zoom Out\",\"aria-disabled\":\"false\"},on:{\"click\":_vm.zoomOut}},[_c('i',{staticClass:\"fas fa-minus\",staticStyle:{\"font-size\":\"20px\"}})]),_c('span',{staticStyle:{\"text-transform\":\"uppercase\",\"font-size\":\"0.75rem\",\"color\":\"rgb(238, 238, 239)\",\"margin-left\":\"4px\",\"margin-right\":\"4px\"},attrs:{\"aria-hidden\":\"true\"}},[_vm._v(\"\\n Zoom\\n \")]),_c('button',{staticClass:\"AnnotationControlButton\",attrs:{\"aria-label\":\"Zoom In\",\"title\":\"Zoom In\",\"aria-disabled\":\"false\"},on:{\"click\":_vm.zoomIn}},[_c('i',{staticClass:\"fas fa-plus\",staticStyle:{\"font-size\":\"20px\"}})])]),_c('svg',{staticStyle:{\"margin-left\":\"2px\",\"margin-right\":\"4px\",\"width\":\"2px\",\"height\":\"26px\",\"color\":\"rgb(171, 179, 186)\"},attrs:{\"viewBox\":\"0 0 2 26\"}},[_c('line',{attrs:{\"stroke\":\"currentColor\",\"stroke-dasharray\":\"2, 1\",\"stroke-width\":\"1\",\"x1\":\"1\",\"y1\":\"0\",\"x2\":\"1\",\"y2\":\"26\"}})]),_c('div',{staticClass:\"ViewerControls--page-controls\"},[_c('button',{staticClass:\"AnnotationControlButton full-screen-button\",attrs:{\"aria-label\":\"Enter Full Screen\",\"title\":\"Zoom Fit Width\"},on:{\"click\":_vm.zoomFitWidth}},[_c('i',{staticClass:\"fas fa-expand\",staticStyle:{\"font-size\":\"20px\"}})]),_c('svg',{staticStyle:{\"margin-left\":\"4px\",\"margin-right\":\"4px\",\"width\":\"2px\",\"height\":\"26px\",\"color\":\"rgb(171, 179, 186)\"},attrs:{\"viewBox\":\"0 0 2 26\"}},[_c('line',{attrs:{\"stroke\":\"currentColor\",\"stroke-dasharray\":\"2, 1\",\"stroke-width\":\"1\",\"x1\":\"1\",\"y1\":\"0\",\"x2\":\"1\",\"y2\":\"26\"}})])])]),_c('nav',{staticClass:\"AnnotationControls\"},[_c('button',{staticClass:\"AnnotationControlButton\",attrs:{\"aria-label\":\"Enter selection mode\",\"title\":\"Selection\"},on:{\"click\":_vm.selectTextPdf}},[_c('div',{staticClass:\"AnnotationControlButton-outer\"},[_c('div',{staticClass:\"AnnotationControlButton-inner\"},[_c('i',{staticClass:\"fas fa-mouse-pointer\",staticStyle:{\"font-size\":\"20px\"}})])])])])])]),_c('div',{staticStyle:{\"display\":\"block\",\"height\":\"calc(100% - 45px)\"},attrs:{\"id\":\"iframe_holder\"}},[_c('div',{staticStyle:{\"resize\":\"vertical\",\"height\":\"100%\"},attrs:{\"id\":\"pdfDocument\"}})])])]),_c('div',{staticStyle:{\"display\":\"none\",\"position\":\"relative\",\"top\":\"-100%\",\"z-index\":\"1\",\"height\":\"100%\",\"width\":\"100%\",\"border\":\"0 none\"},attrs:{\"id\":\"resize_overlay\"}})])]),_c('div',{attrs:{\"slot\":\"secondPane\"},slot:\"secondPane\"},[_c('div',{staticClass:\"full_height\",attrs:{\"id\":\"right_side\"}},[_c('div',{staticClass:\"right_side_content\"},[_c('div',{staticClass:\"full_height\",attrs:{\"id\":\"rightside_inner\"}},[_c('div',{attrs:{\"id\":\"rubric\"}},[_c('div',{staticStyle:{\"height\":\"100%\",\"overflow\":\"auto\"}},_vm._l((_vm.rubricCriteria),function(criteria,criteriaIndex){return _c('el-card',{key:criteria.Id,staticStyle:{\"margin-bottom\":\"5px\",\"margin-left\":\"3px\"}},[_c('div',{staticClass:\"clearfix\",attrs:{\"slot\":\"header\"},slot:\"header\"},[_c('span',{staticStyle:{\"font-size\":\"16px\",\"font-weight\":\"bold\"}},[_vm._v(\"\\n \"+_vm._s(criteria.CriteriaName)+\"\\n \")]),_c('div',{staticStyle:{\"font-size\":\"14px\",\"margin-top\":\"10px\"}},[(criteria.Description && criteria.Description != '')?_c('el-input',{staticClass:\"criteria-description\",staticStyle:{\"border\":\"none\"},attrs:{\"value\":criteria.Description,\"readonly\":true,\"type\":\"textarea\",\"autosize\":true,\"maxlength\":8000}}):_vm._e()],1)]),_c('div',[(_vm.termCode == '201901')?_c('div',[(criteria.UseAsGrade)?_c('el-radio-group',{staticStyle:{\"margin-bottom\":\"10px\",\"min-width\":\"240px\"},attrs:{\"id\":criteria.Id,\"disabled\":true},model:{value:(_vm.criteriaFeedback[criteriaIndex].Mark),callback:function ($$v) {_vm.$set(_vm.criteriaFeedback[criteriaIndex], \"Mark\", $$v)},expression:\"criteriaFeedback[criteriaIndex].Mark\"}},_vm._l((criteria.RubricCriteriaMilestones.slice()),function(milestone,key){return _c('el-tooltip',{key:milestone.Id,staticClass:\"item\",attrs:{\"effect\":\"light\",\"placement\":\"top\"}},[_c('div',{staticStyle:{\"max-width\":\"500px\"},attrs:{\"slot\":\"content\"},slot:\"content\"},[_vm._v(\"\\n \"+_vm._s(milestone.Description)+\"\\n \")]),_c('el-radio-button',{key:milestone.Id,attrs:{\"label\":criteria.RubricCriteriaMilestones.length - key}})],1)}),1):_vm._e()],1):_c('div',[(criteria.UseAsGrade)?_c('el-radio-group',{staticStyle:{\"margin-bottom\":\"10px\",\"min-width\":\"240px\"},attrs:{\"id\":criteria.Id,\"disabled\":true},model:{value:(_vm.criteriaFeedback[criteriaIndex].Mark),callback:function ($$v) {_vm.$set(_vm.criteriaFeedback[criteriaIndex], \"Mark\", $$v)},expression:\"criteriaFeedback[criteriaIndex].Mark\"}},_vm._l((criteria.RubricCriteriaMilestones.slice()),function(milestone){return _c('el-tooltip',{key:milestone.Id,staticClass:\"item\",attrs:{\"effect\":\"light\",\"placement\":\"top\"}},[_c('div',{staticStyle:{\"max-width\":\"500px\"},attrs:{\"slot\":\"content\"},slot:\"content\"},[_vm._v(\"\\n \"+_vm._s(milestone.Description)+\"\\n \")]),_c('el-radio-button',{key:milestone.Id,attrs:{\"label\":milestone.Value}})],1)}),1):_vm._e()],1),_c('div',[(criteria.UseAsGrade || criteria.UseAsTextComment)?_c('el-input',{staticClass:\"criteria-comment\",attrs:{\"type\":\"textarea\",\"placeholder\":\"Enter text here\",\"rows\":3,\"maxlength\":8000,\"readonly\":true},model:{value:(_vm.criteriaFeedback[criteriaIndex].Comment),callback:function ($$v) {_vm.$set(_vm.criteriaFeedback[criteriaIndex], \"Comment\", $$v)},expression:\"criteriaFeedback[criteriaIndex].Comment\"}}):_vm._e()],1)])])}),1)])])])])])])],1)])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n <div>\r\n <div id=\"filter\" style=\"height: 50px; border-bottom: #cccccc solid 1px;\">\r\n <div class=\"filter-divider\" style=\"width: 400px;\">\r\n <el-button\r\n style=\"text-align: center; -webkit-box-shadow: none; box-shadow: none;\r\n display: inline-block; padding: 0px; padding-right: 10px; vertical-align: middle;\r\n -ms-touch-action: manipulation; touch-action: manipulation;\r\n cursor: pointer; border: 0 none; background: none;\"\r\n title=\"Back to OLD Projects\"\r\n @click=\"backToAssignments()\"\r\n >\r\n <i class=\"fas fa-chevron-left\" style=\"font-size: 25px;\" />\r\n </el-button>\r\n <el-tooltip class=\"item\" effect=\"light\" content=\"Project Name\" placement=\"bottom\">\r\n <el-select\r\n id=\"assignments-selection\"\r\n v-model=\"currentAssignment\"\r\n value-key=\"Id\"\r\n filterable\r\n placeholder=\"Project Name\"\r\n no-match-text=\"No Matching Data\"\r\n no-data-text=\"No data\"\r\n loading-text=\"Loading\"\r\n style=\"margin-top: 5px; width: 90%;\"\r\n :disabled=\"true\"\r\n @change=\"onAssignmentChange()\"\r\n >\r\n <el-option\r\n v-for=\"item in assignments\"\r\n :key=\"item.Id\"\r\n :label=\"item.AssignmentName\"\r\n :value=\"item\"\r\n />\r\n </el-select>\r\n </el-tooltip>\r\n </div>\r\n\r\n <!-- Reviewer Selection -->\r\n <div>\r\n <div class=\"filter-divider\" style=\"width: 285px;\">\r\n <el-button\r\n style=\"text-align: center; -webkit-box-shadow: none; box-shadow: none;\r\n display: inline-block; padding: 0px 10px; vertical-align: middle;\r\n -ms-touch-action: manipulation; touch-action: manipulation;\r\n cursor: pointer; border: 0 none; background: none;\"\r\n :disabled=\"prevBtnDisable\"\r\n title=\"Previous Reviewer\"\r\n @click=\"previousReviewer\"\r\n >\r\n <i class=\"fas fa-arrow-left\" style=\"font-size: 25px;\" />\r\n </el-button>\r\n\r\n <el-tooltip class=\"item\" effect=\"light\" content=\"Select a reviewer to view feedback\" placement=\"bottom\">\r\n <el-select\r\n id=\"reviewers-selection\"\r\n v-model=\"currentReviewer\"\r\n value-key=\"UserName\"\r\n filterable\r\n placeholder=\"Select Reviewer\"\r\n style=\"margin-top: 5px; width: 200px;\"\r\n @change=\"onReviewerChange()\"\r\n >\r\n <el-option\r\n v-for=\"item in reviewers\"\r\n :key=\"item.UserName\"\r\n :label=\"item.LastName + ', ' + item.FirstName\"\r\n :value=\"item\"\r\n />\r\n </el-select>\r\n </el-tooltip>\r\n\r\n <el-button\r\n style=\"text-align: center; -webkit-box-shadow: none; box-shadow: none;\r\n display: inline-block; padding: 0px 10px; vertical-align: middle;\r\n -ms-touch-action: manipulation; touch-action: manipulation;\r\n cursor: pointer; border: 0 none; background: none;\"\r\n :disabled=\"nextBtnDisable\"\r\n title=\"Next Reviewer\"\r\n @click=\"nextReviewer\"\r\n >\r\n <i style=\"font-size: 25px;\" class=\"fas fa-arrow-right\" />\r\n </el-button>\r\n </div>\r\n\r\n <div style=\"width: 350px; float:left;\">\r\n <el-tooltip class=\"item\" effect=\"light\" content=\"Feedback to view\" placement=\"bottom\">\r\n <el-select\r\n id=\"feedbacks-selection\"\r\n v-model=\"currentFeedback\"\r\n value-key=\"DocId\"\r\n filterable\r\n placeholder=\"Select Feedback\"\r\n no-match-text=\"No Matching Data\"\r\n no-data-text=\"No data\"\r\n loading-text=\"Loading\"\r\n style=\"margin-top: 5px; margin-left: 10px; margin-right: 10px; width: 200px;\"\r\n @change=\"onFeedbackChange()\"\r\n >\r\n <el-option\r\n v-for=\"item in feedbacks\"\r\n :key=\"item.DocId\"\r\n :label=\"item.UploadedDate | formatDate\"\r\n :value=\"item\"\r\n />\r\n </el-select>\r\n </el-tooltip>\r\n </div>\r\n </div>\r\n </div>\r\n <div id=\"full_width_container\" :class=\"fullWidth\">\r\n <rs-panes split-to=\"columns\" :allow-resize=\"true\" units=\"percents\" :size=\"70\" :min-size=\"0\" :resizer-thickness=\"6\">\r\n <div slot=\"firstPane\" style=\"height: 100%;\">\r\n <div id=\"left_side\" class=\"full_height\">\r\n <div id=\"left_side_inner\">\r\n <div id=\"submissions_container\">\r\n <nav class=\"ViewerControls ViewerControls--with-annotations\">\r\n <div class=\"ViewerControls-primary\">\r\n <div class=\"ViewerControls--download\">\r\n <div style=\"min-width: 50px; text-align: center;\">\r\n <div>\r\n <button class=\"download-button--button\" title=\"Download annotated PDF\" aria-label=\"Download annotated PDF\" @click=\"downloadPdf()\">\r\n <i style=\"font-size: 22px;\" class=\"fas fa-file-download\" />\r\n </button>\r\n </div>\r\n </div>\r\n </div><div class=\"ViewerControls--title\" /><div class=\"ViewerControls--page-controls\">\r\n <span class=\"ViewerControls--page-number\" style=\"display: flex; align-items: center;\">\r\n Page\r\n <div style=\"padding-left: 10px; padding-right: 10px;\">\r\n <el-input-number v-model=\"pageNum\" :min=\"1\" :max=\"totalPageNumber\" size=\"small\" label=\"Page\" @change=\"changePage\" />\r\n </div>\r\n of {{ totalPageNumber }}\r\n </span>\r\n <svg viewBox=\"0 0 2 26\" style=\"margin-left: 12px; margin-right: 0px; width: 2px; height: 26px; color: rgb(171, 179, 186);\">\r\n <line stroke=\"currentColor\" stroke-dasharray=\"2, 1\" stroke-width=\"1\" x1=\"1\" y1=\"0\" x2=\"1\" y2=\"26\" />\r\n </svg>\r\n </div>\r\n <nav class=\"DocumentControls\">\r\n <div style=\"display: inline-flex; align-items: center; user-select: none;\">\r\n <button class=\"AnnotationControlButton\" aria-label=\"Zoom Out\" title=\"Zoom Out\" aria-disabled=\"false\" @click=\"zoomOut\">\r\n <i style=\"font-size: 20px;\" class=\"fas fa-minus\" />\r\n </button>\r\n <span aria-hidden=\"true\" style=\"text-transform: uppercase; font-size: 0.75rem; color: rgb(238, 238, 239); margin-left: 4px; margin-right: 4px;\">\r\n Zoom\r\n </span>\r\n <button class=\"AnnotationControlButton\" aria-label=\"Zoom In\" title=\"Zoom In\" aria-disabled=\"false\" @click=\"zoomIn\">\r\n <i style=\"font-size: 20px;\" class=\"fas fa-plus\" />\r\n </button>\r\n </div>\r\n <svg viewBox=\"0 0 2 26\" style=\"margin-left: 2px; margin-right: 4px; width: 2px; height: 26px; color: rgb(171, 179, 186);\">\r\n <line stroke=\"currentColor\" stroke-dasharray=\"2, 1\" stroke-width=\"1\" x1=\"1\" y1=\"0\" x2=\"1\" y2=\"26\" />\r\n </svg>\r\n <div class=\"ViewerControls--page-controls\">\r\n <button aria-label=\"Enter Full Screen\" class=\"AnnotationControlButton full-screen-button\" title=\"Zoom Fit Width\" @click=\"zoomFitWidth\">\r\n <i style=\"font-size: 20px;\" class=\"fas fa-expand\" />\r\n </button>\r\n <svg viewBox=\"0 0 2 26\" style=\"margin-left: 4px; margin-right: 4px; width: 2px; height: 26px; color: rgb(171, 179, 186);\">\r\n <line stroke=\"currentColor\" stroke-dasharray=\"2, 1\" stroke-width=\"1\" x1=\"1\" y1=\"0\" x2=\"1\" y2=\"26\" />\r\n </svg>\r\n </div>\r\n </nav>\r\n <nav class=\"AnnotationControls\">\r\n <button aria-label=\"Enter selection mode\" class=\"AnnotationControlButton\" title=\"Selection\" @click=\"selectTextPdf\">\r\n <div class=\"AnnotationControlButton-outer\">\r\n <div class=\"AnnotationControlButton-inner\">\r\n <i style=\"font-size: 20px;\" class=\"fas fa-mouse-pointer\" />\r\n </div>\r\n </div>\r\n </button>\r\n </nav>\r\n </div>\r\n </nav>\r\n\r\n <div id=\"iframe_holder\" style=\"display: block; height: calc(100% - 45px);\">\r\n <div id=\"pdfDocument\" style=\"resize: vertical; height: 100%;\" />\r\n </div>\r\n </div>\r\n </div>\r\n <div id=\"resize_overlay\" style=\"display: none; position: relative;top: -100%; z-index: 1; height: 100%; width: 100%; border: 0 none;\" />\r\n </div>\r\n </div>\r\n\r\n <div slot=\"secondPane\">\r\n <div id=\"right_side\" class=\"full_height\">\r\n <!-- <div id=\"width_resizer\" class=\"full_height ui-draggable\" /> -->\r\n <div class=\"right_side_content\">\r\n <div id=\"rightside_inner\" class=\"full_height\">\r\n <div id=\"rubric\">\r\n <div style=\"height: 100%; overflow: auto;\">\r\n <el-card v-for=\"(criteria, criteriaIndex) in rubricCriteria\" :key=\"criteria.Id\" style=\"margin-bottom: 5px; margin-left: 3px;\">\r\n <div slot=\"header\" class=\"clearfix\">\r\n <span style=\"font-size: 16px; font-weight: bold;\">\r\n {{ criteria.CriteriaName }}\r\n </span>\r\n <div style=\"font-size: 14px; margin-top: 10px;\">\r\n <el-input\r\n v-if=\"criteria.Description && criteria.Description != ''\"\r\n :value=\"criteria.Description\"\r\n :readonly=\"true\"\r\n type=\"textarea\"\r\n :autosize=\"true\"\r\n :maxlength=\"8000\"\r\n class=\"criteria-description\"\r\n style=\"border: none;\"\r\n />\r\n </div>\r\n </div>\r\n <div>\r\n <div v-if=\"termCode == '201901'\">\r\n <el-radio-group\r\n v-if=\"criteria.UseAsGrade\"\r\n :id=\"criteria.Id\"\r\n v-model=\"criteriaFeedback[criteriaIndex].Mark\"\r\n style=\"margin-bottom: 10px; min-width: 240px;\"\r\n :disabled=\"true\"\r\n >\r\n <el-tooltip\r\n v-for=\"(milestone, key) in criteria.RubricCriteriaMilestones.slice()\"\r\n :key=\"milestone.Id\"\r\n class=\"item\"\r\n effect=\"light\"\r\n placement=\"top\"\r\n >\r\n <div slot=\"content\" style=\"max-width: 500px;\">\r\n {{ milestone.Description }}\r\n </div>\r\n <el-radio-button\r\n :key=\"milestone.Id\"\r\n :label=\"criteria.RubricCriteriaMilestones.length - key\"\r\n />\r\n </el-tooltip>\r\n </el-radio-group>\r\n </div>\r\n <div v-else>\r\n <el-radio-group\r\n v-if=\"criteria.UseAsGrade\"\r\n :id=\"criteria.Id\"\r\n v-model=\"criteriaFeedback[criteriaIndex].Mark\"\r\n style=\"margin-bottom: 10px; min-width: 240px;\"\r\n :disabled=\"true\"\r\n >\r\n <el-tooltip\r\n v-for=\"milestone in criteria.RubricCriteriaMilestones.slice()\"\r\n :key=\"milestone.Id\"\r\n class=\"item\"\r\n effect=\"light\"\r\n placement=\"top\"\r\n >\r\n <div slot=\"content\" style=\"max-width: 500px;\">\r\n {{ milestone.Description }}\r\n </div>\r\n <el-radio-button\r\n :key=\"milestone.Id\"\r\n :label=\"milestone.Value\"\r\n />\r\n </el-tooltip>\r\n </el-radio-group>\r\n </div>\r\n <div>\r\n <el-input\r\n v-if=\"criteria.UseAsGrade || criteria.UseAsTextComment\"\r\n v-model=\"criteriaFeedback[criteriaIndex].Comment\"\r\n type=\"textarea\"\r\n placeholder=\"Enter text here\"\r\n :rows=\"3\"\r\n :maxlength=\"8000\"\r\n class=\"criteria-comment\"\r\n :readonly=\"true\"\r\n />\r\n </div>\r\n </div>\r\n </el-card>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </rs-panes>\r\n </div>\r\n </div>\r\n</template>\r\n\r\n<script>\r\nimport * as pdfService from '@/services/pdf.service'\r\nimport * as assignmentService from '@/services/assignment.service'\r\nimport * as reviewService from '@/services/review.service'\r\nimport * as rubricService from '@/services/rubric.service'\r\nimport * as teamFormationService from '@/services/team_formation.service'\r\nimport { Notification } from 'element-ui'\r\nimport * as dateUtils from '@/utils/date-utils'\r\nimport ResSplitPane from 'vue-resize-split-pane'\r\nimport * as urlUtils from '@/utils/url-utils'\r\n// Handle UI and logics for the View Feedback page.\r\nexport default {\r\n\tcomponents: {\r\n\t\t'rs-panes': ResSplitPane\r\n\t},\r\n\tfilters: {\r\n\t\tformatDate(dateStr) {\r\n\t\t\treturn dateUtils.formatDate(dateStr)\r\n\t\t}\r\n\t},\r\n\tdata() {\r\n\t\treturn {\r\n\t\t\ttermCode: this.$store.state.enrollment.termCode,\r\n\t\t\torgCode: this.$store.state.enrollment.orgCode,\r\n\t\t\tclassCode: this.$store.state.enrollment.currentCourse.ClassCode,\r\n\t\t\tassignmentId: this.$route.params.assignmentId,\r\n\t\t\trevieweeId: null,\r\n\t\t\treviewerId: null,\r\n\t\t\treviewerRole: 'Student',\r\n\t\t\tassignments: [],\r\n\t\t\tdocId: null,\r\n\t\t\tcurrentAssignment: null,\r\n\t\t\tstudents: null,\r\n\t\t\tcurrentStudent: null,\r\n\t\t\treviewers: [],\r\n\t\t\tcurrentReviewer: null,\r\n\t\t\tonTime: false,\r\n\t\t\tuploadedDate: null,\r\n\t\t\tdueDate: null,\r\n\t\t\tsubmissions: [],\r\n\t\t\tcurrentSubmission: null,\r\n\t\t\trubricCriteria: null,\r\n\t\t\tcriteriaFeedback: null,\r\n\t\t\treview: null,\r\n\t\t\tmyapi: null,\r\n\t\t\tpageNum: 1,\r\n\t\t\ttotalPageNumber: null,\r\n\t\t\tzoomValue: 140,\r\n\t\t\tprevBtnDisable: false,\r\n\t\t\tnextBtnDisable: false,\r\n\t\t\tprevGroupBtnDisable: false,\r\n\t\t\tnextGroupBtnDisable: false,\r\n\t\t\tteams: null,\r\n\t\t\tisGroupProject: false,\r\n\t\t\tgroups: [],\r\n\t\t\tcurrentGroup: null,\r\n\t\t\tgroupId: null,\r\n\t\t\treviewType: null,\r\n\t\t\tfeedbacks: [],\r\n\t\t\tcurrentFeedback: null\r\n \t}\r\n\t},\r\n\tcomputed: {\r\n\t\tfullWidth() {\r\n\t\t\tconst mainNav = document.querySelector('#main-nav')\r\n\t\t\tif (mainNav && !mainNav.classList.contains('full-width')) {\r\n\t\t\t\treturn ''\r\n\t\t\t} else { return 'full-width' }\r\n\t\t}\r\n\t},\r\n\tmounted() {\r\n\t\tconst resizer = document.querySelector('.columnsres')\r\n\t\tresizer.addEventListener('mousedown', function(e) {\r\n\t\t\tdocument.querySelector('#resize_overlay').style.display = 'block'\r\n\t\t})\r\n\t\tdocument.addEventListener('mouseup', function(e) {\r\n\t\t\tdocument.querySelector('#resize_overlay').style.display = 'none'\r\n\t\t})\r\n\t},\r\n\tcreated() {\r\n\t\tthis.revieweeId = this.$store.state.auth.user.UserName\r\n\t\t// Set up assignments selection\r\n\t\tthis.setUpAssignmentSelection()\r\n\t},\r\n\tmethods: {\r\n\t\t// @vuese\r\n\t\t// Format a date value.\r\n\t\t// @arg The date value to be formatted.\r\n\t\tformatDate(dateStr) {\r\n\t\t\treturn dateUtils.formatDate(dateStr)\r\n\t\t},\r\n\t\t// Setup project selection drop down.\r\n\t\tasync setUpAssignmentSelection() {\r\n\t\t\t// Get all assignments that have uploaded papers\r\n\t\t\tconst assignment = await assignmentService.getAssignmentById(this.assignmentId)\r\n\t\t\tif (assignment) {\r\n\t\t\t\tthis.assignments.push(assignment)\r\n\t\t\t\tthis.currentAssignment = assignment\r\n\t\t\t\tif (this.currentAssignment.IsGroupAssignment) {\r\n\t\t\t\t\tconst hasTeam = await this.getTeam()\r\n\t\t\t\t\tif (hasTeam) {\r\n\t\t\t\t\t\tconst reviewerSetupComplete = await this.setUpReviewerSelection()\r\n\t\t\t\t\t\tif (reviewerSetupComplete) { this.displayDocumentAndReview() }\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tNotification.info({\r\n\t\t\t\t\t\t\tduration: 6000,\r\n\t\t\t\t\t\t\ttitle: 'Info',\r\n\t\t\t\t\t\t\tmessage: 'You have not been assigned into a team for this group project.'\r\n\t\t\t\t\t\t})\r\n\t\t\t\t\t\tdocument.getElementById('full_width_container').style.display = 'none'\r\n\t\t\t\t\t}\r\n\t\t\t\t} else {\r\n\t\t\t\t\tconst reviewerSetupComplete = await this.setUpReviewerSelection()\r\n\t\t\t\t\tif (reviewerSetupComplete) { this.displayDocumentAndReview() }\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tNotification.error({\r\n\t\t\t\t\tduration: 6000,\r\n\t\t\t\t\ttitle: 'Error',\r\n\t\t\t\t\tmessage: 'No submission found!'\r\n\t\t\t\t})\r\n\t\t\t\tdocument.getElementById('full_width_container').style.display = 'none'\r\n\t\t\t}\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Get group project team assignment.\r\n\t\tasync getTeam() {\r\n\t\t\tconst thisTeam = await teamFormationService.getgroupProjectTeamAssignment(this.termCode, this.orgCode,\r\n\t\t\t\tthis.classCode, this.revieweeId, this.assignmentId)\r\n\t\t\tif (thisTeam) {\r\n\t\t\t\tthis.revieweeId = thisTeam.TeamId\r\n\t\t\t\treturn true\r\n\t\t\t} else { return false }\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Setup reviewer selection drop down.\r\n\t\tasync setUpReviewerSelection() {\r\n\t\t\t// Get all students who have uploaded paper for this assignment\r\n\t\t\tif (this.taskType == undefined) {\r\n\t\t\t\tthis.taskType = null\r\n\t\t\t}\r\n\t\t\tconst reviewers = await reviewService.getReviewers(this.termCode, this.orgCode, this.classCode,\r\n\t\t\t\tthis.revieweeId, this.assignmentId, this.taskType)\r\n\t\t\tif (reviewers.length > 0) {\r\n\t\t\t\tthis.reviewers = reviewers\r\n\t\t\t\tthis.currentReviewer = reviewers[0]\r\n\t\t\t\tthis.reviewerId = this.currentReviewer.UserName.split(';')[1]\r\n\t\t\t\t// Set up previous and next buttons\r\n\t\t\t\tconst thisIndex = this.reviewers.findIndex(x => x.UserName == this.currentReviewer.UserName)\r\n\t\t\t\tif (thisIndex == 0) {\r\n\t\t\t\t\tthis.prevBtnDisable = true\r\n\t\t\t\t}\r\n\t\t\t\tif (thisIndex == this.reviewers.length - 1) {\r\n\t\t\t\t\tthis.nextBtnDisable = true\r\n\t\t\t\t}\r\n\t\t\t\treturn true\r\n\t\t\t} else {\r\n\t\t\t\tdocument.getElementById('full_width_container').style.display = 'none'\r\n\t\t\t\tNotification.error({\r\n\t\t\t\t\tduration: 6000,\r\n\t\t\t\t\ttitle: 'Error',\r\n\t\t\t\t\tmessage: 'No submission found!'\r\n\t\t\t\t})\r\n\t\t\t\treturn false\r\n\t\t\t}\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Display document and review.\r\n\t\tasync displayDocumentAndReview() {\r\n\t\t\tlet latestReview\r\n\t\t\tlet docId\r\n\r\n\t\t\t// const submissions = await submissionService.getStudentUpload(this.termCode, this.orgCode,\r\n\t\t\t// \tthis.classCode, this.revieweeId, this.assignmentId)\r\n\t\t\t// if (submissions.length > 0) {\r\n\t\t\t// \tconsole.log(submissions)\r\n\t\t\t// }\r\n\t\t\tlet reviews = await reviewService.getReview(this.termCode, this.orgCode, this.classCode,\r\n\t\t\t\tthis.assignmentId, this.reviewerId, this.revieweeId, 'all', 'all')\r\n\t\t\tif (reviews.length > 0) {\r\n\t\t\t\treviews = reviews.filter(r => r.EmailSent == 'Y')\r\n\t\t\t\tthis.feedbacks = reviews\r\n\t\t\t\tlatestReview = reviews[0]\r\n\t\t\t\tthis.currentFeedback = latestReview\r\n\t\t\t\tthis.reviewerRole = latestReview.GraderRole\r\n\t\t\t\tdocId = latestReview.DocId\r\n\t\t\t\tawait this.displayDocument(docId)\r\n\t\t\t\t// Display the latest review\r\n\t\t\t\tawait this.displayReview(latestReview)\r\n\r\n\t\t\t\tdocument.getElementById('full_width_container').style.display = 'block'\r\n\t\t\t} else {\r\n\t\t\t\tNotification.error({\r\n\t\t\t\t\tduration: 6000,\r\n\t\t\t\t\ttitle: 'Error',\r\n\t\t\t\t\tmessage: 'No review found!'\r\n\t\t\t\t})\r\n\t\t\t}\r\n\t\t},\r\n\t\tasync onFeedbackChange() {\r\n\t\t\tthis.pageNum = 1\r\n\t\t\tthis.rubricCriteria = null\r\n\t\t\t// Display the doc based on latest submission or latest review\r\n\t\t\tawait this.displayDocument(this.currentFeedback.DocId)\r\n\r\n\t\t\t// Display the latest review\r\n\t\t\tawait this.displayReview(this.currentFeedback)\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Display document by document id.\r\n\t\t// @arg The document id.\r\n\t\tasync displayDocument(docId) {\r\n\t\t\tif (docId) {\r\n\t\t\t\tthis.docId = docId\r\n\t\t\t\tawait pdfService.getPdf(docId)\r\n\t\t\t\t\t.then(pdf => {\r\n\t\t\t\t\t\t// Display the pdf\r\n\t\t\t\t\t\tconst pdfDocument = document.querySelector('#pdfDocument')\r\n\t\t\t\t\t\tpdfDocument.innerHTML = pdf\r\n\t\t\t\t\t\t// Setup the doc after being loaded\r\n\t\t\t\t\t\tconst that = this\r\n\t\t\t\t\t\tdocument.getElementById('PdfWebControl').onload = function() {\r\n\t\t\t\t\t\t\tthat.PdfAttachListeners()\r\n\t\t\t\t\t\t\tsetTimeout(function() {\r\n\t\t\t\t\t\t\t\tthat.totalPageNumber = that.myapi.getPageCount()\r\n\t\t\t\t\t\t\t}, 500)\r\n\r\n\t\t\t\t\t\t\tthat.autoSavePdf()\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}).catch((error) => {\r\n\t\t\t\t\t\tconsole.log(error)\r\n\t\t\t\t\t})\r\n\t\t\t}\r\n\t\t},\r\n\t\tautoSavePdf() {\r\n\t\t\tconst that = this\r\n\t\t\twindow.setInterval(function() {\r\n\t\t\t\tconst iframe = document.getElementById('PdfWebControl')\r\n\t\t\t\tif (iframe) {\r\n\t\t\t\t\tconst innerDoc = iframe.contentDocument || iframe.contentWindow.document\r\n\t\t\t\t\tconst page = that.myapi.getPageViewed()\r\n\t\t\t\t\tconst objCount = page.getObjectCount()\r\n\r\n\t\t\t\t\tif (objCount == 0) {\r\n\t\t\t\t\t\tif (that.myapi.getHasUnsavedChanges()) {\r\n\t\t\t\t\t\t\tthat.myapi.save()\r\n\t\t\t\t\t\t\treturn\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tlet found\r\n\t\t\t\t\tconst pdfe_msgt = innerDoc.getElementById('pdfe_msgt')\r\n\t\t\t\t\tfor (let i = 0; i < objCount; i++) {\r\n\t\t\t\t\t\t// get this object\r\n\t\t\t\t\t\tconst aTags = innerDoc.getElementsByTagName('div')\r\n\t\t\t\t\t\tfor (let i = 0; i < aTags.length; i++) {\r\n\t\t\t\t\t\t\tif (aTags[i].innerHTML == 'DEL') {\r\n\t\t\t\t\t\t\t\tfound = aTags[i]\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif ((typeof (found) === 'undefined' || found === null) || (typeof (pdfe_msgt) === 'undefined' || pdfe_msgt === null)) {\r\n\t\t\t\t\t\treturn\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif (pdfe_msgt.style.visibility == 'visible') {\r\n\t\t\t\t\t\treturn\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tif (found.style.visibility == 'visible') {\r\n\t\t\t\t\t\t\treturn\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tconst activeEl = innerDoc.activeElement\r\n\t\t\t\t\tif (activeEl) {\r\n\t\t\t\t\t\tconst isEditting = activeEl.getAttribute('contenteditable')\r\n\t\t\t\t\t\tif (isEditting) { return }\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif (that.myapi.getHasUnsavedChanges()) {\r\n\t\t\t\t\t\tthat.myapi.save()\r\n\t\t\t\t\t\tif (that.review == null) { that.saveReview() }\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}, 120 * 1000)\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Display the review.\r\n\t\t// @arg The review to be displayed.\r\n\t\tasync displayReview(review) {\r\n\t\t\tthis.review = review\r\n\t\t\tconst rubricId = this.currentAssignment.RubricId\r\n\t\t\t// Get the rubric from current assignment.\r\n\t\t\tawait rubricService.getRubricById(rubricId)\r\n\t\t\t\t.then(rubric => {\r\n\t\t\t\t\tthis.rubricCriteria = rubric.RubricCriterias\r\n\t\t\t\t\tif (review) {\r\n\t\t\t\t\t\tif (review.ReviewData.length == 0) { this.criteriaFeedback = this.getDefaultCriteriaFeedback(rubric.RubricCriterias) } else { this.criteriaFeedback = review.ReviewData }\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tthis.criteriaFeedback = this.getDefaultCriteriaFeedback(rubric.RubricCriterias)\r\n\t\t\t\t\t}\r\n\t\t\t\t}).catch((error) => {\r\n\t\t\t\t\tconsole.log(error)\r\n\t\t\t\t})\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Get a default criteria feedback.\r\n\t\t// @arg The rubic criteria used.\r\n\t\tgetDefaultCriteriaFeedback(criteria) {\r\n\t\t\tconst criteriaFeedbacks = []\r\n\t\t\tfor (let i = 0; i < criteria.length; i++) {\r\n\t\t\t\tconst criteriaFeedback = {\r\n\t\t\t\t\tCriteriaId: criteria[i].Id,\r\n\t\t\t\t\tMark: 999,\r\n\t\t\t\t\tComment: '',\r\n\t\t\t\t\tAudioPath: null,\r\n\t\t\t\t\tLetterGrade: null\r\n\t\t\t\t}\r\n\t\t\t\tcriteriaFeedbacks.push(criteriaFeedback)\r\n\t\t\t}\r\n\t\t\treturn criteriaFeedbacks\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Handles logics when a project is selected.\r\n\t\tasync onAssignmentChange() {\r\n\t\t\tthis.pageNum = 1\r\n\t\t\tthis.review = null\r\n\t\t\tthis.submissions = []\r\n\t\t\tthis.currentSubmission = null\r\n\t\t\t// this.revieweeId = null;\r\n\t\t\tthis.assignmentId = this.currentAssignment.Id\r\n\t\t\tthis.revieweeId = this.$store.state.auth.user.UserName\r\n\t\t\tif (this.currentAssignment.IsGroupAssignment) {\r\n\t\t\t\tconst hasTeam = await this.getTeam()\r\n\t\t\t\tif (hasTeam) {\r\n\t\t\t\t\tconst reviewerSetupComplete = await this.setUpReviewerSelection()\r\n\t\t\t\t\tif (reviewerSetupComplete) { this.displayDocumentAndReview() }\r\n\t\t\t\t} else {\r\n\t\t\t\t\tNotification.info({\r\n\t\t\t\t\t\tduration: 6000,\r\n\t\t\t\t\t\ttitle: 'Info',\r\n\t\t\t\t\t\tmessage: 'You have not been assigned into a team for this group project.'\r\n\t\t\t\t\t})\r\n\t\t\t\t\tdocument.getElementById('full_width_container').style.display = 'none'\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tconst reviewerSetupComplete = await this.setUpReviewerSelection()\r\n\t\t\t\tif (reviewerSetupComplete) { this.displayDocumentAndReview() }\r\n\t\t\t}\r\n\t\t\tthis.$router.push('/view_feedback/' + this.assignmentId)\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Handles logics when a reviewer is selected.\r\n\t\tonReviewerChange() {\r\n\t\t\tthis.pageNum = 1\r\n\t\t\tthis.reviewerId = this.currentReviewer.UserName.split(';')[1]\r\n\t\t\tconst thisIndex = this.reviewers.findIndex(x => x.UserName == this.currentReviewer.UserName)\r\n\t\t\tif (thisIndex == 0) {\r\n\t\t\t\tthis.prevBtnDisable = true\r\n\t\t\t\tif (this.reviewers.length > 1 && this.nextBtnDisable == true) { this.nextBtnDisable = false }\r\n\t\t\t}\r\n\t\t\tif (thisIndex == this.reviewers.length - 1) {\r\n\t\t\t\tthis.nextBtnDisable = true\r\n\t\t\t\tif (this.reviewers.length > 1 && this.prevBtnDisable == true) { this.prevBtnDisable = false }\r\n\t\t\t}\r\n\t\t\tthis.displayDocumentAndReview()\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Handles logics when the previous reviewer arrow is clicked.\r\n\t\tpreviousReviewer() {\r\n\t\t\tconst thisIndex = this.reviewers.findIndex(x => x.UserName == this.currentReviewer.UserName)\r\n\t\t\tif (thisIndex - 1 == 0) {\r\n\t\t\t\tthis.prevBtnDisable = true\r\n\t\t\t}\r\n\t\t\tif (this.reviewers.length > 1) { this.nextBtnDisable = false }\r\n\t\t\tthis.currentReviewer = this.reviewers[thisIndex - 1]\r\n\t\t\tthis.pageNum = 1\r\n\t\t\tthis.reviewerId = this.currentReviewer.UserName.split(';')[1]\r\n\t\t\tthis.displayDocumentAndReview()\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Handles logics when the next reviewer arrow is clicked.\r\n\t\tnextReviewer() {\r\n\t\t\tconst thisIndex = this.reviewers.findIndex(x => x.UserName == this.currentReviewer.UserName)\r\n\t\t\tif (thisIndex == this.reviewers.length - 2) {\r\n\t\t\t\tthis.nextBtnDisable = true\r\n\t\t\t}\r\n\t\t\tif (this.reviewers.length > 1) { this.prevBtnDisable = false }\r\n\t\t\tthis.currentReviewer = this.reviewers[thisIndex + 1]\r\n\t\t\tthis.pageNum = 1\r\n\t\t\tthis.reviewerId = this.currentReviewer.UserName.split(';')[1]\r\n\t\t\tthis.displayDocumentAndReview()\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Configures Rad PDf for displaying the document.\r\n\t\tPdfAttachListeners() {\r\n\t\t\tconst id = 'PdfWebControl'\r\n\t\t\t// eslint-disable-next-line no-undef\r\n\t\t\tthis.myapi = new PdfWebControlApi(id)\r\n\t\t\tthis.myapi.addEventListener('modeChanged', function(evt) {\r\n\t\t\t\tevt.byLine = true\r\n\t\t\t})\r\n\t\t\tconst that = this\r\n\t\t\tthis.myapi.addEventListener('viewChanged', function(evt) {\r\n\t\t\t\tthat.pageNum = that.myapi.getPageViewed().getPageNumber()\r\n\t\t\t})\r\n\r\n\t\t\tthis.myapi.addEventListener('objectAdded', function(evt) {\r\n\t\t\t\tif (evt.obj.getType() == 154) { // Highlight annotation\r\n\t\t\t\t\tconst props = evt.obj.getProperties()\r\n\t\t\t\t\tconst popup = evt.obj.getPopup()\r\n\r\n\t\t\t\t\tevt.obj.setProperties({\r\n\t\t\t\t\t\t'customData': evt.textSelected\r\n\t\t\t\t\t})\r\n\r\n\t\t\t\t\tpopup.setProperties(\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tauthor: 'RAD PDF',\r\n\t\t\t\t\t\t\tsubject: 'In-text Comment',\r\n\t\t\t\t\t\t\ttop: props['top'] - 60,\r\n\t\t\t\t\t\t\tleft: props['left'] - 5,\r\n\t\t\t\t\t\t\theight: 60\r\n\t\t\t\t\t\t})\r\n\r\n\t\t\t\t\tthat.myapi.setMode(that.myapi.Mode.None)\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (evt.obj.getType() == 100) {\r\n\t\t\t\t\tthat.myapi.setMode(that.myapi.Mode.None)\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (evt.obj.getType() == 101) {\r\n\t\t\t\t\tthat.myapi.setMode(that.myapi.Mode.None)\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (evt.obj.getType() == that.myapi.ObjectType.StrikeoutAnnotation) {\r\n\t\t\t\t\tthat.myapi.setMode(that.myapi.Mode.None)\r\n\t\t\t\t}\r\n\t\t\t\tif (evt.obj.getType() == that.myapi.ObjectType.TextAnnotation) {\r\n\t\t\t\t\tthat.myapi.setMode(that.myapi.Mode.None)\r\n\t\t\t\t}\r\n\t\t\t})\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Handles logics when the page number is changed.\r\n\t\tchangePage() {\r\n\t\t\tthis.myapi.setView({ 'page': this.pageNum })\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Handles logics when the zoom out button is clicked.\r\n\t\tzoomOut() {\r\n\t\t\tif (this.myapi) {\r\n\t\t\t\tif (this.zoomValue > 40) { this.myapi.setView({ 'zoom': this.zoomValue -= 20 }) }\r\n\t\t\t}\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Handles logics when the zoom in button is clicked.\r\n\t\tzoomIn() {\r\n\t\t\tif (this.myapi) {\r\n\t\t\t\tif (this.zoomValue < 200 && this.zoomValue > 20) { this.myapi.setView({ 'zoom': this.zoomValue += 20 }) }\r\n\t\t\t}\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Handles logics when the zoom fit width button is clicked.\r\n\t\tzoomFitWidth() {\r\n\t\t\tif (this.myapi) {\r\n\t\t\t\tthis.zoomValue = 140\r\n\t\t\t\tthis.myapi.setView({ 'zoom': -1 })\r\n\t\t\t}\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Handles logics when the download button is clicked.\r\n\t\tdownloadPdf() {\r\n\t\t\t// const myapi = new PdfWebControlApi('PdfWebControl')\r\n\t\t\tif (this.myapi) {\r\n\t\t\t\tconst downloadUrl = this.myapi.getDownloadUrl()\r\n\t\t\t\tconst url = urlUtils.getBaseURL() + '/' + downloadUrl\r\n\t\t\t\tconst a = document.createElement('a')\r\n\t\t\t\ta.href = url\r\n\t\t\t\ta.download = url.split('/').pop()\r\n\t\t\t\tdocument.body.appendChild(a)\r\n\t\t\t\ta.click()\r\n\t\t\t\tdocument.body.removeChild(a)\r\n\r\n\t\t\t\t// console.log(downloadUrl)\r\n\t\t\t\t// myapi.download()\r\n\t\t\t}\r\n\t\t\treturn false\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Handles logics when the select text button is clicked.\r\n\t\tselectTextPdf() {\r\n\t\t\tif (this.myapi) {\r\n\t\t\t\tthis.myapi.setMode(this.myapi.Mode.SelectText)\r\n\t\t\t}\r\n\t\t\treturn false\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Handles logics when the highlight button is clicked.\r\n\t\thighlightPdf() {\r\n\t\t\tif (this.myapi) {\r\n\t\t\t\tthis.myapi.setMode(this.myapi.Mode.InsertHighlightAnnotation)\r\n\t\t\t}\r\n\t\t\treturn false\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Handles logics when the free text button is clicked.\r\n\t\tfreeTextPdf() {\r\n\t\t\tif (this.myapi) {\r\n\t\t\t\tthis.myapi.setMode(this.myapi.Mode.InsertTextShape)\r\n\t\t\t}\r\n\t\t\treturn false\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Handles logics when the strike out button is clicked.\r\n\t\tstrikeOutPdf() {\r\n\t\t\tif (this.myapi) {\r\n\t\t\t\tthis.myapi.setMode(this.myapi.Mode.InsertStrikeoutAnnotation)\r\n\t\t\t}\r\n\t\t\treturn false\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Handles logics when the free draw button is clicked.\r\n\t\tfreeDrawPdf() {\r\n\t\t\tif (this.myapi) {\r\n\t\t\t\tthis.myapi.setMode(this.myapi.Mode.InsertInkShape)\r\n\t\t\t}\r\n\t\t\treturn false\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Handles logics when the sticky note button is clicked.\r\n\t\tstickyNotePdf() {\r\n\t\t\tif (this.myapi) {\r\n\t\t\t\tthis.myapi.setMode(this.myapi.Mode.InsertTextAnnotation)\r\n\t\t\t}\r\n\t\t\treturn false\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Go back to Student Submissions page.\r\n\t\tbackToStudentSubmissions() {\r\n\t\t\tthis.$router.push('/course/' + this.classCode + '/projects/' + this.assignmentId + '/submissions')\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Go back to Projects page.\r\n\t\tbackToAssignments() {\r\n\t\t\tthis.$router.push('/course/' + this.classCode + '/projects/old')\r\n\t\t},\r\n\t\tgetUrlParameter(sParam) {\r\n\t\t\tconst sPageURL = decodeURIComponent(window.location.search.substring(1))\r\n\r\n\t\t\tconst sURLVariables = sPageURL.split('&')\r\n\r\n\t\t\tlet sParameterName\r\n\r\n\t\t\tlet i\r\n\r\n\t\t\tfor (i = 0; i < sURLVariables.length; i++) {\r\n\t\t\t\tsParameterName = sURLVariables[i].split('=')\r\n\r\n\t\t\t\tif (sParameterName[0] === sParam) {\r\n\t\t\t\t\treturn sParameterName[1] === undefined ? true : sParameterName[1]\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t},\r\n\t\tgetlastActivityDate() {\r\n\t\t\tconst today = this.$moment()._d\r\n\t\t\treturn today.getFullYear() + '-' + (today.getMonth() + 1) + '-' +\r\n today.getDate() + ' ' + today.getHours() + ':' + today.getMinutes() + ':' + today.getSeconds()\r\n\t\t},\r\n\t\tgetDateStr(date) {\r\n\t\t\tconst thisDate = this.$moment(date)._d\r\n\t\t\treturn thisDate.getFullYear() + '-' + (thisDate.getMonth() + 1) + '-' +\r\n thisDate.getDate() + ' ' + thisDate.getHours() + ':' + thisDate.getMinutes() + ':' + thisDate.getSeconds()\r\n\t\t},\r\n\t\tstdTimezoneOffset(date) {\r\n\t\t\tvar jan = new Date(date.getFullYear(), 0, 1)\r\n\t\t\tvar jul = new Date(date.getFullYear(), 6, 1)\r\n\t\t\treturn Math.max(jan.getTimezoneOffset(), jul.getTimezoneOffset())\r\n\t\t},\r\n\t\tisDstObserved(date) {\r\n\t\t\treturn date.getTimezoneOffset() < this.stdTimezoneOffset(date)\r\n\t\t},\r\n\t\tconvertToEST(clientDate) {\r\n\t\t\tlet offset = -5.0 // EST standard\r\n\t\t\t// Check for daylight saving\r\n\t\t\tif (this.isDstObserved(clientDate)) {\r\n\t\t\t\toffset = -4.0\r\n\t\t\t}\r\n\t\t\tconst utc = clientDate.getTime() + (clientDate.getTimezoneOffset() * 60000)\r\n\t\t\tconst serverDate = new Date(utc + (3600000 * offset))\r\n\t\t\t// return serverDate.toLocaleString()\r\n\t\t\treturn this.getDateStr(serverDate)\r\n\t\t}\r\n\t}\r\n}\r\n</script>\r\n\r\n<style scoped>\r\nbody{\r\n background: #F1F3FA;\r\n}\r\n#content-wrapper {\r\n margin-left: 65px;\r\n}\r\n\r\n.el-card{\r\n border: 1px solid #d4d5d6;\r\n}\r\n.el-card.is-always-shadow, .el-card.is-hover-shadow:focus, .el-card.is-hover-shadow:hover {\r\n -webkit-box-shadow: 0 2px 12px 0 #F1F3FA;\r\n box-shadow: 0 2px 12px 0 #F1F3FA;\r\n}\r\n\r\n.el-card__header {\r\n padding: 12px 12px;\r\n}\r\n\r\n.el-card__body {\r\n padding: 10px;\r\n}\r\n\r\n.el-textarea__inner {\r\n padding: 5px 10px;\r\n}\r\n\r\n.filter-btn{\r\n text-align: center;\r\n box-shadow: none;\r\n display: inline-block;\r\n padding: 0px 10px;\r\n vertical-align: middle;\r\n touch-action: manipulation;\r\n cursor: pointer;\r\n color: #636363;\r\n}\r\n\r\n.filter-divider{\r\n float: left;\r\n border-right: solid 1px #cccccc;\r\n height: 50px;\r\n}\r\n\r\n#full_width_container.full-width {\r\n position: absolute;\r\n top: 3.1325em;\r\n bottom: 2px;\r\n left: 215px;\r\n right: 0;\r\n min-width: 460px;\r\n}\r\n\r\n#full_width_container{\r\n position: absolute;\r\n top: 3.1325em;\r\n bottom: 2px;\r\n left: 65px;\r\n right: 0;\r\n min-width: 460px;\r\n}\r\n\r\n#left_side {\r\n top: 0;\r\n bottom: 0;\r\n overflow-y: hidden;\r\n left: 0;\r\n min-width: 700px;\r\n}\r\n#right_side {\r\n top: 0;\r\n bottom: 0;\r\n right: 0;\r\n font-size: 14px;\r\n font-size: .875rem;\r\n}\r\n.el-input-number--small{\r\n width: 100px;\r\n}\r\n.el-radio-button >>> .el-radio-button__inner{\r\n padding: 12px 15px;\r\n}\r\n\r\n.full_height {\r\n height: 100%;\r\n overflow-x: auto;\r\n}\r\n\r\n#left_side_inner, #submissions_container, #iframe_holder{\r\n height: 100%;\r\n width: 100%;\r\n border: 0 none;\r\n}\r\niframe{\r\n width: 100%;\r\n border: 0px;\r\n overflow: auto;\r\n height: 99%;\r\n min-height: 0px;\r\n}\r\n\r\n#width_resizer {\r\n position: absolute;\r\n top: 0;\r\n bottom: 0;\r\n left: 0;\r\n background: #bbb url(https://du11hjcvx0uqb.cloudfront.net/dist/images/splitpane_handle-ew-1b67cccf0f.gif) no-repeat scroll 50% 50%;\r\n cursor: pointer;\r\n width: 7px;\r\n border-right: 1px solid #838383;\r\n z-index: 2;\r\n}\r\n.right_side_content {\r\n position: absolute;\r\n top: 0;\r\n bottom: 0;\r\n left: 8px;\r\n right: 0;\r\n}\r\n#right_side #rightside_inner {\r\n overflow-y: auto;\r\n position: relative;\r\n}\r\n\r\n.ViewerControls--with-annotations {\r\n height: 49px;\r\n}\r\n.ViewerControls {\r\n background-color: #636363;\r\n color: #fff;\r\n font-size: 14px;\r\n line-height: 24px;\r\n /* overflow-x: auto; */\r\n /* position: absolute;\r\n width: 100%; */\r\n}\r\n.ViewerControls-primary {\r\n -ms-touch-action: none;\r\n touch-action: none;\r\n pointer-events: all;\r\n display: -webkit-box;\r\n display: -ms-flexbox;\r\n display: flex;\r\n}\r\n.ViewerControls--download, .ViewerControls--title {\r\n -webkit-box-flex: 1;\r\n -ms-flex: 1;\r\n flex: 1;\r\n display: -webkit-box;\r\n display: -ms-flexbox;\r\n display: flex;\r\n -webkit-box-align: center;\r\n -ms-flex-align: center;\r\n align-items: center;\r\n white-space: nowrap;\r\n}\r\n\r\n.download-button--button {\r\n background-color: transparent;\r\n font-size: 16px;\r\n border: none;\r\n height: 48px;\r\n width: 48px;\r\n color: white;\r\n cursor: pointer;\r\n}\r\n/* .download-button--button:hover {\r\n background-color: #777777;\r\n} */\r\n\r\n.ViewerControls--page-controls {\r\n display: -webkit-box;\r\n display: -ms-flexbox;\r\n display: flex;\r\n -webkit-box-align: center;\r\n -ms-flex-align: center;\r\n align-items: center;\r\n white-space: nowrap;\r\n}\r\n\r\n.DocumentControls {\r\n display: -webkit-box;\r\n display: -ms-flexbox;\r\n display: flex;\r\n -webkit-box-align: center;\r\n -ms-flex-align: center;\r\n align-items: center;\r\n}\r\n\r\n.AnnotationControlButton {\r\n width: 48px;\r\n padding: 0;\r\n border: 0 none;\r\n color: #fff;\r\n background-color: #636363;\r\n margin-top: 0;\r\n margin-bottom: 0;\r\n cursor: pointer;\r\n -webkit-box-sizing: content-box;\r\n box-sizing: content-box;\r\n -webkit-touch-callout: none;\r\n user-select: none;\r\n -moz-user-select: none;\r\n -webkit-user-select: none;\r\n -ms-user-select: none;\r\n -webkit-tap-highlight-color: rgba(0,0,0,0);\r\n}\r\n.AnnotationControlButton-inner, .AnnotationControlButton-outer {\r\n -webkit-box-sizing: content-box;\r\n box-sizing: content-box;\r\n display: -webkit-box;\r\n display: -ms-flexbox;\r\n display: flex;\r\n}\r\n\r\n.AnnotationControlButton-inner {\r\n margin: 0;\r\n height: 44px;\r\n width: 48px;\r\n -webkit-box-pack: center;\r\n -ms-flex-pack: center;\r\n justify-content: center;\r\n -webkit-box-align: center;\r\n -ms-flex-align: center;\r\n align-items: center;\r\n}\r\n\r\n.AnnotationControlButton-inner {\r\n margin: 0;\r\n height: 44px;\r\n width: 48px;\r\n -webkit-box-pack: center;\r\n -ms-flex-pack: center;\r\n justify-content: center;\r\n -webkit-box-align: center;\r\n -ms-flex-align: center;\r\n align-items: center;\r\n}\r\n.AnnotationControlButton-outer {\r\n width: 44px;\r\n margin: 1px;\r\n border: 1px solid #636363;\r\n}\r\n\r\n.ViewerControls--current-page {\r\n -moz-appearance: textfield;\r\n margin-top: 10px;\r\n border-radius: 3px;\r\n border: 0;\r\n height: 28px;\r\n width: 36px;\r\n background-color: #fff;\r\n color: #636363;\r\n font-size: 14px;\r\n text-align: center;\r\n vertical-align: top;\r\n}\r\n.next-prev{\r\n text-align: center;\r\n -webkit-box-shadow: none;\r\n box-shadow: none;\r\n display: inline-block;\r\n padding: 0px 10px;\r\n vertical-align: middle;\r\n -ms-touch-action: manipulation;\r\n touch-action: manipulation;\r\n cursor: pointer;\r\n border: 0 none;\r\n background: none;\r\n}\r\n/* .AnnotationControlButton.selected .AnnotationControlButton-outer {\r\n border-color: #fff;\r\n border: 1px solid #fff;\r\n color: #636363;\r\n}\r\n.AnnotationControlButton.selected {\r\n outline: none;\r\n background-color: #fff;\r\n}\r\n\r\n.AnnotationControlButton:active .AnnotationControlButton-outer {\r\n -webkit-box-shadow: inset 0 0 2px #000;\r\n box-shadow: inset 0 0 2px #000;\r\n}\r\n.AnnotationControlButton:hover:enabled .AnnotationControlButton-outer {\r\n border-color: #777777;\r\n}\r\n.AnnotationControlButton:hover:enabled {\r\n background-color: #777777;\r\n} */\r\n\r\n</style>\r\n\r\n<style>\r\n.el-radio-button__orig-radio:disabled:checked+.el-radio-button__inner {\r\n background-color: #0A7756;\r\n color: white;\r\n}\r\n</style>\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ViewOldFeedback.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ViewOldFeedback.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./ViewOldFeedback.vue?vue&type=template&id=7e4672e0&scoped=true&\"\nimport script from \"./ViewOldFeedback.vue?vue&type=script&lang=js&\"\nexport * from \"./ViewOldFeedback.vue?vue&type=script&lang=js&\"\nimport style0 from \"./ViewOldFeedback.vue?vue&type=style&index=0&id=7e4672e0&scoped=true&lang=css&\"\nimport style1 from \"./ViewOldFeedback.vue?vue&type=style&index=1&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"7e4672e0\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('div',{staticStyle:{\"height\":\"50px\",\"border-bottom\":\"#cccccc solid 1px\"},attrs:{\"id\":\"filter\"}},[_c('div',{staticClass:\"filter-divider\",staticStyle:{\"width\":\"220px\"}},[(!_vm.readOnly && _vm.reviewerRole == 'Student')?_c('el-button',{staticStyle:{\"text-align\":\"center\",\"-webkit-box-shadow\":\"none\",\"box-shadow\":\"none\",\"display\":\"inline-block\",\"padding\":\"0px\",\"padding-right\":\"10px\",\"vertical-align\":\"middle\",\"-ms-touch-action\":\"manipulation\",\"touch-action\":\"manipulation\",\"cursor\":\"pointer\",\"border\":\"0 none\",\"background\":\"none\"},attrs:{\"title\":\"Back to Projects\"},on:{\"click\":function($event){return _vm.backToAssignments()}}},[_c('i',{staticClass:\"fas fa-chevron-left\",staticStyle:{\"font-size\":\"25px\"}})]):_c('el-button',{staticStyle:{\"text-align\":\"center\",\"-webkit-box-shadow\":\"none\",\"box-shadow\":\"none\",\"display\":\"inline-block\",\"padding\":\"0px\",\"padding-right\":\"10px\",\"vertical-align\":\"middle\",\"-ms-touch-action\":\"manipulation\",\"touch-action\":\"manipulation\",\"cursor\":\"pointer\",\"border\":\"0 none\",\"background\":\"none\"},attrs:{\"title\":\"Back to Student Submissions\"},on:{\"click\":function($event){return _vm.backToStudentSubmissions()}}},[_c('i',{staticClass:\"fas fa-chevron-left\",staticStyle:{\"font-size\":\"25px\"}})]),_c('el-tooltip',{staticClass:\"item\",attrs:{\"effect\":\"light\",\"content\":\"Select a project\",\"placement\":\"bottom\"}},[_c('el-select',{staticStyle:{\"margin-top\":\"5px\",\"width\":\"80%\"},attrs:{\"id\":\"assignments-selection\",\"value-key\":\"Id\",\"filterable\":\"\",\"placeholder\":\"Select Project\",\"no-match-text\":\"No Matching Data\",\"no-data-text\":\"No data\",\"loading-text\":\"Loading\",\"disabled\":_vm.readOnly},on:{\"change\":function($event){return _vm.onAssignmentChange()}},model:{value:(_vm.currentAssignment),callback:function ($$v) {_vm.currentAssignment=$$v},expression:\"currentAssignment\"}},_vm._l((_vm.assignments),function(item){return _c('el-option',{key:item.Id,attrs:{\"label\":item.AssignmentName,\"value\":item}})}),1)],1)],1),(_vm.readOnly)?_c('div',[(!_vm.currentAssignment.IsGroupAssignment)?_c('div',{staticClass:\"filter-divider\",staticStyle:{\"width\":\"285px\"}},[_c('el-button',{staticStyle:{\"text-align\":\"center\",\"-webkit-box-shadow\":\"none\",\"box-shadow\":\"none\",\"display\":\"inline-block\",\"padding\":\"0px 10px\",\"vertical-align\":\"middle\",\"-ms-touch-action\":\"manipulation\",\"touch-action\":\"manipulation\",\"cursor\":\"pointer\",\"border\":\"0 none\",\"background\":\"none\"},attrs:{\"disabled\":_vm.prevBtnDisable,\"title\":\"Previous student\"},on:{\"click\":_vm.previousStudent}},[_c('i',{staticClass:\"fas fa-arrow-left\",staticStyle:{\"font-size\":\"25px\"}})]),_c('el-tooltip',{staticClass:\"item\",attrs:{\"effect\":\"light\",\"content\":\"Select a student\",\"placement\":\"bottom\"}},[_c('el-select',{staticStyle:{\"margin-top\":\"5px\",\"width\":\"200px\"},attrs:{\"id\":\"students-selection\",\"value-key\":\"UserName\",\"filterable\":\"\",\"placeholder\":\"Select Student\"},on:{\"change\":function($event){return _vm.onStudentChange()}},model:{value:(_vm.currentStudent),callback:function ($$v) {_vm.currentStudent=$$v},expression:\"currentStudent\"}},_vm._l((_vm.students),function(item){return _c('el-option',{key:item.UserName,attrs:{\"label\":item.LastName + ', ' + item.FirstName,\"value\":item}})}),1)],1),_c('el-button',{staticStyle:{\"text-align\":\"center\",\"-webkit-box-shadow\":\"none\",\"box-shadow\":\"none\",\"display\":\"inline-block\",\"padding\":\"0px 10px\",\"vertical-align\":\"middle\",\"-ms-touch-action\":\"manipulation\",\"touch-action\":\"manipulation\",\"cursor\":\"pointer\",\"border\":\"0 none\",\"background\":\"none\"},attrs:{\"disabled\":_vm.nextBtnDisable,\"title\":\"Next student\"},on:{\"click\":_vm.nextStudent}},[_c('i',{staticClass:\"fas fa-arrow-right\",staticStyle:{\"font-size\":\"25px\"}})])],1):_vm._e()]):_vm._e(),_c('div',{staticStyle:{\"width\":\"350px\",\"float\":\"left\"}},[_c('el-tooltip',{staticClass:\"item\",attrs:{\"effect\":\"light\",\"content\":\"Submission to view\",\"placement\":\"bottom\"}},[_c('el-select',{staticStyle:{\"margin-top\":\"5px\",\"margin-left\":\"10px\",\"margin-right\":\"10px\"},attrs:{\"id\":\"submissions-selection\",\"value-key\":\"docId\",\"filterable\":\"\",\"placeholder\":\"Select Submission\",\"no-match-text\":\"No Matching Data\",\"no-data-text\":\"No data\",\"loading-text\":\"Loading\"},on:{\"change\":function($event){return _vm.onSubmissionChange()}},model:{value:(_vm.currentSubmission),callback:function ($$v) {_vm.currentSubmission=$$v},expression:\"currentSubmission\"}},_vm._l((_vm.submissions),function(item){return _c('el-option',{key:item.docId,attrs:{\"label\":_vm._f(\"formatDate\")(item.uploadedDate),\"value\":item}})}),1)],1),(_vm.docId && _vm.onTime)?_c('el-tooltip',{staticClass:\"item\",attrs:{\"effect\":\"light\",\"content\":'Submitted on time at ' + _vm.formatDate(_vm.uploadedDate) + '. Due date is ' + _vm.formatDate(_vm.dueDate) + '.',\"placement\":\"bottom\"}},[_c('i',{staticClass:\"far fa-calendar-check\",staticStyle:{\"font-size\":\"30px\",\"color\":\"rgb(59, 146, 120)\",\"position\":\"absolute\",\"margin-top\":\"10px\"}})]):(_vm.docId && !_vm.onTime)?_c('el-tooltip',{staticClass:\"item\",attrs:{\"effect\":\"light\",\"content\":'Submitted late at ' + _vm.formatDate(_vm.uploadedDate) + '. Due date is ' + _vm.formatDate(_vm.dueDate) + '.',\"placement\":\"bottom\"}},[_c('i',{staticClass:\"far fa-calendar-times\",staticStyle:{\"font-size\":\"30px\",\"color\":\"#f57575\",\"position\":\"absolute\",\"margin-top\":\"10px\"}})]):_vm._e()],1),_c('div',{staticStyle:{\"float\":\"right\",\"position\":\"absolute\",\"right\":\"0\"}},[_c('el-tooltip',{staticClass:\"item\",staticStyle:{\"display\":\"none\"},attrs:{\"id\":\"savedMessage\",\"effect\":\"light\",\"placement\":\"bottom\",\"content\":'Your feedback was successfully saved.'}},[_c('el-tag',{staticStyle:{\"line-height\":\"40px\",\"height\":\"40px\",\"margin-right\":\"5px\"},attrs:{\"type\":\"success\"}},[_vm._v(\"\\n Saved!\\n \")])],1),(_vm.review && !_vm.readOnly)?_c('el-button',{staticStyle:{\"margin-top\":\"5px\",\"margin-right\":\"5px\"},attrs:{\"type\":_vm.statusType,\"title\":_vm.submitTooltip},on:{\"click\":function($event){return _vm.submitReview()}}},[_vm._v(\"\\n Submit\\n \")]):_vm._e(),(!_vm.review && !_vm.readOnly && _vm.docId)?_c('el-button',{staticStyle:{\"margin-top\":\"5px\",\"margin-right\":\"5px\"},attrs:{\"type\":\"info\",\"disabled\":true}},[_vm._v(\"\\n Submit\\n \")]):_vm._e()],1)]),_c('div',{class:_vm.fullWidth,attrs:{\"id\":\"full_width_container\"}},[_c('rs-panes',{attrs:{\"split-to\":\"columns\",\"allow-resize\":true,\"units\":\"percents\",\"size\":70,\"min-size\":0,\"resizer-thickness\":6}},[_c('div',{staticStyle:{\"height\":\"100%\"},attrs:{\"slot\":\"firstPane\"},slot:\"firstPane\"},[_c('div',{staticClass:\"full_height\",attrs:{\"id\":\"left_side\"}},[_c('div',{attrs:{\"id\":\"left_side_inner\"}},[_c('div',{attrs:{\"id\":\"submissions_container\"}},[_c('nav',{staticClass:\"ViewerControls ViewerControls--with-annotations\"},[_c('div',{staticClass:\"ViewerControls-primary\"},[_c('div',{staticClass:\"ViewerControls--download\"},[_c('div',{staticStyle:{\"min-width\":\"50px\",\"text-align\":\"center\"}},[_c('div',[_c('button',{staticClass:\"download-button--button\",attrs:{\"title\":\"Download annotated PDF\",\"aria-label\":\"Download annotated PDF\"},on:{\"click\":function($event){return _vm.downloadPdf()}}},[_c('i',{staticClass:\"fas fa-file-download\",staticStyle:{\"font-size\":\"22px\"}})])])])]),_c('div',{staticClass:\"ViewerControls--title\"}),_c('div',{staticClass:\"ViewerControls--page-controls\"},[_c('span',{staticClass:\"ViewerControls--page-number\",staticStyle:{\"display\":\"flex\",\"align-items\":\"center\"}},[_vm._v(\"\\n Page\\n \"),_c('div',{staticStyle:{\"padding-left\":\"10px\",\"padding-right\":\"10px\"}},[_c('el-input-number',{attrs:{\"min\":1,\"max\":_vm.totalPageNumber,\"size\":\"small\",\"label\":\"Page\"},on:{\"change\":_vm.changePage},model:{value:(_vm.pageNum),callback:function ($$v) {_vm.pageNum=$$v},expression:\"pageNum\"}})],1),_vm._v(\"\\n of \"+_vm._s(_vm.totalPageNumber)+\"\\n \")]),_c('svg',{staticStyle:{\"margin-left\":\"12px\",\"margin-right\":\"0px\",\"width\":\"2px\",\"height\":\"26px\",\"color\":\"rgb(171, 179, 186)\"},attrs:{\"viewBox\":\"0 0 2 26\"}},[_c('line',{attrs:{\"stroke\":\"currentColor\",\"stroke-dasharray\":\"2, 1\",\"stroke-width\":\"1\",\"x1\":\"1\",\"y1\":\"0\",\"x2\":\"1\",\"y2\":\"26\"}})])]),_c('nav',{staticClass:\"DocumentControls\"},[_c('div',{staticStyle:{\"display\":\"inline-flex\",\"align-items\":\"center\",\"user-select\":\"none\"}},[_c('button',{staticClass:\"AnnotationControlButton\",attrs:{\"aria-label\":\"Zoom Out\",\"title\":\"Zoom Out\",\"aria-disabled\":\"false\"},on:{\"click\":_vm.zoomOut}},[_c('i',{staticClass:\"fas fa-minus\",staticStyle:{\"font-size\":\"20px\"}})]),_c('span',{staticStyle:{\"text-transform\":\"uppercase\",\"font-size\":\"0.75rem\",\"color\":\"rgb(238, 238, 239)\",\"margin-left\":\"4px\",\"margin-right\":\"4px\"},attrs:{\"aria-hidden\":\"true\"}},[_vm._v(\"\\n Zoom\\n \")]),_c('button',{staticClass:\"AnnotationControlButton\",attrs:{\"aria-label\":\"Zoom In\",\"title\":\"Zoom In\",\"aria-disabled\":\"false\"},on:{\"click\":_vm.zoomIn}},[_c('i',{staticClass:\"fas fa-plus\",staticStyle:{\"font-size\":\"20px\"}})])]),_c('svg',{staticStyle:{\"margin-left\":\"2px\",\"margin-right\":\"4px\",\"width\":\"2px\",\"height\":\"26px\",\"color\":\"rgb(171, 179, 186)\"},attrs:{\"viewBox\":\"0 0 2 26\"}},[_c('line',{attrs:{\"stroke\":\"currentColor\",\"stroke-dasharray\":\"2, 1\",\"stroke-width\":\"1\",\"x1\":\"1\",\"y1\":\"0\",\"x2\":\"1\",\"y2\":\"26\"}})]),_c('div',{staticClass:\"ViewerControls--page-controls\"},[_c('button',{staticClass:\"AnnotationControlButton full-screen-button\",attrs:{\"aria-label\":\"Enter Full Screen\",\"title\":\"Zoom Fit Width\"},on:{\"click\":_vm.zoomFitWidth}},[_c('i',{staticClass:\"fas fa-expand\",staticStyle:{\"font-size\":\"20px\"}})]),_c('svg',{staticStyle:{\"margin-left\":\"4px\",\"margin-right\":\"4px\",\"width\":\"2px\",\"height\":\"26px\",\"color\":\"rgb(171, 179, 186)\"},attrs:{\"viewBox\":\"0 0 2 26\"}},[_c('line',{attrs:{\"stroke\":\"currentColor\",\"stroke-dasharray\":\"2, 1\",\"stroke-width\":\"1\",\"x1\":\"1\",\"y1\":\"0\",\"x2\":\"1\",\"y2\":\"26\"}})])])]),_c('nav',{staticClass:\"AnnotationControls\"},[_c('button',{staticClass:\"AnnotationControlButton\",attrs:{\"aria-label\":\"Enter selection mode\",\"title\":\"Selection\"},on:{\"click\":_vm.selectTextPdf}},[_c('div',{staticClass:\"AnnotationControlButton-outer\"},[_c('div',{staticClass:\"AnnotationControlButton-inner\"},[_c('i',{staticClass:\"fas fa-mouse-pointer\",staticStyle:{\"font-size\":\"20px\"}})])])]),(_vm.userRole == 'Student')?_c('button',{staticClass:\"AnnotationControlButton\",attrs:{\"aria-label\":\"highlight annotation\",\"title\":\"Highlight annotation\"},on:{\"click\":_vm.highlightPdf}},[_c('div',{staticClass:\"AnnotationControlButton-outer\"},[_c('div',{staticClass:\"AnnotationControlButton-inner\"},[_c('i',{staticClass:\"fas fa-highlighter\",staticStyle:{\"font-size\":\"20px\"}})])])]):_vm._e(),(_vm.userRole == 'Student')?_c('button',{staticClass:\"AnnotationControlButton\",attrs:{\"aria-label\":\"strikeout annotation\",\"title\":\"Strikeout annotation\"},on:{\"click\":_vm.strikeOutPdf}},[_c('div',{staticClass:\"AnnotationControlButton-outer\"},[_c('div',{staticClass:\"AnnotationControlButton-inner\"},[_c('i',{staticClass:\"fas fa-strikethrough\",staticStyle:{\"font-size\":\"20px\"}})])])]):_vm._e(),(_vm.userRole == 'Student')?_c('button',{staticClass:\"AnnotationControlButton\",attrs:{\"aria-label\":\"free draw annotation\",\"title\":\"Free draw annotation\"},on:{\"click\":_vm.freeDrawPdf}},[_c('div',{staticClass:\"AnnotationControlButton-outer\"},[_c('div',{staticClass:\"AnnotationControlButton-inner\"},[_c('i',{staticClass:\"fas fa-paint-brush\",staticStyle:{\"font-size\":\"20px\"}})])])]):_vm._e(),(_vm.userRole == 'Student')?_c('button',{staticClass:\"AnnotationControlButton\",attrs:{\"aria-label\":\"Sticky note annotation\",\"title\":\"Sticky note annotation\"},on:{\"click\":_vm.stickyNotePdf}},[_c('div',{staticClass:\"AnnotationControlButton-outer\"},[_c('div',{staticClass:\"AnnotationControlButton-inner\"},[_c('i',{staticClass:\"far fa-sticky-note\",staticStyle:{\"font-size\":\"20px\"}})])])]):_vm._e()])])]),_c('div',{staticStyle:{\"display\":\"block\",\"height\":\"calc(100% - 45px)\"},attrs:{\"id\":\"iframe_holder\"}},[_c('div',{staticStyle:{\"resize\":\"vertical\",\"height\":\"100%\"},attrs:{\"id\":\"pdfDocument\"}})])])]),_c('div',{staticStyle:{\"display\":\"none\",\"position\":\"relative\",\"top\":\"-100%\",\"z-index\":\"1\",\"height\":\"100%\",\"width\":\"100%\",\"border\":\"0 none\"},attrs:{\"id\":\"resize_overlay\"}})])]),_c('div',{attrs:{\"slot\":\"secondPane\"},slot:\"secondPane\"},[_c('div',{staticClass:\"full_height\",attrs:{\"id\":\"right_side\"}},[_c('div',{staticClass:\"right_side_content\"},[_c('div',{staticClass:\"full_height\",attrs:{\"id\":\"rightside_inner\"}},[_c('div',{attrs:{\"id\":\"rubric\"}},[_c('div',{staticStyle:{\"height\":\"100%\",\"overflow\":\"auto\"}},_vm._l((_vm.rubricCriteria),function(criteria,criteriaIndex){return _c('el-card',{key:criteria.Id,staticStyle:{\"margin-bottom\":\"5px\",\"margin-left\":\"3px\"}},[_c('div',{staticClass:\"clearfix\",attrs:{\"slot\":\"header\"},slot:\"header\"},[_c('span',{staticStyle:{\"font-size\":\"16px\",\"font-weight\":\"bold\"}},[_vm._v(\"\\n \"+_vm._s(criteria.CriteriaName)+\"\\n \")]),_c('div',{staticStyle:{\"font-size\":\"14px\",\"margin-top\":\"10px\"}},[(criteria.Description && criteria.Description != '')?_c('el-input',{staticClass:\"criteria-description\",staticStyle:{\"border\":\"none\"},attrs:{\"value\":criteria.Description,\"readonly\":true,\"type\":\"textarea\",\"autosize\":true,\"maxlength\":8000}}):_vm._e()],1)]),_c('div',[(_vm.termCode == '201901')?_c('div',[(criteria.UseAsGrade)?_c('el-radio-group',{staticStyle:{\"margin-bottom\":\"10px\",\"min-width\":\"240px\"},attrs:{\"id\":criteria.Id,\"disabled\":_vm.readOnly},on:{\"input\":function($event){return _vm.saveReview(criteriaIndex)}},model:{value:(_vm.criteriaFeedback[criteriaIndex].Mark),callback:function ($$v) {_vm.$set(_vm.criteriaFeedback[criteriaIndex], \"Mark\", $$v)},expression:\"criteriaFeedback[criteriaIndex].Mark\"}},_vm._l((criteria.RubricCriteriaMilestones.slice()),function(milestone,key){return _c('el-tooltip',{key:milestone.Id,staticClass:\"item\",attrs:{\"effect\":\"light\",\"placement\":\"top\"}},[_c('div',{staticStyle:{\"max-width\":\"500px\"},attrs:{\"slot\":\"content\"},slot:\"content\"},[_vm._v(\"\\n \"+_vm._s(milestone.Description)+\"\\n \")]),_c('el-radio-button',{key:milestone.Id,attrs:{\"label\":criteria.RubricCriteriaMilestones.length - key}})],1)}),1):_vm._e()],1):_c('div',[(criteria.UseAsGrade)?_c('el-radio-group',{staticStyle:{\"margin-bottom\":\"10px\",\"min-width\":\"240px\"},attrs:{\"id\":criteria.Id,\"disabled\":_vm.readOnly},on:{\"input\":function($event){return _vm.saveReview(criteriaIndex)}},model:{value:(_vm.criteriaFeedback[criteriaIndex].Mark),callback:function ($$v) {_vm.$set(_vm.criteriaFeedback[criteriaIndex], \"Mark\", $$v)},expression:\"criteriaFeedback[criteriaIndex].Mark\"}},_vm._l((criteria.RubricCriteriaMilestones.slice()),function(milestone){return _c('el-tooltip',{key:milestone.Id,staticClass:\"item\",attrs:{\"effect\":\"light\",\"placement\":\"top\"}},[_c('div',{staticStyle:{\"max-width\":\"500px\"},attrs:{\"slot\":\"content\"},slot:\"content\"},[_vm._v(\"\\n \"+_vm._s(milestone.Description)+\"\\n \")]),_c('el-radio-button',{key:milestone.Id,attrs:{\"label\":milestone.Value}})],1)}),1):_vm._e()],1),_c('div',[(criteria.UseAsGrade || criteria.UseAsTextComment)?_c('el-input',{staticClass:\"criteria-comment\",attrs:{\"criteria-index\":criteriaIndex,\"type\":\"textarea\",\"placeholder\":\"Enter text here\",\"rows\":3,\"maxlength\":8000,\"readonly\":_vm.readOnly},model:{value:(_vm.criteriaFeedback[criteriaIndex].Comment),callback:function ($$v) {_vm.$set(_vm.criteriaFeedback[criteriaIndex], \"Comment\", $$v)},expression:\"criteriaFeedback[criteriaIndex].Comment\"}}):_vm._e()],1)])])}),1)])])])])])])],1)])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n <div>\r\n <div id=\"filter\" style=\"height: 50px; border-bottom: #cccccc solid 1px;\">\r\n <div class=\"filter-divider\" style=\"width: 220px;\">\r\n <el-button\r\n v-if=\"!readOnly && reviewerRole == 'Student'\"\r\n style=\"text-align: center; -webkit-box-shadow: none; box-shadow: none;\r\n display: inline-block; padding: 0px; padding-right: 10px; vertical-align: middle;\r\n -ms-touch-action: manipulation; touch-action: manipulation;\r\n cursor: pointer; border: 0 none; background: none;\"\r\n title=\"Back to Projects\"\r\n @click=\"backToAssignments()\"\r\n >\r\n <!-- <i class=\"fas fa-tasks\" style=\"font-size: 25px;\" /> -->\r\n <i class=\"fas fa-chevron-left\" style=\"font-size: 25px;\" />\r\n </el-button>\r\n <el-button\r\n v-else\r\n style=\"text-align: center; -webkit-box-shadow: none; box-shadow: none;\r\n display: inline-block; padding: 0px; padding-right: 10px; vertical-align: middle;\r\n -ms-touch-action: manipulation; touch-action: manipulation;\r\n cursor: pointer; border: 0 none; background: none;\"\r\n title=\"Back to Student Submissions\"\r\n @click=\"backToStudentSubmissions()\"\r\n >\r\n <!-- <i class=\"far fa-address-book\" style=\"font-size: 25px;\" /> -->\r\n <i class=\"fas fa-chevron-left\" style=\"font-size: 25px;\" />\r\n </el-button>\r\n <el-tooltip class=\"item\" effect=\"light\" content=\"Select a project\" placement=\"bottom\">\r\n <el-select\r\n id=\"assignments-selection\"\r\n v-model=\"currentAssignment\"\r\n value-key=\"Id\"\r\n filterable\r\n placeholder=\"Select Project\"\r\n no-match-text=\"No Matching Data\"\r\n no-data-text=\"No data\"\r\n loading-text=\"Loading\"\r\n style=\"margin-top: 5px; width: 80%;\"\r\n :disabled=\"readOnly\"\r\n @change=\"onAssignmentChange()\"\r\n >\r\n <el-option\r\n v-for=\"item in assignments\"\r\n :key=\"item.Id\"\r\n :label=\"item.AssignmentName\"\r\n :value=\"item\"\r\n />\r\n </el-select>\r\n </el-tooltip>\r\n </div>\r\n\r\n <div v-if=\"readOnly\">\r\n <div v-if=\"!currentAssignment.IsGroupAssignment\" class=\"filter-divider\" style=\"width: 285px;\">\r\n <el-button\r\n style=\"text-align: center; -webkit-box-shadow: none; box-shadow: none;\r\n display: inline-block; padding: 0px 10px; vertical-align: middle;\r\n -ms-touch-action: manipulation; touch-action: manipulation;\r\n cursor: pointer; border: 0 none; background: none;\"\r\n :disabled=\"prevBtnDisable\"\r\n title=\"Previous student\"\r\n @click=\"previousStudent\"\r\n >\r\n <i class=\"fas fa-arrow-left\" style=\"font-size: 25px;\" />\r\n </el-button>\r\n\r\n <el-tooltip class=\"item\" effect=\"light\" content=\"Select a student\" placement=\"bottom\">\r\n <el-select\r\n id=\"students-selection\"\r\n v-model=\"currentStudent\"\r\n value-key=\"UserName\"\r\n filterable\r\n placeholder=\"Select Student\"\r\n style=\"margin-top: 5px; width: 200px;\"\r\n @change=\"onStudentChange()\"\r\n >\r\n <el-option\r\n v-for=\"item in students\"\r\n :key=\"item.UserName\"\r\n :label=\"item.LastName + ', ' + item.FirstName\"\r\n :value=\"item\"\r\n />\r\n </el-select>\r\n </el-tooltip>\r\n\r\n <el-button\r\n style=\"text-align: center; -webkit-box-shadow: none; box-shadow: none;\r\n display: inline-block; padding: 0px 10px; vertical-align: middle;\r\n -ms-touch-action: manipulation; touch-action: manipulation;\r\n cursor: pointer; border: 0 none; background: none;\"\r\n :disabled=\"nextBtnDisable\"\r\n title=\"Next student\"\r\n @click=\"nextStudent\"\r\n >\r\n <i style=\"font-size: 25px;\" class=\"fas fa-arrow-right\" />\r\n </el-button>\r\n </div>\r\n </div>\r\n\r\n <div style=\"width: 350px; float:left;\">\r\n <el-tooltip class=\"item\" effect=\"light\" content=\"Submission to view\" placement=\"bottom\">\r\n <el-select\r\n id=\"submissions-selection\"\r\n v-model=\"currentSubmission\"\r\n value-key=\"docId\"\r\n filterable\r\n placeholder=\"Select Submission\"\r\n no-match-text=\"No Matching Data\"\r\n no-data-text=\"No data\"\r\n loading-text=\"Loading\"\r\n style=\"margin-top: 5px; margin-left: 10px; margin-right: 10px;\"\r\n\r\n @change=\"onSubmissionChange()\"\r\n >\r\n <el-option\r\n v-for=\"item in submissions\"\r\n :key=\"item.docId\"\r\n :label=\"item.uploadedDate | formatDate\"\r\n :value=\"item\"\r\n />\r\n </el-select>\r\n </el-tooltip>\r\n\r\n <!-- <el-tooltip v-if=\"docId & onTime\" class=\"item\" effect=\"light\" :content=\"'Submitted on time at ' + formatDate(uploadedDate) + '. Due date is ' + formatDate(dueDate) + '.'\" placement=\"bottom\">\r\n\t\t\t\t\t<el-tag type=\"success\" style=\"line-height: 38px; height: 38px;\">\r\n\t\t\t\t\t\tOn Time\r\n\t\t\t\t\t</el-tag>\r\n\t\t\t\t</el-tooltip>\r\n\t\t\t\t<el-tooltip v-else-if=\"docId && !onTime\" class=\"item\" effect=\"light\" :content=\"'Submitted late at ' + formatDate(uploadedDate) + '. Due date is ' + formatDate(dueDate) + '.'\" placement=\"bottom\">\r\n\t\t\t\t\t<el-tag type=\"danger\" style=\"line-height: 38px; height: 38px;\">\r\n\t\t\t\t\t\tLate\r\n\t\t\t\t\t</el-tag>\r\n\t\t\t\t</el-tooltip> -->\r\n <el-tooltip\r\n v-if=\"docId && onTime\"\r\n class=\"item\"\r\n effect=\"light\"\r\n :content=\"'Submitted on time at ' + formatDate(uploadedDate) + '. Due date is ' + formatDate(dueDate) + '.'\"\r\n placement=\"bottom\"\r\n >\r\n <i class=\"far fa-calendar-check\" style=\"font-size: 30px; color: rgb(59, 146, 120); position: absolute; margin-top: 10px;\" />\r\n </el-tooltip>\r\n <el-tooltip\r\n v-else-if=\"docId && !onTime\"\r\n class=\"item\"\r\n effect=\"light\"\r\n :content=\"'Submitted late at ' + formatDate(uploadedDate) + '. Due date is ' + formatDate(dueDate) + '.'\"\r\n placement=\"bottom\"\r\n >\r\n <i class=\"far fa-calendar-times\" style=\"font-size: 30px; color: #f57575; position: absolute; margin-top: 10px;\" />\r\n </el-tooltip>\r\n </div>\r\n <div style=\"float:right; position: absolute; right: 0;\">\r\n <el-tooltip\r\n id=\"savedMessage\"\r\n class=\"item\"\r\n effect=\"light\"\r\n placement=\"bottom\"\r\n :content=\"'Your feedback was successfully saved.'\"\r\n style=\"display: none;\"\r\n >\r\n <el-tag type=\"success\" style=\"line-height: 40px; height: 40px; margin-right: 5px;\">\r\n Saved!\r\n </el-tag>\r\n </el-tooltip>\r\n <el-button\r\n v-if=\"review && !readOnly\"\r\n :type=\"statusType\"\r\n style=\"margin-top: 5px; margin-right: 5px;\"\r\n :title=\"submitTooltip\"\r\n @click=\"submitReview()\"\r\n >\r\n Submit\r\n </el-button>\r\n <el-button\r\n v-if=\"!review && !readOnly && docId\"\r\n type=\"info\"\r\n :disabled=\"true\"\r\n style=\"margin-top: 5px; margin-right: 5px;\"\r\n >\r\n Submit\r\n </el-button>\r\n </div>\r\n </div>\r\n <div id=\"full_width_container\" :class=\"fullWidth\">\r\n <rs-panes split-to=\"columns\" :allow-resize=\"true\" units=\"percents\" :size=\"70\" :min-size=\"0\" :resizer-thickness=\"6\">\r\n <div slot=\"firstPane\" style=\"height: 100%;\">\r\n <div id=\"left_side\" class=\"full_height\">\r\n <div id=\"left_side_inner\">\r\n <div id=\"submissions_container\">\r\n <nav class=\"ViewerControls ViewerControls--with-annotations\">\r\n <div class=\"ViewerControls-primary\">\r\n <div class=\"ViewerControls--download\">\r\n <div style=\"min-width: 50px; text-align: center;\">\r\n <div>\r\n <button class=\"download-button--button\" title=\"Download annotated PDF\" aria-label=\"Download annotated PDF\" @click=\"downloadPdf()\">\r\n <i style=\"font-size: 22px;\" class=\"fas fa-file-download\" />\r\n </button>\r\n </div>\r\n </div>\r\n </div><div class=\"ViewerControls--title\" /><div class=\"ViewerControls--page-controls\">\r\n <span class=\"ViewerControls--page-number\" style=\"display: flex; align-items: center;\">\r\n Page\r\n <div style=\"padding-left: 10px; padding-right: 10px;\">\r\n <el-input-number v-model=\"pageNum\" :min=\"1\" :max=\"totalPageNumber\" size=\"small\" label=\"Page\" @change=\"changePage\" />\r\n </div>\r\n of {{ totalPageNumber }}\r\n </span>\r\n <svg viewBox=\"0 0 2 26\" style=\"margin-left: 12px; margin-right: 0px; width: 2px; height: 26px; color: rgb(171, 179, 186);\">\r\n <line stroke=\"currentColor\" stroke-dasharray=\"2, 1\" stroke-width=\"1\" x1=\"1\" y1=\"0\" x2=\"1\" y2=\"26\" />\r\n </svg>\r\n </div>\r\n <nav class=\"DocumentControls\">\r\n <div style=\"display: inline-flex; align-items: center; user-select: none;\">\r\n <button class=\"AnnotationControlButton\" aria-label=\"Zoom Out\" title=\"Zoom Out\" aria-disabled=\"false\" @click=\"zoomOut\">\r\n <i style=\"font-size: 20px;\" class=\"fas fa-minus\" />\r\n </button>\r\n <span aria-hidden=\"true\" style=\"text-transform: uppercase; font-size: 0.75rem; color: rgb(238, 238, 239); margin-left: 4px; margin-right: 4px;\">\r\n Zoom\r\n </span>\r\n <button class=\"AnnotationControlButton\" aria-label=\"Zoom In\" title=\"Zoom In\" aria-disabled=\"false\" @click=\"zoomIn\">\r\n <i style=\"font-size: 20px;\" class=\"fas fa-plus\" />\r\n </button>\r\n </div>\r\n <svg viewBox=\"0 0 2 26\" style=\"margin-left: 2px; margin-right: 4px; width: 2px; height: 26px; color: rgb(171, 179, 186);\">\r\n <line stroke=\"currentColor\" stroke-dasharray=\"2, 1\" stroke-width=\"1\" x1=\"1\" y1=\"0\" x2=\"1\" y2=\"26\" />\r\n </svg>\r\n <div class=\"ViewerControls--page-controls\">\r\n <button aria-label=\"Enter Full Screen\" class=\"AnnotationControlButton full-screen-button\" title=\"Zoom Fit Width\" @click=\"zoomFitWidth\">\r\n <i style=\"font-size: 20px;\" class=\"fas fa-expand\" />\r\n </button>\r\n <svg viewBox=\"0 0 2 26\" style=\"margin-left: 4px; margin-right: 4px; width: 2px; height: 26px; color: rgb(171, 179, 186);\">\r\n <line stroke=\"currentColor\" stroke-dasharray=\"2, 1\" stroke-width=\"1\" x1=\"1\" y1=\"0\" x2=\"1\" y2=\"26\" />\r\n </svg>\r\n </div>\r\n </nav>\r\n <nav class=\"AnnotationControls\">\r\n <button aria-label=\"Enter selection mode\" class=\"AnnotationControlButton\" title=\"Selection\" @click=\"selectTextPdf\">\r\n <div class=\"AnnotationControlButton-outer\">\r\n <div class=\"AnnotationControlButton-inner\">\r\n <i style=\"font-size: 20px;\" class=\"fas fa-mouse-pointer\" />\r\n </div>\r\n </div>\r\n </button>\r\n <button v-if=\"userRole == 'Student'\" aria-label=\"highlight annotation\" class=\"AnnotationControlButton\" title=\"Highlight annotation\" @click=\"highlightPdf\">\r\n <div class=\"AnnotationControlButton-outer\">\r\n <div class=\"AnnotationControlButton-inner\">\r\n <i style=\"font-size: 20px;\" class=\"fas fa-highlighter\" />\r\n </div>\r\n </div>\r\n </button>\r\n <!-- <button aria-label=\"freetext annotation\" class=\"AnnotationControlButton\" title=\"Freetext annotation\" @click=\"freeTextPdf\">\r\n\t\t\t\t\t\t\t\t\t\t<div class=\"AnnotationControlButton-outer\">\r\n\t\t\t\t\t\t\t\t\t\t\t<div class=\"AnnotationControlButton-inner\">\r\n\t\t\t\t\t\t\t\t\t\t\t\t<i style=\"font-size: 20px;\" class=\"fas fa-font\" />\r\n\t\t\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t\t</button> -->\r\n <button v-if=\"userRole == 'Student'\" aria-label=\"strikeout annotation\" class=\"AnnotationControlButton\" title=\"Strikeout annotation\" @click=\"strikeOutPdf\">\r\n <div class=\"AnnotationControlButton-outer\">\r\n <div class=\"AnnotationControlButton-inner\">\r\n <i style=\"font-size: 20px;\" class=\"fas fa-strikethrough\" />\r\n </div>\r\n </div>\r\n </button>\r\n <button v-if=\"userRole == 'Student'\" aria-label=\"free draw annotation\" class=\"AnnotationControlButton\" title=\"Free draw annotation\" @click=\"freeDrawPdf\">\r\n <div class=\"AnnotationControlButton-outer\">\r\n <div class=\"AnnotationControlButton-inner\">\r\n <i style=\"font-size: 20px;\" class=\"fas fa-paint-brush\" />\r\n </div>\r\n </div>\r\n </button>\r\n <button v-if=\"userRole == 'Student'\" aria-label=\"Sticky note annotation\" class=\"AnnotationControlButton\" title=\"Sticky note annotation\" @click=\"stickyNotePdf\">\r\n <div class=\"AnnotationControlButton-outer\">\r\n <div class=\"AnnotationControlButton-inner\">\r\n <i style=\"font-size: 20px;\" class=\"far fa-sticky-note\" />\r\n </div>\r\n </div>\r\n </button>\r\n </nav>\r\n </div>\r\n </nav>\r\n\r\n <div id=\"iframe_holder\" style=\"display: block; height: calc(100% - 45px);\">\r\n <div id=\"pdfDocument\" style=\"resize: vertical; height: 100%;\" />\r\n </div>\r\n </div>\r\n </div>\r\n <div id=\"resize_overlay\" style=\"display: none; position: relative;top: -100%; z-index: 1; height: 100%; width: 100%; border: 0 none;\" />\r\n </div>\r\n </div>\r\n\r\n <div slot=\"secondPane\">\r\n <div id=\"right_side\" class=\"full_height\">\r\n <!-- <div id=\"width_resizer\" class=\"full_height ui-draggable\" /> -->\r\n <div class=\"right_side_content\">\r\n <div id=\"rightside_inner\" class=\"full_height\">\r\n <div id=\"rubric\">\r\n <div style=\"height: 100%; overflow: auto;\">\r\n <el-card v-for=\"(criteria, criteriaIndex) in rubricCriteria\" :key=\"criteria.Id\" style=\"margin-bottom: 5px; margin-left: 3px;\">\r\n <div slot=\"header\" class=\"clearfix\">\r\n <span style=\"font-size: 16px; font-weight: bold;\">\r\n {{ criteria.CriteriaName }}\r\n </span>\r\n <div style=\"font-size: 14px; margin-top: 10px;\">\r\n <el-input\r\n v-if=\"criteria.Description && criteria.Description != ''\"\r\n :value=\"criteria.Description\"\r\n :readonly=\"true\"\r\n type=\"textarea\"\r\n :autosize=\"true\"\r\n :maxlength=\"8000\"\r\n class=\"criteria-description\"\r\n style=\"border: none;\"\r\n />\r\n </div>\r\n </div>\r\n <div>\r\n <div v-if=\"termCode == '201901'\">\r\n <el-radio-group\r\n v-if=\"criteria.UseAsGrade\"\r\n :id=\"criteria.Id\"\r\n v-model=\"criteriaFeedback[criteriaIndex].Mark\"\r\n style=\"margin-bottom: 10px; min-width: 240px\"\r\n :disabled=\"readOnly\"\r\n @input=\"saveReview(criteriaIndex)\"\r\n >\r\n <el-tooltip\r\n v-for=\"(milestone, key) in criteria.RubricCriteriaMilestones.slice()\"\r\n :key=\"milestone.Id\"\r\n class=\"item\"\r\n effect=\"light\"\r\n placement=\"top\"\r\n >\r\n <div slot=\"content\" style=\"max-width: 500px;\">\r\n {{ milestone.Description }}\r\n </div>\r\n <el-radio-button\r\n :key=\"milestone.Id\"\r\n :label=\"criteria.RubricCriteriaMilestones.length - key\"\r\n />\r\n </el-tooltip>\r\n </el-radio-group>\r\n </div>\r\n <div v-else>\r\n <el-radio-group\r\n v-if=\"criteria.UseAsGrade\"\r\n :id=\"criteria.Id\"\r\n v-model=\"criteriaFeedback[criteriaIndex].Mark\"\r\n style=\"margin-bottom: 10px; min-width: 240px\"\r\n :disabled=\"readOnly\"\r\n @input=\"saveReview(criteriaIndex)\"\r\n >\r\n <el-tooltip\r\n v-for=\"milestone in criteria.RubricCriteriaMilestones.slice()\"\r\n :key=\"milestone.Id\"\r\n class=\"item\"\r\n effect=\"light\"\r\n placement=\"top\"\r\n >\r\n <div slot=\"content\" style=\"max-width: 500px;\">\r\n {{ milestone.Description }}\r\n </div>\r\n <el-radio-button\r\n :key=\"milestone.Id\"\r\n :label=\"milestone.Value\"\r\n />\r\n </el-tooltip>\r\n </el-radio-group>\r\n </div>\r\n <div>\r\n <el-input\r\n v-if=\"criteria.UseAsGrade || criteria.UseAsTextComment\"\r\n v-model=\"criteriaFeedback[criteriaIndex].Comment\"\r\n :criteria-index=\"criteriaIndex\"\r\n type=\"textarea\"\r\n placeholder=\"Enter text here\"\r\n :rows=\"3\"\r\n :maxlength=\"8000\"\r\n class=\"criteria-comment\"\r\n :readonly=\"readOnly\"\r\n />\r\n </div>\r\n </div>\r\n </el-card>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </rs-panes>\r\n </div>\r\n </div>\r\n</template>\r\n\r\n<script>\r\nimport * as pdfService from '@/services/pdf.service'\r\nimport * as assignmentService from '@/services/assignment.service'\r\nimport * as submissionService from '@/services/submission.service'\r\nimport * as reviewService from '@/services/review.service'\r\nimport * as rubricService from '@/services/rubric.service'\r\nimport * as teamFormationService from '@/services/team_formation.service'\r\nimport { Notification } from 'element-ui'\r\nimport * as dateUtils from '@/utils/date-utils'\r\nimport ResSplitPane from 'vue-resize-split-pane'\r\nimport * as urlUtils from '@/utils/url-utils'\r\n// Handle UI and logics for the Self Review page.\r\nexport default {\r\n\tcomponents: {\r\n\t\t'rs-panes': ResSplitPane\r\n\t},\r\n\tfilters: {\r\n\t\tformatDate(dateStr) {\r\n\t\t\treturn dateUtils.formatDate(dateStr)\r\n\t\t}\r\n\t},\r\n\tdata() {\r\n\t\treturn {\r\n\t\t\ttermCode: this.$store.state.enrollment.termCode,\r\n\t\t\torgCode: this.$store.state.enrollment.orgCode,\r\n\t\t\tclassCode: this.$store.state.enrollment.currentCourse.ClassCode,\r\n\t\t\tassignmentId: null,\r\n\t\t\ttaskId: null,\r\n\t\t\trevieweeId: null,\r\n\t\t\treviewerId: null,\r\n\t\t\treviewerRole: 'Student',\r\n\t\t\tassignments: null,\r\n\t\t\tdocId: null,\r\n\t\t\tcurrentAssignment: null,\r\n\t\t\tcurrentTask: null,\r\n\t\t\tonTime: false,\r\n\t\t\tuploadedDate: null,\r\n\t\t\tdueDate: null,\r\n\t\t\tsubmissions: [],\r\n\t\t\tcurrentSubmission: null,\r\n\t\t\trubricCriteria: null,\r\n\t\t\tcriteriaFeedback: null,\r\n\t\t\treview: null,\r\n\t\t\tmyapi: null,\r\n\t\t\tpageNum: 1,\r\n\t\t\ttotalPageNumber: null,\r\n\t\t\tzoomValue: 140,\r\n\t\t\tteams: null,\r\n\t\t\treadOnly: false,\r\n\t\t\tstatusType: 'danger',\r\n\t\t\tsubmitTooltip: 'Your feedback is saved, but has not yet been submitted.',\r\n\t\t\tcIndex: null,\r\n\t\t\tuserRole: null,\r\n\t\t\tprevBtnDisable: false,\r\n\t\t\tnextBtnDisable: false,\r\n\t\t\tprevGroupBtnDisable: false,\r\n\t\t\tnextGroupBtnDisable: false,\r\n\t\t\tcurrentStudent: null\r\n \t}\r\n\t},\r\n\tcomputed: {\r\n\t\tfullWidth() {\r\n\t\t\tconst mainNav = document.querySelector('#main-nav')\r\n\t\t\tif (mainNav && !mainNav.classList.contains('full-width')) {\r\n\t\t\t\treturn ''\r\n\t\t\t} else { return 'full-width' }\r\n\t\t}\r\n\t},\r\n\tmounted() {\r\n\t\tconst resizer = document.querySelector('.columnsres')\r\n\t\tresizer.addEventListener('mousedown', function(e) {\r\n\t\t\tdocument.querySelector('#resize_overlay').style.display = 'block'\r\n\t\t})\r\n\t\tdocument.addEventListener('mouseup', function(e) {\r\n\t\t\tdocument.querySelector('#resize_overlay').style.display = 'none'\r\n\t\t})\r\n\t\tconst that = this\r\n\t\twindow.onbeforeunload = function(e) {\r\n\t\t\tthat.saveReviewBeforeRefresh()\r\n\t\t\treturn\r\n\t\t}\r\n\t},\r\n\tcreated() {\r\n\t\t// Get necessary information from query string\r\n\t\tthis.userRole = this.$store.state.enrollment.userRole\r\n\t\tif (this.userRole == 'Instructor') {\r\n\t\t\tthis.reviewerId = this.getUrlParameter('reviewerId')\r\n\t\t\tthis.readOnly = true\r\n\t\t} else if (this.userRole == 'Student') {\r\n\t\t\tthis.reviewerId = this.$store.state.auth.user.UserName\r\n\t\t}\r\n\t\tthis.assignmentId = this.getUrlParameter('assignmentId')\r\n\t\tthis.taskId = this.getUrlParameter('taskId')\r\n\t\tthis.revieweeId = this.reviewerId\r\n\t\t// Set up assignments selection\r\n\t\tthis.setUpAssignmentSelection()\r\n\t},\r\n\tmethods: {\r\n\t\t// @vuese\r\n\t\t// Format a date value.\r\n\t\t// @arg The date value to be formatted.\r\n\t\tformatDate(date) {\r\n\t\t\tconst dateStr = this.getDateStr(date)\r\n\t\t\treturn dateUtils.formatDate(dateStr)\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Setup project selection drop down.\r\n\t\tasync setUpAssignmentSelection() {\r\n\t\t\t// Get all assignments that have uploaded papers and use peer review.\r\n\t\t\tlet assignments = this.$store.state.assignment.assignments\r\n\t\t\tif (!assignments) { assignments = await assignmentService.getAssignmentsByClass(this.termCode, this.orgCode, this.classCode) }\r\n\r\n\t\t\tif (assignments.length > 0) {\r\n\t\t\t\tthis.assignments = assignments.filter(function(el) {\r\n\t\t\t\t\treturn el.Tasks.filter(t => t.Type == 'self_review') != null && el.Tasks.filter(t => t.Type == 'self_review').length > 0\r\n\t\t\t\t})\r\n\t\t\t\tconsole.log(this.assignments)\r\n\r\n\t\t\t\tconst that = this\r\n\t\t\t\tif (this.assignmentId) {\r\n\t\t\t\t\tthis.currentAssignment = this.assignments.find(function(el) {\r\n\t\t\t\t\t\treturn el.Id == that.assignmentId\r\n\t\t\t\t\t})\r\n\t\t\t\t\tvar tasks = this.currentAssignment.Tasks.filter(t => t.Type == 'self_review')\r\n\r\n\t\t\t\t\tif (tasks != null && tasks.length > 0) {\r\n\t\t\t\t\t\tthis.currentTask = tasks[0]\r\n\t\t\t\t\t\tthis.taskId = this.currentTask.Id\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tthis.currentTask = null\r\n\t\t\t\t\t\tthis.taskId = null\r\n\t\t\t\t\t}\r\n\t\t\t\t} else {\r\n\t\t\t\t\tthis.currentAssignment = this.assignments[0]\r\n\t\t\t\t\tthis.assignmentId = this.currentAssignment.Id\r\n\t\t\t\t\tif (this.currentAssignment.Tasks != null && this.currentAssignment.Tasks.length > 0) {\r\n\t\t\t\t\t\tvar selfReviewTasks = this.currentAssignment.Tasks.filter(t => t.Type == 'self_review')\r\n\t\t\t\t\t\tif (selfReviewTasks != null && selfReviewTasks.length > 0) {\r\n\t\t\t\t\t\t\tthis.currentTask = selfReviewTasks[0]\r\n\t\t\t\t\t\t\tthis.taskId = this.currentTask.Id\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\tthis.currentTask = null\r\n\t\t\t\t\t\t\tthis.taskId = null\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (this.currentAssignment) {\r\n\t\t\t\t\tif (this.currentAssignment.IsGroupAssignment) {\r\n\t\t\t\t\t\tif (this.userRole == 'Instructor') {\r\n\t\t\t\t\t\t\t// Set up submissions selection, document, and rubric\r\n\t\t\t\t\t\t\tthis.displayDocumentAndReview()\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\tconst hasTeam = await this.getTeam()\r\n\t\t\t\t\t\t\tif (hasTeam) {\r\n\t\t\t\t\t\t\t\tthis.displayDocumentAndReview()\r\n\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t Notification.info({\r\n\t\t\t\t\t\t\t\t\tduration: 6000,\r\n\t\t\t\t\t\t\t\t\ttitle: 'Info',\r\n\t\t\t\t\t\t\t\t\tmessage: 'You have not been assigned into a team for this group project.'\r\n\t\t\t\t\t\t\t\t})\r\n\t\t\t\t\t\t\t\tdocument.getElementById('full_width_container').style.display = 'none'\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tif (this.userRole == 'Instructor') {\r\n\t\t\t\t\t\t\t// Set up students selection\r\n\t\t\t\t\t\t\tconst studentSetupComplete = await this.setUpStudentSelection()\r\n\t\t\t\t\t\t\tif (studentSetupComplete) { this.displayDocumentAndReview() } // Set up submissions selection, document, and rubric\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\tthis.displayDocumentAndReview()\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t} else {\r\n\t\t\t\t\tNotification.info({\r\n\t\t\t\t\t\tduration: 6000,\r\n\t\t\t\t\t\ttitle: 'Info',\r\n\t\t\t\t\t\tmessage: 'You have not submitted paper for this project.'\r\n\t\t\t\t\t})\r\n\t\t\t\t\tdocument.getElementById('full_width_container').style.display = 'none'\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tNotification.info({\r\n\t\t\t\t\tduration: 6000,\r\n\t\t\t\t\ttitle: 'Info',\r\n\t\t\t\t\tmessage: 'You have not submitted paper for this project.'\r\n\t\t\t\t})\r\n\t\t\t\tdocument.getElementById('full_width_container').style.display = 'none'\r\n\t\t\t}\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Get group project team assignment.\r\n\t\tasync getTeam() {\r\n\t\t\tconst thisTeam = await teamFormationService.getgroupProjectTeamAssignment(this.termCode, this.orgCode,\r\n\t\t\t\tthis.classCode, this.reviewerId, this.assignmentId)\r\n\t\t\tif (thisTeam) {\r\n\t\t\t\tthis.reviewerId = thisTeam.TeamId\r\n\t\t\t\tthis.revieweeId = this.reviewerId\r\n\t\t\t\treturn true\r\n\t\t\t} else { return false }\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Setup student selection drop down.\r\n\t\tasync setUpStudentSelection() {\r\n\t\t\t// Get all students who have uploaded paper for this assignment\r\n\t\t\tconst uploadedStudents = await submissionService.getSelfReviewSubmittedStudents(this.termCode,\r\n\t\t\t\tthis.orgCode, this.classCode, this.assignmentId)\r\n\t\t\tconsole.log(uploadedStudents)\r\n\t\t\tconst that = this\r\n\t\t\tif (uploadedStudents.length > 0) {\r\n\t\t\t\tthis.students = uploadedStudents\r\n\t\t\t\tif (this.revieweeId) {\r\n\t\t\t\t\tconst thisReviewee = uploadedStudents.find(function(el) {\r\n\t\t\t\t\t\treturn el.UserName == that.revieweeId\r\n\t\t\t\t\t})\r\n\t\t\t\t\tif (thisReviewee != undefined) { this.currentStudent = thisReviewee } else {\r\n\t\t\t\t\t\tthis.currentStudent = uploadedStudents[0]\r\n\t\t\t\t\t\tthis.revieweeId = uploadedStudents[0].UserName\r\n\t\t\t\t\t}\r\n\t\t\t\t} else {\r\n\t\t\t\t\tthis.currentStudent = uploadedStudents[0]\r\n\t\t\t\t\tthis.revieweeId = uploadedStudents[0].UserName\r\n\t\t\t\t}\r\n\t\t\t\t// Set up previous and next buttons\r\n\t\t\t\tconst thisIndex = this.students.findIndex(x => x.UserName == this.currentStudent.UserName)\r\n\t\t\t\tif (thisIndex == 0) {\r\n\t\t\t\t\tthis.prevBtnDisable = true\r\n\t\t\t\t}\r\n\t\t\t\tif (thisIndex == this.students.length - 1) {\r\n\t\t\t\t\tthis.nextBtnDisable = true\r\n\t\t\t\t}\r\n\t\t\t\treturn true\r\n\t\t\t} else {\r\n\t\t\t\tthis.students = []\r\n\t\t\t\tdocument.getElementById('full_width_container').style.display = 'none'\r\n\t\t\t\tNotification.error({\r\n\t\t\t\t\tduration: 6000,\r\n\t\t\t\t\ttitle: 'Error',\r\n\t\t\t\t\tmessage: 'No submission found!'\r\n\t\t\t\t})\r\n\t\t\t\treturn false\r\n\t\t\t}\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Handles logics when a student is selected.\r\n\t\tonStudentChange() {\r\n\t\t\tthis.prevBtnDisable = false\r\n\t\t\tthis.nextBtnDisable = false\r\n\t\t\tthis.pageNum = 1\r\n\t\t\tthis.submissions = []\r\n\t\t\tthis.currentSubmission = null\r\n\t\t\tthis.rubricCriteria = null\r\n\t\t\tthis.revieweeId = this.currentStudent.UserName\r\n\t\t\tthis.reviewerId = this.currentStudent.UserName\r\n\t\t\tconst thisIndex = this.students.findIndex(x => x.UserName == this.currentStudent.UserName)\r\n\t\t\tif (thisIndex == 0) {\r\n\t\t\t\tthis.prevBtnDisable = true\r\n\t\t\t\tif (this.students.length > 1 && this.nextBtnDisable == true) { this.nextBtnDisable = false }\r\n\t\t\t}\r\n\t\t\tif (thisIndex == this.students.length - 1) {\r\n\t\t\t\tthis.nextBtnDisable = true\r\n\t\t\t\tif (this.students.length > 1 && this.prevBtnDisable == true) { this.prevBtnDisable = false }\r\n\t\t\t}\r\n\t\t\tthis.displayDocumentAndReview()\r\n\t\t\tthis.$router.push('/self_review?assignmentId=' + this.assignmentId + '&reviewerId=' + this.revieweeId)\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Handles logics when the previous student arrow is clicked.\r\n\t\tasync previousStudent() {\r\n\t\t\tconst thisIndex = this.students.findIndex(x => x.UserName == this.currentStudent.UserName)\r\n\t\t\tif (thisIndex - 1 == 0) {\r\n\t\t\t\tthis.prevBtnDisable = true\r\n\t\t\t}\r\n\t\t\tif (this.students.length > 1) { this.nextBtnDisable = false }\r\n\t\t\tthis.currentStudent = this.students[thisIndex - 1]\r\n\t\t\tthis.pageNum = 1\r\n\t\t\tthis.submissions = []\r\n\t\t\tthis.currentSubmission = null\r\n\t\t\tthis.revieweeId = this.currentStudent.UserName\r\n\t\t\tthis.reviewerId = this.currentStudent.UserName\r\n\t\t\tthis.rubricCriteria = null\r\n\t\t\tthis.prevBtnDisable = true\r\n\t\t\tawait this.displayDocumentAndReview()\r\n\t\t\tif (thisIndex - 1 != 0) { this.prevBtnDisable = false }\r\n\r\n\t\t\tthis.$router.push('/self_review?assignmentId=' + this.assignmentId + '&reviewerId=' + this.revieweeId)\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Handles logics when the next student arrow is clicked.\r\n\t\tasync nextStudent() {\r\n\t\t\tconst thisIndex = this.students.findIndex(x => x.UserName == this.currentStudent.UserName)\r\n\t\t\tif (thisIndex == this.students.length - 2) {\r\n\t\t\t\tthis.nextBtnDisable = true\r\n\t\t\t}\r\n\t\t\tif (this.students.length > 1) { this.prevBtnDisable = false }\r\n\t\t\tthis.currentStudent = this.students[thisIndex + 1]\r\n\t\t\tthis.pageNum = 1\r\n\t\t\tthis.submissions = []\r\n\t\t\tthis.currentSubmission = null\r\n\t\t\tthis.revieweeId = this.currentStudent.UserName\r\n\t\t\tthis.reviewerId = this.currentStudent.UserName\r\n\t\t\tthis.rubricCriteria = null\r\n\t\t\tthis.nextBtnDisable = true\r\n\t\t\tawait this.displayDocumentAndReview()\r\n\t\t\tif (thisIndex != this.students.length - 2) { this.nextBtnDisable = false }\r\n\r\n\t\t\tthis.$router.push('/self_review?assignmentId=' + this.assignmentId + '&reviewerId=' + this.revieweeId)\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Display document and review.\r\n\t\tasync displayDocumentAndReview() {\r\n\t\t\tlet latestReview\r\n\t\t\tlet docId\r\n\t\t\tconst submissions = await submissionService.getStudentUpload(this.termCode, this.orgCode,\r\n\t\t\t\tthis.classCode, this.revieweeId, this.assignmentId)\r\n\t\t\tif (submissions.length > 0) {\r\n\t\t\t\t// Setup submission status\r\n\t\t\t\t// this.uploadedDate = new Date(submissions[0].LastActivityDate)\r\n\t\t\t\t// this.dueDate = new Date(this.currentAssignment.SelfReviewDueDate)\r\n\r\n\t\t\t\tthis.uploadedDate = this.$moment(submissions[0].LastActivityDate)._d\r\n\t\t\t\tthis.dueDate = this.$moment(this.currentTask.DueDate)._d\r\n\r\n\t\t\t\tif (this.uploadedDate <= this.dueDate) { this.onTime = true } else { this.onTime = false }\r\n\t\t\t\t// Get latest review\r\n\t\t\t\tconst reviews = await reviewService.getReview(this.termCode, this.orgCode, this.classCode,\r\n\t\t\t\t\tthis.assignmentId, this.reviewerId, this.revieweeId, this.reviewerRole, 'self_review')\r\n\t\t\t\tif (reviews.length > 0) {\r\n\t\t\t\t\tlatestReview = reviews[0]\r\n\t\t\t\t\t// First check if there is new submission\r\n\t\t\t\t\tconst uploadedDateOfLatestReview = latestReview.UploadedDate\r\n\t\t\t\t\tif (uploadedDateOfLatestReview != null) {\r\n\t\t\t\t\t\tconst date1 = this.$moment(uploadedDateOfLatestReview)\r\n\t\t\t\t\t\tconst uploadedDateOfLatestSubmission = submissions[0].LastActivityDate\r\n\t\t\t\t\t\tconst date2 = this.$moment(uploadedDateOfLatestSubmission)\r\n\t\t\t\t\t\t// If uploadedDateOfLatestSubmission > uploadedDateOfLatestReview -> there is new submission\r\n\t\t\t\t\t\t// Then create latest review using latest submission.\r\n\t\t\t\t\t\tif (date2._d > date1._d) {\r\n\t\t\t\t\t\t\tconst newDocId = await pdfService.createPdf(submissions[0].DocId)\r\n\t\t\t\t\t\t\tif (newDocId > 0) {\r\n\t\t\t\t\t\t\t\tconst newReview = await this.createNewReview(this.orgCode, this.termCode,\r\n\t\t\t\t\t\t\t\t\tthis.classCode, this.assignmentId, this.taskId, this.reviewerId, this.revieweeId,\r\n\t\t\t\t\t\t\t\t\tthis.reviewerRole, newDocId, submissions[0].LastActivityDate, latestReview)\r\n\t\t\t\t\t\t\t\tif (newReview) {\r\n\t\t\t\t\t\t\t\t\treviews.splice(0, 0, newReview)\r\n\t\t\t\t\t\t\t\t\tlatestReview = newReview\r\n\t\t\t\t\t\t\t\t} else { latestReview = reviews[0] }\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\tdocId = latestReview.DocId\r\n\t\t\t\t\tconst that = this\r\n\t\t\t\t\treviews.forEach(function(el) {\r\n\t\t\t\t\t\tconst submission = {\r\n\t\t\t\t\t\t\treview: el,\r\n\t\t\t\t\t\t\tuploadedDate: el.UploadedDate,\r\n\t\t\t\t\t\t\tdocId: el.DocId\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tthat.submissions.push(submission)\r\n\t\t\t\t\t})\r\n\t\t\t\t\tthis.currentSubmission = this.submissions[0]\r\n\t\t\t\t} else {\r\n\t\t\t\t\t// If there is no review, display latest submission with empty rubric\r\n\t\t\t\t\t// Get new doc id\r\n\t\t\t\t\tdocId = await pdfService.createPdf(submissions[0].DocId)\r\n\t\t\t\t\tconst submission = {\r\n\t\t\t\t\t\treview: null,\r\n\t\t\t\t\t\tuploadedDate: submissions[0].LastActivityDate,\r\n\t\t\t\t\t\tdocId: submissions[0].DocId\r\n\t\t\t\t\t}\r\n\t\t\t\t\tthis.submissions.push(submission)\r\n\t\t\t\t\tthis.currentSubmission = this.submissions[0]\r\n\t\t\t\t}\r\n\t\t\t\t// Display the document\r\n\t\t\t\tawait this.displayDocument(docId)\r\n\t\t\t\t// Display the latest review\r\n\t\t\t\tawait this.displayReview(latestReview)\r\n\r\n\t\t\t\tdocument.getElementById('full_width_container').style.display = 'block'\r\n\t\t\t} else {\r\n\t\t\t\tdocument.getElementById('full_width_container').style.display = 'none'\r\n\t\t\t\tNotification.info({\r\n\t\t\t\t\tduration: 6000,\r\n\t\t\t\t\ttitle: 'Info',\r\n\t\t\t\t\tmessage: 'You have not submtited a paper for this project'\r\n\t\t\t\t})\r\n\t\t\t}\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Display document by document id.\r\n\t\t// @arg The document id.\r\n\t\tasync displayDocument(docId) {\r\n\t\t\tif (docId) {\r\n\t\t\t\tthis.docId = docId\r\n\t\t\t\tawait pdfService.getPdf(docId)\r\n\t\t\t\t\t.then(pdf => {\r\n\t\t\t\t\t\t// Display the pdf\r\n\t\t\t\t\t\tconst pdfDocument = document.querySelector('#pdfDocument')\r\n\t\t\t\t\t\tpdfDocument.innerHTML = pdf\r\n\t\t\t\t\t\t// Setup the doc after being loaded\r\n\t\t\t\t\t\tconst that = this\r\n\t\t\t\t\t\tdocument.getElementById('PdfWebControl').onload = function() {\r\n\t\t\t\t\t\t\tthat.PdfAttachListeners()\r\n\t\t\t\t\t\t\tsetTimeout(function() {\r\n\t\t\t\t\t\t\t\tthat.totalPageNumber = that.myapi.getPageCount()\r\n\t\t\t\t\t\t\t}, 500)\r\n\t\t\t\t\t\t\tthat.autoSavePdf()\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}).catch((error) => {\r\n\t\t\t\t\t\tconsole.log(error)\r\n\t\t\t\t\t})\r\n\t\t\t}\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Auto save the pdf every 2 minutes.\r\n\t\tautoSavePdf() {\r\n\t\t\tconst that = this\r\n\t\t\twindow.setInterval(function() {\r\n\t\t\t\tconst iframe = document.getElementById('PdfWebControl')\r\n\t\t\t\tif (iframe) {\r\n\t\t\t\t\tconst innerDoc = iframe.contentDocument || iframe.contentWindow.document\r\n\t\t\t\t\tconst page = that.myapi.getPageViewed()\r\n\t\t\t\t\tconst objCount = page.getObjectCount()\r\n\r\n\t\t\t\t\tif (objCount == 0) {\r\n\t\t\t\t\t\tif (that.myapi.getHasUnsavedChanges()) {\r\n\t\t\t\t\t\t\tthat.myapi.save()\r\n\t\t\t\t\t\t\treturn\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tlet found\r\n\t\t\t\t\tconst pdfe_msgt = innerDoc.getElementById('pdfe_msgt')\r\n\t\t\t\t\tfor (let i = 0; i < objCount; i++) {\r\n\t\t\t\t\t// get this object\r\n\t\t\t\t\t\tconst aTags = innerDoc.getElementsByTagName('div')\r\n\t\t\t\t\t\tfor (let i = 0; i < aTags.length; i++) {\r\n\t\t\t\t\t\t\tif (aTags[i].innerHTML == 'DEL') {\r\n\t\t\t\t\t\t\t\tfound = aTags[i]\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif ((typeof (found) === 'undefined' || found === null) || (typeof (pdfe_msgt) === 'undefined' || pdfe_msgt === null)) {\r\n\t\t\t\t\t\treturn\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif (pdfe_msgt.style.visibility == 'visible') {\r\n\t\t\t\t\t\treturn\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tif (found.style.visibility == 'visible') {\r\n\t\t\t\t\t\t\treturn\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tconst activeEl = innerDoc.activeElement\r\n\t\t\t\t\tif (activeEl) {\r\n\t\t\t\t\t\tconst isEditting = activeEl.getAttribute('contenteditable')\r\n\t\t\t\t\t\tif (isEditting) { return }\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif (that.myapi.getHasUnsavedChanges()) {\r\n\t\t\t\t\t\tthat.myapi.save()\r\n\t\t\t\t\t\tif (that.review == null) { that.saveReview() }\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}, 120 * 1000)\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Display the review.\r\n\t\t// @arg The review to be displayed.\r\n\t\tasync displayReview(review) {\r\n\t\t\tthis.review = review\r\n\t\t\tconst rubricId = this.currentTask.RubricId\r\n\t\t\tif (review && review.EmailSent == 'Y') {\r\n\t\t\t\tthis.statusType = 'primary'\r\n\t\t\t\tthis.submitTooltip = 'Your feedback is submitted.'\r\n\t\t\t} else if (review && review.IsSaved == 'Y') {\r\n\t\t\t\tthis.statusType = 'danger'\r\n\t\t\t\tthis.submitTooltip = 'Your feedback is saved, but has not yet been submitted.'\r\n\t\t\t} else {\r\n\t\t\t\tthis.statusType = 'info'\r\n\t\t\t}\r\n\t\t\t// Get the rubric from current assignment.\r\n\t\t\tawait rubricService.getRubricById(rubricId)\r\n\t\t\t\t.then(rubric => {\r\n\t\t\t\t\tthis.rubricCriteria = rubric.RubricCriterias\r\n\t\t\t\t\tif (review) {\r\n\t\t\t\t\t\tif (review.ReviewData.length == 0) { this.criteriaFeedback = this.getDefaultCriteriaFeedback(rubric.RubricCriterias) } else { this.criteriaFeedback = review.ReviewData }\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tthis.criteriaFeedback = this.getDefaultCriteriaFeedback(rubric.RubricCriterias)\r\n\t\t\t\t\t}\r\n\t\t\t\t}).catch((error) => {\r\n\t\t\t\t\tconsole.log(error)\r\n\t\t\t\t})\r\n\r\n\t\t\t// Setup auto save for comment boxes\r\n\t\t\tconst criteriaComments = document.querySelectorAll('.criteria-comment >.el-textarea__inner')\r\n\t\t\tconst that = this\r\n\t\t\tcriteriaComments.forEach(function(item) {\r\n\t\t\t\tconst criteriaIndex = item.getAttribute('criteria-index')\r\n\r\n\t\t\t\titem.addEventListener('focus', function(e) {\r\n\t\t\t\t\tthat.cIndex = this.getAttribute('criteria-index')\r\n\t\t\t\t})\r\n\r\n\t\t\t\titem.addEventListener('focusout', function(e) {\r\n\t\t\t\t\tlet scoreClicked = false\r\n\t\t\t\t\tif (!that.review) {\r\n\t\t\t\t\t\t// Check if reviewer click on a criteria score after focus out\r\n\t\t\t\t\t\tconst nextTarget = e.relatedTarget\r\n\t\t\t\t\t\tif (nextTarget && nextTarget.classList && nextTarget.classList.length > 0 &&\r\n\t\t\t\t\t\t e.relatedTarget.classList[0] == 'el-radio-button') { scoreClicked = true }\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif (!scoreClicked && !this.readOnly) {\r\n\t\t\t\t\t\tthat.saveReview(criteriaIndex)\r\n\t\t\t\t\t}\r\n\t\t\t\t})\r\n\t\t\t})\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Get a default criteria feedback.\r\n\t\t// @arg The rubic criteria used.\r\n\t\tgetDefaultCriteriaFeedback(criteria) {\r\n\t\t\tconst criteriaFeedbacks = []\r\n\t\t\tfor (let i = 0; i < criteria.length; i++) {\r\n\t\t\t\tconst criteriaFeedback = {\r\n\t\t\t\t\tCriteriaId: criteria[i].Id,\r\n\t\t\t\t\tMark: 999,\r\n\t\t\t\t\tComment: '',\r\n\t\t\t\t\tAudioPath: null,\r\n\t\t\t\t\tLetterGrade: null\r\n\t\t\t\t}\r\n\t\t\t\tcriteriaFeedbacks.push(criteriaFeedback)\r\n\t\t\t}\r\n\t\t\treturn criteriaFeedbacks\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Create new review.\r\n\t\t// @arg The arguments needed for creating new review.\r\n\t\tasync createNewReview(orgCode, termCode, classCode, assignmentId, taskId, reviewerId, revieweeId,\r\n\t\t\treviewerRole, docId, uploadedDateStr, latestReview) {\r\n\t\t\tconst reviewType = 'self_review'\r\n\t\t\tconst lastActivityDate = this.getlastActivityDate()\r\n\t\t\tlet criteriaFeedback = []\r\n\t\t\tif (latestReview != null) {\r\n\t\t\t\tif (latestReview.ReviewData.length > 0) { criteriaFeedback = this.getPreviousFeedback(latestReview) }\r\n\t\t\t}\r\n\r\n\t\t\tlet holisticScore = 999\r\n\t\t\tif (criteriaFeedback.length > 0) { holisticScore = criteriaFeedback[criteriaFeedback.length - 1].Mark }\r\n\t\t\tconst newReview = {\r\n\t\t\t\tDocId: docId,\r\n\t\t\t\tTermCode: termCode,\r\n\t\t\t\tOrgCode: orgCode,\r\n\t\t\t\tClassCode: classCode,\r\n\t\t\t\tRevieweeId: revieweeId,\r\n\t\t\t\tAssignmentId: assignmentId,\r\n\t\t\t\tReviewerId: reviewerId,\r\n\t\t\t\tReviewType: reviewType,\r\n\t\t\t\tUploadedDate: uploadedDateStr,\r\n\t\t\t\tIsSaved: 'Y',\r\n\t\t\t\tEmailSent: 'N',\r\n\t\t\t\tLastActivityDate: lastActivityDate,\r\n\t\t\t\tReviewerRole: reviewerRole,\r\n\t\t\t\tFinalGrade: 'NG',\r\n\t\t\t\tPercentScore: 0,\r\n\t\t\t\tHolisticScore: holisticScore,\r\n\t\t\t\tReviewData: criteriaFeedback,\r\n\t\t\t\tTaskId: taskId\r\n\t\t\t}\r\n\t\t\tconst thisReview = await reviewService.createNewReview(newReview)\r\n\t\t\treturn thisReview\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Auto save the review before a page refresh.\r\n\t\tasync saveReviewBeforeRefresh() {\r\n\t\t\tif (this.review != null) {\r\n\t\t\t\tif (this.cIndex != null) {\r\n\t\t\t\t\t// Update this review feedback\r\n\t\t\t\t\tconst api = urlUtils.getBaseApiURL() + '/review/data'\r\n\t\t\t\t\tconst xmlhttp = new XMLHttpRequest()\r\n\t\t\t\t\txmlhttp.open('PUT', api, false)// the false is for making the call synchronous\r\n\t\t\t\t\txmlhttp.setRequestHeader('Content-Type', 'application/json;charset=UTF-8')\r\n\t\t\t\t\txmlhttp.send(JSON.stringify(this.criteriaFeedback[this.cIndex]))\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tif (this.cIndex != null && this.criteriaFeedback[this.cIndex].Comment != '') {\r\n\t\t\t\t\t// Create new review\r\n\t\t\t\t\tconst reviewType = 'self_review'\r\n\t\t\t\t\tconst lastActivityDate = this.getlastActivityDate()\r\n\t\t\t\t\tconst lastCriteriaScore = this.criteriaFeedback[this.criteriaFeedback.length - 1].Mark\r\n\t\t\t\t\tconst holisticScore = lastCriteriaScore == null ? 999 : lastCriteriaScore\r\n\t\t\t\t\tconst newReview = {\r\n\t\t\t\t\t\tDocId: this.docId,\r\n\t\t\t\t\t\tTermCode: this.termCode,\r\n\t\t\t\t\t\tOrgCode: this.orgCode,\r\n\t\t\t\t\t\tClassCode: this.classCode,\r\n\t\t\t\t\t\tRevieweeId: this.revieweeId,\r\n\t\t\t\t\t\tAssignmentId: this.assignmentId,\r\n\t\t\t\t\t\tReviewerId: this.reviewerId,\r\n\t\t\t\t\t\tReviewType: reviewType,\r\n\t\t\t\t\t\tUploadedDate: this.getDateStr(this.uploadedDate),\r\n\t\t\t\t\t\tIsSaved: 'Y',\r\n\t\t\t\t\t\tEmailSent: 'N',\r\n\t\t\t\t\t\tLastActivityDate: lastActivityDate,\r\n\t\t\t\t\t\tReviewerRole: this.reviewerRole,\r\n\t\t\t\t\t\tFinalGrade: 'NG',\r\n\t\t\t\t\t\tPercentScore: 0,\r\n\t\t\t\t\t\tHolisticScore: holisticScore,\r\n\t\t\t\t\t\tReviewData: this.criteriaFeedback,\r\n\t\t\t\t\t\tTaskId: this.taskId\r\n\t\t\t\t\t}\r\n\t\t\t\t\tconst api = urlUtils.getBaseApiURL() + '/review'\r\n\t\t\t\t\tconst xmlhttp = new XMLHttpRequest()\r\n\t\t\t\t\txmlhttp.open('POST', api, false)// the false is for making the call synchronous\r\n\t\t\t\t\txmlhttp.setRequestHeader('Content-Type', 'application/json;charset=UTF-8')\r\n\t\t\t\t\txmlhttp.send(JSON.stringify(newReview))\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Auto save the review.\r\n\t\t// @arg The criteria index.\r\n\t\tsaveReview(criteriaIndex) {\r\n\t\t\tif (this.review != null) {\r\n\t\t\t\t// Update this review feedback\r\n\t\t\t\treviewService.updateReviewFeeback(this.criteriaFeedback[criteriaIndex])\r\n\t\t\t\t\t.then(review => {\r\n\t\t\t\t\t\tconst message = document.getElementById('savedMessage')\r\n\t\t\t\t\t\tmessage.style.display = 'inline-block'\r\n\t\t\t\t\t\tsetTimeout(function() {\r\n\t\t\t\t\t\t\tif (message.style.display == 'inline-block') { message.style.display = 'none' }\r\n\t\t\t\t\t\t}, 3000)\r\n\t\t\t\t\t}).catch((error) => {\r\n\t\t\t\t\t\tconsole.log(error)\r\n\t\t\t\t\t\tNotification.error({\r\n\t\t\t\t\t\t\tduration: 6000,\r\n\t\t\t\t\t\t\ttitle: 'Error',\r\n\t\t\t\t\t\t\tmessage: 'Your feedback was not saved.'\r\n\t\t\t\t\t\t})\r\n\t\t\t\t\t})\r\n\t\t\t} else {\r\n\t\t\t\t// Create new review\r\n\t\t\t\tconst reviewType = 'self_review'\r\n\t\t\t\tconst lastActivityDate = this.getlastActivityDate()\r\n\t\t\t\tconst lastCriteriaScore = this.criteriaFeedback[this.criteriaFeedback.length - 1].Mark\r\n\t\t\t\tconst holisticScore = lastCriteriaScore == null ? 999 : lastCriteriaScore\r\n\t\t\t\tconst newReview = {\r\n\t\t\t\t\tDocId: this.docId,\r\n\t\t\t\t\tTermCode: this.termCode,\r\n\t\t\t\t\tOrgCode: this.orgCode,\r\n\t\t\t\t\tClassCode: this.classCode,\r\n\t\t\t\t\tRevieweeId: this.revieweeId,\r\n\t\t\t\t\tAssignmentId: this.assignmentId,\r\n\t\t\t\t\tReviewerId: this.reviewerId,\r\n\t\t\t\t\tReviewType: reviewType,\r\n\t\t\t\t\tUploadedDate: this.getDateStr(this.uploadedDate),\r\n\t\t\t\t\tIsSaved: 'Y',\r\n\t\t\t\t\tEmailSent: 'N',\r\n\t\t\t\t\tLastActivityDate: lastActivityDate,\r\n\t\t\t\t\tReviewerRole: this.reviewerRole,\r\n\t\t\t\t\tFinalGrade: 'NG',\r\n\t\t\t\t\tPercentScore: 0,\r\n\t\t\t\t\tHolisticScore: holisticScore,\r\n\t\t\t\t\tReviewData: this.criteriaFeedback,\r\n\t\t\t\t\tTaskId: this.taskId\r\n\t\t\t\t}\r\n\t\t\t\treviewService.createNewReview(newReview)\r\n\t\t\t\t\t.then(review => {\r\n\t\t\t\t\t\tthis.review = review\r\n\t\t\t\t\t\tthis.criteriaFeedback = review.ReviewData\r\n\t\t\t\t\t\tthis.statusType = 'danger'\r\n\t\t\t\t\t\tthis.submitTooltip = 'Your feedback is saved, but has not yet been submitted.'\r\n\t\t\t\t\t\tconst message = document.getElementById('savedMessage')\r\n\t\t\t\t\t\tmessage.style.display = 'inline-block'\r\n\t\t\t\t\t\tsetTimeout(function() {\r\n\t\t\t\t\t\t\tif (message.style.display == 'inline-block') { message.style.display = 'none' }\r\n\t\t\t\t\t\t}, 3000)\r\n\t\t\t\t\t}).catch((error) => {\r\n\t\t\t\t\t\tconsole.log(error)\r\n\t\t\t\t\t\tNotification.error({\r\n\t\t\t\t\t\t\tduration: 6000,\r\n\t\t\t\t\t\t\ttitle: 'Error',\r\n\t\t\t\t\t\t\tmessage: 'Your feedback was not saved.'\r\n\t\t\t\t\t\t})\r\n\t\t\t\t\t})\r\n\t\t\t}\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Submit a review.\r\n\t\tsubmitReview() {\r\n\t\t\tif (this.review != null) {\r\n\t\t\t\t// Update this review\r\n\t\t\t\tconst review = this.review\r\n\t\t\t\treview.IsSaved = 'N'\r\n\t\t\t\treview.EmailSent = 'Y'\r\n\t\t\t\treview.LastActivityDate = this.getlastActivityDate()\r\n\t\t\t\tconst lastCriteriaScore = this.criteriaFeedback[this.criteriaFeedback.length - 1].Mark\r\n\t\t\t\treview.HolisticScore = lastCriteriaScore == null ? 999 : lastCriteriaScore\r\n\t\t\t\treviewService.updateReview(review)\r\n\t\t\t\t\t.then(review => {\r\n\t\t\t\t\t\tthis.review = review\r\n\t\t\t\t\t\tthis.criteriaFeedback = review.ReviewData\r\n\t\t\t\t\t\tthis.statusType = 'primary'\r\n\t\t\t\t\t\tthis.submitTooltip = 'Your feedback is submitted.'\r\n\t\t\t\t\t\tNotification.success({\r\n\t\t\t\t\t\t\tduration: 6000,\r\n\t\t\t\t\t\t\ttitle: 'Success',\r\n\t\t\t\t\t\t\tmessage: 'Your feedback was submitted successfully.'\r\n\t\t\t\t\t\t})\r\n\t\t\t\t\t\tthis.myapi.save()\r\n\t\t\t\t\t\tconst that = this\r\n\t\t\t\t\t\tsetTimeout(function() {\r\n\t\t\t\t\t\t\tpdfService.processCommentText(that.review.DocId)\r\n\t\t\t\t\t\t}, 2000)\r\n\t\t\t\t\t}).catch((error) => {\r\n\t\t\t\t\t\tconsole.log(error)\r\n\t\t\t\t\t\tNotification.error({\r\n\t\t\t\t\t\t\tduration: 6000,\r\n\t\t\t\t\t\t\ttitle: 'Error',\r\n\t\t\t\t\t\t\tmessage: 'Your feedback was not submitted successfully.'\r\n\t\t\t\t\t\t})\r\n\t\t\t\t\t})\r\n\t\t\t}\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Get previous feedback.\r\n\t\t// @arg The previously submitted review.\r\n\t\tgetPreviousFeedback(review) {\r\n\t\t\tconst criteriaFeedbacks = []\r\n\t\t\tfor (let i = 0; i < review.ReviewData.length; i++) {\r\n\t\t\t\tconst criteria = review.ReviewData[i]\r\n\t\t\t\tconst criteriaFeedback = {\r\n\t\t\t\t\tCriteriaId: criteria.CriteriaId,\r\n\t\t\t\t\tMark: criteria.Mark == null ? 999 : criteria.Mark,\r\n\t\t\t\t\tComment: criteria.Comment,\r\n\t\t\t\t\tAudioPath: criteria.AudioPath\r\n\t\t\t\t}\r\n\t\t\t\tcriteriaFeedbacks.push(criteriaFeedback)\r\n\t\t\t}\r\n\t\t\treturn criteriaFeedbacks\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Handles logics when a project is selected.\r\n\t\tasync onAssignmentChange() {\r\n\t\t\tthis.pageNum = 1\r\n\t\t\tthis.review = null\r\n\t\t\tthis.submissions = []\r\n\t\t\tthis.currentSubmission = null\r\n\t\t\tthis.rubricCriteria = null\r\n\t\t\t// this.revieweeId = null;\r\n\t\t\tthis.assignmentId = this.currentAssignment.Id\r\n\t\t\tthis.currentTask = null\r\n\t\t\tthis.taskId = null\r\n\r\n\t\t\tif (this.currentAssignment.Tasks != null && this.currentAssignment.Tasks.length > 0) {\r\n\t\t\t\tvar selfReviewTasks = this.currentAssignment.Tasks.filter(t => t.Type == 'self_review')\r\n\t\t\t\tif (selfReviewTasks != null && selfReviewTasks.length > 0) {\r\n\t\t\t\t\tthis.currentTask = selfReviewTasks[0]\r\n\t\t\t\t\tthis.taskId = selfReviewTasks[0].Id\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tthis.reviewerId = this.$store.state.auth.user.UserName\r\n\t\t\tif (this.currentAssignment.IsGroupAssignment) {\r\n\t\t\t\tconst hasTeam = await this.getTeam()\r\n\t\t\t\tif (hasTeam) {\r\n\t\t\t\t\tthis.displayDocumentAndReview()\r\n\t\t\t\t} else {\r\n\t\t\t\t\tNotification.info({\r\n\t\t\t\t\t\tduration: 6000,\r\n\t\t\t\t\t\ttitle: 'Info',\r\n\t\t\t\t\t\tmessage: 'You have not been assigned into a team for this group project.'\r\n\t\t\t\t\t})\r\n\t\t\t\t\tdocument.getElementById('full_width_container').style.display = 'none'\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tthis.revieweeId = this.reviewerId\r\n\t\t\t\tthis.displayDocumentAndReview()\r\n\t\t\t}\r\n\t\t\tthis.$router.push('/self_review?assignmentId=' + this.assignmentId + '&taskId=' + this.taskId)\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Handles logics when a student is selected.\r\n\t\t// onStudentChange() {\r\n\t\t// \tthis.pageNum = 1\r\n\t\t// \tthis.submissions = []\r\n\t\t// \tthis.currentSubmission = null\r\n\t\t// \tthis.rubricCriteria = null\r\n\t\t// \tthis.displayDocumentAndReview()\r\n\t\t// \tthis.$router.push('/self_review?reviewerId=' + this.reviewerId + '&revieweeId=' + this.revieweeId + '&assignmentId=' + this.assignmentId)\r\n\t\t// },\r\n\t\t// @vuese\r\n\t\t// Handles logics when a submission is selected\r\n\t\tasync onSubmissionChange() {\r\n\t\t\tthis.pageNum = 1\r\n\t\t\tthis.rubricCriteria = null\r\n\t\t\t// Display the doc based on latest submission or latest review\r\n\t\t\tawait this.displayDocument(this.currentSubmission.docId)\r\n\r\n\t\t\t// Display the latest review\r\n\t\t\tawait this.displayReview(this.currentSubmission.review)\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Configures Rad PDf for displaying the document.\r\n\t\tPdfAttachListeners() {\r\n\t\t\tconst id = 'PdfWebControl'\r\n\t\t\t// eslint-disable-next-line no-undef\r\n\t\t\tthis.myapi = new PdfWebControlApi(id)\r\n\t\t\tthis.myapi.addEventListener('modeChanged', function(evt) {\r\n\t\t\t\tevt.byLine = true\r\n\t\t\t})\r\n\t\t\tconst that = this\r\n\t\t\tthis.myapi.addEventListener('viewChanged', function(evt) {\r\n\t\t\t\tthat.pageNum = that.myapi.getPageViewed().getPageNumber()\r\n\t\t\t})\r\n\r\n\t\t\tthis.myapi.addEventListener('objectAdded', function(evt) {\r\n\t\t\t\tif (evt.obj.getType() == 154) { // Highlight annotation\r\n\t\t\t\t\tconst props = evt.obj.getProperties()\r\n\t\t\t\t\tconst popup = evt.obj.getPopup()\r\n\r\n\t\t\t\t\tevt.obj.setProperties({\r\n\t\t\t\t\t\t'customData': evt.textSelected\r\n\t\t\t\t\t})\r\n\r\n\t\t\t\t\tpopup.setProperties(\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tauthor: 'RAD PDF',\r\n\t\t\t\t\t\t\tsubject: 'In-text Comment',\r\n\t\t\t\t\t\t\ttop: props['top'] - 60,\r\n\t\t\t\t\t\t\tleft: props['left'] - 5,\r\n\t\t\t\t\t\t\theight: 60\r\n\t\t\t\t\t\t})\r\n\r\n\t\t\t\t\tthat.myapi.setMode(that.myapi.Mode.None)\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (evt.obj.getType() == 100) {\r\n\t\t\t\t\tthat.myapi.setMode(that.myapi.Mode.None)\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (evt.obj.getType() == 101) {\r\n\t\t\t\t\tthat.myapi.setMode(that.myapi.Mode.None)\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (evt.obj.getType() == that.myapi.ObjectType.StrikeoutAnnotation) {\r\n\t\t\t\t\tthat.myapi.setMode(that.myapi.Mode.None)\r\n\t\t\t\t}\r\n\t\t\t\tif (evt.obj.getType() == that.myapi.ObjectType.TextAnnotation) {\r\n\t\t\t\t\tthat.myapi.setMode(that.myapi.Mode.None)\r\n\t\t\t\t}\r\n\t\t\t})\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Handles logics when the page number is changed.\r\n\t\tchangePage() {\r\n\t\t\tthis.myapi.setView({ 'page': this.pageNum })\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Handles logics when the zoom out button is clicked.\r\n\t\tzoomOut() {\r\n\t\t\tif (this.myapi) {\r\n\t\t\t\tif (this.zoomValue > 40) { this.myapi.setView({ 'zoom': this.zoomValue -= 20 }) }\r\n\t\t\t}\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Handles logics when the zoom in button is clicked.\r\n\t\tzoomIn() {\r\n\t\t\tif (this.myapi) {\r\n\t\t\t\tif (this.zoomValue < 200 && this.zoomValue > 20) { this.myapi.setView({ 'zoom': this.zoomValue += 20 }) }\r\n\t\t\t}\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Handles logics when the zoom fit width button is clicked.\r\n\t\tzoomFitWidth() {\r\n\t\t\tif (this.myapi) {\r\n\t\t\t\tthis.zoomValue = 140\r\n\t\t\t\tthis.myapi.setView({ 'zoom': -1 })\r\n\t\t\t}\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Handles logics when the download button is clicked.\r\n\t\tdownloadPdf() {\r\n\t\t\tif (this.myapi) {\r\n\t\t\t\tthis.myapi.download()\r\n\t\t\t}\r\n\t\t\treturn false\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Handles logics when the select text button is clicked.\r\n\t\tselectTextPdf() {\r\n\t\t\tif (this.myapi) {\r\n\t\t\t\tthis.myapi.setMode(this.myapi.Mode.SelectText)\r\n\t\t\t}\r\n\t\t\treturn false\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Handles logics when the highlight button is clicked.\r\n\t\thighlightPdf() {\r\n\t\t\tif (this.myapi) {\r\n\t\t\t\tthis.myapi.setMode(this.myapi.Mode.InsertHighlightAnnotation)\r\n\t\t\t}\r\n\t\t\treturn false\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Handles logics when the free text button is clicked.\r\n\t\tfreeTextPdf() {\r\n\t\t\tif (this.myapi) {\r\n\t\t\t\tthis.myapi.setMode(this.myapi.Mode.InsertTextShape)\r\n\t\t\t}\r\n\t\t\treturn false\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Handles logics when the strike out button is clicked.\r\n\t\tstrikeOutPdf() {\r\n\t\t\tif (this.myapi) {\r\n\t\t\t\tthis.myapi.setMode(this.myapi.Mode.InsertStrikeoutAnnotation)\r\n\t\t\t}\r\n\t\t\treturn false\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Handles logics when the free draw button is clicked.\r\n\t\tfreeDrawPdf() {\r\n\t\t\tif (this.myapi) {\r\n\t\t\t\tthis.myapi.setMode(this.myapi.Mode.InsertInkShape)\r\n\t\t\t}\r\n\t\t\treturn false\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Handles logics when the sticky note button is clicked.\r\n\t\tstickyNotePdf() {\r\n\t\t\tif (this.myapi) {\r\n\t\t\t\tthis.myapi.setMode(this.myapi.Mode.InsertTextAnnotation)\r\n\t\t\t}\r\n\t\t\treturn false\r\n\t\t},\r\n\t\tgetUrlParameter(sParam) {\r\n\t\t\tconst sPageURL = decodeURIComponent(window.location.search.substring(1))\r\n\r\n\t\t\tconst sURLVariables = sPageURL.split('&')\r\n\r\n\t\t\tlet sParameterName\r\n\r\n\t\t\tlet i\r\n\r\n\t\t\tfor (i = 0; i < sURLVariables.length; i++) {\r\n\t\t\t\tsParameterName = sURLVariables[i].split('=')\r\n\r\n\t\t\t\tif (sParameterName[0] === sParam) {\r\n\t\t\t\t\treturn sParameterName[1] === undefined ? true : sParameterName[1]\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t},\r\n\t\tgetlastActivityDate() {\r\n\t\t\t// let currentZone = this.$moment.tz.guess();\r\n\t\t\t// if (currentZone != zoneName) {\r\n\t\t\t// \tlet today = this.$moment().tz(zoneName)._d;\r\n\t\t\t// \treturn today.getFullYear() + '-' + (today.getMonth() + 1) + '-' +\r\n\t\t\t// today.getDate() + ' ' + today.getHours() + ':' + today.getMinutes() + ':' + today.getSeconds();\r\n\t\t\t// } else {\r\n\r\n\t\t\t// }\r\n\t\t\tconst today = this.$moment()._d\r\n\t\t\treturn today.getFullYear() + '-' + (today.getMonth() + 1) + '-' +\r\n today.getDate() + ' ' + today.getHours() + ':' + today.getMinutes() + ':' + today.getSeconds()\r\n\t\t},\r\n\t\tgetDateStr(date) {\r\n\t\t\tconst thisDate = this.$moment(date)._d\r\n\t\t\treturn thisDate.getFullYear() + '-' + (thisDate.getMonth() + 1) + '-' +\r\n thisDate.getDate() + ' ' + thisDate.getHours() + ':' + thisDate.getMinutes() + ':' + thisDate.getSeconds()\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Go back to Projects page.\r\n\t\tbackToAssignments() {\r\n\t\t\tthis.$router.push('/course/' + this.classCode + '/projects/')\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Go back to Student Submissions page.\r\n\t\tbackToStudentSubmissions() {\r\n\t\t\tthis.$router.push('/course/' + this.classCode + '/projects/' + this.assignmentId + '/submissions')\r\n\t\t}\r\n\t}\r\n}\r\n</script>\r\n\r\n<style scoped>\r\nbody{\r\n background: #F1F3FA;\r\n}\r\n#content-wrapper {\r\n margin-left: 65px;\r\n}\r\n\r\n.el-card{\r\n border: 1px solid #d4d5d6;\r\n}\r\n.el-card.is-always-shadow, .el-card.is-hover-shadow:focus, .el-card.is-hover-shadow:hover {\r\n -webkit-box-shadow: 0 2px 12px 0 #F1F3FA;\r\n box-shadow: 0 2px 12px 0 #F1F3FA;\r\n}\r\n\r\n.el-card__header {\r\n padding: 12px 12px;\r\n}\r\n\r\n.el-card__body {\r\n padding: 10px;\r\n}\r\n\r\n.el-textarea__inner {\r\n padding: 5px 10px;\r\n}\r\n\r\n.filter-btn{\r\n text-align: center;\r\n box-shadow: none;\r\n display: inline-block;\r\n padding: 0px 10px;\r\n vertical-align: middle;\r\n touch-action: manipulation;\r\n cursor: pointer;\r\n color: #636363;\r\n}\r\n\r\n.filter-divider{\r\n float: left;\r\n border-right: solid 1px #cccccc;\r\n height: 50px;\r\n}\r\n\r\n#full_width_container.full-width {\r\n position: absolute;\r\n top: 3.1325em;\r\n bottom: 2px;\r\n left: 215px;\r\n right: 0;\r\n min-width: 460px;\r\n}\r\n\r\n#full_width_container{\r\n position: absolute;\r\n top: 3.1325em;\r\n bottom: 2px;\r\n left: 65px;\r\n right: 0;\r\n min-width: 460px;\r\n}\r\n\r\n#left_side {\r\n top: 0;\r\n bottom: 0;\r\n overflow-y: hidden;\r\n left: 0;\r\n min-width: 700px;\r\n}\r\n#right_side {\r\n top: 0;\r\n bottom: 0;\r\n right: 0;\r\n font-size: 14px;\r\n font-size: .875rem;\r\n}\r\n.el-input-number--small{\r\n width: 100px;\r\n}\r\n\r\n.el-radio-button >>> .el-radio-button__inner{\r\n padding: 12px 15px;\r\n}\r\n\r\n.full_height {\r\n height: 100%;\r\n overflow-x: auto;\r\n}\r\n\r\n#left_side_inner, #submissions_container, #iframe_holder{\r\n height: 100%;\r\n width: 100%;\r\n border: 0 none;\r\n}\r\niframe{\r\n width: 100%;\r\n border: 0px;\r\n overflow: auto;\r\n height: 99%;\r\n min-height: 0px;\r\n}\r\n\r\n#width_resizer {\r\n position: absolute;\r\n top: 0;\r\n bottom: 0;\r\n left: 0;\r\n background: #bbb url(https://du11hjcvx0uqb.cloudfront.net/dist/images/splitpane_handle-ew-1b67cccf0f.gif) no-repeat scroll 50% 50%;\r\n cursor: pointer;\r\n width: 7px;\r\n border-right: 1px solid #838383;\r\n z-index: 2;\r\n}\r\n.right_side_content {\r\n position: absolute;\r\n top: 0;\r\n bottom: 0;\r\n left: 8px;\r\n right: 0;\r\n}\r\n#right_side #rightside_inner {\r\n overflow-y: auto;\r\n position: relative;\r\n}\r\n\r\n.ViewerControls--with-annotations {\r\n height: 49px;\r\n}\r\n.ViewerControls {\r\n background-color: #636363;\r\n color: #fff;\r\n font-size: 14px;\r\n line-height: 24px;\r\n /* overflow-x: auto; */\r\n /* position: absolute;\r\n width: 100%; */\r\n}\r\n.ViewerControls-primary {\r\n -ms-touch-action: none;\r\n touch-action: none;\r\n pointer-events: all;\r\n display: -webkit-box;\r\n display: -ms-flexbox;\r\n display: flex;\r\n}\r\n.ViewerControls--download, .ViewerControls--title {\r\n -webkit-box-flex: 1;\r\n -ms-flex: 1;\r\n flex: 1;\r\n display: -webkit-box;\r\n display: -ms-flexbox;\r\n display: flex;\r\n -webkit-box-align: center;\r\n -ms-flex-align: center;\r\n align-items: center;\r\n white-space: nowrap;\r\n}\r\n\r\n.download-button--button {\r\n background-color: transparent;\r\n font-size: 16px;\r\n border: none;\r\n height: 48px;\r\n width: 48px;\r\n color: white;\r\n cursor: pointer;\r\n}\r\n/* .download-button--button:hover {\r\n background-color: #777777;\r\n} */\r\n\r\n.ViewerControls--page-controls {\r\n display: -webkit-box;\r\n display: -ms-flexbox;\r\n display: flex;\r\n -webkit-box-align: center;\r\n -ms-flex-align: center;\r\n align-items: center;\r\n white-space: nowrap;\r\n}\r\n\r\n.DocumentControls {\r\n display: -webkit-box;\r\n display: -ms-flexbox;\r\n display: flex;\r\n -webkit-box-align: center;\r\n -ms-flex-align: center;\r\n align-items: center;\r\n}\r\n\r\n.AnnotationControlButton {\r\n width: 48px;\r\n padding: 0;\r\n border: 0 none;\r\n color: #fff;\r\n background-color: #636363;\r\n margin-top: 0;\r\n margin-bottom: 0;\r\n cursor: pointer;\r\n -webkit-box-sizing: content-box;\r\n box-sizing: content-box;\r\n -webkit-touch-callout: none;\r\n user-select: none;\r\n -moz-user-select: none;\r\n -webkit-user-select: none;\r\n -ms-user-select: none;\r\n -webkit-tap-highlight-color: rgba(0,0,0,0);\r\n}\r\n.AnnotationControlButton-inner, .AnnotationControlButton-outer {\r\n -webkit-box-sizing: content-box;\r\n box-sizing: content-box;\r\n display: -webkit-box;\r\n display: -ms-flexbox;\r\n display: flex;\r\n}\r\n\r\n.AnnotationControlButton-inner {\r\n margin: 0;\r\n height: 44px;\r\n width: 48px;\r\n -webkit-box-pack: center;\r\n -ms-flex-pack: center;\r\n justify-content: center;\r\n -webkit-box-align: center;\r\n -ms-flex-align: center;\r\n align-items: center;\r\n}\r\n\r\n.AnnotationControlButton-inner {\r\n margin: 0;\r\n height: 44px;\r\n width: 48px;\r\n -webkit-box-pack: center;\r\n -ms-flex-pack: center;\r\n justify-content: center;\r\n -webkit-box-align: center;\r\n -ms-flex-align: center;\r\n align-items: center;\r\n}\r\n.AnnotationControlButton-outer {\r\n width: 44px;\r\n margin: 1px;\r\n border: 1px solid #636363;\r\n}\r\n\r\n.ViewerControls--current-page {\r\n -moz-appearance: textfield;\r\n margin-top: 10px;\r\n border-radius: 3px;\r\n border: 0;\r\n height: 28px;\r\n width: 36px;\r\n background-color: #fff;\r\n color: #636363;\r\n font-size: 14px;\r\n text-align: center;\r\n vertical-align: top;\r\n}\r\n.next-prev{\r\n text-align: center;\r\n -webkit-box-shadow: none;\r\n box-shadow: none;\r\n display: inline-block;\r\n padding: 0px 10px;\r\n vertical-align: middle;\r\n -ms-touch-action: manipulation;\r\n touch-action: manipulation;\r\n cursor: pointer;\r\n border: 0 none;\r\n background: none;\r\n}\r\n/* .AnnotationControlButton.selected .AnnotationControlButton-outer {\r\n border-color: #fff;\r\n border: 1px solid #fff;\r\n color: #636363;\r\n}\r\n.AnnotationControlButton.selected {\r\n outline: none;\r\n background-color: #fff;\r\n}\r\n\r\n.AnnotationControlButton:active .AnnotationControlButton-outer {\r\n -webkit-box-shadow: inset 0 0 2px #000;\r\n box-shadow: inset 0 0 2px #000;\r\n}\r\n.AnnotationControlButton:hover:enabled .AnnotationControlButton-outer {\r\n border-color: #777777;\r\n}\r\n.AnnotationControlButton:hover:enabled {\r\n background-color: #777777;\r\n} */\r\n\r\n</style>\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SelfReview.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SelfReview.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./SelfReview.vue?vue&type=template&id=661120a6&scoped=true&\"\nimport script from \"./SelfReview.vue?vue&type=script&lang=js&\"\nexport * from \"./SelfReview.vue?vue&type=script&lang=js&\"\nimport style0 from \"./SelfReview.vue?vue&type=style&index=0&id=661120a6&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"661120a6\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('div',{staticClass:\"breadcumb\"},[_c('div',{staticClass:\"ic-app-crumbs\"},[_c('span',{staticClass:\"breadcumb-text\"},[_c('router-link',{staticStyle:{\"color\":\"#4E5E63\"},attrs:{\"to\":{ path: '/course/'+ _vm.currentCourse.ClassCode +'/projects' }}},[_vm._v(\"\\n \"+_vm._s(_vm.currentCourse.ClassDescription)+\"\\n \")]),_c('i',{staticClass:\"fas fa-chevron-right breadcumb-next\"}),_vm._v(\"\\n Collective Feedbacks\\n \")],1)])]),_c('div',{attrs:{\"id\":\"mainDiv\"}},[_c('div',{staticClass:\"cf_list\"},[_c('div',{staticStyle:{\"margin-bottom\":\"20px\"}},[(_vm.userRole != 'Student')?_c('el-button',{staticStyle:{\"margin-right\":\"20px\"},attrs:{\"id\":\"cfNewButton\"},on:{\"click\":_vm.showNewCFModal}},[_vm._v(\"\\n Add New Collective Feedback\\n \")]):_vm._e(),_c('el-input',{staticStyle:{\"width\":\"20%\"},attrs:{\"placeholder\":\"Search for collective Feedback\"},model:{value:(_vm.search),callback:function ($$v) {_vm.search=$$v},expression:\"search\"}})],1),_c('el-table',{staticStyle:{\"width\":\"100%\",\"word-break\":\"break-word !important\"},attrs:{\"data\":_vm.tableData.filter(function (data) { return !_vm.search || data.Name.toLowerCase().includes(_vm.search.toLowerCase()); })}},[_c('el-table-column',{attrs:{\"label\":\"Collective Feedback\",\"prop\":\"Name\",\"sortable\":\"\"},scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [_c('label',{staticStyle:{\"cursor\":\"pointer\",\"color\":\"#337ab7\",\"word-break\":\"break-word !important\"},on:{\"click\":function($event){return _vm.handleCFClick(scope.$index, scope.row)}}},[_vm._v(\"\\n \"+_vm._s(scope.row.Name)+\"\\n \")])]}}])}),_c('el-table-column',{attrs:{\"label\":\"Project Name\",\"prop\":\"AssignmentName\",\"sortable\":\"\"}}),_c('el-table-column',{attrs:{\"label\":\"Term\",\"prop\":\"TermName\",\"sortable\":\"\"}}),_c('el-table-column',{attrs:{\"label\":\"Class\",\"prop\":\"ClassName\",\"sortable\":\"\"}}),_c('el-table-column',{attrs:{\"label\":\"Issues Count\"},scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [_vm._v(\"\\n \"+_vm._s(scope.row.CollectiveFeedbackIssues.length)+\"\\n \")]}}])}),_c('el-table-column',{attrs:{\"label\":\"Last Updated Time\"},scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [_vm._v(\"\\n \"+_vm._s(_vm._f(\"formatDate\")(scope.row.UpdatedTime))+\"\\n \")]}}])}),(_vm.userRole == 'Instructor')?_c('el-table-column',{attrs:{\"label\":\"Published\"},scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [(scope.row.ShowToStudent == 1)?_c('el-tooltip',{attrs:{\"content\":\"Published collective feedback is available to students\",\"placement\":\"top\"}},[_c('el-switch',{attrs:{\"active-color\":\"#13ce66\",\"inactive-color\":\"#ff4949\",\"active-value\":1,\"inactive-value\":0},on:{\"change\":function($event){return _vm.onPublishChange($event, scope.row)}},model:{value:(scope.row.ShowToStudent),callback:function ($$v) {_vm.$set(scope.row, \"ShowToStudent\", $$v)},expression:\"scope.row.ShowToStudent\"}})],1):_c('el-tooltip',{attrs:{\"content\":\"Unpublished collective feedback will not be available to students\",\"placement\":\"top\"}},[_c('el-switch',{attrs:{\"active-color\":\"#13ce66\",\"inactive-color\":\"#ff4949\",\"active-value\":1,\"inactive-value\":0},on:{\"change\":function($event){return _vm.onPublishChange($event, scope.row)}},model:{value:(scope.row.ShowToStudent),callback:function ($$v) {_vm.$set(scope.row, \"ShowToStudent\", $$v)},expression:\"scope.row.ShowToStudent\"}})],1)]}}],null,false,3053839441)}):_vm._e(),_c('el-table-column',{attrs:{\"label\":\"Action\"},scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [_c('el-button',{staticStyle:{\"-webkit-box-shadow\":\"none\",\"box-shadow\":\"none\",\"display\":\"inline-block\",\"padding\":\"0px 2px\",\"vertical-align\":\"middle\",\"-ms-touch-action\":\"manipulation\",\"touch-action\":\"manipulation\",\"cursor\":\"pointer\",\"border\":\"0 none\",\"background\":\"none\",\"margin-right\":\"2px\"},attrs:{\"size\":\"mini\"},on:{\"click\":function($event){return _vm.downloadCF(scope.$index, scope.row)}}},[_c('i',{staticClass:\"fas fa-file-download\",staticStyle:{\"font-size\":\"18px\"}})]),(_vm.userRole != 'Student')?_c('el-button',{staticStyle:{\"-webkit-box-shadow\":\"none\",\"box-shadow\":\"none\",\"display\":\"inline-block\",\"padding\":\"0px 2px\",\"vertical-align\":\"middle\",\"-ms-touch-action\":\"manipulation\",\"touch-action\":\"manipulation\",\"cursor\":\"pointer\",\"border\":\"0 none\",\"background\":\"none\"},attrs:{\"size\":\"mini\"},on:{\"click\":function($event){return _vm.showEditCFModal(scope.$index, scope.row)}}},[_c('i',{staticClass:\"far fa-edit\",staticStyle:{\"font-size\":\"16px\"}})]):_vm._e(),(_vm.userRole != 'Student')?_c('el-button',{staticStyle:{\"-webkit-box-shadow\":\"none\",\"box-shadow\":\"none\",\"display\":\"inline-block\",\"padding\":\"0px 2px\",\"vertical-align\":\"middle\",\"-ms-touch-action\":\"manipulation\",\"touch-action\":\"manipulation\",\"cursor\":\"pointer\",\"border\":\"0 none\",\"background\":\"none\"},attrs:{\"size\":\"mini\"},on:{\"click\":function($event){return _vm.showDeleteCFModal(scope.$index, scope.row)}}},[_c('i',{staticClass:\"far fa-trash-alt\",staticStyle:{\"font-size\":\"16px\"}})]):_vm._e()]}}])})],1)],1)]),_c('div',[_c('el-dialog',{attrs:{\"id\":\"cf-new-dialog\",\"visible\":_vm.cfNewDialogVisible,\"width\":\"600px\",\"center\":\"\"},on:{\"update:visible\":function($event){_vm.cfNewDialogVisible=$event}}},[_c('template',{slot:\"title\"},[_c('span',{staticClass:\"dialog-title\"},[_vm._v(\"\\n Add New Collective Feedback\\n \")])]),_c('hr'),_c('el-form',{ref:\"cfNew\",staticStyle:{\"margin-top\":\"20px\"},attrs:{\"model\":_vm.cfNew,\"label-width\":\"150px\"}},[_c('el-form-item',{attrs:{\"label\":\"Feedback Name\",\"prop\":\"cfName\"}},[_c('el-input',{attrs:{\"placeholder\":\"Collective Feedback Name\"},model:{value:(_vm.cfNew.cfName),callback:function ($$v) {_vm.$set(_vm.cfNew, \"cfName\", $$v)},expression:\"cfNew.cfName\"}})],1),_c('el-form-item',{attrs:{\"label\":\"Project\",\"prop\":\"cfSelectedProject\"}},[_c('el-select',{attrs:{\"id\":\"projectInput\",\"clearable\":\"\",\"filterable\":\"\",\"placeholder\":\"Select a Project\"},model:{value:(_vm.cfNew.cfSelectedProject),callback:function ($$v) {_vm.$set(_vm.cfNew, \"cfSelectedProject\", $$v)},expression:\"cfNew.cfSelectedProject\"}},_vm._l((_vm.cfNew.cfProjects),function(item){return _c('el-option',{key:item.Id,attrs:{\"label\":item.AssignmentName,\"value\":item.Id}})}),1)],1),_c('el-form-item',{attrs:{\"label\":\"Copy Issues From\",\"prop\":\"cfSelectedProject\"}},[_c('el-select',{attrs:{\"id\":\"copyCFInput\",\"clearable\":\"\",\"filterable\":\"\",\"placeholder\":\"Select a collective Feedback\"},model:{value:(_vm.cfNew.cfSelectedFeedback),callback:function ($$v) {_vm.$set(_vm.cfNew, \"cfSelectedFeedback\", $$v)},expression:\"cfNew.cfSelectedFeedback\"}},_vm._l((_vm.allCollectiveFeedbacks),function(item){return _c('el-option',{key:item.Id,attrs:{\"label\":item.Name + ' - ' + item.ClassName + ' - ' + item.AssignmentName,\"value\":item.Id}})}),1),(_vm.cfNew.cfSelectedFeedback)?_c('el-button',{staticStyle:{\"margin-left\":\"10px\"},attrs:{\"type\":\"info\"},on:{\"click\":function($event){return _vm.viewExistingCF(_vm.cfNew.cfSelectedFeedback)}}},[_vm._v(\"\\n View\\n \")]):_vm._e()],1),_c('el-form-item',[_c('el-checkbox',{attrs:{\"label\":\"Publish\"},model:{value:(_vm.cfNew.publish),callback:function ($$v) {_vm.$set(_vm.cfNew, \"publish\", $$v)},expression:\"cfNew.publish\"}})],1)],1),_c('span',{staticClass:\"dialog-footer\",attrs:{\"slot\":\"footer\"},slot:\"footer\"},[_c('el-button',{on:{\"click\":function($event){_vm.cfNewDialogVisible = false}}},[_vm._v(\"\\n Cancel\\n \")]),_c('el-button',{attrs:{\"type\":\"primary\"},on:{\"click\":function($event){return _vm.submitCFModal()}}},[_vm._v(\"\\n Submit\\n \")])],1)],2),_c('el-dialog',{attrs:{\"id\":\"cf-edit-dialog\",\"visible\":_vm.cfEditDialogVisible,\"width\":\"600px\",\"center\":\"\"},on:{\"update:visible\":function($event){_vm.cfEditDialogVisible=$event}}},[_c('template',{slot:\"title\"},[_c('span',{staticClass:\"dialog-title\"},[_vm._v(\"\\n Edit Collective Feedback\\n \")])]),_c('hr'),_c('el-form',{ref:\"cfNew\",staticStyle:{\"margin-top\":\"20px\"},attrs:{\"model\":_vm.cfNew,\"label-width\":\"150px\"}},[_c('el-form-item',{attrs:{\"label\":\"Feedback Name\",\"prop\":\"cfName\"}},[_c('el-input',{attrs:{\"placeholder\":\"Collective Feedback Name\"},model:{value:(_vm.cfNew.cfName),callback:function ($$v) {_vm.$set(_vm.cfNew, \"cfName\", $$v)},expression:\"cfNew.cfName\"}})],1),_c('el-form-item',{attrs:{\"label\":\"Project\",\"prop\":\"cfName\"}},[_c('el-select',{attrs:{\"id\":\"projectInput\",\"clearable\":\"\",\"filterable\":\"\",\"placeholder\":\"Select a project\"},model:{value:(_vm.cfNew.cfSelectedProject),callback:function ($$v) {_vm.$set(_vm.cfNew, \"cfSelectedProject\", $$v)},expression:\"cfNew.cfSelectedProject\"}},_vm._l((_vm.cfNew.cfProjects),function(item){return _c('el-option',{key:item.Id,attrs:{\"label\":item.AssignmentName,\"value\":item.Id}})}),1)],1),_c('el-form-item',[_c('el-checkbox',{attrs:{\"label\":\"Publish\"},model:{value:(_vm.cfNew.publish),callback:function ($$v) {_vm.$set(_vm.cfNew, \"publish\", $$v)},expression:\"cfNew.publish\"}})],1)],1),_c('span',{staticClass:\"dialog-footer\",attrs:{\"slot\":\"footer\"},slot:\"footer\"},[_c('el-button',{on:{\"click\":function($event){_vm.cfEditDialogVisible = false}}},[_vm._v(\"\\n Cancel\\n \")]),_c('el-button',{attrs:{\"type\":\"primary\"},on:{\"click\":function($event){return _vm.updateCFModal()}}},[_vm._v(\"\\n Submit\\n \")])],1)],2),_c('el-dialog',{attrs:{\"id\":\"cf-delete-dialog\",\"visible\":_vm.cfDeleteDialogVisible,\"width\":\"600px\",\"center\":\"\"},on:{\"update:visible\":function($event){_vm.cfDeleteDialogVisible=$event}}},[_c('template',{slot:\"title\"},[_c('span',{staticClass:\"dialog-title\"},[_vm._v(\"\\n Delete Collective Feedback\\n \")])]),_c('hr'),_c('p',[_vm._v(\"Do you want to delete this collective feedback and its issues?\")]),_c('span',{staticClass:\"dialog-footer\",attrs:{\"slot\":\"footer\"},slot:\"footer\"},[_c('el-button',{on:{\"click\":function($event){_vm.cfDeleteDialogVisible = false}}},[_vm._v(\"\\n Cancel\\n \")]),_c('el-button',{attrs:{\"type\":\"primary\"},on:{\"click\":function($event){return _vm.deleteCFModal()}}},[_vm._v(\"\\n Submit\\n \")])],1)],2)],1)])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n <div>\r\n <div class=\"breadcumb\">\r\n <div class=\"ic-app-crumbs\">\r\n <span class=\"breadcumb-text\">\r\n <router-link :to=\"{ path: '/course/'+ currentCourse.ClassCode +'/projects' }\" style=\"color: #4E5E63;\">\r\n {{ currentCourse.ClassDescription }}\r\n </router-link>\r\n <i class=\"fas fa-chevron-right breadcumb-next\" />\r\n Collective Feedbacks\r\n </span>\r\n </div>\r\n </div>\r\n <div id=\"mainDiv\">\r\n <div class=\"cf_list\">\r\n <div style=\"margin-bottom: 20px;\">\r\n <el-button v-if=\"userRole != 'Student'\" id=\"cfNewButton\" style=\"margin-right:20px\" @click=\"showNewCFModal\">\r\n Add New Collective Feedback\r\n </el-button>\r\n <el-input\r\n v-model=\"search\"\r\n placeholder=\"Search for collective Feedback\"\r\n style=\"width: 20%;\"\r\n />\r\n </div>\r\n\r\n <el-table\r\n :data=\"tableData.filter(data => !search || data.Name.toLowerCase().includes(search.toLowerCase()))\"\r\n style=\"width: 100%; word-break: break-word !important;\"\r\n >\r\n <el-table-column\r\n label=\"Collective Feedback\"\r\n prop=\"Name\"\r\n sortable\r\n >\r\n <template slot-scope=\"scope\">\r\n <label\r\n style=\"cursor:pointer;color: #337ab7; word-break: break-word !important;\"\r\n @click=\"handleCFClick(scope.$index, scope.row)\"\r\n >\r\n {{ scope.row.Name }}\r\n </label>\r\n </template>\r\n </el-table-column>\r\n\r\n <el-table-column\r\n label=\"Project Name\"\r\n prop=\"AssignmentName\"\r\n sortable\r\n />\r\n <el-table-column\r\n label=\"Term\"\r\n prop=\"TermName\"\r\n sortable\r\n />\r\n <el-table-column\r\n label=\"Class\"\r\n prop=\"ClassName\"\r\n sortable\r\n />\r\n <el-table-column\r\n label=\"Issues Count\"\r\n >\r\n <template slot-scope=\"scope\" sortable>\r\n {{ scope.row.CollectiveFeedbackIssues.length }}\r\n </template>\r\n </el-table-column>\r\n\r\n <el-table-column\r\n label=\"Last Updated Time\"\r\n >\r\n <template slot-scope=\"scope\">\r\n {{ scope.row.UpdatedTime | formatDate }}\r\n </template>\r\n </el-table-column>\r\n <!-- <el-table-column\r\n\t\t\t\t\t\tlabel=\"Issues Count\"\r\n\t\t\t\t\t\tprop=\"IssuesCount\"\r\n\t\t\t\t\t/> -->\r\n <!-- <el-table-column\r\n\t\t\t\t\t\tlabel=\"Last Updated Time\"\r\n\t\t\t\t\t\tprop=\"UpdatedTime\"\r\n\t\t\t\t\t/> -->\r\n <el-table-column\r\n v-if=\"userRole == 'Instructor'\"\r\n label=\"Published\"\r\n >\r\n <template slot-scope=\"scope\">\r\n <el-tooltip v-if=\"scope.row.ShowToStudent == 1\" content=\"Published collective feedback is available to students\" placement=\"top\">\r\n <el-switch\r\n v-model=\"scope.row.ShowToStudent\"\r\n active-color=\"#13ce66\"\r\n inactive-color=\"#ff4949\"\r\n :active-value=\"1\"\r\n :inactive-value=\"0\"\r\n @change=\"onPublishChange($event, scope.row)\"\r\n />\r\n </el-tooltip>\r\n <el-tooltip v-else content=\"Unpublished collective feedback will not be available to students\" placement=\"top\">\r\n <el-switch\r\n v-model=\"scope.row.ShowToStudent\"\r\n active-color=\"#13ce66\"\r\n inactive-color=\"#ff4949\"\r\n :active-value=\"1\"\r\n :inactive-value=\"0\"\r\n @change=\"onPublishChange($event, scope.row)\"\r\n />\r\n </el-tooltip>\r\n </template>\r\n </el-table-column>\r\n <el-table-column\r\n\r\n label=\"Action\"\r\n >\r\n <template slot-scope=\"scope\">\r\n <el-button\r\n style=\" -webkit-box-shadow: none; box-shadow: none;\r\n display: inline-block; padding: 0px 2px; vertical-align: middle;\r\n -ms-touch-action: manipulation; touch-action: manipulation;\r\n cursor: pointer; border: 0 none; background: none; margin-right: 2px;\"\r\n size=\"mini\"\r\n\r\n @click=\"downloadCF(scope.$index, scope.row)\"\r\n >\r\n <i class=\"fas fa-file-download\" style=\"font-size: 18px;\" />\r\n </el-button>\r\n <el-button\r\n v-if=\"userRole != 'Student'\"\r\n style=\" -webkit-box-shadow: none; box-shadow: none;\r\n display: inline-block; padding: 0px 2px; vertical-align: middle;\r\n -ms-touch-action: manipulation; touch-action: manipulation;\r\n cursor: pointer; border: 0 none; background: none;\"\r\n size=\"mini\"\r\n @click=\"showEditCFModal(scope.$index, scope.row)\"\r\n >\r\n <i class=\"far fa-edit\" style=\"font-size: 16px;\" />\r\n </el-button>\r\n <el-button\r\n v-if=\"userRole != 'Student'\"\r\n style=\"-webkit-box-shadow: none; box-shadow: none;\r\n display: inline-block; padding: 0px 2px; vertical-align: middle;\r\n -ms-touch-action: manipulation; touch-action: manipulation;\r\n cursor: pointer; border: 0 none; background: none;\"\r\n size=\"mini\"\r\n\r\n @click=\"showDeleteCFModal(scope.$index, scope.row)\"\r\n >\r\n <i class=\"far fa-trash-alt\" style=\"font-size: 16px;\" />\r\n </el-button>\r\n </template>\r\n </el-table-column>\r\n </el-table>\r\n </div>\r\n </div>\r\n\r\n <!-- <div v-if=\"isDownloadDivAvailable && selectedCFandIssues != null\" id=\"downloadPdfContent\" style=\"width: 550px; padding: 40px;\">\r\n <div id=\"downloadPdfHeader\" style=\"margin-bottom: 20px;\">\r\n <div>\r\n <h1>\r\n {{ selectedCFandIssues.Name }}\r\n </h1>\r\n </div>\r\n <div>\r\n <span style=\"font-weight: bold;\">\r\n Project Name: {{ selectedCFandIssues.AssignmentName }}\r\n </span>\r\n </div>\r\n <div>\r\n <span style=\"font-weight: bold;\">\r\n Term: {{ selectedCFandIssues.TermName }}\r\n </span>\r\n </div>\r\n <div>\r\n <span style=\"font-weight: bold;\">\r\n Class: {{ selectedCFandIssues.ClassName }}\r\n </span>\r\n </div>\r\n <div>\r\n <span style=\"font-weight: bold;\">\r\n Created By: {{ selectedCFandIssues.CreatedBy }}\r\n </span>\r\n </div>\r\n </div>\r\n <hr>\r\n <div v-for=\"(issue, idx) in selectedCFandIssues.CollectiveFeedbackIssues\" id=\"downloadPdfBody\" :key=\"issue.Id\" class=\"page-break\">\r\n\r\n <table style=\"page-break-inside: avoid;\">\r\n <tr>\r\n <td><h3>{{ (idx + 1 ) + \". \" + issue.Title }}</h3></td>\r\n </tr>\r\n <tr>\r\n <td>\r\n <div class=\"page-break\">\r\n <div class=\"page-break\"><span><b>{{ (idx + 1 ) + \".1. Category\" }}</b></span></div>\r\n <div class=\"page-break\" style=\"font-size:14px; margin-bottom:10px; margin-top: 10px;\">\r\n {{ getCategory(issue.Category) }}\r\n </div>\r\n </div>\r\n </td>\r\n </tr>\r\n <tr>\r\n <td>\r\n <div class=\"page-break\">\r\n <div class=\"page-break\"><span><b>{{ (idx + 1 ) + \".2. Student Example\" }}</b></span></div>\r\n <div class=\"page-break\" style=\"font-size:14px; margin-bottom:10px; width: 100%;\" v-html=\"encodeHtml(issue.Examples)\" />\r\n <div class=\"page-break\" style=\"margin-bottom: 10px;\">\r\n <span />\r\n </div>\r\n </div>\r\n </td>\r\n </tr>\r\n <tr>\r\n <td>\r\n <div class=\"page-break\">\r\n <div class=\"page-break\"><b>{{ (idx + 1 ) + \".3. Summary: Why this is an issue?\" }}</b></div>\r\n <div class=\"page-break\" style=\"font-size:14px; margin-bottom:10px;\" v-html=\"encodeHtml(issue.Description)\" />\r\n <div class=\"page-break\" style=\"margin-bottom: 10px;\">\r\n <span />\r\n </div>\r\n </div>\r\n </td>\r\n </tr>\r\n\r\n <tr>\r\n <td>\r\n <div>\r\n <div><b>{{ (idx + 1 ) + \".4. Explanation: How to improve?\" }}</b></div>\r\n <div class=\"page-break\" style=\"font-size:14px; margin-bottom:10px;\" v-html=\"encodeHtml(issue.Explanation)\" />\r\n <div class=\"page-break\" style=\"margin-bottom: 10px;\">\r\n <span />\r\n </div>\r\n </div>\r\n </td>\r\n </tr>\r\n </table>\r\n <div id=\"issueDiv\">\r\n <h3>{{ (idx + 1 ) + \". \" + issue.Title }}</h3>\r\n\r\n <div>\r\n <div><span><b>{{ (idx + 1 ) + \".1. Category\" }}</b></span></div>\r\n <div style=\"font-size:14px; margin-bottom:10px; margin-top: 10px;\">\r\n {{ getCategory(issue.Category) }}\r\n </div>\r\n </div>\r\n\r\n <div>\r\n <div><span><b>{{ (idx + 1 ) + \".2. Student Example\" }}</b></span></div>\r\n <div style=\"font-size:14px; margin-bottom:10px;\" v-html=\"encodeHtml(issue.Examples)\" />\r\n <div style=\"margin-bottom: 10px;\">\r\n <span />\r\n </div>\r\n </div>\r\n <br>\r\n <div>\r\n <div><b>{{ (idx + 1 ) + \".3. Summary: Why this is an issue?\" }}</b></div>\r\n <div style=\"font-size:14px; margin-bottom:10px;\" v-html=\"encodeHtml(issue.Description)\" />\r\n <div style=\"margin-bottom: 10px;\">\r\n <span />\r\n </div>\r\n </div>\r\n <br>\r\n\r\n <div>\r\n <div><span><b>{{ (idx + 1 ) + \".4. Explanation: How to improve?\" }}</b></span></div>\r\n <div style=\"font-size:14px; margin-bottom:10px;\" v-html=\"encodeHtml(issue.Explanation)\" />\r\n <div style=\"margin-bottom: 10px;\">\r\n <span style=\"margin-bottom: 10px;\" />\r\n </div>\r\n </div>\r\n <br>\r\n <h2 />\r\n </div>\r\n <hr>\r\n </div>\r\n </div> -->\r\n\r\n <div>\r\n <el-dialog\r\n id=\"cf-new-dialog\"\r\n :visible.sync=\"cfNewDialogVisible\"\r\n width=\"600px\"\r\n center\r\n >\r\n <template slot=\"title\">\r\n <span class=\"dialog-title\">\r\n Add New Collective Feedback\r\n </span>\r\n </template>\r\n <hr>\r\n <el-form ref=\"cfNew\" :model=\"cfNew\" label-width=\"150px\" style=\"margin-top: 20px;\">\r\n <el-form-item label=\"Feedback Name\" prop=\"cfName\">\r\n <el-input v-model=\"cfNew.cfName\" placeholder=\"Collective Feedback Name\" />\r\n </el-form-item>\r\n <el-form-item label=\"Project\" prop=\"cfSelectedProject\">\r\n <el-select id=\"projectInput\" v-model=\"cfNew.cfSelectedProject\" clearable filterable placeholder=\"Select a Project\">\r\n <el-option\r\n v-for=\"item in cfNew.cfProjects\"\r\n :key=\"item.Id\"\r\n :label=\"item.AssignmentName\"\r\n :value=\"item.Id\"\r\n />\r\n </el-select>\r\n </el-form-item>\r\n <el-form-item label=\"Copy Issues From\" prop=\"cfSelectedProject\">\r\n <el-select id=\"copyCFInput\" v-model=\"cfNew.cfSelectedFeedback\" clearable filterable placeholder=\"Select a collective Feedback\">\r\n <el-option\r\n v-for=\"item in allCollectiveFeedbacks\"\r\n :key=\"item.Id\"\r\n :label=\"item.Name + ' - ' + item.ClassName + ' - ' + item.AssignmentName\"\r\n :value=\"item.Id \"\r\n />\r\n </el-select>\r\n <el-button v-if=\"cfNew.cfSelectedFeedback\" style=\"margin-left: 10px;\" type=\"info\" @click=\"viewExistingCF(cfNew.cfSelectedFeedback)\">\r\n View\r\n </el-button>\r\n </el-form-item>\r\n <el-form-item>\r\n <el-checkbox v-model=\"cfNew.publish\" label=\"Publish\" />\r\n </el-form-item>\r\n </el-form>\r\n\r\n <span slot=\"footer\" class=\"dialog-footer\">\r\n <el-button @click=\"cfNewDialogVisible = false\">\r\n Cancel\r\n </el-button>\r\n <el-button type=\"primary\" @click=\"submitCFModal()\">\r\n Submit\r\n </el-button>\r\n </span>\r\n </el-dialog>\r\n\r\n <el-dialog\r\n id=\"cf-edit-dialog\"\r\n :visible.sync=\"cfEditDialogVisible\"\r\n width=\"600px\"\r\n center\r\n >\r\n <template slot=\"title\">\r\n <span class=\"dialog-title\">\r\n Edit Collective Feedback\r\n </span>\r\n </template>\r\n <hr>\r\n <el-form ref=\"cfNew\" :model=\"cfNew\" label-width=\"150px\" style=\"margin-top: 20px;\">\r\n <el-form-item label=\"Feedback Name\" prop=\"cfName\">\r\n <el-input v-model=\"cfNew.cfName\" placeholder=\"Collective Feedback Name\" />\r\n </el-form-item>\r\n\r\n <el-form-item label=\"Project\" prop=\"cfName\">\r\n <el-select id=\"projectInput\" v-model=\"cfNew.cfSelectedProject\" clearable filterable placeholder=\"Select a project\">\r\n <el-option v-for=\"item in cfNew.cfProjects\" :key=\"item.Id\" :label=\"item.AssignmentName\" :value=\"item.Id\" />\r\n </el-select>\r\n </el-form-item>\r\n <el-form-item>\r\n <el-checkbox v-model=\"cfNew.publish\" label=\"Publish\" />\r\n </el-form-item>\r\n </el-form>\r\n\r\n <span slot=\"footer\" class=\"dialog-footer\">\r\n <el-button @click=\"cfEditDialogVisible = false\">\r\n Cancel\r\n </el-button>\r\n <el-button type=\"primary\" @click=\"updateCFModal()\">\r\n Submit\r\n </el-button>\r\n </span>\r\n </el-dialog>\r\n\r\n <el-dialog\r\n id=\"cf-delete-dialog\"\r\n :visible.sync=\"cfDeleteDialogVisible\"\r\n width=\"600px\"\r\n center\r\n >\r\n <template slot=\"title\">\r\n <span class=\"dialog-title\">\r\n Delete Collective Feedback\r\n </span>\r\n </template>\r\n <hr>\r\n <p>Do you want to delete this collective feedback and its issues?</p>\r\n\r\n <span slot=\"footer\" class=\"dialog-footer\">\r\n <el-button @click=\"cfDeleteDialogVisible = false\">\r\n Cancel\r\n </el-button>\r\n <el-button type=\"primary\" @click=\"deleteCFModal()\">\r\n Submit\r\n </el-button>\r\n </span>\r\n </el-dialog>\r\n </div>\r\n </div>\r\n</template>\r\n<script>\r\n\r\nimport * as cfService from '@/services/collective_feedback.service'\r\nimport * as cfIssuesService from '@/services/collective_feedback_issue.service'\r\nimport * as assignmentService from '@/services/assignment.service'\r\nimport * as courseService from '@/services/course.service'\r\nimport * as termService from '@/services/term.service'\r\nimport * as enrollmentService from '@/services/enrollment.service'\r\nimport * as pdfService from '@/services/pdf.service/'\r\n// import html2pdf from 'html2pdf.js'\r\nimport { Notification } from 'element-ui'\r\nimport NProgress from 'nprogress'\r\nimport * as dateUtils from '@/utils/date-utils'\r\n// Hanle UI and logics of the Collective Feebacks page.\r\nexport default {\r\n\tfilters: {\r\n\t\tformatDate(dateStr) {\r\n\t\t\treturn dateUtils.formatDate(dateStr)\r\n\t\t}\r\n\t},\r\n\tdata() {\r\n\t\treturn {\r\n\t\t\ttermCode: this.$store.state.enrollment.termCode,\r\n\t\t\torgCode: this.$store.state.enrollment.orgCode,\r\n\t\t\tclassCode: this.$store.state.enrollment.currentCourse.ClassCode,\r\n\t\t\tuserId: this.$store.state.auth.user.UserName,\r\n\t\t\tuserRole: this.$store.state.enrollment.userRole,\r\n\t\t\tcurrentCourse: this.$store.state.enrollment.currentCourse,\r\n\t\t\ttableData: [],\r\n\t\t\tsearch: '',\r\n\t\t\tcfNewDialogVisible: false,\r\n\t\t\tcfEditDialogVisible: false,\r\n\t\t\tcfDeleteDialogVisible: false,\r\n\t\t\tcfNew: {\r\n\t\t\t\tcfName: '',\r\n\t\t\t\tcfProjects: [],\r\n\t\t\t\tcfSelectedProject: '',\r\n\t\t\t\tcfAll: [],\r\n\t\t\t\tcfSelectedFeedback: '',\r\n\t\t\t\tpublish: []\r\n\r\n\t\t\t},\r\n\t\t\tallCollectiveFeedbacks: '',\r\n\t\t\tisDownloadDivAvailable: false,\r\n\t\t\tselectedCFandIssues: null,\r\n\t\t\tcfTableData: []\r\n\t\t}\r\n\t},\r\n\twatch: {\r\n\t\t'cfNew.cfSelectedCourse': function(value) {\r\n\t\t\tif (value != undefined) {\r\n\t\t\t\tthis.setProjectsDropDown(value)\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\tcreated() {\r\n\t\tthis.getCFTableData()\r\n\t},\r\n\tmethods: {\r\n\t\t// @vuese\r\n\t\t// Handles logics when the publish button is clicked.\r\n\t\t// @arg The change event, and the row in which the CF belongs to.\r\n\t\tasync onPublishChange($event, row) {\r\n\t\t\tconst cfData = {\r\n\t\t\t\tId: row.Id,\r\n\t\t\t\tName: row.Name,\r\n\t\t\t\tOrgCode: row.OrgCode,\r\n\t\t\t\tAssignmentId: row.AssignmentId,\r\n\t\t\t\tTermCode: row.TermCode,\r\n\t\t\t\tClassCode: row.ClassCode,\r\n\t\t\t\tCreatedBy: row.CreatedBy,\r\n\t\t\t\tCreatedTime: row.CreatedTime,\r\n\t\t\t\tUpdatedTime: row.UpdatedTime,\r\n\t\t\t\tIsActive: row.IsActive,\r\n\t\t\t\tShowToStudent: row.ShowToStudent\r\n\t\t\t}\r\n\t\t\tawait cfService.putCollectiveFeedback(cfData)\r\n\r\n\t\t\tif (row.ShowToStudent == 1) {\r\n\t\t\t\tNotification.success({\r\n\t\t\t\t\tduration: 6000,\r\n\t\t\t\t\ttitle: 'Success',\r\n\t\t\t\t\tmessage: 'The collective feedback was set to published. Students can see all issues in the feedback.'\r\n\t\t\t\t})\r\n\t\t\t} else {\r\n\t\t\t\tNotification.success({\r\n\t\t\t\t\tduration: 6000,\r\n\t\t\t\t\ttitle: 'Success',\r\n\t\t\t\t\tmessage: 'The collective feedback was set to unpublished. The feedback will not be displayed to students.'\r\n\t\t\t\t})\r\n\t\t\t}\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Go to Collective Feedback Details page.\r\n\t\t// @arg The colelctive feedback id.\r\n\t\tviewExistingCF(cfId) {\r\n\t\t\twindow.open('/collective_feedback/' + cfId + '/issues', '_blank')\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Encode html strting for download.\r\n\t\t// @arg The html string to be encoded.\r\n\t\tencodeHtml(htmlStr) {\r\n\t\t\treturn htmlStr.replace('‘', \"'\").replace('’', \"'\").replace('“', '\"').replace('â€', '\"').replace('‘', \"'\")\r\n\t\t\t\t.replace('’', \"'\").replace('‛', \"'\").replace('’', \"'\")\r\n\t\t\t\t.replace('„', '\"').replace('‟', '\"').replace('â›', \"'\").replace('âœ', \"'\")\r\n\t\t\t\t.replace('â', '\"').replace('âž', '\"').replace('ã€', '\"')\r\n\t\t\t\t.replace('"', '\"').replace('〟', '\"').replace('〞', '\"')\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// The course name by indentifiers.\r\n\t\t// @arg The term code, the class code, and organization code.\r\n\t\tasync getClassName(termCode, classCode, orgCode) {\r\n\t\t\tconst course = await courseService.getClassByCodeTermOrg(termCode, classCode, orgCode)\r\n\t\t\tconst className = course.ClassDescription\r\n\t\t\treturn className\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Get term code by identifiers.\r\n\t\t// @arg The term code, and organization code.\r\n\t\tasync getTermByCodeAndOrg(termCode, orgCode) {\r\n\t\t\treturn await termService.getAllTerms()\r\n\t\t\t\t.then(response => {\r\n\t\t\t\t\tconst terms = response\r\n\t\t\t\t\tfor (const index in terms) {\r\n\t\t\t\t\t\tif (terms[index]['OrgCode'] == orgCode && terms[index]['TermCode'] == termCode) {\r\n\t\t\t\t\t\t\treturn terms[index]\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t})\r\n\t\t\t\t.catch(error => {\r\n\t\t\t\t\tconsole.log(error)\r\n\t\t\t\t})\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Get term description by term code and organization code.\r\n\t\t// @arg The term code and organization code.\r\n\t\tasync getTermName(termCode, orgCode) {\r\n\t\t\tconst term = await this.getTermByCodeAndOrg(termCode, orgCode)\r\n\t\t\tconst termName = term.TermDescription\r\n\t\t\treturn termName\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Get project name by id.\r\n\t\t// @arg The project id.\r\n\t\tasync getAssignmentName(id) {\r\n\t\t\tconst assignment = await assignmentService.getAssignmentById(id)\r\n\t\t\tlet assignmentName = ''\r\n\t\t\tassignmentName = assignment['AssignmentName']\r\n\t\t\treturn assignmentName\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Get CF table data.\r\n\t\tasync getCFTableData() {\r\n\t\t\tawait cfService.getCollectiveFeedbackModel(this.orgCode, this.userId, this.termCode, this.classCode, this.userRole)\r\n\t\t\t\t.then(cfData => {\r\n\t\t\t\t\tthis.tableData = cfData\r\n\r\n\t\t\t\t\tthis.tableData.sort(function(a, b) {\r\n\t\t\t\t\t\tif (a.ClassDescription > b.ClassDescription) return 1\r\n\t\t\t\t\t\tif (a.ClassDescription < b.ClassDescription) return -1\r\n\r\n\t\t\t\t\t\tif (a.ProjectName > b.ProjectName) return 1\r\n\t\t\t\t\t\tif (a.ProjectName < b.ProjectName) return -1\r\n\r\n\t\t\t\t\t\tif (a.Category > b.Category) return 1\r\n\t\t\t\t\t\tif (a.Category < b.Category) return -1\r\n\t\t\t\t\t})\r\n\r\n\t\t\t\t\tthis.cfNew.cfAll = cfData\r\n\t\t\t\t})\r\n\t\t\t\t.catch(error => {\r\n\t\t\t\t\tconsole.log(error)\r\n\t\t\t\t})\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Get all collective feedbacks.\r\n\t\tasync getAllCFs() {\r\n\t\t\tconst cf = []\r\n\t\t\tawait cfService.getAllCollectiveFeedbacks(this.orgCode, this.userId, this.termCode, this.userRole)\r\n\t\t\t\t.then(cfData => {\r\n\t\t\t\t\tfor (let i = 0; i < cfData.length; i++) {\r\n\t\t\t\t\t\tcf[i] = cfData[i]\r\n\t\t\t\t\t\tcf[i].AssignmentName = ''\r\n\t\t\t\t\t\tcf[i].TermName = ''\r\n\t\t\t\t\t\tcf[i].ClassName = ''\r\n\r\n\t\t\t\t\t\tthis.getAssignmentName(cf[i].AssignmentId).then(response => { cf[i].AssignmentName = response })\r\n\t\t\t\t\t\tthis.getClassName(cf[i].TermCode, cf[i].ClassCode, cf[i].OrgCode).then(response => { cf[i].ClassName = response })\r\n\t\t\t\t\t}\r\n\t\t\t\t})\r\n\t\t\t\t.catch(error => {\r\n\t\t\t\t\tconsole.log(error)\r\n\t\t\t\t})\r\n\t\t\tthis.allCollectiveFeedbacks = cf\r\n\t\t\tconsole.log(this.allCollectiveFeedbacks)\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// display add new CF dialog.\r\n\t\tasync showNewCFModal() {\r\n\t\t\tthis.cfNewDialogVisible = true\r\n\t\t\tawait this.getAllCFs()\r\n\t\t\tthis.setProjectsDropDown()\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Display edit CF dialog.\r\n\t\t// @arg The CF index and its row.\r\n\t\tshowEditCFModal(index, row) {\r\n\t\t\t// this.$bvModal.show('modal-edit');\r\n\t\t\tthis.cfEditDialogVisible = true\r\n\t\t\tthis.handleEdit(index, row)\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Display delete CF dialog.\r\n\t\t// @arg The CF idex and its row.\r\n\t\tshowDeleteCFModal(index, row) {\r\n\t\t\tthis.cfDeleteDialogVisible = true\r\n\t\t\tthis.handleDelete(index, row)\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Get CF category by id.\r\n\t\t// @arg The category id.\r\n\t\tgetCategory(categoryId) {\r\n\t\t\tlet category = ''\r\n\t\t\tswitch (categoryId) {\r\n\t\t\t\tcase 1:\r\n\t\t\t\t\tcategory = 'Purpose'\r\n\t\t\t\t\tbreak\r\n\t\t\t\tcase 2:\r\n\t\t\t\t\tcategory = 'Audience'\r\n\t\t\t\t\tbreak\r\n\t\t\t\tcase 3:\r\n\t\t\t\t\tcategory = 'Visual Design'\r\n\t\t\t\t\tbreak\r\n\t\t\t\tcase 4:\r\n\t\t\t\t\tcategory = 'Document Design'\r\n\t\t\t\t\tbreak\r\n\t\t\t\tcase 5:\r\n\t\t\t\t\tcategory = 'Organization'\r\n\t\t\t\t\tbreak\r\n\t\t\t\tcase 6:\r\n\t\t\t\t\tcategory = 'Writing/Style'\r\n\t\t\t\t\tbreak\r\n\t\t\t\tcase 7:\r\n\t\t\t\t\tcategory = 'Genre/Content'\r\n\t\t\t\t\tbreak\r\n\t\t\t\tcase 8:\r\n\t\t\t\t\tcategory = 'Other'\r\n\t\t\t}\r\n\t\t\treturn category\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Waite for sometime before continue.\r\n\t\t// @arg The milliseconds to wait.\r\n\t\tsleep(ms) {\r\n\t\t\treturn new Promise(resolve => setTimeout(resolve, ms))\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Download collective feedback.\r\n\t\t// @arg The CF index and its row.\r\n\t\tasync downloadCF(index, row) {\r\n\t\t\t// this.isDownloadDivAvailable = true\r\n\t\t\tthis.selectedCFandIssues = row\r\n\t\t\tNProgress.start()\r\n\t\t\tconst data = await pdfService.getCFFDownloadData(row)\r\n\t\t\tif (data) {\r\n\t\t\t\tconsole.log(data)\r\n\t\t\t\tconst arrayBuffer = this.base64ToArrayBuffer(data)\r\n\t\t\t\tconst blob = new Blob([arrayBuffer], { type: 'application/pdf' })\r\n\t\t\t\tconst link = document.createElement('a')\r\n\t\t\t\tlink.href = window.URL.createObjectURL(blob)\r\n\t\t\t\tlink.download = 'Collective Feedback'\r\n\t\t\t\tdocument.body.appendChild(link)\r\n\t\t\t\tlink.click()\r\n\t\t\t\tlink.remove()\r\n\t\t\t\tNProgress.done()\r\n\t\t\t\t// this.isDownloadDivAvailable = false\r\n\t\t\t} else {\r\n\t\t\t\tNotification.error({\r\n\t\t\t\t\tduration: 6000,\r\n\t\t\t\t\ttitle: 'Error',\r\n\t\t\t\t\tmessage: 'Paper cannot be found.'\r\n\t\t\t\t})\r\n\t\t\t\tNProgress.done()\r\n\t\t\t}\r\n\t\t},\r\n\t\tbase64ToArrayBuffer(base64) {\r\n\t\t\tconst binaryString = window.atob(base64)\r\n\t\t\tconst binaryLen = binaryString.length\r\n\t\t\tconst bytes = new Uint8Array(binaryLen)\r\n\t\t\tfor (let i = 0; i < binaryLen; i++) {\r\n\t\t\t\tconst ascii = binaryString.charCodeAt(i)\r\n\t\t\t\tbytes[i] = ascii\r\n\t\t\t}\r\n\t\t\treturn bytes\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Setup course drop down.\r\n\t\tsetClassesDropDown() {\r\n\t\t\tenrollmentService.getEnrollmentsForInstructor('201805', 'rajasinghr', 'USF')\r\n\t\t\t\t.then(enrollments => {\r\n\t\t\t\t\tfor (let i = 0; i < enrollments.length; i++) {\r\n\t\t\t\t\t\tcourseService.getClassByCodeTermOrg(enrollments[i]['TermCode'],\r\n\t\t\t\t\t\t\tenrollments[i]['ClassCode'], enrollments[i]['OrgCode'])\r\n\t\t\t\t\t\t\t.then(course => {\r\n\t\t\t\t\t\t\t\tthis.cfNew.cfCourses.push(course[0])\r\n\t\t\t\t\t\t\t})\r\n\t\t\t\t\t}\r\n\t\t\t\t})\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Set up projects drop down.\r\n\t\tsetProjectsDropDown() {\r\n\t\t\tassignmentService.getAssignmentsByTemplate(this.currentCourse.ProjectTemplate, this.orgCode)\r\n\t\t\t\t.then(assignments => {\r\n\t\t\t\t\tthis.cfNew.cfProjects = assignments\r\n\t\t\t\t})\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Clear the CF dialog.\r\n\t\tclearCFModal() {\r\n\t\t\tconst cf = {\r\n\t\t\t\tcfName: '',\r\n\t\t\t\tcfCourses: [],\r\n\t\t\t\tcfSelectedCourse: '',\r\n\t\t\t\tcfProjects: [],\r\n\t\t\t\tcfSelectedProject: '',\r\n\t\t\t\tcfAll: [],\r\n\t\t\t\tcfSelectedFeedback: ''\r\n\t\t\t}\r\n\t\t\tthis.cfNew = cf\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Add new or update a CF.\r\n\t\tasync submitCFModal() {\r\n\t\t\tconst cfData = {\r\n\t\t\t\tName: this.cfNew.cfName,\r\n\t\t\t\tTermCode: this.termCode,\r\n\t\t\t\tOrgCode: this.orgCode,\r\n\t\t\t\tClassCode: this.classCode,\r\n\t\t\t\tAssignmentId: this.cfNew.cfSelectedProject,\r\n\t\t\t\tCreatedBy: this.userId,\r\n\t\t\t\tIsActive: 1,\r\n\t\t\t\tShowToStudent: this.cfNew.publish.length\r\n\t\t\t}\r\n\r\n\t\t\tif (this.cfNew.cfSelectedFeedback != '') {\r\n\t\t\t\tlet newCFId = ''\r\n\t\t\t\tlet issues = []\r\n\t\t\t\tawait cfService.postCollectiveFeedback(cfData)\r\n\t\t\t\t\t.then(response => {\r\n\t\t\t\t\t\tnewCFId = response.Id\r\n\t\t\t\t\t})\r\n\r\n\t\t\t\tawait cfIssuesService.getCollectiveFeedbackIssues(this.cfNew.cfSelectedFeedback)\r\n\t\t\t\t\t.then(response => {\r\n\t\t\t\t\t\tissues = response\r\n\t\t\t\t\t\tif (response.length > 0) {\r\n\t\t\t\t\t\t\tfor (let i = 0; i < issues.length; i++) {\r\n\t\t\t\t\t\t\t\tissues[i]['CollectiveFeedbackId'] = newCFId\r\n\t\t\t\t\t\t\t\tcfIssuesService.postCollectiveFeedbackIssue(issues[i])\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t})\r\n\r\n\t\t\t\tthis.cfNew = {\r\n\t\t\t\t\tcfName: '',\r\n\t\t\t\t\tcfProjects: [],\r\n\t\t\t\t\tcfSelectedProject: '',\r\n\t\t\t\t\tcfAll: [],\r\n\t\t\t\t\tcfSelectedFeedback: '',\r\n\t\t\t\t\tpublish: []\r\n\r\n\t\t\t\t}\r\n\t\t\t\tthis.getCFTableData()\r\n\t\t\t} else {\r\n\t\t\t\tawait cfService.postCollectiveFeedback(cfData)\r\n\t\t\t\t\t.then(response => {\r\n\t\t\t\t\t\tthis.cfNew = {\r\n\t\t\t\t\t\t\tcfName: '',\r\n\t\t\t\t\t\t\tcfProjects: [],\r\n\t\t\t\t\t\t\tcfSelectedProject: '',\r\n\t\t\t\t\t\t\tcfAll: [],\r\n\t\t\t\t\t\t\tcfSelectedFeedback: '',\r\n\t\t\t\t\t\t\tpublish: []\r\n\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tthis.getCFTableData()\r\n\t\t\t\t\t})\r\n\t\t\t}\r\n\r\n\t\t\tthis.cfNewDialogVisible = false\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Update a CF.\r\n\t\tasync updateCFModal() {\r\n\t\t\tconst cfData = {\r\n\t\t\t\tId: this.cfNew.Id,\r\n\t\t\t\tName: this.cfNew.cfName,\r\n\t\t\t\tOrgCode: this.orgCode,\r\n\t\t\t\tAssignmentId: this.cfNew.cfSelectedProject,\r\n\t\t\t\tTermCode: this.termCode,\r\n\t\t\t\tClassCode: this.classCode,\r\n\t\t\t\tCreatedBy: this.cfNew.CreatedBy,\r\n\t\t\t\tCreatedTime: this.cfNew.CreatedTime,\r\n\t\t\t\tUpdatedTime: this.cfNew.UpdatedTime,\r\n\t\t\t\tIsActive: 1,\r\n\t\t\t\tShowToStudent: this.cfNew.publish.length\r\n\t\t\t}\r\n\t\t\tawait cfService.putCollectiveFeedback(cfData)\r\n\t\t\t\t.then(response => {\r\n\t\t\t\t\tconsole.log(response)\r\n\t\t\t\t})\r\n\r\n\t\t\tthis.cfEditDialogVisible = false\r\n\t\t\tthis.getCFTableData()\r\n\t\t},\r\n\t\thandleEdit(index, row) {\r\n\t\t\tconst cfEdit = {\r\n\t\t\t\tId: row.Id,\r\n\t\t\t\tName: row.Name,\r\n\t\t\t\tOrgCode: row.OrgCode,\r\n\t\t\t\tAssignmentId: row.AssignmentId,\r\n\t\t\t\tTermCode: row.TermCode,\r\n\t\t\t\tClassCode: row.ClassCode,\r\n\t\t\t\tCreatedBy: row.CreatedBy,\r\n\t\t\t\tCreatedTime: row.CreatedTime,\r\n\t\t\t\tUpdatedTime: row.UpdatedTime,\r\n\t\t\t\tIsActive: row.IsActive,\r\n\t\t\t\tShowToStudent: row.ShowToStudent,\r\n\t\t\t\tcfName: row.Name,\r\n\t\t\t\tcfCourses: [],\r\n\t\t\t\tcfSelectedCourse: row.ClassCode,\r\n\t\t\t\tcfProjects: [],\r\n\t\t\t\tcfSelectedProject: row.AssignmentId,\r\n\t\t\t\tcfAll: [],\r\n\t\t\t\tcfSelectedFeedback: '',\r\n\t\t\t\tpublish: row.ShowToStudent == 1 ? ['Publish'] : []\r\n\t\t\t}\r\n\t\t\tthis.cfNew = cfEdit\r\n\t\t\t// this.setClassesDropDown();\r\n\t\t\tthis.setProjectsDropDown(row.ClassCode)\r\n\t\t},\r\n\t\thandleDelete(index, row) {\r\n\t\t\tconst cfData = {\r\n\t\t\t\tId: row.Id,\r\n\t\t\t\tName: row.Name,\r\n\t\t\t\tOrgCode: row.OrgCode,\r\n\t\t\t\tAssignmentId: row.AssignmentId,\r\n\t\t\t\tTermCode: row.TermCode,\r\n\t\t\t\tClassCode: row.ClassCode,\r\n\t\t\t\tCreatedBy: row.CreatedBy,\r\n\t\t\t\tCreatedTime: row.CreatedTime,\r\n\t\t\t\tUpdatedTime: row.UpdatedTime,\r\n\t\t\t\tIsActive: 0,\r\n\t\t\t\tShowToStudent: row.ShowToStudent\r\n\t\t\t}\r\n\t\t\tthis.cfNew = cfData\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Delete a CF.\r\n\t\tasync deleteCFModal() {\r\n\t\t\tconst cfData = {\r\n\t\t\t\tId: this.cfNew.Id,\r\n\t\t\t\tName: this.cfNew.Name,\r\n\t\t\t\tOrgCode: this.orgCode,\r\n\t\t\t\tAssignmentId: this.cfNew.AssignmentId,\r\n\t\t\t\tTermCode: this.termCode,\r\n\t\t\t\tClassCode: this.classCode,\r\n\t\t\t\tCreatedBy: this.cfNew.CreatedBy,\r\n\t\t\t\tCreatedTime: this.cfNew.CreatedTime,\r\n\t\t\t\tUpdatedTime: this.cfNew.UpdatedTime,\r\n\t\t\t\tIsActive: 0,\r\n\t\t\t\tShowToStudent: this.cfNew.ShowToStudent\r\n\t\t\t}\r\n\t\t\tawait cfService.putCollectiveFeedback(cfData)\r\n\t\t\t\t.then(response => {\r\n\t\t\t\t\tcfIssuesService.getCollectiveFeedbackIssues(cfData.Id)\r\n\t\t\t\t\t\t.then(response => {\r\n\t\t\t\t\t\t\tconst issues = response\r\n\t\t\t\t\t\t\tif (response.length > 0) {\r\n\t\t\t\t\t\t\t\tfor (let i = 0; i < issues.length; i++) {\r\n\t\t\t\t\t\t\t\t\tissues[i].IsActive = 0\r\n\t\t\t\t\t\t\t\t\tcfIssuesService.putCollectiveFeedbackIssue(issues[i])\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t})\r\n\t\t\t\t})\r\n\t\t\t// this.$bvModal.hide('modal-delete');\r\n\t\t\tthis.cfDeleteDialogVisible = false\r\n\t\t\tthis.getCFTableData()\r\n\t\t},\r\n\t\thandleCFClick(index, row) {\r\n\t\t\tthis.$router.push({ path: '/collective_feedback/' + row.Id + '/issues' })\r\n\t\t}\r\n\t}\r\n}\r\n</script>\r\n\r\n<style scoped>\r\n.el-table .cell {\r\n\tword-break: break-word !important;\r\n}\r\n</style>\r\n\r\n<style>\r\n/* #cfNewButton{\r\n background-color: #3b9c96;\r\n border-color: #307f7a;\r\n color: white;\r\n}\r\n\r\n#mainDiv{\r\n margin:15px\r\n}\r\n\r\n#cfTitleDiv{\r\n font-size: 20px;\r\n color: #4DB3A2 !important;\r\n font-weight: 700 !important;\r\n text-transform: uppercase !important;\r\n padding: 10px 0px 0px 10px;\r\n\r\n} */\r\n\r\n/* .el-table .cell {\r\n\tword-break: break-word !important;\r\n} */\r\n\r\n.cf_list{\r\n\tpadding: 20px;\r\n /* background-color: #f5f5f5; */\r\n box-shadow: 20px 10px 25px 20px rgba(109, 107, 107, 0.1);\r\n}\r\n\r\n</style>\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CollectiveFeedbackList.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CollectiveFeedbackList.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./CollectiveFeedbackList.vue?vue&type=template&id=29011432&scoped=true&\"\nimport script from \"./CollectiveFeedbackList.vue?vue&type=script&lang=js&\"\nexport * from \"./CollectiveFeedbackList.vue?vue&type=script&lang=js&\"\nimport style0 from \"./CollectiveFeedbackList.vue?vue&type=style&index=0&id=29011432&scoped=true&lang=css&\"\nimport style1 from \"./CollectiveFeedbackList.vue?vue&type=style&index=1&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"29011432\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{attrs:{\"id\":\"mainDiv\"}},[_c('div',{staticClass:\"breadcumb\"},[_c('div',{staticClass:\"ic-app-crumbs\"},[_c('span',{staticClass:\"breadcumb-text\"},[_c('router-link',{staticStyle:{\"color\":\"#4E5E63\"},attrs:{\"to\":{ path: '/course/'+ _vm.currentCourse.ClassCode +'/projects' }}},[_vm._v(\"\\n \"+_vm._s(_vm.currentCourse.ClassDescription)+\"\\n \")]),_c('i',{staticClass:\"fas fa-chevron-right breadcumb-next\"}),_c('router-link',{staticStyle:{\"color\":\"#4E5E63\"},attrs:{\"to\":{ path: '/collective_feedbacks' }}},[_vm._v(\"\\n Collective Feedbacks\\n \")]),_c('i',{staticClass:\"fas fa-chevron-right breadcumb-next\"}),_vm._v(\"\\n Issues\\n \")],1)])]),_c('div',{attrs:{\"id\":\"issuesList\",\"role\":\"tablist\"}},[_c('div',[_c('el-button',{staticStyle:{\"margin\":\"1%\"},attrs:{\"size\":\"mini\"},on:{\"click\":_vm.expandAll}},[_vm._v(\"\\n Expand All\\n \")]),_c('el-button',{attrs:{\"size\":\"mini\"},on:{\"click\":_vm.collapseAll}},[_vm._v(\"\\n Collapse All\\n \")]),(_vm.userRole != 'Student')?_c('el-button',{staticStyle:{\"margin\":\"1%\",\"float\":\"right\"},attrs:{\"size\":\"mini\"},on:{\"click\":_vm.createNewIssue}},[_vm._v(\"\\n Add New Issue\\n \")]):_vm._e()],1),_c('el-collapse',{attrs:{\"accordion\":\"\"},model:{value:(_vm.activeIssues),callback:function ($$v) {_vm.activeIssues=$$v},expression:\"activeIssues\"}},_vm._l((_vm.issues),function(issue){return _c('div',{key:issue.Id,staticStyle:{\"border-bottom\":\"1px solid #EBEEF5\"}},[(issue.IsActive == 1)?_c('el-collapse-item',{attrs:{\"name\":issue.Id}},[_c('template',{staticClass:\"greenButton\",staticStyle:{\"background-color\":\"green\"},slot:\"title\"},[_c('div',{staticStyle:{\"width\":\"60%\",\"float\":\"left\"}},[_c('span',{staticClass:\"addIssueMarginLeft\",staticStyle:{\"font-size\":\"16px\",\"font-weight\":\"bold\",\"text-overflow\":\"ellipsis\",\"white-space\":\"nowrap\"}},[_vm._v(\"\\n \"+_vm._s(issue.Title)+\"\\n \")])]),(_vm.userRole != 'Student')?_c('div',{staticStyle:{\"width\":\"38%\"}},[_c('el-button',{staticStyle:{\"margin-right\":\"10px\",\"margin-top\":\"2px\",\"float\":\"right\"},attrs:{\"size\":\"mini\"},on:{\"click\":function($event){return _vm.showDeleteCFModal(issue.Id)}}},[_vm._v(\"\\n Delete\\n \")]),_c('el-button',{staticStyle:{\"margin-right\":\"10px\",\"margin-top\":\"2px\",\"float\":\"right\"},attrs:{\"size\":\"mini\"},on:{\"click\":function($event){return _vm.editIssue(issue.Id)}}},[_vm._v(\"\\n Edit\\n \")]),(issue.ShowToStudent === 1)?_c('el-tag',{staticStyle:{\"margin-right\":\"5px\",\"float\":\"right\"},attrs:{\"type\":\"success\"}},[_vm._v(\"\\n Active\\n \")]):(issue.ShowToStudent === 0)?_c('el-tag',{staticStyle:{\"margin-right\":\"5px\",\"float\":\"right\"},attrs:{\"type\":\"warning\"}},[_vm._v(\"\\n Inactive\\n \")]):_vm._e()],1):_vm._e()]),_c('div',{staticClass:\"addIssueMarginLeft\"},[_c('span',{staticStyle:{\"font-weight\":\"bold\"}},[_vm._v(\"\\n Issue Category\\n \")]),_c('br'),_vm._v(_vm._s(_vm.getCategory(issue.Category))+\"\\n \")]),_c('div',{staticClass:\"addIssueMarginLeft\"},[_c('span',{staticStyle:{\"font-weight\":\"bold\"}},[_vm._v(\"\\n Student Example\\n \")]),_c('br'),_c('div',{domProps:{\"innerHTML\":_vm._s(issue.Examples)}})]),_c('div',{staticClass:\"addIssueMarginLeft\"},[_c('span',{staticStyle:{\"font-weight\":\"bold\"}},[_vm._v(\"\\n Summary: Why this is an issue?\\n \")]),_c('br'),_c('div',{domProps:{\"innerHTML\":_vm._s(issue.Description)}})]),_c('div',{staticClass:\"addIssueMarginLeft\"},[_c('span',{staticStyle:{\"font-weight\":\"bold\"}},[_vm._v(\"\\n Explanation: How to improve?\\n \")]),_c('br'),_c('div',{domProps:{\"innerHTML\":_vm._s(issue.Explanation)}})])],2):_vm._e()],1)}),0)],1),_c('el-dialog',{attrs:{\"id\":\"cf-issue-delete-dialog\",\"visible\":_vm.cfIssueDeleteDialogVisible,\"width\":\"600px\",\"center\":\"\"},on:{\"update:visible\":function($event){_vm.cfIssueDeleteDialogVisible=$event}}},[_c('template',{slot:\"title\"},[_c('span',{staticClass:\"dialog-title\"},[_vm._v(\"\\n Delete Collective Feedback Issue\\n \")])]),_c('hr'),_c('p',[_vm._v(\"Do you want to delete this collective feedback issue?\")]),_c('span',{staticClass:\"dialog-footer\",attrs:{\"slot\":\"footer\"},slot:\"footer\"},[_c('el-button',{on:{\"click\":function($event){_vm.cfIssueDeleteDialogVisible = false}}},[_vm._v(\"\\n Cancel\\n \")]),_c('el-button',{attrs:{\"type\":\"primary\"},on:{\"click\":function($event){return _vm.deleteIssue()}}},[_vm._v(\"\\n Submit\\n \")])],1)],2)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n <div id=\"mainDiv\">\r\n <div class=\"breadcumb\">\r\n <div class=\"ic-app-crumbs\">\r\n <span class=\"breadcumb-text\">\r\n <router-link :to=\"{ path: '/course/'+ currentCourse.ClassCode +'/projects' }\" style=\"color: #4E5E63;\">\r\n {{ currentCourse.ClassDescription }}\r\n </router-link>\r\n <i class=\"fas fa-chevron-right breadcumb-next\" />\r\n <router-link :to=\"{ path: '/collective_feedbacks' }\" style=\"color: #4E5E63;\">\r\n Collective Feedbacks\r\n </router-link>\r\n <i class=\"fas fa-chevron-right breadcumb-next\" />\r\n Issues\r\n </span>\r\n </div>\r\n </div>\r\n\r\n <div id=\"issuesList\" role=\"tablist\">\r\n <div>\r\n <el-button style=\"margin:1%;\" size=\"mini\" @click=\"expandAll\">\r\n Expand All\r\n </el-button>\r\n <el-button style=\"\" size=\"mini\" @click=\"collapseAll\">\r\n Collapse All\r\n </el-button>\r\n <el-button v-if=\"userRole != 'Student'\" style=\"margin:1%;float:right;\" size=\"mini\" @click=\"createNewIssue\">\r\n Add New Issue\r\n </el-button>\r\n </div>\r\n <el-collapse v-model=\"activeIssues\" accordion>\r\n <div v-for=\"issue in issues\" :key=\"issue.Id\" style=\" border-bottom: 1px solid #EBEEF5;\">\r\n <el-collapse-item\r\n\r\n v-if=\"issue.IsActive == 1\"\r\n :name=\"issue.Id\"\r\n >\r\n <template slot=\"title\" class=\"greenButton\" style=\"background-color:green\">\r\n <div style=\"width: 60%; float: left;\">\r\n <span class=\"addIssueMarginLeft\" style=\"font-size: 16px; font-weight: bold;text-overflow: ellipsis; white-space: nowrap;\">\r\n {{ issue.Title }}\r\n </span>\r\n </div>\r\n <div v-if=\"userRole != 'Student'\" style=\"width: 38%;\">\r\n <el-button style=\" margin-right: 10px; margin-top: 2px; float: right;\" size=\"mini\" @click=\"showDeleteCFModal(issue.Id)\">\r\n Delete\r\n </el-button>\r\n <el-button style=\"margin-right: 10px; margin-top: 2px; float: right;\" size=\"mini\" @click=\"editIssue(issue.Id)\">\r\n Edit\r\n </el-button>\r\n\r\n <el-tag v-if=\"issue.ShowToStudent === 1\" style=\"margin-right: 5px; float: right;\" type=\"success\">\r\n Active\r\n </el-tag>\r\n <el-tag v-else-if=\"issue.ShowToStudent === 0\" style=\" margin-right: 5px; float: right;\" type=\"warning\">\r\n Inactive\r\n </el-tag>\r\n </div>\r\n </template>\r\n <div class=\"addIssueMarginLeft\">\r\n <span style=\"font-weight: bold;\">\r\n Issue Category\r\n </span><br>{{ getCategory(issue.Category) }}\r\n </div>\r\n <div class=\"addIssueMarginLeft\">\r\n <span style=\"font-weight: bold;\">\r\n Student Example\r\n </span><br><div v-html=\"issue.Examples\" />\r\n </div>\r\n <div class=\"addIssueMarginLeft\">\r\n <span style=\"font-weight: bold;\">\r\n Summary: Why this is an issue?\r\n </span><br><div v-html=\"issue.Description\" />\r\n </div>\r\n\r\n <div class=\"addIssueMarginLeft\">\r\n <span style=\"font-weight: bold;\">\r\n Explanation: How to improve?\r\n </span><br> <div v-html=\"issue.Explanation\" />\r\n </div>\r\n </el-collapse-item>\r\n </div>\r\n </el-collapse>\r\n </div>\r\n\r\n <el-dialog\r\n id=\"cf-issue-delete-dialog\"\r\n :visible.sync=\"cfIssueDeleteDialogVisible\"\r\n width=\"600px\"\r\n center\r\n >\r\n <template slot=\"title\">\r\n <span class=\"dialog-title\">\r\n Delete Collective Feedback Issue\r\n </span>\r\n </template>\r\n <hr>\r\n <p>Do you want to delete this collective feedback issue?</p>\r\n\r\n <span slot=\"footer\" class=\"dialog-footer\">\r\n <el-button @click=\"cfIssueDeleteDialogVisible = false\">\r\n Cancel\r\n </el-button>\r\n <el-button type=\"primary\" @click=\"deleteIssue()\">\r\n Submit\r\n </el-button>\r\n </span>\r\n </el-dialog>\r\n </div>\r\n</template>\r\n\r\n<script>\r\nimport * as cfIssuesStore from '@/store/modules/collective_feedback_issue'\r\nimport * as cfService from '@/services/collective_feedback.service'\r\n// Handle UI and logics for Collective Feedback Details page.\r\nexport default {\r\n\tdata() {\r\n\t\treturn {\r\n\t\t\tcurrentCourse: this.$store.state.enrollment.currentCourse,\r\n\t\t\tcfId: this.$route.params.id,\r\n\t\t\tuserRole: this.$store.state.enrollment.userRole,\r\n\t\t\tcfIssueDeleteDialogVisible: false,\r\n\t\t\tactiveName: '0',\r\n\t\t\texpand: false,\r\n\t\t\tissues: [],\r\n\t\t\tdeleteIssueId: 0,\r\n\t\t\tactiveIssues: []\r\n\t\t}\r\n\t},\r\n\twatch: {\r\n\t\tissues: {\r\n\t\t\thandler: function(val, oldVal) {\r\n\t\t\t},\r\n\t\t\tdeep: true\r\n\t\t}\r\n\t},\r\n\tmounted() {\r\n\t\tthis.$root.$on('bv::collapse::state', (collapseId, isJustShown) => {\r\n\t\t\tthis.expand = false\r\n\t\t})\r\n \t},\r\n\tcreated() {\r\n\t\tcfService.getByIdWithIssues(this.cfId)\r\n\t\t\t.then(cf => {\r\n\t\t\t\tthis.issues = cf.CollectiveFeedbackIssues\r\n\t\t\t})\r\n\t},\r\n\tmethods: {\r\n\t\t// @vuese\r\n\t\t// Get CF category by id.\r\n\t\t// @arg The category id.\r\n\t\tgetCategory(categoryId) {\r\n\t\t\tlet category = ''\r\n\t\t\tswitch (categoryId) {\r\n\t\t\t\tcase 1:\r\n\t\t\t\t\tcategory = 'Purpose'\r\n\t\t\t\t\tbreak\r\n\t\t\t\tcase 2:\r\n\t\t\t\t\tcategory = 'Audience'\r\n\t\t\t\t\tbreak\r\n\t\t\t\tcase 3:\r\n\t\t\t\t\tcategory = 'Visual Design'\r\n\t\t\t\t\tbreak\r\n\t\t\t\tcase 4:\r\n\t\t\t\t\tcategory = 'Document Design'\r\n\t\t\t\t\tbreak\r\n\t\t\t\tcase 5:\r\n\t\t\t\t\tcategory = 'Organization'\r\n\t\t\t\t\tbreak\r\n\t\t\t\tcase 6:\r\n\t\t\t\t\tcategory = 'Writing/Style'\r\n\t\t\t\t\tbreak\r\n\t\t\t\tcase 7:\r\n\t\t\t\t\tcategory = 'Genre/Content'\r\n\t\t\t\t\tbreak\r\n\t\t\t\tcase 8:\r\n\t\t\t\t\tcategory = 'Other'\r\n\t\t\t}\r\n\t\t\treturn category\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Show delete CF dialog.\r\n\t\t// @arg The CF issue id.\r\n\t\tshowDeleteCFModal(issueId) {\r\n\t\t\t// this.$bvModal.show('modal-delete');\r\n\t\t\tthis.cfIssueDeleteDialogVisible = true\r\n\t\t\tthis.deleteIssueId = issueId\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Expand all issues.\r\n\t\texpandAll() {\r\n\t\t\t// this.expand = true;\r\n\t\t\tthis.activeIssues = this.issues.map(issue => issue.Id)\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Collapse all issues.\r\n\t\tcollapseAll() {\r\n\t\t\tthis.activeIssues = []\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Create new issue.\r\n\t\tcreateNewIssue() {\r\n\t\t\tthis.$router.push({ path: '/collective_feedback/' + this.cfId + '/issue' })\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Delete an issue.\r\n\t\tasync deleteIssue() {\r\n\t\t\tconst issueId = this.deleteIssueId\r\n\t\t\tlet currentIssue = ''\r\n\t\t\tawait cfIssuesStore.getCollectiveFeedbackIssueByIssueId(issueId)\r\n\t\t\t\t.then(issue => {\r\n\t\t\t\t\tcurrentIssue = issue\r\n\t\t\t\t\tcurrentIssue['IsActive'] = 0\r\n\t\t\t\t\tcfIssuesStore.putCollectiveFeedbackIssue(currentIssue)\r\n\t\t\t\t})\r\n\r\n\t\t\tfor (let i = 0; i < this.issues.length; i++) {\r\n\t\t\t\tif (this.issues[i]['Id'] == issueId) {\r\n\t\t\t\t\tthis.issues[i]['IsActive'] = 0\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\t// this.$bvModal.hide('modal-delete');\r\n\t\t\tthis.cfIssueDeleteDialogVisible = false\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Edit an issue.\r\n\t\teditIssue(issueId) {\r\n\t\t\tthis.$router.push({ path: '/collective_feedback/' + this.cfId + '/issue?issueId=' + issueId })\r\n\t\t}\r\n\t}\r\n}\r\n</script>\r\n\r\n<style scoped>\r\n\r\n#cfIssuesTitle{\r\n font-size: 20px;\r\n color: #4DB3A2 !important;\r\n font-weight: 700 !important;\r\n text-transform: uppercase !important;\r\n\r\n}\r\n\r\n#cfIssuesTitleDiv{\r\n padding: 5px 30px 5px 10px\r\n}\r\n\r\n.greenButton{\r\n background-color: #006747;\r\n border-color: #307f7a;\r\n}\r\n\r\n.show{\r\n display:inline !important\r\n}\r\n\r\n#issuesList{\r\n\tpadding: 0px;\r\n /* background-color: #f5f5f5; */\r\n box-shadow: 20px 10px 25px 20px rgba(109, 107, 107, 0.1);\r\n}\r\n\r\n.addIssueMarginLeft{\r\n\tmargin-left: 20px;\r\n}\r\n</style>\r\n<style>\r\n.collapse-issue-item:hover{\r\n background-color: #f5f7fa !important;\r\n\r\n}\r\n.el-collapse-item__header:hover{\r\n background-color: #f5f7fa !important;\r\n}\r\n\r\n[class=\"el-collapse-item__header is-active\"]:hover {\r\n background-color: white !important;\r\n}\r\n\r\n</style>\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CollectiveFeedbackDetail.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CollectiveFeedbackDetail.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./CollectiveFeedbackDetail.vue?vue&type=template&id=82180ca4&scoped=true&\"\nimport script from \"./CollectiveFeedbackDetail.vue?vue&type=script&lang=js&\"\nexport * from \"./CollectiveFeedbackDetail.vue?vue&type=script&lang=js&\"\nimport style0 from \"./CollectiveFeedbackDetail.vue?vue&type=style&index=0&id=82180ca4&scoped=true&lang=css&\"\nimport style1 from \"./CollectiveFeedbackDetail.vue?vue&type=style&index=1&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"82180ca4\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('div',{attrs:{\"id\":\"filter\"}},[_c('div',{staticStyle:{\"float\":\"left\"}},[_c('el-button',{staticStyle:{\"text-align\":\"center\",\"-webkit-box-shadow\":\"none\",\"box-shadow\":\"none\",\"display\":\"inline-block\",\"padding\":\"0px\",\"padding-right\":\"10px\",\"vertical-align\":\"middle\",\"-ms-touch-action\":\"manipulation\",\"touch-action\":\"manipulation\",\"cursor\":\"pointer\",\"border\":\"0 none\",\"background\":\"none\",\"margin-top\":\"12px\"},attrs:{\"title\":\"Back to issues list\"},on:{\"click\":function($event){return _vm.backToIssuesList()}}},[_c('i',{staticClass:\"fas fa-chevron-left\",staticStyle:{\"font-size\":\"25px\"}})])],1),(_vm.collectiveFeedbacks)?_c('div',{staticClass:\"filter-divider\",staticStyle:{\"width\":\"220px\"}},[_c('el-tooltip',{staticClass:\"item\",attrs:{\"effect\":\"light\",\"content\":\"Select a Collective Feedback\",\"placement\":\"bottom\"}},[_c('el-select',{staticStyle:{\"margin-top\":\"5px\",\"width\":\"200px\"},attrs:{\"id\":\"groups-selection\",\"value-key\":\"Id\",\"filterable\":\"\",\"placeholder\":\"Select Collective Feedback\"},on:{\"change\":function($event){return _vm.onCFChange()}},model:{value:(_vm.currentCF),callback:function ($$v) {_vm.currentCF=$$v},expression:\"currentCF\"}},_vm._l((_vm.collectiveFeedbacks),function(item){return _c('el-option',{key:item.Id,attrs:{\"label\":item.Name,\"value\":item}})}),1)],1)],1):_vm._e(),_c('div',[(!_vm.isGroupProject)?_c('div',{staticClass:\"filter-divider\",staticStyle:{\"width\":\"285px\"}},[_c('el-button',{staticStyle:{\"text-align\":\"center\",\"-webkit-box-shadow\":\"none\",\"box-shadow\":\"none\",\"display\":\"inline-block\",\"padding\":\"0px 10px\",\"vertical-align\":\"middle\",\"-ms-touch-action\":\"manipulation\",\"touch-action\":\"manipulation\",\"cursor\":\"pointer\",\"border\":\"0 none\",\"background\":\"none\"},attrs:{\"disabled\":_vm.prevBtnDisable,\"title\":\"Previous student\"},on:{\"click\":_vm.previousStudent}},[_c('i',{staticClass:\"fas fa-arrow-left\",staticStyle:{\"font-size\":\"25px\"}})]),_c('el-tooltip',{staticClass:\"item\",attrs:{\"effect\":\"light\",\"content\":\"Select a student\",\"placement\":\"bottom\"}},[_c('el-select',{staticStyle:{\"margin-top\":\"5px\",\"width\":\"200px\"},attrs:{\"id\":\"students-selection\",\"value-key\":\"UserName\",\"filterable\":\"\",\"placeholder\":\"Select Student\"},on:{\"change\":function($event){return _vm.onStudentChange()}},model:{value:(_vm.currentStudent),callback:function ($$v) {_vm.currentStudent=$$v},expression:\"currentStudent\"}},_vm._l((_vm.students),function(item){return _c('el-option',{key:item.UserName,attrs:{\"label\":item.LastName + ', ' + item.FirstName,\"value\":item}})}),1)],1),_c('el-button',{staticStyle:{\"text-align\":\"center\",\"-webkit-box-shadow\":\"none\",\"box-shadow\":\"none\",\"display\":\"inline-block\",\"padding\":\"0px 10px\",\"vertical-align\":\"middle\",\"-ms-touch-action\":\"manipulation\",\"touch-action\":\"manipulation\",\"cursor\":\"pointer\",\"border\":\"0 none\",\"background\":\"none\"},attrs:{\"disabled\":_vm.nextBtnDisable,\"title\":\"Next student\"},on:{\"click\":_vm.nextStudent}},[_c('i',{staticClass:\"fas fa-arrow-right\",staticStyle:{\"font-size\":\"25px\"}})])],1):_c('div',{staticClass:\"filter-divider\",staticStyle:{\"width\":\"285px\"}},[_c('el-button',{staticStyle:{\"text-align\":\"center\",\"-webkit-box-shadow\":\"none\",\"box-shadow\":\"none\",\"display\":\"inline-block\",\"padding\":\"0px 10px\",\"vertical-align\":\"middle\",\"-ms-touch-action\":\"manipulation\",\"touch-action\":\"manipulation\",\"cursor\":\"pointer\",\"border\":\"0 none\",\"background\":\"none\"},attrs:{\"disabled\":_vm.prevGroupBtnDisable,\"title\":\"Previous Group\"},on:{\"click\":_vm.previousGroup}},[_c('i',{staticClass:\"fas fa-arrow-left\",staticStyle:{\"font-size\":\"25px\"}})]),_c('el-tooltip',{staticClass:\"item\",attrs:{\"effect\":\"light\",\"content\":\"Select a group\",\"placement\":\"bottom\"}},[_c('el-select',{staticStyle:{\"margin-top\":\"5px\",\"width\":\"200px\"},attrs:{\"id\":\"groups-selection\",\"value-key\":\"GroupId\",\"filterable\":\"\",\"placeholder\":\"Select Group\"},on:{\"change\":function($event){return _vm.onGroupChange()}},model:{value:(_vm.currentGroup),callback:function ($$v) {_vm.currentGroup=$$v},expression:\"currentGroup\"}},_vm._l((_vm.groups),function(item){return _c('el-option',{key:item.GroupId,attrs:{\"label\":item.GroupName,\"value\":item}})}),1)],1),_c('el-button',{staticStyle:{\"text-align\":\"center\",\"-webkit-box-shadow\":\"none\",\"box-shadow\":\"none\",\"display\":\"inline-block\",\"padding\":\"0px 10px\",\"vertical-align\":\"middle\",\"-ms-touch-action\":\"manipulation\",\"touch-action\":\"manipulation\",\"cursor\":\"pointer\",\"border\":\"0 none\",\"background\":\"none\"},attrs:{\"disabled\":_vm.nextGroupBtnDisable,\"title\":\"Next Group\"},on:{\"click\":_vm.nextGroup}},[_c('i',{staticClass:\"fas fa-arrow-right\",staticStyle:{\"font-size\":\"25px\"}})])],1)]),(_vm.issues && _vm.currentIssue)?_c('div',{staticStyle:{\"width\":\"270px\",\"float\":\"left\",\"height\":\"50px\"}},[_c('el-tooltip',{staticClass:\"item\",attrs:{\"effect\":\"light\",\"content\":\"Select an Issue\",\"placement\":\"bottom\"}},[_c('el-select',{staticStyle:{\"margin-top\":\"5px\",\"margin-left\":\"20px\",\"width\":\"200px\"},attrs:{\"id\":\"groups-selection\",\"value-key\":\"Id\",\"filterable\":\"\",\"placeholder\":\"Select Issue\"},on:{\"change\":function($event){return _vm.onIssueChange()}},model:{value:(_vm.currentIssue),callback:function ($$v) {_vm.currentIssue=$$v},expression:\"currentIssue\"}},_vm._l((_vm.issues),function(item){return _c('el-option',{key:item.Id,attrs:{\"label\":item.Title,\"value\":item}})}),1)],1),_c('el-button',{staticStyle:{\"margin-left\":\"10px\",\"text-align\":\"center\",\"-webkit-box-shadow\":\"none\",\"box-shadow\":\"none\",\"display\":\"inline-block\",\"padding\":\"0px\",\"padding-right\":\"10px\",\"vertical-align\":\"middle\",\"-ms-touch-action\":\"manipulation\",\"touch-action\":\"manipulation\",\"cursor\":\"pointer\",\"border\":\"0 none\",\"background\":\"none\"},attrs:{\"title\":\"Add New Issue\"},on:{\"click\":function($event){return _vm.addNewIssue()}}},[_c('i',{staticClass:\"far fa-plus-square\",staticStyle:{\"font-size\":\"30px\"}})])],1):_vm._e(),_c('div',{staticStyle:{\"float\":\"right\",\"position\":\"absolute\",\"right\":\"0\"}},[(_vm.issueId && _vm.currentIssue.Title != '' && _vm.currentIssue.Category != null &&\n _vm.currentIssue.Examples != '' && _vm.currentIssue.Examples != '<p><br></p>' && _vm.currentIssue.Examples != '<p></p>' &&\n _vm.currentIssue.Description != '' && _vm.currentIssue.Description != '<p><br></p>' && _vm.currentIssue.Description != '<p></p>' &&\n _vm.currentIssue.Explanation != '' && _vm.currentIssue.Explanation != '<p><br></p>' && _vm.currentIssue.Explanation !='<p></p>')?_c('el-button',{staticStyle:{\"margin-top\":\"5px\",\"margin-right\":\"5px\"},attrs:{\"type\":_vm.statusType,\"title\":_vm.submitTooltip},on:{\"click\":function($event){return _vm.submitIssue()}}},[_vm._v(\"\\n Submit\\n \")]):_c('el-button',{staticStyle:{\"margin-top\":\"5px\",\"margin-right\":\"5px\"},attrs:{\"type\":\"info\",\"disabled\":true,\"title\":\"Enter all mandatory fields before submitting the issue.\"}},[_vm._v(\"\\n Submit\\n \")])],1)]),_c('div',{attrs:{\"id\":\"full_width_container\"}},[_c('rs-panes',{attrs:{\"split-to\":\"columns\",\"allow-resize\":true,\"units\":\"percents\",\"size\":70,\"min-size\":0,\"resizer-thickness\":6}},[_c('div',{staticStyle:{\"height\":\"100%\"},attrs:{\"slot\":\"firstPane\"},slot:\"firstPane\"},[_c('div',{staticClass:\"full_height\",attrs:{\"id\":\"left_side\"}},[_c('div',{attrs:{\"id\":\"left_side_inner\"}},[_c('div',{attrs:{\"id\":\"submissions_container\"}},[_c('nav',{staticClass:\"ViewerControls ViewerControls--with-annotations\"},[_c('div',{staticClass:\"ViewerControls-primary\"},[_c('div',{staticClass:\"ViewerControls--download\"},[_c('div',{staticStyle:{\"min-width\":\"50px\",\"text-align\":\"center\"}},[_c('div',[_c('button',{staticClass:\"download-button--button\",attrs:{\"title\":\"Download annotated PDF\",\"aria-label\":\"Download annotated PDF\"},on:{\"click\":function($event){return _vm.downloadPdf()}}},[_c('i',{staticClass:\"fas fa-file-download\",staticStyle:{\"font-size\":\"22px\"}})])])])]),_c('div',{staticClass:\"ViewerControls--title\"}),_c('div',{staticClass:\"ViewerControls--page-controls\"},[_c('span',{staticClass:\"ViewerControls--page-number\",staticStyle:{\"display\":\"flex\",\"align-items\":\"center\"}},[_vm._v(\"\\n Page\\n \"),_c('div',{staticStyle:{\"padding-left\":\"10px\",\"padding-right\":\"10px\"}},[_c('el-input-number',{attrs:{\"min\":1,\"max\":_vm.totalPageNumber,\"size\":\"small\",\"label\":\"Page\"},on:{\"change\":_vm.changePage},model:{value:(_vm.pageNum),callback:function ($$v) {_vm.pageNum=$$v},expression:\"pageNum\"}})],1),_vm._v(\"\\n of \"+_vm._s(_vm.totalPageNumber)+\"\\n \")]),_c('svg',{staticStyle:{\"margin-left\":\"12px\",\"margin-right\":\"0px\",\"width\":\"2px\",\"height\":\"26px\",\"color\":\"rgb(171, 179, 186)\"},attrs:{\"viewBox\":\"0 0 2 26\"}},[_c('line',{attrs:{\"stroke\":\"currentColor\",\"stroke-dasharray\":\"2, 1\",\"stroke-width\":\"1\",\"x1\":\"1\",\"y1\":\"0\",\"x2\":\"1\",\"y2\":\"26\"}})])]),_c('nav',{staticClass:\"DocumentControls\"},[_c('div',{staticStyle:{\"display\":\"inline-flex\",\"align-items\":\"center\",\"user-select\":\"none\"}},[_c('button',{staticClass:\"AnnotationControlButton\",attrs:{\"aria-label\":\"Zoom Out\",\"title\":\"Zoom Out\",\"aria-disabled\":\"false\"},on:{\"click\":_vm.zoomOut}},[_c('i',{staticClass:\"fas fa-minus\",staticStyle:{\"font-size\":\"20px\"}})]),_c('span',{staticStyle:{\"text-transform\":\"uppercase\",\"font-size\":\"0.75rem\",\"color\":\"rgb(238, 238, 239)\",\"margin-left\":\"4px\",\"margin-right\":\"4px\"},attrs:{\"aria-hidden\":\"true\"}},[_vm._v(\"\\n Zoom\\n \")]),_c('button',{staticClass:\"AnnotationControlButton\",attrs:{\"aria-label\":\"Zoom In\",\"title\":\"Zoom In\",\"aria-disabled\":\"false\"},on:{\"click\":_vm.zoomIn}},[_c('i',{staticClass:\"fas fa-plus\",staticStyle:{\"font-size\":\"20px\"}})])]),_c('svg',{staticStyle:{\"margin-left\":\"2px\",\"margin-right\":\"4px\",\"width\":\"2px\",\"height\":\"26px\",\"color\":\"rgb(171, 179, 186)\"},attrs:{\"viewBox\":\"0 0 2 26\"}},[_c('line',{attrs:{\"stroke\":\"currentColor\",\"stroke-dasharray\":\"2, 1\",\"stroke-width\":\"1\",\"x1\":\"1\",\"y1\":\"0\",\"x2\":\"1\",\"y2\":\"26\"}})]),_c('div',{staticClass:\"ViewerControls--page-controls\"},[_c('button',{staticClass:\"AnnotationControlButton full-screen-button\",attrs:{\"aria-label\":\"Enter Full Screen\",\"title\":\"Zoom Fit Width\"},on:{\"click\":_vm.zoomFitWidth}},[_c('i',{staticClass:\"fas fa-expand\",staticStyle:{\"font-size\":\"20px\"}})]),(!_vm.readOnly)?_c('svg',{staticStyle:{\"margin-left\":\"4px\",\"margin-right\":\"4px\",\"width\":\"2px\",\"height\":\"26px\",\"color\":\"rgb(171, 179, 186)\"},attrs:{\"viewBox\":\"0 0 2 26\"}},[_c('line',{attrs:{\"stroke\":\"currentColor\",\"stroke-dasharray\":\"2, 1\",\"stroke-width\":\"1\",\"x1\":\"1\",\"y1\":\"0\",\"x2\":\"1\",\"y2\":\"26\"}})]):_vm._e()])]),_c('nav',{staticClass:\"AnnotationControls\"},[_c('button',{staticClass:\"AnnotationControlButton\",attrs:{\"aria-label\":\"Enter selection mode\",\"title\":\"Selection\"},on:{\"click\":_vm.selectTextPdf}},[_c('div',{staticClass:\"AnnotationControlButton-outer\"},[_c('div',{staticClass:\"AnnotationControlButton-inner\"},[_c('i',{staticClass:\"fas fa-mouse-pointer\",staticStyle:{\"font-size\":\"20px\"}})])])]),_c('button',{staticClass:\"AnnotationControlButton\",attrs:{\"aria-label\":\"Crop Image\",\"title\":\"Crop Image\"},on:{\"click\":_vm.cropImage}},[_c('div',{staticClass:\"AnnotationControlButton-outer\"},[_c('div',{staticClass:\"AnnotationControlButton-inner\"},[_c('i',{staticClass:\"fas fa-crop-alt\",staticStyle:{\"font-size\":\"20px\"}})])])])])])]),_c('div',{staticStyle:{\"display\":\"block\",\"height\":\"calc(100% - 45px)\"},attrs:{\"id\":\"iframe_holder\"}},[(_vm.cropImageMsg)?_c('div',{staticStyle:{\"padding\":\"1px !important\",\"background-color\":\"#fffebb\",\"border-bottom\":\"1px solid #bdbdbd\",\"cursor\":\"pointer\"},on:{\"click\":function($event){return _vm.closeCropMode()}}},[_c('span',{staticStyle:{\"font-size\":\"14px\",\"margin-left\":\"5px\"}},[_vm._v(\"\\n You are in image cropping mode. \"),_c('strong',[_vm._v(\"Click here to disable image cropping mode.\")])])]):_vm._e(),_c('vue-cropper',{ref:\"cropper\",class:{ hideDiv: !_vm.showCanvas },attrs:{\"id\":\"canvas\",\"guides\":true,\"view-mode\":1,\"src\":_vm.imgSrc,\"alt\":\"Source Image\",\"img-style\":{\n width: '60%',\n height: '92%',\n 'padding-left': '40px'\n },\"ready\":_vm.cropperReady,\"cropend\":_vm.cropperCropEnd}}),_c('div',{class:{ hideDiv: !_vm.showPdf },staticStyle:{\"resize\":\"vertical\",\"height\":\"100%\"},attrs:{\"id\":\"pdfDocument\"}})],1)])]),_c('div',{staticStyle:{\"display\":\"none\",\"position\":\"relative\",\"top\":\"-100%\",\"z-index\":\"1\",\"height\":\"100%\",\"width\":\"100%\",\"border\":\"0 none\"},attrs:{\"id\":\"resize_overlay\"}})])]),_c('div',{attrs:{\"slot\":\"secondPane\"},slot:\"secondPane\"},[_c('div',{staticClass:\"full_height\",attrs:{\"id\":\"right_side\"}},[_c('div',{staticClass:\"right_side_content\"},[_c('div',{staticClass:\"full_height\",attrs:{\"id\":\"rightside_inner\"}},[_c('div',{attrs:{\"id\":\"issue\"}},[(_vm.currentIssue)?_c('div',{staticStyle:{\"height\":\"100%\",\"overflow\":\"auto\"}},[_c('el-card',{staticStyle:{\"margin-bottom\":\"5px\",\"margin-left\":\"3px\"},attrs:{\"body-style\":{ padding: '5px' }}},[_c('el-form',{ref:\"issueForm\",attrs:{\"model\":_vm.currentIssue,\"rules\":_vm.rules,\"label-width\":\"120px\"}},[_c('el-form-item',[_c('span',{staticStyle:{\"font-size\":\"14px\",\"font-weight\":\"bold\",\"color\":\"black\"},attrs:{\"slot\":\"label\"},slot:\"label\"},[_vm._v(\"\\n Issue Name\\n \")]),_c('el-input',{attrs:{\"id\":\"issue-name\",\"placeholder\":\"Enter issue name\",\"maxlength\":\"50\"},model:{value:(_vm.currentIssue.Title),callback:function ($$v) {_vm.$set(_vm.currentIssue, \"Title\", $$v)},expression:\"currentIssue.Title\"}})],1),_c('el-form-item',[_c('span',{staticStyle:{\"font-size\":\"14px\",\"font-weight\":\"bold\",\"color\":\"black\"},attrs:{\"slot\":\"label\"},slot:\"label\"},[_vm._v(\"\\n Issue Category\\n \")]),_c('el-select',{staticStyle:{\"width\":\"100%\"},attrs:{\"id\":\"issue-category\",\"value-key\":\"value\",\"placeholder\":\" Select a category\"},on:{\"change\":function($event){return _vm.saveIssue()}},model:{value:(_vm.currentIssue.Category),callback:function ($$v) {_vm.$set(_vm.currentIssue, \"Category\", $$v)},expression:\"currentIssue.Category\"}},_vm._l((_vm.categories),function(item){return _c('el-option',{key:item.value,attrs:{\"label\":item.label,\"value\":item.value}})}),1)],1)],1)],1),_c('div',{staticStyle:{\"display\":\"none\"},attrs:{\"id\":\"copyable\"}},[_c('img',{attrs:{\"id\":\"crop-img\",\"src\":\"\"}})]),_c('el-card',{staticStyle:{\"margin-bottom\":\"5px\",\"margin-left\":\"3px\"},attrs:{\"body-style\":{ padding: '10px' }}},[_c('div',{staticClass:\"clearfix editor-header\"},[_c('span',{staticStyle:{\"font-size\":\"18px\",\"font-weight\":\"bold\"}},[_vm._v(\"\\n Student Example\\n \")])]),_c('div',[_c('editor-menu-bar',{attrs:{\"editor\":_vm.exampleEditor},scopedSlots:_vm._u([{key:\"default\",fn:function(ref){\n var commands = ref.commands;\n var isActive = ref.isActive;\nreturn _c('div',{staticClass:\"menubar\",staticStyle:{\"margin-bottom\":\"5px\",\"margin-top\":\"5px\"}},[_c('button',{staticClass:\"editor-btn\",class:{ 'is-active': isActive.bold() },attrs:{\"type\":\"button\"},on:{\"click\":commands.bold}},[_c('i',{staticClass:\"fas fa-bold\"})]),_c('button',{staticClass:\"editor-btn\",class:{ 'is-active': isActive.italic() },attrs:{\"type\":\"button\"},on:{\"click\":commands.italic}},[_c('i',{staticClass:\"fas fa-italic\"})]),_c('button',{staticClass:\"editor-btn\",class:{ 'is-active': isActive.strike() },on:{\"click\":commands.strike}},[_c('i',{staticClass:\"fas fa-strikethrough\"})]),_c('button',{staticClass:\"editor-btn\",class:{ 'is-active': isActive.underline() },on:{\"click\":commands.underline}},[_c('i',{staticClass:\"fas fa-underline\"})]),_c('button',{staticClass:\"editor-btn\",class:{ 'is-active': isActive.heading({ level: 1 }) },on:{\"click\":function($event){return commands.heading({ level: 1 })}}},[_c('i',{staticClass:\"fas fa-heading\"}),_c('strong',[_vm._v(\"1\")])]),_c('button',{staticClass:\"editor-btn\",class:{ 'is-active': isActive.heading({ level: 2 }) },on:{\"click\":function($event){return commands.heading({ level: 2 })}}},[_c('i',{staticClass:\"fas fa-heading\"}),_c('strong',[_vm._v(\"2\")])]),_c('button',{staticClass:\"editor-btn\",class:{ 'is-active': isActive.heading({ level: 3 }) },on:{\"click\":function($event){return commands.heading({ level: 3 })}}},[_c('i',{staticClass:\"fas fa-heading\"}),_c('strong',[_vm._v(\"3\")])]),_c('button',{staticClass:\"editor-btn\",class:{ 'is-active': isActive.bullet_list() },on:{\"click\":commands.bullet_list}},[_c('i',{staticClass:\"fas fa-list-ul\"})]),_c('button',{staticClass:\"editor-btn\",class:{ 'is-active': isActive.ordered_list() },on:{\"click\":commands.ordered_list}},[_c('i',{staticClass:\"fas fa-list-ol\"})])])}}],null,false,178665457)}),_c('editor-content',{staticClass:\"el-textarea__inner editor-content\",attrs:{\"id\":\"example-editor\",\"editor\":_vm.exampleEditor}})],1)]),_c('el-card',{staticStyle:{\"margin-bottom\":\"5px\",\"margin-left\":\"3px\"},attrs:{\"body-style\":{ padding: '10px' }}},[_c('div',{staticClass:\"clearfix editor-header\"},[_c('span',{staticStyle:{\"font-size\":\"18px\",\"font-weight\":\"bold\"}},[_vm._v(\"\\n Summary: Why this is an issue?\\n \")])]),_c('div',[_c('editor-menu-bar',{attrs:{\"editor\":_vm.summaryEditor},scopedSlots:_vm._u([{key:\"default\",fn:function(ref){\n var commands = ref.commands;\n var isActive = ref.isActive;\nreturn _c('div',{staticClass:\"menubar\",staticStyle:{\"margin-bottom\":\"5px\",\"margin-top\":\"5px\"}},[_c('button',{staticClass:\"editor-btn\",class:{ 'is-active': isActive.bold() },attrs:{\"type\":\"button\"},on:{\"click\":commands.bold}},[_c('i',{staticClass:\"fas fa-bold\"})]),_c('button',{staticClass:\"editor-btn\",class:{ 'is-active': isActive.italic() },attrs:{\"type\":\"button\"},on:{\"click\":commands.italic}},[_c('i',{staticClass:\"fas fa-italic\"})]),_c('button',{staticClass:\"editor-btn\",class:{ 'is-active': isActive.strike() },on:{\"click\":commands.strike}},[_c('i',{staticClass:\"fas fa-strikethrough\"})]),_c('button',{staticClass:\"editor-btn\",class:{ 'is-active': isActive.underline() },on:{\"click\":commands.underline}},[_c('i',{staticClass:\"fas fa-underline\"})]),_c('button',{staticClass:\"editor-btn\",class:{ 'is-active': isActive.heading({ level: 1 }) },on:{\"click\":function($event){return commands.heading({ level: 1 })}}},[_c('i',{staticClass:\"fas fa-heading\"}),_c('strong',[_vm._v(\"1\")])]),_c('button',{staticClass:\"editor-btn\",class:{ 'is-active': isActive.heading({ level: 2 }) },on:{\"click\":function($event){return commands.heading({ level: 2 })}}},[_c('i',{staticClass:\"fas fa-heading\"}),_c('strong',[_vm._v(\"2\")])]),_c('button',{staticClass:\"editor-btn\",class:{ 'is-active': isActive.heading({ level: 3 }) },on:{\"click\":function($event){return commands.heading({ level: 3 })}}},[_c('i',{staticClass:\"fas fa-heading\"}),_c('strong',[_vm._v(\"3\")])]),_c('button',{staticClass:\"editor-btn\",class:{ 'is-active': isActive.bullet_list() },on:{\"click\":commands.bullet_list}},[_c('i',{staticClass:\"fas fa-list-ul\"})]),_c('button',{staticClass:\"editor-btn\",class:{ 'is-active': isActive.ordered_list() },on:{\"click\":commands.ordered_list}},[_c('i',{staticClass:\"fas fa-list-ol\"})])])}}],null,false,178665457)}),_c('editor-content',{staticClass:\"el-textarea__inner editor-content\",attrs:{\"id\":\"summary-editor\",\"editor\":_vm.summaryEditor}})],1)]),_c('el-card',{staticStyle:{\"margin-bottom\":\"5px\",\"margin-left\":\"3px\"},attrs:{\"body-style\":{ padding: '10px' }}},[_c('div',{staticClass:\"clearfix editor-header\"},[_c('span',{staticStyle:{\"font-size\":\"18px\",\"font-weight\":\"bold\"}},[_vm._v(\"\\n Explanation: How to improve?\\n \")])]),_c('div',[_c('editor-menu-bar',{attrs:{\"editor\":_vm.explanationEditor},scopedSlots:_vm._u([{key:\"default\",fn:function(ref){\n var commands = ref.commands;\n var isActive = ref.isActive;\nreturn _c('div',{staticClass:\"menubar\",staticStyle:{\"margin-bottom\":\"5px\",\"margin-top\":\"5px\"}},[_c('button',{staticClass:\"editor-btn\",class:{ 'is-active': isActive.bold() },attrs:{\"type\":\"button\"},on:{\"click\":commands.bold}},[_c('i',{staticClass:\"fas fa-bold\"})]),_c('button',{staticClass:\"editor-btn\",class:{ 'is-active': isActive.italic() },attrs:{\"type\":\"button\"},on:{\"click\":commands.italic}},[_c('i',{staticClass:\"fas fa-italic\"})]),_c('button',{staticClass:\"editor-btn\",class:{ 'is-active': isActive.strike() },on:{\"click\":commands.strike}},[_c('i',{staticClass:\"fas fa-strikethrough\"})]),_c('button',{staticClass:\"editor-btn\",class:{ 'is-active': isActive.underline() },on:{\"click\":commands.underline}},[_c('i',{staticClass:\"fas fa-underline\"})]),_c('button',{staticClass:\"editor-btn\",class:{ 'is-active': isActive.heading({ level: 1 }) },on:{\"click\":function($event){return commands.heading({ level: 1 })}}},[_c('i',{staticClass:\"fas fa-heading\"}),_c('strong',[_vm._v(\"1\")])]),_c('button',{staticClass:\"editor-btn\",class:{ 'is-active': isActive.heading({ level: 2 }) },on:{\"click\":function($event){return commands.heading({ level: 2 })}}},[_c('i',{staticClass:\"fas fa-heading\"}),_c('strong',[_vm._v(\"2\")])]),_c('button',{staticClass:\"editor-btn\",class:{ 'is-active': isActive.heading({ level: 3 }) },on:{\"click\":function($event){return commands.heading({ level: 3 })}}},[_c('i',{staticClass:\"fas fa-heading\"}),_c('strong',[_vm._v(\"3\")])]),_c('button',{staticClass:\"editor-btn\",class:{ 'is-active': isActive.bullet_list() },on:{\"click\":commands.bullet_list}},[_c('i',{staticClass:\"fas fa-list-ul\"})]),_c('button',{staticClass:\"editor-btn\",class:{ 'is-active': isActive.ordered_list() },on:{\"click\":commands.ordered_list}},[_c('i',{staticClass:\"fas fa-list-ol\"})])])}}],null,false,178665457)}),_c('editor-content',{staticClass:\"el-textarea__inner editor-content\",attrs:{\"id\":\"explanation-editor\",\"editor\":_vm.explanationEditor}})],1)])],1):_vm._e()])])])])])])],1)])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n <div>\r\n <div id=\"filter\">\r\n <div style=\"float: left;\">\r\n <el-button\r\n style=\"text-align: center; -webkit-box-shadow: none; box-shadow: none;\r\n display: inline-block; padding: 0px; padding-right: 10px; vertical-align: middle;\r\n -ms-touch-action: manipulation; touch-action: manipulation;\r\n cursor: pointer; border: 0 none; background: none; margin-top: 12px;\"\r\n title=\"Back to issues list\"\r\n @click=\"backToIssuesList()\"\r\n >\r\n <i class=\"fas fa-chevron-left\" style=\"font-size: 25px;\" />\r\n </el-button>\r\n </div>\r\n\r\n <div v-if=\"collectiveFeedbacks\" class=\"filter-divider\" style=\"width: 220px;\">\r\n <el-tooltip class=\"item\" effect=\"light\" content=\"Select a Collective Feedback\" placement=\"bottom\">\r\n <el-select\r\n id=\"groups-selection\"\r\n v-model=\"currentCF\"\r\n value-key=\"Id\"\r\n filterable\r\n placeholder=\"Select Collective Feedback\"\r\n style=\"margin-top: 5px; width: 200px;\"\r\n @change=\"onCFChange()\"\r\n >\r\n <el-option\r\n v-for=\"item in collectiveFeedbacks\"\r\n :key=\"item.Id\"\r\n :label=\"item.Name\"\r\n :value=\"item\"\r\n />\r\n </el-select>\r\n </el-tooltip>\r\n </div>\r\n\r\n <div>\r\n <div v-if=\"!isGroupProject\" class=\"filter-divider\" style=\"width: 285px;\">\r\n <el-button\r\n style=\"text-align: center; -webkit-box-shadow: none; box-shadow: none;\r\n display: inline-block; padding: 0px 10px; vertical-align: middle;\r\n -ms-touch-action: manipulation; touch-action: manipulation;\r\n cursor: pointer; border: 0 none; background: none;\"\r\n :disabled=\"prevBtnDisable\"\r\n title=\"Previous student\"\r\n @click=\"previousStudent\"\r\n >\r\n <i class=\"fas fa-arrow-left\" style=\"font-size: 25px;\" />\r\n </el-button>\r\n\r\n <el-tooltip class=\"item\" effect=\"light\" content=\"Select a student\" placement=\"bottom\">\r\n <el-select\r\n id=\"students-selection\"\r\n v-model=\"currentStudent\"\r\n value-key=\"UserName\"\r\n filterable\r\n placeholder=\"Select Student\"\r\n style=\"margin-top: 5px; width: 200px;\"\r\n @change=\"onStudentChange()\"\r\n >\r\n <el-option\r\n v-for=\"item in students\"\r\n :key=\"item.UserName\"\r\n :label=\"item.LastName + ', ' + item.FirstName\"\r\n :value=\"item\"\r\n />\r\n </el-select>\r\n </el-tooltip>\r\n\r\n <el-button\r\n style=\"text-align: center; -webkit-box-shadow: none; box-shadow: none;\r\n display: inline-block; padding: 0px 10px; vertical-align: middle;\r\n -ms-touch-action: manipulation; touch-action: manipulation;\r\n cursor: pointer; border: 0 none; background: none;\"\r\n :disabled=\"nextBtnDisable\"\r\n title=\"Next student\"\r\n @click=\"nextStudent\"\r\n >\r\n <i style=\"font-size: 25px;\" class=\"fas fa-arrow-right\" />\r\n </el-button>\r\n </div>\r\n\r\n <div v-else class=\"filter-divider\" style=\"width: 285px;\">\r\n <el-button\r\n style=\"text-align: center; -webkit-box-shadow: none; box-shadow: none;\r\n display: inline-block; padding: 0px 10px; vertical-align: middle;\r\n -ms-touch-action: manipulation; touch-action: manipulation;\r\n cursor: pointer; border: 0 none; background: none;\"\r\n :disabled=\"prevGroupBtnDisable\"\r\n title=\"Previous Group\"\r\n @click=\"previousGroup\"\r\n >\r\n <i class=\"fas fa-arrow-left\" style=\"font-size: 25px;\" />\r\n </el-button>\r\n\r\n <el-tooltip class=\"item\" effect=\"light\" content=\"Select a group\" placement=\"bottom\">\r\n <el-select\r\n id=\"groups-selection\"\r\n v-model=\"currentGroup\"\r\n value-key=\"GroupId\"\r\n filterable\r\n placeholder=\"Select Group\"\r\n style=\"margin-top: 5px; width: 200px;\"\r\n @change=\"onGroupChange()\"\r\n >\r\n <el-option\r\n v-for=\"item in groups\"\r\n :key=\"item.GroupId\"\r\n :label=\"item.GroupName\"\r\n :value=\"item\"\r\n />\r\n </el-select>\r\n </el-tooltip>\r\n\r\n <el-button\r\n style=\"text-align: center; -webkit-box-shadow: none; box-shadow: none;\r\n display: inline-block; padding: 0px 10px; vertical-align: middle;\r\n -ms-touch-action: manipulation; touch-action: manipulation;\r\n cursor: pointer; border: 0 none; background: none;\"\r\n :disabled=\"nextGroupBtnDisable\"\r\n title=\"Next Group\"\r\n @click=\"nextGroup\"\r\n >\r\n <i style=\"font-size: 25px;\" class=\"fas fa-arrow-right\" />\r\n </el-button>\r\n </div>\r\n </div>\r\n <div v-if=\"issues && currentIssue\" style=\"width: 270px; float: left;height: 50px;\">\r\n <el-tooltip class=\"item\" effect=\"light\" content=\"Select an Issue\" placement=\"bottom\">\r\n <el-select\r\n id=\"groups-selection\"\r\n v-model=\"currentIssue\"\r\n value-key=\"Id\"\r\n filterable\r\n placeholder=\"Select Issue\"\r\n style=\"margin-top: 5px; margin-left: 20px; width: 200px;\"\r\n @change=\"onIssueChange()\"\r\n >\r\n <el-option\r\n v-for=\"item in issues\"\r\n :key=\"item.Id\"\r\n :label=\"item.Title\"\r\n :value=\"item\"\r\n />\r\n </el-select>\r\n </el-tooltip>\r\n <el-button\r\n style=\" margin-left: 10px; text-align: center; -webkit-box-shadow: none; box-shadow: none;\r\n display: inline-block; padding: 0px; padding-right: 10px; vertical-align: middle;\r\n -ms-touch-action: manipulation; touch-action: manipulation;\r\n cursor: pointer; border: 0 none; background: none;\"\r\n title=\"Add New Issue\"\r\n @click=\"addNewIssue()\"\r\n >\r\n <i class=\"far fa-plus-square\" style=\"font-size: 30px;\" />\r\n </el-button>\r\n </div>\r\n <div style=\"float:right; position: absolute; right: 0;\">\r\n <el-button\r\n v-if=\"issueId && currentIssue.Title != '' && currentIssue.Category != null &&\r\n currentIssue.Examples != '' && currentIssue.Examples != '<p><br></p>' && currentIssue.Examples != '<p></p>' &&\r\n currentIssue.Description != '' && currentIssue.Description != '<p><br></p>' && currentIssue.Description != '<p></p>' &&\r\n currentIssue.Explanation != '' && currentIssue.Explanation != '<p><br></p>' && currentIssue.Explanation !='<p></p>'\"\r\n :type=\"statusType\"\r\n style=\"margin-top: 5px; margin-right: 5px;\"\r\n :title=\"submitTooltip\"\r\n @click=\"submitIssue()\"\r\n >\r\n Submit\r\n </el-button>\r\n <el-button\r\n v-else\r\n type=\"info\"\r\n style=\"margin-top: 5px; margin-right: 5px;\"\r\n :disabled=\"true\"\r\n title=\"Enter all mandatory fields before submitting the issue.\"\r\n >\r\n Submit\r\n </el-button>\r\n </div>\r\n </div>\r\n <div id=\"full_width_container\">\r\n <rs-panes split-to=\"columns\" :allow-resize=\"true\" units=\"percents\" :size=\"70\" :min-size=\"0\" :resizer-thickness=\"6\">\r\n <div slot=\"firstPane\" style=\"height: 100%;\">\r\n <div id=\"left_side\" class=\"full_height\">\r\n <div id=\"left_side_inner\">\r\n <div id=\"submissions_container\">\r\n <nav class=\"ViewerControls ViewerControls--with-annotations\">\r\n <div class=\"ViewerControls-primary\">\r\n <div class=\"ViewerControls--download\">\r\n <div style=\"min-width: 50px; text-align: center;\">\r\n <div>\r\n <button class=\"download-button--button\" title=\"Download annotated PDF\" aria-label=\"Download annotated PDF\" @click=\"downloadPdf()\">\r\n <i style=\"font-size: 22px;\" class=\"fas fa-file-download\" />\r\n </button>\r\n </div>\r\n </div>\r\n </div><div class=\"ViewerControls--title\" /><div class=\"ViewerControls--page-controls\">\r\n <span class=\"ViewerControls--page-number\" style=\"display: flex; align-items: center;\">\r\n Page\r\n <div style=\"padding-left: 10px; padding-right: 10px;\">\r\n <el-input-number v-model=\"pageNum\" :min=\"1\" :max=\"totalPageNumber\" size=\"small\" label=\"Page\" @change=\"changePage\" />\r\n </div>\r\n of {{ totalPageNumber }}\r\n </span>\r\n <svg viewBox=\"0 0 2 26\" style=\"margin-left: 12px; margin-right: 0px; width: 2px; height: 26px; color: rgb(171, 179, 186);\">\r\n <line stroke=\"currentColor\" stroke-dasharray=\"2, 1\" stroke-width=\"1\" x1=\"1\" y1=\"0\" x2=\"1\" y2=\"26\" />\r\n </svg>\r\n </div>\r\n <nav class=\"DocumentControls\">\r\n <div style=\"display: inline-flex; align-items: center; user-select: none;\">\r\n <button class=\"AnnotationControlButton\" aria-label=\"Zoom Out\" title=\"Zoom Out\" aria-disabled=\"false\" @click=\"zoomOut\">\r\n <i style=\"font-size: 20px;\" class=\"fas fa-minus\" />\r\n </button>\r\n <span aria-hidden=\"true\" style=\"text-transform: uppercase; font-size: 0.75rem; color: rgb(238, 238, 239); margin-left: 4px; margin-right: 4px;\">\r\n Zoom\r\n </span>\r\n <button class=\"AnnotationControlButton\" aria-label=\"Zoom In\" title=\"Zoom In\" aria-disabled=\"false\" @click=\"zoomIn\">\r\n <i style=\"font-size: 20px;\" class=\"fas fa-plus\" />\r\n </button>\r\n </div>\r\n <svg viewBox=\"0 0 2 26\" style=\"margin-left: 2px; margin-right: 4px; width: 2px; height: 26px; color: rgb(171, 179, 186);\">\r\n <line stroke=\"currentColor\" stroke-dasharray=\"2, 1\" stroke-width=\"1\" x1=\"1\" y1=\"0\" x2=\"1\" y2=\"26\" />\r\n </svg>\r\n <div class=\"ViewerControls--page-controls\">\r\n <button aria-label=\"Enter Full Screen\" class=\"AnnotationControlButton full-screen-button\" title=\"Zoom Fit Width\" @click=\"zoomFitWidth\">\r\n <i style=\"font-size: 20px;\" class=\"fas fa-expand\" />\r\n </button>\r\n <svg v-if=\"!readOnly\" viewBox=\"0 0 2 26\" style=\"margin-left: 4px; margin-right: 4px; width: 2px; height: 26px; color: rgb(171, 179, 186);\">\r\n <line stroke=\"currentColor\" stroke-dasharray=\"2, 1\" stroke-width=\"1\" x1=\"1\" y1=\"0\" x2=\"1\" y2=\"26\" />\r\n </svg>\r\n </div>\r\n </nav>\r\n <nav class=\"AnnotationControls\">\r\n <button aria-label=\"Enter selection mode\" class=\"AnnotationControlButton\" title=\"Selection\" @click=\"selectTextPdf\">\r\n <div class=\"AnnotationControlButton-outer\">\r\n <div class=\"AnnotationControlButton-inner\">\r\n <i style=\"font-size: 20px;\" class=\"fas fa-mouse-pointer\" />\r\n </div>\r\n </div>\r\n </button>\r\n <button aria-label=\"Crop Image\" class=\"AnnotationControlButton\" title=\"Crop Image\" @click=\"cropImage\">\r\n <div class=\"AnnotationControlButton-outer\">\r\n <div class=\"AnnotationControlButton-inner\">\r\n <i style=\"font-size: 20px;\" class=\"fas fa-crop-alt\" />\r\n </div>\r\n </div>\r\n </button>\r\n </nav>\r\n </div>\r\n </nav>\r\n\r\n <div id=\"iframe_holder\" style=\"display: block; height: calc(100% - 45px);\">\r\n <div\r\n v-if=\"cropImageMsg\"\r\n style=\"padding:1px !important;background-color: #fffebb; border-bottom: 1px solid #bdbdbd; cursor: pointer;\"\r\n @click=\"closeCropMode()\"\r\n >\r\n <span style=\"font-size: 14px; margin-left: 5px;\">\r\n You are in image cropping mode. <strong>Click here to disable image cropping mode.</strong>\r\n </span>\r\n </div>\r\n <vue-cropper\r\n id=\"canvas\"\r\n ref=\"cropper\"\r\n :guides=\"true\"\r\n\r\n :view-mode=\"1\"\r\n :src=\"imgSrc\"\r\n alt=\"Source Image\"\r\n :img-style=\"{\r\n width: '60%',\r\n height: '92%',\r\n 'padding-left': '40px'\r\n }\"\r\n :class=\"{ hideDiv: !showCanvas }\"\r\n :ready=\"cropperReady\"\r\n :cropend=\"cropperCropEnd\"\r\n />\r\n <div id=\"pdfDocument\" style=\"resize: vertical; height: 100%;\" :class=\"{ hideDiv: !showPdf }\" />\r\n </div>\r\n </div>\r\n </div>\r\n <div id=\"resize_overlay\" style=\"display: none; position: relative;top: -100%; z-index: 1; height: 100%; width: 100%; border: 0 none;\" />\r\n </div>\r\n </div>\r\n\r\n <div slot=\"secondPane\">\r\n <div id=\"right_side\" class=\"full_height\">\r\n <!-- <div id=\"width_resizer\" class=\"full_height ui-draggable\" /> -->\r\n <div class=\"right_side_content\">\r\n <div id=\"rightside_inner\" class=\"full_height\">\r\n <div id=\"issue\">\r\n <div v-if=\"currentIssue\" style=\"height: 100%; overflow: auto;\">\r\n <el-card :body-style=\"{ padding: '5px' }\" style=\"margin-bottom: 5px; margin-left: 3px;\">\r\n <el-form ref=\"issueForm\" :model=\"currentIssue\" :rules=\"rules\" label-width=\"120px\">\r\n <el-form-item>\r\n <span slot=\"label\" style=\"font-size: 14px; font-weight: bold; color: black;\">\r\n Issue Name\r\n </span>\r\n <el-input id=\"issue-name\" v-model=\"currentIssue.Title\" placeholder=\"Enter issue name\" maxlength=\"50\" />\r\n </el-form-item>\r\n <el-form-item>\r\n <span slot=\"label\" style=\"font-size: 14px; font-weight: bold; color: black;\">\r\n Issue Category\r\n </span>\r\n <el-select\r\n id=\"issue-category\"\r\n v-model=\"currentIssue.Category\"\r\n value-key=\"value\"\r\n placeholder=\" Select a category\"\r\n style=\"width: 100%;\"\r\n @change=\"saveIssue()\"\r\n >\r\n <el-option\r\n v-for=\"item in categories\"\r\n :key=\"item.value\"\r\n :label=\"item.label\"\r\n :value=\"item.value\"\r\n />\r\n </el-select>\r\n </el-form-item>\r\n </el-form>\r\n </el-card>\r\n <div id=\"copyable\" style=\"display: none;\">\r\n <img id=\"crop-img\" src=\"\">\r\n </div>\r\n <el-card :body-style=\"{ padding: '10px' }\" style=\"margin-bottom: 5px; margin-left: 3px;\">\r\n <div class=\"clearfix editor-header\">\r\n <span style=\"font-size: 18px; font-weight: bold;\">\r\n Student Example\r\n </span>\r\n </div>\r\n <div>\r\n <editor-menu-bar :editor=\"exampleEditor\">\r\n <div slot-scope=\"{ commands, isActive }\" class=\"menubar\" style=\"margin-bottom: 5px; margin-top: 5px;\">\r\n <button\r\n class=\"editor-btn\"\r\n :class=\"{ 'is-active': isActive.bold() }\"\r\n type=\"button\"\r\n @click=\"commands.bold\"\r\n >\r\n <i class=\"fas fa-bold\" />\r\n </button>\r\n\r\n <button\r\n class=\"editor-btn\"\r\n :class=\"{ 'is-active': isActive.italic() }\"\r\n type=\"button\"\r\n @click=\"commands.italic\"\r\n >\r\n <i class=\"fas fa-italic\" />\r\n </button>\r\n\r\n <button\r\n class=\"editor-btn\"\r\n :class=\"{ 'is-active': isActive.strike() }\"\r\n @click=\"commands.strike\"\r\n >\r\n <i class=\"fas fa-strikethrough\" />\r\n </button>\r\n\r\n <button\r\n class=\"editor-btn\"\r\n :class=\"{ 'is-active': isActive.underline() }\"\r\n @click=\"commands.underline\"\r\n >\r\n <i class=\"fas fa-underline\" />\r\n </button>\r\n <button\r\n class=\"editor-btn\"\r\n :class=\"{ 'is-active': isActive.heading({ level: 1 }) }\"\r\n @click=\"commands.heading({ level: 1 })\"\r\n >\r\n <i class=\"fas fa-heading\" /><strong>1</strong>\r\n </button>\r\n <button\r\n class=\"editor-btn\"\r\n :class=\"{ 'is-active': isActive.heading({ level: 2 }) }\"\r\n @click=\"commands.heading({ level: 2 })\"\r\n >\r\n <i class=\"fas fa-heading\" /><strong>2</strong>\r\n </button>\r\n\r\n <button\r\n class=\"editor-btn\"\r\n :class=\"{ 'is-active': isActive.heading({ level: 3 }) }\"\r\n @click=\"commands.heading({ level: 3 })\"\r\n >\r\n <i class=\"fas fa-heading\" /><strong>3</strong>\r\n </button>\r\n <button\r\n class=\"editor-btn\"\r\n :class=\"{ 'is-active': isActive.bullet_list() }\"\r\n @click=\"commands.bullet_list\"\r\n >\r\n <i class=\"fas fa-list-ul\" />\r\n </button>\r\n <button\r\n class=\"editor-btn\"\r\n :class=\"{ 'is-active': isActive.ordered_list() }\"\r\n @click=\"commands.ordered_list\"\r\n >\r\n <i class=\"fas fa-list-ol\" />\r\n </button>\r\n <!-- <button\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tclass=\"editor-btn\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t:class=\"{ 'is-active': isActive.blockquote() }\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t@click=\"commands.blockquote()\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<i class=\"fas fa-quote-right\" />\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t</button> -->\r\n </div>\r\n </editor-menu-bar>\r\n <editor-content id=\"example-editor\" :editor=\"exampleEditor\" class=\"el-textarea__inner editor-content\" />\r\n </div>\r\n </el-card>\r\n\r\n <el-card :body-style=\"{ padding: '10px' }\" style=\"margin-bottom: 5px; margin-left: 3px;\">\r\n <div class=\"clearfix editor-header\">\r\n <span style=\"font-size: 18px; font-weight: bold;\">\r\n Summary: Why this is an issue?\r\n </span>\r\n </div>\r\n <div>\r\n <editor-menu-bar :editor=\"summaryEditor\">\r\n <div slot-scope=\"{ commands, isActive }\" class=\"menubar\" style=\"margin-bottom: 5px; margin-top: 5px;\">\r\n <button\r\n class=\"editor-btn\"\r\n :class=\"{ 'is-active': isActive.bold() }\"\r\n type=\"button\"\r\n @click=\"commands.bold\"\r\n >\r\n <i class=\"fas fa-bold\" />\r\n </button>\r\n\r\n <button\r\n class=\"editor-btn\"\r\n :class=\"{ 'is-active': isActive.italic() }\"\r\n type=\"button\"\r\n @click=\"commands.italic\"\r\n >\r\n <i class=\"fas fa-italic\" />\r\n </button>\r\n\r\n <button\r\n class=\"editor-btn\"\r\n :class=\"{ 'is-active': isActive.strike() }\"\r\n @click=\"commands.strike\"\r\n >\r\n <i class=\"fas fa-strikethrough\" />\r\n </button>\r\n\r\n <button\r\n class=\"editor-btn\"\r\n :class=\"{ 'is-active': isActive.underline() }\"\r\n @click=\"commands.underline\"\r\n >\r\n <i class=\"fas fa-underline\" />\r\n </button>\r\n <button\r\n class=\"editor-btn\"\r\n :class=\"{ 'is-active': isActive.heading({ level: 1 }) }\"\r\n @click=\"commands.heading({ level: 1 })\"\r\n >\r\n <i class=\"fas fa-heading\" /><strong>1</strong>\r\n </button>\r\n <button\r\n class=\"editor-btn\"\r\n :class=\"{ 'is-active': isActive.heading({ level: 2 }) }\"\r\n @click=\"commands.heading({ level: 2 })\"\r\n >\r\n <i class=\"fas fa-heading\" /><strong>2</strong>\r\n </button>\r\n\r\n <button\r\n class=\"editor-btn\"\r\n :class=\"{ 'is-active': isActive.heading({ level: 3 }) }\"\r\n @click=\"commands.heading({ level: 3 })\"\r\n >\r\n <i class=\"fas fa-heading\" /><strong>3</strong>\r\n </button>\r\n <button\r\n class=\"editor-btn\"\r\n :class=\"{ 'is-active': isActive.bullet_list() }\"\r\n @click=\"commands.bullet_list\"\r\n >\r\n <i class=\"fas fa-list-ul\" />\r\n </button>\r\n <button\r\n class=\"editor-btn\"\r\n :class=\"{ 'is-active': isActive.ordered_list() }\"\r\n @click=\"commands.ordered_list\"\r\n >\r\n <i class=\"fas fa-list-ol\" />\r\n </button>\r\n <!-- <button\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tclass=\"editor-btn\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t:class=\"{ 'is-active': isActive.blockquote() }\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t@click=\"commands.blockquote()\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<i class=\"fas fa-quote-right\" />\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t</button> -->\r\n </div>\r\n </editor-menu-bar>\r\n <editor-content id=\"summary-editor\" :editor=\"summaryEditor\" class=\"el-textarea__inner editor-content\" />\r\n </div>\r\n </el-card>\r\n\r\n <el-card :body-style=\"{ padding: '10px' }\" style=\"margin-bottom: 5px; margin-left: 3px;\">\r\n <div class=\"clearfix editor-header\">\r\n <span style=\"font-size: 18px; font-weight: bold;\">\r\n Explanation: How to improve?\r\n </span>\r\n </div>\r\n <div>\r\n <editor-menu-bar :editor=\"explanationEditor\">\r\n <div slot-scope=\"{ commands, isActive }\" class=\"menubar\" style=\"margin-bottom: 5px; margin-top: 5px;\">\r\n <button\r\n class=\"editor-btn\"\r\n :class=\"{ 'is-active': isActive.bold() }\"\r\n type=\"button\"\r\n @click=\"commands.bold\"\r\n >\r\n <i class=\"fas fa-bold\" />\r\n </button>\r\n\r\n <button\r\n class=\"editor-btn\"\r\n :class=\"{ 'is-active': isActive.italic() }\"\r\n type=\"button\"\r\n @click=\"commands.italic\"\r\n >\r\n <i class=\"fas fa-italic\" />\r\n </button>\r\n\r\n <button\r\n class=\"editor-btn\"\r\n :class=\"{ 'is-active': isActive.strike() }\"\r\n @click=\"commands.strike\"\r\n >\r\n <i class=\"fas fa-strikethrough\" />\r\n </button>\r\n\r\n <button\r\n class=\"editor-btn\"\r\n :class=\"{ 'is-active': isActive.underline() }\"\r\n @click=\"commands.underline\"\r\n >\r\n <i class=\"fas fa-underline\" />\r\n </button>\r\n <button\r\n class=\"editor-btn\"\r\n :class=\"{ 'is-active': isActive.heading({ level: 1 }) }\"\r\n @click=\"commands.heading({ level: 1 })\"\r\n >\r\n <i class=\"fas fa-heading\" /><strong>1</strong>\r\n </button>\r\n <button\r\n class=\"editor-btn\"\r\n :class=\"{ 'is-active': isActive.heading({ level: 2 }) }\"\r\n @click=\"commands.heading({ level: 2 })\"\r\n >\r\n <i class=\"fas fa-heading\" /><strong>2</strong>\r\n </button>\r\n\r\n <button\r\n class=\"editor-btn\"\r\n :class=\"{ 'is-active': isActive.heading({ level: 3 }) }\"\r\n @click=\"commands.heading({ level: 3 })\"\r\n >\r\n <i class=\"fas fa-heading\" /><strong>3</strong>\r\n </button>\r\n <button\r\n class=\"editor-btn\"\r\n :class=\"{ 'is-active': isActive.bullet_list() }\"\r\n @click=\"commands.bullet_list\"\r\n >\r\n <i class=\"fas fa-list-ul\" />\r\n </button>\r\n <button\r\n class=\"editor-btn\"\r\n :class=\"{ 'is-active': isActive.ordered_list() }\"\r\n @click=\"commands.ordered_list\"\r\n >\r\n <i class=\"fas fa-list-ol\" />\r\n </button>\r\n <!-- <button\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tclass=\"editor-btn\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t:class=\"{ 'is-active': isActive.blockquote() }\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t@click=\"commands.blockquote()\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<i class=\"fas fa-quote-right\" />\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t</button> -->\r\n </div>\r\n </editor-menu-bar>\r\n <editor-content id=\"explanation-editor\" :editor=\"explanationEditor\" class=\"el-textarea__inner editor-content\" />\r\n </div>\r\n </el-card>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </rs-panes>\r\n </div>\r\n </div>\r\n</template>\r\n\r\n<script>\r\nimport * as cfService from '@/services/collective_feedback.service'\r\nimport * as cfIssuesService from '@/services/collective_feedback_issue.service'\r\nimport * as pdfService from '@/services/pdf.service'\r\nimport * as assignmentService from '@/services/assignment.service'\r\nimport * as submissionService from '@/services/submission.service'\r\nimport ResSplitPane from 'vue-resize-split-pane'\r\nimport { Editor, EditorContent, EditorMenuBar } from 'tiptap'\r\nimport {\r\n\tBlockquote,\r\n\tCodeBlock,\r\n\tHardBreak,\r\n\tHeading,\r\n\tImage,\r\n\tOrderedList,\r\n\tBulletList,\r\n\tListItem,\r\n\tTodoItem,\r\n\tTodoList,\r\n\tBold,\r\n\tCode,\r\n\tItalic,\r\n\tLink,\r\n\tTable,\r\n\tTableHeader,\r\n\tTableCell,\r\n\tTableRow,\r\n\tStrike,\r\n\tUnderline,\r\n\tHistory\r\n} from 'tiptap-extensions'\r\nimport { Notification } from 'element-ui'\r\nimport VueCropper from 'vue-cropperjs'\r\n// Handles UI and logics for the Collective Feedback Issue page.\r\nexport default {\r\n\tcomponents: {\r\n\t\tEditorMenuBar,\r\n\t\tEditorContent,\r\n\t\tVueCropper,\r\n\t\t'rs-panes': ResSplitPane\r\n\t},\r\n\tdata() {\r\n\t\treturn {\r\n\t\t\texampleEditor: null,\r\n\t\t\tsummaryEditor: null,\r\n\t\t\texplanationEditor: null,\r\n\t\t\tcategories: [\r\n\t\t\t\t{\r\n\t\t\t\t\tvalue: 1,\r\n\t\t\t\t\tlabel: 'Purpose'\r\n\t\t\t\t}, {\r\n\t\t\t\t\tvalue: 2,\r\n\t\t\t\t\tlabel: 'Audience'\r\n\t\t\t\t}, {\r\n\t\t\t\t\tvalue: 3,\r\n\t\t\t\t\tlabel: 'Visual Design'\r\n\t\t\t\t}, {\r\n\t\t\t\t\tvalue: 4,\r\n\t\t\t\t\tlabel: 'Document Design'\r\n\t\t\t\t}, {\r\n\t\t\t\t\tvalue: 5,\r\n\t\t\t\t\tlabel: 'Organization'\r\n\t\t\t\t}, {\r\n\t\t\t\t\tvalue: 6,\r\n\t\t\t\t\tlabel: 'Writing/Style'\r\n\t\t\t\t}, {\r\n\t\t\t\t\tvalue: 7,\r\n\t\t\t\t\tlabel: 'Genre/Content'\r\n\t\t\t\t}, {\r\n\t\t\t\t\tvalue: 8,\r\n\t\t\t\t\tlabel: 'Other'\r\n\t\t\t\t}\r\n\t\t\t],\r\n\t\t\trules: {\r\n\t\t\t\tTitle: [\r\n\t\t\t\t\t{ required: true, message: 'Please input Issue Name', trigger: 'blur' }\r\n\t\t\t\t],\r\n\t\t\t\tCategory: [\r\n\t\t\t\t\t{ required: true, message: 'Please select a Category', trigger: 'change' }\r\n\t\t\t\t] },\r\n\t\t\timgSrc: '',\r\n\t\t\tcropImageMsg: false,\r\n\t\t\tshowCanvas: false,\r\n\t\t\tshowPdf: true,\r\n\t\t\tcroppedImageTag: '',\r\n\t\t\tcroppedImageSrc: '',\r\n\t\t\trange: null,\r\n\t\t\tsel: null,\r\n\t\t\ttermCode: this.$store.state.enrollment.termCode,\r\n\t\t\torgCode: this.$store.state.enrollment.orgCode,\r\n\t\t\tclassCode: this.$store.state.enrollment.currentCourse.ClassCode,\r\n\t\t\tusername: this.$store.state.auth.user.UserName,\r\n\t\t\tcfId: this.$route.params.cfId,\r\n\t\t\tcurrentCF: null,\r\n\t\t\tcollectiveFeedbacks: null,\r\n\t\t\tissues: [],\r\n\t\t\tcurrentIssue: {\r\n\t\t\t\tCategory: null,\r\n\t\t\t\tTitle: '',\r\n\t\t\t\tDescription: '',\r\n\t\t\t\tExplanation: '',\r\n\t\t\t\tExamples: ''\r\n\t\t\t},\r\n\t\t\tissueId: null,\r\n\t\t\tassignmentId: null,\r\n\t\t\tstudentId: null,\r\n\t\t\treviewerId: null,\r\n\t\t\treviewerRole: this.$store.state.enrollment.userRole,\r\n\t\t\tassignments: [],\r\n\t\t\tdocId: null,\r\n\t\t\tcurrentAssignment: null,\r\n\t\t\tstudents: null,\r\n\t\t\tcurrentStudent: null,\r\n\t\t\tonTime: false,\r\n\t\t\tuploadedDate: null,\r\n\t\t\tdueDate: null,\r\n\t\t\tsubmissions: [],\r\n\t\t\tcurrentSubmission: null,\r\n\t\t\trubricCriteria: null,\r\n\t\t\tcriteriaFeedback: null,\r\n\t\t\treview: null,\r\n\t\t\tmyapi: null,\r\n\t\t\tpageNum: 1,\r\n\t\t\ttotalPageNumber: null,\r\n\t\t\tzoomValue: 140,\r\n\t\t\tprevBtnDisable: false,\r\n\t\t\tnextBtnDisable: false,\r\n\t\t\tprevGroupBtnDisable: false,\r\n\t\t\tnextGroupBtnDisable: false,\r\n\t\t\tteams: null,\r\n\t\t\tisGroupProject: false,\r\n\t\t\tgroups: [],\r\n\t\t\tcurrentGroup: null,\r\n\t\t\tgroupId: null,\r\n\t\t\treadOnly: false,\r\n\t\t\treviewType: null,\r\n\t\t\thasAddNew: false,\r\n\t\t\tstatusType: 'danger',\r\n\t\t\tsubmitTooltip: 'The issue is saved, but is not active.',\r\n\t\t\teventAdded: false\r\n \t}\r\n\t},\r\n\tmounted() {\r\n\t\tconst resizer = document.querySelector('.columnsres')\r\n\t\tresizer.addEventListener('mousedown', function(e) {\r\n\t\t\tdocument.querySelector('#resize_overlay').style.display = 'block'\r\n\t\t})\r\n\t\tdocument.addEventListener('mouseup', function(e) {\r\n\t\t\tdocument.querySelector('#resize_overlay').style.display = 'none'\r\n\t\t})\r\n\t},\r\n\tcreated() { // Get necessary information from query string\r\n\t\tthis.issueId = this.getUrlParameter('issueId')\r\n\t\tif (this.issueId) { this.hasAddNew = true }\r\n\t\tif (this.cfId != null) {\r\n\t\t\tthis.getCollectiveFeedback()\r\n\t\t}\r\n\t},\r\n\tmethods: {\r\n\t\t// @vuese\r\n\t\t// Setup image for cropping.\r\n\t\tcropImage() {\r\n\t\t\tif (this.myapi) {\r\n\t\t\t\tthis.cropImageMsg = true\r\n\t\t\t\tthis.showCanvas = true\r\n\t\t\t\tconst iframe = document.getElementById('PdfWebControl')\r\n\t\t\t\tconst innerDoc = iframe.contentDocument || iframe.contentWindow.document\r\n\t\t\t\tconst page = this.myapi.getPageViewed()\r\n\t\t\t\tconst pageNumber = page.getPageNumber()\r\n\t\t\t\tconst imgsArray = Array.from(innerDoc.images)\r\n\t\t\t\tconst images = imgsArray.filter(function(el) {\r\n\t\t\t\t\treturn el.src.includes('&pit=5')\r\n\t\t\t\t})\r\n\r\n\t\t\t\t// let images = innerDoc.images.filter(function(el){\r\n\t\t\t\t// \treturn el.src.includes(\"&pn=2&pit=5\");\r\n\t\t\t\t// });\r\n\t\t\t\t// let image = innerDoc.images[30 + pageNumber];\r\n\r\n\t\t\t\tconst image = images[pageNumber - 1]\r\n\t\t\t\tthis.imgSrc = image.src\r\n\t\t\t\tthis.$refs.cropper.replace(image.src)\r\n\t\t\t\tthis.showPdf = false\r\n\t\t\t}\r\n\t\t},\r\n\t\tcropperReady() {\r\n\t\t\tthis.$refs.cropper.clear()\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Store image after cropping ends.\r\n\t\tasync cropperCropEnd() {\r\n\t\t\t// let self =this;\r\n\t\t\tconst cropper = this.$refs.cropper\r\n\t\t\tconst imgSrc = await cropper.getCroppedCanvas().toDataURL()\r\n\r\n\t\t\t// Copy image image to clipboard\r\n\t\t\tconst imgWrapper = document.getElementById('copyable')\r\n\t\t\timgWrapper.style = 'display: block'\r\n\t\t\tconst thisImg = document.getElementById('crop-img')\r\n\t\t\tthisImg.setAttribute('src', imgSrc)\r\n\t\t\tthisImg.style = 'width: 100%;'\r\n\t\t\timgWrapper.setAttribute('contenteditable', true)\r\n\t\t\tthis.SelectText(imgWrapper)\r\n\r\n\t\t\t// Execute copy Command\r\n\t\t\tdocument.execCommand('copy')\r\n\r\n\t\t\t// Unselect the content\r\n\t\t\timgWrapper.style = 'display: none'\r\n\t\t\twindow.getSelection().removeAllRanges()\r\n\t\t\t// Make the container Div uneditable again\r\n\t\t\timgWrapper.setAttribute('contenteditable', false)\r\n\t\t\t// Success!!\r\n\t\t\tNotification.success({\r\n\t\t\t\tduration: 6000,\r\n\t\t\t\ttitle: 'Success',\r\n\t\t\t\tmessage: 'Image copied!'\r\n\t\t\t})\r\n\r\n\t\t\tthis.cropImageMsg = false\r\n\t\t\tthis.showCanvas = false\r\n\t\t\tthis.showPdf = true\r\n\t\t\tthis.myapi.setMode(this.myapi.Mode.SelectText)\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Select inner text of HTML element.\r\n\t\t// @arg The elment to be selected.\r\n\t\tSelectText(element) {\r\n\t\t\tconst doc = document\r\n\t\t\tif (doc.body.createTextRange) {\r\n\t\t\t\tconst range = document.body.createTextRange()\r\n\t\t\t\trange.moveToElementText(element)\r\n\t\t\t\trange.select()\r\n\t\t\t} else if (window.getSelection) {\r\n\t\t\t\tconst selection = window.getSelection()\r\n\t\t\t\tconst range = document.createRange()\r\n\t\t\t\trange.selectNodeContents(element)\r\n\t\t\t\tselection.removeAllRanges()\r\n\t\t\t\tselection.addRange(range)\r\n\t\t\t}\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Exit cropping mode.\r\n\t\tcloseCropMode() {\r\n\t\t\tthis.showCanvas = false\r\n\t\t\tthis.showPdf = true\r\n\t\t\tthis.cropImageMsg = false\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Get collective feedback by id.\r\n\t\tasync getCollectiveFeedback() {\r\n\t\t\tthis.currentCF = await cfService.getByIdWithIssues(this.cfId)\r\n\t\t\tif (this.currentCF != null) {\r\n\t\t\t\tthis.assignmentId = this.currentCF.AssignmentId\r\n\t\t\t\t// Set up collective feedback selection\r\n\t\t\t\tthis.setUpCollectiveFeedbackSelection()\r\n\t\t\t}\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Setup projects selection drop down.\r\n\t\tasync setUpAssignmentSelection() {\r\n\t\t\t// Get all assignments that have uploaded papers\r\n\t\t\tconst assignments = await assignmentService.getCollectiveFeedbackAssignments(this.orgCode, this.termCode,\r\n\t\t\t\tthis.classCode, this.username)\r\n\t\t\tif (assignments.length > 0) {\r\n\t\t\t\tthis.assignments = assignments\r\n\t\t\t\tconst that = this\r\n\t\t\t\tif (this.assignmentId) {\r\n\t\t\t\t\tthis.currentAssignment = assignments.find(function(el) {\r\n\t\t\t\t\t\treturn el.Id == that.assignmentId\r\n\t\t\t\t\t})\r\n\t\t\t\t} else {\r\n\t\t\t\t\tthis.currentAssignment = assignments[0]\r\n\t\t\t\t\tthis.assignmentId = this.currentAssignment.Id\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.setUpCollectiveFeedbackSelection()\r\n\t\t\t} else {\r\n\t\t\t\tNotification.error({\r\n\t\t\t\t\tduration: 6000,\r\n\t\t\t\t\ttitle: 'Error',\r\n\t\t\t\t\tmessage: 'No collective feedback found!'\r\n\t\t\t\t})\r\n\t\t\t\tdocument.getElementById('full_width_container').style.display = 'none'\r\n\t\t\t}\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Setup CF selection drop down.\r\n\t\tasync setUpCollectiveFeedbackSelection() {\r\n\t\t\tconst collectiveFeedbacks = await cfService.getAllCFByClass(this.orgCode, this.username, this.classCode, this.termCode)\r\n\t\t\tif (collectiveFeedbacks.length > 0) {\r\n\t\t\t\tthis.collectiveFeedbacks = collectiveFeedbacks\r\n\t\t\t\tif (this.cfId == null) {\r\n\t\t\t\t\tthis.currentCF = collectiveFeedbacks[0]\r\n\t\t\t\t\tthis.cfId = this.currentCF.Id\r\n\t\t\t\t}\r\n\t\t\t\t// Set up issues selection\r\n\t\t\t\tawait this.setUpIssueSelection()\r\n\r\n\t\t\t\tconst thisAssignment = await assignmentService.getAssignmentById(this.assignmentId)\r\n\t\t\t\tif (thisAssignment.IsGroupAssignment) {\r\n\t\t\t\t\tthis.isGroupProject = true\r\n\t\t\t\t\tawait this.setUpGroupSelection()\r\n\t\t\t\t} else {\r\n\t\t\t\t\tawait this.setUpStudentSelection()\r\n\t\t\t\t\tthis.isGroupProject = false\r\n\t\t\t\t}\r\n\t\t\t\t// Set up document, and issue template\r\n\t\t\t await this.displayDocumentAndIssue()\r\n\t\t\t} else {\r\n\t\t\t\tNotification.error({\r\n\t\t\t\t\tduration: 6000,\r\n\t\t\t\t\ttitle: 'Error',\r\n\t\t\t\t\tmessage: 'No collective feedback found!'\r\n\t\t\t\t})\r\n\t\t\t\tdocument.getElementById('full_width_container').style.display = 'none'\r\n\t\t\t}\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Setup issue selection dropdown.\r\n\t\tsetUpIssueSelection() {\r\n\t\t\tconst issues = this.currentCF.CollectiveFeedbackIssues\r\n\t\t\tif (issues.length > 0) {\r\n\t\t\t\tthis.issues = issues\r\n\t\t\t\tconst that = this\r\n\t\t\t\tif (this.issueId != null && this.issueId != undefined) {\r\n\t\t\t\t\tthis.hasAddNew = true\r\n\t\t\t\t\tif (this.issueId == 0) {\r\n\t\t\t\t\t\tthis.currentIssue = issues[0]\r\n\t\t\t\t\t\tthis.issueId = this.currentIssue.Id\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tthis.currentIssue = issues.find(function(el) {\r\n\t\t\t\t\t\t\treturn el.Id == that.issueId\r\n\t\t\t\t\t\t})\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif (this.currentIssue && this.currentIssue.ShowToStudent) {\r\n\t\t\t\t\t\tthis.statusType = 'primary'\r\n\t\t\t\t\t\tthis.submitTooltip = 'The issue is active.'\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tdocument.getElementById('full_width_container').style.display = 'none'\r\n\t\t\t}\r\n\r\n\t\t\tconst issueName = document.getElementById('issue-name')\r\n\t\t\tconst that = this\r\n\t\t\tissueName.addEventListener('focus', function(e) {\r\n\t\t\t\tif (that.currentIssue.Title == 'Unnamed Issue (Auto Saved)') { that.currentIssue.Title = '' }\r\n\t\t\t})\r\n\t\t\tthis.setUpEditor()\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Setup editors.\r\n\t\tsetUpEditor() {\r\n\t\t\tconst that = this\r\n\t\t\tthis.exampleEditor = new Editor({\r\n\t\t\t\textensions: [\r\n\t\t\t\t\tnew Blockquote(),\r\n\t\t\t\t\tnew CodeBlock(),\r\n\t\t\t\t\tnew HardBreak(),\r\n\t\t\t\t\tnew Heading({ levels: [1, 2, 3] }),\r\n\t\t\t\t\tnew BulletList(),\r\n\t\t\t\t\tnew OrderedList(),\r\n\t\t\t\t\tnew Image(),\r\n\t\t\t\t\tnew ListItem(),\r\n\t\t\t\t\tnew TodoItem(),\r\n\t\t\t\t\tnew TodoList(),\r\n\t\t\t\t\tnew Bold(),\r\n\t\t\t\t\tnew Code(),\r\n\t\t\t\t\tnew Italic(),\r\n\t\t\t\t\tnew Link(),\r\n\t\t\t\t\tnew Strike(),\r\n\t\t\t\t\tnew Underline(),\r\n\t\t\t\t\tnew History(),\r\n\t\t\t\t\tnew Table({\r\n\t\t\t\t\t\tresizable: true\r\n\t\t\t\t\t}),\r\n\t\t\t\t\tnew TableHeader(),\r\n\t\t\t\t\tnew TableCell(),\r\n\t\t\t\t\tnew TableRow()\r\n\t\t\t\t],\r\n\t\t\t\tcontent: that.currentIssue.Examples,\r\n\t\t\t\tonUpdate: (state) => {\r\n\t\t\t\t\tthat.currentIssue.Examples = state.getHTML()\r\n\t\t\t\t}\r\n\t\t\t})\r\n\t\t\tthis.summaryEditor = new Editor({\r\n\t\t\t\textensions: [\r\n\t\t\t\t\tnew Blockquote(),\r\n\t\t\t\t\tnew CodeBlock(),\r\n\t\t\t\t\tnew HardBreak(),\r\n\t\t\t\t\tnew Heading({ levels: [1, 2, 3] }),\r\n\t\t\t\t\tnew BulletList(),\r\n\t\t\t\t\tnew OrderedList(),\r\n\t\t\t\t\tnew Image(),\r\n\t\t\t\t\tnew ListItem(),\r\n\t\t\t\t\tnew TodoItem(),\r\n\t\t\t\t\tnew TodoList(),\r\n\t\t\t\t\tnew Bold(),\r\n\t\t\t\t\tnew Code(),\r\n\t\t\t\t\tnew Italic(),\r\n\t\t\t\t\tnew Link(),\r\n\t\t\t\t\tnew Strike(),\r\n\t\t\t\t\tnew Underline(),\r\n\t\t\t\t\tnew History(),\r\n\t\t\t\t\tnew Table({\r\n\t\t\t\t\t\tresizable: true\r\n\t\t\t\t\t}),\r\n\t\t\t\t\tnew TableHeader(),\r\n\t\t\t\t\tnew TableCell(),\r\n\t\t\t\t\tnew TableRow()\r\n\t\t\t\t],\r\n\t\t\t\tcontent: that.currentIssue.Description,\r\n\t\t\t\tonUpdate: (state) => {\r\n\t\t\t\t\tthat.currentIssue.Description = state.getHTML()\r\n\t\t\t\t}\r\n\t\t\t})\r\n\t\t\tthis.explanationEditor = new Editor({\r\n\t\t\t\textensions: [\r\n\t\t\t\t\tnew Blockquote(),\r\n\t\t\t\t\tnew CodeBlock(),\r\n\t\t\t\t\tnew HardBreak(),\r\n\t\t\t\t\tnew Heading({ levels: [1, 2, 3] }),\r\n\t\t\t\t\tnew BulletList(),\r\n\t\t\t\t\tnew OrderedList(),\r\n\t\t\t\t\tnew Image(),\r\n\t\t\t\t\tnew ListItem(),\r\n\t\t\t\t\tnew TodoItem(),\r\n\t\t\t\t\tnew TodoList(),\r\n\t\t\t\t\tnew Bold(),\r\n\t\t\t\t\tnew Code(),\r\n\t\t\t\t\tnew Italic(),\r\n\t\t\t\t\tnew Link(),\r\n\t\t\t\t\tnew Strike(),\r\n\t\t\t\t\tnew Underline(),\r\n\t\t\t\t\tnew History(),\r\n\t\t\t\t\tnew Table({\r\n\t\t\t\t\t\tresizable: true\r\n\t\t\t\t\t}),\r\n\t\t\t\t\tnew TableHeader(),\r\n\t\t\t\t\tnew TableCell(),\r\n\t\t\t\t\tnew TableRow()\r\n\t\t\t\t],\r\n\t\t\t\tcontent: that.currentIssue.Explanation,\r\n\t\t\t\tonUpdate: (state) => {\r\n\t\t\t\t\tthat.currentIssue.Explanation = state.getHTML()\r\n\t\t\t\t}\r\n\t\t\t})\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Setup group selection drop down.\r\n\t\tasync setUpGroupSelection() {\r\n\t\t\tconst that = this\r\n\t\t\tconst groups = await submissionService.getGroupSubmissionsStatus(this.termCode, this.orgCode, this.classCode, this.assignmentId)\r\n\t\t\tif (groups && groups.length > 0) {\r\n\t\t\t\tconst submittedGroups = groups.filter(function(el) {\r\n\t\t\t\t\treturn el.SubmissionStatus == 'Submitted'\r\n\t\t\t\t})\r\n\t\t\t\tif (submittedGroups && submittedGroups.length > 0) {\r\n\t\t\t\t\tthis.groups = submittedGroups\r\n\t\t\t\t\tif (this.groupId && !isNaN(this.groupId)) {\r\n\t\t\t\t\t\tthis.currentGroup = submittedGroups.find(function(el) {\r\n\t\t\t\t\t\t\treturn el.GroupId == that.groupId\r\n\t\t\t\t\t\t})\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tthis.currentGroup = submittedGroups[0]\r\n\t\t\t\t\t\tthis.groupId = this.currentGroup.GroupId\r\n\t\t\t\t\t}\r\n\t\t\t\t\t// Set up previous and next buttons\r\n\t\t\t\t\tconst thisIndex = this.groups.findIndex(x => x.GroupId == this.currentGroup.GroupId)\r\n\t\t\t\t\tif (thisIndex == 0) {\r\n\t\t\t\t\t\tthis.prevGroupBtnDisable = true\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif (thisIndex == this.groups.length - 1) {\r\n\t\t\t\t\t\tthis.nextGroupBtnDisable = true\r\n\t\t\t\t\t}\r\n\t\t\t\t\treturn true\r\n\t\t\t\t} else {\r\n\t\t\t\t\tdocument.getElementById('full_width_container').style.display = 'none'\r\n\t\t\t\t\tNotification.error({\r\n\t\t\t\t\t\tduration: 6000,\r\n\t\t\t\t\t\ttitle: 'Error',\r\n\t\t\t\t\t\tmessage: 'No group found!'\r\n\t\t\t\t\t})\r\n\t\t\t\t\treturn false\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tdocument.getElementById('full_width_container').style.display = 'none'\r\n\t\t\t\tNotification.error({\r\n\t\t\t\t\tduration: 6000,\r\n\t\t\t\t\ttitle: 'Error',\r\n\t\t\t\t\tmessage: 'No group found!'\r\n\t\t\t\t})\r\n\t\t\t}\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Setup students selection drop down.\r\n\t\tasync setUpStudentSelection() {\r\n\t\t\t// Get all students who have uploaded paper for this assignment\r\n\t\t\tconst uploadedStudents = await submissionService.getUploadedStudents(this.termCode,\r\n\t\t\t\tthis.orgCode, this.classCode, this.assignmentId)\r\n\t\t\tconst that = this\r\n\t\t\tif (uploadedStudents.length > 0) {\r\n\t\t\t\tthis.students = uploadedStudents\r\n\t\t\t\tif (this.studentId) {\r\n\t\t\t\t\tconst thisReviewee = uploadedStudents.find(function(el) {\r\n\t\t\t\t\t\treturn el.UserName == that.studentId\r\n\t\t\t\t\t})\r\n\t\t\t\t\tif (thisReviewee != undefined) { this.currentStudent = thisReviewee } else {\r\n\t\t\t\t\t\tthis.currentStudent = uploadedStudents[0]\r\n\t\t\t\t\t\tthis.studentId = uploadedStudents[0].UserName\r\n\t\t\t\t\t}\r\n\t\t\t\t} else {\r\n\t\t\t\t\tthis.currentStudent = uploadedStudents[0]\r\n\t\t\t\t\tthis.studentId = uploadedStudents[0].UserName\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// Set up previous and next buttons\r\n\t\t\t\tconst thisIndex = this.students.findIndex(x => x.UserName == this.currentStudent.UserName)\r\n\t\t\t\tif (thisIndex == 0) {\r\n\t\t\t\t\tthis.prevBtnDisable = true\r\n\t\t\t\t}\r\n\t\t\t\tif (thisIndex == this.students.length - 1) {\r\n\t\t\t\t\tthis.nextBtnDisable = true\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tdocument.getElementById('full_width_container').style.display = 'none'\r\n\t\t\t\tNotification.error({\r\n\t\t\t\t\tduration: 6000,\r\n\t\t\t\t\ttitle: 'Error',\r\n\t\t\t\t\tmessage: 'No submission found!'\r\n\t\t\t\t})\r\n\t\t\t}\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Display document and issue.\r\n\t\tasync displayDocumentAndIssue() {\r\n\t\t\tlet submissions = []\r\n\t\t\tif (this.isGroupProject) {\r\n\t\t\t\tsubmissions = await submissionService.getStudentUpload(this.termCode, this.orgCode,\r\n\t\t\t\t\tthis.classCode, this.groupId, this.assignmentId)\r\n\t\t\t} else {\r\n\t\t\t\tsubmissions = await submissionService.getStudentUpload(this.termCode, this.orgCode,\r\n\t\t\t\t\tthis.classCode, this.studentId, this.assignmentId)\r\n\t\t\t}\r\n\t\t\tif (submissions.length > 0) {\r\n\t\t\t\t// Display the document\r\n\t\t\t\tawait this.displayDocument(submissions[0].DocId)\r\n\t\t\t} else {\r\n\t\t\t\tdocument.getElementById('left_side').style.display = 'none'\r\n\t\t\t\tNotification.error({\r\n\t\t\t\t\tduration: 6000,\r\n\t\t\t\t\ttitle: 'Error',\r\n\t\t\t\t\tmessage: 'No submission found!'\r\n\t\t\t\t})\r\n\t\t\t}\r\n\t\t\tdocument.getElementById('full_width_container').style.display = 'block'\r\n\t\t\t// Display issue panel even if there is no submission\r\n\t\t\tawait this.displayIssue()\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Display document by document id.\r\n\t\t// @arg The document id.\r\n\t\tasync displayDocument(docId) {\r\n\t\t\tif (docId) {\r\n\t\t\t\tthis.docId = docId\r\n\t\t\t\tawait pdfService.getPdf(docId)\r\n\t\t\t\t\t.then(pdf => {\r\n\t\t\t\t\t\t// Display the pdf\r\n\t\t\t\t\t\tconst pdfDocument = document.querySelector('#pdfDocument')\r\n\t\t\t\t\t\tpdfDocument.innerHTML = pdf\r\n\t\t\t\t\t\t// Setup the doc after being loaded\r\n\t\t\t\t\t\tconst that = this\r\n\t\t\t\t\t\tdocument.getElementById('PdfWebControl').onload = function() {\r\n\t\t\t\t\t\t\tthat.PdfAttachListeners()\r\n\t\t\t\t\t\t\tsetTimeout(function() {\r\n\t\t\t\t\t\t\t\tthat.totalPageNumber = that.myapi.getPageCount()\r\n\t\t\t\t\t\t\t\tthat.myapi.setMode(that.myapi.Mode.SelectText)\r\n\t\t\t\t\t\t\t}, 500)\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}).catch((error) => {\r\n\t\t\t\t\t\tconsole.log(error)\r\n\t\t\t\t\t})\r\n\t\t\t}\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Display the selected CF issue.\r\n\t\tasync displayIssue() {\r\n\t\t\tconst that = this\r\n\t\t\t// Setup auto save for comment boxes\r\n\t\t\tif (!this.eventAdded) {\r\n\t\t\t\tconst exampleEditor = document.querySelector('#example-editor')\r\n\t\t\t\texampleEditor.addEventListener('focusout', (event) => {\r\n\t\t\t\t\tthat.saveIssue()\r\n\t\t\t\t})\r\n\r\n\t\t\t\tconst summaryEditor = document.querySelector('#summary-editor')\r\n\t\t\t\tsummaryEditor.addEventListener('focusout', (event) => {\r\n\t\t\t\t\tthat.saveIssue()\r\n\t\t\t\t})\r\n\r\n\t\t\t\tconst explanationEditor = document.querySelector('#explanation-editor')\r\n\t\t\t\texplanationEditor.addEventListener('focusout', (event) => {\r\n\t\t\t\t\tthat.saveIssue()\r\n\t\t\t\t})\r\n\r\n\t\t\t\tconst issueName = document.querySelector('#issue-name')\r\n\t\t\t\tissueName.addEventListener('focusout', (event) => {\r\n\t\t\t\t\tthat.saveIssue()\r\n\t\t\t\t})\r\n\t\t\t\tthis.eventAdded = true\r\n\t\t\t}\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Add new or update a CF issue.\r\n\t\tsaveIssue() {\r\n\t\t\tif (this.issueId) {\r\n\t\t\t\tthis.updateIssue()\r\n\t\t\t} else {\r\n\t\t\t\tthis.createNewIssue()\r\n\t\t\t}\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Add new issue.\r\n\t\tasync createNewIssue() {\r\n\t\t\tconst newIssue = {\r\n\t\t\t\tCollectiveFeedbackId: this.cfId,\r\n\t\t\t\tCategory: this.currentIssue.Category == null ? 8 : this.currentIssue.Category,\r\n\t\t\t\tTitle: this.currentIssue.Title == '' ? 'Unnamed Issue (Auto Saved)' : this.currentIssue.Title,\r\n\t\t\t\tDescription: this.currentIssue.Description,\r\n\t\t\t\tExplanation: this.currentIssue.Explanation,\r\n\t\t\t\tExamples: this.currentIssue.Examples,\r\n\t\t\t\tCreatedTime: this.getlastActivityDate(),\r\n\t\t\t\tUpdatedTime: this.getlastActivityDate(),\r\n\t\t\t\tSortOrder: 0,\r\n\t\t\t\tShowToStudent: 0,\r\n\t\t\t\tIsActive: 1\r\n\t\t\t}\r\n\t\t\tthis.currentIssue = await cfIssuesService.postCollectiveFeedbackIssue(newIssue)\r\n\t\t\tthis.issueId = this.currentIssue.Id\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Update an auto saved issue.\r\n\t\tasync updateIssue() {\r\n\t\t\tthis.currentIssue.UpdatedTime = this.getlastActivityDate()\r\n\t\t\tif (this.currentIssue.Title == '') { this.currentIssue.Title = 'Unnamed Issue (Auto Saved)' }\r\n\t\t\tawait cfIssuesService.putCollectiveFeedbackIssue(this.currentIssue)\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Update an issue.\r\n\t\tasync submitIssue() {\r\n\t\t\tif (this.issueId) {\r\n\t\t\t\tthis.currentIssue.UpdatedTime = this.getlastActivityDate()\r\n\t\t\t\tthis.currentIssue.ShowToStudent = 1\r\n\t\t\t\tawait cfIssuesService.putCollectiveFeedbackIssue(this.currentIssue)\r\n\t\t\t\tthis.issues.push(this.currentIssue)\r\n\t\t\t\tthis.hasAddNew = true\r\n\t\t\t\tthis.statusType = 'primary'\r\n\t\t\t\tthis.submitTooltip = 'The issue is active.'\r\n\t\t\t\tthis.$router.push('/collective_feedback/' + this.cfId + '/issue?issueId=' + this.issueId)\r\n\t\t\t}\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Handles logics when a project is selected.\r\n\t\tasync onAssignmentChange() {\r\n\t\t\tthis.pageNum = 1\r\n\t\t\tthis.emptyCurrentIssue()\r\n\t\t\tthis.assignmentId = this.currentAssignment.Id\r\n\t\t\tthis.cfId = null\r\n\t\t\tthis.currentCF = null\r\n\t\t\tthis.issueId = 0\r\n\t\t\tthis.collectiveFeedbacks = null\r\n\t\t\tthis.issues = null\r\n\t\t\tthis.students = null\r\n\t\t\tthis.studentId = null\r\n\t\t\tthis.groupId = null\r\n\t\t\tthis.exampleEditor.destroy()\r\n\t\t\tthis.summaryEditor.destroy()\r\n\t\t\tthis.explanationEditor.destroy()\r\n\t\t\tawait this.setUpCollectiveFeedbackSelection()\r\n\t\t\tif (this.issueId) { this.$router.push('/collective_feedback/' + this.cfId + '/issue?issueId=' + this.issueId) } else {\r\n\t\t\t\tthis.issueId = null\r\n\t\t\t\tthis.$router.push('/collective_feedback/' + this.cfId + '/issue')\r\n\t\t\t}\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Handles logics when a CF is selected.\r\n\t\tasync onCFChange() {\r\n\t\t\tthis.pageNum = 1\r\n\t\t\tthis.emptyCurrentIssue()\r\n\t\t\tthis.cfId = this.currentCF.Id\r\n\t\t\tthis.issueId = 0\r\n\t\t\tthis.issues = null\r\n\t\t\tthis.students = null\r\n\t\t\tthis.studentId = null\r\n\t\t\tthis.groups = null\r\n\t\t\tthis.currentGroup = null\r\n\t\t\tthis.groupId = null\r\n\t\t\tthis.exampleEditor.destroy()\r\n\t\t\tthis.summaryEditor.destroy()\r\n\t\t\tthis.explanationEditor.destroy()\r\n\t\t\tthis.assignmentId = this.currentCF.AssignmentId\r\n\t\t\t// await this.setUpIssueSelection();\r\n\t\t\t// await this.displayDocumentAndIssue();\r\n\t\t\tawait this.setUpCollectiveFeedbackSelection()\r\n\r\n\t\t\tif (this.issueId) { this.$router.push('/collective_feedback/' + this.cfId + '/issue?issueId=' + this.issueId) } else {\r\n\t\t\t\tthis.issueId = null\r\n\t\t\t\tthis.$router.push('/collective_feedback/' + this.cfId + '/issue')\r\n\t\t\t}\r\n\t\t},\r\n\t\temptyCurrentIssue() {\r\n\t\t\tthis.currentIssue = {\r\n\t\t\t\tCategory: null,\r\n\t\t\t\tTitle: '',\r\n\t\t\t\tDescription: '',\r\n\t\t\t\tExplanation: '',\r\n\t\t\t\tExamples: ''\r\n\t\t\t}\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Handles logics when a student is selected.\r\n\t\tasync onStudentChange() {\r\n\t\t\tthis.pageNum = 1\r\n\t\t\tthis.studentId = this.currentStudent.UserName\r\n\t\t\tawait this.displayDocumentAndIssue()\r\n\r\n\t\t\tconst thisIndex = this.students.findIndex(x => x.UserName == this.currentStudent.UserName)\r\n\t\t\tif (thisIndex == 0) {\r\n\t\t\t\tthis.prevBtnDisable = true\r\n\t\t\t\tif (this.students.length > 1 && this.nextBtnDisable == true) { this.nextBtnDisable = false }\r\n\t\t\t}\r\n\t\t\tif (thisIndex == this.students.length - 1) {\r\n\t\t\t\tthis.nextBtnDisable = true\r\n\t\t\t\tif (this.students.length > 1 && this.prevBtnDisable == true) { this.prevBtnDisable = false }\r\n\t\t\t}\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Handles logics when the previous student arrow is clicked.\r\n\t\tasync previousStudent() {\r\n\t\t\tconst thisIndex = this.students.findIndex(x => x.UserName == this.currentStudent.UserName)\r\n\t\t\tif (thisIndex == 0) {\r\n\t\t\t\tthis.prevBtnDisable = true\r\n\t\t\t} else {\r\n\t\t\t\tif (this.students.length > 1) { this.nextBtnDisable = false }\r\n\t\t\t\tthis.currentStudent = this.students[thisIndex - 1]\r\n\t\t\t\tthis.pageNum = 1\r\n\t\t\t\tthis.studentId = this.currentStudent.UserName\r\n\r\n\t\t\t\tthis.prevBtnDisable = true\r\n\t\t\t\tawait this.displayDocumentAndIssue()\r\n\t\t\t\tthis.prevBtnDisable = false\r\n\t\t\t}\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Handles logics when the next student arrow is clicked.\r\n\t\tasync nextStudent() {\r\n\t\t\tconst thisIndex = this.students.findIndex(x => x.UserName == this.currentStudent.UserName)\r\n\t\t\tif (thisIndex == this.students.length - 1) {\r\n\t\t\t\tthis.nextBtnDisable = true\r\n\t\t\t} else {\r\n\t\t\t\tif (this.students.length > 1) { this.prevBtnDisable = false }\r\n\t\t\t\tthis.currentStudent = this.students[thisIndex + 1]\r\n\t\t\t\tthis.pageNum = 1\r\n\t\t\t\tthis.studentId = this.currentStudent.UserName\r\n\t\t\t\tthis.nextBtnDisable = true\r\n\t\t\t\tawait this.displayDocumentAndIssue()\r\n\t\t\t\tthis.nextBtnDisable = false\r\n\t\t\t}\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Handles logics when a group is selected.\r\n\t\tonGroupChange() {\r\n\t\t\tthis.prevBtnDisable = false\r\n\t\t\tthis.nextBtnDisable = false\r\n\t\t\tthis.pageNum = 1\r\n\t\t\tthis.submissions = []\r\n\t\t\tthis.currentSubmission = null\r\n\t\t\tthis.groupId = this.currentGroup.GroupId\r\n\t\t\tthis.rubricCriteria = null\r\n\t\t\tconst thisIndex = this.groups.findIndex(x => x.GroupId == this.currentGroup.GroupId)\r\n\t\t\tif (thisIndex == 0) {\r\n\t\t\t\tthis.prevGroupBtnDisable = true\r\n\t\t\t\tif (this.groups.length > 1 && this.nextGroupBtnDisable == true) { this.nextGroupBtnDisable = false }\r\n\t\t\t}\r\n\t\t\tif (thisIndex == this.groups.length - 1) {\r\n\t\t\t\tthis.nextGroupBtnDisable = true\r\n\t\t\t\tif (this.groups.length > 1 && this.prevGroupBtnDisable == true) { this.prevGroupBtnDisable = false }\r\n\t\t\t}\r\n\r\n\t\t\tthis.displayDocumentAndIssue()\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Handles logics when the previous group arrow is clicked.\r\n\t\tasync previousGroup() {\r\n\t\t\tconst thisIndex = this.groups.findIndex(x => x.GroupId == this.currentGroup.GroupId)\r\n\t\t\tif (thisIndex - 1 == 0) {\r\n\t\t\t\tthis.prevGroupBtnDisable = true\r\n\t\t\t}\r\n\t\t\tif (this.groups.length > 1) { this.nextGroupBtnDisable = false }\r\n\t\t\tthis.currentGroup = this.groups[thisIndex - 1]\r\n\t\t\tthis.pageNum = 1\r\n\t\t\tthis.submissions = []\r\n\t\t\tthis.currentSubmission = null\r\n\t\t\tthis.groupId = this.currentGroup.GroupId\r\n\t\t\tthis.rubricCriteria = null\r\n\t\t\tthis.prevGroupBtnDisable = true\r\n\t\t\tawait this.displayDocumentAndIssue()\r\n\t\t\tif (thisIndex - 1 != 0) { this.prevGroupBtnDisable = false }\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Handles logics when the next group arrow is clicked.\r\n\t\tasync nextGroup() {\r\n\t\t\tconst thisIndex = this.groups.findIndex(x => x.GroupId == this.currentGroup.GroupId)\r\n\t\t\tif (thisIndex == this.groups.length - 2) {\r\n\t\t\t\tthis.nextGroupBtnDisable = true\r\n\t\t\t}\r\n\t\t\tif (this.groups.length > 1) { this.prevGroupBtnDisable = false }\r\n\t\t\tthis.currentGroup = this.groups[thisIndex + 1]\r\n\t\t\tthis.pageNum = 1\r\n\t\t\tthis.submissions = []\r\n\t\t\tthis.currentSubmission = null\r\n\t\t\tthis.groupId = this.currentGroup.GroupId\r\n\t\t\tthis.rubricCriteria = null\r\n\t\t\tthis.nextGroupBtnDisable = true\r\n\t\t\tawait this.displayDocumentAndIssue()\r\n\t\t\tif (thisIndex != this.groups.length - 2) { this.nextGroupBtnDisable = false }\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Handles logics when an issue is selected.\r\n\t\tasync onIssueChange() {\r\n\t\t\tthis.pageNum = 1\r\n\t\t\tthis.issueId = this.currentIssue.Id\r\n\t\t\tthis.exampleEditor.destroy()\r\n\t\t\tthis.summaryEditor.destroy()\r\n\t\t\tthis.explanationEditor.destroy()\r\n\r\n\t\t\tawait this.setUpIssueSelection()\r\n\r\n\t\t\t// Set up document, and issue template\r\n\t\t\tawait this.displayDocumentAndIssue()\r\n\r\n\t\t\tif (this.issueId) { this.$router.push('/collective_feedback/' + this.cfId + '/issue?issueId=' + this.issueId) } else {\r\n\t\t\t\tthis.issueId = null\r\n\t\t\t\tthis.$router.push('/collective_feedback/' + this.cfId + '/issue')\r\n\t\t\t}\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Handles logics when Add new issue button is clicked.\r\n\t\tasync addNewIssue() {\r\n\t\t\tthis.hasAddNew = false\r\n\t\t\tthis.pageNum = 1\r\n\t\t\tthis.emptyCurrentIssue()\r\n\t\t\tthis.issueId = null\r\n\t\t\tthis.exampleEditor.destroy()\r\n\t\t\tthis.summaryEditor.destroy()\r\n\t\t\tthis.explanationEditor.destroy()\r\n\r\n\t\t\tawait this.setUpIssueSelection()\r\n\r\n\t\t\t// Set up document, and issue template\r\n\t\t\tawait this.displayDocumentAndIssue()\r\n\t\t\tthis.$router.push('/collective_feedback/' + this.cfId + '/issue')\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Configures Rad PDf for displaying the document.\r\n\t\tPdfAttachListeners() {\r\n\t\t\tconst id = 'PdfWebControl'\r\n\t\t\t// eslint-disable-next-line no-undef\r\n\t\t\tthis.myapi = new PdfWebControlApi(id)\r\n\t\t\tthis.myapi.addEventListener('modeChanged', function(evt) {\r\n\t\t\t\tevt.byLine = true\r\n\t\t\t})\r\n\t\t\tconst that = this\r\n\t\t\tthis.myapi.addEventListener('viewChanged', function(evt) {\r\n\t\t\t\tthat.pageNum = that.myapi.getPageViewed().getPageNumber()\r\n\t\t\t})\r\n\r\n\t\t\tthis.myapi.addEventListener('objectAdded', function(evt) {\r\n\t\t\t\tif (evt.obj.getType() == 154) { // Highlight annotation\r\n\t\t\t\t\tconst props = evt.obj.getProperties()\r\n\t\t\t\t\tconst popup = evt.obj.getPopup()\r\n\r\n\t\t\t\t\tevt.obj.setProperties({\r\n\t\t\t\t\t\t'customData': evt.textSelected\r\n\t\t\t\t\t})\r\n\r\n\t\t\t\t\tpopup.setProperties(\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tauthor: 'RAD PDF',\r\n\t\t\t\t\t\t\tsubject: 'In-text Comment',\r\n\t\t\t\t\t\t\ttop: props['top'] - 60,\r\n\t\t\t\t\t\t\tleft: props['left'] - 5,\r\n\t\t\t\t\t\t\theight: 60\r\n\t\t\t\t\t\t})\r\n\r\n\t\t\t\t\tthat.myapi.setMode(that.myapi.Mode.None)\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (evt.obj.getType() == 100) {\r\n\t\t\t\t\tthat.myapi.setMode(that.myapi.Mode.None)\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (evt.obj.getType() == 101) {\r\n\t\t\t\t\tthat.myapi.setMode(that.myapi.Mode.None)\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (evt.obj.getType() == that.myapi.ObjectType.StrikeoutAnnotation) {\r\n\t\t\t\t\tthat.myapi.setMode(that.myapi.Mode.None)\r\n\t\t\t\t}\r\n\t\t\t\tif (evt.obj.getType() == that.myapi.ObjectType.TextAnnotation) {\r\n\t\t\t\t\tthat.myapi.setMode(that.myapi.Mode.None)\r\n\t\t\t\t}\r\n\t\t\t})\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Handles logics when the page number is changed.\r\n\t\tchangePage() {\r\n\t\t\tthis.myapi.setView({ 'page': this.pageNum })\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Handles logics when the zoom out button is clicked.\r\n\t\tzoomOut() {\r\n\t\t\tif (this.myapi) {\r\n\t\t\t\tif (this.zoomValue > 40) { this.myapi.setView({ 'zoom': this.zoomValue -= 20 }) }\r\n\t\t\t}\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Handles logics when the zoom in button is clicked.\r\n\t\tzoomIn() {\r\n\t\t\tif (this.myapi) {\r\n\t\t\t\tif (this.zoomValue < 200 && this.zoomValue > 20) { this.myapi.setView({ 'zoom': this.zoomValue += 20 }) }\r\n\t\t\t}\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Handles logics when the zoom fit width button is clicked.\r\n\t\tzoomFitWidth() {\r\n\t\t\t// if (this.myapi) {\r\n\t\t\t// \tthis.zoomValue = 140;\r\n\t\t\t// \tthis.myapi.setView({ 'zoom': -1 });\r\n\t\t\t// }\r\n\t\t\tif (this.myapi) {\r\n\t\t\t\tthis.zoomValue = 140\r\n\t\t\t\tthis.myapi.setView({ 'zoom': -3 })\r\n\t\t\t}\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Handles logics when the zoom fit all button is clicked.\r\n\t\tzoomFitAll() {\r\n\t\t\tif (this.myapi) {\r\n\t\t\t\tthis.zoomValue = 140\r\n\t\t\t\tthis.myapi.setView({ 'zoom': -3 })\r\n\t\t\t}\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Handles logics when the download button is clicked.\r\n\t\tasync downloadPdf() {\r\n\t\t\tconst docId = this.docId\r\n\t\t\tconst payload = new URLSearchParams()\r\n\t\t\tpayload.append('UserId', this.username)\r\n\t\t\tpayload.append('DocId', docId)\r\n\t\t\t// get download data\r\n\t\t\tconst data = await pdfService.getDownloadData(payload)\r\n\t\t\tif (data) {\r\n\t\t\t\tconst arrayBuffer = this.base64ToArrayBuffer(data.DownloadData)\r\n\t\t\t\tconst blob = new Blob([arrayBuffer], { type: 'application/pdf' })\r\n\t\t\t\tconst link = document.createElement('a')\r\n\t\t\t\tlink.href = window.URL.createObjectURL(blob)\r\n\t\t\t\tlink.download = data.DocumentName\r\n\t\t\t\tdocument.body.appendChild(link)\r\n\t\t\t\tlink.click()\r\n\t\t\t\tlink.remove()\r\n\t\t\t} else {\r\n\t\t\t\tNotification.error({\r\n\t\t\t\t\tduration: 6000,\r\n\t\t\t\t\ttitle: 'Error',\r\n\t\t\t\t\tmessage: 'Paper cannot be found.'\r\n\t\t\t\t})\r\n\t\t\t}\r\n\t\t},\r\n\t\tbase64ToArrayBuffer(base64) {\r\n\t\t\tconst binaryString = window.atob(base64)\r\n\t\t\tconst binaryLen = binaryString.length\r\n\t\t\tconst bytes = new Uint8Array(binaryLen)\r\n\t\t\tfor (let i = 0; i < binaryLen; i++) {\r\n\t\t\t\tconst ascii = binaryString.charCodeAt(i)\r\n\t\t\t\tbytes[i] = ascii\r\n\t\t\t}\r\n\t\t\treturn bytes\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Handles logics when the select text button is clicked.\r\n\t\tselectTextPdf() {\r\n\t\t\tif (this.myapi) {\r\n\t\t\t\tthis.myapi.setMode(this.myapi.Mode.SelectText)\r\n\t\t\t}\r\n\t\t\treturn false\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Handles logics when the highlight button is clicked.\r\n\t\thighlightPdf() {\r\n\t\t\tif (this.myapi) {\r\n\t\t\t\tthis.myapi.setMode(this.myapi.Mode.InsertHighlightAnnotation)\r\n\t\t\t}\r\n\t\t\treturn false\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Handles logics when the free text button is clicked.\r\n\t\tfreeTextPdf() {\r\n\t\t\tif (this.myapi) {\r\n\t\t\t\tthis.myapi.setMode(this.myapi.Mode.InsertTextShape)\r\n\t\t\t}\r\n\t\t\treturn false\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Handles logics when the strike out button is clicked.\r\n\t\tstrikeOutPdf() {\r\n\t\t\tif (this.myapi) {\r\n\t\t\t\tthis.myapi.setMode(this.myapi.Mode.InsertStrikeoutAnnotation)\r\n\t\t\t}\r\n\t\t\treturn false\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Handles logics when the free draw button is clicked.\r\n\t\tfreeDrawPdf() {\r\n\t\t\tif (this.myapi) {\r\n\t\t\t\tthis.myapi.setMode(this.myapi.Mode.InsertInkShape)\r\n\t\t\t}\r\n\t\t\treturn false\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Handles logics when the sticky note button is clicked.\r\n\t\tstickyNotePdf() {\r\n\t\t\tif (this.myapi) {\r\n\t\t\t\tthis.myapi.setMode(this.myapi.Mode.InsertTextAnnotation)\r\n\t\t\t}\r\n\t\t\treturn false\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// go back to CF Issue list.\r\n\t\tbackToIssuesList() {\r\n\t\t\tthis.$router.push('/collective_feedback/' + this.cfId + '/issues')\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// go back to projects page.\r\n\t\tbackToAssignments() {\r\n\t\t\tthis.$router.push('/course/' + this.classCode + '/projects/')\r\n\t\t},\r\n\t\tgetUrlParameter(sParam) {\r\n\t\t\tconst sPageURL = decodeURIComponent(window.location.search.substring(1))\r\n\r\n\t\t\tconst sURLVariables = sPageURL.split('&')\r\n\r\n\t\t\tlet sParameterName\r\n\r\n\t\t\tlet i\r\n\r\n\t\t\tfor (i = 0; i < sURLVariables.length; i++) {\r\n\t\t\t\tsParameterName = sURLVariables[i].split('=')\r\n\r\n\t\t\t\tif (sParameterName[0] === sParam) {\r\n\t\t\t\t\treturn sParameterName[1] === undefined ? true : sParameterName[1]\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t},\r\n\t\tgetlastActivityDate() {\r\n\t\t\tconst today = this.$moment()._d\r\n\t\t\treturn today.getFullYear() + '-' + (today.getMonth() + 1) + '-' +\r\n today.getDate() + ' ' + today.getHours() + ':' + today.getMinutes() + ':' + today.getSeconds()\r\n\t\t},\r\n\t\tgetDateStr(date) {\r\n\t\t\tconst thisDate = this.$moment(date)._d\r\n\t\t\treturn thisDate.getFullYear() + '-' + (thisDate.getMonth() + 1) + '-' +\r\n thisDate.getDate() + ' ' + thisDate.getHours() + ':' + thisDate.getMinutes() + ':' + thisDate.getSeconds()\r\n\t\t}\r\n\t}\r\n}\r\n</script>\r\n\r\n<style scoped>\r\nbody{\r\n background: #F1F3FA;\r\n}\r\n#content-wrapper {\r\n margin-left: 65px;\r\n}\r\n\r\n.el-card{\r\n border: 1px solid #d4d5d6;\r\n}\r\n.el-card.is-always-shadow, .el-card.is-hover-shadow:focus, .el-card.is-hover-shadow:hover {\r\n -webkit-box-shadow: 0 2px 12px 0 #F1F3FA;\r\n box-shadow: 0 2px 12px 0 #F1F3FA;\r\n}\r\n\r\n.el-card__header {\r\n padding: 12px 12px;\r\n}\r\n\r\n.el-card__body {\r\n padding: 10px;\r\n}\r\n\r\n.el-textarea__inner {\r\n padding: 5px 10px;\r\n color: black;\r\n}\r\n\r\n.filter-btn{\r\n text-align: center;\r\n box-shadow: none;\r\n display: inline-block;\r\n padding: 0px 10px;\r\n vertical-align: middle;\r\n touch-action: manipulation;\r\n cursor: pointer;\r\n color: #636363;\r\n}\r\n\r\n.filter-divider{\r\n float: left;\r\n border-right: solid 1px #cccccc;\r\n height: 50px;\r\n}\r\n\r\n#full_width_container {\r\n position: absolute;\r\n top: 3.1325em;\r\n bottom: 2px;\r\n left: 215px;\r\n right: 0;\r\n min-width: 460px;\r\n}\r\n\r\n#full_width_container.full-width{\r\n position: absolute;\r\n top: 3.1325em;\r\n bottom: 2px;\r\n left: 65px;\r\n right: 0;\r\n min-width: 460px;\r\n}\r\n\r\n#left_side {\r\n top: 0;\r\n bottom: 0;\r\n overflow-y: hidden;\r\n left: 0;\r\n min-width: 580px;\r\n}\r\n#right_side {\r\n top: 0;\r\n bottom: 0;\r\n right: 0;\r\n font-size: 14px;\r\n font-size: .875rem;\r\n}\r\n\r\n.el-input-number--small{\r\n width: 100px;\r\n}\r\n.full_height {\r\n height: 100%;\r\n overflow-x: auto;\r\n}\r\n\r\n#left_side_inner, #submissions_container, #iframe_holder{\r\n height: 100%;\r\n width: 100%;\r\n border: 0 none;\r\n}\r\niframe{\r\n width: 100%;\r\n border: 0px;\r\n overflow: auto;\r\n height: 99%;\r\n min-height: 0px;\r\n}\r\n\r\n#width_resizer {\r\n position: absolute;\r\n top: 0;\r\n bottom: 0;\r\n left: 0;\r\n background: #bbb url(https://du11hjcvx0uqb.cloudfront.net/dist/images/splitpane_handle-ew-1b67cccf0f.gif) no-repeat scroll 50% 50%;\r\n cursor: pointer;\r\n width: 7px;\r\n border-right: 1px solid #838383;\r\n z-index: 2;\r\n}\r\n.right_side_content {\r\n position: absolute;\r\n top: 0;\r\n bottom: 0;\r\n left: 8px;\r\n right: 0;\r\n}\r\n#right_side #rightside_inner {\r\n overflow-y: auto;\r\n position: relative;\r\n}\r\n\r\n.ViewerControls--with-annotations {\r\n height: 49px;\r\n}\r\n.ViewerControls {\r\n background-color: #636363;\r\n color: #fff;\r\n font-size: 14px;\r\n line-height: 24px;\r\n /* overflow-x: auto; */\r\n /* position: absolute;\r\n width: 100%; */\r\n}\r\n.ViewerControls-primary {\r\n -ms-touch-action: none;\r\n touch-action: none;\r\n pointer-events: all;\r\n display: -webkit-box;\r\n display: -ms-flexbox;\r\n display: flex;\r\n}\r\n.ViewerControls--download, .ViewerControls--title {\r\n -webkit-box-flex: 1;\r\n -ms-flex: 1;\r\n flex: 1;\r\n display: -webkit-box;\r\n display: -ms-flexbox;\r\n display: flex;\r\n -webkit-box-align: center;\r\n -ms-flex-align: center;\r\n align-items: center;\r\n white-space: nowrap;\r\n}\r\n\r\n.download-button--button {\r\n background-color: transparent;\r\n font-size: 16px;\r\n border: none;\r\n height: 48px;\r\n width: 48px;\r\n color: white;\r\n cursor: pointer;\r\n}\r\n/* .download-button--button:hover {\r\n background-color: #777777;\r\n} */\r\n\r\n.ViewerControls--page-controls {\r\n display: -webkit-box;\r\n display: -ms-flexbox;\r\n display: flex;\r\n -webkit-box-align: center;\r\n -ms-flex-align: center;\r\n align-items: center;\r\n white-space: nowrap;\r\n}\r\n\r\n.DocumentControls {\r\n display: -webkit-box;\r\n display: -ms-flexbox;\r\n display: flex;\r\n -webkit-box-align: center;\r\n -ms-flex-align: center;\r\n align-items: center;\r\n}\r\n\r\n.AnnotationControlButton {\r\n width: 48px;\r\n padding: 0;\r\n border: 0 none;\r\n color: #fff;\r\n background-color: #636363;\r\n margin-top: 0;\r\n margin-bottom: 0;\r\n cursor: pointer;\r\n -webkit-box-sizing: content-box;\r\n box-sizing: content-box;\r\n -webkit-touch-callout: none;\r\n user-select: none;\r\n -moz-user-select: none;\r\n -webkit-user-select: none;\r\n -ms-user-select: none;\r\n -webkit-tap-highlight-color: rgba(0,0,0,0);\r\n}\r\n.AnnotationControlButton-inner, .AnnotationControlButton-outer {\r\n -webkit-box-sizing: content-box;\r\n box-sizing: content-box;\r\n display: -webkit-box;\r\n display: -ms-flexbox;\r\n display: flex;\r\n}\r\n\r\n.AnnotationControlButton-inner {\r\n margin: 0;\r\n height: 44px;\r\n width: 48px;\r\n -webkit-box-pack: center;\r\n -ms-flex-pack: center;\r\n justify-content: center;\r\n -webkit-box-align: center;\r\n -ms-flex-align: center;\r\n align-items: center;\r\n}\r\n\r\n.AnnotationControlButton-inner {\r\n margin: 0;\r\n height: 44px;\r\n width: 48px;\r\n -webkit-box-pack: center;\r\n -ms-flex-pack: center;\r\n justify-content: center;\r\n -webkit-box-align: center;\r\n -ms-flex-align: center;\r\n align-items: center;\r\n}\r\n.AnnotationControlButton-outer {\r\n width: 44px;\r\n margin: 1px;\r\n border: 1px solid #636363;\r\n}\r\n\r\n.ViewerControls--current-page {\r\n -moz-appearance: textfield;\r\n margin-top: 10px;\r\n border-radius: 3px;\r\n border: 0;\r\n height: 28px;\r\n width: 36px;\r\n background-color: #fff;\r\n color: #636363;\r\n font-size: 14px;\r\n text-align: center;\r\n vertical-align: top;\r\n}\r\n.next-prev{\r\n text-align: center;\r\n -webkit-box-shadow: none;\r\n box-shadow: none;\r\n display: inline-block;\r\n padding: 0px 10px;\r\n vertical-align: middle;\r\n -ms-touch-action: manipulation;\r\n touch-action: manipulation;\r\n cursor: pointer;\r\n border: 0 none;\r\n background: none;\r\n}\r\n/* .AnnotationControlButton.selected .AnnotationControlButton-outer {\r\n border-color: #fff;\r\n border: 1px solid #fff;\r\n color: #636363;\r\n}\r\n.AnnotationControlButton.selected {\r\n outline: none;\r\n background-color: #fff;\r\n}\r\n\r\n.AnnotationControlButton:active .AnnotationControlButton-outer {\r\n -webkit-box-shadow: inset 0 0 2px #000;\r\n box-shadow: inset 0 0 2px #000;\r\n}\r\n.AnnotationControlButton:hover:enabled .AnnotationControlButton-outer {\r\n border-color: #777777;\r\n}\r\n.AnnotationControlButton:hover:enabled {\r\n background-color: #777777;\r\n} */\r\n\r\n.editor-btn{\r\n text-align: center;\r\n box-shadow: none;\r\n display: inline-block;\r\n padding: 0px 8px;\r\n vertical-align: middle;\r\n touch-action: manipulation;\r\n cursor: pointer;\r\n border: 0px none;\r\n background: none;\r\n}\r\n\r\n/* .editor-content{\r\n height: 170px;\r\n overflow: auto;\r\n} */\r\n\r\n.editor-content blockquote{\r\n border-left: 3px solid rgba(0,0,0,.1);\r\n color: rgba(0,0,0,.8);\r\n padding-left: .8rem;\r\n font-style: italic;\r\n}\r\n.el-form-item {\r\n margin-bottom: 5px;\r\n}\r\n\r\n.editor-header{\r\n padding: 10px 5px;\r\n border-bottom: 1px solid #EBEEF5;\r\n -webkit-box-sizing: border-box;\r\n box-sizing: border-box;\r\n}\r\n.hideDiv {\r\n display: none;\r\n}\r\n.showDiv {\r\n display: block;\r\n}\r\n</style>\r\n\r\n<style>\r\n.editor-content blockquote {\r\n border-left: 3px solid rgba(0,0,0,.1);\r\n color: rgba(0,0,0,.8);\r\n padding-left: .8rem;\r\n font-style: italic;\r\n}\r\n.ProseMirror{\r\n height: 167px;\r\n overflow: auto;\r\n}\r\n</style>\r\n\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CollectiveFeedbackIssue.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CollectiveFeedbackIssue.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./CollectiveFeedbackIssue.vue?vue&type=template&id=2b4ba607&scoped=true&\"\nimport script from \"./CollectiveFeedbackIssue.vue?vue&type=script&lang=js&\"\nexport * from \"./CollectiveFeedbackIssue.vue?vue&type=script&lang=js&\"\nimport style0 from \"./CollectiveFeedbackIssue.vue?vue&type=style&index=0&id=2b4ba607&scoped=true&lang=css&\"\nimport style1 from \"./CollectiveFeedbackIssue.vue?vue&type=style&index=1&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"2b4ba607\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('div',{staticClass:\"breadcumb\"},[_c('div',{staticClass:\"ic-app-crumbs\"},[_c('span',{staticClass:\"breadcumb-text\"},[(_vm.currentCourse)?_c('router-link',{staticStyle:{\"color\":\"#4E5E63\"},attrs:{\"to\":{ path: '/course/'+ _vm.currentCourse.ClassCode +'/projects' }}},[_vm._v(\"\\n \"+_vm._s(_vm.currentCourse.ClassDescription)+\"\\n \")]):_vm._e(),_c('i',{staticClass:\"fas fa-chevron-right breadcumb-next\"}),(_vm.assignment)?_c('span',[_vm._v(\"\\n \"+_vm._s(_vm.assignment.AssignmentName)+\"\\n \")]):_vm._e(),_c('i',{staticClass:\"fas fa-chevron-right breadcumb-next\"}),_vm._v(\"\\n Student Submissions\\n \")],1)])]),(_vm.tableData && _vm.assignment)?_c('div',{staticClass:\"student-submission-wrapper\"},[_c('el-input',{staticStyle:{\"width\":\"300px\",\"margin-bottom\":\"10px\"},attrs:{\"size\":\"mini\",\"placeholder\":\"Filter submisssions by name\"},model:{value:(_vm.search),callback:function ($$v) {_vm.search=$$v},expression:\"search\"}}),(_vm.isGroupProject)?_c('el-table',{staticStyle:{\"text-align\":\"center\",\"width\":\"100%\"},attrs:{\"data\":_vm.tableData.filter(function (data) { return !_vm.search || data.Name.toLowerCase().includes(_vm.search.toLowerCase()); }),\"height\":\"82vh\",\"default-sort\":{prop: 'date', order: 'descending'}}},[_c('el-table-column',{attrs:{\"sortable\":\"\",\"fixed\":\"\",\"prop\":\"Name\",\"label\":\"Group Name\"}}),_c('el-table-column',{staticStyle:{\"text-align\":\"center\",\"vertical-align\":\"middle\"},attrs:{\"fixed\":\"\",\"label\":\"Group Members\"},scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [(scope.row.Members.length > 0)?_c('div',_vm._l((scope.row.Members),function(member,idx){return _c('div',{key:member.MemberId},[_c('span',[_vm._v(_vm._s((idx + 1) + '. ' + member.Name))])])}),0):_c('div',[_c('span')])]}}],null,false,2977135005)}),((_vm.taskType == undefined || _vm.taskType == 'self_review') && _vm.assignment.Tasks && _vm.assignment.Tasks.filter(function (t) { return t.Type == 'self_review'; }) && _vm.assignment.Tasks.filter(function (t) { return t.Type == 'self_review'; }).length > 0)?_c('el-table-column',{attrs:{\"label\":\"Self Review Submission\",\"class-name\":\"center-align\"}},[_c('el-table-column',{attrs:{\"label\":\"Status\",\"class-name\":\"center-align\"},scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [(scope.row.SelfReviewStatus == 'Completed')?_c('el-tag',{attrs:{\"type\":\"success\"}},[_vm._v(_vm._s(scope.row.SelfReviewStatus))]):(scope.row.SelfReviewStatus == 'In Progress')?_c('el-tag',{attrs:{\"type\":\"warning\"}},[_vm._v(_vm._s(scope.row.SelfReviewStatus))]):(scope.row.SelfReviewStatus == 'No Submission')?_c('el-tag',{attrs:{\"type\":\"danger\"}},[_vm._v(_vm._s(scope.row.SelfReviewStatus))]):_vm._e()]}}],null,false,14267195)}),_c('el-table-column',{attrs:{\"label\":\"Action\",\"class-name\":\"center-align\"},scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [( scope.row.SelfReviewStatus == 'Completed')?_c('el-button',{attrs:{\"size\":\"mini\"},on:{\"click\":function($event){return _vm.viewSelfReview(scope.$index, scope.row)}}},[_vm._v(\"\\n View\\n \")]):_vm._e()]}}],null,false,450117030)})],1):_vm._e(),((_vm.taskType == undefined || _vm.taskType == 'peer_review') && _vm.assignment.Tasks && _vm.assignment.Tasks.filter(function (t) { return t.Type == 'peer_review'; }) && _vm.assignment.Tasks.filter(function (t) { return t.Type == 'peer_review'; }).length > 0)?_c('el-table-column',{attrs:{\"label\":\"Peer Review Submission\",\"class-name\":\"center-align\"}},[_c('el-table-column',{attrs:{\"label\":\"Status\",\"class-name\":\"center-align\"},scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [(_vm.assignment.Tasks && _vm.assignment.Tasks.filter(function (t) { return t.Type == 'peer_review'; }) && _vm.assignment.Tasks.filter(function (t) { return t.Type == 'peer_review'; }).length > 0)?_c('span',[(scope.row.PeerReviewStatus == 'Completed')?_c('el-tag',{attrs:{\"type\":\"success\"}},[_vm._v(_vm._s(scope.row.PeerReviewStatus)+\" \"+_vm._s(scope.row.CompletedPeerReview))]):(scope.row.PeerReviewStatus == 'In Progress')?_c('el-tag',{attrs:{\"type\":\"warning\"}},[_vm._v(_vm._s(scope.row.PeerReviewStatus)+\" \"+_vm._s(scope.row.CompletedPeerReview))]):(scope.row.PeerReviewStatus == 'No Submission')?_c('el-tag',{attrs:{\"type\":\"danger\"}},[_vm._v(_vm._s(scope.row.PeerReviewStatus))]):_vm._e()],1):_c('span')]}}],null,false,186259703)}),_c('el-table-column',{attrs:{\"label\":\"Action\",\"class-name\":\"center-align\"},scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [(scope.row.PeerReviewStatus != 'No Submission')?_c('el-button',{attrs:{\"size\":\"mini\"},on:{\"click\":function($event){return _vm.viewPeerReview(scope.$index, scope.row)}}},[_vm._v(\"\\n View\\n \")]):_vm._e()]}}],null,false,3563318398)})],1):_vm._e(),((_vm.taskType == undefined || _vm.taskType == 'appraisal') && _vm.assignment.Tasks && _vm.assignment.Tasks.filter(function (t) { return t.Type == 'appraisal'; }) && _vm.assignment.Tasks.filter(function (t) { return t.Type == 'appraisal'; }).length > 0)?_c('el-table-column',{attrs:{\"label\":\"Appraisal Submission\",\"class-name\":\"center-align\"}},[_c('el-table-column',{attrs:{\"label\":\"Status\",\"class-name\":\"center-align\"},scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [(scope.row.AppraisalStatus == 'Completed')?_c('el-tag',{attrs:{\"type\":\"success\"}},[_vm._v(_vm._s(scope.row.AppraisalStatus))]):(scope.row.AppraisalStatus == 'In Progress')?_c('el-tag',{attrs:{\"type\":\"warning\"}},[_vm._v(_vm._s(scope.row.AppraisalStatus))]):(scope.row.AppraisalStatus == 'No Submission')?_c('el-tag',{attrs:{\"type\":\"danger\"}},[_vm._v(_vm._s(scope.row.AppraisalStatus))]):_vm._e()]}}],null,false,3979199003)}),_c('el-table-column',{attrs:{\"label\":\"Action\",\"class-name\":\"center-align\"},scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [( scope.row.AppraisalStatus == 'Completed')?_c('el-button',{attrs:{\"size\":\"mini\"},on:{\"click\":function($event){return _vm.viewAppraisal(scope.$index, scope.row)}}},[_vm._v(\"\\n View\\n \")]):_vm._e()]}}],null,false,1411239174)})],1):_vm._e(),((_vm.taskType == undefined || _vm.taskType == 'instructor_review'))?_c('el-table-column',{attrs:{\"label\":\"Project Submission\",\"class-name\":\"center-align\"}},[_c('el-table-column',{attrs:{\"label\":\"Submission Status\",\"class-name\":\"center-align\"},scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [(scope.row.ProjectSubmissionStatus == 'Submitted')?_c('el-tag',{attrs:{\"type\":\"success\"}},[_vm._v(_vm._s(scope.row.ProjectSubmissionStatus))]):(scope.row.ProjectSubmissionStatus == 'No Submission')?_c('el-tag',{attrs:{\"type\":\"danger\"}},[_vm._v(_vm._s(scope.row.ProjectSubmissionStatus))]):_c('el-tag',[_vm._v(_vm._s(scope.row.ProjectSubmissionStatus))])]}}],null,false,3048835333)}),(_vm.assignment.Tasks && _vm.assignment.Tasks.filter(function (t) { return t.Type == 'instructor_review'; }) && _vm.assignment.Tasks.filter(function (t) { return t.Type == 'instructor_review'; }).length > 0)?_c('el-table-column',{attrs:{\"label\":\"Scoring Status\",\"class-name\":\"center-align\"},scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [(scope.row.InstructorReviewStatus == 'Scored')?_c('el-tag',{attrs:{\"type\":\"success\"}},[_vm._v(_vm._s(scope.row.InstructorReviewStatus))]):(scope.row.InstructorReviewStatus == 'In Progress')?_c('el-tag',{attrs:{\"type\":\"warning\"}},[_vm._v(_vm._s(scope.row.InstructorReviewStatus))]):_vm._e()]}}],null,false,632722556)}):_vm._e(),_c('el-table-column',{attrs:{\"label\":\"Action\",\"class-name\":\"center-align\"},scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [(scope.row.ProjectSubmissionStatus == 'Submitted' && scope.row.InstructorReviewStatus == ''\n && _vm.assignment.Tasks && _vm.assignment.Tasks.filter(function (t) { return t.Type == 'instructor_review'; }) && _vm.assignment.Tasks.filter(function (t) { return t.Type == 'instructor_review'; }).length > 0)?_c('el-button',{attrs:{\"size\":\"mini\"},on:{\"click\":function($event){return _vm.scorePaper(scope.$index, scope.row)}}},[_vm._v(\"\\n Score\\n \")]):(scope.row.ProjectSubmissionStatus == 'Submitted' && scope.row.InstructorReviewStatus == 'In Progress'\n && _vm.assignment.Tasks && _vm.assignment.Tasks.filter(function (t) { return t.Type == 'instructor_review'; }) && _vm.assignment.Tasks.filter(function (t) { return t.Type == 'instructor_review'; }).length > 0)?_c('el-button',{attrs:{\"size\":\"mini\"},on:{\"click\":function($event){return _vm.scorePaper(scope.$index, scope.row)}}},[_vm._v(\"\\n Continue\\n \")]):(scope.row.ProjectSubmissionStatus == 'Submitted')?_c('el-button',{attrs:{\"size\":\"mini\"},on:{\"click\":function($event){return _vm.scorePaper(scope.$index, scope.row)}}},[_vm._v(\"\\n View\\n \")]):_vm._e()]}}],null,false,2041601527)})],1):_vm._e()],1):_c('el-table',{staticStyle:{\"text-align\":\"center\",\"width\":\"100%\"},attrs:{\"data\":_vm.tableData.filter(function (data) { return !_vm.search || data.Name.toLowerCase().includes(_vm.search.toLowerCase()); }),\"height\":\"82vh\",\"default-sort\":{prop: 'date', order: 'descending'}}},[_c('el-table-column',{attrs:{\"sortable\":\"\",\"fixed\":\"\",\"prop\":\"Name\",\"label\":\"Student Name\"}}),((_vm.taskType == undefined || _vm.taskType == 'self_review') && _vm.assignment.Tasks && _vm.assignment.Tasks.filter(function (t) { return t.Type == 'self_review'; }) && _vm.assignment.Tasks.filter(function (t) { return t.Type == 'self_review'; }).length > 0)?_c('el-table-column',{attrs:{\"label\":\"Self Review Submission\",\"class-name\":\"center-align\"}},[_c('el-table-column',{attrs:{\"label\":\"Status\",\"class-name\":\"center-align\"},scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [(scope.row.SelfReviewStatus == 'Completed')?_c('el-tag',{attrs:{\"type\":\"success\"}},[_vm._v(_vm._s(scope.row.SelfReviewStatus))]):(scope.row.SelfReviewStatus == 'In Progress')?_c('el-tag',{attrs:{\"type\":\"warning\"}},[_vm._v(_vm._s(scope.row.SelfReviewStatus))]):(scope.row.SelfReviewStatus == 'No Submission')?_c('el-tag',{attrs:{\"type\":\"danger\"}},[_vm._v(_vm._s(scope.row.SelfReviewStatus))]):_vm._e()]}}],null,false,14267195)}),_c('el-table-column',{attrs:{\"label\":\"Action\",\"class-name\":\"center-align\"},scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [( scope.row.SelfReviewStatus == 'Completed')?_c('el-button',{attrs:{\"size\":\"mini\"},on:{\"click\":function($event){return _vm.viewSelfReview(scope.$index, scope.row)}}},[_vm._v(\"\\n View\\n \")]):_vm._e()]}}],null,false,450117030)})],1):_vm._e(),((_vm.taskType == undefined || _vm.taskType == 'peer_review') && _vm.assignment.Tasks && _vm.assignment.Tasks.filter(function (t) { return t.Type == 'peer_review'; }) && _vm.assignment.Tasks.filter(function (t) { return t.Type == 'peer_review'; }).length > 0)?_c('el-table-column',{attrs:{\"label\":\"Peer Review Submission\",\"class-name\":\"center-align\"}},[_c('el-table-column',{attrs:{\"prop\":\"PeerReviewGroup\",\"label\":\"Group\",\"class-name\":\"center-align\",\"sortable\":\"\",\"sort-method\":_vm.sortPeerReviewGroup}}),_c('el-table-column',{attrs:{\"label\":\"Status\",\"class-name\":\"center-align\"},scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [(_vm.assignment.Tasks && _vm.assignment.Tasks.filter(function (t) { return t.Type == 'peer_review'; }) && _vm.assignment.Tasks.filter(function (t) { return t.Type == 'peer_review'; }).length > 0)?_c('span',[(scope.row.PeerReviewStatus == 'Completed')?_c('el-tag',{attrs:{\"type\":\"success\"}},[_vm._v(_vm._s(scope.row.PeerReviewStatus)+\" \"+_vm._s(scope.row.CompletedPeerReview))]):(scope.row.PeerReviewStatus == 'In Progress')?_c('el-tag',{attrs:{\"type\":\"warning\"}},[_c('span',[_vm._v(\"\\n \"+_vm._s(scope.row.PeerReviewStatus)+\" \"+_vm._s(scope.row.CompletedPeerReview)+\"\\n \"),_c('el-tooltip',{staticClass:\"item\",attrs:{\"effect\":\"light\",\"content\":\"Selected courses will be used for substitutions\",\"placement\":\"top\"}},[_c('div',{attrs:{\"slot\":\"content\"},slot:\"content\"},[_vm._v(\"\\n Peer Review is in progress. All team members have submitted papers,\\n \"),_c('br'),_vm._v(\"but the student has not completed all of their reviews.\\n \")]),_c('i',{staticClass:\"fas fa-question-circle\",staticStyle:{\"font-size\":\"14px\"}})])],1)]):(scope.row.PeerReviewStatus == 'Partially Completed')?_c('el-tag',{attrs:{\"type\":\"warning\"}},[_c('span',[_vm._v(\"\\n \"+_vm._s(scope.row.PeerReviewStatus)+\" \"+_vm._s(scope.row.CompletedPeerReview)+\"\\n \"),_c('el-tooltip',{staticClass:\"item\",attrs:{\"effect\":\"light\",\"content\":\"Selected courses will be used for substitutions\",\"placement\":\"top\"}},[_c('div',{attrs:{\"slot\":\"content\"},slot:\"content\"},[_vm._v(\"\\n The peer review is partially completed. The student have reviewed all available papers,\\n \"),_c('br'),_vm._v(\"but there are team members who have not submitted their papers yet.\\n \")]),_c('i',{staticClass:\"fas fa-question-circle\",staticStyle:{\"font-size\":\"14px\"}})])],1)]):(scope.row.PeerReviewStatus == 'No Submission')?_c('el-tag',{attrs:{\"type\":\"danger\"}},[_vm._v(_vm._s(scope.row.PeerReviewStatus))]):_vm._e()],1):_c('span')]}}],null,false,1239805401)}),_c('el-table-column',{attrs:{\"label\":\"Action\",\"class-name\":\"center-align\"},scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [(scope.row.PeerReviewStatus != 'No Submission')?_c('el-button',{attrs:{\"size\":\"mini\"},on:{\"click\":function($event){return _vm.viewPeerReview(scope.$index, scope.row)}}},[_vm._v(\"\\n View\\n \")]):_vm._e()]}}],null,false,3563318398)})],1):_vm._e(),((_vm.taskType == undefined || _vm.taskType == 'appraisal') && _vm.assignment.Tasks && _vm.assignment.Tasks.filter(function (t) { return t.Type == 'appraisal'; }) && _vm.assignment.Tasks.filter(function (t) { return t.Type == 'appraisal'; }).length > 0)?_c('el-table-column',{attrs:{\"label\":\"Appraisal Submission\",\"class-name\":\"center-align\"}},[_c('el-table-column',{attrs:{\"label\":\"Status\",\"class-name\":\"center-align\"},scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [(scope.row.AppraisalStatus == 'Completed')?_c('el-tag',{attrs:{\"type\":\"success\"}},[_vm._v(_vm._s(scope.row.AppraisalStatus))]):(scope.row.AppraisalStatus == 'In Progress')?_c('el-tag',{attrs:{\"type\":\"warning\"}},[_vm._v(_vm._s(scope.row.AppraisalStatus))]):(scope.row.AppraisalStatus == 'No Submission')?_c('el-tag',{attrs:{\"type\":\"danger\"}},[_vm._v(_vm._s(scope.row.AppraisalStatus))]):_vm._e()]}}],null,false,3979199003)}),_c('el-table-column',{attrs:{\"label\":\"Action\",\"class-name\":\"center-align\"},scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [( scope.row.AppraisalStatus == 'Completed')?_c('el-button',{attrs:{\"size\":\"mini\"},on:{\"click\":function($event){return _vm.viewAppraisal(scope.$index, scope.row)}}},[_vm._v(\"\\n View\\n \")]):_vm._e()]}}],null,false,1411239174)})],1):_vm._e(),((_vm.taskType == undefined || _vm.taskType == 'instructor_review'))?_c('el-table-column',{attrs:{\"label\":\"Project Submission\",\"class-name\":\"center-align\"}},[_c('el-table-column',{attrs:{\"label\":\"Submission Status\",\"class-name\":\"center-align\"},scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [(scope.row.ProjectSubmissionStatus == 'Submitted')?_c('el-tag',{attrs:{\"type\":\"success\"}},[_vm._v(_vm._s(scope.row.ProjectSubmissionStatus))]):(scope.row.ProjectSubmissionStatus == 'No Submission')?_c('el-tag',{attrs:{\"type\":\"danger\"}},[_vm._v(_vm._s(scope.row.ProjectSubmissionStatus))]):_c('el-tag',[_vm._v(_vm._s(scope.row.ProjectSubmissionStatus))])]}}],null,false,3048835333)}),(_vm.assignment.Tasks && _vm.assignment.Tasks.filter(function (t) { return t.Type == 'instructor_review'; }) && _vm.assignment.Tasks.filter(function (t) { return t.Type == 'instructor_review'; }).length > 0)?_c('el-table-column',{attrs:{\"label\":\"Scoring Status\",\"class-name\":\"center-align\"},scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [(scope.row.InstructorReviewStatus == 'Scored')?_c('el-tag',{attrs:{\"type\":\"success\"}},[_vm._v(_vm._s(scope.row.InstructorReviewStatus))]):(scope.row.InstructorReviewStatus == 'In Progress')?_c('el-tag',{attrs:{\"type\":\"warning\"}},[_vm._v(_vm._s(scope.row.InstructorReviewStatus))]):_vm._e()]}}],null,false,632722556)}):_vm._e(),_c('el-table-column',{attrs:{\"label\":\"Action\",\"class-name\":\"center-align\"},scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [(scope.row.ProjectSubmissionStatus == 'Submitted' && scope.row.InstructorReviewStatus == ''\n && _vm.assignment.Tasks && _vm.assignment.Tasks.filter(function (t) { return t.Type == 'instructor_review'; }) && _vm.assignment.Tasks.filter(function (t) { return t.Type == 'instructor_review'; }).length > 0)?_c('el-button',{attrs:{\"size\":\"mini\"},on:{\"click\":function($event){return _vm.scorePaper(scope.$index, scope.row)}}},[_vm._v(\"\\n Score\\n \")]):(scope.row.ProjectSubmissionStatus == 'Submitted' && scope.row.InstructorReviewStatus == 'In Progress'\n && _vm.assignment.Tasks && _vm.assignment.Tasks.filter(function (t) { return t.Type == 'instructor_review'; }) && _vm.assignment.Tasks.filter(function (t) { return t.Type == 'instructor_review'; }).length > 0)?_c('el-button',{attrs:{\"size\":\"mini\"},on:{\"click\":function($event){return _vm.scorePaper(scope.$index, scope.row)}}},[_vm._v(\"\\n Continue\\n \")]):(scope.row.ProjectSubmissionStatus == 'Submitted')?_c('el-button',{attrs:{\"size\":\"mini\"},on:{\"click\":function($event){return _vm.scorePaper(scope.$index, scope.row)}}},[_vm._v(\"\\n View\\n \")]):_vm._e()]}}],null,false,2041601527)})],1):_vm._e()],1)],1):_vm._e()])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n <div>\r\n <div class=\"breadcumb\">\r\n <div class=\"ic-app-crumbs\">\r\n <span class=\"breadcumb-text\">\r\n <router-link v-if=\"currentCourse\" :to=\"{ path: '/course/'+ currentCourse.ClassCode +'/projects' }\" style=\"color: #4E5E63;\">\r\n {{ currentCourse.ClassDescription }}\r\n </router-link>\r\n <i class=\"fas fa-chevron-right breadcumb-next\" />\r\n <span v-if=\"assignment\">\r\n {{ assignment.AssignmentName }}\r\n </span>\r\n <i class=\"fas fa-chevron-right breadcumb-next\" />\r\n Student Submissions\r\n </span>\r\n </div>\r\n </div>\r\n <div v-if=\"tableData && assignment\" class=\"student-submission-wrapper\">\r\n <el-input\r\n v-model=\"search\"\r\n size=\"mini\"\r\n placeholder=\"Filter submisssions by name\"\r\n style=\"width: 300px; margin-bottom: 10px;\"\r\n />\r\n\r\n <el-table\r\n v-if=\"isGroupProject\"\r\n :data=\"tableData.filter(data => !search || data.Name.toLowerCase().includes(search.toLowerCase()))\"\r\n style=\"text-align:center; width: 100%\"\r\n height=\"82vh\"\r\n :default-sort=\"{prop: 'date', order: 'descending'}\"\r\n >\r\n <el-table-column sortable fixed prop=\"Name\" label=\"Group Name\" />\r\n <el-table-column fixed label=\"Group Members\" style=\"text-align: center; vertical-align: middle;\">\r\n <template slot-scope=\"scope\">\r\n <div v-if=\"scope.row.Members.length > 0\">\r\n <div v-for=\"(member, idx) in scope.row.Members\" :key=\"member.MemberId\">\r\n <span>{{ (idx + 1) + '. ' + member.Name }}</span>\r\n </div>\r\n </div>\r\n <div v-else>\r\n <span />\r\n </div>\r\n </template>\r\n </el-table-column>\r\n <el-table-column v-if=\"(taskType == undefined || taskType == 'self_review') && assignment.Tasks && assignment.Tasks.filter(t => t.Type == 'self_review') && assignment.Tasks.filter(t => t.Type == 'self_review').length > 0\" label=\"Self Review Submission\" class-name=\"center-align\">\r\n <el-table-column label=\"Status\" class-name=\"center-align\">\r\n <template slot-scope=\"scope\">\r\n <el-tag v-if=\"scope.row.SelfReviewStatus == 'Completed'\" type=\"success\">{{ scope.row.SelfReviewStatus }}</el-tag>\r\n <el-tag v-else-if=\"scope.row.SelfReviewStatus == 'In Progress'\" type=\"warning\">{{ scope.row.SelfReviewStatus }}</el-tag>\r\n <el-tag v-else-if=\"scope.row.SelfReviewStatus == 'No Submission'\" type=\"danger\">{{ scope.row.SelfReviewStatus }}</el-tag>\r\n </template>\r\n </el-table-column>\r\n <el-table-column label=\"Action\" class-name=\"center-align\">\r\n <template slot-scope=\"scope\">\r\n <el-button\r\n v-if=\" scope.row.SelfReviewStatus == 'Completed'\"\r\n size=\"mini\"\r\n @click=\"viewSelfReview(scope.$index, scope.row)\"\r\n >\r\n View\r\n </el-button>\r\n </template>\r\n </el-table-column>\r\n </el-table-column>\r\n\r\n <el-table-column v-if=\"(taskType == undefined || taskType == 'peer_review') && assignment.Tasks && assignment.Tasks.filter(t => t.Type == 'peer_review') && assignment.Tasks.filter(t => t.Type == 'peer_review').length > 0\" label=\"Peer Review Submission\" class-name=\"center-align\">\r\n <el-table-column label=\"Status\" class-name=\"center-align\">\r\n <template slot-scope=\"scope\">\r\n <span v-if=\"assignment.Tasks && assignment.Tasks.filter(t => t.Type == 'peer_review') && assignment.Tasks.filter(t => t.Type == 'peer_review').length > 0\">\r\n <el-tag v-if=\"scope.row.PeerReviewStatus == 'Completed'\" type=\"success\">{{ scope.row.PeerReviewStatus }} {{ scope.row.CompletedPeerReview }}</el-tag>\r\n <el-tag v-else-if=\"scope.row.PeerReviewStatus == 'In Progress'\" type=\"warning\">{{ scope.row.PeerReviewStatus }} {{ scope.row.CompletedPeerReview }}</el-tag>\r\n <el-tag v-else-if=\"scope.row.PeerReviewStatus == 'No Submission'\" type=\"danger\">{{ scope.row.PeerReviewStatus }}</el-tag>\r\n </span>\r\n <span v-else />\r\n </template>\r\n </el-table-column>\r\n <el-table-column label=\"Action\" class-name=\"center-align\">\r\n <template slot-scope=\"scope\">\r\n <el-button\r\n v-if=\"scope.row.PeerReviewStatus != 'No Submission'\"\r\n size=\"mini\"\r\n @click=\"viewPeerReview(scope.$index, scope.row)\"\r\n >\r\n View\r\n </el-button>\r\n </template>\r\n </el-table-column>\r\n </el-table-column>\r\n\r\n <!-- IX THIS IS NEW CODE FOR GROUP APPRAISALS -->\r\n <el-table-column v-if=\"(taskType == undefined || taskType == 'appraisal') && assignment.Tasks && assignment.Tasks.filter(t => t.Type == 'appraisal') && assignment.Tasks.filter(t => t.Type == 'appraisal').length > 0\" label=\"Appraisal Submission\" class-name=\"center-align\">\r\n <el-table-column label=\"Status\" class-name=\"center-align\">\r\n <template slot-scope=\"scope\">\r\n <el-tag v-if=\"scope.row.AppraisalStatus == 'Completed'\" type=\"success\">{{ scope.row.AppraisalStatus }}</el-tag>\r\n <el-tag v-else-if=\"scope.row.AppraisalStatus == 'In Progress'\" type=\"warning\">{{ scope.row.AppraisalStatus }}</el-tag>\r\n <el-tag v-else-if=\"scope.row.AppraisalStatus == 'No Submission'\" type=\"danger\">{{ scope.row.AppraisalStatus }}</el-tag>\r\n </template>\r\n </el-table-column>\r\n <el-table-column label=\"Action\" class-name=\"center-align\">\r\n <template slot-scope=\"scope\">\r\n <el-button\r\n v-if=\" scope.row.AppraisalStatus == 'Completed'\"\r\n size=\"mini\"\r\n @click=\"viewAppraisal(scope.$index, scope.row)\"\r\n >\r\n View\r\n </el-button>\r\n </template>\r\n </el-table-column>\r\n </el-table-column>\r\n\r\n <el-table-column v-if=\"(taskType == undefined || taskType == 'instructor_review')\" label=\"Project Submission\" class-name=\"center-align\">\r\n <el-table-column label=\"Submission Status\" class-name=\"center-align\">\r\n <template slot-scope=\"scope\">\r\n <el-tag v-if=\"scope.row.ProjectSubmissionStatus == 'Submitted'\" type=\"success\">{{ scope.row.ProjectSubmissionStatus }}</el-tag>\r\n <el-tag v-else-if=\"scope.row.ProjectSubmissionStatus == 'No Submission'\" type=\"danger\">{{ scope.row.ProjectSubmissionStatus }}</el-tag>\r\n <el-tag v-else>{{ scope.row.ProjectSubmissionStatus }}</el-tag>\r\n </template>\r\n </el-table-column>\r\n <el-table-column\r\n v-if=\"assignment.Tasks && assignment.Tasks.filter(t => t.Type == 'instructor_review') && assignment.Tasks.filter(t => t.Type == 'instructor_review').length > 0\"\r\n label=\"Scoring Status\"\r\n class-name=\"center-align\">\r\n <template slot-scope=\"scope\">\r\n <el-tag v-if=\"scope.row.InstructorReviewStatus == 'Scored'\" type=\"success\">{{ scope.row.InstructorReviewStatus }}</el-tag>\r\n <el-tag v-else-if=\"scope.row.InstructorReviewStatus == 'In Progress'\" type=\"warning\">{{ scope.row.InstructorReviewStatus }}</el-tag>\r\n </template>\r\n </el-table-column>\r\n <el-table-column label=\"Action\" class-name=\"center-align\">\r\n <template slot-scope=\"scope\">\r\n <el-button\r\n v-if=\"scope.row.ProjectSubmissionStatus == 'Submitted' && scope.row.InstructorReviewStatus == ''\r\n && assignment.Tasks && assignment.Tasks.filter(t => t.Type == 'instructor_review') && assignment.Tasks.filter(t => t.Type == 'instructor_review').length > 0\"\r\n size=\"mini\"\r\n @click=\"scorePaper(scope.$index, scope.row)\"\r\n >\r\n Score\r\n </el-button>\r\n <el-button\r\n v-else-if=\"scope.row.ProjectSubmissionStatus == 'Submitted' && scope.row.InstructorReviewStatus == 'In Progress'\r\n && assignment.Tasks && assignment.Tasks.filter(t => t.Type == 'instructor_review') && assignment.Tasks.filter(t => t.Type == 'instructor_review').length > 0\"\r\n size=\"mini\"\r\n @click=\"scorePaper(scope.$index, scope.row)\"\r\n >\r\n Continue\r\n </el-button>\r\n <el-button\r\n v-else-if=\"scope.row.ProjectSubmissionStatus == 'Submitted'\"\r\n size=\"mini\"\r\n @click=\"scorePaper(scope.$index, scope.row)\"\r\n >\r\n View\r\n </el-button>\r\n </template>\r\n </el-table-column>\r\n </el-table-column>\r\n </el-table>\r\n\r\n <el-table\r\n v-else\r\n :data=\"tableData.filter(data => !search || data.Name.toLowerCase().includes(search.toLowerCase()))\"\r\n style=\"text-align:center; width: 100%\"\r\n height=\"82vh\"\r\n :default-sort=\"{prop: 'date', order: 'descending'}\"\r\n >\r\n <el-table-column sortable fixed prop=\"Name\" label=\"Student Name\" />\r\n <el-table-column v-if=\"(taskType == undefined || taskType == 'self_review') && assignment.Tasks && assignment.Tasks.filter(t => t.Type == 'self_review') && assignment.Tasks.filter(t => t.Type == 'self_review').length > 0\" label=\"Self Review Submission\" class-name=\"center-align\">\r\n <el-table-column label=\"Status\" class-name=\"center-align\">\r\n <template slot-scope=\"scope\">\r\n <el-tag v-if=\"scope.row.SelfReviewStatus == 'Completed'\" type=\"success\">{{ scope.row.SelfReviewStatus }}</el-tag>\r\n <el-tag v-else-if=\"scope.row.SelfReviewStatus == 'In Progress'\" type=\"warning\">{{ scope.row.SelfReviewStatus }}</el-tag>\r\n <el-tag v-else-if=\"scope.row.SelfReviewStatus == 'No Submission'\" type=\"danger\">{{ scope.row.SelfReviewStatus }}</el-tag>\r\n </template>\r\n </el-table-column>\r\n <el-table-column label=\"Action\" class-name=\"center-align\">\r\n <template slot-scope=\"scope\">\r\n <el-button\r\n v-if=\" scope.row.SelfReviewStatus == 'Completed'\"\r\n size=\"mini\"\r\n @click=\"viewSelfReview(scope.$index, scope.row)\"\r\n >\r\n View\r\n </el-button>\r\n </template>\r\n </el-table-column>\r\n </el-table-column>\r\n <el-table-column v-if=\"(taskType == undefined || taskType == 'peer_review') && assignment.Tasks && assignment.Tasks.filter(t => t.Type == 'peer_review') && assignment.Tasks.filter(t => t.Type == 'peer_review').length > 0\" label=\"Peer Review Submission\" class-name=\"center-align\">\r\n <el-table-column prop=\"PeerReviewGroup\" label=\"Group\" class-name=\"center-align\" sortable :sort-method=\"sortPeerReviewGroup\">\r\n <!-- :sort-method=sortByGroup> -->\r\n <!-- <template slot-scope=\"scope\">\r\n 1\r\n </template> -->\r\n </el-table-column>\r\n <el-table-column label=\"Status\" class-name=\"center-align\">\r\n <template slot-scope=\"scope\">\r\n <span v-if=\"assignment.Tasks && assignment.Tasks.filter(t => t.Type == 'peer_review') && assignment.Tasks.filter(t => t.Type == 'peer_review').length > 0\">\r\n <el-tag v-if=\"scope.row.PeerReviewStatus == 'Completed'\" type=\"success\">{{ scope.row.PeerReviewStatus }} {{ scope.row.CompletedPeerReview }}</el-tag>\r\n <el-tag v-else-if=\"scope.row.PeerReviewStatus == 'In Progress'\" type=\"warning\">\r\n <span>\r\n {{ scope.row.PeerReviewStatus }} {{ scope.row.CompletedPeerReview }}\r\n <el-tooltip class=\"item\" effect=\"light\" content=\"Selected courses will be used for substitutions\" placement=\"top\">\r\n <div slot=\"content\">\r\n Peer Review is in progress. All team members have submitted papers,\r\n <br>but the student has not completed all of their reviews.\r\n </div>\r\n <i class=\"fas fa-question-circle\" style=\"font-size: 14px;\" />\r\n </el-tooltip>\r\n </span>\r\n </el-tag>\r\n\r\n <el-tag v-else-if=\"scope.row.PeerReviewStatus == 'Partially Completed'\" type=\"warning\">\r\n <span>\r\n {{ scope.row.PeerReviewStatus }} {{ scope.row.CompletedPeerReview }}\r\n <el-tooltip class=\"item\" effect=\"light\" content=\"Selected courses will be used for substitutions\" placement=\"top\">\r\n <div slot=\"content\">\r\n The peer review is partially completed. The student have reviewed all available papers,\r\n <br>but there are team members who have not submitted their papers yet.\r\n </div>\r\n <i class=\"fas fa-question-circle\" style=\"font-size: 14px;\" />\r\n </el-tooltip>\r\n </span>\r\n </el-tag>\r\n\r\n <el-tag v-else-if=\"scope.row.PeerReviewStatus == 'No Submission'\" type=\"danger\">{{ scope.row.PeerReviewStatus }}</el-tag>\r\n </span>\r\n <span v-else />\r\n </template>\r\n </el-table-column>\r\n <el-table-column label=\"Action\" class-name=\"center-align\">\r\n <template slot-scope=\"scope\">\r\n <el-button\r\n v-if=\"scope.row.PeerReviewStatus != 'No Submission'\"\r\n size=\"mini\"\r\n @click=\"viewPeerReview(scope.$index, scope.row)\"\r\n >\r\n View\r\n </el-button>\r\n </template>\r\n </el-table-column>\r\n </el-table-column>\r\n\r\n <el-table-column v-if=\"(taskType == undefined || taskType == 'appraisal') && assignment.Tasks && assignment.Tasks.filter(t => t.Type == 'appraisal') && assignment.Tasks.filter(t => t.Type == 'appraisal').length > 0\" label=\"Appraisal Submission\" class-name=\"center-align\">\r\n <el-table-column label=\"Status\" class-name=\"center-align\">\r\n <template slot-scope=\"scope\">\r\n <el-tag v-if=\"scope.row.AppraisalStatus == 'Completed'\" type=\"success\">{{ scope.row.AppraisalStatus }}</el-tag>\r\n <el-tag v-else-if=\"scope.row.AppraisalStatus == 'In Progress'\" type=\"warning\">{{ scope.row.AppraisalStatus }}</el-tag>\r\n <el-tag v-else-if=\"scope.row.AppraisalStatus == 'No Submission'\" type=\"danger\">{{ scope.row.AppraisalStatus }}</el-tag>\r\n </template>\r\n </el-table-column>\r\n <el-table-column label=\"Action\" class-name=\"center-align\">\r\n <template slot-scope=\"scope\">\r\n <el-button\r\n v-if=\" scope.row.AppraisalStatus == 'Completed'\"\r\n size=\"mini\"\r\n @click=\"viewAppraisal(scope.$index, scope.row)\"\r\n >\r\n View\r\n </el-button>\r\n </template>\r\n </el-table-column>\r\n </el-table-column>\r\n\r\n <el-table-column v-if=\"(taskType == undefined || taskType == 'instructor_review')\" label=\"Project Submission\" class-name=\"center-align\">\r\n <el-table-column label=\"Submission Status\" class-name=\"center-align\">\r\n <template slot-scope=\"scope\">\r\n <el-tag v-if=\"scope.row.ProjectSubmissionStatus == 'Submitted'\" type=\"success\">{{ scope.row.ProjectSubmissionStatus }}</el-tag>\r\n <el-tag v-else-if=\"scope.row.ProjectSubmissionStatus == 'No Submission'\" type=\"danger\">{{ scope.row.ProjectSubmissionStatus }}</el-tag>\r\n <el-tag v-else>{{ scope.row.ProjectSubmissionStatus }}</el-tag>\r\n </template>\r\n </el-table-column>\r\n <el-table-column\r\n v-if=\"assignment.Tasks && assignment.Tasks.filter(t => t.Type == 'instructor_review') && assignment.Tasks.filter(t => t.Type == 'instructor_review').length > 0\"\r\n label=\"Scoring Status\"\r\n class-name=\"center-align\">\r\n <template slot-scope=\"scope\">\r\n <el-tag v-if=\"scope.row.InstructorReviewStatus == 'Scored'\" type=\"success\">{{ scope.row.InstructorReviewStatus }}</el-tag>\r\n <el-tag v-else-if=\"scope.row.InstructorReviewStatus == 'In Progress'\" type=\"warning\">{{ scope.row.InstructorReviewStatus }}</el-tag>\r\n </template>\r\n </el-table-column>\r\n <el-table-column label=\"Action\" class-name=\"center-align\">\r\n <template slot-scope=\"scope\">\r\n <el-button\r\n v-if=\"scope.row.ProjectSubmissionStatus == 'Submitted' && scope.row.InstructorReviewStatus == ''\r\n && assignment.Tasks && assignment.Tasks.filter(t => t.Type == 'instructor_review') && assignment.Tasks.filter(t => t.Type == 'instructor_review').length > 0\"\r\n size=\"mini\"\r\n @click=\"scorePaper(scope.$index, scope.row)\"\r\n >\r\n Score\r\n </el-button>\r\n <el-button\r\n v-else-if=\"scope.row.ProjectSubmissionStatus == 'Submitted' && scope.row.InstructorReviewStatus == 'In Progress'\r\n && assignment.Tasks && assignment.Tasks.filter(t => t.Type == 'instructor_review') && assignment.Tasks.filter(t => t.Type == 'instructor_review').length > 0\"\r\n size=\"mini\"\r\n @click=\"scorePaper(scope.$index, scope.row)\"\r\n >\r\n Continue\r\n </el-button>\r\n <el-button\r\n v-else-if=\"scope.row.ProjectSubmissionStatus == 'Submitted'\"\r\n size=\"mini\"\r\n @click=\"scorePaper(scope.$index, scope.row)\"\r\n >\r\n View\r\n </el-button>\r\n </template>\r\n </el-table-column>\r\n </el-table-column>\r\n </el-table>\r\n </div>\r\n </div>\r\n</template>\r\n\r\n<script>\r\nimport * as submissionService from '@/services/submission.service'\r\nimport * as teamFormationService from '@/services/team_formation.service'\r\nimport * as assignmentService from '@/services/assignment.service'\r\nimport { Notification } from 'element-ui'\r\n// Handle UI and logics for the Student Submissions page.\r\nexport default {\r\n\tdata() {\r\n\t\treturn {\r\n\t\t\ttermCode: this.$store.state.enrollment.termCode,\r\n\t\t\torgCode: this.$store.state.enrollment.orgCode,\r\n\t\t\tclassCode: this.$store.state.enrollment.currentCourse.ClassCode,\r\n\t\t\tassignment: null,\r\n\t\t\tassignmentId: this.$route.params.id,\r\n\t\t\tisGroupProject: false,\r\n\t\t\ttableData: [],\r\n\t\t\tsearch: '',\r\n\t\t\tcurrentCourse: this.$store.state.enrollment.currentCourse,\r\n\t\t\tstudentUploads: [],\r\n\t\t\tinstructorReviews: [],\r\n\t\t\tpeerReviewSubmissions: [],\r\n\t\t\tselfReviewSubmissions: [],\r\n\t\t\tappraisalSubmisions: [],\r\n\t\t\tmembersCount: [],\r\n\t\t\tgroups: [],\r\n\t\t\tteamFormations: [],\r\n\t\t\ttaskType: null\r\n\t\t}\r\n\t},\r\n\tcreated() {\r\n\t\tthis.taskType = this.getUrlParameter('task')\r\n\t\tthis.getAssignment()\r\n\t},\r\n\t methods: {\r\n\t\tgetUrlParameter(sParam) {\r\n\t\t\tconst sPageURL = decodeURIComponent(window.location.search.substring(1))\r\n\t\t\tconst sURLVariables = sPageURL.split('&')\r\n\t\t\tlet sParameterName\r\n\t\t\tlet i\r\n\t\t\tfor (i = 0; i < sURLVariables.length; i++) {\r\n\t\t\t\tsParameterName = sURLVariables[i].split('=')\r\n\r\n\t\t\t\tif (sParameterName[0] === sParam) {\r\n\t\t\t\t\treturn sParameterName[1] === undefined ? true : sParameterName[1]\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t},\r\n\t\tsortPeerReviewGroup(a, b) {\r\n\t\t\tif (a.PeerReviewGroup == 'Not Assigned') {\r\n\t\t\t\treturn -1\r\n\t\t\t}\r\n\t\t\tif (b.PeerReviewGroup == 'Not Assigned') {\r\n\t\t\t\treturn 1\r\n\t\t\t}\r\n\t\t\tif (a.PeerReviewGroup < b.PeerReviewGroup) return -1\r\n\t\t\tif (a.PeerReviewGroup > b.PeerReviewGroup) return 1\r\n\t\t\treturn 0\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Get project by id.\r\n\t\tasync getAssignment() {\r\n\t\t\tif (this.assignmentId != 'undefined') {\r\n\t\t\t\tthis.assignment = await assignmentService.getAssignmentById(this.assignmentId)\r\n\t\t\t\tif (this.assignment) {\r\n\t\t\t\t\tthis.isGroupProject = this.assignment.IsGroupAssignment\r\n\r\n\t\t\t\t\tif (this.isGroupProject) {\r\n\t\t\t\t\t\tawait this.getGroups()\r\n\t\t\t\t\t}\r\n\t\t\t\t\tawait this.getSubmissions()\r\n\t\t\t\t\tawait this.getInstructorReviewStatus()\r\n\t\t\t\t\tif (this.assignment.Tasks && this.assignment.Tasks.filter(t => t.Type == 'peer_review') && this.assignment.Tasks.filter(t => t.Type == 'peer_review').length > 0) {\r\n\t\t\t\t\t\tawait this.getPeerReviewSubmission()\r\n\t\t\t\t\t\tawait this.getTeamAssignment()\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif (this.assignment.Tasks && this.assignment.Tasks.filter(t => t.Type == 'self_review') && this.assignment.Tasks.filter(t => t.Type == 'self_review').length > 0) { await this.getSelfReviewSubmission() }\r\n\t\t\t\t\tif (this.assignment.Tasks && this.assignment.Tasks.filter(t => t.Type == 'appraisal') && this.assignment.Tasks.filter(t => t.Type == 'appraisal').length > 0) { await this.getAppraisalSubmission() }\r\n\t\t\t\t\tthis.formTableData()\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tthis.$router.push('/course/' + this.classCode + '/projects')\r\n\t\t\t}\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Get students' latest submission for a project.\r\n\t\tasync getSubmissions() {\r\n\t\t\tconst studentUploads = await submissionService.getLatestSubmissions(this.termCode, this.orgCode, this.classCode, this.assignmentId)\r\n\t\t\tif (studentUploads && studentUploads.length > 0) { this.studentUploads = studentUploads }\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Get instructor review status for a project.\r\n\t\tasync getInstructorReviewStatus() {\r\n\t\t\tconst instructorReviews = await submissionService.getInstructorReviewStatus(this.termCode, this.orgCode, this.classCode, this.assignmentId)\r\n\t\t\tif (instructorReviews && instructorReviews.length > 0) { this.instructorReviews = instructorReviews }\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Get peer review submission status for project.\r\n\t\tasync getPeerReviewSubmission() {\r\n\t\t\tlet reviewType = 'peer_review'\r\n\t\t\tif (this.isGroupProject) { reviewType = 'group_peer_review' }\r\n\t\t\tconst peerReviewSubmissions = await submissionService.getReviewSubmission(this.termCode, this.orgCode, this.classCode, this.assignmentId, reviewType)\r\n\t\t\tif (peerReviewSubmissions && peerReviewSubmissions.length > 0) { this.peerReviewSubmissions = peerReviewSubmissions }\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Get team assignment for a project.\r\n\t\tasync getTeamAssignment() {\r\n\t\t\t// let reviewType = 'peer_review'\r\n\t\t\t// if (this.isGroupProject) { reviewType = 'group_peer_review' }\r\n\t\t\t// const membersCount = await teamFormationService.getMembersCount(this.termCode, this.orgCode, this.classCode, this.assignmentId, reviewType)\r\n\t\t\t// if (membersCount && membersCount.length > 0) { this.membersCount = membersCount }\r\n\t\t\tthis.teamFormations = await teamFormationService.getTeamFormationByAssignmentId(this.termCode, this.orgCode, this.classCode, this.assignmentId)\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Get self review submissions for a project\r\n\t\tasync getSelfReviewSubmission() {\r\n\t\t\tconst selfReviewSubmissions = await submissionService.getReviewSubmission(this.termCode, this.orgCode, this.classCode, this.assignmentId, 'self_review')\r\n\t\t\tif (selfReviewSubmissions && selfReviewSubmissions.length > 0) { this.selfReviewSubmissions = selfReviewSubmissions }\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Get self review submissions for a project\r\n\t\tasync getAppraisalSubmission() {\r\n\t\t\tconst appraisalSubmisions = await submissionService.getReviewSubmission(this.termCode, this.orgCode, this.classCode, this.assignmentId, 'appraisal')\r\n\t\t\tif (appraisalSubmisions && appraisalSubmisions.length > 0) { this.appraisalSubmisions = appraisalSubmisions }\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Get data for displaying the submissions table.\r\n\t\tformTableData() {\r\n\t\t\tlet items = this.$store.state.viewAs.students\r\n\t\t\tif (this.isGroupProject) { items = this.groups }\r\n\t\t\tconst that = this\r\n\t\t\titems.forEach(function(item) {\r\n\t\t\t\tconst itemId = that.isGroupProject ? item.TeamId : item.UserName// .substring(4, item.UserName.length);\r\n\t\t\t\tconst itemName = that.isGroupProject ? 'Group ' + item.TeamId : item.FullName\r\n\t\t\t\tlet selfReviewStatus = 'No Submission'\r\n\t\t\t\tlet peerReviewStatus = 'No Submission'\r\n\t\t\t\tlet appraisalStatus = 'No Submission'\r\n\t\t\t\tlet completedPeerReview = ''\r\n\t\t\t\tlet projectSubmissionStatus = 'No Submission'\r\n\t\t\t\tlet instructorReviewStatus = ''\r\n\t\t\t\tlet peerReviewGroup = 'Not Assigned'\r\n\t\t\t\tif (that.selfReviewSubmissions && that.selfReviewSubmissions.length > 0) {\r\n\t\t\t\t\tconst selfReviewSubmission = that.selfReviewSubmissions.filter(function(el) {\r\n\t\t\t\t\t\treturn el.StudentId == itemId\r\n\t\t\t\t\t})\r\n\t\t\t\t\tif (selfReviewSubmission && selfReviewSubmission.length > 0) {\r\n\t\t\t\t\t\tif (selfReviewSubmission[0].InProgress == 'Y') { selfReviewStatus = 'In Progress' } else { selfReviewStatus = 'Completed' }\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (that.appraisalSubmisions && that.appraisalSubmisions.length > 0) {\r\n\t\t\t\t\tconst appraisalSubmision = that.appraisalSubmisions.filter(function(el) {\r\n\t\t\t\t\t\treturn el.StudentId == itemId\r\n\t\t\t\t\t})\r\n\t\t\t\t\tif (appraisalSubmision && appraisalSubmision.length > 0) {\r\n\t\t\t\t\t\tif (appraisalSubmision[0].InProgress == 'Y') { appraisalStatus = 'In Progress' } else { appraisalStatus = 'Completed' }\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (that.peerReviewSubmissions && that.peerReviewSubmissions.length > 0) {\r\n\t\t\t\t\tconst peerReviewSubmission = that.peerReviewSubmissions.filter(function(el) {\r\n\t\t\t\t\t\treturn el.StudentId == itemId\r\n\t\t\t\t\t})\r\n\t\t\t\t\tif (peerReviewSubmission && peerReviewSubmission.length > 0) {\r\n\t\t\t\t\t\tpeerReviewStatus = peerReviewSubmission[0].Status\r\n\t\t\t\t\t\tcompletedPeerReview = '(' + peerReviewSubmission[0].ReviewsCompleted + '/' + peerReviewSubmission[0].TeamMemberCount + ')'\r\n\t\t\t\t\t\t// const memberCount = that.membersCount.filter(function(el) {\r\n\t\t\t\t\t\t// \treturn el.StudentId == itemId\r\n\t\t\t\t\t\t// })\r\n\t\t\t\t\t\t// let isCompleted = true\r\n\t\t\t\t\t\t// let completedCount = 0\r\n\t\t\t\t\t\t// peerReviewSubmission.forEach(function(pr) {\r\n\t\t\t\t\t\t// \tif (pr.InProgress == 'Y') {\r\n\t\t\t\t\t\t// \t\tisCompleted = false\r\n\t\t\t\t\t\t// \t} else {\r\n\t\t\t\t\t\t// \t\tcompletedCount++\r\n\t\t\t\t\t\t// \t}\r\n\t\t\t\t\t\t// })\r\n\t\t\t\t\t\t// if (isCompleted == false || (completedCount != memberCount[0].TotalMember)) { peerReviewStatus = 'In Progress' } else { peerReviewStatus = 'Completed' }\r\n\t\t\t\t\t\t// completedPeerReview = '(' + completedCount + '/' + memberCount[0].TotalMember + ')'\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (that.teamFormations && that.teamFormations.length > 0) {\r\n\t\t\t\t\tconst teamFormation = that.teamFormations.filter(t => t.MemberId == itemId && t.AssignmentType == 'peer_review')\r\n\r\n\t\t\t\t\tif (teamFormation && teamFormation.length > 0) {\r\n\t\t\t\t\t\tpeerReviewGroup = teamFormation[0].TeamId\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (that.studentUploads && that.studentUploads.length > 0) {\r\n\t\t\t\t\tconst studentUpload = that.studentUploads.filter(function(el) {\r\n\t\t\t\t\t\treturn el.StudentId == itemId\r\n\t\t\t\t\t})\r\n\t\t\t\t\tif (studentUpload && studentUpload.length > 0) {\r\n\t\t\t\t\t\tprojectSubmissionStatus = 'Submitted'\r\n\t\t\t\t\t\tif (that.instructorReviews && that.instructorReviews.length > 0) {\r\n\t\t\t\t\t\t\tconst instructorReview = that.instructorReviews.filter(function(el) {\r\n\t\t\t\t\t\t\t\treturn el.StudentId == itemId\r\n\t\t\t\t\t\t\t})\r\n\t\t\t\t\t\t\tif (instructorReview && instructorReview.length > 0) {\r\n\t\t\t\t\t\t\t\tif (instructorReview[0].InProgress == 'Y') { instructorReviewStatus = 'In Progress' } else { instructorReviewStatus = 'Scored' }\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tconst submissionData = {\r\n\t\t\t\t\tId: itemId,\r\n\t\t\t\t\tName: itemName,\r\n\t\t\t\t\tSelfReviewStatus: selfReviewStatus,\r\n\t\t\t\t\tPeerReviewStatus: peerReviewStatus,\r\n\t\t\t\t\tAppraisalStatus: appraisalStatus,\r\n\t\t\t\t\tCompletedPeerReview: completedPeerReview,\r\n\t\t\t\t\tPeerReviewGroup: peerReviewGroup,\r\n\t\t\t\t\tProjectSubmissionStatus: projectSubmissionStatus,\r\n\t\t\t\t\tInstructorReviewStatus: instructorReviewStatus,\r\n\t\t\t\t\tMembers: item.Members\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthat.tableData.push(submissionData)\r\n\t\t\t})\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Get group project team assignment for a project.\r\n\t\tasync getGroups() {\r\n\t\t\tconst groups = await teamFormationService.getAssignedTeams(this.termCode, this.orgCode, this.classCode,\r\n\t\t\t\tthis.assignmentId, 'group_project')\r\n\t\t\tif (groups && groups.length > 0) {\r\n\t\t\t\tthis.groups = groups\r\n\t\t\t} else {\r\n\t\t\t\tNotification.info({\r\n\t\t\t\t\tduration: 6000,\r\n\t\t\t\t\ttitle: 'Info',\r\n\t\t\t\t\tmessage: 'No team assignments found for this group project.'\r\n\t\t\t\t})\r\n\t\t\t}\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Go to instructor review page.\r\n\t\tasync scorePaper(index, row) {\r\n\t\t\tthis.$router.push('/instructor_review?revieweeId=' + row.Id + '&assignmentId=' + this.$route.params.id)\r\n\t\t},\r\n\t\thandleDelete(index, row) {\r\n\t\t\tconsole.log(index, row)\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Go to self review page.\r\n\t\tviewSelfReview(index, row) {\r\n\t\t\tthis.$router.push('/self_review?assignmentId=' + this.assignmentId + '&reviewerId=' + row.Id)\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Go to peer review page.\r\n\t\tviewPeerReview(index, row) {\r\n\t\t\tthis.$router.push('/peer_review?assignmentId=' + this.assignmentId + '&reviewerId=' + row.Id)\r\n\t\t},\r\n\t\tviewAppraisal(index, row) {\r\n\t this.$router.push('/student/appraisal/' + this.assignmentId + '/student/' + row.Id + '?action=score')\r\n\t\t}\r\n\t}\r\n}\r\n</script>\r\n\r\n<style scoped>\r\n.el-table__empty-text{\r\n\tdisplay: none;\r\n}\r\n.student-submission-wrapper{\r\n padding: 20px;\r\n /* background-color: #f5f5f5; */\r\n box-shadow: 20px 10px 25px 20px rgba(109, 107, 107, 0.1);\r\n}\r\n</style>\r\n<style>\r\n.center-align{\r\n text-align: center !important;\r\n}\r\n</style>\r\n\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./StudentSubmissions.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./StudentSubmissions.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./StudentSubmissions.vue?vue&type=template&id=38267144&scoped=true&\"\nimport script from \"./StudentSubmissions.vue?vue&type=script&lang=js&\"\nexport * from \"./StudentSubmissions.vue?vue&type=script&lang=js&\"\nimport style0 from \"./StudentSubmissions.vue?vue&type=style&index=0&id=38267144&scoped=true&lang=css&\"\nimport style1 from \"./StudentSubmissions.vue?vue&type=style&index=1&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"38267144\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('div',{staticClass:\"breadcumb\"},[_c('div',{staticClass:\"ic-app-crumbs\"},[_c('span',{staticClass:\"breadcumb-text\"},[(_vm.currentCourse)?_c('router-link',{staticStyle:{\"color\":\"#4E5E63\"},attrs:{\"to\":{ path: '/course/'+ _vm.currentCourse.ClassCode +'/projects' }}},[_vm._v(\"\\n \"+_vm._s(_vm.currentCourse.ClassDescription)+\"\\n \")]):_vm._e(),_c('i',{staticClass:\"fas fa-chevron-right breadcumb-next\"}),(_vm.assignment)?_c('span',[_vm._v(\"\\n \"+_vm._s(_vm.assignment.AssignmentName)+\"\\n \")]):_vm._e(),_c('i',{staticClass:\"fas fa-chevron-right breadcumb-next\"}),_vm._v(\"\\n Student Scores\\n \")],1)])]),_c('div',{staticClass:\"student-submission-wrapper\"},[_c('el-input',{staticStyle:{\"width\":\"200px\"},attrs:{\"size\":\"mini\",\"placeholder\":\"Search for student submission\"},model:{value:(_vm.search),callback:function ($$v) {_vm.search=$$v},expression:\"search\"}}),(_vm.isGroupProject)?_c('el-table',{staticStyle:{\"text-align\":\"center\",\"width\":\"100%\"},attrs:{\"data\":_vm.tableData.filter(function (data) { return !_vm.search || data.Name.toLowerCase().includes(_vm.search.toLowerCase()); }),\"height\":\"82vh\",\"default-sort\":{prop: 'date', order: 'descending'}}},[_c('el-table-column',{attrs:{\"sortable\":\"\",\"fixed\":\"\",\"prop\":\"Name\",\"label\":\"Group Name\"}}),_c('el-table-column',{staticStyle:{\"text-align\":\"center\",\"vertical-align\":\"middle\"},attrs:{\"fixed\":\"\",\"label\":\"Group Members\"},scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [(scope.row.Members.length > 0)?_c('div',_vm._l((scope.row.Members),function(member,idx){return _c('div',{key:member.MemberId},[_c('span',[_vm._v(_vm._s((idx + 1) + '. ' + member.Name))])])}),0):_c('div',[_c('span')])]}}],null,false,2977135005)}),(_vm.assignment && _vm.assignment.UseSelfAssessment)?_c('el-table-column',{staticStyle:{\"text-align\":\"center\",\"vertical-align\":\"middle\"},attrs:{\"fixed\":\"\",\"label\":\"Self Review Holistic Score\"},scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [_c('span',[_vm._v(\"\\n \"+_vm._s(scope.row.SelfReviewScore)+\"\\n \")])]}}],null,false,460342184)}):_vm._e(),(_vm.assignment && _vm.assignment.UsePeerReview)?_c('el-table-column',{staticStyle:{\"text-align\":\"center\",\"vertical-align\":\"middle\"},attrs:{\"fixed\":\"\",\"label\":\"Peer Review Holistic Score\"},scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [(scope.row.ReviewerScores.length > 0)?_c('div',_vm._l((scope.row.ReviewerScores),function(reviewer){return _c('div',{key:reviewer.ReviewerId},[_c('span',[_vm._v(\"\\n \"+_vm._s(reviewer.ReviewerName)+\":\\n \")]),_c('span',[_vm._v(\"\\n \"+_vm._s(reviewer.ReviewerScore)+\"\\n \")])])}),0):_c('div',[_c('span')])]}}],null,false,1117703175)}):_vm._e(),(_vm.assignment)?_c('el-table-column',{staticStyle:{\"text-align\":\"center\",\"vertical-align\":\"middle\"},attrs:{\"fixed\":\"\",\"label\":\"Instructor Review Holistic Score\"},scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [_c('span',[_vm._v(\"\\n \"+_vm._s(scope.row.InstructorScore)+\"\\n \")])]}}],null,false,3242557795)}):_vm._e()],1):_c('el-table',{staticStyle:{\"text-align\":\"center\",\"width\":\"100%\"},attrs:{\"data\":_vm.tableData.filter(function (data) { return !_vm.search || data.StudentName.toLowerCase().includes(_vm.search.toLowerCase()); }),\"height\":\"82vh\",\"default-sort\":{prop: 'date', order: 'descending'}}},[_c('el-table-column',{attrs:{\"sortable\":\"\",\"fixed\":\"\",\"prop\":\"Name\",\"label\":\"Student Name\"}}),(_vm.assignment && _vm.assignment.UseSelfAssessment)?_c('el-table-column',{staticStyle:{\"text-align\":\"center\",\"vertical-align\":\"middle\"},attrs:{\"fixed\":\"\",\"label\":\"Self Review Holistic Score\"},scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [_c('span',[_vm._v(\"\\n \"+_vm._s(scope.row.SelfReviewScore)+\"\\n \")])]}}],null,false,460342184)}):_vm._e(),(_vm.assignment && _vm.assignment.UsePeerReview)?_c('el-table-column',{staticStyle:{\"text-align\":\"center\",\"vertical-align\":\"middle\"},attrs:{\"fixed\":\"\",\"label\":\"Peer Review Holistic Score\"},scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [(scope.row.ReviewerScores.length > 0)?_c('div',_vm._l((scope.row.ReviewerScores),function(reviewer){return _c('div',{key:reviewer.ReviewerId},[_c('span',[_vm._v(\"\\n \"+_vm._s(reviewer.ReviewerName)+\":\\n \")]),_c('span',[_vm._v(\"\\n \"+_vm._s(reviewer.ReviewerScore)+\"\\n \")])])}),0):_c('div',[_c('span')])]}}],null,false,1117703175)}):_vm._e(),(_vm.assignment)?_c('el-table-column',{staticStyle:{\"text-align\":\"center\",\"vertical-align\":\"middle\"},attrs:{\"fixed\":\"\",\"label\":\"Instructor Review Holistic Score\"},scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [_c('span',[_vm._v(\"\\n \"+_vm._s(scope.row.InstructorScore)+\"\\n \")])]}}],null,false,3242557795)}):_vm._e()],1)],1)])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n <div>\r\n <div class=\"breadcumb\">\r\n <div class=\"ic-app-crumbs\">\r\n <span class=\"breadcumb-text\">\r\n <router-link v-if=\"currentCourse\" :to=\"{ path: '/course/'+ currentCourse.ClassCode +'/projects' }\" style=\"color: #4E5E63;\">\r\n {{ currentCourse.ClassDescription }}\r\n </router-link>\r\n <i class=\"fas fa-chevron-right breadcumb-next\" />\r\n <span v-if=\"assignment\">\r\n {{ assignment.AssignmentName }}\r\n </span>\r\n <i class=\"fas fa-chevron-right breadcumb-next\" />\r\n Student Scores\r\n </span>\r\n </div>\r\n </div>\r\n <div class=\"student-submission-wrapper\">\r\n <el-input\r\n v-model=\"search\"\r\n size=\"mini\"\r\n placeholder=\"Search for student submission\"\r\n style=\"width: 200px;\"\r\n />\r\n\r\n <el-table\r\n v-if=\"isGroupProject\"\r\n :data=\"tableData.filter(data => !search || data.Name.toLowerCase().includes(search.toLowerCase()))\"\r\n style=\"text-align:center; width: 100%\"\r\n height=\"82vh\"\r\n :default-sort=\"{prop: 'date', order: 'descending'}\"\r\n >\r\n <el-table-column sortable fixed prop=\"Name\" label=\"Group Name\" />\r\n <el-table-column fixed label=\"Group Members\" style=\"text-align: center; vertical-align: middle;\">\r\n <template slot-scope=\"scope\">\r\n <div v-if=\"scope.row.Members.length > 0\">\r\n <div v-for=\"(member, idx) in scope.row.Members\" :key=\"member.MemberId\">\r\n <span>{{ (idx + 1) + '. ' + member.Name }}</span>\r\n </div>\r\n </div>\r\n <div v-else>\r\n <span />\r\n </div>\r\n </template>\r\n </el-table-column>\r\n\r\n <el-table-column v-if=\"assignment && assignment.UseSelfAssessment\" fixed label=\"Self Review Holistic Score\" style=\"text-align: center; vertical-align: middle;\">\r\n <template slot-scope=\"scope\">\r\n <span>\r\n {{ scope.row.SelfReviewScore }}\r\n </span>\r\n </template>\r\n </el-table-column>\r\n <el-table-column v-if=\"assignment && assignment.UsePeerReview\" fixed label=\"Peer Review Holistic Score\" style=\"text-align: center; vertical-align: middle;\">\r\n <template slot-scope=\"scope\">\r\n <div v-if=\"scope.row.ReviewerScores.length > 0\">\r\n <div v-for=\"reviewer in scope.row.ReviewerScores\" :key=\"reviewer.ReviewerId\">\r\n <span>\r\n {{ reviewer.ReviewerName }}:\r\n </span>\r\n <span>\r\n {{ reviewer.ReviewerScore }}\r\n </span>\r\n </div>\r\n </div>\r\n <div v-else>\r\n <span />\r\n </div>\r\n </template>\r\n </el-table-column>\r\n <el-table-column v-if=\"assignment\" fixed label=\"Instructor Review Holistic Score\" style=\"text-align: center; vertical-align: middle;\">\r\n <template slot-scope=\"scope\">\r\n <span>\r\n {{ scope.row.InstructorScore }}\r\n </span>\r\n </template>\r\n </el-table-column>\r\n </el-table>\r\n\r\n <el-table\r\n v-else\r\n :data=\"tableData.filter(data => !search || data.StudentName.toLowerCase().includes(search.toLowerCase()))\"\r\n style=\"text-align:center; width: 100%\"\r\n height=\"82vh\"\r\n :default-sort=\"{prop: 'date', order: 'descending'}\"\r\n >\r\n <el-table-column sortable fixed prop=\"Name\" label=\"Student Name\" />\r\n\r\n <el-table-column v-if=\"assignment && assignment.UseSelfAssessment\" fixed label=\"Self Review Holistic Score\" style=\"text-align: center; vertical-align: middle;\">\r\n <template slot-scope=\"scope\">\r\n <span>\r\n {{ scope.row.SelfReviewScore }}\r\n </span>\r\n </template>\r\n </el-table-column>\r\n <el-table-column v-if=\"assignment && assignment.UsePeerReview\" fixed label=\"Peer Review Holistic Score\" style=\"text-align: center; vertical-align: middle;\">\r\n <template slot-scope=\"scope\">\r\n <div v-if=\"scope.row.ReviewerScores.length > 0\">\r\n <div v-for=\"reviewer in scope.row.ReviewerScores\" :key=\"reviewer.ReviewerId\">\r\n <span>\r\n {{ reviewer.ReviewerName }}:\r\n </span> <span>\r\n {{ reviewer.ReviewerScore }}\r\n </span>\r\n </div>\r\n </div>\r\n <div v-else>\r\n <span />\r\n </div>\r\n </template>\r\n </el-table-column>\r\n <el-table-column v-if=\"assignment\" fixed label=\"Instructor Review Holistic Score\" style=\"text-align: center; vertical-align: middle;\">\r\n <template slot-scope=\"scope\">\r\n <span>\r\n {{ scope.row.InstructorScore }}\r\n </span>\r\n </template>\r\n </el-table-column>\r\n </el-table>\r\n </div>\r\n </div>\r\n</template>\r\n\r\n<script>\r\nimport * as teamFormationService from '@/services/team_formation.service'\r\nimport * as assignmentService from '@/services/assignment.service'\r\nimport * as reviewService from '@/services/review.service'\r\nimport { Notification } from 'element-ui'\r\n// Handles UI and logics for displaying the Student Holistic Scores page.\r\nexport default {\r\n\tdata() {\r\n\t\treturn {\r\n\t\t\ttermCode: this.$store.state.enrollment.termCode,\r\n\t\t\torgCode: this.$store.state.enrollment.orgCode,\r\n\t\t\tclassCode: this.$store.state.enrollment.currentCourse.ClassCode,\r\n\t\t\tassignment: null,\r\n\t\t\tassignmentId: this.$route.params.id,\r\n\t\t\tisGroupProject: false,\r\n\t\t\ttableData: [],\r\n\t\t\tsearch: '',\r\n\t\t\tcurrentCourse: this.$store.state.enrollment.currentCourse,\r\n\t\t\tinstructorScores: [],\r\n\t\t\tpeerReviewScores: [],\r\n\t\t\tselfReviewScores: [],\r\n\t\t\tgroups: []\r\n \t}\r\n\t},\r\n\tcreated() {\r\n\t\tthis.getAssignment()\r\n\t},\r\n\t methods: {\r\n\t\t// @vuese\r\n\t\t// Get projects by id.\r\n\t\tasync getAssignment() {\r\n\t\t\tthis.assignment = await assignmentService.getAssignmentById(this.assignmentId)\r\n\t\t\tif (this.assignment) {\r\n\t\t\t\tthis.isGroupProject = this.assignment.IsGroupAssignment\r\n\t\t\t\tif (this.isGroupProject) {\r\n\t\t\t\t\tawait this.getGroups()\r\n\t\t\t\t}\r\n\t\t\t\tawait this.getInstructorScores()\r\n\t\t\t\tif (this.assignment.UsePeerReview) {\r\n\t\t\t\t\tawait this.getPeerReviewScores()\r\n\t\t\t\t}\r\n\t\t\t\tif (this.assignment.UseSelfAssessment) { await this.getSelfReviewScores() }\r\n\t\t\t\tthis.formTableData()\r\n\t\t\t}\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Get group project team assignment for a project.\r\n\t\tasync getGroups() {\r\n\t\t\tconst groups = await teamFormationService.getAssignedTeams(this.termCode, this.orgCode, this.classCode,\r\n\t\t\t\tthis.assignmentId, 'group_project')\r\n\t\t\tif (groups && groups.length > 0) {\r\n\t\t\t\tthis.groups = groups\r\n\t\t\t} else {\r\n\t\t\t\tNotification.info({\r\n\t\t\t\t\tduration: 6000,\r\n\t\t\t\t\ttitle: 'Info',\r\n\t\t\t\t\tmessage: 'No team assignments found for this group project.'\r\n\t\t\t\t})\r\n\t\t\t}\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Get instructor holistic scores for a project.\r\n\t\tasync getInstructorScores() {\r\n\t\t\tconst instructorScores = await reviewService.getInstructorHolisticScores(this.termCode, this.orgCode, this.classCode, this.assignmentId)\r\n\t\t\tif (instructorScores && instructorScores.length > 0) { this.instructorScores = instructorScores }\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Get peer review holistic scores for a project.\r\n\t\tasync getPeerReviewScores() {\r\n\t\t\tlet reviewType = 'peer_review'\r\n\t\t\tif (this.isGroupProject) { reviewType = 'group_peer_review' }\r\n\t\t\tconst peerReviewScores = await reviewService.getPeerReviewHolisticScores(this.termCode, this.orgCode, this.classCode, this.assignmentId, reviewType)\r\n\t\t\tif (peerReviewScores && peerReviewScores.length > 0) { this.peerReviewScores = peerReviewScores }\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Get self review holistic scores for a project.\r\n\t\tasync getSelfReviewScores() {\r\n\t\t\tconst selfReviewScores = await reviewService.getSelfReviewHolisticScores(this.termCode, this.orgCode, this.classCode, this.assignmentId)\r\n\t\t\tif (selfReviewScores && selfReviewScores.length > 0) { this.selfReviewScores = selfReviewScores }\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Get data for displaying the scores table.\r\n\t\tformTableData() {\r\n\t\t\tlet items = this.$store.state.viewAs.students\r\n\t\t\tif (this.isGroupProject) { items = this.groups }\r\n\t\t\tconst that = this\r\n\r\n\t\t\titems.forEach(function(item) {\r\n\t\t\t\tconst itemId = that.isGroupProject ? item.TeamId : item.UserName\r\n\t\t\t\tconst itemName = that.isGroupProject ? 'Group ' + item.TeamId : item.FullName\r\n\t\t\t\tlet instructorScoreText = ''\r\n\t\t\t\tconst peerReviewScoreText = ''\r\n\t\t\t\tconst reviewerScores = []\r\n\t\t\t\tlet selfReviewScoreText = ''\r\n\r\n\t\t\t\tif (that.selfReviewScores && that.selfReviewScores.length > 0) {\r\n\t\t\t\t\tconst selfReviewScore = that.selfReviewScores.filter(function(el) {\r\n\t\t\t\t\t\treturn el.StudentId == itemId\r\n\t\t\t\t\t})\r\n\t\t\t\t\tif (selfReviewScore && selfReviewScore.length > 0) {\r\n\t\t\t\t\t\tif (selfReviewScore[0].HolisticScore == 999) { selfReviewScoreText = 'Not Given' } else { selfReviewScoreText = '' + selfReviewScore[0].HolisticScore }\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (that.peerReviewScores && that.peerReviewScores.length > 0) {\r\n\t\t\t\t\tconst peerReviewScore = that.peerReviewScores.filter(function(el) {\r\n\t\t\t\t\t\treturn el.StudentId == itemId\r\n\t\t\t\t\t})\r\n\r\n\t\t\t\t\tif (peerReviewScore && peerReviewScore.length > 0) {\r\n\t\t\t\t\t\tpeerReviewScore.forEach(function(pr) {\r\n\t\t\t\t\t\t\tlet reviewerName = ''\r\n\t\t\t\t\t\t\tif (that.isGroupProject) { reviewerName = 'Group ' + pr.ReviewerId } else {\r\n\t\t\t\t\t\t\t\tconst reviewer = items.filter(function(el) {\r\n\t\t\t\t\t\t\t\t return el.UserName == that.orgCode + ';' + pr.ReviewerId\r\n\t\t\t\t\t\t\t })\r\n\t\t\t\t\t\t\t\treviewerName = reviewer[0].FullName\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\tlet score = ''\r\n\t\t\t\t\t\t\tif (pr.HolisticScore === 999) { score = 'Not Given' } else { score = pr.HolisticScore }\r\n\r\n\t\t\t\t\t\t\tconst reviewerScore = {\r\n\t\t\t\t\t\t\t\tReviewerId: pr.ReviewerId,\r\n\t\t\t\t\t\t\t\tReviewerName: reviewerName,\r\n\t\t\t\t\t\t\t\tReviewerScore: score\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\treviewerScores.push(reviewerScore)\r\n\t\t\t\t\t\t})\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (that.instructorScores && that.instructorScores.length > 0) {\r\n\t\t\t\t\tconst instructorScore = that.instructorScores.filter(function(el) {\r\n\t\t\t\t\t\treturn el.StudentId == itemId\r\n\t\t\t\t\t})\r\n\r\n\t\t\t\t\tif (instructorScore && instructorScore.length > 0) {\r\n\t\t\t\t\t\tif (instructorScore[0].HolisticScore == 999) { instructorScoreText = 'Not Given' } else { instructorScoreText = instructorScore[0].HolisticScore }\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tconst scoresData = {\r\n\t\t\t\t\tId: itemId,\r\n\t\t\t\t\tName: itemName,\r\n\t\t\t\t\tSelfReviewScore: selfReviewScoreText,\r\n\t\t\t\t\tPeerReviewScore: peerReviewScoreText,\r\n\t\t\t\t\tReviewerScores: reviewerScores,\r\n\t\t\t\t\tInstructorScore: instructorScoreText,\r\n\t\t\t\t\tMembers: item.Members\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthat.tableData.push(scoresData)\r\n\t\t\t})\r\n\t\t},\r\n\t\thandleEdit(index, row) {\r\n\t\t\tif (this.isGroupProject) { this.$router.push('/rubric?reviewerId=' + this.$store.state.auth.user.UserName + '&groupId=' + row.GroupId + '&assignmentId=' + this.$route.params.id) } else { this.$router.push('/rubric?reviewerId=' + this.$store.state.auth.user.UserName + '&revieweeId=' + row.StudentId + '&assignmentId=' + this.$route.params.id) }\r\n\t\t},\r\n\t\thandleDelete(index, row) {\r\n\t\t\tconsole.log(index, row)\r\n\t\t}\r\n\t}\r\n}\r\n</script>\r\n\r\n<style scoped>\r\n.el-table__empty-text{\r\n\tdisplay: none;\r\n}\r\n.student-submission-wrapper{\r\n padding: 20px;\r\n box-shadow: 20px 10px 25px 20px rgba(109, 107, 107, 0.1);\r\n}\r\n</style>\r\n<style>\r\n.center-align{\r\n text-align: center !important;\r\n}\r\n</style>\r\n\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./StudentHolisticScores.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./StudentHolisticScores.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./StudentHolisticScores.vue?vue&type=template&id=4f4ece42&scoped=true&\"\nimport script from \"./StudentHolisticScores.vue?vue&type=script&lang=js&\"\nexport * from \"./StudentHolisticScores.vue?vue&type=script&lang=js&\"\nimport style0 from \"./StudentHolisticScores.vue?vue&type=style&index=0&id=4f4ece42&scoped=true&lang=css&\"\nimport style1 from \"./StudentHolisticScores.vue?vue&type=style&index=1&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"4f4ece42\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('div',{staticClass:\"breadcumb\"},[_c('div',{staticClass:\"ic-app-crumbs\"},[_c('span',{staticClass:\"breadcumb-text\"},[(_vm.currentCourse)?_c('router-link',{staticStyle:{\"color\":\"#4E5E63\"},attrs:{\"to\":{ path: '/course/'+ _vm.currentCourse.ClassCode +'/projects' }}},[_vm._v(\"\\n \"+_vm._s(_vm.currentCourse.ClassDescription)+\"\\n \")]):_vm._e(),_c('i',{staticClass:\"fas fa-chevron-right breadcumb-next\"}),(_vm.assignment)?_c('span',[_vm._v(\"\\n \"+_vm._s(_vm.assignment.AssignmentName)+\"\\n \")]):_vm._e(),_c('i',{staticClass:\"fas fa-chevron-right breadcumb-next\"}),_vm._v(\"\\n Student Scores\\n \")],1)])]),_c('div',{staticClass:\"student-submission-wrapper\"},[_c('el-input',{staticStyle:{\"width\":\"200px\",\"margin-bottom\":\"10px\"},attrs:{\"size\":\"mini\",\"placeholder\":\"Search for student scores\"},model:{value:(_vm.search),callback:function ($$v) {_vm.search=$$v},expression:\"search\"}}),_c('el-table',{ref:\"elTable\",staticStyle:{\"text-align\":\"center\",\"width\":\"100%\"},attrs:{\"id\":\"score-table\",\"data\":_vm.tableData.filter(function (data) { return !_vm.search || data.Name.toLowerCase().includes(_vm.search.toLowerCase()); }),\"height\":\"82vh\",\"default-sort\":{prop: 'date', order: 'descending'}}},[(_vm.isGroupProject)?_c('el-table-column',{attrs:{\"sortable\":\"\",\"fixed\":\"\",\"prop\":\"Name\",\"label\":\"Group Name\"}}):_c('el-table-column',{attrs:{\"fixed\":\"\",\"sortable\":\"\",\"prop\":\"Name\",\"label\":\"Student Name\"}}),(_vm.isGroupProject)?_c('el-table-column',{staticStyle:{\"text-align\":\"center\",\"vertical-align\":\"middle\"},attrs:{\"fixed\":\"\",\"label\":\"Group Members\"},scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [(scope.row.Members.length > 0)?_c('div',_vm._l((scope.row.Members),function(member,idx){return _c('div',{key:member.MemberId},[_c('span',[_vm._v(_vm._s((idx + 1) + '. ' + member.Name))])])}),0):_c('div',[_c('span')])]}}],null,false,2977135005)}):_vm._e(),(_vm.assignment)?_c('el-table-column',{attrs:{\"label\":\"Instructor Scores & Comments\",\"class-name\":\"center-align\"}},_vm._l((_vm.rubricCriteria),function(criteria){return _c('el-table-column',{key:criteria.Id,attrs:{\"label\":criteria.CriteriaName,\"class-name\":\"center-align\"}},[_c('el-table-column',{attrs:{\"class-name\":\"center-align\",\"label\":\"Score\",\"width\":\"100\"},scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [(scope.row.InstructorScore.length > 0)?_c('div',[_vm._v(\"\\n \"+_vm._s(scope.row.InstructorScore.find(function (x) { return x.CriteriaId == criteria.Id; }).Mark == 999 ? 'Not Given' : scope.row.InstructorScore.find(function (x) { return x.CriteriaId == criteria.Id; }).Mark)+\"\\n \")]):_c('div',[_c('span',[_vm._v(\"Not Given\")])])]}}],null,true)}),_c('el-table-column',{attrs:{\"class-name\":\"center-align\",\"label\":\"Comment\"},scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [(scope.row.InstructorScore.length > 0)?_c('div',{staticStyle:{\"max-height\":\"90px\"}},[_c('el-tooltip',{staticClass:\"item\",staticStyle:{\"margin-right\":\"18px\",\"margin-left\":\"0px\"},attrs:{\"effect\":\"light\",\"content\":scope.row.InstructorScore.find(function (x) { return x.CriteriaId == criteria.Id; }).Comment,\"placement\":\"bottom\",\"popper-class\":\"cutom-popper\"}},[_c('div',{staticStyle:{\"max-height\":\"90px\"}},[_vm._v(\"\\n \"+_vm._s(scope.row.InstructorScore.find(function (x) { return x.CriteriaId == criteria.Id; }).Comment)+\"\\n \")])])],1):_c('div',[_c('span',[_vm._v(\"Not Given\")])])]}}],null,true)})],1)}),1):_vm._e()],1)],1)])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n <div>\r\n <div class=\"breadcumb\">\r\n <div class=\"ic-app-crumbs\">\r\n <span class=\"breadcumb-text\">\r\n <router-link v-if=\"currentCourse\" :to=\"{ path: '/course/'+ currentCourse.ClassCode +'/projects' }\" style=\"color: #4E5E63;\">\r\n {{ currentCourse.ClassDescription }}\r\n </router-link>\r\n <i class=\"fas fa-chevron-right breadcumb-next\" />\r\n <span v-if=\"assignment\">\r\n {{ assignment.AssignmentName }}\r\n </span>\r\n <i class=\"fas fa-chevron-right breadcumb-next\" />\r\n Student Scores\r\n </span>\r\n </div>\r\n </div>\r\n <div class=\"student-submission-wrapper\">\r\n <el-input\r\n v-model=\"search\"\r\n size=\"mini\"\r\n placeholder=\"Search for student scores\"\r\n style=\"width: 200px; margin-bottom: 10px;\"\r\n />\r\n\r\n <el-table\r\n id=\"score-table\"\r\n ref=\"elTable\"\r\n :data=\"tableData.filter(data => !search || data.Name.toLowerCase().includes(search.toLowerCase()))\"\r\n style=\"text-align:center; width: 100%\"\r\n height=\"82vh\"\r\n :default-sort=\"{prop: 'date', order: 'descending'}\"\r\n >\r\n <el-table-column v-if=\"isGroupProject\" sortable fixed prop=\"Name\" label=\"Group Name\" />\r\n <el-table-column v-else fixed sortable prop=\"Name\" label=\"Student Name\" />\r\n <el-table-column v-if=\"isGroupProject\" fixed label=\"Group Members\" style=\"text-align: center; vertical-align: middle;\">\r\n <template slot-scope=\"scope\">\r\n <div v-if=\"scope.row.Members.length > 0\">\r\n <div v-for=\"(member, idx) in scope.row.Members\" :key=\"member.MemberId\">\r\n <span>{{ (idx + 1) + '. ' + member.Name }}</span>\r\n </div>\r\n </div>\r\n <div v-else>\r\n <span />\r\n </div>\r\n </template>\r\n </el-table-column>\r\n <el-table-column v-if=\"assignment\" label=\"Instructor Scores & Comments\" class-name=\"center-align\">\r\n <el-table-column v-for=\"(criteria) in rubricCriteria\" :key=\"criteria.Id\" :label=\"criteria.CriteriaName\" class-name=\"center-align\">\r\n <el-table-column class-name=\"center-align\" label=\"Score\" width=\"100\">\r\n <template slot-scope=\"scope\">\r\n <div v-if=\"scope.row.InstructorScore.length > 0\">\r\n {{ scope.row.InstructorScore.find(x => x.CriteriaId == criteria.Id).Mark == 999 ? 'Not Given' : scope.row.InstructorScore.find(x => x.CriteriaId == criteria.Id).Mark }}\r\n </div>\r\n <div v-else>\r\n <span>Not Given</span>\r\n </div>\r\n </template>\r\n </el-table-column>\r\n <el-table-column class-name=\"center-align\" label=\"Comment\">\r\n <template slot-scope=\"scope\">\r\n <div v-if=\"scope.row.InstructorScore.length > 0\" style=\"max-height: 90px;\">\r\n <el-tooltip\r\n style=\"margin-right: 18px; margin-left: 0px;\"\r\n class=\"item\"\r\n effect=\"light\"\r\n :content=\"scope.row.InstructorScore.find(x => x.CriteriaId == criteria.Id).Comment\"\r\n placement=\"bottom\"\r\n popper-class=\"cutom-popper\"\r\n >\r\n <div style=\"max-height: 90px;\">\r\n {{ scope.row.InstructorScore.find(x => x.CriteriaId == criteria.Id).Comment }}\r\n </div>\r\n </el-tooltip>\r\n </div>\r\n <div v-else>\r\n <span>Not Given</span>\r\n </div>\r\n </template>\r\n </el-table-column>\r\n </el-table-column>\r\n </el-table-column>\r\n </el-table>\r\n </div>\r\n </div>\r\n</template>\r\n\r\n<script>\r\nimport * as teamFormationService from '@/services/team_formation.service'\r\nimport * as assignmentService from '@/services/assignment.service'\r\nimport * as reviewService from '@/services/review.service'\r\nimport * as rubricService from '@/services/rubric.service'\r\nimport { Notification } from 'element-ui'\r\n// Handles UI and logics for the Student Scores page.\r\nexport default {\r\n\tdata() {\r\n\t\treturn {\r\n\t\t\ttermCode: this.$store.state.enrollment.termCode,\r\n\t\t\torgCode: this.$store.state.enrollment.orgCode,\r\n\t\t\tclassCode: this.$store.state.enrollment.currentCourse.ClassCode,\r\n\t\t\tassignment: null,\r\n\t\t\tassignmentId: this.$route.params.id,\r\n\t\t\tisGroupProject: false,\r\n\t\t\ttableData: [],\r\n\t\t\tsearch: '',\r\n\t\t\tcurrentCourse: this.$store.state.enrollment.currentCourse,\r\n\t\t\tinstructorScores: [],\r\n\t\t\tpeerReviewScores: [],\r\n\t\t\tselfReviewScores: [],\r\n\t\t\tgroups: [],\r\n\t\t\trubricCriteria: null\r\n \t}\r\n\t},\r\n\tcreated() {\r\n\t\tthis.getAssignment()\r\n\t},\r\n\t methods: {\r\n\t\t// @vuese\r\n\t\t// Get projects by id.\r\n\t\tasync getAssignment() {\r\n\t\t\tthis.assignment = await assignmentService.getAssignmentById(this.assignmentId)\r\n\t\t\tif (this.assignment) {\r\n\t\t\t\tthis.isGroupProject = this.assignment.IsGroupAssignment\r\n\t\t\t\tif (this.isGroupProject) {\r\n\t\t\t\t\tawait this.getGroups()\r\n\t\t\t\t}\r\n\t\t\t\tawait this.getInstructorScores()\r\n\t\t\t\tawait this.getRubricData(this.assignment.RubricId)\r\n\t\t\t\tthis.formTableData()\r\n\t\t\t}\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Get group project team assignment for a project.\r\n\t\tasync getGroups() {\r\n\t\t\tconst groups = await teamFormationService.getAssignedTeams(this.termCode, this.orgCode, this.classCode,\r\n\t\t\t\tthis.assignmentId, 'group_project')\r\n\t\t\tif (groups && groups.length > 0) {\r\n\t\t\t\tthis.groups = groups\r\n\t\t\t} else {\r\n\t\t\t\tNotification.info({\r\n\t\t\t\t\tduration: 6000,\r\n\t\t\t\t\ttitle: 'Info',\r\n\t\t\t\t\tmessage: 'No team assignments found for this group project.'\r\n\t\t\t\t})\r\n\t\t\t}\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Get all instructor scores for a project.\r\n\t\tasync getInstructorScores() {\r\n\t\t\tconst instructorScores = await reviewService.getInstructorScores(this.termCode, this.orgCode, this.classCode, this.assignmentId)\r\n\t\t\tif (instructorScores && instructorScores.length > 0) { this.instructorScores = instructorScores }\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Get rubric by id.\r\n\t\t// @arg The rubric id.\r\n\t\tasync getRubricData(rubricId) {\r\n\t\t\tawait rubricService.getRubricById(rubricId)\r\n\t\t\t\t.then(rubric => {\r\n\t\t\t\t\tthis.rubricCriteria = rubric.RubricCriterias\r\n\t\t\t\t}).catch((error) => {\r\n\t\t\t\t\tconsole.log(error)\r\n\t\t\t\t})\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Get data for displaying the scores table.\r\n\t\tasync formTableData() {\r\n\t\t\tlet items = this.$store.state.viewAs.students\r\n\t\t\tif (this.isGroupProject) { items = this.groups }\r\n\t\t\tconst that = this\r\n\t\t\tawait this.asyncForEach(items, async item => {\r\n\t\t\t\tconst itemId = that.isGroupProject ? item.TeamId : item.UserName\r\n\t\t\t\tconst itemName = that.isGroupProject ? 'Group ' + item.TeamId : item.FullName\r\n\t\t\t\tlet instructorScores = []\r\n\r\n\t\t\t\tif (that.instructorScores && that.instructorScores.length > 0) {\r\n\t\t\t\t\tconst instructorScore = that.instructorScores.filter(function(el) {\r\n\t\t\t\t\t\treturn el.StudentId == itemId\r\n\t\t\t\t\t})\r\n\r\n\t\t\t\t\tif (instructorScore && instructorScore.length > 0) {\r\n\t\t\t\t\t\t// instructorScores = instructorScore[0].Scores;\r\n\t\t\t\t\t\tinstructorScores = instructorScore\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\tconst scoresData = {\r\n\t\t\t\t\tId: itemId,\r\n\t\t\t\t\tName: itemName,\r\n\t\t\t\t\tInstructorScore: instructorScores,\r\n\t\t\t\t\tMembers: item.Members\r\n\t\t\t\t}\r\n\t\t\t\tthat.tableData.push(scoresData)\r\n\t\t\t})\r\n\t\t},\r\n\t\tasync asyncForEach(array, callback) {\r\n\t\t\tfor (let index = 0; index < array.length; index++) {\r\n\t\t\t\tawait callback(array[index], index, array)\r\n\t\t\t}\r\n\t\t},\r\n\t\thandleEdit(index, row) {\r\n\t\t\tif (this.isGroupProject) { this.$router.push('/rubric?reviewerId=' + this.$store.state.auth.user.UserName + '&groupId=' + row.GroupId + '&assignmentId=' + this.$route.params.id) } else { this.$router.push('/rubric?reviewerId=' + this.$store.state.auth.user.UserName + '&revieweeId=' + row.StudentId + '&assignmentId=' + this.$route.params.id) }\r\n\t\t},\r\n\t\thandleDelete(index, row) {\r\n\t\t\tconsole.log(index, row)\r\n\t\t}\r\n\t}\r\n}\r\n</script>\r\n\r\n<style scoped>\r\n.el-table__empty-text{\r\n\tdisplay: none;\r\n}\r\n.student-submission-wrapper{\r\n padding: 20px;\r\n box-shadow: 20px 10px 25px 20px rgba(109, 107, 107, 0.1);\r\n}\r\n\r\n</style>\r\n<style>\r\n.center-align{\r\n text-align: center !important;\r\n}\r\n.cutom-popper{\r\n width: 400px;\r\n}\r\n</style>\r\n\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./StudentScores.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./StudentScores.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./StudentScores.vue?vue&type=template&id=1a6820a0&scoped=true&\"\nimport script from \"./StudentScores.vue?vue&type=script&lang=js&\"\nexport * from \"./StudentScores.vue?vue&type=script&lang=js&\"\nimport style0 from \"./StudentScores.vue?vue&type=style&index=0&id=1a6820a0&scoped=true&lang=css&\"\nimport style1 from \"./StudentScores.vue?vue&type=style&index=1&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"1a6820a0\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticStyle:{\"padding-right\":\"5px\"}},[_c('div',{staticClass:\"breadcumb\"},[_c('div',{staticClass:\"ic-app-crumbs\"},[_c('span',{staticClass:\"breadcumb-text\"},[_c('router-link',{staticStyle:{\"color\":\"#4E5E63\"},attrs:{\"to\":{ path: '/course/'+ _vm.currentCourse.ClassCode +'/projects' }}},[_vm._v(\"\\n \"+_vm._s(_vm.currentCourse.ClassDescription)+\"\\n \")]),_c('i',{staticClass:\"fas fa-chevron-right breadcumb-next\"}),_vm._v(\"\\n Team Formation\\n \"),_c('i',{staticClass:\"fas fa-chevron-right breadcumb-next\"}),_vm._v(\"\\n Peer Review\\n \")],1)])]),(_vm.assignments && _vm.assignments.length > 0)?_c('div',{attrs:{\"id\":\"filter-wrapper\"}},[_c('div',{staticStyle:{\"width\":\"180px\",\"min-width\":\"180px\",\"float\":\"left\",\"margin-right\":\"1%\"}},[_c('span',{staticStyle:{\"font-weight\":\"bold\",\"font-size\":\"16px\"}},[_vm._v(\"\\n Select Project\\n \")]),_c('el-select',{staticStyle:{\"margin-top\":\"5px\",\"width\":\"180px\"},attrs:{\"id\":\"assignments-selection\",\"value-key\":\"Id\",\"filterable\":\"\",\"placeholder\":\"Select Project\",\"no-match-text\":\"No Matching Data\",\"no-data-text\":\"No data\",\"loading-text\":\"Loading\"},on:{\"change\":function($event){return _vm.onAssignmentChange()}},model:{value:(_vm.currentAssignment),callback:function ($$v) {_vm.currentAssignment=$$v},expression:\"currentAssignment\"}},_vm._l((_vm.assignments),function(item){return _c('el-option',{key:item.Id,attrs:{\"label\":item.AssignmentName,\"value\":item}})}),1)],1),(_vm.assignments && _vm.assignments.length > 0)?_c('div',{staticStyle:{\"width\":\"150px\",\"min-width\":\"150px\",\"float\":\"left\"}},[_c('span',{staticStyle:{\"font-weight\":\"bold\",\"font-size\":\"16px\"}},[_vm._v(\"\\n Group Structure\\n \")]),_c('el-select',{staticStyle:{\"margin-top\":\"5px\",\"width\":\"150px\"},attrs:{\"placeholder\":\"Select Group Structure\"},model:{value:(_vm.groupStructure),callback:function ($$v) {_vm.groupStructure=$$v},expression:\"groupStructure\"}},_vm._l((_vm.groupStructureOptions),function(item){return _c('el-option',{key:item.value,attrs:{\"label\":item.label,\"value\":item.value}})}),1)],1):_vm._e(),(_vm.groupStructure == 'random')?_c('div',{staticClass:\"info\",staticStyle:{\"margin-left\":\"5px\",\"min-width\":\"150px\",\"float\":\"left\",\"margin-top\":\"24px\",\"display\":\"block\"},attrs:{\"id\":\"into-group\"}},[_c('span',{staticStyle:{\"font-size\":\"15px\",\"font-weight\":\"600\",\"margin-top\":\"7px\"}},[_vm._v(\"\\n into\\n \")]),_c('el-input-number',{staticStyle:{\"width\":\"80px !important\"},attrs:{\"controls-position\":\"right\",\"min\":1},model:{value:(_vm.numberOfGroups),callback:function ($$v) {_vm.numberOfGroups=$$v},expression:\"numberOfGroups\"}}),(!_vm.isGroupProject)?_c('span',{staticStyle:{\"font-size\":\"15px\",\"font-weight\":\"600\",\"margin-top\":\"7px\"}},[_vm._v(\"\\n groups\\n \")]):_c('span',{staticStyle:{\"font-size\":\"15px\",\"font-weight\":\"600\",\"margin-top\":\"7px\"}},[_vm._v(\"\\n teams\\n \")])],1):_vm._e(),(_vm.otherAssignments && _vm.otherAssignments.length > 0 && _vm.groupStructure == 'copy')?_c('el-select',{staticStyle:{\"margin-top\":\"24px\",\"width\":\"180px\",\"margin-left\":\"5px\",\"float\":\"left\"},attrs:{\"id\":\"other-assignments-selection\",\"value-key\":\"Id\",\"filterable\":\"\",\"placeholder\":\"Select Project\"},model:{value:(_vm.copyAssignment),callback:function ($$v) {_vm.copyAssignment=$$v},expression:\"copyAssignment\"}},_vm._l((_vm.otherAssignments),function(item){return _c('el-option',{key:item.Id,attrs:{\"label\":item.AssignmentName,\"value\":item}})}),1):_vm._e(),(_vm.assignments && _vm.assignments.length > 0 && _vm.groupStructure == 'manual' && _vm.unassignedAssignments.length > 0)?_c('div',{staticStyle:{\"margin-left\":\"15px\",\"width\":\"150px\",\"min-width\":\"150px\",\"float\":\"left\"}},[_c('span',{staticStyle:{\"font-weight\":\"bold\",\"font-size\":\"16px\"}},[_vm._v(\"\\n Copy To\\n \"),_c('el-tooltip',{staticClass:\"item\",attrs:{\"effect\":\"light\",\"content\":\"Select a project to copy the team formations to\",\"placement\":\"top\"}},[_c('i',{staticClass:\"fas fa-question-circle\",staticStyle:{\"color\":\"#006747\",\"font-size\":\"14px\"}})])],1),_c('el-select',{staticStyle:{\"margin-top\":\"5px\",\"width\":\"200px\"},attrs:{\"placeholder\":\"Select Project\",\"multiple\":\"\",\"collapse-tags\":\"\"},on:{\"change\":function($event){return _vm.onCopyToChange()}},model:{value:(_vm.copyToAssignments),callback:function ($$v) {_vm.copyToAssignments=$$v},expression:\"copyToAssignments\"}},[(_vm.unassignedAssignments.length > 1)?_c('el-option',{key:0,attrs:{\"label\":\"All Projects\",\"value\":0}}):_vm._e(),_vm._l((_vm.unassignedAssignments),function(item){return _c('el-option',{key:item.Id,attrs:{\"label\":item.AssignmentName,\"value\":item.Id}})})],2)],1):_vm._e(),((_vm.assignedTeams && _vm.assignedTeams.length > 0) &&\n (_vm.groupStructure == 'manual' || _vm.groupStructure == 'random' || (_vm.groupStructure == 'copy' && _vm.copyAssignment)))?_c('el-button',{staticStyle:{\"float\":\"right\",\"margin-top\":\"24px\",\"margin-right\":\"10px\"},attrs:{\"title\":\"Add new group\",\"type\":\"primary\"},on:{\"click\":_vm.submit}},[_vm._v(\"\\n Submit\\n \")]):_vm._e()],1):_vm._e(),_c('div',{staticClass:\"team-formation-contents\"},[(_vm.assignments && _vm.assignments.length > 0)?_c('div',{staticClass:\"unassigned-student-wrapper\"},[_c('div',{staticStyle:{\"padding\":\"6px\",\"height\":\"40px\"}},[(!_vm.isGroupProject)?_c('span',{staticClass:\"ellipsis\",staticStyle:{\"font-weight\":\"bold\",\"font-size\":\"16px\",\"line-height\":\"2\"}},[_vm._v(\"\\n Unassigned Students (\"+_vm._s(_vm.unassignedStudents ? _vm.unassignedStudents.length : 0)+\")\\n \")]):_c('span',{staticClass:\"ellipsis\",staticStyle:{\"font-weight\":\"bold\",\"font-size\":\"16px\",\"line-height\":\"2\"}},[_vm._v(\"\\n Unassigned Groups (\"+_vm._s(_vm.unassignedStudents ? _vm.unassignedStudents.length : 0)+\")\\n \")])]),_c('div',{staticStyle:{\"height\":\"80%\"}},[(_vm.unassignedStudents)?_c('el-input',{staticStyle:{\"margin-left\":\"7px\",\"width\":\"83% !important\"},attrs:{\"placeholder\":\"Search Student\"}}):_vm._e(),_c('draggable',{staticClass:\"list-group unassigned\",attrs:{\"list\":_vm.unassignedStudents,\"group\":\"people\"},on:{\"change\":_vm.log,\"end\":_vm.onEnd,\"start\":_vm.onStart}},_vm._l((_vm.unassignedStudents),function(student){return _c('div',{key:student.MemberId},[(_vm.isSubmittedStudent(student.MemberId))?_c('div',{staticClass:\"list-group-item object-name group-user-name ellipsis\"},[_c('i',{staticClass:\"fas fa-grip-vertical\",staticStyle:{\"margin-left\":\"5px\",\"margin-right\":\"5px\"}}),_vm._v(\"\\n \"+_vm._s(student.Name)+\"\\n \")]):_c('div',{staticClass:\"list-group-item object-name group-user-name ellipsis no-submission-student\"},[_c('i',{staticClass:\"fas fa-grip-vertical\",staticStyle:{\"margin-left\":\"5px\",\"margin-right\":\"5px\"}}),_vm._v(\"\\n \"+_vm._s(student.Name)+\"\\n \")])])}),0)],1)]):_vm._e(),(_vm.assignments && _vm.assignments.length > 0)?_c('div',{staticClass:\"groups-wrapper\"},[_c('div',{staticStyle:{\"padding\":\"6px\",\"padding-left\":\"0px\",\"height\":\"40px\"}},[(!_vm.isGroupProject)?_c('span',{staticClass:\"ellipsis\",staticStyle:{\"font-weight\":\"bold\",\"font-size\":\"16px\",\"line-height\":\"2\"}},[_vm._v(\"\\n Groups (\"+_vm._s(_vm.assignedTeams ? _vm.assignedTeams.length : 0)+\")\\n \")]):_c('span',{staticClass:\"ellipsis\",staticStyle:{\"font-weight\":\"bold\",\"font-size\":\"16px\",\"line-height\":\"2\"}},[_vm._v(\"\\n Teams (\"+_vm._s(_vm.assignedTeams ? _vm.assignedTeams.length : 0)+\")\\n \")]),(_vm.assignments && _vm.assignments.length > 0)?_c('el-button',{staticStyle:{\"float\":\"right\"},attrs:{\"title\":\"Add new group\"},on:{\"click\":_vm.addGroup}},[(!_vm.isGroupProject)?_c('span',[_vm._v(\"\\n Add Group\\n \")]):_c('span',[_vm._v(\"\\n Add Team\\n \")])]):_vm._e()],1),_c('div',{staticStyle:{\"height\":\"90%\",\"overflow-y\":\"auto\"}},_vm._l((_vm.assignedTeams),function(team,index){return _c('div',{key:team.TeamId},[_c('el-card',{staticStyle:{\"width\":\"99.5%\",\"margin-bottom\":\"15px\"}},[_c('div',{staticClass:\"clearfix\",attrs:{\"slot\":\"header\"},slot:\"header\"},[_c('span',[_vm._v(\"Group \"+_vm._s(team.TeamId))]),_c('span',{staticStyle:{\"margin-left\":\"200px\",\"font-size\":\"12px\"}},[_vm._v(\"\\n \"+_vm._s(team.Members.length)+\" students\\n \")]),_c('el-button',{staticStyle:{\"text-align\":\"center\",\"-webkit-box-shadow\":\"none\",\"box-shadow\":\"none\",\"display\":\"inline-block\",\"padding\":\"0px\",\"vertical-align\":\"middle\",\"-ms-touch-action\":\"manipulation\",\"touch-action\":\"manipulation\",\"cursor\":\"pointer\",\"border\":\"0 none\",\"background\":\"none\",\"float\":\"right\"},attrs:{\"title\":\"Previous student\"},on:{\"click\":function($event){return _vm.removeGroup(team.TeamId, index)}}},[_c('i',{staticClass:\"fas fa-times\",staticStyle:{\"font-size\":\"20px\"}})])],1),_c('draggable',{staticClass:\"list-group\",attrs:{\"list\":team.Members,\"group\":\"people\"},on:{\"change\":_vm.log,\"end\":_vm.onEnd,\"start\":_vm.onStart}},_vm._l((team.Members),function(student){return _c('div',{key:student.MemberId},[(_vm.isSubmittedStudent(student.MemberId))?_c('div',{staticClass:\"list-group-item object-name list-group-item group-user-name ellipsis\"},[_c('i',{staticClass:\"fas fa-grip-vertical\",staticStyle:{\"margin-left\":\"5px\",\"margin-right\":\"5px\"}}),_vm._v(\"\\n \"+_vm._s(student.Name)+\"\\n \")]):_c('div',{staticClass:\"list-group-item object-name list-group-item group-user-name ellipsis no-submission-student\"},[_c('i',{staticClass:\"fas fa-grip-vertical\",staticStyle:{\"margin-left\":\"5px\",\"margin-right\":\"5px\"}}),_vm._v(\"\\n \"+_vm._s(student.Name)+\"\\n \")])])}),0)],1)],1)}),0)]):_vm._e()])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n <div style=\"padding-right: 5px;\">\r\n <div class=\"breadcumb\">\r\n <div class=\"ic-app-crumbs\">\r\n <span class=\"breadcumb-text\">\r\n <router-link :to=\"{ path: '/course/'+ currentCourse.ClassCode +'/projects' }\" style=\"color: #4E5E63;\">\r\n {{ currentCourse.ClassDescription }}\r\n </router-link>\r\n\r\n <i class=\"fas fa-chevron-right breadcumb-next\" />\r\n Team Formation\r\n <i class=\"fas fa-chevron-right breadcumb-next\" />\r\n Peer Review\r\n </span>\r\n </div>\r\n </div>\r\n <div v-if=\"assignments && assignments.length > 0\" id=\"filter-wrapper\">\r\n <div style=\"width: 180px; min-width: 180px; float:left; margin-right: 1%;\">\r\n <span style=\"font-weight: bold; font-size: 16px;\">\r\n Select Project\r\n </span>\r\n <el-select\r\n id=\"assignments-selection\"\r\n v-model=\"currentAssignment\"\r\n value-key=\"Id\"\r\n filterable\r\n placeholder=\"Select Project\"\r\n no-match-text=\"No Matching Data\"\r\n no-data-text=\"No data\"\r\n loading-text=\"Loading\"\r\n style=\"margin-top: 5px; width: 180px;\"\r\n @change=\"onAssignmentChange()\"\r\n >\r\n <el-option\r\n v-for=\"item in assignments\"\r\n :key=\"item.Id\"\r\n :label=\"item.AssignmentName\"\r\n :value=\"item\"\r\n />\r\n </el-select>\r\n </div>\r\n\r\n <!-- <div style=\"width: 200px; min-width: 200px; float:left; margin-right: 1%;\">\r\n <span style=\"font-weight: bold; font-size: 16px;\">\r\n Due Date\r\n </span>\r\n <el-date-picker\r\n v-model=\"currentAssignment.PeerReviewDueDate\"\r\n type=\"datetime\"\r\n placeholder=\"Select date and time\"\r\n style=\"margin-top: 5px; 5px; width: 200px;\"\r\n format=\"MMM d, hh:mm a\"\r\n />\r\n </div> -->\r\n\r\n <div\r\n v-if=\"assignments && assignments.length > 0\"\r\n style=\"width: 150px; min-width: 150px; float:left;\"\r\n >\r\n <span style=\"font-weight: bold; font-size: 16px;\">\r\n Group Structure\r\n </span>\r\n <el-select\r\n v-model=\"groupStructure\"\r\n placeholder=\"Select Group Structure\"\r\n style=\"margin-top: 5px; width: 150px;\"\r\n >\r\n <el-option\r\n v-for=\"item in groupStructureOptions\"\r\n :key=\"item.value\"\r\n :label=\"item.label\"\r\n :value=\"item.value\"\r\n />\r\n </el-select>\r\n </div>\r\n\r\n <div\r\n v-if=\"groupStructure == 'random'\"\r\n id=\"into-group\"\r\n class=\"info\"\r\n style=\"margin-left: 5px; min-width: 150px; float: left; margin-top: 24px; display: block;\"\r\n >\r\n <span style=\"font-size: 15px; font-weight: 600; margin-top: 7px;\">\r\n into\r\n </span>\r\n <el-input-number v-model=\"numberOfGroups\" controls-position=\"right\" :min=\"1\" style=\"width: 80px !important\" />\r\n <span v-if=\"!isGroupProject\" style=\"font-size: 15px; font-weight: 600; margin-top: 7px;\">\r\n groups\r\n </span>\r\n <span v-else style=\"font-size: 15px; font-weight: 600; margin-top: 7px;\">\r\n teams\r\n </span>\r\n </div>\r\n\r\n <el-select\r\n v-if=\"otherAssignments && otherAssignments.length > 0 && groupStructure == 'copy'\"\r\n id=\"other-assignments-selection\"\r\n v-model=\"copyAssignment\"\r\n value-key=\"Id\"\r\n filterable\r\n placeholder=\"Select Project\"\r\n style=\"margin-top: 24px; width: 180px; margin-left: 5px; float: left;\"\r\n >\r\n <el-option\r\n v-for=\"item in otherAssignments\"\r\n :key=\"item.Id\"\r\n :label=\"item.AssignmentName\"\r\n :value=\"item\"\r\n />\r\n </el-select>\r\n\r\n <div\r\n v-if=\"assignments && assignments.length > 0 && groupStructure == 'manual' && unassignedAssignments.length > 0\"\r\n style=\"margin-left: 15px; width: 150px; min-width: 150px; float:left;\"\r\n >\r\n <span style=\"font-weight: bold; font-size: 16px;\">\r\n Copy To\r\n <el-tooltip class=\"item\" effect=\"light\" content=\"Select a project to copy the team formations to\" placement=\"top\">\r\n <i class=\"fas fa-question-circle\" style=\"color: #006747; font-size: 14px;\" />\r\n </el-tooltip>\r\n </span>\r\n <el-select\r\n v-model=\"copyToAssignments\"\r\n placeholder=\"Select Project\"\r\n style=\"margin-top: 5px; width: 200px;\"\r\n multiple\r\n collapse-tags\r\n @change=\"onCopyToChange()\"\r\n >\r\n <el-option\r\n v-if=\"unassignedAssignments.length > 1\"\r\n :key=\"0\"\r\n label=\"All Projects\"\r\n :value=\"0\"\r\n />\r\n <el-option\r\n v-for=\"item in unassignedAssignments\"\r\n :key=\"item.Id\"\r\n :label=\"item.AssignmentName\"\r\n :value=\"item.Id\"\r\n />\r\n </el-select>\r\n </div>\r\n\r\n <el-button\r\n v-if=\"(assignedTeams && assignedTeams.length > 0) &&\r\n (groupStructure == 'manual' || groupStructure == 'random' || (groupStructure == 'copy' && copyAssignment))\"\r\n title=\"Add new group\"\r\n style=\"float: right; margin-top: 24px; margin-right: 10px;\"\r\n type=\"primary\"\r\n @click=\"submit\"\r\n >\r\n Submit\r\n </el-button>\r\n </div>\r\n\r\n <div class=\"team-formation-contents\">\r\n <div\r\n v-if=\"assignments && assignments.length > 0\"\r\n class=\"unassigned-student-wrapper\"\r\n >\r\n <div style=\"padding: 6px; height: 40px;\">\r\n <span v-if=\"!isGroupProject\" class=\"ellipsis\" style=\"font-weight: bold; font-size: 16px; line-height: 2;\">\r\n Unassigned Students ({{ unassignedStudents ? unassignedStudents.length : 0 }})\r\n </span>\r\n <span v-else class=\"ellipsis\" style=\"font-weight: bold; font-size: 16px; line-height: 2;\">\r\n Unassigned Groups ({{ unassignedStudents ? unassignedStudents.length : 0 }})\r\n </span>\r\n </div>\r\n <div style=\"height: 80%;\">\r\n <el-input v-if=\"unassignedStudents\" placeholder=\"Search Student\" style=\"margin-left: 7px; width: 83% !important;\" />\r\n <draggable class=\"list-group unassigned\" :list=\"unassignedStudents\" group=\"people\" @change=\"log\" @end=\"onEnd\" @start=\"onStart\">\r\n <div\r\n v-for=\"student in unassignedStudents\"\r\n :key=\"student.MemberId\"\r\n >\r\n <div v-if=\"isSubmittedStudent(student.MemberId)\" class=\"list-group-item object-name group-user-name ellipsis\">\r\n <i class=\"fas fa-grip-vertical\" style=\"margin-left: 5px; margin-right: 5px;\" />\r\n {{ student.Name }}\r\n </div>\r\n\r\n <div v-else class=\"list-group-item object-name group-user-name ellipsis no-submission-student\">\r\n <i class=\"fas fa-grip-vertical\" style=\"margin-left: 5px; margin-right: 5px;\" />\r\n {{ student.Name }}\r\n </div>\r\n </div>\r\n </draggable>\r\n </div>\r\n </div>\r\n <div v-if=\"assignments && assignments.length > 0\" class=\"groups-wrapper\">\r\n <div style=\"padding: 6px; padding-left: 0px; height: 40px;\">\r\n <span v-if=\"!isGroupProject\" class=\"ellipsis\" style=\"font-weight: bold; font-size: 16px; line-height: 2;\">\r\n Groups ({{ assignedTeams ? assignedTeams.length : 0 }})\r\n </span>\r\n <span v-else class=\"ellipsis\" style=\"font-weight: bold; font-size: 16px; line-height: 2;\">\r\n Teams ({{ assignedTeams ? assignedTeams.length : 0 }})\r\n </span>\r\n <el-button\r\n v-if=\"assignments && assignments.length > 0\"\r\n title=\"Add new group\"\r\n style=\"float: right;\"\r\n @click=\"addGroup\"\r\n >\r\n <span v-if=\"!isGroupProject\">\r\n Add Group\r\n </span>\r\n <span v-else>\r\n Add Team\r\n </span>\r\n </el-button>\r\n </div>\r\n <div style=\"height: 90%; overflow-y: auto;\">\r\n <div v-for=\"(team, index) in assignedTeams\" :key=\"team.TeamId\">\r\n <el-card style=\"width: 99.5%; margin-bottom: 15px;\">\r\n <div slot=\"header\" class=\"clearfix\">\r\n <span>Group {{ team.TeamId }}</span>\r\n <span style=\"margin-left: 200px; font-size: 12px;\">\r\n {{ team.Members.length }} students\r\n </span>\r\n\r\n <el-button\r\n style=\"text-align: center; -webkit-box-shadow: none; box-shadow: none;\r\n display: inline-block; padding: 0px 10px; vertical-align: middle;\r\n -ms-touch-action: manipulation; touch-action: manipulation;\r\n cursor: pointer; border: 0 none; background: none; float: right; padding: 0px;\"\r\n title=\"Previous student\"\r\n @click=\"removeGroup(team.TeamId, index)\"\r\n >\r\n <i class=\"fas fa-times\" style=\"font-size: 20px;\" />\r\n </el-button>\r\n </div>\r\n\r\n <draggable class=\"list-group\" :list=\"team.Members\" group=\"people\" @change=\"log\" @end=\"onEnd\" @start=\"onStart\">\r\n <div\r\n v-for=\"student in team.Members\"\r\n :key=\"student.MemberId\"\r\n >\r\n <div\r\n v-if=\"isSubmittedStudent(student.MemberId)\"\r\n class=\"list-group-item object-name list-group-item group-user-name ellipsis\"\r\n >\r\n <i class=\"fas fa-grip-vertical\" style=\"margin-left: 5px; margin-right: 5px;\" />\r\n {{ student.Name }}\r\n </div>\r\n\r\n <div v-else class=\"list-group-item object-name list-group-item group-user-name ellipsis no-submission-student\">\r\n <i class=\"fas fa-grip-vertical\" style=\"margin-left: 5px; margin-right: 5px;\" />\r\n {{ student.Name }}\r\n </div>\r\n </div>\r\n </draggable>\r\n </el-card>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</template>\r\n<script>\r\nimport draggable from 'vuedraggable'\r\nimport * as assignmentService from '@/services/assignment.service'\r\nimport * as teamFormationService from '@/services/team_formation.service'\r\nimport * as submissionService from '@/services/submission.service'\r\nimport { Notification } from 'element-ui'\r\n// Handle UI and logics for the Peer Review Team Formation page.\r\nexport default {\r\n\tname: 'PeerReviewTeamFormation',\r\n\tdisplay: 'Peer Review Team Formation',\r\n\torder: 1,\r\n\tcomponents: {\r\n\t\tdraggable\r\n\t},\r\n\tdata() {\r\n\t\treturn {\r\n\t\t\ttermCode: this.$store.state.enrollment.termCode,\r\n\t\t\torgCode: this.$store.state.enrollment.orgCode,\r\n\t\t\tclassCode: this.$store.state.enrollment.currentCourse.ClassCode,\r\n\t\t\tassignments: [],\r\n\t\t\tcurrentAssignment: null,\r\n\t\t\tunassignedStudents: [],\r\n\t\t\tassignedTeams: [\r\n\t\t\t\t{\r\n\t\t\t\t\tTeamId: 1,\r\n\t\t\t\t\tMembers: []\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tTeamId: 2,\r\n\t\t\t\t\tMembers: []\r\n\t\t\t\t}\r\n\t\t\t],\r\n\t\t\tsubmissionStatus: [],\r\n\t\t\tdueDate: '',\r\n\t\t\tgroupStructureOptions: [\r\n\t\t\t\t{\r\n\t\t\t\t\tvalue: 'manual',\r\n\t\t\t\t\tlabel: 'Create Manually'\r\n\t\t\t\t}, {\r\n\t\t\t\t\tvalue: 'random',\r\n\t\t\t\t\tlabel: 'Split Randomly'\r\n\t\t\t\t}, {\r\n\t\t\t\t\tvalue: 'copy',\r\n\t\t\t\t\tlabel: 'Copy From'\r\n\t\t\t\t}\r\n\t\t\t],\r\n\t\t\tgroupStructure: '',\r\n\t\t\tnumberOfGroups: 1,\r\n\t\t\totherAssignments: [],\r\n\t\t\tunassignedAssignments: [],\r\n\t\t\tcopyAssignment: null,\r\n\t\t\tcopyToAssignments: [],\r\n\t\t\tselectedCopyTo: [],\r\n\t\t\tcurrentCourse: this.$store.state.enrollment.currentCourse,\r\n\t\t\tisGroupProject: false,\r\n\t\t\treview_type: ''\r\n\t\t}\r\n\t},\r\n\tmounted() {\r\n\t\tconst thisHeight = window.innerHeight - 190\r\n\t\tdocument.querySelector('.team-formation-contents').style.height = thisHeight + 'px'\r\n\t},\r\n\tcreated() {\r\n\t\tthis.groupStructure = 'manual'\r\n\t\t// Get necessary information from query string\r\n\t\tthis.assignmentId = this.getUrlParameter('assignmentId')\r\n\r\n\t\t// Set up assignments selection\r\n\t\tthis.setupAssignmentSelection()\r\n\t},\r\n\tmethods: {\r\n\t\tonCopyToChange() {\r\n\t\t\t// Handle All Projects\r\n\t\t\t// if selected list contains all project\r\n\t\t\tif (this.copyToAssignments[0] == 0 && this.copyToAssignments.length > 1) {\r\n\t\t\t\tthis.copyToAssignments.splice(0, 1)\r\n\t\t\t\tthis.selectedCopyTo = this.unassignedAssignments.filter(a => this.copyToAssignments.includes(a.Id))\r\n\t\t\t} else if (this.copyToAssignments.includes(0)) {\r\n\t\t\t\t// else if selected list is empty or selected list contains only All Projects\r\n\t\t\t\tthis.copyToAssignments = [0]\r\n\t\t\t\tthis.selectedCopyTo = this.unassignedAssignments\r\n\t\t\t} else {\r\n\t\t\t\t// else selected list does not contains All Projects\r\n\t\t\t\tthis.selectedCopyTo = this.unassignedAssignments.filter(a => this.copyToAssignments.includes(a.Id))\r\n\t\t\t}\r\n\t\t\tconsole.log(this.selectedCopyTo)\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Setup project selection dropdown.\r\n\t\tasync setupAssignmentSelection() {\r\n\t\t\tlet assignments = []\r\n\t\t\tassignments = await assignmentService.GetPeerReviewAssignments(this.orgCode, this.termCode, this.classCode)\r\n\t\t\tconsole.log(assignments)\r\n\t\t\tif (assignments.length > 0) {\r\n\t\t\t\tthis.assignments = assignments\r\n\t\t\t\tconst that = this\r\n\t\t\t\tif (this.assignmentId) {\r\n\t\t\t\t\tthis.currentAssignment = assignments.find(function(el) {\r\n\t\t\t\t\t\treturn el.Id == that.assignmentId\r\n\t\t\t\t\t})\r\n\t\t\t\t} else {\r\n\t\t\t\t\tthis.currentAssignment = assignments[0]\r\n\t\t\t\t\tthis.assignmentId = this.currentAssignment.Id\r\n\t\t\t\t}\r\n\t\t\t\tthis.isGroupProject = this.currentAssignment.IsGroupAssignment\r\n\t\t\t\tif (this.isGroupProject) { this.reviewType = 'group_peer_review' } else { this.reviewType = 'peer_review' }\r\n\t\t\t\tthis.getOtherAssignments()\r\n\t\t\t\tthis.getStudentsAndTeams()\r\n\t\t\t} else {\r\n\t\t\t\tNotification.error({\r\n\t\t\t\t\tduration: 6000,\r\n\t\t\t\t\ttitle: 'Error',\r\n\t\t\t\t\tmessage: 'No peer review project found.'\r\n\t\t\t\t})\r\n\t\t\t\tdocument.querySelector('.team-formation-contents').style.display = 'none'\r\n\t\t\t}\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Get previous projects.\r\n\t\tasync getOtherAssignments() {\r\n\t\t\tconst that = this\r\n\t\t\tawait this.assignments.forEach(async function(el) {\r\n\t\t\t\tif (el.Id != that.currentAssignment.Id) {\r\n\t\t\t\t\tconst assignedTeams = await teamFormationService.getAssignedTeams(that.termCode, that.orgCode,\r\n\t\t\t\t\t\tthat.classCode, el.Id, that.reviewType)\r\n\t\t\t\t\tif (assignedTeams && assignedTeams.length > 0) {\r\n\t\t\t\t\t\tthat.otherAssignments.push(el)\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tif ((that.currentAssignment.IsGroupAssignment && el.IsGroupAssignment) || (!that.currentAssignment.IsGroupAssignment && !el.IsGroupAssignment)) { that.unassignedAssignments.push(el) }\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t})\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Get unassigned students and assigned teams.\r\n\t\tasync getStudentsAndTeams() {\r\n\t\t\tthis.otherAssignments = []\r\n\t\t\tthis.unassignedAssignments = []\r\n\t\t\tthis.submissionStatus = await submissionService.getLatestSubmissions(this.termCode, this.orgCode,\r\n\t\t\t\tthis.classCode, this.assignmentId)\r\n\t\t\tconst unassignedStudents = await teamFormationService.getUnassignedStudents(this.termCode, this.orgCode,\r\n\t\t\t\tthis.classCode, this.assignmentId, this.reviewType)\r\n\t\t\tconsole.log(unassignedStudents)\r\n\t\t\tif (unassignedStudents && unassignedStudents.length > 0) { this.unassignedStudents = unassignedStudents }\r\n\t\t\tconst assignedTeams = await teamFormationService.getAssignedTeams(this.termCode, this.orgCode,\r\n\t\t\t\tthis.classCode, this.assignmentId, this.reviewType)\r\n\t\t\tif (assignedTeams && assignedTeams.length > 0) {\r\n\t\t\t\tthis.assignedTeams = assignedTeams\r\n\t\t\t\t// this.dueDate = assignedTeams[0].DueDate\r\n\t\t\t}\r\n\r\n\t\t\tif (!unassignedStudents && !assignedTeams) {\r\n\t\t\t\tthis.assignedTeams = []\r\n\t\t\t\tNotification.warning({\r\n\t\t\t\t\tduration: 6000,\r\n\t\t\t\t\ttitle: 'Warning',\r\n\t\t\t\t\tmessage: 'Students need to be assigned into group first because this is a group project.'\r\n\t\t\t\t})\r\n\t\t\t}\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Check if a student has already submitted paper.\r\n\t\t// @arg The student id.\r\n\t\tisSubmittedStudent(studentId) {\r\n\t\t\tconst thisStudent = this.submissionStatus.filter(function(el) {\r\n\t\t\t\treturn el.StudentId == studentId\r\n\t\t\t})\r\n\t\t\tif (thisStudent && thisStudent.length > 0) { return true } else { return false }\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Handle logics when a project is selected.\r\n\t\tonAssignmentChange() {\r\n\t\t\tthis.assignmentId = this.currentAssignment.Id\r\n\t\t\t// this.dueDate = ''\r\n\t\t\tthis.isGroupProject = this.currentAssignment.IsGroupAssignment\r\n\t\t\tif (this.isGroupProject) { this.reviewType = 'group_peer_review' } else { this.reviewType = 'peer_review' }\r\n\t\t\tthis.getOtherAssignments()\r\n\t\t\tthis.unassignedStudents = []\r\n\t\t\tthis.copyToAssignments = []\r\n\t\t\tthis.assignedTeams = [\r\n\t\t\t\t{\r\n\t\t\t\t\tTeamId: 1,\r\n\t\t\t\t\tMembers: []\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tTeamId: 2,\r\n\t\t\t\t\tMembers: []\r\n\t\t\t\t}\r\n\t\t\t]\r\n\t\t\tthis.getStudentsAndTeams()\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Handle logics when the add new group button is clicked.\r\n\t\taddGroup() {\r\n\t\t\tconst teamId = (this.assignedTeams && this.assignedTeams.length > 0) ? this.assignedTeams[this.assignedTeams.length - 1].TeamId + 1 : 1\r\n\t\t\tconst newGroup = {\r\n\t\t\t\tTeamId: teamId,\r\n\t\t\t\tMembers: []\r\n\t\t\t}\r\n\t\t\tthis.assignedTeams.push(newGroup)\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Handle logics when the remove group button is clicked.\r\n\t\t// @arg The team id and its index.\r\n\t\tremoveGroup(teamId, index) {\r\n\t\t\tconst thisTeam = this.assignedTeams.filter(function(el) {\r\n\t\t\t\treturn el.TeamId == teamId\r\n\t\t\t})\r\n\t\t\tif (thisTeam && thisTeam.length > 0) {\r\n\t\t\t\tconst that = this\r\n\t\t\t\tArray.prototype.forEach.call(thisTeam[0].Members, member => {\r\n\t\t\t\t\tthat.unassignedStudents.push(member)\r\n\t\t\t\t})\r\n\r\n\t\t\t\tthis.assignedTeams.splice(index, 1)\r\n\t\t\t}\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Handle logics when the Submit button is clicked.\r\n\t\tasync submit() {\r\n\t\t\tif (this.groupStructure == 'manual') {\r\n\t\t\t\tconst teamAssignment = {\r\n\t\t\t\t\torgCode: this.orgCode,\r\n\t\t\t\t\ttermCode: this.termCode,\r\n\t\t\t\t\tclassCode: this.classCode,\r\n\t\t\t\t\tassignmentId: this.currentAssignment.Id,\r\n\t\t\t\t\tassignmentType: this.reviewType,\r\n\t\t\t\t\temailSent: true,\r\n\t\t\t\t\tisSaved: true,\r\n\t\t\t\t\tdueDate: this.getDateStr(new Date()),\r\n\t\t\t\t\tassignedTeams: []\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.assignedTeams.forEach(function(team) {\r\n\t\t\t\t const assignedTeam = {\r\n\t\t\t\t\t\tteamId: team.TeamId,\r\n\t\t\t\t\t\tassignedMembers: []\r\n\t\t\t\t\t}\r\n\t\t\t\t\tArray.prototype.forEach.call(team.Members, member => {\r\n\t\t\t\t\t\tassignedTeam.assignedMembers.push(member.MemberId)\r\n\t\t\t\t\t})\r\n\t\t\t\t\tteamAssignment.assignedTeams.push(assignedTeam)\r\n\t\t\t\t})\r\n\r\n\t\t\t\tconst response = await teamFormationService.createManually(teamAssignment)\r\n\t\t\t\tif (response && response.status == 200) {\r\n\t\t\t\t\tNotification.success({\r\n\t\t\t\t\t\tduration: 6000,\r\n\t\t\t\t\t\ttitle: 'Success',\r\n\t\t\t\t\t\tmessage: 'Groups were setup successfully.'\r\n\t\t\t\t\t})\r\n\t\t\t\t\t// this.updateAssignmentDueDate()\r\n\t\t\t\t\tif (this.selectedCopyTo && this.selectedCopyTo.length > 0) {\r\n\t\t\t\t\t\tfor (const assignment of this.selectedCopyTo) {\r\n \t\t\t\t\t\tteamAssignment.assignmentId = assignment.Id\r\n\t\t\t\t\t\t\tteamAssignment.dueDate = assignment.DueDate\r\n\r\n\t\t\t\t\t\t\tawait teamFormationService.createManually(teamAssignment)\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t} else {\r\n\t\t\t\t\tNotification.error({\r\n\t\t\t\t\t\tduration: 6000,\r\n\t\t\t\t\t\ttitle: 'Error',\r\n\t\t\t\t\t\tmessage: 'Groups were not setup successfully.'\r\n\t\t\t\t\t})\r\n\t\t\t\t}\r\n\t\t\t} else if (this.groupStructure == 'random') {\r\n\t\t\t\tconst students = []\r\n\t\t\t\tif (this.unassignedStudents && this.unassignedStudents.length > 0) {\r\n\t\t\t\t\tthis.unassignedStudents.forEach(function(student) {\r\n\t\t\t\t\t\tstudents.push(student.MemberId)\r\n\t\t\t\t\t})\r\n\t\t\t\t}\r\n\t\t\t\tif (this.assignedTeams && this.assignedTeams.length > 0) {\r\n\t\t\t\t\tthis.assignedTeams.forEach(function(team) {\r\n\t\t\t\t\t\tArray.prototype.forEach.call(team.Members, member => {\r\n\t\t\t\t\t\t\tstudents.push(member.MemberId)\r\n\t\t\t\t\t\t})\r\n\t\t\t\t\t})\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (students.length > 0 && this.numberOfGroups <= (students.length / 2)) {\r\n\t\t\t\t\tconst teamAssignment = {\r\n\t\t\t\t\t\torgCode: this.orgCode,\r\n\t\t\t\t\t\ttermCode: this.termCode,\r\n\t\t\t\t\t\tclassCode: this.classCode,\r\n\t\t\t\t\t\tassignmentId: this.currentAssignment.Id,\r\n\t\t\t\t\t\tassignmentType: this.reviewType,\r\n\t\t\t\t\t\temailSent: true,\r\n\t\t\t\t\t\tisSaved: true,\r\n\t\t\t\t\t\tdueDate: this.getDateStr(this.currentAssignment.Tasks.filter(t => t.Type == 'peer_review')[0].DueDate),\r\n\t\t\t\t\t\tstudents: students,\r\n\t\t\t\t\t\tgroupNumber: this.numberOfGroups\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tteamFormationService.createRandomly(teamAssignment)\r\n\t\t\t\t\t\t.then(response => {\r\n\t\t\t\t\t\t\tif (response && response.status == 200) {\r\n\t\t\t\t\t\t\t\tNotification.success({\r\n\t\t\t\t\t\t\t\t\tduration: 6000,\r\n\t\t\t\t\t\t\t\t\ttitle: 'Success',\r\n\t\t\t\t\t\t\t\t\tmessage: 'Groups were setup successfully.'\r\n\t\t\t\t\t\t\t\t})\r\n\t\t\t\t\t\t\t\tthis.unassignedStudents = []\r\n\t\t\t\t\t\t\t\tthis.getStudentsAndTeams()\r\n\t\t\t\t\t\t\t\t// this.updateAssignmentDueDate()\r\n\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\tconsole.log('error')\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t})\r\n \t.catch(error => {\r\n\t\t\t\t\t\t\tconsole.log(error)\r\n\t\t\t\t\t\t\tNotification.error({\r\n\t\t\t\t\t\t\t\tduration: 6000,\r\n\t\t\t\t\t\t\t\ttitle: 'Error',\r\n\t\t\t\t\t\t\t\tmessage: 'Groups were not setup successfully.'\r\n\t\t\t\t\t\t\t})\r\n\t\t\t\t\t\t})\r\n\t\t\t\t} else {\r\n\t\t\t\t\tNotification.error({\r\n\t\t\t\t\t\tduration: 6000,\r\n\t\t\t\t\t\ttitle: 'Error',\r\n\t\t\t\t\t\tmessage: 'Please select a valid group number.'\r\n\t\t\t\t\t})\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\t// Copy from another assignment\r\n\t\t\t\tif (this.copyAssignment) {\r\n\t\t\t\t\tconst teamAssignment = {\r\n\t\t\t\t\t\torgCode: this.orgCode,\r\n\t\t\t\t\t\ttermCode: this.termCode,\r\n\t\t\t\t\t\tclassCode: this.classCode,\r\n\t\t\t\t\t\tassignmentId: this.currentAssignment.Id,\r\n\t\t\t\t\t\tassignmentType: this.reviewType,\r\n\t\t\t\t\t\temailSent: true,\r\n\t\t\t\t\t\tisSaved: true,\r\n\t\t\t\t\t\tdueDate: this.getDateStr(this.currentAssignment.Tasks.filter(t => t.Type == 'peer_review')[0].DueDate),\r\n\t\t\t\t\t\tpreviousAssignmentId: this.copyAssignment.Id\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tconsole.log(teamAssignment)\r\n\r\n\t\t\t\t\tteamFormationService.copyFromAnotherAssignment(teamAssignment)\r\n\t\t\t\t\t\t.then(response => {\r\n\t\t\t\t\t\t\tif (response && response.status == 200) {\r\n\t\t\t\t\t\t\t\tNotification.success({\r\n\t\t\t\t\t\t\t\t\tduration: 6000,\r\n\t\t\t\t\t\t\t\t\ttitle: 'Success',\r\n\t\t\t\t\t\t\t\t\tmessage: 'Groups were setup successfully.'\r\n\t\t\t\t\t\t\t\t})\r\n\t\t\t\t\t\t\t\tthis.unassignedStudents = []\r\n\t\t\t\t\t\t\t\tthis.getStudentsAndTeams()\r\n\t\t\t\t\t\t\t\t// this.updateAssignmentDueDate()\r\n\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\tconsole.log('error')\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t})\r\n \t.catch(error => {\r\n\t\t\t\t\t\t\tconsole.log(error)\r\n\t\t\t\t\t\t\tNotification.error({\r\n\t\t\t\t\t\t\t\tduration: 6000,\r\n\t\t\t\t\t\t\t\ttitle: 'Error',\r\n\t\t\t\t\t\t\t\tmessage: 'Groups were not setup successfully.'\r\n\t\t\t\t\t\t\t})\r\n\t\t\t\t\t\t})\r\n\t\t\t\t} else {\r\n\t\t\t\t\tNotification.error({\r\n\t\t\t\t\t\tduration: 6000,\r\n\t\t\t\t\t\ttitle: 'Error',\r\n\t\t\t\t\t\tmessage: 'Please select a project to copy team assignments.'\r\n\t\t\t\t\t})\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t// if (this.currentAssignment.PeerReviewDueDate) {\r\n\r\n\t\t\t// } else {\r\n\t\t\t// \tNotification.error({\r\n\t\t\t// \t\tduration: 6000,\r\n\t\t\t// \t\ttitle: 'Error',\r\n\t\t\t// \t\tmessage: 'Due Date is a required field.'\r\n\t\t\t// \t})\r\n\t\t\t// }\r\n\t\t},\r\n\t\tasync updateAssignmentDueDate() {\r\n\t\t\tthis.currentAssignment.PeerReviewDueDate = this.getDateStr(this.currentAssignment.PeerReviewDueDate)\r\n\t\t\tawait assignmentService.updateAssignment(this.currentAssignment)\r\n\t\t\tconst assignments = this.$store.state.assignment.assignments\r\n\t\t\tconst index = assignments.findIndex(a => a.Id === this.currentAssignment.Id)\r\n\t\t\tassignments[index] = this.currentAssignment\r\n\t\t\tthis.$store.commit('assignment/SET_ASSIGNMENTS', assignments)\r\n\t\t},\r\n\t\tlog(evt) {\r\n\t\t},\r\n\t\tonStart(evt) {\r\n\t\t},\r\n\t\tonEnd(evt) {\r\n\t\t},\r\n\t\tgetDateStr(date) {\r\n\t\t\tconst thisDate = this.$moment(date)._d\r\n\t\t\treturn thisDate.getFullYear() + '-' + (thisDate.getMonth() + 1) + '-' +\r\n thisDate.getDate() + ' ' + thisDate.getHours() + ':' + thisDate.getMinutes() + ':' + thisDate.getSeconds()\r\n\t\t},\r\n\t\tgetUrlParameter(sParam) {\r\n\t\t\tconst sPageURL = decodeURIComponent(window.location.search.substring(1))\r\n\r\n\t\t\tconst sURLVariables = sPageURL.split('&')\r\n\r\n\t\t\tlet sParameterName\r\n\r\n\t\t\tlet i\r\n\r\n\t\t\tfor (i = 0; i < sURLVariables.length; i++) {\r\n\t\t\t\tsParameterName = sURLVariables[i].split('=')\r\n\r\n\t\t\t\tif (sParameterName[0] === sParam) {\r\n\t\t\t\t\treturn sParameterName[1] === undefined ? true : sParameterName[1]\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}\r\n</script>\r\n\r\n<style scoped>\r\n.el-table__empty-text{\r\n\tdisplay: none;\r\n}\r\n\r\n.team-formation-contents{\r\n position: relative;\r\n border-width: 0;\r\n padding-left: 0;\r\n padding-right: 0;\r\n padding-bottom: 0;\r\n padding: 14px;\r\n padding-top: 5px;\r\n -webkit-box-shadow: 0 10px 25px 0 rgba(109, 107, 107, 0.1);\r\n box-shadow: 0 10px 25px 0 rgba(109, 107, 107, 0.1);\r\n background: #fff;\r\n border-style: solid;\r\n}\r\n\r\n.unassigned-student-wrapper{\r\n height: 100%;\r\n overflow-y: auto;\r\n width: 23%;\r\n display: block;\r\n min-height: 30px;\r\n box-sizing: border-box;\r\n float: left;\r\n}\r\n\r\n.groups-wrapper{\r\n height: 100%;\r\n overflow: hidden;\r\n width: 75%;\r\n float: left;\r\n margin-left: 10px;\r\n\r\n}\r\n\r\n.unassigned{\r\n height: 90%;\r\n overflow-y: auto;\r\n}\r\n\r\n.caption {\r\n padding: 0.5em;\r\n border: gainsboro solid 1px;\r\n background: white;\r\n border-bottom: none;\r\n margin-right: 5px;\r\n}\r\n.group-container{\r\n overflow-y: auto;\r\n margin: 0 0.3em 0.5em 0;\r\n padding: 0.5em;\r\n border: 1px solid #DCDCDC;\r\n background: #FFF;\r\n color: #555;\r\n min-width: 80px;\r\n height: 300px;\r\n}\r\n\r\n .list-group{\r\n margin: auto;\r\n overflow-y: auto;\r\n margin: 0 0.5em 0.5em 0;\r\n padding: 0.5em;\r\n border-radius: 0.2em;\r\n background: #FFF;\r\n color: #555;\r\n min-width: 80px;\r\n}\r\n\r\n#filter-wrapper{\r\n border-radius: 3px;\r\n display: block;\r\n -webkit-box-shadow: 0 10px 25px 0 rgba(109, 107, 107, 0.1);\r\n box-shadow: 0 10px 25px 0 rgba(109, 107, 107, 0.1);\r\n background: #FFF;\r\n min-height: 82px;\r\n padding: 10px;\r\n padding-left: 20px;\r\n padding-bottom: 0px;\r\n margin: auto;\r\n min-width: 845px;\r\n margin-bottom: 10px;\r\n}\r\n\r\n.object-name{\r\n font-size: 14px;\r\n float: left;\r\n margin-right: 10px;\r\n box-shadow: 0 2px 4px rgba(0, 0, 0, .12), 0 0 6px rgba(0, 0, 0, .04);\r\n background: #fff;\r\n margin-bottom: 3px;\r\n padding: 3px 20px 3px 5px;\r\n line-height: 30px;\r\n border-radius: 3px;\r\n position: relative;\r\n cursor: pointer;\r\n}\r\n.unassigned .object-name{\r\n width: 85%;\r\n margin-bottom: 8px;\r\n\r\n}\r\n.groups-wrapper .object-name{\r\n width: 27%;\r\n margin-top: 5px;\r\n}\r\n.group-user-name {\r\n max-width: 80%;\r\n overflow: hidden;\r\n white-space: nowrap;\r\n margin-right: 10px;\r\n font-weight: bold;\r\n}\r\n.ellipsis {\r\n white-space: nowrap;\r\n overflow: hidden;\r\n text-overflow: ellipsis;\r\n}\r\n.no-submission-student{\r\n background: #e86060;\r\n color: white;\r\n}\r\n</style>\r\n\r\n<style>\r\n.el-tag--info:first-of-type{\r\n max-width: calc(100% - 50px);\r\n overflow: hidden;\r\n text-overflow: ellipsis;\r\n}\r\n\r\n</style>\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PeerReview.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PeerReview.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./PeerReview.vue?vue&type=template&id=2874abda&scoped=true&\"\nimport script from \"./PeerReview.vue?vue&type=script&lang=js&\"\nexport * from \"./PeerReview.vue?vue&type=script&lang=js&\"\nimport style0 from \"./PeerReview.vue?vue&type=style&index=0&id=2874abda&scoped=true&lang=css&\"\nimport style1 from \"./PeerReview.vue?vue&type=style&index=1&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"2874abda\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticStyle:{\"padding-right\":\"5px\"}},[_c('div',{staticClass:\"breadcumb\"},[_c('div',{staticClass:\"ic-app-crumbs\"},[_c('span',{staticClass:\"breadcumb-text\"},[_c('router-link',{staticStyle:{\"color\":\"#4E5E63\"},attrs:{\"to\":{ path: '/course/'+ _vm.currentCourse.ClassCode +'/projects' }}},[_vm._v(\"\\n \"+_vm._s(_vm.currentCourse.ClassDescription)+\"\\n \")]),_c('i',{staticClass:\"fas fa-chevron-right breadcumb-next\"}),_vm._v(\"\\n Team Formation\\n \"),_c('i',{staticClass:\"fas fa-chevron-right breadcumb-next\"}),_vm._v(\"\\n Group Project\\n \")],1)])]),(_vm.assignments && _vm.assignments.length > 0)?_c('div',{attrs:{\"id\":\"filter-wrapper\"}},[_c('div',{staticStyle:{\"width\":\"180px\",\"min-width\":\"180px\",\"float\":\"left\",\"margin-right\":\"1%\"}},[_c('span',{staticStyle:{\"font-weight\":\"bold\",\"font-size\":\"16px\"}},[_vm._v(\"\\n Select Assignment\\n \")]),_c('el-select',{staticStyle:{\"margin-top\":\"5px\",\"width\":\"180px\"},attrs:{\"id\":\"assignments-selection\",\"value-key\":\"Id\",\"filterable\":\"\",\"placeholder\":\"Select Assignment\",\"no-match-text\":\"No Matching Data\",\"no-data-text\":\"No data\",\"loading-text\":\"Loading\"},on:{\"change\":function($event){return _vm.onAssignmentChange()}},model:{value:(_vm.currentAssignment),callback:function ($$v) {_vm.currentAssignment=$$v},expression:\"currentAssignment\"}},_vm._l((_vm.assignments),function(item){return _c('el-option',{key:item.Id,attrs:{\"label\":item.AssignmentName,\"value\":item}})}),1)],1),(_vm.assignments && _vm.assignments.length > 0)?_c('div',{staticStyle:{\"width\":\"150px\",\"min-width\":\"150px\",\"float\":\"left\"}},[_c('span',{staticStyle:{\"font-weight\":\"bold\",\"font-size\":\"16px\"}},[_vm._v(\"\\n Group Structure\\n \")]),_c('el-select',{staticStyle:{\"margin-top\":\"5px\",\"width\":\"150px\"},attrs:{\"placeholder\":\"Select Group Structure\"},model:{value:(_vm.groupStructure),callback:function ($$v) {_vm.groupStructure=$$v},expression:\"groupStructure\"}},_vm._l((_vm.groupStructureOptions),function(item){return _c('el-option',{key:item.value,attrs:{\"label\":item.label,\"value\":item.value}})}),1)],1):_vm._e(),(_vm.groupStructure == 'random')?_c('div',{staticClass:\"info\",staticStyle:{\"margin-left\":\"5px\",\"min-width\":\"150px\",\"float\":\"left\",\"margin-top\":\"24px\",\"display\":\"block\"},attrs:{\"id\":\"into-group\"}},[_c('span',{staticStyle:{\"font-size\":\"15px\",\"font-weight\":\"600\",\"margin-top\":\"7px\"}},[_vm._v(\"\\n into\\n \")]),_c('el-input-number',{staticStyle:{\"width\":\"80px !important\"},attrs:{\"controls-position\":\"right\",\"min\":1},model:{value:(_vm.numberOfGroups),callback:function ($$v) {_vm.numberOfGroups=$$v},expression:\"numberOfGroups\"}}),_c('span',{staticStyle:{\"font-size\":\"15px\",\"font-weight\":\"600\",\"margin-top\":\"7px\"}},[_vm._v(\"\\n groups\\n \")])],1):_vm._e(),(_vm.otherAssignments && _vm.otherAssignments.length > 0 && _vm.groupStructure == 'copy')?_c('el-select',{staticStyle:{\"margin-top\":\"24px\",\"width\":\"180px\",\"margin-left\":\"5px\"},attrs:{\"id\":\"other-assignments-selection\",\"value-key\":\"Id\",\"filterable\":\"\",\"placeholder\":\"Select Assignment\"},model:{value:(_vm.copyAssignment),callback:function ($$v) {_vm.copyAssignment=$$v},expression:\"copyAssignment\"}},_vm._l((_vm.otherAssignments),function(item){return _c('el-option',{key:item.Id,attrs:{\"label\":item.AssignmentName,\"value\":item}})}),1):_vm._e(),(_vm.otherPeerAssignments && _vm.otherPeerAssignments.length > 0 && _vm.groupStructure == 'peer')?_c('el-select',{staticStyle:{\"margin-top\":\"24px\",\"width\":\"180px\",\"margin-left\":\"5px\"},attrs:{\"id\":\"other-peer-assignments-selection\",\"value-key\":\"Id\",\"filterable\":\"\",\"placeholder\":\"Select Assignment\"},model:{value:(_vm.copyAssignment),callback:function ($$v) {_vm.copyAssignment=$$v},expression:\"copyAssignment\"}},_vm._l((_vm.otherPeerAssignments),function(item){return _c('el-option',{key:item.Id,attrs:{\"label\":item.AssignmentName,\"value\":item}})}),1):_vm._e(),(_vm.assignments && _vm.assignments.length > 0 && _vm.groupStructure == 'manual' && _vm.unassignedAssignments.length > 0)?_c('div',{staticStyle:{\"margin-left\":\"15px\",\"width\":\"150px\",\"min-width\":\"150px\",\"float\":\"left\"}},[_c('span',{staticStyle:{\"font-weight\":\"bold\",\"font-size\":\"16px\"}},[_vm._v(\"\\n Copy To\\n \"),_c('el-tooltip',{staticClass:\"item\",attrs:{\"effect\":\"light\",\"content\":\"Select a project to copy the team formations to\",\"placement\":\"top\"}},[_c('i',{staticClass:\"fas fa-question-circle\",staticStyle:{\"color\":\"#006747\",\"font-size\":\"14px\"}})])],1),_c('el-select',{staticStyle:{\"margin-top\":\"5px\",\"width\":\"200px\"},attrs:{\"placeholder\":\"Select Project\",\"multiple\":\"\",\"collapse-tags\":\"\"},on:{\"change\":function($event){return _vm.onCopyToChange()}},model:{value:(_vm.copyToAssignments),callback:function ($$v) {_vm.copyToAssignments=$$v},expression:\"copyToAssignments\"}},[(_vm.unassignedAssignments.length > 1)?_c('el-option',{key:0,attrs:{\"label\":\"All Projects\",\"value\":0}}):_vm._e(),_vm._l((_vm.unassignedAssignments),function(item){return _c('el-option',{key:item.Id,attrs:{\"label\":item.AssignmentName,\"value\":item.Id}})})],2)],1):_vm._e(),((_vm.assignedTeams && _vm.assignedTeams.length > 0 && _vm.groupStructure == 'manual')\n || _vm.groupStructure == 'random'\n || (_vm.groupStructure == 'copy' && _vm.copyAssignment)\n\t\t || (_vm.groupStructure == 'peer' && _vm.copyAssignment))?_c('el-button',{staticStyle:{\"float\":\"right\",\"margin-top\":\"24px\",\"margin-right\":\"10px\"},attrs:{\"title\":\"Add new group\",\"type\":\"primary\"},on:{\"click\":_vm.submit}},[_vm._v(\"\\n Submit\\n \")]):_vm._e()],1):_vm._e(),_c('div',{staticClass:\"team-formation-contents\"},[(_vm.assignments && _vm.assignments.length > 0)?_c('div',{staticClass:\"unassigned-student-wrapper\"},[_c('div',{staticStyle:{\"padding\":\"6px\",\"height\":\"40px\"}},[_c('span',{staticClass:\"ellipsis\",staticStyle:{\"font-weight\":\"bold\",\"font-size\":\"16px\",\"line-height\":\"2\"}},[_vm._v(\"\\n Unassigned Students (\"+_vm._s(_vm.unassignedStudents ? _vm.unassignedStudents.length : 0)+\")\\n \")])]),_c('div',{staticStyle:{\"height\":\"80%\"}},[(_vm.unassignedStudents)?_c('el-input',{staticStyle:{\"margin-left\":\"7px\",\"width\":\"83% !important\"},attrs:{\"placeholder\":\"Search Student\"}}):_vm._e(),_c('draggable',{staticClass:\"list-group unassigned\",attrs:{\"list\":_vm.unassignedStudents,\"group\":\"people\"},on:{\"change\":_vm.log,\"end\":_vm.onEnd,\"start\":_vm.onStart}},_vm._l((_vm.unassignedStudents),function(student){return _c('div',{key:student.MemberId},[(_vm.isSubmittedStudent(student.MemberId))?_c('div',{staticClass:\"list-group-item object-name group-user-name ellipsis\"},[_c('i',{staticClass:\"fas fa-grip-vertical\",staticStyle:{\"margin-left\":\"5px\",\"margin-right\":\"5px\"}}),_vm._v(\"\\n \"+_vm._s(student.Name)+\"\\n \")]):_c('div',{staticClass:\"list-group-item object-name group-user-name ellipsis no-submission-student\"},[_c('i',{staticClass:\"fas fa-grip-vertical\",staticStyle:{\"margin-left\":\"5px\",\"margin-right\":\"5px\"}}),_vm._v(\"\\n \"+_vm._s(student.Name)+\"\\n \")])])}),0)],1)]):_vm._e(),(_vm.assignments && _vm.assignments.length > 0)?_c('div',{staticClass:\"groups-wrapper\"},[_c('div',{staticStyle:{\"padding\":\"6px\",\"padding-left\":\"0px\",\"height\":\"40px\"}},[_c('span',{staticClass:\"ellipsis\",staticStyle:{\"font-weight\":\"bold\",\"font-size\":\"16px\",\"line-height\":\"2\"}},[_vm._v(\"\\n Groups (\"+_vm._s(_vm.assignedTeams ? _vm.assignedTeams.length : 0)+\")\\n \")]),(_vm.assignments && _vm.assignments.length > 0)?_c('el-button',{staticStyle:{\"float\":\"right\"},attrs:{\"title\":\"Add new group\"},on:{\"click\":_vm.addGroup}},[_vm._v(\"\\n Add Group\\n \")]):_vm._e()],1),_c('div',{staticStyle:{\"height\":\"90%\",\"overflow-y\":\"auto\"}},_vm._l((_vm.assignedTeams),function(team,index){return _c('div',{key:team.TeamId},[_c('el-card',{staticStyle:{\"width\":\"99.5%\",\"margin-bottom\":\"15px\"}},[_c('div',{staticClass:\"clearfix\",attrs:{\"slot\":\"header\"},slot:\"header\"},[_c('span',[_vm._v(\"Group \"+_vm._s(team.TeamId))]),_c('span',{staticStyle:{\"margin-left\":\"200px\",\"font-size\":\"12px\"}},[_vm._v(\"\\n \"+_vm._s(team.Members.length)+\" students\\n \")]),_c('el-button',{staticStyle:{\"text-align\":\"center\",\"-webkit-box-shadow\":\"none\",\"box-shadow\":\"none\",\"display\":\"inline-block\",\"padding\":\"0px\",\"vertical-align\":\"middle\",\"-ms-touch-action\":\"manipulation\",\"touch-action\":\"manipulation\",\"cursor\":\"pointer\",\"border\":\"0 none\",\"background\":\"none\",\"float\":\"right\"},attrs:{\"title\":\"Previous student\"},on:{\"click\":function($event){return _vm.removeGroup(team.TeamId, index)}}},[_c('i',{staticClass:\"fas fa-times\",staticStyle:{\"font-size\":\"20px\"}})])],1),_c('draggable',{staticClass:\"list-group\",attrs:{\"list\":team.Members,\"group\":\"people\"},on:{\"change\":_vm.log,\"end\":_vm.onEnd,\"start\":_vm.onStart}},_vm._l((team.Members),function(student){return _c('div',{key:student.MemberId},[(_vm.isSubmittedStudent(student.MemberId))?_c('div',{staticClass:\"list-group-item object-name list-group-item group-user-name ellipsis\"},[_c('i',{staticClass:\"fas fa-grip-vertical\",staticStyle:{\"margin-left\":\"5px\",\"margin-right\":\"5px\"}}),_vm._v(\"\\n \"+_vm._s(student.Name)+\"\\n \")]):_c('div',{staticClass:\"list-group-item object-name list-group-item group-user-name ellipsis no-submission-student\"},[_c('i',{staticClass:\"fas fa-grip-vertical\",staticStyle:{\"margin-left\":\"5px\",\"margin-right\":\"5px\"}}),_vm._v(\"\\n \"+_vm._s(student.Name)+\"\\n \")])])}),0)],1)],1)}),0)]):_vm._e()])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n <div style=\"padding-right: 5px;\">\r\n <div class=\"breadcumb\">\r\n <div class=\"ic-app-crumbs\">\r\n <span class=\"breadcumb-text\">\r\n <router-link :to=\"{ path: '/course/'+ currentCourse.ClassCode +'/projects' }\" style=\"color: #4E5E63;\">\r\n {{ currentCourse.ClassDescription }}\r\n </router-link>\r\n\r\n <i class=\"fas fa-chevron-right breadcumb-next\" />\r\n Team Formation\r\n <i class=\"fas fa-chevron-right breadcumb-next\" />\r\n Group Project\r\n </span>\r\n </div>\r\n </div>\r\n <div v-if=\"assignments && assignments.length > 0\" id=\"filter-wrapper\">\r\n <div style=\"width: 180px; min-width: 180px; float:left; margin-right: 1%;\">\r\n <span style=\"font-weight: bold; font-size: 16px;\">\r\n Select Assignment\r\n </span>\r\n <el-select\r\n id=\"assignments-selection\"\r\n v-model=\"currentAssignment\"\r\n value-key=\"Id\"\r\n filterable\r\n placeholder=\"Select Assignment\"\r\n no-match-text=\"No Matching Data\"\r\n no-data-text=\"No data\"\r\n loading-text=\"Loading\"\r\n style=\"margin-top: 5px; width: 180px;\"\r\n @change=\"onAssignmentChange()\"\r\n >\r\n <el-option\r\n v-for=\"item in assignments\"\r\n :key=\"item.Id\"\r\n :label=\"item.AssignmentName\"\r\n :value=\"item\"\r\n />\r\n </el-select>\r\n </div>\r\n\r\n <div\r\n v-if=\"assignments && assignments.length > 0\"\r\n style=\"width: 150px; min-width: 150px; float:left;\"\r\n >\r\n <span style=\"font-weight: bold; font-size: 16px;\">\r\n Group Structure\r\n </span>\r\n <el-select\r\n v-model=\"groupStructure\"\r\n placeholder=\"Select Group Structure\"\r\n style=\"margin-top: 5px; width: 150px;\"\r\n >\r\n <el-option\r\n v-for=\"item in groupStructureOptions\"\r\n :key=\"item.value\"\r\n :label=\"item.label\"\r\n :value=\"item.value\"\r\n />\r\n </el-select>\r\n </div>\r\n\r\n <div\r\n v-if=\"groupStructure == 'random'\"\r\n id=\"into-group\"\r\n class=\"info\"\r\n style=\"margin-left: 5px; min-width: 150px; float: left; margin-top: 24px; display: block;\"\r\n >\r\n <span style=\"font-size: 15px; font-weight: 600; margin-top: 7px;\">\r\n into\r\n </span>\r\n <el-input-number v-model=\"numberOfGroups\" controls-position=\"right\" :min=\"1\" style=\"width: 80px !important\" />\r\n <span style=\"font-size: 15px; font-weight: 600; margin-top: 7px;\">\r\n groups\r\n </span>\r\n </div>\r\n\r\n <el-select\r\n v-if=\"otherAssignments && otherAssignments.length > 0 && groupStructure == 'copy'\"\r\n id=\"other-assignments-selection\"\r\n v-model=\"copyAssignment\"\r\n value-key=\"Id\"\r\n filterable\r\n placeholder=\"Select Assignment\"\r\n style=\"margin-top: 24px; width: 180px; margin-left: 5px;\"\r\n >\r\n <el-option\r\n v-for=\"item in otherAssignments\"\r\n :key=\"item.Id\"\r\n :label=\"item.AssignmentName\"\r\n :value=\"item\"\r\n />\r\n </el-select>\r\n\r\n\t <el-select\r\n v-if=\"otherPeerAssignments && otherPeerAssignments.length > 0 && groupStructure == 'peer'\"\r\n id=\"other-peer-assignments-selection\"\r\n v-model=\"copyAssignment\"\r\n value-key=\"Id\"\r\n filterable\r\n placeholder=\"Select Assignment\"\r\n style=\"margin-top: 24px; width: 180px; margin-left: 5px;\"\r\n >\r\n <el-option\r\n v-for=\"item in otherPeerAssignments\"\r\n :key=\"item.Id\"\r\n :label=\"item.AssignmentName\"\r\n :value=\"item\"\r\n />\r\n </el-select>\r\n\t\r\n <div\r\n v-if=\"assignments && assignments.length > 0 && groupStructure == 'manual' && unassignedAssignments.length > 0\"\r\n style=\"margin-left: 15px; width: 150px; min-width: 150px; float:left;\"\r\n >\r\n <span style=\"font-weight: bold; font-size: 16px;\">\r\n Copy To\r\n <el-tooltip class=\"item\" effect=\"light\" content=\"Select a project to copy the team formations to\" placement=\"top\">\r\n <i class=\"fas fa-question-circle\" style=\"color: #006747; font-size: 14px;\" />\r\n </el-tooltip>\r\n </span>\r\n <el-select\r\n v-model=\"copyToAssignments\"\r\n placeholder=\"Select Project\"\r\n style=\"margin-top: 5px; width: 200px;\"\r\n multiple\r\n collapse-tags\r\n @change=\"onCopyToChange()\"\r\n >\r\n <el-option\r\n v-if=\"unassignedAssignments.length > 1\"\r\n :key=\"0\"\r\n label=\"All Projects\"\r\n :value=\"0\"\r\n />\r\n <el-option\r\n v-for=\"item in unassignedAssignments\"\r\n :key=\"item.Id\"\r\n :label=\"item.AssignmentName\"\r\n :value=\"item.Id\"\r\n />\r\n </el-select>\r\n </div>\r\n\r\n <el-button\r\n v-if=\"(assignedTeams && assignedTeams.length > 0 && groupStructure == 'manual')\r\n || groupStructure == 'random'\r\n || (groupStructure == 'copy' && copyAssignment)\r\n\t\t || (groupStructure == 'peer' && copyAssignment)\"\r\n title=\"Add new group\"\r\n style=\"float: right; margin-top: 24px; margin-right: 10px;\"\r\n type=\"primary\"\r\n @click=\"submit\"\r\n >\r\n Submit\r\n </el-button>\r\n </div>\r\n\r\n <div class=\"team-formation-contents\">\r\n <div v-if=\"assignments && assignments.length > 0\" class=\"unassigned-student-wrapper\">\r\n <div style=\"padding: 6px; height: 40px;\">\r\n <span class=\"ellipsis\" style=\"font-weight: bold; font-size: 16px; line-height: 2;\">\r\n Unassigned Students ({{ unassignedStudents ? unassignedStudents.length : 0 }})\r\n </span>\r\n </div>\r\n <div style=\"height: 80%;\">\r\n <el-input v-if=\"unassignedStudents\" placeholder=\"Search Student\" style=\"margin-left: 7px; width: 83% !important;\" />\r\n <draggable class=\"list-group unassigned\" :list=\"unassignedStudents\" group=\"people\" @change=\"log\" @end=\"onEnd\" @start=\"onStart\">\r\n <div\r\n v-for=\"student in unassignedStudents\"\r\n :key=\"student.MemberId\"\r\n >\r\n <div v-if=\"isSubmittedStudent(student.MemberId)\" class=\"list-group-item object-name group-user-name ellipsis\">\r\n <i class=\"fas fa-grip-vertical\" style=\"margin-left: 5px; margin-right: 5px;\" />\r\n {{ student.Name }}\r\n </div>\r\n <div v-else class=\"list-group-item object-name group-user-name ellipsis no-submission-student\">\r\n <i class=\"fas fa-grip-vertical\" style=\"margin-left: 5px; margin-right: 5px;\" />\r\n {{ student.Name }}\r\n </div>\r\n </div>\r\n </draggable>\r\n </div>\r\n </div>\r\n <div v-if=\"assignments && assignments.length > 0\" class=\"groups-wrapper\">\r\n <div style=\"padding: 6px; padding-left: 0px; height: 40px;\">\r\n <span class=\"ellipsis\" style=\"font-weight: bold; font-size: 16px; line-height: 2;\">\r\n Groups ({{ assignedTeams ? assignedTeams.length : 0 }})\r\n </span>\r\n <el-button\r\n v-if=\"assignments && assignments.length > 0\"\r\n title=\"Add new group\"\r\n style=\"float: right;\"\r\n @click=\"addGroup\"\r\n >\r\n Add Group\r\n </el-button>\r\n </div>\r\n <div style=\"height: 90%; overflow-y: auto;\">\r\n <div v-for=\"(team, index) in assignedTeams\" :key=\"team.TeamId\">\r\n <el-card style=\"width: 99.5%; margin-bottom: 15px;\">\r\n <div slot=\"header\" class=\"clearfix\">\r\n <span>Group {{ team.TeamId }}</span>\r\n <span style=\"margin-left: 200px; font-size: 12px;\">\r\n {{ team.Members.length }} students\r\n </span>\r\n\r\n <el-button\r\n style=\"text-align: center; -webkit-box-shadow: none; box-shadow: none;\r\n display: inline-block; padding: 0px 10px; vertical-align: middle;\r\n -ms-touch-action: manipulation; touch-action: manipulation;\r\n cursor: pointer; border: 0 none; background: none; float: right; padding: 0px;\"\r\n title=\"Previous student\"\r\n @click=\"removeGroup(team.TeamId, index)\"\r\n >\r\n <i class=\"fas fa-times\" style=\"font-size: 20px;\" />\r\n </el-button>\r\n </div>\r\n\r\n <draggable class=\"list-group\" :list=\"team.Members\" group=\"people\" @change=\"log\" @end=\"onEnd\" @start=\"onStart\">\r\n <div\r\n v-for=\"student in team.Members\"\r\n :key=\"student.MemberId\"\r\n >\r\n <div\r\n v-if=\"isSubmittedStudent(student.MemberId)\"\r\n class=\"list-group-item object-name list-group-item group-user-name ellipsis\"\r\n >\r\n <i class=\"fas fa-grip-vertical\" style=\"margin-left: 5px; margin-right: 5px;\" />\r\n {{ student.Name }}\r\n </div>\r\n\r\n <div v-else class=\"list-group-item object-name list-group-item group-user-name ellipsis no-submission-student\">\r\n <i class=\"fas fa-grip-vertical\" style=\"margin-left: 5px; margin-right: 5px;\" />\r\n {{ student.Name }}\r\n </div>\r\n </div>\r\n </draggable>\r\n </el-card>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</template>\r\n\r\n<script>\r\n\r\nimport draggable from 'vuedraggable'\r\nimport * as assignmentService from '@/services/assignment.service'\r\nimport * as teamFormationService from '@/services/team_formation.service'\r\nimport * as submissionService from '@/services/submission.service'\r\nimport { Notification } from 'element-ui'\r\n// Handles UI and logics for the Group Project Team Formation page.\r\nexport default {\r\n\tname: 'GroupProjectTeamFormation',\r\n\tdisplay: 'Group Project Team Formation',\r\n\torder: 1,\r\n\tcomponents: {\r\n\t\tdraggable\r\n\t},\r\n\tdata() {\r\n\t\treturn {\r\n\t\t\ttermCode: this.$store.state.enrollment.termCode,\r\n\t\t\torgCode: this.$store.state.enrollment.orgCode,\r\n\t\t\tclassCode: this.$store.state.enrollment.currentCourse.ClassCode,\r\n\t\t\tassignments: [],\r\n\t\t\tpeerReviewTasks: [],\r\n\t\t\tcurrentAssignment: null,\r\n\t\t\tunassignedStudents: [],\r\n\t\t\tsubmissionStatus: [],\r\n\t\t\tassignedTeams: [\r\n\t\t\t\t{\r\n\t\t\t\t\tTeamId: 1,\r\n\t\t\t\t\tMembers: []\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tTeamId: 2,\r\n\t\t\t\t\tMembers: []\r\n\t\t\t\t}\r\n\t\t\t],\r\n\t\t\tgroupStructureOptions: [\r\n\t\t\t\t{\r\n\t\t\t\t\tvalue: 'manual',\r\n\t\t\t\t\tlabel: 'Create Manually'\r\n\t\t\t\t}, {\r\n\t\t\t\t\tvalue: 'random',\r\n\t\t\t\t\tlabel: 'Split Randomly'\r\n\t\t\t\t}, {\r\n\t\t\t\t\tvalue: 'copy',\r\n\t\t\t\t\tlabel: 'Copy From'\r\n\t\t\t\t}, {\r\n\t\t\t\t\tvalue: 'peer',\r\n\t\t\t\t\tlabel: 'Copy From Peer'\r\n\r\n\t\t\t\t}\r\n\t\t\t],\r\n\t\t\tgroupStructure: '',\r\n\t\t\tnumberOfGroups: 1,\r\n\t\t\totherAssignments: [],\r\n\t\t\totherPeerAssignments: [],\r\n\t\t\tunassignedAssignments: [],\r\n\t\t\tunassignedPeerAssignments: [],\r\n\t\t\tcopyToAssignments: [],\r\n\t\t\tselectedCopyTo: [],\r\n\t\t\tcopyAssignment: null,\r\n\t\t\tcurrentCourse: this.$store.state.enrollment.currentCourse\r\n\t\t}\r\n\t},\r\n\tmounted() {\r\n\t\tconst thisHeight = window.innerHeight - 190\r\n\t\tdocument.querySelector('.team-formation-contents').style.height = thisHeight + 'px'\r\n\t},\r\n\tcreated() {\r\n\t\tthis.groupStructure = 'manual'\r\n\t\t// Get necessary information from query string\r\n\t\tthis.assignmentId = this.getUrlParameter('assignmentId')\r\n\r\n\t\t// Set up peer review selection\r\n\t\tthis.setupPeerReviewSelection()\r\n\t\t// Set up assignments selection\r\n\t\tthis.setupAssignmentSelection()\r\n\t},\r\n\tmethods: {\r\n\t\tonCopyToChange() {\r\n\t\t\t// Handle All Projects\r\n\t\t\t// if selected list contains all project\r\n\t\t\tif (this.copyToAssignments[0] == 0 && this.copyToAssignments.length > 1) {\r\n\t\t\t\tthis.copyToAssignments.splice(0, 1)\r\n\t\t\t\tthis.selectedCopyTo = this.unassignedAssignments.filter(a => this.copyToAssignments.includes(a.Id))\r\n\t\t\t} else if (this.copyToAssignments.includes(0)) {\r\n\t\t\t\t// else if selected list is empty or selected list contains only All Projects\r\n\t\t\t\tthis.copyToAssignments = [0]\r\n\t\t\t\tthis.selectedCopyTo = this.unassignedAssignments\r\n\t\t\t} else {\r\n\t\t\t\t// else selected list does not contains All Projects\r\n\t\t\t\tthis.selectedCopyTo = this.unassignedAssignments.filter(a => this.copyToAssignments.includes(a.Id))\r\n\t\t\t}\r\n\t\t\tconsole.log(this.selectedCopyTo)\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Setup project selection dropdown.\r\n\t\tasync setupAssignmentSelection() {\r\n\t\t\tlet assignments = []\r\n\t\t\tassignments = await assignmentService.GetGroupProjectAssignments(this.orgCode, this.termCode, this.classCode)\r\n\t\t\tif (assignments.length > 0) {\r\n\t\t\t\tthis.assignments = assignments\r\n\t\t\t\tconst that = this\r\n\t\t\t\tif (this.assignmentId) {\r\n\t\t\t\t\tthis.currentAssignment = assignments.find(function(el) {\r\n\t\t\t\t\t\treturn el.Id == that.assignmentId\r\n\t\t\t\t\t})\r\n\t\t\t\t} else {\r\n\t\t\t\t\tthis.currentAssignment = assignments[0]\r\n\t\t\t\t\tthis.assignmentId = this.currentAssignment.Id\r\n\t\t\t\t}\r\n\t\t\t\tthis.getOtherGroupAssignments()\r\n\t\t\t\tthis.getPeerTasks()\r\n\t\t\t\tthis.getStudentsAndTeams()\r\n\t\t\t} else {\r\n\t\t\t\tNotification.error({\r\n\t\t\t\t\tduration: 6000,\r\n\t\t\t\t\ttitle: 'Error',\r\n\t\t\t\t\tmessage: 'No group assignment found.'\r\n\t\t\t\t})\r\n\t\t\t\tdocument.querySelector('.team-formation-contents').style.display = 'none'\r\n\t\t\t}\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Setup peer review selection dropdown.\r\n\t\tasync setupPeerReviewSelection() {\r\n\t\t\tlet peerReviewTasks = []\r\n\t\t\tpeerReviewTasks = await assignmentService.GetPeerReviewAssignments(this.orgCode, this.termCode, this.classCode)\r\n\t\t\tif (peerReviewTasks.length > 0) {\r\n\t\t\t\tthis.peerReviewTasks = peerReviewTasks\r\n\t\t\t\tthis.getPeerTasks()\r\n\t\t\t} else {\r\n\t\t\t\tNotification.warning({\r\n\t\t\t\t\tduration: 6000,\r\n\t\t\t\t\ttitle: 'Warning',\r\n\t\t\t\t\tmessage: 'No peer review tasks found.'\r\n\t\t\t\t})\r\n\t\t\t}\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Get previous projects.\r\n\t\tasync getOtherGroupAssignments() {\r\n\t\t\tconst that = this\r\n\t\t\tawait this.assignments.forEach(async function(el) {\r\n\t\t\t\tif (el.Id != that.currentAssignment.Id) {\r\n\t\t\t\t\tconst assignedTeams = await teamFormationService.getAssignedTeams(that.termCode, that.orgCode,\r\n\t\t\t\t\t\tthat.classCode, el.Id, 'group_project')\r\n\t\t\t\t\tif (assignedTeams && assignedTeams.length > 0) {\r\n\t\t\t\t\t\tthat.otherAssignments.push(el)\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tthat.unassignedAssignments.push(el)\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t})\r\n\t\t},\r\n\t\t\t\t// @vuese\r\n\t\t// Get previous projects.\r\n\t\tasync getPeerTasks() {\r\n\t\t\tconst that = this\r\n\t\t\tawait this.peerReviewTasks.forEach(async function(el) {\r\n\t\t\t\tif (el.Id != that.currentAssignment.Id) {\r\n\t\t\t\t\tconst assignedTeams = await teamFormationService.getAssignedTeams(that.termCode, that.orgCode,\r\n\t\t\t\t\t\tthat.classCode, el.Id, 'peer_review')\r\n\t\t\t\t\tif (assignedTeams && assignedTeams.length > 0) {\r\n\t\t\t\t\t\tthat.otherPeerAssignments.push(el)\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tthat.unassignedPeerAssignments.push(el)\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t})\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Get unassigned students and assigned teams.\r\n\t\tasync getStudentsAndTeams() {\r\n\t\t\tthis.otherAssignments = []\r\n\t\t\tthis.otherPeerAssignments = []\r\n\t\t\tthis.unassignedAssignments = []\r\n\t\t\tthis.unassignedPeerAssignments = []\r\n\t\t\tthis.submissionStatus = await submissionService.getLatestSubmissions(this.termCode, this.orgCode,\r\n\t\t\t\tthis.classCode, this.assignmentId)\r\n\t\t\tconst unassignedStudents = await teamFormationService.getUnassignedStudents(this.termCode, this.orgCode,\r\n\t\t\t\tthis.classCode, this.assignmentId, 'group_project')\r\n\t\t\tif (unassignedStudents && unassignedStudents.length > 0) { this.unassignedStudents = unassignedStudents }\r\n\r\n\t\t\tconst assignedTeams = await teamFormationService.getAssignedTeams(this.termCode, this.orgCode,\r\n\t\t\t\tthis.classCode, this.assignmentId, 'group_project')\r\n\r\n\t\t\tif (assignedTeams && assignedTeams.length > 0) {\r\n\t\t\t\tthis.assignedTeams = assignedTeams\r\n\t\t\t\tthis.dueDate = assignedTeams[0].DueDate\r\n\t\t\t}\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Check if a student has already submitted paper.\r\n\t\t// @arg The student id.\r\n\t\tisSubmittedStudent(studentId) {\r\n\t\t\tconst thisStudent = this.submissionStatus.filter(function(el) {\r\n\t\t\t\treturn el.StudentId == studentId\r\n\t\t\t})\r\n\t\t\tif (thisStudent && thisStudent.length > 0) { return true } else { return false }\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Handle logics when a project is selected.\r\n\t\tonAssignmentChange() {\r\n\t\t\tthis.assignmentId = this.currentAssignment.Id\r\n\t\t\tthis.getOtherGroupAssignments()\r\n\t\t\tthis.getPeerTasks()\r\n\t\t\tthis.unassignedStudents = []\r\n\t\t\tthis.copyToAssignments = []\r\n\t\t\tthis.assignedTeams = [\r\n\t\t\t\t{\r\n\t\t\t\t\tTeamId: 1,\r\n\t\t\t\t\tMembers: []\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tTeamId: 2,\r\n\t\t\t\t\tMembers: []\r\n\t\t\t\t}\r\n\t\t\t]\r\n\t\t\tthis.getStudentsAndTeams()\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Handle logics when the add new group button is clicked.\r\n\t\taddGroup() {\r\n\t\t\tconst teamId = (this.assignedTeams && this.assignedTeams.length > 0) ? this.assignedTeams[this.assignedTeams.length - 1].TeamId + 1 : 1\r\n\t\t\tconst newGroup = {\r\n\t\t\t\tTeamId: teamId,\r\n\t\t\t\tMembers: []\r\n\t\t\t}\r\n\t\t\tthis.assignedTeams.push(newGroup)\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Handle logics when the remove group button is clicked.\r\n\t\t// @arg The team id and its index.\r\n\t\tremoveGroup(teamId, index) {\r\n\t\t\tconst thisTeam = this.assignedTeams.filter(function(el) {\r\n\t\t\t\treturn el.TeamId == teamId\r\n\t\t\t})\r\n\t\t\tif (thisTeam && thisTeam.length > 0) {\r\n\t\t\t\tconst that = this\r\n\t\t\t\tArray.prototype.forEach.call(thisTeam[0].Members, member => {\r\n\t\t\t\t\tconsole.log(member)\r\n\t\t\t\t\tthat.unassignedStudents.push(member)\r\n\t\t\t\t})\r\n\r\n\t\t\t\tthis.assignedTeams.splice(index, 1)\r\n\t\t\t}\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Handle logics when the Submit button is clicked.\r\n\t\tasync submit() {\r\n\t\t\tif (this.groupStructure == 'manual') {\r\n\t\t\t\tconst teamAssignment = {\r\n\t\t\t\t\torgCode: this.orgCode,\r\n\t\t\t\t\ttermCode: this.termCode,\r\n\t\t\t\t\tclassCode: this.classCode,\r\n\t\t\t\t\tassignmentId: this.currentAssignment.Id,\r\n\t\t\t\t\tassignmentType: 'group_project',\r\n\t\t\t\t\temailSent: true,\r\n\t\t\t\t\tisSaved: true,\r\n\t\t\t\t\tdueDate: this.getDateStr(new Date()),\r\n\t\t\t\t\tassignedTeams: []\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.assignedTeams.forEach(function(team) {\r\n\t\t\t\t const assignedTeam = {\r\n\t\t\t\t\t\tteamId: team.TeamId,\r\n\t\t\t\t\t\tassignedMembers: []\r\n\t\t\t\t\t}\r\n\t\t\t\t\tArray.prototype.forEach.call(team.Members, member => {\r\n\t\t\t\t\t\tassignedTeam.assignedMembers.push(member.MemberId)\r\n\t\t\t\t\t})\r\n\t\t\t\t\tteamAssignment.assignedTeams.push(assignedTeam)\r\n\t\t\t\t})\r\n\r\n\t\t\t\tconst response = await teamFormationService.createManually(teamAssignment)\r\n\t\t\t\tif (response && response.status == 200) {\r\n\t\t\t\t\tNotification.success({\r\n\t\t\t\t\t\tduration: 6000,\r\n\t\t\t\t\t\ttitle: 'Success',\r\n\t\t\t\t\t\tmessage: 'Groups were setup successfully.'\r\n\t\t\t\t\t})\r\n\r\n\t\t\t\t\tif (this.selectedCopyTo && this.selectedCopyTo.length > 0) {\r\n\t\t\t\t\t\tfor (const assignment of this.selectedCopyTo) {\r\n \t\t\t\t\t\tteamAssignment.assignmentId = assignment.Id\r\n\t\t\t\t\t\t\tteamAssignment.dueDate = assignment.DueDate\r\n\r\n\t\t\t\t\t\t\tawait teamFormationService.createManually(teamAssignment)\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t} else {\r\n\t\t\t\t\tNotification.error({\r\n\t\t\t\t\t\tduration: 6000,\r\n\t\t\t\t\t\ttitle: 'Error',\r\n\t\t\t\t\t\tmessage: 'Groups were not setup successfully.'\r\n\t\t\t\t\t})\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// .then(response => {\r\n\t\t\t\t// \tif (response && response.status == 200) {\r\n\t\t\t\t// \t\tNotification.success({\r\n\t\t\t\t// \t\t\tduration: 6000,\r\n\t\t\t\t// \t\t\ttitle: 'Success',\r\n\t\t\t\t// \t\t\tmessage: 'Groups were setup successfully.'\r\n\t\t\t\t// \t\t})\r\n\r\n\t\t\t\t// \t\tif (this.selectedCopyTo && this.selectedCopyTo.length > 0) {\r\n\t\t\t\t// \t\t\tthis.selectedCopyTo.forEach(assignment => {\r\n\t\t\t\t// \t\t\t\tteamAssignment.assignmentId = assignment.Id\r\n\t\t\t\t// \t\t\t\tteamAssignment.dueDate = assignment.DueDate\r\n\r\n\t\t\t\t// \t\t\t\tteamFormationService.createManually(teamAssignment)\r\n\t\t\t\t// \t\t\t})\r\n\t\t\t\t// \t\t}\r\n\t\t\t\t// \t}\r\n\t\t\t\t// })\r\n\t\t\t\t// \t.catch(error => {\r\n\t\t\t\t// \tconsole.log(error)\r\n\t\t\t\t// \tNotification.error({\r\n\t\t\t\t// \t\tduration: 6000,\r\n\t\t\t\t// \t\ttitle: 'Error',\r\n\t\t\t\t// \t\tmessage: 'Groups were not setup successfully.'\r\n\t\t\t\t// \t})\r\n\t\t\t\t// })\r\n\t\t\t} else if (this.groupStructure == 'random') {\r\n\t\t\t\tconst students = []\r\n\t\t\t\tif (this.unassignedStudents && this.unassignedStudents.length > 0) {\r\n\t\t\t\t\tthis.unassignedStudents.forEach(function(student) {\r\n\t\t\t\t\t\tstudents.push(student.MemberId)\r\n\t\t\t\t\t})\r\n\t\t\t\t}\r\n\t\t\t\tif (this.assignedTeams && this.assignedTeams.length > 0) {\r\n\t\t\t\t\tthis.assignedTeams.forEach(function(team) {\r\n\t\t\t\t\t\tArray.prototype.forEach.call(team.Members, member => {\r\n\t\t\t\t\t\t\tstudents.push(member.MemberId)\r\n\t\t\t\t\t\t})\r\n\t\t\t\t\t})\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (students.length > 0 && this.numberOfGroups <= (students.length / 2)) {\r\n\t\t\t\t\tconst teamAssignment = {\r\n\t\t\t\t\t\torgCode: this.orgCode,\r\n\t\t\t\t\t\ttermCode: this.termCode,\r\n\t\t\t\t\t\tclassCode: this.classCode,\r\n\t\t\t\t\t\tassignmentId: this.currentAssignment.Id,\r\n\t\t\t\t\t\tassignmentType: 'group_project',\r\n\t\t\t\t\t\temailSent: true,\r\n\t\t\t\t\t\tisSaved: true,\r\n\t\t\t\t\t\tdueDate: this.getDateStr(new Date()),\r\n\t\t\t\t\t\tstudents: students,\r\n\t\t\t\t\t\tgroupNumber: this.numberOfGroups\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tteamFormationService.createRandomly(teamAssignment)\r\n\t\t\t\t\t\t.then(response => {\r\n\t\t\t\t\t\t\tif (response && response.status == 200) {\r\n\t\t\t\t\t\t\t\tNotification.success({\r\n\t\t\t\t\t\t\t\t\tduration: 6000,\r\n\t\t\t\t\t\t\t\t\ttitle: 'Success',\r\n\t\t\t\t\t\t\t\t\tmessage: 'Groups were setup successfully.'\r\n\t\t\t\t\t\t\t\t})\r\n\t\t\t\t\t\t\t\tthis.unassignedStudents = []\r\n\t\t\t\t\t\t\t\tthis.getStudentsAndTeams()\r\n\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\tconsole.log('error')\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t})\r\n \t.catch(error => {\r\n\t\t\t\t\t\t\tconsole.log(error)\r\n\t\t\t\t\t\t\tNotification.error({\r\n\t\t\t\t\t\t\t\tduration: 6000,\r\n\t\t\t\t\t\t\t\ttitle: 'Error',\r\n\t\t\t\t\t\t\t\tmessage: 'Groups were not setup successfully.'\r\n\t\t\t\t\t\t\t})\r\n\t\t\t\t\t\t})\r\n\t\t\t\t} else {\r\n\t\t\t\t\tNotification.error({\r\n\t\t\t\t\t\tduration: 6000,\r\n\t\t\t\t\t\ttitle: 'Error',\r\n\t\t\t\t\t\tmessage: 'Please select a valid group number.'\r\n\t\t\t\t\t})\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\t// Copy from another assignment\r\n\t\t\t\tif (this.copyAssignment) {\r\n\t\t\t\t\tconst teamAssignment = {\r\n\t\t\t\t\t\torgCode: this.orgCode,\r\n\t\t\t\t\t\ttermCode: this.termCode,\r\n\t\t\t\t\t\tclassCode: this.classCode,\r\n\t\t\t\t\t\tassignmentId: this.currentAssignment.Id,\r\n\t\t\t\t\t\tassignmentType: 'group_project',\r\n\t\t\t\t\t\temailSent: true,\r\n\t\t\t\t\t\tisSaved: true,\r\n\t\t\t\t\t\tdueDate: this.getDateStr(new Date()),\r\n\t\t\t\t\t\tpreviousAssignmentId: this.copyAssignment.Id\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tconsole.log(teamAssignment)\r\n\r\n\t\t\t\t\tteamFormationService.copyFromAnotherAssignment(teamAssignment)\r\n\t\t\t\t\t\t.then(response => {\r\n\t\t\t\t\t\t\tif (response && response.status == 200) {\r\n\t\t\t\t\t\t\t\tNotification.success({\r\n\t\t\t\t\t\t\t\t\tduration: 6000,\r\n\t\t\t\t\t\t\t\t\ttitle: 'Success',\r\n\t\t\t\t\t\t\t\t\tmessage: 'Groups were setup successfully.'\r\n\t\t\t\t\t\t\t\t})\r\n\t\t\t\t\t\t\t\tthis.unassignedStudents = []\r\n\t\t\t\t\t\t\t\tthis.getStudentsAndTeams()\r\n\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\tconsole.log('error')\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t})\r\n \t.catch(error => {\r\n\t\t\t\t\t\t\tconsole.log(error)\r\n\t\t\t\t\t\t\tNotification.error({\r\n\t\t\t\t\t\t\t\tduration: 6000,\r\n\t\t\t\t\t\t\t\ttitle: 'Error',\r\n\t\t\t\t\t\t\t\tmessage: 'Groups were not setup successfully.'\r\n\t\t\t\t\t\t\t})\r\n\t\t\t\t\t\t})\r\n\t\t\t\t} else {\r\n\t\t\t\t\tNotification.error({\r\n\t\t\t\t\t\tduration: 6000,\r\n\t\t\t\t\t\ttitle: 'Error',\r\n\t\t\t\t\t\tmessage: 'Please select an assignment to copy.'\r\n\t\t\t\t\t})\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t},\r\n\t\tlog(evt) {\r\n\t\t},\r\n\t\tonStart(evt) {\r\n\t\t},\r\n\t\tonEnd(evt) {\r\n\t\t},\r\n\t\tgetDateStr(date) {\r\n\t\t\tconst thisDate = this.$moment(date)._d\r\n\t\t\treturn thisDate.getFullYear() + '-' + (thisDate.getMonth() + 1) + '-' +\r\n thisDate.getDate() + ' ' + thisDate.getHours() + ':' + thisDate.getMinutes() + ':' + thisDate.getSeconds()\r\n\t\t},\r\n\t\tgetUrlParameter(sParam) {\r\n\t\t\tconst sPageURL = decodeURIComponent(window.location.search.substring(1))\r\n\r\n\t\t\tconst sURLVariables = sPageURL.split('&')\r\n\r\n\t\t\tlet sParameterName\r\n\r\n\t\t\tlet i\r\n\r\n\t\t\tfor (i = 0; i < sURLVariables.length; i++) {\r\n\t\t\t\tsParameterName = sURLVariables[i].split('=')\r\n\r\n\t\t\t\tif (sParameterName[0] === sParam) {\r\n\t\t\t\t\treturn sParameterName[1] === undefined ? true : sParameterName[1]\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}\r\n</script>\r\n\r\n<style scoped>\r\n.el-table__empty-text{\r\n\tdisplay: none;\r\n}\r\n\r\n.team-formation-contents{\r\n position: relative;\r\n border-width: 0;\r\n padding-left: 0;\r\n padding-right: 0;\r\n padding-bottom: 0;\r\n padding: 14px;\r\n padding-top: 5px;\r\n -webkit-box-shadow: 0 10px 25px 0 rgba(109, 107, 107, 0.1);\r\n box-shadow: 0 10px 25px 0 rgba(109, 107, 107, 0.1);\r\n background: #fff;\r\n border-style: solid;\r\n}\r\n\r\n.unassigned-student-wrapper{\r\n height: 100%;\r\n overflow-y: auto;\r\n width: 23%;\r\n display: block;\r\n min-height: 30px;\r\n box-sizing: border-box;\r\n float: left;\r\n}\r\n\r\n.groups-wrapper{\r\n height: 100%;\r\n overflow: hidden;\r\n width: 75%;\r\n float: left;\r\n margin-left: 10px;\r\n\r\n}\r\n\r\n.unassigned{\r\n height: 90%;\r\n overflow-y: auto;\r\n}\r\n\r\n.caption {\r\n padding: 0.5em;\r\n border: gainsboro solid 1px;\r\n background: white;\r\n border-bottom: none;\r\n margin-right: 5px;\r\n}\r\n.group-container{\r\n overflow-y: auto;\r\n margin: 0 0.3em 0.5em 0;\r\n padding: 0.5em;\r\n border: 1px solid #DCDCDC;\r\n background: #FFF;\r\n color: #555;\r\n min-width: 80px;\r\n height: 300px;\r\n}\r\n\r\n .list-group{\r\n margin: auto;\r\n overflow-y: auto;\r\n margin: 0 0.5em 0.5em 0;\r\n padding: 0.5em;\r\n border-radius: 0.2em;\r\n background: #FFF;\r\n color: #555;\r\n min-width: 80px;\r\n}\r\n\r\n#filter-wrapper{\r\n border-radius: 3px;\r\n display: block;\r\n -webkit-box-shadow: 0 10px 25px 0 rgba(109, 107, 107, 0.1);\r\n box-shadow: 0 10px 25px 0 rgba(109, 107, 107, 0.1);\r\n background: #FFF;\r\n min-height: 82px;\r\n padding: 10px;\r\n padding-left: 20px;\r\n padding-bottom: 0px;\r\n margin: auto;\r\n min-width: 845px;\r\n margin-bottom: 10px;\r\n}\r\n\r\n.object-name{\r\n font-size: 14px;\r\n float: left;\r\n margin-right: 10px;\r\n box-shadow: 0 2px 4px rgba(0, 0, 0, .12), 0 0 6px rgba(0, 0, 0, .04);\r\n background: #fff;\r\n margin-bottom: 3px;\r\n padding: 3px 20px 3px 5px;\r\n line-height: 30px;\r\n border-radius: 3px;\r\n position: relative;\r\n cursor: pointer;\r\n}\r\n.unassigned .object-name{\r\n width: 85%;\r\n margin-bottom: 8px;\r\n\r\n}\r\n.groups-wrapper .object-name{\r\n width: 27%;\r\n margin-top: 5px;\r\n}\r\n.group-user-name {\r\n max-width: 80%;\r\n overflow: hidden;\r\n white-space: nowrap;\r\n margin-right: 10px;\r\n font-weight: bold;\r\n}\r\n.ellipsis {\r\n white-space: nowrap;\r\n overflow: hidden;\r\n text-overflow: ellipsis;\r\n}\r\n.no-submission-student{\r\n background: #e86060;\r\n color: white;\r\n}\r\n</style>\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./GroupProject.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./GroupProject.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./GroupProject.vue?vue&type=template&id=325f1b4f&scoped=true&\"\nimport script from \"./GroupProject.vue?vue&type=script&lang=js&\"\nexport * from \"./GroupProject.vue?vue&type=script&lang=js&\"\nimport style0 from \"./GroupProject.vue?vue&type=style&index=0&id=325f1b4f&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"325f1b4f\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_vm._m(0),(_vm.rootTemplateData)?_c('div',{staticClass:\"student-submission-wrapper\"},[_c('div',{staticStyle:{\"color\":\"#4e5e63\",\"font-weight\":\"bold\",\"font-size\":\"18px\"}},[_vm._v(\"\\n Root Level Templates\\n \")]),_c('div',{staticStyle:{\"margin-bottom\":\"20px\"}},[_c('el-input',{staticStyle:{\"float\":\"left\",\"width\":\"350px\",\"margin-top\":\"10px\"},attrs:{\"size\":\"mini\",\"placeholder\":\"Search for root templates by name\"},model:{value:(_vm.searchRootLevel),callback:function ($$v) {_vm.searchRootLevel=$$v},expression:\"searchRootLevel\"}}),_c('el-dropdown',{staticStyle:{\"float\":\"right\"},attrs:{\"trigger\":\"click\"},on:{\"command\":function (command) { return _vm.handleCommand(command); }}},[_c('el-button',{staticStyle:{\"float\":\"right\"}},[_c('span',[_vm._v(\"\\n Add New Template\\n \")])]),_c('el-dropdown-menu',{attrs:{\"slot\":\"dropdown\"},slot:\"dropdown\"},[_c('el-dropdown-item',{attrs:{\"command\":\"manual\"}},[_c('i',{staticClass:\"fas fa-edit\"}),_vm._v(\" Create Manually\")]),_c('el-dropdown-item',{attrs:{\"command\":\"copy\"}},[_c('i',{staticClass:\"far fa-copy\"}),_vm._v(\" Copy From ...\")])],1)],1)],1),_c('el-table',{staticStyle:{\"text-align\":\"center\",\"width\":\"100%\"},attrs:{\"data\":_vm.rootTemplateData.filter(function (data) { return !_vm.searchRootLevel || data.TemplateName.toLowerCase().includes(_vm.searchRootLevel.toLowerCase()); }),\"default-sort\":{prop: 'date', order: 'descending'},\"empty-text\":_vm.NULL}},[_c('el-table-column',{attrs:{\"sortable\":\"\",\"fixed\":\"\",\"prop\":\"TemplateName\",\"label\":\"Template Name\"}}),_c('el-table-column',{attrs:{\"sortable\":\"\",\"fixed\":\"\",\"prop\":\"ClassType\",\"label\":\"Course\"}}),_c('el-table-column',{attrs:{\"formatter\":_vm.cellValueRenderer,\"fixed\":\"\",\"prop\":\"IsActive\",\"label\":\"Active\",\"width\":\"100\"}}),_c('el-table-column',{attrs:{\"sortable\":\"\",\"fixed\":\"\",\"prop\":\"TermCode\",\"label\":\"Term\",\"width\":\"100\"}}),_c('el-table-column',{attrs:{\"sortable\":\"\",\"fixed\":\"\",\"prop\":\"PTerm\",\"label\":\"PTerm\",\"width\":\"100\"},scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [(scope.row.name != null)?_c('div',{staticClass:\"cell\"},[_vm._v(_vm._s(scope.row.name))]):_c('div',{staticClass:\"cell\"},[_vm._v(\"null\")])]}}],null,false,3925376813)}),_c('el-table-column',{attrs:{\"fixed\":\"\",\"label\":\"Action\",\"width\":\"200\",\"align\":\"center\"},scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [_c('el-button',{attrs:{\"size\":\"mini\"},on:{\"click\":function($event){return _vm.editTemplate(scope.$index, scope.row)}}},[_vm._v(\"\\n Edit\\n \")])]}}],null,false,1615030704)})],1)],1):_vm._e(),(_vm.rootTemplateData)?_c('div',{staticClass:\"student-submission-wrapper\",staticStyle:{\"margin-top\":\"20px\"}},[_c('div',{staticStyle:{\"color\":\"#4e5e63\",\"font-weight\":\"bold\",\"font-size\":\"18px\"}},[_vm._v(\"\\n Course-Level Templates\\n \")]),_c('el-input',{staticStyle:{\"width\":\"350px\",\"margin-bottom\":\"10px\",\"margin-top\":\"10px\"},attrs:{\"size\":\"mini\",\"placeholder\":\"Search for course-level templates by course name\"},model:{value:(_vm.searchCourseLevel),callback:function ($$v) {_vm.searchCourseLevel=$$v},expression:\"searchCourseLevel\"}}),_c('el-table',{staticStyle:{\"text-align\":\"center\",\"width\":\"100%\"},attrs:{\"data\":_vm.courseTemplateData.filter(function (data) { return !_vm.searchCourseLevel || data.CourseName.toLowerCase().includes(_vm.searchCourseLevel.toLowerCase()); }),\"default-sort\":{prop: 'date', order: 'descending'}}},[_c('el-table-column',{attrs:{\"sortable\":\"\",\"fixed\":\"\",\"prop\":\"CourseName\",\"label\":\"Course Name\"}}),_c('el-table-column',{attrs:{\"sortable\":\"\",\"fixed\":\"\",\"prop\":\"TemplateName\",\"label\":\"Template Name\"}}),_c('el-table-column',{attrs:{\"sortable\":\"\",\"fixed\":\"\",\"prop\":\"CourseType\",\"label\":\"Course Type\"}}),_c('el-table-column',{attrs:{\"fixed\":\"\",\"label\":\"Action\",\"width\":\"200\",\"align\":\"center\"},scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [_c('el-button',{attrs:{\"size\":\"mini\"},on:{\"click\":function($event){return _vm.editTemplate(scope.$index, scope.row)}}},[_vm._v(\"\\n Edit\\n \")])]}}],null,false,1615030704)})],1),_c('el-dialog',{attrs:{\"id\":\"cf-new-dialog\",\"visible\":_vm.copyTemplateDialogVisible,\"width\":\"600px\",\"center\":\"\"},on:{\"update:visible\":function($event){_vm.copyTemplateDialogVisible=$event}}},[_c('template',{slot:\"title\"},[_c('span',{staticClass:\"dialog-title\"},[_vm._v(\"\\n Copy from another Project Template\\n \")])]),_c('hr'),_c('el-form',{staticStyle:{\"margin-top\":\"20px\"},attrs:{\"label-width\":\"150px\"}},[_c('el-form-item',{attrs:{\"label\":\"From Term\"}},[_c('el-select',{attrs:{\"clearable\":\"\",\"filterable\":\"\",\"placeholder\":\"From Term\"},on:{\"change\":function($event){return _vm.onTermChange()}},model:{value:(_vm.fromTerm),callback:function ($$v) {_vm.fromTerm=$$v},expression:\"fromTerm\"}},_vm._l((_vm.fromTerms),function(item){return _c('el-option',{key:item,attrs:{\"label\":_vm.getTermName(item),\"value\":item}})}),1)],1),_c('el-form-item',{attrs:{\"label\":\"Copy Template\"}},[_c('el-select',{staticStyle:{\"width\":\"90%\"},attrs:{\"clearable\":\"\",\"filterable\":\"\",\"disabled\":_vm.fromTerm == null,\"placeholder\":\"Select a Project Template to copy from\"},on:{\"change\":function($event){return _vm.onTemplateChange()}},model:{value:(_vm.selectedTemplateId),callback:function ($$v) {_vm.selectedTemplateId=$$v},expression:\"selectedTemplateId\"}},_vm._l((_vm.templates),function(item){return _c('el-option',{key:item.Id,attrs:{\"label\":item.TemplateName,\"value\":item.Id}})}),1)],1),_c('el-form-item',{attrs:{\"label\":\"To Term\"}},[_c('el-select',{attrs:{\"clearable\":\"\",\"filterable\":\"\",\"disabled\":_vm.selectedTemplateId == null,\"placeholder\":\"Select a Term\"},on:{\"change\":function($event){return _vm.onToTermChange()}},model:{value:(_vm.toTerm),callback:function ($$v) {_vm.toTerm=$$v},expression:\"toTerm\"}},_vm._l((_vm.toTerms),function(item){return _c('el-option',{key:item.TermCode,attrs:{\"label\":item.TermDescription,\"value\":item.TermCode}})}),1)],1),(_vm.toTerm && _vm.toTerm.substr(-2) == '05')?_c('el-form-item',{attrs:{\"label\":\"Part of Term\"}},[_c('el-select',{staticStyle:{\"width\":\"200px\",\"margin-right\":\"5px\"},attrs:{\"multiple\":\"\",\"value-key\":\"pTerm\",\"filterable\":\"\",\"disabled\":_vm.toTerm == null,\"placeholder\":\"Select Part(s) of Term\"},model:{value:(_vm.pTerm),callback:function ($$v) {_vm.pTerm=$$v},expression:\"pTerm\"}},_vm._l((_vm.pTerms),function(item){return _c('el-option',{key:item.value,attrs:{\"label\":item.value,\"value\":item.value}})}),1)],1):_vm._e(),_c('el-form-item',{attrs:{\"label\":\"New Template\"}},[_c('el-input',{staticStyle:{\"width\":\"90%\"},attrs:{\"clearable\":\"\",\"disabled\":_vm.fromTerm == null || _vm.selectedTemplateId == null || _vm.toTerm == null,\"placeholder\":\"Enter a new Project Template name\"},model:{value:(_vm.newTemplateName),callback:function ($$v) {_vm.newTemplateName=$$v},expression:\"newTemplateName\"}})],1)],1),_c('span',{staticClass:\"dialog-footer\",attrs:{\"slot\":\"footer\"},slot:\"footer\"},[_c('el-button',{on:{\"click\":function($event){_vm.copyTemplateDialogVisible = false}}},[_vm._v(\"\\n Cancel\\n \")]),_c('el-button',{attrs:{\"type\":\"primary\",\"disabled\":!_vm.selectedTemplateId || !_vm.toTerm || !_vm.newTemplateName || (_vm.toTerm && (_vm.toTerm.substr(-2) == '05' && (Array.isArray(_vm.pTerm) && _vm.pTerm.length == 0)))},on:{\"click\":function($event){return _vm.copyTemplate()}}},[_vm._v(\"\\n Submit\\n \")])],1)],2)],1):_vm._e()])}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"breadcumb\"},[_c('div',{staticClass:\"ic-app-crumbs\"},[_c('span',{staticClass:\"breadcumb-text\"},[_vm._v(\"\\n Admin Tools\\n \"),_c('i',{staticClass:\"fas fa-chevron-right breadcumb-next\"}),_vm._v(\"\\n Project Templates\\n \")])])])}]\n\nexport { render, staticRenderFns }","import http from '@/utils/axios'\r\n\r\nexport function getAllRootTemplates(orgCode) {\r\n\treturn http.get(\"project_template/odata?$filter=OrgCode eq '\" + orgCode + \"' and ParentID eq 0\")\r\n\t\t.then(response => {\r\n\t\t\treturn response.data\r\n\t\t})\r\n\t\t.catch(error => {\r\n\t\t\tconsole.log(error)\r\n\t\t})\r\n}\r\n\r\nexport function getAllRootTemplatesByTerm(orgCode, termCode) {\r\n\treturn http.get(\"project_template/odata?$filter=OrgCode eq '\" + orgCode + \"' and TermCode eq '\" + termCode + \"' and ParentID eq 0\")\r\n\t\t.then(response => {\r\n\t\t\treturn response.data\r\n\t\t})\r\n\t\t.catch(error => {\r\n\t\t\tconsole.log(error)\r\n\t\t})\r\n}\r\n\r\nexport function getAllCourseLevelTemplatesByTerm(orgCode, termCode) {\r\n\treturn http.get(\"project_template/odata?$filter=OrgCode eq '\" + orgCode + \"' and TermCode eq '\" + termCode + \"' and ParentID ne 0 and IsActive eq true\")\r\n\t\t.then(response => {\r\n\t\t\treturn response.data\r\n\t\t})\r\n\t\t.catch(error => {\r\n\t\t\tconsole.log(error)\r\n\t\t})\r\n}\r\n\r\nexport function getCourseLevelTemplates(orgCode, termCode) {\r\n\treturn http.get('project_template/course/level/' + orgCode + '/' + termCode)\r\n\t\t.then(response => {\r\n\t\t\treturn response.data\r\n\t\t})\r\n\t\t.catch(error => {\r\n\t\t\tconsole.log(error)\r\n\t\t})\r\n}\r\n\r\nexport function getRootTemplateByCourseType(termCode, orgCode, courseType) {\r\n\treturn http.get('project_template/' + termCode + '/' + orgCode + '/' + courseType)\r\n\t\t.then(response => {\r\n\t\t\treturn response.data\r\n\t\t})\r\n\t\t.catch(error => {\r\n\t\t\tconsole.log(error)\r\n\t\t})\r\n}\r\n\r\nexport function getTemplateById(id) {\r\n\treturn http.get('project_template/' + id)\r\n\t\t.then(response => {\r\n\t\t\treturn response.data\r\n\t\t})\r\n\t\t.catch(error => {\r\n\t\t\tconsole.log(error)\r\n\t\t})\r\n}\r\n\r\nexport function copyTemplate(template) {\r\n\treturn http.post('project_template/copy', template)\r\n\t\t.then(response => {\r\n\t\t\treturn response.data\r\n\t\t})\r\n\t\t.catch(error => {\r\n\t\t\tconsole.log(error)\r\n\t\t})\r\n}\r\n\r\nexport function addNewTemplate(template) {\r\n\treturn http.post('project_template', template)\r\n\t\t.then(response => {\r\n\t\t\treturn response.data\r\n\t\t})\r\n\t\t.catch(error => {\r\n\t\t\tconsole.log(error)\r\n\t\t})\r\n}\r\n\r\nexport function updateTemplate(template) {\r\n\treturn http.put('project_template', template)\r\n\t\t.then(response => {\r\n\t\t\treturn response.data\r\n\t\t})\r\n\t\t.catch(error => {\r\n\t\t\tconsole.log(error)\r\n\t\t})\r\n}\r\n\r\nexport function deleteTemplate(id) {\r\n\treturn http.delete('project_template/' + id)\r\n\t\t.then(response => {\r\n\t\t\treturn response.data\r\n\t\t})\r\n\t\t.catch(error => {\r\n\t\t\tconsole.log(error)\r\n\t\t})\r\n}\r\n\r\n","<template>\r\n <div>\r\n <div class=\"breadcumb\">\r\n <div class=\"ic-app-crumbs\">\r\n <span class=\"breadcumb-text\">\r\n Admin Tools\r\n <i class=\"fas fa-chevron-right breadcumb-next\" />\r\n Project Templates\r\n </span>\r\n </div>\r\n </div>\r\n\r\n <div v-if=\"rootTemplateData\" class=\"student-submission-wrapper\">\r\n <div style=\"color: #4e5e63;font-weight: bold;font-size: 18px;\">\r\n Root Level Templates\r\n </div>\r\n\r\n <div style=\"margin-bottom: 20px;\">\r\n <el-input\r\n v-model=\"searchRootLevel\"\r\n size=\"mini\"\r\n placeholder=\"Search for root templates by name\"\r\n style=\"float: left; width: 350px; margin-top: 10px;\"\r\n />\r\n\r\n <el-dropdown trigger=\"click\" style=\"float: right;\" @command=\"command => handleCommand(command)\">\r\n <el-button style=\" float: right;\">\r\n <span>\r\n Add New Template\r\n </span>\r\n </el-button>\r\n <el-dropdown-menu slot=\"dropdown\">\r\n <el-dropdown-item command=\"manual\"><i class=\"fas fa-edit\" /> Create Manually</el-dropdown-item>\r\n <el-dropdown-item command=\"copy\"> <i class=\"far fa-copy\" /> Copy From ...</el-dropdown-item>\r\n </el-dropdown-menu>\r\n </el-dropdown>\r\n </div>\r\n\r\n <el-table\r\n :data=\"rootTemplateData.filter(data => !searchRootLevel || data.TemplateName.toLowerCase().includes(searchRootLevel.toLowerCase()))\"\r\n style=\"text-align:center; width: 100%\"\r\n :default-sort=\"{prop: 'date', order: 'descending'}\"\r\n\t\t:empty-text=\"NULL\"\r\n\t\t \r\n >\r\n <!-- <el-table-column fixed prop=\"Id\" label=\"Id\" width=\"100\" /> -->\r\n <el-table-column sortable fixed prop=\"TemplateName\" label=\"Template Name\" />\r\n <el-table-column sortable fixed prop=\"ClassType\" label=\"Course\" />\r\n\t\t<el-table-column :formatter=\"cellValueRenderer\" fixed prop=\"IsActive\" label=\"Active\" width=\"100\"/>\r\n\t\t<el-table-column sortable fixed prop=\"TermCode\" label=\"Term\" width=\"100\"/>\r\n\t\t<el-table-column sortable fixed prop=\"PTerm\" label=\"PTerm\" width=\"100\">\r\n\t\t\t<template slot-scope=\"scope\">\r\n\t\t\t\t<!-- Replace empty cell by '-' --->\r\n \t\t\t<div class=\"cell\" v-if=\"scope.row.name != null\">{{ scope.row.name }}</div>\r\n \t\t\t<div v-else class=\"cell\">null</div>\r\n </template>\r\n\t </el-table-column>\r\n\r\n <el-table-column fixed label=\"Action\" width=\"200\" align=\"center\">\r\n <template slot-scope=\"scope\">\r\n <el-button\r\n\r\n size=\"mini\"\r\n @click=\"editTemplate(scope.$index, scope.row)\"\r\n >\r\n Edit\r\n </el-button>\r\n </template>\r\n </el-table-column>\r\n </el-table>\r\n </div>\r\n\r\n <div v-if=\"rootTemplateData\" class=\"student-submission-wrapper\" style=\"margin-top: 20px;\">\r\n <div style=\"color: #4e5e63;font-weight: bold;font-size: 18px;\">\r\n Course-Level Templates\r\n </div>\r\n <el-input\r\n v-model=\"searchCourseLevel\"\r\n size=\"mini\"\r\n placeholder=\"Search for course-level templates by course name\"\r\n style=\"width: 350px; margin-bottom: 10px; margin-top: 10px;\"\r\n />\r\n\r\n <el-table\r\n :data=\"courseTemplateData.filter(data => !searchCourseLevel || data.CourseName.toLowerCase().includes(searchCourseLevel.toLowerCase()))\"\r\n style=\"text-align:center; width: 100%\"\r\n :default-sort=\"{prop: 'date', order: 'descending'}\"\r\n >\r\n <!-- <el-table-column fixed prop=\"Id\" label=\"Id\" width=\"100\" /> -->\r\n <el-table-column sortable fixed prop=\"CourseName\" label=\"Course Name\" />\r\n <el-table-column sortable fixed prop=\"TemplateName\" label=\"Template Name\" />\r\n <el-table-column sortable fixed prop=\"CourseType\" label=\"Course Type\" />\r\n <el-table-column fixed label=\"Action\" width=\"200\" align=\"center\">\r\n <template slot-scope=\"scope\">\r\n <el-button\r\n\r\n size=\"mini\"\r\n @click=\"editTemplate(scope.$index, scope.row)\"\r\n >\r\n Edit\r\n </el-button>\r\n\r\n <!-- <el-button\r\n\r\n\t\t\t\t\t\t\tsize=\"mini\"\r\n\t\t\t\t\t\t\t@click=\"deleteCourseTemplate(scope.$index, scope.row)\"\r\n\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\tDelete\r\n\t\t\t\t\t\t</el-button> -->\r\n </template>\r\n </el-table-column>\r\n </el-table>\r\n\r\n <el-dialog\r\n id=\"cf-new-dialog\"\r\n :visible.sync=\"copyTemplateDialogVisible\"\r\n width=\"600px\"\r\n center\r\n >\r\n <template slot=\"title\">\r\n <span class=\"dialog-title\">\r\n Copy from another Project Template\r\n </span>\r\n </template>\r\n <hr>\r\n\r\n <el-form label-width=\"150px\" style=\"margin-top: 20px;\">\r\n <el-form-item label=\"From Term\">\r\n <el-select\r\n v-model=\"fromTerm\"\r\n clearable\r\n filterable\r\n placeholder=\"From Term\"\r\n @change=\"onTermChange()\"\r\n >\r\n <el-option\r\n v-for=\"item in fromTerms\"\r\n :key=\"item\"\r\n :label=\"getTermName(item)\"\r\n :value=\"item\"\r\n />\r\n </el-select>\r\n </el-form-item>\r\n <el-form-item label=\"Copy Template\">\r\n <el-select\r\n v-model=\"selectedTemplateId\"\r\n clearable\r\n filterable\r\n :disabled=\"fromTerm == null\"\r\n placeholder=\"Select a Project Template to copy from\"\r\n\t\t\t @change=\"onTemplateChange()\"\r\n style=\"width: 90%;\"\r\n >\r\n <el-option\r\n v-for=\"item in templates\"\r\n :key=\"item.Id\"\r\n :label=\"item.TemplateName\"\r\n :value=\"item.Id\"\r\n />\r\n </el-select>\r\n </el-form-item>\r\n\t\t<el-form-item label=\"To Term\">\r\n <el-select\r\n v-model=\"toTerm\"\r\n clearable\r\n filterable\r\n\t\t\t :disabled=\"selectedTemplateId == null\"\r\n placeholder=\"Select a Term\"\r\n\t\t\t\t@change=\"onToTermChange()\"\r\n >\r\n <el-option\r\n v-for=\"item in toTerms\"\r\n :key=\"item.TermCode\"\r\n :label=\"item.TermDescription\"\r\n :value=\"item.TermCode\"\r\n />\r\n </el-select>\r\n </el-form-item>\r\n\r\n\t\t<el-form-item v-if=\"toTerm && toTerm.substr(-2) == '05'\" label=\"Part of Term\">\r\n\t\t\t<!-- <el-form-item label=\"PTerm\" prop=\"PTerm\"> -->\r\n <el-select \r\n\t\t\t v-model=\"pTerm\" \r\n\t\t\t multiple value-key=\"pTerm\" \r\n\t\t\t filterable \r\n\t\t\t:disabled=\"toTerm == null\"\r\n\t\t\t placeholder=\"Select Part(s) of Term\" \r\n\t\t\t style=\"width: 200px; \r\n\t\t\t margin-right: 5px;\">\r\n <el-option\r\n v-for=\"item in pTerms\"\r\n :key=\"item.value\"\r\n :label=\"item.value\"\r\n :value=\"item.value\"\r\n />\r\n </el-select>\r\n </el-form-item>\r\n\r\n\t\t<el-form-item label=\"New Template\">\r\n <el-input\r\n v-model=\"newTemplateName\"\r\n clearable\r\n :disabled=\"fromTerm == null || selectedTemplateId == null || toTerm == null\"\r\n\t\t\t placeholder=\"Enter a new Project Template name\"\r\n style=\"width: 90%;\"\r\n >\r\n </el-input>\r\n </el-form-item>\r\n </el-form>\r\n\r\n <span slot=\"footer\" class=\"dialog-footer\">\r\n <el-button @click=\"copyTemplateDialogVisible = false\">\r\n Cancel\r\n </el-button>\r\n <el-button type=\"primary\" :disabled=\"!selectedTemplateId || !toTerm || !newTemplateName || (toTerm && (toTerm.substr(-2) == '05' && (Array.isArray(pTerm) && pTerm.length == 0)))\" @click=\"copyTemplate()\">\r\n Submit\r\n </el-button>\r\n </span>\r\n </el-dialog>\r\n </div>\r\n </div>\r\n</template>\r\n\r\n<script>\r\nimport * as projectTemplateService from '@/services/project_template.service'\r\n// import * as courseService from '@/services/course.service'\r\n\r\nimport { Notification } from 'element-ui'\r\n// Display root-level and course-level project templates.\r\nexport default {\r\n\tdata() {\r\n\t\treturn {\r\n\t\t\tfromTerms: [],\r\n\t\t\ttoTerms: [],\r\n\t\t\tallTerms: this.$store.state.auth.terms,\r\n\t\t\ttermCode: this.$store.state.auth.currentTerm.TermCode,\r\n\t\t\torgCode: this.$store.state.auth.user.OrgCode,\r\n\t\t\tfromTerm: null,\r\n\t\t\ttoTerm: null,\r\n\t\t\tpTerm: null,\r\n\t\t\tpTerms: [\r\n \t{\r\n\t\t\t\t\tvalue: 'A',\r\n\t\t\t\t\tlabel: 'A'\r\n\t\t\t\t}, {\r\n\t\t\t\t\tvalue: 'B',\r\n\t\t\t\t\tlabel: 'B'\r\n\t\t\t\t}, {\r\n\t\t\t\t\tvalue: 'C',\r\n\t\t\t\t\tlabel: 'C'\r\n\t\t\t\t}\r\n\t\t\t],\r\n\t\t\tnewTemplateName: null,\r\n\t\t\ttemplates: [],\r\n\t\t\tselectedTemplateId: null,\r\n\t\t\tallRootTemplates: null,\r\n\t\t\trootTemplateData: null,\r\n\t\t\tcourseTemplateData: null,\r\n\t\t\tsearchRootLevel: '',\r\n\t\t\tsearchCourseLevel: '',\r\n\t\t\tcopyTemplateDialogVisible: false\r\n \t}\r\n\t},\r\n\tcreated() {\r\n\t\tthis.getRootTemplates()\r\n\t\tthis.getCourseTemplates()\r\n\t\tthis.fromTerm = this.termCode\r\n\t\tthis.toTerms = this.allTerms.filter(t => t.TermCode >= this.termCode)\r\n\t},\r\n\t methods: {\r\n\t\t// @vuese\r\n\t\t// Get all root level project templates.\r\n\t\tasync getRootTemplates() {\r\n\t\t\t const allTemplates = await projectTemplateService.getAllRootTemplates(this.orgCode)\r\n\t\t\t this.allRootTemplates = allTemplates.filter(t => t.TermCode != null && t.IsActive == true)\r\n\t\t\t this.rootTemplateData = allTemplates.filter(t => t.TermCode >= this.termCode)\r\n\t\t },\r\n\t\t// @vuese\r\n\t\t// Get all course level project templates.\r\n\t\tasync getCourseTemplates() {\r\n\t\t\tthis.courseTemplateData = await projectTemplateService.getCourseLevelTemplates(this.orgCode, this.termCode)\r\n\t\t},\r\n\t\tasync asyncForEach(array, callback) {\r\n\t\t\tfor (let index = 0; index < array.length; index++) {\r\n\t\t\t\tawait callback(array[index], index, array)\r\n\t\t\t}\r\n\t\t},\r\n\t\tasync handleCommand(command) {\r\n\t\t\tif (command == 'manual') {\r\n\t\t\t\tthis.addNewTemplate()\r\n\t\t\t} else if (command == 'copy') {\r\n\t\t\t\tthis.fromTerms = this.getCounts(this.allRootTemplates, 'TermCode').sort(function (a, b) { return ('' + b).localeCompare(a) })\r\n\t\t\t\tthis.templates = this.allRootTemplates.filter(t => t.TermCode == this.fromTerm)\r\n\t\t\t\tthis.copyTemplateDialogVisible = true\r\n\t\t\t}\r\n\t\t },\r\n\t\tcellValueRenderer(row, column, cellValue, index) {\r\n let value = cellValue;\r\n if (typeof row[column.property] === 'boolean') {\r\n value = String(cellValue);\r\n }\r\n return value;\r\n },\r\n\t\tonTermChange() {\r\n\t\t\tthis.selectedTemplateId = null\r\n\t\t\tthis.newTemplateName = null\r\n\t\t\tthis.toTerm = null\r\n\t\t\tthis.pTerm = null\r\n\t\t\tthis.templates = this.allRootTemplates.filter(t => t.TermCode == this.fromTerm)\r\n\t\t },\r\n\t\tonTemplateChange() {\r\n\t\t\tconst selectedTemplate = this.allRootTemplates.find(t => t.Id == this.selectedTemplateId)\r\n\t\t\tthis.newTemplateName = selectedTemplate.TemplateName + ' COPY'\r\n\t\t},\r\n\t\t onToTermChange() {\r\n\t\t\tthis.pTerm = null\r\n\t\t},\r\n\t\t copyTemplate() {\r\n\t\t\tif (this.selectedTemplateId != null) {\r\n\t\t\t\tconst selectedTemplate = this.allRootTemplates.find(t => t.Id == this.selectedTemplateId)\r\n\t\t\t\tlet pTerm = null\r\n\t\t\t\tif (this.pTerm != null) {\r\n\t\t\t\t\tpTerm = this.pTerm.join(',')\r\n\t\t\t\t}\r\n\t\t\t\tconst copyTemplate = {\r\n\t\t\t\t\tId: selectedTemplate.Id,\r\n\t\t\t\t\tOrgCode: selectedTemplate.OrgCode,\r\n\t\t\t\t\tTemplateName: this.newTemplateName,\r\n\t\t\t\t\tIsActive: false,\r\n\t\t\t\t\tParentId: 0,\r\n\t\t\t\t\tClassType: selectedTemplate.ClassType,\r\n\t\t\t\t\tTermCode: this.toTerm,\r\n\t\t\t\t\tPTerm: pTerm\r\n\t\t\t\t}\r\n\t\t\t\tconst that = this\r\n\t\t\t\tNotification.info({\r\n\t\t\t\t\tduration: 6000,\r\n\t\t\t\t\ttitle: 'Info',\r\n\t\t\t\t\tmessage: 'Copying template...'\r\n\t\t\t\t})\r\n\t\t\t\tprojectTemplateService.copyTemplate(copyTemplate)\r\n\t\t\t\t\t.then(template => {\r\n\t\t\t\t\t\tthat.getRootTemplates()\r\n\t\t\t\t\t\tthat.copyTemplateDialogVisible = false\r\n\t\t\t\t\t\tthat.selectedTemplateId = null\r\n\t\t\t\t\t\tthat.newTemplateName = null\r\n\t\t\t\t\t\tthat.toTerm = null\r\n\t\t\t\t\t\tthat.pTerm = null\r\n\t\t\t\t\t\tNotification.success({\r\n\t\t\t\t\t\t\tduration: 6000,\r\n\t\t\t\t\t\t\ttitle: 'Success',\r\n\t\t\t\t\t\t\tmessage: 'The template was copied and created successfully.'\r\n\t\t\t\t\t\t})\r\n\t\t\t\t\t}).catch(error => {\r\n\t\t\t\t\t\tconsole.log(error)\r\n\t\t\t\t\t\tthat.copyTemplateDialogVisible = false\r\n\t\t\t\t\t\tNotification.error({\r\n\t\t\t\t\t\t\tduration: 6000,\r\n\t\t\t\t\t\t\ttitle: 'Error',\r\n\t\t\t\t\t\t\tmessage: 'The template was not copied successfully.'\r\n\t\t\t\t\t\t})\r\n\t\t\t\t\t})\r\n\t\t\t}\r\n\t\t},\r\n\t\tgetCounts(data, property) {\r\n\t\t\tvar counts = data.reduce((p, c) => {\r\n\t\t\t\tvar thisProperty = c[property]\r\n\t\t\t\tif (!Object.prototype.hasOwnProperty.call(p, thisProperty)) {\r\n\t\t\t\t\tp[thisProperty] = 0\r\n\t\t\t\t}\r\n\t\t\t\tp[thisProperty]++\r\n\t\t\t\treturn p\r\n\t\t\t}, {})\r\n\r\n\t\t\tconst propertyCounts = Object.keys(counts).map((k, i) => {\r\n\t\t\t\treturn k\r\n\t\t\t})\r\n\r\n\t\t\treturn propertyCounts\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Get term description by term code.\r\n\t\t// @arg The term code.\r\n\t\tgetTermName(termCode) {\r\n\t\t\tlet termName = ''\r\n\t\t\tconst yearCode = termCode.substr(0, 4)\r\n\t\t\tconst seasonCode = termCode.substr(4, 2)\r\n\t\t\tswitch (seasonCode) {\r\n\t\t\t\tcase '01':\r\n\t\t\t\t\ttermName = 'Spring ' + yearCode\r\n\t\t\t\t\tbreak\r\n\t\t\t\tcase '05':\r\n\t\t\t\t\ttermName = 'Summer ' + yearCode\r\n\t\t\t\t\tbreak\r\n\t\t\t\tcase '08':\r\n\t\t\t\t\ttermName = 'Fall ' + yearCode\r\n\t\t\t\t\tbreak\r\n\t\t\t\tdefault:\r\n\t\t\t\t\ttermName = ''\r\n\t\t\t}\r\n\t\t\treturn termName\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Add a new project template.\r\n\t\taddNewTemplate() {\r\n\t\t\tthis.$router.push('/admin/template/new')\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Edit a project template.\r\n\t\teditTemplate(index, row) {\r\n\t\t\tthis.$router.push('/admin/template/' + row.Id)\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Delete a root level project template.\r\n\t\tdeleteRootTemplate(index, row) {\r\n\t\t\tthis.$confirm('This will permanently delete the root template. Do you want to continue?', 'Warning', {\r\n\t\t\t\tconfirmButtonText: 'OK',\r\n\t\t\t\tcancelButtonText: 'Cancel',\r\n\t\t\t\ttype: 'warning'\r\n\t\t\t}).then(() => {\r\n\t\t\t\t projectTemplateService.deleteTemplate(row.Id)\r\n\t\t\t\t\t.then(template => {\r\n\t\t\t\t\t\tthis.rootTemplateData.splice(index, 1)\r\n\t\t\t\t\t\tNotification.success({\r\n\t\t\t\t\t\t\tduration: 6000,\r\n\t\t\t\t\t\t\ttitle: 'Success',\r\n\t\t\t\t\t\t\tmessage: 'The template was deleted successfully.'\r\n\t\t\t\t\t\t})\r\n\t\t\t\t\t}).catch(error => {\r\n\t\t\t\t\t\tconsole.log(error)\r\n\t\t\t\t\t\tNotification.error({\r\n\t\t\t\t\t\t\tduration: 6000,\r\n\t\t\t\t\t\t\ttitle: 'Error',\r\n\t\t\t\t\t\t\tmessage: 'The template was not deleted successfully.'\r\n\t\t\t\t\t\t})\r\n\t\t\t\t\t})\r\n\t\t\t}).catch(() => {\r\n\t\t\t\tthis.$message({\r\n\t\t\t\t\ttype: 'info',\r\n\t\t\t\t\tmessage: 'Delete canceled'\r\n\t\t\t\t})\r\n\t\t\t})\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Delete a course level project template.\r\n\t\tdeleteCourseTemplate(index, row) {\r\n\t\t\tthis.$confirm('This will permanently delete the root template. Do you want to continue?', 'Warning', {\r\n\t\t\t\tconfirmButtonText: 'OK',\r\n\t\t\t\tcancelButtonText: 'Cancel',\r\n\t\t\t\ttype: 'warning'\r\n\t\t\t}).then(() => {\r\n\t\t\t\t projectTemplateService.deleteTemplate(row.Id)\r\n\t\t\t\t\t.then(template => {\r\n\t\t\t\t\t\tthis.courseTemplateData.splice(index, 1)\r\n\t\t\t\t\t\tNotification.success({\r\n\t\t\t\t\t\t\tduration: 6000,\r\n\t\t\t\t\t\t\ttitle: 'Success',\r\n\t\t\t\t\t\t\tmessage: 'The template was deleted successfully.'\r\n\t\t\t\t\t\t})\r\n\t\t\t\t\t}).catch(error => {\r\n\t\t\t\t\t\tconsole.log(error)\r\n\t\t\t\t\t\tNotification.error({\r\n\t\t\t\t\t\t\tduration: 6000,\r\n\t\t\t\t\t\t\ttitle: 'Error',\r\n\t\t\t\t\t\t\tmessage: 'The template was not deleted successfully.'\r\n\t\t\t\t\t\t})\r\n\t\t\t\t\t})\r\n\t\t\t}).catch(() => {\r\n\t\t\t\tthis.$message({\r\n\t\t\t\t\ttype: 'info',\r\n\t\t\t\t\tmessage: 'Delete canceled'\r\n\t\t\t\t})\r\n\t\t\t})\r\n\t\t}\r\n\t}\r\n}\r\n</script>\r\n\r\n<style scoped>\r\n.el-table__empty-text{\r\n\tdisplay: none;\r\n}\r\n.student-submission-wrapper{\r\n padding: 20px;\r\n /* background-color: #f5f5f5; */\r\n box-shadow: 20px 10px 25px 20px rgba(109, 107, 107, 0.1);\r\n}\r\n</style>\r\n<style>\r\n.center-align{\r\n text-align: center !important;\r\n}\r\n</style>\r\n\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ProjectTemplateList.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ProjectTemplateList.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./ProjectTemplateList.vue?vue&type=template&id=1e3ed6f4&scoped=true&\"\nimport script from \"./ProjectTemplateList.vue?vue&type=script&lang=js&\"\nexport * from \"./ProjectTemplateList.vue?vue&type=script&lang=js&\"\nimport style0 from \"./ProjectTemplateList.vue?vue&type=style&index=0&id=1e3ed6f4&scoped=true&lang=css&\"\nimport style1 from \"./ProjectTemplateList.vue?vue&type=style&index=1&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"1e3ed6f4\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('div',{staticClass:\"breadcumb\"},[_c('div',{staticClass:\"ic-app-crumbs\"},[_c('span',{staticClass:\"breadcumb-text\"},[_c('router-link',{staticStyle:{\"color\":\"#4E5E63\",\"text-decoration\":\"none\"},attrs:{\"to\":{ path: '/admin/templates' }}},[_vm._v(\"\\n Project Templates\\n \")]),_c('i',{staticClass:\"fas fa-chevron-right breadcumb-next\"}),(_vm.$route.params.id != 'new' && _vm.template)?_c('span',{staticStyle:{\"margin-top\":\"10px\"}},[_vm._v(\"\\n \"+_vm._s(_vm.template.TemplateName)+\" \"),_c('i',{staticClass:\"fas fa-chevron-right breadcumb-next\"}),_vm._v(\" Edit\\n \")]):_c('span',[_vm._v(\"\\n Add New Template\\n \")])],1)])]),_c('div',[_c('div',{staticClass:\"assignment-list\",staticStyle:{\"padding\":\"5px\"}},[_c('div',[(_vm.template)?_c('el-form',{ref:\"templateForm\",staticStyle:{\"margin-top\":\"20px\"},attrs:{\"inline\":true,\"model\":_vm.template,\"rules\":_vm.templateRules}},[_c('el-form-item',{staticStyle:{\"margin-left\":\"5px\"},attrs:{\"label\":\"Term\",\"prop\":\"TermCode\",\"required\":\"\"}},[_c('el-select',{staticStyle:{\"width\":\"150px\",\"margin-right\":\"5px\"},attrs:{\"value-key\":\"TermCode\",\"filterable\":\"\",\"placeholder\":\"Select Term\"},on:{\"change\":function($event){return _vm.onTermChange()}},model:{value:(_vm.template.TermCode),callback:function ($$v) {_vm.$set(_vm.template, \"TermCode\", $$v)},expression:\"template.TermCode\"}},_vm._l((_vm.toTerms),function(item){return _c('el-option',{key:item.TermCode,attrs:{\"label\":item.TermDescription,\"value\":item.TermCode}})}),1)],1),(_vm.template.TermCode.substr(-2) == '05')?_c('el-form-item',{attrs:{\"label\":\"Part\",\"prop\":\"PTerm\",\"required\":\"\"}},[_c('el-select',{staticStyle:{\"width\":\"200px\",\"margin-right\":\"5px\"},attrs:{\"multiple\":\"\",\"placeholder\":\"Select Part of Term\"},model:{value:(_vm.template.PTerm),callback:function ($$v) {_vm.$set(_vm.template, \"PTerm\", $$v)},expression:\"template.PTerm\"}},_vm._l((_vm.partOfTerms),function(item){return _c('el-option',{key:item.value,attrs:{\"label\":item.label,\"value\":item.value}})}),1)],1):_vm._e(),_c('el-form-item',{attrs:{\"label\":\"Name\",\"prop\":\"TemplateName\",\"required\":\"\"}},[_c('el-input',{attrs:{\"autocomplete\":\"off\"},model:{value:(_vm.template.TemplateName),callback:function ($$v) {_vm.$set(_vm.template, \"TemplateName\", $$v)},expression:\"template.TemplateName\"}})],1),_c('el-form-item',{attrs:{\"label\":\"Type\",\"prop\":\"ClassType\",\"required\":\"\"}},[_c('el-select',{staticStyle:{\"width\":\"100%\"},attrs:{\"value-key\":\"ClassType\",\"filterable\":\"\",\"placeholder\":\"Select Course Type\"},model:{value:(_vm.template.ClassType),callback:function ($$v) {_vm.$set(_vm.template, \"ClassType\", $$v)},expression:\"template.ClassType\"}},_vm._l((_vm.courseTypes),function(item){return _c('el-option',{key:item.value,attrs:{\"label\":item.label,\"value\":item.value}})}),1)],1),(_vm.$route.params.id == 'new' )?_c('el-button',{staticStyle:{\"float\":\"right\",\"margin-right\":\"10px\"},attrs:{\"type\":\"primary\",\"disabled\":!_vm.template.TermCode || !_vm.template.TemplateName || ( _vm.template.TermCode.substr(-2) == '05' && (Array.isArray(_vm.template.PTerm) && !_vm.template.PTerm.length)) || !_vm.template.ClassType},on:{\"click\":function($event){return _vm.submitTemplate()}}},[_vm._v(\"\\n Submit Template\\n \")]):_c('el-button',{staticStyle:{\"float\":\"right\"},attrs:{\"type\":\"primary\"},on:{\"click\":function($event){return _vm.editTemplate()}}},[_vm._v(\"\\n Save Template\\n \")])],1):_vm._e()],1)])]),(_vm.$route.params.id != 'new' && _vm.template)?_c('div',[_c('div',{staticClass:\"assignment-list\",staticStyle:{\"margin-top\":\"10px\"}},[_c('div',{staticStyle:{\"margin-bottom\":\"20px\"}},[_c('div',{staticStyle:{\"margin-bottom\":\"30px\"}},[_c('span',{staticClass:\"dialog-title\",staticStyle:{\"margin-top\":\"10px\"}},[_vm._v(\"\\n Projects in \"+_vm._s(_vm.template.TemplateName)+\"\\n \")]),_c('el-button',{staticStyle:{\"float\":\"right\"},attrs:{\"type\":\"mini\"},on:{\"click\":function($event){return _vm.openNewAssignmentDialog()}}},[_c('span',[_vm._v(\"\\n Add New Project\\n \")])]),_c('el-button',{staticStyle:{\"float\":\"right\",\"margin-right\":\"10px\"},attrs:{\"type\":\"mini\"},on:{\"click\":function($event){return _vm.orderByDueDates()}}},[_c('span',[_vm._v(\"\\n Order By Due Dates\\n \")])])],1)]),(_vm.assignments)?_c('div',{staticClass:\"collectionViewItems ig-list draggable ui-sortable\"},[_c('draggable',{staticClass:\"list-group\",attrs:{\"list\":_vm.assignments,\"group\":\"people\"},on:{\"end\":function($event){return _vm.onDragEnd()}}},_vm._l((_vm.assignments),function(assignment,key){return _c('div',{key:assignment.Id,staticClass:\"list-group-item box-card\",staticStyle:{\"width\":\"100%\"}},[_c('el-card',{staticClass:\"assignment-tile\",staticStyle:{\"margin-bottom\":\"5px\",\"border\":\"1px solid #cccecf\",\"border-top\":\"none\"},attrs:{\"shadow\":\"hover\"}},[_c('div',{staticClass:\"clearfix\",attrs:{\"slot\":\"header\"},slot:\"header\"},[_c('div',[_c('span',{staticClass:\"instructor-assignment-name\",attrs:{\"title\":assignment.AssignmentName},on:{\"click\":function($event){return _vm.openAssignmentDetailDialog(assignment.Id, key)}}},[_vm._v(\"\\n \"+_vm._s(assignment.AssignmentName)+\"\\n \"),_c('br'),_c('span',{staticClass:\"instructor-assignment-name\",staticStyle:{\"font-weight\":\"200\",\"font-size\":\"13px\",\"margin-top\":\"6px\"}},[_vm._v(\"\\n Due Date: \"),_c('b',[_vm._v(_vm._s(_vm._f(\"formatDate\")(assignment.DueDate))+\" EST\")]),_vm._v(\" \\n \")])]),_c('div',{staticStyle:{\"float\":\"right\",\"margin-top\":\"13px\"}},[_c('el-dropdown',{staticStyle:{\"margin-left\":\"18px\",\"margin-right\":\"0px\"},attrs:{\"trigger\":\"click\"},on:{\"command\":function (command) { return _vm.handleCommand(command, assignment.Id, key); }}},[_c('span',{staticClass:\"el-dropdown-link\"},[_c('i',{staticClass:\"fas fa-ellipsis-v\",staticStyle:{\"margin\":\"4px\",\"font-size\":\"17px\",\"margin-top\":\"4px\"}})]),_c('el-dropdown-menu',{attrs:{\"slot\":\"dropdown\"},slot:\"dropdown\"},[_c('el-dropdown-item',{attrs:{\"command\":\"add\"}},[_c('i',{staticClass:\"fas fa-plus\"}),_vm._v(\" New Task \")]),_c('el-dropdown-item',{attrs:{\"command\":\"edit\"}},[_c('i',{staticClass:\"fas fa-edit\",staticStyle:{\"font-size\":\"12px\"}}),_vm._v(\" Edit \")]),_c('el-dropdown-item',{attrs:{\"command\":\"delete\"}},[_c('i',{staticClass:\"fas fa-trash-alt\"}),_vm._v(\" Delete\")])],1)],1)],1),_c('div',{staticStyle:{\"float\":\"right\"}},[(assignment.IsGroupAssignment)?_c('div',{staticClass:\"assignment-details\",staticStyle:{\"margin-left\":\"20px\",\"margin-right\":\"0px\",\"margin-top\":\"17px\"}},[_c('el-tooltip',{staticClass:\"item\",attrs:{\"effect\":\"dark\",\"content\":\"This project is a group project\",\"placement\":\"bottom\"}},[_c('i',{staticClass:\"fas fa-users\",staticStyle:{\"font-size\":\"17px\",\"color\":\"#4E5E63\"}})])],1):_vm._e()])])]),_c('div',[_c('div',{staticClass:\"project-submission assignment-row\"},_vm._l((assignment.Tasks),function(task,index){return _c('div',{key:task.Id,style:(_vm.heightMin)},[_c('div',{staticStyle:{\"float\":\"left\",\"padding-left\":\"20px\",\"margin-top\":\"3px\",\"width\":\"35px\"}},[(task.Type == 'instructor_review')?_c('i',{staticClass:\"far fa-file-alt\",staticStyle:{\"font-size\":\"18px\",\"color\":\"#4E5E63\",\"margin-left\":\"10px\",\"margin-right\":\"10px\"}}):(task.Type == 'self_review')?_c('i',{staticClass:\"fas fa-user-check\",staticStyle:{\"font-size\":\"15px\",\"color\":\"#4E5E63\",\"margin-left\":\"10px\",\"margin-right\":\"10px\"}}):(task.Type == 'peer_review')?_c('i',{staticClass:\"fas fa-user-edit\",staticStyle:{\"font-size\":\"15px\",\"color\":\"#4E5E63\",\"margin-left\":\"10px\",\"margin-right\":\"10px\"}}):_c('i',{staticClass:\"fab fa-rev\",staticStyle:{\"font-size\":\"16px\",\"color\":\"#4E5E63\",\"margin-left\":\"10px\",\"margin-right\":\"10px\"}})]),_c('div',{staticStyle:{\"float\":\"left\",\"width\":\"calc(100% - 65px)\"}},[_c('div',{staticStyle:{\"float\":\"left\"}},[_c('span',{staticStyle:{\"font-size\":\"15px\",\"margin-left\":\"10px\",\"font-weight\":\"bold\"},on:{\"click\":function($event){return _vm.editTask(task, index)}}},[_vm._v(\"\\n \"+_vm._s(task.Name)+\"\\n \")]),(_vm.rubricList)?_c('p',{staticStyle:{\"margin\":\"0px\",\"margin-top\":\"5px\",\"font-size\":\"11px\",\"margin-left\":\"11px\"}},[_vm._v(\"\\n Due Date: \"),_c('b',{class:{warning: task.DueDate < assignment.DueDate}},[_vm._v(_vm._s(_vm._f(\"formatDate\")(task.DueDate))+\" EST  \")]),_vm._v(\" |  Rubric: \"),_c('b',[_vm._v(_vm._s(_vm.rubricList.find(function (r) { return r.Id == task.RubricId; }).RubricName)+\"  \")])]):_vm._e()]),_c('div',{staticStyle:{\"float\":\"right\"}},[_c('el-tooltip',{staticClass:\"item\",attrs:{\"effect\":\"dark\",\"content\":\"View Rubric\",\"placement\":\"bottom\"}},[_c('el-button',{staticClass:\"assignment-action-btn\",staticStyle:{\"margin-top\":\"2px\"},on:{\"click\":function($event){$event.stopPropagation();$event.preventDefault();return _vm.previewRubric(task.RubricId)}}},[_c('i',{staticClass:\"fa fa-list-ol\",staticStyle:{\"font-size\":\"13px\"}})])],1),_c('el-button',{staticClass:\"assignment-action-btn\",staticStyle:{\"margin-top\":\"2px\"},on:{\"click\":function($event){return _vm.editTask(task, index)}}},[_c('i',{staticClass:\"far fa-edit\",staticStyle:{\"font-size\":\"15px\",\"position\":\"relative\",\"top\":\"0px\"}})]),_c('el-button',{staticClass:\"assignment-action-btn\",staticStyle:{\"margin-top\":\"2px\"},on:{\"click\":function($event){return _vm.deleteTask(task.Id, index, key)}}},[_c('i',{staticClass:\"fas fa-trash-alt\",staticStyle:{\"font-size\":\"15px\",\"position\":\"relative\",\"top\":\"0px\"}})])],1)])])}),0)])])],1)}),0)],1):_vm._e()])]):_vm._e(),(_vm.selectedAssignment)?_c('el-dialog',{staticClass:\"assignment-dialog\",attrs:{\"visible\":_vm.newTaskDialogVisible,\"width\":\"650px\",\"center\":\"\"},on:{\"update:visible\":function($event){_vm.newTaskDialogVisible=$event},\"closed\":function($event){return _vm.closeTaskDialog()}}},[_c('template',{slot:\"title\"},[_c('span',{staticClass:\"dialog-title\"},[_vm._v(\"\\n Add New Task To \"+_vm._s(_vm.selectedAssignment.AssignmentName)+\"\\n \")])]),_c('hr'),_c('el-form',{ref:\"newTaskForm\",staticStyle:{\"margin-top\":\"20px\"},attrs:{\"model\":_vm.newTaskForm,\"rules\":_vm.taskRules}},[_c('el-form-item',{attrs:{\"label\":\"Type\",\"prop\":\"Type\",\"required\":\"\",\"label-width\":_vm.formLabelWidth}},[_c('el-select',{staticStyle:{\"width\":\"100%\"},attrs:{\"value-key\":\"Id\",\"filterable\":\"\",\"placeholder\":\"Select Rubric\"},model:{value:(_vm.newTaskForm.Type),callback:function ($$v) {_vm.$set(_vm.newTaskForm, \"Type\", $$v)},expression:\"newTaskForm.Type\"}},_vm._l((_vm.taskTypes),function(item){return _c('el-option',{key:item.value,attrs:{\"label\":item.label,\"value\":item.value}})}),1)],1),_c('el-form-item',{attrs:{\"label\":\"Task Due Date\",\"prop\":\"DueDate\",\"required\":\"\",\"label-width\":_vm.formLabelWidth}},[_c('el-date-picker',{staticStyle:{\"width\":\"100%\"},attrs:{\"type\":\"datetime\",\"placeholder\":\"Pick a date\",\"format\":\"yyyy MMM d, hh:mm a\",\"default-time\":_vm.defaultTime},model:{value:(_vm.newTaskForm.DueDate),callback:function ($$v) {_vm.$set(_vm.newTaskForm, \"DueDate\", $$v)},expression:\"newTaskForm.DueDate\"}})],1),_c('el-form-item',{attrs:{\"label\":\"Rubric\",\"prop\":\"RubricId\",\"required\":\"\",\"label-width\":_vm.formLabelWidth}},[_c('el-select',{staticStyle:{\"width\":\"100%\"},attrs:{\"value-key\":\"Id\",\"filterable\":\"\",\"placeholder\":\"Select Rubric\"},model:{value:(_vm.newTaskForm.RubricId),callback:function ($$v) {_vm.$set(_vm.newTaskForm, \"RubricId\", $$v)},expression:\"newTaskForm.RubricId\"}},_vm._l((_vm.rubricList),function(item){return _c('el-option',{key:item.Id,attrs:{\"label\":item.RubricName,\"value\":item.Id}})}),1)],1),_c('el-form-item',{staticStyle:{\"margin-bottom\":\"5px\"},attrs:{\"prop\":\"Description\",\"label-width\":_vm.formLabelWidth,\"label\":\"Project Description\"}},[_c('editor-menu-bar',{attrs:{\"editor\":_vm.newTaskEditor},scopedSlots:_vm._u([{key:\"default\",fn:function(ref){\nvar commands = ref.commands;\nvar isActive = ref.isActive;\nreturn _c('div',{staticClass:\"menubar\",staticStyle:{\"margin-bottom\":\"5px\",\"margin-top\":\"5px\"}},[_c('div',{staticClass:\"editor-btn\",class:{ 'is-active': isActive.bold() },attrs:{\"type\":\"button\"},on:{\"click\":commands.bold}},[_c('i',{staticClass:\"fas fa-bold\"})]),_c('div',{staticClass:\"editor-btn\",class:{ 'is-active': isActive.italic() },attrs:{\"type\":\"button\"},on:{\"click\":commands.italic}},[_c('i',{staticClass:\"fas fa-italic\"})]),_c('div',{staticClass:\"editor-btn\",class:{ 'is-active': isActive.strike() },on:{\"click\":commands.strike}},[_c('i',{staticClass:\"fas fa-strikethrough\"})]),_c('div',{staticClass:\"editor-btn\",class:{ 'is-active': isActive.underline() },on:{\"click\":commands.underline}},[_c('i',{staticClass:\"fas fa-underline\"})]),_c('div',{staticClass:\"editor-btn\",class:{ 'is-active': isActive.heading({ level: 1 }) },on:{\"click\":function($event){return commands.heading({ level: 1 })}}},[_c('i',{staticClass:\"fas fa-heading\"}),_c('strong',[_vm._v(\"1\")])]),_c('div',{staticClass:\"editor-btn\",class:{ 'is-active': isActive.heading({ level: 2 }) },on:{\"click\":function($event){return commands.heading({ level: 2 })}}},[_c('i',{staticClass:\"fas fa-heading\"}),_c('strong',[_vm._v(\"2\")])]),_c('div',{staticClass:\"editor-btn\",class:{ 'is-active': isActive.heading({ level: 3 }) },on:{\"click\":function($event){return commands.heading({ level: 3 })}}},[_c('i',{staticClass:\"fas fa-heading\"}),_c('strong',[_vm._v(\"3\")])]),_c('div',{staticClass:\"editor-btn\",class:{ 'is-active': isActive.bullet_list() },on:{\"click\":commands.bullet_list}},[_c('i',{staticClass:\"fas fa-list-ul\"})]),_c('div',{staticClass:\"editor-btn\",class:{ 'is-active': isActive.ordered_list() },on:{\"click\":commands.ordered_list}},[_c('i',{staticClass:\"fas fa-list-ol\"})]),_c('div',{staticClass:\"editor-btn\",class:{ 'is-active': isActive.blockquote() },on:{\"click\":function($event){return commands.blockquote()}}},[_c('i',{staticClass:\"fas fa-quote-right\"})])])}}],null,false,2947961898)}),_c('editor-content',{staticClass:\"el-textarea__inner assignment-edit-editor\",attrs:{\"id\":\"description-editor\",\"editor\":_vm.newTaskEditor}})],1)],1),_c('span',{staticClass:\"dialog-footer\",attrs:{\"slot\":\"footer\"},slot:\"footer\"},[_c('el-button',{on:{\"click\":function($event){_vm.newTaskDialogVisible = false}}},[_vm._v(\"\\n Cancel\\n \")]),_c('el-button',{attrs:{\"type\":\"primary\"},on:{\"click\":function($event){return _vm.addNewTask()}}},[_vm._v(\"\\n Submit\\n \")])],1)],2):_vm._e(),(_vm.selectedTask)?_c('el-dialog',{staticClass:\"assignment-dialog\",attrs:{\"visible\":_vm.editTaskDialogVisible,\"width\":\"650px\",\"center\":\"\"},on:{\"update:visible\":function($event){_vm.editTaskDialogVisible=$event}}},[_c('template',{slot:\"title\"},[_c('span',{staticClass:\"dialog-title\"},[_vm._v(\"\\n Edit \"+_vm._s(_vm.selectedTask.Name)+\"\\n \")])]),_c('hr'),_c('el-form',{ref:\"taskForm\",staticStyle:{\"margin-top\":\"20px\"},attrs:{\"model\":_vm.selectedTask,\"rules\":_vm.rules}},[_c('el-form-item',{attrs:{\"label\":\"Type\",\"prop\":\"Type\",\"required\":\"\",\"label-width\":_vm.formLabelWidth}},[_c('el-select',{staticStyle:{\"width\":\"100%\"},attrs:{\"value-key\":\"Id\",\"filterable\":\"\",\"placeholder\":\"Select Rubric\"},model:{value:(_vm.selectedTask.Type),callback:function ($$v) {_vm.$set(_vm.selectedTask, \"Type\", $$v)},expression:\"selectedTask.Type\"}},_vm._l((_vm.taskTypes),function(item){return _c('el-option',{key:item.value,attrs:{\"label\":item.label,\"value\":item.value}})}),1)],1),_c('el-form-item',{attrs:{\"label\":\"Task Due Date\",\"prop\":\"DueDate\",\"required\":\"\",\"label-width\":_vm.formLabelWidth}},[_c('el-date-picker',{staticStyle:{\"width\":\"100%\"},attrs:{\"type\":\"datetime\",\"placeholder\":\"Pick a date\",\"format\":\"yyyy MMM d, hh:mm a\",\"default-time\":_vm.defaultTime},model:{value:(_vm.selectedTask.DueDate),callback:function ($$v) {_vm.$set(_vm.selectedTask, \"DueDate\", $$v)},expression:\"selectedTask.DueDate\"}})],1),_c('el-form-item',{attrs:{\"label\":\"Rubric\",\"prop\":\"RubricId\",\"required\":\"\",\"label-width\":_vm.formLabelWidth}},[_c('el-select',{staticStyle:{\"width\":\"100%\"},attrs:{\"value-key\":\"Id\",\"filterable\":\"\",\"placeholder\":\"Select Rubric\"},model:{value:(_vm.selectedTask.RubricId),callback:function ($$v) {_vm.$set(_vm.selectedTask, \"RubricId\", $$v)},expression:\"selectedTask.RubricId\"}},_vm._l((_vm.rubricList),function(item){return _c('el-option',{key:item.Id,attrs:{\"label\":item.RubricName,\"value\":item.Id}})}),1)],1),_c('el-form-item',{staticStyle:{\"margin-bottom\":\"5px\"},attrs:{\"prop\":\"Description\",\"label-width\":_vm.formLabelWidth,\"label\":\"Project Description\"}},[_c('editor-menu-bar',{attrs:{\"editor\":_vm.editTaskEditor},scopedSlots:_vm._u([{key:\"default\",fn:function(ref){\nvar commands = ref.commands;\nvar isActive = ref.isActive;\nreturn _c('div',{staticClass:\"menubar\",staticStyle:{\"margin-bottom\":\"5px\",\"margin-top\":\"5px\"}},[_c('div',{staticClass:\"editor-btn\",class:{ 'is-active': isActive.bold() },attrs:{\"type\":\"button\"},on:{\"click\":commands.bold}},[_c('i',{staticClass:\"fas fa-bold\"})]),_c('div',{staticClass:\"editor-btn\",class:{ 'is-active': isActive.italic() },attrs:{\"type\":\"button\"},on:{\"click\":commands.italic}},[_c('i',{staticClass:\"fas fa-italic\"})]),_c('div',{staticClass:\"editor-btn\",class:{ 'is-active': isActive.strike() },on:{\"click\":commands.strike}},[_c('i',{staticClass:\"fas fa-strikethrough\"})]),_c('div',{staticClass:\"editor-btn\",class:{ 'is-active': isActive.underline() },on:{\"click\":commands.underline}},[_c('i',{staticClass:\"fas fa-underline\"})]),_c('div',{staticClass:\"editor-btn\",class:{ 'is-active': isActive.heading({ level: 1 }) },on:{\"click\":function($event){return commands.heading({ level: 1 })}}},[_c('i',{staticClass:\"fas fa-heading\"}),_c('strong',[_vm._v(\"1\")])]),_c('div',{staticClass:\"editor-btn\",class:{ 'is-active': isActive.heading({ level: 2 }) },on:{\"click\":function($event){return commands.heading({ level: 2 })}}},[_c('i',{staticClass:\"fas fa-heading\"}),_c('strong',[_vm._v(\"2\")])]),_c('div',{staticClass:\"editor-btn\",class:{ 'is-active': isActive.heading({ level: 3 }) },on:{\"click\":function($event){return commands.heading({ level: 3 })}}},[_c('i',{staticClass:\"fas fa-heading\"}),_c('strong',[_vm._v(\"3\")])]),_c('div',{staticClass:\"editor-btn\",class:{ 'is-active': isActive.bullet_list() },on:{\"click\":commands.bullet_list}},[_c('i',{staticClass:\"fas fa-list-ul\"})]),_c('div',{staticClass:\"editor-btn\",class:{ 'is-active': isActive.ordered_list() },on:{\"click\":commands.ordered_list}},[_c('i',{staticClass:\"fas fa-list-ol\"})]),_c('div',{staticClass:\"editor-btn\",class:{ 'is-active': isActive.blockquote() },on:{\"click\":function($event){return commands.blockquote()}}},[_c('i',{staticClass:\"fas fa-quote-right\"})])])}}],null,false,2947961898)}),_c('editor-content',{staticClass:\"el-textarea__inner assignment-edit-editor\",attrs:{\"id\":\"description-editor\",\"editor\":_vm.editTaskEditor}})],1)],1),_c('span',{staticClass:\"dialog-footer\",attrs:{\"slot\":\"footer\"},slot:\"footer\"},[_c('el-button',{on:{\"click\":function($event){_vm.editTaskDialogVisible = false}}},[_vm._v(\"\\n Cancel\\n \")]),_c('el-button',{attrs:{\"type\":\"primary\"},on:{\"click\":function($event){return _vm.updateTask()}}},[_vm._v(\"\\n Submit\\n \")])],1)],2):_vm._e(),(_vm.selectedAssignment)?_c('el-dialog',{staticClass:\"assignment-dialog\",attrs:{\"visible\":_vm.editAssignmentDialogVisible,\"width\":\"650px\",\"center\":\"\"},on:{\"update:visible\":function($event){_vm.editAssignmentDialogVisible=$event}}},[_c('template',{slot:\"title\"},[_c('span',{staticClass:\"dialog-title\"},[_vm._v(\"\\n Edit \"+_vm._s(_vm.selectedAssignment.AssignmentName)+\"\\n \")])]),_c('hr'),_c('el-form',{ref:\"assignmentForm\",staticStyle:{\"margin-top\":\"20px\"},attrs:{\"model\":_vm.selectedAssignment,\"rules\":_vm.rules}},[_c('el-form-item',{attrs:{\"label\":\"Project Name\",\"prop\":\"AssignmentName\",\"required\":\"\",\"label-width\":_vm.formLabelWidth}},[_c('el-input',{attrs:{\"autocomplete\":\"off\"},model:{value:(_vm.selectedAssignment.AssignmentName),callback:function ($$v) {_vm.$set(_vm.selectedAssignment, \"AssignmentName\", $$v)},expression:\"selectedAssignment.AssignmentName\"}})],1),_c('el-form-item',{attrs:{\"label\":\"Project Due Date\",\"prop\":\"DueDate\",\"required\":\"\",\"label-width\":_vm.formLabelWidth}},[_c('el-date-picker',{staticStyle:{\"width\":\"100%\"},attrs:{\"type\":\"datetime\",\"placeholder\":\"Pick a date\",\"format\":\"yyyy MMM d, hh:mm a\",\"default-time\":_vm.defaultTime},model:{value:(_vm.selectedAssignment.DueDate),callback:function ($$v) {_vm.$set(_vm.selectedAssignment, \"DueDate\", $$v)},expression:\"selectedAssignment.DueDate\"}})],1),_c('el-form-item',{attrs:{\"label\":\"Rubric\",\"prop\":\"RubricId\",\"required\":\"\",\"label-width\":_vm.formLabelWidth}},[_c('el-select',{staticStyle:{\"width\":\"100%\"},attrs:{\"value-key\":\"Id\",\"filterable\":\"\",\"placeholder\":\"Select Rubric\"},model:{value:(_vm.selectedAssignment.RubricId),callback:function ($$v) {_vm.$set(_vm.selectedAssignment, \"RubricId\", $$v)},expression:\"selectedAssignment.RubricId\"}},_vm._l((_vm.rubricList),function(item){return _c('el-option',{key:item.Id,attrs:{\"label\":item.RubricName,\"value\":item.Id}})}),1)],1),_c('el-form-item',{attrs:{\"label\":\"Is Group Project\",\"prop\":\"IsGroupAssignment\",\"label-width\":_vm.formLabelWidth}},[_c('el-checkbox',{staticStyle:{\"margin-top\":\"12px\"},attrs:{\"name\":\"isGroup\"},model:{value:(_vm.selectedAssignment.IsGroupAssignment),callback:function ($$v) {_vm.$set(_vm.selectedAssignment, \"IsGroupAssignment\", $$v)},expression:\"selectedAssignment.IsGroupAssignment\"}})],1),_c('el-form-item',{staticStyle:{\"margin-bottom\":\"5px\"},attrs:{\"prop\":\"Description\",\"label-width\":_vm.formLabelWidth,\"label\":\"Project Description\"}},[_c('editor-menu-bar',{attrs:{\"editor\":_vm.editDescriptionEditor},scopedSlots:_vm._u([{key:\"default\",fn:function(ref){\nvar commands = ref.commands;\nvar isActive = ref.isActive;\nreturn _c('div',{staticClass:\"menubar\",staticStyle:{\"margin-bottom\":\"5px\",\"margin-top\":\"5px\"}},[_c('div',{staticClass:\"editor-btn\",class:{ 'is-active': isActive.bold() },attrs:{\"type\":\"button\"},on:{\"click\":commands.bold}},[_c('i',{staticClass:\"fas fa-bold\"})]),_c('div',{staticClass:\"editor-btn\",class:{ 'is-active': isActive.italic() },attrs:{\"type\":\"button\"},on:{\"click\":commands.italic}},[_c('i',{staticClass:\"fas fa-italic\"})]),_c('div',{staticClass:\"editor-btn\",class:{ 'is-active': isActive.strike() },on:{\"click\":commands.strike}},[_c('i',{staticClass:\"fas fa-strikethrough\"})]),_c('div',{staticClass:\"editor-btn\",class:{ 'is-active': isActive.underline() },on:{\"click\":commands.underline}},[_c('i',{staticClass:\"fas fa-underline\"})]),_c('div',{staticClass:\"editor-btn\",class:{ 'is-active': isActive.heading({ level: 1 }) },on:{\"click\":function($event){return commands.heading({ level: 1 })}}},[_c('i',{staticClass:\"fas fa-heading\"}),_c('strong',[_vm._v(\"1\")])]),_c('div',{staticClass:\"editor-btn\",class:{ 'is-active': isActive.heading({ level: 2 }) },on:{\"click\":function($event){return commands.heading({ level: 2 })}}},[_c('i',{staticClass:\"fas fa-heading\"}),_c('strong',[_vm._v(\"2\")])]),_c('div',{staticClass:\"editor-btn\",class:{ 'is-active': isActive.heading({ level: 3 }) },on:{\"click\":function($event){return commands.heading({ level: 3 })}}},[_c('i',{staticClass:\"fas fa-heading\"}),_c('strong',[_vm._v(\"3\")])]),_c('div',{staticClass:\"editor-btn\",class:{ 'is-active': isActive.bullet_list() },on:{\"click\":commands.bullet_list}},[_c('i',{staticClass:\"fas fa-list-ul\"})]),_c('div',{staticClass:\"editor-btn\",class:{ 'is-active': isActive.ordered_list() },on:{\"click\":commands.ordered_list}},[_c('i',{staticClass:\"fas fa-list-ol\"})]),_c('div',{staticClass:\"editor-btn\",class:{ 'is-active': isActive.blockquote() },on:{\"click\":function($event){return commands.blockquote()}}},[_c('i',{staticClass:\"fas fa-quote-right\"})])])}}],null,false,2947961898)}),_c('editor-content',{staticClass:\"el-textarea__inner assignment-edit-editor\",attrs:{\"id\":\"description-editor\",\"editor\":_vm.editDescriptionEditor}})],1)],1),_c('span',{staticClass:\"dialog-footer\",attrs:{\"slot\":\"footer\"},slot:\"footer\"},[_c('el-button',{on:{\"click\":function($event){_vm.editAssignmentDialogVisible = false}}},[_vm._v(\"\\n Cancel\\n \")]),_c('el-button',{attrs:{\"type\":\"primary\"},on:{\"click\":function($event){return _vm.editAssignment()}}},[_vm._v(\"\\n Submit\\n \")])],1)],2):_vm._e(),_c('el-dialog',{attrs:{\"id\":\"assignment-detail-dialog\",\"visible\":_vm.assignmentDetailDialogVisible,\"width\":\"650px\",\"center\":\"\"},on:{\"update:visible\":function($event){_vm.assignmentDetailDialogVisible=$event}}},[_c('template',{slot:\"title\"},[(_vm.selectedAssignment)?_c('span',{staticClass:\"dialog-title\"},[_vm._v(\"\\n \"+_vm._s(_vm.selectedAssignment.AssignmentName)+\"\\n \")]):_vm._e()]),_c('hr'),(_vm.selectedAssignment)?_c('div',{staticStyle:{\"word-break\":\"normal\"}},[_c('div',{staticStyle:{\"margin-bottom\":\"3px\",\"margin-top\":\"10px\",\"font-weight\":\"bold\"}},[_vm._v(\"\\n Important Information\\n \")]),_c('div',{staticStyle:{\"padding\":\"8px 16px\",\"padding-top\":\"px\",\"background-color\":\"#ecf8ff\",\"border-radius\":\"4px\",\"border-left\":\"5px solid #50bfff\",\"margin\":\"20px 0\",\"margin-top\":\"8px\",\"line-height\":\"2em\"}},[_c('span',[_vm._v(\"\\n This project is due at \"),_c('strong',[_vm._v(_vm._s(_vm._f(\"formatDate\")(_vm.selectedAssignment.DueDate))+\" EST\")]),_vm._v(\". It\\n \"),(_vm.selectedAssignment.IsGroupAssignment)?_c('span',[_vm._v(\"\\n is a group project which\\n \")]):_vm._e(),_vm._v(\"\\n includes\\n \"),(!_vm.selectedAssignment.Tasks.length)?_c('span',[_vm._v(\"\\n no sub-tasks.\\n \")]):_c('span',[_vm._v(\"\\n the following tasks: \\n \")])]),_vm._l((_vm.selectedAssignment.Tasks),function(task){return _c('div',{key:task.Id},[_c('strong',[_vm._v(\"- \"+_vm._s(task.Name)+\": \")]),_vm._v(\" due at\\n \"),_c('strong',[_vm._v(_vm._s(_vm._f(\"formatDate\")(task.DueDate))+\" EST\")])])})],2),_c('div',{staticStyle:{\"margin-bottom\":\"3px\",\"font-weight\":\"bold\"}},[_vm._v(\"\\n Project Overview\\n \")]),_c('editor-content',{staticClass:\"el-textarea__inner assignment-detail-editor\",attrs:{\"id\":\"description-detail-editor\",\"editor\":_vm.descriptionDetailEditor}})],1):_vm._e(),_c('span',{staticClass:\"dialog-footer\",attrs:{\"slot\":\"footer\"},slot:\"footer\"},[(_vm.userRole == 'Instructor')?_c('el-button',{on:{\"click\":function($event){return _vm.gotoStudentSubmissions(_vm.selectedAssignment.Id)}}},[_vm._v(\"\\n View Student Submissions\\n \")]):_vm._e(),(_vm.userRole == 'Instructor')?_c('el-button',{on:{\"click\":function($event){return _vm.gotoStudentScores(_vm.selectedAssignment.Id)}}},[_vm._v(\"\\n View Student Holistic Scores\\n \")]):_vm._e(),(_vm.userRole == 'Student'&& _vm.selectedAssignment)?_c('div',{staticStyle:{\"margin-top\":\"20px\"}},[(_vm.submissionStatus && _vm.submissionStatus[_vm.selectedKey] && _vm.submissionStatus[_vm.selectedKey].Status == 'No Submission')?_c('el-button',{staticStyle:{\"padding\":\"10px\",\"margin-bottom\":\"10px\",\"margin-right\":\"10px\"},on:{\"click\":function($event){return _vm.openDialog(_vm.selectedAssignment.Id, _vm.selectedKey)}}},[_c('i',{staticClass:\"fas fa-file-upload\",staticStyle:{\"font-size\":\"18px\"}}),_vm._v(\" Submit Project\\n \")]):_vm._e(),(_vm.submissionStatus && _vm.submissionStatus[_vm.selectedKey] && (_vm.submissionStatus[_vm.selectedKey].Status == 'Submitted' || _vm.submissionStatus[_vm.selectedKey].Status == 'Feedback Available'))?_c('el-button',{staticStyle:{\"padding\":\"10px\",\"margin-bottom\":\"10px\",\"margin-right\":\"10px\"},on:{\"click\":function($event){return _vm.openDialog(_vm.selectedAssignment.Id, _vm.selectedKey)}}},[_c('i',{staticClass:\"fas fa-file-upload\",staticStyle:{\"font-size\":\"18px\"}}),_vm._v(\" Re-submit Project\\n \")]):_vm._e(),(_vm.submissionStatus && _vm.submissionStatus[_vm.selectedKey] && _vm.submissionStatus[_vm.selectedKey].Status == 'Feedback Available')?_c('el-badge',{staticClass:\"badge-item\",staticStyle:{\"vertical-align\":\"initial\",\"margin-left\":\"0px\"},attrs:{\"value\":_vm.submissionStatus[_vm.selectedKey].ReviewCount}},[_c('el-button',{staticStyle:{\"padding\":\"10px\",\"margin-bottom\":\"10px\"},on:{\"click\":function($event){return _vm.viewFeedback(_vm.selectedAssignment.Id)}}},[_c('i',{staticClass:\"far fa-comment-alt\",staticStyle:{\"font-size\":\"18px\",\"margin-right\":\"5px\"}}),_vm._v(\"\\n View Feedback\\n \")])],1):_vm._e(),(_vm.submissionStatus && _vm.submissionStatus[_vm.selectedKey] && _vm.submissionStatus[_vm.selectedKey].Status != 'No Submission')?_c('el-button',{staticStyle:{\"padding\":\"10px\",\"margin-bottom\":\"10px\",\"margin-right\":\"10px\"},on:{\"click\":function($event){return _vm.download(_vm.submissionStatus[_vm.selectedKey].DocId, _vm.selectedAssignment)}}},[_c('i',{staticClass:\"fas fa-download\",staticStyle:{\"font-size\":\"18px\",\"margin-right\":\"5px\"}}),_vm._v(\"Download Submission\\n \")]):_vm._e(),(_vm.selectedAssignment.UsePeerReview)?_c('el-button',{staticStyle:{\"padding\":\"10px\",\"margin-bottom\":\"10px\",\"margin-right\":\"10px\"},on:{\"click\":function($event){return _vm.peerReview(_vm.selectedAssignment.Id, _vm.selectedAssignment.IsGroupAssignment, _vm.submissionStatus[_vm.selectedKey].GroupId)}}},[_c('i',{staticClass:\"fas fa-user-edit\",staticStyle:{\"font-size\":\"18px\",\"margin-right\":\"0px\"}}),_vm._v(\"\\n Peer Review\\n \")]):_vm._e(),(_vm.selectedAssignment.UseSelfAssessment)?_c('el-button',{staticStyle:{\"padding\":\"10px\",\"margin-bottom\":\"10px\",\"margin-right\":\"10px\"},on:{\"click\":function($event){return _vm.selfReview(_vm.selectedAssignment.Id, _vm.selectedAssignment.IsGroupAssignment, _vm.submissionStatus[_vm.selectedKey].GroupId)}}},[_c('i',{staticClass:\"fas fa-user-check\",staticStyle:{\"font-size\":\"18px\",\"margin-right\":\"5px\"}}),_vm._v(\"Self Review\\n \")]):_vm._e(),(_vm.selectedAssignment.UseAppraisal)?_c('el-button',{staticStyle:{\"padding\":\"10px\",\"margin-bottom\":\"10px\",\"margin-right\":\"10px\"},on:{\"click\":function($event){return _vm.appraisal(_vm.selectedAssignment.Id, _vm.selectedAssignment.IsGroupAssignment, _vm.submissionStatus[_vm.selectedKey].GroupId)}}},[_c('i',{staticClass:\"fab fa-rev\",staticStyle:{\"font-size\":\"18px\",\"margin-right\":\"0px\"}}),_vm._v(\"\\n Appraisal\\n \")]):_vm._e()],1):_vm._e()],1)],2),_c('el-dialog',{staticClass:\"assignment-dialog\",attrs:{\"visible\":_vm.newAssignmentDialogVisible,\"width\":\"650px\",\"center\":\"\"},on:{\"update:visible\":function($event){_vm.newAssignmentDialogVisible=$event},\"closed\":function($event){return _vm.closeAssignmentDialog()}}},[_c('template',{slot:\"title\"},[_c('span',{staticClass:\"dialog-title\"},[_vm._v(\"\\n Add New Project\\n \")])]),_c('hr'),_c('el-form',{ref:\"newAssignmentForm\",staticStyle:{\"margin-top\":\"20px\"},attrs:{\"model\":_vm.newAssignmentForm,\"rules\":_vm.rules}},[_c('el-form-item',{attrs:{\"label\":\"Project Name\",\"prop\":\"AssignmentName\",\"required\":\"\",\"label-width\":_vm.formLabelWidth}},[_c('el-input',{attrs:{\"autocomplete\":\"off\"},model:{value:(_vm.newAssignmentForm.AssignmentName),callback:function ($$v) {_vm.$set(_vm.newAssignmentForm, \"AssignmentName\", $$v)},expression:\"newAssignmentForm.AssignmentName\"}})],1),_c('el-form-item',{attrs:{\"label\":\"Project Due Date\",\"prop\":\"DueDate\",\"required\":\"\",\"label-width\":_vm.formLabelWidth}},[_c('el-date-picker',{staticStyle:{\"width\":\"100%\"},attrs:{\"type\":\"datetime\",\"placeholder\":\"Pick a date\",\"format\":\"yyyy MMM d, hh:mm a\",\"default-time\":_vm.defaultTime},model:{value:(_vm.newAssignmentForm.DueDate),callback:function ($$v) {_vm.$set(_vm.newAssignmentForm, \"DueDate\", $$v)},expression:\"newAssignmentForm.DueDate\"}})],1),_c('el-form-item',{attrs:{\"label\":\"Rubric\",\"prop\":\"RubricId\",\"required\":\"\",\"label-width\":_vm.formLabelWidth}},[_c('el-select',{staticStyle:{\"width\":\"100%\"},attrs:{\"value-key\":\"Id\",\"filterable\":\"\",\"placeholder\":\"Select Rubric\"},model:{value:(_vm.newAssignmentForm.RubricId),callback:function ($$v) {_vm.$set(_vm.newAssignmentForm, \"RubricId\", $$v)},expression:\"newAssignmentForm.RubricId\"}},_vm._l((_vm.rubricList),function(item){return _c('el-option',{key:item.Id,attrs:{\"label\":item.RubricName,\"value\":item.Id}})}),1)],1),_c('el-form-item',{attrs:{\"label\":\"Is Group Project\",\"prop\":\"IsGroupAssignment\",\"label-width\":_vm.formLabelWidth}},[_c('el-checkbox',{staticStyle:{\"margin-top\":\"12px\"},attrs:{\"name\":\"isGroup\"},model:{value:(_vm.newAssignmentForm.IsGroupAssignment),callback:function ($$v) {_vm.$set(_vm.newAssignmentForm, \"IsGroupAssignment\", $$v)},expression:\"newAssignmentForm.IsGroupAssignment\"}})],1),_c('el-form-item',{staticStyle:{\"margin-bottom\":\"5px\"},attrs:{\"prop\":\"Description\",\"label-width\":_vm.formLabelWidth,\"label\":\"Project Description\"}},[_c('editor-menu-bar',{attrs:{\"editor\":_vm.newDescriptionEditor},scopedSlots:_vm._u([{key:\"default\",fn:function(ref){\nvar commands = ref.commands;\nvar isActive = ref.isActive;\nreturn _c('div',{staticClass:\"menubar\",staticStyle:{\"margin-bottom\":\"5px\",\"margin-top\":\"5px\"}},[_c('div',{staticClass:\"editor-btn\",class:{ 'is-active': isActive.bold() },attrs:{\"type\":\"button\"},on:{\"click\":commands.bold}},[_c('i',{staticClass:\"fas fa-bold\"})]),_c('div',{staticClass:\"editor-btn\",class:{ 'is-active': isActive.italic() },attrs:{\"type\":\"button\"},on:{\"click\":commands.italic}},[_c('i',{staticClass:\"fas fa-italic\"})]),_c('div',{staticClass:\"editor-btn\",class:{ 'is-active': isActive.strike() },on:{\"click\":commands.strike}},[_c('i',{staticClass:\"fas fa-strikethrough\"})]),_c('div',{staticClass:\"editor-btn\",class:{ 'is-active': isActive.underline() },on:{\"click\":commands.underline}},[_c('i',{staticClass:\"fas fa-underline\"})]),_c('div',{staticClass:\"editor-btn\",class:{ 'is-active': isActive.heading({ level: 1 }) },on:{\"click\":function($event){return commands.heading({ level: 1 })}}},[_c('i',{staticClass:\"fas fa-heading\"}),_c('strong',[_vm._v(\"1\")])]),_c('div',{staticClass:\"editor-btn\",class:{ 'is-active': isActive.heading({ level: 2 }) },on:{\"click\":function($event){return commands.heading({ level: 2 })}}},[_c('i',{staticClass:\"fas fa-heading\"}),_c('strong',[_vm._v(\"2\")])]),_c('div',{staticClass:\"editor-btn\",class:{ 'is-active': isActive.heading({ level: 3 }) },on:{\"click\":function($event){return commands.heading({ level: 3 })}}},[_c('i',{staticClass:\"fas fa-heading\"}),_c('strong',[_vm._v(\"3\")])]),_c('div',{staticClass:\"editor-btn\",class:{ 'is-active': isActive.bullet_list() },on:{\"click\":commands.bullet_list}},[_c('i',{staticClass:\"fas fa-list-ul\"})]),_c('div',{staticClass:\"editor-btn\",class:{ 'is-active': isActive.ordered_list() },on:{\"click\":commands.ordered_list}},[_c('i',{staticClass:\"fas fa-list-ol\"})]),_c('div',{staticClass:\"editor-btn\",class:{ 'is-active': isActive.blockquote() },on:{\"click\":function($event){return commands.blockquote()}}},[_c('i',{staticClass:\"fas fa-quote-right\"})])])}}])}),_c('editor-content',{staticClass:\"el-textarea__inner assignment-edit-editor\",attrs:{\"id\":\"description-editor\",\"editor\":_vm.newDescriptionEditor}})],1)],1),_c('span',{staticClass:\"dialog-footer\",attrs:{\"slot\":\"footer\"},slot:\"footer\"},[_c('el-button',{on:{\"click\":function($event){_vm.newAssignmentDialogVisible = false}}},[_vm._v(\"\\n Cancel\\n \")]),_c('el-button',{attrs:{\"type\":\"primary\"},on:{\"click\":function($event){return _vm.addNewAssignment()}}},[_vm._v(\"\\n Submit\\n \")])],1)],2),_c('el-dialog',{attrs:{\"id\":\"preview-rubric-dialog\",\"visible\":_vm.rubricPreviewDialogVisible,\"width\":\"750px\",\"top\":\"50px\",\"center\":\"\"},on:{\"update:visible\":function($event){_vm.rubricPreviewDialogVisible=$event}}},[_c('template',{slot:\"title\"},[(_vm.rubric)?_c('span',{staticClass:\"rubric-dialog-title\"},[_vm._v(\"\\n Preview \"),_c('b',[_vm._v(_vm._s(_vm.rubric.RubricName))])]):_vm._e()]),_c('div',{attrs:{\"id\":\"rubric\"}},[_c('div',{staticStyle:{\"height\":\"100%\",\"overflow\":\"auto\"}},_vm._l((_vm.criterias),function(criteria,criteriaIndex){return _c('el-card',{key:criteria.Id,staticStyle:{\"margin-bottom\":\"5px\",\"margin-left\":\"3px\"}},[_c('div',{staticClass:\"clearfix\",attrs:{\"slot\":\"header\"},slot:\"header\"},[_c('span',{staticStyle:{\"font-size\":\"16px\",\"font-weight\":\"bold\"}},[_vm._v(\"\\n \"+_vm._s(criteria.CriteriaName)+\"\\n \")]),_c('div',{staticStyle:{\"font-size\":\"14px\",\"margin-top\":\"10px\"}},[(criteria.Description && criteria.Description != '')?_c('el-text',{staticClass:\" criteria-description newLineStringStyle \"},[_vm._v(_vm._s(criteria.Description))]):_vm._e()],1)]),_c('div',[_c('div',[(criteria.UseAsGrade)?_c('el-radio-group',{staticStyle:{\"margin-bottom\":\"10px\",\"min-width\":\"240px\"},attrs:{\"id\":criteria.Id}},_vm._l((criteria.RubricCriteriaMilestones.slice()),function(milestone){return _c('el-tooltip',{key:milestone.Id,staticClass:\"item\",attrs:{\"effect\":\"light\",\"placement\":\"top\"}},[_c('div',{staticStyle:{\"max-width\":\"500px\"},attrs:{\"slot\":\"content\"},slot:\"content\"},[_vm._v(\"\\n \"+_vm._s(milestone.Description)+\"\\n \")]),_c('el-radio-button',{key:milestone.Id,attrs:{\"label\":milestone.Value}})],1)}),1):_vm._e()],1),_c('div',[(criteria.UseAsGrade || criteria.UseAsTextComment)?_c('el-input',{staticClass:\"criteria-comment\",attrs:{\"criteria-index\":criteriaIndex,\"disabled\":true,\"type\":\"textarea\",\"placeholder\":\"Score Explanation\",\"rows\":3,\"maxlength\":8000}}):_vm._e()],1)])])}),1)]),_c('span',{staticClass:\"dialog-footer\",attrs:{\"slot\":\"footer\"},slot:\"footer\"},[_c('el-button',{on:{\"click\":function($event){_vm.rubricPreviewDialogVisible = false}}},[_vm._v(\"\\n close\\n \")]),_c('el-button',{on:{\"click\":_vm.printContent}},[_vm._v(\"\\n print\\n \")])],1)],2)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n <div>\r\n <div class=\"breadcumb\">\r\n <div class=\"ic-app-crumbs\">\r\n <span class=\"breadcumb-text\">\r\n <router-link :to=\"{ path: '/admin/templates' }\" style=\"color: #4E5E63; text-decoration: none;\">\r\n Project Templates\r\n </router-link>\r\n <i class=\"fas fa-chevron-right breadcumb-next\" />\r\n <span v-if=\"$route.params.id != 'new' && template\" style=\"margin-top: 10px;\">\r\n {{ template.TemplateName }} <i class=\"fas fa-chevron-right breadcumb-next\" /> Edit\r\n </span>\r\n <span v-else>\r\n Add New Template\r\n </span>\r\n </span>\r\n </div>\r\n </div>\r\n\r\n <div>\r\n <div class=\"assignment-list\" style=\"padding: 5px;\">\r\n <div>\r\n <el-form v-if=\"template\" ref=\"templateForm\" :inline=\"true\" :model=\"template\" :rules=\"templateRules\" style=\"margin-top: 20px;\">\r\n\r\n <el-form-item label=\"Term\" prop=\"TermCode\" required style=\"margin-left: 5px;\">\r\n <el-select v-model=\"template.TermCode\" \r\n value-key=\"TermCode\" \r\n filterable \r\n placeholder=\"Select Term\" \r\n @change=\"onTermChange()\"\r\n style=\"width: 150px; \r\n margin-right: 5px;\">\r\n <el-option\r\n v-for=\"item in toTerms\"\r\n :key=\"item.TermCode\"\r\n :label=\"item.TermDescription\"\r\n :value=\"item.TermCode\"\r\n />\r\n </el-select>\r\n </el-form-item>\r\n\r\n <el-form-item v-if=\"template.TermCode.substr(-2) == '05'\" label=\"Part\" prop=\"PTerm\" required>\r\n <el-select v-model=\"template.PTerm\" multiple placeholder=\"Select Part of Term\" style=\"width: 200px; margin-right: 5px;\">\r\n <el-option\r\n v-for=\"item in partOfTerms\"\r\n :key=\"item.value\"\r\n :label=\"item.label\"\r\n :value=\"item.value\"\r\n />\r\n </el-select>\r\n </el-form-item>\r\n\r\n <el-form-item label=\"Name\" prop=\"TemplateName\" required>\r\n <el-input v-model=\"template.TemplateName\" autocomplete=\"off\" />\r\n </el-form-item>\r\n <el-form-item label=\"Type\" prop=\"ClassType\" required>\r\n <el-select v-model=\"template.ClassType\" value-key=\"ClassType\" filterable placeholder=\"Select Course Type\" style=\"width:100%;\">\r\n <el-option\r\n v-for=\"item in courseTypes\"\r\n :key=\"item.value\"\r\n :label=\"item.label\"\r\n :value=\"item.value\"\r\n />\r\n </el-select>\r\n </el-form-item>\r\n <el-button v-if=\"$route.params.id == 'new' \" \r\n type=\"primary\" \r\n style=\"float: right; margin-right: 10px; \" \r\n :disabled=\"!template.TermCode || !template.TemplateName || ( template.TermCode.substr(-2) == '05' && (Array.isArray(template.PTerm) && !template.PTerm.length)) || !template.ClassType\"\r\n @click=\"submitTemplate()\">\r\n Submit Template\r\n </el-button>\r\n <el-button v-else type=\"primary\" style=\"float: right;\" @click=\"editTemplate()\">\r\n Save Template\r\n </el-button>\r\n </el-form>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div v-if=\"$route.params.id != 'new' && template\">\r\n <div class=\"assignment-list\" style=\"margin-top: 10px;\">\r\n <div style=\"margin-bottom: 20px;\">\r\n <div style=\"margin-bottom: 30px;\">\r\n <span class=\"dialog-title\" style=\"margin-top: 10px;\">\r\n Projects in {{ template.TemplateName }}\r\n </span>\r\n\r\n <el-button style=\"float: right;\" type=\"mini\" @click=\"openNewAssignmentDialog()\">\r\n <span>\r\n Add New Project\r\n </span>\r\n </el-button>\r\n\r\n <el-button type=\"mini\" style=\"float: right; margin-right: 10px;\" @click=\"orderByDueDates()\">\r\n <span>\r\n Order By Due Dates\r\n </span>\r\n </el-button>\r\n </div>\r\n </div>\r\n\r\n <div v-if=\"assignments\" class=\"collectionViewItems ig-list draggable ui-sortable\">\r\n <draggable class=\"list-group\" :list=\"assignments\" group=\"people\" @end=\"onDragEnd()\">\r\n <div\r\n v-for=\"(assignment, key) in assignments\"\r\n :key=\"assignment.Id\"\r\n class=\"list-group-item box-card\"\r\n style=\"width: 100%;\"\r\n >\r\n <el-card class=\"assignment-tile\" style=\"margin-bottom: 5px; border: 1px solid #cccecf; border-top: none;\" shadow=\"hover\">\r\n <div slot=\"header\" class=\"clearfix\">\r\n <div>\r\n <span\r\n class=\"instructor-assignment-name\"\r\n :title=\"assignment.AssignmentName\"\r\n @click=\"openAssignmentDetailDialog(assignment.Id, key)\"\r\n >\r\n {{ assignment.AssignmentName }}\r\n <br/>\r\n <span \r\n class=\"instructor-assignment-name\" \r\n style=\"font-weight: 200; font-size: 13px; margin-top: 6px;\">\r\n Due Date: <b>{{ assignment.DueDate | formatDate }} EST</b> \r\n </span>\r\n </span>\r\n <div style=\"float: right; margin-top: 13px\">\r\n <el-dropdown \r\n trigger=\"click\" \r\n style=\"margin-left: 18px; margin-right: 0px;\" \r\n @command=\"command => handleCommand(command, assignment.Id, key)\">\r\n <span class=\"el-dropdown-link\">\r\n <i class=\"fas fa-ellipsis-v\" style=\"margin: 4px; font-size: 17px; margin-top:4px\" />\r\n </span>\r\n <el-dropdown-menu slot=\"dropdown\">\r\n <el-dropdown-item command=\"add\"> <i class=\"fas fa-plus\" /> New Task </el-dropdown-item>\r\n <el-dropdown-item command=\"edit\"> <i style=\"font-size: 12px;\" class=\"fas fa-edit\" /> Edit </el-dropdown-item>\r\n <!-- <el-dropdown-item v-if=\"useCanvasIntegration()\" command=\"sync\"><i class=\"fas fa-sync-alt\" /> Sync with Canvas</el-dropdown-item> -->\r\n <el-dropdown-item command=\"delete\"><i class=\"fas fa-trash-alt\" /> Delete</el-dropdown-item>\r\n </el-dropdown-menu>\r\n </el-dropdown>\r\n </div>\r\n\r\n <div style=\"float: right;\">\r\n <div v-if=\"assignment.IsGroupAssignment\" class=\"assignment-details\" style=\"margin-left: 20px; margin-right: 0px; margin-top: 17px;\">\r\n <el-tooltip\r\n class=\"item\"\r\n effect=\"dark\"\r\n content=\"This project is a group project\"\r\n placement=\"bottom\"\r\n >\r\n <i class=\"fas fa-users\" style=\"font-size: 17px; color: #4E5E63;\" />\r\n </el-tooltip>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div>\r\n\r\n <div class=\"project-submission assignment-row\">\r\n <div v-for=\"(task, index) in assignment.Tasks\" :key=\"task.Id\" :style=\"heightMin\">\r\n <div style=\"float: left; padding-left: 20px; margin-top: 3px; width: 35px;\">\r\n <i v-if=\"task.Type == 'instructor_review'\" class=\"far fa-file-alt\" style=\"font-size: 18px; color: #4E5E63; margin-left: 10px; margin-right: 10px;\" />\r\n <i v-else-if=\"task.Type == 'self_review'\" class=\"fas fa-user-check\" style=\"font-size: 15px; color: #4E5E63; margin-left: 10px; margin-right: 10px;\" />\r\n <i v-else-if=\"task.Type == 'peer_review'\" class=\"fas fa-user-edit\" style=\"font-size: 15px; color: #4E5E63; margin-left: 10px; margin-right: 10px;\" />\r\n <i v-else class=\"fab fa-rev\" style=\"font-size: 16px; color: #4E5E63; margin-left: 10px; margin-right: 10px;\" />\r\n </div>\r\n <div style=\"float:left; width: calc(100% - 65px);\">\r\n <div style=\"float: left;\">\r\n <span style=\"font-size: 15px; margin-left: 10px; font-weight: bold;\" @click=\"editTask(task, index)\">\r\n {{ task.Name }}\r\n </span>\r\n <p v-if=\"rubricList\" style=\"margin: 0px; margin-top: 5px; font-size: 11px; margin-left: 11px;\">\r\n Due Date: <b :class=\"{warning: task.DueDate < assignment.DueDate}\">{{ task.DueDate | formatDate }} EST </b> | Rubric: <b>{{ rubricList.find(r => r.Id == task.RubricId).RubricName }} </b>\r\n </p>\r\n </div>\r\n <div style=\"float:right;\">\r\n <el-tooltip\r\n class=\"item\"\r\n effect=\"dark\"\r\n content=\"View Rubric\"\r\n placement=\"bottom\"\r\n >\r\n <el-button\r\n class=\"assignment-action-btn\"\r\n style=\"margin-top: 2px;\"\r\n @click.stop.prevent=\"\r\n previewRubric(task.RubricId)\r\n \"\r\n >\r\n <i\r\n class=\"fa fa-list-ol\"\r\n style=\"\r\n font-size: 13px\r\n top: 1px;\r\n \"\r\n />\r\n </el-button>\r\n </el-tooltip>\r\n\r\n <el-button\r\n class=\"assignment-action-btn\"\r\n style=\"margin-top: 2px;\"\r\n @click=\"editTask(task, index)\"\r\n >\r\n <i class=\"far fa-edit\" style=\"font-size: 15px; position: relative; top: 0px;\" />\r\n </el-button>\r\n\r\n <el-button\r\n class=\"assignment-action-btn\"\r\n style=\"margin-top: 2px;\"\r\n @click=\"deleteTask(task.Id, index, key)\"\r\n >\r\n <i class=\"fas fa-trash-alt\" style=\"font-size: 15px; position: relative; top: 0px;\" />\r\n </el-button>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n </div>\r\n\r\n </div>\r\n\r\n </el-card>\r\n </div>\r\n </draggable>\r\n </div>\r\n\r\n </div>\r\n </div>\r\n\r\n <el-dialog\r\n v-if=\"selectedAssignment\"\r\n class=\"assignment-dialog\"\r\n :visible.sync=\"newTaskDialogVisible\"\r\n width=\"650px\"\r\n center\r\n @closed=\"closeTaskDialog()\"\r\n >\r\n <template slot=\"title\">\r\n <span class=\"dialog-title\">\r\n Add New Task To {{ selectedAssignment.AssignmentName }}\r\n </span>\r\n </template>\r\n <hr>\r\n <el-form ref=\"newTaskForm\" :model=\"newTaskForm\" :rules=\"taskRules\" style=\"margin-top: 20px;\">\r\n <el-form-item label=\"Type\" prop=\"Type\" required :label-width=\"formLabelWidth\">\r\n <el-select v-model=\"newTaskForm.Type\" value-key=\"Id\" filterable placeholder=\"Select Rubric\" style=\"width:100%;\">\r\n <el-option\r\n v-for=\"item in taskTypes\"\r\n :key=\"item.value\"\r\n :label=\"item.label\"\r\n :value=\"item.value\"\r\n />\r\n </el-select>\r\n </el-form-item>\r\n <el-form-item label=\"Task Due Date\" prop=\"DueDate\" required :label-width=\"formLabelWidth\">\r\n <el-date-picker v-model=\"newTaskForm.DueDate\" type=\"datetime\" placeholder=\"Pick a date\" format=\"yyyy MMM d, hh:mm a\" :default-time=\"defaultTime\" style=\"width:100%;\" />\r\n </el-form-item>\r\n <el-form-item label=\"Rubric\" prop=\"RubricId\" required :label-width=\"formLabelWidth\">\r\n <el-select v-model=\"newTaskForm.RubricId\" value-key=\"Id\" filterable placeholder=\"Select Rubric\" style=\"width:100%;\">\r\n <el-option\r\n v-for=\"item in rubricList\"\r\n :key=\"item.Id\"\r\n :label=\"item.RubricName\"\r\n :value=\"item.Id\"\r\n />\r\n </el-select>\r\n </el-form-item>\r\n\r\n <el-form-item prop=\"Description\" :label-width=\"formLabelWidth\" label=\"Project Description\" style=\"margin-bottom: 5px;\">\r\n <editor-menu-bar :editor=\"newTaskEditor\">\r\n <div slot-scope=\"{ commands, isActive }\" class=\"menubar\" style=\"margin-bottom: 5px; margin-top: 5px;\">\r\n <div\r\n class=\"editor-btn\"\r\n :class=\"{ 'is-active': isActive.bold() }\"\r\n type=\"button\"\r\n @click=\"commands.bold\"\r\n >\r\n <i class=\"fas fa-bold\" />\r\n </div>\r\n\r\n <div\r\n class=\"editor-btn\"\r\n :class=\"{ 'is-active': isActive.italic() }\"\r\n type=\"button\"\r\n @click=\"commands.italic\"\r\n >\r\n <i class=\"fas fa-italic\" />\r\n </div>\r\n\r\n <div\r\n class=\"editor-btn\"\r\n :class=\"{ 'is-active': isActive.strike() }\"\r\n @click=\"commands.strike\"\r\n >\r\n <i class=\"fas fa-strikethrough\" />\r\n </div>\r\n\r\n <div\r\n class=\"editor-btn\"\r\n :class=\"{ 'is-active': isActive.underline() }\"\r\n @click=\"commands.underline\"\r\n >\r\n <i class=\"fas fa-underline\" />\r\n </div>\r\n <div\r\n class=\"editor-btn\"\r\n :class=\"{ 'is-active': isActive.heading({ level: 1 }) }\"\r\n @click=\"commands.heading({ level: 1 })\"\r\n >\r\n <i class=\"fas fa-heading\" /><strong>1</strong>\r\n </div>\r\n <div\r\n class=\"editor-btn\"\r\n :class=\"{ 'is-active': isActive.heading({ level: 2 }) }\"\r\n @click=\"commands.heading({ level: 2 })\"\r\n >\r\n <i class=\"fas fa-heading\" /><strong>2</strong>\r\n </div>\r\n\r\n <div\r\n class=\"editor-btn\"\r\n :class=\"{ 'is-active': isActive.heading({ level: 3 }) }\"\r\n @click=\"commands.heading({ level: 3 })\"\r\n >\r\n <i class=\"fas fa-heading\" /><strong>3</strong>\r\n </div>\r\n <div\r\n class=\"editor-btn\"\r\n :class=\"{ 'is-active': isActive.bullet_list() }\"\r\n @click=\"commands.bullet_list\"\r\n >\r\n <i class=\"fas fa-list-ul\" />\r\n </div>\r\n <div\r\n class=\"editor-btn\"\r\n :class=\"{ 'is-active': isActive.ordered_list() }\"\r\n @click=\"commands.ordered_list\"\r\n >\r\n <i class=\"fas fa-list-ol\" />\r\n </div>\r\n <div\r\n class=\"editor-btn\"\r\n :class=\"{ 'is-active': isActive.blockquote() }\"\r\n @click=\"commands.blockquote()\"\r\n >\r\n <i class=\"fas fa-quote-right\" />\r\n </div>\r\n </div>\r\n </editor-menu-bar>\r\n <editor-content id=\"description-editor\" :editor=\"newTaskEditor\" class=\"el-textarea__inner assignment-edit-editor\" />\r\n </el-form-item>\r\n </el-form>\r\n\r\n <span slot=\"footer\" class=\"dialog-footer\">\r\n <el-button @click=\"newTaskDialogVisible = false\">\r\n Cancel\r\n </el-button>\r\n <el-button type=\"primary\" @click=\"addNewTask()\">\r\n Submit\r\n </el-button>\r\n </span>\r\n </el-dialog>\r\n\r\n <el-dialog\r\n v-if=\"selectedTask\"\r\n class=\"assignment-dialog\"\r\n :visible.sync=\"editTaskDialogVisible\"\r\n width=\"650px\"\r\n center\r\n >\r\n <template slot=\"title\">\r\n <span class=\"dialog-title\">\r\n Edit {{ selectedTask.Name }}\r\n </span>\r\n </template>\r\n <hr>\r\n <el-form ref=\"taskForm\" :model=\"selectedTask\" :rules=\"rules\" style=\"margin-top: 20px;\">\r\n <el-form-item label=\"Type\" prop=\"Type\" required :label-width=\"formLabelWidth\">\r\n <el-select v-model=\"selectedTask.Type\" value-key=\"Id\" filterable placeholder=\"Select Rubric\" style=\"width:100%;\">\r\n <el-option\r\n v-for=\"item in taskTypes\"\r\n :key=\"item.value\"\r\n :label=\"item.label\"\r\n :value=\"item.value\"\r\n />\r\n </el-select>\r\n </el-form-item>\r\n <el-form-item label=\"Task Due Date\" prop=\"DueDate\" required :label-width=\"formLabelWidth\">\r\n <el-date-picker v-model=\"selectedTask.DueDate\" type=\"datetime\" placeholder=\"Pick a date\" format=\"yyyy MMM d, hh:mm a\" :default-time=\"defaultTime\" style=\"width:100%;\" />\r\n </el-form-item>\r\n <el-form-item label=\"Rubric\" prop=\"RubricId\" required :label-width=\"formLabelWidth\">\r\n <el-select v-model=\"selectedTask.RubricId\" value-key=\"Id\" filterable placeholder=\"Select Rubric\" style=\"width:100%;\">\r\n <el-option\r\n v-for=\"item in rubricList\"\r\n :key=\"item.Id\"\r\n :label=\"item.RubricName\"\r\n :value=\"item.Id\"\r\n />\r\n </el-select>\r\n </el-form-item>\r\n <el-form-item prop=\"Description\" :label-width=\"formLabelWidth\" label=\"Project Description\" style=\"margin-bottom: 5px;\">\r\n <editor-menu-bar :editor=\"editTaskEditor\">\r\n <div slot-scope=\"{ commands, isActive }\" class=\"menubar\" style=\"margin-bottom: 5px; margin-top: 5px;\">\r\n <div\r\n class=\"editor-btn\"\r\n :class=\"{ 'is-active': isActive.bold() }\"\r\n type=\"button\"\r\n @click=\"commands.bold\"\r\n >\r\n <i class=\"fas fa-bold\" />\r\n </div>\r\n\r\n <div\r\n class=\"editor-btn\"\r\n :class=\"{ 'is-active': isActive.italic() }\"\r\n type=\"button\"\r\n @click=\"commands.italic\"\r\n >\r\n <i class=\"fas fa-italic\" />\r\n </div>\r\n\r\n <div\r\n class=\"editor-btn\"\r\n :class=\"{ 'is-active': isActive.strike() }\"\r\n @click=\"commands.strike\"\r\n >\r\n <i class=\"fas fa-strikethrough\" />\r\n </div>\r\n\r\n <div\r\n class=\"editor-btn\"\r\n :class=\"{ 'is-active': isActive.underline() }\"\r\n @click=\"commands.underline\"\r\n >\r\n <i class=\"fas fa-underline\" />\r\n </div>\r\n <div\r\n class=\"editor-btn\"\r\n :class=\"{ 'is-active': isActive.heading({ level: 1 }) }\"\r\n @click=\"commands.heading({ level: 1 })\"\r\n >\r\n <i class=\"fas fa-heading\" /><strong>1</strong>\r\n </div>\r\n <div\r\n class=\"editor-btn\"\r\n :class=\"{ 'is-active': isActive.heading({ level: 2 }) }\"\r\n @click=\"commands.heading({ level: 2 })\"\r\n >\r\n <i class=\"fas fa-heading\" /><strong>2</strong>\r\n </div>\r\n\r\n <div\r\n class=\"editor-btn\"\r\n :class=\"{ 'is-active': isActive.heading({ level: 3 }) }\"\r\n @click=\"commands.heading({ level: 3 })\"\r\n >\r\n <i class=\"fas fa-heading\" /><strong>3</strong>\r\n </div>\r\n <div\r\n class=\"editor-btn\"\r\n :class=\"{ 'is-active': isActive.bullet_list() }\"\r\n @click=\"commands.bullet_list\"\r\n >\r\n <i class=\"fas fa-list-ul\" />\r\n </div>\r\n <div\r\n class=\"editor-btn\"\r\n :class=\"{ 'is-active': isActive.ordered_list() }\"\r\n @click=\"commands.ordered_list\"\r\n >\r\n <i class=\"fas fa-list-ol\" />\r\n </div>\r\n <div\r\n class=\"editor-btn\"\r\n :class=\"{ 'is-active': isActive.blockquote() }\"\r\n @click=\"commands.blockquote()\"\r\n >\r\n <i class=\"fas fa-quote-right\" />\r\n </div>\r\n </div>\r\n </editor-menu-bar>\r\n <editor-content id=\"description-editor\" :editor=\"editTaskEditor\" class=\"el-textarea__inner assignment-edit-editor\" />\r\n </el-form-item>\r\n </el-form>\r\n\r\n <span slot=\"footer\" class=\"dialog-footer\">\r\n <el-button @click=\"editTaskDialogVisible = false\">\r\n Cancel\r\n </el-button>\r\n <el-button type=\"primary\" @click=\"updateTask()\">\r\n Submit\r\n </el-button>\r\n </span>\r\n </el-dialog>\r\n\r\n <el-dialog\r\n v-if=\"selectedAssignment\"\r\n class=\"assignment-dialog\"\r\n :visible.sync=\"editAssignmentDialogVisible\"\r\n width=\"650px\"\r\n center\r\n >\r\n <template slot=\"title\">\r\n <span class=\"dialog-title\">\r\n Edit {{ selectedAssignment.AssignmentName }}\r\n </span>\r\n </template>\r\n <hr>\r\n <el-form ref=\"assignmentForm\" :model=\"selectedAssignment\" :rules=\"rules\" style=\"margin-top: 20px;\">\r\n <el-form-item label=\"Project Name\" prop=\"AssignmentName\" required :label-width=\"formLabelWidth\">\r\n <el-input v-model=\"selectedAssignment.AssignmentName\" autocomplete=\"off\" />\r\n </el-form-item>\r\n <el-form-item label=\"Project Due Date\" prop=\"DueDate\" required :label-width=\"formLabelWidth\">\r\n <el-date-picker v-model=\"selectedAssignment.DueDate\" type=\"datetime\" placeholder=\"Pick a date\" format=\"yyyy MMM d, hh:mm a\" :default-time=\"defaultTime\" style=\"width:100%;\" />\r\n </el-form-item>\r\n <el-form-item label=\"Rubric\" prop=\"RubricId\" required :label-width=\"formLabelWidth\">\r\n <el-select v-model=\"selectedAssignment.RubricId\" value-key=\"Id\" filterable placeholder=\"Select Rubric\" style=\"width:100%;\">\r\n <el-option\r\n v-for=\"item in rubricList\"\r\n :key=\"item.Id\"\r\n :label=\"item.RubricName\"\r\n :value=\"item.Id\"\r\n />\r\n </el-select>\r\n </el-form-item>\r\n <el-form-item label=\"Is Group Project\" prop=\"IsGroupAssignment\" :label-width=\"formLabelWidth\">\r\n <el-checkbox v-model=\"selectedAssignment.IsGroupAssignment\" name=\"isGroup\" style=\"margin-top: 12px;\" />\r\n </el-form-item>\r\n <el-form-item prop=\"Description\" :label-width=\"formLabelWidth\" label=\"Project Description\" style=\"margin-bottom: 5px;\">\r\n <editor-menu-bar :editor=\"editDescriptionEditor\">\r\n <div slot-scope=\"{ commands, isActive }\" class=\"menubar\" style=\"margin-bottom: 5px; margin-top: 5px;\">\r\n <div\r\n class=\"editor-btn\"\r\n :class=\"{ 'is-active': isActive.bold() }\"\r\n type=\"button\"\r\n @click=\"commands.bold\"\r\n >\r\n <i class=\"fas fa-bold\" />\r\n </div>\r\n\r\n <div\r\n class=\"editor-btn\"\r\n :class=\"{ 'is-active': isActive.italic() }\"\r\n type=\"button\"\r\n @click=\"commands.italic\"\r\n >\r\n <i class=\"fas fa-italic\" />\r\n </div>\r\n\r\n <div\r\n class=\"editor-btn\"\r\n :class=\"{ 'is-active': isActive.strike() }\"\r\n @click=\"commands.strike\"\r\n >\r\n <i class=\"fas fa-strikethrough\" />\r\n </div>\r\n\r\n <div\r\n class=\"editor-btn\"\r\n :class=\"{ 'is-active': isActive.underline() }\"\r\n @click=\"commands.underline\"\r\n >\r\n <i class=\"fas fa-underline\" />\r\n </div>\r\n <div\r\n class=\"editor-btn\"\r\n :class=\"{ 'is-active': isActive.heading({ level: 1 }) }\"\r\n @click=\"commands.heading({ level: 1 })\"\r\n >\r\n <i class=\"fas fa-heading\" /><strong>1</strong>\r\n </div>\r\n <div\r\n class=\"editor-btn\"\r\n :class=\"{ 'is-active': isActive.heading({ level: 2 }) }\"\r\n @click=\"commands.heading({ level: 2 })\"\r\n >\r\n <i class=\"fas fa-heading\" /><strong>2</strong>\r\n </div>\r\n\r\n <div\r\n class=\"editor-btn\"\r\n :class=\"{ 'is-active': isActive.heading({ level: 3 }) }\"\r\n @click=\"commands.heading({ level: 3 })\"\r\n >\r\n <i class=\"fas fa-heading\" /><strong>3</strong>\r\n </div>\r\n <div\r\n class=\"editor-btn\"\r\n :class=\"{ 'is-active': isActive.bullet_list() }\"\r\n @click=\"commands.bullet_list\"\r\n >\r\n <i class=\"fas fa-list-ul\" />\r\n </div>\r\n <div\r\n class=\"editor-btn\"\r\n :class=\"{ 'is-active': isActive.ordered_list() }\"\r\n @click=\"commands.ordered_list\"\r\n >\r\n <i class=\"fas fa-list-ol\" />\r\n </div>\r\n <div\r\n class=\"editor-btn\"\r\n :class=\"{ 'is-active': isActive.blockquote() }\"\r\n @click=\"commands.blockquote()\"\r\n >\r\n <i class=\"fas fa-quote-right\" />\r\n </div>\r\n </div>\r\n </editor-menu-bar>\r\n <editor-content id=\"description-editor\" :editor=\"editDescriptionEditor\" class=\"el-textarea__inner assignment-edit-editor\" />\r\n </el-form-item>\r\n </el-form>\r\n\r\n <span slot=\"footer\" class=\"dialog-footer\">\r\n <el-button @click=\"editAssignmentDialogVisible = false\">\r\n Cancel\r\n </el-button>\r\n <el-button type=\"primary\" @click=\"editAssignment()\">\r\n Submit\r\n </el-button>\r\n </span>\r\n </el-dialog>\r\n\r\n <el-dialog\r\n id=\"assignment-detail-dialog\"\r\n :visible.sync=\"assignmentDetailDialogVisible\"\r\n width=\"650px\"\r\n center\r\n >\r\n <template slot=\"title\">\r\n <span v-if=\"selectedAssignment\" class=\"dialog-title\">\r\n {{ selectedAssignment.AssignmentName }}\r\n </span>\r\n </template>\r\n <hr>\r\n\r\n <div v-if=\"selectedAssignment\" style=\"word-break: normal;\">\r\n <div style=\"margin-bottom: 3px; margin-top: 10px; font-weight: bold;\">\r\n Important Information\r\n </div>\r\n <div style=\"padding: 8px 16px; padding-top: px; background-color: #ecf8ff; border-radius: 4px; border-left: 5px solid #50bfff; margin: 20px 0; margin-top: 8px; line-height: 2em;\">\r\n <span>\r\n This project is due at <strong>{{ selectedAssignment.DueDate | formatDate }} EST</strong>. It\r\n <span v-if=\"selectedAssignment.IsGroupAssignment\">\r\n is a group project which\r\n </span>\r\n includes\r\n <span v-if=\"!selectedAssignment.Tasks.length\">\r\n no sub-tasks.\r\n </span>\r\n <span v-else>\r\n the following tasks: \r\n </span>\r\n\r\n </span>\r\n\r\n <div v-for=\"task in selectedAssignment.Tasks\" :key=\"task.Id\">\r\n <strong>- {{ task.Name }}: </strong> due at\r\n <strong>{{ task.DueDate | formatDate }} EST</strong>\r\n </div>\r\n </div>\r\n <div style=\"margin-bottom: 3px; font-weight: bold;\">\r\n Project Overview\r\n </div>\r\n <!-- <el-input v-model=\"selectedAssignment.Description\" type=\"textarea\" rows=\"15\" :readonly=\"true\" placeholder=\"No description provided.\" /> -->\r\n <editor-content id=\"description-detail-editor\" :editor=\"descriptionDetailEditor\" class=\"el-textarea__inner assignment-detail-editor\" />\r\n </div>\r\n\r\n <span slot=\"footer\" class=\"dialog-footer\">\r\n <el-button v-if=\"userRole == 'Instructor'\" @click=\"gotoStudentSubmissions(selectedAssignment.Id)\">\r\n View Student Submissions\r\n </el-button>\r\n <el-button v-if=\"userRole == 'Instructor'\" @click=\"gotoStudentScores(selectedAssignment.Id)\">\r\n View Student Holistic Scores\r\n </el-button>\r\n <div v-if=\"userRole == 'Student'&& selectedAssignment\" style=\"margin-top: 20px;\">\r\n <el-button\r\n v-if=\"submissionStatus && submissionStatus[selectedKey] && submissionStatus[selectedKey].Status == 'No Submission'\"\r\n style=\"padding: 10px; margin-bottom: 10px; margin-right: 10px;\"\r\n @click=\"openDialog(selectedAssignment.Id, selectedKey)\"\r\n >\r\n <i class=\"fas fa-file-upload\" style=\"font-size: 18px;\" /> Submit Project\r\n </el-button>\r\n <el-button\r\n v-if=\"submissionStatus && submissionStatus[selectedKey] && (submissionStatus[selectedKey].Status == 'Submitted' || submissionStatus[selectedKey].Status == 'Feedback Available')\"\r\n style=\"padding: 10px; margin-bottom: 10px; margin-right: 10px;\"\r\n @click=\"openDialog(selectedAssignment.Id, selectedKey)\"\r\n >\r\n <i class=\"fas fa-file-upload\" style=\"font-size: 18px;\" /> Re-submit Project\r\n </el-button>\r\n\r\n <el-badge\r\n v-if=\"submissionStatus && submissionStatus[selectedKey] && submissionStatus[selectedKey].Status == 'Feedback Available'\"\r\n :value=\"submissionStatus[selectedKey].ReviewCount\"\r\n class=\"badge-item\"\r\n style=\"vertical-align: initial; margin-left: 0px;\"\r\n >\r\n <el-button\r\n style=\"padding: 10px; margin-bottom: 10px;\"\r\n @click=\"viewFeedback(selectedAssignment.Id)\"\r\n >\r\n <i class=\"far fa-comment-alt\" style=\"font-size: 18px; margin-right: 5px;\" />\r\n View Feedback\r\n </el-button>\r\n </el-badge>\r\n\r\n <el-button\r\n v-if=\"submissionStatus && submissionStatus[selectedKey] && submissionStatus[selectedKey].Status != 'No Submission'\"\r\n style=\"padding: 10px; margin-bottom: 10px; margin-right: 10px;\"\r\n @click=\"download(submissionStatus[selectedKey].DocId, selectedAssignment)\"\r\n >\r\n <i class=\"fas fa-download\" style=\"font-size: 18px; margin-right: 5px;\" />Download Submission\r\n </el-button>\r\n\r\n <el-button\r\n v-if=\"selectedAssignment.UsePeerReview\"\r\n style=\"padding: 10px; margin-bottom: 10px; margin-right: 10px;\"\r\n @click=\"peerReview(selectedAssignment.Id, selectedAssignment.IsGroupAssignment, submissionStatus[selectedKey].GroupId)\"\r\n >\r\n <i class=\"fas fa-user-edit\" style=\"font-size: 18px; margin-right: 0px;\" />\r\n Peer Review\r\n </el-button>\r\n\r\n <el-button\r\n v-if=\"selectedAssignment.UseSelfAssessment\"\r\n style=\"padding: 10px; margin-bottom: 10px; margin-right: 10px;\"\r\n @click=\"selfReview(selectedAssignment.Id, selectedAssignment.IsGroupAssignment, submissionStatus[selectedKey].GroupId)\"\r\n >\r\n <i class=\"fas fa-user-check\" style=\"font-size: 18px; margin-right: 5px;\" />Self Review\r\n </el-button>\r\n\r\n <el-button\r\n v-if=\"selectedAssignment.UseAppraisal\"\r\n style=\"padding: 10px; margin-bottom: 10px; margin-right: 10px;\"\r\n @click=\"appraisal(selectedAssignment.Id, selectedAssignment.IsGroupAssignment, submissionStatus[selectedKey].GroupId)\"\r\n >\r\n <i class=\"fab fa-rev\" style=\"font-size: 18px; margin-right: 0px;\" />\r\n Appraisal\r\n </el-button>\r\n </div>\r\n </span>\r\n </el-dialog>\r\n\r\n <el-dialog\r\n class=\"assignment-dialog\"\r\n :visible.sync=\"newAssignmentDialogVisible\"\r\n width=\"650px\"\r\n center\r\n @closed=\"closeAssignmentDialog()\"\r\n >\r\n <template slot=\"title\">\r\n <span class=\"dialog-title\">\r\n Add New Project\r\n </span>\r\n </template>\r\n <hr>\r\n <el-form ref=\"newAssignmentForm\" :model=\"newAssignmentForm\" :rules=\"rules\" style=\"margin-top: 20px;\">\r\n <el-form-item label=\"Project Name\" prop=\"AssignmentName\" required :label-width=\"formLabelWidth\">\r\n <el-input v-model=\"newAssignmentForm.AssignmentName\" autocomplete=\"off\" />\r\n </el-form-item>\r\n <el-form-item label=\"Project Due Date\" prop=\"DueDate\" required :label-width=\"formLabelWidth\">\r\n <el-date-picker v-model=\"newAssignmentForm.DueDate\" type=\"datetime\" placeholder=\"Pick a date\" format=\"yyyy MMM d, hh:mm a\" :default-time=\"defaultTime\" style=\"width:100%;\" />\r\n </el-form-item>\r\n <el-form-item label=\"Rubric\" prop=\"RubricId\" required :label-width=\"formLabelWidth\">\r\n <el-select v-model=\"newAssignmentForm.RubricId\" value-key=\"Id\" filterable placeholder=\"Select Rubric\" style=\"width:100%;\">\r\n <el-option\r\n v-for=\"item in rubricList\"\r\n :key=\"item.Id\"\r\n :label=\"item.RubricName\"\r\n :value=\"item.Id\"\r\n />\r\n </el-select>\r\n </el-form-item>\r\n\r\n <el-form-item label=\"Is Group Project\" prop=\"IsGroupAssignment\" :label-width=\"formLabelWidth\">\r\n <el-checkbox v-model=\"newAssignmentForm.IsGroupAssignment\" name=\"isGroup\" style=\"margin-top: 12px;\" />\r\n </el-form-item>\r\n <el-form-item prop=\"Description\" :label-width=\"formLabelWidth\" label=\"Project Description\" style=\"margin-bottom: 5px;\">\r\n <editor-menu-bar :editor=\"newDescriptionEditor\">\r\n <div slot-scope=\"{ commands, isActive }\" class=\"menubar\" style=\"margin-bottom: 5px; margin-top: 5px;\">\r\n <div\r\n class=\"editor-btn\"\r\n :class=\"{ 'is-active': isActive.bold() }\"\r\n type=\"button\"\r\n @click=\"commands.bold\"\r\n >\r\n <i class=\"fas fa-bold\" />\r\n </div>\r\n\r\n <div\r\n class=\"editor-btn\"\r\n :class=\"{ 'is-active': isActive.italic() }\"\r\n type=\"button\"\r\n @click=\"commands.italic\"\r\n >\r\n <i class=\"fas fa-italic\" />\r\n </div>\r\n\r\n <div\r\n class=\"editor-btn\"\r\n :class=\"{ 'is-active': isActive.strike() }\"\r\n @click=\"commands.strike\"\r\n >\r\n <i class=\"fas fa-strikethrough\" />\r\n </div>\r\n\r\n <div\r\n class=\"editor-btn\"\r\n :class=\"{ 'is-active': isActive.underline() }\"\r\n @click=\"commands.underline\"\r\n >\r\n <i class=\"fas fa-underline\" />\r\n </div>\r\n <div\r\n class=\"editor-btn\"\r\n :class=\"{ 'is-active': isActive.heading({ level: 1 }) }\"\r\n @click=\"commands.heading({ level: 1 })\"\r\n >\r\n <i class=\"fas fa-heading\" /><strong>1</strong>\r\n </div>\r\n <div\r\n class=\"editor-btn\"\r\n :class=\"{ 'is-active': isActive.heading({ level: 2 }) }\"\r\n @click=\"commands.heading({ level: 2 })\"\r\n >\r\n <i class=\"fas fa-heading\" /><strong>2</strong>\r\n </div>\r\n\r\n <div\r\n class=\"editor-btn\"\r\n :class=\"{ 'is-active': isActive.heading({ level: 3 }) }\"\r\n @click=\"commands.heading({ level: 3 })\"\r\n >\r\n <i class=\"fas fa-heading\" /><strong>3</strong>\r\n </div>\r\n <div\r\n class=\"editor-btn\"\r\n :class=\"{ 'is-active': isActive.bullet_list() }\"\r\n @click=\"commands.bullet_list\"\r\n >\r\n <i class=\"fas fa-list-ul\" />\r\n </div>\r\n <div\r\n class=\"editor-btn\"\r\n :class=\"{ 'is-active': isActive.ordered_list() }\"\r\n @click=\"commands.ordered_list\"\r\n >\r\n <i class=\"fas fa-list-ol\" />\r\n </div>\r\n <div\r\n class=\"editor-btn\"\r\n :class=\"{ 'is-active': isActive.blockquote() }\"\r\n @click=\"commands.blockquote()\"\r\n >\r\n <i class=\"fas fa-quote-right\" />\r\n </div>\r\n </div>\r\n </editor-menu-bar>\r\n <editor-content id=\"description-editor\" :editor=\"newDescriptionEditor\" class=\"el-textarea__inner assignment-edit-editor\" />\r\n </el-form-item>\r\n </el-form>\r\n\r\n <span slot=\"footer\" class=\"dialog-footer\">\r\n <el-button @click=\"newAssignmentDialogVisible = false\">\r\n Cancel\r\n </el-button>\r\n <el-button type=\"primary\" @click=\"addNewAssignment()\">\r\n Submit\r\n </el-button>\r\n </span>\r\n </el-dialog>\r\n <!-- IX this CODE is from RubricDetail and should be extracted to a shared component -->\r\n <el-dialog id=\"preview-rubric-dialog\" :visible.sync=\"rubricPreviewDialogVisible\" width=\"750px\" top=\"50px\" center>\r\n <template slot=\"title\">\r\n <span v-if=\"rubric\" class=\"rubric-dialog-title\">\r\n Preview <b>{{ rubric.RubricName }}</b>\r\n </span>\r\n </template>\r\n <div id=\"rubric\">\r\n <div style=\"height: 100%; overflow: auto;\">\r\n <el-card v-for=\"(criteria, criteriaIndex) in criterias\" :key=\"criteria.Id\" style=\"margin-bottom: 5px; margin-left: 3px;\">\r\n <div slot=\"header\" class=\"clearfix\">\r\n <span style=\"font-size: 16px; font-weight: bold;\">\r\n {{ criteria.CriteriaName }}\r\n </span>\r\n <div style=\"font-size: 14px; margin-top: 10px;\">\r\n <el-text v-if=\"criteria.Description && criteria.Description != ''\" class=\" criteria-description newLineStringStyle \">{{ criteria.Description }}</el-text>\r\n </div>\r\n </div>\r\n <div>\r\n <div>\r\n <el-radio-group\r\n v-if=\"criteria.UseAsGrade\"\r\n :id=\"criteria.Id\"\r\n style=\"margin-bottom: 10px; min-width: 240px;\"\r\n >\r\n <el-tooltip\r\n v-for=\"(milestone) in criteria.RubricCriteriaMilestones.slice()\"\r\n :key=\"milestone.Id\"\r\n class=\"item\"\r\n effect=\"light\"\r\n placement=\"top\"\r\n >\r\n <div slot=\"content\" style=\"max-width: 500px;\">\r\n {{ milestone.Description }}\r\n </div>\r\n <el-radio-button\r\n :key=\"milestone.Id\"\r\n :label=\"milestone.Value\"\r\n />\r\n </el-tooltip>\r\n </el-radio-group>\r\n </div>\r\n <div>\r\n <el-input\r\n v-if=\"criteria.UseAsGrade || criteria.UseAsTextComment\"\r\n\r\n :criteria-index=\"criteriaIndex\"\r\n :disabled=\"true\"\r\n type=\"textarea\"\r\n placeholder=\"Score Explanation\"\r\n :rows=\"3\"\r\n :maxlength=\"8000\"\r\n class=\"criteria-comment\"\r\n />\r\n </div>\r\n </div>\r\n </el-card>\r\n </div>\r\n </div>\r\n <span slot=\"footer\" class=\"dialog-footer\">\r\n <el-button @click=\"rubricPreviewDialogVisible = false\">\r\n close\r\n </el-button>\r\n <el-button @click=\"printContent\">\r\n print\r\n </el-button>\r\n </span>\r\n </el-dialog>\r\n\r\n </div>\r\n</template>\r\n<script>\r\n\r\nimport { mapState } from 'vuex'\r\nimport draggable from 'vuedraggable'\r\nimport * as projectTemplateService from '@/services/project_template.service'\r\nimport * as assignmentService from '@/services/assignment.service'\r\nimport * as taskService from '@/services/task.service'\r\nimport * as rubricService from '@/services/rubric.service'\r\nimport * as dateUtils from '@/utils/date-utils'\r\nimport { Notification } from 'element-ui'\r\nimport { Editor, EditorContent, EditorMenuBar } from 'tiptap'\r\nimport {\r\n\tBlockquote,\r\n\tCodeBlock,\r\n\tHardBreak,\r\n\tHeading,\r\n\tImage,\r\n\tOrderedList,\r\n\tBulletList,\r\n\tListItem,\r\n\tTodoItem,\r\n\tTodoList,\r\n\tBold,\r\n\tCode,\r\n\tItalic,\r\n\tLink,\r\n\tTable,\r\n\tTableHeader,\r\n\tTableCell,\r\n\tTableRow,\r\n\tStrike,\r\n\tUnderline,\r\n\tHistory\r\n} from 'tiptap-extensions'\r\n// Add new or edit a project template.\r\nexport default {\r\n\tname: 'ProjectTemplateDetail',\r\n\tcomponents: {\r\n\t\tdraggable,\r\n\t\tEditorMenuBar,\r\n\t\tEditorContent\r\n\t},\r\n\tfilters: {\r\n\t\tformatDate(dateStr) {\r\n\t\t\tif (dateStr) { return dateUtils.formatDateYear(dateStr) }\r\n\t\t}\r\n\t},\r\n\tdata() {\r\n\t\treturn {\r\n\t\t\theightMax: 'height: 80px; border-top: 1px solid rgb(204, 206, 207); display: flex; align-items: center;',\r\n heightMin: 'height: 60px; border-top: 1px solid rgb(204, 206, 207); display: flex; align-items: center;',\r\n allTerms: this.$store.state.auth.terms,\r\n toTerms: [],\r\n\t\t\ttermCode: this.$store.state.auth.currentTerm.TermCode,\r\n\t\t\torgCode: this.$store.state.auth.user.OrgCode,\r\n\t\t\ttemplateId: this.$route.params.id,\r\n template: null,\r\n partOfTerms: [\r\n \t{\r\n\t\t\t\t\tvalue: 'A',\r\n\t\t\t\t\tlabel: 'A'\r\n\t\t\t\t}, {\r\n\t\t\t\t\tvalue: 'B',\r\n\t\t\t\t\tlabel: 'B'\r\n\t\t\t\t}, {\r\n\t\t\t\t\tvalue: 'C',\r\n\t\t\t\t\tlabel: 'C'\r\n\t\t\t\t}\r\n\t\t\t],\r\n\t\t\tcourseTypes: [\r\n\t\t\t\t{\r\n\t\t\t\t\tvalue: 'ENC 1101',\r\n\t\t\t\t\tlabel: 'ENC 1101'\r\n\t\t\t\t}, {\r\n\t\t\t\t\tvalue: 'ENC 1102',\r\n\t\t\t\t\tlabel: 'ENC 1102'\r\n\t\t\t\t}, {\r\n\t\t\t\t\tvalue: 'ENC 2210',\r\n\t\t\t\t\tlabel: 'ENC 2210'\r\n }, {\r\n\t\t\t\t\tvalue: 'ENC 3246',\r\n\t\t\t\t\tlabel: 'ENC 3246'\r\n\t\t\t\t}, {\r\n\t value: 'ENC 3250',\r\n\t label: 'ENC 3250'\r\n\t\t\t\t}\r\n\t\t\t],\r\n assignments: [],\r\n\t\t\tdragging: false,\r\n\t\t\tuserRole: '',\r\n\t\t\tcurrentCourse: null,\r\n\t\t\tsearch: '',\r\n\t\t\tsubmissionStatus: [],\r\n\t\t\tuploadDialogVisible: false,\r\n\t\t\tassignmentDialogVisible: false,\r\n assignmentDetailDialogVisible: false,\r\n rubricPreviewDialogVisible: false,\r\n\t\t\tsurveyDialogVisible: false,\r\n\t\t\tquestions: null,\r\n\t\t\tsurveyResponses: [],\r\n\t\t\tsurveyId: 1,\r\n\t\t\trepsonseType: 'first',\r\n\t\t\tsubmitSurveyActive: false,\r\n\t\t\tselectedAssignment: null,\r\n\t\t\tselectedKey: null,\r\n\t\t\tfile: null,\r\n\t\t\tfileList: [],\r\n\t\t\tnewAssignmentForm: {\r\n\t\t\t\tOrgCode: '',\r\n\t\t\t\tAssignmentName: '',\r\n\t\t\t\tDueDate: '',\r\n\t\t\t\tDescription: '',\r\n\t\t\t\tIsActive: 'A',\r\n\t\t\t\tIsMandatory: false,\r\n\t\t\t\tIsGroupAssignment: false,\r\n\t\t\t\tDisplayOrder: 0,\r\n\t\t\t\tTemplateId: 0,\r\n\t\t\t\tRubricId: null,\r\n\t\t\t\tGenreId: 0,\r\n\t\t\t\tUploadType: 0,\r\n\t\t\t\tUsePeerReview: false,\r\n\t\t\t\tUseRevisionPlan: false,\r\n\t\t\t\tUsePortfolio: false,\r\n\t\t\t\tUseNormalization: false,\r\n\t\t\t\tUseReviewerComment: false,\r\n\t\t\t\tLastActivityDate: '',\r\n\t\t\t\tUseSelfAssessment: false,\r\n\t\t\t\tUseAppraisal: false,\r\n\t\t\t\tAppraisalRubricId: null,\r\n\t\t\t\tAppraisalDueDate: '',\r\n\t\t\t\tUseCanvasIntegration: false,\r\n\t\t\t\tPeerReviewDueDate: ''\r\n\t\t\t},\r\n\t\t\tnewTaskForm: {\r\n\t\t\t\tAssignmentId: 0,\r\n\t\t\t\tName: '',\r\n\t\t\t\tDescription: null,\r\n\t\t\t\tDueDate: null,\r\n\t\t\t\tRubricId: null,\r\n\t\t\t\tType: 'self_review',\r\n\t\t\t\tSyncWithCanvas: null,\r\n\t\t\t\tDisplayOrder: null,\r\n\t\t\t\tUpdatedDate: null\r\n\t\t\t},\r\n\t\t\ttaskTypes: [\r\n\t\t\t\t{\r\n\t\t\t\t\tlabel: 'Instructor Review',\r\n\t\t\t\t\tvalue: 'instructor_review'\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tlabel: 'Self Review',\r\n\t\t\t\t\tvalue: 'self_review'\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tlabel: 'Peer Review',\r\n\t\t\t\t\tvalue: 'peer_review'\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tlabel: 'Appraisal',\r\n\t\t\t\t\tvalue: 'appraisal'\r\n\t\t\t\t}\r\n\t\t\t],\r\n\t\t\ttemplateRules: {\r\n\t\t\t\tTemplateName: [\r\n\t\t\t\t\t{ required: true, message: 'Please input template name', trigger: 'blur' }\r\n\t\t\t\t],\r\n\t\t\t\tClassType: [\r\n\t\t\t\t\t{ required: true, message: 'Please select a course type', trigger: 'change' }\r\n\t\t\t\t]\r\n\t\t\t},\r\n\t\t\trules: {\r\n\t\t\t\tAssignmentName: [\r\n\t\t\t\t\t{ required: true, message: 'Please input project name', trigger: 'blur' }\r\n\t\t\t\t],\r\n\t\t\t\tDueDate: [\r\n\t\t\t\t\t{ required: true, message: 'Please pick a date', trigger: 'change' }\r\n\t\t\t\t],\r\n\t\t\t\tRubricId: [\r\n\t\t\t\t\t{ required: true, message: 'Please select a rubric', trigger: 'change' }\r\n\t\t\t\t]\r\n\t\t\t},\r\n\t\t\ttaskRules: {\r\n\t\t\t\tType: [\r\n\t\t\t\t\t{ required: true, message: 'Please select a type', trigger: 'change' }\r\n\t\t\t\t],\r\n\t\t\t\t// Name: [\r\n\t\t\t\t// \t{ required: true, message: 'Please input task name', trigger: 'blur' }\r\n\t\t\t\t// ],\r\n\t\t\t\tDueDate: [\r\n\t\t\t\t\t{ required: true, message: 'Please pick a date', trigger: 'change' }\r\n\t\t\t\t],\r\n\t\t\t\tRubricId: [\r\n\t\t\t\t\t{ required: true, message: 'Please select a rubric', trigger: 'change' }\r\n\t\t\t\t]\r\n\t\t\t},\r\n formLabelWidth: '180px',\r\n rubricList: null,\r\n rubric: null,\r\n criterias: [],\r\n\t\t\tdescriptionEditor: null,\r\n\t\t\tdescriptionDetailEditor: null,\r\n\t\t\tnewAssignmentDialogVisible: false,\r\n\t\t\teditAssignmentDialogVisible: false,\r\n\t\t\tnewDescriptionEditor: null,\r\n\t\t\teditDescriptionEditor: null,\r\n\t\t\tnewTaskEditor: null,\r\n\t\t\teditTaskEditor: null,\r\n\t\t\tnewTaskDialogVisible: false,\r\n\t\t\tselectedTask: null,\r\n editTaskDialogVisible: false,\r\n defaultTime: '23:59:59'\r\n \t}\r\n\t},\r\n\r\n\tcomputed: {\r\n\t\t...mapState({\r\n\t\t\tuserInState: state => state.auth.user,\r\n\t\t\troleInState: state => state.enrollment.userRole\r\n\t\t})\r\n\t},\r\n\twatch: {\r\n\t\troleInState(newValue) {\r\n\t\t\tthis.userRole = newValue\r\n\t\t},\r\n\t\tuserInState(newValue) {\r\n\t\t\tthis.username = newValue.UserName\r\n\t\t\tif (this.$store.state.enrollment.userRole == 'Student') {\r\n\t\t\t\tthis.submissionStatus = []\r\n\t\t\t} else { this.submissionStatus = [] }\r\n\t\t}\r\n\t},\r\n\tbeforeDestroy() {\r\n\t\tif (this.newDescriptionEditor != null) { this.newDescriptionEditor.destroy() }\r\n\t\tif (this.editDescriptionEditor != null) { this.editDescriptionEditor.destroy() }\r\n\t\tif (this.descriptionDetailEditor != null) { this.descriptionDetailEditor.destroy() }\r\n\t},\r\n\tcreated() {\r\n\t\tif (this.templateId != 'new') { this.getTemplate(this.templateId) } else {\r\n\t\t\tthis.template = {\r\n\t\t\t\tClassType: null,\r\n\t\t\t\tIsActive: false,\r\n\t\t\t\tOrgCode: this.orgCode,\r\n\t\t\t\tParentID: 0,\r\n\t\t\t\tTemplateName: '',\r\n TermCode: this.termCode,\r\n PTerm: null\r\n\t\t\t}\r\n\t\t}\r\n this.getRubricList()\r\n this.toTerms = this.allTerms.filter(t => t.TermCode >= this.termCode)\r\n\t},\r\n methods: {\r\n // @vuese\r\n\t\t// Display a preview of the rubric.\r\n previewRubric(id) {\r\n this.getRubric(id)\r\n\t\t\tthis.rubricPreviewDialogVisible = true\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Get rubric by id.\r\n\t\t// @arg The id of the rubric.\r\n\t\tasync getRubric(id) {\r\n\t\t\tthis.rubric = await rubricService.getRubricById(id)\r\n\t\t\tthis.criterias = this.rubric.RubricCriterias\r\n\t\t},\r\n onTermChange() {\r\n this.template.PTerm = null\r\n //this.template.TemplateName = null\r\n //this.template.ClassType = null\r\n\t\t },\r\n\t\tupdateTask() {\r\n\t\t\tconst that = this\r\n\t\t\tthis.$refs['taskForm'].validate((valid) => {\r\n\t\t\t\tif (valid) {\r\n\t\t\t\t\tif (that.selectedTask != null) {\r\n\t\t\t\t\t\tthat.selectedTask.DueDate = that.getDateStr(that.selectedTask.DueDate)\r\n\t\t\t\t\t\tif (that.selectedTask.DueDate) {\r\n\t\t\t\t\t\t\tthat.selectedTask.DueDate = that.getDateStr(that.selectedTask.DueDate)\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tthat.selectedTask.Name = that.taskTypes.find(t => t.value == that.selectedTask.Type).label\r\n\r\n\t\t\t\t\t\tthat.selectedTask.LastActivityDate = that.getlastActivityDate()\r\n\t\t\t\t\t\ttaskService.updateTask(that.selectedTask)\r\n\t\t\t\t\t\t\t.then(task => {\r\n\t\t\t\t\t\t\t\t// that.assignments[that.selectedKey] = that.selectedAssignment\r\n\t\t\t\t\t\t\t\t// that.selectedAssignment = null\r\n\t\t\t\t\t\t\t\tconsole.log(task)\r\n\t\t\t\t\t\t\t\tNotification.success({\r\n\t\t\t\t\t\t\t\t\tduration: 6000,\r\n\t\t\t\t\t\t\t\t\ttitle: 'Success',\r\n\t\t\t\t\t\t\t\t\tmessage: 'The task were updated successfully.'\r\n\t\t\t\t\t\t\t\t})\r\n\t\t\t\t\t\t\t\tthis.selectedTask = null\r\n\t\t\t\t\t\t\t\tthis.editTaskDialogVisible = false\r\n\t\t\t\t\t\t\t}).catch(error => {\r\n\t\t\t\t\t\t\t\tconsole.log(error)\r\n\t\t\t\t\t\t\t\tNotification.error({\r\n\t\t\t\t\t\t\t\t\tduration: 6000,\r\n\t\t\t\t\t\t\t\t\ttitle: 'Error',\r\n\t\t\t\t\t\t\t\t\tmessage: 'The task were not updated successfully.'\r\n\t\t\t\t\t\t\t\t})\r\n\t\t\t\t\t\t\t})\r\n\t\t\t\t\t}\r\n\t\t\t\t} else {\r\n\t\t\t\t\tNotification.error({\r\n\t\t\t\t\t\tduration: 6000,\r\n\t\t\t\t\t\ttitle: 'Error',\r\n\t\t\t\t\t\tmessage: 'The new project was not created due to validation error.'\r\n\t\t\t\t\t})\r\n\t\t\t\t\treturn false\r\n\t\t\t\t}\r\n\t\t\t})\r\n\t\t},\r\n\t\teditTask(task, key) {\r\n\t\t\tthis.selectedTask = task\r\n\t\t\tif (this.editDescriptionEditor != null) {\r\n\t\t\t\tthis.editDescriptionEditor.destroy()\r\n\t\t\t}\r\n\t\t\tthis.editTaskDialogVisible = true\r\n\r\n\t\t\tthis.setUpEditTaskEditor()\r\n\t\t},\r\n\t\tdeleteTask(taskId, taskIndex, assignmentIndex) {\r\n\t\t\tthis.$confirm('This will permanently delete the task. Do you want to continue?', 'Warning', {\r\n\t\t\t\tconfirmButtonText: 'OK',\r\n\t\t\t\tcancelButtonText: 'Cancel',\r\n\t\t\t\ttype: 'warning'\r\n\t\t\t}).then(() => {\r\n\t\t\t\ttaskService.deleteTask(taskId)\r\n\t\t\t\t\t.then(task => {\r\n\t\t\t\t\t\tthis.assignments[assignmentIndex].Tasks.splice(taskIndex, 1)\r\n\t\t\t\t\t\tthis.assignments = this.assignments\r\n\t\t\t\t\t\t// this.$store.commit('assignment/SET_ASSIGNMENTS', this.assignments)\r\n\t\t\t\t\t\tNotification.success({\r\n\t\t\t\t\t\t\tduration: 6000,\r\n\t\t\t\t\t\t\ttitle: 'Success',\r\n\t\t\t\t\t\t\tmessage: 'The task was deleted successfully.'\r\n\t\t\t\t\t\t})\r\n\t\t\t\t\t}).catch(error => {\r\n\t\t\t\t\t\tconsole.log(error)\r\n\t\t\t\t\t\tNotification.error({\r\n\t\t\t\t\t\t\tduration: 6000,\r\n\t\t\t\t\t\t\ttitle: 'Error',\r\n\t\t\t\t\t\t\tmessage: 'The task was not deleted successfully.'\r\n\t\t\t\t\t\t})\r\n\t\t\t\t\t})\r\n\t\t\t}).catch(() => {\r\n\t\t\t\tthis.$message({\r\n\t\t\t\t\ttype: 'info',\r\n\t\t\t\t\tmessage: 'Delete canceled'\r\n\t\t\t\t})\r\n\t\t\t})\r\n\t\t},\r\n\t\taddNewTask() { //IX THIS IS REPLICATED IN NewAssignments - should extract\r\n\t\t\tconst that = this\r\n\t\t\tthis.$refs['newTaskForm'].validate((valid) => {\r\n\t\t\t\tif (valid) {\r\n\t\t\t\t\t// Add new default instructor review task\r\n\t\t\t\t\tconst newTask = {\r\n\t\t\t\t\t\tAssignmentId: that.selectedAssignment.Id,\r\n\t\t\t\t\t\tName: that.taskTypes.find(t => t.value == that.newTaskForm.Type).label,\r\n\t\t\t\t\t\tDescription: that.newTaskForm.Description,\r\n\t\t\t\t\t\tDueDate: that.getDateStr(that.newTaskForm.DueDate),\r\n\t\t\t\t\t\tRubricId: that.newTaskForm.RubricId,\r\n\t\t\t\t\t\tType: that.newTaskForm.Type,\r\n\t\t\t\t\t\tSyncWithCanvas: 0,\r\n\t\t\t\t\t\tDisplayOrder: that.selectedAssignment.Tasks\r\n\t\t\t\t\t\t\t? that.selectedAssignment.Tasks.length\r\n\t\t\t\t\t\t\t: 0, // IX added to increment DispalyOrder\r\n\t\t\t\t\t\tUpdatedDate: that.getlastActivityDate()\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tconsole.log(newTask)\r\n\r\n\t\t\t\t\ttaskService.addNewTask(newTask).then(task => {\r\n\t\t\t\t\t\tconsole.log(task)\r\n\t\t\t\t\t\tif (task) {\r\n\t\t\t\t\t\t\tthat.selectedAssignment.Tasks.push(task)\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t})\r\n\r\n\t\t\t\t\tNotification.success({\r\n\t\t\t\t\t\tduration: 6000,\r\n\t\t\t\t\t\ttitle: 'Success',\r\n\t\t\t\t\t\tmessage: 'The new project were added successfully.'\r\n\t\t\t\t\t})\r\n\t\t\t\t\tthis.newTaskDialogVisible = false\r\n\t\t\t\t}\r\n\t\t\t})\r\n\t\t},\r\n\t\tremoveAssignment(assignmentId, key) {\r\n\t\t\tthis.$confirm('This will permanently delete the project. Do you want to continue?', 'Warning', {\r\n\t\t\t\tconfirmButtonText: 'OK',\r\n\t\t\t\tcancelButtonText: 'Cancel',\r\n\t\t\t\ttype: 'warning'\r\n\t\t\t}).then(() => {\r\n\t\t\t\tassignmentService.deleteAssignment(assignmentId)\r\n\t\t\t\t\t.then(assignment => {\r\n\t\t\t\t\t\tthis.assignments.splice(key, 1)\r\n\t\t\t\t\t\tthis.assignments = this.assignments\r\n\t\t\t\t\t\t// this.$store.commit('assignment/SET_ASSIGNMENTS', this.assignments)\r\n\t\t\t\t\t\tNotification.success({\r\n\t\t\t\t\t\t\tduration: 6000,\r\n\t\t\t\t\t\t\ttitle: 'Success',\r\n\t\t\t\t\t\t\tmessage: 'The project were deleted successfully.'\r\n\t\t\t\t\t\t})\r\n\t\t\t\t\t}).catch(error => {\r\n\t\t\t\t\t\tconsole.log(error)\r\n\t\t\t\t\t\tNotification.error({\r\n\t\t\t\t\t\t\tduration: 6000,\r\n\t\t\t\t\t\t\ttitle: 'Error',\r\n\t\t\t\t\t\t\tmessage: 'The project were not deleted successfully.'\r\n\t\t\t\t\t\t})\r\n\t\t\t\t\t})\r\n\t\t\t}).catch(() => {\r\n\t\t\t\tthis.$message({\r\n\t\t\t\t\ttype: 'info',\r\n\t\t\t\t\tmessage: 'Delete canceled'\r\n\t\t\t\t})\r\n\t\t\t})\r\n\t\t},\r\n\t\thandleCommand(command, assignmentId, key) {\r\n\t\t\tif (command == 'add') {\r\n\t\t\t\tthis.openNewTaskDialog(assignmentId, key)\r\n\t\t\t} else if (command == 'edit') {\r\n\t\t\t\tthis.openEditAssignmentDialog(assignmentId, key)\r\n\t\t\t} else if (command == 'delete') {\r\n\t\t\t\tthis.removeAssignment(assignmentId, key)\r\n\t\t\t} else if (command == 'sync') {\r\n\t\t\t\tthis.syncWithCanvas(assignmentId)\r\n\t\t\t}\r\n\t\t},\r\n\t\tasync orderByDueDates() {\r\n\t\t\tthis.assignments = this.assignments.sort(function(a, b) {\r\n\t\t\t\t// Turn your strings into dates, and then subtract them\r\n\t\t\t\t// to get a value that is either negative, positive, or zero.\r\n\t\t\t\treturn new Date(a.DueDate) - new Date(b.DueDate)\r\n\t\t\t})\r\n\r\n\t\t\tfor (let i = 0; i < this.assignments.length; i++) {\r\n\t\t\t\tthis.assignments[i].DisplayOrder = i\r\n\t\t\t\tawait assignmentService.updateAssignment(this.assignments[i])\r\n\t\t\t}\r\n\r\n\t\t\tNotification.success({\r\n\t\t\t\tduration: 6000,\r\n\t\t\t\ttitle: 'Success',\r\n\t\t\t\tmessage: 'Projects order was updated successfully.'\r\n\t\t\t})\r\n\t\t},\r\n\t\tasync onDragEnd() {\r\n\t\t\tfor (let i = 0; i < this.assignments.length; i++) {\r\n\t\t\t\tif (this.assignments[i].DisplayOrder != i) {\r\n\t\t\t\t\tthis.assignments[i].DisplayOrder = i\r\n\t\t\t\t\tawait assignmentService.updateAssignment(this.assignments[i])\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tNotification.success({\r\n\t\t\t\tduration: 6000,\r\n\t\t\t\ttitle: 'Success',\r\n\t\t\t\tmessage: 'Projects order was updated successfully.'\r\n\t\t\t})\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Get a project template by id.\r\n\t\t// @arg Id of the project template.\r\n\t\tasync getTemplate(id) {\r\n this.template = await projectTemplateService.getTemplateById(id)\r\n\r\n if (this.template.PTerm) {\r\n this.template.PTerm = this.template.PTerm.split(',')\r\n }\r\n\r\n\t\t\t this.assignments = await assignmentService.getAssignmentsWithTasks(id)\r\n // console.log(this.assignments)\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Get a list of rubrics by organization code.\r\n\t\tasync getRubricList() {\r\n\t\t\tthis.rubricList = await rubricService.getRubricsByOrgCode(this.orgCode)\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Add a new project template.\r\n\t\tasync submitTemplate() {\r\n\t\t\tthis.$refs['templateForm'].validate(async(valid) => {\r\n if (valid) {\r\n if (this.template.PTerm) {\r\n this.template.PTerm = this.template.PTerm.join(',')\r\n }\r\n \r\n\t\t\t\t\tconst newTemplate = await projectTemplateService.addNewTemplate(this.template)\r\n\t\t\t\t\tthis.template = newTemplate\r\n this.templateId = newTemplate.Id\r\n if (this.template.PTerm) {\r\n this.template.PTerm = this.template.PTerm.split(',')\r\n }\r\n\r\n\t\t\t\t\tthis.newAssignmentForm.TemplateId = newTemplate.Id\r\n\t\t\t\t\tNotification.success({\r\n\t\t\t\t\t\tduration: 6000,\r\n\t\t\t\t\t\ttitle: 'Success',\r\n\t\t\t\t\t\tmessage: 'The template was created successfully.'\r\n\t\t\t\t\t})\r\n\t\t\t this.$router.push('/admin/template/' + newTemplate.Id)\r\n\t\t\t\t}\r\n\t\t\t})\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Update a project template.\r\n async editTemplate() {\r\n\r\n //if (Array.isArray(this.template.Pterm) && this.template.Pterm.length > 0) {\r\n if (this.template.PTerm) {\r\n this.template.PTerm = this.template.PTerm.join(',')\r\n } else {\r\n this.template.PTerm = null\r\n }\r\n \r\n const that = this\r\n\r\n const foo = await projectTemplateService.updateTemplate(that.template)\r\n \r\n if (this.template.PTerm) {\r\n this.template.PTerm = this.template.PTerm.split(',')\r\n }\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Looping through each item in a collection and performing an action asynchronously.\r\n\t\t// @arg The collections and a callback function.\r\n\t\tasync asyncForEach(array, callback) {\r\n\t\t\tfor (let index = 0; index < array.length; index++) {\r\n\t\t\t\tawait callback(array[index], index, array)\r\n\t\t\t}\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Open add new/ edit project dialog.\r\n\t\t// @arg The project id and its key in the collection.\r\n\t\topenNewAssignmentDialog(assignmentId, key) {\r\n\t\t\tif (this.newDescriptionEditor != null) {\r\n\t\t\t\tthis.newDescriptionEditor.destroy()\r\n\t\t\t}\r\n\t\t\tthis.newAssignmentDialogVisible = true\r\n\t\t\tthis.selectedAssignment = null\r\n\t\t\tthis.selectedKey = null\r\n\t\t\tthis.selectedTask = null\r\n\t\t\tthis.setUpNewEditor()\r\n\t\t},\r\n\t\topenNewTaskDialog(assignmentId, key) {\r\n\t\t\tif (this.newTaskEditor != null) {\r\n\t\t\t\tthis.newTaskEditor.destroy()\r\n\t\t\t}\r\n\t\t\tthis.newTaskDialogVisible = true\r\n\t\t\tif (assignmentId != undefined && key != undefined) {\r\n\t\t\t\tthis.selectedAssignment = this.assignments[key]\r\n\t\t\t\tthis.selectedKey = key\r\n\t\t\t}\r\n\r\n\t\t\tthis.selectedTask = null\r\n\t\t\tthis.setUpNewTaskEditor()\r\n\t\t},\r\n\t\topenEditAssignmentDialog(assignmentId, key) {\r\n\t\t\tif (this.editDescriptionEditor != null) {\r\n\t\t\t\tthis.editDescriptionEditor.destroy()\r\n\t\t\t}\r\n\t\t\tthis.editAssignmentDialogVisible = true\r\n\t\t\tif (assignmentId != undefined && key != undefined) {\r\n\t\t\t\tthis.selectedAssignment = this.assignments[key]\r\n\t\t\t\tconsole.log(this.selectedAssignment)\r\n\t\t\t\tthis.selectedKey = key\r\n\t\t\t}\r\n\t\t\tthis.setUpEditEditor()\r\n\t\t},\r\n\t\tsetUpNewTaskEditor() {\r\n\t\t\tconst that = this\r\n\t\t\tthis.newTaskEditor = new Editor({\r\n\t\t\t\textensions: [\r\n\t\t\t\t\tnew Blockquote(),\r\n\t\t\t\t\tnew CodeBlock(),\r\n\t\t\t\t\tnew HardBreak(),\r\n\t\t\t\t\tnew Heading({ levels: [1, 2, 3] }),\r\n\t\t\t\t\tnew BulletList(),\r\n\t\t\t\t\tnew OrderedList(),\r\n\t\t\t\t\tnew Image(),\r\n\t\t\t\t\tnew ListItem(),\r\n\t\t\t\t\tnew TodoItem(),\r\n\t\t\t\t\tnew TodoList(),\r\n\t\t\t\t\tnew Bold(),\r\n\t\t\t\t\tnew Code(),\r\n\t\t\t\t\tnew Italic(),\r\n\t\t\t\t\tnew Link(),\r\n\t\t\t\t\tnew Strike(),\r\n\t\t\t\t\tnew Underline(),\r\n\t\t\t\t\tnew History(),\r\n\t\t\t\t\tnew Table({\r\n\t\t\t\t\t\tresizable: true\r\n\t\t\t\t\t}),\r\n\t\t\t\t\tnew TableHeader(),\r\n\t\t\t\t\tnew TableCell(),\r\n\t\t\t\t\tnew TableRow()\r\n\t\t\t\t],\r\n\t\t\t\tcontent: '',\r\n\t\t\t\tonUpdate: (state) => {\r\n\t\t\t\t\tthat.newTaskForm.Description = state.getHTML()\r\n\t\t\t\t}\r\n\t\t\t})\r\n\t\t},\r\n\t\tsetUpEditTaskEditor() {\r\n\t\t\tconst that = this\r\n\t\t\tthis.editTaskEditor = new Editor({\r\n\t\t\t\textensions: [\r\n\t\t\t\t\tnew Blockquote(),\r\n\t\t\t\t\tnew CodeBlock(),\r\n\t\t\t\t\tnew HardBreak(),\r\n\t\t\t\t\tnew Heading({ levels: [1, 2, 3] }),\r\n\t\t\t\t\tnew BulletList(),\r\n\t\t\t\t\tnew OrderedList(),\r\n\t\t\t\t\tnew Image(),\r\n\t\t\t\t\tnew ListItem(),\r\n\t\t\t\t\tnew TodoItem(),\r\n\t\t\t\t\tnew TodoList(),\r\n\t\t\t\t\tnew Bold(),\r\n\t\t\t\t\tnew Code(),\r\n\t\t\t\t\tnew Italic(),\r\n\t\t\t\t\tnew Link(),\r\n\t\t\t\t\tnew Strike(),\r\n\t\t\t\t\tnew Underline(),\r\n\t\t\t\t\tnew History(),\r\n\t\t\t\t\tnew Table({\r\n\t\t\t\t\t\tresizable: true\r\n\t\t\t\t\t}),\r\n\t\t\t\t\tnew TableHeader(),\r\n\t\t\t\t\tnew TableCell(),\r\n\t\t\t\t\tnew TableRow()\r\n\t\t\t\t],\r\n\t\t\t\tcontent: '',\r\n\t\t\t\tonUpdate: (state) => {\r\n\t\t\t\t\tthat.selectedTask.Description = state.getHTML()\r\n\t\t\t\t}\r\n\t\t\t})\r\n\t\t},\r\n\t\tsetUpNewEditor() {\r\n\t\t\tconst that = this\r\n\t\t\tthis.newDescriptionEditor = new Editor({\r\n\t\t\t\textensions: [\r\n\t\t\t\t\tnew Blockquote(),\r\n\t\t\t\t\tnew CodeBlock(),\r\n\t\t\t\t\tnew HardBreak(),\r\n\t\t\t\t\tnew Heading({ levels: [1, 2, 3] }),\r\n\t\t\t\t\tnew BulletList(),\r\n\t\t\t\t\tnew OrderedList(),\r\n\t\t\t\t\tnew Image(),\r\n\t\t\t\t\tnew ListItem(),\r\n\t\t\t\t\tnew TodoItem(),\r\n\t\t\t\t\tnew TodoList(),\r\n\t\t\t\t\tnew Bold(),\r\n\t\t\t\t\tnew Code(),\r\n\t\t\t\t\tnew Italic(),\r\n\t\t\t\t\tnew Link(),\r\n\t\t\t\t\tnew Strike(),\r\n\t\t\t\t\tnew Underline(),\r\n\t\t\t\t\tnew History(),\r\n\t\t\t\t\tnew Table({\r\n\t\t\t\t\t\tresizable: true\r\n\t\t\t\t\t}),\r\n\t\t\t\t\tnew TableHeader(),\r\n\t\t\t\t\tnew TableCell(),\r\n\t\t\t\t\tnew TableRow()\r\n\t\t\t\t],\r\n\t\t\t\tcontent: '',\r\n\t\t\t\tonUpdate: (state) => {\r\n\t\t\t\t\tthat.newAssignmentForm.Description = state.getHTML()\r\n\t\t\t\t}\r\n\t\t\t})\r\n\t\t},\r\n\t\tsetUpEditEditor() {\r\n\t\t\tconst that = this\r\n\t\t\tthis.editDescriptionEditor = new Editor({\r\n\t\t\t\textensions: [\r\n\t\t\t\t\tnew Blockquote(),\r\n\t\t\t\t\tnew CodeBlock(),\r\n\t\t\t\t\tnew HardBreak(),\r\n\t\t\t\t\tnew Heading({ levels: [1, 2, 3] }),\r\n\t\t\t\t\tnew BulletList(),\r\n\t\t\t\t\tnew OrderedList(),\r\n\t\t\t\t\tnew Image(),\r\n\t\t\t\t\tnew ListItem(),\r\n\t\t\t\t\tnew TodoItem(),\r\n\t\t\t\t\tnew TodoList(),\r\n\t\t\t\t\tnew Bold(),\r\n\t\t\t\t\tnew Code(),\r\n\t\t\t\t\tnew Italic(),\r\n\t\t\t\t\tnew Link(),\r\n\t\t\t\t\tnew Strike(),\r\n\t\t\t\t\tnew Underline(),\r\n\t\t\t\t\tnew History(),\r\n\t\t\t\t\tnew Table({\r\n\t\t\t\t\t\tresizable: true\r\n\t\t\t\t\t}),\r\n\t\t\t\t\tnew TableHeader(),\r\n\t\t\t\t\tnew TableCell(),\r\n\t\t\t\t\tnew TableRow()\r\n\t\t\t\t],\r\n\t\t\t\tcontent: that.selectedAssignment.Description,\r\n\t\t\t\tonUpdate: (state) => {\r\n\t\t\t\t\tthat.selectedAssignment.Description = state.getHTML()\r\n\t\t\t\t}\r\n\t\t\t})\r\n\t\t},\r\n\t\tcloseAssignmentDialog() {\r\n\t\t\tif (this.$refs['newAssignmentForm']) { this.$refs['newAssignmentForm'].resetFields() }\r\n\t\t},\r\n\t\tcloseTaskDialog() {\r\n\t\t\tif (this.$refs['newTaskForm']) { this.$refs['newTaskForm'].resetFields() }\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Submit a project.\r\n\t\tasync addNewAssignment() {\r\n\t\t\tconst that = this\r\n\t\t\tthis.$refs['newAssignmentForm'].validate((valid) => {\r\n\t\t\t\tif (valid) {\r\n\t\t\t\t\tconst newAssignment = {\r\n\t\t\t\t\t\tOrgCode: that.orgCode,\r\n\t\t\t\t\t\tAssignmentName: that.newAssignmentForm.AssignmentName,\r\n\t\t\t\t\t\tDueDate: that.getDateStr(that.newAssignmentForm.DueDate),\r\n\t\t\t\t\t\tDescription: that.newAssignmentForm.Description,\r\n\t\t\t\t\t\tIsActive: 'A',\r\n\t\t\t\t\t\tIsMandatory: false,\r\n\t\t\t\t\t\tIsGroupAssignment: that.newAssignmentForm.IsGroupAssignment,\r\n\t\t\t\t\t\tDisplayOrder: that.assignments ? that.assignments.length : 0,\r\n\t\t\t\t\t\tTemplateId: that.templateId,\r\n\t\t\t\t\t\tRubricId: that.newAssignmentForm.RubricId,\r\n\t\t\t\t\t\tGenreId: 22,\r\n\t\t\t\t\t\tUploadType: 0,\r\n\t\t\t\t\t\tUsePeerReview: false,\r\n\t\t\t\t\t\tUseRevisionPlan: false,\r\n\t\t\t\t\t\tUsePortfolio: false,\r\n\t\t\t\t\t\tUseNormalization: false,\r\n\t\t\t\t\t\tUseReviewerComment: false,\r\n\t\t\t\t\t\tLastActivityDate: that.getlastActivityDate(),\r\n\t\t\t\t\t\tUseSelfAssessment: false,\r\n\t\t\t\t\t\tSelfReviewDueDate: that.getlastActivityDate(),\r\n\t\t\t\t\t\tUseAppraisal: false,\r\n\t\t\t\t\t\tAppraisalRubricId: null,\r\n\t\t\t\t\t\tAppraisalDueDate: null,\r\n\t\t\t\t\t\tPeerReviewDueDate: null\r\n\t\t\t\t\t}\r\n\t\t\t\t\tassignmentService.addNewAssignment(newAssignment)\r\n\t\t\t\t\t\t.then(assignment => {\r\n\t\t\t\t\t\t\tif (assignment) {\r\n\t\t\t\t\t\t\t\tthat.newAssignmentForm = {\r\n\t\t\t\t\t\t\t\t\tOrgCode: '',\r\n\t\t\t\t\t\t\t\t\tAssignmentName: '',\r\n\t\t\t\t\t\t\t\t\tDueDate: '',\r\n\t\t\t\t\t\t\t\t\tDescription: '',\r\n\t\t\t\t\t\t\t\t\tIsActive: 'A',\r\n\t\t\t\t\t\t\t\t\tIsMandatory: false,\r\n\t\t\t\t\t\t\t\t\tIsGroupAssignment: false,\r\n\t\t\t\t\t\t\t\t\tDisplayOrder: 0,\r\n\t\t\t\t\t\t\t\t\tTemplateId: 0,\r\n\t\t\t\t\t\t\t\t\tRubricId: null,\r\n\t\t\t\t\t\t\t\t\tGenreId: 0,\r\n\t\t\t\t\t\t\t\t\tUploadType: 0,\r\n\t\t\t\t\t\t\t\t\tUsePeerReview: false,\r\n\t\t\t\t\t\t\t\t\tUseRevisionPlan: false,\r\n\t\t\t\t\t\t\t\t\tUsePortfolio: false,\r\n\t\t\t\t\t\t\t\t\tUseNormalization: false,\r\n\t\t\t\t\t\t\t\t\tUseReviewerComment: false,\r\n\t\t\t\t\t\t\t\t\tLastActivityDate: '',\r\n\t\t\t\t\t\t\t\t\tUseSelfAssessment: false,\r\n\t\t\t\t\t\t\t\t\tUseAppraisal: false,\r\n\t\t\t\t\t\t\t\t\tAppraisalRubricId: null,\r\n\t\t\t\t\t\t\t\t\tAppraisalDueDate: null,\r\n\t\t\t\t\t\t\t\t\tPeerReviewDueDate: null\r\n\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t\t// Add new default instructor review task\r\n\t\t\t\t\t\t\t\tconst newTask = {\r\n\t\t\t\t\t\t\t\t\tAssignmentId: assignment.Id,\r\n\t\t\t\t\t\t\t\t\tName: 'Instructor Review',\r\n\t\t\t\t\t\t\t\t\tDescription: null,\r\n\t\t\t\t\t\t\t\t\tDueDate: that.getDateStr(newAssignment.DueDate),\r\n\t\t\t\t\t\t\t\t\tRubricId: newAssignment.RubricId,\r\n\t\t\t\t\t\t\t\t\tType: 'instructor_review',\r\n\t\t\t\t\t\t\t\t\tSyncWithCanvas: 0,\r\n\t\t\t\t\t\t\t\t\tDisplayOrder: 0, // IX Shouldn't the first Task be 0?\r\n\t\t\t\t\t\t\t\t\tUpdatedDate: that.getlastActivityDate()\r\n\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t\tconsole.log(newTask)\r\n\r\n\t\t\t\t\t\t\t\ttaskService.addNewTask(newTask).then(task => {\r\n\t\t\t\t\t\t\t\t\tconsole.log(task)\r\n\t\t\t\t\t\t\t\t\tif (task) {\r\n\t\t\t\t\t\t\t\t\t\tvar assignmentTasks = []\r\n\t\t\t\t\t\t\t\t\t\tassignmentTasks.push(task)\r\n\t\t\t\t\t\t\t\t\t\tassignment.Tasks = assignmentTasks\r\n\t\t\t\t\t\t\t\t\t\tthis.assignments.push(assignment)\r\n\t\t\t\t\t\t\t\t\t\tthis.assignments = this.assignments\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t})\r\n\r\n\t\t\t\t\t\t\t\tNotification.success({\r\n\t\t\t\t\t\t\t\t\tduration: 6000,\r\n\t\t\t\t\t\t\t\t\ttitle: 'Success',\r\n\t\t\t\t\t\t\t\t\tmessage: 'The new project were added successfully.'\r\n\t\t\t\t\t\t\t\t})\r\n\t\t\t\t\t\t\t\tthis.newAssignmentDialogVisible = false\r\n\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\tNotification.error({\r\n\t\t\t\t\t\t\t\t\tduration: 6000,\r\n\t\t\t\t\t\t\t\t\ttitle: 'Error',\r\n\t\t\t\t\t\t\t\t\tmessage: 'The new project were not added successfully due to server error.'\r\n\t\t\t\t\t\t\t\t})\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}).catch(error => {\r\n\t\t\t\t\t\t\tconsole.log(error)\r\n\t\t\t\t\t\t\tNotification.error({\r\n\t\t\t\t\t\t\t\tduration: 6000,\r\n\t\t\t\t\t\t\t\ttitle: 'Error',\r\n\t\t\t\t\t\t\t\tmessage: 'The new project were not added successfully due to server error.'\r\n\t\t\t\t\t\t\t})\r\n\t\t\t\t\t\t})\r\n\t\t\t\t} else {\r\n\t\t\t\t\tNotification.error({\r\n\t\t\t\t\t\tduration: 6000,\r\n\t\t\t\t\t\ttitle: 'Error',\r\n\t\t\t\t\t\tmessage: 'The new project was not created due to validation error.'\r\n\t\t\t\t\t})\r\n\t\t\t\t\treturn false\r\n\t\t\t\t}\r\n\t\t\t})\r\n\t\t},\r\n\t\tasync editAssignment() {\r\n\t\t\tconst that = this\r\n\t\t\tthis.$refs['assignmentForm'].validate((valid) => {\r\n\t\t\t\tif (valid) {\r\n\t\t\t\t\tif (that.selectedAssignment != null) {\r\n\t\t\t\t\t\tthat.selectedAssignment.DueDate = that.getDateStr(that.selectedAssignment.DueDate)\r\n\t\t\t\t\t\tif (that.selectedAssignment.SelfReviewDueDate) {\r\n\t\t\t\t\t\t\tthat.selectedAssignment.SelfReviewDueDate = that.getDateStr(that.selectedAssignment.SelfReviewDueDate)\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tif (that.selectedAssignment.AppraisalDueDate) {\r\n\t\t\t\t\t\t\tthat.selectedAssignment.AppraisalDueDate = that.getDateStr(that.selectedAssignment.AppraisalDueDate)\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tif (that.selectedAssignment.PeerReviewDueDate) {\r\n\t\t\t\t\t\t\tthat.selectedAssignment.PeerReviewDueDate = that.getDateStr(that.selectedAssignment.PeerReviewDueDate)\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tthat.selectedAssignment.LastActivityDate = that.getlastActivityDate()\r\n\t\t\t\t\t\tassignmentService.updateAssignment(that.selectedAssignment)\r\n\t\t\t\t\t\t\t.then(assignment => {\r\n\t\t\t\t\t\t\t\tthat.assignments[that.selectedKey] = that.selectedAssignment\r\n\t\t\t\t\t\t\t\tthat.selectedAssignment = null\r\n\t\t\t\t\t\t\t\tthat.selectedTask = null\r\n\t\t\t\t\t\t\t\tNotification.success({\r\n\t\t\t\t\t\t\t\t\tduration: 6000,\r\n\t\t\t\t\t\t\t\t\ttitle: 'Success',\r\n\t\t\t\t\t\t\t\t\tmessage: 'The project were updated successfully.'\r\n\t\t\t\t\t\t\t\t})\r\n\t\t\t\t\t\t\t\tthis.editAssignmentDialogVisible = false\r\n\t\t\t\t\t\t\t}).catch(error => {\r\n\t\t\t\t\t\t\t\tconsole.log(error)\r\n\t\t\t\t\t\t\t\tNotification.error({\r\n\t\t\t\t\t\t\t\t\tduration: 6000,\r\n\t\t\t\t\t\t\t\t\ttitle: 'Error',\r\n\t\t\t\t\t\t\t\t\tmessage: 'The project were not updated successfully.'\r\n\t\t\t\t\t\t\t\t})\r\n\t\t\t\t\t\t\t})\r\n\t\t\t\t\t}\r\n\t\t\t\t} else {\r\n\t\t\t\t\tNotification.error({\r\n\t\t\t\t\t\tduration: 6000,\r\n\t\t\t\t\t\ttitle: 'Error',\r\n\t\t\t\t\t\tmessage: 'The new project was not created due to validation error.'\r\n\t\t\t\t\t})\r\n\t\t\t\t\treturn false\r\n\t\t\t\t}\r\n\t\t\t})\r\n\t\t},\r\n\t\topenAssignmentDetailDialog(assignmentId, key) {\r\n\t\t\tif (this.descriptionDetailEditor != null) {\r\n\t\t\t\tthis.descriptionDetailEditor.destroy()\r\n\t\t\t}\r\n\r\n\t\t\tthis.assignmentDetailDialogVisible = true\r\n\t\t\tif (assignmentId != undefined && key != undefined) {\r\n\t\t\t\tthis.selectedAssignment = this.assignments[key]\r\n\t\t\t\tthis.selectedKey = key\r\n\t\t\t} else {\r\n\t\t\t\tthis.selectedAssignment = null\r\n\t\t\t\tthis.selectedKey = null\r\n\t\t\t\tthis.selectedTask = null\r\n\t\t\t}\r\n\t\t\tthis.setUpDetailEditor()\r\n\t\t},\r\n\t\tsetUpDetailEditor() {\r\n\t\t\tconst that = this\r\n\t\t\tthis.descriptionDetailEditor = new Editor({\r\n\t\t\t\teditable: false,\r\n\t\t\t\textensions: [\r\n\t\t\t\t\tnew Blockquote(),\r\n\t\t\t\t\tnew CodeBlock(),\r\n\t\t\t\t\tnew HardBreak(),\r\n\t\t\t\t\tnew Heading({ levels: [1, 2, 3] }),\r\n\t\t\t\t\tnew BulletList(),\r\n\t\t\t\t\tnew OrderedList(),\r\n\t\t\t\t\tnew Image(),\r\n\t\t\t\t\tnew ListItem(),\r\n\t\t\t\t\tnew TodoItem(),\r\n\t\t\t\t\tnew TodoList(),\r\n\t\t\t\t\tnew Bold(),\r\n\t\t\t\t\tnew Code(),\r\n\t\t\t\t\tnew Italic(),\r\n\t\t\t\t\tnew Link(),\r\n\t\t\t\t\tnew Strike(),\r\n\t\t\t\t\tnew Underline(),\r\n\t\t\t\t\tnew History(),\r\n\t\t\t\t\tnew Table({\r\n\t\t\t\t\t\tresizable: true\r\n\t\t\t\t\t}),\r\n\t\t\t\t\tnew TableHeader(),\r\n\t\t\t\t\tnew TableCell(),\r\n\t\t\t\t\tnew TableRow()\r\n\t\t\t\t],\r\n\t\t\t\tcontent: that.selectedAssignment != null ? that.selectedAssignment.Description : '',\r\n\t\t\t\tonUpdate: (state) => {\r\n\t\t\t\t\tthat.selectedAssignment.Description = state.getHTML()\r\n\t\t\t\t}\r\n\t\t\t})\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Get a date time value as a string.\r\n\t\t// @arg The date to be converted.\r\n\t\tgetDateStr(date) {\r\n\t\t\tconst thisDate = this.$moment(date)._d\r\n\t\t\treturn thisDate.getFullYear() + '-' + (thisDate.getMonth() + 1) + '-' +\r\n thisDate.getDate() + ' ' + thisDate.getHours() + ':' + thisDate.getMinutes() + ':' + thisDate.getSeconds()\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Get the current date time as a string with T in the format.\r\n\t\t// @arg The date to be converted.\r\n\t\tgetDateStrWithT(date) {\r\n\t\t\tconst thisDate = this.$moment(date)._d\r\n\t\t\treturn thisDate.getFullYear() + '-' + (thisDate.getMonth() + 1) + '-' +\r\n thisDate.getDate() + 'T' + thisDate.getHours() + ':' + thisDate.getMinutes() + ':' + thisDate.getSeconds()\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Get the current date time as a string.\r\n\t\tgetlastActivityDate() {\r\n\t\t\tconst today = this.$moment()._d\r\n\t\t\treturn today.getFullYear() + '-' + (today.getMonth() + 1) + '-' +\r\n today.getDate() + ' ' + today.getHours() + ':' + today.getMinutes() + ':' + today.getSeconds()\r\n\t\t}\r\n\t}\r\n}\r\n</script>\r\n\r\n<style scoped>\r\n\r\n.assignment-title{\r\n font-size: 18px;\r\n font-weight: bold;\r\n color: #4E5E63;\r\n text-overflow: ellipsis;\r\n white-space: nowrap;\r\n width: 400px;\r\n display: inline-block;\r\n overflow: hidden;\r\n}\r\n\r\n.assignment-title:hover{\r\n text-decoration: underline;\r\n text-decoration-thickness: 2px;\r\n}\r\n\r\n.assignment-row:hover{\r\n background: #F0F8FF;\r\n}\r\n\r\n.el-table__empty-text{\r\n\tdisplay: none;\r\n}\r\n.assignment-list{\r\n padding: 20px;\r\n box-shadow: 20px 10px 25px 20px rgba(109, 107, 107, 0.1);\r\n}\r\n.instructor-assignment-name{\r\n font-size: 18px;\r\n font-weight: bold;\r\n color: #4E5E63;\r\n text-overflow: ellipsis;\r\n white-space: nowrap;\r\n display: inline-block;\r\n overflow: hidden;\r\n}\r\n.student-assignment-name{\r\n font-size: 18px;\r\n font-weight: bold;\r\n color: #4E5E63;\r\n text-overflow: ellipsis;\r\n white-space: nowrap;\r\n width: 268px;\r\n display: inline-block;\r\n overflow: hidden;\r\n}\r\n.assignment-action-btn{\r\n box-shadow: none;\r\n display: inline-block;\r\n vertical-align: middle;\r\n touch-action: manipulation;\r\n cursor: pointer;\r\n padding: 10px 14px;\r\n /* border: 0px none;\r\n background: none; */\r\n}\r\n.assignment-details{\r\n font-size: 13px;\r\n margin-right: 20px;\r\n float: left;\r\n}\r\n/*\r\n.dialog-title{\r\n font-size: 22px;\r\n font-weight: bold;\r\n color: #4E5E63;\r\n} */\r\n.badge-item {\r\n margin-left: 8px;\r\n margin-right: 8px;\r\n}\r\n.editor-btn{\r\n text-align: center;\r\n box-shadow: none;\r\n display: inline-block;\r\n padding: 0px 8px;\r\n vertical-align: middle;\r\n touch-action: manipulation;\r\n cursor: pointer;\r\n border: 0px none;\r\n background: none;\r\n word-break: normal;\r\n}\r\n\r\n.assignment-edit-editor{\r\n word-break: normal;\r\n padding-right: 5px;\r\n}\r\n\r\n.assignment-detail-editor{\r\n word-break: normal;\r\n padding-right: 5px;\r\n}\r\n</style>\r\n<style>\r\n.dialog-title{\r\n font-size: 22px;\r\n font-weight: bold;\r\n color: #4E5E63;\r\n}\r\n\r\n.el-badge__content.is-fixed{\r\n right: 12px !important;\r\n}\r\n\r\n.assignment-edit-editor > .ProseMirror{\r\n height: 100px;\r\n overflow: auto;\r\n}\r\n\r\n.assignment-detail-editor > .ProseMirror{\r\n height: 250px;\r\n overflow: auto;\r\n}\r\n\r\n.warning {\r\n color: red;\r\n}\r\n</style>\r\n\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./NewProjectTemplate.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./NewProjectTemplate.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./NewProjectTemplate.vue?vue&type=template&id=07a6b68e&scoped=true&\"\nimport script from \"./NewProjectTemplate.vue?vue&type=script&lang=js&\"\nexport * from \"./NewProjectTemplate.vue?vue&type=script&lang=js&\"\nimport style0 from \"./NewProjectTemplate.vue?vue&type=style&index=0&id=07a6b68e&scoped=true&lang=css&\"\nimport style1 from \"./NewProjectTemplate.vue?vue&type=style&index=1&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"07a6b68e\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_vm._m(0),(_vm.rubricData)?_c('div',{staticClass:\"student-submission-wrapper\"},[_c('div',{staticStyle:{\"margin-bottom\":\"20px\"}},[(!_vm.showInactive)?_c('el-button',{staticStyle:{\"float\":\"left\",\"margin-top\":\"10px\",\"margin-bottom\":\"10px\",\"margin-right\":\"20px\"},attrs:{\"size\":\"mini\"},on:{\"click\":function($event){return _vm.showInactiveRubric()}}},[_vm._v(\"\\n Show Inactive Rubric\\n \")]):_c('el-button',{staticStyle:{\"float\":\"left\",\"margin-top\":\"10px\",\"margin-bottom\":\"10px\",\"margin-right\":\"20px\"},attrs:{\"size\":\"mini\"},on:{\"click\":function($event){return _vm.showActiveOnly()}}},[_vm._v(\"\\n Show Active Rubric Only\\n \")]),_c('el-input',{staticStyle:{\"float\":\"left\",\"width\":\"20%\",\"margin-top\":\"10px\",\"margin-bottom\":\"10px\"},attrs:{\"size\":\"mini\",\"placeholder\":\"Filter rubrics by name\"},model:{value:(_vm.search),callback:function ($$v) {_vm.search=$$v},expression:\"search\"}}),_c('el-button',{staticStyle:{\"float\":\"right\"},on:{\"click\":function($event){return _vm.addNewRubric()}}},[_c('span',[_vm._v(\"\\n Add New Rubric\\n \")])])],1),_c('el-table',{staticStyle:{\"text-align\":\"center\",\"width\":\"100%\"},attrs:{\"data\":_vm.rubricData.filter(function (data) { return (!_vm.search || data.RubricName.toLowerCase().includes(_vm.search.toLowerCase())) && (_vm.showInactive? true : data.IsActive == true ); }),\"row-class-name\":_vm.tableRowClassName,\"default-sort\":{prop: 'date', order: 'descending'}}},[_c('el-table-column',{attrs:{\"sortable\":\"\",\"fixed\":\"\",\"prop\":\"RubricName\",\"label\":\"Rubric Name\"}}),_c('el-table-column',{attrs:{\"sortable\":\"\",\"fixed\":\"\",\"prop\":\"Description\",\"label\":\"Description\"}}),_c('el-table-column',{attrs:{\"fixed\":\"\",\"label\":\"Rubric Criteria\"},scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return _vm._l((scope.row.RubricCriterias),function(criteria,idx){return _c('span',{key:criteria.Id},[_vm._v(\"\\n \"+_vm._s(criteria.CriteriaName)+\"\\n\\n \"),(idx != scope.row.RubricCriterias.length - 1)?_c('span',[_vm._v(\" | \")]):_vm._e()])})}}],null,false,3076105933)}),_c('el-table-column',{attrs:{\"fixed\":\"\",\"label\":\"Action\",\"width\":\"250\",\"align\":\"center\"},scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [_c('el-button',{attrs:{\"size\":\"mini\"},on:{\"click\":function($event){return _vm.editRubric(scope.$index, scope.row)}}},[_vm._v(\"\\n Edit\\n \")]),(scope.row.IsActive == true)?_c('el-button',{attrs:{\"size\":\"mini\"},on:{\"click\":function($event){return _vm.inactivateRubric(scope.row)}}},[_vm._v(\"\\n Inactivate\\n \")]):_c('el-button',{attrs:{\"size\":\"mini\"},on:{\"click\":function($event){return _vm.activateRubric(scope.row)}}},[_vm._v(\"\\n Activate\\n \")]),_c('el-button',{attrs:{\"size\":\"mini\"},on:{\"click\":function($event){return _vm.deleteRubric(scope.$index, scope.row)}}},[_vm._v(\"\\n Delete\\n \")])]}}],null,false,2123552508)})],1)],1):_vm._e()])}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"breadcumb\"},[_c('div',{staticClass:\"ic-app-crumbs\"},[_c('span',{staticClass:\"breadcumb-text\"},[_vm._v(\"\\n Admin Tools\\n \"),_c('i',{staticClass:\"fas fa-chevron-right breadcumb-next\"}),_vm._v(\"\\n Rubrics\\n \")])])])}]\n\nexport { render, staticRenderFns }","<template>\r\n <div>\r\n <div class=\"breadcumb\">\r\n <div class=\"ic-app-crumbs\">\r\n <span class=\"breadcumb-text\">\r\n Admin Tools\r\n <i class=\"fas fa-chevron-right breadcumb-next\" />\r\n Rubrics\r\n </span>\r\n </div>\r\n </div>\r\n\r\n <div v-if=\"rubricData\" class=\"student-submission-wrapper\">\r\n <div style=\"margin-bottom: 20px;\">\r\n\r\n <el-button\r\n v-if=\"!showInactive\"\r\n size=\"mini\"\r\n style=\"float: left; margin-top: 10px; margin-bottom: 10px; margin-right: 20px; \"\r\n @click=\"showInactiveRubric()\"\r\n >\r\n Show Inactive Rubric\r\n </el-button>\r\n <el-button\r\n v-else\r\n size=\"mini\"\r\n style=\"float: left; margin-top: 10px; margin-bottom: 10px; margin-right: 20px; \"\r\n @click=\"showActiveOnly()\"\r\n >\r\n Show Active Rubric Only\r\n </el-button>\r\n\r\n <el-input\r\n v-model=\"search\"\r\n size=\"mini\"\r\n placeholder=\"Filter rubrics by name\"\r\n style=\"float: left; width: 20%; margin-top: 10px; margin-bottom: 10px;\"\r\n />\r\n <el-button style=\" float: right;\" @click=\"addNewRubric()\">\r\n <span>\r\n Add New Rubric\r\n </span>\r\n </el-button>\r\n <!-- <el-input v-model=\"search\" placeholder=\"Search for Assignment\" style=\"width: 300px;\" /> -->\r\n </div>\r\n\r\n <el-table\r\n :data=\"rubricData.filter(data => (!search || data.RubricName.toLowerCase().includes(search.toLowerCase())) && (showInactive? true : data.IsActive == true ))\"\r\n style=\"text-align:center; width: 100%\"\r\n :row-class-name=\"tableRowClassName\"\r\n :default-sort=\"{prop: 'date', order: 'descending'}\"\r\n >\r\n <!-- <el-table-column fixed prop=\"Id\" label=\"Id\" width=\"50\" /> -->\r\n <el-table-column sortable fixed prop=\"RubricName\" label=\"Rubric Name\" />\r\n <el-table-column sortable fixed prop=\"Description\" label=\"Description\" />\r\n <el-table-column fixed label=\"Rubric Criteria\">\r\n <template slot-scope=\"scope\">\r\n <span v-for=\"(criteria, idx) in scope.row.RubricCriterias\" :key=\"criteria.Id\">\r\n {{ criteria.CriteriaName }}\r\n\r\n <span v-if=\"idx != scope.row.RubricCriterias.length - 1\"> | </span>\r\n </span>\r\n </template>\r\n </el-table-column>\r\n <el-table-column fixed label=\"Action\" width=\"250\" align=\"center\">\r\n <template slot-scope=\"scope\">\r\n <el-button\r\n size=\"mini\"\r\n @click=\"editRubric(scope.$index, scope.row)\"\r\n >\r\n Edit\r\n </el-button>\r\n\r\n <el-button\r\n v-if=\"scope.row.IsActive == true\"\r\n size=\"mini\"\r\n @click=\"inactivateRubric(scope.row)\"\r\n >\r\n Inactivate\r\n </el-button>\r\n <el-button\r\n v-else\r\n size=\"mini\"\r\n @click=\"activateRubric(scope.row)\"\r\n >\r\n Activate\r\n </el-button>\r\n\r\n <el-button\r\n size=\"mini\"\r\n @click=\"deleteRubric(scope.$index, scope.row)\"\r\n >\r\n Delete\r\n </el-button>\r\n </template>\r\n </el-table-column>\r\n </el-table>\r\n </div>\r\n </div>\r\n</template>\r\n\r\n<script>\r\nimport * as rubricService from '@/services/rubric.service'\r\nimport { Notification } from 'element-ui'\r\n// Display all rubrics in the system.\r\nexport default {\r\n\tname: 'RubricList',\r\n\tdata() {\r\n\t\treturn {\r\n\t\t\ttermCode: this.$store.state.auth.currentTerm.TermCode,\r\n\t\t\torgCode: this.$store.state.auth.user.OrgCode,\r\n\t\t\trubricData: null,\r\n\t\t\trubrics: null,\r\n\t\t\tshowInactive: false,\r\n\t\t\tsearch: ''\r\n\t\t}\r\n\t},\r\n\tcreated() {\r\n\t\tthis.getRubrics()\r\n\t},\r\n\tmethods: {\r\n\t\t// @vuese\r\n\t\t// Get all rubrics by organization code.\r\n\t\tasync getRubrics() {\r\n\t\t\tconst rubrics = await rubricService.getAdminRubrics(this.orgCode)\r\n\t\t\tthis.rubrics = rubrics.sort(function(a, b) {\r\n\t\t\t\treturn new Date(b.LastActivityDate) - new Date(a.LastActivityDate)\r\n\t\t\t})\r\n\t\t\tthis.rubricData = this.rubrics.filter(r => r.IsActive == true)\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Go to add new page.\r\n\t\taddNewRubric() {\r\n\t\t\tthis.$router.push('/admin/rubric/new')\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Go to edit page.\r\n\t\teditRubric(index, row) {\r\n\t\t\tthis.$router.push('/admin/rubric/' + row.Id)\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Delete a rubric\r\n\t\t// @arg Index of the rubric, and the row that contains the rubric.\r\n\t\tdeleteRubric(index, row) {\r\n\t\t\tthis.$confirm('This will permanently delete the rubric. Do you want to continue?', 'Warning', {\r\n\t\t\t\tconfirmButtonText: 'OK',\r\n\t\t\t\tcancelButtonText: 'Cancel',\r\n\t\t\t\ttype: 'warning'\r\n\t\t\t}).then(() => {\r\n\t\t\t\t rubricService.deleteRubric(row.Id)\r\n\t\t\t\t\t.then(template => {\r\n\t\t\t\t\t\tthis.rubricData.splice(index, 1)\r\n\t\t\t\t\t\tNotification.success({\r\n\t\t\t\t\t\t\tduration: 6000,\r\n\t\t\t\t\t\t\ttitle: 'Success',\r\n\t\t\t\t\t\t\tmessage: 'The template was deleted successfully.'\r\n\t\t\t\t\t\t})\r\n\t\t\t\t\t}).catch(error => {\r\n\t\t\t\t\t\tconsole.log(error)\r\n\t\t\t\t\t\tNotification.error({\r\n\t\t\t\t\t\t\tduration: 6000,\r\n\t\t\t\t\t\t\ttitle: 'Error',\r\n\t\t\t\t\t\t\tmessage: 'The template was not deleted successfully.'\r\n\t\t\t\t\t\t})\r\n\t\t\t\t\t})\r\n\t\t\t}).catch(() => {\r\n\t\t\t\tthis.$message({\r\n\t\t\t\t\ttype: 'info',\r\n\t\t\t\t\tmessage: 'Delete canceled'\r\n\t\t\t\t})\r\n\t\t\t})\r\n\t\t},\r\n\t\tshowInactiveRubric() {\r\n\t\t\tthis.showInactive = true\r\n\t\t\tthis.rubricData = this.rubrics.sort(function(a, b) {\r\n\t\t\t\treturn new Date(b.LastActivityDate) - new Date(a.LastActivityDate)\r\n\t\t\t})\r\n\t\t},\r\n\t\tshowActiveOnly() {\r\n\t\t\tthis.showInactive = false\r\n\t\t\tthis.rubricData = this.rubrics.filter(r => r.IsActive == true)\r\n\t\t},\r\n\t\tinactivateRubric(rubric) {\r\n\t\t\tthis.$confirm('Inactive rubric will be hidden from this list and will not be showing in rubric list for creating and editing projects. Do you want to continue?', 'Warning', {\r\n\t\t\t\tconfirmButtonText: 'OK',\r\n\t\t\t\tcancelButtonText: 'Cancel',\r\n\t\t\t\ttype: 'warning'\r\n\t\t\t}).then(() => {\r\n\t\t\t\trubric.IsActive = false\r\n\t\t\t\trubricService.updateRubric(rubric)\r\n\t\t\t\t\t.then(updatedRubric => {\r\n\t\t\t\t\t\trubric.LastActivityDate = Date.now()\r\n\t\t\t\t\t\tNotification.success({\r\n\t\t\t\t\t\t\tduration: 6000,\r\n\t\t\t\t\t\t\ttitle: 'Success',\r\n\t\t\t\t\t\t\tmessage: 'The rubric was inactivated and hidden from this list.'\r\n\t\t\t\t\t\t})\r\n\t\t\t\t\t}).catch(error => {\r\n\t\t\t\t\t\tconsole.log(error)\r\n\t\t\t\t\t\tNotification.error({\r\n\t\t\t\t\t\t\tduration: 6000,\r\n\t\t\t\t\t\t\ttitle: 'Error',\r\n\t\t\t\t\t\t\tmessage: 'The rubric was not updated successfully.'\r\n\t\t\t\t\t\t})\r\n\t\t\t\t\t})\r\n\t\t\t}).catch(() => {\r\n\t\t\t\tthis.$message({\r\n\t\t\t\t\ttype: 'info',\r\n\t\t\t\t\tmessage: 'Delete canceled'\r\n\t\t\t\t})\r\n\t\t\t})\r\n\t\t},\r\n\t\tactivateRubric(rubric) {\r\n\t\t\tthis.$confirm('Active rubric will be showing in rubric list for creating and editing projects. Do you want to continue?', 'Warning', {\r\n\t\t\t\tconfirmButtonText: 'OK',\r\n\t\t\t\tcancelButtonText: 'Cancel',\r\n\t\t\t\ttype: 'warning'\r\n\t\t\t}).then(() => {\r\n\t\t\t\trubric.IsActive = true\r\n\t\t\t\trubricService.updateRubric(rubric)\r\n\t\t\t\t\t.then(updatedRubric => {\r\n\t\t\t\t\t\trubric.LastActivityDate = Date.now()\r\n\t\t\t\t\t\tNotification.success({\r\n\t\t\t\t\t\t\tduration: 6000,\r\n\t\t\t\t\t\t\ttitle: 'Success',\r\n\t\t\t\t\t\t\tmessage: 'The rubric was activated'\r\n\t\t\t\t\t\t})\r\n\t\t\t\t\t}).catch(error => {\r\n\t\t\t\t\t\tconsole.log(error)\r\n\t\t\t\t\t\tNotification.error({\r\n\t\t\t\t\t\t\tduration: 6000,\r\n\t\t\t\t\t\t\ttitle: 'Error',\r\n\t\t\t\t\t\t\tmessage: 'The rubric was not updated successfully.'\r\n\t\t\t\t\t\t})\r\n\t\t\t\t\t})\r\n\t\t\t}).catch(() => {\r\n\t\t\t\tthis.$message({\r\n\t\t\t\t\ttype: 'info',\r\n\t\t\t\t\tmessage: 'Delete canceled'\r\n\t\t\t\t})\r\n\t\t\t})\r\n\t\t},\r\n\t\ttableRowClassName({ row, rowIndex }) {\r\n\t\t\tif (!row.IsActive) {\r\n\t\t\t\treturn 'inactive-row'\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}\r\n</script>\r\n\r\n<style scoped>\r\n.el-table__empty-text{\r\n\tdisplay: none;\r\n}\r\n.student-submission-wrapper{\r\n padding: 20px;\r\n box-shadow: 20px 10px 25px 20px rgba(109, 107, 107, 0.1);\r\n}\r\n</style>\r\n<style>\r\n.center-align{\r\n text-align: center !important;\r\n}\r\n\r\n.el-table .inactive-row {\r\n background: #f7f7f7;\r\n}\r\n\r\n</style>\r\n\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RubricList.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RubricList.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./RubricList.vue?vue&type=template&id=39875b98&scoped=true&\"\nimport script from \"./RubricList.vue?vue&type=script&lang=js&\"\nexport * from \"./RubricList.vue?vue&type=script&lang=js&\"\nimport style0 from \"./RubricList.vue?vue&type=style&index=0&id=39875b98&scoped=true&lang=css&\"\nimport style1 from \"./RubricList.vue?vue&type=style&index=1&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"39875b98\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('div',{staticClass:\"breadcumb\"},[_c('div',{staticClass:\"ic-app-crumbs\"},[_c('span',{staticClass:\"breadcumb-text\"},[_c('router-link',{staticStyle:{\"color\":\"#4E5E63\",\"text-decoration\":\"none\"},attrs:{\"to\":{ path: '/admin/rubrics' }}},[_vm._v(\"\\n Rubrics\\n \")]),_c('i',{staticClass:\"fas fa-chevron-right breadcumb-next\"}),(_vm.$route.params.id != 'new' && _vm.rubric)?_c('span',{staticStyle:{\"margin-top\":\"10px\"}},[_vm._v(\"\\n \"+_vm._s(_vm.rubric.RubricName)+\" \"),_c('i',{staticClass:\"fas fa-chevron-right breadcumb-next\"}),_vm._v(\" Edit\\n \")]):_c('span',[_vm._v(\"\\n Add New Rubic\\n \")])],1),(_vm.$route.params.id != 'new')?_c('el-button',{staticStyle:{\"position\":\"absolute\",\"right\":\"0\",\"top\":\"14px\",\"margin-right\":\"150px\"},attrs:{\"type\":\"default\"},on:{\"click\":function($event){return _vm.previewRubric()}}},[_vm._v(\"\\n Preview\\n \")]):_vm._e(),(_vm.$route.params.id == 'new')?_c('el-button',{staticStyle:{\"position\":\"absolute\",\"right\":\"0\",\"top\":\"14px\",\"margin-right\":\"10px\"},attrs:{\"type\":\"primary\"},on:{\"click\":function($event){return _vm.submitRubric()}}},[_vm._v(\"\\n Submit Rubric\\n \")]):_c('el-button',{staticStyle:{\"position\":\"absolute\",\"right\":\"0\",\"top\":\"14px\",\"margin-right\":\"10px\"},attrs:{\"type\":\"primary\"},on:{\"click\":function($event){return _vm.editRubric()}}},[_vm._v(\"\\n Save Rubric\\n \")])],1)]),_c('div',[_c('div',{staticClass:\"assignment-list\",staticStyle:{\"padding\":\"5px\"}},[_c('div',[(_vm.rubric)?_c('el-form',{ref:\"rubricForm\",staticStyle:{\"margin-top\":\"20px\"},attrs:{\"model\":_vm.rubric,\"rules\":_vm.rubricRules}},[_c('el-form-item',{attrs:{\"label\":\"Rubric Name\",\"prop\":\"RubricName\",\"required\":\"\",\"label-width\":_vm.formLabelWidth}},[_c('el-input',{attrs:{\"autocomplete\":\"off\"},model:{value:(_vm.rubric.RubricName),callback:function ($$v) {_vm.$set(_vm.rubric, \"RubricName\", $$v)},expression:\"rubric.RubricName\"}})],1),_c('el-form-item',{attrs:{\"label\":\"Rubric Description\",\"prop\":\"Description\",\"label-width\":_vm.formLabelWidth}},[_c('el-input',{attrs:{\"type\":\"textarea\",\"rows\":4,\"autocomplete\":\"off\"},model:{value:(_vm.rubric.Description),callback:function ($$v) {_vm.$set(_vm.rubric, \"Description\", $$v)},expression:\"rubric.Description\"}})],1)],1):_vm._e()],1)])]),(_vm.$route.params.id != 'new' && _vm.rubric)?_c('div',[_c('div',{staticClass:\"assignment-list\",staticStyle:{\"margin-top\":\"10px\"}},[_c('div',{staticStyle:{\"margin-bottom\":\"20px\"}},[_c('div',{staticStyle:{\"margin-bottom\":\"30px\"}},[_c('span',{staticClass:\"dialog-title\",staticStyle:{\"font-size\":\"20px\",\"margin-top\":\"10px\"}},[_vm._v(\"\\n Categories in \"+_vm._s(_vm.rubric.RubricName)+\"\\n \")]),_c('el-button',{staticStyle:{\"float\":\"right\"},attrs:{\"type\":\"mini\"},on:{\"click\":function($event){return _vm.openCriteriaDialog()}}},[_c('span',[_vm._v(\"\\n Add New Category\\n \")])])],1)]),(_vm.criterias)?_c('div',{staticClass:\"collectionViewItems ig-list draggable ui-sortable\"},[_c('draggable',{staticClass:\"list-group\",attrs:{\"list\":_vm.criterias,\"group\":\"people\"}},_vm._l((_vm.criterias),function(criteria,key){return _c('div',{key:criteria.Id,staticClass:\"list-group-item box-card\",staticStyle:{\"width\":\"300px\"}},[_c('el-card',{staticStyle:{\"margin-bottom\":\"10px\"}},[_c('div',{staticClass:\"clearfix\",staticStyle:{\"width\":\"270px\"},attrs:{\"slot\":\"header\"},slot:\"header\"},[_c('div',[_c('span',{staticClass:\"instructor-assignment-name\",attrs:{\"title\":criteria.CriteriaName},on:{\"click\":function($event){return _vm.openAssignmentDetailDialog(criteria.Id, key)}}},[_vm._v(\"\\n \"+_vm._s(criteria.CriteriaName)+\"\\n \")]),_c('el-button',{staticStyle:{\"float\":\"right\",\"-webkit-box-shadow\":\"none\",\"box-shadow\":\"none\",\"display\":\"inline-block\",\"padding\":\"0px 2px\",\"vertical-align\":\"middle\",\"-ms-touch-action\":\"manipulation\",\"touch-action\":\"manipulation\",\"cursor\":\"pointer\",\"border\":\"0 none\",\"background\":\"none\"},attrs:{\"title\":'Remove ' + criteria.CriteriaName},on:{\"click\":function($event){return _vm.removeCriteria(criteria.Id, key)}}},[_c('i',{staticClass:\"far fa-trash-alt\"})]),_c('el-button',{staticStyle:{\"float\":\"right\",\"-webkit-box-shadow\":\"none\",\"box-shadow\":\"none\",\"display\":\"inline-block\",\"padding\":\"0px 2px\",\"vertical-align\":\"middle\",\"-ms-touch-action\":\"manipulation\",\"touch-action\":\"manipulation\",\"cursor\":\"pointer\",\"border\":\"0 none\",\"background\":\"none\"},attrs:{\"title\":'Edit ' + criteria.CriteriaName},on:{\"click\":function($event){return _vm.openCriteriaDialog(criteria.Id, key)}}},[_c('i',{staticClass:\"far fa-edit\"})])],1)]),_c('div',{staticStyle:{\"height\":\"70px\",\"width\":\"260px\"},on:{\"click\":function($event){return _vm.openAssignmentDetailDialog(_vm.assignment.Id, key)}}},[_c('div',{staticClass:\"assignment-details\"},[_c('strong',[_vm._v(\"Comment Box:\")]),_c('span',[_vm._v(\"\\n \"+_vm._s(criteria.UseAsTextComment ? \"Yes\" : \"No\")+\"\\n \")])]),_c('div',{staticClass:\"assignment-details\"},[_c('strong',[_vm._v(\"Scoring:\")]),_c('span',[_vm._v(\"\\n \"+_vm._s(criteria.UseAsGrade ? \"Yes\" : \"No\")+\"\\n \")])]),_c('div',{staticClass:\"assignment-details\"},[_c('strong',[_vm._v(\"Number of Scores:\")]),_c('span',[_vm._v(\"\\n \"+_vm._s(criteria.RubricCriteriaMilestones.length)+\"\\n \")])])])])],1)}),0)],1):_vm._e()])]):_vm._e(),_c('el-dialog',{attrs:{\"id\":\"assignment-dialog\",\"visible\":_vm.assignmentDialogVisible,\"width\":\"750px\",\"top\":\"50px\",\"center\":\"\"},on:{\"update:visible\":function($event){_vm.assignmentDialogVisible=$event}}},[_c('template',{slot:\"title\"},[(_vm.selectedCriteria)?_c('span',{staticClass:\"dialog-title\"},[_vm._v(\"\\n Edit \"+_vm._s(_vm.selectedCriteria.CriteriaName)+\"\\n \")]):_c('span',{staticClass:\"dialog-title\"},[_vm._v(\"\\n Add New Category\\n \")])]),_c('hr'),(_vm.selectedCriteria)?_c('el-form',{ref:\"criteriaForm\",staticStyle:{\"margin-top\":\"20px\"},attrs:{\"model\":_vm.selectedCriteria,\"rules\":_vm.rules}},[_c('el-form-item',{attrs:{\"label\":\"Category Name\",\"prop\":\"CriteriaName\",\"required\":\"\",\"label-width\":_vm.formLabelWidth}},[_c('el-input',{attrs:{\"autocomplete\":\"off\"},model:{value:(_vm.selectedCriteria.CriteriaName),callback:function ($$v) {_vm.$set(_vm.selectedCriteria, \"CriteriaName\", $$v)},expression:\"selectedCriteria.CriteriaName\"}})],1),_c('el-form-item',{attrs:{\"label\":\"Question/Description\",\"prop\":\"Description\",\"label-width\":_vm.formLabelWidth}},[_c('el-input',{attrs:{\"type\":\"textarea\",\"rows\":3,\"autocomplete\":\"off\"},model:{value:(_vm.selectedCriteria.Description),callback:function ($$v) {_vm.$set(_vm.selectedCriteria, \"Description\", $$v)},expression:\"selectedCriteria.Description\"}})],1),_c('el-form-item',{attrs:{\"label\":\"Score & Comment\",\"label-width\":_vm.formLabelWidth}},[_c('el-checkbox',{staticStyle:{\"margin-top\":\"10px\"},attrs:{\"label\":\"Scoring\",\"name\":\"UseAsGrade\"},model:{value:(_vm.selectedCriteria.UseAsGrade),callback:function ($$v) {_vm.$set(_vm.selectedCriteria, \"UseAsGrade\", $$v)},expression:\"selectedCriteria.UseAsGrade\"}}),_c('el-checkbox',{staticStyle:{\"margin-top\":\"10px\"},attrs:{\"label\":\"Comment Box\",\"name\":\"UseAsTextComment\"},model:{value:(_vm.selectedCriteria.UseAsTextComment),callback:function ($$v) {_vm.$set(_vm.selectedCriteria, \"UseAsTextComment\", $$v)},expression:\"selectedCriteria.UseAsTextComment\"}})],1),(_vm.selectedCriteria.UseAsGrade)?_c('el-form-item',{attrs:{\"label\":\"Category Scores\",\"label-width\":_vm.formLabelWidth}},[_c('el-button',{staticStyle:{\"width\":\"180px\"},attrs:{\"type\":\"default\"},on:{\"click\":function($event){return _vm.addNewMileStone()}}},[_vm._v(\"\\n Add New Score\\n \")]),_c('el-table',{staticStyle:{\"text-align\":\"center\",\"width\":\"100%\"},attrs:{\"data\":_vm.selectedCriteria.RubricCriteriaMilestones}},[_c('el-table-column',{attrs:{\"fixed\":\"\",\"label\":\"Order\",\"width\":\"65\"},scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [_vm._v(\"\\n \"+_vm._s(_vm.ordinal_suffix_of(scope.$index + 1 ))+\"\\n \")]}}],null,false,3137899509)}),_c('el-table-column',{attrs:{\"fixed\":\"\",\"label\":\"Score Value\",\"width\":\"150\"},scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [_c('el-input',{attrs:{\"size\":\"small\",\"autocomplete\":\"off\"},model:{value:(scope.row.Value),callback:function ($$v) {_vm.$set(scope.row, \"Value\", $$v)},expression:\"scope.row.Value\"}})]}}],null,false,1053511085)}),_c('el-table-column',{attrs:{\"fixed\":\"\",\"label\":\"Description (hover)\"},scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [_c('el-input',{attrs:{\"autocomplete\":\"off\"},model:{value:(scope.row.Description),callback:function ($$v) {_vm.$set(scope.row, \"Description\", $$v)},expression:\"scope.row.Description\"}})]}}],null,false,391381804)}),_c('el-table-column',{attrs:{\"fixed\":\"\",\"width\":\"30\"},scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [_c('el-button',{staticStyle:{\"float\":\"right\",\"-webkit-box-shadow\":\"none\",\"box-shadow\":\"none\",\"display\":\"inline-block\",\"padding\":\"0px 2px\",\"vertical-align\":\"middle\",\"-ms-touch-action\":\"manipulation\",\"touch-action\":\"manipulation\",\"cursor\":\"pointer\",\"border\":\"0 none\",\"background\":\"none\"},attrs:{\"title\":\"Remove Milestone\"},on:{\"click\":function($event){return _vm.removeMilestone(scope.$index, scope.row.Id)}}},[_c('i',{staticClass:\"far fa-trash-alt\"})])]}}],null,false,1615789341)})],1)],1):_vm._e()],1):_c('el-form',{ref:\"criteriaForm\",staticStyle:{\"margin-top\":\"20px\"},attrs:{\"model\":_vm.newCriteriaForm,\"rules\":_vm.rules}},[_c('el-form-item',{attrs:{\"label\":\"Category Name\",\"prop\":\"CriteriaName\",\"required\":\"\",\"label-width\":_vm.formLabelWidth}},[_c('el-input',{attrs:{\"autocomplete\":\"off\"},model:{value:(_vm.newCriteriaForm.CriteriaName),callback:function ($$v) {_vm.$set(_vm.newCriteriaForm, \"CriteriaName\", $$v)},expression:\"newCriteriaForm.CriteriaName\"}})],1),_c('el-form-item',{attrs:{\"label\":\"Question/Description\",\"prop\":\"Description\",\"label-width\":_vm.formLabelWidth}},[_c('el-input',{attrs:{\"type\":\"textarea\",\"rows\":3,\"autocomplete\":\"off\"},model:{value:(_vm.newCriteriaForm.Description),callback:function ($$v) {_vm.$set(_vm.newCriteriaForm, \"Description\", $$v)},expression:\"newCriteriaForm.Description\"}})],1),_c('el-form-item',{attrs:{\"label\":\"Score & Comment\",\"label-width\":_vm.formLabelWidth}},[_c('el-checkbox',{staticStyle:{\"margin-top\":\"10px\"},attrs:{\"label\":\"Scoring\",\"name\":\"UseAsGrade\"},model:{value:(_vm.newCriteriaForm.UseAsGrade),callback:function ($$v) {_vm.$set(_vm.newCriteriaForm, \"UseAsGrade\", $$v)},expression:\"newCriteriaForm.UseAsGrade\"}}),_c('el-checkbox',{staticStyle:{\"margin-top\":\"10px\"},attrs:{\"label\":\"Comment Box\",\"name\":\"UseAsTextComment\"},model:{value:(_vm.newCriteriaForm.UseAsTextComment),callback:function ($$v) {_vm.$set(_vm.newCriteriaForm, \"UseAsTextComment\", $$v)},expression:\"newCriteriaForm.UseAsTextComment\"}})],1),(_vm.newCriteriaForm.UseAsGrade)?_c('el-form-item',{attrs:{\"label\":\"Category Scores\",\"label-width\":_vm.formLabelWidth}},[_c('el-button',{staticStyle:{\"width\":\"180px\"},attrs:{\"type\":\"default\"},on:{\"click\":function($event){return _vm.addNewMileStone()}}},[_vm._v(\"\\n Add New Score\\n \")]),_c('el-table',{staticStyle:{\"text-align\":\"center\",\"width\":\"100%\"},attrs:{\"data\":_vm.newCriteriaForm.RubricCriteriaMilestones}},[_c('el-table-column',{attrs:{\"fixed\":\"\",\"label\":\"Order\",\"width\":\"65\"},scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [_vm._v(\"\\n \"+_vm._s(_vm.ordinal_suffix_of(scope.$index + 1 ))+\"\\n \")]}}],null,false,3137899509)}),_c('el-table-column',{attrs:{\"fixed\":\"\",\"label\":\"Score Value\",\"width\":\"150\"},scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [_c('el-input',{attrs:{\"size\":\"small\",\"autocomplete\":\"off\"},model:{value:(scope.row.Value),callback:function ($$v) {_vm.$set(scope.row, \"Value\", $$v)},expression:\"scope.row.Value\"}})]}}],null,false,1053511085)}),_c('el-table-column',{attrs:{\"fixed\":\"\",\"label\":\"Description (hover)\"},scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [_c('el-input',{attrs:{\"autocomplete\":\"off\"},model:{value:(scope.row.Description),callback:function ($$v) {_vm.$set(scope.row, \"Description\", $$v)},expression:\"scope.row.Description\"}})]}}],null,false,391381804)}),_c('el-table-column',{attrs:{\"fixed\":\"\",\"width\":\"30\"},scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [_c('el-button',{staticStyle:{\"float\":\"right\",\"-webkit-box-shadow\":\"none\",\"box-shadow\":\"none\",\"display\":\"inline-block\",\"padding\":\"0px 2px\",\"vertical-align\":\"middle\",\"-ms-touch-action\":\"manipulation\",\"touch-action\":\"manipulation\",\"cursor\":\"pointer\",\"border\":\"0 none\",\"background\":\"none\"},attrs:{\"title\":\"Remove Milestone\"},on:{\"click\":function($event){return _vm.removeMilestone(scope.$index, scope.row.Id)}}},[_c('i',{staticClass:\"far fa-trash-alt\"})])]}}],null,false,1615789341)})],1)],1):_vm._e()],1),_c('span',{staticClass:\"dialog-footer\",attrs:{\"slot\":\"footer\"},slot:\"footer\"},[_c('el-button',{on:{\"click\":function($event){_vm.assignmentDialogVisible = false}}},[_vm._v(\"\\n Cancel\\n \")]),_c('el-button',{attrs:{\"type\":\"primary\"},on:{\"click\":function($event){return _vm.submitCriteria()}}},[_vm._v(\"\\n Submit\\n \")])],1)],2),_c('el-dialog',{attrs:{\"id\":\"preview-dialog\",\"visible\":_vm.previewDialogVisible,\"width\":\"750px\",\"top\":\"50px\",\"center\":\"\"},on:{\"update:visible\":function($event){_vm.previewDialogVisible=$event}}},[_c('template',{slot:\"title\"},[(_vm.rubric)?_c('span',{staticClass:\"dialog-title\"},[_vm._v(\"\\n Preview \"+_vm._s(_vm.rubric.RubricName)+\"\\n \")]):_vm._e()]),_c('div',{attrs:{\"id\":\"rubric\"}},[_c('div',{staticStyle:{\"height\":\"100%\",\"overflow\":\"auto\"}},_vm._l((_vm.criterias),function(criteria,criteriaIndex){return _c('el-card',{key:criteria.Id,staticStyle:{\"margin-bottom\":\"5px\",\"margin-left\":\"3px\"}},[_c('div',{staticClass:\"clearfix\",attrs:{\"slot\":\"header\"},slot:\"header\"},[_c('span',{staticStyle:{\"font-size\":\"16px\",\"font-weight\":\"bold\"}},[_vm._v(\"\\n \"+_vm._s(criteria.CriteriaName)+\"\\n \")]),_c('div',{staticStyle:{\"font-size\":\"14px\",\"margin-top\":\"10px\"}},[(criteria.Description && criteria.Description != '')?_c('el-input',{staticClass:\"criteria-description\",staticStyle:{\"border\":\"none\"},attrs:{\"value\":criteria.Description,\"readonly\":true,\"type\":\"textarea\",\"autosize\":true,\"maxlength\":8000}}):_vm._e()],1)]),_c('div',[_c('div',[(criteria.UseAsGrade)?_c('el-radio-group',{staticStyle:{\"margin-bottom\":\"10px\",\"min-width\":\"240px\"},attrs:{\"id\":criteria.Id}},_vm._l((criteria.RubricCriteriaMilestones.slice()),function(milestone){return _c('el-tooltip',{key:milestone.Id,staticClass:\"item\",attrs:{\"effect\":\"light\",\"placement\":\"top\"}},[_c('div',{staticStyle:{\"max-width\":\"500px\"},attrs:{\"slot\":\"content\"},slot:\"content\"},[_vm._v(\"\\n \"+_vm._s(milestone.Description)+\"\\n \")]),_c('el-radio-button',{key:milestone.Id,attrs:{\"label\":milestone.Value}})],1)}),1):_vm._e()],1),_c('div',[(criteria.UseAsGrade || criteria.UseAsTextComment)?_c('el-input',{staticClass:\"criteria-comment\",attrs:{\"criteria-index\":criteriaIndex,\"disabled\":true,\"type\":\"textarea\",\"placeholder\":\"Score Explanation\",\"rows\":3,\"maxlength\":8000}}):_vm._e()],1)])])}),1)]),_c('span',{staticClass:\"dialog-footer\",attrs:{\"slot\":\"footer\"},slot:\"footer\"},[_c('el-button',{on:{\"click\":function($event){_vm.previewDialogVisible = false}}},[_vm._v(\"\\n close\\n \")])],1)],2)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n <div>\r\n <div class=\"breadcumb\">\r\n <div class=\"ic-app-crumbs\">\r\n <span class=\"breadcumb-text\">\r\n <router-link :to=\"{ path: '/admin/rubrics' }\" style=\"color: #4E5E63; text-decoration: none;\">\r\n Rubrics\r\n </router-link>\r\n <i class=\"fas fa-chevron-right breadcumb-next\" />\r\n <span v-if=\"$route.params.id != 'new' && rubric\" style=\"margin-top: 10px;\">\r\n {{ rubric.RubricName }} <i class=\"fas fa-chevron-right breadcumb-next\" /> Edit\r\n </span>\r\n <span v-else>\r\n Add New Rubic\r\n </span>\r\n </span>\r\n <el-button\r\n v-if=\"$route.params.id != 'new'\"\r\n type=\"default\"\r\n style=\"position: absolute; right: 0; top: 14px; margin-right: 150px;\"\r\n @click=\"previewRubric()\"\r\n >\r\n Preview\r\n </el-button>\r\n <el-button\r\n v-if=\"$route.params.id == 'new'\"\r\n type=\"primary\"\r\n style=\"position: absolute; right: 0; top: 14px; margin-right: 10px;\"\r\n @click=\"submitRubric()\"\r\n >\r\n Submit Rubric\r\n </el-button>\r\n <el-button\r\n v-else\r\n type=\"primary\"\r\n style=\"position: absolute; right: 0; top: 14px; margin-right: 10px;\"\r\n @click=\"editRubric()\"\r\n >\r\n Save Rubric\r\n </el-button>\r\n </div>\r\n </div>\r\n\r\n <div>\r\n <div class=\"assignment-list\" style=\"padding: 5px;\">\r\n <div>\r\n <el-form v-if=\"rubric\" ref=\"rubricForm\" :model=\"rubric\" :rules=\"rubricRules\" style=\"margin-top: 20px;\">\r\n <el-form-item label=\"Rubric Name\" prop=\"RubricName\" required :label-width=\"formLabelWidth\">\r\n <el-input v-model=\"rubric.RubricName\" autocomplete=\"off\" />\r\n </el-form-item>\r\n <el-form-item label=\"Rubric Description\" prop=\"Description\" :label-width=\"formLabelWidth\">\r\n <el-input v-model=\"rubric.Description\" type=\"textarea\" :rows=\"4\" autocomplete=\"off\" />\r\n </el-form-item>\r\n </el-form>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div v-if=\"$route.params.id != 'new' && rubric\">\r\n <div class=\"assignment-list\" style=\"margin-top: 10px;\">\r\n <div style=\"margin-bottom: 20px;\">\r\n <div style=\"margin-bottom: 30px;\">\r\n <span class=\"dialog-title\" style=\"font-size: 20px; margin-top: 10px;\">\r\n Categories in {{ rubric.RubricName }}\r\n </span>\r\n\r\n <el-button style=\"float: right;\" type=\"mini\" @click=\"openCriteriaDialog()\">\r\n <span>\r\n Add New Category\r\n </span>\r\n </el-button>\r\n </div>\r\n </div>\r\n\r\n <div v-if=\"criterias\" class=\"collectionViewItems ig-list draggable ui-sortable\">\r\n <draggable class=\"list-group\" :list=\"criterias\" group=\"people\">\r\n <div\r\n v-for=\"(criteria, key) in criterias\"\r\n :key=\"criteria.Id\"\r\n class=\"list-group-item box-card\"\r\n style=\"width: 300px;\"\r\n >\r\n <el-card style=\"margin-bottom: 10px;\">\r\n <div slot=\"header\" class=\"clearfix\" style=\"width: 270px;\">\r\n <div>\r\n <span\r\n class=\"instructor-assignment-name\"\r\n :title=\"criteria.CriteriaName\"\r\n @click=\"openAssignmentDetailDialog(criteria.Id, key)\"\r\n >\r\n {{ criteria.CriteriaName }}\r\n </span>\r\n <el-button\r\n style=\" float: right; -webkit-box-shadow: none; box-shadow: none;\r\n display: inline-block; padding: 0px 2px; vertical-align: middle;\r\n -ms-touch-action: manipulation; touch-action: manipulation;\r\n cursor: pointer; border: 0 none; background: none;\"\r\n :title=\"'Remove ' + criteria.CriteriaName\"\r\n @click=\"removeCriteria(criteria.Id, key)\"\r\n >\r\n <i class=\"far fa-trash-alt\" />\r\n </el-button>\r\n <el-button\r\n style=\"float: right; -webkit-box-shadow: none; box-shadow: none;\r\n display: inline-block; padding: 0px 2px; vertical-align: middle;\r\n -ms-touch-action: manipulation; touch-action: manipulation;\r\n cursor: pointer; border: 0 none; background: none;\"\r\n :title=\"'Edit ' + criteria.CriteriaName\"\r\n @click=\"openCriteriaDialog(criteria.Id, key)\"\r\n >\r\n <i class=\"far fa-edit\" />\r\n </el-button>\r\n </div>\r\n </div>\r\n\r\n <div style=\"height: 70px; width: 260px;\" @click=\"openAssignmentDetailDialog(assignment.Id, key)\">\r\n <div class=\"assignment-details\">\r\n <strong>Comment Box:</strong>\r\n <span>\r\n {{ criteria.UseAsTextComment ? \"Yes\" : \"No\" }}\r\n </span>\r\n </div>\r\n <div class=\"assignment-details\">\r\n <strong>Scoring:</strong>\r\n <span>\r\n {{ criteria.UseAsGrade ? \"Yes\" : \"No\" }}\r\n </span>\r\n </div>\r\n <!-- <div class=\"assignment-details\">\r\n\t\t\t\t\t\t\t\t\t\t<strong>Full Mark:</strong>\r\n\t\t\t\t\t\t\t\t\t\t<span>\r\n\t\t\t\t\t\t\t\t\t\t\t{{ criteria.FullMark }}\r\n\t\t\t\t\t\t\t\t\t\t</span>\r\n\t\t\t\t\t\t\t\t\t</div> -->\r\n <div class=\"assignment-details\">\r\n <strong>Number of Scores:</strong>\r\n <span>\r\n {{ criteria.RubricCriteriaMilestones.length }}\r\n </span>\r\n </div>\r\n </div>\r\n </el-card>\r\n </div>\r\n </draggable>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <el-dialog\r\n id=\"assignment-dialog\"\r\n :visible.sync=\"assignmentDialogVisible\"\r\n width=\"750px\"\r\n top=\"50px\"\r\n center\r\n >\r\n <template slot=\"title\">\r\n <span v-if=\"selectedCriteria\" class=\"dialog-title\">\r\n Edit {{ selectedCriteria.CriteriaName }}\r\n </span>\r\n <span v-else class=\"dialog-title\">\r\n Add New Category\r\n </span>\r\n </template>\r\n <hr>\r\n <el-form v-if=\"selectedCriteria\" ref=\"criteriaForm\" :model=\"selectedCriteria\" :rules=\"rules\" style=\"margin-top: 20px;\">\r\n <el-form-item label=\"Category Name\" prop=\"CriteriaName\" required :label-width=\"formLabelWidth\">\r\n <el-input v-model=\"selectedCriteria.CriteriaName\" autocomplete=\"off\" />\r\n </el-form-item>\r\n <el-form-item label=\"Question/Description\" prop=\"Description\" :label-width=\"formLabelWidth\">\r\n <el-input v-model=\"selectedCriteria.Description\" type=\"textarea\" :rows=\"3\" autocomplete=\"off\" />\r\n </el-form-item>\r\n <el-form-item label=\"Score & Comment\" :label-width=\"formLabelWidth\">\r\n <el-checkbox v-model=\"selectedCriteria.UseAsGrade\" label=\"Scoring\" name=\"UseAsGrade\" style=\"margin-top: 10px;\" />\r\n <el-checkbox v-model=\"selectedCriteria.UseAsTextComment\" label=\"Comment Box\" name=\"UseAsTextComment\" style=\"margin-top: 10px;\" />\r\n </el-form-item>\r\n <!-- <el-form-item v-if=\"selectedCriteria.UseAsGrade\" label=\"Number of Milestones\" prop=\"FullMark\" :label-width=\"formLabelWidth\">\r\n\t\t\t\t\t<el-input-number v-model=\"selectedCriteria.FullMark\" :min=\"1\" :max=\"100\" />\r\n\t\t\t\t</el-form-item> -->\r\n <el-form-item v-if=\"selectedCriteria.UseAsGrade\" label=\"Category Scores\" :label-width=\"formLabelWidth\">\r\n <el-button type=\"default\" style=\"width: 180px;\" @click=\"addNewMileStone()\">\r\n Add New Score\r\n </el-button>\r\n <el-table\r\n :data=\"selectedCriteria.RubricCriteriaMilestones\"\r\n style=\"text-align:center; width: 100%\"\r\n >\r\n <el-table-column fixed label=\"Order\" width=\"65\">\r\n <template slot-scope=\"scope\">\r\n {{ ordinal_suffix_of(scope.$index + 1 ) }}\r\n </template>\r\n </el-table-column>\r\n <el-table-column fixed label=\"Score Value\" width=\"150\">\r\n <template slot-scope=\"scope\">\r\n <el-input v-model=\"scope.row.Value\" size=\"small\" autocomplete=\"off\" />\r\n </template>\r\n </el-table-column>\r\n <el-table-column fixed label=\"Description (hover)\">\r\n <template slot-scope=\"scope\">\r\n <el-input v-model=\"scope.row.Description\" autocomplete=\"off\" />\r\n </template>\r\n </el-table-column>\r\n <el-table-column fixed width=\"30\">\r\n <template slot-scope=\"scope\">\r\n <el-button\r\n style=\" float: right; -webkit-box-shadow: none; box-shadow: none;\r\n display: inline-block; padding: 0px 2px; vertical-align: middle;\r\n -ms-touch-action: manipulation; touch-action: manipulation;\r\n cursor: pointer; border: 0 none; background: none;\"\r\n title=\"Remove Milestone\"\r\n @click=\"removeMilestone(scope.$index, scope.row.Id)\"\r\n >\r\n <i class=\"far fa-trash-alt\" />\r\n </el-button>\r\n </template>\r\n </el-table-column>\r\n </el-table>\r\n </el-form-item>\r\n </el-form>\r\n\r\n <el-form v-else ref=\"criteriaForm\" :model=\"newCriteriaForm\" :rules=\"rules\" style=\"margin-top: 20px;\">\r\n <el-form-item label=\"Category Name\" prop=\"CriteriaName\" required :label-width=\"formLabelWidth\">\r\n <el-input v-model=\"newCriteriaForm.CriteriaName\" autocomplete=\"off\" />\r\n </el-form-item>\r\n <el-form-item label=\"Question/Description\" prop=\"Description\" :label-width=\"formLabelWidth\">\r\n <el-input v-model=\"newCriteriaForm.Description\" type=\"textarea\" :rows=\"3\" autocomplete=\"off\" />\r\n </el-form-item>\r\n <el-form-item label=\"Score & Comment\" :label-width=\"formLabelWidth\">\r\n <el-checkbox v-model=\"newCriteriaForm.UseAsGrade\" label=\"Scoring\" name=\"UseAsGrade\" style=\"margin-top: 10px;\" />\r\n <el-checkbox v-model=\"newCriteriaForm.UseAsTextComment\" label=\"Comment Box\" name=\"UseAsTextComment\" style=\"margin-top: 10px;\" />\r\n </el-form-item>\r\n <!-- <el-form-item v-if=\"newCriteriaForm.UseAsGrade\" label=\"Number of Milestones\" prop=\"FullMark\" :label-width=\"formLabelWidth\">\r\n\t\t\t\t\t<el-input-number v-model=\"newCriteriaForm.FullMark\" :min=\"1\" :max=\"100\" />\r\n\t\t\t\t</el-form-item> -->\r\n <el-form-item v-if=\"newCriteriaForm.UseAsGrade\" label=\"Category Scores\" :label-width=\"formLabelWidth\">\r\n <el-button type=\"default\" style=\"width: 180px;\" @click=\"addNewMileStone()\">\r\n Add New Score\r\n </el-button>\r\n <el-table\r\n :data=\"newCriteriaForm.RubricCriteriaMilestones\"\r\n style=\"text-align:center; width: 100%\"\r\n >\r\n <el-table-column fixed label=\"Order\" width=\"65\">\r\n <template slot-scope=\"scope\">\r\n {{ ordinal_suffix_of(scope.$index + 1 ) }}\r\n </template>\r\n </el-table-column>\r\n <el-table-column fixed label=\"Score Value\" width=\"150\">\r\n <template slot-scope=\"scope\">\r\n <el-input v-model=\"scope.row.Value\" size=\"small\" autocomplete=\"off\" />\r\n </template>\r\n </el-table-column>\r\n <el-table-column fixed label=\"Description (hover)\">\r\n <template slot-scope=\"scope\">\r\n <el-input v-model=\"scope.row.Description\" autocomplete=\"off\" />\r\n </template>\r\n </el-table-column>\r\n <el-table-column fixed width=\"30\">\r\n <template slot-scope=\"scope\">\r\n <el-button\r\n style=\" float: right; -webkit-box-shadow: none; box-shadow: none;\r\n display: inline-block; padding: 0px 2px; vertical-align: middle;\r\n -ms-touch-action: manipulation; touch-action: manipulation;\r\n cursor: pointer; border: 0 none; background: none;\"\r\n title=\"Remove Milestone\"\r\n @click=\"removeMilestone(scope.$index, scope.row.Id)\"\r\n >\r\n <i class=\"far fa-trash-alt\" />\r\n </el-button>\r\n </template>\r\n </el-table-column>\r\n </el-table>\r\n </el-form-item>\r\n </el-form>\r\n\r\n <span slot=\"footer\" class=\"dialog-footer\">\r\n <el-button @click=\"assignmentDialogVisible = false\">\r\n Cancel\r\n </el-button>\r\n <el-button type=\"primary\" @click=\"submitCriteria()\">\r\n Submit\r\n </el-button>\r\n </span>\r\n </el-dialog>\r\n\r\n <el-dialog id=\"preview-dialog\" :visible.sync=\"previewDialogVisible\" width=\"750px\" top=\"50px\" center>\r\n <template slot=\"title\">\r\n <span v-if=\"rubric\" class=\"dialog-title\">\r\n Preview {{ rubric.RubricName }}\r\n </span>\r\n </template>\r\n <div id=\"rubric\">\r\n <div style=\"height: 100%; overflow: auto;\">\r\n <el-card v-for=\"(criteria, criteriaIndex) in criterias\" :key=\"criteria.Id\" style=\"margin-bottom: 5px; margin-left: 3px;\">\r\n <div slot=\"header\" class=\"clearfix\">\r\n <span style=\"font-size: 16px; font-weight: bold;\">\r\n {{ criteria.CriteriaName }}\r\n </span>\r\n <div style=\"font-size: 14px; margin-top: 10px;\">\r\n\r\n <el-input\r\n v-if=\"criteria.Description && criteria.Description != ''\"\r\n :value=\"criteria.Description\"\r\n :readonly=\"true\"\r\n type=\"textarea\"\r\n :autosize=\"true\"\r\n :maxlength=\"8000\"\r\n class=\"criteria-description\"\r\n style=\"border: none;\"\r\n />\r\n <!-- {{ criteria.Description }} -->\r\n </div>\r\n </div>\r\n <div>\r\n <div>\r\n <el-radio-group\r\n v-if=\"criteria.UseAsGrade\"\r\n :id=\"criteria.Id\"\r\n style=\"margin-bottom: 10px; min-width: 240px;\"\r\n >\r\n <el-tooltip\r\n v-for=\"(milestone) in criteria.RubricCriteriaMilestones.slice()\"\r\n :key=\"milestone.Id\"\r\n class=\"item\"\r\n effect=\"light\"\r\n placement=\"top\"\r\n >\r\n <div slot=\"content\" style=\"max-width: 500px;\">\r\n {{ milestone.Description }}\r\n </div>\r\n <el-radio-button\r\n :key=\"milestone.Id\"\r\n :label=\"milestone.Value\"\r\n />\r\n </el-tooltip>\r\n </el-radio-group>\r\n </div>\r\n <div>\r\n <el-input\r\n v-if=\"criteria.UseAsGrade || criteria.UseAsTextComment\"\r\n\r\n :criteria-index=\"criteriaIndex\"\r\n :disabled=\"true\"\r\n type=\"textarea\"\r\n placeholder=\"Score Explanation\"\r\n :rows=\"3\"\r\n :maxlength=\"8000\"\r\n class=\"criteria-comment\"\r\n />\r\n </div>\r\n </div>\r\n </el-card>\r\n </div>\r\n </div>\r\n <span slot=\"footer\" class=\"dialog-footer\">\r\n <el-button @click=\"previewDialogVisible = false\">\r\n close\r\n </el-button>\r\n </span>\r\n </el-dialog>\r\n </div>\r\n</template>\r\n\r\n<script>\r\n\r\nimport { mapState } from 'vuex'\r\nimport draggable from 'vuedraggable'\r\nimport * as rubricService from '@/services/rubric.service'\r\nimport * as dateUtils from '@/utils/date-utils'\r\nimport { Notification } from 'element-ui'\r\n// Add new or edit a rubric.\r\nexport default {\r\n\tname: 'RubricDetail',\r\n\tcomponents: {\r\n\t\tdraggable\r\n\t},\r\n\tfilters: {\r\n\t\tformatDate(dateStr) {\r\n\t\t\treturn dateUtils.formatDate(dateStr)\r\n\t\t}\r\n\t},\r\n\tdata() {\r\n\t\treturn {\r\n\t\t\ttermCode: this.$store.state.auth.currentTerm.TermCode,\r\n\t\t\torgCode: this.$store.state.auth.user.OrgCode,\r\n\t\t\trubricId: this.$route.params.id,\r\n\t\t\trubric: null,\r\n\t\t\tcourseTypes: [\r\n\t\t\t\t{\r\n\t\t\t\t\tvalue: 'ENC 1101',\r\n\t\t\t\t\tlabel: 'ENC 1101'\r\n\t\t\t\t}, {\r\n\t\t\t\t\tvalue: 'ENC 1102',\r\n\t\t\t\t\tlabel: 'ENC 1102'\r\n\t\t\t\t}, {\r\n\t\t\t\t\tvalue: 'PTC',\r\n\t\t\t\t\tlabel: 'PTC'\r\n\t\t\t\t}\r\n\t\t\t],\r\n\t\t\tcriterias: [],\r\n\t\t\tdragging: false,\r\n\t\t\tuserRole: null,\r\n\t\t\tusername: this.$store.state.auth.user.UserName,\r\n\t\t\tcurrentCourse: null,\r\n\t\t\tsearch: '',\r\n\t\t\tsubmissionStatus: [],\r\n\t\t\tuploadDialogVisible: false,\r\n\t\t\tassignmentDialogVisible: false,\r\n\t\t\tassignmentDetailDialogVisible: false,\r\n\t\t\tpreviewDialogVisible: false,\r\n\t\t\tsurveyDialogVisible: false,\r\n\t\t\tquestions: null,\r\n\t\t\tsurveyResponses: [],\r\n\t\t\tsurveyId: 1,\r\n\t\t\trepsonseType: 'first',\r\n\t\t\tsubmitSurveyActive: false,\r\n\t\t\tselectedCriteria: null,\r\n\t\t\tselectedAssignment: null,\r\n\t\t\tselectedKey: null,\r\n\t\t\tfile: null,\r\n\t\t\tfileList: [],\r\n\t\t\tnewCriteriaForm: {\r\n\t\t\t\tRubricId: this.$route.params.id,\r\n\t\t\t\tCriteriaName: '',\r\n\t\t\t\tFullMark: 0,\r\n\t\t\t\tUseAsTextComment: false,\r\n\t\t\t\tUseAsGrade: false,\r\n\t\t\t\tDescription: '',\r\n\t\t\t\tWeight: 0,\r\n\t\t\t\tUseLetterForMilestone: false,\r\n\t\t\t\tRubricCriteriaMilestones: []\r\n\t\t\t},\r\n\t\t\trubricRules: {\r\n\t\t\t\tRubricName: [\r\n\t\t\t\t\t{ required: true, message: 'Please input rubric name', trigger: 'blur' }\r\n\t\t\t\t]\r\n\t\t\t},\r\n\t\t\trules: {\r\n\t\t\t\tCriteriaName: [\r\n\t\t\t\t\t{ required: true, message: 'Please input criteria Name', trigger: 'blur' }\r\n\t\t\t\t]\r\n\t\t\t},\r\n\t\t\tformLabelWidth: '170px',\r\n\t\t\trubricList: null,\r\n\t\t\tdescriptionEditor: null,\r\n\t\t\tdescriptionDetailEditor: null\r\n \t}\r\n\t},\r\n\r\n\tcomputed: {\r\n\t\t...mapState({\r\n\t\t\tuserInState: state => state.auth.user,\r\n\t\t\troleInState: state => state.enrollment.userRole\r\n\t\t})\r\n\t},\r\n\twatch: {\r\n\t\troleInState(newValue) {\r\n\t\t\tthis.userRole = newValue\r\n\t\t},\r\n\t\tuserInState(newValue) {\r\n\t\t\tthis.username = newValue.UserName\r\n\t\t}\r\n\t},\r\n\tbeforeDestroy() {\r\n\t\tif (this.descriptionEditor != null) { this.descriptionEditor.destroy() }\r\n\t\tif (this.descriptionDetailEditor != null) { this.descriptionDetailEditor.destroy() }\r\n\t},\r\n\tcreated() {\r\n\t\tif (this.rubricId != 'new') { this.getRubric(this.rubricId) } else {\r\n\t\t\tthis.rubric = {\r\n\t\t\t\tOrgCode: this.orgCode,\r\n\t\t\t\tUserId: this.username,\r\n\t\t\t\tRole: 'Administrator',\r\n\t\t\t\tDescription: '',\r\n\t\t\t\tRubricName: '',\r\n\t\t\t\tIsActive: true\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\tmethods: {\r\n\t\t// @vuese\r\n\t\t// Add suffix for date time value.\r\n\t\t// @arg The day value.\r\n\t\tordinal_suffix_of(i) {\r\n\t\t\tconst j = i % 10\r\n\r\n\t\t\tconst k = i % 100\r\n\t\t\tif (j == 1 && k != 11) {\r\n\t\t\t\treturn i + 'st'\r\n\t\t\t}\r\n\t\t\tif (j == 2 && k != 12) {\r\n\t\t\t\treturn i + 'nd'\r\n\t\t\t}\r\n\t\t\tif (j == 3 && k != 13) {\r\n\t\t\t\treturn i + 'rd'\r\n\t\t\t}\r\n\t\t\treturn i + 'th'\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Display a preview of the rubric.\r\n\t\tpreviewRubric() {\r\n\t\t\tthis.previewDialogVisible = true\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Get rubric by id.\r\n\t\t// @arg The id of the rubric.\r\n\t\tasync getRubric(id) {\r\n\t\t\tthis.rubric = await rubricService.getRubricById(id)\r\n\t\t\tthis.criterias = this.rubric.RubricCriterias\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Add new rubric.\r\n\t\tasync submitRubric() {\r\n\t\t\tthis.$refs['rubricForm'].validate(async(valid) => {\r\n\t\t\t\tif (valid) {\r\n\t\t\t\t\tconst newRubric = await rubricService.addNewRubric(this.rubric)\r\n\t\t\t\t\tthis.rubric = newRubric\r\n\t\t\t\t\tthis.rubricId = newRubric.Id\r\n\t\t\t\t\tthis.newCriteriaForm.RubricId = newRubric.Id\r\n\t\t\t\t\tthis.rubric.RubricCriterias = this.criterias\r\n\t\t\t\t\tNotification.success({\r\n\t\t\t\t\t\tduration: 6000,\r\n\t\t\t\t\t\ttitle: 'Success',\r\n\t\t\t\t\t\tmessage: 'The rubric was created successfully.'\r\n\t\t\t\t\t})\r\n\t\t\t this.$router.push('/admin/rubric/' + newRubric.Id)\r\n\t\t\t\t}\r\n\t\t\t})\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Update a rubric.\r\n\t\tasync editRubric() {\r\n\t\t\trubricService.updateRubric(this.rubric)\r\n\t\t\t\t.then(rubric => {\r\n\t\t\t\t\tNotification.success({\r\n\t\t\t\t\t\tduration: 6000,\r\n\t\t\t\t\t\ttitle: 'Success',\r\n\t\t\t\t\t\tmessage: 'The rubric was updated successfully.'\r\n\t\t\t\t\t})\r\n\t\t\t\t}).catch(error => {\r\n\t\t\t\t\tconsole.log(error)\r\n\t\t\t\t\tNotification.error({\r\n\t\t\t\t\t\tduration: 6000,\r\n\t\t\t\t\t\ttitle: 'Error',\r\n\t\t\t\t\t\tmessage: 'The rubric was not updated successfully.'\r\n\t\t\t\t\t})\r\n\t\t\t\t})\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Add a new criteria milsetone.\r\n\t\taddNewMileStone() {\r\n\t\t\tlet thisCriteria = {}\r\n\t\t\tlet criteriaId = 0\r\n\t\t\tif (this.selectedCriteria != null) {\r\n\t\t\t\tthisCriteria = this.selectedCriteria\r\n\t\t\t\tcriteriaId = this.selectedCriteria.Id\r\n\t\t\t} else {\r\n\t\t\t\tthisCriteria = this.newCriteriaForm\r\n\t\t\t}\r\n\r\n\t\t\tthisCriteria.RubricCriteriaMilestones.push({\r\n\t\t\t\tCriteriaId: criteriaId,\r\n\t\t\t\tValue: '',\r\n\t\t\t\tDescription: ''\r\n\t\t\t})\r\n\r\n\t\t\tif (this.selectedCriteria != null) {\r\n\t\t\t\tthis.selectedCriteria = thisCriteria\r\n\t\t\t} else {\r\n\t\t\t\tthis.newCriteriaForm = thisCriteria\r\n\t\t\t}\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Delete a criteria milestone.\r\n\t\tasync removeMilestone(index, id) {\r\n\t\t\tthis.$confirm('This will permanently delete the milestone. Do you want to continue?', 'Warning', {\r\n\t\t\t\tconfirmButtonText: 'OK',\r\n\t\t\t\tcancelButtonText: 'Cancel',\r\n\t\t\t\ttype: 'warning'\r\n\t\t\t}).then(() => {\r\n\t\t\t\tif (id != undefined) {\r\n\t\t\t\t\tif (this.selectedCriteria != null) {\r\n\t\t\t\t\t\trubricService.deleteMilestone(id).then(milestone => {\r\n\t\t\t\t\t\t\tthis.selectedCriteria.RubricCriteriaMilestones.splice(index, 1)\r\n\t\t\t\t\t\t\tthis.criterias[this.selectedKey] = this.selectedCriteria\r\n\t\t\t\t\t\t\tthis.rubric.RubricCriterias = this.criterias\r\n\t\t\t\t\t\t\tNotification.success({\r\n\t\t\t\t\t\t\t\tduration: 6000,\r\n\t\t\t\t\t\t\t\ttitle: 'Success',\r\n\t\t\t\t\t\t\t\tmessage: 'The milestone was deleted successfully.'\r\n\t\t\t\t\t\t\t})\r\n\t\t\t\t\t\t}).catch(error => {\r\n\t\t\t\t\t\t\tconsole.log(error)\r\n\t\t\t\t\t\t\tNotification.error({\r\n\t\t\t\t\t\t\t\tduration: 6000,\r\n\t\t\t\t\t\t\t\ttitle: 'Error',\r\n\t\t\t\t\t\t\t\tmessage: 'The milestone was not deleted successfully.'\r\n\t\t\t\t\t\t\t})\r\n\t\t\t\t\t\t})\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tthis.newCriteriaForm.RubricCriteriaMilestones.splice(index, 1)\r\n\t\t\t\t\t\tNotification.success({\r\n\t\t\t\t\t\t\tduration: 6000,\r\n\t\t\t\t\t\t\ttitle: 'Success',\r\n\t\t\t\t\t\t\tmessage: 'The milestone was deleted successfully.'\r\n\t\t\t\t\t\t})\r\n\t\t\t\t\t}\r\n\t\t\t\t} else {\r\n\t\t\t\t\tif (this.selectedCriteria != null) {\r\n\t\t\t\t\t\tthis.selectedCriteria.RubricCriteriaMilestones.splice(index, 1)\r\n\t\t\t\t\t\tthis.criterias[this.selectedKey] = this.selectedCriteria\r\n\t\t\t\t\t\tthis.rubric.RubricCriterias = this.criterias\r\n\t\t\t\t\t\tNotification.success({\r\n\t\t\t\t\t\t\tduration: 6000,\r\n\t\t\t\t\t\t\ttitle: 'Success',\r\n\t\t\t\t\t\t\tmessage: 'The milestone was deleted successfully.'\r\n\t\t\t\t\t\t})\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tthis.newCriteriaForm.RubricCriteriaMilestones.splice(index, 1)\r\n\t\t\t\t\t\tNotification.success({\r\n\t\t\t\t\t\t\tduration: 6000,\r\n\t\t\t\t\t\t\ttitle: 'Success',\r\n\t\t\t\t\t\t\tmessage: 'The milestone was deleted successfully.'\r\n\t\t\t\t\t\t})\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}).catch(() => {\r\n\t\t\t\tthis.$message({\r\n\t\t\t\t\ttype: 'info',\r\n\t\t\t\t\tmessage: 'Delete canceled'\r\n\t\t\t\t})\r\n\t\t\t})\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Looping through each item in a collection and performing an action asynchronously.\r\n\t\t// @arg The collections and a callback function.\r\n\t\tasync asyncForEach(array, callback) {\r\n\t\t\tfor (let index = 0; index < array.length; index++) {\r\n\t\t\t\tawait callback(array[index], index, array)\r\n\t\t\t}\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Open rubric criteria dialog.\r\n\t\t// @arg The criteria id and its key in the collection.\r\n\t\topenCriteriaDialog(criteriaId, key) {\r\n\t\t\tif (this.descriptionEditor != null) {\r\n\t\t\t\tthis.descriptionEditor.destroy()\r\n\t\t\t}\r\n\t\t\tthis.assignmentDialogVisible = true\r\n\t\t\tif (criteriaId != undefined && key != undefined) {\r\n\t\t\t\tthis.selectedCriteria = this.criterias[key]\r\n\t\t\t\tthis.selectedKey = key\r\n\t\t\t} else {\r\n\t\t\t\tthis.selectedCriteria = null\r\n\t\t\t\tthis.selectedKey = null\r\n\t\t\t}\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Add new/update criteria.\r\n\t\tasync submitCriteria() {\r\n\t\t\tconst that = this\r\n\t\t\tthis.$refs['criteriaForm'].validate((valid) => {\r\n\t\t\t\tif (valid) {\r\n\t\t\t\t\tlet thisCriteria = {}\r\n\t\t\t\t\tif (that.selectedCriteria != null) {\r\n\t\t\t\t\t\tthisCriteria = that.selectedCriteria\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tthisCriteria = that.newCriteriaForm\r\n\t\t\t\t\t}\r\n\t\t\t\t\t// Validate milestone values\r\n\t\t\t\t\tif (thisCriteria.RubricCriteriaMilestones.length > 0) {\r\n\t\t\t\t\t\t// let isInteger = true;\r\n\t\t\t\t\t\tconst valueArr = thisCriteria.RubricCriteriaMilestones.map(function(item) { return item.Value })\r\n\t\t\t\t\t\tconst isDuplicatedOrEmpty = valueArr.some(function(item, idx) {\r\n\t\t\t\t\t\t\treturn valueArr.indexOf(item.trim()) != idx || item == '' || !item.replace(/\\s/g, '').length\r\n\t\t\t\t\t\t})\r\n\r\n\t\t\t\t\t\tif (isDuplicatedOrEmpty) {\r\n\t\t\t\t\t\t\tNotification.info({\r\n\t\t\t\t\t\t\t\tduration: 6000,\r\n\t\t\t\t\t\t\t\ttitle: 'Info',\r\n\t\t\t\t\t\t\t\tmessage: 'Milestone values must not be duplicated or empty.'\r\n\t\t\t\t\t\t\t})\r\n\t\t\t\t\t\t\treturn\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t// thisCriteria.RubricCriteriaMilestones.sort((a, b) => (a.Value > b.Value) ? 1 : -1);\r\n\t\t\t\t\tif (that.selectedCriteria != null) {\r\n\t\t\t\t\t\trubricService.updateRubricCriteria(thisCriteria)\r\n\t\t\t\t\t\t\t.then(criteria => {\r\n\t\t\t\t\t\t\t\tthat.criterias[that.selectedKey] = criteria\r\n\t\t\t\t\t\t\t\tthat.selectedCriteria = null\r\n\t\t\t\t\t\t\t\tNotification.success({\r\n\t\t\t\t\t\t\t\t\tduration: 6000,\r\n\t\t\t\t\t\t\t\t\ttitle: 'Success',\r\n\t\t\t\t\t\t\t\t\tmessage: 'The criteria were updated successfully.'\r\n\t\t\t\t\t\t\t\t})\r\n\t\t\t\t\t\t\t}).catch(error => {\r\n\t\t\t\t\t\t\t\tconsole.log(error)\r\n\t\t\t\t\t\t\t\tNotification.error({\r\n\t\t\t\t\t\t\t\t\tduration: 6000,\r\n\t\t\t\t\t\t\t\t\ttitle: 'Error',\r\n\t\t\t\t\t\t\t\t\tmessage: 'The criteria were not updated successfully.'\r\n\t\t\t\t\t\t\t\t})\r\n\t\t\t\t\t\t\t})\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\trubricService.addNewRubricCriteria(thisCriteria)\r\n\t\t\t\t\t\t\t.then(criteria => {\r\n\t\t\t\t\t\t\t\tthat.criterias.push(criteria)\r\n\t\t\t\t\t\t\t\tthat.newCriteriaForm = {\r\n\t\t\t\t\t\t\t\t\tRubricId: that.rubricId,\r\n\t\t\t\t\t\t\t\t\tCriteriaName: '',\r\n\t\t\t\t\t\t\t\t\tFullMark: 0,\r\n\t\t\t\t\t\t\t\t\tUseAsTextComment: false,\r\n\t\t\t\t\t\t\t\t\tUseAsGrade: false,\r\n\t\t\t\t\t\t\t\t\tDescription: '',\r\n\t\t\t\t\t\t\t\t\tWeight: 0,\r\n\t\t\t\t\t\t\t\t\tUseLetterForMilestone: false,\r\n\t\t\t\t\t\t\t\t\tRubricCriteriaMilestones: []\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\tNotification.success({\r\n\t\t\t\t\t\t\t\t\tduration: 6000,\r\n\t\t\t\t\t\t\t\t\ttitle: 'Success',\r\n\t\t\t\t\t\t\t\t\tmessage: 'The criteria were created successfully.'\r\n\t\t\t\t\t\t\t\t})\r\n\t\t\t\t\t\t\t}).catch(error => {\r\n\t\t\t\t\t\t\t\tconsole.log(error)\r\n\t\t\t\t\t\t\t\tNotification.error({\r\n\t\t\t\t\t\t\t\t\tduration: 6000,\r\n\t\t\t\t\t\t\t\t\ttitle: 'Error',\r\n\t\t\t\t\t\t\t\t\tmessage: 'The criteria were not created successfully.'\r\n\t\t\t\t\t\t\t\t})\r\n\t\t\t\t\t\t\t})\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tthat.rubric.RubricCriterias = that.criterias\r\n\t\t\t\t\tthis.assignmentDialogVisible = false\r\n\t\t\t\t}\r\n\t\t\t})\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Delete a criteria.\r\n\t\t// @arg The criteria id and its key in the collection.\r\n\t\tremoveCriteria(id, key) {\r\n\t\t\tthis.$confirm('This will permanently delete the criteria. Do you want to continue?', 'Warning', {\r\n\t\t\t\tconfirmButtonText: 'OK',\r\n\t\t\t\tcancelButtonText: 'Cancel',\r\n\t\t\t\ttype: 'warning'\r\n\t\t\t}).then(() => {\r\n\t\t\t\trubricService.deleteCriteriaWithMielstonesById(id)\r\n\t\t\t\t\t.then(criteria => {\r\n\t\t\t\t\t\tthis.criterias.splice(key, 1)\r\n\t\t\t\t\t\tthis.rubric.RubricCriterias = this.criterias\r\n\t\t\t\t\t\tNotification.success({\r\n\t\t\t\t\t\t\tduration: 6000,\r\n\t\t\t\t\t\t\ttitle: 'Success',\r\n\t\t\t\t\t\t\tmessage: 'The criteria was deleted successfully.'\r\n\t\t\t\t\t\t})\r\n\t\t\t\t\t}).catch(error => {\r\n\t\t\t\t\t\tconsole.log(error)\r\n\t\t\t\t\t\tNotification.error({\r\n\t\t\t\t\t\t\tduration: 6000,\r\n\t\t\t\t\t\t\ttitle: 'Error',\r\n\t\t\t\t\t\t\tmessage: 'The criteria was not deleted successfully.'\r\n\t\t\t\t\t\t})\r\n\t\t\t\t\t})\r\n\t\t\t}).catch(() => {\r\n\t\t\t\tthis.$message({\r\n\t\t\t\t\ttype: 'info',\r\n\t\t\t\t\tmessage: 'Delete canceled'\r\n\t\t\t\t})\r\n\t\t\t})\r\n\t\t}\r\n\t}\r\n}\r\n</script>\r\n\r\n<style scoped>\r\n.el-form-item{\r\n margin-bottom: 16px;\r\n}\r\n.el-table__empty-text{\r\n\tdisplay: none;\r\n}\r\n.assignment-list{\r\n padding: 20px;\r\n box-shadow: 20px 10px 25px 20px rgba(109, 107, 107, 0.1);\r\n}\r\n.instructor-assignment-name{\r\n font-size: 18px;\r\n font-weight: bold;\r\n color: #4E5E63;\r\n text-overflow: ellipsis;\r\n white-space: nowrap;\r\n width: 220px;\r\n display: inline-block;\r\n overflow: hidden;\r\n}\r\n.student-assignment-name{\r\n font-size: 18px;\r\n font-weight: bold;\r\n color: #4E5E63;\r\n text-overflow: ellipsis;\r\n white-space: nowrap;\r\n width: 268px;\r\n display: inline-block;\r\n overflow: hidden;\r\n}\r\n.assignment-action-btn{\r\n box-shadow: none;\r\n display: inline-block;\r\n vertical-align: middle;\r\n touch-action: manipulation;\r\n cursor: pointer;\r\n padding: 10px 14px;\r\n /* border: 0px none;\r\n background: none; */\r\n}\r\n.assignment-details{\r\n font-size: 14px;\r\n}\r\n/*\r\n.dialog-title{\r\n font-size: 22px;\r\n font-weight: bold;\r\n color: #4E5E63;\r\n} */\r\n.badge-item {\r\n margin-left: 8px;\r\n margin-right: 8px;\r\n}\r\n.editor-btn{\r\n text-align: center;\r\n box-shadow: none;\r\n display: inline-block;\r\n padding: 0px 8px;\r\n vertical-align: middle;\r\n touch-action: manipulation;\r\n cursor: pointer;\r\n border: 0px none;\r\n background: none;\r\n word-break: normal;\r\n}\r\n\r\n.assignment-edit-editor{\r\n word-break: normal;\r\n padding-right: 5px;\r\n}\r\n\r\n.assignment-detail-editor{\r\n word-break: normal;\r\n padding-right: 5px;\r\n}\r\n\r\n.el-radio-button >>> .el-radio-button__inner{\r\n padding: 12px 15px;\r\n}\r\n</style>\r\n<style>\r\n\r\n.criteria-description > textarea{\r\n\tborder: none;\r\n\tpadding: 0px;\r\n\tresize: none;\r\n\tword-break: break-word;\r\n\tline-height: 18px;\r\n}\r\n\r\n.dialog-title{\r\n font-size: 22px;\r\n font-weight: bold;\r\n color: #4E5E63;\r\n}\r\n\r\n.el-badge__content.is-fixed{\r\n right: 12px !important;\r\n}\r\n\r\n.assignment-edit-editor > .ProseMirror{\r\n height: 100px;\r\n overflow: auto;\r\n}\r\n\r\n.assignment-detail-editor > .ProseMirror{\r\n height: 250px;\r\n overflow: auto;\r\n}\r\n</style>\r\n\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RubricDetail.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RubricDetail.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./RubricDetail.vue?vue&type=template&id=3cdcc51f&scoped=true&\"\nimport script from \"./RubricDetail.vue?vue&type=script&lang=js&\"\nexport * from \"./RubricDetail.vue?vue&type=script&lang=js&\"\nimport style0 from \"./RubricDetail.vue?vue&type=style&index=0&id=3cdcc51f&scoped=true&lang=css&\"\nimport style1 from \"./RubricDetail.vue?vue&type=style&index=1&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"3cdcc51f\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_vm._m(0),_c('div',{staticClass:\"student-submission-wrapper\"},[_c('div',{staticStyle:{\"margin-bottom\":\"20px\"},attrs:{\"id\":\"filter\"}},[_c('el-tooltip',{attrs:{\"content\":\"Select Term\",\"placement\":\"top-start\"}},[(_vm.terms)?_c('el-select',{staticStyle:{\"margin-right\":\"10px\",\"margin-top\":\"10px\"},attrs:{\"id\":\"term-selection\",\"filterable\":\"\",\"placeholder\":\"Select Term\",\"no-match-text\":\"No Matching Data\",\"no-data-text\":\"No data\",\"loading-text\":\"Loading\"},on:{\"change\":function($event){return _vm.onTermChange()}},model:{value:(_vm.termCode),callback:function ($$v) {_vm.termCode=$$v},expression:\"termCode\"}},_vm._l((_vm.terms),function(item){return _c('el-option',{key:item.TermCode,attrs:{\"label\":item.TermDescription,\"value\":item.TermCode}})}),1):_vm._e()],1),_c('el-tooltip',{attrs:{\"content\":\"Select Term\",\"placement\":\"top-start\"}},[(_vm.courseTypes && _vm.isAdmin && _vm.termCode)?_c('el-select',{staticStyle:{\"margin-right\":\"10px\",\"margin-top\":\"10px\"},attrs:{\"id\":\"course-type-selection\",\"filterable\":\"\",\"placeholder\":\"Select Course Type\",\"no-match-text\":\"No Matching Data\",\"no-data-text\":\"No data\",\"loading-text\":\"Loading\"},on:{\"change\":function($event){return _vm.onCourseTypeChange()}},model:{value:(_vm.courseType),callback:function ($$v) {_vm.courseType=$$v},expression:\"courseType\"}},_vm._l((_vm.courseTypes),function(item){return _c('el-option',{key:item.Id,attrs:{\"label\":item.Name,\"value\":item.Id}})}),1):_vm._e()],1),(_vm.termCode && _vm.isAdmin && _vm.instructors && _vm.termCode)?_c('el-tooltip',{attrs:{\"content\":\"Select Instructor\",\"placement\":\"right-start\"}},[_c('el-select',{staticStyle:{\"margin-right\":\"10px\",\"margin-top\":\"10px\"},attrs:{\"id\":\"instructor-selection\",\"filterable\":\"\",\"placeholder\":\"Select Instructor\",\"no-match-text\":\"No Matching Data\",\"no-data-text\":\"No data\",\"loading-text\":\"Loading\"},on:{\"change\":function($event){return _vm.onInstructorChange()}},model:{value:(_vm.currentInstructor),callback:function ($$v) {_vm.currentInstructor=$$v},expression:\"currentInstructor\"}},[_c('el-option',{key:\"all\",attrs:{\"label\":\"All Instructors\",\"value\":\"all\"}}),_vm._l((_vm.instructors),function(item){return _c('el-option',{key:item.UserName,attrs:{\"label\":item.LastName + ', ' + item.FirstName,\"value\":item.UserName}})})],2)],1):_vm._e(),_c('el-tooltip',{attrs:{\"content\":\"Select Course\",\"placement\":\"top\"}},[(_vm.currentInstructor != 'all' && _vm.courses)?_c('el-select',{staticStyle:{\"width\":\"180px\",\"margin-right\":\"10px\",\"margin-top\":\"10px\"},attrs:{\"id\":\"course-selection\",\"value-key\":\"ClassCode\",\"filterable\":\"\",\"placeholder\":\"Select Course\",\"no-match-text\":\"No Matching Data\",\"no-data-text\":\"No data\",\"loading-text\":\"Loading\"},on:{\"change\":function($event){return _vm.onCourseChange()}},model:{value:(_vm.currentCourse),callback:function ($$v) {_vm.currentCourse=$$v},expression:\"currentCourse\"}},[_c('el-option',{key:\"all\",attrs:{\"label\":\"All Courses\",\"value\":\"all\"}}),_vm._l((_vm.courses),function(item){return _c('el-option',{key:item.Id,attrs:{\"label\":item.ClassDescription,\"value\":item}})})],2):_vm._e()],1),(_vm.assignments)?_c('el-tooltip',{staticClass:\"item\",attrs:{\"effect\":\"light\",\"content\":\"Select Project\",\"placement\":\"top\"}},[_c('el-select',{staticStyle:{\"margin-right\":\"10px\",\"margin-top\":\"10px\"},attrs:{\"id\":\"assignments-selection\",\"value-key\":\"Id\",\"filterable\":\"\",\"placeholder\":\"Select Project\",\"no-match-text\":\"No Matching Data\",\"no-data-text\":\"No data\",\"loading-text\":\"Loading\"},on:{\"change\":function($event){return _vm.onAssignmentChange()}},model:{value:(_vm.currentAssignment),callback:function ($$v) {_vm.currentAssignment=$$v},expression:\"currentAssignment\"}},[(_vm.currentInstructor)?_c('el-option',{key:\"all\",attrs:{\"label\":\"All Projects\",\"value\":\"all\"}}):_vm._e(),_vm._l((_vm.assignments),function(item){return _c('el-option',{key:item.Id,attrs:{\"label\":item.AssignmentName,\"value\":item}})})],2)],1):_vm._e(),(_vm.currentAssignment)?_c('el-tooltip',{staticClass:\"item\",attrs:{\"effect\":\"light\",\"content\":\"Select Participation Status\",\"placement\":\"top\"}},[_c('el-select',{staticStyle:{\"width\":\"185px\",\"margin-right\":\"10px\",\"margin-top\":\"10px\"},attrs:{\"id\":\"optin-status-selection\",\"value-key\":\"Id\",\"filterable\":\"\",\"placeholder\":\"Select Status\",\"no-match-text\":\"No Matching Data\",\"no-data-text\":\"No data\",\"loading-text\":\"Loading\"},on:{\"change\":function($event){return _vm.onStatusChange()}},model:{value:(_vm.status),callback:function ($$v) {_vm.status=$$v},expression:\"status\"}},[_c('el-option',{key:\"all\",attrs:{\"label\":\"All Status\",\"value\":\"N\"}}),_c('el-option',{key:\"redacted\",attrs:{\"label\":\"Opted-In Only\",\"value\":\"Y\"}})],1)],1):_vm._e(),(_vm.students && _vm.status)?_c('el-tooltip',{staticClass:\"item\",attrs:{\"effect\":\"light\",\"content\":\"Select Student\",\"placement\":\"top\"}},[_c('el-select',{staticStyle:{\"width\":\"200px\",\"margin-right\":\"10px\",\"margin-top\":\"10px\"},attrs:{\"id\":\"student-selection\",\"value-key\":\"Id\",\"filterable\":\"\",\"placeholder\":\"Select Student\",\"no-match-text\":\"No Matching Data\",\"no-data-text\":\"No data\",\"loading-text\":\"Loading\"},model:{value:(_vm.currentStudent),callback:function ($$v) {_vm.currentStudent=$$v},expression:\"currentStudent\"}},[_c('el-option',{key:\"all\",attrs:{\"label\":\"All Students\",\"value\":\"all\"}}),_vm._l((_vm.students),function(item){return _c('el-option',{key:item.UserName,attrs:{\"label\":item.LastName + ', ' + item.FirstName,\"value\":item.UserName}})})],2)],1):_vm._e(),(_vm.currentAssignment && _vm.currentStudent && _vm.status)?_c('el-tooltip',{staticClass:\"item\",attrs:{\"effect\":\"light\",\"content\":\"Select Document Type\",\"placement\":\"top\"}},[_c('el-select',{staticStyle:{\"width\":\"185px\",\"margin-right\":\"10px\",\"margin-top\":\"10px\"},attrs:{\"id\":\"doc-type-selection\",\"value-key\":\"Id\",\"filterable\":\"\",\"placeholder\":\"Select Document Type\",\"no-match-text\":\"No Matching Data\",\"no-data-text\":\"No data\",\"loading-text\":\"Loading\"},model:{value:(_vm.docType),callback:function ($$v) {_vm.docType=$$v},expression:\"docType\"}},[_c('el-option',{key:\"original\",attrs:{\"label\":\"Original Documents\",\"value\":\"original\"}}),_c('el-option',{key:\"redacted\",attrs:{\"label\":\"Redacted Documents\",\"value\":\"redacted\"}})],1)],1):_vm._e(),(_vm.currentAssignment && _vm.currentStudent && _vm.status && _vm.docType)?_c('el-tooltip',{staticClass:\"item\",attrs:{\"effect\":\"light\",\"content\":\"Select Format\",\"placement\":\"top\"}},[_c('el-select',{staticStyle:{\"width\":\"185px\",\"margin-right\":\"10px\",\"margin-top\":\"10px\"},attrs:{\"id\":\"format-selection\",\"value-key\":\"Id\",\"filterable\":\"\",\"placeholder\":\"Select Format\",\"no-match-text\":\"No Matching Data\",\"no-data-text\":\"No data\",\"loading-text\":\"Loading\"},model:{value:(_vm.format),callback:function ($$v) {_vm.format=$$v},expression:\"format\"}},[(_vm.docType == 'original')?_c('el-option',{key:\"pdf\",attrs:{\"label\":\"PDF\",\"value\":\"pdf\"}}):_vm._e(),_c('el-option',{key:\"txt\",attrs:{\"label\":\"TXT\",\"value\":\"txt\"}})],1)],1):_vm._e(),(_vm.currentAssignment && _vm.currentStudent && _vm.status && _vm.docType && _vm.format)?_c('el-tooltip',{staticClass:\"item\",attrs:{\"effect\":\"light\",\"content\":\"Select Output\",\"placement\":\"top\"}},[_c('el-select',{staticStyle:{\"width\":\"185px\",\"margin-right\":\"10px\",\"margin-top\":\"10px\"},attrs:{\"id\":\"output-selection\",\"value-key\":\"Id\",\"filterable\":\"\",\"placeholder\":\"Select Output\",\"no-match-text\":\"No Matching Data\",\"no-data-text\":\"No data\",\"loading-text\":\"Loading\"},model:{value:(_vm.output),callback:function ($$v) {_vm.output=$$v},expression:\"output\"}},[_c('el-option',{key:\"zip\",attrs:{\"label\":\"Zip File\",\"value\":\"zip\"}}),(_vm.format == 'txt')?_c('el-option',{key:\"excel\",attrs:{\"label\":\"Excel File\",\"value\":\"excel\"}}):_vm._e()],1)],1):_vm._e(),(_vm.output)?_c('el-button',{staticStyle:{\"margin-right\":\"10px\",\"margin-top\":\"10px\"},on:{\"click\":function($event){return _vm.documentsDownload()}}},[_c('span',[_vm._v(\"\\n Download Documents\\n \")])]):_vm._e()],1),(_vm.showMessage)?_c('el-alert',{staticStyle:{\"background-color\":\"#909399\",\"color\":\"#fff\"},attrs:{\"title\":\"Please wait for the download to complete as it may take up to 15 minutes.\",\"type\":\"warning\",\"show-icon\":\"\",\"effect\":\"dark\"}}):_vm._e()],1)])}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"breadcumb\"},[_c('div',{staticClass:\"ic-app-crumbs\"},[_c('span',{staticClass:\"breadcumb-text\"},[_vm._v(\"\\n Reports\\n \"),_c('i',{staticClass:\"fas fa-chevron-right breadcumb-next\"}),_vm._v(\"\\n Documents Download\\n \")])])])}]\n\nexport { render, staticRenderFns }","<template>\r\n <div>\r\n <div class=\"breadcumb\">\r\n <div class=\"ic-app-crumbs\">\r\n <span class=\"breadcumb-text\">\r\n Reports\r\n <i class=\"fas fa-chevron-right breadcumb-next\" />\r\n Documents Download\r\n </span>\r\n </div>\r\n </div>\r\n <div class=\"student-submission-wrapper\">\r\n <div id=\"filter\" style=\"margin-bottom: 20px;\">\r\n <el-tooltip content=\"Select Term\" placement=\"top-start\">\r\n <el-select\r\n v-if=\"terms\"\r\n id=\"term-selection\"\r\n v-model=\"termCode\"\r\n filterable\r\n placeholder=\"Select Term\"\r\n no-match-text=\"No Matching Data\"\r\n no-data-text=\"No data\"\r\n loading-text=\"Loading\"\r\n style=\"margin-right: 10px; margin-top: 10px;\"\r\n @change=\"onTermChange()\"\r\n >\r\n <el-option\r\n v-for=\"item in terms\"\r\n :key=\"item.TermCode\"\r\n :label=\"item.TermDescription\"\r\n :value=\"item.TermCode\"\r\n />\r\n </el-select>\r\n </el-tooltip>\r\n\r\n <el-tooltip content=\"Select Term\" placement=\"top-start\">\r\n <el-select\r\n v-if=\"courseTypes && isAdmin && termCode\"\r\n id=\"course-type-selection\"\r\n v-model=\"courseType\"\r\n filterable\r\n placeholder=\"Select Course Type\"\r\n no-match-text=\"No Matching Data\"\r\n no-data-text=\"No data\"\r\n loading-text=\"Loading\"\r\n style=\"margin-right: 10px; margin-top: 10px;\"\r\n @change=\"onCourseTypeChange()\"\r\n >\r\n <el-option\r\n v-for=\"item in courseTypes\"\r\n :key=\"item.Id\"\r\n :label=\"item.Name\"\r\n :value=\"item.Id\"\r\n />\r\n </el-select>\r\n </el-tooltip>\r\n\r\n <el-tooltip v-if=\"termCode && isAdmin && instructors && termCode\" content=\"Select Instructor\" placement=\"right-start\">\r\n <el-select\r\n id=\"instructor-selection\"\r\n v-model=\"currentInstructor\"\r\n filterable\r\n placeholder=\"Select Instructor\"\r\n no-match-text=\"No Matching Data\"\r\n no-data-text=\"No data\"\r\n loading-text=\"Loading\"\r\n style=\"margin-right: 10px; margin-top: 10px;\"\r\n @change=\"onInstructorChange()\"\r\n >\r\n <el-option\r\n key=\"all\"\r\n label=\"All Instructors\"\r\n value=\"all\"\r\n />\r\n <el-option\r\n v-for=\"item in instructors\"\r\n :key=\"item.UserName\"\r\n :label=\"item.LastName + ', ' + item.FirstName\"\r\n :value=\"item.UserName\"\r\n />\r\n </el-select>\r\n </el-tooltip>\r\n\r\n <el-tooltip content=\"Select Course\" placement=\"top\">\r\n <el-select\r\n v-if=\"currentInstructor != 'all' && courses\"\r\n id=\"course-selection\"\r\n v-model=\"currentCourse\"\r\n value-key=\"ClassCode\"\r\n filterable\r\n placeholder=\"Select Course\"\r\n no-match-text=\"No Matching Data\"\r\n no-data-text=\"No data\"\r\n loading-text=\"Loading\"\r\n style=\"width: 180px; margin-right: 10px; margin-top: 10px;\"\r\n @change=\"onCourseChange()\"\r\n >\r\n <el-option\r\n key=\"all\"\r\n label=\"All Courses\"\r\n value=\"all\"\r\n />\r\n <el-option\r\n v-for=\"item in courses\"\r\n :key=\"item.Id\"\r\n :label=\"item.ClassDescription\"\r\n :value=\"item\"\r\n />\r\n </el-select>\r\n </el-tooltip>\r\n\r\n <el-tooltip v-if=\"assignments\" class=\"item\" effect=\"light\" content=\"Select Project\" placement=\"top\">\r\n <el-select\r\n id=\"assignments-selection\"\r\n v-model=\"currentAssignment\"\r\n value-key=\"Id\"\r\n filterable\r\n placeholder=\"Select Project\"\r\n no-match-text=\"No Matching Data\"\r\n no-data-text=\"No data\"\r\n loading-text=\"Loading\"\r\n style=\"margin-right: 10px; margin-top: 10px;\"\r\n @change=\"onAssignmentChange()\"\r\n >\r\n <el-option\r\n v-if=\"currentInstructor\"\r\n key=\"all\"\r\n label=\"All Projects\"\r\n value=\"all\"\r\n />\r\n <el-option\r\n v-for=\"item in assignments\"\r\n :key=\"item.Id\"\r\n :label=\"item.AssignmentName\"\r\n :value=\"item\"\r\n />\r\n </el-select>\r\n </el-tooltip>\r\n\r\n <el-tooltip v-if=\"currentAssignment\" class=\"item\" effect=\"light\" content=\"Select Participation Status\" placement=\"top\">\r\n <el-select\r\n id=\"optin-status-selection\"\r\n v-model=\"status\"\r\n value-key=\"Id\"\r\n filterable\r\n placeholder=\"Select Status\"\r\n no-match-text=\"No Matching Data\"\r\n no-data-text=\"No data\"\r\n loading-text=\"Loading\"\r\n style=\"width: 185px; margin-right: 10px; margin-top: 10px;\"\r\n @change=\"onStatusChange()\"\r\n >\r\n <el-option\r\n key=\"all\"\r\n label=\"All Status\"\r\n value=\"N\"\r\n />\r\n <el-option\r\n key=\"redacted\"\r\n label=\"Opted-In Only\"\r\n value=\"Y\"\r\n />\r\n\r\n </el-select>\r\n </el-tooltip>\r\n\r\n <el-tooltip v-if=\"students && status\" class=\"item\" effect=\"light\" content=\"Select Student\" placement=\"top\">\r\n <el-select\r\n id=\"student-selection\"\r\n v-model=\"currentStudent\"\r\n value-key=\"Id\"\r\n filterable\r\n placeholder=\"Select Student\"\r\n no-match-text=\"No Matching Data\"\r\n no-data-text=\"No data\"\r\n loading-text=\"Loading\"\r\n style=\"width: 200px; margin-right: 10px; margin-top: 10px;\"\r\n >\r\n <el-option\r\n key=\"all\"\r\n label=\"All Students\"\r\n value=\"all\"\r\n />\r\n <el-option\r\n v-for=\"item in students\"\r\n :key=\"item.UserName\"\r\n :label=\"item.LastName + ', ' + item.FirstName\"\r\n :value=\"item.UserName\"\r\n />\r\n </el-select>\r\n </el-tooltip>\r\n\r\n <el-tooltip v-if=\"currentAssignment && currentStudent && status\" class=\"item\" effect=\"light\" content=\"Select Document Type\" placement=\"top\">\r\n <el-select\r\n id=\"doc-type-selection\"\r\n v-model=\"docType\"\r\n value-key=\"Id\"\r\n filterable\r\n placeholder=\"Select Document Type\"\r\n no-match-text=\"No Matching Data\"\r\n no-data-text=\"No data\"\r\n loading-text=\"Loading\"\r\n style=\"width: 185px; margin-right: 10px; margin-top: 10px;\"\r\n >\r\n <el-option\r\n key=\"original\"\r\n label=\"Original Documents\"\r\n value=\"original\"\r\n />\r\n <el-option\r\n key=\"redacted\"\r\n label=\"Redacted Documents\"\r\n value=\"redacted\"\r\n />\r\n\r\n </el-select>\r\n </el-tooltip>\r\n\r\n <el-tooltip v-if=\"currentAssignment && currentStudent && status && docType\" class=\"item\" effect=\"light\" content=\"Select Format\" placement=\"top\">\r\n <el-select\r\n id=\"format-selection\"\r\n v-model=\"format\"\r\n value-key=\"Id\"\r\n filterable\r\n placeholder=\"Select Format\"\r\n no-match-text=\"No Matching Data\"\r\n no-data-text=\"No data\"\r\n loading-text=\"Loading\"\r\n style=\"width: 185px; margin-right: 10px; margin-top: 10px;\"\r\n >\r\n <el-option\r\n v-if=\"docType == 'original'\"\r\n key=\"pdf\"\r\n label=\"PDF\"\r\n value=\"pdf\"\r\n />\r\n <el-option\r\n key=\"txt\"\r\n label=\"TXT\"\r\n value=\"txt\"\r\n />\r\n\r\n </el-select>\r\n </el-tooltip>\r\n\r\n <el-tooltip v-if=\"currentAssignment && currentStudent && status && docType && format\" class=\"item\" effect=\"light\" content=\"Select Output\" placement=\"top\">\r\n <el-select\r\n id=\"output-selection\"\r\n v-model=\"output\"\r\n value-key=\"Id\"\r\n filterable\r\n placeholder=\"Select Output\"\r\n no-match-text=\"No Matching Data\"\r\n no-data-text=\"No data\"\r\n loading-text=\"Loading\"\r\n style=\"width: 185px; margin-right: 10px; margin-top: 10px;\"\r\n >\r\n <el-option\r\n key=\"zip\"\r\n label=\"Zip File\"\r\n value=\"zip\"\r\n />\r\n <el-option\r\n v-if=\"format == 'txt'\"\r\n key=\"excel\"\r\n label=\"Excel File\"\r\n value=\"excel\"\r\n />\r\n\r\n </el-select>\r\n </el-tooltip>\r\n\r\n <el-button v-if=\"output\" style=\"margin-right: 10px; margin-top: 10px;\" @click=\"documentsDownload()\">\r\n <span>\r\n Download Documents\r\n </span>\r\n </el-button>\r\n <!-- <el-button v-if=\"docType == 'redacted'\" style=\"margin-right: 10px; margin-top: 10px;\" @click=\"downloadRedactedDocuments()\">\r\n <span>\r\n Download Documents\r\n </span>\r\n </el-button> -->\r\n </div>\r\n <el-alert\r\n v-if=\"showMessage\"\r\n title=\"Please wait for the download to complete as it may take up to 15 minutes.\"\r\n type=\"warning\"\r\n show-icon\r\n effect=\"dark\"\r\n style=\"background-color: #909399; color: #fff;\"\r\n />\r\n </div>\r\n </div>\r\n</template>\r\n\r\n<script>\r\nimport * as termService from '@/services/term.service'\r\nimport * as assignmentService from '@/services/assignment.service'\r\nimport * as rubricService from '@/services/rubric.service'\r\nimport * as userService from '@/services/user.service'\r\nimport * as enrollmentService from '@/services/enrollment.service'\r\nimport * as templateService from '@/services/project_template.service'\r\nimport _ from 'lodash'\r\nimport { Notification } from 'element-ui'\r\nimport axios from 'axios'\r\nimport * as urlUtils from '@/utils/url-utils'\r\n// Hadnles UI and logics for the Outcomes Report page.\r\nexport default {\r\n\tname: 'OutcomesReport',\r\n\tdata() {\r\n\t\treturn {\r\n\t\t\torgCode: this.$store.state.auth.user.OrgCode,\r\n\t\t\tenrolledCourses: this.$store.state.enrollment.courses,\r\n\t\t\tterms: null,\r\n\t\t\tcurrentTerm: null,\r\n\t\t\tcourses: null,\r\n\t\t currentCourse: null,\r\n\t\t\tclassCode: null,\r\n\t\t\ttermCode: null,\r\n\t\t\tisAdmin: false,\r\n\t\t\tinstructors: null,\r\n\t\t\tisViewingCourse: null,\r\n\t\t\tcurrentInstructor: null,\r\n\t\t\tcourseTypes: [\r\n\t\t\t\t{\r\n\t\t\t\t\tId: '1101',\r\n\t\t\t\t\tName: 'ENC 1101'\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tId: '1102',\r\n\t\t\t\t\tName: 'ENC 1102'\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tId: 'PTC',\r\n\t\t\t\t\tName: 'All PTC'\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tId: '2210',\r\n\t\t\t\t\tName: 'ENC 2210'\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tId: '3246',\r\n\t\t\t\t\tName: 'ENC 3246'\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tId: '3250',\r\n\t\t\t\t\tName: 'ENC 3250'\r\n\t\t\t\t}\r\n\t\t\t],\r\n\t\t\tcourseType: null,\r\n\t\t\tshowMessage: false,\r\n\t\t\tassignments: null,\r\n\t\t\tstudents: null,\r\n\t\t\tcurrentAssignment: null,\r\n\t\t\tcurrentStudent: null,\r\n\t\t\tdocType: null,\r\n\t\t\tstatus: null,\r\n\t\t\tformat: null,\r\n\t\t\toutput: null\r\n \t}\r\n\t},\r\n\tcreated() {\r\n\t\tthis.isAdmin = _.includes(this.$store.state.auth.user.Roles, 'Administrator')\r\n\t\tif (this.isAdmin) {\r\n\t\t\tthis.enrolledCourses = null\r\n\t\t\tthis.getAllTerms()\r\n\t\t}\r\n\t},\r\n\t methods: {\r\n\t\t// @vuese\r\n\t\t// Get all terms by organization code.\r\n\t\tasync getAllTerms() {\r\n\t\t\tthis.terms = await termService.getTerms(this.orgCode)\r\n\t\t},\r\n\r\n\t\t// @vuese\r\n\t\t// Handle logics when a term is selected.\r\n\t\tasync onTermChange() {\r\n\t\t\tthis.currentCourse = null\r\n\t\t\tthis.tableData = []\r\n\t\t\tthis.reportType = null\r\n\t\t\tthis.courseType = null\r\n\t\t\tthis.instructors = null\r\n\t\t\tthis.courses = null\r\n\t\t\tthis.currentInstructor = null\r\n\t\t\tthis.assignments = null\r\n\r\n\t\t\tthis.currentAssignment = null\r\n\t\t\tthis.students = null\r\n\t\t\tthis.status = null\r\n\t\t\tthis.docType = null\r\n\t\t\tthis.currentStudent = null\r\n\t\t},\r\n\t\tonCourseTypeChange() {\r\n\t\t\tthis.courses = null\r\n\t\t\tthis.currentCourse = null\r\n\t\t\tthis.instructors = null\r\n\t\t\tthis.currentInstructor = null\r\n\t\t\tthis.reportType = null\r\n\t\t\tthis.assignments = null\r\n\r\n\t\t\tthis.currentAssignment = null\r\n\t\t\tthis.status = null\r\n\t\t\tthis.students = null\r\n\t\t\tthis.docType = null\r\n\t\t\tthis.currentStudent = null\r\n\r\n\t\t\tthis.getInstructors()\r\n\t\t},\r\n\t\tasync getInstructors() {\r\n\t\t\tthis.instructors = await userService.getInstructorsByCourseType(this.orgCode, this.termCode, this.courseType)\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Get term description by term code.\r\n\t\t// @arg The term code.\r\n\t\tgetTermDescription(termCode) {\r\n\t\t\tlet description = ''\r\n\t\t\tconst semester = termCode.slice(4, 6)\r\n\t\t\tswitch (semester) {\r\n\t\t\t\tcase '01':\r\n\t\t\t\t\tdescription = 'Spring'\r\n\t\t\t\t\tbreak\r\n\t\t\t\tcase '05':\r\n\t\t\t\t\tdescription = 'Summer'\r\n\t\t\t\t\tbreak\r\n\t\t\t\tcase '08': description = 'Fall'\r\n\t\t\t\t\tbreak\r\n\t\t\t\tdefault:\r\n\t\t\t\t\tbreak\r\n\t\t\t}\r\n\t\t\tconst year = termCode.slice(0, 4)\r\n\t\t\tdescription += ' ' + year\r\n\t\t\treturn description\r\n\t\t},\r\n\r\n\t\tasync onInstructorChange() {\r\n\t\t\tthis.currentCourse = null\r\n\t\t\tthis.assignments = null\r\n\t\t\tthis.currentAssignment = null\r\n\t\t\tthis.tableData = []\r\n\t\t\tthis.rubricCriteria = null\r\n\t\t\tthis.currentCriteria = 'all'\r\n\t\t\tthis.reportType = null\r\n\t\t\tthis.rubrics = null\r\n\t\t\tthis.currentRubric = null\r\n\t\t\tthis.assignments = null\r\n\t\t\tthis.students = null\r\n\t\t\tthis.docType = null\r\n\t\t\tthis.currentStudent = null\r\n\r\n\t\t\tif (this.currentInstructor == 'all') {\r\n\t\t\t\tthis.getAssigments()\r\n\t\t\t\t// this.prepareAllInstructorReport();\r\n\t\t\t} else {\r\n\t\t\t\tconst enrollments = await enrollmentService.getEnrollments(this.currentInstructor, this.orgCode)\r\n\t\t\t\tif (enrollments && enrollments.length > 0) {\r\n\t\t\t\t\tthis.enrolledCourses = enrollments\r\n\t\t\t\t\t\t.map(item => {\r\n\t\t\t\t\t\t\tif (item != null) {\r\n\t\t\t\t\t\t\t\tconst course = {\r\n\t\t\t\t\t\t\t\t\tClassCode: item.ClassCode,\r\n\t\t\t\t\t\t\t\t\tClassDescription: item.ClassDescription,\r\n\t\t\t\t\t\t\t\t\tIsPaidCourse: item.IsPaidCourse,\r\n\t\t\t\t\t\t\t\t\tOrgCode: item.OrgCode,\r\n\t\t\t\t\t\t\t\t\tProjectTemplate: item.ProjectTemplateId,\r\n\t\t\t\t\t\t\t\t\tTermCode: item.TermCode,\r\n\t\t\t\t\t\t\t\t\tUserRole: item.UserRole\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\treturn course\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t})\r\n\t\t\t\t\t\t.filter(item => { return item != null })\r\n\r\n\t\t\t\t\tif (this.courseType == 'PTC') {\r\n\t\t\t\t\t\tthis.courses = this.enrolledCourses.filter(course => {\r\n\t\t\t\t\t\t\treturn course.TermCode == this.termCode &&\r\n (course.ClassDescription.includes('ENC 2210') || course.ClassDescription.includes('ENC 3246') || course.ClassDescription.includes('ENC 3250'))\r\n\t\t\t\t\t\t})\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tthis.courses = this.enrolledCourses.filter(course => {\r\n\t\t\t\t\t\t\treturn course.TermCode == this.termCode &&\r\n course.ClassDescription.includes('ENC ' + this.courseType)\r\n\t\t\t\t\t\t})\r\n\t\t\t\t\t}\r\n\t\t\t\t} else {\r\n\t\t\t\t\tNotification.error({\r\n\t\t\t\t\t\tduration: 6000,\r\n\t\t\t\t\t\ttitle: 'Error',\r\n\t\t\t\t\t\tmessage: 'The selected instructor is not actively enrolled in any course.'\r\n\t\t\t\t\t})\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t},\r\n\t\tasync prepareAllInstructorReport() {\r\n\t\t\tlet type = ''\r\n\t\t\tlet thisTemplate\r\n\t\t\tswitch (this.courseType) {\r\n\t\t\t\tcase '1101':\r\n\t\t\t\t\ttype = 'ENC 1101'\r\n\t\t\t\t\tthisTemplate = await templateService.getRootTemplateByCourseType(this.termCode, this.orgCode, type)\r\n\t\t\t\t\tbreak\r\n\t\t\t\tcase '1102':\r\n\t\t\t\t\ttype = 'ENC 1102'\r\n\t\t\t\t\tthisTemplate = await templateService.getRootTemplateByCourseType(this.termCode, this.orgCode, type)\r\n\t\t\t\t\tbreak\r\n\t\t\t\tdefault:\r\n\t\t\t\t\ttype = 'PTC'\r\n\t\t\t\t\tthisTemplate = await templateService.getRootTemplateByCourseType(this.termCode, this.orgCode, type)\r\n\t\t\t\t\tbreak\r\n\t\t\t}\r\n\t\t\tif (thisTemplate) {\r\n\t\t\t\tthis.templateId = thisTemplate.Id\r\n\t\t\t\tthis.rubrics = await rubricService.getRubricsInTemplate(this.templateId)\r\n\t\t\t}\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Handle logics when a course is selected.\r\n\t\tasync onCourseChange() {\r\n\t\t\tthis.reportType = null\r\n\t\t\tthis.assignments = null\r\n\t\t\tthis.currentAssignment = null\r\n\t\t\tthis.status = null\r\n\t\t\tthis.students = null\r\n\t\t\tthis.docType = null\r\n\t\t\tthis.currentStudent = null\r\n\r\n\t\t\tif (this.currentCourse != 'all') {\r\n\t\t\t\tthis.classCode = this.currentCourse.ClassCode\r\n\t\t\t\tthis.termCode = this.currentCourse.TermCode\r\n\t\t\t} else {\r\n\t\t\t\tthis.classCode = ''\r\n\t\t\t\tthis.courses.forEach(course => {\r\n\t\t\t\t\tthis.classCode += course.ClassCode + ','\r\n\t\t\t\t})\r\n\t\t\t\tconsole.log(this.classCode)\r\n\t\t\t}\r\n\r\n\t\t\tif (this.currentCourse != 'all') { this.getAssigments() } else {\r\n\t\t\t\tthis.currentAssignment = 'all'\r\n\t\t\t\tthis.currentStudent = 'all'\r\n\t\t\t}\r\n\t\t},\r\n\t\tasync getAssigments() {\r\n\t\t\tif (this.currentInstructor == 'all') {\r\n\t\t\t\tlet type = ''\r\n\t\t\t\tlet thisTemplate\r\n\t\t\t\tswitch (this.courseType) {\r\n\t\t\t\t\tcase '1101':\r\n\t\t\t\t\t\ttype = 'ENC 1101'\r\n\t\t\t\t\t\tthisTemplate = await templateService.getRootTemplateByCourseType(this.termCode, this.orgCode, type)\r\n\t\t\t\t\t\tbreak\r\n\t\t\t\t\tcase '1102':\r\n\t\t\t\t\t\ttype = 'ENC 1102'\r\n\t\t\t\t\t\tthisTemplate = await templateService.getRootTemplateByCourseType(this.termCode, this.orgCode, type)\r\n\t\t\t\t\t\tbreak\r\n\t\t\t\t\tdefault:\r\n\t\t\t\t\t\ttype = 'PTC'\r\n\t\t\t\t\t\tthisTemplate = await templateService.getRootTemplateByCourseType(this.termCode, this.orgCode, type)\r\n\t\t\t\t\t\tbreak\r\n\t\t\t\t}\r\n\t\t\t\tif (thisTemplate) {\r\n\t\t\t\t\tthis.templateId = thisTemplate.Id\r\n\t\t\t\t\tthis.assignments = await assignmentService.getAssignmentsByTemplate(this.templateId)\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tthis.assignments = await assignmentService.getAssignmentsByTemplate(this.currentCourse.ProjectTemplate)\r\n\t\t\t}\r\n\t\t},\r\n\t\tonAssignmentChange() {\r\n\t\t\tthis.status = null\r\n\t\t\tthis.currentStudent = null\r\n\t\t\tthis.docType = null\r\n\t\t\tif (this.currentAssignment != 'all') {\r\n\t\t\t\tif (this.currentInstructor === 'all') {\r\n\t\t\t\t\tthis.classCode = 'all'\r\n\t\t\t\t\tthis.currentStudent = 'all'\r\n\t\t\t\t\t// this.getStudents()\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tif (this.currentInstructor === 'all') {\r\n\t\t\t\t\tthis.currentStudent = 'all'\r\n\t\t\t\t\tthis.classCode = 'all'\r\n\t\t\t\t}\r\n\t\t\t\t//\r\n\t\t\t}\r\n\r\n\t\t\t// this.getStudents()\r\n\t\t},\r\n\t onStatusChange() {\r\n\t\t\tif (this.currentCourse != 'all' && this.currentInstructor != 'all') {\r\n\t\t\t\tif (this.status == 'N') { this.getStudents() } else { this.getOptedInStudents() }\r\n\t\t\t}\r\n\t\t},\r\n\t\tasync getStudents() {\r\n\t\t\tthis.students = await userService.getCoursePeople(this.orgCode, this.termCode, this.classCode)\r\n\t\t},\r\n\t\tasync getOptedInStudents() {\r\n\t\t\tthis.students = await userService.getOptedInStudents(this.orgCode, this.termCode, this.classCode)\r\n\t\t},\r\n\t\tasync documentsDownload() {\r\n\t\t\tif (this.docType == 'original' && this.format == 'pdf' && this.output == 'zip') {\r\n\t\t\t\tawait this.documentsDownloadZip()\r\n\t\t\t} else if (this.docType == 'original' && this.format == 'txt' && this.output == 'zip') {\r\n\t\t\t\tawait this.documentsDownloadTextZip()\r\n\t\t\t} else if (this.docType == 'original' && this.format == 'txt' && this.output == 'excel') {\r\n\t\t\t\tawait this.documentsDownloadExcel()\r\n\t\t\t} else if (this.docType == 'redacted' && this.format == 'txt' && this.output == 'zip') {\r\n\t\t\t\tawait this.downloadRedactedDocuments()\r\n\t\t\t} else if (this.docType == 'redacted' && this.format == 'txt' && this.output == 'excel') {\r\n\t\t\t\tawait this.documentsDownloadExcelRedacted()\r\n\t\t\t}\r\n\t\t},\r\n\t\tasync documentsDownloadZip() {\r\n\t\t\tvar classCode = this.classCode\r\n\t\t\tif (this.currentCourse != 'all') { classCode = this.currentInstructor == 'all' ? 'All' : this.currentCourse.ClassCode }\r\n\t\t\tconst assignmentName = this.currentAssignment == 'all' ? 'All' : this.currentAssignment.AssignmentName\r\n\t\t\tconst studentId = this.currentStudent == 'all' ? 'All' : this.currentStudent\r\n\t\t\tif (classCode == 'All' || assignmentName == 'All') {\r\n\t\t\t\tthis.$confirm('Based on the filter you selected, this may result in a large number of documents and may take several minutes to complete. Continue?', 'Warning', {\r\n\t\t\t\t\tconfirmButtonText: 'OK',\r\n\t\t\t\t\tcancelButtonText: 'Cancel',\r\n\t\t\t\t\ttype: 'warning'\r\n\t\t\t\t}).then(() => {\r\n\t\t\t\t\tthis.showMessage = true\r\n\r\n\t\t\t\t\tvar model = {\r\n\t\t\t\t\t\ttermCode: this.termCode,\r\n\t\t\t\t\t\torgCode: this.orgCode,\r\n\t\t\t\t\t\tcourseType: this.courseType,\r\n\t\t\t\t\t\tassignmentName: assignmentName,\r\n\t\t\t\t\t\tstudentId: studentId,\r\n\t\t\t\t\t\tclassCode: classCode,\r\n\t\t\t\t\t\tstatus: this.status\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\taxios({\r\n\t\t\t\t\t\turl: urlUtils.getBaseApiURL() + '/pdf/download/pdf/zip',\r\n\t\t\t\t\t\tdata: model,\r\n\t\t\t\t\t\tmethod: 'POST',\r\n\t\t\t\t\t\tresponseType: 'blob'\r\n\t\t\t\t\t}).then((response) => {\r\n\t\t\t\t\t\tconst url = window.URL.createObjectURL(new Blob([response.data]))\r\n\t\t\t\t\t\tconst link = document.createElement('a')\r\n\t\t\t\t\t\tlink.href = url\r\n\t\t\t\t\t\tlink.setAttribute('download', 'documents.zip') // or any other extension\r\n\t\t\t\t\t\tdocument.body.appendChild(link)\r\n\t\t\t\t\t\tthis.showMessage = false\r\n\t\t\t\t\t\tlink.click()\r\n\t\t\t\t\t}).catch(function(error) {\r\n\t\t\t\t\t\tconsole.log(error)\r\n\t\t\t\t\t})\r\n\t\t\t\t}).catch(() => {\r\n\t\t\t\t\tthis.$message({\r\n\t\t\t\t\t\ttype: 'info',\r\n\t\t\t\t\t\tmessage: 'Documents download canceled!'\r\n\t\t\t\t\t})\r\n\t\t\t\t})\r\n\t\t\t} else {\r\n\t\t\t\tthis.showMessage = true\r\n\r\n\t\t\t\tvar model = {\r\n\t\t\t\t\ttermCode: this.termCode,\r\n\t\t\t\t\torgCode: this.orgCode,\r\n\t\t\t\t\tcourseType: this.courseType,\r\n\t\t\t\t\tassignmentName: assignmentName,\r\n\t\t\t\t\tstudentId: studentId,\r\n\t\t\t\t\tclassCode: classCode,\r\n\t\t\t\t\tstatus: this.status\r\n\t\t\t\t}\r\n\r\n\t\t\t\taxios({\r\n\t\t\t\t\turl: urlUtils.getBaseApiURL() + '/pdf/download/pdf/zip',\r\n\t\t\t\t\tdata: model,\r\n\t\t\t\t\tmethod: 'POST',\r\n\t\t\t\t\tresponseType: 'blob'\r\n\t\t\t\t}).then((response) => {\r\n\t\t\t\t\tconst url = window.URL.createObjectURL(new Blob([response.data]))\r\n\t\t\t\t\tconst link = document.createElement('a')\r\n\t\t\t\t\tlink.href = url\r\n\t\t\t\t\tlink.setAttribute('download', 'documents.zip') // or any other extension\r\n\t\t\t\t\tdocument.body.appendChild(link)\r\n\t\t\t\t\tthis.showMessage = false\r\n\t\t\t\t\tlink.click()\r\n\t\t\t\t}).catch(function(error) {\r\n\t\t\t\t\tconsole.log(error)\r\n\t\t\t\t})\r\n\t\t\t}\r\n\t\t},\r\n\t\tasync documentsDownloadTextZip() {\r\n\t\t\tvar classCode = this.classCode\r\n\t\t\tif (this.currentCourse != 'all') { classCode = this.currentInstructor == 'all' ? 'All' : this.currentCourse.ClassCode }\r\n\t\t\tconst assignmentName = this.currentAssignment == 'all' ? 'All' : this.currentAssignment.AssignmentName\r\n\t\t\tconst studentId = this.currentStudent == 'all' ? 'All' : this.currentStudent\r\n\t\t\tif (classCode == 'All' || assignmentName == 'All') {\r\n\t\t\t\tthis.$confirm('Based on the filter you selected, this may result in a large number of documents and may take several minutes to complete. Continue?', 'Warning', {\r\n\t\t\t\t\tconfirmButtonText: 'OK',\r\n\t\t\t\t\tcancelButtonText: 'Cancel',\r\n\t\t\t\t\ttype: 'warning'\r\n\t\t\t\t}).then(() => {\r\n\t\t\t\t\tthis.showMessage = true\r\n\r\n\t\t\t\t\tvar model = {\r\n\t\t\t\t\t\ttermCode: this.termCode,\r\n\t\t\t\t\t\torgCode: this.orgCode,\r\n\t\t\t\t\t\tcourseType: this.courseType,\r\n\t\t\t\t\t\tassignmentName: assignmentName,\r\n\t\t\t\t\t\tstudentId: studentId,\r\n\t\t\t\t\t\tclassCode: classCode,\r\n\t\t\t\t\t\tstatus: this.status\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\taxios({\r\n\t\t\t\t\t\turl: urlUtils.getBaseApiURL() + '/pdf/download/text/zip',\r\n\t\t\t\t\t\tdata: model,\r\n\t\t\t\t\t\tmethod: 'POST',\r\n\t\t\t\t\t\tresponseType: 'blob'\r\n\t\t\t\t\t}).then((response) => {\r\n\t\t\t\t\t\tconst url = window.URL.createObjectURL(new Blob([response.data]))\r\n\t\t\t\t\t\tconst link = document.createElement('a')\r\n\t\t\t\t\t\tlink.href = url\r\n\t\t\t\t\t\tlink.setAttribute('download', 'documents.zip') // or any other extension\r\n\t\t\t\t\t\tdocument.body.appendChild(link)\r\n\t\t\t\t\t\tthis.showMessage = false\r\n\t\t\t\t\t\tlink.click()\r\n\t\t\t\t\t}).catch(function(error) {\r\n\t\t\t\t\t\tconsole.log(error)\r\n\t\t\t\t\t})\r\n\t\t\t\t}).catch(() => {\r\n\t\t\t\t\tthis.$message({\r\n\t\t\t\t\t\ttype: 'info',\r\n\t\t\t\t\t\tmessage: 'Documents download canceled!'\r\n\t\t\t\t\t})\r\n\t\t\t\t})\r\n\t\t\t} else {\r\n\t\t\t\tthis.showMessage = true\r\n\r\n\t\t\t\tvar model = {\r\n\t\t\t\t\ttermCode: this.termCode,\r\n\t\t\t\t\torgCode: this.orgCode,\r\n\t\t\t\t\tcourseType: this.courseType,\r\n\t\t\t\t\tassignmentName: assignmentName,\r\n\t\t\t\t\tstudentId: studentId,\r\n\t\t\t\t\tclassCode: classCode,\r\n\t\t\t\t\tstatus: this.status\r\n\t\t\t\t}\r\n\r\n\t\t\t\taxios({\r\n\t\t\t\t\turl: urlUtils.getBaseApiURL() + '/pdf/download/text/zip',\r\n\t\t\t\t\tdata: model,\r\n\t\t\t\t\tmethod: 'POST',\r\n\t\t\t\t\tresponseType: 'blob'\r\n\t\t\t\t}).then((response) => {\r\n\t\t\t\t\tconst url = window.URL.createObjectURL(new Blob([response.data]))\r\n\t\t\t\t\tconst link = document.createElement('a')\r\n\t\t\t\t\tlink.href = url\r\n\t\t\t\t\tlink.setAttribute('download', 'documents.zip') // or any other extension\r\n\t\t\t\t\tdocument.body.appendChild(link)\r\n\t\t\t\t\tthis.showMessage = false\r\n\t\t\t\t\tlink.click()\r\n\t\t\t\t}).catch(function(error) {\r\n\t\t\t\t\tconsole.log(error)\r\n\t\t\t\t})\r\n\t\t\t}\r\n\t\t},\r\n\t\tasync documentsDownloadExcel() {\r\n\t\t\tvar classCode = this.classCode\r\n\t\t\tif (this.currentCourse != 'all') { classCode = this.currentInstructor == 'all' ? 'All' : this.currentCourse.ClassCode }\r\n\t\t\tconst assignmentName = this.currentAssignment == 'all' ? 'All' : this.currentAssignment.AssignmentName\r\n\t\t\tconst studentId = this.currentStudent == 'all' ? 'All' : this.currentStudent\r\n\t\t\tif (classCode == 'All' || assignmentName == 'All') {\r\n\t\t\t\tthis.$confirm('Based on the filter you selected, this may result in a large number of documents and may take several minutes to complete. Continue?', 'Warning', {\r\n\t\t\t\t\tconfirmButtonText: 'OK',\r\n\t\t\t\t\tcancelButtonText: 'Cancel',\r\n\t\t\t\t\ttype: 'warning'\r\n\t\t\t\t}).then(() => {\r\n\t\t\t\t\tthis.showMessage = true\r\n\r\n\t\t\t\t\tvar model = {\r\n\t\t\t\t\t\ttermCode: this.termCode,\r\n\t\t\t\t\t\torgCode: this.orgCode,\r\n\t\t\t\t\t\tcourseType: this.courseType,\r\n\t\t\t\t\t\tassignmentName: assignmentName,\r\n\t\t\t\t\t\tstudentId: studentId,\r\n\t\t\t\t\t\tclassCode: classCode,\r\n\t\t\t\t\t\tstatus: this.status\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\taxios({\r\n\t\t\t\t\t\turl: urlUtils.getBaseApiURL() + '/pdf/download/excel',\r\n\t\t\t\t\t\tdata: model,\r\n\t\t\t\t\t\tmethod: 'POST',\r\n\t\t\t\t\t\tresponseType: 'blob'\r\n\t\t\t\t\t}).then((response) => {\r\n\t\t\t\t\t\tconst url = window.URL.createObjectURL(new Blob([response.data]))\r\n\t\t\t\t\t\tconst link = document.createElement('a')\r\n\t\t\t\t\t\tlink.href = url\r\n\t\t\t\t\t\tlink.setAttribute('download', 'documents.xls') // or any other extension\r\n\t\t\t\t\t\tdocument.body.appendChild(link)\r\n\t\t\t\t\t\tthis.showMessage = false\r\n\t\t\t\t\t\tlink.click()\r\n\t\t\t\t\t\tlink.remove()\r\n\t\t\t\t\t}).catch(function(error) {\r\n\t\t\t\t\t\tconsole.log(error)\r\n\t\t\t\t\t})\r\n\t\t\t\t}).catch(() => {\r\n\t\t\t\t\tthis.$message({\r\n\t\t\t\t\t\ttype: 'info',\r\n\t\t\t\t\t\tmessage: 'Documents download canceled!'\r\n\t\t\t\t\t})\r\n\t\t\t\t})\r\n\t\t\t} else {\r\n\t\t\t\tthis.showMessage = true\r\n\r\n\t\t\t\tvar model = {\r\n\t\t\t\t\ttermCode: this.termCode,\r\n\t\t\t\t\torgCode: this.orgCode,\r\n\t\t\t\t\tcourseType: this.courseType,\r\n\t\t\t\t\tassignmentName: assignmentName,\r\n\t\t\t\t\tstudentId: studentId,\r\n\t\t\t\t\tclassCode: classCode,\r\n\t\t\t\t\tstatus: this.status\r\n\t\t\t\t}\r\n\r\n\t\t\t\taxios({\r\n\t\t\t\t\turl: urlUtils.getBaseApiURL() + '/pdf/download/excel',\r\n\t\t\t\t\tdata: model,\r\n\t\t\t\t\tmethod: 'POST',\r\n\t\t\t\t\tresponseType: 'blob'\r\n\t\t\t\t}).then((response) => {\r\n\t\t\t\t\tconsole.log(response)\r\n\t\t\t\t\tconst url = window.URL.createObjectURL(new Blob([response.data]))\r\n\t\t\t\t\tconst link = document.createElement('a')\r\n\t\t\t\t\tlink.href = url\r\n\t\t\t\t\tlink.setAttribute('download', 'documents.xls') // or any other extension\r\n\t\t\t\t\tdocument.body.appendChild(link)\r\n\t\t\t\t\tthis.showMessage = false\r\n\t\t\t\t\tlink.click()\r\n\t\t\t\t\tlink.remove()\r\n\t\t\t\t}).catch(function(error) {\r\n\t\t\t\t\tconsole.log(error)\r\n\t\t\t\t})\r\n\t\t\t}\r\n\t\t},\r\n\t\tasync documentsDownloadExcelRedacted() {\r\n\t\t\tvar classCode = this.classCode\r\n\t\t\tif (this.currentCourse != 'all') { classCode = this.currentInstructor == 'all' ? 'All' : this.currentCourse.ClassCode }\r\n\t\t\tconst assignmentName = this.currentAssignment == 'all' ? 'All' : this.currentAssignment.AssignmentName\r\n\t\t\tconst studentId = this.currentStudent == 'all' ? 'All' : this.currentStudent\r\n\t\t\tif (classCode == 'All' || assignmentName == 'All') {\r\n\t\t\t\tthis.$confirm('Based on the filter you selected, this may result in a large number of documents and may take several minutes to complete. Continue?', 'Warning', {\r\n\t\t\t\t\tconfirmButtonText: 'OK',\r\n\t\t\t\t\tcancelButtonText: 'Cancel',\r\n\t\t\t\t\ttype: 'warning'\r\n\t\t\t\t}).then(() => {\r\n\t\t\t\t\tthis.showMessage = true\r\n\r\n\t\t\t\t\tvar model = {\r\n\t\t\t\t\t\ttermCode: this.termCode,\r\n\t\t\t\t\t\torgCode: this.orgCode,\r\n\t\t\t\t\t\tcourseType: this.courseType,\r\n\t\t\t\t\t\tassignmentName: assignmentName,\r\n\t\t\t\t\t\tstudentId: studentId,\r\n\t\t\t\t\t\tclassCode: classCode,\r\n\t\t\t\t\t\tstatus: this.status\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\taxios({\r\n\t\t\t\t\t\turl: urlUtils.getBaseApiURL() + '/pdf/download/excel/redacted',\r\n\t\t\t\t\t\tdata: model,\r\n\t\t\t\t\t\tmethod: 'POST',\r\n\t\t\t\t\t\tresponseType: 'blob'\r\n\t\t\t\t\t}).then((response) => {\r\n\t\t\t\t\t\tconst url = window.URL.createObjectURL(new Blob([response.data]))\r\n\t\t\t\t\t\tconst link = document.createElement('a')\r\n\t\t\t\t\t\tlink.href = url\r\n\t\t\t\t\t\tlink.setAttribute('download', 'documents.xls') // or any other extension\r\n\t\t\t\t\t\tdocument.body.appendChild(link)\r\n\t\t\t\t\t\tthis.showMessage = false\r\n\t\t\t\t\t\tlink.click()\r\n\t\t\t\t\t\tlink.remove()\r\n\t\t\t\t\t}).catch(function(error) {\r\n\t\t\t\t\t\tconsole.log(error)\r\n\t\t\t\t\t})\r\n\t\t\t\t}).catch(() => {\r\n\t\t\t\t\tthis.$message({\r\n\t\t\t\t\t\ttype: 'info',\r\n\t\t\t\t\t\tmessage: 'Documents download canceled!'\r\n\t\t\t\t\t})\r\n\t\t\t\t})\r\n\t\t\t} else {\r\n\t\t\t\tthis.showMessage = true\r\n\r\n\t\t\t\tvar model = {\r\n\t\t\t\t\ttermCode: this.termCode,\r\n\t\t\t\t\torgCode: this.orgCode,\r\n\t\t\t\t\tcourseType: this.courseType,\r\n\t\t\t\t\tassignmentName: assignmentName,\r\n\t\t\t\t\tstudentId: studentId,\r\n\t\t\t\t\tclassCode: classCode,\r\n\t\t\t\t\tstatus: this.status\r\n\t\t\t\t}\r\n\r\n\t\t\t\taxios({\r\n\t\t\t\t\turl: urlUtils.getBaseApiURL() + '/pdf/download/excel/redacted',\r\n\t\t\t\t\tdata: model,\r\n\t\t\t\t\tmethod: 'POST',\r\n\t\t\t\t\tresponseType: 'blob'\r\n\t\t\t\t}).then((response) => {\r\n\t\t\t\t\tconst url = window.URL.createObjectURL(new Blob([response.data]))\r\n\t\t\t\t\tconst link = document.createElement('a')\r\n\t\t\t\t\tlink.href = url\r\n\t\t\t\t\tlink.setAttribute('download', 'documents.xls') // or any other extension\r\n\t\t\t\t\tdocument.body.appendChild(link)\r\n\t\t\t\t\tthis.showMessage = false\r\n\t\t\t\t\tlink.click()\r\n\t\t\t\t\tlink.remove()\r\n\t\t\t\t}).catch(function(error) {\r\n\t\t\t\t\tconsole.log(error)\r\n\t\t\t\t})\r\n\t\t\t}\r\n\t\t},\r\n\t\tbase64ToArrayBuffer(base64) {\r\n\t\t\tconst binaryString = window.atob(base64)\r\n\t\t\tconst binaryLen = binaryString.length\r\n\t\t\tconst bytes = new Uint8Array(binaryLen)\r\n\t\t\tfor (let i = 0; i < binaryLen; i++) {\r\n\t\t\t\tconst ascii = binaryString.charCodeAt(i)\r\n\t\t\t\tbytes[i] = ascii\r\n\t\t\t}\r\n\t\t\treturn bytes\r\n\t\t},\r\n\t\tasync downloadRedactedDocuments() {\r\n\t\t\tvar classCode = this.classCode\r\n\t\t\tif (this.currentCourse != 'all') { classCode = this.currentInstructor == 'all' ? 'All' : this.currentCourse.ClassCode }\r\n\t\t\tconst assignmentName = this.currentAssignment == 'all' ? 'All' : this.currentAssignment.AssignmentName\r\n\t\t\tconst studentId = this.currentStudent == 'all' ? 'All' : this.currentStudent\r\n\t\t\tif (classCode == 'All' || assignmentName == 'All') {\r\n\t\t\t\tthis.$confirm('Based on the filter you selected, this may result in a large number of documents and may take several minutes to complete. Continue?', 'Warning', {\r\n\t\t\t\t\tconfirmButtonText: 'OK',\r\n\t\t\t\t\tcancelButtonText: 'Cancel',\r\n\t\t\t\t\ttype: 'warning'\r\n\t\t\t\t}).then(() => {\r\n\t\t\t\t\tthis.showMessage = true\r\n\r\n\t\t\t\t\tvar model = {\r\n\t\t\t\t\t\ttermCode: this.termCode,\r\n\t\t\t\t\t\torgCode: this.orgCode,\r\n\t\t\t\t\t\tcourseType: this.courseType,\r\n\t\t\t\t\t\tassignmentName: assignmentName,\r\n\t\t\t\t\t\tstudentId: studentId,\r\n\t\t\t\t\t\tclassCode: classCode,\r\n\t\t\t\t\t\tstatus: this.status\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\taxios({\r\n\t\t\t\t\t\turl: urlUtils.getBaseApiURL() + '/pdf/download/redacted/zipped',\r\n\t\t\t\t\t\tdata: model,\r\n\t\t\t\t\t\tmethod: 'POST',\r\n\t\t\t\t\t\tresponseType: 'blob'\r\n\t\t\t\t\t}).then((response) => {\r\n\t\t\t\t\t\tconst url = window.URL.createObjectURL(new Blob([response.data]))\r\n\t\t\t\t\t\tconst link = document.createElement('a')\r\n\t\t\t\t\t\tlink.href = url\r\n\t\t\t\t\t\tlink.setAttribute('download', 'documents.zip') // or any other extension\r\n\t\t\t\t\t\tdocument.body.appendChild(link)\r\n\t\t\t\t\t\tthis.showMessage = false\r\n\t\t\t\t\t\tlink.click()\r\n\t\t\t\t\t}).catch(function(error) {\r\n\t\t\t\t\t\tconsole.log(error)\r\n\t\t\t\t\t})\r\n\t\t\t\t}).catch(() => {\r\n\t\t\t\t\tthis.$message({\r\n\t\t\t\t\t\ttype: 'info',\r\n\t\t\t\t\t\tmessage: 'Delete canceled'\r\n\t\t\t\t\t})\r\n\t\t\t\t})\r\n\t\t\t} else {\r\n\t\t\t\tthis.showMessage = true\r\n\r\n\t\t\t\tvar model = {\r\n\t\t\t\t\ttermCode: this.termCode,\r\n\t\t\t\t\torgCode: this.orgCode,\r\n\t\t\t\t\tcourseType: this.courseType,\r\n\t\t\t\t\tassignmentName: assignmentName,\r\n\t\t\t\t\tstudentId: studentId,\r\n\t\t\t\t\tclassCode: classCode,\r\n\t\t\t\t\tstatus: this.status\r\n\t\t\t\t}\r\n\r\n\t\t\t\taxios({\r\n\t\t\t\t\turl: urlUtils.getBaseApiURL() + '/pdf/download/redacted/zipped',\r\n\t\t\t\t\tdata: model,\r\n\t\t\t\t\tmethod: 'POST',\r\n\t\t\t\t\tresponseType: 'blob'\r\n\t\t\t\t}).then((response) => {\r\n\t\t\t\t\tconst url = window.URL.createObjectURL(new Blob([response.data]))\r\n\t\t\t\t\tconst link = document.createElement('a')\r\n\t\t\t\t\tlink.href = url\r\n\t\t\t\t\tlink.setAttribute('download', 'documents.zip') // or any other extension\r\n\t\t\t\t\tdocument.body.appendChild(link)\r\n\t\t\t\t\tthis.showMessage = false\r\n\t\t\t\t\tlink.click()\r\n\t\t\t\t}).catch(function(error) {\r\n\t\t\t\t\tconsole.log(error)\r\n\t\t\t\t})\r\n\t\t\t}\r\n\t\t},\r\n\t\tasync asyncForEach(array, callback) {\r\n\t\t\tfor (let index = 0; index < array.length; index++) {\r\n\t\t\t\tawait callback(array[index], index, array)\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}\r\n</script>\r\n\r\n<style scoped>\r\n.el-table__empty-text{\r\n\tdisplay: none;\r\n}\r\n.student-submission-wrapper{\r\n padding: 20px;\r\n box-shadow: 20px 10px 25px 20px rgba(109, 107, 107, 0.1);\r\n}\r\n\r\n</style>\r\n<style>\r\n.center-align{\r\n text-align: center !important;\r\n}\r\n.cutom-popper{\r\n width: 400px;\r\n}\r\n</style>\r\n\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DocumentsDownload.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DocumentsDownload.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./DocumentsDownload.vue?vue&type=template&id=439bb888&scoped=true&\"\nimport script from \"./DocumentsDownload.vue?vue&type=script&lang=js&\"\nexport * from \"./DocumentsDownload.vue?vue&type=script&lang=js&\"\nimport style0 from \"./DocumentsDownload.vue?vue&type=style&index=0&id=439bb888&scoped=true&lang=css&\"\nimport style1 from \"./DocumentsDownload.vue?vue&type=style&index=1&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"439bb888\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_vm._m(0),_c('div',{staticClass:\"student-submission-wrapper\"},[_c('div',{staticStyle:{\"margin-bottom\":\"20px\"},attrs:{\"id\":\"filter\"}},[_c('el-tooltip',{attrs:{\"content\":\"Select Term\",\"placement\":\"top-start\"}},[(_vm.terms)?_c('el-select',{staticStyle:{\"margin-right\":\"10px\",\"margin-top\":\"10px\"},attrs:{\"id\":\"term-selection\",\"filterable\":\"\",\"placeholder\":\"Select Term\",\"no-match-text\":\"No Matching Data\",\"no-data-text\":\"No data\",\"loading-text\":\"Loading\"},on:{\"change\":function($event){return _vm.onTermChange()}},model:{value:(_vm.termCode),callback:function ($$v) {_vm.termCode=$$v},expression:\"termCode\"}},_vm._l((_vm.terms),function(item){return _c('el-option',{key:item.TermCode,attrs:{\"label\":item.TermDescription,\"value\":item.TermCode}})}),1):_vm._e()],1),_c('el-tooltip',{attrs:{\"content\":\"Select Term\",\"placement\":\"top-start\"}},[(_vm.courseTypes && _vm.isAdmin && _vm.termCode)?_c('el-select',{staticStyle:{\"margin-right\":\"10px\",\"margin-top\":\"10px\"},attrs:{\"id\":\"course-type-selection\",\"filterable\":\"\",\"placeholder\":\"Select Course Type\",\"no-match-text\":\"No Matching Data\",\"no-data-text\":\"No data\",\"loading-text\":\"Loading\"},on:{\"change\":function($event){return _vm.onCourseTypeChange()}},model:{value:(_vm.courseType),callback:function ($$v) {_vm.courseType=$$v},expression:\"courseType\"}},_vm._l((_vm.courseTypes),function(item){return _c('el-option',{key:item.Id,attrs:{\"label\":item.Name,\"value\":item.Id}})}),1):_vm._e()],1),(_vm.termCode && _vm.isAdmin && _vm.instructors && _vm.termCode)?_c('el-tooltip',{attrs:{\"content\":\"Select Instructor\",\"placement\":\"right-start\"}},[_c('el-select',{staticStyle:{\"margin-right\":\"10px\",\"margin-top\":\"10px\"},attrs:{\"id\":\"instructor-selection\",\"filterable\":\"\",\"placeholder\":\"Select Instructor\",\"no-match-text\":\"No Matching Data\",\"no-data-text\":\"No data\",\"loading-text\":\"Loading\"},on:{\"change\":function($event){return _vm.onInstructorChange()}},model:{value:(_vm.currentInstructor),callback:function ($$v) {_vm.currentInstructor=$$v},expression:\"currentInstructor\"}},[_c('el-option',{key:\"all\",attrs:{\"label\":\"All Instructors\",\"value\":\"all\"}}),_vm._l((_vm.instructors),function(item){return _c('el-option',{key:item.UserName,attrs:{\"label\":item.LastName + ', ' + item.FirstName,\"value\":item.UserName}})})],2)],1):_vm._e(),_c('el-tooltip',{attrs:{\"content\":\"Select Course\",\"placement\":\"top\"}},[(_vm.currentInstructor != 'all' && _vm.courses)?_c('el-select',{staticStyle:{\"margin-right\":\"10px\",\"margin-top\":\"10px\"},attrs:{\"id\":\"course-selection\",\"value-key\":\"ClassCode\",\"filterable\":\"\",\"placeholder\":\"Select Course\",\"no-match-text\":\"No Matching Data\",\"no-data-text\":\"No data\",\"loading-text\":\"Loading\"},on:{\"change\":function($event){return _vm.onCourseChange()}},model:{value:(_vm.currentCourse),callback:function ($$v) {_vm.currentCourse=$$v},expression:\"currentCourse\"}},[(_vm.courses.length > 1)?_c('el-option',{key:\"all\",attrs:{\"label\":\"All Courses\",\"value\":\"all\"}}):_vm._e(),_vm._l((_vm.courses),function(item){return _c('el-option',{key:item.Id,attrs:{\"label\":item.ClassDescription,\"value\":item}})})],2):_vm._e()],1),_c('el-tooltip',{attrs:{\"content\":\"Select Rubric\",\"placement\":\"top\"}},[((_vm.currentInstructor == 'all' || _vm.currentCourse == 'all') && _vm.rubrics)?_c('el-select',{staticStyle:{\"margin-right\":\"10px\",\"margin-top\":\"10px\"},attrs:{\"id\":\"rubric-selection\",\"value-key\":\"Id\",\"filterable\":\"\",\"placeholder\":\"Select Rubric\",\"no-match-text\":\"No Matching Data\",\"no-data-text\":\"No data\",\"loading-text\":\"Loading\"},on:{\"change\":function($event){return _vm.onRubricChange()}},model:{value:(_vm.currentRubric),callback:function ($$v) {_vm.currentRubric=$$v},expression:\"currentRubric\"}},_vm._l((_vm.rubrics),function(item){return _c('el-option',{key:item.RubricId,attrs:{\"label\":item.RubricName,\"value\":item}})}),1):_vm._e()],1),(_vm.currentInstructor != 'all' && _vm.assignments)?_c('el-tooltip',{staticClass:\"item\",attrs:{\"effect\":\"light\",\"content\":\"Select Project\",\"placement\":\"top\"}},[_c('el-select',{staticStyle:{\"margin-right\":\"10px\",\"margin-top\":\"10px\"},attrs:{\"id\":\"assignments-selection\",\"value-key\":\"Id\",\"filterable\":\"\",\"placeholder\":\"Select Project\",\"no-match-text\":\"No Matching Data\",\"no-data-text\":\"No data\",\"loading-text\":\"Loading\"},on:{\"change\":function($event){return _vm.onAssignmentChange()}},model:{value:(_vm.currentAssignment),callback:function ($$v) {_vm.currentAssignment=$$v},expression:\"currentAssignment\"}},_vm._l((_vm.assignments),function(item){return _c('el-option',{key:item.Id,attrs:{\"label\":item.AssignmentName,\"value\":item}})}),1)],1):_vm._e(),(_vm.currentAssignment || _vm.currentRubric)?_c('el-tooltip',{staticClass:\"item\",attrs:{\"effect\":\"light\",\"content\":\"Select a report type\",\"placement\":\"top\"}},[_c('el-select',{staticStyle:{\"margin-right\":\"10px\",\"margin-top\":\"10px\"},attrs:{\"id\":\"report-selection\",\"value-key\":\"Id\",\"filterable\":\"\",\"placeholder\":\"Select Report Type\",\"no-match-text\":\"No Matching Data\",\"no-data-text\":\"No data\",\"loading-text\":\"Loading\"},on:{\"change\":function($event){return _vm.onReportTypeChange()}},model:{value:(_vm.reportType),callback:function ($$v) {_vm.reportType=$$v},expression:\"reportType\"}},[_c('el-option',{key:0,attrs:{\"label\":\"Instructor Review\",\"value\":1}}),_c('el-option',{key:1,attrs:{\"label\":\"Self Review\",\"value\":2}}),_c('el-option',{key:2,attrs:{\"label\":\"Self Appraisal\",\"value\":3}})],1)],1):_vm._e(),((_vm.currentInstructor == 'all' || _vm.currentCourse == 'all' || _vm.currentAssignment) && _vm.reportType && _vm.rubricCriteria)?_c('el-tooltip',{staticClass:\"item\",attrs:{\"effect\":\"light\",\"content\":\"Select a criteria\",\"placement\":\"top\"}},[_c('el-select',{staticStyle:{\"margin-right\":\"10px\",\"margin-top\":\"10px\"},attrs:{\"id\":\"criteria-selection\",\"value-key\":\"Id\",\"filterable\":\"\",\"placeholder\":\"Select Criteria\",\"no-match-text\":\"No Matching Data\",\"no-data-text\":\"No data\",\"loading-text\":\"Loading\"},on:{\"change\":function($event){return _vm.onCriteriaChange()}},model:{value:(_vm.currentCriteria),callback:function ($$v) {_vm.currentCriteria=$$v},expression:\"currentCriteria\"}},[_c('el-option',{key:\"all\",attrs:{\"label\":\"All Criteria\",\"value\":\"all\"}}),_vm._l((_vm.rubricCriteria),function(item){return _c('el-option',{key:item.Id,attrs:{\"label\":item.CriteriaName,\"value\":item}})})],2)],1):_vm._e(),(_vm.tableData && _vm.tableData.length > 0)?_c('el-button',{staticStyle:{\"margin-right\":\"10px\",\"margin-top\":\"10px\"},on:{\"click\":function($event){return _vm.exportFile()}}},[_c('span',[_vm._v(\"\\n Export to Excel\\n \")])]):_vm._e()],1),(_vm.currentAssignment && _vm.reportType && _vm.currentInstructor != 'all')?_c('el-table',{ref:\"elTable\",staticStyle:{\"text-align\":\"center\",\"width\":\"100%\"},attrs:{\"id\":\"score-table\",\"data\":_vm.tableData.filter(function (data) { return !_vm.search || data.Name.toLowerCase().includes(_vm.search.toLowerCase()); }),\"height\":\"82vh\",\"default-sort\":{prop: 'date', order: 'descending'}}},[(_vm.isGroupProject)?_c('el-table-column',{attrs:{\"sortable\":\"\",\"fixed\":\"\",\"prop\":\"Name\",\"label\":\"Group Name\",\"width\":\"200\"}}):_c('el-table-column',{attrs:{\"sortable\":\"\",\"fixed\":\"\",\"prop\":\"Name\",\"label\":\"Student Name\",\"width\":\"200\"}}),(_vm.isGroupProject)?_c('el-table-column',{staticStyle:{\"text-align\":\"center\",\"vertical-align\":\"middle\"},attrs:{\"fixed\":\"\",\"label\":\"Group Members\"},scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [(scope.row.Members && scope.row.Members.length > 0)?_c('div',_vm._l((scope.row.Members),function(member,idx){return _c('div',{key:member.MemberId},[_c('span',[_vm._v(_vm._s((idx + 1) + '. ' + member.Name))])])}),0):_c('div',[_c('span')])]}}],null,false,3414159166)}):_vm._e(),(_vm.currentCriteria == 'all')?_c('el-table-column',{attrs:{\"label\":_vm.reviewType == 1 ? 'Instructor Review' : _vm.reviewType == 2 ? 'Self Review' : 'Self Appraisal',\"class-name\":\"center-align\"}},_vm._l((_vm.rubricCriteria),function(criteria){return _c('el-table-column',{key:criteria.Id,attrs:{\"label\":criteria.CriteriaName,\"class-name\":\"center-align\"}},[_c('el-table-column',{attrs:{\"class-name\":\"center-align\",\"label\":\"Score\",\"width\":\"100\"},scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [(scope.row.InstructorScore.length > 0 && scope.row.InstructorScore.find(function (x) { return x.CriteriaId == criteria.Id; }))?_c('div',[_vm._v(\"\\n \"+_vm._s(scope.row.InstructorScore.find(function (x) { return x.CriteriaId == criteria.Id; }).Mark == 999 ? 'Not Given' : scope.row.InstructorScore.find(function (x) { return x.CriteriaId == criteria.Id; }).Mark)+\"\\n \")]):_c('div',[_c('span',[_vm._v(\"Not Given\")])])]}}],null,true)}),_c('el-table-column',{attrs:{\"class-name\":\"center-align\",\"label\":\"Comment\"},scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [(scope.row.InstructorScore.length > 0 && scope.row.InstructorScore.find(function (x) { return x.CriteriaId == criteria.Id; }))?_c('div',{staticStyle:{\"max-height\":\"90px\"}},[_c('el-tooltip',{staticClass:\"item\",staticStyle:{\"margin-right\":\"18px\",\"margin-left\":\"0px\"},attrs:{\"effect\":\"light\",\"content\":scope.row.InstructorScore.find(function (x) { return x.CriteriaId == criteria.Id; }).Comment,\"placement\":\"bottom\",\"popper-class\":\"cutom-popper\"}},[_c('div',{staticStyle:{\"max-height\":\"90px\"}},[_vm._v(\"\\n \"+_vm._s(scope.row.InstructorScore.find(function (x) { return x.CriteriaId == criteria.Id; }).Comment)+\"\\n \")])])],1):_c('div',[_c('span',[_vm._v(\"Not Given\")])])]}}],null,true)})],1)}),1):_c('el-table-column',{attrs:{\"label\":_vm.reviewType == 1 ? 'Instructor Review' : _vm.reviewType == 2 ? 'Self Review' : 'Self Appraisal',\"class-name\":\"center-align\"}},[_c('el-table-column',{attrs:{\"class-name\":\"center-align\",\"label\":\"Score\",\"width\":\"100\"},scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [(scope.row.InstructorScore.length > 0 && scope.row.InstructorScore.find(function (x) { return x.CriteriaId == _vm.currentCriteria.Id; }))?_c('div',[_vm._v(\"\\n \"+_vm._s(scope.row.InstructorScore.find(function (x) { return x.CriteriaId == _vm.currentCriteria.Id; }).Mark == 999 ? 'Not Given' : scope.row.InstructorScore.find(function (x) { return x.CriteriaId == _vm.currentCriteria.Id; }).Mark)+\"\\n \")]):_c('div',[_c('span',[_vm._v(\"Not Given\")])])]}}],null,false,4099068234)}),_c('el-table-column',{attrs:{\"class-name\":\"center-align\",\"label\":\"Comment\"},scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [(scope.row.InstructorScore.length > 0 && scope.row.InstructorScore.find(function (x) { return x.CriteriaId == _vm.currentCriteria.Id; }))?_c('div',{staticStyle:{\"max-height\":\"90px\"}},[_c('el-tooltip',{staticClass:\"item\",staticStyle:{\"margin-right\":\"18px\",\"margin-left\":\"0px\"},attrs:{\"effect\":\"light\",\"content\":scope.row.InstructorScore.find(function (x) { return x.CriteriaId == _vm.currentCriteria.Id; }).Comment,\"placement\":\"bottom\",\"popper-class\":\"cutom-popper\"}},[_c('div',{staticStyle:{\"max-height\":\"90px\"}},[_vm._v(\"\\n \"+_vm._s(scope.row.InstructorScore.find(function (x) { return x.CriteriaId == _vm.currentCriteria.Id; }).Comment)+\"\\n \")])])],1):_c('div',[_c('span',[_vm._v(\"Not Given\")])])]}}],null,false,1397399441)})],1)],1):(_vm.currentInstructor == 'all' && _vm.currentRubric && _vm.reportType && _vm.tableData)?_c('el-table',{ref:\"elTable\",staticStyle:{\"text-align\":\"center\",\"width\":\"100%\"},attrs:{\"id\":\"score-table\",\"data\":_vm.tableData.filter(function (data) { return !_vm.search || data.StudentName.toLowerCase().includes(_vm.search.toLowerCase()); }),\"height\":\"82vh\",\"default-sort\":{prop: 'date', order: 'descending'}}},[_c('el-table-column',{attrs:{\"sortable\":\"\",\"fixed\":\"\",\"label\":\"Student Name\",\"width\":\"180\"},scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [(scope.row.StudentName && scope.row.StudentName.split(' ')[0] == 'Group')?_c('div',[_vm._v(\"\\n \"+_vm._s(scope.row.StudentName)+\":\\n \"),(scope.row.Members && scope.row.Members.length > 0)?_c('div',_vm._l((scope.row.Members),function(member,idx){return _c('div',{key:idx,staticStyle:{\"margin-left\":\"10px\"}},[_c('span',[_vm._v(_vm._s((idx + 1) + '. ' + member))])])}),0):_vm._e()]):_c('div',[_vm._v(\"\\n \"+_vm._s(scope.row.StudentName)+\"\\n \")])]}}])}),(_vm.reportType == 1)?_c('el-table-column',{attrs:{\"sortable\":\"\",\"fixed\":\"\",\"prop\":\"InstructorName\",\"label\":\"Instructor Name\",\"width\":\"165\"}}):_vm._e(),(_vm.currentCriteria == 'all')?_c('el-table-column',{attrs:{\"label\":\"Instructor Scores & Comments\",\"class-name\":\"center-align\"}},_vm._l((_vm.rubricCriteria),function(criteria){return _c('el-table-column',{key:criteria.Id,attrs:{\"label\":criteria.CriteriaName,\"class-name\":\"center-align\"}},[_c('el-table-column',{attrs:{\"class-name\":\"center-align\",\"label\":\"Score\",\"width\":\"100\"},scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [(scope.row.Scores.length > 0 && scope.row.Scores.find(function (x) { return x.CriteriaId == criteria.Id; }))?_c('div',[_vm._v(\"\\n \"+_vm._s(scope.row.Scores.find(function (x) { return x.CriteriaId == criteria.Id; }).Mark == 999 ? 'Not Given' : scope.row.Scores.find(function (x) { return x.CriteriaId == criteria.Id; }).Mark)+\"\\n \")]):_c('div',[_c('span',[_vm._v(\"Not Given\")])])]}}],null,true)}),_c('el-table-column',{attrs:{\"class-name\":\"center-align\",\"label\":\"Comment\"},scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [(scope.row.Scores.length > 0 && scope.row.Scores.find(function (x) { return x.CriteriaId == criteria.Id; }))?_c('div',{staticStyle:{\"max-height\":\"90px\"}},[_c('el-tooltip',{staticClass:\"item\",staticStyle:{\"margin-right\":\"18px\",\"margin-left\":\"0px\"},attrs:{\"effect\":\"light\",\"content\":scope.row.Scores.find(function (x) { return x.CriteriaId == criteria.Id; }).Comment,\"placement\":\"bottom\",\"popper-class\":\"cutom-popper\"}},[_c('div',{staticStyle:{\"max-height\":\"90px\"}},[_vm._v(\"\\n \"+_vm._s(scope.row.Scores.find(function (x) { return x.CriteriaId == criteria.Id; }).Comment)+\"\\n \")])])],1):_c('div',[_c('span',[_vm._v(\"Not Given\")])])]}}],null,true)})],1)}),1):_c('el-table-column',{attrs:{\"label\":\"Instructor Scores & Comments\",\"class-name\":\"center-align\"}},[_c('el-table-column',{attrs:{\"class-name\":\"center-align\",\"label\":\"Score\",\"width\":\"100\"},scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [(scope.row.Scores.length > 0 && scope.row.Scores.find(function (x) { return x.CriteriaId == _vm.currentCriteria.Id; }))?_c('div',[_vm._v(\"\\n \"+_vm._s(scope.row.Scores.find(function (x) { return x.CriteriaId == _vm.currentCriteria.Id; }).Mark == 999 ? 'Not Given' : scope.row.Scores.find(function (x) { return x.CriteriaId == _vm.currentCriteria.Id; }).Mark)+\"\\n \")]):_c('div',[_c('span',[_vm._v(\"Not Given\")])])]}}])}),_c('el-table-column',{attrs:{\"class-name\":\"center-align\",\"label\":\"Comment\"},scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [(scope.row.Scores.length > 0 && scope.row.Scores.find(function (x) { return x.CriteriaId == _vm.currentCriteria.Id; }))?_c('div',{staticStyle:{\"max-height\":\"90px\"}},[_c('el-tooltip',{staticClass:\"item\",staticStyle:{\"margin-right\":\"18px\",\"margin-left\":\"0px\"},attrs:{\"effect\":\"light\",\"content\":scope.row.Scores.find(function (x) { return x.CriteriaId == _vm.currentCriteria.Id; }).Comment,\"placement\":\"bottom\",\"popper-class\":\"cutom-popper\"}},[_c('div',{staticStyle:{\"max-height\":\"90px\"}},[_vm._v(\"\\n \"+_vm._s(scope.row.Scores.find(function (x) { return x.CriteriaId == _vm.currentCriteria.Id; }).Comment)+\"\\n \")])])],1):_c('div',[_c('span',[_vm._v(\"Not Given\")])])]}}])})],1)],1):(_vm.currentCourse == 'all' && _vm.currentRubric && _vm.reportType && _vm.tableData)?_c('el-table',{ref:\"elTable\",staticStyle:{\"text-align\":\"center\",\"width\":\"100%\"},attrs:{\"id\":\"score-table\",\"data\":_vm.tableData.filter(function (data) { return !_vm.search || data.StudentName.toLowerCase().includes(_vm.search.toLowerCase()); }),\"height\":\"82vh\",\"default-sort\":{prop: 'date', order: 'descending'}}},[_c('el-table-column',{attrs:{\"sortable\":\"\",\"fixed\":\"\",\"label\":\"Student Name\",\"width\":\"180\"},scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [(scope.row.StudentName && scope.row.StudentName.split(' ')[0] == 'Group')?_c('div',[_vm._v(\"\\n \"+_vm._s(scope.row.StudentName)+\":\\n \"),(scope.row.Members && scope.row.Members.length > 0)?_c('div',_vm._l((scope.row.Members),function(member,idx){return _c('div',{key:idx,staticStyle:{\"margin-left\":\"10px\"}},[_c('span',[_vm._v(_vm._s((idx + 1) + '. ' + member))])])}),0):_vm._e()]):_c('div',[_vm._v(\"\\n \"+_vm._s(scope.row.StudentName)+\"\\n \")])]}}])}),_c('el-table-column',{attrs:{\"sortable\":\"\",\"fixed\":\"\",\"prop\":\"ClassCode\",\"label\":\"Course Name\",\"width\":\"165\"}}),(_vm.currentCriteria == 'all')?_c('el-table-column',{attrs:{\"label\":\"Instructor Scores & Comments\",\"class-name\":\"center-align\"}},_vm._l((_vm.rubricCriteria),function(criteria){return _c('el-table-column',{key:criteria.Id,attrs:{\"label\":criteria.CriteriaName,\"class-name\":\"center-align\"}},[_c('el-table-column',{attrs:{\"class-name\":\"center-align\",\"label\":\"Score\",\"width\":\"100\"},scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [(scope.row.Scores.length > 0 && scope.row.Scores.find(function (x) { return x.CriteriaId == criteria.Id; }))?_c('div',[_vm._v(\"\\n \"+_vm._s(scope.row.Scores.find(function (x) { return x.CriteriaId == criteria.Id; }).Mark == 999 ? 'Not Given' : scope.row.Scores.find(function (x) { return x.CriteriaId == criteria.Id; }).Mark)+\"\\n \")]):_c('div',[_c('span',[_vm._v(\"Not Given\")])])]}}],null,true)}),_c('el-table-column',{attrs:{\"class-name\":\"center-align\",\"label\":\"Comment\"},scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [(scope.row.Scores.length > 0 && scope.row.Scores.find(function (x) { return x.CriteriaId == criteria.Id; }))?_c('div',{staticStyle:{\"max-height\":\"90px\"}},[_c('el-tooltip',{staticClass:\"item\",staticStyle:{\"margin-right\":\"18px\",\"margin-left\":\"0px\"},attrs:{\"effect\":\"light\",\"content\":scope.row.Scores.find(function (x) { return x.CriteriaId == criteria.Id; }).Comment,\"placement\":\"bottom\",\"popper-class\":\"cutom-popper\"}},[_c('div',{staticStyle:{\"max-height\":\"90px\"}},[_vm._v(\"\\n \"+_vm._s(scope.row.Scores.find(function (x) { return x.CriteriaId == criteria.Id; }).Comment)+\"\\n \")])])],1):_c('div',[_c('span',[_vm._v(\"Not Given\")])])]}}],null,true)})],1)}),1):_c('el-table-column',{attrs:{\"label\":\"Instructor Scores & Comments\",\"class-name\":\"center-align\"}},[_c('el-table-column',{attrs:{\"class-name\":\"center-align\",\"label\":\"Score\",\"width\":\"100\"},scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [(scope.row.Scores.length > 0 && scope.row.Scores.find(function (x) { return x.CriteriaId == _vm.currentCriteria.Id; }))?_c('div',[_vm._v(\"\\n \"+_vm._s(scope.row.Scores.find(function (x) { return x.CriteriaId == _vm.currentCriteria.Id; }).Mark == 999 ? 'Not Given' : scope.row.Scores.find(function (x) { return x.CriteriaId == _vm.currentCriteria.Id; }).Mark)+\"\\n \")]):_c('div',[_c('span',[_vm._v(\"Not Given\")])])]}}])}),_c('el-table-column',{attrs:{\"class-name\":\"center-align\",\"label\":\"Comment\"},scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [(scope.row.Scores.length > 0 && scope.row.Scores.find(function (x) { return x.CriteriaId == _vm.currentCriteria.Id; }))?_c('div',{staticStyle:{\"max-height\":\"90px\"}},[_c('el-tooltip',{staticClass:\"item\",staticStyle:{\"margin-right\":\"18px\",\"margin-left\":\"0px\"},attrs:{\"effect\":\"light\",\"content\":scope.row.Scores.find(function (x) { return x.CriteriaId == _vm.currentCriteria.Id; }).Comment,\"placement\":\"bottom\",\"popper-class\":\"cutom-popper\"}},[_c('div',{staticStyle:{\"max-height\":\"90px\"}},[_vm._v(\"\\n \"+_vm._s(scope.row.Scores.find(function (x) { return x.CriteriaId == _vm.currentCriteria.Id; }).Comment)+\"\\n \")])])],1):_c('div',[_c('span',[_vm._v(\"Not Given\")])])]}}])})],1)],1):_vm._e()],1)])}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"breadcumb\"},[_c('div',{staticClass:\"ic-app-crumbs\"},[_c('span',{staticClass:\"breadcumb-text\"},[_vm._v(\"\\n Reports\\n \"),_c('i',{staticClass:\"fas fa-chevron-right breadcumb-next\"}),_vm._v(\"\\n Outcomes Report\\n \")])])])}]\n\nexport { render, staticRenderFns }","<template>\r\n <div>\r\n <div class=\"breadcumb\">\r\n <div class=\"ic-app-crumbs\">\r\n <span class=\"breadcumb-text\">\r\n Reports\r\n <i class=\"fas fa-chevron-right breadcumb-next\" />\r\n Outcomes Report\r\n </span>\r\n </div>\r\n </div>\r\n <div class=\"student-submission-wrapper\">\r\n <div id=\"filter\" style=\"margin-bottom: 20px;\">\r\n <el-tooltip content=\"Select Term\" placement=\"top-start\">\r\n <el-select\r\n v-if=\"terms\"\r\n id=\"term-selection\"\r\n v-model=\"termCode\"\r\n filterable\r\n placeholder=\"Select Term\"\r\n no-match-text=\"No Matching Data\"\r\n no-data-text=\"No data\"\r\n loading-text=\"Loading\"\r\n style=\"margin-right: 10px; margin-top: 10px;\"\r\n @change=\"onTermChange()\"\r\n >\r\n <el-option\r\n v-for=\"item in terms\"\r\n :key=\"item.TermCode\"\r\n :label=\"item.TermDescription\"\r\n :value=\"item.TermCode\"\r\n />\r\n </el-select>\r\n </el-tooltip>\r\n\r\n <el-tooltip content=\"Select Term\" placement=\"top-start\">\r\n <el-select\r\n v-if=\"courseTypes && isAdmin && termCode\"\r\n id=\"course-type-selection\"\r\n v-model=\"courseType\"\r\n filterable\r\n placeholder=\"Select Course Type\"\r\n no-match-text=\"No Matching Data\"\r\n no-data-text=\"No data\"\r\n loading-text=\"Loading\"\r\n style=\"margin-right: 10px; margin-top: 10px;\"\r\n @change=\"onCourseTypeChange()\"\r\n >\r\n <el-option\r\n v-for=\"item in courseTypes\"\r\n :key=\"item.Id\"\r\n :label=\"item.Name\"\r\n :value=\"item.Id\"\r\n />\r\n </el-select>\r\n </el-tooltip>\r\n\r\n <el-tooltip v-if=\"termCode && isAdmin && instructors && termCode\" content=\"Select Instructor\" placement=\"right-start\">\r\n <el-select\r\n id=\"instructor-selection\"\r\n v-model=\"currentInstructor\"\r\n filterable\r\n placeholder=\"Select Instructor\"\r\n no-match-text=\"No Matching Data\"\r\n no-data-text=\"No data\"\r\n loading-text=\"Loading\"\r\n style=\"margin-right: 10px; margin-top: 10px;\"\r\n @change=\"onInstructorChange()\"\r\n >\r\n <el-option\r\n key=\"all\"\r\n label=\"All Instructors\"\r\n value=\"all\"\r\n />\r\n <el-option\r\n v-for=\"item in instructors\"\r\n :key=\"item.UserName\"\r\n :label=\"item.LastName + ', ' + item.FirstName\"\r\n :value=\"item.UserName\"\r\n />\r\n </el-select>\r\n </el-tooltip>\r\n\r\n <el-tooltip content=\"Select Course\" placement=\"top\">\r\n <el-select\r\n v-if=\"currentInstructor != 'all' && courses\"\r\n id=\"course-selection\"\r\n v-model=\"currentCourse\"\r\n value-key=\"ClassCode\"\r\n filterable\r\n placeholder=\"Select Course\"\r\n no-match-text=\"No Matching Data\"\r\n no-data-text=\"No data\"\r\n loading-text=\"Loading\"\r\n style=\"margin-right: 10px; margin-top: 10px;\"\r\n @change=\"onCourseChange()\"\r\n >\r\n <el-option\r\n v-if=\"courses.length > 1\"\r\n key=\"all\"\r\n label=\"All Courses\"\r\n value=\"all\"\r\n />\r\n <el-option\r\n v-for=\"item in courses\"\r\n :key=\"item.Id\"\r\n :label=\"item.ClassDescription\"\r\n :value=\"item\"\r\n />\r\n </el-select>\r\n </el-tooltip>\r\n\r\n <el-tooltip content=\"Select Rubric\" placement=\"top\">\r\n <el-select\r\n v-if=\"(currentInstructor == 'all' || currentCourse == 'all') && rubrics\"\r\n id=\"rubric-selection\"\r\n v-model=\"currentRubric\"\r\n value-key=\"Id\"\r\n filterable\r\n placeholder=\"Select Rubric\"\r\n no-match-text=\"No Matching Data\"\r\n no-data-text=\"No data\"\r\n loading-text=\"Loading\"\r\n style=\"margin-right: 10px; margin-top: 10px;\"\r\n @change=\"onRubricChange()\"\r\n >\r\n <el-option\r\n v-for=\"item in rubrics\"\r\n :key=\"item.RubricId\"\r\n :label=\"item.RubricName\"\r\n :value=\"item\"\r\n />\r\n </el-select>\r\n </el-tooltip>\r\n\r\n <el-tooltip v-if=\"currentInstructor != 'all' && assignments\" class=\"item\" effect=\"light\" content=\"Select Project\" placement=\"top\">\r\n <el-select\r\n id=\"assignments-selection\"\r\n v-model=\"currentAssignment\"\r\n value-key=\"Id\"\r\n filterable\r\n placeholder=\"Select Project\"\r\n no-match-text=\"No Matching Data\"\r\n no-data-text=\"No data\"\r\n loading-text=\"Loading\"\r\n style=\"margin-right: 10px; margin-top: 10px;\"\r\n @change=\"onAssignmentChange()\"\r\n >\r\n <el-option\r\n v-for=\"item in assignments\"\r\n :key=\"item.Id\"\r\n :label=\"item.AssignmentName\"\r\n :value=\"item\"\r\n />\r\n </el-select>\r\n </el-tooltip>\r\n\r\n <el-tooltip v-if=\"currentAssignment || currentRubric\" class=\"item\" effect=\"light\" content=\"Select a report type\" placement=\"top\">\r\n <el-select\r\n id=\"report-selection\"\r\n v-model=\"reportType\"\r\n value-key=\"Id\"\r\n filterable\r\n placeholder=\"Select Report Type\"\r\n no-match-text=\"No Matching Data\"\r\n no-data-text=\"No data\"\r\n loading-text=\"Loading\"\r\n style=\"margin-right: 10px; margin-top: 10px;\"\r\n @change=\"onReportTypeChange()\"\r\n >\r\n <el-option\r\n :key=\"0\"\r\n label=\"Instructor Review\"\r\n :value=\"1\"\r\n />\r\n <el-option\r\n :key=\"1\"\r\n label=\"Self Review\"\r\n :value=\"2\"\r\n />\r\n <el-option\r\n :key=\"2\"\r\n label=\"Self Appraisal\"\r\n :value=\"3\"\r\n />\r\n </el-select>\r\n </el-tooltip>\r\n\r\n <el-tooltip\r\n v-if=\"(currentInstructor == 'all' || currentCourse == 'all' || currentAssignment) && reportType && rubricCriteria\"\r\n class=\"item\"\r\n effect=\"light\"\r\n content=\"Select a criteria\"\r\n placement=\"top\"\r\n >\r\n <el-select\r\n id=\"criteria-selection\"\r\n v-model=\"currentCriteria\"\r\n value-key=\"Id\"\r\n filterable\r\n placeholder=\"Select Criteria\"\r\n no-match-text=\"No Matching Data\"\r\n no-data-text=\"No data\"\r\n loading-text=\"Loading\"\r\n style=\"margin-right: 10px; margin-top: 10px;\"\r\n @change=\"onCriteriaChange()\"\r\n >\r\n <el-option\r\n key=\"all\"\r\n label=\"All Criteria\"\r\n value=\"all\"\r\n />\r\n <el-option\r\n v-for=\"item in rubricCriteria\"\r\n :key=\"item.Id\"\r\n :label=\"item.CriteriaName\"\r\n :value=\"item\"\r\n />\r\n </el-select>\r\n </el-tooltip>\r\n\r\n <el-button v-if=\"tableData && tableData.length > 0\" style=\"margin-right: 10px; margin-top: 10px;\" @click=\"exportFile()\">\r\n <span>\r\n Export to Excel\r\n </span>\r\n </el-button>\r\n </div>\r\n\r\n <el-table\r\n v-if=\"currentAssignment && reportType && currentInstructor != 'all'\"\r\n id=\"score-table\"\r\n ref=\"elTable\"\r\n :data=\"tableData.filter(data => !search || data.Name.toLowerCase().includes(search.toLowerCase()))\"\r\n style=\"text-align:center; width: 100%\"\r\n height=\"82vh\"\r\n :default-sort=\"{prop: 'date', order: 'descending'}\"\r\n >\r\n <el-table-column v-if=\"isGroupProject\" sortable fixed prop=\"Name\" label=\"Group Name\" width=\"200\" />\r\n <el-table-column v-else sortable fixed prop=\"Name\" label=\"Student Name\" width=\"200\" />\r\n <el-table-column v-if=\"isGroupProject\" fixed label=\"Group Members\" style=\"text-align: center; vertical-align: middle;\">\r\n <template slot-scope=\"scope\">\r\n <div v-if=\"scope.row.Members && scope.row.Members.length > 0\">\r\n <div v-for=\"(member, idx) in scope.row.Members\" :key=\"member.MemberId\">\r\n <span>{{ (idx + 1) + '. ' + member.Name }}</span>\r\n </div>\r\n </div>\r\n <div v-else>\r\n <span />\r\n </div>\r\n </template>\r\n </el-table-column>\r\n\r\n <el-table-column v-if=\"currentCriteria == 'all'\" :label=\"reviewType == 1 ? 'Instructor Review' : reviewType == 2 ? 'Self Review' : 'Self Appraisal'\" class-name=\"center-align\">\r\n <el-table-column v-for=\"(criteria) in rubricCriteria\" :key=\"criteria.Id\" :label=\"criteria.CriteriaName\" class-name=\"center-align\">\r\n <el-table-column class-name=\"center-align\" label=\"Score\" width=\"100\">\r\n <template slot-scope=\"scope\">\r\n <div v-if=\"scope.row.InstructorScore.length > 0 && scope.row.InstructorScore.find(x => x.CriteriaId == criteria.Id)\">\r\n {{ scope.row.InstructorScore.find(x => x.CriteriaId == criteria.Id).Mark == 999 ? 'Not Given' : scope.row.InstructorScore.find(x => x.CriteriaId == criteria.Id).Mark }}\r\n </div>\r\n <div v-else>\r\n <span>Not Given</span>\r\n </div>\r\n </template>\r\n </el-table-column>\r\n <el-table-column class-name=\"center-align\" label=\"Comment\">\r\n <template slot-scope=\"scope\">\r\n <div v-if=\"scope.row.InstructorScore.length > 0 && scope.row.InstructorScore.find(x => x.CriteriaId == criteria.Id)\" style=\"max-height: 90px;\">\r\n <el-tooltip\r\n style=\"margin-right: 18px; margin-left: 0px;\"\r\n class=\"item\"\r\n effect=\"light\"\r\n :content=\"scope.row.InstructorScore.find(x => x.CriteriaId == criteria.Id).Comment\"\r\n placement=\"bottom\"\r\n popper-class=\"cutom-popper\"\r\n >\r\n <div style=\"max-height: 90px;\">\r\n {{ scope.row.InstructorScore.find(x => x.CriteriaId == criteria.Id).Comment }}\r\n </div>\r\n </el-tooltip>\r\n </div>\r\n <div v-else>\r\n <span>Not Given</span>\r\n </div>\r\n </template>\r\n </el-table-column>\r\n </el-table-column>\r\n </el-table-column>\r\n\r\n <el-table-column v-else :label=\"reviewType == 1 ? 'Instructor Review' : reviewType == 2 ? 'Self Review' : 'Self Appraisal'\" class-name=\"center-align\">\r\n <el-table-column class-name=\"center-align\" label=\"Score\" width=\"100\">\r\n <template slot-scope=\"scope\">\r\n <div v-if=\"scope.row.InstructorScore.length > 0 && scope.row.InstructorScore.find(x => x.CriteriaId == currentCriteria.Id)\">\r\n {{ scope.row.InstructorScore.find(x => x.CriteriaId == currentCriteria.Id).Mark == 999 ? 'Not Given' : scope.row.InstructorScore.find(x => x.CriteriaId == currentCriteria.Id).Mark }}\r\n </div>\r\n <div v-else>\r\n <span>Not Given</span>\r\n </div>\r\n </template>\r\n </el-table-column>\r\n <el-table-column class-name=\"center-align\" label=\"Comment\">\r\n <template slot-scope=\"scope\">\r\n <div v-if=\"scope.row.InstructorScore.length > 0 && scope.row.InstructorScore.find(x => x.CriteriaId == currentCriteria.Id)\" style=\"max-height: 90px;\">\r\n <el-tooltip\r\n style=\"margin-right: 18px; margin-left: 0px;\"\r\n class=\"item\"\r\n effect=\"light\"\r\n :content=\"scope.row.InstructorScore.find(x => x.CriteriaId == currentCriteria.Id).Comment\"\r\n placement=\"bottom\"\r\n popper-class=\"cutom-popper\"\r\n >\r\n <div style=\"max-height: 90px;\">\r\n {{ scope.row.InstructorScore.find(x => x.CriteriaId == currentCriteria.Id).Comment }}\r\n </div>\r\n </el-tooltip>\r\n </div>\r\n <div v-else>\r\n <span>Not Given</span>\r\n </div>\r\n </template>\r\n </el-table-column>\r\n </el-table-column>\r\n </el-table>\r\n <el-table\r\n v-else-if=\"currentInstructor == 'all' && currentRubric && reportType && tableData\"\r\n id=\"score-table\"\r\n ref=\"elTable\"\r\n :data=\"tableData.filter(data => !search || data.StudentName.toLowerCase().includes(search.toLowerCase()))\"\r\n style=\"text-align:center; width: 100%\"\r\n height=\"82vh\"\r\n :default-sort=\"{prop: 'date', order: 'descending'}\"\r\n >\r\n <!-- <el-table-column sortable fixed prop=\"StudentName\" label=\"Student Name\" width=\"150\" /> -->\r\n\r\n <el-table-column sortable fixed label=\"Student Name\" width=\"180\">\r\n <template slot-scope=\"scope\">\r\n <div v-if=\"scope.row.StudentName && scope.row.StudentName.split(' ')[0] == 'Group'\">\r\n {{ scope.row.StudentName }}:\r\n <div v-if=\"scope.row.Members && scope.row.Members.length > 0\">\r\n <div v-for=\"(member, idx) in scope.row.Members\" :key=\"idx\" style=\"margin-left: 10px;\">\r\n <span>{{ (idx + 1) + '. ' + member }}</span>\r\n </div>\r\n </div>\r\n </div>\r\n <div v-else>\r\n {{ scope.row.StudentName }}\r\n </div>\r\n </template>\r\n </el-table-column>\r\n\r\n <el-table-column v-if=\"reportType == 1\" sortable fixed prop=\"InstructorName\" label=\"Instructor Name\" width=\"165\" />\r\n <el-table-column v-if=\"currentCriteria == 'all'\" label=\"Instructor Scores & Comments\" class-name=\"center-align\">\r\n <el-table-column v-for=\"(criteria) in rubricCriteria\" :key=\"criteria.Id\" :label=\"criteria.CriteriaName\" class-name=\"center-align\">\r\n <el-table-column class-name=\"center-align\" label=\"Score\" width=\"100\">\r\n <template slot-scope=\"scope\">\r\n <div v-if=\"scope.row.Scores.length > 0 && scope.row.Scores.find(x => x.CriteriaId == criteria.Id)\">\r\n {{ scope.row.Scores.find(x => x.CriteriaId == criteria.Id).Mark == 999 ? 'Not Given' : scope.row.Scores.find(x => x.CriteriaId == criteria.Id).Mark }}\r\n </div>\r\n <div v-else>\r\n <span>Not Given</span>\r\n </div>\r\n </template>\r\n </el-table-column>\r\n <el-table-column class-name=\"center-align\" label=\"Comment\">\r\n <template slot-scope=\"scope\">\r\n <div v-if=\"scope.row.Scores.length > 0 && scope.row.Scores.find(x => x.CriteriaId == criteria.Id)\" style=\"max-height: 90px;\">\r\n <el-tooltip\r\n style=\"margin-right: 18px; margin-left: 0px;\"\r\n class=\"item\"\r\n effect=\"light\"\r\n :content=\"scope.row.Scores.find(x => x.CriteriaId == criteria.Id).Comment\"\r\n placement=\"bottom\"\r\n popper-class=\"cutom-popper\"\r\n >\r\n <div style=\"max-height: 90px;\">\r\n {{ scope.row.Scores.find(x => x.CriteriaId == criteria.Id).Comment }}\r\n </div>\r\n </el-tooltip>\r\n </div>\r\n <div v-else>\r\n <span>Not Given</span>\r\n </div>\r\n </template>\r\n </el-table-column>\r\n </el-table-column>\r\n </el-table-column>\r\n\r\n <el-table-column v-else label=\"Instructor Scores & Comments\" class-name=\"center-align\">\r\n <el-table-column class-name=\"center-align\" label=\"Score\" width=\"100\">\r\n <template slot-scope=\"scope\">\r\n <div v-if=\"scope.row.Scores.length > 0 && scope.row.Scores.find(x => x.CriteriaId == currentCriteria.Id)\">\r\n {{ scope.row.Scores.find(x => x.CriteriaId == currentCriteria.Id).Mark == 999 ? 'Not Given' : scope.row.Scores.find(x => x.CriteriaId == currentCriteria.Id).Mark }}\r\n </div>\r\n <div v-else>\r\n <span>Not Given</span>\r\n </div>\r\n </template>\r\n </el-table-column>\r\n <el-table-column class-name=\"center-align\" label=\"Comment\">\r\n <template slot-scope=\"scope\">\r\n <div v-if=\"scope.row.Scores.length > 0 && scope.row.Scores.find(x => x.CriteriaId == currentCriteria.Id)\" style=\"max-height: 90px;\">\r\n <el-tooltip\r\n style=\"margin-right: 18px; margin-left: 0px;\"\r\n class=\"item\"\r\n effect=\"light\"\r\n :content=\"scope.row.Scores.find(x => x.CriteriaId == currentCriteria.Id).Comment\"\r\n placement=\"bottom\"\r\n popper-class=\"cutom-popper\"\r\n >\r\n <div style=\"max-height: 90px;\">\r\n {{ scope.row.Scores.find(x => x.CriteriaId == currentCriteria.Id).Comment }}\r\n </div>\r\n </el-tooltip>\r\n </div>\r\n <div v-else>\r\n <span>Not Given</span>\r\n </div>\r\n </template>\r\n </el-table-column>\r\n </el-table-column>\r\n </el-table>\r\n\r\n <el-table\r\n v-else-if=\"currentCourse == 'all' && currentRubric && reportType && tableData\"\r\n id=\"score-table\"\r\n ref=\"elTable\"\r\n :data=\"tableData.filter(data => !search || data.StudentName.toLowerCase().includes(search.toLowerCase()))\"\r\n style=\"text-align:center; width: 100%\"\r\n height=\"82vh\"\r\n :default-sort=\"{prop: 'date', order: 'descending'}\"\r\n >\r\n <!-- <el-table-column sortable fixed prop=\"StudentName\" label=\"Student Name\" width=\"150\" /> -->\r\n\r\n <el-table-column sortable fixed label=\"Student Name\" width=\"180\">\r\n <template slot-scope=\"scope\">\r\n <div v-if=\"scope.row.StudentName && scope.row.StudentName.split(' ')[0] == 'Group'\">\r\n {{ scope.row.StudentName }}:\r\n <div v-if=\"scope.row.Members && scope.row.Members.length > 0\">\r\n <div v-for=\"(member, idx) in scope.row.Members\" :key=\"idx\" style=\"margin-left: 10px;\">\r\n <span>{{ (idx + 1) + '. ' + member }}</span>\r\n </div>\r\n </div>\r\n </div>\r\n <div v-else>\r\n {{ scope.row.StudentName }}\r\n </div>\r\n </template>\r\n </el-table-column>\r\n <el-table-column sortable fixed prop=\"ClassCode\" label=\"Course Name\" width=\"165\" />\r\n <el-table-column v-if=\"currentCriteria == 'all'\" label=\"Instructor Scores & Comments\" class-name=\"center-align\">\r\n <el-table-column v-for=\"(criteria) in rubricCriteria\" :key=\"criteria.Id\" :label=\"criteria.CriteriaName\" class-name=\"center-align\">\r\n <el-table-column class-name=\"center-align\" label=\"Score\" width=\"100\">\r\n <template slot-scope=\"scope\">\r\n <div v-if=\"scope.row.Scores.length > 0 && scope.row.Scores.find(x => x.CriteriaId == criteria.Id)\">\r\n {{ scope.row.Scores.find(x => x.CriteriaId == criteria.Id).Mark == 999 ? 'Not Given' : scope.row.Scores.find(x => x.CriteriaId == criteria.Id).Mark }}\r\n </div>\r\n <div v-else>\r\n <span>Not Given</span>\r\n </div>\r\n </template>\r\n </el-table-column>\r\n <el-table-column class-name=\"center-align\" label=\"Comment\">\r\n <template slot-scope=\"scope\">\r\n <div v-if=\"scope.row.Scores.length > 0 && scope.row.Scores.find(x => x.CriteriaId == criteria.Id)\" style=\"max-height: 90px;\">\r\n <el-tooltip\r\n style=\"margin-right: 18px; margin-left: 0px;\"\r\n class=\"item\"\r\n effect=\"light\"\r\n :content=\"scope.row.Scores.find(x => x.CriteriaId == criteria.Id).Comment\"\r\n placement=\"bottom\"\r\n popper-class=\"cutom-popper\"\r\n >\r\n <div style=\"max-height: 90px;\">\r\n {{ scope.row.Scores.find(x => x.CriteriaId == criteria.Id).Comment }}\r\n </div>\r\n </el-tooltip>\r\n </div>\r\n <div v-else>\r\n <span>Not Given</span>\r\n </div>\r\n </template>\r\n </el-table-column>\r\n </el-table-column>\r\n </el-table-column>\r\n\r\n <el-table-column v-else label=\"Instructor Scores & Comments\" class-name=\"center-align\">\r\n <el-table-column class-name=\"center-align\" label=\"Score\" width=\"100\">\r\n <template slot-scope=\"scope\">\r\n <div v-if=\"scope.row.Scores.length > 0 && scope.row.Scores.find(x => x.CriteriaId == currentCriteria.Id)\">\r\n {{ scope.row.Scores.find(x => x.CriteriaId == currentCriteria.Id).Mark == 999 ? 'Not Given' : scope.row.Scores.find(x => x.CriteriaId == currentCriteria.Id).Mark }}\r\n </div>\r\n <div v-else>\r\n <span>Not Given</span>\r\n </div>\r\n </template>\r\n </el-table-column>\r\n <el-table-column class-name=\"center-align\" label=\"Comment\">\r\n <template slot-scope=\"scope\">\r\n <div v-if=\"scope.row.Scores.length > 0 && scope.row.Scores.find(x => x.CriteriaId == currentCriteria.Id)\" style=\"max-height: 90px;\">\r\n <el-tooltip\r\n style=\"margin-right: 18px; margin-left: 0px;\"\r\n class=\"item\"\r\n effect=\"light\"\r\n :content=\"scope.row.Scores.find(x => x.CriteriaId == currentCriteria.Id).Comment\"\r\n placement=\"bottom\"\r\n popper-class=\"cutom-popper\"\r\n >\r\n <div style=\"max-height: 90px;\">\r\n {{ scope.row.Scores.find(x => x.CriteriaId == currentCriteria.Id).Comment }}\r\n </div>\r\n </el-tooltip>\r\n </div>\r\n <div v-else>\r\n <span>Not Given</span>\r\n </div>\r\n </template>\r\n </el-table-column>\r\n </el-table-column>\r\n </el-table>\r\n </div>\r\n </div>\r\n</template>\r\n\r\n<script>\r\nimport * as termService from '@/services/term.service'\r\nimport * as teamFormationService from '@/services/team_formation.service'\r\nimport * as assignmentService from '@/services/assignment.service'\r\nimport * as reviewService from '@/services/review.service'\r\nimport * as rubricService from '@/services/rubric.service'\r\nimport * as userService from '@/services/user.service'\r\nimport * as enrollmentService from '@/services/enrollment.service'\r\nimport * as templateService from '@/services/project_template.service'\r\nimport { Notification } from 'element-ui'\r\nimport exportFromJSON from 'export-from-json'\r\nimport _ from 'lodash'\r\n// Hadnles UI and logics for the Outcomes Report page.\r\nexport default {\r\n\tname: 'OutcomesReport',\r\n\tdata() {\r\n\t\treturn {\r\n\t\t\tusername: this.$store.state.auth.user.UserName,\r\n\t\t\torgCode: this.$store.state.auth.user.OrgCode,\r\n\t\t\tenrolledCourses: this.$store.state.enrollment.courses,\r\n\t\t\tterms: null,\r\n\t\t\tcurrentTerm: null,\r\n\t\t\tcourses: null,\r\n\t\t currentCourse: null,\r\n\t\t\tclassCode: null,\r\n\t\t\ttermCode: null,\r\n\t\t\tassignments: null,\r\n\t\t\tcurrentAssignment: null,\r\n\t\t\tassignmentId: null,\r\n\t\t\tisGroupProject: false,\r\n\t\t\ttableData: [],\r\n\t\t\tsearch: '',\r\n\t\t\tinstructorScores: [],\r\n\t\t\tgroups: [],\r\n\t\t\tstudents: [],\r\n\t\t\trubricCriteria: [],\r\n\t\t\tcurrentCriteria: 'all',\r\n\t\t\treportType: null,\r\n\t\t\tselfReviewScores: [],\r\n\t\t\tappraisalScores: [],\r\n\t\t\tisAdmin: false,\r\n\t\t\tinstructors: null,\r\n\t\t\tisViewingCourse: null,\r\n\t\t\tcurrentInstructor: null,\r\n\t\t\tcourseTypes: [\r\n\t\t\t\t{\r\n\t\t\t\t\tId: '1101',\r\n\t\t\t\t\tName: 'ENC 1101'\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tId: '1102',\r\n\t\t\t\t\tName: 'ENC 1102'\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tId: 'PTC',\r\n\t\t\t\t\tName: 'All PTC'\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tId: '2210',\r\n\t\t\t\t\tName: 'ENC 2210'\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tId: '3246',\r\n\t\t\t\t\tName: 'ENC 3246'\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tId: '3250',\r\n\t\t\t\t\tName: 'ENC 3250'\r\n\t\t\t\t}\r\n\t\t\t],\r\n\t\t\tcourseType: null,\r\n\t\t\trubrics: null,\r\n\t\t\ttemplateId: null,\r\n\t\t\tcurrentRubric: null\r\n \t}\r\n\t},\r\n\tcreated() {\r\n\t\tthis.isAdmin = _.includes(this.$store.state.auth.user.Roles, 'Administrator')\r\n\t\t// this.instructors = this.$store.state.viewAs.instructors;\r\n\t\tthis.isViewingCourse = this.$store.state.enrollment.currentCourse\r\n\r\n\t\tif (this.isAdmin) { this.enrolledCourses = null } else { this.currentInstructor = this.username }\r\n\t\tthis.getAllTerms()\r\n\t},\r\n\t methods: {\r\n\t\t// @vuese\r\n\t\t// Get all terms by organization code.\r\n\t\tasync getAllTerms() {\r\n\t\t\tthis.terms = await termService.getTerms(this.orgCode)\r\n\t\t},\r\n\r\n\t\t// @vuese\r\n\t\t// Handle logics when a term is selected.\r\n\t\tasync onTermChange() {\r\n\t\t\tthis.currentCourse = null\r\n\t\t\tthis.assignments = null\r\n\t\t\tthis.currentAssignment = null\r\n\t\t\tthis.tableData = []\r\n\t\t\tthis.reportType = null\r\n\t\t\tthis.rubrics = null\r\n\t\t\tthis.currentRubric = null\r\n\t\t\tthis.courseType = null\r\n\t\t\tthis.instructors = null\r\n\t\t\tif (!this.isAdmin) { this.courses = this.enrolledCourses.filter(course => { return course.TermCode == this.termCode }) } else { this.currentInstructor = null }\r\n\t\t},\r\n\t\tonCourseTypeChange() {\r\n\t\t\tthis.currentCourse = null\r\n\t\t\tthis.assignments = null\r\n\t\t\tthis.currentAssignment = null\r\n\t\t\tthis.tableData = []\r\n\t\t\tthis.instructors = null\r\n\t\t\tthis.currentInstructor = null\r\n\t\t\tthis.courses = null\r\n\t\t\tthis.reportType = null\r\n\t\t\tthis.getInstructors()\r\n\t\t},\r\n\t\tasync getInstructors() {\r\n\t\t\tthis.instructors = await userService.getInstructorsByCourseType(this.orgCode, this.termCode, this.courseType)\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Get term description by term code.\r\n\t\t// @arg The term code.\r\n\t\tgetTermDescription(termCode) {\r\n\t\t\tlet description = ''\r\n\t\t\tconst semester = termCode.slice(4, 6)\r\n\t\t\tswitch (semester) {\r\n\t\t\t\tcase '01':\r\n\t\t\t\t\tdescription = 'Spring'\r\n\t\t\t\t\tbreak\r\n\t\t\t\tcase '05':\r\n\t\t\t\t\tdescription = 'Summer'\r\n\t\t\t\t\tbreak\r\n\t\t\t\tcase '08': description = 'Fall'\r\n\t\t\t\t\tbreak\r\n\t\t\t\tdefault:\r\n\t\t\t\t\tbreak\r\n\t\t\t}\r\n\t\t\tconst year = termCode.slice(0, 4)\r\n\t\t\tdescription += ' ' + year\r\n\t\t\treturn description\r\n\t\t},\r\n\r\n\t\tasync onInstructorChange() {\r\n\t\t\tthis.currentCourse = null\r\n\t\t\tthis.assignments = null\r\n\t\t\tthis.currentAssignment = null\r\n\t\t\tthis.tableData = []\r\n\t\t\tthis.rubricCriteria = null\r\n\t\t\tthis.currentCriteria = 'all'\r\n\t\t\tthis.reportType = null\r\n\t\t\tthis.rubrics = null\r\n\t\t\tthis.currentRubric = null\r\n\r\n\t\t\tif (this.currentInstructor == 'all') {\r\n\t\t\t\tthis.prepareAllInstructorReport()\r\n\t\t\t} else {\r\n\t\t\t\tconst enrollments = await enrollmentService.getEnrollments(this.currentInstructor, this.orgCode)\r\n\t\t\t\tif (enrollments && enrollments.length > 0) {\r\n\t\t\t\t\tthis.enrolledCourses = enrollments\r\n\t\t\t\t\t\t.map(item => {\r\n\t\t\t\t\t\t\tif (item != null) {\r\n\t\t\t\t\t\t\t\tconst course = {\r\n\t\t\t\t\t\t\t\t\tClassCode: item.ClassCode,\r\n\t\t\t\t\t\t\t\t\tClassDescription: item.ClassDescription,\r\n\t\t\t\t\t\t\t\t\tIsPaidCourse: item.IsPaidCourse,\r\n\t\t\t\t\t\t\t\t\tOrgCode: item.OrgCode,\r\n\t\t\t\t\t\t\t\t\tProjectTemplate: item.ProjectTemplateId,\r\n\t\t\t\t\t\t\t\t\tTermCode: item.TermCode,\r\n\t\t\t\t\t\t\t\t\tUserRole: item.UserRole\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\treturn course\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t})\r\n\t\t\t\t\t\t.filter(item => { return item != null })\r\n\r\n\t\t\t\t\tif (this.courseType == 'PTC') {\r\n\t\t\t\t\t\tthis.courses = this.enrolledCourses.filter(course => {\r\n\t\t\t\t\t\t\treturn course.TermCode == this.termCode &&\r\n (course.ClassDescription.includes('ENC 2210') || course.ClassDescription.includes('ENC 3246') || course.ClassDescription.includes('ENC 3250'))\r\n\t\t\t\t\t\t})\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tthis.courses = this.enrolledCourses.filter(course => {\r\n\t\t\t\t\t\t\treturn course.TermCode == this.termCode &&\r\n course.ClassDescription.includes('ENC ' + this.courseType)\r\n\t\t\t\t\t\t})\r\n\t\t\t\t\t}\r\n\t\t\t\t} else {\r\n\t\t\t\t\tNotification.error({\r\n\t\t\t\t\t\tduration: 6000,\r\n\t\t\t\t\t\ttitle: 'Error',\r\n\t\t\t\t\t\tmessage: 'The selected instructor is not actively enrolled in any course.'\r\n\t\t\t\t\t})\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t},\r\n\t\tasync prepareAllInstructorReport() {\r\n\t\t\tlet type = ''\r\n\t\t\tlet thisTemplate\r\n\t\t\tswitch (this.courseType) {\r\n\t\t\t\tcase '1101':\r\n\t\t\t\t\ttype = 'ENC 1101'\r\n\t\t\t\t\tthisTemplate = await templateService.getRootTemplateByCourseType(this.termCode, this.orgCode, type)\r\n\t\t\t\t\tbreak\r\n\t\t\t\tcase '1102':\r\n\t\t\t\t\ttype = 'ENC 1102'\r\n\t\t\t\t\tthisTemplate = await templateService.getRootTemplateByCourseType(this.termCode, this.orgCode, type)\r\n\t\t\t\t\tbreak\r\n\t\t\t\tdefault:\r\n\t\t\t\t\ttype = 'PTC'\r\n\t\t\t\t\tthisTemplate = await templateService.getRootTemplateByCourseType(this.termCode, this.orgCode, type)\r\n\t\t\t\t\tbreak\r\n\t\t\t}\r\n\t\t\tif (thisTemplate) {\r\n\t\t\t\tthis.templateId = thisTemplate.Id\r\n\t\t\t\tthis.rubrics = await rubricService.getRubricsInTemplate(this.templateId)\r\n\t\t\t\tconst appraisalRubrics = await rubricService.getAppraisalRubrics(this.templateId)\r\n\t\t\t\tthis.rubrics = this.rubrics.concat(appraisalRubrics)\r\n\t\t\t}\r\n\t\t},\r\n\t\tasync prepareAllCoursesReport() {\r\n\t\t\tif (this.courseType != null) {\r\n\t\t\t\tlet type = ''\r\n\t\t\t let thisTemplate\r\n\t\t\t\tswitch (this.courseType) {\r\n\t\t\t\t\tcase '1101':\r\n\t\t\t\t\t\ttype = 'ENC 1101'\r\n\t\t\t\t\t\tthisTemplate = await templateService.getRootTemplateByCourseType(this.termCode, this.orgCode, type)\r\n\t\t\t\t\t\tbreak\r\n\t\t\t\t\tcase '1102':\r\n\t\t\t\t\t\ttype = 'ENC 1102'\r\n\t\t\t\t\t\tthisTemplate = await templateService.getRootTemplateByCourseType(this.termCode, this.orgCode, type)\r\n\t\t\t\t\t\tbreak\r\n\t\t\t\t\tdefault:\r\n\t\t\t\t\t\ttype = 'PTC'\r\n\t\t\t\t\t\tthisTemplate = await templateService.getRootTemplateByCourseType(this.termCode, this.orgCode, type)\r\n\t\t\t\t\t\tbreak\r\n\t\t\t\t}\r\n\t\t\t\tif (thisTemplate) {\r\n\t\t\t\t\tthis.templateId = thisTemplate.Id\r\n\t\t\t\t\tthis.rubrics = await rubricService.getRubricsInTemplate(this.templateId)\r\n\t\t\t\t\tconst appraisalRubrics = await rubricService.getAppraisalRubrics(this.templateId)\r\n\t\t\t\t\tthis.rubrics = this.rubrics.concat(appraisalRubrics)\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tconst courseTypes = []\r\n\t\t\t\tlet rubricsList = []\r\n\t\t\t\tthis.courses.forEach(item => {\r\n\t\t\t\t\tif (item.ClassDescription.includes('ENC 1101')) {\r\n\t\t\t\t\t\tif (!courseTypes.includes('ENC 1101')) { courseTypes.push('ENC 1101') }\r\n\t\t\t\t\t} else if (item.ClassDescription.includes('ENC 1102')) {\r\n\t\t\t\t\t\tif (!courseTypes.includes('ENC 1102')) { courseTypes.push('ENC 1102') }\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tif (!courseTypes.includes('PTC')) { courseTypes.push('PTC') }\r\n\t\t\t\t\t}\r\n\t\t\t\t})\r\n\t\t\t\tfor (let i = 0; i < courseTypes.length; i++) {\r\n\t\t\t\t\tconst thisTemplate = await templateService.getRootTemplateByCourseType(this.termCode, this.orgCode, courseTypes[i])\r\n\t\t\t\t\tif (thisTemplate) {\r\n\t\t\t\t\t\tconst rubrics = await rubricService.getRubricsInTemplate(thisTemplate.Id)\r\n\t\t\t\t\t\tif (rubrics && rubrics.length > 0) { rubricsList = rubricsList.concat(rubrics) }\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\tconst appraisalRubrics = await rubricService.getAppraisalRubrics(this.templateId)\r\n\t\t\t\trubricsList = rubricsList.concat(appraisalRubrics)\r\n\t\t\t\tthis.rubrics = rubricsList\r\n\t\t\t}\r\n\t\t},\r\n\t\tonRubricChange() {\r\n\t\t\tthis.reportType = null\r\n\t\t\tthis.rubricCriteria = this.currentRubric.RubricCriterias\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Handle logics when a course is selected.\r\n\t\tasync onCourseChange() {\r\n\t\t\tthis.assignments = null\r\n\t\t\tthis.currentAssignment = null\r\n\t\t\tthis.tableData = []\r\n\t\t\tthis.rubricCriteria = []\r\n\t\t\tthis.currentCriteria = 'all'\r\n\t\t\tthis.reportType = null\r\n\t\t\tthis.classCode = this.currentCourse.ClassCode\r\n\t\t\tthis.rubrics = null\r\n\t\t\tthis.currentRubric = null\r\n\t\t\t// this.termCode = this.currentCourse.TermCode;\r\n\t\t\tif (this.currentCourse == 'all') {\r\n\t\t\t\tthis.prepareAllCoursesReport()\r\n\t\t\t} else {\r\n\t\t\t\t// Get all assignments in the class.\r\n\t\t\t this.assignments = await assignmentService.getAssignmentsByTemplate(this.currentCourse.ProjectTemplate)\r\n\t\t\t}\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Handle logics when a project is selected.\r\n\t\tasync onAssignmentChange() {\r\n\t\t\tthis.tableData = []\r\n\t\t\tthis.reportType = null\r\n\t\t\tthis.rubricCriteria = []\r\n\t\t\tthis.currentCriteria = 'all'\r\n\t\t\tthis.assignmentId = this.currentAssignment.Id\r\n\t\t\tif (this.currentAssignment) {\r\n\t\t\t\tthis.isGroupProject = this.currentAssignment.IsGroupAssignment\r\n\t\t\t\tif (this.isGroupProject) {\r\n\t\t\t\t\tawait this.getGroups()\r\n\t\t\t\t} else { await this.getStudents() }\r\n\r\n\t\t\t\tawait this.getRubricData(this.currentAssignment.RubricId)\r\n\t\t\t}\r\n\t\t},\r\n\t\tasync onReportTypeChange() {\r\n\t\t\tthis.tableData = []\r\n\t\t\tthis.currentCriteria = 'all'\r\n\t\t\tif (this.currentInstructor == 'all') {\r\n\t\t\t\tif (this.reportType == 1) {\r\n\t\t\t\t\tthis.instructorScores = []\r\n\t\t\t\t\tawait this.getAllInstructorScores()\r\n\t\t\t\t} else if (this.reportType == 2) {\r\n\t\t\t\t\tthis.selfReviewScores = []\r\n\t\t\t\t\tawait this.getAllSelfReviewScores()\r\n\t\t\t\t} else {\r\n\t\t\t\t\tthis.appraisalScores = []\r\n\t\t\t\t\tawait this.getAllAppraisalScores()\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tif (this.currentCourse == 'all') {\r\n\t\t\t\t\tif (this.reportType == 1) {\r\n\t\t\t\t\t\tthis.instructorScores = []\r\n\t\t\t\t\t\tawait this.getInstructorScoresForAllCourses()\r\n\t\t\t\t\t\tawait this.formTableData()\r\n\t\t\t\t\t} else if (this.reportType == 2) {\r\n\t\t\t\t\t\tthis.selfReviewScores = []\r\n\t\t\t\t\t\tawait this.getSelfReviewScoresForAllCourses()\r\n\t\t\t\t\t\tawait this.formTableData()\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tthis.appraisalScores = []\r\n\t\t\t\t\t\tawait this.getAppraisalScoresForAllCourses()\r\n\t\t\t\t\t\tawait this.formTableData()\r\n\t\t\t\t\t}\r\n\t\t\t\t} else {\r\n\t\t\t\t\tif (this.reportType == 1) {\r\n\t\t\t\t\t\tthis.instructorScores = []\r\n\t\t\t\t\t\tawait this.getInstructorScores()\r\n\t\t\t\t\t\tawait this.formTableData()\r\n\t\t\t\t\t} else if (this.reportType == 2) {\r\n\t\t\t\t\t\tthis.selfReviewScores = []\r\n\t\t\t\t\t\tawait this.getSelfReviewScores()\r\n\t\t\t\t\t\tawait this.formTableData()\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tthis.appraisalScores = []\r\n\t\t\t\t\t\tif (this.currentAssignment.AppraisalRubricId != null) {\r\n\t\t\t\t\t\t\tawait this.getRubricData(this.currentAssignment.AppraisalRubricId)\r\n\t\t\t\t\t\t\tawait this.getAppraisalScores()\r\n\t\t\t\t\t\t\tawait this.formTableData()\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\tNotification.info({\r\n\t\t\t\t\t\t\t\tduration: 6000,\r\n\t\t\t\t\t\t\t\ttitle: 'Info',\r\n\t\t\t\t\t\t\t\tmessage: 'This project does not have self apparaisal.'\r\n\t\t\t\t\t\t\t})\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t},\r\n\t\tasync onCriteriaChange() {\r\n\t\t\t// console.log(this.currentCriteria);\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Get all group project team assignments.\r\n\t\tasync getGroups() {\r\n\t\t\tconst groups = await teamFormationService.getAssignedTeams(this.termCode, this.orgCode, this.classCode,\r\n\t\t\t\tthis.assignmentId, 'group_project')\r\n\t\t\tif (groups && groups.length > 0) {\r\n\t\t\t\tthis.groups = groups\r\n\t\t\t} else {\r\n\t\t\t\tNotification.info({\r\n\t\t\t\t\tduration: 6000,\r\n\t\t\t\t\ttitle: 'Info',\r\n\t\t\t\t\tmessage: 'No team assignments found for this group project.'\r\n\t\t\t\t})\r\n\t\t\t}\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Get all active students in the selected course.\r\n\t\tasync getStudents() {\r\n\t\t\tconst payload = {\r\n\t\t\t\torgCode: this.orgCode,\r\n\t\t\t\ttermCode: this.termCode,\r\n\t\t\t\tclassCode: this.classCode\r\n\t\t\t}\r\n\t\t\tconst students = await userService.getStudentList(payload)\r\n\t\t\tif (students && students.length > 0) {\r\n\t\t\t\tthis.students = students\r\n\t\t\t} else {\r\n\t\t\t\tNotification.info({\r\n\t\t\t\t\tduration: 6000,\r\n\t\t\t\t\ttitle: 'Info',\r\n\t\t\t\t\tmessage: 'No active student found in this course.'\r\n\t\t\t\t})\r\n\t\t\t}\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Get rubric data by id.\r\n\t\t// @arg The rubric id.\r\n\t\tasync getRubricData(rubricId) {\r\n\t\t\tawait rubricService.getRubricById(rubricId)\r\n\t\t\t\t.then(rubric => {\r\n\t\t\t\t\tthis.rubricCriteria = rubric.RubricCriterias\r\n\t\t\t\t}).catch((error) => {\r\n\t\t\t\t\tconsole.log(error)\r\n\t\t\t\t})\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Get all instructor scores for a project.\r\n\t\tasync getInstructorScores() {\r\n\t\t\tconst instructorScores = await reviewService.getInstructorScores(this.termCode, this.orgCode, this.classCode, this.assignmentId)\r\n\t\t\tif (instructorScores && instructorScores.length > 0) { this.instructorScores = instructorScores }\r\n\t\t},\r\n\t\tasync getAllInstructorScores() {\r\n\t\t\tconst instructorScores = await reviewService.getAllInstructorScores(this.termCode, this.orgCode, this.currentRubric.Id)\r\n\t\t\tif (instructorScores && instructorScores.length > 0) { this.tableData = instructorScores }\r\n\t\t},\r\n\t\tasync getInstructorScoresForAllCourses() {\r\n\t\t\tconst instructorScores = await reviewService.getInstructorScoresForAllCourses(this.termCode, this.orgCode, this.currentInstructor, this.currentRubric.Id)\r\n\t\t\tif (instructorScores && instructorScores.length > 0) { this.tableData = instructorScores }\r\n\t\t},\r\n\t\tasync getSelfReviewScores() {\r\n\t\t\tconst selfReviewScores = await reviewService.getSelfReviewScores(this.termCode, this.orgCode, this.classCode, this.assignmentId)\r\n\t\t\tif (selfReviewScores && selfReviewScores.length > 0) { this.selfReviewScores = selfReviewScores }\r\n\t\t},\r\n\t\tasync getAllSelfReviewScores() {\r\n\t\t\tconst selfReviewScores = await reviewService.getAllSelfReviewScores(this.termCode, this.orgCode, this.currentRubric.Id)\r\n\t\t\tif (selfReviewScores && selfReviewScores.length > 0) { this.tableData = selfReviewScores }\r\n\t\t},\r\n\t\tasync getSelfReviewScoresForAllCourses() {\r\n\t\t\tconst selfReviewScores = await reviewService.getSelfReviewScoresForAllCourses(this.termCode, this.orgCode, this.currentInstructor, this.currentRubric.Id)\r\n\t\t\tif (selfReviewScores && selfReviewScores.length > 0) { this.tableData = selfReviewScores }\r\n\t\t},\r\n\t\tasync getAppraisalScores() {\r\n\t\t\tconst appraisalScores = await reviewService.getAppraisalScores(this.termCode, this.orgCode, this.classCode, this.assignmentId)\r\n\t\t\tconsole.log(appraisalScores)\r\n\t\t\tif (appraisalScores && appraisalScores.length > 0) { this.appraisalScores = appraisalScores }\r\n\t\t},\r\n\t\tasync getAllAppraisalScores() {\r\n\t\t\tconst appraisalScores = await reviewService.getAllAppraisalScores(this.termCode, this.orgCode, this.currentRubric.Id)\r\n\t\t\tif (appraisalScores && appraisalScores.length > 0) { this.tableData = appraisalScores }\r\n\t\t},\r\n\t\tasync getAppraisalScoresForAllCourses() {\r\n\t\t\tconst appraisalScores = await reviewService.getAppraisalScoresForAllCourses(this.termCode, this.orgCode, this.currentInstructor, this.currentRubric.Id)\r\n\t\t\tif (appraisalScores && appraisalScores.length > 0) { this.tableData = appraisalScores }\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Form table data for displaying the report.\r\n\t\tasync formTableData() {\r\n\t\t\tlet items = this.students\r\n\t\t\tif (this.isGroupProject) { items = this.groups }\r\n\t\t\tconst that = this\r\n\t\t\tawait this.asyncForEach(items, async item => {\r\n\t\t\t\tconst itemId = that.isGroupProject ? item.TeamId : item.UserName\r\n\t\t\t\tconst itemName = that.isGroupProject ? 'Group ' + item.TeamId : item.FullName\r\n\t\t\t\tlet instructorScores = []\r\n\t\t\t\tlet selfReviewScores = []\r\n\t\t\t\tlet appraisalScores = []\r\n\t\t\t\tif (that.reportType == 1) {\r\n\t\t\t\t\tif (that.instructorScores && that.instructorScores.length > 0) {\r\n\t\t\t\t\t\tconst instructorScore = that.instructorScores.filter(function(el) {\r\n\t\t\t\t\t\t\treturn el.StudentId == itemId\r\n\t\t\t\t\t\t})\r\n\r\n\t\t\t\t\t\tif (instructorScore && instructorScore.length > 0) {\r\n\t\t\t\t\t\t\tinstructorScores = instructorScore\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\tconst scoresData = {\r\n\t\t\t\t\t\tId: itemId,\r\n\t\t\t\t\t\tName: itemName,\r\n\t\t\t\t\t\tInstructorScore: instructorScores,\r\n\t\t\t\t\t\tMembers: item.Members\r\n\t\t\t\t\t}\r\n\t\t\t\t\tthat.tableData.push(scoresData)\r\n\t\t\t\t} else if (that.reportType == 2) {\r\n\t\t\t\t\tif (that.selfReviewScores && that.selfReviewScores.length > 0) {\r\n\t\t\t\t\t\tconst selfReviewScore = that.selfReviewScores.filter(function(el) {\r\n\t\t\t\t\t\t\treturn el.StudentId == itemId\r\n\t\t\t\t\t\t})\r\n\r\n\t\t\t\t\t\tif (selfReviewScore && selfReviewScore.length > 0) {\r\n\t\t\t\t\t\t\tselfReviewScores = selfReviewScore\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\tconst scoresData = {\r\n\t\t\t\t\t\tId: itemId,\r\n\t\t\t\t\t\tName: itemName,\r\n\t\t\t\t\t\tInstructorScore: selfReviewScores,\r\n\t\t\t\t\t\tMembers: item.Members\r\n\t\t\t\t\t}\r\n\t\t\t\t\tthat.tableData.push(scoresData)\r\n\t\t\t\t} else {\r\n\t\t\t\t\tif (that.appraisalScores && that.appraisalScores.length > 0) {\r\n\t\t\t\t\t\tconst appraisalScore = that.appraisalScores.filter(function(el) {\r\n\t\t\t\t\t\t\treturn el.StudentId == itemId\r\n\t\t\t\t\t\t})\r\n\r\n\t\t\t\t\t\tif (appraisalScore && appraisalScore.length > 0) {\r\n\t\t\t\t\t\t\tappraisalScores = appraisalScore\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\tconst scoresData = {\r\n\t\t\t\t\t\tId: itemId,\r\n\t\t\t\t\t\tName: itemName,\r\n\t\t\t\t\t\tInstructorScore: appraisalScores,\r\n\t\t\t\t\t\tMembers: item.Members\r\n\t\t\t\t\t}\r\n\t\t\t\t\tthat.tableData.push(scoresData)\r\n\t\t\t\t}\r\n\t\t\t})\r\n\t\t},\r\n\t\tasync asyncForEach(array, callback) {\r\n\t\t\tfor (let index = 0; index < array.length; index++) {\r\n\t\t\t\tawait callback(array[index], index, array)\r\n\t\t\t}\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Export the data to excel.\r\n\t\texportFile() {\r\n\t\t\tconst opts = {\r\n\t\t\t\tfileName: 'Outcomes Report',\r\n\t\t\t\ttype: 'xls'\r\n\t\t\t}\r\n\t\t\ttry {\r\n\t\t\t\tconst data = this.dataHandler()\r\n\t\t\t\t// eslint-disable-next-line no-inner-declarations\r\n\t\t\t\tfunction hasProperty(target, name, defVal) {\r\n\t\t\t\t\treturn target.hasOwnProperty(name) ? target[name] : defVal\r\n\t\t\t\t}\r\n\t\t\t\texportFromJSON({\r\n\t\t\t\t\tdata: data,\r\n\t\t\t\t\tfileName: hasProperty(opts, 'fileName', opts.fileName),\r\n\t\t\t\t\texportType: hasProperty(opts, 'type', opts.type),\r\n\t\t\t\t\twithBOM: hasProperty(opts, 'withBOM', opts.withBOM)\r\n\t\t\t\t})\r\n\t\t\t} catch (error) {\r\n\t\t\t\tconsole.error(error)\r\n\t\t\t}\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Handles data format before exporting to excel.\r\n\t\tdataHandler() {\r\n\t\t\t// eslint-disable-next-line no-array-constructor\r\n\t\t\tconst columns = new Array()\r\n\t\t\tif (this.currentInstructor == 'all') {\r\n\t\t\t\tcolumns.push({\r\n\t\t\t\t\tprop: 'StudentName',\r\n\t\t\t\t\tlabel: 'Student Name'\r\n\t\t\t\t})\r\n\t\t\t\tif (this.reportType == 1) {\r\n\t\t\t\t\tcolumns.push({\r\n\t\t\t\t\t\tprop: 'InstructorName',\r\n\t\t\t\t\t\tlabel: 'Student Name'\r\n\t\t\t\t\t})\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tif (this.currentAssignment && this.currentAssignment.IsGroupAssignment) {\r\n\t\t\t\t\tcolumns.push({\r\n\t\t\t\t\t\tprop: 'Name',\r\n\t\t\t\t\t\tlabel: 'Group Name'\r\n\t\t\t\t\t})\r\n\t\t\t\t\tcolumns.push({\r\n\t\t\t\t\t\tprop: 'Members',\r\n\t\t\t\t\t\tlabel: 'Group Member'\r\n\t\t\t\t\t})\r\n\t\t\t\t} else {\r\n\t\t\t\t\tcolumns.push({\r\n\t\t\t\t\t\tprop: 'Name',\r\n\t\t\t\t\t\tlabel: 'Student Name'\r\n\t\t\t\t\t})\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tfor (let i = 0; i < this.rubricCriteria.length; i++) {\r\n\t\t\t\tif (this.rubricCriteria[i].UseAsGrade) {\r\n\t\t\t\t\tcolumns.push({\r\n\t\t\t\t\t\tprop: this.rubricCriteria[i].Id,\r\n\t\t\t\t\t\tlabel: this.rubricCriteria[i].CriteriaName + ' Score'\r\n\t\t\t\t\t})\r\n\t\t\t\t}\r\n\t\t\t\tif (this.rubricCriteria[i].UseAsTextComment) {\r\n\t\t\t\t\tcolumns.push({\r\n\t\t\t\t\t\tprop: this.rubricCriteria[i].Id,\r\n\t\t\t\t\t\tlabel: this.rubricCriteria[i].CriteriaName + ' Comment'\r\n\t\t\t\t\t})\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tconst data = this.tableData\r\n\t\t\t// eslint-disable-next-line no-array-constructor\r\n\t\t\tconst outputData = new Array()\r\n\t\t\tdata.map((value) => {\r\n\t\t\t\t// eslint-disable-next-line no-new-object\r\n\t\t\t\tconst obj = new Object()\r\n\r\n\t\t\t\tif (this.currentInstructor == 'all') {\r\n\t\t\t\t\tobj['Student Name'] = value['StudentName']\r\n\t\t\t\t\tif (this.reportType == 1) { obj['Instructor Name'] = value['InstructorName'] }\r\n\t\t\t\t} else {\r\n\t\t\t\t\tif (this.currentAssignment.IsGroupAssignment) {\r\n\t\t\t\t\t\tobj['Group Name'] = value['Name']\r\n\t\t\t\t\t\tfor (let i = 0; i < value.Members.length; i++) {\r\n\t\t\t\t\t\t\tif (i == value.Members.length - 1) { obj['Group Member'] += value.Members[i].Name + '' } else { obj['Group Member'] += value.Members[i].Name + ', ' }\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t} else { obj['Student Name'] = value['Name'] }\r\n\t\t\t\t}\r\n\r\n\t\t\t\tfor (let i = 0; i < this.rubricCriteria.length; i++) {\r\n\t\t\t\t\tif (this.currentInstructor == 'all') {\r\n\t\t\t\t\t\tif (this.rubricCriteria[i].UseAsGrade) {\r\n\t\t\t\t\t\t\tif (value.Scores[i] && value.Scores[i].Mark) { obj[this.rubricCriteria[i].CriteriaName + ' Score'] = value.Scores[i].Mark == 999 ? 'Not Given' : value.Scores[i].Mark } else { obj[this.rubricCriteria[i].CriteriaName + ' Score'] = 'Not Given' }\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tif (this.rubricCriteria[i].UseAsTextComment && value.Scores[i]) { obj[this.rubricCriteria[i].CriteriaName + ' Comment'] = value.Scores[i].Comment }\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tif (this.rubricCriteria[i].UseAsGrade) {\r\n\t\t\t\t\t\t\tif (value.InstructorScore[i] && value.InstructorScore[i].Mark) { obj[this.rubricCriteria[i].CriteriaName + ' Score'] = value.InstructorScore[i].Mark == 999 ? 'Not Given' : value.InstructorScore[i].Mark } else { obj[this.rubricCriteria[i].CriteriaName + ' Score'] = 'Not Given' }\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tif (this.rubricCriteria[i].UseAsTextComment && value.InstructorScore[i]) { obj[this.rubricCriteria[i].CriteriaName + ' Comment'] = value.InstructorScore[i].Comment }\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\toutputData.push(obj)\r\n\t\t\t})\r\n\r\n\t\t\treturn outputData\r\n\t\t},\r\n\t\thandleEdit(index, row) {\r\n\t\t\tif (this.isGroupProject) { this.$router.push('/rubric?reviewerId=' + this.$store.state.auth.user.UserName + '&groupId=' + row.GroupId + '&assignmentId=' + this.$route.params.id) } else { this.$router.push('/rubric?reviewerId=' + this.$store.state.auth.user.UserName + '&revieweeId=' + row.StudentId + '&assignmentId=' + this.$route.params.id) }\r\n\t\t},\r\n\t\thandleDelete(index, row) {\r\n\t\t\tconsole.log(index, row)\r\n\t\t}\r\n\t}\r\n}\r\n</script>\r\n\r\n<style scoped>\r\n.el-table__empty-text{\r\n\tdisplay: none;\r\n}\r\n.student-submission-wrapper{\r\n padding: 20px;\r\n box-shadow: 20px 10px 25px 20px rgba(109, 107, 107, 0.1);\r\n}\r\n\r\n</style>\r\n<style>\r\n.el-table .cell {\r\n word-break: initial;\r\n}\r\n\r\n.center-align{\r\n text-align: center !important;\r\n}\r\n.cutom-popper{\r\n width: 400px;\r\n}\r\n</style>\r\n\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Outcomes.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Outcomes.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Outcomes.vue?vue&type=template&id=07773d1b&scoped=true&\"\nimport script from \"./Outcomes.vue?vue&type=script&lang=js&\"\nexport * from \"./Outcomes.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Outcomes.vue?vue&type=style&index=0&id=07773d1b&scoped=true&lang=css&\"\nimport style1 from \"./Outcomes.vue?vue&type=style&index=1&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"07773d1b\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_vm._m(0),_c('div',{staticClass:\"student-submission-wrapper\"},[_c('div',{staticStyle:{\"margin-bottom\":\"20px\"},attrs:{\"id\":\"filter\"}},[_c('el-tooltip',{attrs:{\"content\":\"Select Term\",\"placement\":\"top-start\"}},[(_vm.terms)?_c('el-select',{staticStyle:{\"margin-right\":\"10px\",\"margin-top\":\"10px\"},attrs:{\"id\":\"term-selection\",\"filterable\":\"\",\"placeholder\":\"Select Term\",\"no-match-text\":\"No Matching Data\",\"no-data-text\":\"No data\",\"loading-text\":\"Loading\"},on:{\"change\":function($event){return _vm.onTermChange()}},model:{value:(_vm.termCode),callback:function ($$v) {_vm.termCode=$$v},expression:\"termCode\"}},_vm._l((_vm.terms),function(item){return _c('el-option',{key:item.TermCode,attrs:{\"label\":item.TermDescription,\"value\":item.TermCode}})}),1):_vm._e()],1),_c('el-tooltip',{attrs:{\"content\":\"Select Term\",\"placement\":\"top-start\"}},[(_vm.courseTypes && _vm.isAdmin && _vm.termCode)?_c('el-select',{staticStyle:{\"margin-right\":\"10px\",\"margin-top\":\"10px\"},attrs:{\"id\":\"course-type-selection\",\"filterable\":\"\",\"placeholder\":\"Select Course Type\",\"no-match-text\":\"No Matching Data\",\"no-data-text\":\"No data\",\"loading-text\":\"Loading\"},on:{\"change\":function($event){return _vm.onCourseTypeChange()}},model:{value:(_vm.courseType),callback:function ($$v) {_vm.courseType=$$v},expression:\"courseType\"}},_vm._l((_vm.courseTypes),function(item){return _c('el-option',{key:item.Id,attrs:{\"label\":item.Name,\"value\":item.Id}})}),1):_vm._e()],1),(_vm.termCode && _vm.isAdmin && _vm.instructors && _vm.termCode)?_c('el-tooltip',{attrs:{\"content\":\"Select Instructor\",\"placement\":\"right-start\"}},[_c('el-select',{staticStyle:{\"margin-right\":\"10px\",\"margin-top\":\"10px\"},attrs:{\"id\":\"instructor-selection\",\"filterable\":\"\",\"placeholder\":\"Select Instructor\",\"no-match-text\":\"No Matching Data\",\"no-data-text\":\"No data\",\"loading-text\":\"Loading\"},on:{\"change\":function($event){return _vm.onInstructorChange()}},model:{value:(_vm.currentInstructor),callback:function ($$v) {_vm.currentInstructor=$$v},expression:\"currentInstructor\"}},_vm._l((_vm.instructors),function(item){return _c('el-option',{key:item.UserName,attrs:{\"label\":item.LastName + ', ' + item.FirstName,\"value\":item.UserName}})}),1)],1):_vm._e(),_c('el-tooltip',{attrs:{\"content\":\"Select Rubric\",\"placement\":\"top\"}},[(_vm.currentInstructor == 'all' && _vm.rubrics)?_c('el-select',{staticStyle:{\"margin-right\":\"10px\",\"margin-top\":\"10px\"},attrs:{\"id\":\"rubric-selection\",\"value-key\":\"Id\",\"filterable\":\"\",\"placeholder\":\"Select Rubric\",\"no-match-text\":\"No Matching Data\",\"no-data-text\":\"No data\",\"loading-text\":\"Loading\"},on:{\"change\":function($event){return _vm.onRubricChange()}},model:{value:(_vm.currentRubric),callback:function ($$v) {_vm.currentRubric=$$v},expression:\"currentRubric\"}},_vm._l((_vm.rubrics),function(item){return _c('el-option',{key:item.RubricId,attrs:{\"label\":item.RubricName,\"value\":item}})}),1):_vm._e()],1),_c('el-tooltip',{attrs:{\"content\":\"Select Course\",\"placement\":\"top\"}},[(_vm.currentInstructor != 'all' && _vm.courses)?_c('el-select',{staticStyle:{\"margin-right\":\"10px\",\"margin-top\":\"10px\"},attrs:{\"id\":\"course-selection\",\"value-key\":\"ClassCode\",\"filterable\":\"\",\"placeholder\":\"Select Course\",\"no-match-text\":\"No Matching Data\",\"no-data-text\":\"No data\",\"loading-text\":\"Loading\"},on:{\"change\":function($event){return _vm.onCourseChange()}},model:{value:(_vm.currentCourse),callback:function ($$v) {_vm.currentCourse=$$v},expression:\"currentCourse\"}},_vm._l((_vm.courses),function(item){return _c('el-option',{key:item.Id,attrs:{\"label\":item.ClassDescription,\"value\":item}})}),1):_vm._e()],1),_c('el-tooltip',{attrs:{\"content\":\"Select Student\",\"placement\":\"top\"}},[(_vm.currentInstructor != 'all' && _vm.currentCourse && _vm.students)?_c('el-select',{staticStyle:{\"margin-right\":\"10px\",\"margin-top\":\"10px\"},attrs:{\"id\":\"student-selection\",\"value-key\":\"Username\",\"filterable\":\"\",\"placeholder\":\"Select Student\",\"no-match-text\":\"No Matching Data\",\"no-data-text\":\"No data\",\"loading-text\":\"Loading\"},on:{\"change\":function($event){return _vm.onStudentChange()}},model:{value:(_vm.currentStudent),callback:function ($$v) {_vm.currentStudent=$$v},expression:\"currentStudent\"}},_vm._l((_vm.students),function(item){return _c('el-option',{key:item.UserName,attrs:{\"label\":item.FullName,\"value\":item.UserName}})}),1):_vm._e()],1),(_vm.currentCourse == 'all' || _vm.currentStudent)?_c('el-tooltip',{staticClass:\"item\",attrs:{\"effect\":\"light\",\"content\":\"Select a report type\",\"placement\":\"top\"}},[_c('el-select',{staticStyle:{\"margin-right\":\"10px\",\"margin-top\":\"10px\"},attrs:{\"id\":\"report-selection\",\"value-key\":\"Id\",\"filterable\":\"\",\"placeholder\":\"Select Report Type\",\"no-match-text\":\"No Matching Data\",\"no-data-text\":\"No data\",\"loading-text\":\"Loading\"},on:{\"change\":function($event){return _vm.onReportTypeChange()}},model:{value:(_vm.reportType),callback:function ($$v) {_vm.reportType=$$v},expression:\"reportType\"}},[_c('el-option',{key:0,attrs:{\"label\":\"Instructor Review\",\"value\":1}}),_c('el-option',{key:1,attrs:{\"label\":\"Self Review\",\"value\":2}}),_c('el-option',{key:2,attrs:{\"label\":\"Self Appraisal\",\"value\":3}})],1)],1):_vm._e(),(_vm.reportType && _vm.tableData && _vm.tableData.length > 0)?_c('el-button',{staticStyle:{\"margin-right\":\"10px\",\"margin-top\":\"10px\"},on:{\"click\":function($event){return _vm.exportFile()}}},[_c('span',[_vm._v(\"\\n Export to Excel\\n \")])]):_vm._e()],1),(_vm.reportType && _vm.tableData)?_c('div',_vm._l((_vm.tableData),function(data){return _c('div',{key:data.AssignmentId},[_c('el-table',{staticStyle:{\"text-align\":\"center\",\"width\":\"100%\",\"margin-bottom\":\"20px\"},attrs:{\"data\":data}},[_c('el-table-column',{attrs:{\"label\":data[0].AssignmentName,\"class-name\":\"center-align\"}},_vm._l((data[0].Criteria),function(criteria){return _c('el-table-column',{key:criteria.CriteriaId,attrs:{\"label\":criteria.CriteriaName,\"class-name\":\"center-align\"}},[_c('el-table-column',{attrs:{\"class-name\":\"center-align\",\"label\":\"Score\",\"width\":\"100\"},scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [(scope.row.Scores.length > 0 && scope.row.Scores.find(function (x) { return x.CriteriaId == criteria.CriteriaId; }))?_c('div',[_vm._v(\"\\n \"+_vm._s(scope.row.Scores.find(function (x) { return x.CriteriaId == criteria.CriteriaId; }).Mark == 999 ? 'Not Given' : scope.row.Scores.find(function (x) { return x.CriteriaId == criteria.CriteriaId; }).Mark)+\"\\n \")]):_c('div',[_c('span',[_vm._v(\"Not Given\")])])]}}],null,true)}),_c('el-table-column',{attrs:{\"class-name\":\"center-align\",\"label\":\"Comment\"},scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [(scope.row.Scores.length > 0 && scope.row.Scores.find(function (x) { return x.CriteriaId == criteria.CriteriaId; }))?_c('div',{staticStyle:{\"max-height\":\"90px\"}},[_c('el-tooltip',{staticClass:\"item\",staticStyle:{\"margin-right\":\"18px\",\"margin-left\":\"0px\"},attrs:{\"effect\":\"light\",\"content\":scope.row.Scores.find(function (x) { return x.CriteriaId == criteria.CriteriaId; }).Comment,\"placement\":\"bottom\",\"popper-class\":\"cutom-popper\"}},[_c('div',{staticStyle:{\"max-height\":\"90px\"}},[_vm._v(\"\\n \"+_vm._s(scope.row.Scores.find(function (x) { return x.CriteriaId == criteria.CriteriaId; }).Comment)+\"\\n \")])])],1):_c('div',[_c('span',[_vm._v(\"Not Given\")])])]}}],null,true)})],1)}),1)],1)],1)}),0):_vm._e()])])}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"breadcumb\"},[_c('div',{staticClass:\"ic-app-crumbs\"},[_c('span',{staticClass:\"breadcumb-text\"},[_vm._v(\"\\n Reports\\n \"),_c('i',{staticClass:\"fas fa-chevron-right breadcumb-next\"}),_vm._v(\"\\n Individual Outcomes Report\\n \")])])])}]\n\nexport { render, staticRenderFns }","<template>\r\n <div>\r\n <div class=\"breadcumb\">\r\n <div class=\"ic-app-crumbs\">\r\n <span class=\"breadcumb-text\">\r\n Reports\r\n <i class=\"fas fa-chevron-right breadcumb-next\" />\r\n Individual Outcomes Report\r\n </span>\r\n </div>\r\n </div>\r\n <div class=\"student-submission-wrapper\">\r\n <div id=\"filter\" style=\"margin-bottom: 20px;\">\r\n <el-tooltip content=\"Select Term\" placement=\"top-start\">\r\n <el-select\r\n v-if=\"terms\"\r\n id=\"term-selection\"\r\n v-model=\"termCode\"\r\n filterable\r\n placeholder=\"Select Term\"\r\n no-match-text=\"No Matching Data\"\r\n no-data-text=\"No data\"\r\n loading-text=\"Loading\"\r\n style=\"margin-right: 10px; margin-top: 10px;\"\r\n @change=\"onTermChange()\"\r\n >\r\n <el-option\r\n v-for=\"item in terms\"\r\n :key=\"item.TermCode\"\r\n :label=\"item.TermDescription\"\r\n :value=\"item.TermCode\"\r\n />\r\n </el-select>\r\n </el-tooltip>\r\n\r\n <el-tooltip content=\"Select Term\" placement=\"top-start\">\r\n <el-select\r\n v-if=\"courseTypes && isAdmin && termCode\"\r\n id=\"course-type-selection\"\r\n v-model=\"courseType\"\r\n filterable\r\n placeholder=\"Select Course Type\"\r\n no-match-text=\"No Matching Data\"\r\n no-data-text=\"No data\"\r\n loading-text=\"Loading\"\r\n style=\"margin-right: 10px; margin-top: 10px;\"\r\n @change=\"onCourseTypeChange()\"\r\n >\r\n <el-option\r\n v-for=\"item in courseTypes\"\r\n :key=\"item.Id\"\r\n :label=\"item.Name\"\r\n :value=\"item.Id\"\r\n />\r\n </el-select>\r\n </el-tooltip>\r\n\r\n <el-tooltip v-if=\"termCode && isAdmin && instructors && termCode\" content=\"Select Instructor\" placement=\"right-start\">\r\n <el-select\r\n id=\"instructor-selection\"\r\n v-model=\"currentInstructor\"\r\n filterable\r\n placeholder=\"Select Instructor\"\r\n no-match-text=\"No Matching Data\"\r\n no-data-text=\"No data\"\r\n loading-text=\"Loading\"\r\n style=\"margin-right: 10px; margin-top: 10px;\"\r\n @change=\"onInstructorChange()\"\r\n >\r\n <el-option\r\n v-for=\"item in instructors\"\r\n :key=\"item.UserName\"\r\n :label=\"item.LastName + ', ' + item.FirstName\"\r\n :value=\"item.UserName\"\r\n />\r\n </el-select>\r\n </el-tooltip>\r\n\r\n <el-tooltip content=\"Select Rubric\" placement=\"top\">\r\n <el-select\r\n v-if=\"currentInstructor == 'all' && rubrics\"\r\n id=\"rubric-selection\"\r\n v-model=\"currentRubric\"\r\n value-key=\"Id\"\r\n filterable\r\n placeholder=\"Select Rubric\"\r\n no-match-text=\"No Matching Data\"\r\n no-data-text=\"No data\"\r\n loading-text=\"Loading\"\r\n style=\"margin-right: 10px; margin-top: 10px;\"\r\n @change=\"onRubricChange()\"\r\n >\r\n <el-option\r\n v-for=\"item in rubrics\"\r\n :key=\"item.RubricId\"\r\n :label=\"item.RubricName\"\r\n :value=\"item\"\r\n />\r\n </el-select>\r\n </el-tooltip>\r\n\r\n <el-tooltip content=\"Select Course\" placement=\"top\">\r\n <el-select\r\n v-if=\"currentInstructor != 'all' && courses\"\r\n id=\"course-selection\"\r\n v-model=\"currentCourse\"\r\n value-key=\"ClassCode\"\r\n filterable\r\n placeholder=\"Select Course\"\r\n no-match-text=\"No Matching Data\"\r\n no-data-text=\"No data\"\r\n loading-text=\"Loading\"\r\n style=\"margin-right: 10px; margin-top: 10px;\"\r\n @change=\"onCourseChange()\"\r\n >\r\n <el-option\r\n v-for=\"item in courses\"\r\n :key=\"item.Id\"\r\n :label=\"item.ClassDescription\"\r\n :value=\"item\"\r\n />\r\n </el-select>\r\n </el-tooltip>\r\n\r\n <el-tooltip content=\"Select Student\" placement=\"top\">\r\n <el-select\r\n v-if=\"currentInstructor != 'all' && currentCourse && students\"\r\n id=\"student-selection\"\r\n v-model=\"currentStudent\"\r\n value-key=\"Username\"\r\n filterable\r\n placeholder=\"Select Student\"\r\n no-match-text=\"No Matching Data\"\r\n no-data-text=\"No data\"\r\n loading-text=\"Loading\"\r\n style=\"margin-right: 10px; margin-top: 10px;\"\r\n @change=\"onStudentChange()\"\r\n >\r\n <el-option\r\n v-for=\"item in students\"\r\n :key=\"item.UserName\"\r\n :label=\"item.FullName\"\r\n :value=\"item.UserName\"\r\n />\r\n </el-select>\r\n </el-tooltip>\r\n\r\n <el-tooltip v-if=\"currentCourse == 'all' || currentStudent\" class=\"item\" effect=\"light\" content=\"Select a report type\" placement=\"top\">\r\n <el-select\r\n id=\"report-selection\"\r\n v-model=\"reportType\"\r\n value-key=\"Id\"\r\n filterable\r\n placeholder=\"Select Report Type\"\r\n no-match-text=\"No Matching Data\"\r\n no-data-text=\"No data\"\r\n loading-text=\"Loading\"\r\n style=\"margin-right: 10px; margin-top: 10px;\"\r\n @change=\"onReportTypeChange()\"\r\n >\r\n <el-option\r\n :key=\"0\"\r\n label=\"Instructor Review\"\r\n :value=\"1\"\r\n />\r\n <el-option\r\n :key=\"1\"\r\n label=\"Self Review\"\r\n :value=\"2\"\r\n />\r\n <el-option\r\n :key=\"2\"\r\n label=\"Self Appraisal\"\r\n :value=\"3\"\r\n />\r\n </el-select>\r\n </el-tooltip>\r\n\r\n <el-button v-if=\"reportType && tableData && tableData.length > 0\" style=\"margin-right: 10px; margin-top: 10px;\" @click=\"exportFile()\">\r\n <span>\r\n Export to Excel\r\n </span>\r\n </el-button>\r\n </div>\r\n <div v-if=\"reportType && tableData\">\r\n <div v-for=\"data in tableData\" :key=\"data.AssignmentId\">\r\n <el-table\r\n :data=\"data\"\r\n style=\"text-align:center; width: 100%; margin-bottom: 20px;\"\r\n >\r\n <el-table-column :label=\"data[0].AssignmentName\" class-name=\"center-align\">\r\n <el-table-column v-for=\"(criteria) in data[0].Criteria\" :key=\"criteria.CriteriaId\" :label=\"criteria.CriteriaName\" class-name=\"center-align\">\r\n <el-table-column class-name=\"center-align\" label=\"Score\" width=\"100\">\r\n <template slot-scope=\"scope\">\r\n <div v-if=\"scope.row.Scores.length > 0 && scope.row.Scores.find(x => x.CriteriaId == criteria.CriteriaId)\">\r\n {{ scope.row.Scores.find(x => x.CriteriaId == criteria.CriteriaId).Mark == 999 ? 'Not Given' : scope.row.Scores.find(x => x.CriteriaId == criteria.CriteriaId).Mark }}\r\n </div>\r\n <div v-else>\r\n <span>Not Given</span>\r\n </div>\r\n </template>\r\n </el-table-column>\r\n <el-table-column class-name=\"center-align\" label=\"Comment\">\r\n <template slot-scope=\"scope\">\r\n <div v-if=\"scope.row.Scores.length > 0 && scope.row.Scores.find(x => x.CriteriaId == criteria.CriteriaId)\" style=\"max-height: 90px;\">\r\n <el-tooltip\r\n style=\"margin-right: 18px; margin-left: 0px;\"\r\n class=\"item\"\r\n effect=\"light\"\r\n :content=\"scope.row.Scores.find(x => x.CriteriaId == criteria.CriteriaId).Comment\"\r\n placement=\"bottom\"\r\n popper-class=\"cutom-popper\"\r\n >\r\n <div style=\"max-height: 90px;\">\r\n {{ scope.row.Scores.find(x => x.CriteriaId == criteria.CriteriaId).Comment }}\r\n </div>\r\n </el-tooltip>\r\n </div>\r\n <div v-else>\r\n <span>Not Given</span>\r\n </div>\r\n </template>\r\n </el-table-column>\r\n </el-table-column>\r\n </el-table-column>\r\n </el-table>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</template>\r\n\r\n<script>\r\nimport * as termService from '@/services/term.service'\r\nimport * as teamFormationService from '@/services/team_formation.service'\r\nimport * as assignmentService from '@/services/assignment.service'\r\nimport * as reviewService from '@/services/review.service'\r\nimport * as rubricService from '@/services/rubric.service'\r\nimport * as userService from '@/services/user.service'\r\nimport * as enrollmentService from '@/services/enrollment.service'\r\nimport * as templateService from '@/services/project_template.service'\r\nimport { Notification } from 'element-ui'\r\nimport XLSX from 'xlsx'\r\nimport _ from 'lodash'\r\n// Hadnles UI and logics for the Outcomes Report page.\r\nexport default {\r\n\tname: 'OutcomesReport',\r\n\tdata() {\r\n\t\treturn {\r\n\t\t\torgCode: this.$store.state.auth.user.OrgCode,\r\n\t\t\tenrolledCourses: this.$store.state.enrollment.courses,\r\n\t\t\tterms: null,\r\n\t\t\tcurrentTerm: null,\r\n\t\t\tcourses: null,\r\n\t\t currentCourse: null,\r\n\t\t\tclassCode: null,\r\n\t\t\ttermCode: null,\r\n\t\t\tassignments: null,\r\n\t\t\tcurrentAssignment: null,\r\n\t\t\tassignmentId: null,\r\n\t\t\tisGroupProject: false,\r\n\t\t\ttableData: [],\r\n\t\t\tsearch: '',\r\n\t\t\tinstructorScores: [],\r\n\t\t\tgroups: [],\r\n\t\t\tstudents: [],\r\n\t\t\trubricCriteria: [],\r\n\t\t\tcurrentCriteria: 'all',\r\n\t\t\treportType: null,\r\n\t\t\tselfReviewScores: [],\r\n\t\t\tappraisalScores: [],\r\n\t\t\tisAdmin: false,\r\n\t\t\tinstructors: null,\r\n\t\t\tisViewingCourse: null,\r\n\t\t\tcurrentInstructor: null,\r\n\t\t\tcourseTypes: [\r\n\t\t\t\t{\r\n\t\t\t\t\tId: '1101',\r\n\t\t\t\t\tName: 'ENC 1101'\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tId: '1102',\r\n\t\t\t\t\tName: 'ENC 1102'\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tId: 'PTC',\r\n\t\t\t\t\tName: 'All PTC'\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tId: '2210',\r\n\t\t\t\t\tName: 'ENC 2210'\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tId: '3246',\r\n\t\t\t\t\tName: 'ENC 3246'\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tId: '3250',\r\n\t\t\t\t\tName: 'ENC 3250'\r\n\t\t\t\t}\r\n\t\t\t],\r\n\t\t\tcourseType: null,\r\n\t\t\trubrics: null,\r\n\t\t\ttemplateId: null,\r\n\t\t\tcurrentRubric: null,\r\n\t\t\tcurrentStudent: null,\r\n\t\t\tscores: null\r\n \t}\r\n\t},\r\n\tcreated() {\r\n\t\tthis.isAdmin = _.includes(this.$store.state.auth.user.Roles, 'Administrator')\r\n\t\t// this.instructors = this.$store.state.viewAs.instructors;\r\n\t\tthis.isViewingCourse = this.$store.state.enrollment.currentCourse\r\n\r\n\t\tif (this.isAdmin) { this.enrolledCourses = null }\r\n\t\tthis.getAllTerms()\r\n\t},\r\n\t methods: {\r\n\t\t// @vuese\r\n\t\t// Get all terms by organization code.\r\n\t\tasync getAllTerms() {\r\n\t\t\tthis.terms = await termService.getTerms(this.orgCode)\r\n\t\t},\r\n\r\n\t\t// @vuese\r\n\t\t// Handle logics when a term is selected.\r\n\t\tasync onTermChange() {\r\n\t\t\tthis.currentCourse = null\r\n\t\t\tthis.assignments = null\r\n\t\t\tthis.currentAssignment = null\r\n\t\t\tthis.tableData = []\r\n\t\t\tthis.reportType = null\r\n\t\t\tthis.rubrics = null\r\n\t\t\tthis.currentRubric = null\r\n\t\t\tthis.courseType = null\r\n\t\t\tthis.instructors = null\r\n\t\t\tthis.students = []\r\n\t\t\tthis.currentStudent = null\r\n\t\t\tif (!this.isAdmin) { this.courses = this.enrolledCourses.filter(course => { return course.TermCode == this.termCode }) } else { this.currentInstructor = null }\r\n\t\t},\r\n\t\tonCourseTypeChange() {\r\n\t\t\tthis.currentCourse = null\r\n\t\t\tthis.assignments = null\r\n\t\t\tthis.currentAssignment = null\r\n\t\t\tthis.tableData = []\r\n\t\t\tthis.instructors = null\r\n\t\t\tthis.currentInstructor = null\r\n\t\t\tthis.courses = null\r\n\t\t\tthis.reportType = null\r\n\t\t\tthis.students = []\r\n\t\t\tthis.currentStudent = null\r\n\t\t\tthis.getInstructors()\r\n\t\t},\r\n\t\tasync getInstructors() {\r\n\t\t\tthis.instructors = await userService.getInstructorsByCourseType(this.orgCode, this.termCode, this.courseType)\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Get term description by term code.\r\n\t\t// @arg The term code.\r\n\t\tgetTermDescription(termCode) {\r\n\t\t\tlet description = ''\r\n\t\t\tconst semester = termCode.slice(4, 6)\r\n\t\t\tswitch (semester) {\r\n\t\t\t\tcase '01':\r\n\t\t\t\t\tdescription = 'Spring'\r\n\t\t\t\t\tbreak\r\n\t\t\t\tcase '05':\r\n\t\t\t\t\tdescription = 'Summer'\r\n\t\t\t\t\tbreak\r\n\t\t\t\tcase '08': description = 'Fall'\r\n\t\t\t\t\tbreak\r\n\t\t\t\tdefault:\r\n\t\t\t\t\tbreak\r\n\t\t\t}\r\n\t\t\tconst year = termCode.slice(0, 4)\r\n\t\t\tdescription += ' ' + year\r\n\t\t\treturn description\r\n\t\t},\r\n\r\n\t\tasync onInstructorChange() {\r\n\t\t\tthis.currentCourse = null\r\n\t\t\tthis.assignments = null\r\n\t\t\tthis.currentAssignment = null\r\n\t\t\tthis.tableData = []\r\n\t\t\tthis.rubricCriteria = null\r\n\t\t\tthis.currentCriteria = 'all'\r\n\t\t\tthis.reportType = null\r\n\t\t\tthis.rubrics = null\r\n\t\t\tthis.currentRubric = null\r\n\t\t\tthis.students = []\r\n\t\t\tthis.currentStudent = null\r\n\r\n\t\t\tif (this.currentInstructor == 'all') {\r\n\t\t\t\tthis.prepareAllInstructorReport()\r\n\t\t\t} else {\r\n\t\t\t\tconst enrollments = await enrollmentService.getEnrollments(this.currentInstructor, this.orgCode)\r\n\t\t\t\tif (enrollments && enrollments.length > 0) {\r\n\t\t\t\t\tthis.enrolledCourses = enrollments\r\n\t\t\t\t\t\t.map(item => {\r\n\t\t\t\t\t\t\tif (item != null) {\r\n\t\t\t\t\t\t\t\tconst course = {\r\n\t\t\t\t\t\t\t\t\tClassCode: item.ClassCode,\r\n\t\t\t\t\t\t\t\t\tClassDescription: item.ClassDescription,\r\n\t\t\t\t\t\t\t\t\tIsPaidCourse: item.IsPaidCourse,\r\n\t\t\t\t\t\t\t\t\tOrgCode: item.OrgCode,\r\n\t\t\t\t\t\t\t\t\tProjectTemplate: item.ProjectTemplateId,\r\n\t\t\t\t\t\t\t\t\tTermCode: item.TermCode,\r\n\t\t\t\t\t\t\t\t\tUserRole: item.UserRole\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\treturn course\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t})\r\n\t\t\t\t\t\t.filter(item => { return item != null })\r\n\r\n\t\t\t\t\tif (this.courseType == 'PTC') {\r\n\t\t\t\t\t\tthis.courses = this.enrolledCourses.filter(course => {\r\n\t\t\t\t\t\t\treturn course.TermCode == this.termCode &&\r\n (course.ClassDescription.includes('ENC 2210') || course.ClassDescription.includes('ENC 3246') || course.ClassDescription.includes('ENC 3250'))\r\n\t\t\t\t\t\t})\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tthis.courses = this.enrolledCourses.filter(course => {\r\n\t\t\t\t\t\t\treturn course.TermCode == this.termCode &&\r\n course.ClassDescription.includes('ENC ' + this.courseType)\r\n\t\t\t\t\t\t})\r\n\t\t\t\t\t}\r\n\t\t\t\t} else {\r\n\t\t\t\t\tNotification.error({\r\n\t\t\t\t\t\tduration: 6000,\r\n\t\t\t\t\t\ttitle: 'Error',\r\n\t\t\t\t\t\tmessage: 'The selected instructor is not actively enrolled in any course.'\r\n\t\t\t\t\t})\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t},\r\n\t\tasync prepareAllInstructorReport() {\r\n\t\t\tlet type = ''\r\n\t\t\tlet thisTemplate\r\n\t\t\tswitch (this.courseType) {\r\n\t\t\t\tcase '1101':\r\n\t\t\t\t\ttype = 'ENC 1101'\r\n\t\t\t\t\tthisTemplate = await templateService.getRootTemplateByCourseType(this.termCode, this.orgCode, type)\r\n\t\t\t\t\tbreak\r\n\t\t\t\tcase '1102':\r\n\t\t\t\t\ttype = 'ENC 1102'\r\n\t\t\t\t\tthisTemplate = await templateService.getRootTemplateByCourseType(this.termCode, this.orgCode, type)\r\n\t\t\t\t\tbreak\r\n\t\t\t\tdefault:\r\n\t\t\t\t\ttype = 'PTC'\r\n\t\t\t\t\tthisTemplate = await templateService.getRootTemplateByCourseType(this.termCode, this.orgCode, type)\r\n\t\t\t\t\tbreak\r\n\t\t\t}\r\n\t\t\tif (thisTemplate) {\r\n\t\t\t\tthis.templateId = thisTemplate.Id\r\n\t\t\t\tthis.rubrics = await rubricService.getRubricsInTemplate(this.templateId)\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\tonRubricChange() {\r\n\t\t\tthis.reportType = null\r\n\t\t\tthis.rubricCriteria = this.currentRubric.RubricCriterias\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Handle logics when a course is selected.\r\n\t\tasync onCourseChange() {\r\n\t\t\tthis.assignments = null\r\n\t\t\tthis.currentAssignment = null\r\n\t\t\tthis.tableData = []\r\n\t\t\tthis.rubricCriteria = []\r\n\t\t\tthis.currentCriteria = 'all'\r\n\t\t\tthis.reportType = null\r\n\t\t\tthis.classCode = this.currentCourse.ClassCode\r\n\t\t\tthis.termCode = this.currentCourse.TermCode\r\n\t\t\tthis.students = []\r\n\t\t\tthis.currentStudent = null\r\n\t\t\t// Get all active students in the class.\r\n\t\t\tthis.students = this.getStudents()\r\n\t\t\t// Get all assignments in the class.\r\n\t\t\tthis.assignments = await assignmentService.getAssignmentsByTemplate(this.currentCourse.ProjectTemplate)\r\n\t\t},\r\n\t\tasync onStudentChange() {\r\n\t\t\tthis.reportType = null\r\n\t\t\tthis.tableData = []\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Handle logics when a project is selected.\r\n\t\tasync onAssignmentChange() {\r\n\t\t\tthis.tableData = []\r\n\t\t\tthis.reportType = null\r\n\t\t\tthis.rubricCriteria = []\r\n\t\t\tthis.currentCriteria = 'all'\r\n\t\t\tthis.assignmentId = this.currentAssignment.Id\r\n\t\t\tif (this.currentAssignment) {\r\n\t\t\t\tthis.isGroupProject = this.currentAssignment.IsGroupAssignment\r\n\t\t\t\tif (this.isGroupProject) {\r\n\t\t\t\t\tawait this.getGroups()\r\n\t\t\t\t} else { await this.getStudents() }\r\n\r\n\t\t\t\tawait this.getRubricData(this.currentAssignment.RubricId)\r\n\t\t\t}\r\n\t\t},\r\n\t\tasync onReportTypeChange() {\r\n\t\t\tthis.tableData = []\r\n\t\t\tthis.currentCriteria = 'all'\r\n\t\t\tif (this.reportType == 1) {\r\n\t\t\t\tthis.instructorScores = []\r\n\t\t\t\tawait this.GetIndividualOutcomesInstructorScore()\r\n\t\t\t} else if (this.reportType == 2) {\r\n\t\t\t\tthis.selfReviewScores = []\r\n\t\t\t\tawait this.GetIndividualOutcomesSelfScore()\r\n\t\t\t} else {\r\n\t\t\t\t// await this.getRubricData(this.currentAssignment.AppraisalRubricId)\r\n\t\t\t\tthis.appraisalScores = []\r\n\t\t\t\tawait this.GetIndividualOutcomesAppraisalScore()\r\n\t\t\t}\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Get all group project team assignments.\r\n\t\tasync getGroups() {\r\n\t\t\tconst groups = await teamFormationService.getAssignedTeams(this.termCode, this.orgCode, this.classCode,\r\n\t\t\t\tthis.assignmentId, 'group_project')\r\n\t\t\tif (groups && groups.length > 0) {\r\n\t\t\t\tthis.groups = groups\r\n\t\t\t} else {\r\n\t\t\t\tNotification.info({\r\n\t\t\t\t\tduration: 6000,\r\n\t\t\t\t\ttitle: 'Info',\r\n\t\t\t\t\tmessage: 'No team assignments found for this group project.'\r\n\t\t\t\t})\r\n\t\t\t}\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Get all active students in the selected course.\r\n\t\tasync getStudents() {\r\n\t\t\tconst payload = {\r\n\t\t\t\torgCode: this.orgCode,\r\n\t\t\t\ttermCode: this.termCode,\r\n\t\t\t\tclassCode: this.classCode\r\n\t\t\t}\r\n\t\t\tconst students = await userService.getStudentList(payload)\r\n\t\t\tif (students && students.length > 0) {\r\n\t\t\t\tthis.students = students\r\n\t\t\t} else {\r\n\t\t\t\tNotification.info({\r\n\t\t\t\t\tduration: 6000,\r\n\t\t\t\t\ttitle: 'Info',\r\n\t\t\t\t\tmessage: 'No active student found in this course.'\r\n\t\t\t\t})\r\n\t\t\t}\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Get rubric data by id.\r\n\t\t// @arg The rubric id.\r\n\t\tasync getRubricData(rubricId) {\r\n\t\t\tawait rubricService.getRubricById(rubricId)\r\n\t\t\t\t.then(rubric => {\r\n\t\t\t\t\tthis.rubricCriteria = rubric.RubricCriterias\r\n\t\t\t\t}).catch((error) => {\r\n\t\t\t\t\tconsole.log(error)\r\n\t\t\t\t})\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Get all individual outcomes instructor scores for a student.\r\n\t\tasync GetIndividualOutcomesInstructorScore() {\r\n\t\t\tconst instructorScores = await reviewService.GetIndividualOutcomesInstructorScore(this.termCode, this.orgCode, this.classCode, this.currentStudent)\r\n\t\t\tif (instructorScores && instructorScores.length > 0) {\r\n\t\t\t\tthis.scores = instructorScores\r\n\t\t\t\tconst that = this\r\n\t\t\t\tawait this.asyncForEach(instructorScores, async item => {\r\n\t\t\t\t\tconst arr = []\r\n\t\t\t\t\tarr.push(item)\r\n\t\t\t\t\tthat.tableData.push(arr)\r\n\t\t\t\t})\r\n\t\t\t}\r\n\t\t},\r\n\t\tasync GetIndividualOutcomesSelfScore() {\r\n\t\t\tconst selfReviewScores = await reviewService.GetIndividualOutcomesSelfScore(this.termCode, this.orgCode, this.classCode, this.currentStudent)\r\n\t\t\tif (selfReviewScores && selfReviewScores.length > 0) {\r\n\t\t\t\tthis.scores = selfReviewScores\r\n\t\t\t\tconst that = this\r\n\t\t\t\tawait this.asyncForEach(selfReviewScores, async item => {\r\n\t\t\t\t\tconst arr = []\r\n\t\t\t\t\tarr.push(item)\r\n\t\t\t\t\tthat.tableData.push(arr)\r\n\t\t\t\t})\r\n\t\t\t}\r\n\t\t},\r\n\t\tasync GetIndividualOutcomesAppraisalScore() {\r\n\t\t\tconst appraisalScores = await reviewService.GetIndividualOutcomesAppraisalScore(this.termCode, this.orgCode, this.classCode, this.currentStudent)\r\n\t\t\tif (appraisalScores && appraisalScores.length > 0) {\r\n\t\t\t\tthis.scores = appraisalScores\r\n\t\t\t\tconst that = this\r\n\t\t\t\tawait this.asyncForEach(appraisalScores, async item => {\r\n\t\t\t\t\tconst arr = []\r\n\t\t\t\t\tarr.push(item)\r\n\t\t\t\t\tthat.tableData.push(arr)\r\n\t\t\t\t})\r\n\t\t\t}\r\n\t\t},\r\n\t\tasync asyncForEach(array, callback) {\r\n\t\t\tfor (let index = 0; index < array.length; index++) {\r\n\t\t\t\tawait callback(array[index], index, array)\r\n\t\t\t}\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Export the data to excel.\r\n\t\tasync exportFile() {\r\n\t\t\t// let wb = XLSX.utils.book_new() ;\r\n\t\t\t// await this.asyncForEach(this.scores, async item =>{\r\n\t\t\t// \tlet arr = [];\r\n\t\t\t// \tlet data = {};\r\n\t\t\t// \t//row['AssignmetName'] = item.AssignmentName,\r\n\t\t\t// \titem.Criteria.forEach(c => {\r\n\t\t\t// \t\tdata[c.CriteriaName + ' Score'] = item.Scores.find(x => x.CriteriaId == c.CriteriaId).Mark == 999 ? 'Not Given' : item.Scores.find(x => x.CriteriaId == c.CriteriaId).Mark;\r\n\t\t\t// \t\tdata[c.CriteriaName + ' Comment'] = item.Scores.find(x => x.CriteriaId == c.CriteriaId).Comment;\r\n\t\t\t// \t});\r\n\t\t\t// arr.push(data);\r\n\t\t\t// \tlet sheet = XLSX.utils.json_to_sheet(data);\r\n\t\t\t// \tXLSX.utils.book_append_sheet(wb, sheet, item.AssignmentName);\r\n\t\t\t// });\r\n\r\n\t\t\tconst wb = XLSX.utils.book_new()\r\n\t\t\tconst ws = XLSX.utils.json_to_sheet([{}])\r\n\t\t\tlet count = 1\r\n\t\t\tXLSX.utils.book_append_sheet(wb, ws, 'Individual Outcomes Report')\r\n\t\t\tawait this.asyncForEach(this.scores, async item => {\r\n\t\t\t\tconst arr = []\r\n\t\t\t\tconst data = {}\r\n\t\t\t\tdata['AssignmetName'] = item.AssignmentName\r\n\t\t\t\titem.Criteria.forEach(c => {\r\n\t\t\t\t\tdata[c.CriteriaName + ' Score'] = item.Scores.find(x => x.CriteriaId == c.CriteriaId).Mark == 999 ? 'Not Given' : item.Scores.find(x => x.CriteriaId == c.CriteriaId).Mark\r\n\t\t\t\t\tdata[c.CriteriaName + ' Comment'] = item.Scores.find(x => x.CriteriaId == c.CriteriaId).Comment\r\n\t\t\t\t})\r\n\t\t\t\tarr.push(data)\r\n\t\t\t\tXLSX.utils.sheet_add_json(ws, arr, { origin: 'A' + count + '' })\r\n\t\t\t\tcount = count + 5\r\n\t\t\t})\r\n\t\t\tXLSX.writeFile(wb, 'Individual Outcomes Report.xlsx')\r\n\t\t}\r\n\t}\r\n}\r\n</script>\r\n\r\n<style scoped>\r\n.el-table__empty-text{\r\n\tdisplay: none;\r\n}\r\n.student-submission-wrapper{\r\n padding: 20px;\r\n box-shadow: 20px 10px 25px 20px rgba(109, 107, 107, 0.1);\r\n}\r\n\r\n</style>\r\n<style>\r\n.center-align{\r\n text-align: center !important;\r\n}\r\n.cutom-popper{\r\n width: 400px;\r\n}\r\n</style>\r\n\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./IndividualOutcomes.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./IndividualOutcomes.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./IndividualOutcomes.vue?vue&type=template&id=b4b12c18&scoped=true&\"\nimport script from \"./IndividualOutcomes.vue?vue&type=script&lang=js&\"\nexport * from \"./IndividualOutcomes.vue?vue&type=script&lang=js&\"\nimport style0 from \"./IndividualOutcomes.vue?vue&type=style&index=0&id=b4b12c18&scoped=true&lang=css&\"\nimport style1 from \"./IndividualOutcomes.vue?vue&type=style&index=1&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"b4b12c18\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_vm._m(0),_c('div',{staticClass:\"student-submission-wrapper\"},[_c('div',{staticStyle:{\"margin-bottom\":\"20px\"},attrs:{\"id\":\"filter\"}},[_c('el-tooltip',{attrs:{\"content\":\"Select Term\",\"placement\":\"right-start\"}},[(_vm.terms)?_c('el-select',{staticStyle:{\"margin-right\":\"10px\",\"margin-top\":\"10px\"},attrs:{\"id\":\"term-selection\",\"filterable\":\"\",\"placeholder\":\"Select Term\",\"no-match-text\":\"No Matching Data\",\"no-data-text\":\"No data\",\"loading-text\":\"Loading\"},on:{\"change\":function($event){return _vm.onTermChange()}},model:{value:(_vm.termCode),callback:function ($$v) {_vm.termCode=$$v},expression:\"termCode\"}},_vm._l((_vm.terms),function(item){return _c('el-option',{key:item.TermCode,attrs:{\"label\":item.TermDescription,\"value\":item.TermCode}})}),1):_vm._e()],1),_c('el-tooltip',{attrs:{\"content\":\"Course Type\",\"placement\":\"right-start\"}},[(_vm.courseTypes && _vm.isAdmin && _vm.termCode)?_c('el-select',{staticStyle:{\"margin-right\":\"10px\",\"margin-top\":\"10px\"},attrs:{\"id\":\"course-type-selection\",\"filterable\":\"\",\"placeholder\":\"Select Course Type\",\"no-match-text\":\"No Matching Data\",\"no-data-text\":\"No data\",\"loading-text\":\"Loading\"},on:{\"change\":function($event){return _vm.onCourseTypeChange()}},model:{value:(_vm.courseType),callback:function ($$v) {_vm.courseType=$$v},expression:\"courseType\"}},_vm._l((_vm.courseTypes),function(item){return _c('el-option',{key:item.Id,attrs:{\"label\":item.Name,\"value\":item.Id}})}),1):_vm._e()],1),(_vm.termCode && _vm.isAdmin && _vm.instructors && _vm.courseType)?_c('el-tooltip',{attrs:{\"content\":\"Select Instructor\",\"placement\":\"right-start\"}},[_c('el-select',{staticStyle:{\"margin-right\":\"10px\",\"margin-top\":\"10px\"},attrs:{\"id\":\"instructor-selection\",\"filterable\":\"\",\"placeholder\":\"Select Instructor\",\"no-match-text\":\"No Matching Data\",\"no-data-text\":\"No data\",\"loading-text\":\"Loading\"},on:{\"change\":function($event){return _vm.onInstructorChange()}},model:{value:(_vm.currentInstructor),callback:function ($$v) {_vm.currentInstructor=$$v},expression:\"currentInstructor\"}},[_c('el-option',{key:\"all\",attrs:{\"label\":\"All Instructors\",\"value\":\"all\"}}),_vm._l((_vm.instructors),function(item){return _c('el-option',{key:item.UserName,attrs:{\"label\":item.LastName + ', ' + item.FirstName,\"value\":item.UserName}})})],2)],1):_vm._e(),_c('el-tooltip',{attrs:{\"content\":\"Select Course\",\"placement\":\"top\"}},[(_vm.currentInstructor && _vm.courses)?_c('el-select',{staticStyle:{\"margin-right\":\"10px\",\"margin-top\":\"10px\"},attrs:{\"id\":\"course-selection\",\"value-key\":\"ClassCode\",\"filterable\":\"\",\"placeholder\":\"Select Course\",\"no-match-text\":\"No Matching Data\",\"no-data-text\":\"No data\",\"loading-text\":\"Loading\"},on:{\"change\":function($event){return _vm.onCourseChange()}},model:{value:(_vm.currentCourse),callback:function ($$v) {_vm.currentCourse=$$v},expression:\"currentCourse\"}},[_c('el-option',{key:\"all\",attrs:{\"label\":\"All Courses\",\"value\":\"all\"}}),_vm._l((_vm.courses),function(item){return _c('el-option',{key:item.Id,attrs:{\"label\":item.ClassDescription + ' - '+ _vm.getTermDescription(item.TermCode),\"value\":item}})})],2):_vm._e()],1),(_vm.assignments)?_c('el-tooltip',{staticClass:\"item\",attrs:{\"effect\":\"light\",\"content\":\"Select Project\",\"placement\":\"top\"}},[_c('el-select',{staticStyle:{\"margin-right\":\"10px\",\"margin-top\":\"10px\"},attrs:{\"id\":\"assignments-selection\",\"value-key\":\"Id\",\"filterable\":\"\",\"placeholder\":\"Select Project\",\"no-match-text\":\"No Matching Data\",\"no-data-text\":\"No data\",\"loading-text\":\"Loading\"},on:{\"change\":function($event){return _vm.onAssignmentChange()}},model:{value:(_vm.currentAssignment),callback:function ($$v) {_vm.currentAssignment=$$v},expression:\"currentAssignment\"}},[(_vm.currentInstructor != 'all')?_c('el-option',{key:\"all\",attrs:{\"label\":\"All Projects\",\"value\":\"all\"}}):_vm._e(),_vm._l((_vm.assignments),function(item){return _c('el-option',{key:item.Id,attrs:{\"label\":item.AssignmentName,\"value\":item}})})],2)],1):_vm._e(),(_vm.currentAssignment && _vm.tableData && _vm.tableData.length > 0)?_c('el-tooltip',{staticClass:\"item\",attrs:{\"effect\":\"light\",\"content\":\"Select Category\",\"placement\":\"top\"}},[_c('el-select',{staticStyle:{\"margin-right\":\"10px\",\"margin-top\":\"10px\"},attrs:{\"id\":\"category-selection\",\"value-key\":\"Id\",\"filterable\":\"\",\"placeholder\":\"Select Category\",\"no-match-text\":\"No Matching Data\",\"no-data-text\":\"No data\",\"loading-text\":\"Loading\"},on:{\"change\":function($event){return _vm.onCategoryChange()}},model:{value:(_vm.category),callback:function ($$v) {_vm.category=$$v},expression:\"category\"}},[_c('el-option',{key:\"all\",attrs:{\"label\":\"All Categories\",\"value\":\"all\"}}),_vm._l((_vm.categories),function(item){return _c('el-option',{key:item.Id,attrs:{\"label\":item.Name,\"value\":item}})})],2)],1):_vm._e(),(_vm.tableData && _vm.tableData.length > 0)?_c('el-button',{staticStyle:{\"margin-right\":\"10px\",\"margin-top\":\"10px\"},on:{\"click\":function($event){return _vm.excelExport()}}},[_c('span',[_vm._v(\"\\n Export to Excel\\n \")])]):_vm._e(),((_vm.currentCourse == 'all' || _vm.currentAssignment) && (_vm.tableData && _vm.tableData.length > 0))?_c('el-popover',{staticStyle:{\"margin-right\":\"10px\",\"margin-top\":\"10px\"},attrs:{\"placement\":\"bottom\",\"width\":\"285\"},model:{value:(_vm.popOverVisible),callback:function ($$v) {_vm.popOverVisible=$$v},expression:\"popOverVisible\"}},[_c('p',[_vm._v(\"Select how you would like to download\")]),_c('div',{staticStyle:{\"text-align\":\"right\",\"margin\":\"0\"}},[_c('el-button',{attrs:{\"type\":\"default\"},on:{\"click\":function($event){return _vm.pdfExportAll()}}},[_vm._v(\"\\n Multiple files\\n \")]),_c('el-button',{attrs:{\"type\":\"default\"},on:{\"click\":function($event){return _vm.pdfExportOne()}}},[_vm._v(\"\\n One combined file\\n \")])],1),_c('el-button',{attrs:{\"slot\":\"reference\"},slot:\"reference\"},[_vm._v(\"\\n Export to PDF\\n \")])],1):_vm._e()],1),(_vm.tableData && _vm.tableData.length > 0)?_c('el-table',{ref:\"elTable\",staticStyle:{\"text-align\":\"center\",\"width\":\"100%\"},attrs:{\"id\":\"score-table\",\"data\":_vm.tableData.filter(function (data) { return _vm.category == 'all' || data.Category == _vm.category.Name; }),\"height\":\"82vh\",\"default-sort\":{prop: 'date', order: 'descending'}}},[(_vm.currentInstructor == 'all')?_c('el-table-column',{attrs:{\"sortable\":\"\",\"fixed\":\"\",\"prop\":\"InstructorName\",\"label\":\"Instructor Name\"}}):_vm._e(),_c('el-table-column',{attrs:{\"sortable\":\"\",\"fixed\":\"\",\"prop\":\"ClassDescription\",\"label\":\"Class\"}}),_c('el-table-column',{attrs:{\"sortable\":\"\",\"fixed\":\"\",\"prop\":\"CFName\",\"label\":\"CF Name\"}}),_c('el-table-column',{attrs:{\"sortable\":\"\",\"fixed\":\"\",\"prop\":\"ProjectName\",\"label\":\"Project Name\"}}),_c('el-table-column',{attrs:{\"sortable\":\"\",\"fixed\":\"\",\"prop\":\"Category\",\"label\":\"Category\"}}),_c('el-table-column',{attrs:{\"sortable\":\"\",\"fixed\":\"\",\"prop\":\"IssueName\",\"label\":\"Issue Name\"}}),_c('el-table-column',{attrs:{\"class-name\":\"center-align\",\"label\":\"Student Example\"},scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [_c('div',{staticStyle:{\"max-height\":\"90px\"}},[_c('el-tooltip',{staticClass:\"item\",staticStyle:{\"margin-right\":\"18px\",\"margin-left\":\"0px\"},attrs:{\"effect\":\"light\",\"content\":scope.row.Examples,\"placement\":\"bottom\",\"popper-class\":\"cutom-popper\"}},[_c('div',{staticStyle:{\"max-height\":\"90px\"}},[_vm._v(\"\\n \"+_vm._s(scope.row.Examples)+\"\\n \")])])],1)]}}],null,false,802344368)}),_c('el-table-column',{attrs:{\"class-name\":\"center-align\",\"label\":\"Description\"},scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [_c('div',{staticStyle:{\"max-height\":\"90px\"}},[_c('el-tooltip',{staticClass:\"item\",staticStyle:{\"margin-right\":\"18px\",\"margin-left\":\"0px\"},attrs:{\"effect\":\"light\",\"content\":scope.row.Description,\"placement\":\"bottom\",\"popper-class\":\"cutom-popper\"}},[_c('div',{staticStyle:{\"max-height\":\"90px\"}},[_vm._v(\"\\n \"+_vm._s(scope.row.Description)+\"\\n \")])])],1)]}}],null,false,2039863760)}),_c('el-table-column',{attrs:{\"class-name\":\"center-align\",\"label\":\"Explanation\"},scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [_c('div',{staticStyle:{\"max-height\":\"90px\"}},[_c('el-tooltip',{staticClass:\"item\",staticStyle:{\"margin-right\":\"18px\",\"margin-left\":\"0px\"},attrs:{\"effect\":\"light\",\"content\":scope.row.Explanation,\"placement\":\"bottom\",\"popper-class\":\"cutom-popper\"}},[_c('div',{staticStyle:{\"max-height\":\"90px\"}},[_vm._v(\"\\n \"+_vm._s(scope.row.Explanation)+\"\\n \")])])],1)]}}],null,false,2056136304)})],1):_vm._e()],1),(_vm.isDownloadDivAvailable)?_c('div',{staticStyle:{\"width\":\"900px\"},attrs:{\"id\":\"downloadPdfContent\"}},[(_vm.pdfDownloadData && _vm.pdfDownloadData.length > 0)?_c('div',_vm._l((_vm.pdfDownloadData),function(cf,i){return _c('div',{key:cf.Id,attrs:{\"id\":'cf_' + cf.Id}},[_c('div',{staticStyle:{\"margin-bottom\":\"20px\"},attrs:{\"id\":\"downloadPdfHeader\"}},[_c('div',[_c('h1',[_vm._v(\"\\n \"+_vm._s(i + 1)+\". \"+_vm._s(cf.Name)+\"\\n \")])]),_c('div',[_c('span',{staticStyle:{\"font-weight\":\"bold\"}},[_vm._v(\"\\n Term: \"+_vm._s(_vm.getTermName(cf.TermCode))+\"\\n \")])]),_c('div',[_c('span',{staticStyle:{\"font-weight\":\"bold\"}},[_vm._v(\"\\n Class: \"+_vm._s(_vm.getClassName(cf.ClassCode))+\"\\n \")])]),_c('div',[_c('span',{staticStyle:{\"font-weight\":\"bold\"}},[_vm._v(\"\\n Project Name: \"+_vm._s(_vm.getProjectName(cf.AssignmentId))+\"\\n \")])])]),_c('hr'),_vm._l((cf.CollectiveFeedbackIssues),function(issue,idx){return _c('div',{key:issue.Id,attrs:{\"id\":\"downloadPdfBody\"}},[_c('div',{attrs:{\"id\":\"issueDiv\"}},[_c('h3',[_vm._v(_vm._s(i + 1)+\". \"+_vm._s((idx + 1 ) + \". \" + issue.Title))]),_c('div',[_c('div',[_c('span',[_c('b',[_vm._v(_vm._s(i + 1)+\". \"+_vm._s((idx + 1 ) + \".1. Category\"))])])]),_c('div',{staticStyle:{\"font-size\":\"14px\",\"margin-bottom\":\"10px\",\"margin-top\":\"10px\"}},[_vm._v(\"\\n \"+_vm._s(_vm.getCategory(issue.Category))+\"\\n \")])]),_c('div',[_c('div',[_c('span',[_c('b',[_vm._v(_vm._s(i + 1)+\". \"+_vm._s((idx + 1 ) + \".2. Student Example\"))])])]),_c('div',{staticStyle:{\"font-size\":\"14px\",\"margin-bottom\":\"10px\"},domProps:{\"innerHTML\":_vm._s(_vm.encodeHtml(issue.Examples))}}),_vm._m(1,true)]),_c('br'),_c('div',[_c('div',[_c('b',[_vm._v(_vm._s(i + 1)+\". \"+_vm._s((idx + 1 ) + \".3. Summary: Why this is an issue?\"))])]),_c('div',{staticStyle:{\"font-size\":\"14px\",\"margin-bottom\":\"10px\"},domProps:{\"innerHTML\":_vm._s(_vm.encodeHtml(issue.Description))}}),_vm._m(2,true)]),_c('br'),_c('div',[_c('div',[_c('span',[_c('b',[_vm._v(_vm._s(i + 1)+\". \"+_vm._s((idx + 1 ) + \".4. Explanation: How to improve?\"))])])]),_c('div',{staticStyle:{\"font-size\":\"14px\",\"margin-bottom\":\"10px\"},domProps:{\"innerHTML\":_vm._s(_vm.encodeHtml(issue.Explanation))}}),_vm._m(3,true)]),_c('br'),_c('h2')]),_c('hr')])})],2)}),0):_vm._e()]):_vm._e()])}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"breadcumb\"},[_c('div',{staticClass:\"ic-app-crumbs\"},[_c('span',{staticClass:\"breadcumb-text\"},[_vm._v(\"\\n Reports\\n \"),_c('i',{staticClass:\"fas fa-chevron-right breadcumb-next\"}),_vm._v(\"\\n Collective Feedback Report\\n \")])])])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticStyle:{\"margin-bottom\":\"10px\"}},[_c('span')])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticStyle:{\"margin-bottom\":\"10px\"}},[_c('span')])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticStyle:{\"margin-bottom\":\"10px\"}},[_c('span',{staticStyle:{\"margin-bottom\":\"10px\"}})])}]\n\nexport { render, staticRenderFns }","<template>\r\n <div>\r\n <div class=\"breadcumb\">\r\n <div class=\"ic-app-crumbs\">\r\n <span class=\"breadcumb-text\">\r\n Reports\r\n <i class=\"fas fa-chevron-right breadcumb-next\" />\r\n Collective Feedback Report\r\n </span>\r\n </div>\r\n </div>\r\n <div class=\"student-submission-wrapper\">\r\n <div id=\"filter\" style=\"margin-bottom: 20px;\">\r\n <el-tooltip content=\"Select Term\" placement=\"right-start\">\r\n <el-select\r\n v-if=\"terms\"\r\n id=\"term-selection\"\r\n v-model=\"termCode\"\r\n filterable\r\n placeholder=\"Select Term\"\r\n no-match-text=\"No Matching Data\"\r\n no-data-text=\"No data\"\r\n loading-text=\"Loading\"\r\n style=\"margin-right: 10px; margin-top: 10px;\"\r\n @change=\"onTermChange()\"\r\n >\r\n <el-option\r\n v-for=\"item in terms\"\r\n :key=\"item.TermCode\"\r\n :label=\"item.TermDescription\"\r\n :value=\"item.TermCode\"\r\n />\r\n </el-select>\r\n </el-tooltip>\r\n\r\n <el-tooltip content=\"Course Type\" placement=\"right-start\">\r\n <el-select\r\n v-if=\"courseTypes && isAdmin && termCode\"\r\n id=\"course-type-selection\"\r\n v-model=\"courseType\"\r\n filterable\r\n placeholder=\"Select Course Type\"\r\n no-match-text=\"No Matching Data\"\r\n no-data-text=\"No data\"\r\n loading-text=\"Loading\"\r\n style=\"margin-right: 10px; margin-top: 10px;\"\r\n @change=\"onCourseTypeChange()\"\r\n >\r\n <el-option\r\n v-for=\"item in courseTypes\"\r\n :key=\"item.Id\"\r\n :label=\"item.Name\"\r\n :value=\"item.Id\"\r\n />\r\n </el-select>\r\n </el-tooltip>\r\n\r\n <el-tooltip v-if=\"termCode && isAdmin && instructors && courseType\" content=\"Select Instructor\" placement=\"right-start\">\r\n <el-select\r\n id=\"instructor-selection\"\r\n v-model=\"currentInstructor\"\r\n filterable\r\n placeholder=\"Select Instructor\"\r\n no-match-text=\"No Matching Data\"\r\n no-data-text=\"No data\"\r\n loading-text=\"Loading\"\r\n style=\"margin-right: 10px; margin-top: 10px;\"\r\n @change=\"onInstructorChange()\"\r\n >\r\n <el-option\r\n key=\"all\"\r\n label=\"All Instructors\"\r\n value=\"all\"\r\n />\r\n <el-option\r\n v-for=\"item in instructors\"\r\n :key=\"item.UserName\"\r\n :label=\"item.LastName + ', ' + item.FirstName\"\r\n :value=\"item.UserName\"\r\n />\r\n </el-select>\r\n </el-tooltip>\r\n\r\n <el-tooltip content=\"Select Course\" placement=\"top\">\r\n <el-select\r\n v-if=\"currentInstructor && courses\"\r\n id=\"course-selection\"\r\n v-model=\"currentCourse\"\r\n value-key=\"ClassCode\"\r\n filterable\r\n placeholder=\"Select Course\"\r\n no-match-text=\"No Matching Data\"\r\n no-data-text=\"No data\"\r\n loading-text=\"Loading\"\r\n style=\"margin-right: 10px; margin-top: 10px;\"\r\n @change=\"onCourseChange()\"\r\n >\r\n <el-option\r\n key=\"all\"\r\n label=\"All Courses\"\r\n value=\"all\"\r\n />\r\n <el-option\r\n v-for=\"item in courses\"\r\n :key=\"item.Id\"\r\n :label=\"item.ClassDescription + ' - '+ getTermDescription(item.TermCode)\"\r\n :value=\"item\"\r\n />\r\n </el-select>\r\n </el-tooltip>\r\n\r\n <el-tooltip v-if=\"assignments\" class=\"item\" effect=\"light\" content=\"Select Project\" placement=\"top\">\r\n <el-select\r\n id=\"assignments-selection\"\r\n v-model=\"currentAssignment\"\r\n value-key=\"Id\"\r\n filterable\r\n placeholder=\"Select Project\"\r\n no-match-text=\"No Matching Data\"\r\n no-data-text=\"No data\"\r\n loading-text=\"Loading\"\r\n style=\"margin-right: 10px; margin-top: 10px;\"\r\n @change=\"onAssignmentChange()\"\r\n >\r\n <el-option\r\n v-if=\"currentInstructor != 'all'\"\r\n key=\"all\"\r\n label=\"All Projects\"\r\n value=\"all\"\r\n />\r\n <el-option\r\n v-for=\"item in assignments\"\r\n :key=\"item.Id\"\r\n :label=\"item.AssignmentName\"\r\n :value=\"item\"\r\n />\r\n </el-select>\r\n </el-tooltip>\r\n\r\n <el-tooltip v-if=\"currentAssignment && tableData && tableData.length > 0\" class=\"item\" effect=\"light\" content=\"Select Category\" placement=\"top\">\r\n <el-select\r\n id=\"category-selection\"\r\n v-model=\"category\"\r\n value-key=\"Id\"\r\n filterable\r\n placeholder=\"Select Category\"\r\n no-match-text=\"No Matching Data\"\r\n no-data-text=\"No data\"\r\n loading-text=\"Loading\"\r\n style=\"margin-right: 10px; margin-top: 10px;\"\r\n @change=\"onCategoryChange()\"\r\n >\r\n <el-option\r\n key=\"all\"\r\n label=\"All Categories\"\r\n value=\"all\"\r\n />\r\n <el-option\r\n v-for=\"item in categories\"\r\n :key=\"item.Id\"\r\n :label=\"item.Name\"\r\n :value=\"item\"\r\n />\r\n </el-select>\r\n </el-tooltip>\r\n\r\n <el-button v-if=\"tableData && tableData.length > 0\" style=\"margin-right: 10px; margin-top: 10px;\" @click=\"excelExport()\">\r\n <span>\r\n Export to Excel\r\n </span>\r\n </el-button>\r\n\r\n <el-popover\r\n v-if=\"(currentCourse == 'all' || currentAssignment) && (tableData && tableData.length > 0)\"\r\n v-model=\"popOverVisible\"\r\n placement=\"bottom\"\r\n width=\"285\"\r\n style=\"margin-right: 10px; margin-top: 10px;\"\r\n >\r\n <p>Select how you would like to download</p>\r\n <div style=\"text-align: right; margin: 0\">\r\n <el-button type=\"default\" @click=\"pdfExportAll()\">\r\n Multiple files\r\n </el-button>\r\n <el-button type=\"default\" @click=\"pdfExportOne()\">\r\n One combined file\r\n </el-button>\r\n </div>\r\n <el-button slot=\"reference\">\r\n Export to PDF\r\n </el-button>\r\n </el-popover>\r\n\r\n <!-- <el-button style=\"float: right; margin-right: 10px;\" @click=\"pdfExport()\">\r\n\t\t\t\t\t<span>\r\n\t\t\t\t\t\tExport to Pdf\r\n\t\t\t\t\t</span>\r\n\t\t\t\t</el-button> -->\r\n </div>\r\n <el-table\r\n v-if=\"tableData && tableData.length > 0\"\r\n id=\"score-table\"\r\n ref=\"elTable\"\r\n :data=\"tableData.filter(data => category == 'all' || data.Category == category.Name)\"\r\n style=\"text-align:center; width: 100%\"\r\n height=\"82vh\"\r\n :default-sort=\"{prop: 'date', order: 'descending'}\"\r\n >\r\n <el-table-column v-if=\"currentInstructor == 'all'\" sortable fixed prop=\"InstructorName\" label=\"Instructor Name\" />\r\n <el-table-column sortable fixed prop=\"ClassDescription\" label=\"Class\" />\r\n <el-table-column sortable fixed prop=\"CFName\" label=\"CF Name\" />\r\n <el-table-column sortable fixed prop=\"ProjectName\" label=\"Project Name\" />\r\n <el-table-column sortable fixed prop=\"Category\" label=\"Category\" />\r\n <el-table-column sortable fixed prop=\"IssueName\" label=\"Issue Name\" />\r\n <el-table-column class-name=\"center-align\" label=\"Student Example\">\r\n <template slot-scope=\"scope\">\r\n <div style=\"max-height: 90px;\">\r\n <el-tooltip\r\n style=\"margin-right: 18px; margin-left: 0px;\"\r\n class=\"item\"\r\n effect=\"light\"\r\n :content=\"scope.row.Examples\"\r\n placement=\"bottom\"\r\n popper-class=\"cutom-popper\"\r\n >\r\n <div style=\"max-height: 90px;\">\r\n {{ scope.row.Examples }}\r\n </div>\r\n </el-tooltip>\r\n </div>\r\n </template>\r\n </el-table-column>\r\n <el-table-column class-name=\"center-align\" label=\"Description\">\r\n <template slot-scope=\"scope\">\r\n <div style=\"max-height: 90px;\">\r\n <el-tooltip\r\n style=\"margin-right: 18px; margin-left: 0px;\"\r\n class=\"item\"\r\n effect=\"light\"\r\n :content=\"scope.row.Description\"\r\n placement=\"bottom\"\r\n popper-class=\"cutom-popper\"\r\n >\r\n <div style=\"max-height: 90px;\">\r\n {{ scope.row.Description }}\r\n </div>\r\n </el-tooltip>\r\n </div>\r\n </template>\r\n </el-table-column>\r\n\r\n <el-table-column class-name=\"center-align\" label=\"Explanation\">\r\n <template slot-scope=\"scope\">\r\n <div style=\"max-height: 90px;\">\r\n <el-tooltip\r\n style=\"margin-right: 18px; margin-left: 0px;\"\r\n class=\"item\"\r\n effect=\"light\"\r\n :content=\"scope.row.Explanation\"\r\n placement=\"bottom\"\r\n popper-class=\"cutom-popper\"\r\n >\r\n <div style=\"max-height: 90px;\">\r\n {{ scope.row.Explanation }}\r\n </div>\r\n </el-tooltip>\r\n </div>\r\n </template>\r\n </el-table-column>\r\n <!-- <el-table-column fixed prop=\"UpdatedTime\" label=\"UpdatedTime\" /> -->\r\n </el-table>\r\n </div>\r\n\r\n <div v-if=\"isDownloadDivAvailable\" id=\"downloadPdfContent\" style=\"width: 900px;\">\r\n <div v-if=\"pdfDownloadData && pdfDownloadData.length > 0\">\r\n <div v-for=\"(cf, i) in pdfDownloadData\" :id=\"'cf_' + cf.Id\" :key=\"cf.Id\">\r\n <div id=\"downloadPdfHeader\" style=\"margin-bottom: 20px;\">\r\n <div>\r\n <h1>\r\n {{ i + 1 }}. {{ cf.Name }}\r\n </h1>\r\n </div>\r\n <div>\r\n <span style=\"font-weight: bold;\">\r\n Term: {{ getTermName(cf.TermCode) }}\r\n </span>\r\n </div>\r\n <div>\r\n <span style=\"font-weight: bold;\">\r\n Class: {{ getClassName(cf.ClassCode) }}\r\n </span>\r\n </div>\r\n <div>\r\n <span style=\"font-weight: bold;\">\r\n Project Name: {{ getProjectName(cf.AssignmentId) }}\r\n </span>\r\n </div>\r\n </div>\r\n <hr>\r\n <div v-for=\"(issue, idx) in cf.CollectiveFeedbackIssues\" id=\"downloadPdfBody\" :key=\"issue.Id\">\r\n <div id=\"issueDiv\">\r\n <h3>{{ i + 1 }}. {{ (idx + 1 ) + \". \" + issue.Title }}</h3>\r\n\r\n <div>\r\n <div><span><b>{{ i + 1 }}. {{ (idx + 1 ) + \".1. Category\" }}</b></span></div>\r\n <div style=\"font-size:14px; margin-bottom:10px; margin-top: 10px;\">\r\n {{ getCategory(issue.Category) }}\r\n </div>\r\n </div>\r\n\r\n <div>\r\n <div><span><b>{{ i + 1 }}. {{ (idx + 1 ) + \".2. Student Example\" }}</b></span></div>\r\n <div style=\"font-size:14px;margin-bottom:10px\" v-html=\"encodeHtml(issue.Examples)\" />\r\n <div style=\"margin-bottom: 10px;\">\r\n <span />\r\n </div>\r\n </div>\r\n <br>\r\n <div>\r\n <div><b>{{ i + 1 }}. {{ (idx + 1 ) + \".3. Summary: Why this is an issue?\" }}</b></div>\r\n <div style=\"font-size:14px;margin-bottom:10px\" v-html=\"encodeHtml(issue.Description)\" />\r\n <div style=\"margin-bottom: 10px;\">\r\n <span />\r\n </div>\r\n </div>\r\n <br>\r\n\r\n <div>\r\n <div><span><b>{{ i + 1 }}. {{ (idx + 1 ) + \".4. Explanation: How to improve?\" }}</b></span></div>\r\n <div style=\"font-size:14px;margin-bottom:10px\" v-html=\"encodeHtml(issue.Explanation)\" />\r\n <div style=\"margin-bottom: 10px;\">\r\n <span style=\"margin-bottom: 10px;\" />\r\n </div>\r\n </div>\r\n <br>\r\n <h2 />\r\n </div>\r\n <hr>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</template>\r\n\r\n<script>\r\nimport * as cfService from '@/services/collective_feedback.service'\r\nimport * as termService from '@/services/term.service'\r\nimport * as assignmentService from '@/services/assignment.service'\r\nimport * as enrollmentService from '@/services/enrollment.service'\r\nimport * as userService from '@/services/user.service'\r\nimport * as templateService from '@/services/project_template.service'\r\nimport html2pdf from 'html2pdf.js'\r\nimport { Notification } from 'element-ui'\r\nimport NProgress from 'nprogress'\r\nimport exportFromJSON from 'export-from-json'\r\nimport _ from 'lodash'\r\n// Handle UI and logics for the Collective Feedback Report page.\r\nexport default {\r\n\tname: 'CollectiveFeedbackReport',\r\n\tdata() {\r\n\t\treturn {\r\n\t\t\tusername: this.$store.state.auth.user.UserName,\r\n\t\t\torgCode: this.$store.state.auth.user.OrgCode,\r\n\t\t\tenrolledCourses: this.$store.state.enrollment.courses,\r\n\t\t\tcourses: null,\r\n\t\t\tterms: null,\r\n\t\t\tcurrentTerm: null,\r\n\t\t currentCourse: null,\r\n\t\t\tclassCode: null,\r\n\t\t\ttermCode: null,\r\n\t\t\tassignments: null,\r\n\t\t\tcurrentAssignment: null,\r\n\t\t\tassignmentId: null,\r\n\t\t\tisGroupProject: false,\r\n\t\t\ttableData: [],\r\n\t\t\tsearch: '',\r\n\t\t\tinstructorScores: [],\r\n\t\t\tgroups: [],\r\n\t\t\trubricCriteria: [],\r\n\t\t\tcurrentCriteria: 'all',\r\n\t\t\tcollectiveFeebacks: [],\r\n\t\t\tpopOverVisible: false,\r\n\t\t\tpdfDownloadData: null,\r\n\t\t\tdownloadOneFile: true,\r\n\t\t\tisDownloadDivAvailable: false,\r\n\t\t\tisAdmin: false,\r\n\t\t\tinstructors: null,\r\n\t\t\tisViewingCourse: null,\r\n\t\t\tcurrentInstructor: null,\r\n\t\t\tcategories: [\r\n\t\t\t\t{\r\n\t\t\t\t\tId: 1,\r\n\t\t\t\t\tName: 'Purpose'\r\n\t\t\t\t}, {\r\n\t\t\t\t\tId: 2,\r\n\t\t\t\t\tName: 'Audience'\r\n\t\t\t\t}, {\r\n\t\t\t\t\tId: 3,\r\n\t\t\t\t\tName: 'Visual Design'\r\n\t\t\t\t}, {\r\n\t\t\t\t\tId: 4,\r\n\t\t\t\t\tName: 'Document Design'\r\n\t\t\t\t}, {\r\n\t\t\t\t\tId: 5,\r\n\t\t\t\t\tName: 'Organization'\r\n\t\t\t\t}, {\r\n\t\t\t\t\tId: 6,\r\n\t\t\t\t\tName: 'Writing/Style'\r\n\t\t\t\t}, {\r\n\t\t\t\t\tId: 7,\r\n\t\t\t\t\tName: 'Genre/Content'\r\n\t\t\t\t}, {\r\n\t\t\t\t\tId: 8,\r\n\t\t\t\t\tName: 'Other'\r\n\t\t\t\t}\r\n\t\t\t],\r\n\t\t\tcategory: 'all',\r\n\t\t\tcourseTypes: [\r\n\t\t\t\t{\r\n\t\t\t\t\tId: '1101',\r\n\t\t\t\t\tName: 'ENC 1101'\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tId: '1102',\r\n\t\t\t\t\tName: 'ENC 1102'\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tId: 'PTC',\r\n\t\t\t\t\tName: 'All PTC'\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tId: '2210',\r\n\t\t\t\t\tName: 'ENC 2210'\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tId: '3246',\r\n\t\t\t\t\tName: 'ENC 3246'\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tId: '3250',\r\n\t\t\t\t\tName: 'ENC 3250'\r\n\t\t\t\t}\r\n\t\t\t],\r\n\t\t\tcourseType: null\r\n \t}\r\n\t},\r\n\tcreated() {\r\n\t\tthis.isAdmin = _.includes(this.$store.state.auth.user.Roles, 'Administrator')\r\n\t\t// this.instructors = this.$store.state.viewAs.instructors;\r\n\t\t// console.log(this.instructors);\r\n\t\tthis.isViewingCourse = this.$store.state.enrollment.currentCourse\r\n\r\n\t\tif (!this.isAdmin) { this.currentInstructor = this.username } else { this.enrolledCourses = null }\r\n\t\tthis.getAllTerms()\r\n\t},\r\n\t methods: {\r\n\t\t// @vuese\r\n\t\t// Encode html strting for download.\r\n\t\t// @arg The html string to be encoded.\r\n\t\tencodeHtml(htmlStr) {\r\n\t\t\tif (htmlStr) {\r\n\t\t\t\treturn htmlStr.replace('‘', \"'\").replace('’', \"'\").replace('“', '\"').replace('â€', '\"').replace('‘', \"'\")\r\n\t\t\t\t\t.replace('’', \"'\").replace('‛', \"'\").replace('’', \"'\")\r\n\t\t\t\t\t.replace('„', '\"').replace('‟', '\"').replace('â›', \"'\").replace('âœ', \"'\")\r\n\t\t\t\t\t.replace('â', '\"').replace('âž', '\"').replace('ã€', '\"')\r\n\t\t\t\t\t.replace('"', '\"').replace('〟', '\"').replace('〞', '\"')\r\n\t\t\t}\r\n\t\t\treturn htmlStr\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Get term description by term code.\r\n\t\t// @arg The term code.\r\n\t\tgetTermName(termCode) {\r\n\t\t\tconst thisTerm = this.terms.filter(term => { return term.TermCode == termCode })\r\n\t\t\treturn thisTerm[0].TermDescription\r\n\t\t},\r\n\t\tonCourseTypeChange() {\r\n\t\t\tthis.currentCourse = null\r\n\t\t\tthis.assignments = null\r\n\t\t\tthis.currentAssignment = null\r\n\t\t\tthis.tableData = []\r\n\t\t\tthis.instructors = null\r\n\t\t\tthis.currentInstructor = null\r\n\t\t\tthis.courses = null\r\n\t\t\tthis.getInstructors(); this.currentCourse = null\r\n\t\t\tthis.assignments = null\r\n\t\t\tthis.currentAssignment = null\r\n\t\t\tthis.tableData = []\r\n\t\t\tthis.instructors = null\r\n\t\t\tthis.currentInstructor = null\r\n\t\t\tthis.courses = null\r\n\t\t\tthis.getInstructors()\r\n\t\t},\r\n\t\tasync getInstructors() {\r\n\t\t\tthis.instructors = await userService.getInstructorsByCourseType(this.orgCode, this.termCode, this.courseType)\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// The course name by class code.\r\n\t\t// @arg The class code.\r\n\t\tgetClassName(classCode) {\r\n\t\t\tconst thisCourse = this.courses.filter(course => { return course.ClassCode == classCode })\r\n\t\t\treturn thisCourse[0].ClassDescription\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Get project name by id.\r\n\t\t// @arg The project id.\r\n\t\tgetProjectName(assignmentId) {\r\n\t\t\tconst project = this.tableData.filter(data => { return data.ProjectId == assignmentId })\r\n\t\t\treturn project[0].ProjectName\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Get CF Category name by id.\r\n\t\t// @arg The category id.\r\n\t\tgetCategory(categoryId) {\r\n\t\t\tlet category = ''\r\n\t\t\tswitch (categoryId) {\r\n\t\t\t\tcase 1:\r\n\t\t\t\t\tcategory = 'Purpose'\r\n\t\t\t\t\tbreak\r\n\t\t\t\tcase 2:\r\n\t\t\t\t\tcategory = 'Audience'\r\n\t\t\t\t\tbreak\r\n\t\t\t\tcase 3:\r\n\t\t\t\t\tcategory = 'Visual Design'\r\n\t\t\t\t\tbreak\r\n\t\t\t\tcase 4:\r\n\t\t\t\t\tcategory = 'Document Design'\r\n\t\t\t\t\tbreak\r\n\t\t\t\tcase 5:\r\n\t\t\t\t\tcategory = 'Organization'\r\n\t\t\t\t\tbreak\r\n\t\t\t\tcase 6:\r\n\t\t\t\t\tcategory = 'Writing/Style'\r\n\t\t\t\t\tbreak\r\n\t\t\t\tcase 7:\r\n\t\t\t\t\tcategory = 'Genre/Content'\r\n\t\t\t\t\tbreak\r\n\t\t\t\tcase 8:\r\n\t\t\t\t\tcategory = 'Other'\r\n\t\t\t}\r\n\t\t\treturn category\r\n\t\t},\r\n\t\tonCategoryChange() {\r\n\t\t\t// let that = this;\r\n\t\t\t// console.log(this.category);\r\n\t\t\t// let cf = this.collectiveFeebacks.filter(item => {\r\n\t\t\t// \treturn item.Category == that.category.Name;\r\n\t\t\t// });\r\n\t\t\t// console.log(cf);\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Get all terms by organization code.\r\n\t\tasync getAllTerms() {\r\n\t\t\tthis.terms = await termService.getTerms(this.orgCode)\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Handle logics when a term is selected.\r\n\t\tasync onTermChange() {\r\n\t\t\tthis.currentCourse = null\r\n\t\t\tthis.assignments = null\r\n\t\t\tthis.currentAssignment = null\r\n\t\t\tthis.tableData = []\r\n\t\t\tthis.instructors = null\r\n\t\t\tthis.currentCourse = null\r\n\t\t\tthis.courseType = null\r\n\t\t\tif (!this.isAdmin) { this.courses = this.enrolledCourses.filter(course => { return course.TermCode == this.termCode }) } else { this.currentInstructor = null }\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Strip the inner text of a HTML element.\r\n\t\t// @arg The HTML element to be stripped.\r\n\t\tstripHtml(html) {\r\n\t\t\tconst tmp = document.createElement('div')\r\n\t\t\ttmp.innerHTML = html\r\n\t\t\treturn tmp.textContent || tmp.innerText || ''\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Get term description by term code.\r\n\t\t// @arg The term code.\r\n\t\tgetTermDescription(termCode) {\r\n\t\t\tlet description = ''\r\n\t\t\tconst semester = termCode.slice(4, 6)\r\n\t\t\tswitch (semester) {\r\n\t\t\t\tcase '01':\r\n\t\t\t\t\tdescription = 'Spring'\r\n\t\t\t\t\tbreak\r\n\t\t\t\tcase '05':\r\n\t\t\t\t\tdescription = 'Summer'\r\n\t\t\t\t\tbreak\r\n\t\t\t\tcase '08': description = 'Fall'\r\n\t\t\t\t\tbreak\r\n\t\t\t\tdefault:\r\n\t\t\t\t\tbreak\r\n\t\t\t}\r\n\t\t\tconst year = termCode.slice(0, 4)\r\n\t\t\tdescription += ' ' + year\r\n\t\t\treturn description\r\n\t\t},\r\n\r\n\t\tasync onInstructorChange() {\r\n\t\t\tthis.currentCourse = null\r\n\t\t\tthis.assignments = null\r\n\t\t\tthis.currentAssignment = null\r\n\t\t\tthis.tableData = []\r\n\t\t\tthis.courses = null\r\n\t\t\tif (this.currentInstructor == 'all') {\r\n\t\t\t\tthis.prepareAllInstructorReport()\r\n\t\t\t} else {\r\n\t\t\t\tconst enrollments = await enrollmentService.getEnrollments(this.currentInstructor, this.orgCode)\r\n\t\t\t\tif (enrollments && enrollments.length > 0) {\r\n\t\t\t\t\tthis.enrolledCourses = enrollments\r\n\t\t\t\t\t\t.map(item => {\r\n\t\t\t\t\t\t\tif (item != null) {\r\n\t\t\t\t\t\t\t\tconst course = {\r\n\t\t\t\t\t\t\t\t\tClassCode: item.ClassCode,\r\n\t\t\t\t\t\t\t\t\tClassDescription: item.ClassDescription,\r\n\t\t\t\t\t\t\t\t\tIsPaidCourse: item.IsPaidCourse,\r\n\t\t\t\t\t\t\t\t\tOrgCode: item.OrgCode,\r\n\t\t\t\t\t\t\t\t\tProjectTemplate: item.ProjectTemplateId,\r\n\t\t\t\t\t\t\t\t\tTermCode: item.TermCode,\r\n\t\t\t\t\t\t\t\t\tUserRole: item.UserRole\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\treturn course\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t})\r\n\t\t\t\t\t\t.filter(item => { return item != null })\r\n\t\t\t\t\tif (this.courseType == 'PTC') {\r\n\t\t\t\t\t\tthis.courses = this.enrolledCourses.filter(course => {\r\n\t\t\t\t\t\t\treturn course.TermCode == this.termCode &&\r\n (course.ClassDescription.includes('ENC 2210') || course.ClassDescription.includes('ENC 3246') || course.ClassDescription.includes('ENC 3250'))\r\n\t\t\t\t\t\t})\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tthis.courses = this.enrolledCourses.filter(course => {\r\n\t\t\t\t\t\t\treturn course.TermCode == this.termCode &&\r\n course.ClassDescription.includes('ENC ' + this.courseType)\r\n\t\t\t\t\t\t})\r\n\t\t\t\t\t}\r\n\t\t\t\t} else {\r\n\t\t\t\t\tNotification.error({\r\n\t\t\t\t\t\tduration: 6000,\r\n\t\t\t\t\t\ttitle: 'Error',\r\n\t\t\t\t\t\tmessage: 'The selected instructor is not actively enrolled in any course.'\r\n\t\t\t\t\t})\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t},\r\n\t\tasync prepareAllInstructorReport() {\r\n\t\t\tlet type = ''\r\n\t\t\tlet thisTemplate\r\n\t\t\tswitch (this.courseType) {\r\n\t\t\t\tcase '1101':\r\n\t\t\t\t\ttype = 'ENC 1101'\r\n\t\t\t\t\tthisTemplate = await templateService.getRootTemplateByCourseType(this.termCode, this.orgCode, type)\r\n\t\t\t\t\tbreak\r\n\t\t\t\tcase '1102':\r\n\t\t\t\t\ttype = 'ENC 1102'\r\n\t\t\t\t\tthisTemplate = await templateService.getRootTemplateByCourseType(this.termCode, this.orgCode, type)\r\n\t\t\t\t\tbreak\r\n\t\t\t\tdefault:\r\n\t\t\t\t\ttype = 'PTC'\r\n\t\t\t\t\tthisTemplate = await templateService.getRootTemplateByCourseType(this.termCode, this.orgCode, type)\r\n\t\t\t\t\tbreak\r\n\t\t\t}\r\n\t\t\tif (thisTemplate) {\r\n\t\t\t\tthis.templateId = thisTemplate.Id\r\n\t\t\t\tthis.assignments = await assignmentService.getAssignmentsByTemplate(this.templateId)\r\n\t\t\t}\r\n\r\n\t\t\t// this.tableData = [];\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Handle logics when a course is selected.\r\n\t\tasync onCourseChange() {\r\n\t\t\tthis.assignments = null\r\n\t\t\tthis.currentAssignment = null\r\n\t\t\tthis.tableData = []\r\n\t\t\tif (this.currentCourse == 'all') {\r\n\t\t\t\tconst type = 'PTC'\r\n\t\t\t\tconst thisTemplate = await templateService.getRootTemplateByCourseType(this.termCode, this.orgCode, type)\r\n\t\t\t\tif (thisTemplate) {\r\n\t\t\t\t\tthis.templateId = thisTemplate.Id\r\n\t\t\t\t\tthis.assignments = await assignmentService.getAssignmentsByTemplate(this.templateId)\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tthis.classCode = this.currentCourse.ClassCode\r\n\t\t\t\tthis.termCode = this.currentCourse.TermCode\r\n\t\t\t\tthis.assignments = await assignmentService.getAssignmentsByTemplate(this.currentCourse.ProjectTemplate)\r\n\t\t\t}\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Handle logics when a project is selected.\r\n\t\tasync onAssignmentChange() {\r\n\t\t\tthis.tableData = []\r\n\t\t\tif (this.currentInstructor == 'all') {\r\n\t\t\t\tthis.collectiveFeebacks = await cfService.GetCFReportForAllInstructors(this.orgCode, this.termCode, this.currentAssignment.AssignmentName, this.courseType)\r\n\t\t\t await this.formTableData()\r\n\t\t\t} else {\r\n\t\t\t\tif (this.currentCourse == 'all') {\r\n\t\t\t\t\tconst courseType = this.courseType ? this.courseType : 'all'\r\n\t\t\t\t\tconst cfs = await cfService.GetAllCFReport(this.orgCode, this.currentInstructor, this.termCode, courseType)\r\n\t\t\t\t\tif (this.currentAssignment == 'all') {\r\n\t\t\t\t\t\tthis.collectiveFeebacks = cfs\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tconst that = this\r\n\t\t\t\t\t\tthis.collectiveFeebacks = cfs.filter(function(el) {\r\n\t\t\t\t\t\t\treturn el.assignmentName == that.currentAssignment.AssignmentName\r\n\t\t\t\t\t\t})\r\n\t\t\t\t\t}\r\n\t\t\t\t\tawait this.formTableData()\r\n\t\t\t\t} else {\r\n\t\t\t\t\tif (this.currentAssignment == 'all') {\r\n\t\t\t\t\t\tthis.collectiveFeebacks = await cfService.GetCFReportByClass(this.orgCode, this.currentInstructor, this.classCode, this.termCode)\r\n\t\t\t\t\t\tawait this.formTableData()\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tthis.assignmentId = this.currentAssignment.Id\r\n\t\t\t\t\t\tthis.collectiveFeebacks = await cfService.GetAllCFReportByAssignment(this.orgCode, this.currentInstructor, this.classCode, this.termCode, this.assignmentId)\r\n\t\t\t\t\t\tawait this.formTableData()\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif (!this.tableData || this.tableData.length == 0) {\r\n\t\t\t\tNotification.error({\r\n\t\t\t\t\tduration: 6000,\r\n\t\t\t\t\ttitle: 'Error',\r\n\t\t\t\t\tmessage: 'No collective feedback found for the selected projects.'\r\n\t\t\t\t})\r\n\t\t\t}\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Form data table for displaying the report.\r\n\t\tasync formTableData() {\r\n\t\t\tconst that = this\r\n\t\t\tawait this.asyncForEach(this.collectiveFeebacks, async cf => {\r\n\t\t\t\tconst data = {\r\n\t\t\t\t\tId: cf.Id,\r\n\t\t\t\t\tInstructorName: cf.instructorName,\r\n\t\t\t\t\tCFName: cf.cfName,\r\n\t\t\t\t\tProjectId: cf.assignmentId,\r\n\t\t\t\t\tProjectName: cf.assignmentName,\r\n\t\t\t\t\tClassCode: cf.classCode,\r\n\t\t\t\t\tClassDescription: cf.classDescription,\r\n\t\t\t\t\tIssueName: cf.issueName,\r\n\t\t\t\t\tDescription: that.stripHtml(cf.description) == '' ? 'Export to PDF to view graphic content.' : that.stripHtml(cf.description),\r\n\t\t\t\t\tExplanation: that.stripHtml(cf.explanation) == '' ? 'Export to PDF to view graphic content.' : that.stripHtml(cf.explanation),\r\n\t\t\t\t\tExamples: that.stripHtml(cf.examples) == '' ? 'Export to PDF to view graphic content.' : that.stripHtml(cf.examples),\r\n\t\t\t\t\tCategory: that.getCategory(cf.category),\r\n\t\t\t\t\tUpdatedTime: cf.issueUpdatedTime\r\n\t\t\t\t}\r\n\t\t\t\tthat.tableData.push(data)\r\n\t\t\t})\r\n\r\n\t\t\tawait that.tableData.sort(function(a, b) {\r\n\t\t\t\tif (a.ClassDescription > b.ClassDescription) return 1\r\n\t\t\t\tif (a.ClassDescription < b.ClassDescription) return -1\r\n\r\n\t\t\t\tif (a.ProjectName > b.ProjectName) return 1\r\n\t\t\t\tif (a.ProjectName < b.ProjectName) return -1\r\n\r\n\t\t\t\tif (a.Category > b.Category) return 1\r\n\t\t\t\tif (a.Category < b.Category) return -1\r\n\t\t\t})\r\n\t\t},\r\n\t\tasync asyncForEach(array, callback) {\r\n\t\t\tfor (let index = 0; index < array.length; index++) {\r\n\t\t\t\tawait callback(array[index], index, array)\r\n\t\t\t}\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Export all CF seperately.\r\n\t\tasync pdfExportAll() {\r\n\t\t\tNProgress.start()\r\n\t\t\tthis.isDownloadDivAvailable = true\r\n\t\t\tthis.downloadOneFile = false\r\n\t\t\tawait this.getPdfDownloadData()\r\n\t\t\tfor (let i = 0; i < this.pdfDownloadData.length; i++) {\r\n\t\t\t\tconst source = document.getElementById('cf_' + this.pdfDownloadData[i].Id)\r\n\t\t\t const opt = {\r\n\t\t\t\t\tfilename: this.pdfDownloadData[i].ClassCode + '_' + this.pdfDownloadData[i].AssignmentId + '_' + this.pdfDownloadData[i].Name + '_Report.pdf',\r\n\t\t\t\t\tmargin: [10, 10, 10, 0],\r\n\t\t\t\t\thtml2canvas: { width: 920 }\r\n\t\t\t\t}\r\n\t\t\t\tawait html2pdf(source, opt)\r\n\t\t\t\tNProgress.inc()\r\n\t\t\t}\r\n\t\t\tthis.popOverVisible = false\r\n\t\t\tthis.isDownloadDivAvailable = false\r\n\t\t\tNProgress.done()\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Export all CF as 1 pdf.\r\n\t\tasync pdfExportOne() {\r\n\t\t\tNProgress.start()\r\n\t\t\tthis.isDownloadDivAvailable = true\r\n\t\t\tthis.downloadOneFile = true\r\n\t\t\tawait this.getPdfDownloadData()\r\n\t\t\tconst source = document.getElementById('downloadPdfContent')\r\n\t\t\tconst opt = {\r\n\t\t\t\tfilename: 'Collective Feedback Report.pdf',\r\n\t\t\t\tmargin: [10, 10, 10, 0],\r\n\t\t\t\thtml2canvas: { width: 920 }\r\n\t\t\t}\r\n\t\t\tawait html2pdf(source, opt)\r\n\t\t\tNProgress.inc()\r\n\t\t\tthis.popOverVisible = false\r\n\t\t\tthis.isDownloadDivAvailable = false\r\n\t\t\tNProgress.done()\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Get CF download data\r\n\t\tasync getPdfDownloadData() {\r\n\t\t\tlet thisClassCode = this.classCode\r\n\t\t\tif (this.currentCourse == 'all') { thisClassCode = 'all' }\r\n\t\t\tlet thisAssignmentId = this.assignmentId\r\n\t\t\tif (this.currentAssignment == 'all') { thisAssignmentId = 'all' }\r\n\t\t\tthis.pdfDownloadData = await cfService.GetCFWithIssues(this.orgCode, this.currentInstructor, this.termCode, thisClassCode, thisAssignmentId)\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Handles Excel export.\r\n\t\texcelExport() {\r\n\t\t\tconst opts = {\r\n\t\t\t\tfileName: 'Collective Feeback Report',\r\n\t\t\t\ttype: 'xls'\r\n\t\t\t}\r\n\t\t\ttry {\r\n\t\t\t\tconst data = this.dataHandler()\r\n\t\t\t\t// eslint-disable-next-line no-inner-declarations\r\n\t\t\t\tfunction hasProperty(target, name, defVal) {\r\n\t\t\t\t\treturn target.hasOwnProperty(name) ? target[name] : defVal\r\n\t\t\t\t}\r\n\t\t\t\texportFromJSON({\r\n\t\t\t\t\tdata: data,\r\n\t\t\t\t\tfileName: hasProperty(opts, 'fileName', opts.fileName),\r\n\t\t\t\t\texportType: hasProperty(opts, 'type', opts.type),\r\n\t\t\t\t\twithBOM: hasProperty(opts, 'withBOM', opts.withBOM)\r\n\t\t\t\t})\r\n\t\t\t} catch (error) {\r\n\t\t\t\tconsole.error(error)\r\n\t\t\t}\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Handles data format before exporting to excel.\r\n\t\tdataHandler() {\r\n\t\t\tconst columns = this.$refs.elTable.columns.map((element) => {\r\n\t\t\t\t// eslint-disable-next-line no-new-object\r\n\t\t\t\tconst cloumnObj = new Object()\r\n\t\t\t\tcloumnObj.prop = element.property\r\n\t\t\t\tcloumnObj.label = element.label\r\n\t\t\t\treturn cloumnObj\r\n\t\t\t})\r\n\t\t\tconst data = this.tableData\r\n\t\t\t// eslint-disable-next-line no-array-constructor\r\n\t\t\tconst outputData = new Array()\r\n\t\t\tdata.map((value) => {\r\n\t\t\t\t// eslint-disable-next-line no-new-object\r\n\t\t\t\tconst obj = new Object()\r\n\t\t\t\tcolumns.forEach(element => {\r\n\t\t\t\t\tobj[element.label] = value[element.prop]\r\n\t\t\t\t})\r\n\t\t\t\tobj['Student Example'] = value['Examples']\r\n\t\t\t\tobj['Description'] = value['Description']\r\n\t\t\t\tobj['Explanation'] = value['Explanation']\r\n\t\t\t\toutputData.push(obj)\r\n\t\t\t})\r\n\t\t\treturn outputData\r\n\t\t},\r\n\t\thandleEdit(index, row) {\r\n\t\t\tif (this.isGroupProject) { this.$router.push('/rubric?reviewerId=' + this.$store.state.auth.user.UserName + '&groupId=' + row.GroupId + '&assignmentId=' + this.$route.params.id) } else { this.$router.push('/rubric?reviewerId=' + this.$store.state.auth.user.UserName + '&revieweeId=' + row.StudentId + '&assignmentId=' + this.$route.params.id) }\r\n\t\t},\r\n\t\thandleDelete(index, row) {\r\n\t\t\tconsole.log(index, row)\r\n\t\t}\r\n\t}\r\n}\r\n</script>\r\n\r\n<style scoped>\r\n.el-table__empty-text{\r\n\tdisplay: none;\r\n}\r\n.student-submission-wrapper{\r\n padding: 20px;\r\n box-shadow: 20px 10px 25px 20px rgba(109, 107, 107, 0.1);\r\n}\r\n\r\n</style>\r\n<style>\r\n.center-align{\r\n text-align: center !important;\r\n}\r\n.cutom-popper{\r\n width: 400px;\r\n}\r\n</style>\r\n\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CollectiveFeedback.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CollectiveFeedback.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./CollectiveFeedback.vue?vue&type=template&id=6039e87b&scoped=true&\"\nimport script from \"./CollectiveFeedback.vue?vue&type=script&lang=js&\"\nexport * from \"./CollectiveFeedback.vue?vue&type=script&lang=js&\"\nimport style0 from \"./CollectiveFeedback.vue?vue&type=style&index=0&id=6039e87b&scoped=true&lang=css&\"\nimport style1 from \"./CollectiveFeedback.vue?vue&type=style&index=1&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"6039e87b\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_vm._m(0),_c('div',{staticClass:\"student-submission-wrapper\"},[_c('div',{staticStyle:{\"margin-bottom\":\"20px\"},attrs:{\"id\":\"filter\"}},[_c('el-tooltip',{attrs:{\"content\":\"Select Term\",\"placement\":\"right-start\"}},[(_vm.terms)?_c('el-select',{staticStyle:{\"margin-right\":\"10px\",\"width\":\"140px\"},attrs:{\"id\":\"term-selection\",\"filterable\":\"\",\"placeholder\":\"Select Term\",\"no-match-text\":\"No Matching Data\",\"no-data-text\":\"No data\",\"loading-text\":\"Loading\"},on:{\"change\":function($event){return _vm.onTermChange()}},model:{value:(_vm.termCode),callback:function ($$v) {_vm.termCode=$$v},expression:\"termCode\"}},_vm._l((_vm.terms),function(item){return _c('el-option',{key:item.TermCode,attrs:{\"label\":item.TermDescription,\"value\":item.TermCode}})}),1):_vm._e()],1),_c('el-tooltip',{attrs:{\"content\":\"Course Type\",\"placement\":\"right-start\"}},[(_vm.courseTypes && _vm.isAdmin && _vm.termCode)?_c('el-select',{staticStyle:{\"margin-right\":\"10px\"},attrs:{\"id\":\"course-type-selection\",\"filterable\":\"\",\"placeholder\":\"Select Course Type\",\"no-match-text\":\"No Matching Data\",\"no-data-text\":\"No data\",\"loading-text\":\"Loading\"},on:{\"change\":function($event){return _vm.onCourseTypeChange()}},model:{value:(_vm.courseType),callback:function ($$v) {_vm.courseType=$$v},expression:\"courseType\"}},_vm._l((_vm.courseTypes),function(item){return _c('el-option',{key:item.Id,attrs:{\"label\":item.Name,\"value\":item.Id}})}),1):_vm._e()],1),(_vm.termCode && _vm.isAdmin && _vm.instructors && _vm.courseType)?_c('el-tooltip',{attrs:{\"content\":\"Select Instructor\",\"placement\":\"right-start\"}},[_c('el-select',{staticStyle:{\"margin-right\":\"10px\"},attrs:{\"id\":\"instructor-selection\",\"filterable\":\"\",\"placeholder\":\"Select Instructor\",\"no-match-text\":\"No Matching Data\",\"no-data-text\":\"No data\",\"loading-text\":\"Loading\"},on:{\"change\":function($event){return _vm.onInstructorChange()}},model:{value:(_vm.currentInstructor),callback:function ($$v) {_vm.currentInstructor=$$v},expression:\"currentInstructor\"}},[_c('el-option',{key:\"all\",attrs:{\"label\":\"All Instructors\",\"value\":\"all\"}}),_vm._l((_vm.instructors),function(item){return _c('el-option',{key:item.UserName,attrs:{\"label\":item.LastName + ', ' + item.FirstName,\"value\":item.UserName}})})],2)],1):_vm._e(),_c('el-tooltip',{attrs:{\"content\":\"Select Course\",\"placement\":\"top\"}},[(_vm.currentInstructor && _vm.courses && _vm.currentInstructor != 'all')?_c('el-select',{staticStyle:{\"margin-right\":\"10px\",\"width\":\"200px\"},attrs:{\"id\":\"course-selection\",\"value-key\":\"ClassCode\",\"filterable\":\"\",\"placeholder\":\"Select Course\",\"no-match-text\":\"No Matching Data\",\"no-data-text\":\"No data\",\"loading-text\":\"Loading\"},on:{\"change\":function($event){return _vm.onCourseChange()}},model:{value:(_vm.currentCourse),callback:function ($$v) {_vm.currentCourse=$$v},expression:\"currentCourse\"}},[_c('el-option',{key:\"all\",attrs:{\"label\":\"All Courses\",\"value\":\"all\"}}),_vm._l((_vm.courses),function(item){return _c('el-option',{key:item.Id,attrs:{\"label\":item.ClassDescription,\"value\":item}})})],2):_vm._e()],1),(_vm.currentCourse != 'all' && _vm.assignments)?_c('el-tooltip',{staticClass:\"item\",attrs:{\"effect\":\"light\",\"content\":\"Select a project\",\"placement\":\"top\"}},[_c('el-select',{staticStyle:{\"margin-right\":\"10px\"},attrs:{\"id\":\"assignments-selection\",\"value-key\":\"Id\",\"filterable\":\"\",\"placeholder\":\"Select Project\",\"no-match-text\":\"No Matching Data\",\"no-data-text\":\"No data\",\"loading-text\":\"Loading\"},on:{\"change\":function($event){return _vm.onAssignmentChange()}},model:{value:(_vm.currentAssignment),callback:function ($$v) {_vm.currentAssignment=$$v},expression:\"currentAssignment\"}},[_c('el-option',{key:\"all\",attrs:{\"label\":\"All Projects\",\"value\":\"all\"}}),_vm._l((_vm.assignments),function(item){return _c('el-option',{key:item.Id,attrs:{\"label\":item.AssignmentName,\"value\":item}})})],2)],1):_vm._e(),(_vm.currentCourse == 'all' || _vm.currentAssignment || _vm.currentInstructor == 'all')?_c('el-tooltip',{staticClass:\"item\",attrs:{\"effect\":\"light\",\"content\":\"Report Type\",\"placement\":\"top\"}},[_c('el-select',{staticStyle:{\"margin-right\":\"10px\"},attrs:{\"id\":\"report-selection\",\"value-key\":\"Id\",\"filterable\":\"\",\"placeholder\":\"Select Report Type\",\"no-match-text\":\"No Matching Data\",\"no-data-text\":\"No data\",\"loading-text\":\"Loading\"},on:{\"change\":function($event){return _vm.onReportTypeChange()}},model:{value:(_vm.reportType),callback:function ($$v) {_vm.reportType=$$v},expression:\"reportType\"}},[_c('el-option',{key:0,attrs:{\"label\":\"No Submission\",\"value\":0}}),_c('el-option',{key:1,attrs:{\"label\":\"Late Submission\",\"value\":1}}),_c('el-option',{key:2,attrs:{\"label\":\"To be Scored\",\"value\":2}}),_c('el-option',{key:3,attrs:{\"label\":\"No Score Given\",\"value\":3}}),_c('el-option',{key:4,attrs:{\"label\":\"Score Range Report\",\"value\":4}}),_c('el-option',{key:5,attrs:{\"label\":\"Holistic Score Range Report\",\"value\":5}})],1)],1):_vm._e(),(_vm.tableData && _vm.tableData.length > 0)?_c('el-button',{staticStyle:{\"float\":\"right\"},on:{\"click\":function($event){return _vm.excelExport()}}},[_c('span',[_vm._v(\"\\n Export to Excel\\n \")])]):_vm._e()],1),_c('div',[(_vm.reportType == 4)?_c('el-tooltip',{staticClass:\"item\",attrs:{\"effect\":\"light\",\"content\":\"Scores Filter\",\"placement\":\"top\"}},[_c('el-select',{staticStyle:{\"margin-right\":\"10px\",\"width\":\"300px\"},attrs:{\"multiple\":\"\",\"placeholder\":\"Select Scores\"},model:{value:(_vm.selectedScores),callback:function ($$v) {_vm.selectedScores=$$v},expression:\"selectedScores\"}},_vm._l((_vm.scoreOptions),function(item){return _c('el-option',{key:item.value,attrs:{\"label\":item.label,\"value\":item.value}})}),1)],1):_vm._e(),(_vm.reportType == 4 && _vm.selectedScores.length > 0)?_c('el-button',{on:{\"click\":function($event){return _vm.getScoreReport()}}},[_c('span',[_vm._v(\"\\n Get Report\\n \")])]):_vm._e(),(_vm.reportType == 5)?_c('el-tooltip',{staticClass:\"item\",attrs:{\"effect\":\"light\",\"content\":\"Scores Filter\",\"placement\":\"top\"}},[_c('el-select',{staticStyle:{\"margin-right\":\"10px\",\"width\":\"300px\"},attrs:{\"multiple\":\"\",\"placeholder\":\"Select Scores\"},model:{value:(_vm.selectedHolisticScores),callback:function ($$v) {_vm.selectedHolisticScores=$$v},expression:\"selectedHolisticScores\"}},_vm._l((_vm.holisticScoreOptions),function(item){return _c('el-option',{key:item.value,attrs:{\"label\":item.label,\"value\":item.value}})}),1)],1):_vm._e(),(_vm.reportType == 5 && _vm.selectedHolisticScores.length > 0)?_c('el-button',{on:{\"click\":function($event){return _vm.getHolisticScoreReport()}}},[_c('span',[_vm._v(\"\\n Get Report\\n \")])]):_vm._e()],1),(_vm.tableData && _vm.tableData.length > 0)?_c('el-table',{ref:\"elTable\",staticStyle:{\"text-align\":\"center\",\"width\":\"100%\"},attrs:{\"id\":\"score-table\",\"data\":_vm.tableData.filter(function (data) { return !_vm.search || data.StudentName.toLowerCase().includes(_vm.search.toLowerCase()); }),\"height\":\"82vh\",\"default-sort\":{prop: 'date', order: 'descending'}}},[_c('el-table-column',{attrs:{\"fixed\":\"\",\"label\":\"Academic Term\"},scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [_c('div',[_vm._v(\"\\n \"+_vm._s(_vm.getTermDescription(scope.row.TermCode))+\"\\n \")])]}}],null,false,3592725869)}),(_vm.currentInstructor == 'all')?_c('el-table-column',{attrs:{\"sortable\":\"\",\"fixed\":\"\",\"prop\":\"InstructorName\",\"label\":\"Instructor Name\"}}):_vm._e(),_c('el-table-column',{attrs:{\"sortable\":\"\",\"fixed\":\"\",\"prop\":\"ClassDescription\",\"label\":\"Course Name\"}}),_c('el-table-column',{attrs:{\"sortable\":\"\",\"fixed\":\"\",\"prop\":\"AssignmentName\",\"label\":\"Project Name\"}}),_c('el-table-column',{attrs:{\"sortable\":\"\",\"fixed\":\"\",\"prop\":\"StudentName\",\"label\":\"Student Name\"}})],1):_vm._e()],1)])}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"breadcumb\"},[_c('div',{staticClass:\"ic-app-crumbs\"},[_c('span',{staticClass:\"breadcumb-text\"},[_vm._v(\"\\n Reports\\n \"),_c('i',{staticClass:\"fas fa-chevron-right breadcumb-next\"}),_vm._v(\"\\n Student Performance Report\\n \")])])])}]\n\nexport { render, staticRenderFns }","import http from '@/utils/axios'\r\n\r\nexport function getNoSubmissionReport(orgCode, termCode, username, classCode, assignmentId, courseType) {\r\n\treturn http.get('report/no_submission/' + orgCode + '/' + termCode + '/' + username + '/' + classCode + '/' + assignmentId + '/' + courseType)\r\n\t\t.then(response => {\r\n\t\t\treturn response.data\r\n\t\t})\r\n\t\t.catch(error => {\r\n\t\t\tconsole.log(error)\r\n\t\t})\r\n}\r\n\r\nexport function getAllNoSubmissionReport(orgCode, termCode, courseType) {\r\n\treturn http.get('report/no_submission/all/' + orgCode + '/' + termCode + '/' + courseType)\r\n\t\t.then(response => {\r\n\t\t\treturn response.data\r\n\t\t})\r\n\t\t.catch(error => {\r\n\t\t\tconsole.log(error)\r\n\t\t})\r\n}\r\n\r\nexport function getLateSubmissionReport(orgCode, termCode, username, classCode, assignmentId, courseType) {\r\n\treturn http.get('report/late_submission/' + orgCode + '/' + termCode + '/' + username + '/' + classCode + '/' + assignmentId + '/' + courseType)\r\n\t\t.then(response => {\r\n\t\t\treturn response.data\r\n\t\t})\r\n\t\t.catch(error => {\r\n\t\t\tconsole.log(error)\r\n\t\t})\r\n}\r\n\r\nexport function getAllLateSubmissionReport(orgCode, termCode, courseType) {\r\n\treturn http.get('report/late_submission/all/' + orgCode + '/' + termCode + '/' + courseType)\r\n\t\t.then(response => {\r\n\t\t\treturn response.data\r\n\t\t})\r\n\t\t.catch(error => {\r\n\t\t\tconsole.log(error)\r\n\t\t})\r\n}\r\n\r\nexport function getToBeScoredReport(orgCode, termCode, username, classCode, assignmentId, courseType) {\r\n\treturn http.get('report/to_be_scored/' + orgCode + '/' + termCode + '/' + username + '/' + classCode + '/' + assignmentId + '/' + courseType)\r\n\t\t.then(response => {\r\n\t\t\treturn response.data\r\n\t\t})\r\n\t\t.catch(error => {\r\n\t\t\tconsole.log(error)\r\n\t\t})\r\n}\r\n\r\nexport function getAllToBeScoredReport(orgCode, termCode, courseType) {\r\n\treturn http.get('report/to_be_scored/all/' + orgCode + '/' + termCode + '/' + courseType)\r\n\t\t.then(response => {\r\n\t\t\treturn response.data\r\n\t\t})\r\n\t\t.catch(error => {\r\n\t\t\tconsole.log(error)\r\n\t\t})\r\n}\r\n\r\nexport function getNoScoreReport(orgCode, termCode, username, classCode, assignmentId, courseType) {\r\n\treturn http.get('report/no_score/' + orgCode + '/' + termCode + '/' + username + '/' + classCode + '/' + assignmentId + '/' + courseType)\r\n\t\t.then(response => {\r\n\t\t\treturn response.data\r\n\t\t})\r\n\t\t.catch(error => {\r\n\t\t\tconsole.log(error)\r\n\t\t})\r\n}\r\n\r\nexport function getAllNoScoreReport(orgCode, termCode, courseType) {\r\n\treturn http.get('report/no_score/all/' + orgCode + '/' + termCode + '/' + courseType)\r\n\t\t.then(response => {\r\n\t\t\treturn response.data\r\n\t\t})\r\n\t\t.catch(error => {\r\n\t\t\tconsole.log(error)\r\n\t\t})\r\n}\r\n\r\nexport function getScoreBelowThreeReport(orgCode, termCode, username, classCode, assignmentId) {\r\n\treturn http.get('report/score_below_three/' + orgCode + '/' + termCode + '/' + username + '/' + classCode + '/' + assignmentId)\r\n\t\t.then(response => {\r\n\t\t\treturn response.data\r\n\t\t})\r\n\t\t.catch(error => {\r\n\t\t\tconsole.log(error)\r\n\t\t})\r\n}\r\n\r\nexport function GetHolisticBelowThreeReport(orgCode, termCode, username, classCode, assignmentId) {\r\n\treturn http.get('report/holistic_below_three/' + orgCode + '/' + termCode + '/' + username + '/' + classCode + '/' + assignmentId)\r\n\t\t.then(response => {\r\n\t\t\treturn response.data\r\n\t\t})\r\n\t\t.catch(error => {\r\n\t\t\tconsole.log(error)\r\n\t\t})\r\n}\r\n\r\nexport function getScoreReport(payload) {\r\n\treturn http.post('report/scores', payload)\r\n\t\t.then(response => {\r\n\t\t\treturn response.data\r\n\t\t})\r\n\t\t.catch(error => {\r\n\t\t\tconsole.log(error)\r\n\t\t})\r\n}\r\n\r\nexport function getAllScoreReport(payload) {\r\n\treturn http.post('report/scores/all', payload)\r\n\t\t.then(response => {\r\n\t\t\treturn response.data\r\n\t\t})\r\n\t\t.catch(error => {\r\n\t\t\tconsole.log(error)\r\n\t\t})\r\n}\r\n\r\nexport function getHolisticScoreReport(payload) {\r\n\treturn http.post('report/holistic_scores', payload)\r\n\t\t.then(response => {\r\n\t\t\treturn response.data\r\n\t\t})\r\n\t\t.catch(error => {\r\n\t\t\tconsole.log(error)\r\n\t\t})\r\n}\r\n\r\nexport function getAllHolisticScoreReport(payload) {\r\n\treturn http.post('report/holistic_scores/all', payload)\r\n\t\t.then(response => {\r\n\t\t\treturn response.data\r\n\t\t})\r\n\t\t.catch(error => {\r\n\t\t\tconsole.log(error)\r\n\t\t})\r\n}\r\n","<template>\r\n <div>\r\n <div class=\"breadcumb\">\r\n <div class=\"ic-app-crumbs\">\r\n <span class=\"breadcumb-text\">\r\n Reports\r\n <i class=\"fas fa-chevron-right breadcumb-next\" />\r\n Student Performance Report\r\n </span>\r\n </div>\r\n </div>\r\n <div class=\"student-submission-wrapper\">\r\n <div id=\"filter\" style=\"margin-bottom: 20px;\">\r\n <el-tooltip content=\"Select Term\" placement=\"right-start\">\r\n <el-select\r\n v-if=\"terms\"\r\n id=\"term-selection\"\r\n v-model=\"termCode\"\r\n filterable\r\n placeholder=\"Select Term\"\r\n no-match-text=\"No Matching Data\"\r\n no-data-text=\"No data\"\r\n loading-text=\"Loading\"\r\n style=\"margin-right: 10px; width: 140px;\"\r\n @change=\"onTermChange()\"\r\n >\r\n <el-option\r\n v-for=\"item in terms\"\r\n :key=\"item.TermCode\"\r\n :label=\"item.TermDescription\"\r\n :value=\"item.TermCode\"\r\n />\r\n </el-select>\r\n </el-tooltip>\r\n\r\n <el-tooltip content=\"Course Type\" placement=\"right-start\">\r\n <el-select\r\n v-if=\"courseTypes && isAdmin && termCode\"\r\n id=\"course-type-selection\"\r\n v-model=\"courseType\"\r\n filterable\r\n placeholder=\"Select Course Type\"\r\n no-match-text=\"No Matching Data\"\r\n no-data-text=\"No data\"\r\n loading-text=\"Loading\"\r\n style=\"margin-right: 10px;\"\r\n @change=\"onCourseTypeChange()\"\r\n >\r\n <el-option\r\n v-for=\"item in courseTypes\"\r\n :key=\"item.Id\"\r\n :label=\"item.Name\"\r\n :value=\"item.Id\"\r\n />\r\n </el-select>\r\n </el-tooltip>\r\n\r\n <el-tooltip v-if=\"termCode && isAdmin && instructors && courseType\" content=\"Select Instructor\" placement=\"right-start\">\r\n <el-select\r\n id=\"instructor-selection\"\r\n v-model=\"currentInstructor\"\r\n filterable\r\n placeholder=\"Select Instructor\"\r\n no-match-text=\"No Matching Data\"\r\n no-data-text=\"No data\"\r\n loading-text=\"Loading\"\r\n style=\"margin-right: 10px;\"\r\n @change=\"onInstructorChange()\"\r\n >\r\n <el-option\r\n key=\"all\"\r\n label=\"All Instructors\"\r\n value=\"all\"\r\n />\r\n <el-option\r\n v-for=\"item in instructors\"\r\n :key=\"item.UserName\"\r\n :label=\"item.LastName + ', ' + item.FirstName\"\r\n :value=\"item.UserName\"\r\n />\r\n </el-select>\r\n </el-tooltip>\r\n\r\n <el-tooltip content=\"Select Course\" placement=\"top\">\r\n <el-select\r\n v-if=\"currentInstructor && courses && currentInstructor != 'all'\"\r\n id=\"course-selection\"\r\n v-model=\"currentCourse\"\r\n value-key=\"ClassCode\"\r\n filterable\r\n placeholder=\"Select Course\"\r\n no-match-text=\"No Matching Data\"\r\n no-data-text=\"No data\"\r\n loading-text=\"Loading\"\r\n style=\"margin-right: 10px; width: 200px;\"\r\n @change=\"onCourseChange()\"\r\n >\r\n <el-option\r\n key=\"all\"\r\n label=\"All Courses\"\r\n value=\"all\"\r\n />\r\n <el-option\r\n v-for=\"item in courses\"\r\n :key=\"item.Id\"\r\n :label=\"item.ClassDescription\"\r\n :value=\"item\"\r\n />\r\n </el-select>\r\n </el-tooltip>\r\n\r\n <el-tooltip v-if=\"currentCourse != 'all' && assignments\" class=\"item\" effect=\"light\" content=\"Select a project\" placement=\"top\">\r\n <el-select\r\n id=\"assignments-selection\"\r\n v-model=\"currentAssignment\"\r\n value-key=\"Id\"\r\n filterable\r\n placeholder=\"Select Project\"\r\n no-match-text=\"No Matching Data\"\r\n no-data-text=\"No data\"\r\n loading-text=\"Loading\"\r\n style=\"margin-right: 10px;\"\r\n @change=\"onAssignmentChange()\"\r\n >\r\n <el-option\r\n key=\"all\"\r\n label=\"All Projects\"\r\n value=\"all\"\r\n />\r\n <el-option\r\n v-for=\"item in assignments\"\r\n :key=\"item.Id\"\r\n :label=\"item.AssignmentName\"\r\n :value=\"item\"\r\n />\r\n </el-select>\r\n </el-tooltip>\r\n\r\n <el-tooltip v-if=\"currentCourse == 'all' || currentAssignment || currentInstructor == 'all'\" class=\"item\" effect=\"light\" content=\"Report Type\" placement=\"top\">\r\n <el-select\r\n id=\"report-selection\"\r\n v-model=\"reportType\"\r\n value-key=\"Id\"\r\n filterable\r\n placeholder=\"Select Report Type\"\r\n no-match-text=\"No Matching Data\"\r\n no-data-text=\"No data\"\r\n loading-text=\"Loading\"\r\n style=\"margin-right: 10px;\"\r\n @change=\"onReportTypeChange()\"\r\n >\r\n <el-option\r\n :key=\"0\"\r\n label=\"No Submission\"\r\n :value=\"0\"\r\n />\r\n <el-option\r\n :key=\"1\"\r\n label=\"Late Submission\"\r\n :value=\"1\"\r\n />\r\n <el-option\r\n :key=\"2\"\r\n label=\"To be Scored\"\r\n :value=\"2\"\r\n />\r\n <el-option\r\n :key=\"3\"\r\n label=\"No Score Given\"\r\n :value=\"3\"\r\n />\r\n <el-option\r\n :key=\"4\"\r\n label=\"Score Range Report\"\r\n :value=\"4\"\r\n />\r\n <el-option\r\n :key=\"5\"\r\n label=\"Holistic Score Range Report\"\r\n :value=\"5\"\r\n />\r\n </el-select>\r\n </el-tooltip>\r\n\r\n <el-button v-if=\"tableData && tableData.length > 0\" style=\"float: right;\" @click=\"excelExport()\">\r\n <span>\r\n Export to Excel\r\n </span>\r\n </el-button>\r\n </div>\r\n <div>\r\n <el-tooltip v-if=\"reportType == 4\" class=\"item\" effect=\"light\" content=\"Scores Filter\" placement=\"top\">\r\n <el-select v-model=\"selectedScores\" multiple placeholder=\"Select Scores\" style=\"margin-right: 10px; width: 300px;\">\r\n <el-option\r\n v-for=\"item in scoreOptions\"\r\n :key=\"item.value\"\r\n :label=\"item.label\"\r\n :value=\"item.value\"\r\n />\r\n </el-select>\r\n </el-tooltip>\r\n\r\n <el-button v-if=\"reportType == 4 && selectedScores.length > 0\" @click=\"getScoreReport()\">\r\n <span>\r\n Get Report\r\n </span>\r\n </el-button>\r\n\r\n <el-tooltip v-if=\"reportType == 5\" class=\"item\" effect=\"light\" content=\"Scores Filter\" placement=\"top\">\r\n <el-select v-model=\"selectedHolisticScores\" multiple placeholder=\"Select Scores\" style=\"margin-right: 10px; width: 300px;\">\r\n <el-option\r\n v-for=\"item in holisticScoreOptions\"\r\n :key=\"item.value\"\r\n :label=\"item.label\"\r\n :value=\"item.value\"\r\n />\r\n </el-select>\r\n </el-tooltip>\r\n\r\n <el-button v-if=\"reportType == 5 && selectedHolisticScores.length > 0\" @click=\"getHolisticScoreReport()\">\r\n <span>\r\n Get Report\r\n </span>\r\n </el-button>\r\n </div>\r\n <el-table\r\n v-if=\"tableData && tableData.length > 0\"\r\n id=\"score-table\"\r\n ref=\"elTable\"\r\n :data=\"tableData.filter(data => !search || data.StudentName.toLowerCase().includes(search.toLowerCase()))\"\r\n style=\"text-align:center; width: 100%\"\r\n height=\"82vh\"\r\n :default-sort=\"{prop: 'date', order: 'descending'}\"\r\n >\r\n <!-- <el-table-column fixed label=\"No\">\r\n\t\t\t\t\t<template slot-scope=\"scope\">\r\n\t\t\t\t\t\t<div>\r\n\t\t\t\t\t\t\t{{ scope.$index + 1 }}\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t</template>\r\n\t\t\t\t</el-table-column> -->\r\n <el-table-column fixed label=\"Academic Term\">\r\n <template slot-scope=\"scope\">\r\n <div>\r\n {{ getTermDescription(scope.row.TermCode) }}\r\n </div>\r\n </template>\r\n </el-table-column>\r\n <el-table-column v-if=\"currentInstructor == 'all'\" sortable fixed prop=\"InstructorName\" label=\"Instructor Name\" />\r\n <el-table-column sortable fixed prop=\"ClassDescription\" label=\"Course Name\" />\r\n <el-table-column sortable fixed prop=\"AssignmentName\" label=\"Project Name\" />\r\n <el-table-column sortable fixed prop=\"StudentName\" label=\"Student Name\" />\r\n </el-table>\r\n </div>\r\n </div>\r\n</template>\r\n\r\n<script>\r\nimport * as termService from '@/services/term.service'\r\nimport * as assignmentService from '@/services/assignment.service'\r\nimport * as reportService from '@/services/report.service'\r\nimport * as enrollmentService from '@/services/enrollment.service'\r\nimport * as userService from '@/services/user.service'\r\nimport { Notification } from 'element-ui'\r\nimport exportFromJSON from 'export-from-json'\r\nimport _ from 'lodash'\r\n// Handles UI and logics for the Student Performance Report page.\r\nexport default {\r\n\tname: 'StudentPerformanceReport',\r\n\tdata() {\r\n\t\treturn {\r\n\t\t\tusername: this.$store.state.auth.user.UserName,\r\n\t\t\torgCode: this.$store.state.auth.user.OrgCode,\r\n\t\t\tenrolledCourses: this.$store.state.enrollment.courses,\r\n\t\t\tcourses: null,\r\n\t\t\tterms: null,\r\n\t\t\tcurrentTerm: null,\r\n\t\t currentCourse: null,\r\n\t\t\tclassCode: null,\r\n\t\t\ttermCode: null,\r\n\t\t\tassignments: null,\r\n\t\t\tcurrentAssignment: null,\r\n\t\t\tassignmentId: null,\r\n\t\t\tisGroupProject: false,\r\n\t\t\ttableData: [],\r\n\t\t\tsearch: '',\r\n\t\t\tinstructorScores: [],\r\n\t\t\tgroups: [],\r\n\t\t\trubricCriteria: [],\r\n\t\t\tcurrentCriteria: 'all',\r\n\t\t\tcollectiveFeebacks: [],\r\n\t\t\tpopOverVisible: false,\r\n\t\t\tpdfDownloadData: null,\r\n\t\t\tdownloadOneFile: true,\r\n\t\t\tisDownloadDivAvailable: false,\r\n\t\t\treportType: null,\r\n\t\t\tselectedScores: [],\r\n\t\t\tscoreOptions: [\r\n\t\t\t\t{\r\n\t\t\t\t\tvalue: '1',\r\n\t\t\t\t\tlabel: '1'\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tvalue: '2',\r\n\t\t\t\t\tlabel: '2'\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tvalue: '3',\r\n\t\t\t\t\tlabel: '3'\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tvalue: '4',\r\n\t\t\t\t\tlabel: '4'\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tvalue: '5',\r\n\t\t\t\t\tlabel: '5'\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tvalue: '6',\r\n\t\t\t\t\tlabel: '6'\r\n\t\t\t\t}],\r\n\t\t\tselectedHolisticScores: [],\r\n\t\t\tholisticScoreOptions: [\r\n\t\t\t\t{\r\n\t\t\t\t\tvalue: '1',\r\n\t\t\t\t\tlabel: '1'\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tvalue: '2',\r\n\t\t\t\t\tlabel: '2'\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tvalue: '3',\r\n\t\t\t\t\tlabel: '3'\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tvalue: '4',\r\n\t\t\t\t\tlabel: '4'\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tvalue: '5',\r\n\t\t\t\t\tlabel: '5'\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tvalue: '6',\r\n\t\t\t\t\tlabel: '6'\r\n\t\t\t\t}\r\n\r\n\t\t\t],\r\n\t\t\tisAdmin: false,\r\n\t\t\tinstructors: null,\r\n\t\t\tisViewingCourse: null,\r\n\t\t\tcurrentInstructor: null,\r\n\t\t\tcourseTypes: [\r\n\t\t\t\t{\r\n\t\t\t\t\tId: '1101',\r\n\t\t\t\t\tName: 'ENC 1101'\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tId: '1102',\r\n\t\t\t\t\tName: 'ENC 1102'\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tId: 'PTC',\r\n\t\t\t\t\tName: 'All PTC'\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tId: '2210',\r\n\t\t\t\t\tName: 'ENC 2210'\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tId: '3246',\r\n\t\t\t\t\tName: 'ENC 3246'\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tId: '3250',\r\n\t\t\t\t\tName: 'ENC 3250'\r\n\t\t\t\t}\r\n\t\t\t],\r\n\t\t\tcourseType: null\r\n \t}\r\n\t},\r\n\tcreated() {\r\n\t\tthis.isAdmin = _.includes(this.$store.state.auth.user.Roles, 'Administrator')\r\n\t\t// this.instructors = this.$store.state.viewAs.instructors;\r\n\t\tthis.isViewingCourse = this.$store.state.enrollment.currentCourse\r\n\r\n\t\tif (!this.isAdmin) { this.currentInstructor = this.username } else { this.enrolledCourses = null }\r\n\t\tthis.getAllTerms()\r\n\t},\r\n\t methods: {\r\n\t\t// @vuese\r\n\t\t// Get term description by term code.\r\n\t\t// @arg The term code.\r\n\t\tgetTermName(termCode) {\r\n\t\t\tconst thisTerm = this.terms.filter(term => { return term.TermCode == termCode })\r\n\t\t\treturn thisTerm[0].TermDescription\r\n\t\t},\r\n\t\tonCourseTypeChange() {\r\n\t\t\tthis.currentCourse = null\r\n\t\t\tthis.assignments = null\r\n\t\t\tthis.currentAssignment = null\r\n\t\t\tthis.tableData = []\r\n\t\t\tthis.instructors = null\r\n\t\t\tthis.currentInstructor = null\r\n\t\t\tthis.courses = null\r\n\t\t\tthis.getInstructors()\r\n\t\t},\r\n\t\tasync getInstructors() {\r\n\t\t\tthis.instructors = await userService.getInstructorsByCourseType(this.orgCode, this.termCode, this.courseType)\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// The course name by class code.\r\n\t\t// @arg The class code.\r\n\t\tgetClassName(classCode) {\r\n\t\t\tconst thisCourse = this.courses.filter(course => { return course.ClassCode == classCode })\r\n\t\t\treturn thisCourse[0].ClassDescription\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Get project name by id.\r\n\t\t// @arg The project id.\r\n\t\tgetProjectName(assignmentId) {\r\n\t\t\tconst project = this.tableData.filter(data => { return data.ProjectId == assignmentId })\r\n\t\t\treturn project[0].ProjectName\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Get all terms by organization code.\r\n\t\tasync getAllTerms() {\r\n\t\t\tthis.terms = await termService.getTerms(this.orgCode)\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Handle logics when a term is selected.\r\n\t\tasync onTermChange() {\r\n\t\t\tthis.currentCourse = null\r\n\t\t\tthis.assignments = null\r\n\t\t\tthis.currentAssignment = null\r\n\t\t\tthis.tableData = []\r\n\t\t\tif (!this.isAdmin) { this.courses = this.enrolledCourses.filter(course => { return course.TermCode == this.termCode }) } else { this.currentInstructor = null }\r\n\t\t\tconsole.log(this.courses)\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Strip the inner text of a HTML element.\r\n\t\t// @arg The HTML element to be stripped.\r\n\t\tstripHtml(html) {\r\n\t\t\tconst tmp = document.createElement('div')\r\n\t\t\ttmp.innerHTML = html\r\n\t\t\treturn tmp.textContent || tmp.innerText || ''\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Get term description by term code.\r\n\t\t// @arg The term code.\r\n\t\tgetTermDescription(termCode) {\r\n\t\t\tlet description = ''\r\n\t\t\tconst semester = termCode.slice(4, 6)\r\n\t\t\tswitch (semester) {\r\n\t\t\t\tcase '01':\r\n\t\t\t\t\tdescription = 'Spring'\r\n\t\t\t\t\tbreak\r\n\t\t\t\tcase '05':\r\n\t\t\t\t\tdescription = 'Summer'\r\n\t\t\t\t\tbreak\r\n\t\t\t\tcase '08': description = 'Fall'\r\n\t\t\t\t\tbreak\r\n\t\t\t\tdefault:\r\n\t\t\t\t\tbreak\r\n\t\t\t}\r\n\t\t\tconst year = termCode.slice(0, 4)\r\n\t\t\tdescription += ' ' + year\r\n\t\t\treturn description\r\n\t\t},\r\n\t\tasync onInstructorChange() {\r\n\t\t\tthis.reportType = null\r\n\t\t\tthis.tableData = null\r\n\t\t\tthis.assignments = null\r\n\t\t\tthis.currentAssignment = null\r\n\t\t\tthis.course = null\r\n\t\t\tthis.currentCourse = null\r\n\t\t\tif (this.currentInstructor != 'all') {\r\n\t\t\t\tconst enrollments = await enrollmentService.getEnrollments(this.currentInstructor, this.orgCode)\r\n\t\t\t\tif (enrollments && enrollments.length > 0) {\r\n\t\t\t\t\tthis.enrolledCourses = enrollments\r\n\t\t\t\t\t\t.map(item => {\r\n\t\t\t\t\t\t\tif (item != null) {\r\n\t\t\t\t\t\t\t\tconst course = {\r\n\t\t\t\t\t\t\t\t\tClassCode: item.ClassCode,\r\n\t\t\t\t\t\t\t\t\tClassDescription: item.ClassDescription,\r\n\t\t\t\t\t\t\t\t\tIsPaidCourse: item.IsPaidCourse,\r\n\t\t\t\t\t\t\t\t\tOrgCode: item.OrgCode,\r\n\t\t\t\t\t\t\t\t\tProjectTemplate: item.ProjectTemplateId,\r\n\t\t\t\t\t\t\t\t\tTermCode: item.TermCode,\r\n\t\t\t\t\t\t\t\t\tUserRole: item.UserRole\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\treturn course\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t})\r\n\t\t\t\t\t\t.filter(item => { return item != null })\r\n\r\n\t\t\t\t\tif (this.courseType == 'PTC') {\r\n\t\t\t\t\t\tthis.courses = this.enrolledCourses.filter(course => {\r\n\t\t\t\t\t\t\treturn course.TermCode == this.termCode &&\r\n (course.ClassDescription.includes('ENC 2210') || course.ClassDescription.includes('ENC 3246') || course.ClassDescription.includes('ENC 3250'))\r\n\t\t\t\t\t\t})\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tthis.courses = this.enrolledCourses.filter(course => {\r\n\t\t\t\t\t\t\treturn course.TermCode == this.termCode &&\r\n course.ClassDescription.includes('ENC ' + this.courseType)\r\n\t\t\t\t\t\t})\r\n\t\t\t\t\t}\r\n\t\t\t\t} else {\r\n\t\t\t\t\tNotification.error({\r\n\t\t\t\t\t\tduration: 6000,\r\n\t\t\t\t\t\ttitle: 'Error',\r\n\t\t\t\t\t\tmessage: 'The selected instructor is not actively enrolled in any course.'\r\n\t\t\t\t\t})\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Handle logics when a course is selected.\r\n\t\tasync onCourseChange() {\r\n\t\t\tthis.assignments = null\r\n\t\t\tthis.currentAssignment = null\r\n\t\t\tthis.tableData = []\r\n\t\t\tthis.reportType = null\r\n\t\t\tif (this.currentCourse != 'all') {\r\n\t\t\t\tthis.assignments = await assignmentService.getAssignmentsByTemplate(this.currentCourse.ProjectTemplate)\r\n\t\t\t}\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Handle logics when a project is selected.\r\n\t\tasync onAssignmentChange() {\r\n\t\t\tthis.tableData = []\r\n\t\t\tthis.reportType = null\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Handle logics when a report type is selected.\r\n\t\tasync onReportTypeChange() {\r\n\t\t\tif (this.termCode && this.currentCourse) {\r\n\t\t\t\tlet classCode = 'all'\r\n\t\t\t\tlet assignmentId = 'all'\r\n\t\t\t\tif (this.currentCourse != 'all') classCode = this.currentCourse.ClassCode\r\n\t\t\t\tif (this.currentAssignment && this.currentAssignment != 'all') assignmentId = this.currentAssignment.Id\r\n\t\t\t\tconst courseType = this.courseType ? this.courseType : 'all'\r\n\t\t\t\tswitch (this.reportType) {\r\n\t\t\t\t\tcase 0:\r\n\t\t\t\t\t\tthis.tableData = await reportService.getNoSubmissionReport(this.orgCode, this.termCode, this.currentInstructor, classCode, assignmentId, courseType)\r\n\t\t\t\t\t\tbreak\r\n\t\t\t\t\tcase 1:\r\n\t\t\t\t\t\tthis.tableData = await reportService.getLateSubmissionReport(this.orgCode, this.termCode, this.currentInstructor, classCode, assignmentId, courseType)\r\n\t\t\t\t\t\tbreak\r\n\t\t\t\t\tcase 2:\r\n\t\t\t\t\t\tthis.tableData = await reportService.getToBeScoredReport(this.orgCode, this.termCode, this.currentInstructor, classCode, assignmentId, courseType)\r\n\t\t\t\t\t\tbreak\r\n\t\t\t\t\tcase 3:\r\n\t\t\t\t\t\tthis.tableData = await reportService.getNoScoreReport(this.orgCode, this.termCode, this.currentInstructor, classCode, assignmentId, courseType)\r\n\t\t\t\t\t\tbreak\r\n\t\t\t\t\tdefault:\r\n\t\t\t\t\t\tbreak\r\n\t\t\t\t}\r\n\t\t\t} else if (this.termCode && this.currentInstructor == 'all') {\r\n\t\t\t\tswitch (this.reportType) {\r\n\t\t\t\t\tcase 0:\r\n\t\t\t\t\t this.tableData = await reportService.getAllNoSubmissionReport(this.orgCode, this.termCode, this.courseType)\r\n\t\t\t\t\t\tbreak\r\n\t\t\t\t\tcase 1:\r\n\t\t\t\t\t\tthis.tableData = await reportService.getAllLateSubmissionReport(this.orgCode, this.termCode, this.courseType)\r\n\t\t\t\t\t\tbreak\r\n\t\t\t\t\tcase 2:\r\n\t\t\t\t\t\tthis.tableData = await reportService.getAllToBeScoredReport(this.orgCode, this.termCode, this.courseType)\r\n\t\t\t\t\t\tbreak\r\n\t\t\t\t\tcase 3:\r\n\t\t\t\t\t\tthis.tableData = await reportService.getAllNoScoreReport(this.orgCode, this.termCode, this.courseType)\r\n\t\t\t\t\t\tbreak\r\n\t\t\t\t\tdefault:\r\n\t\t\t\t\t\tbreak\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Get score report based on score filter.\r\n\t\tasync getScoreReport() {\r\n\t\t\tif (this.currentInstructor == 'all') {\r\n\t\t\t\tconst payload = {\r\n\t\t\t\t\tOrgCode: this.orgCode,\r\n\t\t\t\t\tTermCode: this.termCode,\r\n\t\t\t\t\tCourseType: this.courseType,\r\n\t\t\t\t\tSelectedScores: this.selectedScores\r\n\t\t\t\t}\r\n\t\t\t\tthis.tableData = await reportService.getAllScoreReport(payload)\r\n\t\t\t} else if (this.termCode && this.currentCourse && this.selectedScores.length > 0) {\r\n\t\t\t\tlet classCode = 'all'\r\n\t\t\t\tlet assignmentId = 'all'\r\n\t\t\t\tif (this.currentCourse != 'all') classCode = this.currentCourse.ClassCode\r\n\t\t\t\tif (this.currentAssignment && this.currentAssignment != 'all') assignmentId = this.currentAssignment.Id\r\n\r\n\t\t\t\tconst payload = {\r\n\t\t\t\t\tOrgCode: this.orgCode,\r\n\t\t\t\t\tTermCode: this.termCode,\r\n\t\t\t\t\tUsername: this.currentInstructor,\r\n\t\t\t\t\tClassCode: classCode,\r\n\t\t\t\t\tAssignmentId: assignmentId,\r\n\t\t\t\t\tCourseType: this.courseType,\r\n\t\t\t\t\tSelectedScores: this.selectedScores\r\n\t\t\t\t}\r\n\t\t\t\tthis.tableData = await reportService.getScoreReport(payload)\r\n\t\t\t}\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Get holistic score report based on holistic score filter.\r\n\t\tasync getHolisticScoreReport() {\r\n\t\t\tif (this.currentInstructor == 'all') {\r\n\t\t\t\tconst payload = {\r\n\t\t\t\t\tOrgCode: this.orgCode,\r\n\t\t\t\t\tTermCode: this.termCode,\r\n\t\t\t\t\tCourseType: this.courseType,\r\n\t\t\t\t\tSelectedScores: this.selectedHolisticScores\r\n\t\t\t\t}\r\n\t\t\t\tthis.tableData = await reportService.getAllHolisticScoreReport(payload)\r\n\t\t\t} else if (this.termCode && this.currentCourse && this.selectedHolisticScores.length > 0) {\r\n\t\t\t\tlet classCode = 'all'\r\n\t\t\t\tlet assignmentId = 'all'\r\n\t\t\t\tif (this.currentCourse != 'all') classCode = this.currentCourse.ClassCode\r\n\t\t\t\tif (this.currentAssignment && this.currentAssignment != 'all') assignmentId = this.currentAssignment.Id\r\n\t\t\t\tconst payload = {\r\n\t\t\t\t\tOrgCode: this.orgCode,\r\n\t\t\t\t\tTermCode: this.termCode,\r\n\t\t\t\t\tUsername: this.currentInstructor,\r\n\t\t\t\t\tClassCode: classCode,\r\n\t\t\t\t\tCourseType: this.courseType,\r\n\t\t\t\t\tAssignmentId: assignmentId,\r\n\t\t\t\t\tSelectedScores: this.selectedHolisticScores\r\n\t\t\t\t}\r\n\t\t\t\tthis.tableData = await reportService.getHolisticScoreReport(payload)\r\n\t\t\t}\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Handles Excel export.\r\n\t\texcelExport() {\r\n\t\t\tconst opts = {\r\n\t\t\t\tfileName: 'Student Performance Report',\r\n\t\t\t\ttype: 'xls'\r\n\t\t\t}\r\n\t\t\ttry {\r\n\t\t\t\tconst data = this.dataHandler()\r\n\t\t\t\t// eslint-disable-next-line no-inner-declarations\r\n\t\t\t\tfunction hasProperty(target, name, defVal) {\r\n\t\t\t\t\treturn target.hasOwnProperty(name) ? target[name] : defVal\r\n\t\t\t\t}\r\n\t\t\t\texportFromJSON({\r\n\t\t\t\t\tdata: data,\r\n\t\t\t\t\tfileName: hasProperty(opts, 'fileName', opts.fileName),\r\n\t\t\t\t\texportType: hasProperty(opts, 'type', opts.type),\r\n\t\t\t\t\twithBOM: hasProperty(opts, 'withBOM', opts.withBOM)\r\n\t\t\t\t})\r\n\t\t\t} catch (error) {\r\n\t\t\t\tconsole.error(error)\r\n\t\t\t}\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Handles data format before exporting to excel.\r\n\t\tdataHandler() {\r\n\t\t\tconst columns = this.$refs.elTable.columns.map((element) => {\r\n\t\t\t\t// eslint-disable-next-line no-new-object\r\n\t\t\t\tconst cloumnObj = new Object()\r\n\t\t\t\tcloumnObj.prop = element.property\r\n\t\t\t\tcloumnObj.label = element.label\r\n\t\t\t\treturn cloumnObj\r\n\t\t\t})\r\n\t\t\tconst data = this.tableData\r\n\t\t\t// eslint-disable-next-line no-array-constructor\r\n\t\t\tconst outputData = new Array()\r\n\t\t\tdata.map((value) => {\r\n\t\t\t\t// eslint-disable-next-line no-new-object\r\n\t\t\t\tconst obj = new Object()\r\n\t\t\t\tcolumns.forEach(element => {\r\n\t\t\t\t\tobj[element.label] = value[element.prop]\r\n\t\t\t\t})\r\n\t\t\t\tobj['Academic Term'] = this.getTermDescription(value['TermCode'])\r\n\t\t\t\toutputData.push(obj)\r\n\t\t\t})\r\n\t\t\treturn outputData\r\n\t\t},\r\n\t\thandleEdit(index, row) {\r\n\t\t\tif (this.isGroupProject) { this.$router.push('/rubric?reviewerId=' + this.$store.state.auth.user.UserName + '&groupId=' + row.GroupId + '&assignmentId=' + this.$route.params.id) } else { this.$router.push('/rubric?reviewerId=' + this.$store.state.auth.user.UserName + '&revieweeId=' + row.StudentId + '&assignmentId=' + this.$route.params.id) }\r\n\t\t},\r\n\t\thandleDelete(index, row) {\r\n\t\t\tconsole.log(index, row)\r\n\t\t}\r\n\t}\r\n}\r\n</script>\r\n\r\n<style scoped>\r\n.el-table__empty-text{\r\n\tdisplay: none;\r\n}\r\n.student-submission-wrapper{\r\n padding: 20px;\r\n box-shadow: 20px 10px 25px 20px rgba(109, 107, 107, 0.1);\r\n}\r\n\r\n</style>\r\n<style>\r\n.center-align{\r\n text-align: center !important;\r\n}\r\n.cutom-popper{\r\n width: 400px;\r\n}\r\n</style>\r\n\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./StudentPerformance.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./StudentPerformance.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./StudentPerformance.vue?vue&type=template&id=547e5bb5&scoped=true&\"\nimport script from \"./StudentPerformance.vue?vue&type=script&lang=js&\"\nexport * from \"./StudentPerformance.vue?vue&type=script&lang=js&\"\nimport style0 from \"./StudentPerformance.vue?vue&type=style&index=0&id=547e5bb5&scoped=true&lang=css&\"\nimport style1 from \"./StudentPerformance.vue?vue&type=style&index=1&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"547e5bb5\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _vm._m(0)}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"page h-screen flex w-full\"},[_c('div',{staticClass:\"content sm-c md-c lg-c xl-c mx-auto self-center\",staticStyle:{\"width\":\"500px !important\"}},[_c('div',[_c('h1',[_vm._v(\"Redirecting to USF Writes...\")])])])])}]\n\nexport { render, staticRenderFns }","<template>\r\n <div class=\"page h-screen flex w-full\">\r\n <div class=\"content sm-c md-c lg-c xl-c mx-auto self-center\" style=\"width: 500px !important;\">\r\n <div>\r\n <h1>Redirecting to USF Writes...</h1>\r\n </div>\r\n </div>\r\n </div>\r\n</template>\r\n\r\n<script>\r\nimport { mapActions } from 'vuex'\r\n// Handles UI and logics for Canvas Redirection.\r\nexport default {\r\n\tname: 'CanvasRedirect',\r\n\tdata() {\r\n\t\treturn {\r\n\t\t\tusername: '',\r\n\t\t\tpassword: '',\r\n\t\t\tloading: false\r\n\t\t}\r\n\t},\r\n\tasync created() {\r\n\t\tconst code = this.getUrlParameter('code')\r\n\t\tconsole.log(code)\r\n\t\tif (code) {\r\n\t\t\tconst user = await this.canvasLogin(code)\r\n\t\t\tif (user) {\r\n\t\t\t\tthis.loading = false\r\n\t\t\t\t// check optin status before redirecting user to /courses\r\n\t\t\t\t// this.checkOptInStatus();\r\n\t\t\t\tthis.$router.push({ path: '/' })\r\n\t\t\t} else {\r\n\t\t\t\tthis.loading = false\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\tmethods: {\r\n\t\t...mapActions('auth', ['canvasLogin']),\r\n\t\t...mapActions('enrollment', ['getEnrollments']),\r\n\t\t// @vuese\r\n\t\t// get parameter from the URL.\r\n\t\t// @arg The parameter to get.\r\n\t\tgetUrlParameter(sParam) {\r\n\t\t\tconst sPageURL = decodeURIComponent(window.location.search.substring(1))\r\n\r\n\t\t\tconst sURLVariables = sPageURL.split('&')\r\n\r\n\t\t\tlet sParameterName\r\n\r\n\t\t\tlet i\r\n\r\n\t\t\tfor (i = 0; i < sURLVariables.length; i++) {\r\n\t\t\t\tsParameterName = sURLVariables[i].split('=')\r\n\r\n\t\t\t\tif (sParameterName[0] === sParam) {\r\n\t\t\t\t\treturn sParameterName[1] === undefined ? true : sParameterName[1]\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n}\r\n</script>\r\n\r\n<style scoped>\r\n/* .page\r\n{\r\n\twidth: 100%!important;\r\n\theight: 100vh!important;\r\n\tbackground-image: url(\"../../assets/background1.jpg\");\r\n\tbackground-position: 50%;\r\n\tbackground-repeat: no-repeat;\r\n background-size: cover;\r\n}\r\n.content{\r\n\tmargin-left: auto!important;\r\n margin-right: auto!important;\r\n\ttext-align: center;\r\n border-radius: 5px;\r\n color: white;\r\n} */\r\n\r\n.page\r\n{\r\n\twidth: 100% !important;\r\n\theight: 100vh!important;\r\n\tbackground-color: rgb(0, 103, 71);\r\n background-size: cover;\r\n}\r\n.content{\r\n\tmargin-left: auto!important;\r\n margin-right: auto!important;\r\n\ttext-align: center;\r\n border-radius: 5px;\r\n\tcolor: white;\r\n}\r\n\r\n.h-screen\r\n{\r\n height: 100vh!important;\r\n}\r\n\r\n.flex\r\n{\r\n display: flex!important;\r\n}\r\n.w-full\r\n{\r\n width: 100%!important;\r\n}\r\n.mx-auto\r\n{\r\n margin-left: auto!important;\r\n margin-right: auto!important;\r\n}\r\n\r\n.self-center\r\n{\r\n align-self: center!important;\r\n}\r\n\r\n@media only screen and (min-width: 576px)\r\n{\r\n\t.sm-c\r\n\t{\r\n\t\t\twidth: 50%!important;\r\n\t}\r\n}\r\n@media only screen and (min-width: 768px)\r\n{\r\n\t.md-c\r\n\t{\r\n\t\t\twidth: 50%!important;\r\n\t}\r\n}\r\n@media only screen and (min-width: 992px)\r\n{\r\n\t.lg-c\r\n\t{\r\n\t\t\twidth: 75%!important;\r\n\t}\r\n}\r\n@media only screen and (min-width: 1200px)\r\n{\r\n\t.xl-c\r\n\t{\r\n\t\t\twidth: 40%!important;\r\n\t}\r\n}\r\n@media only screen and (min-width: 576px)\r\n{\r\n\t.sm-l\r\n\t{\r\n\t\t\tdisplay: none !important;\r\n\t}\r\n}\r\n@media only screen and (min-width: 768px)\r\n{\r\n\t.md-l\r\n\t{\r\n\t\t\tdisplay: none !important;\r\n\t}\r\n}\r\n@media only screen and (min-width: 992px)\r\n{\r\n\t.lg-l\r\n\t{\r\n\t\t\tdisplay: block!important;\r\n\t\t\twidth:50% !important;\r\n\t}\r\n}\r\n@media only screen and (min-width: 576px)\r\n{\r\n\t.sm-r\r\n\t{\r\n\t\t\twidth: 100%!important;\r\n\t}\r\n}\r\n@media only screen and (min-width: 768px)\r\n{\r\n\t.md-r\r\n\t{\r\n\t\t\twidth: 100%!important;\r\n\t}\r\n}\r\n@media only screen and (min-width: 992px)\r\n{\r\n\t.lg-r\r\n\t{\r\n\t\t\twidth: 50%!important;\r\n\t}\r\n}\r\n</style>\r\n<style>\r\n.login-consent-form{\r\n width: 50% !important;\r\n}\r\n.login-consent-form>.el-message-box__header, .login-consent-form>.el-message-box__btns{\r\n text-align: center !important;\r\n}\r\n</style>\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Redirect.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Redirect.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Redirect.vue?vue&type=template&id=2fe2ebf3&scoped=true&\"\nimport script from \"./Redirect.vue?vue&type=script&lang=js&\"\nexport * from \"./Redirect.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Redirect.vue?vue&type=style&index=0&id=2fe2ebf3&scoped=true&lang=css&\"\nimport style1 from \"./Redirect.vue?vue&type=style&index=1&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"2fe2ebf3\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"page\"},[_c('div',{staticStyle:{\"position\":\"absolute\",\"left\":\"50%\",\"top\":\"50%\",\"transform\":\"translate(-50%, -50%)\"}},[_c('div',{staticStyle:{\"color\":\"white\",\"font-size\":\"50px\"}},[_vm._v(\"\\n PAGE NOT FOUND\\n \")]),_c('div',{staticStyle:{\"text-align\":\"center\",\"margin-top\":\"20px\"}},[_c('router-link',{attrs:{\"to\":\"/\",\"exact\":\"\"}},[_c('el-button',{attrs:{\"type\":\"primary\"}},[_c('span',[_vm._v(\"\\n Back to All Courses\\n \")])])],1)],1)])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { render, staticRenderFns } from \"./NotFound.vue?vue&type=template&id=1691ec5d&scoped=true&\"\nvar script = {}\nimport style0 from \"./NotFound.vue?vue&type=style&index=0&id=1691ec5d&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"1691ec5d\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"page\"},[_c('div',{staticStyle:{\"width\":\"680px\",\"margin\":\"auto\",\"padding-top\":\"5%\"}},[_vm._m(0),_vm._m(1),_vm._m(2),_c('div',{staticClass:\"tip\",staticStyle:{\"padding\":\"5px 10px\",\"background-color\":\"#EDEBD1\",\"border-radius\":\"4px\",\"border-left\":\"5px solid #CFC493\",\"margin-bottom\":\"10px\"}},[_c('h2',{staticClass:\"h2-class\"},[_vm._v(\"\\n Hi \"),(_vm.ssoName)?_c('span',[_vm._v(\" \"+_vm._s(_vm.ssoName))]):_vm._e(),(_vm.ssoUserName)?_c('span',[_vm._v(\" (\"+_vm._s(_vm.ssoUserName)+\")\")]):_vm._e(),_vm._v(\",\\n \")]),_c('p',{staticClass:\"p-class\"},[_vm._v(\"\\n To access USF Writes you must be enrolled in an ENC 1101 or 1102 First Year Composition course.\\n \")]),(_vm.currentTerm)?_c('p',{staticClass:\"p-class\"},[_vm._v(\"\\n If you are enrolled in one of these courses for the \"),_c('strong',[_vm._v(_vm._s(_vm.currentTerm.TermDescription))]),_vm._v(\" semester and have unexpectedly lost access:\\n \"),_c('ul',[_c('li',[_vm._v(\"make sure you are still enrolled in the course and have not been deactivated\")]),_c('li',[_c('button',{staticStyle:{\"cursor\":\"pointer\"},on:{\"click\":_vm.onLogOut}},[_vm._v(\"Sign out\")]),_vm._v(\" and back in to refresh login\")]),_c('li',[_vm._v(\"or open a New Incognito window in Chrome and sign in there to ensure a new session\")])]),_vm._v(\"\\n If this is a new course for which you have not yet subscribed please try back again after 24 hours as we will be updating student enrollment records everyday.\\n \")]):_vm._e(),_c('p',{staticClass:\"p-class\"},[_vm._v(\"\\n If you are enrolled in any of these courses for the upcoming \"),_c('strong',[_vm._v(_vm._s(_vm.nextTerm))]),_vm._v(\" semester, please try again after \"+_vm._s(_vm.nextStartDate)+\".\\n \")]),_vm._m(3),_c('p',{staticClass:\"p-class\"},[_vm._v(\"\\n Thanks,\\n \")]),_c('p',{staticClass:\"p-class\"},[_vm._v(\"\\n USF Writes\\n \")])]),_c('div',{staticStyle:{\"text-align\":\"center\",\"margin-top\":\"40px\"}},[_c('el-button',{attrs:{\"type\":\"primary\",\"plain\":\"\"},on:{\"click\":function($event){return _vm.reTry()}}},[_vm._v(\"Try Again\")]),_c('el-button',{staticStyle:{\"margin-left\":\"10px\"},attrs:{\"type\":\"primary\"},on:{\"click\":function($event){_vm.contactDialogVisible = true}}},[_vm._v(\"Contact Us\")])],1),_c('div',[(_vm.contactDialogVisible)?_c('contactVue',{attrs:{\"contact-dialog-visible\":_vm.contactDialogVisible},on:{\"update:contactDialogVisible\":function($event){_vm.contactDialogVisible=$event},\"update:contact-dialog-visible\":function($event){_vm.contactDialogVisible=$event},\"close\":function($event){_vm.contactDialogVisible = false}}}):_vm._e()],1)])])}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"logo\",staticStyle:{\"margin\":\"auto\",\"width\":\"50%\",\"text-align\":\"center\",\"margin-bottom\":\"5%\"}},[_c('a',{attrs:{\"href\":\"/\"}},[_c('img',{attrs:{\"src\":require(\"@/assets/img/white-transparent-logo.png\"),\"alt\":\"logo\",\"width\":\"250px\"}})])])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticStyle:{\"color\":\"white\",\"text-align\":\"center\",\"margin-bottom\":\"5%\"}},[_c('h1',[_vm._v(\"PROFILE NOT FOUND\")])])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"tip\",staticStyle:{\"padding\":\"5px 10px\",\"background-color\":\"#EDEBD1\",\"border-radius\":\"4px\",\"border-left\":\"5px solid #CFC493\",\"margin-bottom\":\"10px\"}},[_c('h2',{staticClass:\"h2-class\",attrs:{\"h2\":\"\"}},[_vm._v(\"FYC Writing Program Announcement for ENC 1101 and ENC 1102 courses\")]),_c('p',{staticClass:\"p-class\"},[_vm._v(\"The First-Year Writing Program will provide access to USF Writes for \"),_c('strong',[_vm._v(\"ENC 1101 and ENC 1102\")]),_vm._v(\" during the week before classes begin.\")]),_c('p',{staticClass:\"p-class\"},[_vm._v(\"Users will have an opportunity to familiarize themselves with USF Writes before it is required for course work.\")]),_c('p',{staticClass:\"p-class\"},[_vm._v(\"Please try again after \"),_c('strong',[_vm._v(\"Monday, January 6th\")]),_vm._v(\". Thank you.\")])])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('p',{staticClass:\"p-class\"},[_vm._v(\"\\n If you think you have reached this page in error please click on the \"),_c('strong',[_vm._v(\"[Contact Us]\")]),_vm._v(\" button below and fill out the support form.\\n \")])}]\n\nexport { render, staticRenderFns }","<template>\r\n <div class=\"page\">\r\n <div style=\"width: 680px; margin: auto; padding-top: 5%;\">\r\n\r\n <div class=\"logo\" style=\" margin: auto; width: 50%; text-align: center; margin-bottom: 5%;\">\r\n <a href=\"/\">\r\n <img src=\"@/assets/img/white-transparent-logo.png\" alt=\"logo\" width=\"250px\">\r\n </a>\r\n </div>\r\n \r\n <div style=\"color: white; text-align: center; margin-bottom: 5%;\">\r\n <h1>PROFILE NOT FOUND</h1>\r\n </div>\r\n\r\n <div\r\n class=\"tip\"\r\n style=\"padding: 5px 10px; background-color: #EDEBD1; border-radius: 4px; border-left: 5px solid #CFC493; margin-bottom: 10px;\"\r\n >\r\n <h2 h2 class=\"h2-class\">FYC Writing Program Announcement for ENC 1101 and ENC 1102 courses</h2>\r\n <p class=\"p-class\">The First-Year Writing Program will provide access to USF Writes for <strong>ENC 1101 and ENC 1102</strong> during the week before classes begin.</p>\r\n <p class=\"p-class\">Users will have an opportunity to familiarize themselves with USF Writes before it is required for course work.</p>\r\n <p class=\"p-class\">Please try again after <strong>Monday, January 6th</strong>. Thank you.</p>\r\n </div>\r\n\r\n <div\r\n class=\"tip\"\r\n style=\"padding: 5px 10px; background-color: #EDEBD1; border-radius: 4px; border-left: 5px solid #CFC493; margin-bottom: 10px;\"\r\n >\r\n <h2 class=\"h2-class\">\r\n Hi <span v-if=\"ssoName\"> {{ ssoName }}</span> <span v-if=\"ssoUserName\"> ({{ ssoUserName }})</span>,\r\n </h2>\r\n <p class=\"p-class\">\r\n To access USF Writes you must be enrolled in an ENC 1101 or 1102 First Year Composition course.\r\n </p>\r\n\r\n <p v-if=\"currentTerm\" class=\"p-class\">\r\n If you are enrolled in one of these courses for the <strong>{{ currentTerm.TermDescription }}</strong> semester and have unexpectedly lost access:\r\n <ul>\r\n <li>make sure you are still enrolled in the course and have not been deactivated</li> \r\n <li><button @click=\"onLogOut\" style=\"cursor: pointer\">Sign out</button> and back in to refresh login</li>\r\n <li>or open a New Incognito window in Chrome and sign in there to ensure a new session</li>\r\n </ul>\r\n If this is a new course for which you have not yet subscribed please try back again after 24 hours as we will be updating student enrollment records everyday.\r\n </p>\r\n\r\n <p class=\"p-class\">\r\n If you are enrolled in any of these courses for the upcoming <strong>{{ nextTerm }}</strong> semester, please try again after {{ nextStartDate }}.\r\n </p>\r\n\r\n <p class=\"p-class\">\r\n If you think you have reached this page in error please click on the <strong>[Contact Us]</strong> button below and fill out the support form.\r\n </p>\r\n\r\n <p class=\"p-class\">\r\n Thanks,\r\n </p>\r\n\r\n <p class=\"p-class\">\r\n USF Writes\r\n </p>\r\n </div>\r\n\r\n <div style=\"text-align: center; margin-top: 40px;\">\r\n <!-- <router-link to=\"/\" exact>\r\n <el-button type=\"primary\" plain>Try Again</el-button>\r\n </router-link> -->\r\n\r\n <el-button type=\"primary\" plain @click=\"reTry()\">Try Again</el-button>\r\n\r\n <el-button type=\"primary\" style=\"margin-left: 10px;\" @click=\"contactDialogVisible = true\">Contact Us</el-button>\r\n </div>\r\n\r\n <div>\r\n <contactVue v-if=\"contactDialogVisible\" :contact-dialog-visible.sync=\"contactDialogVisible\" @close=\"contactDialogVisible = false\" />\r\n </div>\r\n </div>\r\n </div>\r\n</template>\r\n\r\n<script>\r\nimport { mapActions } from 'vuex'\r\nimport contactVue from '@/views/support/Contact.vue'\r\nimport * as termService from '@/services/term.service'\r\nimport * as dateUtils from '@/utils/date-utils'\r\nexport default {\r\n\tname: 'NoProfile',\r\n\tcomponents: {\r\n\t\tcontactVue\r\n\t},\r\n\tfilters: {\r\n\t\tformatDate(dateStr) {\r\n\t\t\tif (dateStr) { return dateUtils.formatDate(dateStr) }\r\n\t\t}\r\n\t},\r\n\tdata() {\r\n\t\treturn {\r\n\t\t\tcontactDialogVisible: false,\r\n\t\t\tcurrentTerm: null,\r\n\t\t\tterms: null,\r\n\t\t\tnextTerm: null,\r\n\t\t\tnextStartDate: null,\r\n\t\t\tssoName: null,\r\n\t\t\tssoUserName: null\r\n\t\t}\r\n\t},\r\n\tasync created() {\r\n\t\tthis.currentTerm = await termService.getCurrentTerm('USF')\r\n\t\tthis.nextTerm = this.getNextTerm()\r\n\t\tthis.nextStartDate = this.$moment(this.currentTerm.EndDate, 'YYY-MM-DD').add(7, 'days').format('dddd, MMM Do')\r\n\t\tthis.ssoName = this.$store.state.auth.ssoName\r\n\t\tthis.ssoUserName = this.$store.state.auth.ssoUserName\r\n\t},\r\n\tmethods: {\r\n\t\t...mapActions('auth', ['logOut']),\r\n\t\tgetNextTerm() {\r\n\t\t\tif (this.currentTerm.TermDescription.includes('Spring')) return 'Summer'\r\n\t\t\telse if (this.currentTerm.TermDescription.includes('Summer')) return 'Fall'\r\n\t\t\telse return 'Spring'\r\n\t\t},\r\n\t\tasync reTry() {\r\n\t\t\tawait this.logOut()\r\n\t\t\twindow.location.href = process.env.VUE_APP_MSAL_AUTHORITY + '/oauth2/logout?post_logout_redirect_uri=' + process.env.VUE_APP_MSAL_LOGOUT_URI\r\n },\r\n async onLogOut() {\r\n await this.logOut();\r\n\r\n // Using version 1.0 endpoint for bypassing account selection popup.\r\n window.location.href =\r\n process.env.VUE_APP_MSAL_AUTHORITY +\r\n \"/oauth2/logout?post_logout_redirect_uri=\" +\r\n process.env.VUE_APP_MSAL_LOGOUT_URI;\r\n // = 'https://login.microsoftonline.com/741bf7de-e2e5-46df-8d67-82607df9deaa'\r\n // this.$msal = new PublicClientApplication(\r\n // \tthis.$store.state.auth.msalConfig,\r\n // )\r\n // await this.$msal.logout()\r\n }\r\n\t}\r\n}\r\n</script>\r\n\r\n<style scoped>\r\n.page\r\n{\r\n\twidth: 100% !important;\r\n\theight: 100vh !important;\r\n\tbackground-color: rgb(0, 103, 71);\r\n background-size: cover;\r\n}\r\n.h2-class {\r\n font-size: 16px; \r\n color: #444444;\r\n word-break: normal;\r\n text-align: left;\r\n \r\n}\r\n.p-class {\r\n font-size: 14px; \r\n color: #444444;\r\n word-break: normal;\r\n text-align: left;\r\n}\r\n</style>\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./NoProfile.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./NoProfile.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./NoProfile.vue?vue&type=template&id=638f0be6&scoped=true&\"\nimport script from \"./NoProfile.vue?vue&type=script&lang=js&\"\nexport * from \"./NoProfile.vue?vue&type=script&lang=js&\"\nimport style0 from \"./NoProfile.vue?vue&type=style&index=0&id=638f0be6&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"638f0be6\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{class:_vm.fullWidth,attrs:{\"id\":\"full_width_container\"}},[_c('div',{staticClass:\"full_height\",attrs:{\"id\":\"left_side\"}},[_c('div',{attrs:{\"id\":\"left_side_inner\"}},[_c('div',{attrs:{\"id\":\"submissions_container\"}},[_c('nav',{staticClass:\"ViewerControls ViewerControls--with-annotations\"},[_c('div',{staticClass:\"ViewerControls-primary\"},[_c('div',{staticClass:\"ViewerControls--title\"}),_c('div',{staticClass:\"ViewerControls--page-controls\",staticStyle:{\"margin-top\":\"10px\"}},[_c('span',{staticClass:\"ViewerControls--page-number\",staticStyle:{\"display\":\"flex\",\"align-items\":\"center\"}},[_vm._v(\"\\n Page\\n \"),_c('div',{staticStyle:{\"padding-left\":\"10px\",\"padding-right\":\"10px\"}},[_c('el-input-number',{attrs:{\"min\":1,\"max\":_vm.totalPageNumber,\"size\":\"small\",\"label\":\"Page\"},on:{\"change\":_vm.changePage},model:{value:(_vm.pageNum),callback:function ($$v) {_vm.pageNum=$$v},expression:\"pageNum\"}})],1),_vm._v(\"\\n of \"+_vm._s(_vm.totalPageNumber)+\"\\n \")]),_c('svg',{staticStyle:{\"margin-left\":\"12px\",\"margin-right\":\"0px\",\"width\":\"2px\",\"height\":\"26px\",\"color\":\"rgb(171, 179, 186)\"},attrs:{\"viewBox\":\"0 0 2 26\"}},[_c('line',{attrs:{\"stroke\":\"currentColor\",\"stroke-dasharray\":\"2, 1\",\"stroke-width\":\"1\",\"x1\":\"1\",\"y1\":\"0\",\"x2\":\"1\",\"y2\":\"26\"}})])]),_c('nav',{staticClass:\"DocumentControls\",staticStyle:{\"margin-top\":\"10px\"}},[_c('div',{staticStyle:{\"display\":\"inline-flex\",\"align-items\":\"center\",\"user-select\":\"none\"}},[_c('button',{staticClass:\"AnnotationControlButton\",attrs:{\"aria-label\":\"Zoom Out\",\"title\":\"Zoom Out\",\"aria-disabled\":\"false\"},on:{\"click\":_vm.zoomOut}},[_c('i',{staticClass:\"fas fa-minus\",staticStyle:{\"font-size\":\"20px\"}})]),_c('span',{staticStyle:{\"text-transform\":\"uppercase\",\"font-size\":\"0.75rem\",\"color\":\"rgb(238, 238, 239)\",\"margin-left\":\"4px\",\"margin-right\":\"4px\"},attrs:{\"aria-hidden\":\"true\"}},[_vm._v(\"\\n Zoom\\n \")]),_c('button',{staticClass:\"AnnotationControlButton\",attrs:{\"aria-label\":\"Zoom In\",\"title\":\"Zoom In\",\"aria-disabled\":\"false\"},on:{\"click\":_vm.zoomIn}},[_c('i',{staticClass:\"fas fa-plus\",staticStyle:{\"font-size\":\"20px\"}})])]),_c('svg',{staticStyle:{\"margin-left\":\"2px\",\"margin-right\":\"4px\",\"width\":\"2px\",\"height\":\"26px\",\"color\":\"rgb(171, 179, 186)\"},attrs:{\"viewBox\":\"0 0 2 26\"}},[_c('line',{attrs:{\"stroke\":\"currentColor\",\"stroke-dasharray\":\"2, 1\",\"stroke-width\":\"1\",\"x1\":\"1\",\"y1\":\"0\",\"x2\":\"1\",\"y2\":\"26\"}})]),_c('div',{staticClass:\"ViewerControls--page-controls\"},[_c('button',{staticClass:\"AnnotationControlButton full-screen-button\",attrs:{\"aria-label\":\"Enter Full Screen\",\"title\":\"Zoom Fit Width\"},on:{\"click\":_vm.zoomFitWidth}},[_c('i',{staticClass:\"fas fa-expand\",staticStyle:{\"font-size\":\"20px\"}})])])])])]),_vm._m(0)])])])])}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticStyle:{\"display\":\"block\",\"height\":\"calc(100% - 45px)\"},attrs:{\"id\":\"iframe_holder\"}},[_c('div',{staticStyle:{\"resize\":\"vertical\",\"height\":\"100%\"},attrs:{\"id\":\"pdfDocument\"}})])}]\n\nexport { render, staticRenderFns }","<template>\r\n <div id=\"full_width_container\" :class=\"fullWidth\">\r\n <div id=\"left_side\" class=\"full_height\">\r\n <div id=\"left_side_inner\">\r\n <div id=\"submissions_container\">\r\n <nav class=\"ViewerControls ViewerControls--with-annotations\">\r\n <div class=\"ViewerControls-primary\">\r\n <div class=\"ViewerControls--title\" />\r\n <div class=\"ViewerControls--page-controls\" style=\"margin-top:10px;\">\r\n <span class=\"ViewerControls--page-number\" style=\"display: flex; align-items: center;\">\r\n Page\r\n <div style=\"padding-left: 10px; padding-right: 10px;\">\r\n <el-input-number v-model=\"pageNum\" :min=\"1\" :max=\"totalPageNumber\" size=\"small\" label=\"Page\" @change=\"changePage\" />\r\n </div>\r\n of {{ totalPageNumber }}\r\n </span>\r\n <svg viewBox=\"0 0 2 26\" style=\"margin-left: 12px; margin-right: 0px; width: 2px; height: 26px; color: rgb(171, 179, 186);\">\r\n <line stroke=\"currentColor\" stroke-dasharray=\"2, 1\" stroke-width=\"1\" x1=\"1\" y1=\"0\" x2=\"1\" y2=\"26\" />\r\n </svg>\r\n </div>\r\n <nav class=\"DocumentControls\" style=\"margin-top:10px;\">\r\n <div style=\"display: inline-flex; align-items: center; user-select: none;\">\r\n <button class=\"AnnotationControlButton\" aria-label=\"Zoom Out\" title=\"Zoom Out\" aria-disabled=\"false\" @click=\"zoomOut\">\r\n <i style=\"font-size: 20px;\" class=\"fas fa-minus\" />\r\n </button>\r\n <span aria-hidden=\"true\" style=\"text-transform: uppercase; font-size: 0.75rem; color: rgb(238, 238, 239); margin-left: 4px; margin-right: 4px;\">\r\n Zoom\r\n </span>\r\n <button class=\"AnnotationControlButton\" aria-label=\"Zoom In\" title=\"Zoom In\" aria-disabled=\"false\" @click=\"zoomIn\">\r\n <i style=\"font-size: 20px;\" class=\"fas fa-plus\" />\r\n </button>\r\n </div>\r\n <svg viewBox=\"0 0 2 26\" style=\"margin-left: 2px; margin-right: 4px; width: 2px; height: 26px; color: rgb(171, 179, 186);\">\r\n <line stroke=\"currentColor\" stroke-dasharray=\"2, 1\" stroke-width=\"1\" x1=\"1\" y1=\"0\" x2=\"1\" y2=\"26\" />\r\n </svg>\r\n <div class=\"ViewerControls--page-controls\">\r\n <button aria-label=\"Enter Full Screen\" class=\"AnnotationControlButton full-screen-button\" title=\"Zoom Fit Width\" @click=\"zoomFitWidth\">\r\n <i style=\"font-size: 20px;\" class=\"fas fa-expand\" />\r\n </button>\r\n </div>\r\n </nav>\r\n </div>\r\n </nav>\r\n\r\n <div id=\"iframe_holder\" style=\"display: block; height: calc(100% - 45px);\">\r\n <div id=\"pdfDocument\" style=\"resize: vertical; height: 100%;\" />\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</template>\r\n\r\n<script>\r\nimport * as pdfService from '@/services/pdf.service'\r\n// Handle UI and logics for the E-Text page.\r\nexport default {\r\n\tdata() {\r\n\t\treturn {\r\n\t\t\tmyapi: null,\r\n\t\t\tbookName: this.$route.params.name,\r\n\t\t\tpageNum: 1,\r\n\t\t\ttotalPageNumber: null,\r\n\t\t\tzoomValue: 140,\r\n\t\t\tdocId: process.env.VUE_APP_TEXT_BOOK_DOC_ID\r\n\t\t}\r\n\t},\r\n\tcomputed: {\r\n\t\tfullWidth() {\r\n\t\t\tconst mainNav = document.querySelector('#main-nav')\r\n\t\t\tif (mainNav && !mainNav.classList.contains('full-width')) {\r\n\t\t\t\treturn ''\r\n\t\t\t} else { return 'full-width' }\r\n\t\t}\r\n\t},\r\n\twatch: {\r\n\t},\r\n\tmounted() {\r\n\t\tthis.displayDocument()\r\n\t},\r\n\tmethods: {\r\n\t\t// @vuese\r\n\t\t// Display the etext.\r\n\t\tasync displayDocument() {\r\n\t\t\tif (this.bookName == 'raww') {\r\n\t\t\t\tconst docId = this.docId // 1891601 // 1866469 // 1647251// 1544494;//1446282;\r\n\t\t\t\tawait pdfService.getTextbook(docId)\r\n\t\t\t\t\t.then(pdf => {\r\n\t\t\t\t\t\t// Display the pdf\r\n\t\t\t\t\t\tconst pdfDocument = document.querySelector('#pdfDocument')\r\n\t\t\t\t\t\tpdfDocument.innerHTML = pdf\r\n\t\t\t\t\t\tconst that = this\r\n\t\t\t\t\t\tdocument.getElementById('PdfWebControl').onload = function() {\r\n\t\t\t\t\t\t\tthat.PdfAttachListeners()\r\n\t\t\t\t\t\t\tsetTimeout(function() {\r\n\t\t\t\t\t\t\t\tthat.totalPageNumber = that.myapi.getPageCount()\r\n\t\t\t\t\t\t\t}, 500)\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}).catch((error) => {\r\n\t\t\t\t\t\tconsole.log(error)\r\n\t\t\t\t\t})\r\n\t\t\t}\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Configures Rad PDf for displaying the document.\r\n\t\tPdfAttachListeners() {\r\n\t\t\tconst id = 'PdfWebControl'\r\n\t\t\t// eslint-disable-next-line no-undef\r\n\t\t\tthis.myapi = new PdfWebControlApi(id)\r\n\t\t\tthis.myapi.addEventListener('modeChanged', function(evt) {\r\n\t\t\t\tevt.byLine = true\r\n\t\t\t})\r\n\t\t\tconst that = this\r\n\t\t\tthis.myapi.addEventListener('viewChanged', function(evt) {\r\n\t\t\t\tthat.pageNum = that.myapi.getPageViewed().getPageNumber()\r\n\t\t\t})\r\n\r\n\t\t\tthis.myapi.addEventListener('objectAdded', function(evt) {\r\n\t\t\t\tif (evt.obj.getType() == 154) { // Highlight annotation\r\n\t\t\t\t\tconst props = evt.obj.getProperties()\r\n\t\t\t\t\tconst popup = evt.obj.getPopup()\r\n\r\n\t\t\t\t\tevt.obj.setProperties({\r\n\t\t\t\t\t\t'customData': evt.textSelected\r\n\t\t\t\t\t})\r\n\r\n\t\t\t\t\tpopup.setProperties(\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tauthor: 'RAD PDF',\r\n\t\t\t\t\t\t\tsubject: 'In-text Comment',\r\n\t\t\t\t\t\t\ttop: props['top'] - 60,\r\n\t\t\t\t\t\t\tleft: props['left'] - 5,\r\n\t\t\t\t\t\t\theight: 60\r\n\t\t\t\t\t\t})\r\n\r\n\t\t\t\t\tthat.myapi.setMode(that.myapi.Mode.None)\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (evt.obj.getType() == 100) {\r\n\t\t\t\t\tthat.myapi.setMode(that.myapi.Mode.None)\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (evt.obj.getType() == 101) {\r\n\t\t\t\t\tthat.myapi.setMode(that.myapi.Mode.None)\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (evt.obj.getType() == that.myapi.ObjectType.StrikeoutAnnotation) {\r\n\t\t\t\t\tthat.myapi.setMode(that.myapi.Mode.None)\r\n\t\t\t\t}\r\n\t\t\t\tif (evt.obj.getType() == that.myapi.ObjectType.TextAnnotation) {\r\n\t\t\t\t\tthat.myapi.setMode(that.myapi.Mode.None)\r\n\t\t\t\t}\r\n\t\t\t})\r\n\t\t},\r\n\t\tchangePage() {\r\n\t\t\tthis.myapi.setView({ 'page': this.pageNum })\r\n\t\t},\r\n\t\tzoomOut() {\r\n\t\t\tif (this.myapi) {\r\n\t\t\t\tif (this.zoomValue > 40) { this.myapi.setView({ 'zoom': this.zoomValue -= 20 }) }\r\n\t\t\t}\r\n\t\t},\r\n\t\tzoomIn() {\r\n\t\t\tif (this.myapi) {\r\n\t\t\t\tif (this.zoomValue < 200 && this.zoomValue > 20) { this.myapi.setView({ 'zoom': this.zoomValue += 20 }) }\r\n\t\t\t}\r\n\t\t},\r\n\t\tzoomFitWidth() {\r\n\t\t\tif (this.myapi) {\r\n\t\t\t\tthis.zoomValue = 140\r\n\t\t\t\tthis.myapi.setView({ 'zoom': -1 })\r\n\t\t\t}\r\n\t\t},\r\n\t\tdownloadPdf() {\r\n\t\t\tif (this.myapi) {\r\n\t\t\t\tthis.myapi.download()\r\n\t\t\t}\r\n\t\t\treturn false\r\n\t\t},\r\n\t\tselectTextPdf() {\r\n\t\t\tif (this.myapi) {\r\n\t\t\t\tthis.myapi.setMode(this.myapi.Mode.SelectText)\r\n\t\t\t}\r\n\t\t\treturn false\r\n\t\t},\r\n\t\thighlightPdf() {\r\n\t\t\tif (this.myapi) {\r\n\t\t\t\tthis.myapi.setMode(this.myapi.Mode.InsertHighlightAnnotation)\r\n\t\t\t}\r\n\t\t\treturn false\r\n\t\t},\r\n\t\tfreeTextPdf() {\r\n\t\t\tif (this.myapi) {\r\n\t\t\t\tthis.myapi.setMode(this.myapi.Mode.InsertTextShape)\r\n\t\t\t}\r\n\t\t\treturn false\r\n\t\t},\r\n\t\tstrikeOutPdf() {\r\n\t\t\tif (this.myapi) {\r\n\t\t\t\tthis.myapi.setMode(this.myapi.Mode.InsertStrikeoutAnnotation)\r\n\t\t\t}\r\n\t\t\treturn false\r\n\t\t},\r\n\t\tfreeDrawPdf() {\r\n\t\t\tif (this.myapi) {\r\n\t\t\t\tthis.myapi.setMode(this.myapi.Mode.InsertInkShape)\r\n\t\t\t}\r\n\t\t\treturn false\r\n\t\t},\r\n\t\tstickyNotePdf() {\r\n\t\t\tif (this.myapi) {\r\n\t\t\t\tthis.myapi.setMode(this.myapi.Mode.InsertTextAnnotation)\r\n\t\t\t}\r\n\t\t\treturn false\r\n\t\t}\r\n\t}\r\n}\r\n</script>\r\n<style scoped>\r\nbody{\r\n background: #F1F3FA;\r\n}\r\n#content-wrapper {\r\n margin-left: 65px;\r\n}\r\n\r\n.el-card{\r\n border: 1px solid #d4d5d6;\r\n}\r\n.el-card.is-always-shadow, .el-card.is-hover-shadow:focus, .el-card.is-hover-shadow:hover {\r\n -webkit-box-shadow: 0 2px 12px 0 #F1F3FA;\r\n box-shadow: 0 2px 12px 0 #F1F3FA;\r\n}\r\n\r\n.el-card__header {\r\n padding: 12px 12px;\r\n}\r\n\r\n.el-card__body {\r\n padding: 10px;\r\n}\r\n\r\n.el-textarea__inner {\r\n padding: 5px 10px;\r\n}\r\n\r\n.filter-btn{\r\n text-align: center;\r\n box-shadow: none;\r\n display: inline-block;\r\n padding: 0px 10px;\r\n vertical-align: middle;\r\n touch-action: manipulation;\r\n cursor: pointer;\r\n color: #636363;\r\n}\r\n\r\n.filter-divider{\r\n float: left;\r\n border-right: solid 1px #cccccc;\r\n height: 50px;\r\n}\r\n\r\n#full_width_container.full-width {\r\n position: absolute;\r\n top: 0;\r\n bottom: 2px;\r\n left: 220px;\r\n right: 0;\r\n min-width: 460px;\r\n}\r\n\r\n#full_width_container{\r\n position: absolute;\r\n top: 0;\r\n bottom: 2px;\r\n left: 65px;\r\n right: 0;\r\n min-width: 460px;\r\n}\r\n\r\n#left_side {\r\n position: absolute;\r\n top: 0;\r\n bottom: 0;\r\n overflow-y: hidden;\r\n left: 0;\r\n right: 0%;\r\n min-width: 782px;\r\n}\r\n#right_side {\r\n width: 30%;\r\n position: absolute;\r\n top: 0;\r\n bottom: 0;\r\n right: 0;\r\n font-size: 14px;\r\n font-size: .875rem;\r\n}\r\n\r\n.full_height {\r\n height: 100%;\r\n overflow-x: auto;\r\n}\r\n\r\n#left_side_inner, #submissions_container, #iframe_holder{\r\n height: 100%;\r\n width: 100%;\r\n border: 0 none;\r\n}\r\niframe{\r\n width: 100%;\r\n border: 0px;\r\n overflow: auto;\r\n height: 99%;\r\n min-height: 0px;\r\n}\r\n\r\n#width_resizer {\r\n position: absolute;\r\n top: 0;\r\n bottom: 0;\r\n left: 0;\r\n background: #bbb url(https://du11hjcvx0uqb.cloudfront.net/dist/images/splitpane_handle-ew-1b67cccf0f.gif) no-repeat scroll 50% 50%;\r\n cursor: pointer;\r\n width: 7px;\r\n border-right: 1px solid #838383;\r\n z-index: 2;\r\n}\r\n.right_side_content {\r\n position: absolute;\r\n top: 0;\r\n bottom: 0;\r\n left: 8px;\r\n right: 0;\r\n}\r\n#right_side #rightside_inner {\r\n overflow-y: auto;\r\n position: relative;\r\n}\r\n\r\n.ViewerControls--with-annotations {\r\n height: 49px;\r\n}\r\n.ViewerControls {\r\n background-color: #636363;\r\n color: #fff;\r\n font-size: 14px;\r\n line-height: 24px;\r\n /* overflow-x: auto; */\r\n /* position: absolute;\r\n width: 100%; */\r\n}\r\n.ViewerControls-primary {\r\n -ms-touch-action: none;\r\n touch-action: none;\r\n pointer-events: all;\r\n display: -webkit-box;\r\n display: -ms-flexbox;\r\n display: flex;\r\n}\r\n.ViewerControls--download, .ViewerControls--title {\r\n -webkit-box-flex: 1;\r\n -ms-flex: 1;\r\n flex: 1;\r\n display: -webkit-box;\r\n display: -ms-flexbox;\r\n display: flex;\r\n -webkit-box-align: center;\r\n -ms-flex-align: center;\r\n align-items: center;\r\n white-space: nowrap;\r\n}\r\n\r\n.download-button--button {\r\n background-color: transparent;\r\n font-size: 16px;\r\n border: none;\r\n height: 48px;\r\n width: 48px;\r\n color: white;\r\n cursor: pointer;\r\n}\r\n/* .download-button--button:hover {\r\n background-color: #777777;\r\n} */\r\n\r\n.ViewerControls--page-controls {\r\n display: -webkit-box;\r\n display: -ms-flexbox;\r\n display: flex;\r\n -webkit-box-align: center;\r\n -ms-flex-align: center;\r\n align-items: center;\r\n white-space: nowrap;\r\n}\r\n\r\n.DocumentControls {\r\n display: -webkit-box;\r\n display: -ms-flexbox;\r\n display: flex;\r\n -webkit-box-align: center;\r\n -ms-flex-align: center;\r\n align-items: center;\r\n}\r\n\r\n.AnnotationControlButton {\r\n width: 48px;\r\n padding: 0;\r\n border: 0 none;\r\n color: #fff;\r\n background-color: #636363;\r\n margin-top: 0;\r\n margin-bottom: 0;\r\n cursor: pointer;\r\n -webkit-box-sizing: content-box;\r\n box-sizing: content-box;\r\n -webkit-touch-callout: none;\r\n user-select: none;\r\n -moz-user-select: none;\r\n -webkit-user-select: none;\r\n -ms-user-select: none;\r\n -webkit-tap-highlight-color: rgba(0,0,0,0);\r\n}\r\n.AnnotationControlButton-inner, .AnnotationControlButton-outer {\r\n -webkit-box-sizing: content-box;\r\n box-sizing: content-box;\r\n display: -webkit-box;\r\n display: -ms-flexbox;\r\n display: flex;\r\n}\r\n\r\n.AnnotationControlButton-inner {\r\n margin: 0;\r\n height: 44px;\r\n width: 48px;\r\n -webkit-box-pack: center;\r\n -ms-flex-pack: center;\r\n justify-content: center;\r\n -webkit-box-align: center;\r\n -ms-flex-align: center;\r\n align-items: center;\r\n}\r\n\r\n.AnnotationControlButton-inner {\r\n margin: 0;\r\n height: 44px;\r\n width: 48px;\r\n -webkit-box-pack: center;\r\n -ms-flex-pack: center;\r\n justify-content: center;\r\n -webkit-box-align: center;\r\n -ms-flex-align: center;\r\n align-items: center;\r\n}\r\n.AnnotationControlButton-outer {\r\n width: 44px;\r\n margin: 1px;\r\n border: 1px solid #636363;\r\n}\r\n\r\n.ViewerControls--current-page {\r\n -moz-appearance: textfield;\r\n margin-top: 10px;\r\n border-radius: 3px;\r\n border: 0;\r\n height: 28px;\r\n width: 36px;\r\n background-color: #fff;\r\n color: #636363;\r\n font-size: 14px;\r\n text-align: center;\r\n vertical-align: top;\r\n}\r\n.next-prev{\r\n text-align: center;\r\n -webkit-box-shadow: none;\r\n box-shadow: none;\r\n display: inline-block;\r\n padding: 0px 10px;\r\n vertical-align: middle;\r\n -ms-touch-action: manipulation;\r\n touch-action: manipulation;\r\n cursor: pointer;\r\n border: 0 none;\r\n background: none;\r\n}\r\n/* .AnnotationControlButton.selected .AnnotationControlButton-outer {\r\n border-color: #fff;\r\n border: 1px solid #fff;\r\n color: #636363;\r\n}\r\n.AnnotationControlButton.selected {\r\n outline: none;\r\n background-color: #fff;\r\n}\r\n\r\n.AnnotationControlButton:active .AnnotationControlButton-outer {\r\n -webkit-box-shadow: inset 0 0 2px #000;\r\n box-shadow: inset 0 0 2px #000;\r\n}\r\n.AnnotationControlButton:hover:enabled .AnnotationControlButton-outer {\r\n border-color: #777777;\r\n}\r\n.AnnotationControlButton:hover:enabled {\r\n background-color: #777777;\r\n} */\r\n\r\n</style>\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./EText.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./EText.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./EText.vue?vue&type=template&id=4c659264&scoped=true&\"\nimport script from \"./EText.vue?vue&type=script&lang=js&\"\nexport * from \"./EText.vue?vue&type=script&lang=js&\"\nimport style0 from \"./EText.vue?vue&type=style&index=0&id=4c659264&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"4c659264\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{class:_vm.fullWidth,attrs:{\"id\":\"full_width_container\"}},[_c('div',{staticClass:\"full_height\",attrs:{\"id\":\"left_side\"}},[_c('div',{attrs:{\"id\":\"left_side_inner\"}},[_c('div',{attrs:{\"id\":\"submissions_container\"}},[_c('nav',{staticClass:\"ViewerControls ViewerControls--with-annotations\"},[_c('div',{staticClass:\"ViewerControls-primary\"},[_c('div',{staticClass:\"ViewerControls--title\"}),_c('div',{staticClass:\"ViewerControls--page-controls\",staticStyle:{\"margin-top\":\"10px\"}},[_c('span',{staticClass:\"ViewerControls--page-number\",staticStyle:{\"display\":\"flex\",\"align-items\":\"center\"}},[_vm._v(\"\\n Page\\n \"),_c('div',{staticStyle:{\"padding-left\":\"10px\",\"padding-right\":\"10px\"}},[_c('el-input-number',{attrs:{\"min\":1,\"max\":_vm.totalPageNumber,\"size\":\"small\",\"label\":\"Page\"},on:{\"change\":_vm.changePage},model:{value:(_vm.pageNum),callback:function ($$v) {_vm.pageNum=$$v},expression:\"pageNum\"}})],1),_vm._v(\"\\n of \"+_vm._s(_vm.totalPageNumber)+\"\\n \")]),_c('svg',{staticStyle:{\"margin-left\":\"12px\",\"margin-right\":\"0px\",\"width\":\"2px\",\"height\":\"26px\",\"color\":\"rgb(171, 179, 186)\"},attrs:{\"viewBox\":\"0 0 2 26\"}},[_c('line',{attrs:{\"stroke\":\"currentColor\",\"stroke-dasharray\":\"2, 1\",\"stroke-width\":\"1\",\"x1\":\"1\",\"y1\":\"0\",\"x2\":\"1\",\"y2\":\"26\"}})])]),_c('nav',{staticClass:\"DocumentControls\",staticStyle:{\"margin-top\":\"10px\"}},[_c('div',{staticStyle:{\"display\":\"inline-flex\",\"align-items\":\"center\",\"user-select\":\"none\"}},[_c('button',{staticClass:\"AnnotationControlButton\",attrs:{\"aria-label\":\"Zoom Out\",\"title\":\"Zoom Out\",\"aria-disabled\":\"false\"},on:{\"click\":_vm.zoomOut}},[_c('i',{staticClass:\"fas fa-minus\",staticStyle:{\"font-size\":\"20px\"}})]),_c('span',{staticStyle:{\"text-transform\":\"uppercase\",\"font-size\":\"0.75rem\",\"color\":\"rgb(238, 238, 239)\",\"margin-left\":\"4px\",\"margin-right\":\"4px\"},attrs:{\"aria-hidden\":\"true\"}},[_vm._v(\"\\n Zoom\\n \")]),_c('button',{staticClass:\"AnnotationControlButton\",attrs:{\"aria-label\":\"Zoom In\",\"title\":\"Zoom In\",\"aria-disabled\":\"false\"},on:{\"click\":_vm.zoomIn}},[_c('i',{staticClass:\"fas fa-plus\",staticStyle:{\"font-size\":\"20px\"}})])]),_c('svg',{staticStyle:{\"margin-left\":\"2px\",\"margin-right\":\"4px\",\"width\":\"2px\",\"height\":\"26px\",\"color\":\"rgb(171, 179, 186)\"},attrs:{\"viewBox\":\"0 0 2 26\"}},[_c('line',{attrs:{\"stroke\":\"currentColor\",\"stroke-dasharray\":\"2, 1\",\"stroke-width\":\"1\",\"x1\":\"1\",\"y1\":\"0\",\"x2\":\"1\",\"y2\":\"26\"}})]),_c('div',{staticClass:\"ViewerControls--page-controls\"},[_c('button',{staticClass:\"AnnotationControlButton full-screen-button\",attrs:{\"aria-label\":\"Enter Full Screen\",\"title\":\"Zoom Fit Width\"},on:{\"click\":_vm.zoomFitWidth}},[_c('i',{staticClass:\"fas fa-expand\",staticStyle:{\"font-size\":\"20px\"}})])])])])]),_vm._m(0)])])])])}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticStyle:{\"display\":\"block\",\"height\":\"calc(100% - 45px)\"},attrs:{\"id\":\"iframe_holder\"}},[_c('div',{staticStyle:{\"resize\":\"vertical\",\"height\":\"100%\"},attrs:{\"id\":\"pdfDocument\"}})])}]\n\nexport { render, staticRenderFns }","<template>\r\n <div id=\"full_width_container\" :class=\"fullWidth\">\r\n <div id=\"left_side\" class=\"full_height\">\r\n <div id=\"left_side_inner\">\r\n <div id=\"submissions_container\">\r\n <nav class=\"ViewerControls ViewerControls--with-annotations\">\r\n <div class=\"ViewerControls-primary\">\r\n <div class=\"ViewerControls--title\" />\r\n <div class=\"ViewerControls--page-controls\" style=\"margin-top:10px;\">\r\n <span class=\"ViewerControls--page-number\" style=\"display: flex; align-items: center;\">\r\n Page\r\n <div style=\"padding-left: 10px; padding-right: 10px;\">\r\n <el-input-number v-model=\"pageNum\" :min=\"1\" :max=\"totalPageNumber\" size=\"small\" label=\"Page\" @change=\"changePage\" />\r\n </div>\r\n of {{ totalPageNumber }}\r\n </span>\r\n <svg viewBox=\"0 0 2 26\" style=\"margin-left: 12px; margin-right: 0px; width: 2px; height: 26px; color: rgb(171, 179, 186);\">\r\n <line stroke=\"currentColor\" stroke-dasharray=\"2, 1\" stroke-width=\"1\" x1=\"1\" y1=\"0\" x2=\"1\" y2=\"26\" />\r\n </svg>\r\n </div>\r\n <nav class=\"DocumentControls\" style=\"margin-top:10px;\">\r\n <div style=\"display: inline-flex; align-items: center; user-select: none;\">\r\n <button class=\"AnnotationControlButton\" aria-label=\"Zoom Out\" title=\"Zoom Out\" aria-disabled=\"false\" @click=\"zoomOut\">\r\n <i style=\"font-size: 20px;\" class=\"fas fa-minus\" />\r\n </button>\r\n <span aria-hidden=\"true\" style=\"text-transform: uppercase; font-size: 0.75rem; color: rgb(238, 238, 239); margin-left: 4px; margin-right: 4px;\">\r\n Zoom\r\n </span>\r\n <button class=\"AnnotationControlButton\" aria-label=\"Zoom In\" title=\"Zoom In\" aria-disabled=\"false\" @click=\"zoomIn\">\r\n <i style=\"font-size: 20px;\" class=\"fas fa-plus\" />\r\n </button>\r\n </div>\r\n <svg viewBox=\"0 0 2 26\" style=\"margin-left: 2px; margin-right: 4px; width: 2px; height: 26px; color: rgb(171, 179, 186);\">\r\n <line stroke=\"currentColor\" stroke-dasharray=\"2, 1\" stroke-width=\"1\" x1=\"1\" y1=\"0\" x2=\"1\" y2=\"26\" />\r\n </svg>\r\n <div class=\"ViewerControls--page-controls\">\r\n <button aria-label=\"Enter Full Screen\" class=\"AnnotationControlButton full-screen-button\" title=\"Zoom Fit Width\" @click=\"zoomFitWidth\">\r\n <i style=\"font-size: 20px;\" class=\"fas fa-expand\" />\r\n </button>\r\n </div>\r\n </nav>\r\n </div>\r\n </nav>\r\n\r\n <div id=\"iframe_holder\" style=\"display: block; height: calc(100% - 45px);\">\r\n <div id=\"pdfDocument\" style=\"resize: vertical; height: 100%;\" />\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</template>\r\n\r\n<script>\r\nimport * as pdfService from '@/services/pdf.service'\r\n// Handles UI and logics for the Manual page.\r\nexport default {\r\n\tdata() {\r\n\t\treturn {\r\n\t\t\tmyapi: null,\r\n\t\t\tmanualName: this.$route.params.name,\r\n\t\t\tpageNum: 1,\r\n\t\t\ttotalPageNumber: null,\r\n\t\t\tzoomValue: 140\r\n\t\t}\r\n\t},\r\n\tcomputed: {\r\n\t\tfullWidth() {\r\n\t\t\tconst mainNav = document.querySelector('#main-nav')\r\n\t\t\tif (mainNav && !mainNav.classList.contains('full-width')) {\r\n\t\t\t\treturn ''\r\n\t\t\t} else { return 'full-width' }\r\n\t\t}\r\n\t},\r\n\twatch: {\r\n\t},\r\n\tmounted() {\r\n\t\tthis.displayDocument()\r\n\t},\r\n\tmethods: {\r\n\t\t// @vuese\r\n\t\t// Display the manual.\r\n\t\tasync displayDocument() {\r\n\t\t\tlet docId = null\r\n\t\t\tif (this.manualName == 'instructor') { docId = 1446280 } else if (this.manualName == 'student') { docId = 1446281 }\r\n\t\t\tif (docId) {\r\n\t\t\t\tawait pdfService.getTextbook(docId)\r\n\t\t\t\t\t.then(pdf => {\r\n\t\t\t\t\t\t// Display the pdf\r\n\t\t\t\t\t\tconst pdfDocument = document.querySelector('#pdfDocument')\r\n\t\t\t\t\t\tpdfDocument.innerHTML = pdf\r\n\t\t\t\t\t\t// Collapse the left side bar menu\r\n\t\t\t\t\t\t// Setup the doc after being loaded\r\n\t\t\t\t\t\tconst that = this\r\n\t\t\t\t\t\tdocument.getElementById('PdfWebControl').onload = function() {\r\n\t\t\t\t\t\t\tthat.PdfAttachListeners()\r\n\t\t\t\t\t\t\tsetTimeout(function() {\r\n\t\t\t\t\t\t\t\tthat.totalPageNumber = that.myapi.getPageCount()\r\n\t\t\t\t\t\t\t}, 500)\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}).catch((error) => {\r\n\t\t\t\t\t\tconsole.log(error)\r\n\t\t\t\t\t})\r\n\t\t\t}\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Configures Rad PDf for displaying the document.\r\n\t\tPdfAttachListeners() {\r\n\t\t\tconst id = 'PdfWebControl'\r\n\t\t\t// eslint-disable-next-line no-undef\r\n\t\t\tthis.myapi = new PdfWebControlApi(id)\r\n\t\t\tthis.myapi.addEventListener('modeChanged', function(evt) {\r\n\t\t\t\tevt.byLine = true\r\n\t\t\t})\r\n\t\t\tconst that = this\r\n\t\t\tthis.myapi.addEventListener('viewChanged', function(evt) {\r\n\t\t\t\tthat.pageNum = that.myapi.getPageViewed().getPageNumber()\r\n\t\t\t})\r\n\r\n\t\t\tthis.myapi.addEventListener('objectAdded', function(evt) {\r\n\t\t\t\tif (evt.obj.getType() == 154) { // Highlight annotation\r\n\t\t\t\t\tconst props = evt.obj.getProperties()\r\n\t\t\t\t\tconst popup = evt.obj.getPopup()\r\n\r\n\t\t\t\t\tevt.obj.setProperties({\r\n\t\t\t\t\t\t'customData': evt.textSelected\r\n\t\t\t\t\t})\r\n\r\n\t\t\t\t\tpopup.setProperties(\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tauthor: 'RAD PDF',\r\n\t\t\t\t\t\t\tsubject: 'In-text Comment',\r\n\t\t\t\t\t\t\ttop: props['top'] - 60,\r\n\t\t\t\t\t\t\tleft: props['left'] - 5,\r\n\t\t\t\t\t\t\theight: 60\r\n\t\t\t\t\t\t})\r\n\r\n\t\t\t\t\tthat.myapi.setMode(that.myapi.Mode.None)\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (evt.obj.getType() == 100) {\r\n\t\t\t\t\tthat.myapi.setMode(that.myapi.Mode.None)\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (evt.obj.getType() == 101) {\r\n\t\t\t\t\tthat.myapi.setMode(that.myapi.Mode.None)\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (evt.obj.getType() == that.myapi.ObjectType.StrikeoutAnnotation) {\r\n\t\t\t\t\tthat.myapi.setMode(that.myapi.Mode.None)\r\n\t\t\t\t}\r\n\t\t\t\tif (evt.obj.getType() == that.myapi.ObjectType.TextAnnotation) {\r\n\t\t\t\t\tthat.myapi.setMode(that.myapi.Mode.None)\r\n\t\t\t\t}\r\n\t\t\t})\r\n\t\t},\r\n\t\tchangePage() {\r\n\t\t\tthis.myapi.setView({ 'page': this.pageNum })\r\n\t\t},\r\n\t\tzoomOut() {\r\n\t\t\tif (this.myapi) {\r\n\t\t\t\tif (this.zoomValue > 40) { this.myapi.setView({ 'zoom': this.zoomValue -= 20 }) }\r\n\t\t\t}\r\n\t\t},\r\n\t\tzoomIn() {\r\n\t\t\tif (this.myapi) {\r\n\t\t\t\tif (this.zoomValue < 200 && this.zoomValue > 20) { this.myapi.setView({ 'zoom': this.zoomValue += 20 }) }\r\n\t\t\t}\r\n\t\t},\r\n\t\tzoomFitWidth() {\r\n\t\t\tif (this.myapi) {\r\n\t\t\t\tthis.zoomValue = 140\r\n\t\t\t\tthis.myapi.setView({ 'zoom': -1 })\r\n\t\t\t}\r\n\t\t},\r\n\t\tdownloadPdf() {\r\n\t\t\tif (this.myapi) {\r\n\t\t\t\tthis.myapi.download()\r\n\t\t\t}\r\n\t\t\treturn false\r\n\t\t},\r\n\t\tselectTextPdf() {\r\n\t\t\tif (this.myapi) {\r\n\t\t\t\tthis.myapi.setMode(this.myapi.Mode.SelectText)\r\n\t\t\t}\r\n\t\t\treturn false\r\n\t\t},\r\n\t\thighlightPdf() {\r\n\t\t\tif (this.myapi) {\r\n\t\t\t\tthis.myapi.setMode(this.myapi.Mode.InsertHighlightAnnotation)\r\n\t\t\t}\r\n\t\t\treturn false\r\n\t\t},\r\n\t\tfreeTextPdf() {\r\n\t\t\tif (this.myapi) {\r\n\t\t\t\tthis.myapi.setMode(this.myapi.Mode.InsertTextShape)\r\n\t\t\t}\r\n\t\t\treturn false\r\n\t\t},\r\n\t\tstrikeOutPdf() {\r\n\t\t\tif (this.myapi) {\r\n\t\t\t\tthis.myapi.setMode(this.myapi.Mode.InsertStrikeoutAnnotation)\r\n\t\t\t}\r\n\t\t\treturn false\r\n\t\t},\r\n\t\tfreeDrawPdf() {\r\n\t\t\tif (this.myapi) {\r\n\t\t\t\tthis.myapi.setMode(this.myapi.Mode.InsertInkShape)\r\n\t\t\t}\r\n\t\t\treturn false\r\n\t\t},\r\n\t\tstickyNotePdf() {\r\n\t\t\tif (this.myapi) {\r\n\t\t\t\tthis.myapi.setMode(this.myapi.Mode.InsertTextAnnotation)\r\n\t\t\t}\r\n\t\t\treturn false\r\n\t\t}\r\n\t}\r\n}\r\n</script>\r\n<style scoped>\r\nbody{\r\n background: #F1F3FA;\r\n}\r\n#content-wrapper {\r\n margin-left: 65px;\r\n}\r\n\r\n.el-card{\r\n border: 1px solid #d4d5d6;\r\n}\r\n.el-card.is-always-shadow, .el-card.is-hover-shadow:focus, .el-card.is-hover-shadow:hover {\r\n -webkit-box-shadow: 0 2px 12px 0 #F1F3FA;\r\n box-shadow: 0 2px 12px 0 #F1F3FA;\r\n}\r\n\r\n.el-card__header {\r\n padding: 12px 12px;\r\n}\r\n\r\n.el-card__body {\r\n padding: 10px;\r\n}\r\n\r\n.el-textarea__inner {\r\n padding: 5px 10px;\r\n}\r\n\r\n.filter-btn{\r\n text-align: center;\r\n box-shadow: none;\r\n display: inline-block;\r\n padding: 0px 10px;\r\n vertical-align: middle;\r\n touch-action: manipulation;\r\n cursor: pointer;\r\n color: #636363;\r\n}\r\n\r\n.filter-divider{\r\n float: left;\r\n border-right: solid 1px #cccccc;\r\n height: 50px;\r\n}\r\n\r\n#full_width_container.full-width{\r\n position: absolute;\r\n top: 0;\r\n bottom: 2px;\r\n left: 220px;\r\n right: 0;\r\n min-width: 460px;\r\n}\r\n\r\n#full_width_container{\r\n position: absolute;\r\n top: 0;\r\n bottom: 2px;\r\n left: 65px;\r\n right: 0;\r\n min-width: 460px;\r\n}\r\n\r\n#left_side {\r\n position: absolute;\r\n top: 0;\r\n bottom: 0;\r\n overflow-y: hidden;\r\n left: 0;\r\n right: 0%;\r\n min-width: 782px;\r\n}\r\n#right_side {\r\n width: 30%;\r\n position: absolute;\r\n top: 0;\r\n bottom: 0;\r\n right: 0;\r\n font-size: 14px;\r\n font-size: .875rem;\r\n}\r\n\r\n.full_height {\r\n height: 100%;\r\n overflow-x: auto;\r\n}\r\n\r\n#left_side_inner, #submissions_container, #iframe_holder{\r\n height: 100%;\r\n width: 100%;\r\n border: 0 none;\r\n}\r\niframe{\r\n width: 100%;\r\n border: 0px;\r\n overflow: auto;\r\n height: 99%;\r\n min-height: 0px;\r\n}\r\n\r\n#width_resizer {\r\n position: absolute;\r\n top: 0;\r\n bottom: 0;\r\n left: 0;\r\n background: #bbb url(https://du11hjcvx0uqb.cloudfront.net/dist/images/splitpane_handle-ew-1b67cccf0f.gif) no-repeat scroll 50% 50%;\r\n cursor: pointer;\r\n width: 7px;\r\n border-right: 1px solid #838383;\r\n z-index: 2;\r\n}\r\n.right_side_content {\r\n position: absolute;\r\n top: 0;\r\n bottom: 0;\r\n left: 8px;\r\n right: 0;\r\n}\r\n#right_side #rightside_inner {\r\n overflow-y: auto;\r\n position: relative;\r\n}\r\n\r\n.ViewerControls--with-annotations {\r\n height: 49px;\r\n}\r\n.ViewerControls {\r\n background-color: #636363;\r\n color: #fff;\r\n font-size: 14px;\r\n line-height: 24px;\r\n /* overflow-x: auto; */\r\n /* position: absolute;\r\n width: 100%; */\r\n}\r\n.ViewerControls-primary {\r\n -ms-touch-action: none;\r\n touch-action: none;\r\n pointer-events: all;\r\n display: -webkit-box;\r\n display: -ms-flexbox;\r\n display: flex;\r\n}\r\n.ViewerControls--download, .ViewerControls--title {\r\n -webkit-box-flex: 1;\r\n -ms-flex: 1;\r\n flex: 1;\r\n display: -webkit-box;\r\n display: -ms-flexbox;\r\n display: flex;\r\n -webkit-box-align: center;\r\n -ms-flex-align: center;\r\n align-items: center;\r\n white-space: nowrap;\r\n}\r\n\r\n.download-button--button {\r\n background-color: transparent;\r\n font-size: 16px;\r\n border: none;\r\n height: 48px;\r\n width: 48px;\r\n color: white;\r\n cursor: pointer;\r\n}\r\n/* .download-button--button:hover {\r\n background-color: #777777;\r\n} */\r\n\r\n.ViewerControls--page-controls {\r\n display: -webkit-box;\r\n display: -ms-flexbox;\r\n display: flex;\r\n -webkit-box-align: center;\r\n -ms-flex-align: center;\r\n align-items: center;\r\n white-space: nowrap;\r\n}\r\n\r\n.DocumentControls {\r\n display: -webkit-box;\r\n display: -ms-flexbox;\r\n display: flex;\r\n -webkit-box-align: center;\r\n -ms-flex-align: center;\r\n align-items: center;\r\n}\r\n\r\n.AnnotationControlButton {\r\n width: 48px;\r\n padding: 0;\r\n border: 0 none;\r\n color: #fff;\r\n background-color: #636363;\r\n margin-top: 0;\r\n margin-bottom: 0;\r\n cursor: pointer;\r\n -webkit-box-sizing: content-box;\r\n box-sizing: content-box;\r\n -webkit-touch-callout: none;\r\n user-select: none;\r\n -moz-user-select: none;\r\n -webkit-user-select: none;\r\n -ms-user-select: none;\r\n -webkit-tap-highlight-color: rgba(0,0,0,0);\r\n}\r\n.AnnotationControlButton-inner, .AnnotationControlButton-outer {\r\n -webkit-box-sizing: content-box;\r\n box-sizing: content-box;\r\n display: -webkit-box;\r\n display: -ms-flexbox;\r\n display: flex;\r\n}\r\n\r\n.AnnotationControlButton-inner {\r\n margin: 0;\r\n height: 44px;\r\n width: 48px;\r\n -webkit-box-pack: center;\r\n -ms-flex-pack: center;\r\n justify-content: center;\r\n -webkit-box-align: center;\r\n -ms-flex-align: center;\r\n align-items: center;\r\n}\r\n\r\n.AnnotationControlButton-inner {\r\n margin: 0;\r\n height: 44px;\r\n width: 48px;\r\n -webkit-box-pack: center;\r\n -ms-flex-pack: center;\r\n justify-content: center;\r\n -webkit-box-align: center;\r\n -ms-flex-align: center;\r\n align-items: center;\r\n}\r\n.AnnotationControlButton-outer {\r\n width: 44px;\r\n margin: 1px;\r\n border: 1px solid #636363;\r\n}\r\n\r\n.ViewerControls--current-page {\r\n -moz-appearance: textfield;\r\n margin-top: 10px;\r\n border-radius: 3px;\r\n border: 0;\r\n height: 28px;\r\n width: 36px;\r\n background-color: #fff;\r\n color: #636363;\r\n font-size: 14px;\r\n text-align: center;\r\n vertical-align: top;\r\n}\r\n.next-prev{\r\n text-align: center;\r\n -webkit-box-shadow: none;\r\n box-shadow: none;\r\n display: inline-block;\r\n padding: 0px 10px;\r\n vertical-align: middle;\r\n -ms-touch-action: manipulation;\r\n touch-action: manipulation;\r\n cursor: pointer;\r\n border: 0 none;\r\n background: none;\r\n}\r\n\r\n</style>\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Manual.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Manual.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Manual.vue?vue&type=template&id=2d4a72db&scoped=true&\"\nimport script from \"./Manual.vue?vue&type=script&lang=js&\"\nexport * from \"./Manual.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Manual.vue?vue&type=style&index=0&id=2d4a72db&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"2d4a72db\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('div',{class:_vm.fullWidth,attrs:{\"id\":\"full_width_container\"}},[_c('rs-panes',{attrs:{\"split-to\":\"columns\",\"allow-resize\":true,\"units\":\"percents\",\"size\":75,\"min-size\":0,\"resizer-thickness\":6}},[_c('div',{staticStyle:{\"height\":\"100%\",\"min-width\":\"650px\"},attrs:{\"slot\":\"firstPane\"},slot:\"firstPane\"},[_c('div',{staticStyle:{\"height\":\"50px\",\"border-bottom\":\"#cccccc solid 1px\"},attrs:{\"id\":\"filter\"}},[_c('div',[_c('div',{staticClass:\"filter-divider\",staticStyle:{\"width\":\"18%\"}},[_c('el-tooltip',{staticClass:\"item\",attrs:{\"effect\":\"light\",\"content\":\"Select Student\",\"placement\":\"bottom\"}},[_c('el-select',{staticStyle:{\"margin-top\":\"5px\",\"width\":\"98%\"},attrs:{\"id\":\"students-selection\",\"value-key\":\"UserName\",\"filterable\":\"\",\"placeholder\":\"Select Student\"},on:{\"change\":function($event){return _vm.onStudentChange()}},model:{value:(_vm.currentStudent),callback:function ($$v) {_vm.currentStudent=$$v},expression:\"currentStudent\"}},_vm._l((_vm.students),function(item){return _c('el-option',{key:item.UserName,attrs:{\"label\":item.FullName,\"value\":item.UserName}})}),1)],1)],1)]),_c('div',{staticClass:\"filter-divider\",staticStyle:{\"width\":\"20%\"}},[_c('el-tooltip',{staticClass:\"item\",attrs:{\"effect\":\"light\",\"content\":\"Select doc 1\",\"placement\":\"bottom\"}},[_c('el-select',{staticStyle:{\"margin-left\":\"2%\",\"margin-top\":\"5px\",\"width\":\"96%\"},attrs:{\"id\":\"assignments-selection\",\"value-key\":\"Id\",\"filterable\":\"\",\"placeholder\":\"Select doc 1\",\"no-match-text\":\"No Matching Data\",\"no-data-text\":\"No data\",\"loading-text\":\"Loading\"},on:{\"change\":function($event){return _vm.onBaseTextChange()}},model:{value:(_vm.baseProject),callback:function ($$v) {_vm.baseProject=$$v},expression:\"baseProject\"}},_vm._l((_vm.baseProjects),function(item){return _c('el-option',{key:item.Id,attrs:{\"label\":item.AssignmentName,\"value\":item}})}),1)],1)],1),_c('div',{staticClass:\"filter-divider\",staticStyle:{\"width\":\"20%\"}},[_c('el-tooltip',{staticClass:\"item\",attrs:{\"effect\":\"light\",\"content\":\"Select doc 2\",\"placement\":\"bottom\"}},[_c('el-select',{staticStyle:{\"margin-left\":\"2%\",\"margin-top\":\"5px\",\"width\":\"96%\"},attrs:{\"id\":\"assignments-selection\",\"value-key\":\"Id\",\"filterable\":\"\",\"placeholder\":\"Select doc 2\",\"no-match-text\":\"No Matching Data\",\"no-data-text\":\"No data\",\"loading-text\":\"Loading\"},on:{\"change\":function($event){return _vm.onNewTextChange()}},model:{value:(_vm.newProject),callback:function ($$v) {_vm.newProject=$$v},expression:\"newProject\"}},_vm._l((_vm.newProjects),function(item){return _c('el-option',{key:item.Id,attrs:{\"label\":item.AssignmentName,\"value\":item}})}),1)],1)],1),(_vm.text1 != '' && _vm.text2 != '' )?_c('div',[_c('el-radio-group',{staticStyle:{\"margin-left\":\"10px\",\"margin-top\":\"5px\"},attrs:{\"size\":\"medium\"},on:{\"change\":function($event){return _vm.displayDocument()}},model:{value:(_vm.viewType),callback:function ($$v) {_vm.viewType=$$v},expression:\"viewType\"}},[_c('el-tooltip',{staticClass:\"item\",attrs:{\"effect\":\"light\",\"content\":\"View Differences\",\"placement\":\"bottom\"}},[_c('el-radio-button',{attrs:{\"label\":\"diff\"}},[_c('i',{staticClass:\"fas fa-retweet\"})])],1),_c('el-tooltip',{staticClass:\"item\",attrs:{\"effect\":\"light\",\"content\":\"Annotate Paper\",\"placement\":\"bottom\"}},[_c('el-radio-button',{attrs:{\"label\":\"annotate\"}},[_c('i',{staticClass:\"far fa-edit\"})])],1)],1),(_vm.viewType == 'diff')?_c('el-radio-group',{staticStyle:{\"margin-left\":\"10px\",\"margin-top\":\"5px\"},attrs:{\"size\":\"medium\"},on:{\"change\":function($event){return _vm.onDiffTypeChange()}},model:{value:(_vm.diffType),callback:function ($$v) {_vm.diffType=$$v},expression:\"diffType\"}},[_c('el-tooltip',{staticClass:\"item\",attrs:{\"effect\":\"light\",\"content\":\"Semantic\",\"placement\":\"bottom\"}},[_c('el-radio-button',{attrs:{\"label\":\"semantic\"}},[_c('i',{staticClass:\"fab fa-stripe-s\"})])],1),_c('el-tooltip',{staticClass:\"item\",attrs:{\"effect\":\"light\",\"content\":\"Line-by-line\",\"placement\":\"bottom\"}},[_c('el-radio-button',{attrs:{\"label\":\"line\"}},[_c('i',{staticClass:\"fas fa-align-justify\"})])],1),_c('el-tooltip',{staticClass:\"item\",attrs:{\"effect\":\"light\",\"content\":\"Side-by-side Texts\",\"placement\":\"bottom\"}},[_c('el-radio-button',{attrs:{\"label\":\"side\"}},[_c('i',{staticClass:\"far fa-clone\"})])],1),_c('el-tooltip',{staticClass:\"item\",attrs:{\"effect\":\"light\",\"content\":\"Side-by-side Docs\",\"placement\":\"bottom\"}},[_c('el-radio-button',{attrs:{\"label\":\"doc\"}},[_c('i',{staticClass:\"fab fa-readme\"})])],1)],1):_vm._e()],1):_vm._e()]),_c('div',{staticClass:\"full_height\",attrs:{\"id\":\"left_side\"}},[_c('div',{attrs:{\"id\":\"left_side_inner\"}},[(_vm.baseProject && _vm.newProject && _vm.text1 != '' && _vm.text2 != '' && _vm.viewType == 'diff')?_c('div',{attrs:{\"id\":\"submissions_container\"}},[_c('div',[(_vm.diffType == 'side' || _vm.diffType == 'line')?_c('div',[(_vm.diffType == 'side')?_c('code-diff',{attrs:{\"old-string\":_vm.text1,\"new-string\":_vm.text2,\"context\":10,\"output-format\":\"side-by-side\"}}):(_vm.diffType == 'line')?_c('code-diff',{attrs:{\"old-string\":_vm.text1,\"new-string\":_vm.text2,\"context\":10,\"output-format\":\"line-by-line\"}}):_vm._e()],1):(_vm.diffType == 'semantic')?_c('div',{staticStyle:{\"padding\":\"100px\",\"border\":\"#dadada solid 1px\"}},[_c('SemanticDiff',{attrs:{\"left\":_vm.text1,\"right\":_vm.text2}})],1):_c('div',{staticStyle:{\"border\":\"#dadada solid 1px\"}},[_c('div',[_c('splitpanes',{staticClass:\"default-theme\"},[_c('pane',{attrs:{\"size\":\"50\"}},[_c('div',{staticStyle:{\"height\":\"100%\",\"min-width\":\"560px\"}},[_c('div',{staticStyle:{\"height\":\"98vh\",\"overflow\":\"hidden\"}},[_c('nav',{staticClass:\"ViewerControls ViewerControls--with-annotations\"},[_c('div',{staticClass:\"ViewerControls-primary\"},[_c('div',{staticClass:\"ViewerControls--download\",staticStyle:{\"flex\":\"0.5\"}},[_c('div',{staticStyle:{\"min-width\":\"50px\",\"text-align\":\"center\"}},[_c('div',[(_vm.action == 'score')?_c('button',{staticClass:\"download-button--button\",attrs:{\"title\":\"Back to Student Submissions\",\"aria-label\":\"Back to Student Submissions\"},on:{\"click\":function($event){return _vm.backToStudentSubmissions()}}},[_c('i',{staticClass:\"fas fa-arrow-left\",staticStyle:{\"font-size\":\"20px\"}})]):_vm._e(),_c('button',{staticClass:\"download-button--button\",attrs:{\"title\":\"Download annotated PDF\",\"aria-label\":\"Download annotated PDF\"},on:{\"click\":function($event){return _vm.downloadPdf('pdfDocumentCompare1')}}},[_c('i',{staticClass:\"fas fa-file-download\",staticStyle:{\"font-size\":\"22px\"}})])])])]),_c('div',{staticClass:\"ViewerControls--page-controls\"},[_c('span',{staticClass:\"ViewerControls--page-number\",staticStyle:{\"display\":\"flex\",\"align-items\":\"center\"}},[_vm._v(\"\\n Page\\n \"),_c('div',{staticStyle:{\"padding-left\":\"10px\",\"padding-right\":\"10px\"}},[_c('el-input-number',{attrs:{\"min\":1,\"max\":_vm.totalPageNumber,\"size\":\"small\",\"label\":\"Page\"},on:{\"change\":function($event){return _vm.changePage('PdfWebControl')}},model:{value:(_vm.pageNum),callback:function ($$v) {_vm.pageNum=$$v},expression:\"pageNum\"}})],1),_vm._v(\"\\n of \"+_vm._s(_vm.totalPageNumber)+\"\\n \")]),_c('svg',{staticStyle:{\"margin-left\":\"12px\",\"margin-right\":\"0px\",\"width\":\"2px\",\"height\":\"26px\",\"color\":\"rgb(171, 179, 186)\"},attrs:{\"viewBox\":\"0 0 2 26\"}},[_c('line',{attrs:{\"stroke\":\"currentColor\",\"stroke-dasharray\":\"2, 1\",\"stroke-width\":\"1\",\"x1\":\"1\",\"y1\":\"0\",\"x2\":\"1\",\"y2\":\"26\"}})])]),_c('nav',{staticClass:\"DocumentControls\"},[_c('div',{staticStyle:{\"display\":\"inline-flex\",\"align-items\":\"center\",\"user-select\":\"none\"}},[_c('button',{staticClass:\"AnnotationControlButton\",attrs:{\"aria-label\":\"Zoom Out\",\"title\":\"Zoom Out\",\"aria-disabled\":\"false\"},on:{\"click\":function($event){return _vm.zoomOut('PdfWebControl')}}},[_c('i',{staticClass:\"fas fa-minus\",staticStyle:{\"font-size\":\"20px\"}})]),_c('span',{staticStyle:{\"text-transform\":\"uppercase\",\"font-size\":\"0.75rem\",\"color\":\"rgb(238, 238, 239)\",\"margin-left\":\"4px\",\"margin-right\":\"4px\"},attrs:{\"aria-hidden\":\"true\"}},[_vm._v(\"\\n Zoom\\n \")]),_c('button',{staticClass:\"AnnotationControlButton\",attrs:{\"aria-label\":\"Zoom In\",\"title\":\"Zoom In\",\"aria-disabled\":\"false\"},on:{\"click\":function($event){return _vm.zoomIn('PdfWebControl')}}},[_c('i',{staticClass:\"fas fa-plus\",staticStyle:{\"font-size\":\"20px\"}})])]),_c('svg',{staticStyle:{\"margin-left\":\"2px\",\"margin-right\":\"4px\",\"width\":\"2px\",\"height\":\"26px\",\"color\":\"rgb(171, 179, 186)\"},attrs:{\"viewBox\":\"0 0 2 26\"}},[_c('line',{attrs:{\"stroke\":\"currentColor\",\"stroke-dasharray\":\"2, 1\",\"stroke-width\":\"1\",\"x1\":\"1\",\"y1\":\"0\",\"x2\":\"1\",\"y2\":\"26\"}})]),_c('div',{staticClass:\"ViewerControls--page-controls\"},[_c('button',{staticClass:\"AnnotationControlButton full-screen-button\",attrs:{\"aria-label\":\"Enter Full Screen\",\"title\":\"Zoom Fit Width\"},on:{\"click\":function($event){return _vm.zoomFitWidth('PdfWebControl')}}},[_c('i',{staticClass:\"fas fa-expand\",staticStyle:{\"font-size\":\"20px\"}})]),_c('svg',{staticStyle:{\"margin-left\":\"4px\",\"margin-right\":\"4px\",\"width\":\"2px\",\"height\":\"26px\",\"color\":\"rgb(171, 179, 186)\"},attrs:{\"viewBox\":\"0 0 2 26\"}},[_c('line',{attrs:{\"stroke\":\"currentColor\",\"stroke-dasharray\":\"2, 1\",\"stroke-width\":\"1\",\"x1\":\"1\",\"y1\":\"0\",\"x2\":\"1\",\"y2\":\"26\"}})])])]),_c('nav',{staticClass:\"AnnotationControls\"},[_c('button',{staticClass:\"AnnotationControlButton\",attrs:{\"aria-label\":\"Enter selection mode\",\"title\":\"Hand Scroll\"},on:{\"click\":function($event){return _vm.handScroll('PdfWebControl')}}},[_c('div',{staticClass:\"AnnotationControlButton-outer\"},[_c('div',{staticClass:\"AnnotationControlButton-inner\"},[_c('i',{staticClass:\"far fa-hand-point-up\",staticStyle:{\"font-size\":\"20px\"}})])])]),_c('button',{staticClass:\"AnnotationControlButton\",attrs:{\"aria-label\":\"Enter selection mode\",\"title\":\"Selection\"},on:{\"click\":function($event){return _vm.selectTextPdf('PdfWebControl')}}},[_c('div',{staticClass:\"AnnotationControlButton-outer\"},[_c('div',{staticClass:\"AnnotationControlButton-inner\"},[_c('i',{staticClass:\"fas fa-mouse-pointer\",staticStyle:{\"font-size\":\"18px\"}})])])])])])]),_c('div',{staticStyle:{\"display\":\"block\",\"height\":\"calc(100% - 85px)\"},attrs:{\"id\":\"iframe_holder\"}},[_c('div',{staticStyle:{\"resize\":\"vertical\",\"height\":\"100%\"},attrs:{\"id\":\"pdfDocumentCompare1\"}})])])])]),_c('pane',{attrs:{\"size\":\"50\"}},[_c('div',[_c('div',[_c('div',{staticStyle:{\"height\":\"100%\",\"min-width\":\"560px\"}},[_c('div',{staticStyle:{\"height\":\"98vh\",\"overflow\":\"hidden\"}},[_c('nav',{staticClass:\"ViewerControls ViewerControls--with-annotations\"},[_c('div',{staticClass:\"ViewerControls-primary\"},[_c('div',{staticClass:\"ViewerControls--download\",staticStyle:{\"flex\":\"0.5\"}},[_c('div',{staticStyle:{\"min-width\":\"50px\",\"text-align\":\"center\"}},[_c('div',[(_vm.action == 'score')?_c('button',{staticClass:\"download-button--button\",attrs:{\"title\":\"Back to Student Submissions\",\"aria-label\":\"Back to Student Submissions\"},on:{\"click\":function($event){return _vm.backToStudentSubmissions()}}},[_c('i',{staticClass:\"fas fa-arrow-left\",staticStyle:{\"font-size\":\"20px\"}})]):_vm._e(),_c('button',{staticClass:\"download-button--button\",attrs:{\"title\":\"Download annotated PDF\",\"aria-label\":\"Download annotated PDF\"},on:{\"click\":function($event){return _vm.downloadPdf('pdfDocumentCompare2')}}},[_c('i',{staticClass:\"fas fa-file-download\",staticStyle:{\"font-size\":\"22px\"}})])])])]),_c('div',{staticClass:\"ViewerControls--page-controls\"},[_c('span',{staticClass:\"ViewerControls--page-number\",staticStyle:{\"display\":\"flex\",\"align-items\":\"center\"}},[_vm._v(\"\\n Page\\n \"),_c('div',{staticStyle:{\"padding-left\":\"10px\",\"padding-right\":\"10px\"}},[_c('el-input-number',{attrs:{\"min\":1,\"max\":_vm.totalPageNumber,\"size\":\"small\",\"label\":\"Page\"},on:{\"change\":function($event){return _vm.changePage('PdfWebControlCompare')}},model:{value:(_vm.pageNum),callback:function ($$v) {_vm.pageNum=$$v},expression:\"pageNum\"}})],1),_vm._v(\"\\n of \"+_vm._s(_vm.totalPageNumber)+\"\\n \")]),_c('svg',{staticStyle:{\"margin-left\":\"12px\",\"margin-right\":\"0px\",\"width\":\"2px\",\"height\":\"26px\",\"color\":\"rgb(171, 179, 186)\"},attrs:{\"viewBox\":\"0 0 2 26\"}},[_c('line',{attrs:{\"stroke\":\"currentColor\",\"stroke-dasharray\":\"2, 1\",\"stroke-width\":\"1\",\"x1\":\"1\",\"y1\":\"0\",\"x2\":\"1\",\"y2\":\"26\"}})])]),_c('nav',{staticClass:\"DocumentControls\"},[_c('div',{staticStyle:{\"display\":\"inline-flex\",\"align-items\":\"center\",\"user-select\":\"none\"}},[_c('button',{staticClass:\"AnnotationControlButton\",attrs:{\"aria-label\":\"Zoom Out\",\"title\":\"Zoom Out\",\"aria-disabled\":\"false\"},on:{\"click\":function($event){return _vm.zoomOut('PdfWebControlCompare')}}},[_c('i',{staticClass:\"fas fa-minus\",staticStyle:{\"font-size\":\"20px\"}})]),_c('span',{staticStyle:{\"text-transform\":\"uppercase\",\"font-size\":\"0.75rem\",\"color\":\"rgb(238, 238, 239)\",\"margin-left\":\"4px\",\"margin-right\":\"4px\"},attrs:{\"aria-hidden\":\"true\"}},[_vm._v(\"\\n Zoom\\n \")]),_c('button',{staticClass:\"AnnotationControlButton\",attrs:{\"aria-label\":\"Zoom In\",\"title\":\"Zoom In\",\"aria-disabled\":\"false\"},on:{\"click\":function($event){return _vm.zoomIn('PdfWebControlCompare')}}},[_c('i',{staticClass:\"fas fa-plus\",staticStyle:{\"font-size\":\"20px\"}})])]),_c('svg',{staticStyle:{\"margin-left\":\"2px\",\"margin-right\":\"4px\",\"width\":\"2px\",\"height\":\"26px\",\"color\":\"rgb(171, 179, 186)\"},attrs:{\"viewBox\":\"0 0 2 26\"}},[_c('line',{attrs:{\"stroke\":\"currentColor\",\"stroke-dasharray\":\"2, 1\",\"stroke-width\":\"1\",\"x1\":\"1\",\"y1\":\"0\",\"x2\":\"1\",\"y2\":\"26\"}})]),_c('div',{staticClass:\"ViewerControls--page-controls\"},[_c('button',{staticClass:\"AnnotationControlButton full-screen-button\",attrs:{\"aria-label\":\"Enter Full Screen\",\"title\":\"Zoom Fit Width\"},on:{\"click\":function($event){return _vm.zoomFitWidth('PdfWebControlCompare')}}},[_c('i',{staticClass:\"fas fa-expand\",staticStyle:{\"font-size\":\"20px\"}})]),_c('svg',{staticStyle:{\"margin-left\":\"4px\",\"margin-right\":\"4px\",\"width\":\"2px\",\"height\":\"26px\",\"color\":\"rgb(171, 179, 186)\"},attrs:{\"viewBox\":\"0 0 2 26\"}},[_c('line',{attrs:{\"stroke\":\"currentColor\",\"stroke-dasharray\":\"2, 1\",\"stroke-width\":\"1\",\"x1\":\"1\",\"y1\":\"0\",\"x2\":\"1\",\"y2\":\"26\"}})])])]),_c('nav',{staticClass:\"AnnotationControls\"},[_c('button',{staticClass:\"AnnotationControlButton\",attrs:{\"aria-label\":\"Enter selection mode\",\"title\":\"Hand Scroll\"},on:{\"click\":function($event){return _vm.handScroll('PdfWebControlCompare')}}},[_c('div',{staticClass:\"AnnotationControlButton-outer\"},[_c('div',{staticClass:\"AnnotationControlButton-inner\"},[_c('i',{staticClass:\"far fa-hand-point-up\",staticStyle:{\"font-size\":\"20px\"}})])])]),_c('button',{staticClass:\"AnnotationControlButton\",attrs:{\"aria-label\":\"Enter selection mode\",\"title\":\"Selection\"},on:{\"click\":function($event){return _vm.selectTextPdf('PdfWebControlCompare')}}},[_c('div',{staticClass:\"AnnotationControlButton-outer\"},[_c('div',{staticClass:\"AnnotationControlButton-inner\"},[_c('i',{staticClass:\"fas fa-mouse-pointer\",staticStyle:{\"font-size\":\"18px\"}})])])])])])]),_c('div',{staticStyle:{\"display\":\"block\",\"height\":\"calc(100% - 85px)\"},attrs:{\"id\":\"iframe_holder\"}},[_c('div',{staticStyle:{\"resize\":\"vertical\",\"height\":\"100%\"},attrs:{\"id\":\"pdfDocumentCompare2\"}})])])])])])])],1)],1)])])]):(_vm.baseProject && _vm.newProject && _vm.text1 != '' && _vm.text2 != '' && _vm.viewType == 'annotate')?_c('div',{staticStyle:{\"overflow\":\"hidden\"},attrs:{\"id\":\"submissions_container\"}},[_c('nav',{staticClass:\"ViewerControls ViewerControls--with-annotations\"},[_c('div',{staticClass:\"ViewerControls-primary\"},[_c('div',{staticClass:\"ViewerControls--download\"},[_c('div',{staticStyle:{\"min-width\":\"50px\",\"text-align\":\"center\"}},[_c('div',[_c('div',{staticStyle:{\"float\":\"left\"}},[_c('button',{staticClass:\"download-button--button\",staticStyle:{\"margin-top\":\"1px\"},attrs:{\"title\":\"Download annotated PDF\",\"aria-label\":\"Download annotated PDF\"},on:{\"click\":function($event){return _vm.downloadPdf('PdfWebControl')}}},[_c('i',{staticClass:\"fas fa-file-download\",staticStyle:{\"font-size\":\"22px\"}})])]),_c('div',[_c('button',{staticClass:\"download-button--button\",attrs:{\"title\":\"Save annotation\",\"aria-label\":\"Save annotation\"},on:{\"click\":function($event){return _vm.saveAnnotation('PdfWebControl')}}},[_c('i',{staticClass:\"fas fa-save\",staticStyle:{\"font-size\":\"24px\",\"margin-top\":\"2px\"}})])])])])]),_c('div',{staticClass:\"ViewerControls--title\"}),_c('div',{staticClass:\"ViewerControls--page-controls\"},[_c('span',{staticClass:\"ViewerControls--page-number\",staticStyle:{\"display\":\"flex\",\"align-items\":\"center\"}},[_vm._v(\"\\n Page\\n \"),_c('div',{staticStyle:{\"padding-left\":\"10px\",\"padding-right\":\"10px\"}},[_c('el-input-number',{attrs:{\"min\":1,\"max\":_vm.totalPageNumber,\"size\":\"small\",\"label\":\"Page\"},on:{\"change\":function($event){return _vm.changePage('PdfWebControl')}},model:{value:(_vm.pageNum),callback:function ($$v) {_vm.pageNum=$$v},expression:\"pageNum\"}})],1),_vm._v(\"\\n of \"+_vm._s(_vm.totalPageNumber)+\"\\n \")]),_c('svg',{staticStyle:{\"margin-left\":\"12px\",\"margin-right\":\"0px\",\"width\":\"2px\",\"height\":\"26px\",\"color\":\"rgb(171, 179, 186)\"},attrs:{\"viewBox\":\"0 0 2 26\"}},[_c('line',{attrs:{\"stroke\":\"currentColor\",\"stroke-dasharray\":\"2, 1\",\"stroke-width\":\"1\",\"x1\":\"1\",\"y1\":\"0\",\"x2\":\"1\",\"y2\":\"26\"}})])]),_c('nav',{staticClass:\"DocumentControls\"},[_c('div',{staticStyle:{\"display\":\"inline-flex\",\"align-items\":\"center\",\"user-select\":\"none\"}},[_c('button',{staticClass:\"AnnotationControlButton\",attrs:{\"aria-label\":\"Zoom Out\",\"title\":\"Zoom Out\",\"aria-disabled\":\"false\"},on:{\"click\":function($event){return _vm.zoomOut('PdfWebControl')}}},[_c('i',{staticClass:\"fas fa-minus\",staticStyle:{\"font-size\":\"20px\"}})]),_c('span',{staticStyle:{\"text-transform\":\"uppercase\",\"font-size\":\"0.75rem\",\"color\":\"rgb(238, 238, 239)\",\"margin-left\":\"4px\",\"margin-right\":\"4px\"},attrs:{\"aria-hidden\":\"true\"}},[_vm._v(\"\\n Zoom\\n \")]),_c('button',{staticClass:\"AnnotationControlButton\",attrs:{\"aria-label\":\"Zoom In\",\"title\":\"Zoom In\",\"aria-disabled\":\"false\"},on:{\"click\":function($event){return _vm.zoomIn('PdfWebControl')}}},[_c('i',{staticClass:\"fas fa-plus\",staticStyle:{\"font-size\":\"20px\"}})])]),_c('svg',{staticStyle:{\"margin-left\":\"2px\",\"margin-right\":\"4px\",\"width\":\"2px\",\"height\":\"26px\",\"color\":\"rgb(171, 179, 186)\"},attrs:{\"viewBox\":\"0 0 2 26\"}},[_c('line',{attrs:{\"stroke\":\"currentColor\",\"stroke-dasharray\":\"2, 1\",\"stroke-width\":\"1\",\"x1\":\"1\",\"y1\":\"0\",\"x2\":\"1\",\"y2\":\"26\"}})]),_c('div',{staticClass:\"ViewerControls--page-controls\"},[_c('button',{staticClass:\"AnnotationControlButton full-screen-button\",attrs:{\"aria-label\":\"Enter Full Screen\",\"title\":\"Zoom Fit Width\"},on:{\"click\":function($event){return _vm.zoomFitWidth('PdfWebControl')}}},[_c('i',{staticClass:\"fas fa-expand\",staticStyle:{\"font-size\":\"20px\"}})]),_c('svg',{staticStyle:{\"margin-left\":\"4px\",\"margin-right\":\"4px\",\"width\":\"2px\",\"height\":\"26px\",\"color\":\"rgb(171, 179, 186)\"},attrs:{\"viewBox\":\"0 0 2 26\"}},[_c('line',{attrs:{\"stroke\":\"currentColor\",\"stroke-dasharray\":\"2, 1\",\"stroke-width\":\"1\",\"x1\":\"1\",\"y1\":\"0\",\"x2\":\"1\",\"y2\":\"26\"}})])])]),_c('nav',{staticClass:\"AnnotationControls\"},[_c('button',{staticClass:\"AnnotationControlButton\",attrs:{\"aria-label\":\"Enter selection mode\",\"title\":\"Selection\"},on:{\"click\":function($event){return _vm.selectTextPdf('PdfWebControl')}}},[_c('div',{staticClass:\"AnnotationControlButton-outer\"},[_c('div',{staticClass:\"AnnotationControlButton-inner\"},[_c('i',{staticClass:\"fas fa-mouse-pointer\",staticStyle:{\"font-size\":\"20px\"}})])])]),_c('button',{staticClass:\"AnnotationControlButton\",attrs:{\"aria-label\":\"highlight annotation\",\"title\":\"Highlight annotation\"},on:{\"click\":function($event){return _vm.highlightPdf('PdfWebControl')}}},[_c('div',{staticClass:\"AnnotationControlButton-outer\"},[_c('div',{staticClass:\"AnnotationControlButton-inner\"},[_c('i',{staticClass:\"fas fa-highlighter\",staticStyle:{\"font-size\":\"20px\"}})])])]),_c('button',{staticClass:\"AnnotationControlButton\",attrs:{\"aria-label\":\"strikeout annotation\",\"title\":\"Strikeout annotation\"},on:{\"click\":function($event){return _vm.strikeOutPdf('PdfWebControl')}}},[_c('div',{staticClass:\"AnnotationControlButton-outer\"},[_c('div',{staticClass:\"AnnotationControlButton-inner\"},[_c('i',{staticClass:\"fas fa-strikethrough\",staticStyle:{\"font-size\":\"20px\"}})])])]),_c('button',{staticClass:\"AnnotationControlButton\",attrs:{\"aria-label\":\"free draw annotation\",\"title\":\"Free draw annotation\"},on:{\"click\":function($event){return _vm.freeDrawPdf('PdfWebControl')}}},[_c('div',{staticClass:\"AnnotationControlButton-outer\"},[_c('div',{staticClass:\"AnnotationControlButton-inner\"},[_c('i',{staticClass:\"fas fa-paint-brush\",staticStyle:{\"font-size\":\"20px\"}})])])]),_c('button',{staticClass:\"AnnotationControlButton\",attrs:{\"aria-label\":\"Sticky note annotation\",\"title\":\"Sticky note annotation\"},on:{\"click\":function($event){return _vm.stickyNotePdf('PdfWebControl')}}},[_c('div',{staticClass:\"AnnotationControlButton-outer\"},[_c('div',{staticClass:\"AnnotationControlButton-inner\"},[_c('i',{staticClass:\"far fa-sticky-note\",staticStyle:{\"font-size\":\"20px\"}})])])])])])]),(_vm.viewType == 'annotate')?_c('div',{staticStyle:{\"display\":\"block\",\"height\":\"calc(100% - 45px)\"},attrs:{\"id\":\"iframe_holder\"}},[(_vm.viewType == 'annotate')?_c('div',{staticStyle:{\"resize\":\"vertical\",\"height\":\"100%\"},attrs:{\"id\":\"pdfDocument\"}}):_vm._e()]):_vm._e()]):_vm._e()]),_c('div',{staticStyle:{\"display\":\"none\",\"position\":\"relative\",\"top\":\"-100%\",\"z-index\":\"1\",\"height\":\"100%\",\"width\":\"100%\",\"border\":\"0 none\"},attrs:{\"id\":\"resize_overlay\"}})])]),_c('div',{attrs:{\"slot\":\"secondPane\"},slot:\"secondPane\"},[_c('div',{staticClass:\"full_height\",attrs:{\"id\":\"right_side\"}},[_c('div',{staticClass:\"right_side_content\"},[_c('div',{staticClass:\"full_height\",attrs:{\"id\":\"rightside_inner\"}},[_c('div',{staticStyle:{\"width\":\"100%\",\"height\":\"50px\",\"border-bottom\":\"1px solid rgb(204, 204, 204)\",\"margin-bottom\":\"5px\"}},[(_vm.newProject)?_c('div',{staticStyle:{\"float\":\"left\",\"width\":\"49%\"}},[_c('el-tooltip',{staticClass:\"item\",attrs:{\"effect\":\"light\",\"content\":\"Actions\",\"placement\":\"bottom\"}},[_c('el-select',{staticStyle:{\"margin-left\":\"5px\",\"margin-top\":\"5px\"},attrs:{\"id\":\"assignments-selection\",\"value-key\":\"Id\",\"filterable\":\"\",\"placeholder\":\"Actions\",\"no-match-text\":\"No Matching Data\",\"no-data-text\":\"No data\",\"loading-text\":\"Loading\"},on:{\"change\":function($event){return _vm.onActionChange()}},model:{value:(_vm.action),callback:function ($$v) {_vm.action=$$v},expression:\"action\"}},_vm._l((_vm.actions),function(item){return _c('el-option',{key:item.Id,attrs:{\"label\":item.Label,\"value\":item.Id}})}),1)],1)],1):_vm._e(),(_vm.action == 0 && _vm.newProject)?_c('div',{staticStyle:{\"float\":\"right\",\"position\":\"absolute\",\"right\":\"0\"}},[_c('el-tooltip',{staticClass:\"item\",staticStyle:{\"display\":\"none\"},attrs:{\"id\":\"savedMessage\",\"effect\":\"light\",\"placement\":\"bottom\",\"content\":'Your feedback was successfully saved.'}},[_c('el-tag',{staticStyle:{\"line-height\":\"40px\",\"height\":\"40px\",\"margin-right\":\"5px\"},attrs:{\"type\":\"success\"}},[_vm._v(\"\\n Saved!\\n \")])],1),(_vm.review)?_c('el-button',{staticClass:\"submit-button\",staticStyle:{\"margin-top\":\"5px\",\"margin-right\":\"5px\"},attrs:{\"type\":_vm.statusType,\"title\":_vm.submitTooltip},on:{\"click\":function($event){return _vm.submitReview()}}},[_vm._v(\"\\n Submit\\n \")]):_c('el-button',{staticClass:\"submit-button\",staticStyle:{\"margin-top\":\"5px\",\"margin-right\":\"5px\"},attrs:{\"type\":\"info\",\"disabled\":true}},[_vm._v(\"\\n Submit\\n \")])],1):_vm._e(),(_vm.action == 4 && _vm.peers.length > 0)?_c('div',{staticStyle:{\"float\":\"right\",\"width\":\"49%\"}},[_c('el-tooltip',{staticClass:\"item\",attrs:{\"effect\":\"light\",\"content\":\"Select a peer\",\"placement\":\"bottom\"}},[_c('el-select',{staticStyle:{\"float\":\"right\",\"margin-right\":\"5px\",\"margin-top\":\"5px\"},attrs:{\"id\":\"students-selection\",\"value-key\":\"UserName\",\"filterable\":\"\",\"placeholder\":\"Select a peer\"},on:{\"change\":function($event){return _vm.onPeerChange()}},model:{value:(_vm.currentPeer),callback:function ($$v) {_vm.currentPeer=$$v},expression:\"currentPeer\"}},_vm._l((_vm.peers),function(item){return _c('el-option',{key:item.UserName,attrs:{\"label\":item.LastName + ', ' + item.FirstName,\"value\":item}})}),1)],1)],1):_vm._e()]),_c('div',{attrs:{\"id\":\"rubric\"}},[_c('div',{staticStyle:{\"height\":\"100%\",\"overflow\":\"auto\"}},_vm._l((_vm.rubricCriteria),function(criteria,criteriaIndex){return _c('el-card',{key:criteria.Id,staticStyle:{\"margin-bottom\":\"5px\",\"margin-left\":\"3px\"}},[_c('div',{staticClass:\"clearfix\",attrs:{\"slot\":\"header\"},slot:\"header\"},[_c('span',{staticStyle:{\"font-size\":\"16px\",\"font-weight\":\"bold\"}},[_vm._v(\"\\n \"+_vm._s(criteria.CriteriaName)+\"\\n \")]),_c('div',{staticStyle:{\"font-size\":\"14px\",\"margin-top\":\"10px\"}},[(criteria.Description && criteria.Description != '')?_c('el-input',{staticClass:\"criteria-description\",staticStyle:{\"border\":\"none\"},attrs:{\"value\":criteria.Description,\"readonly\":_vm.action != 0,\"type\":\"textarea\",\"autosize\":true,\"maxlength\":8000}}):_vm._e()],1)]),_c('div',[(_vm.termCode == '201908')?_c('div',[(criteria.UseAsGrade)?_c('el-radio-group',{staticStyle:{\"margin-bottom\":\"10px\",\"min-width\":\"240px\"},attrs:{\"id\":criteria.Id,\"disabled\":_vm.action != 0},on:{\"input\":function($event){return _vm.saveReview(criteriaIndex)}},model:{value:(_vm.criteriaFeedback[criteriaIndex].Mark),callback:function ($$v) {_vm.$set(_vm.criteriaFeedback[criteriaIndex], \"Mark\", $$v)},expression:\"criteriaFeedback[criteriaIndex].Mark\"}},_vm._l((criteria.RubricCriteriaMilestones.slice()),function(milestone,key){return _c('el-tooltip',{key:milestone.Id,staticClass:\"item\",attrs:{\"effect\":\"light\",\"placement\":\"top\"}},[_c('div',{staticStyle:{\"max-width\":\"500px\"},attrs:{\"slot\":\"content\"},slot:\"content\"},[_vm._v(\"\\n \"+_vm._s(milestone.Description)+\"\\n \")]),_c('el-radio-button',{key:milestone.Id,attrs:{\"label\":criteria.RubricCriteriaMilestones.length - key}})],1)}),1):_vm._e()],1):_c('div',[(criteria.UseAsGrade)?_c('el-radio-group',{staticStyle:{\"margin-bottom\":\"10px\",\"min-width\":\"240px\"},attrs:{\"id\":criteria.Id,\"disabled\":_vm.action != 0},on:{\"input\":function($event){return _vm.saveReview(criteriaIndex)}},model:{value:(_vm.criteriaFeedback[criteriaIndex].Mark),callback:function ($$v) {_vm.$set(_vm.criteriaFeedback[criteriaIndex], \"Mark\", $$v)},expression:\"criteriaFeedback[criteriaIndex].Mark\"}},_vm._l((criteria.RubricCriteriaMilestones.slice()),function(milestone){return _c('el-tooltip',{key:milestone.Id,staticClass:\"item\",attrs:{\"effect\":\"light\",\"placement\":\"top\"}},[_c('div',{staticStyle:{\"max-width\":\"500px\"},attrs:{\"slot\":\"content\"},slot:\"content\"},[_vm._v(\"\\n \"+_vm._s(milestone.Description)+\"\\n \")]),_c('el-radio-button',{key:milestone.Id,attrs:{\"label\":milestone.Value}})],1)}),1):_vm._e()],1),_c('div',[(criteria.UseAsGrade || criteria.UseAsTextComment)?_c('el-input',{staticClass:\"criteria-comment\",attrs:{\"criteria-index\":criteriaIndex,\"type\":\"textarea\",\"placeholder\":\"Enter text here\",\"rows\":3,\"maxlength\":8000,\"readonly\":_vm.action != 0},model:{value:(_vm.criteriaFeedback[criteriaIndex].Comment),callback:function ($$v) {_vm.$set(_vm.criteriaFeedback[criteriaIndex], \"Comment\", $$v)},expression:\"criteriaFeedback[criteriaIndex].Comment\"}}):_vm._e()],1)])])}),1)])])])])])])],1)])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n <div>\r\n <div id=\"full_width_container\" :class=\"fullWidth\">\r\n <rs-panes split-to=\"columns\" :allow-resize=\"true\" units=\"percents\" :size=\"75\" :min-size=\"0\" :resizer-thickness=\"6\">\r\n <div slot=\"firstPane\" style=\"height: 100%; min-width: 650px;\">\r\n <div id=\"filter\" style=\"height: 50px; border-bottom: #cccccc solid 1px;\">\r\n <!-- Student Selection -->\r\n <div>\r\n <div class=\"filter-divider\" style=\"width: 18%;\">\r\n <el-tooltip class=\"item\" effect=\"light\" content=\"Select Student\" placement=\"bottom\">\r\n <el-select\r\n id=\"students-selection\"\r\n v-model=\"currentStudent\"\r\n value-key=\"UserName\"\r\n filterable\r\n placeholder=\"Select Student\"\r\n style=\"margin-top: 5px; width: 98%;\"\r\n @change=\"onStudentChange()\"\r\n >\r\n <el-option\r\n v-for=\"item in students\"\r\n :key=\"item.UserName\"\r\n :label=\"item.FullName\"\r\n :value=\"item.UserName\"\r\n />\r\n </el-select>\r\n </el-tooltip>\r\n </div>\r\n </div>\r\n\r\n <div class=\"filter-divider\" style=\"width: 20%;\">\r\n <!-- Project Selection -->\r\n <el-tooltip class=\"item\" effect=\"light\" content=\"Select doc 1\" placement=\"bottom\">\r\n <el-select\r\n id=\"assignments-selection\"\r\n v-model=\"baseProject\"\r\n value-key=\"Id\"\r\n filterable\r\n placeholder=\"Select doc 1\"\r\n no-match-text=\"No Matching Data\"\r\n no-data-text=\"No data\"\r\n loading-text=\"Loading\"\r\n style=\"margin-left: 2%; margin-top: 5px; width: 96%;\"\r\n @change=\"onBaseTextChange()\"\r\n >\r\n <el-option\r\n v-for=\"item in baseProjects\"\r\n :key=\"item.Id\"\r\n :label=\"item.AssignmentName\"\r\n :value=\"item\"\r\n />\r\n </el-select>\r\n </el-tooltip>\r\n </div>\r\n\r\n <div class=\"filter-divider\" style=\"width: 20%;\">\r\n <!-- Project Selection -->\r\n <el-tooltip class=\"item\" effect=\"light\" content=\"Select doc 2\" placement=\"bottom\">\r\n <el-select\r\n id=\"assignments-selection\"\r\n v-model=\"newProject\"\r\n value-key=\"Id\"\r\n filterable\r\n placeholder=\"Select doc 2\"\r\n no-match-text=\"No Matching Data\"\r\n no-data-text=\"No data\"\r\n loading-text=\"Loading\"\r\n style=\"margin-left: 2%; margin-top: 5px; width: 96%;\"\r\n @change=\"onNewTextChange()\"\r\n >\r\n <el-option\r\n v-for=\"item in newProjects\"\r\n :key=\"item.Id\"\r\n :label=\"item.AssignmentName\"\r\n :value=\"item\"\r\n />\r\n </el-select>\r\n </el-tooltip>\r\n </div>\r\n <div v-if=\"text1 != '' && text2 != '' \">\r\n <el-radio-group v-model=\"viewType\" size=\"medium\" style=\"margin-left: 10px; margin-top: 5px;\" @change=\"displayDocument()\">\r\n <el-tooltip class=\"item\" effect=\"light\" content=\"View Differences\" placement=\"bottom\">\r\n <el-radio-button label=\"diff\">\r\n <i class=\"fas fa-retweet\" />\r\n </el-radio-button>\r\n </el-tooltip>\r\n <el-tooltip class=\"item\" effect=\"light\" content=\"Annotate Paper\" placement=\"bottom\">\r\n <el-radio-button label=\"annotate\">\r\n <i class=\"far fa-edit\" />\r\n </el-radio-button>\r\n </el-tooltip>\r\n </el-radio-group>\r\n\r\n <el-radio-group\r\n v-if=\"viewType == 'diff'\"\r\n v-model=\"diffType\"\r\n size=\"medium\"\r\n style=\"margin-left: 10px; margin-top: 5px;\"\r\n @change=\"onDiffTypeChange()\"\r\n >\r\n <el-tooltip class=\"item\" effect=\"light\" content=\"Semantic\" placement=\"bottom\">\r\n <el-radio-button label=\"semantic\">\r\n <i class=\"fab fa-stripe-s\" />\r\n </el-radio-button>\r\n </el-tooltip>\r\n <el-tooltip class=\"item\" effect=\"light\" content=\"Line-by-line\" placement=\"bottom\">\r\n <el-radio-button label=\"line\">\r\n <i class=\"fas fa-align-justify\" />\r\n </el-radio-button>\r\n </el-tooltip>\r\n <el-tooltip class=\"item\" effect=\"light\" content=\"Side-by-side Texts\" placement=\"bottom\">\r\n <el-radio-button label=\"side\">\r\n <i class=\"far fa-clone\" />\r\n </el-radio-button>\r\n </el-tooltip>\r\n <el-tooltip class=\"item\" effect=\"light\" content=\"Side-by-side Docs\" placement=\"bottom\">\r\n <el-radio-button label=\"doc\">\r\n <i class=\"fab fa-readme\" />\r\n </el-radio-button>\r\n </el-tooltip>\r\n </el-radio-group>\r\n </div>\r\n </div>\r\n\r\n <div id=\"left_side\" class=\"full_height\">\r\n <div id=\"left_side_inner\">\r\n <div v-if=\"baseProject && newProject && text1 != '' && text2 != '' && viewType == 'diff'\" id=\"submissions_container\">\r\n <div>\r\n <div v-if=\"diffType == 'side' || diffType == 'line'\">\r\n <code-diff v-if=\"diffType == 'side'\" :old-string=\"text1\" :new-string=\"text2\" :context=\"10\" output-format=\"side-by-side\" />\r\n <code-diff v-else-if=\"diffType == 'line'\" :old-string=\"text1\" :new-string=\"text2\" :context=\"10\" output-format=\"line-by-line\" />\r\n </div>\r\n <div\r\n v-else-if=\"diffType == 'semantic'\"\r\n style=\"padding: 100px; border: #dadada solid 1px;\"\r\n >\r\n <SemanticDiff :left=\"text1\" :right=\"text2\" />\r\n </div>\r\n <div\r\n v-else\r\n style=\"border: #dadada solid 1px;\"\r\n >\r\n <div>\r\n <splitpanes class=\"default-theme\">\r\n <pane size=\"50\">\r\n\r\n <div style=\"height: 100%; min-width: 560px;\">\r\n <div style=\"height: 98vh; overflow: hidden;\">\r\n <nav class=\"ViewerControls ViewerControls--with-annotations\">\r\n <div class=\"ViewerControls-primary\">\r\n <div class=\"ViewerControls--download\" style=\"flex: 0.5\">\r\n <div style=\"min-width: 50px; text-align: center;\">\r\n <div>\r\n <button v-if=\"action == 'score'\" class=\"download-button--button\" title=\"Back to Student Submissions\" aria-label=\"Back to Student Submissions\" @click=\"backToStudentSubmissions()\">\r\n <i style=\"font-size: 20px;\" class=\"fas fa-arrow-left\" />\r\n </button>\r\n <button class=\"download-button--button\" title=\"Download annotated PDF\" aria-label=\"Download annotated PDF\" @click=\"downloadPdf('pdfDocumentCompare1')\">\r\n <i style=\"font-size: 22px;\" class=\"fas fa-file-download\" />\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"ViewerControls--page-controls\">\r\n <span class=\"ViewerControls--page-number\" style=\"display: flex; align-items: center;\">\r\n Page\r\n <div style=\"padding-left: 10px; padding-right: 10px;\">\r\n <el-input-number v-model=\"pageNum\" :min=\"1\" :max=\"totalPageNumber\" size=\"small\" label=\"Page\" @change=\"changePage('PdfWebControl')\" />\r\n </div>\r\n of {{ totalPageNumber }}\r\n </span>\r\n <svg viewBox=\"0 0 2 26\" style=\"margin-left: 12px; margin-right: 0px; width: 2px; height: 26px; color: rgb(171, 179, 186);\">\r\n <line stroke=\"currentColor\" stroke-dasharray=\"2, 1\" stroke-width=\"1\" x1=\"1\" y1=\"0\" x2=\"1\" y2=\"26\" />\r\n </svg>\r\n </div>\r\n <nav class=\"DocumentControls\">\r\n <div style=\"display: inline-flex; align-items: center; user-select: none;\">\r\n <button class=\"AnnotationControlButton\" aria-label=\"Zoom Out\" title=\"Zoom Out\" aria-disabled=\"false\" @click=\"zoomOut('PdfWebControl')\">\r\n <i style=\"font-size: 20px;\" class=\"fas fa-minus\" />\r\n </button>\r\n <span aria-hidden=\"true\" style=\"text-transform: uppercase; font-size: 0.75rem; color: rgb(238, 238, 239); margin-left: 4px; margin-right: 4px;\">\r\n Zoom\r\n </span>\r\n <button class=\"AnnotationControlButton\" aria-label=\"Zoom In\" title=\"Zoom In\" aria-disabled=\"false\" @click=\"zoomIn('PdfWebControl')\">\r\n <i style=\"font-size: 20px;\" class=\"fas fa-plus\" />\r\n </button>\r\n </div>\r\n <svg viewBox=\"0 0 2 26\" style=\"margin-left: 2px; margin-right: 4px; width: 2px; height: 26px; color: rgb(171, 179, 186);\">\r\n <line stroke=\"currentColor\" stroke-dasharray=\"2, 1\" stroke-width=\"1\" x1=\"1\" y1=\"0\" x2=\"1\" y2=\"26\" />\r\n </svg>\r\n <div class=\"ViewerControls--page-controls\">\r\n <button aria-label=\"Enter Full Screen\" class=\"AnnotationControlButton full-screen-button\" title=\"Zoom Fit Width\" @click=\"zoomFitWidth('PdfWebControl')\">\r\n <i style=\"font-size: 20px;\" class=\"fas fa-expand\" />\r\n </button>\r\n <svg viewBox=\"0 0 2 26\" style=\"margin-left: 4px; margin-right: 4px; width: 2px; height: 26px; color: rgb(171, 179, 186);\">\r\n <line stroke=\"currentColor\" stroke-dasharray=\"2, 1\" stroke-width=\"1\" x1=\"1\" y1=\"0\" x2=\"1\" y2=\"26\" />\r\n </svg>\r\n </div>\r\n </nav>\r\n <nav class=\"AnnotationControls\">\r\n <button aria-label=\"Enter selection mode\" class=\"AnnotationControlButton\" title=\"Hand Scroll\" @click=\"handScroll('PdfWebControl')\">\r\n <div class=\"AnnotationControlButton-outer\">\r\n <div class=\"AnnotationControlButton-inner\">\r\n <i style=\"font-size: 20px;\" class=\"far fa-hand-point-up\" />\r\n </div>\r\n </div>\r\n </button>\r\n\r\n <button aria-label=\"Enter selection mode\" class=\"AnnotationControlButton\" title=\"Selection\" @click=\"selectTextPdf('PdfWebControl')\">\r\n <div class=\"AnnotationControlButton-outer\">\r\n <div class=\"AnnotationControlButton-inner\">\r\n <i style=\"font-size: 18px;\" class=\"fas fa-mouse-pointer\" />\r\n </div>\r\n </div>\r\n </button>\r\n </nav>\r\n </div>\r\n </nav>\r\n\r\n <div id=\"iframe_holder\" style=\"display: block; height: calc(100% - 85px);\">\r\n <div id=\"pdfDocumentCompare1\" style=\"resize: vertical; height: 100%;\" />\r\n </div>\r\n </div>\r\n </div>\r\n </pane>\r\n\r\n <pane size=\"50\">\r\n <div>\r\n <div>\r\n <div style=\"height: 100%; min-width: 560px;\">\r\n <div style=\"height: 98vh; overflow: hidden;\">\r\n <nav class=\"ViewerControls ViewerControls--with-annotations\">\r\n <div class=\"ViewerControls-primary\">\r\n <div class=\"ViewerControls--download\" style=\"flex: 0.5\">\r\n <div style=\"min-width: 50px; text-align: center;\">\r\n <div>\r\n <button v-if=\"action == 'score'\" class=\"download-button--button\" title=\"Back to Student Submissions\" aria-label=\"Back to Student Submissions\" @click=\"backToStudentSubmissions()\">\r\n <i style=\"font-size: 20px;\" class=\"fas fa-arrow-left\" />\r\n </button>\r\n <button class=\"download-button--button\" title=\"Download annotated PDF\" aria-label=\"Download annotated PDF\" @click=\"downloadPdf('pdfDocumentCompare2')\">\r\n <i style=\"font-size: 22px;\" class=\"fas fa-file-download\" />\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"ViewerControls--page-controls\">\r\n <span class=\"ViewerControls--page-number\" style=\"display: flex; align-items: center;\">\r\n Page\r\n <div style=\"padding-left: 10px; padding-right: 10px;\">\r\n <el-input-number v-model=\"pageNum\" :min=\"1\" :max=\"totalPageNumber\" size=\"small\" label=\"Page\" @change=\"changePage('PdfWebControlCompare')\" />\r\n </div>\r\n of {{ totalPageNumber }}\r\n </span>\r\n <svg viewBox=\"0 0 2 26\" style=\"margin-left: 12px; margin-right: 0px; width: 2px; height: 26px; color: rgb(171, 179, 186);\">\r\n <line stroke=\"currentColor\" stroke-dasharray=\"2, 1\" stroke-width=\"1\" x1=\"1\" y1=\"0\" x2=\"1\" y2=\"26\" />\r\n </svg>\r\n </div>\r\n <nav class=\"DocumentControls\">\r\n <div style=\"display: inline-flex; align-items: center; user-select: none;\">\r\n <button class=\"AnnotationControlButton\" aria-label=\"Zoom Out\" title=\"Zoom Out\" aria-disabled=\"false\" @click=\"zoomOut('PdfWebControlCompare')\">\r\n <i style=\"font-size: 20px;\" class=\"fas fa-minus\" />\r\n </button>\r\n <span aria-hidden=\"true\" style=\"text-transform: uppercase; font-size: 0.75rem; color: rgb(238, 238, 239); margin-left: 4px; margin-right: 4px;\">\r\n Zoom\r\n </span>\r\n <button class=\"AnnotationControlButton\" aria-label=\"Zoom In\" title=\"Zoom In\" aria-disabled=\"false\" @click=\"zoomIn('PdfWebControlCompare')\">\r\n <i style=\"font-size: 20px;\" class=\"fas fa-plus\" />\r\n </button>\r\n </div>\r\n <svg viewBox=\"0 0 2 26\" style=\"margin-left: 2px; margin-right: 4px; width: 2px; height: 26px; color: rgb(171, 179, 186);\">\r\n <line stroke=\"currentColor\" stroke-dasharray=\"2, 1\" stroke-width=\"1\" x1=\"1\" y1=\"0\" x2=\"1\" y2=\"26\" />\r\n </svg>\r\n <div class=\"ViewerControls--page-controls\">\r\n <button aria-label=\"Enter Full Screen\" class=\"AnnotationControlButton full-screen-button\" title=\"Zoom Fit Width\" @click=\"zoomFitWidth('PdfWebControlCompare')\">\r\n <i style=\"font-size: 20px;\" class=\"fas fa-expand\" />\r\n </button>\r\n <svg viewBox=\"0 0 2 26\" style=\"margin-left: 4px; margin-right: 4px; width: 2px; height: 26px; color: rgb(171, 179, 186);\">\r\n <line stroke=\"currentColor\" stroke-dasharray=\"2, 1\" stroke-width=\"1\" x1=\"1\" y1=\"0\" x2=\"1\" y2=\"26\" />\r\n </svg>\r\n </div>\r\n </nav>\r\n <nav class=\"AnnotationControls\">\r\n <button aria-label=\"Enter selection mode\" class=\"AnnotationControlButton\" title=\"Hand Scroll\" @click=\"handScroll('PdfWebControlCompare')\">\r\n <div class=\"AnnotationControlButton-outer\">\r\n <div class=\"AnnotationControlButton-inner\">\r\n <i style=\"font-size: 20px;\" class=\"far fa-hand-point-up\" />\r\n </div>\r\n </div>\r\n </button>\r\n\r\n <button aria-label=\"Enter selection mode\" class=\"AnnotationControlButton\" title=\"Selection\" @click=\"selectTextPdf('PdfWebControlCompare')\">\r\n <div class=\"AnnotationControlButton-outer\">\r\n <div class=\"AnnotationControlButton-inner\">\r\n <i style=\"font-size: 18px;\" class=\"fas fa-mouse-pointer\" />\r\n </div>\r\n </div>\r\n </button>\r\n </nav>\r\n </div>\r\n </nav>\r\n\r\n <div id=\"iframe_holder\" style=\"display: block; height: calc(100% - 85px);\">\r\n <div id=\"pdfDocumentCompare2\" style=\"resize: vertical; height: 100%;\" />\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </pane>\r\n </splitpanes>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div v-else-if=\"baseProject && newProject && text1 != '' && text2 != '' && viewType == 'annotate'\" id=\"submissions_container\" style=\"overflow: hidden;\">\r\n <nav class=\"ViewerControls ViewerControls--with-annotations\">\r\n <div class=\"ViewerControls-primary\">\r\n <div class=\"ViewerControls--download\">\r\n <div style=\"min-width: 50px; text-align: center;\">\r\n <div>\r\n <div style=\"float:left;\">\r\n <button\r\n class=\"download-button--button\"\r\n title=\"Download annotated PDF\"\r\n aria-label=\"Download annotated PDF\"\r\n style=\"margin-top: 1px;\"\r\n @click=\"downloadPdf('PdfWebControl')\"\r\n >\r\n <i style=\"font-size: 22px;\" class=\"fas fa-file-download\" />\r\n </button>\r\n </div>\r\n <div>\r\n <button class=\"download-button--button\" title=\"Save annotation\" aria-label=\"Save annotation\" @click=\"saveAnnotation('PdfWebControl')\">\r\n <i style=\"font-size: 24px; margin-top: 2px;\" class=\"fas fa-save\" />\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </div><div class=\"ViewerControls--title\" /><div class=\"ViewerControls--page-controls\">\r\n <span class=\"ViewerControls--page-number\" style=\"display: flex; align-items: center;\">\r\n Page\r\n <div style=\"padding-left: 10px; padding-right: 10px;\">\r\n <el-input-number v-model=\"pageNum\" :min=\"1\" :max=\"totalPageNumber\" size=\"small\" label=\"Page\" @change=\"changePage('PdfWebControl')\" />\r\n </div>\r\n of {{ totalPageNumber }}\r\n </span>\r\n <svg viewBox=\"0 0 2 26\" style=\"margin-left: 12px; margin-right: 0px; width: 2px; height: 26px; color: rgb(171, 179, 186);\">\r\n <line stroke=\"currentColor\" stroke-dasharray=\"2, 1\" stroke-width=\"1\" x1=\"1\" y1=\"0\" x2=\"1\" y2=\"26\" />\r\n </svg>\r\n </div>\r\n <nav class=\"DocumentControls\">\r\n <div style=\"display: inline-flex; align-items: center; user-select: none;\">\r\n <button class=\"AnnotationControlButton\" aria-label=\"Zoom Out\" title=\"Zoom Out\" aria-disabled=\"false\" @click=\"zoomOut('PdfWebControl')\">\r\n <i style=\"font-size: 20px;\" class=\"fas fa-minus\" />\r\n </button>\r\n <span aria-hidden=\"true\" style=\"text-transform: uppercase; font-size: 0.75rem; color: rgb(238, 238, 239); margin-left: 4px; margin-right: 4px;\">\r\n Zoom\r\n </span>\r\n <button class=\"AnnotationControlButton\" aria-label=\"Zoom In\" title=\"Zoom In\" aria-disabled=\"false\" @click=\"zoomIn('PdfWebControl')\">\r\n <i style=\"font-size: 20px;\" class=\"fas fa-plus\" />\r\n </button>\r\n </div>\r\n <svg viewBox=\"0 0 2 26\" style=\"margin-left: 2px; margin-right: 4px; width: 2px; height: 26px; color: rgb(171, 179, 186);\">\r\n <line stroke=\"currentColor\" stroke-dasharray=\"2, 1\" stroke-width=\"1\" x1=\"1\" y1=\"0\" x2=\"1\" y2=\"26\" />\r\n </svg>\r\n <div class=\"ViewerControls--page-controls\">\r\n <button aria-label=\"Enter Full Screen\" class=\"AnnotationControlButton full-screen-button\" title=\"Zoom Fit Width\" @click=\"zoomFitWidth('PdfWebControl')\">\r\n <i style=\"font-size: 20px;\" class=\"fas fa-expand\" />\r\n </button>\r\n <svg viewBox=\"0 0 2 26\" style=\"margin-left: 4px; margin-right: 4px; width: 2px; height: 26px; color: rgb(171, 179, 186);\">\r\n <line stroke=\"currentColor\" stroke-dasharray=\"2, 1\" stroke-width=\"1\" x1=\"1\" y1=\"0\" x2=\"1\" y2=\"26\" />\r\n </svg>\r\n </div>\r\n </nav>\r\n <nav class=\"AnnotationControls\">\r\n <button aria-label=\"Enter selection mode\" class=\"AnnotationControlButton\" title=\"Selection\" @click=\"selectTextPdf('PdfWebControl')\">\r\n <div class=\"AnnotationControlButton-outer\">\r\n <div class=\"AnnotationControlButton-inner\">\r\n <i style=\"font-size: 20px;\" class=\"fas fa-mouse-pointer\" />\r\n </div>\r\n </div>\r\n </button>\r\n <button aria-label=\"highlight annotation\" class=\"AnnotationControlButton\" title=\"Highlight annotation\" @click=\"highlightPdf('PdfWebControl')\">\r\n <div class=\"AnnotationControlButton-outer\">\r\n <div class=\"AnnotationControlButton-inner\">\r\n <i style=\"font-size: 20px;\" class=\"fas fa-highlighter\" />\r\n </div>\r\n </div>\r\n </button>\r\n <!-- <button aria-label=\"freetext annotation\" class=\"AnnotationControlButton\" title=\"Freetext annotation\" @click=\"freeTextPdf\">\r\n\t\t\t\t\t\t\t\t\t\t<div class=\"AnnotationControlButton-outer\">\r\n\t\t\t\t\t\t\t\t\t\t\t<div class=\"AnnotationControlButton-inner\">\r\n\t\t\t\t\t\t\t\t\t\t\t\t<i style=\"font-size: 20px;\" class=\"fas fa-font\" />\r\n\t\t\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t\t</button> -->\r\n <button aria-label=\"strikeout annotation\" class=\"AnnotationControlButton\" title=\"Strikeout annotation\" @click=\"strikeOutPdf('PdfWebControl')\">\r\n <div class=\"AnnotationControlButton-outer\">\r\n <div class=\"AnnotationControlButton-inner\">\r\n <i style=\"font-size: 20px;\" class=\"fas fa-strikethrough\" />\r\n </div>\r\n </div>\r\n </button>\r\n <button aria-label=\"free draw annotation\" class=\"AnnotationControlButton\" title=\"Free draw annotation\" @click=\"freeDrawPdf('PdfWebControl')\">\r\n <div class=\"AnnotationControlButton-outer\">\r\n <div class=\"AnnotationControlButton-inner\">\r\n <i style=\"font-size: 20px;\" class=\"fas fa-paint-brush\" />\r\n </div>\r\n </div>\r\n </button>\r\n <button aria-label=\"Sticky note annotation\" class=\"AnnotationControlButton\" title=\"Sticky note annotation\" @click=\"stickyNotePdf('PdfWebControl')\">\r\n <div class=\"AnnotationControlButton-outer\">\r\n <div class=\"AnnotationControlButton-inner\">\r\n <i style=\"font-size: 20px;\" class=\"far fa-sticky-note\" />\r\n </div>\r\n </div>\r\n </button>\r\n </nav>\r\n </div>\r\n </nav>\r\n\r\n <div v-if=\"viewType == 'annotate'\" id=\"iframe_holder\" style=\"display: block; height: calc(100% - 45px);\">\r\n <div v-if=\"viewType == 'annotate'\" id=\"pdfDocument\" style=\"resize: vertical; height: 100%;\" />\r\n </div>\r\n </div>\r\n </div>\r\n <div id=\"resize_overlay\" style=\"display: none; position: relative;top: -100%; z-index: 1; height: 100%; width: 100%; border: 0 none;\" />\r\n </div>\r\n </div>\r\n\r\n <div slot=\"secondPane\">\r\n <div id=\"right_side\" class=\"full_height\">\r\n <!-- <div id=\"width_resizer\" class=\"full_height ui-draggable\" /> -->\r\n\r\n <div class=\"right_side_content\">\r\n <div id=\"rightside_inner\" class=\"full_height\">\r\n <div style=\"width: 100%; height: 50px; border-bottom: 1px solid rgb(204, 204, 204); margin-bottom: 5px;\">\r\n <div v-if=\"newProject\" style=\"float:left; width: 49%;\">\r\n <el-tooltip class=\"item\" effect=\"light\" content=\"Actions\" placement=\"bottom\">\r\n <el-select\r\n id=\"assignments-selection\"\r\n v-model=\"action\"\r\n value-key=\"Id\"\r\n filterable\r\n placeholder=\"Actions\"\r\n no-match-text=\"No Matching Data\"\r\n no-data-text=\"No data\"\r\n loading-text=\"Loading\"\r\n style=\"margin-left: 5px; margin-top: 5px;\"\r\n @change=\"onActionChange()\"\r\n >\r\n <el-option\r\n v-for=\"item in actions\"\r\n :key=\"item.Id\"\r\n :label=\"item.Label\"\r\n :value=\"item.Id\"\r\n />\r\n </el-select>\r\n </el-tooltip>\r\n </div>\r\n <div v-if=\"action == 0 && newProject\" style=\"float:right; position: absolute; right: 0;\">\r\n <el-tooltip\r\n id=\"savedMessage\"\r\n class=\"item\"\r\n effect=\"light\"\r\n placement=\"bottom\"\r\n :content=\"'Your feedback was successfully saved.'\"\r\n style=\"display: none;\"\r\n >\r\n <el-tag type=\"success\" style=\"line-height: 40px; height: 40px; margin-right: 5px;\">\r\n Saved!\r\n </el-tag>\r\n </el-tooltip>\r\n\r\n <el-button\r\n v-if=\"review\"\r\n class=\"submit-button\"\r\n :type=\"statusType\"\r\n style=\"margin-top: 5px; margin-right: 5px;\"\r\n :title=\"submitTooltip\"\r\n @click=\"submitReview()\"\r\n >\r\n Submit\r\n </el-button>\r\n <el-button\r\n v-else\r\n class=\"submit-button\"\r\n type=\"info\"\r\n :disabled=\"true\"\r\n style=\"margin-top: 5px; margin-right: 5px;\"\r\n >\r\n Submit\r\n </el-button>\r\n </div>\r\n <div v-if=\"action == 4 && peers.length > 0\" style=\"float:right; width: 49%;\">\r\n <el-tooltip class=\"item\" effect=\"light\" content=\"Select a peer\" placement=\"bottom\">\r\n <el-select\r\n id=\"students-selection\"\r\n v-model=\"currentPeer\"\r\n value-key=\"UserName\"\r\n filterable\r\n placeholder=\"Select a peer\"\r\n style=\"float:right; margin-right: 5px; margin-top: 5px;\"\r\n @change=\"onPeerChange()\"\r\n >\r\n <el-option\r\n v-for=\"item in peers\"\r\n :key=\"item.UserName\"\r\n :label=\"item.LastName + ', ' + item.FirstName\"\r\n :value=\"item\"\r\n />\r\n </el-select>\r\n </el-tooltip>\r\n </div>\r\n </div>\r\n\r\n <div id=\"rubric\">\r\n <div style=\"height: 100%; overflow: auto;\">\r\n <el-card v-for=\"(criteria, criteriaIndex) in rubricCriteria\" :key=\"criteria.Id\" style=\"margin-bottom: 5px; margin-left: 3px;\">\r\n <div slot=\"header\" class=\"clearfix\">\r\n <span style=\"font-size: 16px; font-weight: bold;\">\r\n {{ criteria.CriteriaName }}\r\n </span>\r\n <div style=\"font-size: 14px; margin-top: 10px;\">\r\n <el-input\r\n v-if=\"criteria.Description && criteria.Description != ''\"\r\n :value=\"criteria.Description\"\r\n :readonly=\"action != 0\"\r\n type=\"textarea\"\r\n :autosize=\"true\"\r\n :maxlength=\"8000\"\r\n class=\"criteria-description\"\r\n style=\"border: none;\"\r\n />\r\n </div>\r\n </div>\r\n <div>\r\n <div v-if=\"termCode == '201908'\">\r\n <el-radio-group\r\n v-if=\"criteria.UseAsGrade\"\r\n :id=\"criteria.Id\"\r\n v-model=\"criteriaFeedback[criteriaIndex].Mark\"\r\n style=\"margin-bottom: 10px; min-width: 240px;\"\r\n :disabled=\"action != 0\"\r\n @input=\"saveReview(criteriaIndex)\"\r\n >\r\n <el-tooltip\r\n v-for=\"(milestone, key) in criteria.RubricCriteriaMilestones.slice()\"\r\n :key=\"milestone.Id\"\r\n class=\"item\"\r\n effect=\"light\"\r\n placement=\"top\"\r\n >\r\n <div slot=\"content\" style=\"max-width: 500px;\">\r\n {{ milestone.Description }}\r\n </div>\r\n <el-radio-button\r\n :key=\"milestone.Id\"\r\n :label=\"criteria.RubricCriteriaMilestones.length - key\"\r\n />\r\n </el-tooltip>\r\n </el-radio-group>\r\n </div>\r\n <div v-else>\r\n <el-radio-group\r\n v-if=\"criteria.UseAsGrade\"\r\n :id=\"criteria.Id\"\r\n v-model=\"criteriaFeedback[criteriaIndex].Mark\"\r\n style=\"margin-bottom: 10px; min-width: 240px;\"\r\n :disabled=\"action != 0\"\r\n @input=\"saveReview(criteriaIndex)\"\r\n >\r\n <el-tooltip\r\n v-for=\"milestone in criteria.RubricCriteriaMilestones.slice()\"\r\n :key=\"milestone.Id\"\r\n class=\"item\"\r\n effect=\"light\"\r\n placement=\"top\"\r\n >\r\n <div slot=\"content\" style=\"max-width: 500px;\">\r\n {{ milestone.Description }}\r\n </div>\r\n <el-radio-button\r\n :key=\"milestone.Id\"\r\n :label=\"milestone.Value\"\r\n />\r\n </el-tooltip>\r\n </el-radio-group>\r\n </div>\r\n <div>\r\n <el-input\r\n v-if=\"criteria.UseAsGrade || criteria.UseAsTextComment\"\r\n v-model=\"criteriaFeedback[criteriaIndex].Comment\"\r\n :criteria-index=\"criteriaIndex\"\r\n type=\"textarea\"\r\n placeholder=\"Enter text here\"\r\n :rows=\"3\"\r\n :maxlength=\"8000\"\r\n class=\"criteria-comment\"\r\n :readonly=\"action != 0\"\r\n />\r\n </div>\r\n </div>\r\n </el-card>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </rs-panes>\r\n </div>\r\n </div>\r\n</template>\r\n\r\n<script>\r\nimport * as pdfService from '@/services/pdf.service'\r\nimport * as assignmentService from '@/services/assignment.service'\r\nimport * as reviewService from '@/services/review.service'\r\nimport * as rubricService from '@/services/rubric.service'\r\nimport CodeDiff from 'vue-code-diff'\r\n// eslint-disable-next-line no-unused-vars\r\nimport SemanticDiff from 'vue-diff-match-patch/src/components/SemanticDiff'\r\nimport { Notification } from 'element-ui'\r\nimport ResSplitPane from 'vue-resize-split-pane'\r\nimport * as urlUtils from '@/utils/url-utils'\r\nimport { Splitpanes, Pane } from 'splitpanes'\r\nexport default {\r\n\tcomponents: {\r\n\t\tCodeDiff,\r\n\t\tSemanticDiff,\r\n\t\tSplitpanes,\r\n\t\tPane,\r\n\t\t'rs-panes': ResSplitPane\r\n\t},\r\n\tdata() {\r\n\t\treturn {\r\n\t\t\tusername: this.$store.state.auth.user.UserName,\r\n\t\t\ttermCode: this.$store.state.enrollment.termCode,\r\n\t\t\torgCode: this.$store.state.enrollment.orgCode,\r\n\t\t\tclassCode: this.$store.state.enrollment.currentCourse.ClassCode,\r\n\t\t\tnewProjects: [],\r\n\t\t\tnewProject: null,\r\n\t\t\tbaseProjects: [],\r\n\t\t\tbaseProject: null,\r\n\t\t\ttaskId: null,\r\n\t\t\tstudents: [],\r\n\t\t\tcurrentPeer: null,\r\n\t\t\tpeers: [],\r\n\t\t\tcurrentStudent: null,\r\n\t\t\trubricCriteria: null,\r\n\t\t\tcriteriaFeedback: null,\r\n\t\t\treview: null,\r\n\t\t\treviewType: null,\r\n\t\t\tstatusType: 'danger',\r\n\t\t\tsubmitTooltip: 'Your feedback is saved, but has not yet been submitted.',\r\n\t\t\teventAdded: false,\r\n\t\t\tcIndex: null,\r\n\t\t\ttext1: '',\r\n\t\t\ttext2: '',\r\n\t\t\tdiffType: 'semantic',\r\n\t\t\tviewType: 'diff',\r\n\t\t\taction: 0,\r\n\t\t\tactions: [{\r\n\t\t\t\tId: 0,\r\n\t\t\t\tLabel: 'Score doc 2'\r\n\t\t\t}, {\r\n\t\t\t\tId: 1,\r\n\t\t\t\tLabel: 'View doc 1 Self Review'\r\n\t\t\t}, {\r\n\t\t\t\tId: 2,\r\n\t\t\t\tLabel: 'View doc 2 Self Review'\r\n\t\t\t}, {\r\n\t\t\t\tId: 3,\r\n\t\t\t\tLabel: 'View doc 1 Instructor Review'\r\n\t\t\t}, {\r\n\t\t\t\tId: 4,\r\n\t\t\t\tLabel: 'View doc 1 Peer Review'\r\n\t\t\t}],\r\n\t\t\tpdfControl: '',\r\n\t\t\tmyapi: null,\r\n\t\t\tpageNum: 1,\r\n\t\t\ttotalPageNumber: null,\r\n\t\t\tzoomValue: 140,\r\n\t\t\tuploadedDate: null,\r\n\t\t\ttexts: null,\r\n\t\t\tdocId: null,\r\n\t\t\tcompareDocId1: null,\r\n\t\t\tcompareDocId2: null\r\n\t\t}\r\n\t},\r\n\tcomputed: {\r\n\t\tfullWidth() {\r\n\t\t\tconst mainNav = document.querySelector('#main-nav')\r\n\t\t\tif (mainNav && !mainNav.classList.contains('full-width')) {\r\n\t\t\t\treturn ''\r\n\t\t\t} else { return 'full-width' }\r\n\t\t}\r\n\t},\r\n\tmounted() {\r\n\t\tconst resizer = document.querySelector('.columnsres')\r\n\t\tresizer.addEventListener('mousedown', function(e) {\r\n\t\t\tdocument.querySelector('#resize_overlay').style.display = 'block'\r\n\t\t})\r\n\t\tdocument.addEventListener('mouseup', function(e) {\r\n\t\t\tdocument.querySelector('#resize_overlay').style.display = 'none'\r\n\t\t})\r\n\r\n\t\tconst arrowBtn = document.querySelector('#menu-toggle')\r\n\t\tif (arrowBtn.classList.contains('is-active')) {\r\n\t\t\tarrowBtn.click()\r\n\t\t}\r\n\t},\r\n\tcreated() {\r\n\t\tthis.students = this.students = this.$store.state.viewAs.students\r\n\t},\r\n\tmethods: {\r\n\t\tasync onDiffTypeChange() {\r\n\t\t\tif (this.diffType == 'doc') {\r\n\t\t\t\tawait pdfService.getPdf(this.texts.baseTextDocId)\r\n\t\t\t\t\t.then(pdf => {\r\n\t\t\t\t\t\tthis.compareDocId1 = this.texts.baseTextDocId\r\n\t\t\t\t\t\t// Display the pdf\r\n\t\t\t\t\t\tconst pdfDocument = document.querySelector('#pdfDocumentCompare1')\r\n\t\t\t\t\t\tpdfDocument.innerHTML = pdf\r\n\t\t\t\t\t\t// Setup the doc after being loaded\r\n\t\t\t\t\t\tconst that = this\r\n\t\t\t\t\t\tdocument.getElementById('pdfDocumentCompare1').onload = function() {\r\n\t\t\t\t\t\t\tthat.PdfAttachListeners('PdfWebControl')\r\n\t\t\t\t\t\t\tsetTimeout(function() {\r\n\t\t\t\t\t\t\t\t// eslint-disable-next-line no-undef\r\n\t\t\t\t\t\t\t\tconst myapi = new PdfWebControlApi('PdfWebControl')\r\n\t\t\t\t\t\t\t\tthat.totalPageNumber = myapi.getPageCount()\r\n\t\t\t\t\t\t\t}, 500)\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}).catch((error) => {\r\n\t\t\t\t\t\tconsole.log(error)\r\n\t\t\t\t\t})\r\n\r\n\t\t\t\tawait pdfService.getComparePdf(this.texts.newTextDocId)\r\n\t\t\t\t\t.then(pdf => {\r\n\t\t\t\t\t\tthis.compareDocId2 = this.texts.newTextDocId\r\n\t\t\t\t\t\t// Display the pdf\r\n\t\t\t\t\t\tconst pdfDocument = document.querySelector('#pdfDocumentCompare2')\r\n\t\t\t\t\t\tpdfDocument.innerHTML = pdf\r\n\t\t\t\t\t\t// Setup the doc after being loaded\r\n\t\t\t\t\t\tconst that = this\r\n\t\t\t\t\t\tdocument.getElementById('pdfDocumentCompare2').onload = function() {\r\n\t\t\t\t\t\t\tthat.PdfAttachListeners('PdfWebControlCompare')\r\n\t\t\t\t\t\t\tsetTimeout(function() {\r\n\t\t\t\t\t\t\t\t// eslint-disable-next-line no-undef\r\n\t\t\t\t\t\t\t\tconst myapi = new PdfWebControlApi('PdfWebControlCompare')\r\n\t\t\t\t\t\t\t\tthat.totalPageNumber = myapi.getPageCount()\r\n\t\t\t\t\t\t\t}, 500)\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}).catch((error) => {\r\n\t\t\t\t\t\tconsole.log(error)\r\n\t\t\t\t\t})\r\n\t\t\t}\r\n\t\t},\r\n\t\tasync onStudentChange() {\r\n\t\t\tthis.review = null\r\n\t\t\tthis.criteriaFeedback = null\r\n\t\t\tthis.rubricCriteria = null\r\n\t\t\tthis.baseProjects = []\r\n\t\t\tthis.baseProject = null\r\n\t\t\tthis.newProjects = []\r\n\t\t\tthis.newProject = null\r\n\t\t\tthis.taskId = null\r\n\t\t\tthis.text1 = ''\r\n\t\t\tthis.text2 = ''\r\n\t\t\tthis.viewType = 'diff'\r\n\t\t\tthis.setBaseTextSelection()\r\n\t\t},\r\n\t\tasync onBaseTextChange() {\r\n\t\t\tthis.review = null\r\n\t\t\tthis.criteriaFeedback = null\r\n\t\t\tthis.rubricCriteria = null\r\n\t\t\tthis.newProjects = []\r\n\t\t\tthis.newProject = null\r\n\t\t\tthis.taskId = null\r\n\t\t\tthis.text1 = ''\r\n\t\t\tthis.text2 = ''\r\n\t\t\tthis.viewType = 'diff'\r\n\t\t\tthis.setNewTextSelection()\r\n\t\t},\r\n\t\tasync onNewTextChange() {\r\n\t\t\tthis.review = null\r\n\t\t\tthis.criteriaFeedback = null\r\n\t\t\tthis.rubricCriteria = null\r\n\t\t\tthis.taskId = null\r\n\t\t\tthis.text1 = ''\r\n\t\t\tthis.text2 = ''\r\n\t\t\tthis.viewType = 'diff'\r\n\t\t\tawait this.getTextsToCompare()\r\n\r\n\t\t\tif (this.text1 != '' && this.text2 != '') { await this.getNewTextReviews() }\r\n\t\t},\r\n\t\tasync onActionChange() {\r\n\t\t\tthis.review = null\r\n\t\t\tthis.criteriaFeedback = null\r\n\t\t\tthis.rubricCriteria = null\r\n\t\t\tthis.peers = []\r\n\t\t\tswitch (this.action) {\r\n\t\t\t\tcase 0:\r\n\t\t\t\t\tawait this.getNewTextReviews()\r\n\t\t\t\t\tbreak\r\n\t\t\t\tcase 1:\r\n\t\t\t\t\tawait this.getBaseTextSelfReview()\r\n\t\t\t\t\tbreak\r\n\t\t\t\tcase 2:\r\n\t\t\t\t\tawait this.getNewTextSelfReview()\r\n\t\t\t\t\tbreak\r\n\t\t\t\tcase 3:\r\n\t\t\t\t\tawait this.getBaseTextInstructorReview()\r\n\t\t\t\t\tbreak\r\n\t\t\t\tcase 4:\r\n\t\t\t\t\tawait this.setUpPeersSelection()\r\n\t\t\t\t\tbreak\r\n\t\t\t\tdefault:\r\n\t\t\t\t\tbreak\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\tasync onPeerChange() {\r\n\t\t\t// let reviewerId = this.currentPeer.UserName.split(';')[1];\r\n\t\t\tlet latestReview\r\n\t\t\tconst reviews = await reviewService.getReview(this.termCode, this.orgCode, this.classCode,\r\n\t\t\t\tthis.baseProject.Id, this.currentPeer.Id, this.currentStudent, 'Student', 'peer_review')\r\n\t\t\tif (reviews.length > 0) {\r\n\t\t\t\tlatestReview = reviews[0]\r\n\t\t\t}\r\n\t\t\tawait this.displayReview(latestReview)\r\n\t\t},\r\n\t\tasync getTextsToCompare() {\r\n\t\t\tconst getTextsModel = new URLSearchParams()\r\n\t\t\tgetTextsModel.append('orgCode', this.orgCode)\r\n\t\t\tgetTextsModel.append('termCode', this.termCode)\r\n\t\t\tgetTextsModel.append('classCode', this.classCode)\r\n\t\t\tgetTextsModel.append('studentId', this.currentStudent)\r\n\t\t\tgetTextsModel.append('userId', this.username)\r\n\t\t\tgetTextsModel.append('baseProjectId', this.baseProject.Id)\r\n\t\t\tgetTextsModel.append('newProjectId', this.newProject.Id)\r\n\t\t\tconst texts = await pdfService.getTexts(getTextsModel)\r\n\t\t\tconsole.log(texts)\r\n\t\t\tthis.texts = texts\r\n\t\t\tif (texts.baseText && texts.newText) {\r\n\t\t\t\tthis.text1 = texts.baseText\r\n\t\t\t\tthis.text2 = texts.newText\r\n\t\t\t\tthis.docId = texts.newTextDocId\r\n\t\t\t\tthis.uploadedDate = texts.newTextUploadedDate\r\n\t\t\t} else {\r\n\t\t\t\tNotification.error({\r\n\t\t\t\t\tduration: 6000,\r\n\t\t\t\t\ttitle: 'Error',\r\n\t\t\t\t\tmessage: 'No submission found!'\r\n\t\t\t\t})\r\n\t\t\t}\r\n\t\t},\r\n\t\tasync getNewTextReviews() {\r\n\t\t\tlet latestReview\r\n\t\t\tconst reviews = await reviewService.getReview(this.termCode, this.orgCode, this.classCode,\r\n\t\t\t\tthis.newProject.Id, this.username, this.currentStudent, 'Instructor', 'instructor_review')\r\n\t\t\tif (reviews.length > 0) {\r\n\t\t\t\tlatestReview = reviews[0]\r\n\t\t\t\tthis.docId = latestReview.DocId\r\n\t\t\t\tthis.uploadedDate = latestReview.UploadedDate\r\n\t\t\t\tthis.taskId = latestReview.TaskId\r\n\t\t\t} else {\r\n\t\t\t\tvar tasks = this.newProject.Tasks.filter(t => t.Type == 'instructor_review')\r\n\t\t\t\tif (tasks != null && tasks.length > 0) {\r\n\t\t\t\t\tthis.taskId = tasks[0].Id\r\n\t\t\t\t} else {\r\n\t\t\t\t\tthis.taskId = null\r\n\t\t\t\t\tNotification.warning({\r\n\t\t\t\t\t\tduration: 6000,\r\n\t\t\t\t\t\ttitle: 'Warning',\r\n\t\t\t\t\t\tmessage: 'No doc 2 Instructor Review Task found!'\r\n\t\t\t\t\t})\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\t//console.log(this.taskId) //IX we should have console actions flagged somehow...\r\n\t\t\tif (this.taskId != null) await this.displayReview(latestReview)\r\n\t\t},\r\n\t\tasync getBaseTextSelfReview() {\r\n\t\t\tlet latestReview\r\n\t\t\tconst reviews = await reviewService.getReview(this.termCode, this.orgCode, this.classCode,\r\n\t\t\t\tthis.baseProject.Id, this.currentStudent, this.currentStudent, 'Student', 'self_review')\r\n\t\t\tif (reviews.length > 0) {\r\n\t\t\t\tlatestReview = reviews[0]\r\n\t\t\t\tawait this.displayReview(latestReview)\r\n\t\t\t} else {\r\n\t\t\t\tNotification.warning({\r\n\t\t\t\t\tduration: 6000,\r\n\t\t\t\t\ttitle: 'Warning',\r\n\t\t\t\t\tmessage: 'No doc 1 Self Review found!'\r\n\t\t\t\t})\r\n\t\t\t}\r\n\t\t},\r\n\t\tasync getNewTextSelfReview() {\r\n\t\t\tlet latestReview\r\n\t\t\tconst reviews = await reviewService.getReview(this.termCode, this.orgCode, this.classCode,\r\n\t\t\t\tthis.newProject.Id, this.currentStudent, this.currentStudent, 'Student', 'self_review')\r\n\t\t\tif (reviews.length > 0) {\r\n\t\t\t\tlatestReview = reviews[0]\r\n\t\t\t\tawait this.displayReview(latestReview)\r\n\t\t\t} else {\r\n\t\t\t\tNotification.warning({\r\n\t\t\t\t\tduration: 6000,\r\n\t\t\t\t\ttitle: 'Warning',\r\n\t\t\t\t\tmessage: 'No doc 2 Self Review found!'\r\n\t\t\t\t})\r\n\t\t\t}\r\n\t\t},\r\n\t\tasync getBaseTextInstructorReview() {\r\n\t\t\tlet latestReview\r\n\t\t\tconst reviews = await reviewService.getReview(this.termCode, this.orgCode, this.classCode,\r\n\t\t\t\tthis.baseProject.Id, this.username, this.currentStudent, 'Instructor', 'instructor_review')\r\n\t\t\tif (reviews.length > 0) {\r\n\t\t\t\tlatestReview = reviews[0]\r\n\t\t\t\tawait this.displayReview(latestReview)\r\n\t\t\t} else {\r\n\t\t\t\tNotification.warning({\r\n\t\t\t\t\tduration: 6000,\r\n\t\t\t\t\ttitle: 'Warning',\r\n\t\t\t\t\tmessage: 'No doc 1 Instructor Review found!'\r\n\t\t\t\t})\r\n\t\t\t}\r\n\t\t},\r\n\t\tasync displayReview(review) {\r\n\t\t\tthis.review = review\r\n\t\t\tconst rubricId = this.newProject.RubricId\r\n\t\t\tif (review && review.EmailSent == 'Y') {\r\n\t\t\t\tthis.statusType = 'primary'\r\n\t\t\t\tthis.submitTooltip = 'Your feedback is submitted.'\r\n\t\t\t} else if (review && review.IsSaved == 'Y') {\r\n\t\t\t\tthis.statusType = 'danger'\r\n\t\t\t\tthis.submitTooltip = 'Your feedback is saved, but has not yet been submitted.'\r\n\t\t\t} else {\r\n\t\t\t\tthis.statusType = 'info'\r\n\t\t\t}\r\n\r\n\t\t\t// Get the rubric from current assignment.\r\n\t\t\tawait rubricService.getRubricById(rubricId)\r\n\t\t\t\t.then(rubric => {\r\n\t\t\t\t\tthis.rubricCriteria = rubric.RubricCriterias\r\n\t\t\t\t\tif (review) {\r\n\t\t\t\t\t\tif (review.ReviewData.length == 0) { this.criteriaFeedback = this.getDefaultCriteriaFeedback(rubric.RubricCriterias) } else { this.criteriaFeedback = review.ReviewData }\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tthis.criteriaFeedback = this.getDefaultCriteriaFeedback(rubric.RubricCriterias)\r\n\t\t\t\t\t}\r\n\t\t\t\t}).catch((error) => {\r\n\t\t\t\t\tconsole.log(error)\r\n\t\t\t\t})\r\n\r\n\t\t\tconst criteriaComments = document.querySelectorAll('.el-textarea__inner')\r\n\t\t\tconst that = this\r\n\t\t\tcriteriaComments.forEach(function(item) {\r\n\t\t\t\tconst criteriaIndex = item.getAttribute('criteria-index')\r\n\r\n\t\t\t\titem.addEventListener('focus', function(e) {\r\n\t\t\t\t\tthat.cIndex = this.getAttribute('criteria-index')\r\n\t\t\t\t})\r\n\r\n\t\t\t\titem.addEventListener('focusout', function(e) {\r\n\t\t\t\t\tlet scoreClicked = false\r\n\t\t\t\t\tif (!that.review) {\r\n\t\t\t\t\t\t// Check if reviewer click on a criteria score after focus out\r\n\t\t\t\t\t\tconst nextTarget = e.relatedTarget\r\n\t\t\t\t\t\tif (nextTarget && nextTarget.classList && nextTarget.classList.length > 0 &&\r\n\t\t\t\t\t\t e.relatedTarget.classList[0] == 'el-radio-button') { scoreClicked = true }\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif (!scoreClicked) {\r\n\t\t\t\t\t\tthat.saveReview(criteriaIndex)\r\n\t\t\t\t\t}\r\n\t\t\t\t})\r\n\t\t\t})\r\n\t\t},\r\n\t\tasync setUpPeersSelection() {\r\n\t\t\t// Get all students who have uploaded paper for this assignment\r\n\t\t\tconst reviewers = await reviewService.getReviewers(this.termCode, this.orgCode, this.classCode,\r\n\t\t\t\tthis.currentStudent, this.baseProject.Id)\r\n\t\t\tif (reviewers.length > 0) {\r\n\t\t\t\tconst that = this\r\n\t\t\t\tthis.peers = reviewers.filter(function(el) {\r\n\t\t\t\t\treturn el.Id != that.username\r\n\t\t\t\t})\r\n\r\n\t\t\t\tif (this.peers.length == 0) {\r\n\t\t\t\t\tNotification.warning({\r\n\t\t\t\t\t\tduration: 6000,\r\n\t\t\t\t\t\ttitle: 'Warning',\r\n\t\t\t\t\t\tmessage: 'No doc 1 Peer Review found!'\r\n\t\t\t\t\t})\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tNotification.warning({\r\n\t\t\t\t\tduration: 6000,\r\n\t\t\t\t\ttitle: 'Warning',\r\n\t\t\t\t\tmessage: 'No doc 1 Peer Review found!'\r\n\t\t\t\t})\r\n\t\t\t}\r\n\t\t},\r\n\t\tgetDefaultCriteriaFeedback(criteria) {\r\n\t\t\tconst criteriaFeedbacks = []\r\n\t\t\tfor (let i = 0; i < criteria.length; i++) {\r\n\t\t\t\tconst criteriaFeedback = {\r\n\t\t\t\t\tCriteriaId: criteria[i].Id,\r\n\t\t\t\t\tMark: 999,\r\n\t\t\t\t\tComment: '',\r\n\t\t\t\t\tAudioPath: null,\r\n\t\t\t\t\tLetterGrade: null\r\n\t\t\t\t}\r\n\t\t\t\tcriteriaFeedbacks.push(criteriaFeedback)\r\n\t\t\t}\r\n\t\t\treturn criteriaFeedbacks\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Auto save the review before a page refresh.\r\n\t\tsaveReviewBeforeRefresh() {\r\n\t\t\tif (this.review != null) {\r\n\t\t\t\tif (this.cIndex != null) {\r\n\t\t\t\t\tconsole.log(this.criteriaFeedback[this.cIndex])\r\n\t\t\t\t\t// Update this review feedback\r\n\t\t\t\t\tconst api = urlUtils.getBaseApiURL() + '/review/data'\r\n\t\t\t\t\tconst xmlhttp = new XMLHttpRequest()\r\n\t\t\t\t\txmlhttp.open('PUT', api, false)// the false is for making the call synchronous\r\n\t\t\t\t\txmlhttp.setRequestHeader('Content-Type', 'application/json;charset=UTF-8')\r\n\t\t\t\t\txmlhttp.send(JSON.stringify(this.criteriaFeedback[this.cIndex]))\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tif (this.cIndex != null && this.criteriaFeedback[this.cIndex].Comment != '') {\r\n\t\t\t\t\t// Create new review\r\n\t\t\t\t\t// eslint-disable-next-line no-unused-vars\r\n\t\t\t\t\tconst reviewType = 'instructor_review'\r\n\t\t\t\t\tconst lastActivityDate = this.getlastActivityDate()\r\n\t\t\t\t\tconst lastCriteriaScore = this.criteriaFeedback[this.criteriaFeedback.length - 1].Mark\r\n\t\t\t\t\tconst holisticScore = lastCriteriaScore == null ? 999 : lastCriteriaScore\r\n\t\t\t\t\tconst newReview = {\r\n\t\t\t\t\t\tDocId: this.docId,\r\n\t\t\t\t\t\tTermCode: this.termCode,\r\n\t\t\t\t\t\tOrgCode: this.orgCode,\r\n\t\t\t\t\t\tClassCode: this.classCode,\r\n\t\t\t\t\t\tRevieweeId: this.currentStudent,\r\n\t\t\t\t\t\tAssignmentId: this.newProject.Id,\r\n\t\t\t\t\t\tReviewerId: this.username,\r\n\t\t\t\t\t\tReviewType: 'instructor_review',\r\n\t\t\t\t\t\tUploadedDate: this.getDateStr(this.uploadedDate),\r\n\t\t\t\t\t\tIsSaved: 'Y',\r\n\t\t\t\t\t\tEmailSent: 'N',\r\n\t\t\t\t\t\tLastActivityDate: lastActivityDate,\r\n\t\t\t\t\t\tReviewerRole: 'Instructor',\r\n\t\t\t\t\t\tFinalGrade: 'NG',\r\n\t\t\t\t\t\tPercentScore: 0,\r\n\t\t\t\t\t\tHolisticScore: holisticScore,\r\n\t\t\t\t\t\tReviewData: this.criteriaFeedback,\r\n\t\t\t\t\t\tTaskId: this.taskId\r\n\t\t\t\t\t}\r\n\t\t\t\t\tconst api = urlUtils.getBaseApiURL() + '/review'\r\n\t\t\t\t\tconst xmlhttp = new XMLHttpRequest()\r\n\t\t\t\t\txmlhttp.open('POST', api, false)// the false is for making the call synchronous\r\n\t\t\t\t\txmlhttp.setRequestHeader('Content-Type', 'application/json;charset=UTF-8')\r\n\t\t\t\t\txmlhttp.send(JSON.stringify(newReview))\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Auto save the review.\r\n\t\t// @arg The criteria index.\r\n\t\tsaveReview(criteriaIndex) {\r\n\t\t\tif (this.action == 0) {\r\n\t\t\t\tif (this.review != null) {\r\n\t\t\t\t// Update this review feedback\r\n\t\t\t\t\treviewService.updateReviewFeeback(this.criteriaFeedback[criteriaIndex])\r\n\t\t\t\t\t\t.then(review => {\r\n\t\t\t\t\t\t\tconst message = document.getElementById('savedMessage')\r\n\t\t\t\t\t\t\tmessage.style.display = 'inline-block'\r\n\t\t\t\t\t\t\tsetTimeout(function() {\r\n\t\t\t\t\t\t\t\tif (message.style.display == 'inline-block') { message.style.display = 'none' }\r\n\t\t\t\t\t\t\t}, 3000)\r\n\t\t\t\t\t\t}).catch((error) => {\r\n\t\t\t\t\t\t\tconsole.log(error)\r\n\t\t\t\t\t\t\tNotification.error({\r\n\t\t\t\t\t\t\t\tduration: 6000,\r\n\t\t\t\t\t\t\t\ttitle: 'Error',\r\n\t\t\t\t\t\t\t\tmessage: 'Your feedback was not saved.'\r\n\t\t\t\t\t\t\t})\r\n\t\t\t\t\t\t})\r\n\t\t\t\t} else {\r\n\t\t\t\t// Create new review\r\n\t\t\t\t// eslint-disable-next-line no-unused-vars\r\n\t\t\t\t\tconst reviewType = 'instructor_review'\r\n\t\t\t\t\tconst lastActivityDate = this.getlastActivityDate()\r\n\t\t\t\t\tconst lastCriteriaScore = this.criteriaFeedback[this.criteriaFeedback.length - 1].Mark\r\n\t\t\t\t\tconst holisticScore = lastCriteriaScore == null ? 999 : lastCriteriaScore\r\n\t\t\t\t\tconst newReview = {\r\n\t\t\t\t\t\tDocId: this.docId,\r\n\t\t\t\t\t\tTermCode: this.termCode,\r\n\t\t\t\t\t\tOrgCode: this.orgCode,\r\n\t\t\t\t\t\tClassCode: this.classCode,\r\n\t\t\t\t\t\tRevieweeId: this.currentStudent,\r\n\t\t\t\t\t\tAssignmentId: this.newProject.Id,\r\n\t\t\t\t\t\tReviewerId: this.username,\r\n\t\t\t\t\t\tReviewType: 'instructor_review',\r\n\t\t\t\t\t\tUploadedDate: this.getDateStr(this.uploadedDate),\r\n\t\t\t\t\t\tIsSaved: 'Y',\r\n\t\t\t\t\t\tEmailSent: 'N',\r\n\t\t\t\t\t\tLastActivityDate: lastActivityDate,\r\n\t\t\t\t\t\tReviewerRole: 'Instructor',\r\n\t\t\t\t\t\tFinalGrade: 'NG',\r\n\t\t\t\t\t\tPercentScore: 0,\r\n\t\t\t\t\t\tHolisticScore: holisticScore,\r\n\t\t\t\t\t\tReviewData: this.criteriaFeedback,\r\n\t\t\t\t\t\tTaskId: this.taskId\r\n\t\t\t\t\t}\r\n\t\t\t\t\treviewService.createNewReview(newReview)\r\n\t\t\t\t\t\t.then(review => {\r\n\t\t\t\t\t\t\tthis.review = review\r\n\t\t\t\t\t\t\tthis.criteriaFeedback = review.ReviewData\r\n\t\t\t\t\t\t\tthis.statusType = 'danger'\r\n\t\t\t\t\t\t\tthis.submitTooltip = 'Your feedback is saved, but has not yet been submitted.'\r\n\t\t\t\t\t\t\tconst message = document.getElementById('savedMessage')\r\n\t\t\t\t\t\t\tmessage.style.display = 'inline-block'\r\n\t\t\t\t\t\t\tsetTimeout(function() {\r\n\t\t\t\t\t\t\t\tif (message.style.display == 'inline-block') { message.style.display = 'none' }\r\n\t\t\t\t\t\t\t}, 3000)\r\n\t\t\t\t\t\t}).catch((error) => {\r\n\t\t\t\t\t\t\tconsole.log(error)\r\n\t\t\t\t\t\t\tNotification.error({\r\n\t\t\t\t\t\t\t\tduration: 6000,\r\n\t\t\t\t\t\t\t\ttitle: 'Error',\r\n\t\t\t\t\t\t\t\tmessage: 'Your feedback was not saved.'\r\n\t\t\t\t\t\t\t})\r\n\t\t\t\t\t\t})\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Submit a review.\r\n\t\tsubmitReview() {\r\n\t\t\tif (this.review != null) {\r\n\t\t\t\t// Update this review\r\n\t\t\t\tconst review = this.review\r\n\t\t\t\treview.IsSaved = 'N'\r\n\t\t\t\treview.EmailSent = 'Y'\r\n\t\t\t\treview.LastActivityDate = this.getlastActivityDate()\r\n\t\t\t\tconst lastCriteriaScore = this.criteriaFeedback[this.criteriaFeedback.length - 1].Mark\r\n\t\t\t\treview.HolisticScore = lastCriteriaScore == null ? 999 : lastCriteriaScore\r\n\t\t\t\treviewService.updateReview(review)\r\n\t\t\t\t\t.then(updatedReview => {\r\n\t\t\t\t\t\tthis.review = updatedReview\r\n\t\t\t\t\t\tthis.criteriaFeedback = updatedReview.ReviewData\r\n\t\t\t\t\t\tthis.statusType = 'primary'\r\n\t\t\t\t\t\tthis.submitTooltip = 'Your feedback is submitted.'\r\n\t\t\t\t\t\tNotification.success({\r\n\t\t\t\t\t\t\tduration: 6000,\r\n\t\t\t\t\t\t\ttitle: 'Success',\r\n\t\t\t\t\t\t\tmessage: 'Your feedback was submitted successfully.'\r\n\t\t\t\t\t\t})\r\n\t\t\t\t\t\t// eslint-disable-next-line no-undef\r\n\t\t\t\t\t\t// IX this fails. What is this doing? It is commented out in other code as well..\r\n/* \t\t\t\t\t\tconst myapi = new PdfWebControlApi('PdfWebControl')\r\n\t\t\t\t\t\tif (myapi) {\r\n\t\t\t\t\t\t\tmyapi.save()\r\n\t\t\t\t\t\t\tconst that = this\r\n\t\t\t\t\t\t\tsetTimeout(function() {\r\n\t\t\t\t\t\t\t\tpdfService.processCommentText(that.review.DocId)\r\n\t\t\t\t\t\t\t}, 2000)\r\n\t\t\t\t\t\t}\r\n */\t\t\t\t\t}).catch((error) => {\r\n\t\t\t\t\t\tconsole.log(error)\r\n\t\t\t\t\t\tNotification.error({\r\n\t\t\t\t\t\t\tduration: 6000,\r\n\t\t\t\t\t\t\ttitle: 'Error',\r\n\t\t\t\t\t\t\tmessage: 'Your feedback was not submitted successfully.'\r\n\t\t\t\t\t\t})\r\n\t\t\t\t\t})\r\n\t\t\t}\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Get previous feedback.\r\n\t\t// @arg The previously submitted review.\r\n\t\tgetPreviousFeedback(review) {\r\n\t\t\tconst criteriaFeedbacks = []\r\n\t\t\tfor (let i = 0; i < review.ReviewData.length; i++) {\r\n\t\t\t\tconst criteria = review.ReviewData[i]\r\n\t\t\t\tconst criteriaFeedback = {\r\n\t\t\t\t\tCriteriaId: criteria.CriteriaId,\r\n\t\t\t\t\tMark: criteria.Mark == null ? 999 : criteria.Mark,\r\n\t\t\t\t\tComment: criteria.Comment,\r\n\t\t\t\t\tAudioPath: criteria.AudioPath\r\n\t\t\t\t}\r\n\t\t\t\tcriteriaFeedbacks.push(criteriaFeedback)\r\n\t\t\t}\r\n\t\t\treturn criteriaFeedbacks\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Setup project selection drop down.\r\n\t\tasync setBaseTextSelection() {\r\n\t\t\tlet baseProjects = this.$store.state.assignment.assignments\r\n\t\t\tif (!baseProjects) { baseProjects = await assignmentService.getAssignmentsByClass(this.termCode, this.orgCode, this.classCode) }\r\n\r\n\t\t\tif (baseProjects.length > 0) {\r\n\t\t\t\tthis.baseProjects = baseProjects.filter(function(el) {\r\n\t\t\t\t\treturn el.IsGroupAssignment != true\r\n\t\t\t\t})\r\n\t\t\t} else {\r\n\t\t\t\tNotification.info({\r\n\t\t\t\t\tduration: 6000,\r\n\t\t\t\t\ttitle: 'Info',\r\n\t\t\t\t\tmessage: 'No assignments found for this course.'\r\n\t\t\t\t})\r\n\t\t\t\tdocument.getElementById('full_width_container').style.display = 'none'\r\n\t\t\t}\r\n\t\t},\r\n\t\tasync setNewTextSelection() {\r\n\t\t\tlet newProjects = this.$store.state.assignment.assignments\r\n\t\t\tif (!newProjects) { newProjects = await assignmentService.getAssignmentsByClass(this.termCode, this.orgCode, this.classCode) }\r\n\r\n\t\t\tif (newProjects.length > 0) {\r\n\t\t\t\tconst that = this\r\n\t\t\t\tthis.newProjects = newProjects.filter(function(el) {\r\n\t\t\t\t\treturn el.IsGroupAssignment != true && el.Id != that.baseProject.Id\r\n\t\t\t\t})\r\n\t\t\t} else {\r\n\t\t\t\tNotification.info({\r\n\t\t\t\t\tduration: 6000,\r\n\t\t\t\t\ttitle: 'Info',\r\n\t\t\t\t\tmessage: 'No assignments found for this course.'\r\n\t\t\t\t})\r\n\t\t\t\tdocument.getElementById('full_width_container').style.display = 'none'\r\n\t\t\t}\r\n\t\t},\r\n\t\tasync displayDocument() {\r\n\t\t\tif (this.viewType == 'annotate') {\r\n\t\t\t\tthis.pdfControl = await pdfService.getPdf(this.docId)\r\n\t\t\t\tconst pdfDocument = document.querySelector('#pdfDocument')\r\n\t\t\t\tpdfDocument.innerHTML = this.pdfControl\r\n\t\t\t\t// Setup the doc after being loaded\r\n\t\t\t\tconst that = this\r\n\t\t\t\tdocument.getElementById('PdfWebControl').onload = function() {\r\n\t\t\t\t\tthat.PdfAttachListeners('PdfWebControl')\r\n\t\t\t\t\tsetTimeout(function() {\r\n\t\t\t\t\t\t// eslint-disable-next-line no-undef\r\n\t\t\t\t\t\tconst myapi = new PdfWebControlApi('PdfWebControl')\r\n\t\t\t\t\t\tthat.totalPageNumber = myapi.getPageCount()\r\n\t\t\t\t\t}, 500)\r\n\t\t\t\t\tthat.autoSavePdf()\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tthis.diffType = 'semantic'\r\n\t\t\t}\r\n\t\t},\r\n\t\tPdfAttachListeners(id) {\r\n\t\t\t// const id = 'PdfWebControl'\r\n\t\t\t// eslint-disable-next-line no-undef\r\n\t\t\tconst myapi = new PdfWebControlApi(id)\r\n\t\t\tmyapi.addEventListener('modeChanged', function(evt) {\r\n\t\t\t\tevt.byLine = true\r\n\t\t\t})\r\n\t\t\tconst that = this\r\n\t\t\tmyapi.addEventListener('viewChanged', function(evt) {\r\n\t\t\t\tthat.pageNum = myapi.getPageViewed().getPageNumber()\r\n\t\t\t})\r\n\r\n\t\t\tmyapi.addEventListener('objectAdded', function(evt) {\r\n\t\t\t\tif (evt.obj.getType() == 154) { // Highlight annotation\r\n\t\t\t\t\tconst props = evt.obj.getProperties()\r\n\t\t\t\t\tconst popup = evt.obj.getPopup()\r\n\r\n\t\t\t\t\tevt.obj.setProperties({\r\n\t\t\t\t\t\t'customData': evt.textSelected\r\n\t\t\t\t\t})\r\n\r\n\t\t\t\t\tpopup.setProperties(\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tauthor: 'RAD PDF',\r\n\t\t\t\t\t\t\tsubject: 'In-text Comment',\r\n\t\t\t\t\t\t\ttop: props['top'] - 60,\r\n\t\t\t\t\t\t\tleft: props['left'] - 5,\r\n\t\t\t\t\t\t\theight: 60\r\n\t\t\t\t\t\t})\r\n\t\t\t\t\tmyapi.setMode(myapi.Mode.None)\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (evt.obj.getType() == 100) {\r\n\t\t\t\t\tmyapi.setMode(myapi.Mode.None)\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (evt.obj.getType() == 101) {\r\n\t\t\t\t\tmyapi.setMode(myapi.Mode.None)\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (evt.obj.getType() == myapi.ObjectType.StrikeoutAnnotation) {\r\n\t\t\t\t\tmyapi.setMode(myapi.Mode.None)\r\n\t\t\t\t}\r\n\t\t\t\tif (evt.obj.getType() == myapi.ObjectType.TextAnnotation) {\r\n\t\t\t\t\tmyapi.setMode(myapi.Mode.None)\r\n\t\t\t\t}\r\n\t\t\t})\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Auto save the pdf every 2 minutes.\r\n\t\tautoSavePdf() {\r\n\t\t\tconst that = this\r\n\t\t\twindow.setInterval(function() {\r\n\t\t\t\t// eslint-disable-next-line no-undef\r\n\t\t\t\tconst myapi = new PdfWebControlApi('PdfWebControl')\r\n\t\t\t\tconst iframe = document.getElementById('PdfWebControl')\r\n\t\t\t\tif (iframe) {\r\n\t\t\t\t\tconst innerDoc = iframe.contentDocument || iframe.contentWindow.document\r\n\t\t\t\t\tconst page = myapi.getPageViewed()\r\n\t\t\t\t\tconst objCount = page.getObjectCount()\r\n\r\n\t\t\t\t\tif (objCount == 0) {\r\n\t\t\t\t\t\tif (myapi.getHasUnsavedChanges()) {\r\n\t\t\t\t\t\t\tmyapi.save()\r\n\t\t\t\t\t\t\treturn\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tlet found\r\n\t\t\t\t\tconst pdfe_msgt = innerDoc.getElementById('pdfe_msgt')\r\n\t\t\t\t\tfor (let i = 0; i < objCount; i++) {\r\n\t\t\t\t\t// get this object\r\n\t\t\t\t\t\tconst aTags = innerDoc.getElementsByTagName('div')\r\n\t\t\t\t\t\tfor (let i = 0; i < aTags.length; i++) {\r\n\t\t\t\t\t\t\tif (aTags[i].innerHTML == 'DEL') {\r\n\t\t\t\t\t\t\t\tfound = aTags[i]\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif ((typeof (found) === 'undefined' || found === null) || (typeof (pdfe_msgt) === 'undefined' || pdfe_msgt === null)) {\r\n\t\t\t\t\t\treturn\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif (pdfe_msgt.style.visibility == 'visible') {\r\n\t\t\t\t\t\treturn\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tif (found.style.visibility == 'visible') {\r\n\t\t\t\t\t\t\treturn\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tconst activeEl = innerDoc.activeElement\r\n\t\t\t\t\tif (activeEl) {\r\n\t\t\t\t\t\tconst isEditting = activeEl.getAttribute('contenteditable')\r\n\t\t\t\t\t\tif (isEditting) { return }\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif (myapi.getHasUnsavedChanges()) {\r\n\t\t\t\t\t\tmyapi.save()\r\n\t\t\t\t\t\tif (that.review == null) { that.saveReview() }\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}, 120 * 1000)\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Handles logics when the page number is changed.\r\n\t\tchangePage(id) {\r\n\t\t\t// eslint-disable-next-line no-undef\r\n\t\t\tconst myapi = new PdfWebControlApi(id)\r\n\t\t\tmyapi.setView({ 'page': this.pageNum })\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Handles logics when the zoom out button is clicked.\r\n\t\tzoomOut(id) {\r\n\t\t\t// eslint-disable-next-line no-undef\r\n\t\t\tconst myapi = new PdfWebControlApi(id)\r\n\t\t\tif (myapi) {\r\n\t\t\t\tif (this.zoomValue > 40) { myapi.setView({ 'zoom': this.zoomValue -= 20 }) }\r\n\t\t\t}\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Handles logics when the zoom in button is clicked.\r\n\t\tzoomIn(id) {\r\n\t\t\t// eslint-disable-next-line no-undef\r\n\t\t\tconst myapi = new PdfWebControlApi(id)\r\n\t\t\tif (myapi) {\r\n\t\t\t\tif (this.zoomValue < 200 && this.zoomValue > 20) { myapi.setView({ 'zoom': this.zoomValue += 20 }) }\r\n\t\t\t}\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Handles logics when the zoom fit width button is clicked.\r\n\t\tzoomFitWidth(id) {\r\n\t\t\t// eslint-disable-next-line no-undef\r\n\t\t\tconst myapi = new PdfWebControlApi(id)\r\n\t\t\tif (myapi) {\r\n\t\t\t\tthis.zoomValue = 140\r\n\t\t\t\tmyapi.setView({ 'zoom': -1 })\r\n\t\t\t}\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Handles logics when the download button is clicked.\r\n\t\tasync downloadPdf(id) {\r\n\t\t\tlet docId = this.docId\r\n\t\t\tif (id == 'PdfWebControl') {\r\n\t\t\t\tdocId = this.docId\r\n\t\t\t} else if (id == 'pdfDocumentCompare1') {\r\n\t\t\t\tdocId = this.compareDocId1\r\n\t\t\t} else if (id == 'pdfDocumentCompare2') {\r\n\t\t\t\tdocId = this.compareDocId2\r\n\t\t\t}\r\n\r\n\t\t\tconst payload = new URLSearchParams()\r\n\t\t\tpayload.append('UserId', this.username)\r\n\t\t\tpayload.append('DocId', docId)\r\n\t\t\t// get download data\r\n\t\t\tconst data = await pdfService.getDownloadData(payload)\r\n\t\t\tif (data) {\r\n\t\t\t\tconst arrayBuffer = this.base64ToArrayBuffer(data.DownloadData)\r\n\t\t\t\tconst blob = new Blob([arrayBuffer], { type: 'application/pdf' })\r\n\t\t\t\tconst link = document.createElement('a')\r\n\t\t\t\tlink.href = window.URL.createObjectURL(blob)\r\n\t\t\t\tlink.download = data.DocumentName\r\n\t\t\t\tdocument.body.appendChild(link)\r\n\t\t\t\tlink.click()\r\n\t\t\t\tlink.remove()\r\n\t\t\t} else {\r\n\t\t\t\tNotification.error({\r\n\t\t\t\t\tduration: 6000,\r\n\t\t\t\t\ttitle: 'Error',\r\n\t\t\t\t\tmessage: 'Paper cannot be found.'\r\n\t\t\t\t})\r\n\t\t\t}\r\n\t\t},\r\n\t\tbase64ToArrayBuffer(base64) {\r\n\t\t\tconst binaryString = window.atob(base64)\r\n\t\t\tconst binaryLen = binaryString.length\r\n\t\t\tconst bytes = new Uint8Array(binaryLen)\r\n\t\t\tfor (let i = 0; i < binaryLen; i++) {\r\n\t\t\t\tconst ascii = binaryString.charCodeAt(i)\r\n\t\t\t\tbytes[i] = ascii\r\n\t\t\t}\r\n\t\t\treturn bytes\r\n\t\t},\r\n\t\tsaveAnnotation() {\r\n\t\t\t// eslint-disable-next-line no-undef\r\n\t\t\tconst myapi = new PdfWebControlApi('PdfWebControl')\r\n\t\t\tmyapi.save()\r\n\t\t\tNotification.success({\r\n\t\t\t\tduration: 6000,\r\n\t\t\t\ttitle: 'Success',\r\n\t\t\t\tmessage: 'All annotations have been saved'\r\n\t\t\t})\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Handles logics when the select text button is clicked.\r\n\t\tselectTextPdf(id) {\r\n\t\t\t// eslint-disable-next-line no-undef\r\n\t\t\tconst myapi = new PdfWebControlApi(id)\r\n\t\t\tif (myapi) {\r\n\t\t\t\tmyapi.setMode(myapi.Mode.SelectText)\r\n\t\t\t}\r\n\t\t\treturn false\r\n\t\t},\r\n\t\thandScroll(id) {\r\n\t\t\t// eslint-disable-next-line no-undef\r\n\t\t\tconst myapi = new PdfWebControlApi(id)\r\n\t\t\tif (myapi) {\r\n\t\t\t\tmyapi.setMode(myapi.Mode.HandScroll)\r\n\t\t\t}\r\n\t\t\treturn false\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Handles logics when the highlight button is clicked.\r\n\t\thighlightPdf(id) {\r\n\t\t\t// eslint-disable-next-line no-undef\r\n\t\t\tconst myapi = new PdfWebControlApi(id)\r\n\t\t\tif (myapi) {\r\n\t\t\t\tmyapi.setMode(myapi.Mode.InsertHighlightAnnotation)\r\n\t\t\t}\r\n\t\t\treturn false\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Handles logics when the free text button is clicked.\r\n\t\tfreeTextPdf(id) {\r\n\t\t\t// eslint-disable-next-line no-undef\r\n\t\t\tconst myapi = new PdfWebControlApi(id)\r\n\t\t\tif (myapi) {\r\n\t\t\t\tmyapi.setMode(myapi.Mode.InsertTextShape)\r\n\t\t\t}\r\n\t\t\treturn false\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Handles logics when the strike out button is clicked.\r\n\t\tstrikeOutPdf(id) {\r\n\t\t\t// eslint-disable-next-line no-undef\r\n\t\t\tconst myapi = new PdfWebControlApi(id)\r\n\t\t\tif (myapi) {\r\n\t\t\t\tmyapi.setMode(myapi.Mode.InsertStrikeoutAnnotation)\r\n\t\t\t}\r\n\t\t\treturn false\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Handles logics when the free draw button is clicked.\r\n\t\tfreeDrawPdf(id) {\r\n\t\t\t// eslint-disable-next-line no-undef\r\n\t\t\tconst myapi = new PdfWebControlApi(id)\r\n\t\t\tif (myapi) {\r\n\t\t\t\tmyapi.setMode(myapi.Mode.InsertInkShape)\r\n\t\t\t}\r\n\t\t\treturn false\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Handles logics when the sticky note button is clicked.\r\n\t\tstickyNotePdf(id) {\r\n\t\t\t// eslint-disable-next-line no-undef\r\n\t\t\tconst myapi = new PdfWebControlApi(id)\r\n\t\t\tif (myapi) {\r\n\t\t\t\tmyapi.setMode(myapi.Mode.InsertTextAnnotation)\r\n\t\t\t}\r\n\t\t\treturn false\r\n\t\t},\r\n\t\tgetlastActivityDate() {\r\n\t\t\tconst today = this.$moment()._d\r\n\t\t\treturn today.getFullYear() + '-' + (today.getMonth() + 1) + '-' +\r\n today.getDate() + ' ' + today.getHours() + ':' + today.getMinutes() + ':' + today.getSeconds()\r\n\t\t},\r\n\t\tgetDateStr(date) {\r\n\t\t\tconst thisDate = this.$moment(date)._d\r\n\t\t\treturn thisDate.getFullYear() + '-' + (thisDate.getMonth() + 1) + '-' +\r\n thisDate.getDate() + ' ' + thisDate.getHours() + ':' + thisDate.getMinutes() + ':' + thisDate.getSeconds()\r\n\t\t},\r\n\t\tstdTimezoneOffset(date) {\r\n\t\t\tvar jan = new Date(date.getFullYear(), 0, 1)\r\n\t\t\tvar jul = new Date(date.getFullYear(), 6, 1)\r\n\t\t\treturn Math.max(jan.getTimezoneOffset(), jul.getTimezoneOffset())\r\n\t\t},\r\n\t\tisDstObserved(date) {\r\n\t\t\treturn date.getTimezoneOffset() < this.stdTimezoneOffset(date)\r\n\t\t},\r\n\t\tconvertToEST(clientDate) {\r\n\t\t\tlet offset = -5.0 // EST standard\r\n\t\t\t// Check for daylight saving\r\n\t\t\tif (this.isDstObserved(clientDate)) {\r\n\t\t\t\toffset = -4.0\r\n\t\t\t}\r\n\t\t\tconst utc = clientDate.getTime() + (clientDate.getTimezoneOffset() * 60000)\r\n\t\t\tconst serverDate = new Date(utc + (3600000 * offset))\r\n\t\t\t// return serverDate.toLocaleString()\r\n\t\t\treturn this.getDateStr(serverDate)\r\n\t\t}\r\n\t}\r\n}\r\n</script>\r\n\r\n<style scoped>\r\n\r\nbody{\r\n background: #F1F3FA;\r\n}\r\n#content-wrapper {\r\n margin-left: 65px;\r\n}\r\n\r\n.el-card{\r\n border: 1px solid #d4d5d6;\r\n}\r\n.el-card.is-always-shadow, .el-card.is-hover-shadow:focus, .el-card.is-hover-shadow:hover {\r\n -webkit-box-shadow: 0 2px 12px 0 #F1F3FA;\r\n box-shadow: 0 2px 12px 0 #F1F3FA;\r\n}\r\n\r\n.el-card__header {\r\n padding: 12px 12px;\r\n}\r\n\r\n.el-card__body {\r\n padding: 10px;\r\n}\r\n\r\n.el-textarea__inner {\r\n padding: 5px 10px;\r\n}\r\n\r\n.filter-btn{\r\n text-align: center;\r\n box-shadow: none;\r\n display: inline-block;\r\n padding: 0px 10px;\r\n vertical-align: middle;\r\n touch-action: manipulation;\r\n cursor: pointer;\r\n color: #636363;\r\n}\r\n\r\n.filter-divider{\r\n float: left;\r\n border-right: solid 1px #cccccc;\r\n height: 50px;\r\n}\r\n\r\n#full_width_container.full-width{\r\n position: absolute;\r\n top: 0;\r\n bottom: 2px;\r\n left: 215px;\r\n right: 0;\r\n min-width: 460px;\r\n}\r\n\r\n#full_width_container{\r\n position: absolute;\r\n top: 0;\r\n bottom: 2px;\r\n left: 65px;\r\n right: 0;\r\n min-width: 460px;\r\n}\r\n\r\n#left_side {\r\n top: 0;\r\n bottom: 0;\r\n overflow-y: hidden;\r\n left: 0;\r\n min-width: 650px;\r\n}\r\n\r\n#right_side {\r\n top: 0;\r\n bottom: 0;\r\n right: 0;\r\n font-size: 14px;\r\n font-size: .875rem;\r\n}\r\n.el-input-number--small{\r\n width: 100px;\r\n}\r\n.el-radio-button >>> .el-radio-button__inner{\r\n padding: 12px 15px;\r\n}\r\n\r\n.full_height {\r\n height: 100%;\r\n overflow-x: auto;\r\n}\r\n\r\n#left_side_inner, #submissions_container, #iframe_holder{\r\n overflow: auto;\r\n height: 99%;\r\n width: 100%;\r\n border: 0 none;\r\n}\r\niframe{\r\n width: 100%;\r\n border: 0px;\r\n overflow: auto;\r\n height: 99%;\r\n min-height: 0px;\r\n}\r\n\r\n#width_resizer {\r\n position: absolute;\r\n top: 0;\r\n bottom: 0;\r\n left: 0;\r\n background: #bbb url(https://du11hjcvx0uqb.cloudfront.net/dist/images/splitpane_handle-ew-1b67cccf0f.gif) no-repeat scroll 50% 50%;\r\n cursor: pointer;\r\n width: 7px;\r\n border-right: 1px solid #838383;\r\n z-index: 2;\r\n}\r\n\r\n.right_side_content {\r\n position: absolute;\r\n top: 0;\r\n bottom: 0;\r\n left: 2px;\r\n right: 0;\r\n}\r\n#right_side #rightside_inner {\r\n overflow-y: auto;\r\n position: relative;\r\n}\r\n\r\n.ViewerControls--with-annotations {\r\n height: 49px;\r\n}\r\n.ViewerControls {\r\n background-color: #636363;\r\n color: #fff;\r\n font-size: 14px;\r\n line-height: 24px;\r\n /* overflow-x: auto; */\r\n /* position: absolute;\r\n width: 100%; */\r\n}\r\n.ViewerControls-primary {\r\n -ms-touch-action: none;\r\n touch-action: none;\r\n pointer-events: all;\r\n display: -webkit-box;\r\n display: -ms-flexbox;\r\n display: flex;\r\n}\r\n.ViewerControls--download, .ViewerControls--title {\r\n -webkit-box-flex: 1;\r\n -ms-flex: 1;\r\n flex: 1;\r\n display: -webkit-box;\r\n display: -ms-flexbox;\r\n display: flex;\r\n -webkit-box-align: center;\r\n -ms-flex-align: center;\r\n align-items: center;\r\n white-space: nowrap;\r\n}\r\n\r\n.download-button--button {\r\n background-color: transparent;\r\n font-size: 16px;\r\n border: none;\r\n height: 48px;\r\n width: 48px;\r\n color: white;\r\n cursor: pointer;\r\n}\r\n/* .download-button--button:hover {\r\n background-color: #777777;\r\n} */\r\n\r\n.ViewerControls--page-controls {\r\n display: -webkit-box;\r\n display: -ms-flexbox;\r\n display: flex;\r\n -webkit-box-align: center;\r\n -ms-flex-align: center;\r\n align-items: center;\r\n white-space: nowrap;\r\n}\r\n\r\n.DocumentControls {\r\n display: -webkit-box;\r\n display: -ms-flexbox;\r\n display: flex;\r\n -webkit-box-align: center;\r\n -ms-flex-align: center;\r\n align-items: center;\r\n}\r\n\r\n.AnnotationControlButton {\r\n width: 48px;\r\n padding: 0;\r\n border: 0 none;\r\n color: #fff;\r\n background-color: #636363;\r\n margin-top: 0;\r\n margin-bottom: 0;\r\n cursor: pointer;\r\n -webkit-box-sizing: content-box;\r\n box-sizing: content-box;\r\n -webkit-touch-callout: none;\r\n user-select: none;\r\n -moz-user-select: none;\r\n -webkit-user-select: none;\r\n -ms-user-select: none;\r\n -webkit-tap-highlight-color: rgba(0,0,0,0);\r\n}\r\n.AnnotationControlButton-inner, .AnnotationControlButton-outer {\r\n -webkit-box-sizing: content-box;\r\n box-sizing: content-box;\r\n display: -webkit-box;\r\n display: -ms-flexbox;\r\n display: flex;\r\n}\r\n\r\n.AnnotationControlButton-inner {\r\n margin: 0;\r\n height: 44px;\r\n width: 48px;\r\n -webkit-box-pack: center;\r\n -ms-flex-pack: center;\r\n justify-content: center;\r\n -webkit-box-align: center;\r\n -ms-flex-align: center;\r\n align-items: center;\r\n}\r\n\r\n.AnnotationControlButton-inner {\r\n margin: 0;\r\n height: 44px;\r\n width: 48px;\r\n -webkit-box-pack: center;\r\n -ms-flex-pack: center;\r\n justify-content: center;\r\n -webkit-box-align: center;\r\n -ms-flex-align: center;\r\n align-items: center;\r\n}\r\n.AnnotationControlButton-outer {\r\n width: 44px;\r\n margin: 1px;\r\n border: 1px solid #636363;\r\n}\r\n\r\n.ViewerControls--current-page {\r\n -moz-appearance: textfield;\r\n margin-top: 10px;\r\n border-radius: 3px;\r\n border: 0;\r\n height: 28px;\r\n width: 36px;\r\n background-color: #fff;\r\n color: #636363;\r\n font-size: 14px;\r\n text-align: center;\r\n vertical-align: top;\r\n}\r\n.next-prev{\r\n text-align: center;\r\n -webkit-box-shadow: none;\r\n box-shadow: none;\r\n display: inline-block;\r\n padding: 0px 10px;\r\n vertical-align: middle;\r\n -ms-touch-action: manipulation;\r\n touch-action: manipulation;\r\n cursor: pointer;\r\n border: 0 none;\r\n background: none;\r\n}\r\n\r\n.submission-status-btn{\r\n box-shadow: none;\r\n display: inline-block;\r\n vertical-align: middle;\r\n touch-action: manipulation;\r\n cursor: pointer;\r\n padding: 6.5px 10px;\r\n /* border: 0px none;\r\n background: none; */\r\n}\r\n/* .AnnotationControlButton.selected .AnnotationControlButton-outer {\r\n border-color: #fff;\r\n border: 1px solid #fff;\r\n color: #636363;\r\n}\r\n.AnnotationControlButton.selected {\r\n outline: none;\r\n background-color: #fff;\r\n}\r\n\r\n.AnnotationControlButton:active .AnnotationControlButton-outer {\r\n -webkit-box-shadow: inset 0 0 2px #000;\r\n box-shadow: inset 0 0 2px #000;\r\n}\r\n.AnnotationControlButton:hover:enabled .AnnotationControlButton-outer {\r\n border-color: #777777;\r\n}\r\n.AnnotationControlButton:hover:enabled {\r\n background-color: #777777;\r\n} */\r\n\r\n.d2h-code-linenumber {\r\n display: none !important;\r\n}\r\n\r\n.d2h-code-line-ctn{\r\n white-space: inherit !important;\r\n}\r\n\r\n</style>\r\n\r\n<style>\r\ndel{\r\n\tbackground: #ffe6e6;\r\n}\r\nins {\r\n\tbackground:#e6ffe6;\r\n}\r\n.d2h-code-line-ctn{\r\n white-space: inherit !important;\r\n}\r\n.d2h-code-linenumber {\r\n display: none !important;\r\n}\r\n\r\n.d2h-code-side-linenumber{\r\n display: none !important;\r\n}\r\n\r\n.d2h-code-line {\r\n margin-left: 5px !important;\r\n}\r\n\r\n.d2h-code-side-line{\r\n margin-left: 5px !important;\r\n}\r\n\r\n.d2h-file-side-diff {\r\n border-right: #b9b9b9 solid 1px !important;\r\n}\r\n\r\n.hljs-keyword, .hljs-selector-tag, .hljs-section, .hljs-title, .hljs-name {\r\n color: black !important;\r\n}\r\n\r\n.d2h-diff-table {\r\n font-family: Montserrat,Helvetica,Arial,sans-serif;\r\n}\r\n\r\n.el-radio-button__orig-radio:disabled:checked+.el-radio-button__inner {\r\n background-color: #0A7756;\r\n color: white;\r\n}\r\n.Resizer.columnsres{\r\n z-index: 1;\r\n}\r\n</style>\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./InstructorCompareText.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./InstructorCompareText.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./InstructorCompareText.vue?vue&type=template&id=388b1ccd&scoped=true&\"\nimport script from \"./InstructorCompareText.vue?vue&type=script&lang=js&\"\nexport * from \"./InstructorCompareText.vue?vue&type=script&lang=js&\"\nimport style0 from \"./InstructorCompareText.vue?vue&type=style&index=0&id=388b1ccd&scoped=true&lang=css&\"\nimport style1 from \"./InstructorCompareText.vue?vue&type=style&index=1&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"388b1ccd\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('div',{class:_vm.fullWidth,attrs:{\"id\":\"full_width_container\"}},[_c('splitpanes',{staticClass:\"default-theme\"},[_c('pane',{attrs:{\"size\":\"40\"}},[_c('div',{staticStyle:{\"width\":\"100%\",\"height\":\"40px\",\"border-bottom\":\"1px solid rgb(204, 204, 204)\",\"margin-bottom\":\"5px\"}},[_c('div',[_c('el-button',{staticStyle:{\"text-align\":\"center\",\"-webkit-box-shadow\":\"none\",\"box-shadow\":\"none\",\"display\":\"inline-block\",\"padding\":\"0px\",\"padding-right\":\"10px\",\"vertical-align\":\"middle\",\"-ms-touch-action\":\"manipulation\",\"touch-action\":\"manipulation\",\"cursor\":\"pointer\",\"border\":\"0 none\",\"background\":\"none\",\"margin-top\":\"8px\",\"margin-left\":\"5px\"},attrs:{\"title\":\"Back to Projects\"},on:{\"click\":function($event){return _vm.backToAssignments()}}},[_c('i',{staticClass:\"fas fa-chevron-left\",staticStyle:{\"font-size\":\"25px\"}})]),(_vm.appraisalAssignments)?_c('el-tooltip',{staticClass:\"item\",staticStyle:{\"float\":\"right\",\"width\":\"300px\",\"margin-right\":\"5px\",\"margin-bottom\":\"4px\"},attrs:{\"effect\":\"light\",\"content\":\"Select Project with Self Appraisal\",\"placement\":\"bottom\"}},[(_vm.appraisalAssignments)?_c('el-select',{staticStyle:{\"margin-left\":\"2px\",\"margin-top\":\"5px\",\"width\":\"96%\"},attrs:{\"id\":\"assignments-selection\",\"value-key\":\"Id\",\"filterable\":\"\",\"placeholder\":\"Select Project\",\"no-match-text\":\"No Matching Data\",\"no-data-text\":\"No data\",\"loading-text\":\"Loading\",\"size\":\"mini\"},on:{\"change\":function($event){return _vm.onProjectChange()}},model:{value:(_vm.thisAssignment),callback:function ($$v) {_vm.thisAssignment=$$v},expression:\"thisAssignment\"}},_vm._l((_vm.appraisalAssignments),function(item){return _c('el-option',{key:item.Id,attrs:{\"label\":item.AssignmentName,\"value\":item}})}),1):_vm._e()],1):_vm._e()],1)]),_c('div',{staticStyle:{\"height\":\"100%\",\"min-width\":\"560px\"}},[_c('div',{staticStyle:{\"height\":\"98vh\",\"overflow\":\"hidden\"}},[_c('nav',{staticClass:\"ViewerControls ViewerControls--with-annotations\"},[_c('div',{staticClass:\"ViewerControls-primary\"},[_c('div',{staticClass:\"ViewerControls--download\",staticStyle:{\"flex\":\"0.5\"}},[_c('div',{staticStyle:{\"min-width\":\"50px\",\"text-align\":\"center\"}},[_c('div',[(_vm.action == 'score')?_c('button',{staticClass:\"download-button--button\",attrs:{\"title\":\"Back to Student Submissions\",\"aria-label\":\"Back to Student Submissions\"},on:{\"click\":function($event){return _vm.backToStudentSubmissions()}}},[_c('i',{staticClass:\"fas fa-arrow-left\",staticStyle:{\"font-size\":\"20px\"}})]):_vm._e(),_c('button',{staticClass:\"download-button--button\",attrs:{\"title\":\"Download annotated PDF\",\"aria-label\":\"Download annotated PDF\"},on:{\"click\":function($event){return _vm.downloadPdf('PdfWebControl')}}},[_c('i',{staticClass:\"fas fa-file-download\",staticStyle:{\"font-size\":\"22px\"}})])])])]),_c('div',{staticClass:\"ViewerControls--page-controls\"},[_c('span',{staticClass:\"ViewerControls--page-number\",staticStyle:{\"display\":\"flex\",\"align-items\":\"center\"}},[_vm._v(\"\\n Page\\n \"),_c('div',{staticStyle:{\"padding-left\":\"10px\",\"padding-right\":\"10px\"}},[_c('el-input-number',{attrs:{\"min\":1,\"max\":_vm.totalPageNumber,\"size\":\"small\",\"label\":\"Page\"},on:{\"change\":function($event){return _vm.changePage('PdfWebControl')}},model:{value:(_vm.pageNum),callback:function ($$v) {_vm.pageNum=$$v},expression:\"pageNum\"}})],1),_vm._v(\"\\n of \"+_vm._s(_vm.totalPageNumber)+\"\\n \")]),_c('svg',{staticStyle:{\"margin-left\":\"12px\",\"margin-right\":\"0px\",\"width\":\"2px\",\"height\":\"26px\",\"color\":\"rgb(171, 179, 186)\"},attrs:{\"viewBox\":\"0 0 2 26\"}},[_c('line',{attrs:{\"stroke\":\"currentColor\",\"stroke-dasharray\":\"2, 1\",\"stroke-width\":\"1\",\"x1\":\"1\",\"y1\":\"0\",\"x2\":\"1\",\"y2\":\"26\"}})])]),_c('nav',{staticClass:\"DocumentControls\"},[_c('div',{staticStyle:{\"display\":\"inline-flex\",\"align-items\":\"center\",\"user-select\":\"none\"}},[_c('button',{staticClass:\"AnnotationControlButton\",attrs:{\"aria-label\":\"Zoom Out\",\"title\":\"Zoom Out\",\"aria-disabled\":\"false\"},on:{\"click\":function($event){return _vm.zoomOut('PdfWebControl')}}},[_c('i',{staticClass:\"fas fa-minus\",staticStyle:{\"font-size\":\"20px\"}})]),_c('span',{staticStyle:{\"text-transform\":\"uppercase\",\"font-size\":\"0.75rem\",\"color\":\"rgb(238, 238, 239)\",\"margin-left\":\"4px\",\"margin-right\":\"4px\"},attrs:{\"aria-hidden\":\"true\"}},[_vm._v(\"\\n Zoom\\n \")]),_c('button',{staticClass:\"AnnotationControlButton\",attrs:{\"aria-label\":\"Zoom In\",\"title\":\"Zoom In\",\"aria-disabled\":\"false\"},on:{\"click\":function($event){return _vm.zoomIn('PdfWebControl')}}},[_c('i',{staticClass:\"fas fa-plus\",staticStyle:{\"font-size\":\"20px\"}})])]),_c('svg',{staticStyle:{\"margin-left\":\"2px\",\"margin-right\":\"4px\",\"width\":\"2px\",\"height\":\"26px\",\"color\":\"rgb(171, 179, 186)\"},attrs:{\"viewBox\":\"0 0 2 26\"}},[_c('line',{attrs:{\"stroke\":\"currentColor\",\"stroke-dasharray\":\"2, 1\",\"stroke-width\":\"1\",\"x1\":\"1\",\"y1\":\"0\",\"x2\":\"1\",\"y2\":\"26\"}})]),_c('div',{staticClass:\"ViewerControls--page-controls\"},[_c('button',{staticClass:\"AnnotationControlButton full-screen-button\",attrs:{\"aria-label\":\"Enter Full Screen\",\"title\":\"Zoom Fit Width\"},on:{\"click\":function($event){return _vm.zoomFitWidth('PdfWebControl')}}},[_c('i',{staticClass:\"fas fa-expand\",staticStyle:{\"font-size\":\"20px\"}})]),_c('svg',{staticStyle:{\"margin-left\":\"4px\",\"margin-right\":\"4px\",\"width\":\"2px\",\"height\":\"26px\",\"color\":\"rgb(171, 179, 186)\"},attrs:{\"viewBox\":\"0 0 2 26\"}},[_c('line',{attrs:{\"stroke\":\"currentColor\",\"stroke-dasharray\":\"2, 1\",\"stroke-width\":\"1\",\"x1\":\"1\",\"y1\":\"0\",\"x2\":\"1\",\"y2\":\"26\"}})])])]),_c('nav',{staticClass:\"AnnotationControls\"},[_c('button',{staticClass:\"AnnotationControlButton\",attrs:{\"aria-label\":\"Enter selection mode\",\"title\":\"Hand Scroll\"},on:{\"click\":function($event){return _vm.handScroll('PdfWebControl')}}},[_c('div',{staticClass:\"AnnotationControlButton-outer\"},[_c('div',{staticClass:\"AnnotationControlButton-inner\"},[_c('i',{staticClass:\"far fa-hand-point-up\",staticStyle:{\"font-size\":\"20px\"}})])])]),_c('button',{staticClass:\"AnnotationControlButton\",attrs:{\"aria-label\":\"Enter selection mode\",\"title\":\"Selection\"},on:{\"click\":function($event){return _vm.selectTextPdf('PdfWebControl')}}},[_c('div',{staticClass:\"AnnotationControlButton-outer\"},[_c('div',{staticClass:\"AnnotationControlButton-inner\"},[_c('i',{staticClass:\"fas fa-mouse-pointer\",staticStyle:{\"font-size\":\"18px\"}})])])])])])]),_c('div',{staticStyle:{\"display\":\"block\",\"height\":\"calc(100% - 85px)\",\"overflow\":\"hidden\"},attrs:{\"id\":\"iframe_holder\"}},[_c('div',{staticStyle:{\"resize\":\"vertical\",\"height\":\"100%\"},attrs:{\"id\":\"pdfDocument\"}})])])])]),_c('pane',{attrs:{\"size\":\"40\"}},[_c('div',[_c('div',[_c('div',{staticStyle:{\"width\":\"100%\",\"height\":\"40px\",\"border-bottom\":\"1px solid rgb(204, 204, 204)\",\"margin-bottom\":\"5px\"}},[_c('div',[_c('el-tooltip',{staticClass:\"item\",staticStyle:{\"float\":\"left\",\"width\":\"46%\"},attrs:{\"effect\":\"light\",\"content\":\"Select Feedback Type\",\"placement\":\"bottom\"}},[_c('el-select',{staticStyle:{\"margin-left\":\"5px\",\"margin-top\":\"5px\"},attrs:{\"id\":\"feedback-type-selection\",\"value-key\":\"Id\",\"filterable\":\"\",\"placeholder\":\"Select Feedback\",\"no-match-text\":\"No Matching Data\",\"no-data-text\":\"No data\",\"loading-text\":\"Loading\",\"size\":\"mini\"},on:{\"change\":function($event){return _vm.onFeedbackTypeChange()}},model:{value:(_vm.feedbackType),callback:function ($$v) {_vm.feedbackType=$$v},expression:\"feedbackType\"}},_vm._l((_vm.feedbackTypes),function(item){return _c('el-option',{key:item.Id,attrs:{\"label\":item.Label,\"value\":item.Id}})}),1)],1),(_vm.feedbackType == 0 && _vm.collectiveFeedbacks)?_c('el-tooltip',{staticClass:\"item\",staticStyle:{\"float\":\"right\",\"width\":\"46%\",\"margin-right\":\"5px\"},attrs:{\"effect\":\"light\",\"content\":\"Select Collective Feedback\",\"placement\":\"bottom\"}},[_c('el-select',{staticStyle:{\"margin-left\":\"5px\",\"margin-top\":\"5px\"},attrs:{\"id\":\"feedback-type-selection\",\"value-key\":\"Id\",\"filterable\":\"\",\"placeholder\":\"Select Collective Feedback\",\"no-match-text\":\"No Matching Data\",\"no-data-text\":\"No data\",\"loading-text\":\"Loading\",\"size\":\"mini\"},on:{\"change\":function($event){return _vm.onCollectiveFeedbackChange()}},model:{value:(_vm.collectiveFeedback),callback:function ($$v) {_vm.collectiveFeedback=$$v},expression:\"collectiveFeedback\"}},_vm._l((_vm.collectiveFeedbacks),function(item){return _c('el-option',{key:item.Id,attrs:{\"label\":item.Name,\"value\":item}})}),1)],1):_vm._e(),(_vm.feedbackType == 4)?_c('el-tooltip',{staticClass:\"item\",staticStyle:{\"float\":\"right\",\"width\":\"46%\",\"margin-right\":\"5px\"},attrs:{\"effect\":\"light\",\"content\":\"Select Compare Text\",\"placement\":\"bottom\"}},[(_vm.assignments)?_c('el-select',{staticStyle:{\"margin-left\":\"2%\",\"margin-top\":\"5px\",\"width\":\"96%\"},attrs:{\"id\":\"assignments-selection\",\"value-key\":\"Id\",\"filterable\":\"\",\"placeholder\":\"Select Compare Text\",\"no-match-text\":\"No Matching Data\",\"no-data-text\":\"No data\",\"loading-text\":\"Loading\",\"size\":\"mini\"},on:{\"change\":function($event){return _vm.onCompareTextChange()}},model:{value:(_vm.currentAssignment),callback:function ($$v) {_vm.currentAssignment=$$v},expression:\"currentAssignment\"}},_vm._l((_vm.assignments),function(item){return _c('el-option',{key:item.Id,attrs:{\"label\":item.AssignmentName,\"value\":item}})}),1):_vm._e()],1):_vm._e()],1),(_vm.feedbackType == 3 && _vm.peers.length > 0)?_c('div',{staticStyle:{\"float\":\"right\",\"width\":\"49%\"}},[_c('el-tooltip',{staticClass:\"item\",attrs:{\"effect\":\"light\",\"content\":\"Select a peer\",\"placement\":\"bottom\"}},[_c('el-select',{staticStyle:{\"float\":\"right\",\"margin-right\":\"5px\",\"margin-top\":\"5px\"},attrs:{\"id\":\"students-selection\",\"value-key\":\"UserName\",\"filterable\":\"\",\"placeholder\":\"Select a peer\",\"size\":\"mini\"},on:{\"change\":function($event){return _vm.onPeerChange()}},model:{value:(_vm.currentPeer),callback:function ($$v) {_vm.currentPeer=$$v},expression:\"currentPeer\"}},_vm._l((_vm.peers),function(item){return _c('el-option',{key:item.UserName,attrs:{\"label\":item.LastName + ', ' + item.FirstName,\"value\":item}})}),1)],1)],1):_vm._e()]),(_vm.feedbackType == 4 && _vm.currentAssignment)?_c('div',{staticStyle:{\"height\":\"100%\",\"min-width\":\"560px\"}},[_c('div',{staticStyle:{\"height\":\"98vh\",\"overflow\":\"hidden\"}},[_c('nav',{staticClass:\"ViewerControls ViewerControls--with-annotations\"},[_c('div',{staticClass:\"ViewerControls-primary\"},[_c('div',{staticClass:\"ViewerControls--download\",staticStyle:{\"flex\":\"0.5\"}},[_c('div',{staticStyle:{\"min-width\":\"50px\",\"text-align\":\"center\"}},[_c('div',[(_vm.action == 'score')?_c('button',{staticClass:\"download-button--button\",attrs:{\"title\":\"Back to Student Submissions\",\"aria-label\":\"Back to Student Submissions\"},on:{\"click\":function($event){return _vm.backToStudentSubmissions()}}},[_c('i',{staticClass:\"fas fa-arrow-left\",staticStyle:{\"font-size\":\"20px\"}})]):_vm._e(),_c('button',{staticClass:\"download-button--button\",attrs:{\"title\":\"Download annotated PDF\",\"aria-label\":\"Download annotated PDF\"},on:{\"click\":function($event){return _vm.downloadPdf('PdfWebControlCompare')}}},[_c('i',{staticClass:\"fas fa-file-download\",staticStyle:{\"font-size\":\"22px\"}})])])])]),_c('div',{staticClass:\"ViewerControls--page-controls\"},[_c('span',{staticClass:\"ViewerControls--page-number\",staticStyle:{\"display\":\"flex\",\"align-items\":\"center\"}},[_vm._v(\"\\n Page\\n \"),_c('div',{staticStyle:{\"padding-left\":\"10px\",\"padding-right\":\"10px\"}},[_c('el-input-number',{attrs:{\"min\":1,\"max\":_vm.totalPageNumber,\"size\":\"small\",\"label\":\"Page\"},on:{\"change\":function($event){return _vm.changePage('PdfWebControlCompare')}},model:{value:(_vm.pageNum),callback:function ($$v) {_vm.pageNum=$$v},expression:\"pageNum\"}})],1),_vm._v(\"\\n of \"+_vm._s(_vm.totalPageNumber)+\"\\n \")]),_c('svg',{staticStyle:{\"margin-left\":\"12px\",\"margin-right\":\"0px\",\"width\":\"2px\",\"height\":\"26px\",\"color\":\"rgb(171, 179, 186)\"},attrs:{\"viewBox\":\"0 0 2 26\"}},[_c('line',{attrs:{\"stroke\":\"currentColor\",\"stroke-dasharray\":\"2, 1\",\"stroke-width\":\"1\",\"x1\":\"1\",\"y1\":\"0\",\"x2\":\"1\",\"y2\":\"26\"}})])]),_c('nav',{staticClass:\"DocumentControls\"},[_c('div',{staticStyle:{\"display\":\"inline-flex\",\"align-items\":\"center\",\"user-select\":\"none\"}},[_c('button',{staticClass:\"AnnotationControlButton\",attrs:{\"aria-label\":\"Zoom Out\",\"title\":\"Zoom Out\",\"aria-disabled\":\"false\"},on:{\"click\":function($event){return _vm.zoomOut('PdfWebControlCompare')}}},[_c('i',{staticClass:\"fas fa-minus\",staticStyle:{\"font-size\":\"20px\"}})]),_c('span',{staticStyle:{\"text-transform\":\"uppercase\",\"font-size\":\"0.75rem\",\"color\":\"rgb(238, 238, 239)\",\"margin-left\":\"4px\",\"margin-right\":\"4px\"},attrs:{\"aria-hidden\":\"true\"}},[_vm._v(\"\\n Zoom\\n \")]),_c('button',{staticClass:\"AnnotationControlButton\",attrs:{\"aria-label\":\"Zoom In\",\"title\":\"Zoom In\",\"aria-disabled\":\"false\"},on:{\"click\":function($event){return _vm.zoomIn('PdfWebControlCompare')}}},[_c('i',{staticClass:\"fas fa-plus\",staticStyle:{\"font-size\":\"20px\"}})])]),_c('svg',{staticStyle:{\"margin-left\":\"2px\",\"margin-right\":\"4px\",\"width\":\"2px\",\"height\":\"26px\",\"color\":\"rgb(171, 179, 186)\"},attrs:{\"viewBox\":\"0 0 2 26\"}},[_c('line',{attrs:{\"stroke\":\"currentColor\",\"stroke-dasharray\":\"2, 1\",\"stroke-width\":\"1\",\"x1\":\"1\",\"y1\":\"0\",\"x2\":\"1\",\"y2\":\"26\"}})]),_c('div',{staticClass:\"ViewerControls--page-controls\"},[_c('button',{staticClass:\"AnnotationControlButton full-screen-button\",attrs:{\"aria-label\":\"Enter Full Screen\",\"title\":\"Zoom Fit Width\"},on:{\"click\":function($event){return _vm.zoomFitWidth('PdfWebControlCompare')}}},[_c('i',{staticClass:\"fas fa-expand\",staticStyle:{\"font-size\":\"20px\"}})]),_c('svg',{staticStyle:{\"margin-left\":\"4px\",\"margin-right\":\"4px\",\"width\":\"2px\",\"height\":\"26px\",\"color\":\"rgb(171, 179, 186)\"},attrs:{\"viewBox\":\"0 0 2 26\"}},[_c('line',{attrs:{\"stroke\":\"currentColor\",\"stroke-dasharray\":\"2, 1\",\"stroke-width\":\"1\",\"x1\":\"1\",\"y1\":\"0\",\"x2\":\"1\",\"y2\":\"26\"}})])])]),_c('nav',{staticClass:\"AnnotationControls\"},[_c('button',{staticClass:\"AnnotationControlButton\",attrs:{\"aria-label\":\"Enter selection mode\",\"title\":\"Hand Scroll\"},on:{\"click\":function($event){return _vm.handScroll('PdfWebControlCompare')}}},[_c('div',{staticClass:\"AnnotationControlButton-outer\"},[_c('div',{staticClass:\"AnnotationControlButton-inner\"},[_c('i',{staticClass:\"far fa-hand-point-up\",staticStyle:{\"font-size\":\"20px\"}})])])]),_c('button',{staticClass:\"AnnotationControlButton\",attrs:{\"aria-label\":\"Enter selection mode\",\"title\":\"Selection\"},on:{\"click\":_vm.selectTextPdf}},[_c('div',{staticClass:\"AnnotationControlButton-outer\"},[_c('div',{staticClass:\"AnnotationControlButton-inner\"},[_c('i',{staticClass:\"fas fa-mouse-pointer\",staticStyle:{\"font-size\":\"18px\"}})])])])])])]),_c('div',{staticStyle:{\"display\":\"block\",\"height\":\"calc(100% - 85px)\"},attrs:{\"id\":\"iframe_holder\"}},[_c('div',{staticStyle:{\"resize\":\"vertical\",\"height\":\"100%\"},attrs:{\"id\":\"pdfDocumentCompare\"}})])])]):_vm._e(),(_vm.feedbackType == 0 && _vm.collectiveFeedback)?_c('div',{staticStyle:{\"height\":\"93vh\",\"overflow\":\"auto\"},attrs:{\"id\":\"issuesList\",\"role\":\"tablist\"}},[(_vm.collectiveFeedback.CollectiveFeedbackIssues.length > 0)?_c('div',[_c('el-button',{staticStyle:{\"margin\":\"1%\"},attrs:{\"size\":\"mini\"},on:{\"click\":_vm.expandAll}},[_vm._v(\"\\n Expand All\\n \")]),_c('el-button',{attrs:{\"size\":\"mini\"},on:{\"click\":_vm.collapseAll}},[_vm._v(\"\\n Collapse All\\n \")])],1):_vm._e(),_c('el-collapse',{attrs:{\"accordion\":\"\"},model:{value:(_vm.activeIssues),callback:function ($$v) {_vm.activeIssues=$$v},expression:\"activeIssues\"}},_vm._l((_vm.issues),function(issue){return _c('div',{key:issue.Id,staticStyle:{\"border-radius\":\"4px\",\"border-bottom\":\"1px solid #ebeef5\",\"padding\":\"5px\"}},[(issue.IsActive == 1)?_c('el-collapse-item',{staticStyle:{\"border-radius\":\"4px\"},attrs:{\"name\":issue.Id}},[_c('template',{staticClass:\"greenButton\",staticStyle:{\"background-color\":\"green\"},slot:\"title\"},[_c('div',{staticStyle:{\"width\":\"60%\",\"float\":\"left\"}},[_c('span',{staticClass:\"addIssueMarginLeft\",staticStyle:{\"margin-left\":\"10px\",\"font-size\":\"16px\",\"font-weight\":\"bold\",\"text-overflow\":\"ellipsis\",\"white-space\":\"nowrap\"}},[_vm._v(\"\\n \"+_vm._s(issue.Title)+\"\\n \")])])]),_c('div',{staticClass:\"addIssueMarginLeft\",staticStyle:{\"margin-left\":\"10px\",\"border-top\":\"rgb(204, 204, 204) solid 1px\"}},[_c('span',{staticStyle:{\"font-weight\":\"bold\"}},[_vm._v(\" Issue Category \")]),_c('br'),_vm._v(_vm._s(_vm.getCategory(issue.Category))+\"\\n \")]),_c('div',{staticClass:\"addIssueMarginLeft\",staticStyle:{\"margin-left\":\"10px\"}},[_c('span',{staticStyle:{\"font-weight\":\"bold\"}},[_vm._v(\" Student Example \")]),_c('br'),_c('div',{domProps:{\"innerHTML\":_vm._s(issue.Examples)}})]),_c('div',{staticClass:\"addIssueMarginLeft\",staticStyle:{\"margin-left\":\"10px\"}},[_c('span',{staticStyle:{\"font-weight\":\"bold\"}},[_vm._v(\"\\n Summary: Why this is an issue? \")]),_c('br'),_c('div',{domProps:{\"innerHTML\":_vm._s(issue.Description)}})]),_c('div',{staticClass:\"addIssueMarginLeft\",staticStyle:{\"margin-left\":\"10px\"}},[_c('span',{staticStyle:{\"font-weight\":\"bold\"}},[_vm._v(\"\\n Explanation: How to improve? \")]),_c('br'),_c('div',{domProps:{\"innerHTML\":_vm._s(issue.Explanation)}})])],2):_vm._e()],1)}),0)],1):_vm._e(),(_vm.feedbackType != 0)?_c('div',{attrs:{\"id\":\"rubric\"}},[_c('div',{staticStyle:{\"height\":\"93vh\",\"overflow\":\"auto\"}},_vm._l((_vm.rubricCriteria),function(criteria,criteriaIndex){return _c('el-card',{key:criteria.Id,staticStyle:{\"margin-bottom\":\"5px\",\"margin-left\":\"3px\"}},[_c('div',{staticClass:\"clearfix\",attrs:{\"slot\":\"header\"},slot:\"header\"},[_c('span',{staticStyle:{\"font-size\":\"16px\",\"font-weight\":\"bold\"}},[_vm._v(\"\\n \"+_vm._s(criteria.CriteriaName)+\"\\n \")]),_c('div',{staticStyle:{\"font-size\":\"14px\",\"margin-top\":\"10px\"}},[(\n criteria.Description && criteria.Description != ''\n )?_c('el-input',{staticClass:\"criteria-description\",staticStyle:{\"border\":\"none\"},attrs:{\"value\":criteria.Description,\"readonly\":true,\"type\":\"textarea\",\"autosize\":true,\"maxlength\":8000}}):_vm._e()],1)]),_c('div',[(_vm.termCode == '201908')?_c('div',[(criteria.UseAsGrade)?_c('el-radio-group',{staticStyle:{\"margin-bottom\":\"10px\",\"min-width\":\"240px\"},attrs:{\"id\":criteria.Id,\"disabled\":_vm.action != 0},on:{\"input\":function($event){return _vm.saveReview(criteriaIndex)}},model:{value:(_vm.criteriaFeedback[criteriaIndex].Mark),callback:function ($$v) {_vm.$set(_vm.criteriaFeedback[criteriaIndex], \"Mark\", $$v)},expression:\"criteriaFeedback[criteriaIndex].Mark\"}},_vm._l((criteria.RubricCriteriaMilestones.slice()),function(milestone,key){return _c('el-tooltip',{key:milestone.Id,staticClass:\"item\",attrs:{\"effect\":\"light\",\"placement\":\"top\"}},[_c('div',{staticStyle:{\"max-width\":\"500px\"},attrs:{\"slot\":\"content\"},slot:\"content\"},[_vm._v(\"\\n \"+_vm._s(milestone.Description)+\"\\n \")]),_c('el-radio-button',{key:milestone.Id,attrs:{\"label\":criteria.RubricCriteriaMilestones.length - key}})],1)}),1):_vm._e()],1):_c('div',[(criteria.UseAsGrade)?_c('el-radio-group',{staticStyle:{\"margin-bottom\":\"10px\",\"min-width\":\"240px\"},attrs:{\"id\":criteria.Id,\"disabled\":true},model:{value:(_vm.criteriaFeedback[criteriaIndex].Mark),callback:function ($$v) {_vm.$set(_vm.criteriaFeedback[criteriaIndex], \"Mark\", $$v)},expression:\"criteriaFeedback[criteriaIndex].Mark\"}},_vm._l((criteria.RubricCriteriaMilestones.slice()),function(milestone){return _c('el-tooltip',{key:milestone.Id,staticClass:\"item\",attrs:{\"effect\":\"light\",\"placement\":\"top\"}},[_c('div',{staticStyle:{\"max-width\":\"500px\"},attrs:{\"slot\":\"content\"},slot:\"content\"},[_vm._v(\"\\n \"+_vm._s(milestone.Description)+\"\\n \")]),_c('el-radio-button',{key:milestone.Id,attrs:{\"label\":milestone.Value}})],1)}),1):_vm._e()],1),_c('div',[(\n criteria.UseAsGrade || criteria.UseAsTextComment\n )?_c('el-input',{staticClass:\"criteria-comment-readonly\",attrs:{\"criteria-index\":criteriaIndex,\"type\":\"textarea\",\"placeholder\":\"Enter text here\",\"rows\":3,\"maxlength\":8000,\"readonly\":true},model:{value:(_vm.criteriaFeedback[criteriaIndex].Comment),callback:function ($$v) {_vm.$set(_vm.criteriaFeedback[criteriaIndex], \"Comment\", $$v)},expression:\"criteriaFeedback[criteriaIndex].Comment\"}}):_vm._e()],1)])])}),1)]):_vm._e()])])]),_c('pane',{attrs:{\"size\":\"20\"}},[_c('div',{staticClass:\"splitted-column\"},[_c('div',{staticClass:\"full_height\",attrs:{\"id\":\"rightside_inner\"}},[_c('div',{staticStyle:{\"background\":\"#f2f2f2\",\"height\":\"40px\",\"border-bottom\":\"1px solid #d4d5d6\"}},[_c('div',{staticStyle:{\"width\":\"20%\",\"float\":\"left\"}},[_c('div',{staticStyle:{\"margin-top\":\"10px\",\"margin-left\":\"10px\",\"font-weight\":\"bold\"}},[_vm._v(\"\\n Appraisal\\n \")])]),_c('div',{staticStyle:{\"width\":\"80%\",\"float\":\"right\"}},[_c('el-tooltip',{staticClass:\"item\",staticStyle:{\"display\":\"none\"},attrs:{\"id\":\"savedMessage\",\"effect\":\"light\",\"placement\":\"bottom\",\"content\":'Your feedback was successfully saved.'}},[_c('el-tag',{staticStyle:{\"line-height\":\"30px\",\"height\":\"30px\",\"margin-right\":\"5px\",\"margin-top\":\"4px\",\"margin-left\":\"5px\"},attrs:{\"type\":\"success\"}},[_vm._v(\"\\n Saved!\\n \")])],1),(_vm.appraisal)?_c('el-button',{staticClass:\"submit-button\",staticStyle:{\"margin-top\":\"5px\",\"margin-right\":\"5px\",\"float\":\"right\"},attrs:{\"type\":_vm.statusType,\"title\":_vm.submitTooltip,\"size\":\"mini\"},on:{\"click\":function($event){return _vm.submitReview()}}},[_vm._v(\"\\n Submit\\n \")]):_c('el-button',{staticClass:\"submit-button\",staticStyle:{\"margin-top\":\"5px\",\"margin-right\":\"5px\",\"float\":\"right\"},attrs:{\"type\":\"info\",\"disabled\":true,\"size\":\"mini\"}},[_vm._v(\"\\n Submit\\n \")])],1)]),_c('div',{staticStyle:{\"float\":\"left\",\"margin-top\":\"5px\",\"width\":\"100%\"},attrs:{\"id\":\"rubric\"}},[_c('div',{staticStyle:{\"height\":\"93vh\",\"overflow\":\"auto\"}},_vm._l((_vm.appraisalRubricCriteria),function(criteria,criteriaIndex){return _c('el-card',{key:criteria.Id,staticStyle:{\"margin-bottom\":\"10px\"}},[_c('div',{staticClass:\"clearfix\",attrs:{\"slot\":\"header\"},slot:\"header\"},[_c('span',{staticStyle:{\"font-size\":\"16px\",\"font-weight\":\"bold\"}},[_vm._v(\"\\n \"+_vm._s(criteria.CriteriaName)+\"\\n \")]),_c('div',{staticStyle:{\"font-size\":\"14px\",\"margin-top\":\"10px\"}},[(\n criteria.Description && criteria.Description != ''\n )?_c('el-input',{staticClass:\"criteria-description\",staticStyle:{\"border\":\"none\"},attrs:{\"value\":criteria.Description,\"readonly\":true,\"type\":\"textarea\",\"autosize\":true,\"maxlength\":8000}}):_vm._e()],1)]),_c('div',[_c('div',[(\n criteria.UseAsGrade || criteria.UseAsTextComment\n )?_c('el-input',{staticClass:\"criteria-comment\",attrs:{\"criteria-index\":criteriaIndex,\"type\":\"textarea\",\"placeholder\":\"Enter text here\",\"maxlength\":8000,\"rows\":\"6\",\"readonly\":_vm.action == 'score'},model:{value:(\n _vm.appraisalCriteriaFeedback[criteriaIndex].Comment\n ),callback:function ($$v) {_vm.$set(_vm.appraisalCriteriaFeedback[criteriaIndex], \"Comment\", $$v)},expression:\"\\n appraisalCriteriaFeedback[criteriaIndex].Comment\\n \"}}):_vm._e()],1)])])}),1)])])])])],1)],1)])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n <div>\r\n <div id=\"full_width_container\" :class=\"fullWidth\">\r\n <splitpanes class=\"default-theme\">\r\n <pane size=\"40\">\r\n <div\r\n style=\"\r\n width: 100%;\r\n height: 40px;\r\n border-bottom: 1px solid rgb(204, 204, 204);\r\n margin-bottom: 5px;\r\n \"\r\n >\r\n <div>\r\n <!-- <div style=\"float: left; width: 240px; margin-top: 10px;\">\r\n <span style=\"margin-top: 10px; margin-left: 10px; font-weight: bold;\">\r\n <router-link :to=\"{ path: '/course/'+ classCode +'/projects' }\">\r\n All Projects\r\n </router-link>\r\n <i class=\"fas fa-chevron-right breadcumb-next\" />\r\n Self Appraisal\r\n </span>\r\n </div> -->\r\n\r\n <el-button\r\n style=\"\r\n text-align: center;\r\n -webkit-box-shadow: none;\r\n box-shadow: none;\r\n display: inline-block;\r\n padding: 0px;\r\n padding-right: 10px;\r\n vertical-align: middle;\r\n -ms-touch-action: manipulation;\r\n touch-action: manipulation;\r\n cursor: pointer;\r\n border: 0 none;\r\n background: none;\r\n margin-top: 8px;\r\n margin-left: 5px;\r\n \"\r\n title=\"Back to Projects\"\r\n @click=\"backToAssignments()\"\r\n >\r\n <!-- <i class=\"fas fa-tasks\" style=\"font-size: 25px;\" /> -->\r\n <i class=\"fas fa-chevron-left\" style=\"font-size: 25px\" />\r\n </el-button>\r\n\r\n <el-tooltip\r\n v-if=\"appraisalAssignments\"\r\n class=\"item\"\r\n effect=\"light\"\r\n content=\"Select Project with Self Appraisal\"\r\n placement=\"bottom\"\r\n style=\"\r\n float: right;\r\n width: 300px;\r\n margin-right: 5px;\r\n margin-bottom: 4px;\r\n \"\r\n >\r\n <el-select\r\n v-if=\"appraisalAssignments\"\r\n id=\"assignments-selection\"\r\n v-model=\"thisAssignment\"\r\n value-key=\"Id\"\r\n filterable\r\n placeholder=\"Select Project\"\r\n no-match-text=\"No Matching Data\"\r\n no-data-text=\"No data\"\r\n loading-text=\"Loading\"\r\n style=\"margin-left: 2px; margin-top: 5px; width: 96%\"\r\n size=\"mini\"\r\n @change=\"onProjectChange()\"\r\n >\r\n <el-option\r\n v-for=\"item in appraisalAssignments\"\r\n :key=\"item.Id\"\r\n :label=\"item.AssignmentName\"\r\n :value=\"item\"\r\n />\r\n </el-select>\r\n </el-tooltip>\r\n </div>\r\n </div>\r\n <div style=\"height: 100%; min-width: 560px\">\r\n <div style=\"height: 98vh; overflow: hidden\">\r\n <nav class=\"ViewerControls ViewerControls--with-annotations\">\r\n <div class=\"ViewerControls-primary\">\r\n <div class=\"ViewerControls--download\" style=\"flex: 0.5\">\r\n <div style=\"min-width: 50px; text-align: center\">\r\n <div>\r\n <button\r\n v-if=\"action == 'score'\"\r\n class=\"download-button--button\"\r\n title=\"Back to Student Submissions\"\r\n aria-label=\"Back to Student Submissions\"\r\n @click=\"backToStudentSubmissions()\"\r\n >\r\n <i\r\n style=\"font-size: 20px\"\r\n class=\"fas fa-arrow-left\"\r\n />\r\n </button>\r\n <button\r\n class=\"download-button--button\"\r\n title=\"Download annotated PDF\"\r\n aria-label=\"Download annotated PDF\"\r\n @click=\"downloadPdf('PdfWebControl')\"\r\n >\r\n <i\r\n style=\"font-size: 22px\"\r\n class=\"fas fa-file-download\"\r\n />\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"ViewerControls--page-controls\">\r\n <span\r\n class=\"ViewerControls--page-number\"\r\n style=\"display: flex; align-items: center\"\r\n >\r\n Page\r\n <div style=\"padding-left: 10px; padding-right: 10px\">\r\n <el-input-number\r\n v-model=\"pageNum\"\r\n :min=\"1\"\r\n :max=\"totalPageNumber\"\r\n size=\"small\"\r\n label=\"Page\"\r\n @change=\"changePage('PdfWebControl')\"\r\n />\r\n </div>\r\n of {{ totalPageNumber }}\r\n </span>\r\n <svg\r\n viewBox=\"0 0 2 26\"\r\n style=\"\r\n margin-left: 12px;\r\n margin-right: 0px;\r\n width: 2px;\r\n height: 26px;\r\n color: rgb(171, 179, 186);\r\n \"\r\n >\r\n <line\r\n stroke=\"currentColor\"\r\n stroke-dasharray=\"2, 1\"\r\n stroke-width=\"1\"\r\n x1=\"1\"\r\n y1=\"0\"\r\n x2=\"1\"\r\n y2=\"26\"\r\n />\r\n </svg>\r\n </div>\r\n <nav class=\"DocumentControls\">\r\n <div\r\n style=\"\r\n display: inline-flex;\r\n align-items: center;\r\n user-select: none;\r\n \"\r\n >\r\n <button\r\n class=\"AnnotationControlButton\"\r\n aria-label=\"Zoom Out\"\r\n title=\"Zoom Out\"\r\n aria-disabled=\"false\"\r\n @click=\"zoomOut('PdfWebControl')\"\r\n >\r\n <i style=\"font-size: 20px\" class=\"fas fa-minus\" />\r\n </button>\r\n <span\r\n aria-hidden=\"true\"\r\n style=\"\r\n text-transform: uppercase;\r\n font-size: 0.75rem;\r\n color: rgb(238, 238, 239);\r\n margin-left: 4px;\r\n margin-right: 4px;\r\n \"\r\n >\r\n Zoom\r\n </span>\r\n <button\r\n class=\"AnnotationControlButton\"\r\n aria-label=\"Zoom In\"\r\n title=\"Zoom In\"\r\n aria-disabled=\"false\"\r\n @click=\"zoomIn('PdfWebControl')\"\r\n >\r\n <i style=\"font-size: 20px\" class=\"fas fa-plus\" />\r\n </button>\r\n </div>\r\n <svg\r\n viewBox=\"0 0 2 26\"\r\n style=\"\r\n margin-left: 2px;\r\n margin-right: 4px;\r\n width: 2px;\r\n height: 26px;\r\n color: rgb(171, 179, 186);\r\n \"\r\n >\r\n <line\r\n stroke=\"currentColor\"\r\n stroke-dasharray=\"2, 1\"\r\n stroke-width=\"1\"\r\n x1=\"1\"\r\n y1=\"0\"\r\n x2=\"1\"\r\n y2=\"26\"\r\n />\r\n </svg>\r\n <div class=\"ViewerControls--page-controls\">\r\n <button\r\n aria-label=\"Enter Full Screen\"\r\n class=\"AnnotationControlButton full-screen-button\"\r\n title=\"Zoom Fit Width\"\r\n @click=\"zoomFitWidth('PdfWebControl')\"\r\n >\r\n <i style=\"font-size: 20px\" class=\"fas fa-expand\" />\r\n </button>\r\n <svg\r\n viewBox=\"0 0 2 26\"\r\n style=\"\r\n margin-left: 4px;\r\n margin-right: 4px;\r\n width: 2px;\r\n height: 26px;\r\n color: rgb(171, 179, 186);\r\n \"\r\n >\r\n <line\r\n stroke=\"currentColor\"\r\n stroke-dasharray=\"2, 1\"\r\n stroke-width=\"1\"\r\n x1=\"1\"\r\n y1=\"0\"\r\n x2=\"1\"\r\n y2=\"26\"\r\n />\r\n </svg>\r\n </div>\r\n </nav>\r\n <nav class=\"AnnotationControls\">\r\n <button\r\n aria-label=\"Enter selection mode\"\r\n class=\"AnnotationControlButton\"\r\n title=\"Hand Scroll\"\r\n @click=\"handScroll('PdfWebControl')\"\r\n >\r\n <div class=\"AnnotationControlButton-outer\">\r\n <div class=\"AnnotationControlButton-inner\">\r\n <i\r\n style=\"font-size: 20px\"\r\n class=\"far fa-hand-point-up\"\r\n />\r\n </div>\r\n </div>\r\n </button>\r\n\r\n <button\r\n aria-label=\"Enter selection mode\"\r\n class=\"AnnotationControlButton\"\r\n title=\"Selection\"\r\n @click=\"selectTextPdf('PdfWebControl')\"\r\n >\r\n <div class=\"AnnotationControlButton-outer\">\r\n <div class=\"AnnotationControlButton-inner\">\r\n <i\r\n style=\"font-size: 18px\"\r\n class=\"fas fa-mouse-pointer\"\r\n />\r\n </div>\r\n </div>\r\n </button>\r\n </nav>\r\n </div>\r\n </nav>\r\n\r\n <div\r\n id=\"iframe_holder\"\r\n style=\"\r\n display: block;\r\n height: calc(100% - 85px);\r\n overflow: hidden;\r\n \"\r\n >\r\n <div id=\"pdfDocument\" style=\"resize: vertical; height: 100%\" />\r\n </div>\r\n </div>\r\n </div>\r\n </pane>\r\n\r\n <pane size=\"40\">\r\n <div>\r\n <div>\r\n <div\r\n style=\"\r\n width: 100%;\r\n height: 40px;\r\n border-bottom: 1px solid rgb(204, 204, 204);\r\n margin-bottom: 5px;\r\n \"\r\n >\r\n <div>\r\n <el-tooltip\r\n class=\"item\"\r\n effect=\"light\"\r\n content=\"Select Feedback Type\"\r\n placement=\"bottom\"\r\n style=\"float: left; width: 46%\"\r\n >\r\n <el-select\r\n id=\"feedback-type-selection\"\r\n v-model=\"feedbackType\"\r\n value-key=\"Id\"\r\n filterable\r\n placeholder=\"Select Feedback\"\r\n no-match-text=\"No Matching Data\"\r\n no-data-text=\"No data\"\r\n loading-text=\"Loading\"\r\n style=\"margin-left: 5px; margin-top: 5px\"\r\n size=\"mini\"\r\n @change=\"onFeedbackTypeChange()\"\r\n >\r\n <el-option\r\n v-for=\"item in feedbackTypes\"\r\n :key=\"item.Id\"\r\n :label=\"item.Label\"\r\n :value=\"item.Id\"\r\n />\r\n </el-select>\r\n </el-tooltip>\r\n\r\n <el-tooltip\r\n v-if=\"feedbackType == 0 && collectiveFeedbacks\"\r\n class=\"item\"\r\n effect=\"light\"\r\n content=\"Select Collective Feedback\"\r\n placement=\"bottom\"\r\n style=\"float: right; width: 46%; margin-right: 5px\"\r\n >\r\n <el-select\r\n id=\"feedback-type-selection\"\r\n v-model=\"collectiveFeedback\"\r\n value-key=\"Id\"\r\n filterable\r\n placeholder=\"Select Collective Feedback\"\r\n no-match-text=\"No Matching Data\"\r\n no-data-text=\"No data\"\r\n loading-text=\"Loading\"\r\n style=\"margin-left: 5px; margin-top: 5px\"\r\n size=\"mini\"\r\n @change=\"onCollectiveFeedbackChange()\"\r\n >\r\n <el-option\r\n v-for=\"item in collectiveFeedbacks\"\r\n :key=\"item.Id\"\r\n :label=\"item.Name\"\r\n :value=\"item\"\r\n />\r\n </el-select>\r\n </el-tooltip>\r\n\r\n <el-tooltip\r\n v-if=\"feedbackType == 4\"\r\n class=\"item\"\r\n effect=\"light\"\r\n content=\"Select Compare Text\"\r\n placement=\"bottom\"\r\n style=\"float: right; width: 46%; margin-right: 5px\"\r\n >\r\n <el-select\r\n v-if=\"assignments\"\r\n id=\"assignments-selection\"\r\n v-model=\"currentAssignment\"\r\n value-key=\"Id\"\r\n filterable\r\n placeholder=\"Select Compare Text\"\r\n no-match-text=\"No Matching Data\"\r\n no-data-text=\"No data\"\r\n loading-text=\"Loading\"\r\n style=\"margin-left: 2%; margin-top: 5px; width: 96%\"\r\n size=\"mini\"\r\n @change=\"onCompareTextChange()\"\r\n >\r\n <el-option\r\n v-for=\"item in assignments\"\r\n :key=\"item.Id\"\r\n :label=\"item.AssignmentName\"\r\n :value=\"item\"\r\n />\r\n </el-select>\r\n </el-tooltip>\r\n </div>\r\n <div\r\n v-if=\"feedbackType == 3 && peers.length > 0\"\r\n style=\"float: right; width: 49%\"\r\n >\r\n <el-tooltip\r\n class=\"item\"\r\n effect=\"light\"\r\n content=\"Select a peer\"\r\n placement=\"bottom\"\r\n >\r\n <el-select\r\n id=\"students-selection\"\r\n v-model=\"currentPeer\"\r\n value-key=\"UserName\"\r\n filterable\r\n placeholder=\"Select a peer\"\r\n style=\"float: right; margin-right: 5px; margin-top: 5px\"\r\n size=\"mini\"\r\n @change=\"onPeerChange()\"\r\n >\r\n <el-option\r\n v-for=\"item in peers\"\r\n :key=\"item.UserName\"\r\n :label=\"item.LastName + ', ' + item.FirstName\"\r\n :value=\"item\"\r\n />\r\n </el-select>\r\n </el-tooltip>\r\n </div>\r\n </div>\r\n\r\n <div\r\n v-if=\"feedbackType == 4 && currentAssignment\"\r\n style=\"height: 100%; min-width: 560px\"\r\n >\r\n <div style=\"height: 98vh; overflow: hidden\">\r\n <nav class=\"ViewerControls ViewerControls--with-annotations\">\r\n <div class=\"ViewerControls-primary\">\r\n <div class=\"ViewerControls--download\" style=\"flex: 0.5\">\r\n <div style=\"min-width: 50px; text-align: center\">\r\n <div>\r\n <button\r\n v-if=\"action == 'score'\"\r\n class=\"download-button--button\"\r\n title=\"Back to Student Submissions\"\r\n aria-label=\"Back to Student Submissions\"\r\n @click=\"backToStudentSubmissions()\"\r\n >\r\n <i\r\n style=\"font-size: 20px\"\r\n class=\"fas fa-arrow-left\"\r\n />\r\n </button>\r\n <button\r\n class=\"download-button--button\"\r\n title=\"Download annotated PDF\"\r\n aria-label=\"Download annotated PDF\"\r\n @click=\"downloadPdf('PdfWebControlCompare')\"\r\n >\r\n <i\r\n style=\"font-size: 22px\"\r\n class=\"fas fa-file-download\"\r\n />\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"ViewerControls--page-controls\">\r\n <span\r\n class=\"ViewerControls--page-number\"\r\n style=\"display: flex; align-items: center\"\r\n >\r\n Page\r\n <div style=\"padding-left: 10px; padding-right: 10px\">\r\n <el-input-number\r\n v-model=\"pageNum\"\r\n :min=\"1\"\r\n :max=\"totalPageNumber\"\r\n size=\"small\"\r\n label=\"Page\"\r\n @change=\"changePage('PdfWebControlCompare')\"\r\n />\r\n </div>\r\n of {{ totalPageNumber }}\r\n </span>\r\n <svg\r\n viewBox=\"0 0 2 26\"\r\n style=\"\r\n margin-left: 12px;\r\n margin-right: 0px;\r\n width: 2px;\r\n height: 26px;\r\n color: rgb(171, 179, 186);\r\n \"\r\n >\r\n <line\r\n stroke=\"currentColor\"\r\n stroke-dasharray=\"2, 1\"\r\n stroke-width=\"1\"\r\n x1=\"1\"\r\n y1=\"0\"\r\n x2=\"1\"\r\n y2=\"26\"\r\n />\r\n </svg>\r\n </div>\r\n <nav class=\"DocumentControls\">\r\n <div\r\n style=\"\r\n display: inline-flex;\r\n align-items: center;\r\n user-select: none;\r\n \"\r\n >\r\n <button\r\n class=\"AnnotationControlButton\"\r\n aria-label=\"Zoom Out\"\r\n title=\"Zoom Out\"\r\n aria-disabled=\"false\"\r\n @click=\"zoomOut('PdfWebControlCompare')\"\r\n >\r\n <i style=\"font-size: 20px\" class=\"fas fa-minus\" />\r\n </button>\r\n <span\r\n aria-hidden=\"true\"\r\n style=\"\r\n text-transform: uppercase;\r\n font-size: 0.75rem;\r\n color: rgb(238, 238, 239);\r\n margin-left: 4px;\r\n margin-right: 4px;\r\n \"\r\n >\r\n Zoom\r\n </span>\r\n <button\r\n class=\"AnnotationControlButton\"\r\n aria-label=\"Zoom In\"\r\n title=\"Zoom In\"\r\n aria-disabled=\"false\"\r\n @click=\"zoomIn('PdfWebControlCompare')\"\r\n >\r\n <i style=\"font-size: 20px\" class=\"fas fa-plus\" />\r\n </button>\r\n </div>\r\n <svg\r\n viewBox=\"0 0 2 26\"\r\n style=\"\r\n margin-left: 2px;\r\n margin-right: 4px;\r\n width: 2px;\r\n height: 26px;\r\n color: rgb(171, 179, 186);\r\n \"\r\n >\r\n <line\r\n stroke=\"currentColor\"\r\n stroke-dasharray=\"2, 1\"\r\n stroke-width=\"1\"\r\n x1=\"1\"\r\n y1=\"0\"\r\n x2=\"1\"\r\n y2=\"26\"\r\n />\r\n </svg>\r\n <div class=\"ViewerControls--page-controls\">\r\n <button\r\n aria-label=\"Enter Full Screen\"\r\n class=\"AnnotationControlButton full-screen-button\"\r\n title=\"Zoom Fit Width\"\r\n @click=\"zoomFitWidth('PdfWebControlCompare')\"\r\n >\r\n <i style=\"font-size: 20px\" class=\"fas fa-expand\" />\r\n </button>\r\n <svg\r\n viewBox=\"0 0 2 26\"\r\n style=\"\r\n margin-left: 4px;\r\n margin-right: 4px;\r\n width: 2px;\r\n height: 26px;\r\n color: rgb(171, 179, 186);\r\n \"\r\n >\r\n <line\r\n stroke=\"currentColor\"\r\n stroke-dasharray=\"2, 1\"\r\n stroke-width=\"1\"\r\n x1=\"1\"\r\n y1=\"0\"\r\n x2=\"1\"\r\n y2=\"26\"\r\n />\r\n </svg>\r\n </div>\r\n </nav>\r\n <nav class=\"AnnotationControls\">\r\n <button\r\n aria-label=\"Enter selection mode\"\r\n class=\"AnnotationControlButton\"\r\n title=\"Hand Scroll\"\r\n @click=\"handScroll('PdfWebControlCompare')\"\r\n >\r\n <div class=\"AnnotationControlButton-outer\">\r\n <div class=\"AnnotationControlButton-inner\">\r\n <i\r\n style=\"font-size: 20px\"\r\n class=\"far fa-hand-point-up\"\r\n />\r\n </div>\r\n </div>\r\n </button>\r\n\r\n <button\r\n aria-label=\"Enter selection mode\"\r\n class=\"AnnotationControlButton\"\r\n title=\"Selection\"\r\n @click=\"selectTextPdf\"\r\n >\r\n <div class=\"AnnotationControlButton-outer\">\r\n <div class=\"AnnotationControlButton-inner\">\r\n <i\r\n style=\"font-size: 18px\"\r\n class=\"fas fa-mouse-pointer\"\r\n />\r\n </div>\r\n </div>\r\n </button>\r\n </nav>\r\n </div>\r\n </nav>\r\n\r\n <div\r\n id=\"iframe_holder\"\r\n style=\"display: block; height: calc(100% - 85px)\"\r\n >\r\n <div\r\n id=\"pdfDocumentCompare\"\r\n style=\"resize: vertical; height: 100%\"\r\n />\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div\r\n v-if=\"feedbackType == 0 && collectiveFeedback\"\r\n id=\"issuesList\"\r\n role=\"tablist\"\r\n style=\"height: 93vh; overflow: auto\"\r\n >\r\n <div\r\n v-if=\"collectiveFeedback.CollectiveFeedbackIssues.length > 0\"\r\n >\r\n <el-button style=\"margin: 1%\" size=\"mini\" @click=\"expandAll\">\r\n Expand All\r\n </el-button>\r\n <el-button style=\"\" size=\"mini\" @click=\"collapseAll\">\r\n Collapse All\r\n </el-button>\r\n </div>\r\n <el-collapse v-model=\"activeIssues\" accordion>\r\n <div\r\n v-for=\"issue in issues\"\r\n :key=\"issue.Id\"\r\n style=\"\r\n border-radius: 4px;\r\n border-bottom: 1px solid #ebeef5;\r\n padding: 5px;\r\n \"\r\n >\r\n <el-collapse-item\r\n v-if=\"issue.IsActive == 1\"\r\n :name=\"issue.Id\"\r\n style=\"border-radius: 4px\"\r\n >\r\n <template\r\n slot=\"title\"\r\n class=\"greenButton\"\r\n style=\"background-color: green\"\r\n >\r\n <div style=\"width: 60%; float: left\">\r\n <span\r\n class=\"addIssueMarginLeft\"\r\n style=\"\r\n margin-left: 10px;\r\n font-size: 16px;\r\n font-weight: bold;\r\n text-overflow: ellipsis;\r\n white-space: nowrap;\r\n \"\r\n >\r\n {{ issue.Title }}\r\n </span>\r\n </div>\r\n </template>\r\n\r\n <div\r\n class=\"addIssueMarginLeft\"\r\n style=\"\r\n margin-left: 10px;\r\n border-top: rgb(204, 204, 204) solid 1px;\r\n \"\r\n >\r\n <span style=\"font-weight: bold\"> Issue Category </span\r\n ><br />{{ getCategory(issue.Category) }}\r\n </div>\r\n <div class=\"addIssueMarginLeft\" style=\"margin-left: 10px\">\r\n <span style=\"font-weight: bold\"> Student Example </span\r\n ><br />\r\n <div v-html=\"issue.Examples\" />\r\n </div>\r\n <div class=\"addIssueMarginLeft\" style=\"margin-left: 10px\">\r\n <span style=\"font-weight: bold\">\r\n Summary: Why this is an issue? </span\r\n ><br />\r\n <div v-html=\"issue.Description\" />\r\n </div>\r\n\r\n <div class=\"addIssueMarginLeft\" style=\"margin-left: 10px\">\r\n <span style=\"font-weight: bold\">\r\n Explanation: How to improve? </span\r\n ><br />\r\n <div v-html=\"issue.Explanation\" />\r\n </div>\r\n </el-collapse-item>\r\n </div>\r\n </el-collapse>\r\n </div>\r\n\r\n <div v-if=\"feedbackType != 0\" id=\"rubric\">\r\n <div style=\"height: 93vh; overflow: auto\">\r\n <el-card\r\n v-for=\"(criteria, criteriaIndex) in rubricCriteria\"\r\n :key=\"criteria.Id\"\r\n style=\"margin-bottom: 5px; margin-left: 3px\"\r\n >\r\n <div slot=\"header\" class=\"clearfix\">\r\n <span style=\"font-size: 16px; font-weight: bold\">\r\n {{ criteria.CriteriaName }}\r\n </span>\r\n <div style=\"font-size: 14px; margin-top: 10px\">\r\n <el-input\r\n v-if=\"\r\n criteria.Description && criteria.Description != ''\r\n \"\r\n :value=\"criteria.Description\"\r\n :readonly=\"true\"\r\n type=\"textarea\"\r\n :autosize=\"true\"\r\n :maxlength=\"8000\"\r\n class=\"criteria-description\"\r\n style=\"border: none\"\r\n />\r\n </div>\r\n </div>\r\n <div>\r\n <div v-if=\"termCode == '201908'\">\r\n <el-radio-group\r\n v-if=\"criteria.UseAsGrade\"\r\n :id=\"criteria.Id\"\r\n v-model=\"criteriaFeedback[criteriaIndex].Mark\"\r\n style=\"margin-bottom: 10px; min-width: 240px\"\r\n :disabled=\"action != 0\"\r\n @input=\"saveReview(criteriaIndex)\"\r\n >\r\n <el-tooltip\r\n v-for=\"(\r\n milestone, key\r\n ) in criteria.RubricCriteriaMilestones.slice()\"\r\n :key=\"milestone.Id\"\r\n class=\"item\"\r\n effect=\"light\"\r\n placement=\"top\"\r\n >\r\n <div slot=\"content\" style=\"max-width: 500px\">\r\n {{ milestone.Description }}\r\n </div>\r\n <el-radio-button\r\n :key=\"milestone.Id\"\r\n :label=\"\r\n criteria.RubricCriteriaMilestones.length - key\r\n \"\r\n />\r\n </el-tooltip>\r\n </el-radio-group>\r\n </div>\r\n <div v-else>\r\n <el-radio-group\r\n v-if=\"criteria.UseAsGrade\"\r\n :id=\"criteria.Id\"\r\n v-model=\"criteriaFeedback[criteriaIndex].Mark\"\r\n style=\"margin-bottom: 10px; min-width: 240px\"\r\n :disabled=\"true\"\r\n >\r\n <el-tooltip\r\n v-for=\"milestone in criteria.RubricCriteriaMilestones.slice()\"\r\n :key=\"milestone.Id\"\r\n class=\"item\"\r\n effect=\"light\"\r\n placement=\"top\"\r\n >\r\n <div slot=\"content\" style=\"max-width: 500px\">\r\n {{ milestone.Description }}\r\n </div>\r\n <el-radio-button\r\n :key=\"milestone.Id\"\r\n :label=\"milestone.Value\"\r\n />\r\n </el-tooltip>\r\n </el-radio-group>\r\n </div>\r\n <div>\r\n <el-input\r\n v-if=\"\r\n criteria.UseAsGrade || criteria.UseAsTextComment\r\n \"\r\n v-model=\"criteriaFeedback[criteriaIndex].Comment\"\r\n :criteria-index=\"criteriaIndex\"\r\n type=\"textarea\"\r\n placeholder=\"Enter text here\"\r\n :rows=\"3\"\r\n :maxlength=\"8000\"\r\n class=\"criteria-comment-readonly\"\r\n :readonly=\"true\"\r\n />\r\n </div>\r\n </div>\r\n </el-card>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </pane>\r\n\r\n <pane size=\"20\">\r\n <div class=\"splitted-column\">\r\n <div id=\"rightside_inner\" class=\"full_height\">\r\n <div\r\n style=\"\r\n background: #f2f2f2;\r\n height: 40px;\r\n border-bottom: 1px solid #d4d5d6;\r\n \"\r\n >\r\n <div style=\"width: 20%; float: left\">\r\n <div\r\n style=\"\r\n margin-top: 10px;\r\n margin-left: 10px;\r\n font-weight: bold;\r\n \"\r\n >\r\n Appraisal\r\n </div>\r\n </div>\r\n <div style=\"width: 80%; float: right\">\r\n <el-tooltip\r\n id=\"savedMessage\"\r\n class=\"item\"\r\n effect=\"light\"\r\n placement=\"bottom\"\r\n :content=\"'Your feedback was successfully saved.'\"\r\n style=\"display: none\"\r\n >\r\n <el-tag\r\n type=\"success\"\r\n style=\"\r\n line-height: 30px;\r\n height: 30px;\r\n margin-right: 5px;\r\n margin-top: 4px;\r\n margin-left: 5px;\r\n \"\r\n >\r\n Saved!\r\n </el-tag>\r\n </el-tooltip>\r\n\r\n <el-button\r\n v-if=\"appraisal\"\r\n class=\"submit-button\"\r\n :type=\"statusType\"\r\n style=\"margin-top: 5px; margin-right: 5px; float: right\"\r\n :title=\"submitTooltip\"\r\n size=\"mini\"\r\n @click=\"submitReview()\"\r\n >\r\n Submit\r\n </el-button>\r\n <el-button\r\n v-else\r\n class=\"submit-button\"\r\n type=\"info\"\r\n :disabled=\"true\"\r\n style=\"margin-top: 5px; margin-right: 5px; float: right\"\r\n size=\"mini\"\r\n >\r\n Submit\r\n </el-button>\r\n </div>\r\n </div>\r\n\r\n <div\r\n id=\"rubric\"\r\n style=\"float: left; margin-top: 5px; width: 100%\"\r\n >\r\n <div style=\"height: 93vh; overflow: auto\">\r\n <el-card\r\n v-for=\"(criteria, criteriaIndex) in appraisalRubricCriteria\"\r\n :key=\"criteria.Id\"\r\n style=\"margin-bottom: 10px\"\r\n >\r\n <div slot=\"header\" class=\"clearfix\">\r\n <span style=\"font-size: 16px; font-weight: bold\">\r\n {{ criteria.CriteriaName }}\r\n </span>\r\n <div style=\"font-size: 14px; margin-top: 10px\">\r\n <el-input\r\n v-if=\"\r\n criteria.Description && criteria.Description != ''\r\n \"\r\n :value=\"criteria.Description\"\r\n :readonly=\"true\"\r\n type=\"textarea\"\r\n :autosize=\"true\"\r\n :maxlength=\"8000\"\r\n class=\"criteria-description\"\r\n style=\"border: none\"\r\n />\r\n </div>\r\n </div>\r\n <div>\r\n <div>\r\n <el-input\r\n v-if=\"\r\n criteria.UseAsGrade || criteria.UseAsTextComment\r\n \"\r\n v-model=\"\r\n appraisalCriteriaFeedback[criteriaIndex].Comment\r\n \"\r\n :criteria-index=\"criteriaIndex\"\r\n type=\"textarea\"\r\n placeholder=\"Enter text here\"\r\n :maxlength=\"8000\"\r\n rows=\"6\"\r\n class=\"criteria-comment\"\r\n :readonly=\"action == 'score'\"\r\n />\r\n </div>\r\n </div>\r\n </el-card>\r\n </div>\r\n\r\n <!-- <div v-if=\"action == 'appraise' && !feedback && appraisalCriteriaFeedback.length > 0\" style=\"float: right;\">\r\n <el-tooltip\r\n id=\"savedMessage\"\r\n class=\"item\"\r\n effect=\"light\"\r\n placement=\"bottom\"\r\n :content=\"'Your feedback was successfully saved.'\"\r\n style=\"display: none;\"\r\n >\r\n <el-tag type=\"success\" style=\"line-height: 40px; height: 40px; margin-right: 5px;\">\r\n Saved!\r\n </el-tag>\r\n </el-tooltip>\r\n <el-button\r\n v-if=\"appraisal\"\r\n class=\"submit-button\"\r\n :type=\"statusType\"\r\n style=\" margin-top: 5px; margin-right: 5px;\"\r\n :title=\"submitTooltip\"\r\n @click=\"submitReview()\"\r\n >\r\n Submit\r\n </el-button>\r\n <el-button\r\n v-else\r\n class=\"submit-button\"\r\n type=\"info\"\r\n :disabled=\"true\"\r\n style=\" float: right; margin-top: 5px; margin-right: 5px;\"\r\n >\r\n Submit\r\n </el-button>\r\n </div> -->\r\n </div>\r\n </div>\r\n </div>\r\n </pane>\r\n </splitpanes>\r\n </div>\r\n </div>\r\n</template>\r\n\r\n<script>\r\nimport * as pdfService from \"@/services/pdf.service\";\r\nimport * as assignmentService from \"@/services/assignment.service\";\r\nimport * as reviewService from \"@/services/review.service\";\r\nimport * as rubricService from \"@/services/rubric.service\";\r\nimport * as teamFormationService from '@/services/team_formation.service'\r\nimport * as cfService from \"@/services/collective_feedback.service\";\r\nimport * as submissionService from \"@/services/submission.service\";\r\nimport { Notification } from \"element-ui\";\r\n// import ResSplitPane from 'vue-resize-split-pane';\r\nimport { Splitpanes, Pane } from \"splitpanes\";\r\nimport \"splitpanes/dist/splitpanes.css\";\r\nimport * as urlUtils from \"@/utils/url-utils\";\r\n\r\nexport default {\r\n components: {\r\n Splitpanes,\r\n Pane,\r\n },\r\n data() {\r\n return {\r\n username: this.$store.state.auth.user.UserName,\r\n termCode: this.$store.state.enrollment.termCode,\r\n orgCode: this.$store.state.enrollment.orgCode,\r\n classCode: this.$store.state.enrollment.currentCourse.ClassCode,\r\n assignmentId: this.$route.params.assignmentId,\r\n taskId: this.$route.params.taskId,\r\n newProjects: [],\r\n newProject: null,\r\n baseProjects: [],\r\n baseProject: null,\r\n students: [],\r\n currentPeer: null,\r\n peers: [],\r\n currentStudent: null,\r\n rubricCriteria: null,\r\n appraisalRubricCriteria: null,\r\n criteriaFeedback: null,\r\n review: null,\r\n appraisal: null,\r\n appraisalCriteriaFeedback: null,\r\n reviewType: null,\r\n statusType: \"danger\",\r\n submitTooltip: \"Your feedback is saved, but has not yet been submitted.\",\r\n eventAdded: false,\r\n cIndex: null,\r\n text1: \"\",\r\n text2: \"\",\r\n diffType: \"line\",\r\n viewType: \"diff\",\r\n action: this.$route.meta.action,\r\n pdfControl: \"\",\r\n myapi: null,\r\n pageNum: 1,\r\n totalPageNumber: null,\r\n zoomValue: 140,\r\n uploadedDate: null,\r\n feedbackType: null,\r\n feedbackTypes: [\r\n {\r\n Id: 4,\r\n Label: \"Compare Text\",\r\n },\r\n ],\r\n collectiveFeedbacks: null,\r\n collectiveFeedback: null,\r\n issues: null,\r\n activeIssues: [],\r\n allAssignments: null,\r\n assignments: null,\r\n currentAssignment: null,\r\n currentTask: null,\r\n appraisalAssignments: null,\r\n thisAssignment: null,\r\n docId: null,\r\n compareDocId: null,\r\n };\r\n },\r\n computed: {\r\n fullWidth() {\r\n const mainNav = document.querySelector(\"#main-nav\");\r\n if (mainNav && !mainNav.classList.contains(\"full-width\")) {\r\n return \"\";\r\n } else {\r\n return \"full-width\";\r\n }\r\n },\r\n },\r\n mounted() {\r\n // Collapse the left side bar menu\r\n const arrowBtn = document.querySelector(\"#menu-toggle\");\r\n if (arrowBtn.classList.contains(\"is-active\")) {\r\n arrowBtn.click();\r\n }\r\n },\r\n async created() {\r\n if (this.action == \"score\") {\r\n this.username = this.$route.params.studentId;\r\n }\r\n\r\n await this.setUpAssignmentSelection();\r\n await this.getAssignment();\r\n await this.onFeedbackTypeChange();\r\n },\r\n methods: {\r\n backToAssignments() {\r\n this.$router.push(\"/course/\" + this.classCode + \"/projects/\");\r\n },\r\n getUrlParameter(sParam) {\r\n const sPageURL = decodeURIComponent(window.location.search.substring(1));\r\n\r\n const sURLVariables = sPageURL.split(\"&\");\r\n\r\n let sParameterName;\r\n\r\n let i;\r\n\r\n for (i = 0; i < sURLVariables.length; i++) {\r\n sParameterName = sURLVariables[i].split(\"=\");\r\n\r\n if (sParameterName[0] === sParam) {\r\n return sParameterName[1] === undefined ? true : sParameterName[1];\r\n }\r\n }\r\n },\r\n onProjectChange() {\r\n let tasks = this.thisAssignment.Tasks.filter(\r\n (t) => t.Type == \"appraisal\"\r\n );\r\n let currentTask;\r\n let taskId;\r\n if (tasks != null && tasks.length > 0) {\r\n currentTask = tasks[0];\r\n taskId = currentTask.Id;\r\n window.location.href =\r\n \"/student/appraisal/\" + this.thisAssignment.Id + \"/\" + taskId;\r\n }\r\n },\r\n async onCompareTextChange() {\r\n const submissions = await submissionService.getStudentUpload(\r\n this.termCode,\r\n this.orgCode,\r\n this.classCode,\r\n this.username,\r\n this.currentAssignment.Id\r\n );\r\n if (submissions.length > 0) {\r\n this.compareDocId = submissions[0].DocId;\r\n if (this.compareDocId) {\r\n await pdfService\r\n .getComparePdf(this.compareDocId)\r\n .then((pdf) => {\r\n // Display the pdf\r\n const pdfDocument = document.querySelector(\"#pdfDocumentCompare\");\r\n pdfDocument.innerHTML = pdf;\r\n // Setup the doc after being loaded\r\n const that = this;\r\n document.getElementById(\"PdfWebControlCompare\").onload =\r\n function () {\r\n that.PdfAttachListeners(\"PdfWebControlCompare\");\r\n setTimeout(function () {\r\n // eslint-disable-next-line no-undef\r\n const myapi = new PdfWebControlApi(\"PdfWebControlCompare\");\r\n that.totalPageNumber = myapi.getPageCount();\r\n }, 500);\r\n };\r\n })\r\n .catch((error) => {\r\n console.log(error);\r\n });\r\n }\r\n }\r\n },\r\n async setUpAssignmentSelection() {\r\n // Get all assignments that have uploaded papers\r\n const assignments = await submissionService.getUploadedAssignments(\r\n this.termCode,\r\n this.orgCode,\r\n this.classCode\r\n );\r\n if (assignments.length > 0) {\r\n this.appraisalAssignments = assignments.filter(function (el) {\r\n return (\r\n el.Tasks.filter((t) => t.Type == \"appraisal\") != null &&\r\n el.Tasks.filter((t) => t.Type == \"appraisal\").length > 0\r\n );\r\n });\r\n console.log(this.appraisalAssignments);\r\n\r\n this.allAssignments = assignments;\r\n const that = this;\r\n\r\n if (this.assignmentId) {\r\n this.currentAssignment = assignments.find(function (el) {\r\n return el.Id == that.assignmentId;\r\n });\r\n this.thisAssignment = this.currentAssignment;\r\n\r\n var tasks = this.thisAssignment.Tasks.filter(\r\n (t) => t.Type == \"appraisal\"\r\n );\r\n\r\n if (tasks != null && tasks.length > 0) {\r\n this.currentTask = tasks[0];\r\n this.taskId = this.currentTask.Id;\r\n }\r\n } else {\r\n this.currentAssignment = assignments[0];\r\n this.thisAssignment = this.currentAssignment;\r\n this.assignmentId = this.currentAssignment.Id;\r\n\r\n if (\r\n this.thisAssignment.Tasks != null &&\r\n this.thisAssignment.Tasks.length > 0\r\n ) {\r\n var selfReviewTasks = this.thisAssignment.Tasks.filter(\r\n (t) => t.Type == \"appraisal\"\r\n );\r\n if (selfReviewTasks != null && selfReviewTasks.length > 0) {\r\n this.currentTask = selfReviewTasks[0];\r\n this.taskId = this.currentTask.Id;\r\n } else {\r\n this.currentTask = null;\r\n this.taskId = null;\r\n }\r\n }\r\n }\r\n\r\n if (this.currentAssignment) {\r\n if (this.currentAssignment.IsGroupAssignment) {\r\n const hasTeam = await this.getTeam();\r\n if (hasTeam) {\r\n this.assignments = assignments.filter(function (el) {\r\n return el.Id != that.currentAssignment.Id;\r\n });\r\n } else {\r\n Notification.info({\r\n duration: 6000,\r\n title: \"Info\",\r\n message:\r\n \"You have not been assigned into a team for this group project.\",\r\n });\r\n document.getElementById(\"full_width_container\").style.display =\r\n \"none\";\r\n }\r\n } else {\r\n this.assignments = assignments.filter(function (el) {\r\n return el.Id != that.currentAssignment.Id;\r\n });\r\n }\r\n } else {\r\n Notification.info({\r\n duration: 6000,\r\n title: \"Info\",\r\n message: \"You have not submitted paper for this project.\",\r\n });\r\n document.getElementById(\"full_width_container\").style.display =\r\n \"none\";\r\n }\r\n } else {\r\n Notification.error({\r\n duration: 6000,\r\n title: \"Error\",\r\n message: \"No submission found!\",\r\n });\r\n document.getElementById(\"full_width_container\").style.display = \"none\";\r\n }\r\n },\r\n // @vuese\r\n // Get group project team assignment.\r\n async getTeam() {\r\n const thisTeam = await teamFormationService.getgroupProjectTeamAssignment(\r\n this.termCode,\r\n this.orgCode,\r\n this.classCode,\r\n this.username,\r\n this.assignmentId\r\n );\r\n if (thisTeam) {\r\n this.username = thisTeam.TeamId;\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n },\r\n async getAssignment() {\r\n if (this.assignmentId != undefined) {\r\n this.assignment = this.allAssignments.find(\r\n (a) => a.Id == this.assignmentId\r\n );\r\n if (this.assignment) {\r\n this.appraisalRubricId = this.assignment.Tasks.find(\r\n (t) => t.Type == \"appraisal\"\r\n ).RubricId;\r\n\r\n await this.getCollectiveFeedbacks();\r\n\r\n if (this.collectiveFeedbacks.length > 0) {\r\n this.feedbackTypes.push({\r\n Id: 0,\r\n Label: \"Collective Feedback\",\r\n });\r\n this.feedbackType = 0;\r\n }\r\n\r\n if (\r\n this.assignment.Tasks &&\r\n this.assignment.Tasks.filter(\r\n (t) => t.Type == \"instructor_review\"\r\n ) != null &&\r\n this.assignment.Tasks.filter((t) => t.Type == \"instructor_review\")\r\n .length > 0\r\n ) {\r\n this.feedbackTypes.push({\r\n Id: 1,\r\n Label: \"Instructor Review\",\r\n });\r\n if (this.feedbackType == null) {\r\n this.feedbackType = 1;\r\n }\r\n }\r\n\r\n if (\r\n this.assignment.Tasks &&\r\n this.assignment.Tasks.filter((t) => t.Type == \"self_review\") !=\r\n null &&\r\n this.assignment.Tasks.filter((t) => t.Type == \"self_review\")\r\n .length > 0\r\n ) {\r\n this.feedbackTypes.push({\r\n Id: 2,\r\n Label: \"Self Review\",\r\n });\r\n if (this.feedbackType == null) {\r\n this.feedbackType = 2;\r\n }\r\n }\r\n\r\n if (\r\n this.assignment.Tasks &&\r\n this.assignment.Tasks.filter((t) => t.Type == \"peer_review\") !=\r\n null &&\r\n this.assignment.Tasks.filter((t) => t.Type == \"peer_review\")\r\n .length > 0\r\n ) {\r\n this.feedbackTypes.push({\r\n Id: 3,\r\n Label: \"Peer Review\",\r\n });\r\n if (this.feedbackType == null) {\r\n this.feedbackType = 3;\r\n }\r\n }\r\n await this.displayDocument();\r\n await this.getAppraisalData();\r\n }\r\n } else {\r\n this.$router.push(\"/course/\" + this.classCode + \"/projects\");\r\n }\r\n },\r\n async displayDocument() {\r\n const submissions = await submissionService.getStudentUpload(\r\n this.termCode,\r\n this.orgCode,\r\n this.classCode,\r\n this.username,\r\n this.assignmentId\r\n );\r\n if (submissions.length > 0) {\r\n this.docId = submissions[0].DocId;\r\n if (this.docId) {\r\n await pdfService\r\n .getPdf(this.docId)\r\n .then((pdf) => {\r\n // Display the pdf\r\n const pdfDocument = document.querySelector(\"#pdfDocument\");\r\n pdfDocument.innerHTML = pdf;\r\n // Setup the doc after being loaded\r\n const that = this;\r\n document.getElementById(\"PdfWebControl\").onload = function () {\r\n that.PdfAttachListeners(\"PdfWebControl\");\r\n setTimeout(function () {\r\n // eslint-disable-next-line no-undef\r\n const myapi = new PdfWebControlApi(\"PdfWebControl\");\r\n that.totalPageNumber = myapi.getPageCount();\r\n }, 500);\r\n };\r\n })\r\n .catch((error) => {\r\n console.log(error);\r\n });\r\n }\r\n }\r\n },\r\n async getAppraisalData() {\r\n const appraisals = await reviewService.getReview(\r\n this.termCode,\r\n this.orgCode,\r\n this.classCode,\r\n this.assignmentId,\r\n this.username,\r\n this.username,\r\n \"Student\",\r\n \"appraisal\"\r\n );\r\n if (appraisals.length > 0) {\r\n this.appraisal = appraisals[0];\r\n if (this.appraisal && this.appraisal.EmailSent == \"Y\") {\r\n this.statusType = \"primary\";\r\n this.submitTooltip = \"Your feedback is submitted.\";\r\n } else if (this.appraisal && this.appraisal.IsSaved == \"Y\") {\r\n this.statusType = \"danger\";\r\n this.submitTooltip =\r\n \"Your feedback is saved, but has not yet been submitted.\";\r\n } else {\r\n this.statusType = \"info\";\r\n }\r\n }\r\n await rubricService\r\n .getRubricById(this.appraisalRubricId)\r\n .then((rubric) => {\r\n this.appraisalRubricCriteria = rubric.RubricCriterias;\r\n if (this.appraisal) {\r\n if (this.appraisal.ReviewData.length == 0) {\r\n this.appraisalCriteriaFeedback = this.getDefaultCriteriaFeedback(\r\n rubric.RubricCriterias\r\n );\r\n } else {\r\n this.appraisalCriteriaFeedback = this.appraisal.ReviewData;\r\n }\r\n } else {\r\n this.appraisalCriteriaFeedback = this.getDefaultCriteriaFeedback(\r\n rubric.RubricCriterias\r\n );\r\n }\r\n })\r\n .catch((error) => {\r\n console.log(error);\r\n });\r\n\r\n // Setup auto save for comment boxes\r\n const criteriaComments = document.querySelectorAll(\r\n \".criteria-comment > .el-textarea__inner\"\r\n );\r\n const that = this;\r\n criteriaComments.forEach(function (item) {\r\n const criteriaIndex = item.getAttribute(\"criteria-index\");\r\n\r\n item.addEventListener(\"focus\", function (e) {\r\n that.cIndex = this.getAttribute(\"criteria-index\");\r\n });\r\n\r\n item.addEventListener(\"focusout\", function (e) {\r\n let scoreClicked = false;\r\n if (!that.appraisal) {\r\n // Check if reviewer click on a criteria score after focus out\r\n const nextTarget = e.relatedTarget;\r\n if (\r\n nextTarget &&\r\n nextTarget.classList &&\r\n nextTarget.classList.length > 0 &&\r\n e.relatedTarget.classList[0] == \"el-radio-button\"\r\n ) {\r\n scoreClicked = true;\r\n }\r\n }\r\n if (!scoreClicked && !this.readOnly) {\r\n that.saveReview(criteriaIndex);\r\n }\r\n });\r\n });\r\n },\r\n async getCollectiveFeedbacks() {\r\n this.collectiveFeedbacks = await cfService.getAllCFByAssignment(\r\n this.orgCode,\r\n this.classCode,\r\n this.termCode,\r\n this.assignmentId\r\n );\r\n if (this.collectiveFeedbacks.length > 0) {\r\n this.collectiveFeedback = this.collectiveFeedbacks[0];\r\n this.issues = this.collectiveFeedback.CollectiveFeedbackIssues.filter(\r\n function (el) {\r\n return el.IsActive == 1;\r\n }\r\n );\r\n }\r\n },\r\n async onCollectiveFeedbackChange() {\r\n this.issues = this.collectiveFeedback.CollectiveFeedbackIssues.filter(\r\n function (el) {\r\n return el.IsActive == 1;\r\n }\r\n );\r\n },\r\n getCategory(categoryId) {\r\n let category = \"\";\r\n switch (categoryId) {\r\n case 1:\r\n category = \"Purpose\";\r\n break;\r\n case 2:\r\n category = \"Audience\";\r\n break;\r\n case 3:\r\n category = \"Visual Design\";\r\n break;\r\n case 4:\r\n category = \"Document Design\";\r\n break;\r\n case 5:\r\n category = \"Organization\";\r\n break;\r\n case 6:\r\n category = \"Writing/Style\";\r\n break;\r\n case 7:\r\n category = \"Genre/Content\";\r\n break;\r\n case 8:\r\n category = \"Other\";\r\n }\r\n return category;\r\n },\r\n expandAll() {\r\n this.activeIssues = this.issues.map((issue) => issue.Id);\r\n },\r\n // @vuese\r\n // Collapse all issues.\r\n collapseAll() {\r\n this.activeIssues = [];\r\n },\r\n async onFeedbackTypeChange() {\r\n // this.review = null;\r\n // this.criteriaFeedback = null;\r\n // this.rubricCriteria = null;\r\n // this.peers = [];\r\n this.review = null;\r\n switch (this.feedbackType) {\r\n case 0:\r\n break;\r\n case 1:\r\n await this.getInstructorReview();\r\n break;\r\n case 2:\r\n await this.getSelfReview();\r\n break;\r\n case 3:\r\n await this.setUpPeersSelection();\r\n break;\r\n case 4:\r\n await this.setUpAssignmentSelection();\r\n break;\r\n default:\r\n break;\r\n }\r\n },\r\n async onPeerChange() {\r\n const reviews = await reviewService.getReview(\r\n this.termCode,\r\n this.orgCode,\r\n this.classCode,\r\n this.assignmentId,\r\n this.currentPeer.Id,\r\n this.username,\r\n \"Student\",\r\n \"peer_review\"\r\n );\r\n if (reviews.length > 0) {\r\n this.review = reviews[0];\r\n }\r\n await this.displayReview();\r\n },\r\n async getSelfReview() {\r\n const reviews = await reviewService.getReview(\r\n this.termCode,\r\n this.orgCode,\r\n this.classCode,\r\n this.assignmentId,\r\n this.username,\r\n this.username,\r\n \"Student\",\r\n \"self_review\"\r\n );\r\n if (reviews.length > 0) {\r\n this.review = reviews[0];\r\n }\r\n await this.displayReview();\r\n },\r\n async getInstructorReview() {\r\n this.review = await reviewService.getLatestInstructorReview(\r\n this.termCode,\r\n this.orgCode,\r\n this.classCode,\r\n this.username,\r\n this.assignmentId\r\n );\r\n if (this.review) {\r\n await this.displayReview();\r\n }\r\n },\r\n async displayReview() {\r\n var rubricId = 0;\r\n\r\n if (this.feedbackType == 1) {\r\n rubricId = this.assignment.Tasks.find(\r\n (t) => t.Type == \"instructor_review\"\r\n ).RubricId;\r\n } else if (this.feedbackType == 2) {\r\n rubricId = this.assignment.Tasks.find(\r\n (t) => t.Type == \"self_review\"\r\n ).RubricId;\r\n } else if (this.feedbackType == 3) {\r\n rubricId = this.assignment.Tasks.find(\r\n (t) => t.Type == \"peer_review\"\r\n ).RubricId;\r\n }\r\n\r\n if (this.review && this.review.EmailSent == \"Y\") {\r\n this.statusType = \"primary\";\r\n this.submitTooltip = \"Your feedback is submitted.\";\r\n } else if (this.review && this.review.IsSaved == \"Y\") {\r\n this.statusType = \"danger\";\r\n this.submitTooltip =\r\n \"Your feedback is saved, but has not yet been submitted.\";\r\n } else {\r\n this.statusType = \"info\";\r\n }\r\n\r\n // Get the rubric from current assignment.\r\n await rubricService\r\n .getRubricById(rubricId)\r\n .then((rubric) => {\r\n this.rubricCriteria = rubric.RubricCriterias;\r\n if (this.review) {\r\n if (this.review.ReviewData.length == 0) {\r\n this.criteriaFeedback = this.getDefaultCriteriaFeedback(\r\n rubric.RubricCriterias\r\n );\r\n } else {\r\n this.criteriaFeedback = this.review.ReviewData;\r\n }\r\n } else {\r\n this.criteriaFeedback = this.getDefaultCriteriaFeedback(\r\n rubric.RubricCriterias\r\n );\r\n }\r\n })\r\n .catch((error) => {\r\n console.log(error);\r\n });\r\n },\r\n async setUpPeersSelection() {\r\n // Get all students who have reviewed paper for this assignment\r\n const reviewers = await reviewService.getReviewers(\r\n this.termCode,\r\n this.orgCode,\r\n this.classCode,\r\n this.username,\r\n this.assignmentId,\r\n \"peer_review\"\r\n );\r\n if (reviewers.length > 0) {\r\n const that = this;\r\n this.peers = reviewers.filter(function (el) {\r\n return el.Id != that.username;\r\n });\r\n\r\n if (this.peers.length == 0) {\r\n Notification.error({\r\n duration: 6000,\r\n title: \"Error\",\r\n message: \"No peer review found!\",\r\n });\r\n } else {\r\n this.currentPeer = this.peers[0];\r\n this.onPeerChange();\r\n }\r\n } else {\r\n Notification.error({\r\n duration: 6000,\r\n title: \"Error\",\r\n message: \"No peer review found!\",\r\n });\r\n }\r\n },\r\n getDefaultCriteriaFeedback(criteria) {\r\n const criteriaFeedbacks = [];\r\n for (let i = 0; i < criteria.length; i++) {\r\n const criteriaFeedback = {\r\n CriteriaId: criteria[i].Id,\r\n Mark: 999,\r\n Comment: \"\",\r\n AudioPath: null,\r\n LetterGrade: null,\r\n };\r\n criteriaFeedbacks.push(criteriaFeedback);\r\n }\r\n return criteriaFeedbacks;\r\n },\r\n // @vuese\r\n // Auto save the review before a page refresh.\r\n saveReviewBeforeRefresh() {\r\n if (this.appraisal != null) {\r\n if (this.cIndex != null) {\r\n // Update this review feedback\r\n const api = urlUtils.getBaseApiURL() + \"/review/data\";\r\n const xmlhttp = new XMLHttpRequest();\r\n xmlhttp.open(\"PUT\", api, false); // the false is for making the call synchronous\r\n xmlhttp.setRequestHeader(\r\n \"Content-Type\",\r\n \"application/json;charset=UTF-8\"\r\n );\r\n xmlhttp.send(\r\n JSON.stringify(this.appraisalCriteriaFeedback[this.cIndex])\r\n );\r\n }\r\n } else {\r\n if (\r\n this.cIndex != null &&\r\n this.appraisalCriteriaFeedback[this.cIndex].Comment != \"\"\r\n ) {\r\n // Create new review\r\n const reviewType = \"appraisal\";\r\n const lastActivityDate = this.getlastActivityDate();\r\n const lastCriteriaScore =\r\n this.appraisalCriteriaFeedback[\r\n this.appraisalCriteriaFeedback.length - 1\r\n ].Mark;\r\n const holisticScore =\r\n lastCriteriaScore == null ? 999 : lastCriteriaScore;\r\n const newReview = {\r\n DocId: this.docId,\r\n TermCode: this.termCode,\r\n OrgCode: this.orgCode,\r\n ClassCode: this.classCode,\r\n RevieweeId: this.username,\r\n AssignmentId: this.assignmentId,\r\n ReviewerId: this.username,\r\n ReviewType: reviewType,\r\n UploadedDate: lastActivityDate,\r\n IsSaved: \"Y\",\r\n EmailSent: \"N\",\r\n LastActivityDate: lastActivityDate,\r\n ReviewerRole: \"Student\",\r\n FinalGrade: \"NG\",\r\n PercentScore: 0,\r\n HolisticScore: holisticScore,\r\n ReviewData: this.appraisalCriteriaFeedback,\r\n TaskId: this.taskId,\r\n };\r\n const api = urlUtils.getBaseApiURL() + \"/review\";\r\n const xmlhttp = new XMLHttpRequest();\r\n xmlhttp.open(\"POST\", api, false); // the false is for making the call synchronous\r\n xmlhttp.setRequestHeader(\r\n \"Content-Type\",\r\n \"application/json;charset=UTF-8\"\r\n );\r\n xmlhttp.send(JSON.stringify(newReview));\r\n }\r\n }\r\n },\r\n // @vuese\r\n // Auto save the review.\r\n // @arg The criteria index.\r\n saveReview(criteriaIndex) {\r\n if (this.appraisal != null) {\r\n // Update this review feedback\r\n reviewService\r\n .updateReviewFeeback(this.appraisalCriteriaFeedback[criteriaIndex])\r\n .then((review) => {\r\n const message = document.getElementById(\"savedMessage\");\r\n message.style.display = \"inline-block\";\r\n setTimeout(function () {\r\n if (message.style.display == \"inline-block\") {\r\n message.style.display = \"none\";\r\n }\r\n }, 3000);\r\n })\r\n .catch((error) => {\r\n console.log(error);\r\n Notification.error({\r\n duration: 6000,\r\n title: \"Error\",\r\n message: \"Your feedback was not saved.\",\r\n });\r\n });\r\n } else {\r\n // Create new review\r\n const reviewType = \"appraisal\";\r\n const lastActivityDate = this.getlastActivityDate();\r\n const lastCriteriaScore =\r\n this.appraisalCriteriaFeedback[\r\n this.appraisalCriteriaFeedback.length - 1\r\n ].Mark;\r\n const holisticScore =\r\n lastCriteriaScore == null ? 999 : lastCriteriaScore;\r\n const newReview = {\r\n DocId: this.docId,\r\n TermCode: this.termCode,\r\n OrgCode: this.orgCode,\r\n ClassCode: this.classCode,\r\n RevieweeId: this.username,\r\n AssignmentId: this.assignmentId,\r\n ReviewerId: this.username,\r\n ReviewType: reviewType,\r\n UploadedDate: lastActivityDate,\r\n IsSaved: \"Y\",\r\n EmailSent: \"N\",\r\n LastActivityDate: lastActivityDate,\r\n ReviewerRole: \"Student\",\r\n FinalGrade: \"NG\",\r\n PercentScore: 0,\r\n HolisticScore: holisticScore,\r\n ReviewData: this.appraisalCriteriaFeedback,\r\n TaskId: this.taskId,\r\n };\r\n\r\n reviewService\r\n .createNewReview(newReview)\r\n .then((review) => {\r\n this.appraisal = review;\r\n this.appraisalCriteriaFeedback = review.ReviewData;\r\n this.statusType = \"danger\";\r\n this.submitTooltip =\r\n \"Your feedback is saved, but has not yet been submitted.\";\r\n const message = document.getElementById(\"savedMessage\");\r\n message.style.display = \"inline-block\";\r\n setTimeout(function () {\r\n if (message.style.display == \"inline-block\") {\r\n message.style.display = \"none\";\r\n }\r\n }, 3000);\r\n })\r\n .catch((error) => {\r\n console.log(error);\r\n Notification.error({\r\n duration: 6000,\r\n title: \"Error\",\r\n message: \"Your feedback was not saved.\",\r\n });\r\n });\r\n }\r\n },\r\n // @vuese\r\n // Submit a review.\r\n submitReview() {\r\n if (this.appraisal != null) {\r\n // Update this review\r\n const review = this.appraisal;\r\n review.IsSaved = \"N\";\r\n review.EmailSent = \"Y\";\r\n review.LastActivityDate = this.getlastActivityDate();\r\n const lastCriteriaScore =\r\n this.appraisalCriteriaFeedback[\r\n this.appraisalCriteriaFeedback.length - 1\r\n ].Mark;\r\n review.HolisticScore =\r\n lastCriteriaScore == null ? 999 : lastCriteriaScore;\r\n reviewService\r\n .updateReview(review)\r\n .then((updatedReview) => {\r\n this.appraisal = updatedReview;\r\n this.appraisalCriteriaFeedback = updatedReview.ReviewData;\r\n this.statusType = \"primary\";\r\n this.submitTooltip = \"Your feedback is submitted.\";\r\n\r\n Notification.success({\r\n duration: 6000,\r\n title: \"Success\",\r\n message: \"Your feedback was submitted successfully.\",\r\n });\r\n\r\n // if(myapi){\r\n // \tmyapi.save();\r\n // \tlet that = this;\r\n // \tsetTimeout(function() {\r\n // \t\tpdfService.processCommentText(that.appraisal.DocId);\r\n // \t}, 2000);\r\n // }\r\n })\r\n .catch((error) => {\r\n console.log(error);\r\n Notification.error({\r\n duration: 6000,\r\n title: \"Error\",\r\n message: \"Your feedback was not submitted successfully.\",\r\n });\r\n });\r\n }\r\n },\r\n // @vuese\r\n // Get previous feedback.\r\n // @arg The previously submitted review.\r\n getPreviousFeedback(review) {\r\n const criteriaFeedbacks = [];\r\n for (let i = 0; i < review.ReviewData.length; i++) {\r\n const criteria = review.ReviewData[i];\r\n const criteriaFeedback = {\r\n CriteriaId: criteria.CriteriaId,\r\n Mark: criteria.Mark == null ? 999 : criteria.Mark,\r\n Comment: criteria.Comment,\r\n AudioPath: criteria.AudioPath,\r\n };\r\n criteriaFeedbacks.push(criteriaFeedback);\r\n }\r\n return criteriaFeedbacks;\r\n },\r\n // @vuese\r\n // Setup project selection drop down.\r\n async setBaseTextSelection() {\r\n let baseProjects = this.$store.state.assignment.assignments;\r\n if (!baseProjects) {\r\n baseProjects = await assignmentService.getAssignmentsByClass(\r\n this.termCode,\r\n this.orgCode,\r\n this.classCode\r\n );\r\n }\r\n\r\n if (baseProjects.length > 0) {\r\n this.baseProjects = baseProjects.filter(function (el) {\r\n return el.IsGroupAssignment != true;\r\n });\r\n } else {\r\n Notification.info({\r\n duration: 6000,\r\n title: \"Info\",\r\n message: \"No assignments found for this course.\",\r\n });\r\n document.getElementById(\"full_width_container\").style.display = \"none\";\r\n }\r\n },\r\n async setNewTextSelection() {\r\n let newProjects = this.$store.state.assignment.assignments;\r\n if (!newProjects) {\r\n newProjects = await assignmentService.getAssignmentsByClass(\r\n this.termCode,\r\n this.orgCode,\r\n this.classCode\r\n );\r\n }\r\n\r\n if (newProjects.length > 0) {\r\n const that = this;\r\n this.newProjects = newProjects.filter(function (el) {\r\n return el.IsGroupAssignment != true && el.Id != that.baseProject.Id;\r\n });\r\n } else {\r\n Notification.info({\r\n duration: 6000,\r\n title: \"Info\",\r\n message: \"No assignments found for this course.\",\r\n });\r\n document.getElementById(\"full_width_container\").style.display = \"none\";\r\n }\r\n },\r\n // async displayDocument(){\r\n // \tif(this.viewType == 'annotate'){\r\n // \t\tthis.pdfControl = await pdfService.getPdf(this.docId);\r\n // \t\tlet pdfDocument = document.querySelector('#pdfDocument');\r\n // \t\tpdfDocument.innerHTML = this.pdfControl;\r\n // \t\t// Setup the doc after being loaded\r\n // \t\tlet that = this;\r\n // \t\tdocument.getElementById('PdfWebControl').onload = function() {\r\n // \t\t\tthat.PdfAttachListeners();\r\n // \t\t\tsetTimeout(function() {\r\n // \t\t\t\tthat.totalPageNumber = myapi.getPageCount();\r\n // \t\t\t}, 500);\r\n // \t\t\tthat.autoSavePdf();\r\n // \t\t};\r\n // \t}\r\n\r\n // },\r\n PdfAttachListeners(id) {\r\n // const id = 'PdfWebControl'\r\n // eslint-disable-next-line no-undef\r\n const myapi = new PdfWebControlApi(id);\r\n myapi.addEventListener(\"modeChanged\", function (evt) {\r\n evt.byLine = true;\r\n });\r\n const that = this;\r\n myapi.addEventListener(\"viewChanged\", function (evt) {\r\n that.pageNum = myapi.getPageViewed().getPageNumber();\r\n });\r\n\r\n myapi.addEventListener(\"objectAdded\", function (evt) {\r\n if (evt.obj.getType() == 154) {\r\n // Highlight annotation\r\n const props = evt.obj.getProperties();\r\n const popup = evt.obj.getPopup();\r\n\r\n evt.obj.setProperties({\r\n customData: evt.textSelected,\r\n });\r\n\r\n popup.setProperties({\r\n author: \"RAD PDF\",\r\n subject: \"In-text Comment\",\r\n top: props[\"top\"] - 60,\r\n left: props[\"left\"] - 5,\r\n height: 60,\r\n });\r\n myapi.setMode(myapi.Mode.None);\r\n }\r\n\r\n if (evt.obj.getType() == 100) {\r\n myapi.setMode(myapi.Mode.None);\r\n }\r\n\r\n if (evt.obj.getType() == 101) {\r\n myapi.setMode(myapi.Mode.None);\r\n }\r\n\r\n if (evt.obj.getType() == myapi.ObjectType.StrikeoutAnnotation) {\r\n myapi.setMode(myapi.Mode.None);\r\n }\r\n if (evt.obj.getType() == myapi.ObjectType.TextAnnotation) {\r\n myapi.setMode(myapi.Mode.None);\r\n }\r\n });\r\n },\r\n // @vuese\r\n // Auto save the pdf every 2 minutes.\r\n autoSavePdf() {\r\n const that = this;\r\n\r\n window.setInterval(function () {\r\n // eslint-disable-next-line no-undef\r\n const myapi = new PdfWebControlApi(\"PdfWebControl\");\r\n const iframe = document.getElementById(\"PdfWebControl\");\r\n if (iframe) {\r\n const innerDoc =\r\n iframe.contentDocument || iframe.contentWindow.document;\r\n const page = myapi.getPageViewed();\r\n const objCount = page.getObjectCount();\r\n\r\n if (objCount == 0) {\r\n if (myapi.getHasUnsavedChanges()) {\r\n myapi.save();\r\n return;\r\n }\r\n }\r\n\r\n let found;\r\n const pdfe_msgt = innerDoc.getElementById(\"pdfe_msgt\");\r\n for (let i = 0; i < objCount; i++) {\r\n // get this object\r\n const aTags = innerDoc.getElementsByTagName(\"div\");\r\n for (let i = 0; i < aTags.length; i++) {\r\n if (aTags[i].innerHTML == \"DEL\") {\r\n found = aTags[i];\r\n }\r\n }\r\n }\r\n\r\n if (\r\n typeof found === \"undefined\" ||\r\n found === null ||\r\n typeof pdfe_msgt === \"undefined\" ||\r\n pdfe_msgt === null\r\n ) {\r\n return;\r\n }\r\n\r\n if (pdfe_msgt.style.visibility == \"visible\") {\r\n return;\r\n } else {\r\n if (found.style.visibility == \"visible\") {\r\n return;\r\n }\r\n }\r\n\r\n const activeEl = innerDoc.activeElement;\r\n if (activeEl) {\r\n const isEditting = activeEl.getAttribute(\"contenteditable\");\r\n if (isEditting) {\r\n return;\r\n }\r\n }\r\n\r\n if (myapi.getHasUnsavedChanges()) {\r\n myapi.save();\r\n if (that.appraisal == null) {\r\n that.saveReview();\r\n }\r\n }\r\n }\r\n }, 120 * 1000);\r\n },\r\n // @vuese\r\n // Handles logics when the page number is changed.\r\n changePage(id) {\r\n // eslint-disable-next-line no-undef\r\n const myapi = new PdfWebControlApi(id);\r\n myapi.setView({ page: this.pageNum });\r\n },\r\n // @vuese\r\n // Handles logics when the zoom out button is clicked.\r\n zoomOut(id) {\r\n // eslint-disable-next-line no-undef\r\n const myapi = new PdfWebControlApi(id);\r\n if (myapi) {\r\n if (this.zoomValue > 40) {\r\n myapi.setView({ zoom: (this.zoomValue -= 20) });\r\n }\r\n }\r\n },\r\n // @vuese\r\n // Handles logics when the zoom in button is clicked.\r\n zoomIn(id) {\r\n // eslint-disable-next-line no-undef\r\n const myapi = new PdfWebControlApi(id);\r\n if (myapi) {\r\n if (this.zoomValue < 200 && this.zoomValue > 20) {\r\n myapi.setView({ zoom: (this.zoomValue += 20) });\r\n }\r\n }\r\n },\r\n // @vuese\r\n // Handles logics when the zoom fit width button is clicked.\r\n zoomFitWidth(id) {\r\n // eslint-disable-next-line no-undef\r\n const myapi = new PdfWebControlApi(id);\r\n if (myapi) {\r\n this.zoomValue = 140;\r\n myapi.setView({ zoom: -1 });\r\n }\r\n },\r\n // @vuese\r\n // Handles logics when the download button is clicked.\r\n async downloadPdf(id) {\r\n let docId = this.docId;\r\n if (id == \"PdfWebControlCompare\") {\r\n docId = this.compareDocId;\r\n }\r\n\r\n const payload = new URLSearchParams();\r\n payload.append(\"UserId\", this.username);\r\n payload.append(\"DocId\", docId);\r\n // get download data\r\n const data = await pdfService.getDownloadData(payload);\r\n if (data) {\r\n const arrayBuffer = this.base64ToArrayBuffer(data.DownloadData);\r\n const blob = new Blob([arrayBuffer], { type: \"application/pdf\" });\r\n const link = document.createElement(\"a\");\r\n link.href = window.URL.createObjectURL(blob);\r\n link.download = data.DocumentName;\r\n document.body.appendChild(link);\r\n link.click();\r\n link.remove();\r\n } else {\r\n Notification.error({\r\n duration: 6000,\r\n title: \"Error\",\r\n message: \"Paper cannot be found.\",\r\n });\r\n }\r\n },\r\n base64ToArrayBuffer(base64) {\r\n const binaryString = window.atob(base64);\r\n const binaryLen = binaryString.length;\r\n const bytes = new Uint8Array(binaryLen);\r\n for (let i = 0; i < binaryLen; i++) {\r\n const ascii = binaryString.charCodeAt(i);\r\n bytes[i] = ascii;\r\n }\r\n return bytes;\r\n },\r\n // @vuese\r\n // Handles logics when the select text button is clicked.\r\n selectTextPdf(id) {\r\n // eslint-disable-next-line no-undef\r\n const myapi = new PdfWebControlApi(id);\r\n if (myapi) {\r\n myapi.setMode(myapi.Mode.SelectText);\r\n }\r\n return false;\r\n },\r\n handScroll(id) {\r\n // eslint-disable-next-line no-undef\r\n const myapi = new PdfWebControlApi(id);\r\n if (myapi) {\r\n myapi.setMode(myapi.Mode.HandScroll);\r\n }\r\n return false;\r\n },\r\n // @vuese\r\n // Handles logics when the highlight button is clicked.\r\n highlightPdf(id) {\r\n // eslint-disable-next-line no-undef\r\n const myapi = new PdfWebControlApi(id);\r\n if (myapi) {\r\n myapi.setMode(myapi.Mode.InsertHighlightAnnotation);\r\n }\r\n return false;\r\n },\r\n // @vuese\r\n // Handles logics when the free text button is clicked.\r\n freeTextPdf(id) {\r\n // eslint-disable-next-line no-undef\r\n const myapi = new PdfWebControlApi(id);\r\n if (myapi) {\r\n myapi.setMode(myapi.Mode.InsertTextShape);\r\n }\r\n return false;\r\n },\r\n // @vuese\r\n // Handles logics when the strike out button is clicked.\r\n strikeOutPdf(id) {\r\n // eslint-disable-next-line no-undef\r\n const myapi = new PdfWebControlApi(id);\r\n if (myapi) {\r\n myapi.setMode(myapi.Mode.InsertStrikeoutAnnotation);\r\n }\r\n return false;\r\n },\r\n // @vuese\r\n // Handles logics when the free draw button is clicked.\r\n freeDrawPdf(id) {\r\n // eslint-disable-next-line no-undef\r\n const myapi = new PdfWebControlApi(id);\r\n if (myapi) {\r\n myapi.setMode(myapi.Mode.InsertInkShape);\r\n }\r\n return false;\r\n },\r\n // @vuese\r\n // Handles logics when the sticky note button is clicked.\r\n stickyNotePdf(id) {\r\n // eslint-disable-next-line no-undef\r\n const myapi = new PdfWebControlApi(id);\r\n if (myapi) {\r\n myapi.setMode(myapi.Mode.InsertTextAnnotation);\r\n }\r\n return false;\r\n },\r\n getlastActivityDate() {\r\n const today = this.$moment()._d;\r\n return (\r\n today.getFullYear() +\r\n \"-\" +\r\n (today.getMonth() + 1) +\r\n \"-\" +\r\n today.getDate() +\r\n \" \" +\r\n today.getHours() +\r\n \":\" +\r\n today.getMinutes() +\r\n \":\" +\r\n today.getSeconds()\r\n );\r\n },\r\n getDateStr(date) {\r\n const thisDate = this.$moment(date)._d;\r\n return (\r\n thisDate.getFullYear() +\r\n \"-\" +\r\n (thisDate.getMonth() + 1) +\r\n \"-\" +\r\n thisDate.getDate() +\r\n \" \" +\r\n thisDate.getHours() +\r\n \":\" +\r\n thisDate.getMinutes() +\r\n \":\" +\r\n thisDate.getSeconds()\r\n );\r\n },\r\n backToStudentSubmissions() {\r\n this.$router.push(\r\n \"/course/\" +\r\n this.classCode +\r\n \"/projects/\" +\r\n this.assignmentId +\r\n \"/submissions\"\r\n );\r\n },\r\n },\r\n};\r\n</script>\r\n\r\n<style scoped>\r\nbody {\r\n background: #f1f3fa;\r\n}\r\n#content-wrapper {\r\n margin-left: 65px;\r\n}\r\n\r\n.el-card {\r\n border: 1px solid #d4d5d6;\r\n}\r\n.el-card.is-always-shadow,\r\n.el-card.is-hover-shadow:focus,\r\n.el-card.is-hover-shadow:hover {\r\n -webkit-box-shadow: 0 2px 12px 0 #f1f3fa;\r\n box-shadow: 0 2px 12px 0 #f1f3fa;\r\n}\r\n\r\n.el-card__header {\r\n padding: 10px 10px;\r\n}\r\n\r\n.el-card__body {\r\n padding: 10px;\r\n}\r\n\r\n.el-textarea__inner {\r\n padding: 5px 10px;\r\n}\r\n\r\n.filter-btn {\r\n text-align: center;\r\n box-shadow: none;\r\n display: inline-block;\r\n padding: 0px 10px;\r\n vertical-align: middle;\r\n touch-action: manipulation;\r\n cursor: pointer;\r\n color: #636363;\r\n}\r\n\r\n.filter-divider {\r\n float: left;\r\n border-right: solid 1px #cccccc;\r\n height: 50px;\r\n}\r\n\r\n#full_width_container.full-width {\r\n position: absolute;\r\n top: 0;\r\n bottom: 2px;\r\n left: 215px;\r\n right: 0;\r\n min-width: 460px;\r\n}\r\n\r\n#full_width_container {\r\n position: absolute;\r\n top: 0;\r\n bottom: 2px;\r\n left: 65px;\r\n right: 0;\r\n min-width: 460px;\r\n}\r\n\r\n#left_side {\r\n top: 0;\r\n bottom: 0;\r\n overflow-y: hidden;\r\n left: 0;\r\n min-width: 650px;\r\n}\r\n\r\n#right_side {\r\n top: 0;\r\n bottom: 0;\r\n right: 0;\r\n font-size: 14px;\r\n font-size: 0.875rem;\r\n}\r\n\r\n.splitted-column {\r\n overflow: auto;\r\n height: 100%;\r\n}\r\n\r\n.el-input-number--small {\r\n width: 100px;\r\n}\r\n.el-radio-button >>> .el-radio-button__inner {\r\n padding: 12px 15px;\r\n}\r\n\r\n.full_height {\r\n height: 100%;\r\n overflow-x: auto;\r\n}\r\n\r\n#left_side_inner,\r\n#submissions_container,\r\n#iframe_holder {\r\n overflow: auto;\r\n height: 99%;\r\n width: 100%;\r\n border: 0 none;\r\n}\r\niframe {\r\n width: 100%;\r\n border: 0px;\r\n overflow: auto;\r\n height: 99%;\r\n min-height: 0px;\r\n}\r\n\r\n#width_resizer {\r\n position: absolute;\r\n top: 0;\r\n bottom: 0;\r\n left: 0;\r\n background: #bbb\r\n url(https://du11hjcvx0uqb.cloudfront.net/dist/images/splitpane_handle-ew-1b67cccf0f.gif)\r\n no-repeat scroll 50% 50%;\r\n cursor: pointer;\r\n width: 7px;\r\n border-right: 1px solid #838383;\r\n z-index: 2;\r\n}\r\n\r\n.right_side_content {\r\n position: absolute;\r\n top: 0;\r\n bottom: 0;\r\n left: 2px;\r\n right: 0;\r\n}\r\n#right_side #rightside_inner {\r\n overflow-y: auto;\r\n position: relative;\r\n}\r\n\r\n.ViewerControls--with-annotations {\r\n height: 49px;\r\n}\r\n.ViewerControls {\r\n background-color: #636363;\r\n color: #fff;\r\n font-size: 14px;\r\n line-height: 24px;\r\n /* overflow-x: auto; */\r\n /* position: absolute;\r\n width: 100%; */\r\n}\r\n.ViewerControls-primary {\r\n -ms-touch-action: none;\r\n touch-action: none;\r\n pointer-events: all;\r\n display: -webkit-box;\r\n display: -ms-flexbox;\r\n display: flex;\r\n}\r\n.ViewerControls--download,\r\n.ViewerControls--title {\r\n -webkit-box-flex: 1;\r\n -ms-flex: 1;\r\n flex: 1;\r\n display: -webkit-box;\r\n display: -ms-flexbox;\r\n display: flex;\r\n -webkit-box-align: center;\r\n -ms-flex-align: center;\r\n align-items: center;\r\n white-space: nowrap;\r\n}\r\n\r\n.download-button--button {\r\n background-color: transparent;\r\n font-size: 16px;\r\n border: none;\r\n height: 48px;\r\n width: 48px;\r\n color: white;\r\n cursor: pointer;\r\n}\r\n/* .download-button--button:hover {\r\n background-color: #777777;\r\n} */\r\n\r\n.ViewerControls--page-controls {\r\n display: -webkit-box;\r\n display: -ms-flexbox;\r\n display: flex;\r\n -webkit-box-align: center;\r\n -ms-flex-align: center;\r\n align-items: center;\r\n white-space: nowrap;\r\n}\r\n\r\n.DocumentControls {\r\n display: -webkit-box;\r\n display: -ms-flexbox;\r\n display: flex;\r\n -webkit-box-align: center;\r\n -ms-flex-align: center;\r\n align-items: center;\r\n}\r\n\r\n.AnnotationControlButton {\r\n width: 48px;\r\n padding: 0;\r\n border: 0 none;\r\n color: #fff;\r\n background-color: #636363;\r\n margin-top: 0;\r\n margin-bottom: 0;\r\n cursor: pointer;\r\n -webkit-box-sizing: content-box;\r\n box-sizing: content-box;\r\n -webkit-touch-callout: none;\r\n user-select: none;\r\n -moz-user-select: none;\r\n -webkit-user-select: none;\r\n -ms-user-select: none;\r\n -webkit-tap-highlight-color: rgba(0, 0, 0, 0);\r\n}\r\n.AnnotationControlButton-inner,\r\n.AnnotationControlButton-outer {\r\n -webkit-box-sizing: content-box;\r\n box-sizing: content-box;\r\n display: -webkit-box;\r\n display: -ms-flexbox;\r\n display: flex;\r\n}\r\n\r\n.AnnotationControlButton-inner {\r\n margin: 0;\r\n height: 44px;\r\n width: 48px;\r\n -webkit-box-pack: center;\r\n -ms-flex-pack: center;\r\n justify-content: center;\r\n -webkit-box-align: center;\r\n -ms-flex-align: center;\r\n align-items: center;\r\n}\r\n\r\n.AnnotationControlButton-inner {\r\n margin: 0;\r\n height: 44px;\r\n width: 48px;\r\n -webkit-box-pack: center;\r\n -ms-flex-pack: center;\r\n justify-content: center;\r\n -webkit-box-align: center;\r\n -ms-flex-align: center;\r\n align-items: center;\r\n}\r\n.AnnotationControlButton-outer {\r\n width: 44px;\r\n margin: 1px;\r\n border: 1px solid #636363;\r\n}\r\n\r\n.ViewerControls--current-page {\r\n -moz-appearance: textfield;\r\n margin-top: 10px;\r\n border-radius: 3px;\r\n border: 0;\r\n height: 28px;\r\n width: 36px;\r\n background-color: #fff;\r\n color: #636363;\r\n font-size: 14px;\r\n text-align: center;\r\n vertical-align: top;\r\n}\r\n.next-prev {\r\n text-align: center;\r\n -webkit-box-shadow: none;\r\n box-shadow: none;\r\n display: inline-block;\r\n padding: 0px 10px;\r\n vertical-align: middle;\r\n -ms-touch-action: manipulation;\r\n touch-action: manipulation;\r\n cursor: pointer;\r\n border: 0 none;\r\n background: none;\r\n}\r\n\r\n.submission-status-btn {\r\n box-shadow: none;\r\n display: inline-block;\r\n vertical-align: middle;\r\n touch-action: manipulation;\r\n cursor: pointer;\r\n padding: 6.5px 10px;\r\n /* border: 0px none;\r\n background: none; */\r\n}\r\n/* .AnnotationControlButton.selected .AnnotationControlButton-outer {\r\n border-color: #fff;\r\n border: 1px solid #fff;\r\n color: #636363;\r\n}\r\n.AnnotationControlButton.selected {\r\n outline: none;\r\n background-color: #fff;\r\n}\r\n\r\n.AnnotationControlButton:active .AnnotationControlButton-outer {\r\n -webkit-box-shadow: inset 0 0 2px #000;\r\n box-shadow: inset 0 0 2px #000;\r\n}\r\n.AnnotationControlButton:hover:enabled .AnnotationControlButton-outer {\r\n border-color: #777777;\r\n}\r\n.AnnotationControlButton:hover:enabled {\r\n background-color: #777777;\r\n} */\r\n\r\n.d2h-code-linenumber {\r\n display: none !important;\r\n}\r\n</style>\r\n\r\n<style>\r\n/* .el-textarea.is-disabled .el-textarea__inner {\r\n color: #4b4b4b;\r\n} */\r\n.d2h-code-linenumber {\r\n display: none !important;\r\n}\r\n\r\n.d2h-code-side-linenumber {\r\n display: none !important;\r\n}\r\n\r\n.d2h-code-line {\r\n margin-left: 5px !important;\r\n}\r\n\r\n.d2h-code-side-line {\r\n margin-left: 5px !important;\r\n}\r\n\r\n.d2h-file-side-diff {\r\n border-right: #b9b9b9 solid 1px !important;\r\n}\r\n\r\n.hljs-keyword,\r\n.hljs-selector-tag,\r\n.hljs-section,\r\n.hljs-title,\r\n.hljs-name {\r\n color: black !important;\r\n}\r\n\r\n.d2h-diff-table {\r\n font-family: Montserrat, Helvetica, Arial, sans-serif;\r\n}\r\n\r\n/* .d2h-file-diff{\r\n height: 94vh;\r\n min-width: 600px;\r\n overflow-y: auto;\r\n} */\r\n\r\n.el-radio-button__orig-radio:disabled:checked + .el-radio-button__inner {\r\n background-color: #0a7756;\r\n color: white;\r\n}\r\n.Resizer.columnsres {\r\n z-index: 1;\r\n}\r\n</style>\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./StudentAppraisal.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./StudentAppraisal.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./StudentAppraisal.vue?vue&type=template&id=5b21c3f8&scoped=true&\"\nimport script from \"./StudentAppraisal.vue?vue&type=script&lang=js&\"\nexport * from \"./StudentAppraisal.vue?vue&type=script&lang=js&\"\nimport style0 from \"./StudentAppraisal.vue?vue&type=style&index=0&id=5b21c3f8&scoped=true&lang=css&\"\nimport style1 from \"./StudentAppraisal.vue?vue&type=style&index=1&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"5b21c3f8\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('div',{staticClass:\"breadcumb\"},[_c('div',{staticClass:\"ic-app-crumbs\"},[_c('span',{staticClass:\"breadcumb-text\"},[_c('router-link',{staticStyle:{\"color\":\"#4E5E63\"},attrs:{\"to\":{ path: '/course/'+ _vm.currentCourse.ClassCode +'/projects' }}},[_vm._v(\"\\n \"+_vm._s(_vm.currentCourse.ClassDescription)+\"\\n \")]),_c('i',{staticClass:\"fas fa-chevron-right breadcumb-next\"}),_vm._v(\"\\n Students\\n \")],1)])]),_c('div',{staticClass:\"cf_list\",attrs:{\"id\":\"mainDiv\"}},[_c('div',{staticStyle:{\"margin-bottom\":\"20px\"}},[_c('el-input',{staticStyle:{\"width\":\"300px\"},attrs:{\"placeholder\":\"Search for student\",\"size\":\"small\"},model:{value:(_vm.search),callback:function ($$v) {_vm.search=$$v},expression:\"search\"}})],1),_c('el-table',{staticStyle:{\"width\":\"100%\",\"word-break\":\"break-word !important\"},attrs:{\"data\":_vm.tableData.filter(function (data) { return (!_vm.search || (data.FirstName.toLowerCase().includes(_vm.search.toLowerCase()) || data.LastName.toLowerCase().includes(_vm.search.toLowerCase()))); }),\"stripe\":\"\"}},[_c('el-table-column',{attrs:{\"label\":\"Student Name\",\"prop\":\"SortableStudentName\",\"sortable\":\"\"},scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [_vm._v(\"\\n \"+_vm._s(scope.row.LastName + \", \" + scope.row.FirstName)+\"\\n \")]}}])}),_c('el-table-column',{attrs:{\"label\":\"Preferred First Name\",\"prop\":\"DisplayFirstName\",\"sortable\":\"\"},scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [(!scope.row.edit)?_c('span',[_vm._v(_vm._s(scope.row.DisplayFirstName))]):_vm._e(),(scope.row.edit)?_c('el-input',{attrs:{\"type\":\"textarea\",\"autosize\":\"\"},model:{value:(scope.row.DisplayFirstName),callback:function ($$v) {_vm.$set(scope.row, \"DisplayFirstName\", $$v)},expression:\"scope.row.DisplayFirstName\"}}):_vm._e()]}}])}),_c('el-table-column',{attrs:{\"label\":\"Display Name\",\"prop\":\"SortableDisplayName\",\"sortable\":\"\"},scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [_vm._v(\"\\n \"+_vm._s(scope.row.LastName + \", \" + (scope.row.DisplayFirstName == null ? scope.row.FirstName : scope.row.DisplayFirstName))+\"\\n \")]}}])}),_c('el-table-column',{attrs:{\"label\":\"Subscription Status\",\"prop\":\"IsSubscribed\"},scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [(scope.row.IsSubscribed)?_c('div',[_c('el-tag',{attrs:{\"type\":\"success\"}},[_vm._v(\"Subscribed\")])],1):_c('div',[_c('el-tag',{attrs:{\"type\":\"danger\"}},[_vm._v(\"Has Not Subscribed\")])],1)]}}])}),_c('el-table-column',{scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [(scope.row.edit)?_c('div',{staticStyle:{\"float\":\"right\",\"min-width\":\"140px\"}},[(scope.row.edit)?_c('el-button',{attrs:{\"size\":\"mini\",\"type\":\"success\",\"plain\":\"\"},on:{\"click\":function($event){return _vm.savePreferredName(scope.row)}}},[_vm._v(\"Save\")]):_vm._e(),(scope.row.edit)?_c('el-button',{attrs:{\"size\":\"mini\",\"plain\":\"\"},on:{\"click\":function($event){scope.row.edit=!scope.row.edit}}},[_vm._v(\"Cancel\")]):_vm._e()],1):_c('div',[_c('el-dropdown',{staticStyle:{\"float\":\"right\",\"cursor\":\"pointer\"},attrs:{\"placement\":\"bottom\",\"trigger\":\"click\"},on:{\"command\":function (command) { return _vm.handleCommand(command, scope.row); }}},[_c('span',{staticClass:\"el-dropdown-link\"},[_c('i',{staticClass:\"fas fa-ellipsis-v\",staticStyle:{\"margin\":\"4px\"}})]),_c('el-dropdown-menu',{attrs:{\"slot\":\"dropdown\"},slot:\"dropdown\"},[_c('el-dropdown-item',{attrs:{\"command\":\"edit\"}},[_c('i',{staticClass:\"fas fa-edit\"}),_vm._v(\" Edit First Name\")])],1)],1)],1)]}}])})],1)],1)])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n <div>\r\n <div class=\"breadcumb\">\r\n <div class=\"ic-app-crumbs\">\r\n <span class=\"breadcumb-text\">\r\n <router-link :to=\"{ path: '/course/'+ currentCourse.ClassCode +'/projects' }\" style=\"color: #4E5E63;\">\r\n {{ currentCourse.ClassDescription }}\r\n </router-link>\r\n <i class=\"fas fa-chevron-right breadcumb-next\" />\r\n Students\r\n </span>\r\n </div>\r\n </div>\r\n\r\n <div id=\"mainDiv\" class=\"cf_list\">\r\n <div style=\"margin-bottom: 20px;\">\r\n <el-input\r\n v-model=\"search\"\r\n placeholder=\"Search for student\"\r\n style=\"width: 300px\"\r\n size=\"small\"\r\n />\r\n </div>\r\n\r\n <el-table\r\n :data=\"tableData.filter(data => (!search || (data.FirstName.toLowerCase().includes(search.toLowerCase()) || data.LastName.toLowerCase().includes(search.toLowerCase()))))\"\r\n stripe\r\n style=\"width: 100%; word-break: break-word !important;\"\r\n >\r\n <el-table-column\r\n label=\"Student Name\"\r\n prop=\"SortableStudentName\"\r\n sortable\r\n >\r\n <template slot-scope=\"scope\">\r\n {{ scope.row.LastName + \", \" + scope.row.FirstName }}\r\n </template>\r\n </el-table-column>\r\n <el-table-column\r\n label=\"Preferred First Name\"\r\n prop=\"DisplayFirstName\"\r\n sortable\r\n >\r\n <template slot-scope=\"scope\">\r\n <span v-if=\"!scope.row.edit\">{{ scope.row.DisplayFirstName }}</span>\r\n <el-input v-if=\"scope.row.edit\" v-model=\"scope.row.DisplayFirstName\" type=\"textarea\" autosize />\r\n </template>\r\n </el-table-column>\r\n <el-table-column\r\n label=\"Display Name\"\r\n prop=\"SortableDisplayName\"\r\n sortable\r\n >\r\n <template slot-scope=\"scope\">\r\n {{ scope.row.LastName + \", \" + (scope.row.DisplayFirstName == null ? scope.row.FirstName : scope.row.DisplayFirstName) }}\r\n </template>\r\n </el-table-column>\r\n <el-table-column\r\n label=\"Subscription Status\"\r\n prop=\"IsSubscribed\"\r\n ><template slot-scope=\"scope\">\r\n <div v-if=\"scope.row.IsSubscribed\">\r\n <el-tag type=\"success\">Subscribed</el-tag>\r\n </div>\r\n <div v-else>\r\n <el-tag type=\"danger\">Has Not Subscribed</el-tag>\r\n </div>\r\n </template>\r\n </el-table-column>\r\n <el-table-column>\r\n <template slot-scope=\"scope\">\r\n <div v-if=\"scope.row.edit\" style=\"float: right; min-width: 140px;\">\r\n <el-button\r\n v-if=\"scope.row.edit\"\r\n size=\"mini\"\r\n type=\"success\"\r\n plain\r\n @click=\"savePreferredName(scope.row)\"\r\n >Save</el-button>\r\n <el-button\r\n v-if=\"scope.row.edit\"\r\n size=\"mini\"\r\n plain\r\n @click=\"scope.row.edit=!scope.row.edit\"\r\n >Cancel</el-button>\r\n </div>\r\n <div v-else>\r\n <el-dropdown style=\"float: right; cursor: pointer;\" placement=\"bottom\" trigger=\"click\" @command=\"command => handleCommand(command, scope.row)\">\r\n <span class=\"el-dropdown-link\">\r\n <i class=\"fas fa-ellipsis-v\" style=\"margin: 4px;\" />\r\n </span>\r\n <el-dropdown-menu slot=\"dropdown\">\r\n <el-dropdown-item command=\"edit\"><i class=\"fas fa-edit\" /> Edit First Name</el-dropdown-item>\r\n <!-- <el-dropdown-item command=\"drop\"><i class=\"fas fa-trash-alt\" /> Drop From Course</el-dropdown-item> -->\r\n </el-dropdown-menu>\r\n </el-dropdown>\r\n </div>\r\n\r\n </template>\r\n </el-table-column>\r\n </el-table>\r\n\r\n </div>\r\n </div>\r\n</template>\r\n<script>\r\nimport { mapActions } from 'vuex'\r\nimport * as userService from '@/services/user.service'\r\n\r\nimport { Notification } from 'element-ui'\r\n// Hanle UI and logics of the Collective Feebacks page.\r\nexport default {\r\n\tdata() {\r\n\t\treturn {\r\n\t\t\ttermCode: this.$store.state.enrollment.termCode,\r\n\t\t\torgCode: this.$store.state.enrollment.orgCode,\r\n\t\t\tclassCode: this.$store.state.enrollment.currentCourse.ClassCode,\r\n\t\t\tuserId: this.$store.state.auth.user.UserName,\r\n\t\t\tuserRole: this.$store.state.enrollment.userRole,\r\n\t\t\tcurrentCourse: this.$store.state.enrollment.currentCourse,\r\n\t\t\ttableData: null,\r\n\t\t\tsearch: ''\r\n\t\t}\r\n\t},\r\n\tasync created() {\r\n\t\tthis.tableData = await userService.getCoursePeople(this.orgCode, this.termCode, this.classCode)\r\n\t\tthis.tableData = this.tableData.map(v => {\r\n\t\t\tthis.$set(v, 'edit', false)\r\n\t\t\treturn v\r\n\t\t})\r\n\t\tconsole.log(this.tableData)\r\n\t},\r\n\tmethods: {\r\n \t...mapActions('viewAs', ['getStudentList']),\r\n\t\thandleCommand(command, row, key) {\r\n\t\t\tif (command == 'edit') {\r\n\t\t\t\t row.edit = !row.edit\r\n\t\t\t}\r\n\t\t},\r\n\t\tsavePreferredName(row) {\r\n\t\t\tuserService.changeUserFirstName(this.orgCode, this.termCode, this.classCode, row.UserName, row.DisplayFirstName)\r\n\t\t\t\t.then(response => {\r\n\t\t\t\t\trow.edit = false\r\n\t\t\t\t\tthis.getStudentList({\r\n\t\t\t\t\t\torgCode: this.orgCode,\r\n\t\t\t\t\t\ttermCode: this.termCode,\r\n\t\t\t\t\t\tclassCode: this.classCode\r\n\t\t\t\t\t})\r\n\t\t\t\t\tNotification.success({\r\n\t\t\t\t\t\tduration: 6000,\r\n\t\t\t\t\t\ttitle: 'Success',\r\n\t\t\t\t\t\tmessage: 'Student\\'s first name was successfully updated.'\r\n\t\t\t\t\t})\r\n\t\t\t\t})\r\n\t\t\t\t.catch(error => {\r\n\t\t\t\t\tconsole.log(error)\r\n\t\t\t\t\tNotification.error({\r\n\t\t\t\t\t\tduration: 6000,\r\n\t\t\t\t\t\ttitle: 'Error',\r\n\t\t\t\t\t\tmessage: 'Student\\'s first name was not updated.'\r\n\t\t\t\t\t})\r\n\t\t\t\t})\r\n\t\t}\r\n\t}\r\n}\r\n</script>\r\n\r\n<style scoped>\r\n.el-table .cell {\r\n\tword-break: break-word !important;\r\n}\r\n</style>\r\n\r\n<style>\r\n/* #cfNewButton{\r\n background-color: #3b9c96;\r\n border-color: #307f7a;\r\n color: white;\r\n}\r\n\r\n#mainDiv{\r\n margin:15px\r\n}\r\n\r\n#cfTitleDiv{\r\n font-size: 20px;\r\n color: #4DB3A2 !important;\r\n font-weight: 700 !important;\r\n text-transform: uppercase !important;\r\n padding: 10px 0px 0px 10px;\r\n\r\n} */\r\n\r\n/* .el-table .cell {\r\n\tword-break: break-word !important;\r\n} */\r\n\r\n.cf_list{\r\n\tpadding: 20px;\r\n /* background-color: #f5f5f5; */\r\n box-shadow: 20px 10px 25px 20px rgba(109, 107, 107, 0.1);\r\n}\r\n\r\n</style>\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Students.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Students.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Students.vue?vue&type=template&id=b0cac534&scoped=true&\"\nimport script from \"./Students.vue?vue&type=script&lang=js&\"\nexport * from \"./Students.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Students.vue?vue&type=style&index=0&id=b0cac534&scoped=true&lang=css&\"\nimport style1 from \"./Students.vue?vue&type=style&index=1&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"b0cac534\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"page h-screen flex w-full\"},[_c('div',{staticClass:\"content sm-c md-c lg-c xl-c mx-auto self-center\",staticStyle:{\"width\":\"400px !important\"}},[_c('div',{staticStyle:{\"padding\":\"20px 30px\"}},[_c('div',{staticClass:\"title\",staticStyle:{\"text-align\":\"center\"}},[_c('router-link',{staticClass:\"navbar-brand\",attrs:{\"to\":\"/\"}},[_c('img',{staticStyle:{\"width\":\"250px\"},attrs:{\"src\":require(\"@/assets/img/Demo Logo.png\"),\"alt\":\"logo\"}})]),(_vm.message)?_c('div',{staticClass:\"tip\",staticStyle:{\"padding\":\"5px 10px\",\"background-color\":\"#daf1ea\",\"border-radius\":\"4px\",\"border-left\":\"5px solid rgb(28 138 105)\",\"margin-bottom\":\"10px\"}},[_c('p',{staticStyle:{\"font-size\":\"14px\",\"color\":\"#444444\",\"word-break\":\"normal\",\"text-align\":\"left\"}},[_vm._v(\"\\n \"+_vm._s(_vm.message)+\"\\n \")])]):_vm._e()],1),(_vm.userId)?_c('div',{staticStyle:{\"width\":\"100%\",\"font-family\":\"Montserrat,Helvetica,Arial,sans-serif\",\"line-height\":\"1.5\",\"letter-spacing\":\".01rem\",\"color\":\"#626262\",\"text-align\":\"center\",\"margin-bottom\":\"10px\"}},[_c('el-button',{staticStyle:{\"width\":\"100%\",\"margin-bottom\":\"10px\"},on:{\"click\":function($event){return _vm.resendConfirmationEmail()}}},[_vm._v(\"\\n Don't receive the email? Re-send it now\\n \")])],1):_vm._e()])])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\r\n * Enrollment service.\r\n * @module service/course.service\r\n */\r\n\r\nimport http from '@/utils/axios'\r\n\r\n/**\r\n *\r\n * @param {string} accessToken app access token provided after login.\r\n * @param {string} username username that uniquely identifies a user.\r\n * @param {string} orgCode the code of the organization the user is enrolled in.*/\r\n\r\nexport function createDemoCourses(userId) {\r\n\treturn http.get('demo/generate/courses/' + userId)\r\n\t\t.then(response => {\r\n\t\t\treturn response.data\r\n\t\t})\r\n\t\t.catch(error => {\r\n\t\t\tconsole.log(error)\r\n\t\t})\r\n}\r\n\r\n","<template>\r\n <div class=\"page h-screen flex w-full\">\r\n <div class=\"content sm-c md-c lg-c xl-c mx-auto self-center\" style=\"width: 400px !important;\">\r\n <div class=\"\" style=\"padding: 20px 30px;\">\r\n\r\n <div class=\"title\" style=\"text-align: center;\">\r\n <router-link class=\"navbar-brand\" to=\"/\">\r\n <img src=\"@/assets/img/Demo Logo.png\" alt=\"logo\" style=\"width: 250px;\">\r\n </router-link>\r\n <div\r\n v-if=\"message\"\r\n class=\"tip\"\r\n style=\"padding: 5px 10px; background-color: #daf1ea; border-radius: 4px; border-left: 5px solid rgb(28 138 105); margin-bottom: 10px;\"\r\n >\r\n <p style=\"font-size: 14px; color: #444444; word-break: normal; text-align: left;\">\r\n {{ message }}\r\n </p>\r\n </div>\r\n </div>\r\n <div v-if=\"userId\" style=\"width: 100%; font-family: Montserrat,Helvetica,Arial,sans-serif; line-height: 1.5; letter-spacing: .01rem; color: #626262; text-align:center; margin-bottom: 10px;\">\r\n <el-button style=\"width: 100%; margin-bottom: 10px;\" @click=\"resendConfirmationEmail()\">\r\n Don't receive the email? Re-send it now\r\n </el-button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</template>\r\n\r\n<script>\r\n\r\nimport { mapActions } from 'vuex'\r\nimport * as authService from '@/services/auth.service'\r\nimport * as demoService from '@/services/demo.service'\r\nimport { Notification } from 'element-ui'\r\n// Contains login form and logics to log users in.\r\nexport default {\r\n\tname: 'ConfirmEmail',\r\n\t data() {\r\n\t\treturn {\r\n\t\t\tuserId: null,\r\n\t\t\tid: null,\r\n\t\t\tcode: null,\r\n\t\t\tmessage: ''\r\n\t\t}\r\n\t},\r\n\tcreated() {\r\n\t\tthis.userId = this.getUrlParameter('userId')\r\n\t\tthis.id = this.getUrlParameter('id')\r\n\t\tthis.code = this.getUrlParameter('code')\r\n\t\tif (this.userId != null) {\r\n\t\t\tthis.message = 'Thank you for signing up to USF Writes Demo. An email has been sent to you for verification. Please check your email and click on the verification link to activate your account.'\r\n\t\t}\r\n\t\tif (this.id != null && this.code != null) {\r\n\t\t\tthis.message = 'Thank you for confirming your email address. We are setting up your demo courses. You will be redirected to the USF Writes Demo login page after the setup is completed.'\r\n\t\t\tthis.confirmEmail()\r\n\t\t}\r\n\t},\r\n\tmethods: {\r\n\t\t...mapActions('auth', ['createDemoAccount']),\r\n\t\t...mapActions('enrollment', ['getEnrollments']),\r\n\t\tconfirmEmail() {\r\n\t\t\tauthService.confirmEmail(this.id, this.code)\r\n\t\t\t\t.then(user => {\r\n\t\t\t\t\t// Setup demo courses now\r\n\t\t\t\t\tdemoService.createDemoCourses(user.Id)\r\n\t\t\t\t\t\t.then(result => {\r\n\t\t\t\t\t\t\tthis.$router.push('/demo/signin')\r\n\t\t\t\t\t\t}).catch(error => {\r\n\t\t\t\t\t\t\tconsole.log(error)\r\n\t\t\t\t\t\t})\r\n\t\t\t\t})\r\n\t\t\t\t.catch(error => {\r\n\t\t\t\t\tconsole.log(error)\r\n\t\t\t\t})\r\n\t\t},\r\n\t\tresendConfirmationEmail() {\r\n\t\t\tconst payload = new URLSearchParams()\r\n\t\t\tpayload.append('UserId', this.userId)\r\n\t\t\tconst url = window.location.href\r\n\t\t\tconst arr = url.split('/')\r\n\t\t\tconst protocol = arr[0]\r\n\t\t\tconst host = process.env.NODE_ENV === 'production' ? window.location.host : 'localhost:8080'\r\n\t\t\tconst confirmUrl = `${protocol}//${host}` + '/account/confirm/email'\r\n\t\t\tpayload.append('ConfirmUrl', confirmUrl)\r\n\r\n\t\t\tauthService.resendEmail(payload)\r\n\t\t\t\t.then(result => {\r\n\t\t\t\t\tNotification.success({\r\n\t\t\t\t\t\tduration: 6000,\r\n\t\t\t\t\t\ttitle: 'Success',\r\n\t\t\t\t\t\tmessage: result\r\n\t\t\t\t\t})\r\n\t\t\t\t})\r\n\t\t\t\t.catch(error => {\r\n\t\t\t\t\tconsole.log(error)\r\n\t\t\t\t})\r\n\t\t},\r\n\t\tgetUrlParameter(sParam) {\r\n\t\t\tconst sPageURL = decodeURIComponent(window.location.search.substring(1))\r\n\t\t\tconst sURLVariables = sPageURL.split('&')\r\n\t\t\tlet sParameterName\r\n\t\t\tlet i\r\n\t\t\tfor (i = 0; i < sURLVariables.length; i++) {\r\n\t\t\t\tsParameterName = sURLVariables[i].split('=')\r\n\r\n\t\t\t\tif (sParameterName[0] === sParam) {\r\n\t\t\t\t\treturn sParameterName[1] === undefined ? true : sParameterName[1]\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Log user in.\r\n\t\tgotoDemoSignIn() {\r\n\t\t\tthis.$router.push('/demo/signin')\r\n\t\t},\r\n\t\tasync onDemoSignUp() {\r\n\t\t\tthis.$refs.demoSignUpForm.validate((valid) => {\r\n\t\t\t\tif (valid) {\r\n\t\t\t\t\t// Form validation to be completed\r\n\t\t\t\t\tthis.loading = true\r\n\t\t\t\t\tconst payload = new URLSearchParams()\r\n\t\t\t\t\tpayload.append('Email', this.demoSignUpForm.email)\r\n\t\t\t\t\tpayload.append('OrgCode', this.orgCode)\r\n\t\t\t\t\tpayload.append('UserName', this.demoSignUpForm.email.match(/^([^@]*)@/)[1])\r\n\t\t\t\t\tpayload.append('FirstName', this.demoSignUpForm.firstName)\r\n\t\t\t\t\tpayload.append('LastName', this.demoSignUpForm.lastName)\r\n\t\t\t\t\tpayload.append('RoleName', 'Instructor')\r\n\t\t\t\t\tpayload.append('Password', this.demoSignUpForm.password)\r\n\r\n\t\t\t\t\tconst url = window.location.href\r\n\t\t\t\t\tconst arr = url.split('/')\r\n\t\t\t\t\tconst protocol = arr[0]\r\n\t\t\t\t\tconst host = process.env.NODE_ENV === 'production' ? window.location.host : 'localhost:8080'\r\n\t\t\t\t\tconst confirmUrl = `${protocol}//${host}` + '/account/confirm/email'\r\n\r\n\t\t\t\t\tpayload.append('ConfirmUrl', confirmUrl)\r\n\r\n\t\t\t\t\tconsole.log(payload)\r\n\t\t\t\t\tthis.createDemoAccount(payload)\r\n\t\t\t\t\t\t.then(user => {\r\n\t\t\t\t\t\t\tthis.loading = false\r\n\t\t\t\t\t\t\tconsole.log(user)\r\n\t\t\t\t\t\t})\r\n\t\t\t\t\t\t.catch(error => {\r\n\t\t\t\t\t\t\tconsole.log(error)\r\n\t\t\t\t\t\t})\r\n\t\t\t\t} else {\r\n\t\t\t\t\tconsole.log('error submit!!')\r\n\t\t\t\t\treturn false\r\n\t\t\t\t}\r\n\t\t\t})\r\n\t\t},\r\n\t\tgetUsernameFromEmail(text, stopAt = '@') {\r\n\t\t\tif (!String.IsNullOrWhiteSpace(text)) {\r\n\t\t\t\tconst charLocation = text.indexOf(stopAt)\r\n\r\n\t\t\t\tif (charLocation > 0) {\r\n\t\t\t\t\treturn text.subString(0, charLocation)\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\t// @vuese\r\n\t\t// Get last activity date.\r\n\t\tgetlastActivityDate() {\r\n\t\t\tconst today = this.$moment()._d\r\n\t\t\treturn today.getFullYear() + '-' + (today.getMonth() + 1) + '-' +\r\n today.getDate() + ' ' + today.getHours() + ':' + today.getMinutes() + ':' + today.getSeconds()\r\n\t\t}\r\n\t}\r\n\r\n}\r\n\r\n</script>\r\n\r\n<style scoped>\r\n\r\n#nprogress .bar{\r\n\tz-index: 10001 !important;\r\n\tbackground-color: white !important;\r\n}\r\n\r\n.page\r\n{\r\n\twidth: 100%!important;\r\n\theight: 100vh!important;\r\n\t/* background-image: url(\"../../assets/background1.jpg\");\r\n\tbackground-position: 50%;\r\n\tbackground-repeat: no-repeat; */\r\n\tbackground-color: rgb(0, 103, 71);\r\n background-size: cover;\r\n}\r\n.content{\r\n\tmargin-left: auto!important;\r\n margin-right: auto!important;\r\n\ttext-align: center;\r\n\tbackground-color: #ffffff;\r\n border-radius: 5px;\r\n}\r\n.left{\r\n\tfloat: left;\r\n\tbackground-color: #eff2f7;\r\n\tpadding-top: 8%;\r\n\tdisplay:none;\r\n}\r\n.forimg1\r\n{\r\n\twidth: 95%;\r\n\tpadding-top: 15%;\r\n\tpadding-bottom: 15%;\r\n}\r\n.right\r\n{\r\n\tfloat: right;\r\n\tbackground-color: white;\r\n}\r\n.el-form\r\n{\r\n\ttext-decoration: none;\r\n\tpadding-left: 30px;\r\n\tpadding-right: 30px;\r\n}\r\n\r\n.login\r\n{\r\n\tfont-family: Montserrat,Helvetica,Arial,sans-serif;\r\n\tline-height: 1.2;\r\n\tcolor: #0a7756;\r\n\tfont-size: 22px;\r\n\tfont-weight: bold;\r\n\tmargin-bottom: 1rem!important;\r\n}\r\n.welcome\r\n{\r\n color: #626262;\r\n\tfont-family: Montserrat,Helvetica,Arial,sans-serif;\r\n\tfont-weight: 400;\r\n\tfont-size: 90%;\r\n\tline-height: 1.5;\r\n\tletter-spacing: .01rem;\r\n}\r\n/* .username\r\n{\r\n\tpointer-events: none;\r\n\tposition: absolute;\r\n\tleft: 35px;\r\n\ttop: 0px;\r\n\tcolor: rgb(0, 75, 44);\r\n\tcursor: text;\r\n\tfont-size: .80rem;\r\n\ttransition: all .2s ease;\r\n} */\r\n.icon1\r\n{\r\n pointer-events: none;\r\n\tposition: absolute;\r\n\tleft: 10px;\r\n\ttop: -12px;\r\n\tcolor: rgb(0, 75, 44);\r\n\tcursor: text;\r\n\tfont-size: .80rem;\r\n\ttransition: all .2s ease;\r\n}\r\n.pass\r\n{\r\n\tpointer-events: none;\r\n\tposition: absolute;\r\n\tleft: 35px;\r\n\ttop: 0px;\r\n\tcolor:rgb(0, 75, 44);\r\n\tcursor: text;\r\n\tfont-size: .80rem;\r\n\ttransition: all .2s ease;\r\n}\r\n.icon2\r\n{\r\n\tpointer-events: none;\r\n\tposition: absolute;\r\n\tleft: 10px;\r\n\ttop: -12px;\r\n\tcolor: rgb(0, 75, 44);\r\n\tcursor: text;\r\n\tfont-size: .80rem;\r\n\ttransition: all .2s ease;\r\n}\r\nspan.el-checkbox__label\r\n{\r\n\tpadding-left: 0px!important;\r\n}\r\n.forgotPassword\r\n{\r\n margin-top: 3px;\r\n text-decoration: none;\r\n float: right;\r\n color:rgb(0, 75, 44);\r\n}\r\nhr\r\n{\r\n\tmargin-bottom: 20px;\r\n\tborder-bottom: 1px;\r\n\tborder-top: 1px solid rgba(0, 0, 0, 0.1);\r\n}\r\n.el-input\r\n{\r\n width:100% !important;\r\n padding-top: 8px;\r\n}\r\n.title\r\n{\r\n\ttext-align: left;\r\n}\r\n.el-checkbox\r\n{\r\n\ttext-align: left;\r\n}\r\n.el-form-item\r\n{\r\n\tcolor: #626262;\r\n\tfont-weight: 400;\r\n\ttext-align: left;\r\n\tfont-family: Montserrat,Helvetica,Arial,sans-serif;\r\n\tfont-size: 14px;\r\n\tline-height: 1.5;\r\n\tletter-spacing: .01rem;\r\n margin-bottom: 15px;\r\n}\r\n.el-button\r\n{\r\n\tfont-family: Montserrat,Helvetica,Arial,sans-serif;\r\n}\r\n/* button.el-button--default\r\n{\r\n\tcolor:rgb(115, 103, 240);\r\n\tborder-color: rgb(115, 103, 240);\r\n}\r\nbutton.el-button--primary\r\n{\r\n\tbackground-color: rgb(115, 103, 240);\r\n border-color: rgb(115, 103, 240);\r\n} */\r\n.el-input\r\n{\r\n\twidth: 90%;\r\n}\r\n\r\n.h-screen\r\n{\r\n height: 100vh!important;\r\n}\r\n\r\n.flex\r\n{\r\n display: flex!important;\r\n}\r\n.w-full\r\n{\r\n width: 100%!important;\r\n}\r\n.mx-auto\r\n{\r\n margin-left: auto!important;\r\n margin-right: auto!important;\r\n}\r\n.self-center\r\n{\r\n align-self: center!important;\r\n}\r\n\r\n@media only screen and (min-width: 576px)\r\n{\r\n\t.sm-c\r\n\t{\r\n\t\t\twidth: 50%!important;\r\n\t}\r\n}\r\n@media only screen and (min-width: 768px)\r\n{\r\n\t.md-c\r\n\t{\r\n\t\t\twidth: 50%!important;\r\n\t}\r\n}\r\n@media only screen and (min-width: 992px)\r\n{\r\n\t.lg-c\r\n\t{\r\n\t\t\twidth: 75%!important;\r\n\t}\r\n}\r\n@media only screen and (min-width: 1200px)\r\n{\r\n\t.xl-c\r\n\t{\r\n\t\t\twidth: 40%!important;\r\n\t}\r\n}\r\n@media only screen and (min-width: 576px)\r\n{\r\n\t.sm-l\r\n\t{\r\n\t\t\tdisplay: none !important;\r\n\t}\r\n}\r\n@media only screen and (min-width: 768px)\r\n{\r\n\t.md-l\r\n\t{\r\n\t\t\tdisplay: none !important;\r\n\t}\r\n}\r\n@media only screen and (min-width: 992px)\r\n{\r\n\t.lg-l\r\n\t{\r\n\t\t\tdisplay: block!important;\r\n\t\t\twidth:50% !important;\r\n\t}\r\n}\r\n@media only screen and (min-width: 576px)\r\n{\r\n\t.sm-r\r\n\t{\r\n\t\t\twidth: 100%!important;\r\n\t}\r\n}\r\n@media only screen and (min-width: 768px)\r\n{\r\n\t.md-r\r\n\t{\r\n\t\t\twidth: 100%!important;\r\n\t}\r\n}\r\n@media only screen and (min-width: 992px)\r\n{\r\n\t.lg-r\r\n\t{\r\n\t\t\twidth: 50%!important;\r\n\t}\r\n}\r\n</style>\r\n\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ConfirmEmail.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ConfirmEmail.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./ConfirmEmail.vue?vue&type=template&id=2f3ffaf2&scoped=true&\"\nimport script from \"./ConfirmEmail.vue?vue&type=script&lang=js&\"\nexport * from \"./ConfirmEmail.vue?vue&type=script&lang=js&\"\nimport style0 from \"./ConfirmEmail.vue?vue&type=style&index=0&id=2f3ffaf2&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"2f3ffaf2\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"page h-screen flex w-full\"},[_c('div',{staticClass:\"content sm-c md-c lg-c xl-c mx-auto self-center\",staticStyle:{\"width\":\"400px !important\"}},[_c('div',{staticStyle:{\"padding\":\"20px 30px\"}},[_c('div',{staticClass:\"title\",staticStyle:{\"text-align\":\"center\"}},[_c('router-link',{staticClass:\"navbar-brand\",attrs:{\"to\":\"/\"}},[_c('img',{staticStyle:{\"width\":\"250px\"},attrs:{\"src\":require(\"@/assets/img/Demo Logo.png\"),\"alt\":\"logo\"}})]),_vm._m(0)],1),_c('div',{staticStyle:{\"width\":\"100%\",\"font-family\":\"Montserrat,Helvetica,Arial,sans-serif\",\"line-height\":\"1.5\",\"letter-spacing\":\".01rem\",\"color\":\"#626262\",\"text-align\":\"center\",\"margin-bottom\":\"10px\"}},[_c('el-button',{staticStyle:{\"width\":\"100%\",\"margin-bottom\":\"10px\"},on:{\"click\":function($event){return _vm.backtoSigiIn()}}},[_vm._v(\"\\n Back to Sign In Page\\n \")])],1)])])])}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"tip\",staticStyle:{\"padding\":\"5px 10px\",\"background-color\":\"#daf1ea\",\"border-radius\":\"4px\",\"border-left\":\"5px solid rgb(28 138 105)\",\"margin-bottom\":\"10px\"}},[_c('p',{staticStyle:{\"font-size\":\"14px\",\"color\":\"#444444\",\"word-break\":\"normal\",\"text-align\":\"left\"}},[_vm._v(\"\\n To be implemented...\\n \")])])}]\n\nexport { render, staticRenderFns }","<template>\r\n <div class=\"page h-screen flex w-full\">\r\n <div class=\"content sm-c md-c lg-c xl-c mx-auto self-center\" style=\"width: 400px !important;\">\r\n <div class=\"\" style=\"padding: 20px 30px;\">\r\n\r\n <div class=\"title\" style=\"text-align: center;\">\r\n <router-link class=\"navbar-brand\" to=\"/\">\r\n <img src=\"@/assets/img/Demo Logo.png\" alt=\"logo\" style=\"width: 250px;\">\r\n </router-link>\r\n <div\r\n class=\"tip\"\r\n style=\"padding: 5px 10px; background-color: #daf1ea; border-radius: 4px; border-left: 5px solid rgb(28 138 105); margin-bottom: 10px;\"\r\n >\r\n <p style=\"font-size: 14px; color: #444444; word-break: normal; text-align: left;\">\r\n To be implemented...\r\n </p>\r\n </div>\r\n </div>\r\n <div style=\"width: 100%; font-family: Montserrat,Helvetica,Arial,sans-serif; line-height: 1.5; letter-spacing: .01rem; color: #626262; text-align:center; margin-bottom: 10px;\">\r\n <el-button style=\"width: 100%; margin-bottom: 10px;\" @click=\"backtoSigiIn()\">\r\n Back to Sign In Page\r\n </el-button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</template>\r\n\r\n<script>\r\n\r\nimport { mapActions } from 'vuex'\r\nimport * as authService from '@/services/auth.service'\r\nimport * as demoService from '@/services/demo.service'\r\n// Contains login form and logics to log users in.\r\nexport default {\r\n\tname: 'ConfirmEmail',\r\n\t data() {\r\n\t\treturn {\r\n\t\t\tuserId: null,\r\n\t\t\tid: null,\r\n\t\t\tcode: null,\r\n\t\t\tmessage: ''\r\n\t\t}\r\n\t},\r\n\tcreated() {\r\n\t\tthis.userId = this.getUrlParameter('userId')\r\n\t\tthis.id = this.getUrlParameter('id')\r\n\t\tthis.code = this.getUrlParameter('code')\r\n\t\tif (this.userId != null) {\r\n\t\t\tthis.message = 'Thank you for signing up to USF Writes Demo. An email has been sent to you for verification. Please check your email and click on the verification link to activate your account.'\r\n\t\t}\r\n\t\tif (this.id != null && this.code != null) {\r\n\t\t\tthis.message = 'Thank you for confirming your email address. We are setting up your demo courses. You will be redirected to the USF Writes Demo login page after the setup is completed.'\r\n\t\t\tthis.confirmEmail()\r\n\t\t}\r\n\t},\r\n\tmethods: {\r\n\t\t...mapActions('auth', ['createDemoAccount']),\r\n\t\t...mapActions('enrollment', ['getEnrollments']),\r\n\t\tconfirmEmail() {\r\n\t\t\tauthService.confirmEmail(this.id, this.code)\r\n\t\t\t\t.then(user => {\r\n\t\t\t\t\t// Setup demo courses now\r\n\t\t\t\t\tdemoService.createDemoCourses(user.Id)\r\n\t\t\t\t\t\t.then(result => {\r\n\t\t\t\t\t\t\tthis.$router.push('/demo/signin')\r\n\t\t\t\t\t\t}).catch(error => {\r\n\t\t\t\t\t\t\tconsole.log(error)\r\n\t\t\t\t\t\t})\r\n\t\t\t\t})\r\n\t\t\t\t.catch(error => {\r\n\t\t\t\t\tconsole.log(error)\r\n\t\t\t\t})\r\n\t\t},\r\n\t\tbacktoSigiIn() {\r\n\t\t\tthis.$router.push('/demo/signin')\r\n\t\t},\r\n\t\tgetUrlParameter(sParam) {\r\n\t\t\tconst sPageURL = decodeURIComponent(window.location.search.substring(1))\r\n\t\t\tconst sURLVariables = sPageURL.split('&')\r\n\t\t\tlet sParameterName\r\n\t\t\tlet i\r\n\t\t\tfor (i = 0; i < sURLVariables.length; i++) {\r\n\t\t\t\tsParameterName = sURLVariables[i].split('=')\r\n\r\n\t\t\t\tif (sParameterName[0] === sParam) {\r\n\t\t\t\t\treturn sParameterName[1] === undefined ? true : sParameterName[1]\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t},\r\n\t\t// @vuese\r\n\t\t// Log user in.\r\n\t\tgotoDemoSignIn() {\r\n\t\t\tthis.$router.push('/demo/signin')\r\n\t\t},\r\n\t\tasync onDemoSignUp() {\r\n\t\t\tthis.$refs.demoSignUpForm.validate((valid) => {\r\n\t\t\t\tif (valid) {\r\n\t\t\t\t\t// Form validation to be completed\r\n\t\t\t\t\tthis.loading = true\r\n\t\t\t\t\tconst payload = new URLSearchParams()\r\n\t\t\t\t\tpayload.append('Email', this.demoSignUpForm.email)\r\n\t\t\t\t\tpayload.append('OrgCode', this.orgCode)\r\n\t\t\t\t\tpayload.append('UserName', this.demoSignUpForm.email.match(/^([^@]*)@/)[1])\r\n\t\t\t\t\tpayload.append('FirstName', this.demoSignUpForm.firstName)\r\n\t\t\t\t\tpayload.append('LastName', this.demoSignUpForm.lastName)\r\n\t\t\t\t\tpayload.append('RoleName', 'Instructor')\r\n\t\t\t\t\tpayload.append('Password', this.demoSignUpForm.password)\r\n\r\n\t\t\t\t\tconst url = window.location.href\r\n\t\t\t\t\tconst arr = url.split('/')\r\n\t\t\t\t\tconst protocol = arr[0]\r\n\t\t\t\t\tconst host = process.env.NODE_ENV === 'production' ? window.location.host : 'localhost:8080'\r\n\t\t\t\t\tconst confirmUrl = `${protocol}//${host}` + '/account/confirm/email'\r\n\r\n\t\t\t\t\tpayload.append('ConfirmUrl', confirmUrl)\r\n\r\n\t\t\t\t\tconsole.log(payload)\r\n\t\t\t\t\tthis.createDemoAccount(payload)\r\n\t\t\t\t\t\t.then(user => {\r\n\t\t\t\t\t\t\tthis.loading = false\r\n\t\t\t\t\t\t\tconsole.log(user)\r\n\t\t\t\t\t\t})\r\n\t\t\t\t\t\t.catch(error => {\r\n\t\t\t\t\t\t\tconsole.log(error)\r\n\t\t\t\t\t\t})\r\n\t\t\t\t} else {\r\n\t\t\t\t\tconsole.log('error submit!!')\r\n\t\t\t\t\treturn false\r\n\t\t\t\t}\r\n\t\t\t})\r\n\t\t},\r\n\t\tgetUsernameFromEmail(text, stopAt = '@') {\r\n\t\t\tif (!String.IsNullOrWhiteSpace(text)) {\r\n\t\t\t\tconst charLocation = text.indexOf(stopAt)\r\n\r\n\t\t\t\tif (charLocation > 0) {\r\n\t\t\t\t\treturn text.subString(0, charLocation)\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\t// @vuese\r\n\t\t// Get last activity date.\r\n\t\tgetlastActivityDate() {\r\n\t\t\tconst today = this.$moment()._d\r\n\t\t\treturn today.getFullYear() + '-' + (today.getMonth() + 1) + '-' +\r\n today.getDate() + ' ' + today.getHours() + ':' + today.getMinutes() + ':' + today.getSeconds()\r\n\t\t}\r\n\t}\r\n\r\n}\r\n\r\n</script>\r\n\r\n<style scoped>\r\n\r\n#nprogress .bar{\r\n\tz-index: 10001 !important;\r\n\tbackground-color: white !important;\r\n}\r\n\r\n.page\r\n{\r\n\twidth: 100%!important;\r\n\theight: 100vh!important;\r\n\t/* background-image: url(\"../../assets/background1.jpg\");\r\n\tbackground-position: 50%;\r\n\tbackground-repeat: no-repeat; */\r\n\tbackground-color: rgb(0, 103, 71);\r\n background-size: cover;\r\n}\r\n.content{\r\n\tmargin-left: auto!important;\r\n margin-right: auto!important;\r\n\ttext-align: center;\r\n\tbackground-color: #ffffff;\r\n border-radius: 5px;\r\n}\r\n.left{\r\n\tfloat: left;\r\n\tbackground-color: #eff2f7;\r\n\tpadding-top: 8%;\r\n\tdisplay:none;\r\n}\r\n.forimg1\r\n{\r\n\twidth: 95%;\r\n\tpadding-top: 15%;\r\n\tpadding-bottom: 15%;\r\n}\r\n.right\r\n{\r\n\tfloat: right;\r\n\tbackground-color: white;\r\n}\r\n.el-form\r\n{\r\n\ttext-decoration: none;\r\n\tpadding-left: 30px;\r\n\tpadding-right: 30px;\r\n}\r\n\r\n.login\r\n{\r\n\tfont-family: Montserrat,Helvetica,Arial,sans-serif;\r\n\tline-height: 1.2;\r\n\tcolor: #0a7756;\r\n\tfont-size: 22px;\r\n\tfont-weight: bold;\r\n\tmargin-bottom: 1rem!important;\r\n}\r\n.welcome\r\n{\r\n color: #626262;\r\n\tfont-family: Montserrat,Helvetica,Arial,sans-serif;\r\n\tfont-weight: 400;\r\n\tfont-size: 90%;\r\n\tline-height: 1.5;\r\n\tletter-spacing: .01rem;\r\n}\r\n/* .username\r\n{\r\n\tpointer-events: none;\r\n\tposition: absolute;\r\n\tleft: 35px;\r\n\ttop: 0px;\r\n\tcolor: rgb(0, 75, 44);\r\n\tcursor: text;\r\n\tfont-size: .80rem;\r\n\ttransition: all .2s ease;\r\n} */\r\n.icon1\r\n{\r\n pointer-events: none;\r\n\tposition: absolute;\r\n\tleft: 10px;\r\n\ttop: -12px;\r\n\tcolor: rgb(0, 75, 44);\r\n\tcursor: text;\r\n\tfont-size: .80rem;\r\n\ttransition: all .2s ease;\r\n}\r\n.pass\r\n{\r\n\tpointer-events: none;\r\n\tposition: absolute;\r\n\tleft: 35px;\r\n\ttop: 0px;\r\n\tcolor:rgb(0, 75, 44);\r\n\tcursor: text;\r\n\tfont-size: .80rem;\r\n\ttransition: all .2s ease;\r\n}\r\n.icon2\r\n{\r\n\tpointer-events: none;\r\n\tposition: absolute;\r\n\tleft: 10px;\r\n\ttop: -12px;\r\n\tcolor: rgb(0, 75, 44);\r\n\tcursor: text;\r\n\tfont-size: .80rem;\r\n\ttransition: all .2s ease;\r\n}\r\nspan.el-checkbox__label\r\n{\r\n\tpadding-left: 0px!important;\r\n}\r\n.forgotPassword\r\n{\r\n margin-top: 3px;\r\n text-decoration: none;\r\n float: right;\r\n color:rgb(0, 75, 44);\r\n}\r\nhr\r\n{\r\n\tmargin-bottom: 20px;\r\n\tborder-bottom: 1px;\r\n\tborder-top: 1px solid rgba(0, 0, 0, 0.1);\r\n}\r\n.el-input\r\n{\r\n width:100% !important;\r\n padding-top: 8px;\r\n}\r\n.title\r\n{\r\n\ttext-align: left;\r\n}\r\n.el-checkbox\r\n{\r\n\ttext-align: left;\r\n}\r\n.el-form-item\r\n{\r\n\tcolor: #626262;\r\n\tfont-weight: 400;\r\n\ttext-align: left;\r\n\tfont-family: Montserrat,Helvetica,Arial,sans-serif;\r\n\tfont-size: 14px;\r\n\tline-height: 1.5;\r\n\tletter-spacing: .01rem;\r\n margin-bottom: 15px;\r\n}\r\n.el-button\r\n{\r\n\tfont-family: Montserrat,Helvetica,Arial,sans-serif;\r\n}\r\n/* button.el-button--default\r\n{\r\n\tcolor:rgb(115, 103, 240);\r\n\tborder-color: rgb(115, 103, 240);\r\n}\r\nbutton.el-button--primary\r\n{\r\n\tbackground-color: rgb(115, 103, 240);\r\n border-color: rgb(115, 103, 240);\r\n} */\r\n.el-input\r\n{\r\n\twidth: 90%;\r\n}\r\n\r\n.h-screen\r\n{\r\n height: 100vh!important;\r\n}\r\n\r\n.flex\r\n{\r\n display: flex!important;\r\n}\r\n.w-full\r\n{\r\n width: 100%!important;\r\n}\r\n.mx-auto\r\n{\r\n margin-left: auto!important;\r\n margin-right: auto!important;\r\n}\r\n.self-center\r\n{\r\n align-self: center!important;\r\n}\r\n\r\n@media only screen and (min-width: 576px)\r\n{\r\n\t.sm-c\r\n\t{\r\n\t\t\twidth: 50%!important;\r\n\t}\r\n}\r\n@media only screen and (min-width: 768px)\r\n{\r\n\t.md-c\r\n\t{\r\n\t\t\twidth: 50%!important;\r\n\t}\r\n}\r\n@media only screen and (min-width: 992px)\r\n{\r\n\t.lg-c\r\n\t{\r\n\t\t\twidth: 75%!important;\r\n\t}\r\n}\r\n@media only screen and (min-width: 1200px)\r\n{\r\n\t.xl-c\r\n\t{\r\n\t\t\twidth: 40%!important;\r\n\t}\r\n}\r\n@media only screen and (min-width: 576px)\r\n{\r\n\t.sm-l\r\n\t{\r\n\t\t\tdisplay: none !important;\r\n\t}\r\n}\r\n@media only screen and (min-width: 768px)\r\n{\r\n\t.md-l\r\n\t{\r\n\t\t\tdisplay: none !important;\r\n\t}\r\n}\r\n@media only screen and (min-width: 992px)\r\n{\r\n\t.lg-l\r\n\t{\r\n\t\t\tdisplay: block!important;\r\n\t\t\twidth:50% !important;\r\n\t}\r\n}\r\n@media only screen and (min-width: 576px)\r\n{\r\n\t.sm-r\r\n\t{\r\n\t\t\twidth: 100%!important;\r\n\t}\r\n}\r\n@media only screen and (min-width: 768px)\r\n{\r\n\t.md-r\r\n\t{\r\n\t\t\twidth: 100%!important;\r\n\t}\r\n}\r\n@media only screen and (min-width: 992px)\r\n{\r\n\t.lg-r\r\n\t{\r\n\t\t\twidth: 50%!important;\r\n\t}\r\n}\r\n</style>\r\n\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ForgotPassword.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ForgotPassword.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./ForgotPassword.vue?vue&type=template&id=dd10d786&scoped=true&\"\nimport script from \"./ForgotPassword.vue?vue&type=script&lang=js&\"\nexport * from \"./ForgotPassword.vue?vue&type=script&lang=js&\"\nimport style0 from \"./ForgotPassword.vue?vue&type=style&index=0&id=dd10d786&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"dd10d786\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _vm._m(0)}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('h1',[_vm._v(\"This is the test page\")])])}]\n\nexport { render, staticRenderFns }","<template>\r\n <div>\r\n <h1>This is the test page</h1>\r\n </div>\r\n</template>\r\n\r\n<script>\r\nexport default {\r\n\tname: 'Login',\r\n\tdata() {\r\n\t\treturn {\r\n\t\t\tusername: '',\r\n\t\t\tpassword: '',\r\n\t\t\tloading: false\r\n\t\t}\r\n\t},\r\n\tmounted() {\r\n\t},\r\n\tcreated() {\r\n\t\tthis.loadData()\r\n\t},\r\n\tmethods: {\r\n\t\tasync loadData() {\r\n\r\n\t\t},\r\n\t\tonLogin() {\r\n\t\t},\r\n\t\tonRegister() {\r\n\t\t},\r\n\t\tonContact() {\r\n\t\t},\r\n\t\tonLoginWithCanvas() {\r\n\r\n\t\t}\r\n\t}\r\n\r\n}\r\n</script>\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Test.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Test.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Test.vue?vue&type=template&id=1b23c2e6&\"\nimport script from \"./Test.vue?vue&type=script&lang=js&\"\nexport * from \"./Test.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import Vue from 'vue'\r\nimport Router from 'vue-router'\r\nimport Home from '@/views/launch_page/Home.vue'\r\nimport Benefits from '@/views/launch_page/Benefits.vue'\r\nimport Research from '@/views/launch_page/Research.vue'\r\nimport Pedagogy from '@/views/launch_page/Pedagogy.vue'\r\nimport Manuals from '@/views/launch_page/Manuals.vue'\r\nimport Faq from '@/views/launch_page/FAQ.vue'\r\nimport ContactUs from '@/views/launch_page/Contact.vue'\r\nimport Login from '@/views/account/Login.vue'\r\nimport Logout from '@/views/account/Logout.vue'\r\nimport NewLogin from '@/views/account/NewLogin.vue'\r\n\r\nimport Register from '@/views/account/Register.vue'\r\nimport DemoSignUp from '@/views/account/DemoSignUp.vue'\r\nimport DemoSignIn from '@/views/account/DemoSignIn.vue'\r\nimport About from '@/views/About.vue'\r\nimport Courses from '@/views/course/Courses.vue'\r\nimport OldProjects from '@/views/assignment/OldAssignments.vue'\r\nimport NewProjects from '@/views/assignment/NewAssignments.vue'\r\nimport InstructorReview from '@/views/grade/InstructorReview.vue'\r\nimport ScorePaper from '@/views/grade/ScorePaper.vue'\r\nimport PeerReview from '@/views/grade/PeerReview.vue'\r\nimport ViewFeedback from '@/views/grade/ViewFeedback.vue'\r\nimport ViewOldFeedback from '@/views/grade/ViewOldFeedback.vue'\r\nimport SelfReview from '@/views/grade/SelfReview.vue'\r\nimport CollectiveFeedbacks from '@/views/collective_feedback/CollectiveFeedbackList.vue'\r\nimport CollectiveFeedbackDetail from '@/views/collective_feedback/CollectiveFeedbackDetail.vue'\r\nimport CollectiveFeedbackIssue from '@/views/collective_feedback/CollectiveFeedbackIssue.vue'\r\nimport StudentSubmissions from '@/views/submission/StudentSubmissions.vue'\r\nimport StudentHolisticScores from '@/views/score/StudentHolisticScores.vue'\r\nimport StudentScores from '@/views/score/StudentScores.vue'\r\nimport PRTeamFormation from '@/views/team_formation/PeerReview.vue'\r\nimport GPTeamFormation from '@/views/team_formation/GroupProject.vue'\r\nimport ProjectTemplateList from '@/views/admin/ProjectTemplateList.vue'\r\nimport NewProjectTemplate from '@/views/admin/NewProjectTemplate.vue'\r\nimport RubricList from '@/views/admin/RubricList.vue'\r\nimport RubricDetail from '@/views/admin/RubricDetail.vue'\r\nimport DocumentsDownload from '@/views/admin/DocumentsDownload.vue'\r\nimport OutcomesReport from '@/views/report/Outcomes.vue'\r\nimport IndividualOutcomesReport from '@/views/report/IndividualOutcomes.vue'\r\nimport CollectiveFeedbackReport from '@/views/report/CollectiveFeedback.vue'\r\nimport StudentPerformanceReport from '@/views/report/StudentPerformance.vue'\r\nimport CanvasRedirect from '@/views/canvas/Redirect.vue'\r\nimport NotFound from '@/views/error/NotFound.vue'\r\nimport NoProfile from '@/views/error/NoProfile.vue'\r\nimport Contact from '@/views/support/Contact.vue'\r\nimport Subscription from '@/views/subscription/Payment.vue'\r\nimport EText from '@/views/textbook/EText.vue'\r\nimport Manual from '@/views/textbook/Manual.vue'\r\nimport InstructorCompareText from '@/views/grade/InstructorCompareText.vue'\r\nimport StudentAppraisal from '@/views/appraisal/StudentAppraisal.vue'\r\nimport Students from '@/views/course/Students.vue'\r\nimport ConfirmEmail from '@/views/account/ConfirmEmail.vue'\r\nimport ForgotPassword from '@/views/account/ForgotPassword.vue'\r\nimport Test from '@/views/test/Test.vue'\r\n\r\nVue.use(Router)\r\n\r\nimport store from '@/store/index.js'\r\nimport { Notification } from 'element-ui'\r\n\r\nconst router = new Router({\r\n\tmode: 'history',\r\n\tbase: process.env.BASE_URL,\r\n\troutes: [\r\n\r\n\t\t// {\r\n\t\t// \tpath: '/',\r\n\t\t// \tname: 'Login',\r\n\t\t// \tcomponent: Login,\r\n\t\t// \tmeta: {\r\n\t\t// \t\tplainLayout: true\r\n\t\t// \t}\r\n\t\t// },\r\n\t\t{\r\n\t\t\tpath: '/',\r\n\t\t\tname: 'Home',\r\n\t\t\tcomponent: Courses,\r\n\t\t\tmeta: {\r\n\t\t\t\trequiresLogin: true\r\n\t\t\t}\r\n\t\t},\r\n\t\t{\r\n\t\t\tpath: '/logout',\r\n\t\t\tname: 'Logout',\r\n\t\t\tcomponent: Logout,\r\n\t\t\tmeta: {\r\n\t\t\t\tplainLayout: true\r\n\t\t\t}\r\n\t\t},\r\n\t\t{\r\n\t\t\tpath: '/landing',\r\n\t\t\tname: 'Landing',\r\n\t\t\tcomponent: Home,\r\n\t\t\tmeta: {\r\n\t\t\t plainLayout: false,\r\n\t\t\t isLaunchPage: true,\r\n\t\t\t isHomePage: true,\r\n\t\t\t footerBackground: 'rgb(0, 103, 71)'\r\n\t\t\t}\r\n\t\t},\r\n\t\t{\r\n\t\t\tpath: '/benefits',\r\n\t\t\tname: 'Benefits',\r\n\t\t\tcomponent: Benefits,\r\n\t\t\tmeta: {\r\n\t\t\t plainLayout: false,\r\n\t\t\t isLaunchPage: true,\r\n\t\t\t footerBackground: 'white'\r\n\t\t\t}\r\n\t\t},\r\n\t\t{\r\n\t\t\tpath: '/research',\r\n\t\t\tname: 'Research',\r\n\t\t\tcomponent: Research,\r\n\t\t\tmeta: {\r\n\t\t\t plainLayout: false,\r\n\t\t\t isLaunchPage: true,\r\n\t\t\t footerBackground: 'rgb(0, 103, 71)'\r\n\t\t\t}\r\n\t\t},\r\n\t\t{\r\n\t\t\tpath: '/pedagogy',\r\n\t\t\tname: 'Pedagogy',\r\n\t\t\tcomponent: Pedagogy,\r\n\t\t\tmeta: {\r\n\t\t\t plainLayout: false,\r\n\t\t\t isLaunchPage: true,\r\n\t\t\t footerBackground: 'white'\r\n\t\t\t}\r\n\t\t},\r\n\t\t{\r\n\t\t\tpath: '/manuals',\r\n\t\t\tname: 'Manuals',\r\n\t\t\tcomponent: Manuals,\r\n\t\t\tmeta: {\r\n\t\t\t plainLayout: false,\r\n\t\t\t isLaunchPage: true,\r\n\t\t\t footerBackground: 'rgb(0, 103, 71)'\r\n\t\t\t}\r\n\t\t},\r\n\t\t{\r\n\t\t\tpath: '/faqs',\r\n\t\t\tname: 'FAQs',\r\n\t\t\tcomponent: Faq,\r\n\t\t\tmeta: {\r\n\t\t\t plainLayout: false,\r\n\t\t\t isLaunchPage: true,\r\n\t\t\t footerBackground: 'rgb(0, 103, 71)'\r\n\t\t\t}\r\n\t\t},\r\n\t\t{\r\n\t\t\tpath: '/contact',\r\n\t\t\tname: 'ContactUs',\r\n\t\t\tcomponent: ContactUs,\r\n\t\t\tmeta: {\r\n\t\t\t plainLayout: false,\r\n\t\t\t isLaunchPage: true,\r\n\t\t\t footerBackground: 'rgb(0, 103, 71)'\r\n\t\t\t}\r\n\t\t},\r\n\t\t{\r\n\t\t\tpath: '/login',\r\n\t\t\tname: 'login',\r\n\t\t\tcomponent: Login,\r\n\t\t\tmeta: {\r\n\t\t\t\tplainLayout: true\r\n\t\t\t }\r\n\t\t},\r\n\t\t{\r\n\t\t\tpath: '/new-login',\r\n\t\t\tname: 'New Login',\r\n\t\t\tcomponent: NewLogin,\r\n\t\t\tmeta: {\r\n\t\t\t\tplainLayout: false,\r\n\t\t\t\tisLaunchPage: true,\r\n\t\t\t\tfooterBackground: 'white'\r\n\t\t\t }\r\n\t\t},\r\n\t\t{\r\n\t\t\tpath: '/demo/signup',\r\n\t\t\tname: 'DemoSignUp',\r\n\t\t\tcomponent: DemoSignUp,\r\n\t\t\tmeta: {\r\n\t\t\t\tplainLayout: true\r\n\t\t\t }\r\n\t\t},\r\n\t\t{\r\n\t\t\tpath: '/demo/signin',\r\n\t\t\tname: 'DemoSignIn',\r\n\t\t\tcomponent: DemoSignIn,\r\n\t\t\tmeta: {\r\n\t\t\t\tplainLayout: true\r\n\t\t\t }\r\n\t\t},\r\n\t\t{\r\n\t\t\tpath: '/account/register',\r\n\t\t\tname: 'Register',\r\n\t\t\tcomponent: Register,\r\n\t\t\tmeta: {\r\n\t\t\t\tplainLayout: true\r\n\t\t\t}\r\n\r\n\t\t},\r\n\t\t{\r\n\t\t\tpath: '/account/confirm/email',\r\n\t\t\tname: 'ConfirmEmail',\r\n\t\t\tcomponent: ConfirmEmail,\r\n\t\t\tmeta: {\r\n\t\t\t\tplainLayout: true\r\n\t\t\t}\r\n\t\t},\r\n\t\t{\r\n\t\t\tpath: '/account/forgot/password',\r\n\t\t\tname: 'ForgotPassword',\r\n\t\t\tcomponent: ForgotPassword,\r\n\t\t\tmeta: {\r\n\t\t\t\tplainLayout: true\r\n\t\t\t}\r\n\t\t},\r\n\t\t{\r\n\t\t\tpath: '/about',\r\n\t\t\tname: 'About',\r\n\t\t\tcomponent: About\r\n\r\n\t\t},\r\n\t\t{\r\n\t\t\tpath: '/courses',\r\n\t\t\tname: 'Courses',\r\n\t\t\tcomponent: Courses,\r\n\t\t\tmeta: {\r\n\t\t\t\trequiresLogin: true\r\n\t\t\t}\r\n\t\t},\r\n\t\t{\r\n\t\t\tpath: '/course/:courseId/projects',\r\n\t\t\tname: 'Project',\r\n\t\t\tcomponent: NewProjects,\r\n\t\t\tmeta: {\r\n\t\t\t\trequiresLogin: true,\r\n\t\t\t\trequiresSubscription: true\r\n\t\t\t}\r\n\t\t},\r\n\t\t{\r\n\t\t\tpath: '/course/:courseId/projects/old',\r\n\t\t\tname: 'OldProjects',\r\n\t\t\tcomponent: OldProjects,\r\n\t\t\tmeta: {\r\n\t\t\t\trequiresLogin: true,\r\n\t\t\t\trequiresSubscription: true\r\n\t\t\t}\r\n\t\t},\r\n\t\t{\r\n\t\t\tpath: '/course/:courseId/students',\r\n\t\t\tname: 'Students',\r\n\t\t\tcomponent: Students,\r\n\t\t\tmeta: {\r\n\t\t\t\trequiresLogin: true,\r\n\t\t\t\tinstructorOnly: true\r\n\t\t\t}\r\n\t\t},\r\n\t\t{\r\n\t\t\tpath: '/course/:courseId/projects/:id/submissions',\r\n\t\t\tname: 'StudentSubmissions',\r\n\t\t\tcomponent: StudentSubmissions,\r\n\t\t\tmeta: {\r\n\t\t\t\trequiresLogin: true,\r\n\t\t\t\tinstructorOnly: true\r\n\t\t\t}\r\n\t\t},\r\n\t\t{\r\n\t\t\tpath: '/course/:courseId/projects/:id/scores/all',\r\n\t\t\tname: 'StudentScores',\r\n\t\t\tcomponent: StudentScores,\r\n\t\t\tmeta: {\r\n\t\t\t\trequiresLogin: true,\r\n\t\t\t\tinstructorOnly: true\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\t{\r\n\t\t\tpath: '/course/:courseId/projects/:id/scores/holistic',\r\n\t\t\tname: 'StudentHolisticScores',\r\n\t\t\tcomponent: StudentHolisticScores,\r\n\t\t\tmeta: {\r\n\t\t\t\trequiresLogin: true,\r\n\t\t\t\tinstructorOnly: true\r\n\t\t\t}\r\n\t\t},\r\n\t\t{\r\n\t\t\tpath: '/instructor_review',\r\n\t\t\tname: 'InstructorReview',\r\n\t\t\tcomponent: InstructorReview,\r\n\t\t\tmeta: {\r\n\t\t\t\trequiresLogin: true,\r\n\t\t\t\tinstructorOnly: true\r\n\t\t\t}\r\n\t\t},\r\n\t\t{\r\n\t\t\tpath: '/score',\r\n\t\t\tname: 'Score',\r\n\t\t\tcomponent: ScorePaper,\r\n\t\t\tmeta: {\r\n\t\t\t\trequiresLogin: true,\r\n\t\t\t\tinstructorOnly: true\r\n\t\t\t}\r\n\t\t},\r\n\t\t// {\r\n\t\t// \tpath: '/compare',\r\n\t\t// \tname: 'CompareText',\r\n\t\t// \tcomponent: CompareText\r\n\t\t// },\r\n\t\t{\r\n\t\t\tpath: '/instructor/compare/text',\r\n\t\t\tname: 'InstructorCompareText',\r\n\t\t\tcomponent: InstructorCompareText,\r\n\t\t\tmeta: {\r\n\t\t\t\trequiresLogin: true,\r\n\t\t\t\tinstructorOnly: true\r\n\t\t\t}\r\n\t\t},\r\n\t\t// {\r\n\t\t// \tpath: '/student/compare/:assignmentId',\r\n\t\t// \tname: 'StudentCompareText',\r\n\t\t// \tcomponent: StudentCompareText\r\n\t\t// },\r\n\t\t{\r\n\t\t\tpath: '/student/appraisal/:assignmentId/:taskId',\r\n\t\t\tname: 'StudentAppraisal',\r\n\t\t\tcomponent: StudentAppraisal,\r\n\t\t\tmeta: {\r\n\t\t\t\trequiresLogin: true,\r\n\t\t\t\taction: 'appraise'\r\n\t\t\t}\r\n\t\t},\r\n\t\t{\r\n\t\t\tpath: '/student/appraisal/:assignmentId/student/:studentId',\r\n\t\t\tname: 'InstructorScoreStudentAppraisal',\r\n\t\t\tcomponent: StudentAppraisal,\r\n\t\t\tmeta: {\r\n\t\t\t\trequiresLogin: true,\r\n\t\t\t\tinstructorOnly: true,\r\n\t\t\t\taction: 'score'\r\n\t\t\t}\r\n\t\t},\r\n\t\t{\r\n\t\t\tpath: '/peer_review',\r\n\t\t\tname: 'PeerReview',\r\n\t\t\tcomponent: PeerReview,\r\n\t\t\tmeta: {\r\n\t\t\t\trequiresLogin: true,\r\n\t\t\t\trequiresSubscription: true\r\n\t\t\t}\r\n\t\t},\r\n\t\t{\r\n\t\t\tpath: '/view_feedback/:assignmentId',\r\n\t\t\tname: 'ViewAllFeedback',\r\n\t\t\tcomponent: ViewFeedback,\r\n\t\t\tmeta: {\r\n\t\t\t\trequiresLogin: true,\r\n\t\t\t\trequiresSubscription: true\r\n\t\t\t}\r\n\t\t},\r\n\t\t{\r\n\t\t\tpath: '/view_feedback/:assignmentId/old',\r\n\t\t\tname: 'ViewOldFeedback',\r\n\t\t\tcomponent: ViewOldFeedback,\r\n\t\t\tmeta: {\r\n\t\t\t\trequiresLogin: true,\r\n\t\t\t\trequiresSubscription: true\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\t{\r\n\t\t\tpath: '/view_feedback/:assignmentId/:taskId',\r\n\t\t\tname: 'ViewFeedback',\r\n\t\t\tcomponent: ViewFeedback,\r\n\t\t\tmeta: {\r\n\t\t\t\trequiresLogin: true,\r\n\t\t\t\trequiresSubscription: true\r\n\t\t\t}\r\n\t\t},\r\n\t\t{\r\n\t\t\tpath: '/self_review',\r\n\t\t\tname: 'SelfReview',\r\n\t\t\tcomponent: SelfReview,\r\n\t\t\tmeta: {\r\n\t\t\t\trequiresLogin: true,\r\n\t\t\t\trequiresSubscription: true\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\t{\r\n\t\t\tpath: '/course/:courseId/team_formation/peer_review',\r\n\t\t\tname: 'PeerReviewTeamForamtion',\r\n\t\t\tcomponent: PRTeamFormation,\r\n\t\t\tmeta: {\r\n\t\t\t\trequiresLogin: true,\r\n\t\t\t\tinstructorOnly: true\r\n\t\t\t}\r\n\t\t},\r\n\t\t{\r\n\t\t\tpath: '/course/:courseId/team_formation/group_project',\r\n\t\t\tname: 'GroupProjectTeamForamtion',\r\n\t\t\tcomponent: GPTeamFormation,\r\n\t\t\tmeta: {\r\n\t\t\t\trequiresLogin: true,\r\n\t\t\t\tinstructorOnly: true\r\n\t\t\t}\r\n\t\t},\r\n\t\t{\r\n\t\t\tpath: '/collective_feedback/:id/issues',\r\n\t\t\tname: 'CollectiveFeedbackDetail',\r\n\t\t\tcomponent: CollectiveFeedbackDetail\r\n\t\t},\r\n\t\t{\r\n\t\t\tpath: '/collective_feedback/:cfId/issue',\r\n\t\t\tname: 'CollectiveFeedbackIssue',\r\n\t\t\tcomponent: CollectiveFeedbackIssue,\r\n\t\t\tmeta: {\r\n\t\t\t\trequiresLogin: true,\r\n\t\t\t\tinstructorOnly: true\r\n\t\t\t}\r\n\t\t},\r\n\t\t{\r\n\t\t\tpath: '/collective_feedbacks',\r\n\t\t\tname: 'CollectiveFeedback',\r\n\t\t\tcomponent: CollectiveFeedbacks,\r\n\t\t\tmeta: {\r\n\t\t\t\trequiresLogin: true,\r\n\t\t\t\trequiresSubscription: true\r\n\t\t\t}\r\n\t\t},\r\n\t\t{\r\n\t\t\tpath: '/admin/templates',\r\n\t\t\tname: 'ProjectTemplateList',\r\n\t\t\tcomponent: ProjectTemplateList,\r\n\t\t\tmeta: {\r\n\t\t\t\trequiresLogin: true,\r\n\t\t\t\tadminOnly: true\r\n\t\t\t}\r\n\t\t},\r\n\t\t{\r\n\t\t\tpath: '/admin/template/:id',\r\n\t\t\tname: 'NewProjectTemplate',\r\n\t\t\tcomponent: NewProjectTemplate,\r\n\t\t\tmeta: {\r\n\t\t\t\trequiresLogin: true,\r\n\t\t\t\tadminOnly: true\r\n\t\t\t}\r\n\t\t},\r\n\t\t{\r\n\t\t\tpath: '/admin/rubrics',\r\n\t\t\tname: 'RubricList',\r\n\t\t\tcomponent: RubricList,\r\n\t\t\tmeta: {\r\n\t\t\t\trequiresLogin: true,\r\n\t\t\t\tadminOnly: true\r\n\t\t\t}\r\n\t\t},\r\n\t\t{\r\n\t\t\tpath: '/admin/rubric/:id',\r\n\t\t\tname: 'RubricDetail',\r\n\t\t\tcomponent: RubricDetail,\r\n\t\t\tmeta: {\r\n\t\t\t\trequiresLogin: true,\r\n\t\t\t\tadminOnly: true\r\n\t\t\t}\r\n\t\t},\r\n\t\t{\r\n\t\t\tpath: '/report/documents/download',\r\n\t\t\tname: 'DocumentsDownload',\r\n\t\t\tcomponent: DocumentsDownload,\r\n\t\t\tmeta: {\r\n\t\t\t\trequiresLogin: true,\r\n\t\t\t\tadminOnly: true\r\n\t\t\t}\r\n\t\t},\r\n\t\t{\r\n\t\t\tpath: '/report/outcomes',\r\n\t\t\tname: 'OutcomesReport',\r\n\t\t\tcomponent: OutcomesReport,\r\n\t\t\tmeta: {\r\n\t\t\t\trequiresLogin: true,\r\n\t\t\t\tadminOrInstructorOnly: true\r\n\t\t\t}\r\n\t\t},\r\n\t\t{\r\n\t\t\tpath: '/report/individual_outcomes',\r\n\t\t\tname: 'IndividualOutcomesReport',\r\n\t\t\tcomponent: IndividualOutcomesReport,\r\n\t\t\tmeta: {\r\n\t\t\t\trequiresLogin: true,\r\n\t\t\t\tadminOrInstructorOnly: true\r\n\t\t\t}\r\n\t\t},\r\n\t\t{\r\n\t\t\tpath: '/report/collective_feedback',\r\n\t\t\tname: 'CollectiveFeedbackReport',\r\n\t\t\tcomponent: CollectiveFeedbackReport,\r\n\t\t\tmeta: {\r\n\t\t\t\trequiresLogin: true,\r\n\t\t\t\tadminOrInstructorOnly: true\r\n\t\t\t}\r\n\t\t},\r\n\t\t{\r\n\t\t\tpath: '/report/student_performance',\r\n\t\t\tname: 'StudentPerformanceReport',\r\n\t\t\tcomponent: StudentPerformanceReport,\r\n\t\t\tmeta: {\r\n\t\t\t\trequiresLogin: true,\r\n\t\t\t\tadminOrInstructorOnly: true\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\t{\r\n\t\t\tpath: '/canvas/redirect',\r\n\t\t\tname: 'CanvasRedirect',\r\n\t\t\tcomponent: CanvasRedirect,\r\n\t\t\tmeta: {\r\n\t\t\t\tplainLayout: true\r\n\t\t\t}\r\n\t\t},\r\n\t\t{\r\n\t\t\tpath: '/subscription/:termCode',\r\n\t\t\tname: 'Subscription',\r\n\t\t\tcomponent: Subscription\r\n\t\t},\r\n\t\t{\r\n\t\t\tpath: '/e-text/:name',\r\n\t\t\tname: 'EText',\r\n\t\t\tcomponent: EText,\r\n\t\t\tmeta: {\r\n\t\t\t\trequiresLogin: true,\r\n\t\t\t\trequiresSubscription: true\r\n\t\t\t}\r\n\t\t},\r\n\t\t{\r\n\t\t\tpath: '/manual/:name',\r\n\t\t\tname: 'Manual',\r\n\t\t\tcomponent: Manual,\r\n\t\t\tmeta: {\r\n\t\t\t\trequiresLogin: true\r\n\t\t\t}\r\n\t\t},\r\n\t\t{\r\n\t\t\tpath: '/contact/support',\r\n\t\t\tname: 'Contact',\r\n\t\t\tcomponent: Contact,\r\n\t\t\tmeta: {\r\n\t\t\t\tplainLayout: true\r\n\t\t\t}\r\n\t\t},\r\n\t\t{\r\n\t\t\tpath: '/test',\r\n\t\t\tname: 'test',\r\n\t\t\tcomponent: Test\r\n\t\t},\r\n\t\t{\r\n\t\t\tpath: '/404',\r\n\t\t\tname: '404',\r\n\t\t\tcomponent: NotFound,\r\n\t\t\tmeta: {\r\n\t\t\t\tplainLayout: true\r\n\t\t\t}\r\n\t\t},\r\n\t\t{\r\n\t\t\tpath: '/no-profile',\r\n\t\t\tname: 'No Profile',\r\n\t\t\tcomponent: NoProfile,\r\n\t\t\tmeta: {\r\n\t\t\t\tplainLayout: true\r\n\t\t\t}\r\n\t\t},\r\n\t\t{\r\n\t\t\tpath: '*',\r\n\t\t\tredirect: { name: '404' }\r\n\t\t}\r\n\t],\r\n\tscrollBehavior(to, from, savedPosition) {\r\n\t\treturn { x: 0, y: 0 }\r\n\t}\r\n})\r\n\r\n// import NProgress from 'nprogress'\r\n\r\n// NProgress.configure({ showSpinner: true })\r\nimport { PublicClientApplication } from '@azure/msal-browser'\r\nimport { MessageBox } from 'element-ui'\r\nrouter.beforeEach((routeTo, routeFrom, next) => {\r\n\t// NProgress.start()\r\n\tif (!store.state.auth.isAuthenticated) {\r\n\t\tif (routeTo.name != 'Logout' && routeTo.name != 'Landing' && routeTo.name != 'No Profile' && routeTo.name != '404' &&\r\n\t\trouteTo.name != 'CanvasRedirect' && routeTo.name != 'DemoSignIn' && routeTo.name != 'DemoSignUp' && routeTo.name != 'ConfirmEmail') {\r\n\t\t\tconst msal = new PublicClientApplication(\r\n\t\t\t\tstore.state.auth.msalConfig,\r\n\t\t\t)\r\n\t\t\tmsal.handleRedirectPromise().then(authResult => {\r\n\t\t\t\tif (authResult == null) {\r\n\t\t\t\t\tconst accounts = msal.getAllAccounts()\r\n\t\t\t\t\tif (accounts.length == 0) {\r\n\t\t\t\t\t\tconst loginRequest = {\r\n\t\t\t\t\t\t\tscopes: ['openid', 'profile', 'offline_access', process.env.VUE_APP_MSAL_LOGIN_SCOPE]\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\t// redirect anonymous user to login page\r\n\t\t\t\t\t\tmsal.loginRedirect(loginRequest)\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tconst request = {\r\n\t\t\t\t\t\t\taccount: accounts[0],\r\n\t\t\t\t\t\t\tscopes: ['openid', 'profile', 'offline_access', process.env.VUE_APP_MSAL_LOGIN_SCOPE]\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\ttry {\r\n\t\t\t\t\t\t\tmsal.acquireTokenSilent(request).then(response => {\r\n\t\t\t\t\t\t\t\tstore.dispatch('auth/singleSignOn', response).then(user => {\r\n\t\t\t\t\t\t\t\t\tif (user) {\r\n\t\t\t\t\t\t\t\t\t\t// this.checkOptInStatus()\r\n\t\t\t\t\t\t\t\t\t\trouter.push({\r\n\t\t\t\t\t\t\t\t\t\t\tpath: '/'\r\n\t\t\t\t\t\t\t\t\t\t})\r\n\t\t\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\t\t\trouter.push({\r\n\t\t\t\t\t\t\t\t\t\t\tpath: '/no-profile'\r\n\t\t\t\t\t\t\t\t\t\t})\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t})\r\n\t\t\t\t\t\t\t})\r\n\t\t\t\t\t\t} catch (error) {\r\n\t\t\t\t\t\t\tif (error) {\r\n\t\t\t\t\t\t\t\treturn msal.acquireTokenPopup(request).catch((popupError) => {\r\n\t\t\t\t\t\t\t\t\tconsole.error(popupError)\r\n\t\t\t\t\t\t\t\t})\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t} else {\r\n\t\t\t\t\tstore.dispatch('auth/singleSignOn', authResult).then(user => {\r\n\t\t\t\t\t\tif (user) {\r\n\t\t\t\t\t\t\trouter.push({\r\n\t\t\t\t\t\t\t\tpath: '/'\r\n\t\t\t\t\t\t\t})\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\trouter.push({\r\n\t\t\t\t\t\t\t\tpath: '/no-profile'\r\n\t\t\t\t\t\t\t})\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t})\r\n\t\t\t\t}\r\n\t\t\t})\r\n\t\t} else {\r\n\t\t\tnext()\r\n\t\t}\r\n\t} else {\r\n\t\tif (store.state.auth.token && store.state.auth.token.expireTime) {\r\n\t\t\tconst tokenExpireTime = new Date(store.state.auth.token.expireTime)\r\n\t\t\tconsole.log(tokenExpireTime)\r\n\t\t\tconst timeNow = new Date()\r\n\t\t\tif (tokenExpireTime < timeNow) {\r\n\t\t\t\t// Get a new access token using refresh token\r\n\t\t\t\tconsole.log('Token Expired!')\r\n\r\n\t\t\t\tconst payload = new URLSearchParams()\r\n\t\t\t\tpayload.append('ClientId', process.env.VUE_APP_CLIENT_ID)\r\n\t\t\t\tpayload.append('ClientSecret', process.env.VUE_APP_CLIENT_SECRET)\r\n\t\t\t\tpayload.append('Username', store.state.auth.user.OrgCode + ';' + store.state.auth.user.UserName)\r\n\t\t\t\t// Authenticate user then redirect to dashboard\r\n\t\t\t\tstore.dispatch('auth/reLogin', payload)\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\t// Ask user to re-login to get a new token\r\n\t\t\tMessageBox.alert('Your browsing session has expired. You are being redirected to USF Single Sign-On for authencation.', 'Browsing Session Expired', {\r\n\t\t\t\tconfirmButtonText: 'OK',\r\n\t\t\t\tcenter: true,\r\n\t\t\t\tcallback: action => {\r\n\t\t\t\t\tstore.dispatch('auth/logOut')\r\n\t\t\t\t\twindow.location.href = process.env.VUE_APP_MSAL_AUTHORITY + '/oauth2/logout?post_logout_redirect_uri=' + process.env.VUE_APP_MSAL_LOGOUT_URI\r\n\t\t\t\t}\r\n\t\t\t })\r\n\t\t}\r\n\r\n\t\tif (routeTo.name == 'Home' || routeTo.name == 'Courses') {\r\n\t\t\tstore.dispatch('auth/getTerms', store.state.auth.user.OrgCode)\r\n\t\t\tstore.dispatch('auth/getCurrentTerm', store.state.auth.user.OrgCode)\r\n\t\t}\r\n\t\tif (routeTo.name != 'No Profile') {\r\n\t\t\tconst user = store.state.auth.user\r\n\t\t\tif (user.Roles != null && user.Roles.length > 0) {\r\n\t\t\t\tif (routeTo.name == 'Home' || routeTo.name == 'Courses') {\r\n\t\t\t\t\tstore.dispatch('enrollment/getEnrollments', {\r\n\t\t\t\t\t\tusername: store.state.auth.user.UserName,\r\n\t\t\t\t\t\torgCode: store.state.auth.user.OrgCode\r\n\t\t\t\t\t}).then(response => {\r\n\t\t\t\t\t\tif (store.state.enrollment.enrollments && store.state.enrollment.enrollments.length > 0) {\r\n\t\t\t\t\t\t\t// Check for opt in status\r\n\t\t\t\t\t\t\tstore.dispatch('auth/checkOptInStatus', {\r\n\t\t\t\t\t\t\t\tOrgCode: store.state.auth.user.OrgCode,\r\n\t\t\t\t\t\t\t\tUserName: store.state.auth.user.UserName,\r\n\t\t\t\t\t\t\t\tTermCode: store.state.auth.currentTerm.TermCode\r\n\t\t\t\t\t\t\t})\r\n\t\t\t\t\t\t\tnext()\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\tif (!store.state.auth.user.Roles.includes('Administrator')) {\r\n\t\t\t\t\t\t\t\trouter.push({\r\n\t\t\t\t\t\t\t\t\tpath: '/no-profile'\r\n\t\t\t\t\t\t\t\t})\r\n\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\t// Check for opt in status\r\n\t\t\t\t\t\t\t\tstore.dispatch('auth/checkOptInStatus', {\r\n\t\t\t\t\t\t\t\t\tOrgCode: store.state.auth.user.OrgCode,\r\n\t\t\t\t\t\t\t\t\tUserName: store.state.auth.user.UserName,\r\n\t\t\t\t\t\t\t\t\tTermCode: store.state.auth.currentTerm.TermCode\r\n\t\t\t\t\t\t\t\t})\r\n\t\t\t\t\t\t\t\tnext()\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t})\r\n\t\t\t\t} else if (routeTo.matched.some(record => record.meta.requiresSubscription)) {\r\n\t\t\t\t\t// Get updated subscription records\r\n\t\t\t\t\tstore.dispatch('enrollment/getSubscriptions', {\r\n\t\t\t\t\t\tusername: store.state.auth.user.UserName,\r\n\t\t\t\t\t\torgCode: store.state.auth.user.OrgCode\r\n\t\t\t\t\t}).then(response => {\r\n\t\t\t\t\t\tif (store.state.enrollment.enrollments && store.state.enrollment.enrollments.length > 0) {\r\n\t\t\t\t\t\t\t// Check for opt in status\r\n\t\t\t\t\t\t\tstore.dispatch('auth/checkOptInStatus', {\r\n\t\t\t\t\t\t\t\tOrgCode: store.state.auth.user.OrgCode,\r\n\t\t\t\t\t\t\t\tUserName: store.state.auth.user.UserName,\r\n\t\t\t\t\t\t\t\tTermCode: store.state.auth.currentTerm.TermCode\r\n\t\t\t\t\t\t\t})\r\n\t\t\t\t\t\t\tconst subscribedTerms = store.state.enrollment.subscribedTerms\r\n\t\t\t\t\t\t\tconst currentTerm = store.state.enrollment.termCode\r\n\t\t\t\t\t\t\tconst userRole = store.state.enrollment.userRole\r\n\t\t\t\t\t\t\tconst currentCourse = store.state.enrollment.currentCourse\r\n\t\t\t\t\t\t\tif (userRole == 'Student') {\r\n\t\t\t\t\t\t\t\tif (currentCourse.IsPaidCourse) {\r\n\t\t\t\t\t\t\t\t\tif (subscribedTerms && subscribedTerms.length > 0) {\r\n\t\t\t\t\t\t\t\t\t\tconst found = subscribedTerms.find(function(el) {\r\n\t\t\t\t\t\t\t\t\t\t\treturn el == currentTerm\r\n\t\t\t\t\t\t\t\t\t\t})\r\n\t\t\t\t\t\t\t\t\t\tif (found === undefined) {\r\n\t\t\t\t\t\t\t\t\t\t\tNotification.info({\r\n\t\t\t\t\t\t\t\t\t\t\t\tduration: 6000,\r\n\t\t\t\t\t\t\t\t\t\t\t\ttitle: 'Info',\r\n\t\t\t\t\t\t\t\t\t\t\t\tdangerouslyUseHTMLString: true,\r\n\t\t\t\t\t\t\t\t\t\t\t\tmessage: 'You need to subscribe for this term before you can perform this action.<br/><br/>Please click on the [Submit Payment} button in the popup to navigate to the subscription portal.<br/><br/>If you do not see the payment popup please Sign Out by mousing over your name in the left menu, and signing back in again.'\r\n\t\t\t\t\t\t\t\t\t\t\t})\r\n\r\n\t\t\t\t\t\t\t\t\t\t\tstore.dispatch('enrollment/resetCourse').then(response => {\r\n\t\t\t\t\t\t\t\t\t\t\t\tconst showPayment = true\r\n\t\t\t\t\t\t\t\t\t\t\t\tstore.dispatch('enrollment/setPayment', { showPayment, currentTerm })\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t.then(rs => {\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\trouter.push({\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tpath: '/'\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}).catch(() => {})\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t})\r\n\t\t\t\t\t\t\t\t\t\t\t})\r\n\t\t\t\t\t\t\t\t\t\t} else { next() }\r\n\t\t\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\t\t\tNotification.error({\r\n\t\t\t\t\t\t\t\t\t\t\tduration: 6000,\r\n\t\t\t\t\t\t\t\t\t\t\ttitle: 'Error',\r\n\t\t\t\t\t\t\t\t\t\t\tdangerouslyUseHTMLString: true,\r\n\t\t\t\t\t\t\t\t\t\t\tmessage: 'You need to subscribe for this term before you can perform this action.<br/><br/>Please click on the [Submit Payment} button in the popup to navigate to the subscription portal.<br/><br/>If you do not see the payment popup please Sign Out by mousing over your name in the left menu, and signing back in again.'\r\n\t\t\t\t\t\t\t\t\t\t})\r\n\r\n\t\t\t\t\t\t\t\t\t\t// store.dispatch('enrollment/resetCourse').then(response => {\r\n\t\t\t\t\t\t\t\t\t\t// \trouter.push({\r\n\t\t\t\t\t\t\t\t\t\t// \t\tpath: '/',\r\n\t\t\t\t\t\t\t\t\t\t// \t\tquery: {\r\n\t\t\t\t\t\t\t\t\t\t// \t\t\tshowPayment: true,\r\n\t\t\t\t\t\t\t\t\t\t// \t\t\ttermCode: currentTerm\r\n\t\t\t\t\t\t\t\t\t\t// \t\t}\r\n\t\t\t\t\t\t\t\t\t\t// \t}).catch(() => {})\r\n\t\t\t\t\t\t\t\t\t\t// })\r\n\r\n\t\t\t\t\t\t\t\t\t\tstore.dispatch('enrollment/resetCourse').then(response => {\r\n\t\t\t\t\t\t\t\t\t\t\tconst showPayment = true\r\n\t\t\t\t\t\t\t\t\t\t\tstore.dispatch('enrollment/setPayment', { showPayment, currentTerm })\r\n\t\t\t\t\t\t\t\t\t\t\t\t.then(rs => {\r\n\t\t\t\t\t\t\t\t\t\t\t\t\trouter.push({\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tpath: '/'\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t}).catch(() => {})\r\n\t\t\t\t\t\t\t\t\t\t\t\t})\r\n\t\t\t\t\t\t\t\t\t\t})\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\t\tnext()\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\tnext()\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\trouter.push({\r\n\t\t\t\t\t\t\t\tpath: '/no-profile'\r\n\t\t\t\t\t\t\t})\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t})\r\n\t\t\t\t} else if (routeTo.matched.some(record => record.meta.instructorOnly)) {\r\n\t\t\t\t\t// Check for opt in status\r\n\t\t\t\t\tstore.dispatch('auth/checkOptInStatus', {\r\n\t\t\t\t\t\tOrgCode: store.state.auth.user.OrgCode,\r\n\t\t\t\t\t\tUserName: store.state.auth.user.UserName,\r\n\t\t\t\t\t\tTermCode: store.state.auth.currentTerm.TermCode\r\n\t\t\t\t\t})\r\n\t\t\t\t\tconst userRole = store.state.enrollment.userRole\r\n\t\t\t\t\tif (userRole != 'Instructor') {\r\n\t\t\t\t\t\tNotification.error({\r\n\t\t\t\t\t\t\tduration: 6000,\r\n\t\t\t\t\t\t\ttitle: 'Error',\r\n\t\t\t\t\t\t\tmessage: 'You are not authorized to access this page.'\r\n\t\t\t\t\t\t})\r\n\t\t\t\t\t\tconst currentCourse = store.state.enrollment.currentCourse\r\n\t\t\t\t\t\tif (currentCourse) { router.push({ path: '/course/' + currentCourse.ClassCode + '/projects' }).catch(() => {}) } else { router.push({ path: '/' }).catch(() => {}) }\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tnext()\r\n\t\t\t\t\t}\r\n\t\t\t\t} else if (routeTo.matched.some(record => record.meta.adminOnly)) {\r\n\t\t\t\t\t// Check for opt in status\r\n\t\t\t\t\tstore.dispatch('auth/checkOptInStatus', {\r\n\t\t\t\t\t\tOrgCode: store.state.auth.user.OrgCode,\r\n\t\t\t\t\t\tUserName: store.state.auth.user.UserName,\r\n\t\t\t\t\t\tTermCode: store.state.auth.currentTerm.TermCode\r\n\t\t\t\t\t})\r\n\t\t\t\t\tif (!store.state.auth.user.Roles.includes('Administrator')) {\r\n\t\t\t\t\t\tNotification.error({\r\n\t\t\t\t\t\t\tduration: 6000,\r\n\t\t\t\t\t\t\ttitle: 'Error',\r\n\t\t\t\t\t\t\tmessage: 'You are not authorized to access this page.'\r\n\t\t\t\t\t\t})\r\n\t\t\t\t\t\trouter.push({ path: '/' }).catch(() => {})\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tnext()\r\n\t\t\t\t\t}\r\n\t\t\t\t} else if (routeTo.matched.some(record => record.meta.adminOrInstructorOnly)) {\r\n\t\t\t\t\t// Check for opt in status\r\n\t\t\t\t\tstore.dispatch('auth/checkOptInStatus', {\r\n\t\t\t\t\t\tOrgCode: store.state.auth.user.OrgCode,\r\n\t\t\t\t\t\tUserName: store.state.auth.user.UserName,\r\n\t\t\t\t\t\tTermCode: store.state.auth.currentTerm.TermCode\r\n\t\t\t\t\t})\r\n\t\t\t\t\tif (!store.state.auth.user.Roles.includes('Administrator') && !store.state.auth.user.Roles.includes('Instructor')) {\r\n\t\t\t\t\t\tNotification.error({\r\n\t\t\t\t\t\t\tduration: 6000,\r\n\t\t\t\t\t\t\ttitle: 'Error',\r\n\t\t\t\t\t\t\tmessage: 'You are not authorized to access this page.'\r\n\t\t\t\t\t\t})\r\n\t\t\t\t\t\trouter.push({ path: '/' }).catch(() => {})\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tnext()\r\n\t\t\t\t\t}\r\n\t\t\t\t} else {\r\n\t\t\t\t\tnext()\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tconst username = store.state.auth.user.OrgCode + ';' + store.state.auth.user.UserName\r\n\t\t\t\tstore.dispatch('auth/getUserProfile', username)\r\n\t\t\t\t\t.then(response => {\r\n\t\t\t\t\t\tif (store.state.auth.user.Roles.length > 0) {\r\n\t\t\t\t\t\t\tstore.dispatch('enrollment/getEnrollments', {\r\n\t\t\t\t\t\t\t\tusername: store.state.auth.user.UserName,\r\n\t\t\t\t\t\t\t\torgCode: store.state.auth.user.OrgCode\r\n\t\t\t\t\t\t\t}).then(response => {\r\n\t\t\t\t\t\t\t\tif (store.state.enrollment.enrollments && store.state.enrollment.enrollments.length > 0) {\r\n\t\t\t\t\t\t\t\t\t// Check for opt in status\r\n\t\t\t\t\t\t\t\t\tstore.dispatch('auth/checkOptInStatus', {\r\n\t\t\t\t\t\t\t\t\t\tOrgCode: store.state.auth.user.OrgCode,\r\n\t\t\t\t\t\t\t\t\t\tUserName: store.state.auth.user.UserName,\r\n\t\t\t\t\t\t\t\t\t\tTermCode: store.state.auth.currentTerm.TermCode\r\n\t\t\t\t\t\t\t\t\t})\r\n\t\t\t\t\t\t\t\t\tnext()\r\n\t\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\t\tif (!store.state.auth.user.Roles.includes('Administrator')) {\r\n\t\t\t\t\t\t\t\t\t\trouter.push({\r\n\t\t\t\t\t\t\t\t\t\t\tpath: '/no-profile'\r\n\t\t\t\t\t\t\t\t\t\t})\r\n\t\t\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\t\t\t// Check for opt in status\r\n\t\t\t\t\t\t\t\t\t\tstore.dispatch('auth/checkOptInStatus', {\r\n\t\t\t\t\t\t\t\t\t\t\tOrgCode: store.state.auth.user.OrgCode,\r\n\t\t\t\t\t\t\t\t\t\t\tUserName: store.state.auth.user.UserName,\r\n\t\t\t\t\t\t\t\t\t\t\tTermCode: store.state.auth.currentTerm.TermCode\r\n\t\t\t\t\t\t\t\t\t\t})\r\n\t\t\t\t\t\t\t\t\t\tnext()\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t})\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\trouter.push({\r\n\t\t\t\t\t\t\t\tpath: '/no-profile'\r\n\t\t\t\t\t\t\t})\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t})\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tnext()\r\n\t\t}\r\n\t}\r\n})\r\n\r\n// router.afterEach(() => {\r\n// \tNProgress.done()\r\n// })\r\n\r\nexport default router\r\n","import Vue from 'vue'\r\nimport '@/assets/css/element-index.css'\r\nimport ElementUI from 'element-ui'\r\nimport App from './App.vue'\r\nimport router from './router'\r\nimport store from './store'\r\nimport 'nprogress/nprogress.css'\r\nimport 'hamburgers/dist/hamburgers.css'\r\nimport { library } from '@fortawesome/fontawesome-svg-core'\r\nimport { faLock } from '@fortawesome/free-solid-svg-icons'\r\nimport { faUser } from '@fortawesome/free-solid-svg-icons'\r\nimport { FontAwesomeIcon } from '@fortawesome/vue-fontawesome'\r\nimport VueMoment from 'vue-moment'\r\nimport moment from 'moment-timezone'\r\nimport locale from 'element-ui/lib/locale/lang/en'\r\nimport CKEditor from '@ckeditor/ckeditor5-vue'\r\nimport VueCropper from 'vue-cropperjs'\r\nimport 'cropperjs/dist/cropper.css'\r\nimport IdleVue from 'idle-vue'\r\nimport ToggleButton from 'vue-js-toggle-button'\r\n\r\nimport BootstrapVue from 'bootstrap-vue'\r\nimport VueFeather from 'vue-feather'\r\nimport vWow from 'v-wow'\r\nimport VueCarousel from 'vue-carousel'\r\nimport Toasted from 'vue-toasted'\r\n\r\nconst eventsHub = new Vue()\r\n\r\nVue.use(IdleVue, {\r\n\teventEmitter: eventsHub,\r\n\tidleTime: 1000\r\n})\r\n\r\nVue.component(VueCropper)\r\nlibrary.add(faLock)\r\nlibrary.add(faUser)\r\nVue.component('font-awesome-icon', FontAwesomeIcon)\r\nVue.use(CKEditor)\r\nVue.use(ElementUI, { locale })\r\nVue.use(BootstrapVue)\r\nVue.use(ToggleButton)\r\nVue.use(VueMoment, {\r\n\tmoment\r\n})\r\n\r\nVue.use(VueFeather)\r\nVue.use(vWow)\r\nVue.use(VueCarousel)\r\nVue.use(Toasted)\r\n\r\nVue.config.productionTip = false\r\nVue.prototype.$msal = {}\r\n\r\nVue.config.devtools = true\r\n\r\nnew Vue({\r\n\trouter,\r\n\tstore,\r\n\trender: h => h(App)\r\n}).$mount('#app')\r\n","module.exports = __webpack_public_path__ + \"img/new_logo_1.47bceb56.png\";","module.exports = __webpack_public_path__ + \"img/new_demo_logo_1.53e37631.png\";","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./BoxesArea.vue?vue&type=style&index=1&id=251a22e3&lang=scss&scoped=true&\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./StudentPerformance.vue?vue&type=style&index=1&lang=css&\"","module.exports = __webpack_public_path__ + \"img/Demo Logo.d366f3af.png\";","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Students.vue?vue&type=style&index=1&lang=css&\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Footer.vue?vue&type=style&index=0&id=7413c112&lang=scss&scoped=true&\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./GroupProject.vue?vue&type=style&index=0&id=325f1b4f&scoped=true&lang=css&\"","export * from \"-!../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../node_modules/cache-loader/dist/cjs.js??ref--0-0!../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=style&index=0&id=70a769e5&scoped=true&lang=css&\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./StudentSubmissions.vue?vue&type=style&index=0&id=38267144&scoped=true&lang=css&\"","module.exports = __webpack_public_path__ + \"img/white-transparent-logo.f627a732.png\";","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./NewProjectTemplate.vue?vue&type=style&index=1&lang=css&\"","module.exports = \"data:image/png;base64,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\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Pedagogy.vue?vue&type=style&index=0&id=26dbbd9e&scoped=true&lang=css&\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Contact.vue?vue&type=style&index=0&id=11a1381e&lang=scss&scoped=true&\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ProjectTemplateList.vue?vue&type=style&index=0&id=1e3ed6f4&scoped=true&lang=css&\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ViewOldFeedback.vue?vue&type=style&index=0&id=7e4672e0&scoped=true&lang=css&\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Outcomes.vue?vue&type=style&index=1&lang=css&\"","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADwAAAA8CAYAAAA6/NlyAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTQ1IDc5LjE2MzQ5OSwgMjAxOC8wOC8xMy0xNjo0MDoyMiAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTkgKFdpbmRvd3MpIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOjY5RDgyMUZEMjIxOTExRUFBMUVBQUIzMDc2MUJFOEJFIiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOjY5RDgyMUZFMjIxOTExRUFBMUVBQUIzMDc2MUJFOEJFIj4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6NjlEODIxRkIyMjE5MTFFQUExRUFBQjMwNzYxQkU4QkUiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6NjlEODIxRkMyMjE5MTFFQUExRUFBQjMwNzYxQkU4QkUiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz7c6WUfAAAFo0lEQVR42uxbe2hbVRg/ublpk76S2Vlb6KSKD+Zau2IVdZsM0X+sjqoVRfZwIohW56QMp0yrY76xVupriNLCZrcZsAxBUCmTPRDnoKtl7WzXpRXc2iVr0yTmnfj7wo1rb+9N7rrkJsvuB7+em3tyzvl+5zvnO993QnXRaJRdScKxK0w0whphjbBGWCOsEc4i0ak52MDo2SYU24BbAS+wH3il+vry8ZwjDLLPoviSns9HwqxAxzGjLjb8GaAepP/JmSUNsiYUH1AQu90zyZqc4+xh5xg7HPyXqiuA13JtD9cAJX+F/OxAwBN74UcM3+mditffmWuEZ+iPmdPPGXAxx8cfPTlFGPtziFZ2OQhuKyxjNbyRrc4rZC8XlMa/Ys240zp4dOAbFIOrbq/+MEX7uBbFT0CZqOp74DFMSjgV40DvLSiWQu+nL9bC9wIrUmjl4yiWhYLB3YGAnwX8fjcRBR5NFVlBVgi6Zz7wADG7a8Zp9bhczON2OfDZCqh6A8ELR8aDdBYCiwAHcGTKYY/XrxMCBQtwllYN8AsUjWQyYoJeZKz7gFVAOTAN9ENvXqh/CMXdADkKOg7+AH7ghYdb5pme43x6PU/7rUFivF3AugxHiV3AWvFLgyHPGw6HdEIUJ5YTNEvDUr3hmAxFWdQrVQWcyoKw+JSgi0i5qJd0l2kzzGNpNsL8N89a0rSWf4tGIwdCwUgfnluFJW0GJoBDaHMm02yhw5vQeyceVwLXAE5a0nCKb6FcLgQ7FNAsji9ptDmZ6FiyoeiDe2+8WGWannyRtsrHgsec4xjzjfnm4uKiqkgkEjjvmBqU6aIfaLZ+2+FawLHUQ4Shd5Wk00qTAZ4BXpCq8Pv8MUDygFqZ9vSekomtaQ88YB1aDi0Wi/lxWME3M+Pag88fYbZPKrQuERkBllyibhRuVmFcu8JxK0lvs7lkI1gVOKdnyNIdaH9QljAarUfxtdjyer0+vKax4WhtXc1EsoHtdkeV/ZyjNhXWMFtKhisqyk8k+97I8Oiifd3WuwKBoEGiugWk2+YRBtnrUAwJS22emExG9lJLMzMajVl1gxEOh1lH+xdsesqZ6Gv1IH1MHGk9IUeWxOv1se5d372OxzoRtqrIzyk4wv/Ht+7taU5ClmSDlNO6NlmrMdu4Dq69TxTx9AsdLlWB8HsY/4hoG9YraLdEKpYeU9DwtMR5SCHmdhXIUsj7qcR7m4K2NinC+2hLJPGa+2XqqO2eNJKlzGoTJtctUfcr8HeS9rvlvHTn7PUuEnLxmxaYo24WApFEshHBQudC+ofepNcnMtWHofdKufRwh4yVKWZtZ9krXwmZnJS0yebDmIkRIRMSSw/qRrOVLXSjJOd9GZ/Tk+wC4F2JLKSNZb/slLByOyYjkvROC3uCcs31caeARqsVJOTU1xohIZ8TqSGDqUOOek+i9nqe/5nnDeKoKgj0wln9qHAvP4/iM+Ejkb8RuruVEKYA5CmAwqouNHIqIPw5iufSeP6+qpD0I0QU2Au9bUmThwVet9wgd5GQIqEtVgHSE5faUaou8SpT0UkIvN7xnGNdvmkpw1Sk5BJPTa9CZjoe8rHBkD8208v4fFbNX0hGnJEI6w24WTlnYBuMlrTooBrh6WiYtbon2Z8gPFtuM5hYa2EZK9JxrJTTs86Sytgvi+kSTi3LviFBluRY0Mt2eCYv7A29gV0F4pc14X4QHZAgG5ffQXo4HFBlpalC+LQCMrZcIlyoYE8W6bjcIXwHHJMpAaFi1C3njblD2KzTs80FpZJRDo+3WwqvTjghl+WxdH9eEavgeNbtc8bO4dhtCc7htSYLu0mfr1osoGrgQUHG20WZvfVM1TpSw8UGsokw3fmOpZHskIDsIIwshjblA8ChNARpvUBDqn6A12n/86AR1ghrhDXCGmGNcMbkPwEGAInq6B9aNOzhAAAAAElFTkSuQmCC\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RubricList.vue?vue&type=style&index=1&lang=css&\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./StudentScores.vue?vue&type=style&index=1&lang=css&\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Manual.vue?vue&type=style&index=0&id=2d4a72db&scoped=true&lang=css&\"","module.exports = __webpack_public_path__ + \"img/newRegister.0065ed2d.png\";","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./InstructorCompareText.vue?vue&type=style&index=1&lang=css&\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./OldAssignments.vue?vue&type=style&index=0&id=70b02e10&scoped=true&lang=css&\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Research.vue?vue&type=style&index=0&id=c6998e14&lang=scss&scoped=true&\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RubricList.vue?vue&type=style&index=0&id=39875b98&scoped=true&lang=css&\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CollectiveFeedback.vue?vue&type=style&index=1&lang=css&\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ProjectTemplateList.vue?vue&type=style&index=1&lang=css&\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Students.vue?vue&type=style&index=0&id=b0cac534&scoped=true&lang=css&\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Contact.vue?vue&type=style&index=2&id=11a1381e&scoped=true&lang=css&\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DemoSignIn.vue?vue&type=style&index=0&id=1b68f18a&scoped=true&lang=css&\"","module.exports = __webpack_public_path__ + \"img/new_logo_2.1f4ba15a.png\";","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CollectiveFeedbackIssue.vue?vue&type=style&index=1&lang=css&\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ScorePaper.vue?vue&type=style&index=1&lang=css&\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FAQ.vue?vue&type=style&index=1&id=56f6b73c&scoped=true&lang=css&\"","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADwAAAA8CAYAAAA6/NlyAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTQ1IDc5LjE2MzQ5OSwgMjAxOC8wOC8xMy0xNjo0MDoyMiAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTkgKFdpbmRvd3MpIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOjMwOEYwMjZBMUNDQjExRUFCRDMzRDY5RkY5NTZGRjYwIiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOjMwOEYwMjZCMUNDQjExRUFCRDMzRDY5RkY5NTZGRjYwIj4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6MzA4RjAyNjgxQ0NCMTFFQUJEMzNENjlGRjk1NkZGNjAiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6MzA4RjAyNjkxQ0NCMTFFQUJEMzNENjlGRjk1NkZGNjAiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz4O2tUrAAAKN0lEQVR42uxb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\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CollectiveFeedbackIssue.vue?vue&type=style&index=0&id=2b4ba607&scoped=true&lang=css&\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./StudentScores.vue?vue&type=style&index=0&id=1a6820a0&scoped=true&lang=css&\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./OldAssignments.vue?vue&type=style&index=1&lang=css&\"","export * from \"-!../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../node_modules/cache-loader/dist/cjs.js??ref--0-0!../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=style&index=1&lang=css&\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./EText.vue?vue&type=style&index=0&id=4c659264&scoped=true&lang=css&\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Logout.vue?vue&type=style&index=1&lang=css&\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./InstructorReview.vue?vue&type=style&index=1&lang=css&\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DemoSignUp.vue?vue&type=style&index=0&id=b4e2001c&scoped=true&lang=css&\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Redirect.vue?vue&type=style&index=0&id=2fe2ebf3&scoped=true&lang=css&\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Register.vue?vue&type=style&index=0&id=5b6f136e&scoped=true&lang=css&\"","module.exports = __webpack_public_path__ + \"img/CanvasIcon.99234828.png\";","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Banner.vue?vue&type=style&index=0&id=4afd7840&lang=scss&scoped=true&\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DocumentsDownload.vue?vue&type=style&index=1&lang=css&\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ViewFeedback.vue?vue&type=style&index=1&lang=css&\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Login.vue?vue&type=style&index=1&id=e872a1f2&scoped=true&lang=css&\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./InstructorCompareText.vue?vue&type=style&index=0&id=388b1ccd&scoped=true&lang=css&\"","module.exports = __webpack_public_path__ + \"img/fyc.88a01232.png\";","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CollectiveFeedbackDetail.vue?vue&type=style&index=0&id=82180ca4&scoped=true&lang=css&\"","module.exports = __webpack_public_path__ + \"img/new_demo_logo_2.35dbbe92.png\";","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Banner.vue?vue&type=style&index=1&id=4afd7840&scoped=true&lang=css&\"","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADwAAAA8CAYAAAA6/NlyAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTQ1IDc5LjE2MzQ5OSwgMjAxOC8wOC8xMy0xNjo0MDoyMiAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTkgKFdpbmRvd3MpIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOjIxN0U2MTc5MUNDQjExRUE5NkZGRjBDRkUzMzUyMDlBIiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOjIxN0U2MTdBMUNDQjExRUE5NkZGRjBDRkUzMzUyMDlBIj4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6MjE3RTYxNzcxQ0NCMTFFQTk2RkZGMENGRTMzNTIwOUEiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6MjE3RTYxNzgxQ0NCMTFFQTk2RkZGMENGRTMzNTIwOUEiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz4LeMmfAAAH90lEQVR42uxb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\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ScorePaper.vue?vue&type=style&index=0&id=187b13c6&scoped=true&lang=css&\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Login.vue?vue&type=style&index=2&lang=css&\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Header.vue?vue&type=style&index=1&id=e284b3ba&scoped=true&lang=css&\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MainNav.vue?vue&type=style&index=0&id=94e280a4&scoped=true&lang=css&\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Redirect.vue?vue&type=style&index=1&lang=css&\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Manuals.vue?vue&type=style&index=1&id=7978ee33&scoped=true&lang=css&\"","module.exports = __webpack_public_path__ + \"img/logo_transparent.b9f7fa73.png\";","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./StudentPerformance.vue?vue&type=style&index=0&id=547e5bb5&scoped=true&lang=css&\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DemoSignIn.vue?vue&type=style&index=1&lang=css&\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ViewOldFeedback.vue?vue&type=style&index=1&lang=css&\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ConfirmEmail.vue?vue&type=style&index=0&id=2f3ffaf2&scoped=true&lang=css&\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./StudentSubmissions.vue?vue&type=style&index=1&lang=css&\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RubricDetail.vue?vue&type=style&index=1&lang=css&\"","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADwAAAA8CAYAAAA6/NlyAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTQ1IDc5LjE2MzQ5OSwgMjAxOC8wOC8xMy0xNjo0MDoyMiAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTkgKFdpbmRvd3MpIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOjNCNkM0NEYwMUNDQjExRUFCODdDRjg2MDcyQzg2RjM5IiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOjNCNkM0NEYxMUNDQjExRUFCODdDRjg2MDcyQzg2RjM5Ij4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6M0I2QzQ0RUUxQ0NCMTFFQUI4N0NGODYwNzJDODZGMzkiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6M0I2QzQ0RUYxQ0NCMTFFQUI4N0NGODYwNzJDODZGMzkiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz6qv2QbAAAKT0lEQVR42uRb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\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./InstructorReview.vue?vue&type=style&index=0&id=0786851c&scoped=true&lang=css&\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PeerReview.vue?vue&type=style&index=1&lang=css&\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./NewLogin.vue?vue&type=style&index=1&id=49a3d32b&scoped=true&lang=css&\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./NewLogin.vue?vue&type=style&index=2&lang=css&\"","module.exports = __webpack_public_path__ + \"img/tool.832522df.png\";","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Benefits.vue?vue&type=style&index=0&id=3211281f&lang=scss&scoped=true&\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./NotFound.vue?vue&type=style&index=0&id=1691ec5d&scoped=true&lang=css&\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CollectiveFeedbackList.vue?vue&type=style&index=1&lang=css&\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Home.vue?vue&type=style&index=0&id=8308d3d2&lang=scss&scoped=true&\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./IndividualOutcomes.vue?vue&type=style&index=1&lang=css&\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./NewAssignments.vue?vue&type=style&index=0&id=09409b32&scoped=true&lang=css&\""],"sourceRoot":""}