diff --git a/package-lock.json b/package-lock.json index b0545ea..65cda63 100755 --- a/package-lock.json +++ b/package-lock.json @@ -3552,7 +3552,7 @@ }, "@types/object-assign": { "version": "4.0.30", - "resolved": "http://registry.npmjs.org/@types/object-assign/-/object-assign-4.0.30.tgz", + "resolved": "https://registry.npmjs.org/@types/object-assign/-/object-assign-4.0.30.tgz", "integrity": "sha1-iUk3HVqZ9Dge4PHfCpt6GH4H5lI=" }, "@types/tapable": { diff --git a/src/components/Gradebook/index.jsx b/src/components/Gradebook/index.jsx index f0dcac9..569b289 100644 --- a/src/components/Gradebook/index.jsx +++ b/src/components/Gradebook/index.jsx @@ -25,6 +25,7 @@ export default class Gradebook extends React.Component { ); this.props.getTracks(this.props.match.params.courseId); this.props.getCohorts(this.props.match.params.courseId); + this.props.getAssignmentTypes(this.props.match.params.courseId); } setNewModalState = (userEntry, subsection) => { @@ -74,6 +75,15 @@ export default class Gradebook extends React.Component { return `?${queryString.stringify(parsed)}`; }; + mapAssignmentTypeEntries = (entries) => { + const mapped = entries.map(entry => ({ + id: entry, + label: entry, + })); + mapped.unshift({ id: 0, label: 'All' }); + return mapped; + }; + mapCohortsEntries = (entries) => { const mapped = entries.map(entry => ({ id: entry.id, @@ -92,6 +102,10 @@ export default class Gradebook extends React.Component { return mapped; }; + updateAssignmentTypes = (event) => { + this.props.filterColumns(event, this.props.grades[0]); + } + updateTracks = (event) => { const selectedTrackItem = this.props.tracks.find(x => x.name === event); let selectedTrackSlug = null; @@ -122,6 +136,15 @@ export default class Gradebook extends React.Component { this.props.history.push(updatedQueryStrings); }; + mapSelectedAssignmentTypeEntry = (entry) => { + const selectedAssignmentTypeEntry = this.props.assignmentTypes + .find(x => x.id === parseInt(entry, 10)); + if (selectedAssignmentTypeEntry) { + return selectedAssignmentTypeEntry.name; + } + return 'All'; + }; + mapSelectedCohortEntry = (entry) => { const selectedCohortEntry = this.props.cohorts.find(x => x.id === parseInt(entry, 10)); if (selectedCohortEntry) { @@ -220,46 +243,19 @@ export default class Gradebook extends React.Component { -
- Category: - - this.props.filterColumns('all', this.props.grades[0])} + { this.props.assignmnetTypes.length > 0 && +
+ + Assignment Types: + + - - - - this.props.filterColumns('hw', this.props.grades[0])} - /> - - - - this.props.filterColumns('exam', this.props.grades[0])} - /> - - -
+
+ } {(this.props.tracks.length > 0 || this.props.cohorts.length > 0) &&
@@ -294,14 +290,14 @@ export default class Gradebook extends React.Component { onClear={() => this.props.getUserGrades(this.props.match.params.courseId, this.props.selectedCohort, this.props.selectedTrack)} value={this.state.filterValue} /> -
+