@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.
- package/LICENSE +661 -0
- package/README.rst +235 -0
- package/dist/Main.d.ts +3 -0
- package/dist/Main.js +13 -0
- package/dist/Main.js.map +1 -0
- package/dist/app.d.ts +3 -0
- package/dist/app.js +18 -0
- package/dist/app.js.map +1 -0
- package/dist/app.scss +10 -0
- package/dist/certificates/CertificatesPage.d.ts +2 -0
- package/dist/certificates/CertificatesPage.js +6 -0
- package/dist/certificates/CertificatesPage.js.map +1 -0
- package/dist/cohorts/CohortsPage.d.ts +3 -0
- package/dist/cohorts/CohortsPage.js +41 -0
- package/dist/cohorts/CohortsPage.js.map +1 -0
- package/dist/cohorts/CohortsPage.scss +14 -0
- package/dist/cohorts/components/CohortCard.d.ts +6 -0
- package/dist/cohorts/components/CohortCard.js +53 -0
- package/dist/cohorts/components/CohortCard.js.map +1 -0
- package/dist/cohorts/components/CohortContext.d.ts +14 -0
- package/dist/cohorts/components/CohortContext.js +46 -0
- package/dist/cohorts/components/CohortContext.js.map +1 -0
- package/dist/cohorts/components/CohortsForm.d.ts +11 -0
- package/dist/cohorts/components/CohortsForm.js +58 -0
- package/dist/cohorts/components/CohortsForm.js.map +1 -0
- package/dist/cohorts/components/DisableCohortsModal.d.ts +7 -0
- package/dist/cohorts/components/DisableCohortsModal.js +10 -0
- package/dist/cohorts/components/DisableCohortsModal.js.map +1 -0
- package/dist/cohorts/components/DisabledCohortsView.d.ts +5 -0
- package/dist/cohorts/components/DisabledCohortsView.js +10 -0
- package/dist/cohorts/components/DisabledCohortsView.js.map +1 -0
- package/dist/cohorts/components/EnabledCohortsView.d.ts +2 -0
- package/dist/cohorts/components/EnabledCohortsView.js +96 -0
- package/dist/cohorts/components/EnabledCohortsView.js.map +1 -0
- package/dist/cohorts/components/ManageLearners.d.ts +2 -0
- package/dist/cohorts/components/ManageLearners.js +64 -0
- package/dist/cohorts/components/ManageLearners.js.map +1 -0
- package/dist/cohorts/components/SelectedCohortInfo.d.ts +2 -0
- package/dist/cohorts/components/SelectedCohortInfo.js +43 -0
- package/dist/cohorts/components/SelectedCohortInfo.js.map +1 -0
- package/dist/cohorts/constants.d.ts +4 -0
- package/dist/cohorts/constants.js +5 -0
- package/dist/cohorts/constants.js.map +1 -0
- package/dist/cohorts/data/api.d.ts +9 -0
- package/dist/cohorts/data/api.js +54 -0
- package/dist/cohorts/data/api.js.map +1 -0
- package/dist/cohorts/data/apiHook.d.ts +14 -0
- package/dist/cohorts/data/apiHook.js +64 -0
- package/dist/cohorts/data/apiHook.js.map +1 -0
- package/dist/cohorts/data/queryKeys.d.ts +7 -0
- package/dist/cohorts/data/queryKeys.js +9 -0
- package/dist/cohorts/data/queryKeys.js.map +1 -0
- package/dist/cohorts/messages.d.ts +233 -0
- package/dist/cohorts/messages.js +235 -0
- package/dist/cohorts/messages.js.map +1 -0
- package/dist/cohorts/types.d.ts +15 -0
- package/dist/cohorts/types.js +2 -0
- package/dist/cohorts/types.js.map +1 -0
- package/dist/components/ActionCard.d.ts +11 -0
- package/dist/components/ActionCard.js +7 -0
- package/dist/components/ActionCard.js.map +1 -0
- package/dist/components/CSVComponent.d.ts +10 -0
- package/dist/components/CSVComponent.js +21 -0
- package/dist/components/CSVComponent.js.map +1 -0
- package/dist/components/ObjectCell.d.ts +5 -0
- package/dist/components/ObjectCell.js +7 -0
- package/dist/components/ObjectCell.js.map +1 -0
- package/dist/components/PageNotFound.d.ts +2 -0
- package/dist/components/PageNotFound.js +12 -0
- package/dist/components/PageNotFound.js.map +1 -0
- package/dist/components/PendingTasks.d.ts +5 -0
- package/dist/components/PendingTasks.js +38 -0
- package/dist/components/PendingTasks.js.map +1 -0
- package/dist/components/SpecifyLearnerField.d.ts +5 -0
- package/dist/components/SpecifyLearnerField.js +10 -0
- package/dist/components/SpecifyLearnerField.js.map +1 -0
- package/dist/components/messages.d.ts +108 -0
- package/dist/components/messages.js +110 -0
- package/dist/components/messages.js.map +1 -0
- package/dist/constants.d.ts +1 -0
- package/dist/constants.js +2 -0
- package/dist/constants.js.map +1 -0
- package/dist/courseInfo/CourseInfoPage.d.ts +2 -0
- package/dist/courseInfo/CourseInfoPage.js +7 -0
- package/dist/courseInfo/CourseInfoPage.js.map +1 -0
- package/dist/courseInfo/components/EnrollmentSummary/EnrollmentCounter.d.ts +8 -0
- package/dist/courseInfo/components/EnrollmentSummary/EnrollmentCounter.js +13 -0
- package/dist/courseInfo/components/EnrollmentSummary/EnrollmentCounter.js.map +1 -0
- package/dist/courseInfo/components/EnrollmentSummary/EnrollmentSummary.d.ts +2 -0
- package/dist/courseInfo/components/EnrollmentSummary/EnrollmentSummary.js +24 -0
- package/dist/courseInfo/components/EnrollmentSummary/EnrollmentSummary.js.map +1 -0
- package/dist/courseInfo/components/EnrollmentSummary/index.d.ts +2 -0
- package/dist/courseInfo/components/EnrollmentSummary/index.js +3 -0
- package/dist/courseInfo/components/EnrollmentSummary/index.js.map +1 -0
- package/dist/courseInfo/components/EnrollmentSummary/messages.d.ts +83 -0
- package/dist/courseInfo/components/EnrollmentSummary/messages.js +85 -0
- package/dist/courseInfo/components/EnrollmentSummary/messages.js.map +1 -0
- package/dist/courseInfo/components/EnrollmentSummary/utils.d.ts +1 -0
- package/dist/courseInfo/components/EnrollmentSummary/utils.js +9 -0
- package/dist/courseInfo/components/EnrollmentSummary/utils.js.map +1 -0
- package/dist/courseInfo/components/generalCourseInfo/GeneralCourseInfo.d.ts +2 -0
- package/dist/courseInfo/components/generalCourseInfo/GeneralCourseInfo.js +46 -0
- package/dist/courseInfo/components/generalCourseInfo/GeneralCourseInfo.js.map +1 -0
- package/dist/courseInfo/components/generalCourseInfo/StatusBadge.d.ts +5 -0
- package/dist/courseInfo/components/generalCourseInfo/StatusBadge.js +15 -0
- package/dist/courseInfo/components/generalCourseInfo/StatusBadge.js.map +1 -0
- package/dist/courseInfo/components/generalCourseInfo/index.d.ts +1 -0
- package/dist/courseInfo/components/generalCourseInfo/index.js +2 -0
- package/dist/courseInfo/components/generalCourseInfo/index.js.map +1 -0
- package/dist/courseInfo/components/generalCourseInfo/messages.d.ts +8 -0
- package/dist/courseInfo/components/generalCourseInfo/messages.js +10 -0
- package/dist/courseInfo/components/generalCourseInfo/messages.js.map +1 -0
- package/dist/courseInfo/messages.d.ts +8 -0
- package/dist/courseInfo/messages.js +10 -0
- package/dist/courseInfo/messages.js.map +1 -0
- package/dist/courseInfo/types.d.ts +27 -0
- package/dist/courseInfo/types.js +2 -0
- package/dist/courseInfo/types.js.map +1 -0
- package/dist/courseTeam/CourseTeamPage.d.ts +2 -0
- package/dist/courseTeam/CourseTeamPage.js +6 -0
- package/dist/courseTeam/CourseTeamPage.js.map +1 -0
- package/dist/data/api.d.ts +14 -0
- package/dist/data/api.js +33 -0
- package/dist/data/api.js.map +1 -0
- package/dist/data/apiHook.d.ts +4 -0
- package/dist/data/apiHook.js +28 -0
- package/dist/data/apiHook.js.map +1 -0
- package/dist/data/queryKeys.d.ts +8 -0
- package/dist/data/queryKeys.js +10 -0
- package/dist/data/queryKeys.js.map +1 -0
- package/dist/dataDownloads/DataDownloadsPage.d.ts +2 -0
- package/dist/dataDownloads/DataDownloadsPage.js +162 -0
- package/dist/dataDownloads/DataDownloadsPage.js.map +1 -0
- package/dist/dataDownloads/components/DataDownloadTable.d.ts +8 -0
- package/dist/dataDownloads/components/DataDownloadTable.js +42 -0
- package/dist/dataDownloads/components/DataDownloadTable.js.map +1 -0
- package/dist/dataDownloads/components/DownloadLinkCell.d.ts +6 -0
- package/dist/dataDownloads/components/DownloadLinkCell.js +13 -0
- package/dist/dataDownloads/components/DownloadLinkCell.js.map +1 -0
- package/dist/dataDownloads/components/GenerateReports.d.ts +8 -0
- package/dist/dataDownloads/components/GenerateReports.js +20 -0
- package/dist/dataDownloads/components/GenerateReports.js.map +1 -0
- package/dist/dataDownloads/components/ReportNameCell.d.ts +3 -0
- package/dist/dataDownloads/components/ReportNameCell.js +6 -0
- package/dist/dataDownloads/components/ReportNameCell.js.map +1 -0
- package/dist/dataDownloads/data/api.d.ts +2 -0
- package/dist/dataDownloads/data/api.js +23 -0
- package/dist/dataDownloads/data/api.js.map +1 -0
- package/dist/dataDownloads/data/apiHook.d.ts +7 -0
- package/dist/dataDownloads/data/apiHook.js +22 -0
- package/dist/dataDownloads/data/apiHook.js.map +1 -0
- package/dist/dataDownloads/data/queryKeys.d.ts +5 -0
- package/dist/dataDownloads/data/queryKeys.js +7 -0
- package/dist/dataDownloads/data/queryKeys.js.map +1 -0
- package/dist/dataDownloads/messages.d.ts +338 -0
- package/dist/dataDownloads/messages.js +341 -0
- package/dist/dataDownloads/messages.js.map +1 -0
- package/dist/dataDownloads/types.d.ts +8 -0
- package/dist/dataDownloads/types.js +2 -0
- package/dist/dataDownloads/types.js.map +1 -0
- package/dist/dataDownloads/utils.d.ts +26 -0
- package/dist/dataDownloads/utils.js +49 -0
- package/dist/dataDownloads/utils.js.map +1 -0
- package/dist/dateExtensions/DateExtensionsPage.d.ts +2 -0
- package/dist/dateExtensions/DateExtensionsPage.js +87 -0
- package/dist/dateExtensions/DateExtensionsPage.js.map +1 -0
- package/dist/dateExtensions/components/AddExtensionModal.d.ts +13 -0
- package/dist/dateExtensions/components/AddExtensionModal.js +34 -0
- package/dist/dateExtensions/components/AddExtensionModal.js.map +1 -0
- package/dist/dateExtensions/components/DateExtensionsList.d.ts +7 -0
- package/dist/dateExtensions/components/DateExtensionsList.js +103 -0
- package/dist/dateExtensions/components/DateExtensionsList.js.map +1 -0
- package/dist/dateExtensions/components/ResetExtensionsModal.d.ts +10 -0
- package/dist/dateExtensions/components/ResetExtensionsModal.js +10 -0
- package/dist/dateExtensions/components/ResetExtensionsModal.js.map +1 -0
- package/dist/dateExtensions/components/SelectGradedSubsection.d.ts +8 -0
- package/dist/dateExtensions/components/SelectGradedSubsection.js +15 -0
- package/dist/dateExtensions/components/SelectGradedSubsection.js.map +1 -0
- package/dist/dateExtensions/data/api.d.ts +6 -0
- package/dist/dateExtensions/data/api.js +40 -0
- package/dist/dateExtensions/data/api.js.map +1 -0
- package/dist/dateExtensions/data/apiHook.d.ts +11 -0
- package/dist/dateExtensions/data/apiHook.js +31 -0
- package/dist/dateExtensions/data/apiHook.js.map +1 -0
- package/dist/dateExtensions/data/queryKeys.d.ts +10 -0
- package/dist/dateExtensions/data/queryKeys.js +17 -0
- package/dist/dateExtensions/data/queryKeys.js.map +1 -0
- package/dist/dateExtensions/messages.d.ts +128 -0
- package/dist/dateExtensions/messages.js +130 -0
- package/dist/dateExtensions/messages.js.map +1 -0
- package/dist/dateExtensions/types.d.ts +24 -0
- package/dist/dateExtensions/types.js +2 -0
- package/dist/dateExtensions/types.js.map +1 -0
- package/dist/enrollments/EnrollmentsPage.d.ts +2 -0
- package/dist/enrollments/EnrollmentsPage.js +32 -0
- package/dist/enrollments/EnrollmentsPage.js.map +1 -0
- package/dist/enrollments/components/EnrollmentStatusModal.d.ts +6 -0
- package/dist/enrollments/components/EnrollmentStatusModal.js +23 -0
- package/dist/enrollments/components/EnrollmentStatusModal.js.map +1 -0
- package/dist/enrollments/components/EnrollmentsList.d.ts +6 -0
- package/dist/enrollments/components/EnrollmentsList.js +99 -0
- package/dist/enrollments/components/EnrollmentsList.js.map +1 -0
- package/dist/enrollments/components/UnenrollModal.d.ts +8 -0
- package/dist/enrollments/components/UnenrollModal.js +7 -0
- package/dist/enrollments/components/UnenrollModal.js.map +1 -0
- package/dist/enrollments/data/api.d.ts +4 -0
- package/dist/enrollments/data/api.js +32 -0
- package/dist/enrollments/data/api.js.map +1 -0
- package/dist/enrollments/data/apiHook.d.ts +3 -0
- package/dist/enrollments/data/apiHook.js +14 -0
- package/dist/enrollments/data/apiHook.js.map +1 -0
- package/dist/enrollments/data/queryKeys.d.ts +7 -0
- package/dist/enrollments/data/queryKeys.js +8 -0
- package/dist/enrollments/data/queryKeys.js.map +1 -0
- package/dist/enrollments/messages.d.ts +108 -0
- package/dist/enrollments/messages.js +110 -0
- package/dist/enrollments/messages.js.map +1 -0
- package/dist/enrollments/types.d.ts +15 -0
- package/dist/enrollments/types.js +2 -0
- package/dist/enrollments/types.js.map +1 -0
- package/dist/grading/GradingPage.d.ts +2 -0
- package/dist/grading/GradingPage.js +6 -0
- package/dist/grading/GradingPage.js.map +1 -0
- package/dist/hooks/useDebouncedFilter.d.ts +16 -0
- package/dist/hooks/useDebouncedFilter.js +27 -0
- package/dist/hooks/useDebouncedFilter.js.map +1 -0
- package/dist/i18n/index.d.ts +25 -0
- package/dist/i18n/index.js +26 -0
- package/dist/i18n/index.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.js +4 -0
- package/dist/index.js.map +1 -0
- package/dist/instructorNav/InstructorNav.d.ts +8 -0
- package/dist/instructorNav/InstructorNav.js +42 -0
- package/dist/instructorNav/InstructorNav.js.map +1 -0
- package/dist/openResponses/OpenResponsesPage.d.ts +2 -0
- package/dist/openResponses/OpenResponsesPage.js +8 -0
- package/dist/openResponses/OpenResponsesPage.js.map +1 -0
- package/dist/openResponses/components/DetailAssessmentsList.d.ts +2 -0
- package/dist/openResponses/components/DetailAssessmentsList.js +44 -0
- package/dist/openResponses/components/DetailAssessmentsList.js.map +1 -0
- package/dist/openResponses/components/OpenResponsesSummary.d.ts +2 -0
- package/dist/openResponses/components/OpenResponsesSummary.js +30 -0
- package/dist/openResponses/components/OpenResponsesSummary.js.map +1 -0
- package/dist/openResponses/data/api.d.ts +4 -0
- package/dist/openResponses/data/api.js +23 -0
- package/dist/openResponses/data/api.js.map +1 -0
- package/dist/openResponses/data/apiHook.d.ts +2 -0
- package/dist/openResponses/data/apiHook.js +14 -0
- package/dist/openResponses/data/apiHook.js.map +1 -0
- package/dist/openResponses/data/queryKeys.d.ts +6 -0
- package/dist/openResponses/data/queryKeys.js +8 -0
- package/dist/openResponses/data/queryKeys.js.map +1 -0
- package/dist/openResponses/messages.d.ts +83 -0
- package/dist/openResponses/messages.js +85 -0
- package/dist/openResponses/messages.js.map +1 -0
- package/dist/openResponses/types.d.ts +12 -0
- package/dist/openResponses/types.js +2 -0
- package/dist/openResponses/types.js.map +1 -0
- package/dist/pageWrapper/PageWrapper.d.ts +4 -0
- package/dist/pageWrapper/PageWrapper.js +11 -0
- package/dist/pageWrapper/PageWrapper.js.map +1 -0
- package/dist/pageWrapper/messages.d.ts +8 -0
- package/dist/pageWrapper/messages.js +10 -0
- package/dist/pageWrapper/messages.js.map +1 -0
- package/dist/providers/AlertProvider.d.ts +41 -0
- package/dist/providers/AlertProvider.js +117 -0
- package/dist/providers/AlertProvider.js.map +1 -0
- package/dist/providers/QueryProvider.d.ts +6 -0
- package/dist/providers/QueryProvider.js +16 -0
- package/dist/providers/QueryProvider.js.map +1 -0
- package/dist/providers.d.ts +3 -0
- package/dist/providers.js +8 -0
- package/dist/providers.js.map +1 -0
- package/dist/routes.d.ts +20 -0
- package/dist/routes.js +72 -0
- package/dist/routes.js.map +1 -0
- package/dist/slots/PlaceholderSlot/PlaceholderSlot.d.ts +1 -0
- package/dist/slots/PlaceholderSlot/PlaceholderSlot.js +6 -0
- package/dist/slots/PlaceholderSlot/PlaceholderSlot.js.map +1 -0
- package/dist/slots/SlotUtils.d.ts +3 -0
- package/dist/slots/SlotUtils.js +17 -0
- package/dist/slots/SlotUtils.js.map +1 -0
- package/dist/slots.d.ts +3 -0
- package/dist/slots.js +3 -0
- package/dist/slots.js.map +1 -0
- package/dist/specialExams/SpecialExamsPage.d.ts +2 -0
- package/dist/specialExams/SpecialExamsPage.js +6 -0
- package/dist/specialExams/SpecialExamsPage.js.map +1 -0
- package/dist/testUtils.d.ts +4 -0
- package/dist/testUtils.js +24 -0
- package/dist/testUtils.js.map +1 -0
- package/dist/types/index.d.ts +40 -0
- package/dist/types/index.js +4 -0
- package/dist/types/index.js.map +1 -0
- package/dist/utils/formatters.d.ts +1 -0
- package/dist/utils/formatters.js +12 -0
- package/dist/utils/formatters.js.map +1 -0
- 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,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,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;
|