diff --git a/Changelog.md b/Changelog.md index d7a2fd8c44..93819d8fae 100644 --- a/Changelog.md +++ b/Changelog.md @@ -8,6 +8,7 @@ - Improved layout and labeling in the assignment settings form for both standard and timed assessments. (#7531) - Design improvement of tables when the data is empty. (#7557) - Improved Assignment view for students (#7533) +- Added average annotations section in Assignment Summary (#7559) - Maintain font size in grading view (#7525) - Replaced assignment summary statistics in the "Status" column on the instructor Assignments page with a link to the grades page. (#7560) - Renamed the "Summary" sub-tab label to "Grades" in the Assignment interface. (#7560) diff --git a/app/controllers/assignments_controller.rb b/app/controllers/assignments_controller.rb index 6920e66106..f1b1e36cec 100644 --- a/app/controllers/assignments_controller.rb +++ b/app/controllers/assignments_controller.rb @@ -349,6 +349,7 @@ def grade_distribution summary = { name: "#{assignment.short_identifier}: #{assignment.description}", average: assignment.results_average(points: true) || 0, + average_annotations: assignment.average_annotations, median: assignment.results_median(points: true) || 0, max_mark: assignment.max_mark || 0, standard_deviation: assignment.results_standard_deviation || 0, diff --git a/app/javascript/Components/assignment_chart.jsx b/app/javascript/Components/assignment_chart.jsx index f3d2eedfb2..39d1a4c165 100644 --- a/app/javascript/Components/assignment_chart.jsx +++ b/app/javascript/Components/assignment_chart.jsx @@ -11,6 +11,7 @@ export class AssignmentChart extends React.Component { this.state = { summary: { average: null, + average_annotations: null, median: null, num_submissions_collected: null, num_submissions_graded: null, @@ -187,6 +188,28 @@ export class AssignmentChart extends React.Component { ); } + let annotation_summary = ( +
+

{I18n.t("assignments.annotation_summary")}

+

+ {I18n.t("assignments.average_annotations", { + average_annotations: this.state.summary.average_annotations || 0, + })} +

+

+ {I18n.t("assignments.average_annotations_detail_descriptor")}{" "} + + {I18n.t("activerecord.models.annotation.other")} + +

+
+ ); + return (

@@ -227,6 +250,7 @@ export class AssignmentChart extends React.Component { /> {criteria_graph} {ta_grade_distribution_chart} + {annotation_summary} ); } diff --git a/config/locales/views/assignments/en.yml b/config/locales/views/assignments/en.yml index 16844bbb46..998e94f316 100644 --- a/config/locales/views/assignments/en.yml +++ b/config/locales/views/assignments/en.yml @@ -1,8 +1,11 @@ --- en: assignments: + annotation_summary: Annotation Summary assignment_has_groupings: Assignment has groupings. assignment_information: Assignment information + average_annotations: "%{average_annotations} annotations per marked submission" + average_annotations_detail_descriptor: For detailed information, see configuration_zip_file: Configuration Zip File deadline_with_extension: You have an extension until %{extension_deadline}. deletion_confirmation: Are you sure you want to delete this assignment? diff --git a/spec/controllers/assignments_controller_spec.rb b/spec/controllers/assignments_controller_spec.rb index 08028af555..0304204ee6 100644 --- a/spec/controllers/assignments_controller_spec.rb +++ b/spec/controllers/assignments_controller_spec.rb @@ -1305,6 +1305,7 @@ it 'should contain the right keys' do keys = response.parsed_body['summary'].keys expect(keys).to contain_exactly('name', + 'average_annotations', 'average', 'median', 'max_mark', @@ -1325,6 +1326,7 @@ summary = response.parsed_body['summary'] assignment_remark_requests = assignment.groupings.joins(current_submission_used: :submitted_remark) expected = { name: "#{assignment.short_identifier}: #{assignment.description}", + average_annotations: assignment.average_annotations, average: assignment.results_average(points: true) || 0, median: assignment.results_median(points: true) || 0, max_mark: assignment.max_mark || 0,