@openedx/frontend-app-instructor-dashboard 1.0.0-alpha.4 → 1.0.0-alpha.40

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (301) hide show
  1. package/dist/Main.d.ts +1 -1
  2. package/dist/Main.js +11 -18
  3. package/dist/Main.js.map +1 -1
  4. package/dist/app.js +0 -6
  5. package/dist/app.js.map +1 -1
  6. package/dist/certificates/CertificatesPage.d.ts +1 -0
  7. package/dist/certificates/CertificatesPage.js +312 -2
  8. package/dist/certificates/CertificatesPage.js.map +1 -1
  9. package/dist/certificates/CertificatesPage.scss +90 -0
  10. package/dist/certificates/components/CertificateTable.d.ts +14 -0
  11. package/dist/certificates/components/CertificateTable.js +88 -0
  12. package/dist/certificates/components/CertificateTable.js.map +1 -0
  13. package/dist/certificates/components/CertificatesPageHeader.d.ts +7 -0
  14. package/dist/certificates/components/CertificatesPageHeader.js +11 -0
  15. package/dist/certificates/components/CertificatesPageHeader.js.map +1 -0
  16. package/dist/certificates/components/CertificatesToolbar.d.ts +11 -0
  17. package/dist/certificates/components/CertificatesToolbar.js +33 -0
  18. package/dist/certificates/components/CertificatesToolbar.js.map +1 -0
  19. package/dist/certificates/components/DisableCertificatesModal.d.ts +9 -0
  20. package/dist/certificates/components/DisableCertificatesModal.js +24 -0
  21. package/dist/certificates/components/DisableCertificatesModal.js.map +1 -0
  22. package/dist/certificates/components/FilterDropdown.d.ts +8 -0
  23. package/dist/certificates/components/FilterDropdown.js +50 -0
  24. package/dist/certificates/components/FilterDropdown.js.map +1 -0
  25. package/dist/certificates/components/GenerateCertificatesModal.d.ts +9 -0
  26. package/dist/certificates/components/GenerateCertificatesModal.js +19 -0
  27. package/dist/certificates/components/GenerateCertificatesModal.js.map +1 -0
  28. package/dist/certificates/components/GenerationHistoryTable.d.ts +11 -0
  29. package/dist/certificates/components/GenerationHistoryTable.js +25 -0
  30. package/dist/certificates/components/GenerationHistoryTable.js.map +1 -0
  31. package/dist/certificates/components/GrantExceptionsModal.d.ts +9 -0
  32. package/dist/certificates/components/GrantExceptionsModal.js +55 -0
  33. package/dist/certificates/components/GrantExceptionsModal.js.map +1 -0
  34. package/dist/certificates/components/InvalidateCertificateModal.d.ts +8 -0
  35. package/dist/certificates/components/InvalidateCertificateModal.js +26 -0
  36. package/dist/certificates/components/InvalidateCertificateModal.js.map +1 -0
  37. package/dist/certificates/components/IssuedCertificatesTab.d.ts +18 -0
  38. package/dist/certificates/components/IssuedCertificatesTab.js +6 -0
  39. package/dist/certificates/components/IssuedCertificatesTab.js.map +1 -0
  40. package/dist/certificates/components/LearnerActionModal.d.ts +16 -0
  41. package/dist/certificates/components/LearnerActionModal.js +27 -0
  42. package/dist/certificates/components/LearnerActionModal.js.map +1 -0
  43. package/dist/certificates/components/RegenerateCertificatesModal.d.ts +11 -0
  44. package/dist/certificates/components/RegenerateCertificatesModal.js +46 -0
  45. package/dist/certificates/components/RegenerateCertificatesModal.js.map +1 -0
  46. package/dist/certificates/components/RemoveExceptionModal.d.ts +9 -0
  47. package/dist/certificates/components/RemoveExceptionModal.js +10 -0
  48. package/dist/certificates/components/RemoveExceptionModal.js.map +1 -0
  49. package/dist/certificates/components/RemoveInvalidationModal.d.ts +9 -0
  50. package/dist/certificates/components/RemoveInvalidationModal.js +10 -0
  51. package/dist/certificates/components/RemoveInvalidationModal.js.map +1 -0
  52. package/dist/certificates/constants.d.ts +15 -0
  53. package/dist/certificates/constants.js +16 -0
  54. package/dist/certificates/constants.js.map +1 -0
  55. package/dist/certificates/data/api.d.ts +30 -0
  56. package/dist/certificates/data/api.js +126 -0
  57. package/dist/certificates/data/api.js.map +1 -0
  58. package/dist/certificates/data/apiHook.d.ts +63 -0
  59. package/dist/certificates/data/apiHook.js +133 -0
  60. package/dist/certificates/data/apiHook.js.map +1 -0
  61. package/dist/certificates/data/queryKeys.d.ts +9 -0
  62. package/dist/certificates/data/queryKeys.js +9 -0
  63. package/dist/certificates/data/queryKeys.js.map +1 -0
  64. package/dist/certificates/messages.d.ts +548 -0
  65. package/dist/certificates/messages.js +550 -0
  66. package/dist/certificates/messages.js.map +1 -0
  67. package/dist/certificates/types.d.ts +66 -0
  68. package/dist/certificates/types.js +26 -0
  69. package/dist/certificates/types.js.map +1 -0
  70. package/dist/certificates/utils/errorHandling.d.ts +12 -0
  71. package/dist/certificates/utils/errorHandling.js +24 -0
  72. package/dist/certificates/utils/errorHandling.js.map +1 -0
  73. package/dist/certificates/utils/filterUtils.d.ts +4 -0
  74. package/dist/certificates/utils/filterUtils.js +31 -0
  75. package/dist/certificates/utils/filterUtils.js.map +1 -0
  76. package/dist/certificates/utils/index.d.ts +2 -0
  77. package/dist/certificates/utils/index.js +2 -0
  78. package/dist/certificates/utils/index.js.map +1 -0
  79. package/dist/components/ActionCard.d.ts +2 -2
  80. package/dist/components/ActionCard.js +1 -1
  81. package/dist/components/ActionCard.js.map +1 -1
  82. package/dist/components/CodeEditor.d.ts +5 -0
  83. package/dist/components/CodeEditor.js +34 -0
  84. package/dist/components/CodeEditor.js.map +1 -0
  85. package/dist/components/PendingTasks.d.ts +3 -1
  86. package/dist/components/PendingTasks.js +3 -2
  87. package/dist/components/PendingTasks.js.map +1 -1
  88. package/dist/components/SpecifyLearnerField.d.ts +4 -1
  89. package/dist/components/SpecifyLearnerField.js +55 -15
  90. package/dist/components/SpecifyLearnerField.js.map +1 -1
  91. package/dist/components/SpecifyProblemField.d.ts +13 -0
  92. package/dist/components/SpecifyProblemField.js +52 -0
  93. package/dist/components/SpecifyProblemField.js.map +1 -0
  94. package/dist/components/UsernameFilter.d.ts +7 -0
  95. package/dist/components/UsernameFilter.js +19 -0
  96. package/dist/components/UsernameFilter.js.map +1 -0
  97. package/dist/components/messages.d.ts +45 -0
  98. package/dist/components/messages.js +45 -0
  99. package/dist/components/messages.js.map +1 -1
  100. package/dist/courseInfo/types.d.ts +5 -0
  101. package/dist/courseInfo/types.js.map +1 -1
  102. package/dist/courseTeam/CourseTeamPage.js +25 -2
  103. package/dist/courseTeam/CourseTeamPage.js.map +1 -1
  104. package/dist/courseTeam/components/AddTeamMemberModal.d.ts +6 -0
  105. package/dist/courseTeam/components/AddTeamMemberModal.js +61 -0
  106. package/dist/courseTeam/components/AddTeamMemberModal.js.map +1 -0
  107. package/dist/courseTeam/components/EditTeamMemberModal.d.ts +8 -0
  108. package/dist/courseTeam/components/EditTeamMemberModal.js +102 -0
  109. package/dist/courseTeam/components/EditTeamMemberModal.js.map +1 -0
  110. package/dist/courseTeam/components/MembersContent.d.ts +6 -0
  111. package/dist/courseTeam/components/MembersContent.js +48 -0
  112. package/dist/courseTeam/components/MembersContent.js.map +1 -0
  113. package/dist/courseTeam/components/RoleFilter.d.ts +7 -0
  114. package/dist/courseTeam/components/RoleFilter.js +22 -0
  115. package/dist/courseTeam/components/RoleFilter.js.map +1 -0
  116. package/dist/courseTeam/components/RolesContent.d.ts +3 -0
  117. package/dist/courseTeam/components/RolesContent.js +25 -0
  118. package/dist/courseTeam/components/RolesContent.js.map +1 -0
  119. package/dist/courseTeam/constants.d.ts +3 -0
  120. package/dist/courseTeam/constants.js +4 -0
  121. package/dist/courseTeam/constants.js.map +1 -0
  122. package/dist/courseTeam/data/api.d.ts +6 -0
  123. package/dist/courseTeam/data/api.js +38 -0
  124. package/dist/courseTeam/data/api.js.map +1 -0
  125. package/dist/courseTeam/data/apiHook.d.ts +8 -0
  126. package/dist/courseTeam/data/apiHook.js +32 -0
  127. package/dist/courseTeam/data/apiHook.js.map +1 -0
  128. package/dist/courseTeam/data/queryKeys.d.ts +7 -0
  129. package/dist/courseTeam/data/queryKeys.js +14 -0
  130. package/dist/courseTeam/data/queryKeys.js.map +1 -0
  131. package/dist/courseTeam/messages.d.ts +258 -0
  132. package/dist/courseTeam/messages.js +260 -0
  133. package/dist/courseTeam/messages.js.map +1 -0
  134. package/dist/courseTeam/types.d.ts +29 -0
  135. package/dist/courseTeam/types.js +3 -0
  136. package/dist/courseTeam/types.js.map +1 -0
  137. package/dist/data/api.d.ts +2 -1
  138. package/dist/data/api.js +9 -3
  139. package/dist/data/api.js.map +1 -1
  140. package/dist/data/apiHook.d.ts +1 -0
  141. package/dist/data/apiHook.js +11 -2
  142. package/dist/data/apiHook.js.map +1 -1
  143. package/dist/data/queryKeys.d.ts +4 -0
  144. package/dist/data/queryKeys.js +4 -0
  145. package/dist/data/queryKeys.js.map +1 -1
  146. package/dist/data/utils.d.ts +2 -0
  147. package/dist/data/utils.js +9 -0
  148. package/dist/data/utils.js.map +1 -0
  149. package/dist/dateExtensions/components/AddExtensionModal.d.ts +1 -1
  150. package/dist/dateExtensions/components/AddExtensionModal.js +6 -7
  151. package/dist/dateExtensions/components/AddExtensionModal.js.map +1 -1
  152. package/dist/dateExtensions/components/DateExtensionsList.js +3 -14
  153. package/dist/dateExtensions/components/DateExtensionsList.js.map +1 -1
  154. package/dist/dateExtensions/data/apiHook.d.ts +2 -2
  155. package/dist/dateExtensions/data/apiHook.js +4 -4
  156. package/dist/dateExtensions/data/apiHook.js.map +1 -1
  157. package/dist/dateExtensions/messages.d.ts +0 -5
  158. package/dist/dateExtensions/messages.js +1 -6
  159. package/dist/dateExtensions/messages.js.map +1 -1
  160. package/dist/enrollments/EnrollmentsPage.js +34 -7
  161. package/dist/enrollments/EnrollmentsPage.js.map +1 -1
  162. package/dist/enrollments/components/AddBetaTestersModal.d.ts +6 -0
  163. package/dist/enrollments/components/AddBetaTestersModal.js +69 -0
  164. package/dist/enrollments/components/AddBetaTestersModal.js.map +1 -0
  165. package/dist/enrollments/components/EnrollLearnersModal.d.ts +6 -0
  166. package/dist/enrollments/components/EnrollLearnersModal.js +53 -0
  167. package/dist/enrollments/components/EnrollLearnersModal.js.map +1 -0
  168. package/dist/enrollments/components/EnrollmentStatusModal.js +3 -3
  169. package/dist/enrollments/components/EnrollmentStatusModal.js.map +1 -1
  170. package/dist/enrollments/components/EnrollmentsList.d.ts +3 -2
  171. package/dist/enrollments/components/EnrollmentsList.js +13 -14
  172. package/dist/enrollments/components/EnrollmentsList.js.map +1 -1
  173. package/dist/enrollments/components/UnenrollModal.d.ts +1 -1
  174. package/dist/enrollments/components/UnenrollModal.js +29 -3
  175. package/dist/enrollments/components/UnenrollModal.js.map +1 -1
  176. package/dist/enrollments/components/UpdateBetaTesterModal.d.ts +8 -0
  177. package/dist/enrollments/components/UpdateBetaTesterModal.js +72 -0
  178. package/dist/enrollments/components/UpdateBetaTesterModal.js.map +1 -0
  179. package/dist/enrollments/data/api.d.ts +3 -1
  180. package/dist/enrollments/data/api.js +11 -1
  181. package/dist/enrollments/data/api.js.map +1 -1
  182. package/dist/enrollments/data/apiHook.d.ts +5 -3
  183. package/dist/enrollments/data/apiHook.js +21 -3
  184. package/dist/enrollments/data/apiHook.js.map +1 -1
  185. package/dist/enrollments/data/queryKeys.d.ts +1 -1
  186. package/dist/enrollments/data/queryKeys.js.map +1 -1
  187. package/dist/enrollments/messages.d.ts +131 -1
  188. package/dist/enrollments/messages.js +136 -6
  189. package/dist/enrollments/messages.js.map +1 -1
  190. package/dist/enrollments/types.d.ts +25 -0
  191. package/dist/enrollments/types.js.map +1 -1
  192. package/dist/grading/GradingPage.js +15 -2
  193. package/dist/grading/GradingPage.js.map +1 -1
  194. package/dist/grading/components/GradingActionRow.d.ts +2 -0
  195. package/dist/grading/components/GradingActionRow.js +20 -0
  196. package/dist/grading/components/GradingActionRow.js.map +1 -0
  197. package/dist/grading/components/GradingConfigurationModal.d.ts +6 -0
  198. package/dist/grading/components/GradingConfigurationModal.js +15 -0
  199. package/dist/grading/components/GradingConfigurationModal.js.map +1 -0
  200. package/dist/grading/components/GradingLearnerContent.d.ts +7 -0
  201. package/dist/grading/components/GradingLearnerContent.js +199 -0
  202. package/dist/grading/components/GradingLearnerContent.js.map +1 -0
  203. package/dist/grading/data/api.d.ts +6 -0
  204. package/dist/grading/data/api.js +59 -0
  205. package/dist/grading/data/api.js.map +1 -0
  206. package/dist/grading/data/apiHook.d.ts +6 -0
  207. package/dist/grading/data/apiHook.js +29 -0
  208. package/dist/grading/data/apiHook.js.map +1 -0
  209. package/dist/grading/data/queryKeys.d.ts +9 -0
  210. package/dist/grading/data/queryKeys.js +8 -0
  211. package/dist/grading/data/queryKeys.js.map +1 -0
  212. package/dist/grading/messages.d.ts +248 -0
  213. package/dist/grading/messages.js +250 -0
  214. package/dist/grading/messages.js.map +1 -0
  215. package/dist/grading/types.d.ts +11 -0
  216. package/dist/grading/types.js +2 -0
  217. package/dist/grading/types.js.map +1 -0
  218. package/dist/hooks/useDebouncedFilter.d.ts +1 -0
  219. package/dist/hooks/useDebouncedFilter.js +5 -0
  220. package/dist/hooks/useDebouncedFilter.js.map +1 -1
  221. package/dist/instructorNav/InstructorNav.js +16 -4
  222. package/dist/instructorNav/InstructorNav.js.map +1 -1
  223. package/dist/messages.d.ts +8 -0
  224. package/dist/messages.js +10 -0
  225. package/dist/messages.js.map +1 -0
  226. package/dist/pageWrapper/PageWrapper.js +3 -1
  227. package/dist/pageWrapper/PageWrapper.js.map +1 -1
  228. package/dist/providers/AccessErrorObserver.d.ts +9 -0
  229. package/dist/providers/AccessErrorObserver.js +35 -0
  230. package/dist/providers/AccessErrorObserver.js.map +1 -0
  231. package/dist/providers/AccessErrorProvider.d.ts +19 -0
  232. package/dist/providers/AccessErrorProvider.js +51 -0
  233. package/dist/providers/AccessErrorProvider.js.map +1 -0
  234. package/dist/providers/messages.d.ts +33 -0
  235. package/dist/providers/messages.js +35 -0
  236. package/dist/providers/messages.js.map +1 -0
  237. package/dist/provides.d.ts +2 -1
  238. package/dist/provides.js +3 -2
  239. package/dist/provides.js.map +1 -1
  240. package/dist/routes.d.ts +1 -1
  241. package/dist/routes.js +2 -2
  242. package/dist/routes.js.map +1 -1
  243. package/dist/slots/CourseInfoSlot/CourseInfoSlot.d.ts +2 -0
  244. package/dist/slots/CourseInfoSlot/CourseInfoSlot.js +14 -0
  245. package/dist/slots/CourseInfoSlot/CourseInfoSlot.js.map +1 -0
  246. package/dist/slots.js +13 -1
  247. package/dist/slots.js.map +1 -1
  248. package/dist/specialExams/SpecialExamsPage.js +14 -2
  249. package/dist/specialExams/SpecialExamsPage.js.map +1 -1
  250. package/dist/specialExams/components/AddAllowanceModal.d.ts +6 -0
  251. package/dist/specialExams/components/AddAllowanceModal.js +84 -0
  252. package/dist/specialExams/components/AddAllowanceModal.js.map +1 -0
  253. package/dist/specialExams/components/Allowances.d.ts +2 -0
  254. package/dist/specialExams/components/Allowances.js +89 -0
  255. package/dist/specialExams/components/Allowances.js.map +1 -0
  256. package/dist/specialExams/components/AllowancesList.d.ts +8 -0
  257. package/dist/specialExams/components/AllowancesList.js +63 -0
  258. package/dist/specialExams/components/AllowancesList.js.map +1 -0
  259. package/dist/specialExams/components/AttemptsList.d.ts +3 -0
  260. package/dist/specialExams/components/AttemptsList.js +50 -0
  261. package/dist/specialExams/components/AttemptsList.js.map +1 -0
  262. package/dist/specialExams/components/DeleteAllowanceModal.d.ts +8 -0
  263. package/dist/specialExams/components/DeleteAllowanceModal.js +29 -0
  264. package/dist/specialExams/components/DeleteAllowanceModal.js.map +1 -0
  265. package/dist/specialExams/components/EditAllowanceModal.d.ts +8 -0
  266. package/dist/specialExams/components/EditAllowanceModal.js +62 -0
  267. package/dist/specialExams/components/EditAllowanceModal.js.map +1 -0
  268. package/dist/specialExams/constants.d.ts +43 -0
  269. package/dist/specialExams/constants.js +19 -0
  270. package/dist/specialExams/constants.js.map +1 -0
  271. package/dist/specialExams/data/api.d.ts +7 -0
  272. package/dist/specialExams/data/api.js +55 -0
  273. package/dist/specialExams/data/api.js.map +1 -0
  274. package/dist/specialExams/data/apiHook.d.ts +6 -0
  275. package/dist/specialExams/data/apiHook.js +37 -0
  276. package/dist/specialExams/data/apiHook.js.map +1 -0
  277. package/dist/specialExams/data/queryKeys.d.ts +8 -0
  278. package/dist/specialExams/data/queryKeys.js +9 -0
  279. package/dist/specialExams/data/queryKeys.js.map +1 -0
  280. package/dist/specialExams/messages.d.ts +228 -0
  281. package/dist/specialExams/messages.js +230 -0
  282. package/dist/specialExams/messages.js.map +1 -0
  283. package/dist/specialExams/types.d.ts +65 -0
  284. package/dist/specialExams/types.js +2 -0
  285. package/dist/specialExams/types.js.map +1 -0
  286. package/dist/style.scss +16 -0
  287. package/dist/testUtils.js +2 -2
  288. package/dist/testUtils.js.map +1 -1
  289. package/dist/types/index.d.ts +15 -0
  290. package/dist/types/index.js.map +1 -1
  291. package/dist/utils/formatters.d.ts +5 -0
  292. package/dist/utils/formatters.js +10 -0
  293. package/dist/utils/formatters.js.map +1 -1
  294. package/package.json +6 -6
  295. package/dist/app.scss +0 -10
  296. package/dist/providers/QueryProvider.d.ts +0 -6
  297. package/dist/providers/QueryProvider.js +0 -16
  298. package/dist/providers/QueryProvider.js.map +0 -1
  299. package/dist/providers.d.ts +0 -3
  300. package/dist/providers.js +0 -8
  301. package/dist/providers.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GradingLearnerContent.js","sourceRoot":"","sources":["../../../src/grading/components/GradingLearnerContent.tsx"],"names":[],"mappings":"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","sourcesContent":["import { useParams } from 'react-router-dom';\nimport { useEffect, useState, useRef } from 'react';\nimport { isAxiosError } from 'axios';\nimport { useIntl } from '@openedx/frontend-base';\nimport { Button, FormControl, ModalDialog, Stack } from '@openedx/paragon';\nimport ActionCard, { ActionCardProps } from '@src/components/ActionCard';\nimport SpecifyLearnerField from '@src/components/SpecifyLearnerField';\nimport SpecifyProblemField from '@src/components/SpecifyProblemField';\nimport { useChangeScore, useDeleteHistory, useRescoreSubmission, useResetAttempts } from '@src/grading/data/apiHook';\nimport messages from '@src/grading/messages';\nimport { GradingToolsType } from '@src/grading/types';\nimport { useLearner, usePendingTasks, useProblemDetails } from '@src/data/apiHook';\nimport { useAlert } from '@src/providers/AlertProvider';\n\ninterface GradingLearnerContentProps {\n toolType: GradingToolsType,\n onShowTasks: () => void,\n}\n\nconst GradingLearnerContent = ({ toolType, onShowTasks }: GradingLearnerContentProps) => {\n const intl = useIntl();\n const { courseId = '' } = useParams<{ courseId: string }>();\n const [usernameOrEmail, setUsernameOrEmail] = useState('');\n const [blockId, setBlockId] = useState('');\n const [score, setScore] = useState('');\n const learnerFieldRef = useRef<{ reset: () => void }>(null);\n const problemFieldRef = useRef<{ reset: () => void }>(null);\n const [showCurrentStatus, setShowCurrentStatus] = useState(false);\n const [confirmationModalData, setConfirmationModalData] = useState<{ message: string, confirmButtonLabel: string, action?: () => void }>({ message: '', confirmButtonLabel: '', action: undefined });\n const { data: problemData = { currentScore: { score: 0, total: null }, attempts: { current: null, total: 0 } }, isError: isProblemDataError } = useProblemDetails(courseId, blockId, usernameOrEmail);\n const { data: learnerData = { username: '', progressUrl: '' } } = useLearner(courseId, usernameOrEmail);\n const { showModal, showToast } = useAlert();\n\n const { mutate: resetAttempts } = useResetAttempts(courseId);\n const { mutate: deleteHistory } = useDeleteHistory(courseId);\n const { mutate: changeScore } = useChangeScore(courseId);\n const { mutate: rescoreSubmission } = useRescoreSubmission(courseId);\n const { refetch: refetchTasks } = usePendingTasks(courseId);\n\n const resetConfirmationModalData = () => setConfirmationModalData({ message: '', confirmButtonLabel: '', action: undefined });\n\n const manageOnError = (error: Error) => {\n resetConfirmationModalData();\n const errorMessage = isAxiosError(error) && error.response?.data?.error ? error.response.data.error : intl.formatMessage(messages.unexpectedError);\n showModal({\n message: errorMessage,\n variant: 'danger',\n confirmText: intl.formatMessage(messages.close),\n });\n };\n\n const handleResetAttempts = (): void => {\n resetAttempts({ learner: usernameOrEmail, problem: blockId }, {\n onSuccess: () => {\n resetConfirmationModalData();\n showToast(intl.formatMessage(messages.resetAttemptsSuccess, { student: usernameOrEmail || intl.formatMessage(messages.allLearners), blockId }));\n },\n onError: manageOnError\n });\n };\n\n const handleRescoreSubmission = (onlyIfHigher = false): void => {\n rescoreSubmission({ learner: usernameOrEmail, problem: blockId, onlyIfHigher }, {\n onSuccess: () => {\n resetConfirmationModalData();\n showToast(intl.formatMessage(messages.rescoreSubmissionSuccess, { student: usernameOrEmail || intl.formatMessage(messages.allLearners), blockId }));\n },\n onError: manageOnError\n });\n };\n\n const handleDeleteHistory = (): void => {\n deleteHistory({ learner: usernameOrEmail, problem: blockId }, {\n onSuccess: () => {\n resetConfirmationModalData();\n showToast(intl.formatMessage(messages.deleteHistorySuccess, { student: usernameOrEmail || intl.formatMessage(messages.allLearners), blockId }));\n },\n onError: manageOnError\n });\n };\n\n const handleOverrideScore = (): void => {\n changeScore({ learner: usernameOrEmail, problem: blockId, newScore: Number(score) }, {\n onSuccess: () => {\n resetConfirmationModalData();\n showToast(intl.formatMessage(messages.overrideScoreSuccess, { student: usernameOrEmail || intl.formatMessage(messages.allLearners), blockId }));\n },\n onError: manageOnError\n });\n };\n\n const handleScoreChange = (e: React.ChangeEvent<HTMLInputElement>): void => {\n const value = e.target.value;\n const numericRegex = /^-?\\d*\\.?\\d*$/;\n\n if (numericRegex.test(value) || value === '') {\n setScore(value);\n }\n };\n\n const confirmationInfo = {\n resetAttempts: {\n message: messages.resetAttemptsConfirmation,\n confirmButtonLabel: messages.resetAttempts,\n action: handleResetAttempts,\n },\n deleteState: {\n message: messages.deleteStateConfirmation,\n confirmButtonLabel: messages.deleteStateButtonLabel,\n action: handleDeleteHistory,\n },\n overrideScore: {\n message: messages.overrideScoreConfirmation,\n confirmButtonLabel: messages.rescore,\n action: handleOverrideScore,\n },\n rescore: {\n message: messages.rescoreConfirmation,\n confirmButtonLabel: messages.rescore,\n action: () => handleRescoreSubmission(),\n },\n rescoreIfImproves: {\n message: messages.rescoreConfirmation,\n confirmButtonLabel: messages.rescore,\n action: () => handleRescoreSubmission(true),\n }\n };\n\n const openConfirmationModal = (type: keyof typeof confirmationInfo): void => {\n const { message, confirmButtonLabel, action } = confirmationInfo[type];\n setConfirmationModalData({ message: intl.formatMessage(message, { student: usernameOrEmail || intl.formatMessage(messages.allLearners), blockId }), confirmButtonLabel: intl.formatMessage(confirmButtonLabel), action });\n };\n\n const handleTaskStatusClick = (): void => {\n refetchTasks();\n onShowTasks();\n };\n\n useEffect(() => {\n setUsernameOrEmail('');\n setBlockId('');\n setScore('');\n setShowCurrentStatus(false);\n learnerFieldRef.current?.reset();\n problemFieldRef.current?.reset();\n }, [toolType]);\n\n const singleLearnerActionRows: ActionCardProps[] = [\n {\n title: intl.formatMessage(messages.resetAttempts),\n description: intl.formatMessage(messages.resetAttemptsDescription),\n customAction: (\n <Button disabled={!usernameOrEmail || !blockId} onClick={() => openConfirmationModal('resetAttempts')}>\n {intl.formatMessage(messages.resetAttemptsButtonLabel)}\n </Button>\n )\n },\n {\n title: intl.formatMessage(messages.rescoreSubmission),\n description: intl.formatMessage(messages.rescoreSubmissionDescription),\n customAction: (\n <div className=\"d-flex flex-column gap-3\">\n <Button disabled={!usernameOrEmail || !blockId} onClick={() => openConfirmationModal('rescore')}>\n {intl.formatMessage(messages.rescoreSubmissionButtonLabel)}\n </Button>\n <Button disabled={!usernameOrEmail || !blockId} onClick={() => openConfirmationModal('rescoreIfImproves')}>\n {intl.formatMessage(messages.rescoreIfImprovesScoreButtonLabel)}\n </Button>\n </div>\n ),\n },\n {\n title: intl.formatMessage(messages.overrideScore),\n description: intl.formatMessage(messages.overrideScoreDescription),\n buttonLabel: intl.formatMessage(messages.overrideScoreButtonLabel),\n customAction: (\n <div className=\"d-flex align-items-center gap-2\">\n <FormControl\n name={intl.formatMessage(messages.overrideScorePlaceholder)}\n type=\"number\"\n placeholder={intl.formatMessage(messages.overrideScorePlaceholder)}\n value={score}\n onChange={handleScoreChange}\n />\n <Button disabled={!usernameOrEmail || !blockId || !score} onClick={() => openConfirmationModal('overrideScore')}>{intl.formatMessage(messages.overrideScoreButtonLabel)}</Button>\n </div>\n )\n },\n {\n title: intl.formatMessage(messages.deleteHistory),\n description: intl.formatMessage(messages.deleteHistoryDescription),\n customAction: (\n <div className=\"d-flex flex-column gap-3\">\n <Button disabled={!usernameOrEmail || !blockId} onClick={() => openConfirmationModal('deleteState')}>{intl.formatMessage(messages.deleteHistoryButtonLabel)}</Button>\n </div>\n ),\n },\n {\n title: intl.formatMessage(messages.taskStatus),\n description: intl.formatMessage(messages.taskStatusDescription),\n customAction: (\n <Button disabled={!usernameOrEmail || !blockId} onClick={handleTaskStatusClick}>\n {intl.formatMessage(messages.taskStatusButtonLabel)}\n </Button>\n )\n }\n ];\n\n const allLearnersActionRows = [\n {\n title: intl.formatMessage(messages.resetAttempts),\n description: intl.formatMessage(messages.resetAllLearnersAttemptsDescription),\n buttonLabel: intl.formatMessage(messages.resetAttemptsButtonLabel),\n customAction: (\n <Button disabled={!blockId} onClick={() => openConfirmationModal('resetAttempts')}>\n {intl.formatMessage(messages.resetAttemptsButtonLabel)}\n </Button>\n )\n },\n {\n title: intl.formatMessage(messages.rescoreSubmission),\n description: intl.formatMessage(messages.rescoreSubmissionAllLearnersDescription),\n customAction: (\n <div className=\"d-flex flex-column gap-3\">\n <Button disabled={!blockId} onClick={() => openConfirmationModal('rescore')}>{intl.formatMessage(messages.rescoreAllSubmissionButtonLabel)}</Button>\n <Button disabled={!blockId} onClick={() => openConfirmationModal('rescoreIfImproves')}>{intl.formatMessage(messages.rescoreIfImprovesScoreButtonLabel)}</Button>\n </div>\n ),\n },\n {\n title: intl.formatMessage(messages.taskStatus),\n description: intl.formatMessage(messages.taskStatusDescription),\n customAction: (\n <Button onClick={handleTaskStatusClick}>\n {intl.formatMessage(messages.taskStatusButtonLabel)}\n </Button>\n )\n }\n ];\n\n const rows = toolType === 'single' ? singleLearnerActionRows : allLearnersActionRows;\n\n const handleProblemChange = (location: string): void => {\n setBlockId(location);\n if (usernameOrEmail && location) {\n setShowCurrentStatus(true);\n }\n };\n\n const handleLearnerChange = (usernameOrEmail: string): void => {\n setUsernameOrEmail(usernameOrEmail);\n // Reset problem field when learner changes due to progress and attempts change for every learner\n setBlockId('');\n problemFieldRef.current?.reset();\n if (showCurrentStatus) {\n setShowCurrentStatus(false);\n }\n };\n\n return (\n <>\n <p className=\"x-small text-primary mt-3\">\n {\n toolType === 'single'\n ? intl.formatMessage(messages.descriptionSingleLearner)\n : intl.formatMessage(messages.descriptionAllLearners)\n }\n </p>\n <div className=\"d-flex justify-content-between gap-4\">\n {toolType === 'single' && (\n <div className=\"w-50\">\n <SpecifyLearnerField ref={learnerFieldRef} onClickSelect={handleLearnerChange} />\n </div>\n )}\n <div className=\"w-50\">\n <SpecifyProblemField\n ref={problemFieldRef}\n fieldLabel={intl.formatMessage(messages.specifyProblem)}\n buttonLabel={intl.formatMessage(messages.select)}\n disabled={!usernameOrEmail && toolType === 'single'}\n usernameOrEmail={usernameOrEmail}\n onClickSelect={handleProblemChange}\n />\n </div>\n </div>\n {\n showCurrentStatus && learnerData.username && !isProblemDataError && (\n <>\n <p className=\"text-primary-500 x-small mb-0 mt-3\">{intl.formatMessage(messages.currentScore)}</p>\n <Stack direction=\"horizontal\" gap={2} className=\"align-items-center justify-content-between mr-3.5\">\n <Stack direction=\"horizontal\" gap={5} className=\"align-items-end\">\n <p className=\"text-primary-500 mb-0\">{learnerData.username}</p>\n <Stack className=\"align-items-center\">\n <p className=\"x-small mb-0 text-gray-500\">{intl.formatMessage(messages.score)}</p>\n <p className=\"lead m-0 text-primary-700\">{problemData.currentScore?.score || 0} {problemData.currentScore?.total && `/ ${problemData.currentScore.total}`}</p>\n </Stack>\n <Stack className=\"align-items-center\">\n <p className=\"x-small mb-0 text-gray-500\">{intl.formatMessage(messages.attempts)}</p>\n <p className=\"lead m-0 text-primary-700\">{problemData.attempts?.current || 0} {problemData.attempts?.total && `/ ${problemData.attempts.total}`}</p>\n </Stack>\n </Stack>\n <Button as=\"a\" href={learnerData.progressUrl} className=\"bg-white\" variant=\"outline-primary\">{intl.formatMessage(messages.viewProgress)}</Button>\n </Stack>\n </>\n )\n }\n {\n rows.map(({ title, description, buttonLabel, customAction, onButtonClick }, index) => (\n <ActionCard key={title} buttonLabel={buttonLabel} description={description} title={title} hasBorderBottom={index !== rows.length - 1} customAction={customAction} onButtonClick={onButtonClick} />\n ))\n }\n {\n confirmationModalData.message !== '' && (\n <ModalDialog\n title={confirmationModalData.confirmButtonLabel}\n isOpen={confirmationModalData.message !== ''}\n onClose={() => setConfirmationModalData({ message: '', confirmButtonLabel: '', action: undefined })}\n isOverflowVisible={false}\n hasCloseButton={false}\n >\n <ModalDialog.Body className=\"pt-4\">\n <p className=\"text-break\">{confirmationModalData.message}</p>\n </ModalDialog.Body>\n <ModalDialog.Footer>\n <Button variant=\"tertiary\" onClick={() => setConfirmationModalData({ message: '', confirmButtonLabel: '', action: undefined })}>{intl.formatMessage(messages.close)}</Button>\n <Button className=\"ml-2\" onClick={confirmationModalData.action}>{confirmationModalData.confirmButtonLabel}</Button>\n </ModalDialog.Footer>\n </ModalDialog>\n )\n }\n </>\n );\n};\n\nexport default GradingLearnerContent;\n"]}
@@ -0,0 +1,6 @@
1
+ import { RescoreParams, GradingParams, ScoreParams } from '../types';
2
+ export declare const getGradingConfiguration: (courseId: string) => Promise<any>;
3
+ export declare const postResetAttempts: (courseId: string, params: GradingParams) => Promise<any>;
4
+ export declare const postRescoreSubmission: (courseId: string, params: RescoreParams) => Promise<any>;
5
+ export declare const deleteState: (courseId: string, params: GradingParams) => Promise<any>;
6
+ export declare const changeScore: (courseId: string, params: ScoreParams) => Promise<any>;
@@ -0,0 +1,59 @@
1
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3
+ return new (P || (P = Promise))(function (resolve, reject) {
4
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
5
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
7
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
8
+ });
9
+ };
10
+ import { camelCaseObject, getAuthenticatedHttpClient } from '@openedx/frontend-base';
11
+ import { getApiBaseUrl } from '../../data/api';
12
+ export const getGradingConfiguration = (courseId) => __awaiter(void 0, void 0, void 0, function* () {
13
+ const { data } = yield getAuthenticatedHttpClient()
14
+ .get(`${getApiBaseUrl()}/api/instructor/v2/courses/${courseId}/grading-config`);
15
+ return camelCaseObject(data);
16
+ });
17
+ export const postResetAttempts = (courseId, params) => __awaiter(void 0, void 0, void 0, function* () {
18
+ const queryParams = new URLSearchParams();
19
+ if (params.learner) {
20
+ queryParams.append('learner', params.learner);
21
+ }
22
+ const problem = encodeURI(params.problem);
23
+ const { data } = yield getAuthenticatedHttpClient().post(`${getApiBaseUrl()}/api/instructor/v2/courses/${courseId}/${problem}/grading/attempts/reset`, queryParams);
24
+ return camelCaseObject(data);
25
+ });
26
+ export const postRescoreSubmission = (courseId, params) => __awaiter(void 0, void 0, void 0, function* () {
27
+ const queryParams = new URLSearchParams({
28
+ only_if_higher: params.onlyIfHigher.toString(),
29
+ });
30
+ if (params.learner) {
31
+ queryParams.append('learner', params.learner);
32
+ }
33
+ const problem = encodeURI(params.problem);
34
+ const { data } = yield getAuthenticatedHttpClient().post(`${getApiBaseUrl()}/api/instructor/v2/courses/${courseId}/${problem}/grading/scores/rescore`, queryParams);
35
+ return camelCaseObject(data);
36
+ });
37
+ export const deleteState = (courseId, params) => __awaiter(void 0, void 0, void 0, function* () {
38
+ const queryParams = new URLSearchParams();
39
+ if (params.learner) {
40
+ queryParams.append('learner', params.learner);
41
+ }
42
+ const problem = encodeURI(params.problem);
43
+ const { data } = yield getAuthenticatedHttpClient().delete(`${getApiBaseUrl()}/api/instructor/v2/courses/${courseId}/${problem}/grading/state`, {
44
+ data: queryParams,
45
+ });
46
+ return camelCaseObject(data);
47
+ });
48
+ export const changeScore = (courseId, params) => __awaiter(void 0, void 0, void 0, function* () {
49
+ const queryParams = new URLSearchParams({
50
+ new_score: params.newScore.toString(),
51
+ });
52
+ if (params.learner) {
53
+ queryParams.append('learner', params.learner);
54
+ }
55
+ const problem = encodeURI(params.problem);
56
+ const { data } = yield getAuthenticatedHttpClient().put(`${getApiBaseUrl()}/api/instructor/v2/courses/${courseId}/${problem}/grading/scores`, queryParams);
57
+ return camelCaseObject(data);
58
+ });
59
+ //# sourceMappingURL=api.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api.js","sourceRoot":"","sources":["../../../src/grading/data/api.ts"],"names":[],"mappings":"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","sourcesContent":["import { camelCaseObject, getAuthenticatedHttpClient } from '@openedx/frontend-base';\nimport { getApiBaseUrl } from '@src/data/api';\nimport { RescoreParams, GradingParams, ScoreParams } from '../types';\n\nexport const getGradingConfiguration = async (courseId: string) => {\n const { data } = await getAuthenticatedHttpClient()\n .get(`${getApiBaseUrl()}/api/instructor/v2/courses/${courseId}/grading-config`);\n return camelCaseObject(data);\n};\n\nexport const postResetAttempts = async (\n courseId: string,\n params: GradingParams\n): Promise<any> => {\n const queryParams = new URLSearchParams();\n\n if (params.learner) {\n queryParams.append('learner', params.learner);\n }\n\n const problem = encodeURI(params.problem);\n\n const { data } = await getAuthenticatedHttpClient().post(\n `${getApiBaseUrl()}/api/instructor/v2/courses/${courseId}/${problem}/grading/attempts/reset`, queryParams\n );\n return camelCaseObject(data);\n};\n\nexport const postRescoreSubmission = async (\n courseId: string,\n params: RescoreParams\n): Promise<any> => {\n const queryParams = new URLSearchParams({\n only_if_higher: params.onlyIfHigher.toString(),\n });\n\n if (params.learner) {\n queryParams.append('learner', params.learner);\n }\n\n const problem = encodeURI(params.problem);\n\n const { data } = await getAuthenticatedHttpClient().post(\n `${getApiBaseUrl()}/api/instructor/v2/courses/${courseId}/${problem}/grading/scores/rescore`, queryParams\n );\n return camelCaseObject(data);\n};\n\nexport const deleteState = async (\n courseId: string,\n params: GradingParams\n): Promise<any> => {\n const queryParams = new URLSearchParams();\n\n if (params.learner) {\n queryParams.append('learner', params.learner);\n }\n\n const problem = encodeURI(params.problem);\n\n const { data } = await getAuthenticatedHttpClient().delete(\n `${getApiBaseUrl()}/api/instructor/v2/courses/${courseId}/${problem}/grading/state`, {\n data: queryParams,\n }\n );\n return camelCaseObject(data);\n};\n\nexport const changeScore = async (\n courseId: string,\n params: ScoreParams\n): Promise<any> => {\n const queryParams = new URLSearchParams({\n new_score: params.newScore.toString(),\n });\n\n if (params.learner) {\n queryParams.append('learner', params.learner);\n }\n\n const problem = encodeURI(params.problem);\n\n const { data } = await getAuthenticatedHttpClient().put(\n `${getApiBaseUrl()}/api/instructor/v2/courses/${courseId}/${problem}/grading/scores`, queryParams\n );\n return camelCaseObject(data);\n};\n"]}
@@ -0,0 +1,6 @@
1
+ import { GradingParams, RescoreParams, ScoreParams } from '../../grading/types';
2
+ export declare const useGradingConfiguration: (courseId: string) => import("@tanstack/react-query").UseQueryResult<any, Error>;
3
+ export declare const useResetAttempts: (courseId: string) => import("@tanstack/react-query").UseMutationResult<any, Error, GradingParams, unknown>;
4
+ export declare const useRescoreSubmission: (courseId: string) => import("@tanstack/react-query").UseMutationResult<any, Error, RescoreParams, unknown>;
5
+ export declare const useDeleteHistory: (courseId: string) => import("@tanstack/react-query").UseMutationResult<any, Error, GradingParams, unknown>;
6
+ export declare const useChangeScore: (courseId: string) => import("@tanstack/react-query").UseMutationResult<any, Error, ScoreParams, unknown>;
@@ -0,0 +1,29 @@
1
+ import { useMutation, useQuery } from '@tanstack/react-query';
2
+ import { changeScore, deleteState, getGradingConfiguration, postRescoreSubmission, postResetAttempts } from '../../grading/data/api';
3
+ import { gradingQueryKeys } from '../../grading/data/queryKeys';
4
+ export const useGradingConfiguration = (courseId) => (useQuery({
5
+ queryKey: gradingQueryKeys.gradingConfiguration(courseId),
6
+ queryFn: () => getGradingConfiguration(courseId),
7
+ enabled: !!courseId,
8
+ }));
9
+ export const useResetAttempts = (courseId) => {
10
+ return useMutation({
11
+ mutationFn: (params) => postResetAttempts(courseId, params),
12
+ });
13
+ };
14
+ export const useRescoreSubmission = (courseId) => {
15
+ return useMutation({
16
+ mutationFn: (params) => postRescoreSubmission(courseId, params),
17
+ });
18
+ };
19
+ export const useDeleteHistory = (courseId) => {
20
+ return useMutation({
21
+ mutationFn: (params) => deleteState(courseId, params),
22
+ });
23
+ };
24
+ export const useChangeScore = (courseId) => {
25
+ return useMutation({
26
+ mutationFn: (params) => changeScore(courseId, params),
27
+ });
28
+ };
29
+ //# sourceMappingURL=apiHook.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"apiHook.js","sourceRoot":"","sources":["../../../src/grading/data/apiHook.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAC9D,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,uBAAuB,EAAE,qBAAqB,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AACpI,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAG/D,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,QAAgB,EAAE,EAAE,CAAC,CAC3D,QAAQ,CAAC;IACP,QAAQ,EAAE,gBAAgB,CAAC,oBAAoB,CAAC,QAAQ,CAAC;IACzD,OAAO,EAAE,GAAG,EAAE,CAAC,uBAAuB,CAAC,QAAQ,CAAC;IAChD,OAAO,EAAE,CAAC,CAAC,QAAQ;CACpB,CAAC,CACH,CAAC;AAEF,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,QAAgB,EAAE,EAAE;IACnD,OAAO,WAAW,CAAC;QACjB,UAAU,EAAE,CAAC,MAAqB,EAAE,EAAE,CACpC,iBAAiB,CAAC,QAAQ,EAAE,MAAM,CAAC;KACtC,CAAC,CAAC;AACL,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,QAAgB,EAAE,EAAE;IACvD,OAAO,WAAW,CAAC;QACjB,UAAU,EAAE,CAAC,MAAqB,EAAE,EAAE,CACpC,qBAAqB,CAAC,QAAQ,EAAE,MAAM,CAAC;KAC1C,CAAC,CAAC;AACL,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,QAAgB,EAAE,EAAE;IACnD,OAAO,WAAW,CAAC;QACjB,UAAU,EAAE,CAAC,MAAqB,EAAE,EAAE,CACpC,WAAW,CAAC,QAAQ,EAAE,MAAM,CAAC;KAChC,CAAC,CAAC;AACL,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,QAAgB,EAAE,EAAE;IACjD,OAAO,WAAW,CAAC;QACjB,UAAU,EAAE,CAAC,MAAmB,EAAE,EAAE,CAClC,WAAW,CAAC,QAAQ,EAAE,MAAM,CAAC;KAChC,CAAC,CAAC;AACL,CAAC,CAAC","sourcesContent":["import { useMutation, useQuery } from '@tanstack/react-query';\nimport { changeScore, deleteState, getGradingConfiguration, postRescoreSubmission, postResetAttempts } from '@src/grading/data/api';\nimport { gradingQueryKeys } from '@src/grading/data/queryKeys';\nimport { GradingParams, RescoreParams, ScoreParams } from '@src/grading/types';\n\nexport const useGradingConfiguration = (courseId: string) => (\n useQuery({\n queryKey: gradingQueryKeys.gradingConfiguration(courseId),\n queryFn: () => getGradingConfiguration(courseId),\n enabled: !!courseId,\n })\n);\n\nexport const useResetAttempts = (courseId: string) => {\n return useMutation({\n mutationFn: (params: GradingParams) =>\n postResetAttempts(courseId, params),\n });\n};\n\nexport const useRescoreSubmission = (courseId: string) => {\n return useMutation({\n mutationFn: (params: RescoreParams) =>\n postRescoreSubmission(courseId, params),\n });\n};\n\nexport const useDeleteHistory = (courseId: string) => {\n return useMutation({\n mutationFn: (params: GradingParams) =>\n deleteState(courseId, params),\n });\n};\n\nexport const useChangeScore = (courseId: string) => {\n return useMutation({\n mutationFn: (params: ScoreParams) =>\n changeScore(courseId, params),\n });\n};\n"]}
@@ -0,0 +1,9 @@
1
+ export declare const gradingQueryKeys: {
2
+ all: readonly ["org.openedx.frontend.app.instructorDashboard", "grading"];
3
+ byCourse: (courseId: string) => readonly ["org.openedx.frontend.app.instructorDashboard", "grading", string];
4
+ gradingConfiguration: (courseId: string) => readonly ["org.openedx.frontend.app.instructorDashboard", "grading", string, "gradingConfiguration"];
5
+ resetAttempts: (courseId: string, params: {
6
+ learner: string;
7
+ problem: string;
8
+ }) => readonly ["org.openedx.frontend.app.instructorDashboard", "grading", string, "resetAttempts", string, string];
9
+ };
@@ -0,0 +1,8 @@
1
+ import { appId } from '../../constants';
2
+ export const gradingQueryKeys = {
3
+ all: [appId, 'grading'],
4
+ byCourse: (courseId) => [...gradingQueryKeys.all, courseId],
5
+ gradingConfiguration: (courseId) => [...gradingQueryKeys.byCourse(courseId), 'gradingConfiguration'],
6
+ resetAttempts: (courseId, params) => [...gradingQueryKeys.byCourse(courseId), 'resetAttempts', params.learner, params.problem],
7
+ };
8
+ //# sourceMappingURL=queryKeys.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"queryKeys.js","sourceRoot":"","sources":["../../../src/grading/data/queryKeys.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AAEvC,MAAM,CAAC,MAAM,gBAAgB,GAAG;IAC9B,GAAG,EAAE,CAAC,KAAK,EAAE,SAAS,CAAU;IAChC,QAAQ,EAAE,CAAC,QAAgB,EAAE,EAAE,CAAC,CAAC,GAAG,gBAAgB,CAAC,GAAG,EAAE,QAAQ,CAAU;IAC5E,oBAAoB,EAAE,CAAC,QAAgB,EAAE,EAAE,CAAC,CAAC,GAAG,gBAAgB,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,sBAAsB,CAAU;IACrH,aAAa,EAAE,CAAC,QAAgB,EAAE,MAA4C,EAAE,EAAE,CAAC,CAAC,GAAG,gBAAgB,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,eAAe,EAAE,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,OAAO,CAAU;CACtL,CAAC","sourcesContent":["import { appId } from '@src/constants';\n\nexport const gradingQueryKeys = {\n all: [appId, 'grading'] as const,\n byCourse: (courseId: string) => [...gradingQueryKeys.all, courseId] as const,\n gradingConfiguration: (courseId: string) => [...gradingQueryKeys.byCourse(courseId), 'gradingConfiguration'] as const,\n resetAttempts: (courseId: string, params: { learner: string, problem: string }) => [...gradingQueryKeys.byCourse(courseId), 'resetAttempts', params.learner, params.problem] as const,\n};\n"]}
@@ -0,0 +1,248 @@
1
+ declare const messages: {
2
+ pageTitle: {
3
+ id: string;
4
+ defaultMessage: string;
5
+ description: string;
6
+ };
7
+ configurationAlt: {
8
+ id: string;
9
+ defaultMessage: string;
10
+ description: string;
11
+ };
12
+ viewGradebook: {
13
+ id: string;
14
+ defaultMessage: string;
15
+ description: string;
16
+ };
17
+ singleLearner: {
18
+ id: string;
19
+ defaultMessage: string;
20
+ description: string;
21
+ };
22
+ allLearners: {
23
+ id: string;
24
+ defaultMessage: string;
25
+ description: string;
26
+ };
27
+ descriptionSingleLearner: {
28
+ id: string;
29
+ defaultMessage: string;
30
+ description: string;
31
+ };
32
+ descriptionAllLearners: {
33
+ id: string;
34
+ defaultMessage: string;
35
+ description: string;
36
+ };
37
+ gradingConfiguration: {
38
+ id: string;
39
+ defaultMessage: string;
40
+ description: string;
41
+ };
42
+ close: {
43
+ id: string;
44
+ defaultMessage: string;
45
+ description: string;
46
+ };
47
+ viewGradingConfiguration: {
48
+ id: string;
49
+ defaultMessage: string;
50
+ description: string;
51
+ };
52
+ viewCourseGradingSettings: {
53
+ id: string;
54
+ defaultMessage: string;
55
+ description: string;
56
+ };
57
+ noGradingConfiguration: {
58
+ id: string;
59
+ defaultMessage: string;
60
+ description: string;
61
+ };
62
+ resetAttempts: {
63
+ id: string;
64
+ defaultMessage: string;
65
+ description: string;
66
+ };
67
+ resetAttemptsDescription: {
68
+ id: string;
69
+ defaultMessage: string;
70
+ description: string;
71
+ };
72
+ resetAttemptsButtonLabel: {
73
+ id: string;
74
+ defaultMessage: string;
75
+ description: string;
76
+ };
77
+ rescoreSubmission: {
78
+ id: string;
79
+ defaultMessage: string;
80
+ description: string;
81
+ };
82
+ rescoreSubmissionDescription: {
83
+ id: string;
84
+ defaultMessage: string;
85
+ description: string;
86
+ };
87
+ rescoreSubmissionButtonLabel: {
88
+ id: string;
89
+ defaultMessage: string;
90
+ description: string;
91
+ };
92
+ rescoreIfImprovesScoreButtonLabel: {
93
+ id: string;
94
+ defaultMessage: string;
95
+ description: string;
96
+ };
97
+ overrideScore: {
98
+ id: string;
99
+ defaultMessage: string;
100
+ description: string;
101
+ };
102
+ overrideScoreDescription: {
103
+ id: string;
104
+ defaultMessage: string;
105
+ description: string;
106
+ };
107
+ overrideScoreButtonLabel: {
108
+ id: string;
109
+ defaultMessage: string;
110
+ description: string;
111
+ };
112
+ deleteHistory: {
113
+ id: string;
114
+ defaultMessage: string;
115
+ description: string;
116
+ };
117
+ deleteHistoryDescription: {
118
+ id: string;
119
+ defaultMessage: string;
120
+ description: string;
121
+ };
122
+ deleteHistoryButtonLabel: {
123
+ id: string;
124
+ defaultMessage: string;
125
+ description: string;
126
+ };
127
+ taskStatus: {
128
+ id: string;
129
+ defaultMessage: string;
130
+ description: string;
131
+ };
132
+ taskStatusDescription: {
133
+ id: string;
134
+ defaultMessage: string;
135
+ description: string;
136
+ };
137
+ taskStatusButtonLabel: {
138
+ id: string;
139
+ defaultMessage: string;
140
+ description: string;
141
+ };
142
+ specifyProblem: {
143
+ id: string;
144
+ defaultMessage: string;
145
+ description: string;
146
+ };
147
+ select: {
148
+ id: string;
149
+ defaultMessage: string;
150
+ description: string;
151
+ };
152
+ overrideScorePlaceholder: {
153
+ id: string;
154
+ defaultMessage: string;
155
+ description: string;
156
+ };
157
+ resetAllLearnersAttemptsDescription: {
158
+ id: string;
159
+ defaultMessage: string;
160
+ description: string;
161
+ };
162
+ rescoreSubmissionAllLearnersDescription: {
163
+ id: string;
164
+ defaultMessage: string;
165
+ description: string;
166
+ };
167
+ rescoreAllSubmissionButtonLabel: {
168
+ id: string;
169
+ defaultMessage: string;
170
+ description: string;
171
+ };
172
+ currentScore: {
173
+ id: string;
174
+ defaultMessage: string;
175
+ description: string;
176
+ };
177
+ viewProgress: {
178
+ id: string;
179
+ defaultMessage: string;
180
+ description: string;
181
+ };
182
+ score: {
183
+ id: string;
184
+ defaultMessage: string;
185
+ description: string;
186
+ };
187
+ attempts: {
188
+ id: string;
189
+ defaultMessage: string;
190
+ description: string;
191
+ };
192
+ rescore: {
193
+ id: string;
194
+ defaultMessage: string;
195
+ description: string;
196
+ };
197
+ resetAttemptsConfirmation: {
198
+ id: string;
199
+ defaultMessage: string;
200
+ description: string;
201
+ };
202
+ overrideScoreConfirmation: {
203
+ id: string;
204
+ defaultMessage: string;
205
+ description: string;
206
+ };
207
+ deleteStateConfirmation: {
208
+ id: string;
209
+ defaultMessage: string;
210
+ description: string;
211
+ };
212
+ rescoreConfirmation: {
213
+ id: string;
214
+ defaultMessage: string;
215
+ description: string;
216
+ };
217
+ deleteStateButtonLabel: {
218
+ id: string;
219
+ defaultMessage: string;
220
+ description: string;
221
+ };
222
+ resetAttemptsSuccess: {
223
+ id: string;
224
+ defaultMessage: string;
225
+ description: string;
226
+ };
227
+ overrideScoreSuccess: {
228
+ id: string;
229
+ defaultMessage: string;
230
+ description: string;
231
+ };
232
+ rescoreSubmissionSuccess: {
233
+ id: string;
234
+ defaultMessage: string;
235
+ description: string;
236
+ };
237
+ deleteHistorySuccess: {
238
+ id: string;
239
+ defaultMessage: string;
240
+ description: string;
241
+ };
242
+ unexpectedError: {
243
+ id: string;
244
+ defaultMessage: string;
245
+ description: string;
246
+ };
247
+ };
248
+ export default messages;