@openedx/frontend-app-instructor-dashboard 1.0.0-alpha.0

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 (299) hide show
  1. package/LICENSE +661 -0
  2. package/README.rst +235 -0
  3. package/dist/Main.d.ts +3 -0
  4. package/dist/Main.js +13 -0
  5. package/dist/Main.js.map +1 -0
  6. package/dist/app.d.ts +3 -0
  7. package/dist/app.js +18 -0
  8. package/dist/app.js.map +1 -0
  9. package/dist/app.scss +10 -0
  10. package/dist/certificates/CertificatesPage.d.ts +2 -0
  11. package/dist/certificates/CertificatesPage.js +6 -0
  12. package/dist/certificates/CertificatesPage.js.map +1 -0
  13. package/dist/cohorts/CohortsPage.d.ts +3 -0
  14. package/dist/cohorts/CohortsPage.js +41 -0
  15. package/dist/cohorts/CohortsPage.js.map +1 -0
  16. package/dist/cohorts/CohortsPage.scss +14 -0
  17. package/dist/cohorts/components/CohortCard.d.ts +6 -0
  18. package/dist/cohorts/components/CohortCard.js +53 -0
  19. package/dist/cohorts/components/CohortCard.js.map +1 -0
  20. package/dist/cohorts/components/CohortContext.d.ts +14 -0
  21. package/dist/cohorts/components/CohortContext.js +46 -0
  22. package/dist/cohorts/components/CohortContext.js.map +1 -0
  23. package/dist/cohorts/components/CohortsForm.d.ts +11 -0
  24. package/dist/cohorts/components/CohortsForm.js +58 -0
  25. package/dist/cohorts/components/CohortsForm.js.map +1 -0
  26. package/dist/cohorts/components/DisableCohortsModal.d.ts +7 -0
  27. package/dist/cohorts/components/DisableCohortsModal.js +10 -0
  28. package/dist/cohorts/components/DisableCohortsModal.js.map +1 -0
  29. package/dist/cohorts/components/DisabledCohortsView.d.ts +5 -0
  30. package/dist/cohorts/components/DisabledCohortsView.js +10 -0
  31. package/dist/cohorts/components/DisabledCohortsView.js.map +1 -0
  32. package/dist/cohorts/components/EnabledCohortsView.d.ts +2 -0
  33. package/dist/cohorts/components/EnabledCohortsView.js +96 -0
  34. package/dist/cohorts/components/EnabledCohortsView.js.map +1 -0
  35. package/dist/cohorts/components/ManageLearners.d.ts +2 -0
  36. package/dist/cohorts/components/ManageLearners.js +64 -0
  37. package/dist/cohorts/components/ManageLearners.js.map +1 -0
  38. package/dist/cohorts/components/SelectedCohortInfo.d.ts +2 -0
  39. package/dist/cohorts/components/SelectedCohortInfo.js +43 -0
  40. package/dist/cohorts/components/SelectedCohortInfo.js.map +1 -0
  41. package/dist/cohorts/constants.d.ts +4 -0
  42. package/dist/cohorts/constants.js +5 -0
  43. package/dist/cohorts/constants.js.map +1 -0
  44. package/dist/cohorts/data/api.d.ts +9 -0
  45. package/dist/cohorts/data/api.js +54 -0
  46. package/dist/cohorts/data/api.js.map +1 -0
  47. package/dist/cohorts/data/apiHook.d.ts +14 -0
  48. package/dist/cohorts/data/apiHook.js +64 -0
  49. package/dist/cohorts/data/apiHook.js.map +1 -0
  50. package/dist/cohorts/data/queryKeys.d.ts +7 -0
  51. package/dist/cohorts/data/queryKeys.js +9 -0
  52. package/dist/cohorts/data/queryKeys.js.map +1 -0
  53. package/dist/cohorts/messages.d.ts +233 -0
  54. package/dist/cohorts/messages.js +235 -0
  55. package/dist/cohorts/messages.js.map +1 -0
  56. package/dist/cohorts/types.d.ts +15 -0
  57. package/dist/cohorts/types.js +2 -0
  58. package/dist/cohorts/types.js.map +1 -0
  59. package/dist/components/ActionCard.d.ts +11 -0
  60. package/dist/components/ActionCard.js +7 -0
  61. package/dist/components/ActionCard.js.map +1 -0
  62. package/dist/components/CSVComponent.d.ts +10 -0
  63. package/dist/components/CSVComponent.js +21 -0
  64. package/dist/components/CSVComponent.js.map +1 -0
  65. package/dist/components/ObjectCell.d.ts +5 -0
  66. package/dist/components/ObjectCell.js +7 -0
  67. package/dist/components/ObjectCell.js.map +1 -0
  68. package/dist/components/PageNotFound.d.ts +2 -0
  69. package/dist/components/PageNotFound.js +12 -0
  70. package/dist/components/PageNotFound.js.map +1 -0
  71. package/dist/components/PendingTasks.d.ts +5 -0
  72. package/dist/components/PendingTasks.js +38 -0
  73. package/dist/components/PendingTasks.js.map +1 -0
  74. package/dist/components/SpecifyLearnerField.d.ts +5 -0
  75. package/dist/components/SpecifyLearnerField.js +10 -0
  76. package/dist/components/SpecifyLearnerField.js.map +1 -0
  77. package/dist/components/messages.d.ts +108 -0
  78. package/dist/components/messages.js +110 -0
  79. package/dist/components/messages.js.map +1 -0
  80. package/dist/constants.d.ts +1 -0
  81. package/dist/constants.js +2 -0
  82. package/dist/constants.js.map +1 -0
  83. package/dist/courseInfo/CourseInfoPage.d.ts +2 -0
  84. package/dist/courseInfo/CourseInfoPage.js +7 -0
  85. package/dist/courseInfo/CourseInfoPage.js.map +1 -0
  86. package/dist/courseInfo/components/EnrollmentSummary/EnrollmentCounter.d.ts +8 -0
  87. package/dist/courseInfo/components/EnrollmentSummary/EnrollmentCounter.js +13 -0
  88. package/dist/courseInfo/components/EnrollmentSummary/EnrollmentCounter.js.map +1 -0
  89. package/dist/courseInfo/components/EnrollmentSummary/EnrollmentSummary.d.ts +2 -0
  90. package/dist/courseInfo/components/EnrollmentSummary/EnrollmentSummary.js +24 -0
  91. package/dist/courseInfo/components/EnrollmentSummary/EnrollmentSummary.js.map +1 -0
  92. package/dist/courseInfo/components/EnrollmentSummary/index.d.ts +2 -0
  93. package/dist/courseInfo/components/EnrollmentSummary/index.js +3 -0
  94. package/dist/courseInfo/components/EnrollmentSummary/index.js.map +1 -0
  95. package/dist/courseInfo/components/EnrollmentSummary/messages.d.ts +83 -0
  96. package/dist/courseInfo/components/EnrollmentSummary/messages.js +85 -0
  97. package/dist/courseInfo/components/EnrollmentSummary/messages.js.map +1 -0
  98. package/dist/courseInfo/components/EnrollmentSummary/utils.d.ts +1 -0
  99. package/dist/courseInfo/components/EnrollmentSummary/utils.js +9 -0
  100. package/dist/courseInfo/components/EnrollmentSummary/utils.js.map +1 -0
  101. package/dist/courseInfo/components/generalCourseInfo/GeneralCourseInfo.d.ts +2 -0
  102. package/dist/courseInfo/components/generalCourseInfo/GeneralCourseInfo.js +46 -0
  103. package/dist/courseInfo/components/generalCourseInfo/GeneralCourseInfo.js.map +1 -0
  104. package/dist/courseInfo/components/generalCourseInfo/StatusBadge.d.ts +5 -0
  105. package/dist/courseInfo/components/generalCourseInfo/StatusBadge.js +15 -0
  106. package/dist/courseInfo/components/generalCourseInfo/StatusBadge.js.map +1 -0
  107. package/dist/courseInfo/components/generalCourseInfo/index.d.ts +1 -0
  108. package/dist/courseInfo/components/generalCourseInfo/index.js +2 -0
  109. package/dist/courseInfo/components/generalCourseInfo/index.js.map +1 -0
  110. package/dist/courseInfo/components/generalCourseInfo/messages.d.ts +8 -0
  111. package/dist/courseInfo/components/generalCourseInfo/messages.js +10 -0
  112. package/dist/courseInfo/components/generalCourseInfo/messages.js.map +1 -0
  113. package/dist/courseInfo/messages.d.ts +8 -0
  114. package/dist/courseInfo/messages.js +10 -0
  115. package/dist/courseInfo/messages.js.map +1 -0
  116. package/dist/courseInfo/types.d.ts +27 -0
  117. package/dist/courseInfo/types.js +2 -0
  118. package/dist/courseInfo/types.js.map +1 -0
  119. package/dist/courseTeam/CourseTeamPage.d.ts +2 -0
  120. package/dist/courseTeam/CourseTeamPage.js +6 -0
  121. package/dist/courseTeam/CourseTeamPage.js.map +1 -0
  122. package/dist/data/api.d.ts +14 -0
  123. package/dist/data/api.js +33 -0
  124. package/dist/data/api.js.map +1 -0
  125. package/dist/data/apiHook.d.ts +4 -0
  126. package/dist/data/apiHook.js +28 -0
  127. package/dist/data/apiHook.js.map +1 -0
  128. package/dist/data/queryKeys.d.ts +8 -0
  129. package/dist/data/queryKeys.js +10 -0
  130. package/dist/data/queryKeys.js.map +1 -0
  131. package/dist/dataDownloads/DataDownloadsPage.d.ts +2 -0
  132. package/dist/dataDownloads/DataDownloadsPage.js +162 -0
  133. package/dist/dataDownloads/DataDownloadsPage.js.map +1 -0
  134. package/dist/dataDownloads/components/DataDownloadTable.d.ts +8 -0
  135. package/dist/dataDownloads/components/DataDownloadTable.js +42 -0
  136. package/dist/dataDownloads/components/DataDownloadTable.js.map +1 -0
  137. package/dist/dataDownloads/components/DownloadLinkCell.d.ts +6 -0
  138. package/dist/dataDownloads/components/DownloadLinkCell.js +13 -0
  139. package/dist/dataDownloads/components/DownloadLinkCell.js.map +1 -0
  140. package/dist/dataDownloads/components/GenerateReports.d.ts +8 -0
  141. package/dist/dataDownloads/components/GenerateReports.js +20 -0
  142. package/dist/dataDownloads/components/GenerateReports.js.map +1 -0
  143. package/dist/dataDownloads/components/ReportNameCell.d.ts +3 -0
  144. package/dist/dataDownloads/components/ReportNameCell.js +6 -0
  145. package/dist/dataDownloads/components/ReportNameCell.js.map +1 -0
  146. package/dist/dataDownloads/data/api.d.ts +2 -0
  147. package/dist/dataDownloads/data/api.js +23 -0
  148. package/dist/dataDownloads/data/api.js.map +1 -0
  149. package/dist/dataDownloads/data/apiHook.d.ts +7 -0
  150. package/dist/dataDownloads/data/apiHook.js +22 -0
  151. package/dist/dataDownloads/data/apiHook.js.map +1 -0
  152. package/dist/dataDownloads/data/queryKeys.d.ts +5 -0
  153. package/dist/dataDownloads/data/queryKeys.js +7 -0
  154. package/dist/dataDownloads/data/queryKeys.js.map +1 -0
  155. package/dist/dataDownloads/messages.d.ts +338 -0
  156. package/dist/dataDownloads/messages.js +341 -0
  157. package/dist/dataDownloads/messages.js.map +1 -0
  158. package/dist/dataDownloads/types.d.ts +8 -0
  159. package/dist/dataDownloads/types.js +2 -0
  160. package/dist/dataDownloads/types.js.map +1 -0
  161. package/dist/dataDownloads/utils.d.ts +26 -0
  162. package/dist/dataDownloads/utils.js +49 -0
  163. package/dist/dataDownloads/utils.js.map +1 -0
  164. package/dist/dateExtensions/DateExtensionsPage.d.ts +2 -0
  165. package/dist/dateExtensions/DateExtensionsPage.js +87 -0
  166. package/dist/dateExtensions/DateExtensionsPage.js.map +1 -0
  167. package/dist/dateExtensions/components/AddExtensionModal.d.ts +13 -0
  168. package/dist/dateExtensions/components/AddExtensionModal.js +34 -0
  169. package/dist/dateExtensions/components/AddExtensionModal.js.map +1 -0
  170. package/dist/dateExtensions/components/DateExtensionsList.d.ts +7 -0
  171. package/dist/dateExtensions/components/DateExtensionsList.js +103 -0
  172. package/dist/dateExtensions/components/DateExtensionsList.js.map +1 -0
  173. package/dist/dateExtensions/components/ResetExtensionsModal.d.ts +10 -0
  174. package/dist/dateExtensions/components/ResetExtensionsModal.js +10 -0
  175. package/dist/dateExtensions/components/ResetExtensionsModal.js.map +1 -0
  176. package/dist/dateExtensions/components/SelectGradedSubsection.d.ts +8 -0
  177. package/dist/dateExtensions/components/SelectGradedSubsection.js +15 -0
  178. package/dist/dateExtensions/components/SelectGradedSubsection.js.map +1 -0
  179. package/dist/dateExtensions/data/api.d.ts +6 -0
  180. package/dist/dateExtensions/data/api.js +40 -0
  181. package/dist/dateExtensions/data/api.js.map +1 -0
  182. package/dist/dateExtensions/data/apiHook.d.ts +11 -0
  183. package/dist/dateExtensions/data/apiHook.js +31 -0
  184. package/dist/dateExtensions/data/apiHook.js.map +1 -0
  185. package/dist/dateExtensions/data/queryKeys.d.ts +10 -0
  186. package/dist/dateExtensions/data/queryKeys.js +17 -0
  187. package/dist/dateExtensions/data/queryKeys.js.map +1 -0
  188. package/dist/dateExtensions/messages.d.ts +128 -0
  189. package/dist/dateExtensions/messages.js +130 -0
  190. package/dist/dateExtensions/messages.js.map +1 -0
  191. package/dist/dateExtensions/types.d.ts +24 -0
  192. package/dist/dateExtensions/types.js +2 -0
  193. package/dist/dateExtensions/types.js.map +1 -0
  194. package/dist/enrollments/EnrollmentsPage.d.ts +2 -0
  195. package/dist/enrollments/EnrollmentsPage.js +32 -0
  196. package/dist/enrollments/EnrollmentsPage.js.map +1 -0
  197. package/dist/enrollments/components/EnrollmentStatusModal.d.ts +6 -0
  198. package/dist/enrollments/components/EnrollmentStatusModal.js +23 -0
  199. package/dist/enrollments/components/EnrollmentStatusModal.js.map +1 -0
  200. package/dist/enrollments/components/EnrollmentsList.d.ts +6 -0
  201. package/dist/enrollments/components/EnrollmentsList.js +99 -0
  202. package/dist/enrollments/components/EnrollmentsList.js.map +1 -0
  203. package/dist/enrollments/components/UnenrollModal.d.ts +8 -0
  204. package/dist/enrollments/components/UnenrollModal.js +7 -0
  205. package/dist/enrollments/components/UnenrollModal.js.map +1 -0
  206. package/dist/enrollments/data/api.d.ts +4 -0
  207. package/dist/enrollments/data/api.js +32 -0
  208. package/dist/enrollments/data/api.js.map +1 -0
  209. package/dist/enrollments/data/apiHook.d.ts +3 -0
  210. package/dist/enrollments/data/apiHook.js +14 -0
  211. package/dist/enrollments/data/apiHook.js.map +1 -0
  212. package/dist/enrollments/data/queryKeys.d.ts +7 -0
  213. package/dist/enrollments/data/queryKeys.js +8 -0
  214. package/dist/enrollments/data/queryKeys.js.map +1 -0
  215. package/dist/enrollments/messages.d.ts +108 -0
  216. package/dist/enrollments/messages.js +110 -0
  217. package/dist/enrollments/messages.js.map +1 -0
  218. package/dist/enrollments/types.d.ts +15 -0
  219. package/dist/enrollments/types.js +2 -0
  220. package/dist/enrollments/types.js.map +1 -0
  221. package/dist/grading/GradingPage.d.ts +2 -0
  222. package/dist/grading/GradingPage.js +6 -0
  223. package/dist/grading/GradingPage.js.map +1 -0
  224. package/dist/hooks/useDebouncedFilter.d.ts +16 -0
  225. package/dist/hooks/useDebouncedFilter.js +27 -0
  226. package/dist/hooks/useDebouncedFilter.js.map +1 -0
  227. package/dist/i18n/index.d.ts +25 -0
  228. package/dist/i18n/index.js +26 -0
  229. package/dist/i18n/index.js.map +1 -0
  230. package/dist/index.d.ts +3 -0
  231. package/dist/index.js +4 -0
  232. package/dist/index.js.map +1 -0
  233. package/dist/instructorNav/InstructorNav.d.ts +8 -0
  234. package/dist/instructorNav/InstructorNav.js +42 -0
  235. package/dist/instructorNav/InstructorNav.js.map +1 -0
  236. package/dist/openResponses/OpenResponsesPage.d.ts +2 -0
  237. package/dist/openResponses/OpenResponsesPage.js +8 -0
  238. package/dist/openResponses/OpenResponsesPage.js.map +1 -0
  239. package/dist/openResponses/components/DetailAssessmentsList.d.ts +2 -0
  240. package/dist/openResponses/components/DetailAssessmentsList.js +44 -0
  241. package/dist/openResponses/components/DetailAssessmentsList.js.map +1 -0
  242. package/dist/openResponses/components/OpenResponsesSummary.d.ts +2 -0
  243. package/dist/openResponses/components/OpenResponsesSummary.js +30 -0
  244. package/dist/openResponses/components/OpenResponsesSummary.js.map +1 -0
  245. package/dist/openResponses/data/api.d.ts +4 -0
  246. package/dist/openResponses/data/api.js +23 -0
  247. package/dist/openResponses/data/api.js.map +1 -0
  248. package/dist/openResponses/data/apiHook.d.ts +2 -0
  249. package/dist/openResponses/data/apiHook.js +14 -0
  250. package/dist/openResponses/data/apiHook.js.map +1 -0
  251. package/dist/openResponses/data/queryKeys.d.ts +6 -0
  252. package/dist/openResponses/data/queryKeys.js +8 -0
  253. package/dist/openResponses/data/queryKeys.js.map +1 -0
  254. package/dist/openResponses/messages.d.ts +83 -0
  255. package/dist/openResponses/messages.js +85 -0
  256. package/dist/openResponses/messages.js.map +1 -0
  257. package/dist/openResponses/types.d.ts +12 -0
  258. package/dist/openResponses/types.js +2 -0
  259. package/dist/openResponses/types.js.map +1 -0
  260. package/dist/pageWrapper/PageWrapper.d.ts +4 -0
  261. package/dist/pageWrapper/PageWrapper.js +11 -0
  262. package/dist/pageWrapper/PageWrapper.js.map +1 -0
  263. package/dist/pageWrapper/messages.d.ts +8 -0
  264. package/dist/pageWrapper/messages.js +10 -0
  265. package/dist/pageWrapper/messages.js.map +1 -0
  266. package/dist/providers/AlertProvider.d.ts +41 -0
  267. package/dist/providers/AlertProvider.js +117 -0
  268. package/dist/providers/AlertProvider.js.map +1 -0
  269. package/dist/providers/QueryProvider.d.ts +6 -0
  270. package/dist/providers/QueryProvider.js +16 -0
  271. package/dist/providers/QueryProvider.js.map +1 -0
  272. package/dist/providers.d.ts +3 -0
  273. package/dist/providers.js +8 -0
  274. package/dist/providers.js.map +1 -0
  275. package/dist/routes.d.ts +20 -0
  276. package/dist/routes.js +72 -0
  277. package/dist/routes.js.map +1 -0
  278. package/dist/slots/PlaceholderSlot/PlaceholderSlot.d.ts +1 -0
  279. package/dist/slots/PlaceholderSlot/PlaceholderSlot.js +6 -0
  280. package/dist/slots/PlaceholderSlot/PlaceholderSlot.js.map +1 -0
  281. package/dist/slots/SlotUtils.d.ts +3 -0
  282. package/dist/slots/SlotUtils.js +17 -0
  283. package/dist/slots/SlotUtils.js.map +1 -0
  284. package/dist/slots.d.ts +3 -0
  285. package/dist/slots.js +3 -0
  286. package/dist/slots.js.map +1 -0
  287. package/dist/specialExams/SpecialExamsPage.d.ts +2 -0
  288. package/dist/specialExams/SpecialExamsPage.js +6 -0
  289. package/dist/specialExams/SpecialExamsPage.js.map +1 -0
  290. package/dist/testUtils.d.ts +4 -0
  291. package/dist/testUtils.js +24 -0
  292. package/dist/testUtils.js.map +1 -0
  293. package/dist/types/index.d.ts +40 -0
  294. package/dist/types/index.js +4 -0
  295. package/dist/types/index.js.map +1 -0
  296. package/dist/utils/formatters.d.ts +1 -0
  297. package/dist/utils/formatters.js +12 -0
  298. package/dist/utils/formatters.js.map +1 -0
  299. package/package.json +79 -0
@@ -0,0 +1,13 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { useIntl } from '@openedx/frontend-base';
3
+ import { Button } from '@openedx/paragon';
4
+ import messages from '../../dataDownloads/messages';
5
+ const DownloadLinkCell = ({ row, onDownloadClick }) => {
6
+ var _a, _b, _c, _d;
7
+ const intl = useIntl();
8
+ const downloadLink = (_b = (_a = row.original) === null || _a === void 0 ? void 0 : _a.downloadLink) !== null && _b !== void 0 ? _b : '';
9
+ const reportName = (_d = (_c = row.original) === null || _c === void 0 ? void 0 : _c.reportName) !== null && _d !== void 0 ? _d : '';
10
+ return (_jsx(Button, { variant: "link", size: "sm", onClick: () => onDownloadClick(downloadLink, reportName), children: intl.formatMessage(messages.downloadLinkLabel) }));
11
+ };
12
+ export { DownloadLinkCell };
13
+ //# sourceMappingURL=DownloadLinkCell.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DownloadLinkCell.js","sourceRoot":"","sources":["../../../src/dataDownloads/components/DownloadLinkCell.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AACjD,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC1C,OAAO,QAAQ,MAAM,6BAA6B,CAAC;AAOnD,MAAM,gBAAgB,GAAG,CAAC,EAAE,GAAG,EAAE,eAAe,EAAyB,EAAE,EAAE;;IAC3E,MAAM,IAAI,GAAG,OAAO,EAAE,CAAC;IACvB,MAAM,YAAY,GAAG,MAAA,MAAA,GAAG,CAAC,QAAQ,0CAAE,YAAY,mCAAI,EAAE,CAAC;IACtD,MAAM,UAAU,GAAG,MAAA,MAAA,GAAG,CAAC,QAAQ,0CAAE,UAAU,mCAAI,EAAE,CAAC;IAElD,OAAO,CACL,KAAC,MAAM,IAAC,OAAO,EAAC,MAAM,EAAC,IAAI,EAAC,IAAI,EAAC,OAAO,EAAE,GAAG,EAAE,CAAC,eAAe,CAAC,YAAY,EAAE,UAAU,CAAC,YACtF,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,iBAAiB,CAAC,GACxC,CACV,CAAC;AACJ,CAAC,CAAC;AAEF,OAAO,EAAE,gBAAgB,EAAE,CAAC","sourcesContent":["import { useIntl } from '@openedx/frontend-base';\nimport { Button } from '@openedx/paragon';\nimport messages from '@src/dataDownloads/messages';\nimport { DataDownloadsCellProps } from '@src/dataDownloads/types';\n\ninterface DownloadLinkCellProps extends DataDownloadsCellProps {\n onDownloadClick: (downloadLink: string, reportName: string) => void,\n}\n\nconst DownloadLinkCell = ({ row, onDownloadClick }: DownloadLinkCellProps) => {\n const intl = useIntl();\n const downloadLink = row.original?.downloadLink ?? '';\n const reportName = row.original?.reportName ?? '';\n\n return (\n <Button variant=\"link\" size=\"sm\" onClick={() => onDownloadClick(downloadLink, reportName)}>\n {intl.formatMessage(messages.downloadLinkLabel)}\n </Button>\n );\n};\n\nexport { DownloadLinkCell };\n"]}
@@ -0,0 +1,8 @@
1
+ interface GenerateReportsProps {
2
+ onGenerateReport: (reportType: string) => void;
3
+ onGenerateProblemResponsesReport: (problemLocation?: string) => void;
4
+ isGenerating: boolean;
5
+ problemResponsesError?: string;
6
+ }
7
+ declare const GenerateReports: ({ onGenerateReport, onGenerateProblemResponsesReport, isGenerating, problemResponsesError, }: GenerateReportsProps) => import("react/jsx-runtime").JSX.Element;
8
+ export { GenerateReports };
@@ -0,0 +1,20 @@
1
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
+ import { Button, Tabs, Tab, Form, Card, Icon, OverlayTrigger, Tooltip } from '@openedx/paragon';
3
+ import { InfoOutline } from '@openedx/paragon/icons';
4
+ import { useIntl } from '@openedx/frontend-base';
5
+ import { useState, useCallback } from 'react';
6
+ import messages from '../../dataDownloads/messages';
7
+ const ReportSection = ({ titleMessage, descriptionMessage, buttonMessage, onGenerate, isFirst = false, isLast = false, isGenerating, }) => {
8
+ const intl = useIntl();
9
+ return (_jsxs("div", { className: `d-lg-flex justify-content-between align-items-center ${isFirst ? 'pt-2.5' : 'pt-4.5'} pb-3.5 ${!isLast ? 'border-bottom' : ''}`, children: [_jsxs("div", { className: "mr-lg-3", children: [_jsx("h4", { className: "text-primary-700", children: intl.formatMessage(titleMessage) }), _jsx("p", { className: "text-primary-700 m-lg-0", children: intl.formatMessage(descriptionMessage) })] }), _jsx(Button, { variant: "primary", onClick: onGenerate, disabled: isGenerating, className: "text-nowrap", children: intl.formatMessage(buttonMessage) })] }));
10
+ };
11
+ const GenerateReports = ({ onGenerateReport, onGenerateProblemResponsesReport, isGenerating, problemResponsesError, }) => {
12
+ const intl = useIntl();
13
+ const [problemLocation, setProblemLocation] = useState('');
14
+ const handleGenerateProblemResponsesReport = useCallback(() => {
15
+ onGenerateProblemResponsesReport(problemLocation || undefined);
16
+ }, [onGenerateProblemResponsesReport, problemLocation]);
17
+ return (_jsxs(_Fragment, { children: [_jsx("h3", { id: "generate-reports", className: "mt-4 text-primary-700", children: intl.formatMessage(messages.generateReportsTitle) }), _jsx("p", { className: "text-primary-700", children: intl.formatMessage(messages.generateReportsDescription) }), _jsx(Card, { variant: "muted", children: _jsxs(Tabs, { defaultActiveKey: "enrollment", className: "mb-3", children: [_jsx(Tab, { eventKey: "enrollment", title: intl.formatMessage(messages.enrollmentReportsTabTitle), children: _jsxs("div", { className: "d-flex flex-column px-3.5", children: [_jsx(ReportSection, { titleMessage: messages.enrolledStudentsReportTitle, descriptionMessage: messages.enrolledStudentsReportDescription, buttonMessage: messages.generateEnrolledStudentsReport, onGenerate: () => onGenerateReport('enrolled_students'), isFirst: true, isGenerating: isGenerating }), _jsx(ReportSection, { titleMessage: messages.pendingEnrollmentsReportTitle, descriptionMessage: messages.pendingEnrollmentsReportDescription, buttonMessage: messages.generatePendingEnrollmentsReport, onGenerate: () => onGenerateReport('pending_enrollments'), isGenerating: isGenerating }), _jsx(ReportSection, { titleMessage: messages.pendingActivationsReportTitle, descriptionMessage: messages.pendingActivationsReportDescription, buttonMessage: messages.generatePendingActivationsReport, onGenerate: () => onGenerateReport('pending_activations'), isGenerating: isGenerating }), _jsx(ReportSection, { titleMessage: messages.anonymizedStudentIdsReportTitle, descriptionMessage: messages.anonymizedStudentIdsReportDescription, buttonMessage: messages.generateAnonymizedStudentIdsReport, onGenerate: () => onGenerateReport('anonymized_student_ids'), isLast: true, isGenerating: isGenerating })] }) }), _jsx(Tab, { eventKey: "grading", title: intl.formatMessage(messages.gradingReportsTabTitle), children: _jsxs("div", { className: "d-flex flex-column px-3.5", children: [_jsx(ReportSection, { titleMessage: messages.gradeReportTitle, descriptionMessage: messages.gradeReportDescription, buttonMessage: messages.generateGradeReport, onGenerate: () => onGenerateReport('grade'), isFirst: true, isGenerating: isGenerating }), _jsx(ReportSection, { titleMessage: messages.problemGradeReportTitle, descriptionMessage: messages.problemGradeReportDescription, buttonMessage: messages.generateProblemGradeReport, onGenerate: () => onGenerateReport('problem_grade'), isLast: true, isGenerating: isGenerating })] }) }), _jsx(Tab, { eventKey: "problemResponse", title: intl.formatMessage(messages.problemResponseReportsTabTitle), children: _jsxs("div", { className: "d-flex flex-column px-3.5", children: [_jsx(ReportSection, { titleMessage: messages.ora2SummaryReportTitle, descriptionMessage: messages.ora2SummaryReportDescription, buttonMessage: messages.generateOra2SummaryReport, onGenerate: () => onGenerateReport('ora2_summary'), isFirst: true, isGenerating: isGenerating }), _jsx(ReportSection, { titleMessage: messages.ora2DataReportTitle, descriptionMessage: messages.ora2DataReportDescription, buttonMessage: messages.generateOra2DataReport, onGenerate: () => onGenerateReport('ora2_data'), isGenerating: isGenerating }), _jsx(ReportSection, { titleMessage: messages.submissionFilesArchiveTitle, descriptionMessage: messages.submissionFilesArchiveDescription, buttonMessage: messages.generateSubmissionFilesArchive, onGenerate: () => onGenerateReport('ora2_submission_files'), isGenerating: isGenerating }), _jsxs("div", { className: "pt-4.5 pb-3.5 d-lg-flex w-100 gap-4", children: [_jsxs("div", { className: "mw-xs w-lg-50", children: [_jsx("h4", { className: "text-primary-700", children: intl.formatMessage(messages.problemResponsesReportTitle) }), _jsx("p", { className: "text-primary-700 mb-0", children: intl.formatMessage(messages.problemResponsesReportDescription) }), _jsx("p", { className: "text-primary-700", children: intl.formatMessage(messages.problemResponsesReportNote) })] }), _jsxs("div", { className: "d-flex align-items-end gap-3 flex-grow-1", children: [_jsxs(Form.Group, { className: "m-0 flex-grow-1", isInvalid: !!problemResponsesError, children: [_jsxs(Form.Label, { className: "d-flex align-content-end align-items-center gap-2", children: [intl.formatMessage(messages.specifyProblemLocation), _jsx(OverlayTrigger, { placement: "top", overlay: (_jsx(Tooltip, { id: "problem-location-tooltip", children: intl.formatMessage(messages.problemLocationTooltip) })), children: _jsx(Icon, { src: InfoOutline, size: "sm", "aria-label": intl.formatMessage(messages.problemLocationInfoIconLabel) }) })] }), _jsx(Form.Control, { type: "text", placeholder: intl.formatMessage(messages.problemLocationPlaceholder), value: problemLocation, onChange: (e) => setProblemLocation(e.target.value), className: "flex-grow-1" }), problemResponsesError && (_jsx(Form.Control.Feedback, { type: "invalid", children: problemResponsesError }))] }), _jsx(Button, { variant: "primary", onClick: handleGenerateProblemResponsesReport, disabled: isGenerating, className: "text-nowrap", children: intl.formatMessage(messages.generateProblemResponsesReport) })] })] })] }) }), _jsx(Tab, { eventKey: "certificates", title: intl.formatMessage(messages.certificateReportsTabTitle), children: _jsx("div", { className: "d-flex flex-column px-3.5", children: _jsx(ReportSection, { titleMessage: messages.issuedCertificatesTitle, descriptionMessage: messages.issuedCertificatesDescription, buttonMessage: messages.generateCertificatesReport, onGenerate: () => onGenerateReport('issued_certificates'), isFirst: true, isLast: true, isGenerating: isGenerating }) }) })] }) })] }));
18
+ };
19
+ export { GenerateReports };
20
+ //# sourceMappingURL=GenerateReports.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GenerateReports.js","sourceRoot":"","sources":["../../../src/dataDownloads/components/GenerateReports.tsx"],"names":[],"mappings":"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","sourcesContent":["import { Button, Tabs, Tab, Form, Card, Icon, OverlayTrigger, Tooltip } from '@openedx/paragon';\nimport { InfoOutline } from '@openedx/paragon/icons';\nimport { useIntl } from '@openedx/frontend-base';\nimport { useState, useCallback } from 'react';\nimport messages from '@src/dataDownloads/messages';\n\ninterface GenerateReportsProps {\n onGenerateReport: (reportType: string) => void,\n onGenerateProblemResponsesReport: (problemLocation?: string) => void,\n isGenerating: boolean,\n problemResponsesError?: string,\n}\n\ninterface ReportSectionProps {\n titleMessage: { id: string, defaultMessage: string, description?: string },\n descriptionMessage: { id: string, defaultMessage: string, description?: string },\n buttonMessage: { id: string, defaultMessage: string, description?: string },\n onGenerate: () => void,\n isFirst?: boolean,\n isLast?: boolean,\n isGenerating: boolean,\n}\n\nconst ReportSection = ({\n titleMessage,\n descriptionMessage,\n buttonMessage,\n onGenerate,\n isFirst = false,\n isLast = false,\n isGenerating,\n}: ReportSectionProps) => {\n const intl = useIntl();\n\n return (\n <div className={`d-lg-flex justify-content-between align-items-center ${isFirst ? 'pt-2.5' : 'pt-4.5'} pb-3.5 ${!isLast ? 'border-bottom' : ''}`}>\n <div className=\"mr-lg-3\">\n <h4 className=\"text-primary-700\">{intl.formatMessage(titleMessage)}</h4>\n <p className=\"text-primary-700 m-lg-0\">{intl.formatMessage(descriptionMessage)}</p>\n </div>\n <Button\n variant=\"primary\"\n onClick={onGenerate}\n disabled={isGenerating}\n className=\"text-nowrap\"\n >\n {intl.formatMessage(buttonMessage)}\n </Button>\n </div>\n );\n};\n\nconst GenerateReports = ({\n onGenerateReport,\n onGenerateProblemResponsesReport,\n isGenerating,\n problemResponsesError,\n}: GenerateReportsProps) => {\n const intl = useIntl();\n const [problemLocation, setProblemLocation] = useState('');\n\n const handleGenerateProblemResponsesReport = useCallback(() => {\n onGenerateProblemResponsesReport(problemLocation || undefined);\n }, [onGenerateProblemResponsesReport, problemLocation]);\n\n return (\n <>\n <h3 id=\"generate-reports\" className=\"mt-4 text-primary-700\">{intl.formatMessage(messages.generateReportsTitle)}</h3>\n <p className=\"text-primary-700\">{intl.formatMessage(messages.generateReportsDescription)}</p>\n <Card variant=\"muted\">\n <Tabs defaultActiveKey=\"enrollment\" className=\"mb-3\">\n <Tab eventKey=\"enrollment\" title={intl.formatMessage(messages.enrollmentReportsTabTitle)}>\n <div className=\"d-flex flex-column px-3.5\">\n <ReportSection\n titleMessage={messages.enrolledStudentsReportTitle}\n descriptionMessage={messages.enrolledStudentsReportDescription}\n buttonMessage={messages.generateEnrolledStudentsReport}\n onGenerate={() => onGenerateReport('enrolled_students')}\n isFirst\n isGenerating={isGenerating}\n />\n\n <ReportSection\n titleMessage={messages.pendingEnrollmentsReportTitle}\n descriptionMessage={messages.pendingEnrollmentsReportDescription}\n buttonMessage={messages.generatePendingEnrollmentsReport}\n onGenerate={() => onGenerateReport('pending_enrollments')}\n isGenerating={isGenerating}\n />\n\n <ReportSection\n titleMessage={messages.pendingActivationsReportTitle}\n descriptionMessage={messages.pendingActivationsReportDescription}\n buttonMessage={messages.generatePendingActivationsReport}\n onGenerate={() => onGenerateReport('pending_activations')}\n isGenerating={isGenerating}\n />\n\n <ReportSection\n titleMessage={messages.anonymizedStudentIdsReportTitle}\n descriptionMessage={messages.anonymizedStudentIdsReportDescription}\n buttonMessage={messages.generateAnonymizedStudentIdsReport}\n onGenerate={() => onGenerateReport('anonymized_student_ids')}\n isLast\n isGenerating={isGenerating}\n />\n </div>\n </Tab>\n\n <Tab eventKey=\"grading\" title={intl.formatMessage(messages.gradingReportsTabTitle)}>\n <div className=\"d-flex flex-column px-3.5\">\n <ReportSection\n titleMessage={messages.gradeReportTitle}\n descriptionMessage={messages.gradeReportDescription}\n buttonMessage={messages.generateGradeReport}\n onGenerate={() => onGenerateReport('grade')}\n isFirst\n isGenerating={isGenerating}\n />\n\n <ReportSection\n titleMessage={messages.problemGradeReportTitle}\n descriptionMessage={messages.problemGradeReportDescription}\n buttonMessage={messages.generateProblemGradeReport}\n onGenerate={() => onGenerateReport('problem_grade')}\n isLast\n isGenerating={isGenerating}\n />\n </div>\n </Tab>\n\n <Tab eventKey=\"problemResponse\" title={intl.formatMessage(messages.problemResponseReportsTabTitle)}>\n <div className=\"d-flex flex-column px-3.5\">\n <ReportSection\n titleMessage={messages.ora2SummaryReportTitle}\n descriptionMessage={messages.ora2SummaryReportDescription}\n buttonMessage={messages.generateOra2SummaryReport}\n onGenerate={() => onGenerateReport('ora2_summary')}\n isFirst\n isGenerating={isGenerating}\n />\n\n <ReportSection\n titleMessage={messages.ora2DataReportTitle}\n descriptionMessage={messages.ora2DataReportDescription}\n buttonMessage={messages.generateOra2DataReport}\n onGenerate={() => onGenerateReport('ora2_data')}\n isGenerating={isGenerating}\n />\n\n <ReportSection\n titleMessage={messages.submissionFilesArchiveTitle}\n descriptionMessage={messages.submissionFilesArchiveDescription}\n buttonMessage={messages.generateSubmissionFilesArchive}\n onGenerate={() => onGenerateReport('ora2_submission_files')}\n isGenerating={isGenerating}\n />\n\n <div className=\"pt-4.5 pb-3.5 d-lg-flex w-100 gap-4\">\n <div className=\"mw-xs w-lg-50\">\n <h4 className=\"text-primary-700\">{intl.formatMessage(messages.problemResponsesReportTitle)}</h4>\n <p className=\"text-primary-700 mb-0\">{intl.formatMessage(messages.problemResponsesReportDescription)}</p>\n <p className=\"text-primary-700\">{intl.formatMessage(messages.problemResponsesReportNote)}</p>\n </div>\n <div className=\"d-flex align-items-end gap-3 flex-grow-1\">\n <Form.Group className=\"m-0 flex-grow-1\" isInvalid={!!problemResponsesError}>\n <Form.Label className=\"d-flex align-content-end align-items-center gap-2\">\n {intl.formatMessage(messages.specifyProblemLocation)}\n <OverlayTrigger\n placement=\"top\"\n overlay={(\n <Tooltip id=\"problem-location-tooltip\">\n {intl.formatMessage(messages.problemLocationTooltip)}\n </Tooltip>\n )}\n >\n <Icon src={InfoOutline} size=\"sm\" aria-label={intl.formatMessage(messages.problemLocationInfoIconLabel)} />\n </OverlayTrigger>\n </Form.Label>\n <Form.Control\n type=\"text\"\n placeholder={intl.formatMessage(messages.problemLocationPlaceholder)}\n value={problemLocation}\n onChange={(e) => setProblemLocation(e.target.value)}\n className=\"flex-grow-1\"\n />\n {problemResponsesError && (\n <Form.Control.Feedback type=\"invalid\">\n {problemResponsesError}\n </Form.Control.Feedback>\n )}\n </Form.Group>\n <Button\n variant=\"primary\"\n onClick={handleGenerateProblemResponsesReport}\n disabled={isGenerating}\n className=\"text-nowrap\"\n >\n {intl.formatMessage(messages.generateProblemResponsesReport)}\n </Button>\n </div>\n </div>\n </div>\n </Tab>\n\n <Tab eventKey=\"certificates\" title={intl.formatMessage(messages.certificateReportsTabTitle)}>\n <div className=\"d-flex flex-column px-3.5\">\n <ReportSection\n titleMessage={messages.issuedCertificatesTitle}\n descriptionMessage={messages.issuedCertificatesDescription}\n buttonMessage={messages.generateCertificatesReport}\n onGenerate={() => onGenerateReport('issued_certificates')}\n isFirst\n isLast\n isGenerating={isGenerating}\n />\n </div>\n </Tab>\n </Tabs>\n </Card>\n </>\n );\n};\n\nexport { GenerateReports };\n"]}
@@ -0,0 +1,3 @@
1
+ import { DataDownloadsCellProps } from '../../dataDownloads/types';
2
+ declare const ReportNameCell: ({ row }: DataDownloadsCellProps) => import("react/jsx-runtime").JSX.Element;
3
+ export { ReportNameCell };
@@ -0,0 +1,6 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ const ReportNameCell = ({ row }) => {
3
+ return (_jsx("div", { className: "text-truncate", title: row.original.reportName, children: row.original.reportName }));
4
+ };
5
+ export { ReportNameCell };
6
+ //# sourceMappingURL=ReportNameCell.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ReportNameCell.js","sourceRoot":"","sources":["../../../src/dataDownloads/components/ReportNameCell.tsx"],"names":[],"mappings":";AAEA,MAAM,cAAc,GAAG,CAAC,EAAE,GAAG,EAA0B,EAAE,EAAE;IACzD,OAAO,CACL,cACE,SAAS,EAAC,eAAe,EACzB,KAAK,EAAE,GAAG,CAAC,QAAQ,CAAC,UAAU,YAE7B,GAAG,CAAC,QAAQ,CAAC,UAAU,GACpB,CACP,CAAC;AACJ,CAAC,CAAC;AAEF,OAAO,EAAE,cAAc,EAAE,CAAC","sourcesContent":["import { DataDownloadsCellProps } from '@src/dataDownloads/types';\n\nconst ReportNameCell = ({ row }: DataDownloadsCellProps) => {\n return (\n <div\n className=\"text-truncate\"\n title={row.original.reportName}\n >\n {row.original.reportName}\n </div>\n );\n};\n\nexport { ReportNameCell };\n"]}
@@ -0,0 +1,2 @@
1
+ export declare const getGeneratedReports: (courseId: string) => Promise<any>;
2
+ export declare const generateReportLink: (courseId: string, reportType: string, problemLocation?: string) => Promise<any>;
@@ -0,0 +1,23 @@
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 getGeneratedReports = (courseId) => __awaiter(void 0, void 0, void 0, function* () {
13
+ const { data } = yield getAuthenticatedHttpClient()
14
+ .get(`${getApiBaseUrl()}/api/instructor/v2/courses/${courseId}/reports`);
15
+ return camelCaseObject(data);
16
+ });
17
+ export const generateReportLink = (courseId, reportType, problemLocation) => __awaiter(void 0, void 0, void 0, function* () {
18
+ const payload = problemLocation ? { problem_location: problemLocation } : {};
19
+ const { data } = yield getAuthenticatedHttpClient()
20
+ .post(`${getApiBaseUrl()}/api/instructor/v2/courses/${courseId}/reports/${reportType}/generate`, payload);
21
+ return camelCaseObject(data);
22
+ });
23
+ //# sourceMappingURL=api.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api.js","sourceRoot":"","sources":["../../../src/dataDownloads/data/api.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,EAAE,eAAe,EAAE,0BAA0B,EAAE,MAAM,wBAAwB,CAAC;AACrF,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAE9C,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAO,QAAgB,EAAE,EAAE;IAC5D,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,0BAA0B,EAAE;SAChD,GAAG,CAAC,GAAG,aAAa,EAAE,8BAA8B,QAAQ,UAAU,CAAC,CAAC;IAC3E,OAAO,eAAe,CAAC,IAAI,CAAC,CAAC;AAC/B,CAAC,CAAA,CAAC;AAEF,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAO,QAAgB,EAAE,UAAkB,EAAE,eAAwB,EAAE,EAAE;IACzG,MAAM,OAAO,GAAG,eAAe,CAAC,CAAC,CAAC,EAAE,gBAAgB,EAAE,eAAe,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IAC7E,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,0BAA0B,EAAE;SAChD,IAAI,CAAC,GAAG,aAAa,EAAE,8BAA8B,QAAQ,YAAY,UAAU,WAAW,EAAE,OAAO,CAAC,CAAC;IAC5G,OAAO,eAAe,CAAC,IAAI,CAAC,CAAC;AAC/B,CAAC,CAAA,CAAC","sourcesContent":["import { camelCaseObject, getAuthenticatedHttpClient } from '@openedx/frontend-base';\nimport { getApiBaseUrl } from '@src/data/api';\n\nexport const getGeneratedReports = async (courseId: string) => {\n const { data } = await getAuthenticatedHttpClient()\n .get(`${getApiBaseUrl()}/api/instructor/v2/courses/${courseId}/reports`);\n return camelCaseObject(data);\n};\n\nexport const generateReportLink = async (courseId: string, reportType: string, problemLocation?: string) => {\n const payload = problemLocation ? { problem_location: problemLocation } : {};\n const { data } = await getAuthenticatedHttpClient()\n .post(`${getApiBaseUrl()}/api/instructor/v2/courses/${courseId}/reports/${reportType}/generate`, payload);\n return camelCaseObject(data);\n};\n"]}
@@ -0,0 +1,7 @@
1
+ export declare const useGeneratedReports: (courseId: string, options?: {
2
+ enablePolling?: boolean;
3
+ }) => import("@tanstack/react-query").UseQueryResult<any, any>;
4
+ export declare const useGenerateReportLink: (courseId: string) => import("@tanstack/react-query").UseMutationResult<any, Error, {
5
+ reportType: string;
6
+ problemLocation?: string;
7
+ }, unknown>;
@@ -0,0 +1,22 @@
1
+ import { useMutation, useQuery } from '@tanstack/react-query';
2
+ import { generateReportLink, getGeneratedReports } from './api';
3
+ import { dataDownloadsQueryKeys as queryKeys } from './queryKeys';
4
+ export const useGeneratedReports = (courseId, options) => (useQuery({
5
+ queryKey: queryKeys.generatedReports(courseId),
6
+ queryFn: () => getGeneratedReports(courseId),
7
+ retry: (failureCount, error) => {
8
+ var _a;
9
+ // Don't retry on 404 errors
10
+ if (((_a = error === null || error === void 0 ? void 0 : error.response) === null || _a === void 0 ? void 0 : _a.status) === 404) {
11
+ return false;
12
+ }
13
+ return failureCount < 3;
14
+ },
15
+ // Poll every 3 seconds when polling is enabled
16
+ refetchInterval: (options === null || options === void 0 ? void 0 : options.enablePolling) ? 3000 : false,
17
+ }));
18
+ export const useGenerateReportLink = (courseId) => (useMutation({
19
+ mutationKey: queryKeys.generateReportLink(courseId),
20
+ mutationFn: ({ reportType, problemLocation }) => generateReportLink(courseId, reportType, problemLocation),
21
+ }));
22
+ //# sourceMappingURL=apiHook.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"apiHook.js","sourceRoot":"","sources":["../../../src/dataDownloads/data/apiHook.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAC9D,OAAO,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,MAAM,OAAO,CAAC;AAChE,OAAO,EAAE,sBAAsB,IAAI,SAAS,EAAE,MAAM,aAAa,CAAC;AAElE,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,QAAgB,EAAE,OAAqC,EAAE,EAAE,CAAC,CAC9F,QAAQ,CAAC;IACP,QAAQ,EAAE,SAAS,CAAC,gBAAgB,CAAC,QAAQ,CAAC;IAC9C,OAAO,EAAE,GAAG,EAAE,CAAC,mBAAmB,CAAC,QAAQ,CAAC;IAC5C,KAAK,EAAE,CAAC,YAAY,EAAE,KAAU,EAAE,EAAE;;QAClC,4BAA4B;QAC5B,IAAI,CAAA,MAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,QAAQ,0CAAE,MAAM,MAAK,GAAG,EAAE,CAAC;YACpC,OAAO,KAAK,CAAC;QACf,CAAC;QACD,OAAO,YAAY,GAAG,CAAC,CAAC;IAC1B,CAAC;IACD,+CAA+C;IAC/C,eAAe,EAAE,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,aAAa,EAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK;CACvD,CAAC,CACH,CAAC;AAEF,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,QAAgB,EAAE,EAAE,CAAC,CACzD,WAAW,CAAC;IACV,WAAW,EAAE,SAAS,CAAC,kBAAkB,CAAC,QAAQ,CAAC;IACnD,UAAU,EAAE,CAAC,EAAE,UAAU,EAAE,eAAe,EAAoD,EAAE,EAAE,CAChG,kBAAkB,CAAC,QAAQ,EAAE,UAAU,EAAE,eAAe,CAAC;CAC5D,CAAC,CACH,CAAC","sourcesContent":["import { useMutation, useQuery } from '@tanstack/react-query';\nimport { generateReportLink, getGeneratedReports } from './api';\nimport { dataDownloadsQueryKeys as queryKeys } from './queryKeys';\n\nexport const useGeneratedReports = (courseId: string, options?: { enablePolling?: boolean }) => (\n useQuery({\n queryKey: queryKeys.generatedReports(courseId),\n queryFn: () => getGeneratedReports(courseId),\n retry: (failureCount, error: any) => {\n // Don't retry on 404 errors\n if (error?.response?.status === 404) {\n return false;\n }\n return failureCount < 3;\n },\n // Poll every 3 seconds when polling is enabled\n refetchInterval: options?.enablePolling ? 3000 : false,\n })\n);\n\nexport const useGenerateReportLink = (courseId: string) => (\n useMutation({\n mutationKey: queryKeys.generateReportLink(courseId),\n mutationFn: ({ reportType, problemLocation }: { reportType: string, problemLocation?: string }) =>\n generateReportLink(courseId, reportType, problemLocation),\n })\n);\n"]}
@@ -0,0 +1,5 @@
1
+ export declare const dataDownloadsQueryKeys: {
2
+ all: readonly ["org.openedx.frontend.app.instructor", "dataDownloads"];
3
+ generatedReports: (courseId: string) => readonly ["org.openedx.frontend.app.instructor", "dataDownloads", "generatedReports", string];
4
+ generateReportLink: (courseId: string) => readonly ["org.openedx.frontend.app.instructor", "dataDownloads", "reportLink", string];
5
+ };
@@ -0,0 +1,7 @@
1
+ import { appId } from '../../constants';
2
+ export const dataDownloadsQueryKeys = {
3
+ all: [appId, 'dataDownloads'],
4
+ generatedReports: (courseId) => [...dataDownloadsQueryKeys.all, 'generatedReports', courseId],
5
+ generateReportLink: (courseId) => [...dataDownloadsQueryKeys.all, 'reportLink', courseId],
6
+ };
7
+ //# sourceMappingURL=queryKeys.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"queryKeys.js","sourceRoot":"","sources":["../../../src/dataDownloads/data/queryKeys.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AAEvC,MAAM,CAAC,MAAM,sBAAsB,GAAG;IACpC,GAAG,EAAE,CAAC,KAAK,EAAE,eAAe,CAAU;IACtC,gBAAgB,EAAE,CAAC,QAAgB,EAAE,EAAE,CAAC,CAAC,GAAG,sBAAsB,CAAC,GAAG,EAAE,kBAAkB,EAAE,QAAQ,CAAU;IAC9G,kBAAkB,EAAE,CAAC,QAAgB,EAAE,EAAE,CAAC,CAAC,GAAG,sBAAsB,CAAC,GAAG,EAAE,YAAY,EAAE,QAAQ,CAAU;CAC3G,CAAC","sourcesContent":["import { appId } from '@src/constants';\n\nexport const dataDownloadsQueryKeys = {\n all: [appId, 'dataDownloads'] as const,\n generatedReports: (courseId: string) => [...dataDownloadsQueryKeys.all, 'generatedReports', courseId] as const,\n generateReportLink: (courseId: string) => [...dataDownloadsQueryKeys.all, 'reportLink', courseId] as const,\n};\n"]}
@@ -0,0 +1,338 @@
1
+ declare const messages: {
2
+ pageTitle: {
3
+ id: string;
4
+ defaultMessage: string;
5
+ description: string;
6
+ };
7
+ dataDownloadsTitle: {
8
+ id: string;
9
+ defaultMessage: string;
10
+ description: string;
11
+ };
12
+ dataDownloadsDescription: {
13
+ id: string;
14
+ defaultMessage: string;
15
+ description: string;
16
+ };
17
+ dataDownloadsReportExpirationPolicyMessage: {
18
+ id: string;
19
+ defaultMessage: string;
20
+ description: string;
21
+ };
22
+ dateGeneratedColumnName: {
23
+ id: string;
24
+ defaultMessage: string;
25
+ description: string;
26
+ };
27
+ reportTypeColumnName: {
28
+ id: string;
29
+ defaultMessage: string;
30
+ description: string;
31
+ };
32
+ reportNameColumnName: {
33
+ id: string;
34
+ defaultMessage: string;
35
+ description: string;
36
+ };
37
+ downloadLinkLabel: {
38
+ id: string;
39
+ defaultMessage: string;
40
+ description: string;
41
+ };
42
+ generateReportsTitle: {
43
+ id: string;
44
+ defaultMessage: string;
45
+ description: string;
46
+ };
47
+ generateReportsDescription: {
48
+ id: string;
49
+ defaultMessage: string;
50
+ description: string;
51
+ };
52
+ enrollmentReportsTabTitle: {
53
+ id: string;
54
+ defaultMessage: string;
55
+ description: string;
56
+ };
57
+ gradingReportsTabTitle: {
58
+ id: string;
59
+ defaultMessage: string;
60
+ description: string;
61
+ };
62
+ problemResponseReportsTabTitle: {
63
+ id: string;
64
+ defaultMessage: string;
65
+ description: string;
66
+ };
67
+ certificateReportsTabTitle: {
68
+ id: string;
69
+ defaultMessage: string;
70
+ description: string;
71
+ };
72
+ enrolledStudentsReportTitle: {
73
+ id: string;
74
+ defaultMessage: string;
75
+ description: string;
76
+ };
77
+ enrolledStudentsReportDescription: {
78
+ id: string;
79
+ defaultMessage: string;
80
+ description: string;
81
+ };
82
+ generateEnrolledStudentsReport: {
83
+ id: string;
84
+ defaultMessage: string;
85
+ description: string;
86
+ };
87
+ pendingEnrollmentsReportTitle: {
88
+ id: string;
89
+ defaultMessage: string;
90
+ description: string;
91
+ };
92
+ pendingEnrollmentsReportDescription: {
93
+ id: string;
94
+ defaultMessage: string;
95
+ description: string;
96
+ };
97
+ generatePendingEnrollmentsReport: {
98
+ id: string;
99
+ defaultMessage: string;
100
+ description: string;
101
+ };
102
+ pendingActivationsReportTitle: {
103
+ id: string;
104
+ defaultMessage: string;
105
+ description: string;
106
+ };
107
+ pendingActivationsReportDescription: {
108
+ id: string;
109
+ defaultMessage: string;
110
+ description: string;
111
+ };
112
+ generatePendingActivationsReport: {
113
+ id: string;
114
+ defaultMessage: string;
115
+ description: string;
116
+ };
117
+ anonymizedStudentIdsReportTitle: {
118
+ id: string;
119
+ defaultMessage: string;
120
+ description: string;
121
+ };
122
+ anonymizedStudentIdsReportDescription: {
123
+ id: string;
124
+ defaultMessage: string;
125
+ description: string;
126
+ };
127
+ generateAnonymizedStudentIdsReport: {
128
+ id: string;
129
+ defaultMessage: string;
130
+ description: string;
131
+ };
132
+ gradeReportTitle: {
133
+ id: string;
134
+ defaultMessage: string;
135
+ description: string;
136
+ };
137
+ gradeReportDescription: {
138
+ id: string;
139
+ defaultMessage: string;
140
+ description: string;
141
+ };
142
+ generateGradeReport: {
143
+ id: string;
144
+ defaultMessage: string;
145
+ description: string;
146
+ };
147
+ problemGradeReportTitle: {
148
+ id: string;
149
+ defaultMessage: string;
150
+ description: string;
151
+ };
152
+ problemGradeReportDescription: {
153
+ id: string;
154
+ defaultMessage: string;
155
+ description: string;
156
+ };
157
+ generateProblemGradeReport: {
158
+ id: string;
159
+ defaultMessage: string;
160
+ description: string;
161
+ };
162
+ ora2SummaryReportTitle: {
163
+ id: string;
164
+ defaultMessage: string;
165
+ description: string;
166
+ };
167
+ ora2SummaryReportDescription: {
168
+ id: string;
169
+ defaultMessage: string;
170
+ description: string;
171
+ };
172
+ generateOra2SummaryReport: {
173
+ id: string;
174
+ defaultMessage: string;
175
+ description: string;
176
+ };
177
+ ora2DataReportTitle: {
178
+ id: string;
179
+ defaultMessage: string;
180
+ description: string;
181
+ };
182
+ ora2DataReportDescription: {
183
+ id: string;
184
+ defaultMessage: string;
185
+ description: string;
186
+ };
187
+ generateOra2DataReport: {
188
+ id: string;
189
+ defaultMessage: string;
190
+ description: string;
191
+ };
192
+ submissionFilesArchiveTitle: {
193
+ id: string;
194
+ defaultMessage: string;
195
+ description: string;
196
+ };
197
+ submissionFilesArchiveDescription: {
198
+ id: string;
199
+ defaultMessage: string;
200
+ description: string;
201
+ };
202
+ generateSubmissionFilesArchive: {
203
+ id: string;
204
+ defaultMessage: string;
205
+ description: string;
206
+ };
207
+ problemResponsesReportTitle: {
208
+ id: string;
209
+ defaultMessage: string;
210
+ description: string;
211
+ };
212
+ problemResponsesReportDescription: {
213
+ id: string;
214
+ defaultMessage: string;
215
+ description: string;
216
+ };
217
+ problemResponsesReportNote: {
218
+ id: string;
219
+ defaultMessage: string;
220
+ description: string;
221
+ };
222
+ generateProblemResponsesReport: {
223
+ id: string;
224
+ defaultMessage: string;
225
+ description: string;
226
+ };
227
+ specifyProblemLocation: {
228
+ id: string;
229
+ defaultMessage: string;
230
+ description: string;
231
+ };
232
+ problemLocationPlaceholder: {
233
+ id: string;
234
+ defaultMessage: string;
235
+ description: string;
236
+ };
237
+ problemLocationInfoIconLabel: {
238
+ id: string;
239
+ defaultMessage: string;
240
+ description: string;
241
+ };
242
+ problemLocationTooltip: {
243
+ id: string;
244
+ defaultMessage: string;
245
+ description: string;
246
+ };
247
+ issuedCertificatesTitle: {
248
+ id: string;
249
+ defaultMessage: string;
250
+ description: string;
251
+ };
252
+ issuedCertificatesDescription: {
253
+ id: string;
254
+ defaultMessage: string;
255
+ description: string;
256
+ };
257
+ generateCertificatesReport: {
258
+ id: string;
259
+ defaultMessage: string;
260
+ description: string;
261
+ };
262
+ reportTypeEnrolledStudents: {
263
+ id: string;
264
+ defaultMessage: string;
265
+ description: string;
266
+ };
267
+ reportTypePendingEnrollments: {
268
+ id: string;
269
+ defaultMessage: string;
270
+ description: string;
271
+ };
272
+ reportTypePendingActivations: {
273
+ id: string;
274
+ defaultMessage: string;
275
+ description: string;
276
+ };
277
+ reportTypeAnonymizedStudentIds: {
278
+ id: string;
279
+ defaultMessage: string;
280
+ description: string;
281
+ };
282
+ reportTypeGrade: {
283
+ id: string;
284
+ defaultMessage: string;
285
+ description: string;
286
+ };
287
+ reportTypeProblemGrade: {
288
+ id: string;
289
+ defaultMessage: string;
290
+ description: string;
291
+ };
292
+ reportTypeProblemResponses: {
293
+ id: string;
294
+ defaultMessage: string;
295
+ description: string;
296
+ };
297
+ reportTypeOra2Summary: {
298
+ id: string;
299
+ defaultMessage: string;
300
+ description: string;
301
+ };
302
+ reportTypeOra2Data: {
303
+ id: string;
304
+ defaultMessage: string;
305
+ description: string;
306
+ };
307
+ reportTypeOra2SubmissionFiles: {
308
+ id: string;
309
+ defaultMessage: string;
310
+ description: string;
311
+ };
312
+ reportTypeIssuedCertificates: {
313
+ id: string;
314
+ defaultMessage: string;
315
+ description: string;
316
+ };
317
+ generateReportSuccess: {
318
+ id: string;
319
+ defaultMessage: string;
320
+ description: string;
321
+ };
322
+ generateReportError: {
323
+ id: string;
324
+ defaultMessage: string;
325
+ description: string;
326
+ };
327
+ downloadReportError: {
328
+ id: string;
329
+ defaultMessage: string;
330
+ description: string;
331
+ };
332
+ noReportsFoundMessage: {
333
+ id: string;
334
+ defaultMessage: string;
335
+ description: string;
336
+ };
337
+ };
338
+ export default messages;