diff --git a/src/components/Gradebook/Assignments.jsx b/src/components/Gradebook/Assignments.jsx index c1df432..b55c8b2 100644 --- a/src/components/Gradebook/Assignments.jsx +++ b/src/components/Gradebook/Assignments.jsx @@ -9,8 +9,6 @@ import { InputSelect, InputText, } from '@edx/paragon'; -import queryString from 'query-string'; - import { selectableAssignmentLabels } from '../../data/selectors/filters'; import { filterAssignmentType, @@ -22,12 +20,6 @@ import { updateAssignmentLimits, } from '../../data/actions/filters'; - -const DECIMAL_PRECISION = 2; -const GRADE_OVERRIDE_HISTORY_COLUMNS = [{ label: 'Date', key: 'date' }, { label: 'Grader', key: 'grader' }, - { label: 'Reason', key: 'reason' }, - { label: 'Adjusted grade', key: 'adjustedGrade' }]; - export class Assignments extends React.Component { getAssignmentFilterOptions = () => [ { label: 'All', value: '' }, @@ -81,7 +73,6 @@ export class Assignments extends React.Component { this.updateQueryParams({ assignmentType }); } - render() { return ( @@ -125,7 +116,7 @@ export class Assignments extends React.Component { step={1} value={this.props.assignmentGradeMin} disabled={!this.props.selectedAssignment} - onChange={this.props.setAssignmentGradeMax} + onChange={this.props.setAssignmentGradeMin} /> % ({ }); export const mapDispatchToProps = { - fetchGrades, + getUserGrades: fetchGrades, filterAssignmentType, updateAssignmentFilter, updateAssignmentLimits, updateGradesIfAssignmentGradeFiltersSet, -} +}; export default connect(mapStateToProps, mapDispatchToProps)(Assignments); diff --git a/src/components/Gradebook/BulkManagement.jsx b/src/components/Gradebook/BulkManagement.jsx index 76af794..04beb40 100644 --- a/src/components/Gradebook/BulkManagement.jsx +++ b/src/components/Gradebook/BulkManagement.jsx @@ -82,7 +82,6 @@ export class BulkManagement extends React.Component { } }; - render() { return ( @@ -160,6 +159,7 @@ export class BulkManagement extends React.Component { BulkManagement.defaultProps = { bulkImportError: '', bulkManagementHistory: [], + courseId: '', uploadSuccess: false, }; @@ -195,6 +195,6 @@ export const mapStateToProps = (state) => ({ export const mapDispatchToProps = { submitFileUploadFormData, -} +}; export default connect(mapStateToProps, mapDispatchToProps)(BulkManagement); diff --git a/src/components/Gradebook/BulkManagementControls.jsx b/src/components/Gradebook/BulkManagementControls.jsx index 3c800f8..033fd0a 100644 --- a/src/components/Gradebook/BulkManagementControls.jsx +++ b/src/components/Gradebook/BulkManagementControls.jsx @@ -9,11 +9,9 @@ import { faDownload, faSpinner } from '@fortawesome/free-solid-svg-icons'; import { downloadBulkGradesReport, - downloadInterventionReport + downloadInterventionReport, } from '../../data/actions/grades'; - - export class BulkManagementControls extends React.Component { handleClickDownloadInterventions = () => { this.props.downloadInterventionReport(this.props.courseId); @@ -66,6 +64,11 @@ export class BulkManagementControls extends React.Component { } } +BulkManagementControls.defaultProps = { + courseId: '', + showSpinner: false, +}; + BulkManagementControls.propTypes = { courseId: PropTypes.string, gradeExportUrl: PropTypes.string.isRequired, @@ -77,7 +80,7 @@ BulkManagementControls.propTypes = { downloadInterventionReport: PropTypes.func.isRequired, }; -export const mapStateToProps = (state) => ({ }); +export const mapStateToProps = () => ({ }); export const mapDispatchToProps = { downloadBulkGradesReport, diff --git a/src/components/Gradebook/EditModal.jsx b/src/components/Gradebook/EditModal.jsx index 9b80480..0551ea8 100644 --- a/src/components/Gradebook/EditModal.jsx +++ b/src/components/Gradebook/EditModal.jsx @@ -12,7 +12,7 @@ import { import { doneViewingAssignment, - updateGrades + updateGrades, } from '../../data/actions/grades'; const GRADE_OVERRIDE_HISTORY_COLUMNS = [{ label: 'Date', key: 'date' }, { label: 'Grader', key: 'grader' }, @@ -133,51 +133,35 @@ export class EditModal extends React.Component { } EditModal.defaultProps = { - - areGradesFrozen: false, - assignmentTypes: [], - assignmentFilterOptions: [], - canUserViewGradebook: false, - cohorts: [], - gradeOverrides: [], + courseId: '', gradeOverrideCurrentEarnedGradedOverride: null, + gradeOverrideHistoryError: '', + gradeOverrides: [], gradeOriginalEarnedGraded: null, gradeOriginalPossibleGraded: null, - location: { - search: '', - }, - courseId: '', selectedCohort: null, selectedTrack: null, - selectedAssignmentType: '', - selectedAssignment: '', - showSpinner: false, - tracks: [], - bulkImportError: '', - uploadSuccess: false, - showBulkManagement: false, - bulkManagementHistory: [], - gradeOverrideHistoryError: '', - totalUsersCount: null, - filteredUsersCount: null, }; EditModal.propTypes = { - - assignmentName: PropTypes.string, - adjustedGradePossible: PropTypes.string, - adjustedGradeValue: PropTypes.number, courseId: PropTypes.string, - filterValue: PropTypes.string, - open: PropTypes.bool, - reasonForChange: PropTypes.string, - setAdjustedGradeValue: PropTypes.func, - setGradebookState: PropTypes.func, - setReasonForChange: PropTypes.func, - todaysDate: PropTypes.string, - updateModuleId: PropTypes.string, - updateUserId: PropTypes.string, - updateUserName: PropTypes.string, + + // Gradebook State + adjustedGradePossible: PropTypes.string.isRequired, + adjustedGradeValue: PropTypes.number.isRequired, + assignmentName: PropTypes.string.isRequired, + filterValue: PropTypes.string.isRequired, + open: PropTypes.bool.isRequired, + reasonForChange: PropTypes.string.isRequired, + todaysDate: PropTypes.string.isRequired, + updateModuleId: PropTypes.string.isRequired, + updateUserId: PropTypes.string.isRequired, + updateUserName: PropTypes.string.isRequired, + + // Gradebook State Setters + setAdjustedGradeValue: PropTypes.func.isRequired, + setGradebookState: PropTypes.func.isRequired, + setReasonForChange: PropTypes.func.isRequired, // redux doneViewingAssignment: PropTypes.func.isRequired, @@ -204,11 +188,11 @@ export const mapStateToProps = (state) => ({ grdaeOriginalPossibleGraded: state.grades.grdaeOriginalPossibleGraded, selectedCohort: state.filters.cohort, selectedTrack: state.filters.track, -}) +}); export const mapDispatchToProps = { doneViewingAssignment, updateGrades, -} +}; export default connect(mapStateToProps, mapDispatchToProps)(EditModal); diff --git a/src/components/Gradebook/GradebookTable.jsx b/src/components/Gradebook/GradebookTable.jsx index 1d17f7a..bc69278 100644 --- a/src/components/Gradebook/GradebookTable.jsx +++ b/src/components/Gradebook/GradebookTable.jsx @@ -8,6 +8,7 @@ import { Table } from '@edx/paragon'; import { formatDateForDisplay } from '../../data/actions/utils'; import { getHeadings } from '../../data/selectors/grades'; import { fetchGradeOverrideHistory } from '../../data/actions/grades'; + const DECIMAL_PRECISION = 2; export class GradebookTable extends React.Component { @@ -25,7 +26,7 @@ export class GradebookTable extends React.Component { this.props.setGradebookState({ adjustedGradePossible, adjustedGradeValue: '', - modalAssignmentName: `${subsection.subsection_name}`, + assignmentName: `${subsection.subsection_name}`, modalOpen: true, reasonForChange: '', todaysDate: formatDateForDisplay(new Date()), @@ -35,7 +36,6 @@ export class GradebookTable extends React.Component { }); } - getLearnerInformation = entry => (
{entry.username}
@@ -160,7 +160,6 @@ export class GradebookTable extends React.Component { } GradebookTable.defaultProps = { - areGradesFrozen: false, grades: [], }; diff --git a/src/components/Gradebook/index.jsx b/src/components/Gradebook/index.jsx index 8f44741..6c0f94b 100644 --- a/src/components/Gradebook/index.jsx +++ b/src/components/Gradebook/index.jsx @@ -1,4 +1,4 @@ -/* eslint-disable react/sort-comp, react/button-has-type */ +/* eslint-disable react/sort-comp, react/button-has-type, import/no-named-as-default */ import React from 'react'; import PropTypes from 'prop-types'; import { @@ -7,21 +7,17 @@ import { Icon, InputSelect, InputText, - Modal, SearchField, - StatefulButton, StatusAlert, - Table, Tab, Tabs, } from '@edx/paragon'; import queryString from 'query-string'; import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; -import { faDownload, faSpinner, faFilter } from '@fortawesome/free-solid-svg-icons'; +import { faFilter } from '@fortawesome/free-solid-svg-icons'; import { configuration } from '../../config'; import PageButtons from '../PageButtons'; import Drawer from '../Drawer'; -import { formatDateForDisplay } from '../../data/actions/utils'; import initialFilters from '../../data/constants/filters'; import ConnectedFilterBadges from '../FilterBadges'; @@ -45,7 +41,6 @@ export default class Gradebook extends React.Component { filterValue: '', isMinCourseGradeFilterValid: true, isMaxCourseGradeFilterValid: true, - modalAssignmentName: '', modalOpen: false, reasonForChange: '', todaysDate: '', @@ -247,14 +242,15 @@ export default class Gradebook extends React.Component { createLimitedSetter = (...keys) => (values) => this.setState( keys.reduce( - (obj, key) => ( values[key] === undefined ? obj : { ...obj, [key]: values[key] } ), - {} - ) + (obj, key) => (values[key] === undefined ? obj : { ...obj, [key]: values[key] }), + {}, + ), ) safeSetState = this.createLimitedSetter( 'adjustedGradePossible', 'adjustedGradeValue', + 'assignmnentName', 'modalOpen', 'reasonForChange', 'todaysDate', @@ -383,14 +379,15 @@ export default class Gradebook extends React.Component { updateUserId={this.state.updateUserId} updateUserName={this.state.updateUserName} /> - + - {this.props.showBulkManagement && + {this.props.showBulkManagement + && ( - } + )}
)} @@ -401,7 +398,7 @@ export default class Gradebook extends React.Component { )} > -