@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,46 @@
|
|
|
1
|
+
import { useFilters } from '../../../data/filtersContext';
|
|
2
|
+
import { useCourseIdWithGate } from '../../../data/apiHook';
|
|
3
|
+
import { useRefetchGrades } from '../../GradesView/data/hooks';
|
|
4
|
+
import { useCohorts, useTracks } from '../data/apiHook';
|
|
5
|
+
import { useSelectedCohortEntry, useSelectedTrackEntry } from '../data/hooks';
|
|
6
|
+
const EMPTY_ARRAY = [];
|
|
7
|
+
export const useStudentGroupsFilterData = ({ updateQueryParams }) => {
|
|
8
|
+
var _a, _b;
|
|
9
|
+
const { courseId, enabled } = useCourseIdWithGate();
|
|
10
|
+
const selectedCohortEntry = useSelectedCohortEntry();
|
|
11
|
+
const selectedTrackEntry = useSelectedTrackEntry();
|
|
12
|
+
const cohorts = (_a = useCohorts(courseId, { enabled }).data) !== null && _a !== void 0 ? _a : EMPTY_ARRAY;
|
|
13
|
+
const tracks = (_b = useTracks(courseId, { enabled }).data) !== null && _b !== void 0 ? _b : EMPTY_ARRAY;
|
|
14
|
+
const { setCohort, setTrack } = useFilters();
|
|
15
|
+
const fetchGrades = useRefetchGrades();
|
|
16
|
+
const handleUpdateTrack = (event) => {
|
|
17
|
+
const selectedTrackItem = tracks.find(track => track.slug === event.target.value);
|
|
18
|
+
const track = selectedTrackItem ? selectedTrackItem.slug.toString() : null;
|
|
19
|
+
updateQueryParams({ track });
|
|
20
|
+
setTrack(track !== null && track !== void 0 ? track : '');
|
|
21
|
+
fetchGrades();
|
|
22
|
+
};
|
|
23
|
+
const handleUpdateCohort = (event) => {
|
|
24
|
+
const selectedCohortItem = cohorts.find(cohort => cohort.id === parseInt(event.target.value, 10));
|
|
25
|
+
const cohort = selectedCohortItem ? selectedCohortItem.id.toString() : null;
|
|
26
|
+
// the param expected to be cohort_id
|
|
27
|
+
updateQueryParams({ cohort });
|
|
28
|
+
setCohort(cohort !== null && cohort !== void 0 ? cohort : '');
|
|
29
|
+
fetchGrades();
|
|
30
|
+
};
|
|
31
|
+
return {
|
|
32
|
+
cohorts: {
|
|
33
|
+
value: (selectedCohortEntry === null || selectedCohortEntry === void 0 ? void 0 : selectedCohortEntry.id) || '',
|
|
34
|
+
isDisabled: cohorts.length === 0,
|
|
35
|
+
handleChange: handleUpdateCohort,
|
|
36
|
+
entries: cohorts.map(({ id: value, name }) => ({ value, name })),
|
|
37
|
+
},
|
|
38
|
+
tracks: {
|
|
39
|
+
value: (selectedTrackEntry === null || selectedTrackEntry === void 0 ? void 0 : selectedTrackEntry.slug) || '',
|
|
40
|
+
handleChange: handleUpdateTrack,
|
|
41
|
+
entries: tracks.map(({ slug: value, name }) => ({ value, name })),
|
|
42
|
+
},
|
|
43
|
+
};
|
|
44
|
+
};
|
|
45
|
+
export default useStudentGroupsFilterData;
|
|
46
|
+
//# sourceMappingURL=hooks.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hooks.js","sourceRoot":"","sources":["../../../../src/components/GradebookFilters/StudentGroupsFilter/hooks.js"],"names":[],"mappings":"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","sourcesContent":["import { useFilters } from '@src/data/filtersContext';\nimport { useCourseIdWithGate } from '@src/data/apiHook';\nimport { useRefetchGrades } from '@src/components/GradesView/data/hooks';\n\nimport { useCohorts, useTracks } from '../data/apiHook';\nimport { useSelectedCohortEntry, useSelectedTrackEntry } from '../data/hooks';\n\nconst EMPTY_ARRAY = [];\n\nexport const useStudentGroupsFilterData = ({ updateQueryParams }) => {\n const { courseId, enabled } = useCourseIdWithGate();\n const selectedCohortEntry = useSelectedCohortEntry();\n const selectedTrackEntry = useSelectedTrackEntry();\n\n const cohorts = useCohorts(courseId, { enabled }).data ?? EMPTY_ARRAY;\n const tracks = useTracks(courseId, { enabled }).data ?? EMPTY_ARRAY;\n\n const { setCohort, setTrack } = useFilters();\n const fetchGrades = useRefetchGrades();\n\n const handleUpdateTrack = (event) => {\n const selectedTrackItem = tracks.find(track => track.slug === event.target.value);\n const track = selectedTrackItem ? selectedTrackItem.slug.toString() : null;\n updateQueryParams({ track });\n setTrack(track ?? '');\n fetchGrades();\n };\n\n const handleUpdateCohort = (event) => {\n const selectedCohortItem = cohorts.find(cohort => cohort.id === parseInt(event.target.value, 10));\n const cohort = selectedCohortItem ? selectedCohortItem.id.toString() : null;\n // the param expected to be cohort_id\n updateQueryParams({ cohort });\n setCohort(cohort ?? '');\n fetchGrades();\n };\n return {\n cohorts: {\n value: selectedCohortEntry?.id || '',\n isDisabled: cohorts.length === 0,\n handleChange: handleUpdateCohort,\n entries: cohorts.map(({ id: value, name }) => ({ value, name })),\n },\n tracks: {\n value: selectedTrackEntry?.slug || '',\n handleChange: handleUpdateTrack,\n entries: tracks.map(({ slug: value, name }) => ({ value, name })),\n },\n };\n};\n\nexport default useStudentGroupsFilterData;\n"]}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export function StudentGroupsFilter({ updateQueryParams }: {
|
|
2
|
+
updateQueryParams: any;
|
|
3
|
+
}): import("react").JSX.Element;
|
|
4
|
+
export namespace StudentGroupsFilter {
|
|
5
|
+
namespace propTypes {
|
|
6
|
+
let updateQueryParams: PropTypes.Validator<(...args: any[]) => any>;
|
|
7
|
+
}
|
|
8
|
+
}
|
|
9
|
+
export default StudentGroupsFilter;
|
|
10
|
+
import PropTypes from 'prop-types';
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import PropTypes from 'prop-types';
|
|
3
|
+
import { useIntl } from '@openedx/frontend-base';
|
|
4
|
+
import messages from '../messages';
|
|
5
|
+
import SelectGroup from '../SelectGroup';
|
|
6
|
+
import useStudentGroupsFilterData from './hooks';
|
|
7
|
+
const mapOptions = ({ value, name }) => (_jsx("option", { value: value, children: name }, name));
|
|
8
|
+
export const StudentGroupsFilter = ({ updateQueryParams }) => {
|
|
9
|
+
const { tracks, cohorts } = useStudentGroupsFilterData({ updateQueryParams });
|
|
10
|
+
const { formatMessage } = useIntl();
|
|
11
|
+
return (_jsxs(_Fragment, { children: [_jsx(SelectGroup, { id: "Tracks", label: formatMessage(messages.tracks), value: tracks.value, onChange: tracks.handleChange, options: [
|
|
12
|
+
_jsx("option", { value: formatMessage(messages.trackAll), children: formatMessage(messages.trackAll) }, "0"),
|
|
13
|
+
...tracks.entries.map(mapOptions),
|
|
14
|
+
] }), _jsx(SelectGroup, { id: "Cohorts", label: formatMessage(messages.cohorts), value: cohorts.value, disabled: cohorts.isDisabled, onChange: cohorts.handleChange, options: [
|
|
15
|
+
_jsx("option", { value: formatMessage(messages.cohortAll), children: formatMessage(messages.cohortAll) }, "0"),
|
|
16
|
+
...cohorts.entries.map(mapOptions),
|
|
17
|
+
] })] }));
|
|
18
|
+
};
|
|
19
|
+
StudentGroupsFilter.propTypes = {
|
|
20
|
+
updateQueryParams: PropTypes.func.isRequired,
|
|
21
|
+
};
|
|
22
|
+
export default StudentGroupsFilter;
|
|
23
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/components/GradebookFilters/StudentGroupsFilter/index.jsx"],"names":[],"mappings":";AAAA,OAAO,SAAS,MAAM,YAAY,CAAC;AAEnC,OAAO,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AAEjD,OAAO,QAAQ,MAAM,aAAa,CAAC;AACnC,OAAO,WAAW,MAAM,gBAAgB,CAAC;AACzC,OAAO,0BAA0B,MAAM,SAAS,CAAC;AAEjD,MAAM,UAAU,GAAG,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CACtC,iBAAmB,KAAK,EAAE,KAAK,YAAG,IAAI,IAAzB,IAAI,CAA+B,CACjD,CAAC;AAEF,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,EAAE,iBAAiB,EAAE,EAAE,EAAE;IAC3D,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,0BAA0B,CAAC,EAAE,iBAAiB,EAAE,CAAC,CAAC;IAC9E,MAAM,EAAE,aAAa,EAAE,GAAG,OAAO,EAAE,CAAC;IACpC,OAAO,CACL,8BACE,KAAC,WAAW,IACV,EAAE,EAAC,QAAQ,EACX,KAAK,EAAE,aAAa,CAAC,QAAQ,CAAC,MAAM,CAAC,EACrC,KAAK,EAAE,MAAM,CAAC,KAAK,EACnB,QAAQ,EAAE,MAAM,CAAC,YAAY,EAC7B,OAAO,EAAE;oBACP,iBAAQ,KAAK,EAAE,aAAa,CAAC,QAAQ,CAAC,QAAQ,CAAC,YAC5C,aAAa,CAAC,QAAQ,CAAC,QAAQ,CAAC,IADkB,GAAG,CAE/C;oBACT,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC;iBAClC,GACD,EACF,KAAC,WAAW,IACV,EAAE,EAAC,SAAS,EACZ,KAAK,EAAE,aAAa,CAAC,QAAQ,CAAC,OAAO,CAAC,EACtC,KAAK,EAAE,OAAO,CAAC,KAAK,EACpB,QAAQ,EAAE,OAAO,CAAC,UAAU,EAC5B,QAAQ,EAAE,OAAO,CAAC,YAAY,EAC9B,OAAO,EAAE;oBACP,iBAAQ,KAAK,EAAE,aAAa,CAAC,QAAQ,CAAC,SAAS,CAAC,YAC7C,aAAa,CAAC,QAAQ,CAAC,SAAS,CAAC,IADkB,GAAG,CAEhD;oBACT,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC;iBACnC,GACD,IACD,CACJ,CAAC;AACJ,CAAC,CAAC;AAEF,mBAAmB,CAAC,SAAS,GAAG;IAC9B,iBAAiB,EAAE,SAAS,CAAC,IAAI,CAAC,UAAU;CAC7C,CAAC;AAEF,eAAe,mBAAmB,CAAC","sourcesContent":["import PropTypes from 'prop-types';\n\nimport { useIntl } from '@openedx/frontend-base';\n\nimport messages from '../messages';\nimport SelectGroup from '../SelectGroup';\nimport useStudentGroupsFilterData from './hooks';\n\nconst mapOptions = ({ value, name }) => (\n <option key={name} value={value}>{name}</option>\n);\n\nexport const StudentGroupsFilter = ({ updateQueryParams }) => {\n const { tracks, cohorts } = useStudentGroupsFilterData({ updateQueryParams });\n const { formatMessage } = useIntl();\n return (\n <>\n <SelectGroup\n id=\"Tracks\"\n label={formatMessage(messages.tracks)}\n value={tracks.value}\n onChange={tracks.handleChange}\n options={[\n <option value={formatMessage(messages.trackAll)} key=\"0\">\n {formatMessage(messages.trackAll)}\n </option>,\n ...tracks.entries.map(mapOptions),\n ]}\n />\n <SelectGroup\n id=\"Cohorts\"\n label={formatMessage(messages.cohorts)}\n value={cohorts.value}\n disabled={cohorts.isDisabled}\n onChange={cohorts.handleChange}\n options={[\n <option value={formatMessage(messages.cohortAll)} key=\"0\">\n {formatMessage(messages.cohortAll)}\n </option>,\n ...cohorts.entries.map(mapOptions),\n ]}\n />\n </>\n );\n};\n\nStudentGroupsFilter.propTypes = {\n updateQueryParams: PropTypes.func.isRequired,\n};\n\nexport default StudentGroupsFilter;\n"]}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* getCohorts()
|
|
3
|
+
* Fetches the list of cohorts for the course.
|
|
4
|
+
*/
|
|
5
|
+
export declare const getCohorts: () => Promise<any>;
|
|
6
|
+
/**
|
|
7
|
+
* getTracks()
|
|
8
|
+
* Fetches the course's enrollment tracks (course modes).
|
|
9
|
+
*/
|
|
10
|
+
export declare const getTracks: () => Promise<any>;
|
|
@@ -0,0 +1,27 @@
|
|
|
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 lms from '../../../data/services/lms';
|
|
11
|
+
/**
|
|
12
|
+
* getCohorts()
|
|
13
|
+
* Fetches the list of cohorts for the course.
|
|
14
|
+
*/
|
|
15
|
+
export const getCohorts = () => __awaiter(void 0, void 0, void 0, function* () {
|
|
16
|
+
const { data } = yield lms.api.fetch.cohorts();
|
|
17
|
+
return data;
|
|
18
|
+
});
|
|
19
|
+
/**
|
|
20
|
+
* getTracks()
|
|
21
|
+
* Fetches the course's enrollment tracks (course modes).
|
|
22
|
+
*/
|
|
23
|
+
export const getTracks = () => __awaiter(void 0, void 0, void 0, function* () {
|
|
24
|
+
const { data } = yield lms.api.fetch.tracks();
|
|
25
|
+
return data.course_modes;
|
|
26
|
+
});
|
|
27
|
+
//# sourceMappingURL=api.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"api.js","sourceRoot":"","sources":["../../../../src/components/GradebookFilters/data/api.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,GAAG,MAAM,wBAAwB,CAAC;AAEzC;;;GAGG;AACH,MAAM,CAAC,MAAM,UAAU,GAAG,GAAS,EAAE;IACnC,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;IAC/C,OAAO,IAAI,CAAC;AACd,CAAC,CAAA,CAAC;AAEF;;;GAGG;AACH,MAAM,CAAC,MAAM,SAAS,GAAG,GAAS,EAAE;IAClC,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;IAC9C,OAAO,IAAI,CAAC,YAAY,CAAC;AAC3B,CAAC,CAAA,CAAC","sourcesContent":["import lms from '@src/data/services/lms';\n\n/**\n * getCohorts()\n * Fetches the list of cohorts for the course.\n */\nexport const getCohorts = async () => {\n const { data } = await lms.api.fetch.cohorts();\n return data;\n};\n\n/**\n * getTracks()\n * Fetches the course's enrollment tracks (course modes).\n */\nexport const getTracks = async () => {\n const { data } = await lms.api.fetch.tracks();\n return data.course_modes;\n};\n"]}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* useCohorts()
|
|
3
|
+
* Single-responsibility query for the course's cohorts. Caller supplies
|
|
4
|
+
* `courseId` and decides when it may run via `enabled`.
|
|
5
|
+
*/
|
|
6
|
+
export declare const useCohorts: (courseId: string, { enabled }?: {
|
|
7
|
+
enabled?: boolean;
|
|
8
|
+
}) => import("@tanstack/react-query").UseQueryResult<any, Error>;
|
|
9
|
+
/**
|
|
10
|
+
* useTracks()
|
|
11
|
+
* Single-responsibility query for the course's enrollment tracks. Caller
|
|
12
|
+
* supplies `courseId` and decides when it may run via `enabled`.
|
|
13
|
+
*/
|
|
14
|
+
export declare const useTracks: (courseId: string, { enabled }?: {
|
|
15
|
+
enabled?: boolean;
|
|
16
|
+
}) => import("@tanstack/react-query").UseQueryResult<any, Error>;
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { useQuery } from '@tanstack/react-query';
|
|
2
|
+
import { getCohorts, getTracks } from './api';
|
|
3
|
+
import { cohortsQueryKeys, tracksQueryKeys } from './queryKeys';
|
|
4
|
+
/**
|
|
5
|
+
* useCohorts()
|
|
6
|
+
* Single-responsibility query for the course's cohorts. Caller supplies
|
|
7
|
+
* `courseId` and decides when it may run via `enabled`.
|
|
8
|
+
*/
|
|
9
|
+
export const useCohorts = (courseId, { enabled = true } = {}) => useQuery({
|
|
10
|
+
queryKey: cohortsQueryKeys.byCourse(courseId),
|
|
11
|
+
queryFn: getCohorts,
|
|
12
|
+
enabled: !!courseId && enabled,
|
|
13
|
+
});
|
|
14
|
+
/**
|
|
15
|
+
* useTracks()
|
|
16
|
+
* Single-responsibility query for the course's enrollment tracks. Caller
|
|
17
|
+
* supplies `courseId` and decides when it may run via `enabled`.
|
|
18
|
+
*/
|
|
19
|
+
export const useTracks = (courseId, { enabled = true } = {}) => useQuery({
|
|
20
|
+
queryKey: tracksQueryKeys.byCourse(courseId),
|
|
21
|
+
queryFn: getTracks,
|
|
22
|
+
enabled: !!courseId && enabled,
|
|
23
|
+
});
|
|
24
|
+
//# sourceMappingURL=apiHook.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"apiHook.js","sourceRoot":"","sources":["../../../../src/components/GradebookFilters/data/apiHook.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAEjD,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAC9C,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAEhE;;;;GAIG;AACH,MAAM,CAAC,MAAM,UAAU,GAAG,CACxB,QAAgB,EAChB,EAAE,OAAO,GAAG,IAAI,KAA4B,EAAE,EAC9C,EAAE,CAAC,QAAQ,CAAC;IACZ,QAAQ,EAAE,gBAAgB,CAAC,QAAQ,CAAC,QAAQ,CAAC;IAC7C,OAAO,EAAE,UAAU;IACnB,OAAO,EAAE,CAAC,CAAC,QAAQ,IAAI,OAAO;CAC/B,CAAC,CAAC;AAEH;;;;GAIG;AACH,MAAM,CAAC,MAAM,SAAS,GAAG,CACvB,QAAgB,EAChB,EAAE,OAAO,GAAG,IAAI,KAA4B,EAAE,EAC9C,EAAE,CAAC,QAAQ,CAAC;IACZ,QAAQ,EAAE,eAAe,CAAC,QAAQ,CAAC,QAAQ,CAAC;IAC5C,OAAO,EAAE,SAAS;IAClB,OAAO,EAAE,CAAC,CAAC,QAAQ,IAAI,OAAO;CAC/B,CAAC,CAAC","sourcesContent":["import { useQuery } from '@tanstack/react-query';\n\nimport { getCohorts, getTracks } from './api';\nimport { cohortsQueryKeys, tracksQueryKeys } from './queryKeys';\n\n/**\n * useCohorts()\n * Single-responsibility query for the course's cohorts. Caller supplies\n * `courseId` and decides when it may run via `enabled`.\n */\nexport const useCohorts = (\n courseId: string,\n { enabled = true }: { enabled?: boolean } = {},\n) => useQuery({\n queryKey: cohortsQueryKeys.byCourse(courseId),\n queryFn: getCohorts,\n enabled: !!courseId && enabled,\n});\n\n/**\n * useTracks()\n * Single-responsibility query for the course's enrollment tracks. Caller\n * supplies `courseId` and decides when it may run via `enabled`.\n */\nexport const useTracks = (\n courseId: string,\n { enabled = true }: { enabled?: boolean } = {},\n) => useQuery({\n queryKey: tracksQueryKeys.byCourse(courseId),\n queryFn: getTracks,\n enabled: !!courseId && enabled,\n});\n"]}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import { useFilters } from '../../../data/filtersContext';
|
|
2
|
+
import { useCourseIdWithGate } from '../../../data/apiHook';
|
|
3
|
+
import { useCohorts, useTracks } from './apiHook';
|
|
4
|
+
// Stable empty reference so these reads don't return a fresh array each render
|
|
5
|
+
// while their query is still loading.
|
|
6
|
+
const EMPTY_ARRAY = [];
|
|
7
|
+
// Grade limits are valid when between 0 and 100 (mirrors the legacy
|
|
8
|
+
// `courseGradeFilterValidity` selector, which used minGrade='0'/maxGrade='100').
|
|
9
|
+
const isGradeValid = (value) => {
|
|
10
|
+
const intValue = parseInt(value, 10);
|
|
11
|
+
return intValue >= 0 && intValue <= 100;
|
|
12
|
+
};
|
|
13
|
+
/**
|
|
14
|
+
* useSelectedCohortEntry()
|
|
15
|
+
* The full cohort entry matching the currently-selected cohort id (from the
|
|
16
|
+
* FiltersProvider), or undefined.
|
|
17
|
+
*/
|
|
18
|
+
export const useSelectedCohortEntry = () => {
|
|
19
|
+
var _a;
|
|
20
|
+
const { courseId, enabled } = useCourseIdWithGate();
|
|
21
|
+
const cohortList = (_a = useCohorts(courseId, { enabled }).data) !== null && _a !== void 0 ? _a : EMPTY_ARRAY;
|
|
22
|
+
const { cohort: cohortId } = useFilters();
|
|
23
|
+
return cohortList.find(({ id }) => id === parseInt(cohortId, 10));
|
|
24
|
+
};
|
|
25
|
+
/**
|
|
26
|
+
* useSelectedTrackEntry()
|
|
27
|
+
* The full track entry matching the currently-selected track slug (from the
|
|
28
|
+
* FiltersProvider), or undefined.
|
|
29
|
+
*/
|
|
30
|
+
export const useSelectedTrackEntry = () => {
|
|
31
|
+
var _a;
|
|
32
|
+
const { courseId, enabled } = useCourseIdWithGate();
|
|
33
|
+
const trackList = (_a = useTracks(courseId, { enabled }).data) !== null && _a !== void 0 ? _a : EMPTY_ARRAY;
|
|
34
|
+
const { track } = useFilters();
|
|
35
|
+
return trackList.find(({ slug }) => slug === track);
|
|
36
|
+
};
|
|
37
|
+
/**
|
|
38
|
+
* useCourseGradeFilterValidity()
|
|
39
|
+
* Per-field validity of the (live) course-grade min/max inputs.
|
|
40
|
+
*/
|
|
41
|
+
export const useCourseGradeFilterValidity = () => {
|
|
42
|
+
const { courseGradeMin, courseGradeMax } = useFilters();
|
|
43
|
+
return { isMaxValid: isGradeValid(courseGradeMax), isMinValid: isGradeValid(courseGradeMin) };
|
|
44
|
+
};
|
|
45
|
+
/**
|
|
46
|
+
* useAreCourseGradeFiltersValid()
|
|
47
|
+
* Whether both course-grade limits are valid (gates the Apply button).
|
|
48
|
+
*/
|
|
49
|
+
export const useAreCourseGradeFiltersValid = () => {
|
|
50
|
+
const { courseGradeMin, courseGradeMax } = useFilters();
|
|
51
|
+
return isGradeValid(courseGradeMin) && isGradeValid(courseGradeMax);
|
|
52
|
+
};
|
|
53
|
+
//# sourceMappingURL=hooks.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hooks.js","sourceRoot":"","sources":["../../../../src/components/GradebookFilters/data/hooks.js"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AACtD,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAExD,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAElD,+EAA+E;AAC/E,sCAAsC;AACtC,MAAM,WAAW,GAAG,EAAE,CAAC;AAEvB,oEAAoE;AACpE,iFAAiF;AACjF,MAAM,YAAY,GAAG,CAAC,KAAK,EAAE,EAAE;IAC7B,MAAM,QAAQ,GAAG,QAAQ,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IACrC,OAAO,QAAQ,IAAI,CAAC,IAAI,QAAQ,IAAI,GAAG,CAAC;AAC1C,CAAC,CAAC;AAEF;;;;GAIG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,GAAG,EAAE;;IACzC,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,mBAAmB,EAAE,CAAC;IACpD,MAAM,UAAU,GAAG,MAAA,UAAU,CAAC,QAAQ,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,mCAAI,WAAW,CAAC;IACzE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,UAAU,EAAE,CAAC;IAC1C,OAAO,UAAU,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,KAAK,QAAQ,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,CAAC;AACpE,CAAC,CAAC;AAEF;;;;GAIG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,GAAG,EAAE;;IACxC,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,mBAAmB,EAAE,CAAC;IACpD,MAAM,SAAS,GAAG,MAAA,SAAS,CAAC,QAAQ,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,mCAAI,WAAW,CAAC;IACvE,MAAM,EAAE,KAAK,EAAE,GAAG,UAAU,EAAE,CAAC;IAC/B,OAAO,SAAS,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,IAAI,KAAK,KAAK,CAAC,CAAC;AACtD,CAAC,CAAC;AAEF;;;GAGG;AACH,MAAM,CAAC,MAAM,4BAA4B,GAAG,GAAG,EAAE;IAC/C,MAAM,EAAE,cAAc,EAAE,cAAc,EAAE,GAAG,UAAU,EAAE,CAAC;IACxD,OAAO,EAAE,UAAU,EAAE,YAAY,CAAC,cAAc,CAAC,EAAE,UAAU,EAAE,YAAY,CAAC,cAAc,CAAC,EAAE,CAAC;AAChG,CAAC,CAAC;AAEF;;;GAGG;AACH,MAAM,CAAC,MAAM,6BAA6B,GAAG,GAAG,EAAE;IAChD,MAAM,EAAE,cAAc,EAAE,cAAc,EAAE,GAAG,UAAU,EAAE,CAAC;IACxD,OAAO,YAAY,CAAC,cAAc,CAAC,IAAI,YAAY,CAAC,cAAc,CAAC,CAAC;AACtE,CAAC,CAAC","sourcesContent":["import { useFilters } from '@src/data/filtersContext';\nimport { useCourseIdWithGate } from '@src/data/apiHook';\n\nimport { useCohorts, useTracks } from './apiHook';\n\n// Stable empty reference so these reads don't return a fresh array each render\n// while their query is still loading.\nconst EMPTY_ARRAY = [];\n\n// Grade limits are valid when between 0 and 100 (mirrors the legacy\n// `courseGradeFilterValidity` selector, which used minGrade='0'/maxGrade='100').\nconst isGradeValid = (value) => {\n const intValue = parseInt(value, 10);\n return intValue >= 0 && intValue <= 100;\n};\n\n/**\n * useSelectedCohortEntry()\n * The full cohort entry matching the currently-selected cohort id (from the\n * FiltersProvider), or undefined.\n */\nexport const useSelectedCohortEntry = () => {\n const { courseId, enabled } = useCourseIdWithGate();\n const cohortList = useCohorts(courseId, { enabled }).data ?? EMPTY_ARRAY;\n const { cohort: cohortId } = useFilters();\n return cohortList.find(({ id }) => id === parseInt(cohortId, 10));\n};\n\n/**\n * useSelectedTrackEntry()\n * The full track entry matching the currently-selected track slug (from the\n * FiltersProvider), or undefined.\n */\nexport const useSelectedTrackEntry = () => {\n const { courseId, enabled } = useCourseIdWithGate();\n const trackList = useTracks(courseId, { enabled }).data ?? EMPTY_ARRAY;\n const { track } = useFilters();\n return trackList.find(({ slug }) => slug === track);\n};\n\n/**\n * useCourseGradeFilterValidity()\n * Per-field validity of the (live) course-grade min/max inputs.\n */\nexport const useCourseGradeFilterValidity = () => {\n const { courseGradeMin, courseGradeMax } = useFilters();\n return { isMaxValid: isGradeValid(courseGradeMax), isMinValid: isGradeValid(courseGradeMin) };\n};\n\n/**\n * useAreCourseGradeFiltersValid()\n * Whether both course-grade limits are valid (gates the Apply button).\n */\nexport const useAreCourseGradeFiltersValid = () => {\n const { courseGradeMin, courseGradeMax } = useFilters();\n return isGradeValid(courseGradeMin) && isGradeValid(courseGradeMax);\n};\n"]}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/** Cohorts available for the course (cohort filter dropdown). */
|
|
2
|
+
export declare const cohortsQueryKeys: {
|
|
3
|
+
all: readonly ["gradebook"];
|
|
4
|
+
byCourse: (courseId: string) => readonly ["gradebook", string, "cohorts"];
|
|
5
|
+
};
|
|
6
|
+
/** Enrollment tracks / course modes for the course (track filter dropdown). */
|
|
7
|
+
export declare const tracksQueryKeys: {
|
|
8
|
+
all: readonly ["gradebook"];
|
|
9
|
+
byCourse: (courseId: string) => readonly ["gradebook", string, "tracks"];
|
|
10
|
+
};
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { BASE_KEY } from '../../../data/queryKeys';
|
|
2
|
+
/** Cohorts available for the course (cohort filter dropdown). */
|
|
3
|
+
export const cohortsQueryKeys = {
|
|
4
|
+
all: BASE_KEY,
|
|
5
|
+
byCourse: (courseId) => [...BASE_KEY, courseId, 'cohorts'],
|
|
6
|
+
};
|
|
7
|
+
/** Enrollment tracks / course modes for the course (track filter dropdown). */
|
|
8
|
+
export const tracksQueryKeys = {
|
|
9
|
+
all: BASE_KEY,
|
|
10
|
+
byCourse: (courseId) => [...BASE_KEY, courseId, 'tracks'],
|
|
11
|
+
};
|
|
12
|
+
//# sourceMappingURL=queryKeys.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"queryKeys.js","sourceRoot":"","sources":["../../../../src/components/GradebookFilters/data/queryKeys.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAE/C,iEAAiE;AACjE,MAAM,CAAC,MAAM,gBAAgB,GAAG;IAC9B,GAAG,EAAE,QAAQ;IACb,QAAQ,EAAE,CAAC,QAAgB,EAAE,EAAE,CAAC,CAAC,GAAG,QAAQ,EAAE,QAAQ,EAAE,SAAS,CAAU;CAC5E,CAAC;AAEF,+EAA+E;AAC/E,MAAM,CAAC,MAAM,eAAe,GAAG;IAC7B,GAAG,EAAE,QAAQ;IACb,QAAQ,EAAE,CAAC,QAAgB,EAAE,EAAE,CAAC,CAAC,GAAG,QAAQ,EAAE,QAAQ,EAAE,QAAQ,CAAU;CAC3E,CAAC","sourcesContent":["import { BASE_KEY } from '@src/data/queryKeys';\n\n/** Cohorts available for the course (cohort filter dropdown). */\nexport const cohortsQueryKeys = {\n all: BASE_KEY,\n byCourse: (courseId: string) => [...BASE_KEY, courseId, 'cohorts'] as const,\n};\n\n/** Enrollment tracks / course modes for the course (track filter dropdown). */\nexport const tracksQueryKeys = {\n all: BASE_KEY,\n byCourse: (courseId: string) => [...BASE_KEY, courseId, 'tracks'] as const,\n};\n"]}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export function GradebookFilters({ updateQueryParams }: {
|
|
2
|
+
updateQueryParams: any;
|
|
3
|
+
}): import("react").JSX.Element;
|
|
4
|
+
export namespace GradebookFilters {
|
|
5
|
+
namespace propTypes {
|
|
6
|
+
let updateQueryParams: PropTypes.Validator<(...args: any[]) => any>;
|
|
7
|
+
}
|
|
8
|
+
}
|
|
9
|
+
export default GradebookFilters;
|
|
10
|
+
import PropTypes from 'prop-types';
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
2
|
+
import PropTypes from 'prop-types';
|
|
3
|
+
import { Collapsible, Icon, IconButton, Form, } from '@openedx/paragon';
|
|
4
|
+
import { Close, FilterAlt } from '@openedx/paragon/icons';
|
|
5
|
+
import { useIntl } from '@openedx/frontend-base';
|
|
6
|
+
import { useGradebookUi } from '../../data/gradebookUiContext';
|
|
7
|
+
import { useFilters } from '../../data/filtersContext';
|
|
8
|
+
import { useRefetchGrades } from '../GradesView/data/hooks';
|
|
9
|
+
import messages from './messages';
|
|
10
|
+
import AssignmentTypeFilter from './AssignmentTypeFilter';
|
|
11
|
+
import AssignmentFilter from './AssignmentFilter';
|
|
12
|
+
import AssignmentGradeFilter from './AssignmentGradeFilter';
|
|
13
|
+
import CourseGradeFilter from './CourseGradeFilter';
|
|
14
|
+
import StudentGroupsFilter from './StudentGroupsFilter';
|
|
15
|
+
export const GradebookFilters = ({ updateQueryParams }) => {
|
|
16
|
+
const { formatMessage } = useIntl();
|
|
17
|
+
const { includeCourseRoleMembers, setIncludeCourseRoleMembers } = useFilters();
|
|
18
|
+
const { closeFilterMenu } = useGradebookUi();
|
|
19
|
+
const fetchGrades = useRefetchGrades();
|
|
20
|
+
const handleIncludeTeamMembersChange = ({ target: { checked } }) => {
|
|
21
|
+
setIncludeCourseRoleMembers(checked);
|
|
22
|
+
fetchGrades();
|
|
23
|
+
updateQueryParams({ includeCourseRoleMembers: checked });
|
|
24
|
+
};
|
|
25
|
+
const collapsibleClassName = 'filter-group mb-3';
|
|
26
|
+
return (_jsxs(_Fragment, { children: [_jsxs("div", { className: "filter-sidebar-header", children: [_jsx("h2", { children: _jsx(Icon, { src: FilterAlt }) }), _jsx(IconButton, { className: "p-1", onClick: closeFilterMenu, iconAs: Icon, src: Close, alt: formatMessage(messages.closeFilters), "aria-label": formatMessage(messages.closeFilters) })] }), _jsx(Collapsible, { title: formatMessage(messages.assignments), defaultOpen: true, className: collapsibleClassName, children: _jsxs("div", { children: [_jsx(AssignmentTypeFilter, { updateQueryParams: updateQueryParams }), _jsx(AssignmentFilter, { updateQueryParams: updateQueryParams }), _jsx(AssignmentGradeFilter, { updateQueryParams: updateQueryParams })] }) }), _jsx(Collapsible, { title: formatMessage(messages.overallGrade), defaultOpen: true, className: collapsibleClassName, children: _jsx(CourseGradeFilter, { updateQueryParams: updateQueryParams }) }), _jsx(Collapsible, { title: formatMessage(messages.studentGroups), defaultOpen: true, className: collapsibleClassName, children: _jsx(StudentGroupsFilter, { updateQueryParams: updateQueryParams }) }), _jsx(Collapsible, { title: formatMessage(messages.includeCourseTeamMembers), defaultOpen: true, className: collapsibleClassName, children: _jsx(Form.Checkbox, { checked: includeCourseRoleMembers, onChange: handleIncludeTeamMembersChange, children: formatMessage(messages.includeCourseTeamMembers) }) })] }));
|
|
27
|
+
};
|
|
28
|
+
GradebookFilters.propTypes = {
|
|
29
|
+
updateQueryParams: PropTypes.func.isRequired,
|
|
30
|
+
};
|
|
31
|
+
export default GradebookFilters;
|
|
32
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/GradebookFilters/index.jsx"],"names":[],"mappings":"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","sourcesContent":["import PropTypes from 'prop-types';\nimport {\n Collapsible,\n Icon,\n IconButton,\n Form,\n} from '@openedx/paragon';\nimport { Close, FilterAlt } from '@openedx/paragon/icons';\nimport { useIntl } from '@openedx/frontend-base';\n\nimport { useGradebookUi } from '@src/data/gradebookUiContext';\nimport { useFilters } from '@src/data/filtersContext';\nimport { useRefetchGrades } from '@src/components/GradesView/data/hooks';\n\nimport messages from './messages';\nimport AssignmentTypeFilter from './AssignmentTypeFilter';\nimport AssignmentFilter from './AssignmentFilter';\nimport AssignmentGradeFilter from './AssignmentGradeFilter';\nimport CourseGradeFilter from './CourseGradeFilter';\nimport StudentGroupsFilter from './StudentGroupsFilter';\n\nexport const GradebookFilters = ({ updateQueryParams }) => {\n const { formatMessage } = useIntl();\n const { includeCourseRoleMembers, setIncludeCourseRoleMembers } = useFilters();\n const { closeFilterMenu } = useGradebookUi();\n const fetchGrades = useRefetchGrades();\n\n const handleIncludeTeamMembersChange = ({ target: { checked } }) => {\n setIncludeCourseRoleMembers(checked);\n fetchGrades();\n updateQueryParams({ includeCourseRoleMembers: checked });\n };\n\n const collapsibleClassName = 'filter-group mb-3';\n return (\n <>\n <div className=\"filter-sidebar-header\">\n <h2><Icon src={FilterAlt} /></h2>\n <IconButton\n className=\"p-1\"\n onClick={closeFilterMenu}\n iconAs={Icon}\n src={Close}\n alt={formatMessage(messages.closeFilters)}\n aria-label={formatMessage(messages.closeFilters)}\n />\n </div>\n\n <Collapsible\n title={formatMessage(messages.assignments)}\n defaultOpen\n className={collapsibleClassName}\n >\n <div>\n <AssignmentTypeFilter updateQueryParams={updateQueryParams} />\n <AssignmentFilter updateQueryParams={updateQueryParams} />\n <AssignmentGradeFilter updateQueryParams={updateQueryParams} />\n </div>\n </Collapsible>\n\n <Collapsible\n title={formatMessage(messages.overallGrade)}\n defaultOpen\n className={collapsibleClassName}\n >\n <CourseGradeFilter updateQueryParams={updateQueryParams} />\n </Collapsible>\n\n <Collapsible\n title={formatMessage(messages.studentGroups)}\n defaultOpen\n className={collapsibleClassName}\n >\n <StudentGroupsFilter updateQueryParams={updateQueryParams} />\n </Collapsible>\n\n <Collapsible\n title={formatMessage(messages.includeCourseTeamMembers)}\n defaultOpen\n className={collapsibleClassName}\n >\n <Form.Checkbox\n checked={includeCourseRoleMembers}\n onChange={handleIncludeTeamMembersChange}\n >\n {formatMessage(messages.includeCourseTeamMembers)}\n </Form.Checkbox>\n </Collapsible>\n </>\n );\n};\nGradebookFilters.propTypes = {\n updateQueryParams: PropTypes.func.isRequired,\n};\n\nexport default GradebookFilters;\n"]}
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
export default messages;
|
|
2
|
+
declare namespace messages {
|
|
3
|
+
namespace assignments {
|
|
4
|
+
let id: string;
|
|
5
|
+
let defaultMessage: string;
|
|
6
|
+
let description: string;
|
|
7
|
+
}
|
|
8
|
+
namespace overallGrade {
|
|
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 studentGroups {
|
|
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 includeCourseTeamMembers {
|
|
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 assignment {
|
|
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 assignmentTypes {
|
|
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 maxGrade {
|
|
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 minGrade {
|
|
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 cohorts {
|
|
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
|
+
namespace cohortAll {
|
|
73
|
+
let id_9: string;
|
|
74
|
+
export { id_9 as id };
|
|
75
|
+
let defaultMessage_9: string;
|
|
76
|
+
export { defaultMessage_9 as defaultMessage };
|
|
77
|
+
let description_9: string;
|
|
78
|
+
export { description_9 as description };
|
|
79
|
+
}
|
|
80
|
+
namespace tracks {
|
|
81
|
+
let id_10: string;
|
|
82
|
+
export { id_10 as id };
|
|
83
|
+
let defaultMessage_10: string;
|
|
84
|
+
export { defaultMessage_10 as defaultMessage };
|
|
85
|
+
let description_10: string;
|
|
86
|
+
export { description_10 as description };
|
|
87
|
+
}
|
|
88
|
+
namespace trackAll {
|
|
89
|
+
let id_11: string;
|
|
90
|
+
export { id_11 as id };
|
|
91
|
+
let defaultMessage_11: string;
|
|
92
|
+
export { defaultMessage_11 as defaultMessage };
|
|
93
|
+
let description_11: string;
|
|
94
|
+
export { description_11 as description };
|
|
95
|
+
}
|
|
96
|
+
namespace closeFilters {
|
|
97
|
+
let id_12: string;
|
|
98
|
+
export { id_12 as id };
|
|
99
|
+
let defaultMessage_12: string;
|
|
100
|
+
export { defaultMessage_12 as defaultMessage };
|
|
101
|
+
let description_12: string;
|
|
102
|
+
export { description_12 as description };
|
|
103
|
+
}
|
|
104
|
+
namespace apply {
|
|
105
|
+
let id_13: string;
|
|
106
|
+
export { id_13 as id };
|
|
107
|
+
let defaultMessage_13: string;
|
|
108
|
+
export { defaultMessage_13 as defaultMessage };
|
|
109
|
+
let description_13: string;
|
|
110
|
+
export { description_13 as description };
|
|
111
|
+
}
|
|
112
|
+
}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
import { defineMessages } from '@openedx/frontend-base';
|
|
2
|
+
const messages = defineMessages({
|
|
3
|
+
assignments: {
|
|
4
|
+
id: 'gradebook.GradebookFilters.assignmentsFilterLabel',
|
|
5
|
+
defaultMessage: 'Assignments',
|
|
6
|
+
description: 'Assignment filter group label in Gradebook Filters',
|
|
7
|
+
},
|
|
8
|
+
overallGrade: {
|
|
9
|
+
id: 'gradebook.GradebookFilters.overallGradeFilterLabel',
|
|
10
|
+
defaultMessage: 'Overall Grade',
|
|
11
|
+
description: 'Overall Grade filter group label in Gradebook Filters',
|
|
12
|
+
},
|
|
13
|
+
studentGroups: {
|
|
14
|
+
id: 'gradebook.GradebookFilters.studentGroupsFilterLabel',
|
|
15
|
+
defaultMessage: 'Student Groups',
|
|
16
|
+
description: 'Student Groups filter group label in Gradebook Filters',
|
|
17
|
+
},
|
|
18
|
+
includeCourseTeamMembers: {
|
|
19
|
+
id: 'gradebook.GradebookFilters.includeCourseTeamMembersFilterLabel',
|
|
20
|
+
defaultMessage: 'Include Course Team Members',
|
|
21
|
+
description: 'Include Course Team Members filter label in Gradebook Filters',
|
|
22
|
+
},
|
|
23
|
+
assignment: {
|
|
24
|
+
id: 'gradebook.GradebookFilters.assignmentFilterLabel',
|
|
25
|
+
defaultMessage: 'Assignment',
|
|
26
|
+
description: 'Assignment filter select label in Gradebook Filters',
|
|
27
|
+
},
|
|
28
|
+
assignmentTypes: {
|
|
29
|
+
id: 'gradebook.GradebookFilters.assignmentTypesLabel',
|
|
30
|
+
defaultMessage: 'Assignment Types',
|
|
31
|
+
description: 'Assignment Types filter select label in Gradebook Filters',
|
|
32
|
+
},
|
|
33
|
+
maxGrade: {
|
|
34
|
+
id: 'gradebook.GradebookFilters.maxGradeFilterLabel',
|
|
35
|
+
defaultMessage: 'Max Grade',
|
|
36
|
+
description: 'Max-grade filter select label in Gradebook Filters',
|
|
37
|
+
},
|
|
38
|
+
minGrade: {
|
|
39
|
+
id: 'gradebook.GradebookFilters.minGradeFilterLabel',
|
|
40
|
+
defaultMessage: 'Min Grade',
|
|
41
|
+
description: 'Min-grade filter select label in Gradebook Filters',
|
|
42
|
+
},
|
|
43
|
+
cohorts: {
|
|
44
|
+
id: 'gradebook.GradebookFilters.cohorts',
|
|
45
|
+
defaultMessage: 'Cohorts',
|
|
46
|
+
description: 'Cohorts filter select label in Gradebook Filters',
|
|
47
|
+
},
|
|
48
|
+
cohortAll: {
|
|
49
|
+
id: 'gradebook.GradebookFilters.cohortsAll',
|
|
50
|
+
defaultMessage: 'Cohort-All',
|
|
51
|
+
description: 'Cohorts filter select default in Gradebook Filters',
|
|
52
|
+
},
|
|
53
|
+
tracks: {
|
|
54
|
+
id: 'gradebook.GradebookFilters.tracks',
|
|
55
|
+
defaultMessage: 'Tracks',
|
|
56
|
+
description: 'Tracks filter select label in Gradebook Filters',
|
|
57
|
+
},
|
|
58
|
+
trackAll: {
|
|
59
|
+
id: 'gradebook.GradebookFilters.trackAll',
|
|
60
|
+
defaultMessage: 'Track-All',
|
|
61
|
+
description: 'Tracks filter select default in Gradebook Filters',
|
|
62
|
+
},
|
|
63
|
+
closeFilters: {
|
|
64
|
+
id: 'gradebook.GradebookFilters.closeFilters',
|
|
65
|
+
defaultMessage: 'Close Filters',
|
|
66
|
+
description: 'Button label for Close button in Gradebook Filters',
|
|
67
|
+
},
|
|
68
|
+
apply: {
|
|
69
|
+
id: 'gradebook.GradebookFilters.apply',
|
|
70
|
+
defaultMessage: 'Apply',
|
|
71
|
+
description: 'Apply filter button text',
|
|
72
|
+
},
|
|
73
|
+
});
|
|
74
|
+
export default messages;
|
|
75
|
+
//# sourceMappingURL=messages.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"messages.js","sourceRoot":"","sources":["../../../src/components/GradebookFilters/messages.js"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAExD,MAAM,QAAQ,GAAG,cAAc,CAAC;IAC9B,WAAW,EAAE;QACX,EAAE,EAAE,mDAAmD;QACvD,cAAc,EAAE,aAAa;QAC7B,WAAW,EAAE,oDAAoD;KAClE;IACD,YAAY,EAAE;QACZ,EAAE,EAAE,oDAAoD;QACxD,cAAc,EAAE,eAAe;QAC/B,WAAW,EAAE,uDAAuD;KACrE;IACD,aAAa,EAAE;QACb,EAAE,EAAE,qDAAqD;QACzD,cAAc,EAAE,gBAAgB;QAChC,WAAW,EAAE,wDAAwD;KACtE;IACD,wBAAwB,EAAE;QACxB,EAAE,EAAE,gEAAgE;QACpE,cAAc,EAAE,6BAA6B;QAC7C,WAAW,EAAE,+DAA+D;KAC7E;IACD,UAAU,EAAE;QACV,EAAE,EAAE,kDAAkD;QACtD,cAAc,EAAE,YAAY;QAC5B,WAAW,EAAE,qDAAqD;KACnE;IACD,eAAe,EAAE;QACf,EAAE,EAAE,iDAAiD;QACrD,cAAc,EAAE,kBAAkB;QAClC,WAAW,EAAE,2DAA2D;KACzE;IACD,QAAQ,EAAE;QACR,EAAE,EAAE,gDAAgD;QACpD,cAAc,EAAE,WAAW;QAC3B,WAAW,EAAE,oDAAoD;KAClE;IACD,QAAQ,EAAE;QACR,EAAE,EAAE,gDAAgD;QACpD,cAAc,EAAE,WAAW;QAC3B,WAAW,EAAE,oDAAoD;KAClE;IACD,OAAO,EAAE;QACP,EAAE,EAAE,oCAAoC;QACxC,cAAc,EAAE,SAAS;QACzB,WAAW,EAAE,kDAAkD;KAChE;IACD,SAAS,EAAE;QACT,EAAE,EAAE,uCAAuC;QAC3C,cAAc,EAAE,YAAY;QAC5B,WAAW,EAAE,oDAAoD;KAClE;IACD,MAAM,EAAE;QACN,EAAE,EAAE,mCAAmC;QACvC,cAAc,EAAE,QAAQ;QACxB,WAAW,EAAE,iDAAiD;KAC/D;IACD,QAAQ,EAAE;QACR,EAAE,EAAE,qCAAqC;QACzC,cAAc,EAAE,WAAW;QAC3B,WAAW,EAAE,mDAAmD;KACjE;IACD,YAAY,EAAE;QACZ,EAAE,EAAE,yCAAyC;QAC7C,cAAc,EAAE,eAAe;QAC/B,WAAW,EAAE,oDAAoD;KAClE;IACD,KAAK,EAAE;QACL,EAAE,EAAE,kCAAkC;QACtC,cAAc,EAAE,OAAO;QACvB,WAAW,EAAE,0BAA0B;KACxC;CACF,CAAC,CAAC;AAEH,eAAe,QAAQ,CAAC","sourcesContent":["import { defineMessages } from '@openedx/frontend-base';\n\nconst messages = defineMessages({\n assignments: {\n id: 'gradebook.GradebookFilters.assignmentsFilterLabel',\n defaultMessage: 'Assignments',\n description: 'Assignment filter group label in Gradebook Filters',\n },\n overallGrade: {\n id: 'gradebook.GradebookFilters.overallGradeFilterLabel',\n defaultMessage: 'Overall Grade',\n description: 'Overall Grade filter group label in Gradebook Filters',\n },\n studentGroups: {\n id: 'gradebook.GradebookFilters.studentGroupsFilterLabel',\n defaultMessage: 'Student Groups',\n description: 'Student Groups filter group label in Gradebook Filters',\n },\n includeCourseTeamMembers: {\n id: 'gradebook.GradebookFilters.includeCourseTeamMembersFilterLabel',\n defaultMessage: 'Include Course Team Members',\n description: 'Include Course Team Members filter label in Gradebook Filters',\n },\n assignment: {\n id: 'gradebook.GradebookFilters.assignmentFilterLabel',\n defaultMessage: 'Assignment',\n description: 'Assignment filter select label in Gradebook Filters',\n },\n assignmentTypes: {\n id: 'gradebook.GradebookFilters.assignmentTypesLabel',\n defaultMessage: 'Assignment Types',\n description: 'Assignment Types filter select label in Gradebook Filters',\n },\n maxGrade: {\n id: 'gradebook.GradebookFilters.maxGradeFilterLabel',\n defaultMessage: 'Max Grade',\n description: 'Max-grade filter select label in Gradebook Filters',\n },\n minGrade: {\n id: 'gradebook.GradebookFilters.minGradeFilterLabel',\n defaultMessage: 'Min Grade',\n description: 'Min-grade filter select label in Gradebook Filters',\n },\n cohorts: {\n id: 'gradebook.GradebookFilters.cohorts',\n defaultMessage: 'Cohorts',\n description: 'Cohorts filter select label in Gradebook Filters',\n },\n cohortAll: {\n id: 'gradebook.GradebookFilters.cohortsAll',\n defaultMessage: 'Cohort-All',\n description: 'Cohorts filter select default in Gradebook Filters',\n },\n tracks: {\n id: 'gradebook.GradebookFilters.tracks',\n defaultMessage: 'Tracks',\n description: 'Tracks filter select label in Gradebook Filters',\n },\n trackAll: {\n id: 'gradebook.GradebookFilters.trackAll',\n defaultMessage: 'Track-All',\n description: 'Tracks filter select default in Gradebook Filters',\n },\n closeFilters: {\n id: 'gradebook.GradebookFilters.closeFilters',\n defaultMessage: 'Close Filters',\n description: 'Button label for Close button in Gradebook Filters',\n },\n apply: {\n id: 'gradebook.GradebookFilters.apply',\n defaultMessage: 'Apply',\n description: 'Apply filter button text',\n },\n});\n\nexport default messages;\n"]}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
export function useGradebookHeaderData(): {
|
|
2
|
+
areGradesFrozen: boolean | undefined;
|
|
3
|
+
canUserViewGradebook: boolean;
|
|
4
|
+
courseId: string;
|
|
5
|
+
showBulkManagement: boolean;
|
|
6
|
+
handleToggleViewClick: () => void;
|
|
7
|
+
toggleViewMessage: {
|
|
8
|
+
id: string;
|
|
9
|
+
defaultMessage: string;
|
|
10
|
+
description: string;
|
|
11
|
+
};
|
|
12
|
+
};
|
|
13
|
+
export default useGradebookHeaderData;
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { views } from '../../data/constants/app';
|
|
2
|
+
import { useAssignmentTypes, useCanViewGradebook, useCourseIdWithGate, useShowBulkManagement, } from '../../data/apiHook';
|
|
3
|
+
import { useGradebookUi } from '../../data/gradebookUiContext';
|
|
4
|
+
import messages from './messages';
|
|
5
|
+
export const useGradebookHeaderData = () => {
|
|
6
|
+
var _a;
|
|
7
|
+
const { activeView, setActiveView } = useGradebookUi();
|
|
8
|
+
const { courseId, enabled } = useCourseIdWithGate();
|
|
9
|
+
const areGradesFrozen = (_a = useAssignmentTypes(courseId, { enabled }).data) === null || _a === void 0 ? void 0 : _a.areGradesFrozen;
|
|
10
|
+
const canUserViewGradebook = useCanViewGradebook();
|
|
11
|
+
const showBulkManagement = useShowBulkManagement();
|
|
12
|
+
const handleToggleViewClick = () => setActiveView(activeView === views.grades
|
|
13
|
+
? views.bulkManagementHistory
|
|
14
|
+
: views.grades);
|
|
15
|
+
const toggleViewMessage = activeView === views.grades
|
|
16
|
+
? messages.toActivityLog
|
|
17
|
+
: messages.toGradesView;
|
|
18
|
+
return {
|
|
19
|
+
areGradesFrozen,
|
|
20
|
+
canUserViewGradebook,
|
|
21
|
+
courseId,
|
|
22
|
+
showBulkManagement,
|
|
23
|
+
handleToggleViewClick,
|
|
24
|
+
toggleViewMessage,
|
|
25
|
+
};
|
|
26
|
+
};
|
|
27
|
+
export default useGradebookHeaderData;
|
|
28
|
+
//# sourceMappingURL=hooks.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hooks.js","sourceRoot":"","sources":["../../../src/components/GradebookHeader/hooks.js"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,yBAAyB,CAAC;AAChD,OAAO,EACL,kBAAkB,EAClB,mBAAmB,EACnB,mBAAmB,EACnB,qBAAqB,GACtB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAE9D,OAAO,QAAQ,MAAM,YAAY,CAAC;AAElC,MAAM,CAAC,MAAM,sBAAsB,GAAG,GAAG,EAAE;;IACzC,MAAM,EAAE,UAAU,EAAE,aAAa,EAAE,GAAG,cAAc,EAAE,CAAC;IACvD,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,mBAAmB,EAAE,CAAC;IACpD,MAAM,eAAe,GAAG,MAAA,kBAAkB,CAAC,QAAQ,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,0CAAE,eAAe,CAAC;IACxF,MAAM,oBAAoB,GAAG,mBAAmB,EAAE,CAAC;IACnD,MAAM,kBAAkB,GAAG,qBAAqB,EAAE,CAAC;IAEnD,MAAM,qBAAqB,GAAG,GAAG,EAAE,CAAC,aAAa,CAC/C,UAAU,KAAK,KAAK,CAAC,MAAM;QACzB,CAAC,CAAC,KAAK,CAAC,qBAAqB;QAC7B,CAAC,CAAC,KAAK,CAAC,MAAM,CACjB,CAAC;IAEF,MAAM,iBAAiB,GAAG,UAAU,KAAK,KAAK,CAAC,MAAM;QACnD,CAAC,CAAC,QAAQ,CAAC,aAAa;QACxB,CAAC,CAAC,QAAQ,CAAC,YAAY,CAAC;IAE1B,OAAO;QACL,eAAe;QACf,oBAAoB;QACpB,QAAQ;QACR,kBAAkB;QAElB,qBAAqB;QACrB,iBAAiB;KAClB,CAAC;AACJ,CAAC,CAAC;AAEF,eAAe,sBAAsB,CAAC","sourcesContent":["import { views } from '@src/data/constants/app';\nimport {\n useAssignmentTypes,\n useCanViewGradebook,\n useCourseIdWithGate,\n useShowBulkManagement,\n} from '@src/data/apiHook';\nimport { useGradebookUi } from '@src/data/gradebookUiContext';\n\nimport messages from './messages';\n\nexport const useGradebookHeaderData = () => {\n const { activeView, setActiveView } = useGradebookUi();\n const { courseId, enabled } = useCourseIdWithGate();\n const areGradesFrozen = useAssignmentTypes(courseId, { enabled }).data?.areGradesFrozen;\n const canUserViewGradebook = useCanViewGradebook();\n const showBulkManagement = useShowBulkManagement();\n\n const handleToggleViewClick = () => setActiveView(\n activeView === views.grades\n ? views.bulkManagementHistory\n : views.grades,\n );\n\n const toggleViewMessage = activeView === views.grades\n ? messages.toActivityLog\n : messages.toGradesView;\n\n return {\n areGradesFrozen,\n canUserViewGradebook,\n courseId,\n showBulkManagement,\n\n handleToggleViewClick,\n toggleViewMessage,\n };\n};\n\nexport default useGradebookHeaderData;\n"]}
|