@openedx/frontend-app-gradebook 2.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 +279 -0
- package/dist/Main.d.ts +3 -0
- package/dist/Main.js +17 -0
- package/dist/Main.js.map +1 -0
- package/dist/app.d.ts +3 -0
- package/dist/app.js +10 -0
- package/dist/app.js.map +1 -0
- package/dist/components/BulkManagementHistoryView/BulkManagementAlerts.d.ts +5 -0
- package/dist/components/BulkManagementHistoryView/BulkManagementAlerts.js +20 -0
- package/dist/components/BulkManagementHistoryView/BulkManagementAlerts.js.map +1 -0
- package/dist/components/BulkManagementHistoryView/BulkManagementHistoryView.scss +6 -0
- package/dist/components/BulkManagementHistoryView/HistoryTable.d.ts +33 -0
- package/dist/components/BulkManagementHistoryView/HistoryTable.js +53 -0
- package/dist/components/BulkManagementHistoryView/HistoryTable.js.map +1 -0
- package/dist/components/BulkManagementHistoryView/ResultsSummary.d.ts +16 -0
- package/dist/components/BulkManagementHistoryView/ResultsSummary.js +19 -0
- package/dist/components/BulkManagementHistoryView/ResultsSummary.js.map +1 -0
- package/dist/components/BulkManagementHistoryView/data/api.d.ts +5 -0
- package/dist/components/BulkManagementHistoryView/data/api.js +16 -0
- package/dist/components/BulkManagementHistoryView/data/api.js.map +1 -0
- package/dist/components/BulkManagementHistoryView/data/apiHook.d.ts +16 -0
- package/dist/components/BulkManagementHistoryView/data/apiHook.js +34 -0
- package/dist/components/BulkManagementHistoryView/data/apiHook.js.map +1 -0
- package/dist/components/BulkManagementHistoryView/data/queryKeys.d.ts +5 -0
- package/dist/components/BulkManagementHistoryView/data/queryKeys.js +7 -0
- package/dist/components/BulkManagementHistoryView/data/queryKeys.js.map +1 -0
- package/dist/components/BulkManagementHistoryView/data/utils.d.ts +34 -0
- package/dist/components/BulkManagementHistoryView/data/utils.js +45 -0
- package/dist/components/BulkManagementHistoryView/data/utils.js.map +1 -0
- package/dist/components/BulkManagementHistoryView/index.d.ts +2 -0
- package/dist/components/BulkManagementHistoryView/index.js +12 -0
- package/dist/components/BulkManagementHistoryView/index.js.map +1 -0
- package/dist/components/BulkManagementHistoryView/messages.d.ts +24 -0
- package/dist/components/BulkManagementHistoryView/messages.js +20 -0
- package/dist/components/BulkManagementHistoryView/messages.js.map +1 -0
- package/dist/components/GradebookFilters/AssignmentFilter/index.d.ts +10 -0
- package/dist/components/GradebookFilters/AssignmentFilter/index.js +31 -0
- package/dist/components/GradebookFilters/AssignmentFilter/index.js.map +1 -0
- package/dist/components/GradebookFilters/AssignmentGradeFilter/hooks.d.ts +19 -0
- package/dist/components/GradebookFilters/AssignmentGradeFilter/hooks.js +31 -0
- package/dist/components/GradebookFilters/AssignmentGradeFilter/hooks.js.map +1 -0
- package/dist/components/GradebookFilters/AssignmentGradeFilter/index.d.ts +10 -0
- package/dist/components/GradebookFilters/AssignmentGradeFilter/index.js +17 -0
- package/dist/components/GradebookFilters/AssignmentGradeFilter/index.js.map +1 -0
- package/dist/components/GradebookFilters/AssignmentTypeFilter/index.d.ts +10 -0
- package/dist/components/GradebookFilters/AssignmentTypeFilter/index.js +38 -0
- package/dist/components/GradebookFilters/AssignmentTypeFilter/index.js.map +1 -0
- package/dist/components/GradebookFilters/CourseGradeFilter/hooks.d.ts +15 -0
- package/dist/components/GradebookFilters/CourseGradeFilter/hooks.js +34 -0
- package/dist/components/GradebookFilters/CourseGradeFilter/hooks.js.map +1 -0
- package/dist/components/GradebookFilters/CourseGradeFilter/index.d.ts +10 -0
- package/dist/components/GradebookFilters/CourseGradeFilter/index.js +17 -0
- package/dist/components/GradebookFilters/CourseGradeFilter/index.js.map +1 -0
- package/dist/components/GradebookFilters/GradebookFilters.scss +6 -0
- package/dist/components/GradebookFilters/PercentGroup.d.ts +22 -0
- package/dist/components/GradebookFilters/PercentGroup.js +16 -0
- package/dist/components/GradebookFilters/PercentGroup.js.map +1 -0
- package/dist/components/GradebookFilters/SelectGroup.d.ts +24 -0
- package/dist/components/GradebookFilters/SelectGroup.js +17 -0
- package/dist/components/GradebookFilters/SelectGroup.js.map +1 -0
- package/dist/components/GradebookFilters/StudentGroupsFilter/hooks.d.ts +16 -0
- package/dist/components/GradebookFilters/StudentGroupsFilter/hooks.js +46 -0
- package/dist/components/GradebookFilters/StudentGroupsFilter/hooks.js.map +1 -0
- package/dist/components/GradebookFilters/StudentGroupsFilter/index.d.ts +10 -0
- package/dist/components/GradebookFilters/StudentGroupsFilter/index.js +23 -0
- package/dist/components/GradebookFilters/StudentGroupsFilter/index.js.map +1 -0
- package/dist/components/GradebookFilters/data/api.d.ts +10 -0
- package/dist/components/GradebookFilters/data/api.js +27 -0
- package/dist/components/GradebookFilters/data/api.js.map +1 -0
- package/dist/components/GradebookFilters/data/apiHook.d.ts +16 -0
- package/dist/components/GradebookFilters/data/apiHook.js +24 -0
- package/dist/components/GradebookFilters/data/apiHook.js.map +1 -0
- package/dist/components/GradebookFilters/data/hooks.d.ts +7 -0
- package/dist/components/GradebookFilters/data/hooks.js +53 -0
- package/dist/components/GradebookFilters/data/hooks.js.map +1 -0
- package/dist/components/GradebookFilters/data/queryKeys.d.ts +10 -0
- package/dist/components/GradebookFilters/data/queryKeys.js +12 -0
- package/dist/components/GradebookFilters/data/queryKeys.js.map +1 -0
- package/dist/components/GradebookFilters/index.d.ts +10 -0
- package/dist/components/GradebookFilters/index.js +32 -0
- package/dist/components/GradebookFilters/index.js.map +1 -0
- package/dist/components/GradebookFilters/messages.d.ts +112 -0
- package/dist/components/GradebookFilters/messages.js +75 -0
- package/dist/components/GradebookFilters/messages.js.map +1 -0
- package/dist/components/GradebookHeader/hooks.d.ts +13 -0
- package/dist/components/GradebookHeader/hooks.js +28 -0
- package/dist/components/GradebookHeader/hooks.js.map +1 -0
- package/dist/components/GradebookHeader/index.d.ts +2 -0
- package/dist/components/GradebookHeader/index.js +14 -0
- package/dist/components/GradebookHeader/index.js.map +1 -0
- package/dist/components/GradebookHeader/messages.d.ts +48 -0
- package/dist/components/GradebookHeader/messages.js +35 -0
- package/dist/components/GradebookHeader/messages.js.map +1 -0
- package/dist/components/GradesView/BulkManagementControls/index.d.ts +2 -0
- package/dist/components/GradesView/BulkManagementControls/index.js +26 -0
- package/dist/components/GradesView/BulkManagementControls/index.js.map +1 -0
- package/dist/components/GradesView/BulkManagementControls/messages.d.ts +8 -0
- package/dist/components/GradesView/BulkManagementControls/messages.js +10 -0
- package/dist/components/GradesView/BulkManagementControls/messages.js.map +1 -0
- package/dist/components/GradesView/EditModal/HistoryHeader.d.ts +21 -0
- package/dist/components/GradesView/EditModal/HistoryHeader.js +20 -0
- package/dist/components/GradesView/EditModal/HistoryHeader.js.map +1 -0
- package/dist/components/GradesView/EditModal/ModalHeaders.d.ts +3 -0
- package/dist/components/GradesView/EditModal/ModalHeaders.js +26 -0
- package/dist/components/GradesView/EditModal/ModalHeaders.js.map +1 -0
- package/dist/components/GradesView/EditModal/OverrideTable/AdjustedGradeInput/index.d.ts +5 -0
- package/dist/components/GradesView/EditModal/OverrideTable/AdjustedGradeInput/index.js +23 -0
- package/dist/components/GradesView/EditModal/OverrideTable/AdjustedGradeInput/index.js.map +1 -0
- package/dist/components/GradesView/EditModal/OverrideTable/ReasonInput/index.d.ts +6 -0
- package/dist/components/GradesView/EditModal/OverrideTable/ReasonInput/index.js +25 -0
- package/dist/components/GradesView/EditModal/OverrideTable/ReasonInput/index.js.map +1 -0
- package/dist/components/GradesView/EditModal/OverrideTable/index.d.ts +5 -0
- package/dist/components/GradesView/EditModal/OverrideTable/index.js +39 -0
- package/dist/components/GradesView/EditModal/OverrideTable/index.js.map +1 -0
- package/dist/components/GradesView/EditModal/OverrideTable/messages.d.ts +32 -0
- package/dist/components/GradesView/EditModal/OverrideTable/messages.js +25 -0
- package/dist/components/GradesView/EditModal/OverrideTable/messages.js.map +1 -0
- package/dist/components/GradesView/EditModal/index.d.ts +2 -0
- package/dist/components/GradesView/EditModal/index.js +35 -0
- package/dist/components/GradesView/EditModal/index.js.map +1 -0
- package/dist/components/GradesView/EditModal/messages.d.ts +72 -0
- package/dist/components/GradesView/EditModal/messages.js +50 -0
- package/dist/components/GradesView/EditModal/messages.js.map +1 -0
- package/dist/components/GradesView/FilterBadges/FilterBadge.d.ts +9 -0
- package/dist/components/GradesView/FilterBadges/FilterBadge.js +27 -0
- package/dist/components/GradesView/FilterBadges/FilterBadge.js.map +1 -0
- package/dist/components/GradesView/FilterBadges/index.d.ts +8 -0
- package/dist/components/GradesView/FilterBadges/index.js +15 -0
- package/dist/components/GradesView/FilterBadges/index.js.map +1 -0
- package/dist/components/GradesView/FilterMenuToggle/index.d.ts +5 -0
- package/dist/components/GradesView/FilterMenuToggle/index.js +18 -0
- package/dist/components/GradesView/FilterMenuToggle/index.js.map +1 -0
- package/dist/components/GradesView/FilterMenuToggle/messages.d.ts +8 -0
- package/dist/components/GradesView/FilterMenuToggle/messages.js +10 -0
- package/dist/components/GradesView/FilterMenuToggle/messages.js.map +1 -0
- package/dist/components/GradesView/FilteredUsersLabel/index.d.ts +15 -0
- package/dist/components/GradesView/FilteredUsersLabel/index.js +27 -0
- package/dist/components/GradesView/FilteredUsersLabel/index.js.map +1 -0
- package/dist/components/GradesView/FilteredUsersLabel/messages.d.ts +8 -0
- package/dist/components/GradesView/FilteredUsersLabel/messages.js +10 -0
- package/dist/components/GradesView/FilteredUsersLabel/messages.js.map +1 -0
- package/dist/components/GradesView/GradebookTable/Fields.d.ts +2 -0
- package/dist/components/GradesView/GradebookTable/Fields.js +32 -0
- package/dist/components/GradesView/GradebookTable/Fields.js.map +1 -0
- package/dist/components/GradesView/GradebookTable/GradeButton.d.ts +26 -0
- package/dist/components/GradesView/GradebookTable/GradeButton.js +56 -0
- package/dist/components/GradesView/GradebookTable/GradeButton.js.map +1 -0
- package/dist/components/GradesView/GradebookTable/LabelReplacements.d.ts +3 -0
- package/dist/components/GradesView/GradebookTable/LabelReplacements.js +42 -0
- package/dist/components/GradesView/GradebookTable/LabelReplacements.js.map +1 -0
- package/dist/components/GradesView/GradebookTable/hooks.d.ts +11 -0
- package/dist/components/GradesView/GradebookTable/hooks.js +45 -0
- package/dist/components/GradesView/GradebookTable/hooks.js.map +1 -0
- package/dist/components/GradesView/GradebookTable/index.d.ts +5 -0
- package/dist/components/GradesView/GradebookTable/index.js +16 -0
- package/dist/components/GradesView/GradebookTable/index.js.map +1 -0
- package/dist/components/GradesView/GradebookTable/messages.d.ts +64 -0
- package/dist/components/GradesView/GradebookTable/messages.js +45 -0
- package/dist/components/GradesView/GradebookTable/messages.js.map +1 -0
- package/dist/components/GradesView/GradesView.scss +156 -0
- package/dist/components/GradesView/ImportGradesButton/index.d.ts +5 -0
- package/dist/components/GradesView/ImportGradesButton/index.js +38 -0
- package/dist/components/GradesView/ImportGradesButton/index.js.map +1 -0
- package/dist/components/GradesView/ImportGradesButton/messages.d.ts +16 -0
- package/dist/components/GradesView/ImportGradesButton/messages.js +15 -0
- package/dist/components/GradesView/ImportGradesButton/messages.js.map +1 -0
- package/dist/components/GradesView/ImportSuccessToast/hooks.d.ts +10 -0
- package/dist/components/GradesView/ImportSuccessToast/hooks.js +31 -0
- package/dist/components/GradesView/ImportSuccessToast/hooks.js.map +1 -0
- package/dist/components/GradesView/ImportSuccessToast/index.d.ts +5 -0
- package/dist/components/GradesView/ImportSuccessToast/index.js +15 -0
- package/dist/components/GradesView/ImportSuccessToast/index.js.map +1 -0
- package/dist/components/GradesView/ImportSuccessToast/messages.d.ts +17 -0
- package/dist/components/GradesView/ImportSuccessToast/messages.js +15 -0
- package/dist/components/GradesView/ImportSuccessToast/messages.js.map +1 -0
- package/dist/components/GradesView/InterventionsReport/index.d.ts +2 -0
- package/dist/components/GradesView/InterventionsReport/index.js +27 -0
- package/dist/components/GradesView/InterventionsReport/index.js.map +1 -0
- package/dist/components/GradesView/InterventionsReport/messages.d.ts +25 -0
- package/dist/components/GradesView/InterventionsReport/messages.js +20 -0
- package/dist/components/GradesView/InterventionsReport/messages.js.map +1 -0
- package/dist/components/GradesView/PageButtons/index.d.ts +5 -0
- package/dist/components/GradesView/PageButtons/index.js +14 -0
- package/dist/components/GradesView/PageButtons/index.js.map +1 -0
- package/dist/components/GradesView/PageButtons/messages.d.ts +16 -0
- package/dist/components/GradesView/PageButtons/messages.js +15 -0
- package/dist/components/GradesView/PageButtons/messages.js.map +1 -0
- package/dist/components/GradesView/ScoreViewInput/index.d.ts +5 -0
- package/dist/components/GradesView/ScoreViewInput/index.js +20 -0
- package/dist/components/GradesView/ScoreViewInput/index.js.map +1 -0
- package/dist/components/GradesView/ScoreViewInput/messages.d.ts +24 -0
- package/dist/components/GradesView/ScoreViewInput/messages.js +20 -0
- package/dist/components/GradesView/ScoreViewInput/messages.js.map +1 -0
- package/dist/components/GradesView/SearchControls/hooks.d.ts +9 -0
- package/dist/components/GradesView/SearchControls/hooks.js +34 -0
- package/dist/components/GradesView/SearchControls/hooks.js.map +1 -0
- package/dist/components/GradesView/SearchControls/index.d.ts +5 -0
- package/dist/components/GradesView/SearchControls/index.js +14 -0
- package/dist/components/GradesView/SearchControls/index.js.map +1 -0
- package/dist/components/GradesView/SearchControls/messages.d.ts +16 -0
- package/dist/components/GradesView/SearchControls/messages.js +15 -0
- package/dist/components/GradesView/SearchControls/messages.js.map +1 -0
- package/dist/components/GradesView/SpinnerIcon.d.ts +5 -0
- package/dist/components/GradesView/SpinnerIcon.js +15 -0
- package/dist/components/GradesView/SpinnerIcon.js.map +1 -0
- package/dist/components/GradesView/StatusAlerts/index.d.ts +5 -0
- package/dist/components/GradesView/StatusAlerts/index.js +16 -0
- package/dist/components/GradesView/StatusAlerts/index.js.map +1 -0
- package/dist/components/GradesView/StatusAlerts/messages.d.ts +24 -0
- package/dist/components/GradesView/StatusAlerts/messages.js +20 -0
- package/dist/components/GradesView/StatusAlerts/messages.js.map +1 -0
- package/dist/components/GradesView/data/api.d.ts +44 -0
- package/dist/components/GradesView/data/api.js +64 -0
- package/dist/components/GradesView/data/api.js.map +1 -0
- package/dist/components/GradesView/data/apiHook.d.ts +92 -0
- package/dist/components/GradesView/data/apiHook.js +191 -0
- package/dist/components/GradesView/data/apiHook.js.map +1 -0
- package/dist/components/GradesView/data/hooks.d.ts +32 -0
- package/dist/components/GradesView/data/hooks.js +242 -0
- package/dist/components/GradesView/data/hooks.js.map +1 -0
- package/dist/components/GradesView/data/queryKeys.d.ts +13 -0
- package/dist/components/GradesView/data/queryKeys.js +15 -0
- package/dist/components/GradesView/data/queryKeys.js.map +1 -0
- package/dist/components/GradesView/data/utils.d.ts +96 -0
- package/dist/components/GradesView/data/utils.js +103 -0
- package/dist/components/GradesView/data/utils.js.map +1 -0
- package/dist/components/GradesView/index.d.ts +10 -0
- package/dist/components/GradesView/index.js +35 -0
- package/dist/components/GradesView/index.js.map +1 -0
- package/dist/components/GradesView/messages.d.ts +24 -0
- package/dist/components/GradesView/messages.js +20 -0
- package/dist/components/GradesView/messages.js.map +1 -0
- package/dist/components/NetworkButton/index.d.ts +23 -0
- package/dist/components/NetworkButton/index.js +54 -0
- package/dist/components/NetworkButton/index.js.map +1 -0
- package/dist/components/WithSidebar/WithSidebar.scss +36 -0
- package/dist/components/WithSidebar/index.d.ts +9 -0
- package/dist/components/WithSidebar/index.js +34 -0
- package/dist/components/WithSidebar/index.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/containers/GradebookPage/GradebookDataLoader.d.ts +10 -0
- package/dist/containers/GradebookPage/GradebookDataLoader.js +19 -0
- package/dist/containers/GradebookPage/GradebookDataLoader.js.map +1 -0
- package/dist/containers/GradebookPage/index.d.ts +2 -0
- package/dist/containers/GradebookPage/index.js +40 -0
- package/dist/containers/GradebookPage/index.js.map +1 -0
- package/dist/data/api.d.ts +20 -0
- package/dist/data/api.js +36 -0
- package/dist/data/api.js.map +1 -0
- package/dist/data/apiHook.d.ts +40 -0
- package/dist/data/apiHook.js +65 -0
- package/dist/data/apiHook.js.map +1 -0
- package/dist/data/constants/app.d.ts +13 -0
- package/dist/data/constants/app.js +58 -0
- package/dist/data/constants/app.js.map +1 -0
- package/dist/data/constants/errors.d.ts +2 -0
- package/dist/data/constants/errors.js +3 -0
- package/dist/data/constants/errors.js.map +1 -0
- package/dist/data/constants/filters.d.ts +15 -0
- package/dist/data/constants/filters.js +71 -0
- package/dist/data/constants/filters.js.map +1 -0
- package/dist/data/constants/filters.messages.d.ts +56 -0
- package/dist/data/constants/filters.messages.js +40 -0
- package/dist/data/constants/filters.messages.js.map +1 -0
- package/dist/data/constants/grades.d.ts +6 -0
- package/dist/data/constants/grades.js +17 -0
- package/dist/data/constants/grades.js.map +1 -0
- package/dist/data/filtersContext.d.ts +60 -0
- package/dist/data/filtersContext.js +212 -0
- package/dist/data/filtersContext.js.map +1 -0
- package/dist/data/filtersSnapshot.d.ts +20 -0
- package/dist/data/filtersSnapshot.js +15 -0
- package/dist/data/filtersSnapshot.js.map +1 -0
- package/dist/data/formatUtils.d.ts +15 -0
- package/dist/data/formatUtils.js +35 -0
- package/dist/data/formatUtils.js.map +1 -0
- package/dist/data/gradebookUiContext.d.ts +99 -0
- package/dist/data/gradebookUiContext.js +143 -0
- package/dist/data/gradebookUiContext.js.map +1 -0
- package/dist/data/queryClient.d.ts +10 -0
- package/dist/data/queryClient.js +34 -0
- package/dist/data/queryClient.js.map +1 -0
- package/dist/data/queryKeys.d.ts +11 -0
- package/dist/data/queryKeys.js +21 -0
- package/dist/data/queryKeys.js.map +1 -0
- package/dist/data/services/lms/api.d.ts +2 -0
- package/dist/data/services/lms/api.js +104 -0
- package/dist/data/services/lms/api.js.map +1 -0
- package/dist/data/services/lms/constants.d.ts +3 -0
- package/dist/data/services/lms/constants.js +16 -0
- package/dist/data/services/lms/constants.js.map +1 -0
- package/dist/data/services/lms/index.d.ts +2 -0
- package/dist/data/services/lms/index.js +8 -0
- package/dist/data/services/lms/index.js.map +1 -0
- package/dist/data/services/lms/messages.d.ts +2 -0
- package/dist/data/services/lms/messages.js +8 -0
- package/dist/data/services/lms/messages.js.map +1 -0
- package/dist/data/services/lms/urls.d.ts +19 -0
- package/dist/data/services/lms/urls.js +47 -0
- package/dist/data/services/lms/urls.js.map +1 -0
- package/dist/data/services/lms/utils.d.ts +4 -0
- package/dist/data/services/lms/utils.js +34 -0
- package/dist/data/services/lms/utils.js.map +1 -0
- package/dist/data/services/segment/constants.d.ts +8 -0
- package/dist/data/services/segment/constants.js +26 -0
- package/dist/data/services/segment/constants.js.map +1 -0
- package/dist/data/services/segment/events.d.ts +14 -0
- package/dist/data/services/segment/events.js +32 -0
- package/dist/data/services/segment/events.js.map +1 -0
- package/dist/data/utils.d.ts +10 -0
- package/dist/data/utils.js +14 -0
- package/dist/data/utils.js.map +1 -0
- package/dist/i18n/index.d.ts +1 -0
- package/dist/i18n/index.js +2 -0
- package/dist/i18n/index.js.map +1 -0
- package/dist/i18n/utils.d.ts +2 -0
- package/dist/i18n/utils.js +21 -0
- package/dist/i18n/utils.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/messages.d.ts +8 -0
- package/dist/messages.js +10 -0
- package/dist/messages.js.map +1 -0
- package/dist/providers.d.ts +3 -0
- package/dist/providers.js +13 -0
- package/dist/providers.js.map +1 -0
- package/dist/routes.d.ts +11 -0
- package/dist/routes.js +16 -0
- package/dist/routes.js.map +1 -0
- package/dist/style.scss +13 -0
- package/dist/utils/StrictDict.d.ts +2 -0
- package/dist/utils/StrictDict.js +19 -0
- package/dist/utils/StrictDict.js.map +1 -0
- package/dist/utils/formatDate.d.ts +15 -0
- package/dist/utils/formatDate.js +19 -0
- package/dist/utils/formatDate.js.map +1 -0
- package/dist/utils/hoc.d.ts +3 -0
- package/dist/utils/hoc.js +21 -0
- package/dist/utils/hoc.js.map +1 -0
- package/dist/utils/index.d.ts +3 -0
- package/dist/utils/index.js +4 -0
- package/dist/utils/index.js.map +1 -0
- package/dist/utils/keyStore.d.ts +2 -0
- package/dist/utils/keyStore.js +4 -0
- package/dist/utils/keyStore.js.map +1 -0
- package/package.json +89 -0
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { useIntl } from '@openedx/frontend-base';
|
|
3
|
+
import { Button } from '@openedx/paragon';
|
|
4
|
+
import { instructorDashboardUrl } from '../../data/services/lms/urls';
|
|
5
|
+
import useGradebookHeaderData from './hooks';
|
|
6
|
+
import messages from './messages';
|
|
7
|
+
export const GradebookHeader = () => {
|
|
8
|
+
const { formatMessage } = useIntl();
|
|
9
|
+
const { areGradesFrozen, canUserViewGradebook, courseId, handleToggleViewClick, showBulkManagement, toggleViewMessage, } = useGradebookHeaderData();
|
|
10
|
+
const dashboardUrl = instructorDashboardUrl();
|
|
11
|
+
return (_jsxs("div", { className: "gradebook-header", children: [_jsxs("a", { href: dashboardUrl, className: "mb-3", children: [_jsx("span", { "aria-hidden": "true", children: '<< ' }), formatMessage(messages.backToDashboard)] }), _jsx("h1", { children: formatMessage(messages.gradebook) }), _jsxs("div", { className: "subtitle-row d-flex justify-content-between align-items-center", children: [_jsx("h2", { className: "text-break", children: courseId }), showBulkManagement && (_jsx(Button, { variant: "tertiary", onClick: handleToggleViewClick, children: formatMessage(toggleViewMessage) }))] }), areGradesFrozen && (_jsx("div", { className: "alert alert-warning", role: "alert", children: formatMessage(messages.frozenWarning) })), (canUserViewGradebook === false) && (_jsx("div", { className: "alert alert-warning", role: "alert", children: formatMessage(messages.unauthorizedWarning) }))] }));
|
|
12
|
+
};
|
|
13
|
+
export default GradebookHeader;
|
|
14
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/GradebookHeader/index.jsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AACjD,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAE1C,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AACrE,OAAO,sBAAsB,MAAM,SAAS,CAAC;AAC7C,OAAO,QAAQ,MAAM,YAAY,CAAC;AAElC,MAAM,CAAC,MAAM,eAAe,GAAG,GAAG,EAAE;IAClC,MAAM,EAAE,aAAa,EAAE,GAAG,OAAO,EAAE,CAAC;IACpC,MAAM,EACJ,eAAe,EACf,oBAAoB,EACpB,QAAQ,EACR,qBAAqB,EACrB,kBAAkB,EAClB,iBAAiB,GAClB,GAAG,sBAAsB,EAAE,CAAC;IAC7B,MAAM,YAAY,GAAG,sBAAsB,EAAE,CAAC;IAC9C,OAAO,CACL,eAAK,SAAS,EAAC,kBAAkB,aAC/B,aAAG,IAAI,EAAE,YAAY,EAAE,SAAS,EAAC,MAAM,aACrC,8BAAkB,MAAM,YAAE,KAAK,GAAQ,EACtC,aAAa,CAAC,QAAQ,CAAC,eAAe,CAAC,IACtC,EACJ,uBAAK,aAAa,CAAC,QAAQ,CAAC,SAAS,CAAC,GAAM,EAC5C,eAAK,SAAS,EAAC,gEAAgE,aAC7E,aAAI,SAAS,EAAC,YAAY,YAAE,QAAQ,GAAM,EACzC,kBAAkB,IAAI,CACrB,KAAC,MAAM,IAAC,OAAO,EAAC,UAAU,EAAC,OAAO,EAAE,qBAAqB,YACtD,aAAa,CAAC,iBAAiB,CAAC,GAC1B,CACV,IACG,EACL,eAAe,IAAI,CAClB,cAAK,SAAS,EAAC,qBAAqB,EAAC,IAAI,EAAC,OAAO,YAC9C,aAAa,CAAC,QAAQ,CAAC,aAAa,CAAC,GAClC,CACP,EACA,CAAC,oBAAoB,KAAK,KAAK,CAAC,IAAI,CACnC,cAAK,SAAS,EAAC,qBAAqB,EAAC,IAAI,EAAC,OAAO,YAC9C,aAAa,CAAC,QAAQ,CAAC,mBAAmB,CAAC,GACxC,CACP,IACG,CACP,CAAC;AACJ,CAAC,CAAC;AAEF,eAAe,eAAe,CAAC","sourcesContent":["import { useIntl } from '@openedx/frontend-base';\nimport { Button } from '@openedx/paragon';\n\nimport { instructorDashboardUrl } from '@src/data/services/lms/urls';\nimport useGradebookHeaderData from './hooks';\nimport messages from './messages';\n\nexport const GradebookHeader = () => {\n const { formatMessage } = useIntl();\n const {\n areGradesFrozen,\n canUserViewGradebook,\n courseId,\n handleToggleViewClick,\n showBulkManagement,\n toggleViewMessage,\n } = useGradebookHeaderData();\n const dashboardUrl = instructorDashboardUrl();\n return (\n <div className=\"gradebook-header\">\n <a href={dashboardUrl} className=\"mb-3\">\n <span aria-hidden=\"true\">{'<< '}</span>\n {formatMessage(messages.backToDashboard)}\n </a>\n <h1>{formatMessage(messages.gradebook)}</h1>\n <div className=\"subtitle-row d-flex justify-content-between align-items-center\">\n <h2 className=\"text-break\">{courseId}</h2>\n {showBulkManagement && (\n <Button variant=\"tertiary\" onClick={handleToggleViewClick}>\n {formatMessage(toggleViewMessage)}\n </Button>\n )}\n </div>\n {areGradesFrozen && (\n <div className=\"alert alert-warning\" role=\"alert\">\n {formatMessage(messages.frozenWarning)}\n </div>\n )}\n {(canUserViewGradebook === false) && (\n <div className=\"alert alert-warning\" role=\"alert\">\n {formatMessage(messages.unauthorizedWarning)}\n </div>\n )}\n </div>\n );\n};\n\nexport default GradebookHeader;\n"]}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
export default messages;
|
|
2
|
+
declare namespace messages {
|
|
3
|
+
namespace backToDashboard {
|
|
4
|
+
let id: string;
|
|
5
|
+
let defaultMessage: string;
|
|
6
|
+
let description: string;
|
|
7
|
+
}
|
|
8
|
+
namespace gradebook {
|
|
9
|
+
let id_1: string;
|
|
10
|
+
export { id_1 as id };
|
|
11
|
+
let defaultMessage_1: string;
|
|
12
|
+
export { defaultMessage_1 as defaultMessage };
|
|
13
|
+
let description_1: string;
|
|
14
|
+
export { description_1 as description };
|
|
15
|
+
}
|
|
16
|
+
namespace frozenWarning {
|
|
17
|
+
let id_2: string;
|
|
18
|
+
export { id_2 as id };
|
|
19
|
+
let defaultMessage_2: string;
|
|
20
|
+
export { defaultMessage_2 as defaultMessage };
|
|
21
|
+
let description_2: string;
|
|
22
|
+
export { description_2 as description };
|
|
23
|
+
}
|
|
24
|
+
namespace unauthorizedWarning {
|
|
25
|
+
let id_3: string;
|
|
26
|
+
export { id_3 as id };
|
|
27
|
+
let defaultMessage_3: string;
|
|
28
|
+
export { defaultMessage_3 as defaultMessage };
|
|
29
|
+
let description_3: string;
|
|
30
|
+
export { description_3 as description };
|
|
31
|
+
}
|
|
32
|
+
namespace toActivityLog {
|
|
33
|
+
let id_4: string;
|
|
34
|
+
export { id_4 as id };
|
|
35
|
+
let defaultMessage_4: string;
|
|
36
|
+
export { defaultMessage_4 as defaultMessage };
|
|
37
|
+
let description_4: string;
|
|
38
|
+
export { description_4 as description };
|
|
39
|
+
}
|
|
40
|
+
namespace toGradesView {
|
|
41
|
+
let id_5: string;
|
|
42
|
+
export { id_5 as id };
|
|
43
|
+
let defaultMessage_5: string;
|
|
44
|
+
export { defaultMessage_5 as defaultMessage };
|
|
45
|
+
let description_5: string;
|
|
46
|
+
export { description_5 as description };
|
|
47
|
+
}
|
|
48
|
+
}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { defineMessages } from '@openedx/frontend-base';
|
|
2
|
+
const messages = defineMessages({
|
|
3
|
+
backToDashboard: {
|
|
4
|
+
id: 'gradebook.GradebookHeader.backButton',
|
|
5
|
+
defaultMessage: 'Back to Dashboard',
|
|
6
|
+
description: 'Button text to take user back to LMS dashboard in Gradebook Header',
|
|
7
|
+
},
|
|
8
|
+
gradebook: {
|
|
9
|
+
id: 'gradebook.GradebookHeader.appLabel',
|
|
10
|
+
defaultMessage: 'Gradebook',
|
|
11
|
+
description: 'Top-level app title in Gradebook Header component',
|
|
12
|
+
},
|
|
13
|
+
frozenWarning: {
|
|
14
|
+
id: 'gradebook.GradebookHeader.frozenWarning',
|
|
15
|
+
defaultMessage: 'The grades for this course are now frozen. Editing of grades is no longer allowed.',
|
|
16
|
+
description: 'Warning message in Gradebook Header for frozen messages',
|
|
17
|
+
},
|
|
18
|
+
unauthorizedWarning: {
|
|
19
|
+
id: 'gradebook.GradebookHeader.unauthorizedWarning',
|
|
20
|
+
defaultMessage: 'You are not authorized to view the gradebook for this course.',
|
|
21
|
+
description: 'Warning message in Gradebook Header when user is not allowed to view the app',
|
|
22
|
+
},
|
|
23
|
+
toActivityLog: {
|
|
24
|
+
id: 'gradebook.GradebookHeader.toActivityLogButton',
|
|
25
|
+
defaultMessage: 'View Bulk Management History',
|
|
26
|
+
description: 'Button text for button navigating to Bulk Managment Activity Log',
|
|
27
|
+
},
|
|
28
|
+
toGradesView: {
|
|
29
|
+
id: 'gradebook.GradebookHeader.toGradesView',
|
|
30
|
+
defaultMessage: 'Return to Gradebook',
|
|
31
|
+
description: 'Button text for button navigating to Grades view.',
|
|
32
|
+
},
|
|
33
|
+
});
|
|
34
|
+
export default messages;
|
|
35
|
+
//# sourceMappingURL=messages.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"messages.js","sourceRoot":"","sources":["../../../src/components/GradebookHeader/messages.js"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAExD,MAAM,QAAQ,GAAG,cAAc,CAAC;IAC9B,eAAe,EAAE;QACf,EAAE,EAAE,sCAAsC;QAC1C,cAAc,EAAE,mBAAmB;QACnC,WAAW,EAAE,oEAAoE;KAClF;IACD,SAAS,EAAE;QACT,EAAE,EAAE,oCAAoC;QACxC,cAAc,EAAE,WAAW;QAC3B,WAAW,EAAE,mDAAmD;KACjE;IACD,aAAa,EAAE;QACb,EAAE,EAAE,yCAAyC;QAC7C,cAAc,EAAE,oFAAoF;QACpG,WAAW,EAAE,yDAAyD;KACvE;IACD,mBAAmB,EAAE;QACnB,EAAE,EAAE,+CAA+C;QACnD,cAAc,EAAE,+DAA+D;QAC/E,WAAW,EAAE,8EAA8E;KAC5F;IACD,aAAa,EAAE;QACb,EAAE,EAAE,+CAA+C;QACnD,cAAc,EAAE,8BAA8B;QAC9C,WAAW,EAAE,kEAAkE;KAChF;IACD,YAAY,EAAE;QACZ,EAAE,EAAE,wCAAwC;QAC5C,cAAc,EAAE,qBAAqB;QACrC,WAAW,EAAE,mDAAmD;KACjE;CACF,CAAC,CAAC;AAEH,eAAe,QAAQ,CAAC","sourcesContent":["import { defineMessages } from '@openedx/frontend-base';\n\nconst messages = defineMessages({\n backToDashboard: {\n id: 'gradebook.GradebookHeader.backButton',\n defaultMessage: 'Back to Dashboard',\n description: 'Button text to take user back to LMS dashboard in Gradebook Header',\n },\n gradebook: {\n id: 'gradebook.GradebookHeader.appLabel',\n defaultMessage: 'Gradebook',\n description: 'Top-level app title in Gradebook Header component',\n },\n frozenWarning: {\n id: 'gradebook.GradebookHeader.frozenWarning',\n defaultMessage: 'The grades for this course are now frozen. Editing of grades is no longer allowed.',\n description: 'Warning message in Gradebook Header for frozen messages',\n },\n unauthorizedWarning: {\n id: 'gradebook.GradebookHeader.unauthorizedWarning',\n defaultMessage: 'You are not authorized to view the gradebook for this course.',\n description: 'Warning message in Gradebook Header when user is not allowed to view the app',\n },\n toActivityLog: {\n id: 'gradebook.GradebookHeader.toActivityLogButton',\n defaultMessage: 'View Bulk Management History',\n description: 'Button text for button navigating to Bulk Managment Activity Log',\n },\n toGradesView: {\n id: 'gradebook.GradebookHeader.toGradesView',\n defaultMessage: 'Return to Gradebook',\n description: 'Button text for button navigating to Grades view.',\n },\n});\n\nexport default messages;\n"]}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import NetworkButton from '../../NetworkButton';
|
|
3
|
+
import { useShowBulkManagement } from '../../../data/apiHook';
|
|
4
|
+
import { trackGradesReportDownloaded } from '../../../data/services/segment/events';
|
|
5
|
+
import ImportGradesButton from '../ImportGradesButton';
|
|
6
|
+
import { useGradeExportUrl } from '../data/hooks';
|
|
7
|
+
import messages from './messages';
|
|
8
|
+
/**
|
|
9
|
+
* <BulkManagementControls />
|
|
10
|
+
* Provides download buttons for Bulk Management and Intervention reports, only if
|
|
11
|
+
* showBulkManagement is set in redus.
|
|
12
|
+
*/
|
|
13
|
+
export const BulkManagementControls = () => {
|
|
14
|
+
const gradeExportUrl = useGradeExportUrl();
|
|
15
|
+
const showBulkManagement = useShowBulkManagement();
|
|
16
|
+
const handleClickExportGrades = () => {
|
|
17
|
+
trackGradesReportDownloaded();
|
|
18
|
+
window.location.assign(gradeExportUrl);
|
|
19
|
+
};
|
|
20
|
+
if (!showBulkManagement) {
|
|
21
|
+
return null;
|
|
22
|
+
}
|
|
23
|
+
return (_jsxs("div", { className: "d-flex", children: [_jsx(NetworkButton, { label: messages.downloadGradesBtn, onClick: handleClickExportGrades }), _jsx(ImportGradesButton, {})] }));
|
|
24
|
+
};
|
|
25
|
+
export default BulkManagementControls;
|
|
26
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/components/GradesView/BulkManagementControls/index.jsx"],"names":[],"mappings":";AAAA,OAAO,aAAa,MAAM,+BAA+B,CAAC;AAC1D,OAAO,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAC1D,OAAO,EAAE,2BAA2B,EAAE,MAAM,mCAAmC,CAAC;AAEhF,OAAO,kBAAkB,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAClD,OAAO,QAAQ,MAAM,YAAY,CAAC;AAElC;;;;GAIG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,GAAG,EAAE;IACzC,MAAM,cAAc,GAAG,iBAAiB,EAAE,CAAC;IAC3C,MAAM,kBAAkB,GAAG,qBAAqB,EAAE,CAAC;IAEnD,MAAM,uBAAuB,GAAG,GAAG,EAAE;QACnC,2BAA2B,EAAE,CAAC;QAC9B,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;IACzC,CAAC,CAAC;IAEF,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAAC,OAAO,IAAI,CAAC;IAAC,CAAC;IACzC,OAAO,CACL,eAAK,SAAS,EAAC,QAAQ,aACrB,KAAC,aAAa,IACZ,KAAK,EAAE,QAAQ,CAAC,iBAAiB,EACjC,OAAO,EAAE,uBAAuB,GAChC,EACF,KAAC,kBAAkB,KAAG,IAClB,CACP,CAAC;AACJ,CAAC,CAAC;AAEF,eAAe,sBAAsB,CAAC","sourcesContent":["import NetworkButton from '@src/components/NetworkButton';\nimport { useShowBulkManagement } from '@src/data/apiHook';\nimport { trackGradesReportDownloaded } from '@src/data/services/segment/events';\n\nimport ImportGradesButton from '../ImportGradesButton';\nimport { useGradeExportUrl } from '../data/hooks';\nimport messages from './messages';\n\n/**\n * <BulkManagementControls />\n * Provides download buttons for Bulk Management and Intervention reports, only if\n * showBulkManagement is set in redus.\n */\nexport const BulkManagementControls = () => {\n const gradeExportUrl = useGradeExportUrl();\n const showBulkManagement = useShowBulkManagement();\n\n const handleClickExportGrades = () => {\n trackGradesReportDownloaded();\n window.location.assign(gradeExportUrl);\n };\n\n if (!showBulkManagement) { return null; }\n return (\n <div className=\"d-flex\">\n <NetworkButton\n label={messages.downloadGradesBtn}\n onClick={handleClickExportGrades}\n />\n <ImportGradesButton />\n </div>\n );\n};\n\nexport default BulkManagementControls;\n"]}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { defineMessages } from '@openedx/frontend-base';
|
|
2
|
+
const messages = defineMessages({
|
|
3
|
+
downloadGradesBtn: {
|
|
4
|
+
id: 'gradebook.GradesView.BulkManagementControls.bulkManagementLabel',
|
|
5
|
+
defaultMessage: 'Download Grades',
|
|
6
|
+
description: 'A labeled button that allows an admin user to download course grades all at once (in bulk).',
|
|
7
|
+
},
|
|
8
|
+
});
|
|
9
|
+
export default messages;
|
|
10
|
+
//# sourceMappingURL=messages.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"messages.js","sourceRoot":"","sources":["../../../../src/components/GradesView/BulkManagementControls/messages.js"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAExD,MAAM,QAAQ,GAAG,cAAc,CAAC;IAC9B,iBAAiB,EAAE;QACjB,EAAE,EAAE,iEAAiE;QACrE,cAAc,EAAE,iBAAiB;QACjC,WAAW,EAAE,6FAA6F;KAC3G;CACF,CAAC,CAAC;AAEH,eAAe,QAAQ,CAAC","sourcesContent":["import { defineMessages } from '@openedx/frontend-base';\n\nconst messages = defineMessages({\n downloadGradesBtn: {\n id: 'gradebook.GradesView.BulkManagementControls.bulkManagementLabel',\n defaultMessage: 'Download Grades',\n description: 'A labeled button that allows an admin user to download course grades all at once (in bulk).',\n },\n});\n\nexport default messages;\n"]}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
export default HistoryHeader;
|
|
2
|
+
/**
|
|
3
|
+
* HistoryHeader
|
|
4
|
+
* simple display container for an individual history table header
|
|
5
|
+
* @param {string} id - header id
|
|
6
|
+
* @param {string} label - header label
|
|
7
|
+
* @param {string} value - header value
|
|
8
|
+
*/
|
|
9
|
+
declare function HistoryHeader({ id, label, value }: string): import("react").JSX.Element;
|
|
10
|
+
declare namespace HistoryHeader {
|
|
11
|
+
namespace defaultProps {
|
|
12
|
+
let value: null;
|
|
13
|
+
}
|
|
14
|
+
namespace propTypes {
|
|
15
|
+
export let id: PropTypes.Validator<string>;
|
|
16
|
+
export let label: PropTypes.Validator<NonNullable<PropTypes.ReactNodeLike>>;
|
|
17
|
+
let value_1: PropTypes.Requireable<NonNullable<string | number | null | undefined>>;
|
|
18
|
+
export { value_1 as value };
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
import PropTypes from 'prop-types';
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { jsxs as _jsxs, jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import PropTypes from 'prop-types';
|
|
3
|
+
/**
|
|
4
|
+
* HistoryHeader
|
|
5
|
+
* simple display container for an individual history table header
|
|
6
|
+
* @param {string} id - header id
|
|
7
|
+
* @param {string} label - header label
|
|
8
|
+
* @param {string} value - header value
|
|
9
|
+
*/
|
|
10
|
+
const HistoryHeader = ({ id, label, value }) => (_jsxs("div", { children: [_jsxs("div", { className: `grade-history-header grade-history-${id}`, children: [label, ": "] }), _jsx("div", { children: value })] }));
|
|
11
|
+
HistoryHeader.defaultProps = {
|
|
12
|
+
value: null,
|
|
13
|
+
};
|
|
14
|
+
HistoryHeader.propTypes = {
|
|
15
|
+
id: PropTypes.string.isRequired,
|
|
16
|
+
label: PropTypes.node.isRequired,
|
|
17
|
+
value: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),
|
|
18
|
+
};
|
|
19
|
+
export default HistoryHeader;
|
|
20
|
+
//# sourceMappingURL=HistoryHeader.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"HistoryHeader.js","sourceRoot":"","sources":["../../../../src/components/GradesView/EditModal/HistoryHeader.jsx"],"names":[],"mappings":";AAAA,OAAO,SAAS,MAAM,YAAY,CAAC;AAEnC;;;;;;GAMG;AACH,MAAM,aAAa,GAAG,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CAC9C,0BACE,eAAK,SAAS,EAAE,sCAAsC,EAAE,EAAE,aAAG,KAAK,UAAS,EAC3E,wBAAM,KAAK,GAAO,IACd,CACP,CAAC;AACF,aAAa,CAAC,YAAY,GAAG;IAC3B,KAAK,EAAE,IAAI;CACZ,CAAC;AACF,aAAa,CAAC,SAAS,GAAG;IACxB,EAAE,EAAE,SAAS,CAAC,MAAM,CAAC,UAAU;IAC/B,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,UAAU;IAChC,KAAK,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC,SAAS,CAAC,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC;CACjE,CAAC;AAEF,eAAe,aAAa,CAAC","sourcesContent":["import PropTypes from 'prop-types';\n\n/**\n * HistoryHeader\n * simple display container for an individual history table header\n * @param {string} id - header id\n * @param {string} label - header label\n * @param {string} value - header value\n */\nconst HistoryHeader = ({ id, label, value }) => (\n <div>\n <div className={`grade-history-header grade-history-${id}`}>{label}: </div>\n <div>{value}</div>\n </div>\n);\nHistoryHeader.defaultProps = {\n value: null,\n};\nHistoryHeader.propTypes = {\n id: PropTypes.string.isRequired,\n label: PropTypes.node.isRequired,\n value: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n};\n\nexport default HistoryHeader;\n"]}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { useIntl } from '@openedx/frontend-base';
|
|
3
|
+
import { StrictDict } from '../../../utils';
|
|
4
|
+
import { useGradebookUi } from '../../../data/gradebookUiContext';
|
|
5
|
+
import { useGradeOverrideData } from '../data/hooks';
|
|
6
|
+
import messages from './messages';
|
|
7
|
+
import HistoryHeader from './HistoryHeader';
|
|
8
|
+
export const HistoryKeys = StrictDict({
|
|
9
|
+
assignment: 'assignment',
|
|
10
|
+
student: 'student',
|
|
11
|
+
originalGrade: 'original-grade',
|
|
12
|
+
currentGrade: 'current-grade',
|
|
13
|
+
});
|
|
14
|
+
/**
|
|
15
|
+
* <ModalHeaders />
|
|
16
|
+
* Provides a list of HistoryHeaders for the student name, assignment,
|
|
17
|
+
* original grade, and current override grade.
|
|
18
|
+
*/
|
|
19
|
+
export const ModalHeaders = () => {
|
|
20
|
+
const { assignmentName, updateUserName } = useGradebookUi().modalState;
|
|
21
|
+
const { gradeOverrideCurrentEarnedGradedOverride, gradeOriginalEarnedGraded, } = useGradeOverrideData();
|
|
22
|
+
const { formatMessage } = useIntl();
|
|
23
|
+
return (_jsxs("div", { children: [_jsx(HistoryHeader, { id: HistoryKeys.assignment, label: formatMessage(messages.assignmentHeader), value: assignmentName }), _jsx(HistoryHeader, { id: HistoryKeys.student, label: formatMessage(messages.studentHeader), value: updateUserName }), _jsx(HistoryHeader, { id: HistoryKeys.originalGrade, label: formatMessage(messages.originalGradeHeader), value: gradeOriginalEarnedGraded }), _jsx(HistoryHeader, { id: HistoryKeys.currentGrade, label: formatMessage(messages.currentGradeHeader), value: gradeOverrideCurrentEarnedGradedOverride })] }));
|
|
24
|
+
};
|
|
25
|
+
export default ModalHeaders;
|
|
26
|
+
//# sourceMappingURL=ModalHeaders.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ModalHeaders.js","sourceRoot":"","sources":["../../../../src/components/GradesView/EditModal/ModalHeaders.jsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AAEjD,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AACxC,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAC9D,OAAO,EAAE,oBAAoB,EAAE,MAAM,uCAAuC,CAAC;AAE7E,OAAO,QAAQ,MAAM,YAAY,CAAC;AAClC,OAAO,aAAa,MAAM,iBAAiB,CAAC;AAE5C,MAAM,CAAC,MAAM,WAAW,GAAG,UAAU,CAAC;IACpC,UAAU,EAAE,YAAY;IACxB,OAAO,EAAE,SAAS;IAClB,aAAa,EAAE,gBAAgB;IAC/B,YAAY,EAAE,eAAe;CAC9B,CAAC,CAAC;AAEH;;;;GAIG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,GAAG,EAAE;IAC/B,MAAM,EAAE,cAAc,EAAE,cAAc,EAAE,GAAG,cAAc,EAAE,CAAC,UAAU,CAAC;IACvE,MAAM,EACJ,wCAAwC,EACxC,yBAAyB,GAC1B,GAAG,oBAAoB,EAAE,CAAC;IAC3B,MAAM,EAAE,aAAa,EAAE,GAAG,OAAO,EAAE,CAAC;IACpC,OAAO,CACL,0BACE,KAAC,aAAa,IACZ,EAAE,EAAE,WAAW,CAAC,UAAU,EAC1B,KAAK,EAAE,aAAa,CAAC,QAAQ,CAAC,gBAAgB,CAAC,EAC/C,KAAK,EAAE,cAAc,GACrB,EACF,KAAC,aAAa,IACZ,EAAE,EAAE,WAAW,CAAC,OAAO,EACvB,KAAK,EAAE,aAAa,CAAC,QAAQ,CAAC,aAAa,CAAC,EAC5C,KAAK,EAAE,cAAc,GACrB,EACF,KAAC,aAAa,IACZ,EAAE,EAAE,WAAW,CAAC,aAAa,EAC7B,KAAK,EAAE,aAAa,CAAC,QAAQ,CAAC,mBAAmB,CAAC,EAClD,KAAK,EAAE,yBAAyB,GAChC,EACF,KAAC,aAAa,IACZ,EAAE,EAAE,WAAW,CAAC,YAAY,EAC5B,KAAK,EAAE,aAAa,CAAC,QAAQ,CAAC,kBAAkB,CAAC,EACjD,KAAK,EAAE,wCAAwC,GAC/C,IACE,CACP,CAAC;AACJ,CAAC,CAAC;AAEF,eAAe,YAAY,CAAC","sourcesContent":["import { useIntl } from '@openedx/frontend-base';\n\nimport { StrictDict } from '@src/utils';\nimport { useGradebookUi } from '@src/data/gradebookUiContext';\nimport { useGradeOverrideData } from '@src/components/GradesView/data/hooks';\n\nimport messages from './messages';\nimport HistoryHeader from './HistoryHeader';\n\nexport const HistoryKeys = StrictDict({\n assignment: 'assignment',\n student: 'student',\n originalGrade: 'original-grade',\n currentGrade: 'current-grade',\n});\n\n/**\n * <ModalHeaders />\n * Provides a list of HistoryHeaders for the student name, assignment,\n * original grade, and current override grade.\n */\nexport const ModalHeaders = () => {\n const { assignmentName, updateUserName } = useGradebookUi().modalState;\n const {\n gradeOverrideCurrentEarnedGradedOverride,\n gradeOriginalEarnedGraded,\n } = useGradeOverrideData();\n const { formatMessage } = useIntl();\n return (\n <div>\n <HistoryHeader\n id={HistoryKeys.assignment}\n label={formatMessage(messages.assignmentHeader)}\n value={assignmentName}\n />\n <HistoryHeader\n id={HistoryKeys.student}\n label={formatMessage(messages.studentHeader)}\n value={updateUserName}\n />\n <HistoryHeader\n id={HistoryKeys.originalGrade}\n label={formatMessage(messages.originalGradeHeader)}\n value={gradeOriginalEarnedGraded}\n />\n <HistoryHeader\n id={HistoryKeys.currentGrade}\n label={formatMessage(messages.currentGradeHeader)}\n value={gradeOverrideCurrentEarnedGradedOverride}\n />\n </div>\n );\n};\n\nexport default ModalHeaders;\n"]}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { Form } from '@openedx/paragon';
|
|
3
|
+
import { useGradebookUi } from '../../../../../data/gradebookUiContext';
|
|
4
|
+
import { getLocalizedSlash } from '../../../../../i18n/utils';
|
|
5
|
+
import { useEditModalPossibleGrade } from '../../../data/hooks';
|
|
6
|
+
/**
|
|
7
|
+
* <AdjustedGradeInput />
|
|
8
|
+
* Input control for adjusting the grade of a unit
|
|
9
|
+
* displays an "/ ${possibleGrade} if there is one in the data model.
|
|
10
|
+
*/
|
|
11
|
+
export const AdjustedGradeInput = () => {
|
|
12
|
+
const possibleGrade = useEditModalPossibleGrade();
|
|
13
|
+
const { modalState, setModalState } = useGradebookUi();
|
|
14
|
+
const value = modalState.adjustedGradeValue;
|
|
15
|
+
const hintText = possibleGrade && ` ${getLocalizedSlash()} ${possibleGrade}`;
|
|
16
|
+
const onChange = ({ target }) => {
|
|
17
|
+
setModalState({ adjustedGradeValue: target.value });
|
|
18
|
+
};
|
|
19
|
+
return (_jsxs("span", { children: [_jsx(Form.Control, { type: "text", name: "adjustedGradeValue", value: value, onChange: onChange }), hintText] }));
|
|
20
|
+
};
|
|
21
|
+
AdjustedGradeInput.propTypes = {};
|
|
22
|
+
export default AdjustedGradeInput;
|
|
23
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../src/components/GradesView/EditModal/OverrideTable/AdjustedGradeInput/index.jsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAExC,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAC9D,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,EAAE,yBAAyB,EAAE,MAAM,uCAAuC,CAAC;AAElF;;;;GAIG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,GAAG,EAAE;IACrC,MAAM,aAAa,GAAG,yBAAyB,EAAE,CAAC;IAClD,MAAM,EAAE,UAAU,EAAE,aAAa,EAAE,GAAG,cAAc,EAAE,CAAC;IACvD,MAAM,KAAK,GAAG,UAAU,CAAC,kBAAkB,CAAC;IAC5C,MAAM,QAAQ,GAAG,aAAa,IAAI,IAAI,iBAAiB,EAAE,IAAI,aAAa,EAAE,CAAC;IAE7E,MAAM,QAAQ,GAAG,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE;QAC9B,aAAa,CAAC,EAAE,kBAAkB,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;IACtD,CAAC,CAAC;IAEF,OAAO,CACL,2BACE,KAAC,IAAI,CAAC,OAAO,IACX,IAAI,EAAC,MAAM,EACX,IAAI,EAAC,oBAAoB,EACzB,KAAK,EAAE,KAAK,EACZ,QAAQ,EAAE,QAAQ,GAClB,EACD,QAAQ,IACJ,CACR,CAAC;AACJ,CAAC,CAAC;AAEF,kBAAkB,CAAC,SAAS,GAAG,EAAE,CAAC;AAElC,eAAe,kBAAkB,CAAC","sourcesContent":["import { Form } from '@openedx/paragon';\n\nimport { useGradebookUi } from '@src/data/gradebookUiContext';\nimport { getLocalizedSlash } from '@src/i18n/utils';\nimport { useEditModalPossibleGrade } from '@src/components/GradesView/data/hooks';\n\n/**\n * <AdjustedGradeInput />\n * Input control for adjusting the grade of a unit\n * displays an \"/ ${possibleGrade} if there is one in the data model.\n */\nexport const AdjustedGradeInput = () => {\n const possibleGrade = useEditModalPossibleGrade();\n const { modalState, setModalState } = useGradebookUi();\n const value = modalState.adjustedGradeValue;\n const hintText = possibleGrade && ` ${getLocalizedSlash()} ${possibleGrade}`;\n\n const onChange = ({ target }) => {\n setModalState({ adjustedGradeValue: target.value });\n };\n\n return (\n <span>\n <Form.Control\n type=\"text\"\n name=\"adjustedGradeValue\"\n value={value}\n onChange={onChange}\n />\n {hintText}\n </span>\n );\n};\n\nAdjustedGradeInput.propTypes = {};\n\nexport default AdjustedGradeInput;\n"]}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { useEffect, useRef } from 'react';
|
|
3
|
+
import { Form } from '@openedx/paragon';
|
|
4
|
+
import { useGradebookUi } from '../../../../../data/gradebookUiContext';
|
|
5
|
+
export const controlTestId = 'reason-input-control';
|
|
6
|
+
/**
|
|
7
|
+
* <ReasonInput />
|
|
8
|
+
* Input control for the "reason for change" field in the Edit modal.
|
|
9
|
+
*/
|
|
10
|
+
export const ReasonInput = () => {
|
|
11
|
+
const ref = useRef(null);
|
|
12
|
+
const { modalState, setModalState } = useGradebookUi();
|
|
13
|
+
const value = modalState.reasonForChange;
|
|
14
|
+
useEffect(() => {
|
|
15
|
+
var _a;
|
|
16
|
+
(_a = ref.current) === null || _a === void 0 ? void 0 : _a.focus();
|
|
17
|
+
}, []);
|
|
18
|
+
const onChange = (event) => {
|
|
19
|
+
setModalState({ reasonForChange: event.target.value });
|
|
20
|
+
};
|
|
21
|
+
return (_jsx(Form.Control, { type: "text", name: "reasonForChange", "data-testid": controlTestId, value, onChange, ref }));
|
|
22
|
+
};
|
|
23
|
+
ReasonInput.propTypes = {};
|
|
24
|
+
export default ReasonInput;
|
|
25
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../src/components/GradesView/EditModal/OverrideTable/ReasonInput/index.jsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC;AAC1C,OAAO,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAExC,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAE9D,MAAM,CAAC,MAAM,aAAa,GAAG,sBAAsB,CAAC;AAEpD;;;GAGG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG,GAAG,EAAE;IAC9B,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;IACzB,MAAM,EAAE,UAAU,EAAE,aAAa,EAAE,GAAG,cAAc,EAAE,CAAC;IACvD,MAAM,KAAK,GAAG,UAAU,CAAC,eAAe,CAAC;IAEzC,SAAS,CAAC,GAAG,EAAE;;QACb,MAAA,GAAG,CAAC,OAAO,0CAAE,KAAK,EAAE,CAAC;IACvB,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,MAAM,QAAQ,GAAG,CAAC,KAAK,EAAE,EAAE;QACzB,aAAa,CAAC,EAAE,eAAe,EAAE,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;IACzD,CAAC,CAAC;IAEF,OAAO,CACL,KAAC,IAAI,CAAC,OAAO,IACX,IAAI,EAAC,MAAM,EACX,IAAI,EAAC,iBAAiB,iBACT,aAAa,EACpB,KAAK,EAAE,QAAQ,EAAE,GAAG,GAC1B,CACH,CAAC;AACJ,CAAC,CAAC;AAEF,WAAW,CAAC,SAAS,GAAG,EAAE,CAAC;AAE3B,eAAe,WAAW,CAAC","sourcesContent":["import { useEffect, useRef } from 'react';\nimport { Form } from '@openedx/paragon';\n\nimport { useGradebookUi } from '@src/data/gradebookUiContext';\n\nexport const controlTestId = 'reason-input-control';\n\n/**\n * <ReasonInput />\n * Input control for the \"reason for change\" field in the Edit modal.\n */\nexport const ReasonInput = () => {\n const ref = useRef(null);\n const { modalState, setModalState } = useGradebookUi();\n const value = modalState.reasonForChange;\n\n useEffect(() => {\n ref.current?.focus();\n }, []);\n\n const onChange = (event) => {\n setModalState({ reasonForChange: event.target.value });\n };\n\n return (\n <Form.Control\n type=\"text\"\n name=\"reasonForChange\"\n data-testid={controlTestId}\n {...{ value, onChange, ref }}\n />\n );\n};\n\nReasonInput.propTypes = {};\n\nexport default ReasonInput;\n"]}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { DataTable } from '@openedx/paragon';
|
|
3
|
+
import { useIntl } from '@openedx/frontend-base';
|
|
4
|
+
import { formatDateForDisplay } from '../../../../utils';
|
|
5
|
+
import { gradeOverrideHistoryColumns as columns } from '../../../../data/constants/app';
|
|
6
|
+
import { useGradeOverrideData } from '../../data/hooks';
|
|
7
|
+
import ReasonInput from './ReasonInput';
|
|
8
|
+
import AdjustedGradeInput from './AdjustedGradeInput';
|
|
9
|
+
import messages from './messages';
|
|
10
|
+
/**
|
|
11
|
+
* <OverrideTable />
|
|
12
|
+
* Table containing previous grade override entries, and an "edit" row
|
|
13
|
+
* with todays date, an AdjustedGradeInput and a ReasonInput
|
|
14
|
+
*/
|
|
15
|
+
export const OverrideTable = () => {
|
|
16
|
+
const { formatMessage } = useIntl();
|
|
17
|
+
const { gradeOverrideHistoryResults, hasOverrideErrors: hide } = useGradeOverrideData();
|
|
18
|
+
if (hide) {
|
|
19
|
+
return null;
|
|
20
|
+
}
|
|
21
|
+
const tableColumns = [
|
|
22
|
+
{ Header: formatMessage(messages.dateHeader), accessor: columns.date },
|
|
23
|
+
{ Header: formatMessage(messages.graderHeader), accessor: columns.grader },
|
|
24
|
+
{ Header: formatMessage(messages.reasonHeader), accessor: columns.reason },
|
|
25
|
+
{ Header: formatMessage(messages.adjustedGradeHeader), accessor: columns.adjustedGrade },
|
|
26
|
+
];
|
|
27
|
+
const tableData = [
|
|
28
|
+
...(gradeOverrideHistoryResults || []),
|
|
29
|
+
{
|
|
30
|
+
adjustedGrade: _jsx(AdjustedGradeInput, {}),
|
|
31
|
+
date: formatDateForDisplay(new Date()),
|
|
32
|
+
reason: _jsx(ReasonInput, {}),
|
|
33
|
+
},
|
|
34
|
+
];
|
|
35
|
+
return (_jsx(DataTable, { columns: tableColumns, data: tableData, itemCount: tableData.length }));
|
|
36
|
+
};
|
|
37
|
+
OverrideTable.propTypes = {};
|
|
38
|
+
export default OverrideTable;
|
|
39
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/components/GradesView/EditModal/OverrideTable/index.jsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AAEjD,OAAO,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAClD,OAAO,EAAE,2BAA2B,IAAI,OAAO,EAAE,MAAM,yBAAyB,CAAC;AACjF,OAAO,EAAE,oBAAoB,EAAE,MAAM,uCAAuC,CAAC;AAE7E,OAAO,WAAW,MAAM,eAAe,CAAC;AACxC,OAAO,kBAAkB,MAAM,sBAAsB,CAAC;AACtD,OAAO,QAAQ,MAAM,YAAY,CAAC;AAElC;;;;GAIG;AAEH,MAAM,CAAC,MAAM,aAAa,GAAG,GAAG,EAAE;IAChC,MAAM,EAAE,aAAa,EAAE,GAAG,OAAO,EAAE,CAAC;IACpC,MAAM,EAAE,2BAA2B,EAAE,iBAAiB,EAAE,IAAI,EAAE,GAAG,oBAAoB,EAAE,CAAC;IAExF,IAAI,IAAI,EAAE,CAAC;QAAC,OAAO,IAAI,CAAC;IAAC,CAAC;IAE1B,MAAM,YAAY,GAAG;QACnB,EAAE,MAAM,EAAE,aAAa,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,QAAQ,EAAE,OAAO,CAAC,IAAI,EAAE;QACtE,EAAE,MAAM,EAAE,aAAa,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,QAAQ,EAAE,OAAO,CAAC,MAAM,EAAE;QAC1E,EAAE,MAAM,EAAE,aAAa,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,QAAQ,EAAE,OAAO,CAAC,MAAM,EAAE;QAC1E,EAAE,MAAM,EAAE,aAAa,CAAC,QAAQ,CAAC,mBAAmB,CAAC,EAAE,QAAQ,EAAE,OAAO,CAAC,aAAa,EAAE;KACzF,CAAC;IACF,MAAM,SAAS,GAAG;QAChB,GAAG,CAAC,2BAA2B,IAAI,EAAE,CAAC;QACtC;YACE,aAAa,EAAE,KAAC,kBAAkB,KAAG;YACrC,IAAI,EAAE,oBAAoB,CAAC,IAAI,IAAI,EAAE,CAAC;YACtC,MAAM,EAAE,KAAC,WAAW,KAAG;SACxB;KACF,CAAC;IAEF,OAAO,CACL,KAAC,SAAS,IACR,OAAO,EAAE,YAAY,EACrB,IAAI,EAAE,SAAS,EACf,SAAS,EAAE,SAAS,CAAC,MAAM,GAC3B,CACH,CAAC;AACJ,CAAC,CAAC;AACF,aAAa,CAAC,SAAS,GAAG,EAAE,CAAC;AAE7B,eAAe,aAAa,CAAC","sourcesContent":["import { DataTable } from '@openedx/paragon';\nimport { useIntl } from '@openedx/frontend-base';\n\nimport { formatDateForDisplay } from '@src/utils';\nimport { gradeOverrideHistoryColumns as columns } from '@src/data/constants/app';\nimport { useGradeOverrideData } from '@src/components/GradesView/data/hooks';\n\nimport ReasonInput from './ReasonInput';\nimport AdjustedGradeInput from './AdjustedGradeInput';\nimport messages from './messages';\n\n/**\n * <OverrideTable />\n * Table containing previous grade override entries, and an \"edit\" row\n * with todays date, an AdjustedGradeInput and a ReasonInput\n */\n\nexport const OverrideTable = () => {\n const { formatMessage } = useIntl();\n const { gradeOverrideHistoryResults, hasOverrideErrors: hide } = useGradeOverrideData();\n\n if (hide) { return null; }\n\n const tableColumns = [\n { Header: formatMessage(messages.dateHeader), accessor: columns.date },\n { Header: formatMessage(messages.graderHeader), accessor: columns.grader },\n { Header: formatMessage(messages.reasonHeader), accessor: columns.reason },\n { Header: formatMessage(messages.adjustedGradeHeader), accessor: columns.adjustedGrade },\n ];\n const tableData = [\n ...(gradeOverrideHistoryResults || []),\n {\n adjustedGrade: <AdjustedGradeInput />,\n date: formatDateForDisplay(new Date()),\n reason: <ReasonInput />,\n },\n ];\n\n return (\n <DataTable\n columns={tableColumns}\n data={tableData}\n itemCount={tableData.length}\n />\n );\n};\nOverrideTable.propTypes = {};\n\nexport default OverrideTable;\n"]}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
export default messages;
|
|
2
|
+
declare namespace messages {
|
|
3
|
+
namespace adjustedGradeHeader {
|
|
4
|
+
let id: string;
|
|
5
|
+
let defaultMessage: string;
|
|
6
|
+
let description: string;
|
|
7
|
+
}
|
|
8
|
+
namespace dateHeader {
|
|
9
|
+
let id_1: string;
|
|
10
|
+
export { id_1 as id };
|
|
11
|
+
let defaultMessage_1: string;
|
|
12
|
+
export { defaultMessage_1 as defaultMessage };
|
|
13
|
+
let description_1: string;
|
|
14
|
+
export { description_1 as description };
|
|
15
|
+
}
|
|
16
|
+
namespace graderHeader {
|
|
17
|
+
let id_2: string;
|
|
18
|
+
export { id_2 as id };
|
|
19
|
+
let defaultMessage_2: string;
|
|
20
|
+
export { defaultMessage_2 as defaultMessage };
|
|
21
|
+
let description_2: string;
|
|
22
|
+
export { description_2 as description };
|
|
23
|
+
}
|
|
24
|
+
namespace reasonHeader {
|
|
25
|
+
let id_3: string;
|
|
26
|
+
export { id_3 as id };
|
|
27
|
+
let defaultMessage_3: string;
|
|
28
|
+
export { defaultMessage_3 as defaultMessage };
|
|
29
|
+
let description_3: string;
|
|
30
|
+
export { description_3 as description };
|
|
31
|
+
}
|
|
32
|
+
}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { defineMessages } from '@openedx/frontend-base';
|
|
2
|
+
const messages = defineMessages({
|
|
3
|
+
adjustedGradeHeader: {
|
|
4
|
+
id: 'gradebook.GradesView.EditModal.Overrides.adjustedGradeHeader',
|
|
5
|
+
defaultMessage: 'Adjusted grade',
|
|
6
|
+
description: 'Edit Modal Override Table Adjusted grade column header',
|
|
7
|
+
},
|
|
8
|
+
dateHeader: {
|
|
9
|
+
id: 'gradebook.GradesView.EditModal.Overrides.dateHeader',
|
|
10
|
+
defaultMessage: 'Date',
|
|
11
|
+
description: 'Edit Modal Override Table Date column header',
|
|
12
|
+
},
|
|
13
|
+
graderHeader: {
|
|
14
|
+
id: 'gradebook.GradesView.EditModal.Overrides.graderHeader',
|
|
15
|
+
defaultMessage: 'Grader',
|
|
16
|
+
description: 'Edit Modal Override Table Grader column header',
|
|
17
|
+
},
|
|
18
|
+
reasonHeader: {
|
|
19
|
+
id: 'gradebook.GradesView.EditModal.Overrides.reasonHeader',
|
|
20
|
+
defaultMessage: 'Reason',
|
|
21
|
+
description: 'Edit Modal Override Table Reason column header',
|
|
22
|
+
},
|
|
23
|
+
});
|
|
24
|
+
export default messages;
|
|
25
|
+
//# sourceMappingURL=messages.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"messages.js","sourceRoot":"","sources":["../../../../../src/components/GradesView/EditModal/OverrideTable/messages.js"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAExD,MAAM,QAAQ,GAAG,cAAc,CAAC;IAC9B,mBAAmB,EAAE;QACnB,EAAE,EAAE,8DAA8D;QAClE,cAAc,EAAE,gBAAgB;QAChC,WAAW,EAAE,wDAAwD;KACtE;IACD,UAAU,EAAE;QACV,EAAE,EAAE,qDAAqD;QACzD,cAAc,EAAE,MAAM;QACtB,WAAW,EAAE,8CAA8C;KAC5D;IACD,YAAY,EAAE;QACZ,EAAE,EAAE,uDAAuD;QAC3D,cAAc,EAAE,QAAQ;QACxB,WAAW,EAAE,gDAAgD;KAC9D;IACD,YAAY,EAAE;QACZ,EAAE,EAAE,uDAAuD;QAC3D,cAAc,EAAE,QAAQ;QACxB,WAAW,EAAE,gDAAgD;KAC9D;CACF,CAAC,CAAC;AAEH,eAAe,QAAQ,CAAC","sourcesContent":["import { defineMessages } from '@openedx/frontend-base';\n\nconst messages = defineMessages({\n adjustedGradeHeader: {\n id: 'gradebook.GradesView.EditModal.Overrides.adjustedGradeHeader',\n defaultMessage: 'Adjusted grade',\n description: 'Edit Modal Override Table Adjusted grade column header',\n },\n dateHeader: {\n id: 'gradebook.GradesView.EditModal.Overrides.dateHeader',\n defaultMessage: 'Date',\n description: 'Edit Modal Override Table Date column header',\n },\n graderHeader: {\n id: 'gradebook.GradesView.EditModal.Overrides.graderHeader',\n defaultMessage: 'Grader',\n description: 'Edit Modal Override Table Grader column header',\n },\n reasonHeader: {\n id: 'gradebook.GradesView.EditModal.Overrides.reasonHeader',\n defaultMessage: 'Reason',\n description: 'Edit Modal Override Table Reason column header',\n },\n});\n\nexport default messages;\n"]}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { Button, Alert, ModalDialog, ActionRow, } from '@openedx/paragon';
|
|
3
|
+
import { useIntl } from '@openedx/frontend-base';
|
|
4
|
+
import { useGradebookUi } from '../../../data/gradebookUiContext';
|
|
5
|
+
import { useGradeOverrideData } from '../data/hooks';
|
|
6
|
+
import { useUpdateGrades } from '../data/apiHook';
|
|
7
|
+
import OverrideTable from './OverrideTable';
|
|
8
|
+
import ModalHeaders from './ModalHeaders';
|
|
9
|
+
import messages from './messages';
|
|
10
|
+
/**
|
|
11
|
+
* <EditModal />
|
|
12
|
+
* Wrapper component for the modal that allows editing the grade for an individual
|
|
13
|
+
* unit, for a given student.
|
|
14
|
+
* Provides a StatusAlert with override fetch errors if any are found, an OverrideTable
|
|
15
|
+
* (with appropriate headers) for managing the actual override, and a submit button for
|
|
16
|
+
* adjusting the grade.
|
|
17
|
+
* (also provides a close button that clears the modal state)
|
|
18
|
+
*/
|
|
19
|
+
export const EditModal = () => {
|
|
20
|
+
const { formatMessage } = useIntl();
|
|
21
|
+
const error = useGradeOverrideData().gradeOverrideHistoryError;
|
|
22
|
+
const { modalState, closeModal } = useGradebookUi();
|
|
23
|
+
const isOpen = modalState.open;
|
|
24
|
+
const updateGrades = useUpdateGrades();
|
|
25
|
+
const onClose = () => {
|
|
26
|
+
closeModal();
|
|
27
|
+
};
|
|
28
|
+
const handleAdjustedGradeClick = () => {
|
|
29
|
+
updateGrades();
|
|
30
|
+
closeModal();
|
|
31
|
+
};
|
|
32
|
+
return (_jsxs(ModalDialog, { title: formatMessage(messages.title), isOpen: isOpen, onClose: onClose, size: "xl", hasCloseButton: true, isFullscreenOnMobile: true, children: [_jsx(ModalDialog.Body, { children: _jsxs("div", { children: [_jsx(ModalHeaders, {}), _jsx(Alert, { variant: "danger", show: !!error, dismissible: false, children: error }), _jsx(OverrideTable, {}), _jsx("div", { children: formatMessage(messages.visibility) }), _jsx("div", { children: formatMessage(messages.saveVisibility) })] }) }), _jsx(ModalDialog.Footer, { children: _jsxs(ActionRow, { children: [_jsx(ModalDialog.CloseButton, { variant: "tertiary", children: formatMessage(messages.closeText) }), _jsx(Button, { variant: "primary", onClick: handleAdjustedGradeClick, children: formatMessage(messages.saveGrade) })] }) })] }));
|
|
33
|
+
};
|
|
34
|
+
export default EditModal;
|
|
35
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/components/GradesView/EditModal/index.jsx"],"names":[],"mappings":";AAAA,OAAO,EACL,MAAM,EACN,KAAK,EACL,WAAW,EACX,SAAS,GACV,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AAEjD,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAC9D,OAAO,EAAE,oBAAoB,EAAE,MAAM,uCAAuC,CAAC;AAC7E,OAAO,EAAE,eAAe,EAAE,MAAM,yCAAyC,CAAC;AAE1E,OAAO,aAAa,MAAM,iBAAiB,CAAC;AAC5C,OAAO,YAAY,MAAM,gBAAgB,CAAC;AAC1C,OAAO,QAAQ,MAAM,YAAY,CAAC;AAElC;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,SAAS,GAAG,GAAG,EAAE;IAC5B,MAAM,EAAE,aAAa,EAAE,GAAG,OAAO,EAAE,CAAC;IACpC,MAAM,KAAK,GAAG,oBAAoB,EAAE,CAAC,yBAAyB,CAAC;IAC/D,MAAM,EAAE,UAAU,EAAE,UAAU,EAAE,GAAG,cAAc,EAAE,CAAC;IACpD,MAAM,MAAM,GAAG,UAAU,CAAC,IAAI,CAAC;IAC/B,MAAM,YAAY,GAAG,eAAe,EAAE,CAAC;IAEvC,MAAM,OAAO,GAAG,GAAG,EAAE;QACnB,UAAU,EAAE,CAAC;IACf,CAAC,CAAC;IAEF,MAAM,wBAAwB,GAAG,GAAG,EAAE;QACpC,YAAY,EAAE,CAAC;QACf,UAAU,EAAE,CAAC;IACf,CAAC,CAAC;IAEF,OAAO,CACL,MAAC,WAAW,IACV,KAAK,EAAE,aAAa,CAAC,QAAQ,CAAC,KAAK,CAAC,EACpC,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,OAAO,EAChB,IAAI,EAAC,IAAI,EACT,cAAc,QACd,oBAAoB,mBAEpB,KAAC,WAAW,CAAC,IAAI,cACf,0BACE,KAAC,YAAY,KAAG,EAChB,KAAC,KAAK,IAAC,OAAO,EAAC,QAAQ,EAAC,IAAI,EAAE,CAAC,CAAC,KAAK,EAAE,WAAW,EAAE,KAAK,YACtD,KAAK,GACA,EACR,KAAC,aAAa,KAAG,EACjB,wBAAM,aAAa,CAAC,QAAQ,CAAC,UAAU,CAAC,GAAO,EAC/C,wBAAM,aAAa,CAAC,QAAQ,CAAC,cAAc,CAAC,GAAO,IAC/C,GACW,EAEnB,KAAC,WAAW,CAAC,MAAM,cACjB,MAAC,SAAS,eACR,KAAC,WAAW,CAAC,WAAW,IAAC,OAAO,EAAC,UAAU,YACxC,aAAa,CAAC,QAAQ,CAAC,SAAS,CAAC,GACV,EAC1B,KAAC,MAAM,IAAC,OAAO,EAAC,SAAS,EAAC,OAAO,EAAE,wBAAwB,YACxD,aAAa,CAAC,QAAQ,CAAC,SAAS,CAAC,GAC3B,IACC,GACO,IACT,CACf,CAAC;AACJ,CAAC,CAAC;AAEF,eAAe,SAAS,CAAC","sourcesContent":["import {\n Button,\n Alert,\n ModalDialog,\n ActionRow,\n} from '@openedx/paragon';\nimport { useIntl } from '@openedx/frontend-base';\n\nimport { useGradebookUi } from '@src/data/gradebookUiContext';\nimport { useGradeOverrideData } from '@src/components/GradesView/data/hooks';\nimport { useUpdateGrades } from '@src/components/GradesView/data/apiHook';\n\nimport OverrideTable from './OverrideTable';\nimport ModalHeaders from './ModalHeaders';\nimport messages from './messages';\n\n/**\n * <EditModal />\n * Wrapper component for the modal that allows editing the grade for an individual\n * unit, for a given student.\n * Provides a StatusAlert with override fetch errors if any are found, an OverrideTable\n * (with appropriate headers) for managing the actual override, and a submit button for\n * adjusting the grade.\n * (also provides a close button that clears the modal state)\n */\nexport const EditModal = () => {\n const { formatMessage } = useIntl();\n const error = useGradeOverrideData().gradeOverrideHistoryError;\n const { modalState, closeModal } = useGradebookUi();\n const isOpen = modalState.open;\n const updateGrades = useUpdateGrades();\n\n const onClose = () => {\n closeModal();\n };\n\n const handleAdjustedGradeClick = () => {\n updateGrades();\n closeModal();\n };\n\n return (\n <ModalDialog\n title={formatMessage(messages.title)}\n isOpen={isOpen}\n onClose={onClose}\n size=\"xl\"\n hasCloseButton\n isFullscreenOnMobile\n >\n <ModalDialog.Body>\n <div>\n <ModalHeaders />\n <Alert variant=\"danger\" show={!!error} dismissible={false}>\n {error}\n </Alert>\n <OverrideTable />\n <div>{formatMessage(messages.visibility)}</div>\n <div>{formatMessage(messages.saveVisibility)}</div>\n </div>\n </ModalDialog.Body>\n\n <ModalDialog.Footer>\n <ActionRow>\n <ModalDialog.CloseButton variant=\"tertiary\">\n {formatMessage(messages.closeText)}\n </ModalDialog.CloseButton>\n <Button variant=\"primary\" onClick={handleAdjustedGradeClick}>\n {formatMessage(messages.saveGrade)}\n </Button>\n </ActionRow>\n </ModalDialog.Footer>\n </ModalDialog>\n );\n};\n\nexport default EditModal;\n"]}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
export default messages;
|
|
2
|
+
declare namespace messages {
|
|
3
|
+
namespace assignmentHeader {
|
|
4
|
+
let id: string;
|
|
5
|
+
let defaultMessage: string;
|
|
6
|
+
let description: string;
|
|
7
|
+
}
|
|
8
|
+
namespace currentGradeHeader {
|
|
9
|
+
let id_1: string;
|
|
10
|
+
export { id_1 as id };
|
|
11
|
+
let defaultMessage_1: string;
|
|
12
|
+
export { defaultMessage_1 as defaultMessage };
|
|
13
|
+
let description_1: string;
|
|
14
|
+
export { description_1 as description };
|
|
15
|
+
}
|
|
16
|
+
namespace originalGradeHeader {
|
|
17
|
+
let id_2: string;
|
|
18
|
+
export { id_2 as id };
|
|
19
|
+
let defaultMessage_2: string;
|
|
20
|
+
export { defaultMessage_2 as defaultMessage };
|
|
21
|
+
let description_2: string;
|
|
22
|
+
export { description_2 as description };
|
|
23
|
+
}
|
|
24
|
+
namespace studentHeader {
|
|
25
|
+
let id_3: string;
|
|
26
|
+
export { id_3 as id };
|
|
27
|
+
let defaultMessage_3: string;
|
|
28
|
+
export { defaultMessage_3 as defaultMessage };
|
|
29
|
+
let description_3: string;
|
|
30
|
+
export { description_3 as description };
|
|
31
|
+
}
|
|
32
|
+
namespace title {
|
|
33
|
+
let id_4: string;
|
|
34
|
+
export { id_4 as id };
|
|
35
|
+
let defaultMessage_4: string;
|
|
36
|
+
export { defaultMessage_4 as defaultMessage };
|
|
37
|
+
let description_4: string;
|
|
38
|
+
export { description_4 as description };
|
|
39
|
+
}
|
|
40
|
+
namespace closeText {
|
|
41
|
+
let id_5: string;
|
|
42
|
+
export { id_5 as id };
|
|
43
|
+
let defaultMessage_5: string;
|
|
44
|
+
export { defaultMessage_5 as defaultMessage };
|
|
45
|
+
let description_5: string;
|
|
46
|
+
export { description_5 as description };
|
|
47
|
+
}
|
|
48
|
+
namespace visibility {
|
|
49
|
+
let id_6: string;
|
|
50
|
+
export { id_6 as id };
|
|
51
|
+
let defaultMessage_6: string;
|
|
52
|
+
export { defaultMessage_6 as defaultMessage };
|
|
53
|
+
let description_6: string;
|
|
54
|
+
export { description_6 as description };
|
|
55
|
+
}
|
|
56
|
+
namespace saveVisibility {
|
|
57
|
+
let id_7: string;
|
|
58
|
+
export { id_7 as id };
|
|
59
|
+
let defaultMessage_7: string;
|
|
60
|
+
export { defaultMessage_7 as defaultMessage };
|
|
61
|
+
let description_7: string;
|
|
62
|
+
export { description_7 as description };
|
|
63
|
+
}
|
|
64
|
+
namespace saveGrade {
|
|
65
|
+
let id_8: string;
|
|
66
|
+
export { id_8 as id };
|
|
67
|
+
let defaultMessage_8: string;
|
|
68
|
+
export { defaultMessage_8 as defaultMessage };
|
|
69
|
+
let description_8: string;
|
|
70
|
+
export { description_8 as description };
|
|
71
|
+
}
|
|
72
|
+
}
|