mirror of
https://github.com/moodle/moodle.git
synced 2025-04-21 16:32:18 +02:00
Merge branch 'MDL-47463-master' of git://github.com/FMCorz/moodle
This commit is contained in:
commit
4f639ec86b
@ -712,12 +712,12 @@ class grade_report_user extends grade_report {
|
||||
// Normalise the gradeval.
|
||||
$gradecat = $grade_object->load_parent_category();
|
||||
if ($gradecat->aggregation == GRADE_AGGREGATE_SUM) {
|
||||
// Natural aggregation/Sum of grades does not consider the mingrade.
|
||||
// Natural aggregation/Sum of grades does not consider the mingrade, cannot traditionnally normalise it.
|
||||
$graderange = $this->aggregationhints[$itemid]['grademax'];
|
||||
$gradeval = $this->aggregationhints[$itemid]['grade'] / $graderange;
|
||||
} else {
|
||||
$graderange = $this->aggregationhints[$itemid]['grademax'] - $this->aggregationhints[$itemid]['grademin'];
|
||||
$gradeval = ($this->aggregationhints[$itemid]['grade'] - $this->aggregationhints[$itemid]['grademin']) / $graderange;
|
||||
$gradeval = grade_grade::standardise_score($this->aggregationhints[$itemid]['grade'],
|
||||
$this->aggregationhints[$itemid]['grademin'], $this->aggregationhints[$itemid]['grademax'], 0, 1);
|
||||
}
|
||||
|
||||
// Multiply the normalised value by the weight
|
||||
|
@ -63,6 +63,11 @@ Feature: View gradebook when scales are used
|
||||
And I press "Save changes"
|
||||
And I follow "Course 1"
|
||||
And I follow "Grades"
|
||||
And I navigate to "Course grade settings" node in "Grade administration > Setup"
|
||||
And I set the field "Show weightings" to "Show"
|
||||
And I set the field "Show contribution to course total" to "Show"
|
||||
And I press "Save changes"
|
||||
And I follow "Grader report"
|
||||
And I turn editing mode on
|
||||
|
||||
@javascript
|
||||
@ -83,10 +88,10 @@ Feature: View gradebook when scales are used
|
||||
And I set the field "Select all or one user" to "Student 3"
|
||||
And I click on "Select all or one user" "select"
|
||||
And the following should exist in the "user-grade" table:
|
||||
| Grade item | Grade | Range | Percentage |
|
||||
| Test assignment one | C | F–A | 50.00 % |
|
||||
| Category total | 3.00 | 0–5 | 60.00 % |
|
||||
| Course total | 3.00 | 0–5 | 60.00 % |
|
||||
| Grade item | Grade | Range | Percentage | Contribution to course total |
|
||||
| Test assignment one | C | F–A | 50.00 % | 3.00 |
|
||||
| Category total | 3.00 | 0–5 | 60.00 % | - |
|
||||
| Course total | 3.00 | 0–5 | 60.00 % | - |
|
||||
And I set the field "jump" to "Categories and items"
|
||||
And the following should exist in the "grade_edit_tree_table" table:
|
||||
| Name | Max grade |
|
||||
@ -98,10 +103,10 @@ Feature: View gradebook when scales are used
|
||||
And I follow "Course 1"
|
||||
And I follow "Grades"
|
||||
And the following should exist in the "user-grade" table:
|
||||
| Grade item | Grade | Range | Percentage |
|
||||
| Test assignment one | B | F–A | 75.00 % |
|
||||
| Category total | 4.00 | 0–5 | 80.00 % |
|
||||
| Course total | 4.00 | 0–5 | 80.00 % |
|
||||
| Grade item | Grade | Range | Percentage | Contribution to course total |
|
||||
| Test assignment one | B | F–A | 75.00 % | 4.00 |
|
||||
| Category total | 4.00 | 0–5 | 80.00 % | - |
|
||||
| Course total | 4.00 | 0–5 | 80.00 % | - |
|
||||
|
||||
@javascript
|
||||
Scenario Outline: Test displaying scales in gradebook in all other aggregation methods
|
||||
@ -131,10 +136,10 @@ Feature: View gradebook when scales are used
|
||||
And I set the field "Select all or one user" to "Student 3"
|
||||
And I click on "Select all or one user" "select"
|
||||
And the following should exist in the "user-grade" table:
|
||||
| Grade item | Grade | Range | Percentage |
|
||||
| Test assignment one | C | F–A | 50.00 % |
|
||||
| Category total<aggregation>. | 3.00 | 1–5 | 50.00 % |
|
||||
| Course total<aggregation>. | <coursetotal3> | 0–100 | <courseperc3> |
|
||||
| Grade item | Grade | Range | Percentage | Contribution to course total |
|
||||
| Test assignment one | C | F–A | 50.00 % | <contrib3> |
|
||||
| Category total<aggregation>. | 3.00 | 1–5 | 50.00 % | - |
|
||||
| Course total<aggregation>. | <coursetotal3> | 0–100 | <courseperc3> | - |
|
||||
And I set the field "jump" to "Categories and items"
|
||||
And the following should exist in the "grade_edit_tree_table" table:
|
||||
| Name | Max grade |
|
||||
@ -146,18 +151,18 @@ Feature: View gradebook when scales are used
|
||||
And I follow "Course 1"
|
||||
And I follow "Grades"
|
||||
And the following should exist in the "user-grade" table:
|
||||
| Grade item | Grade | Range | Percentage |
|
||||
| Test assignment one | B | F–A | 75.00 % |
|
||||
| Category total<aggregation>. | 4.00 | 1–5 | 75.00 % |
|
||||
| Course total<aggregation>. | <coursetotal2> | 0–100 | <courseperc2> |
|
||||
| Grade item | Grade | Range | Percentage | Contribution to course total |
|
||||
| Test assignment one | B | F–A | 75.00 % | <contrib2> |
|
||||
| Category total<aggregation>. | 4.00 | 1–5 | 75.00 % | - |
|
||||
| Course total<aggregation>. | <coursetotal2> | 0–100 | <courseperc2> | - |
|
||||
|
||||
Examples:
|
||||
| aggregation | coursetotal1 | coursetotal2 | coursetotal3 | coursetotal4 | coursetotal5 |overallavg | courseperc2 | courseperc3 |
|
||||
| Mean of grades | 100.00 | 75.00 | 50.00 | 25.00 | 0.00 | 50.00 | 75.00 % | 50.00 % |
|
||||
| Weighted mean of grades | - | - | - | - | - | - | - | - |
|
||||
| Simple weighted mean of grades | 100.00 | 75.00 | 50.00 | 25.00 | 0.00 | 50.00 | 75.00 % | 50.00 % |
|
||||
| Mean of grades (with extra credits) | 100.00 | 75.00 | 50.00 | 25.00 | 0.00 | 50.00 | 75.00 % | 50.00 % |
|
||||
| Median of grades | 100.00 | 75.00 | 50.00 | 25.00 | 0.00 | 50.00 | 75.00 % | 50.00 % |
|
||||
| Lowest grade | 100.00 | 75.00 | 50.00 | 25.00 | 0.00 | 50.00 | 75.00 % | 50.00 % |
|
||||
| Highest grade | 100.00 | 75.00 | 50.00 | 25.00 | 0.00 | 50.00 | 75.00 % | 50.00 % |
|
||||
| Mode of grades | 100.00 | 75.00 | 50.00 | 25.00 | 0.00 | 50.00 | 75.00 % | 50.00 % |
|
||||
Examples:
|
||||
| aggregation | coursetotal1 | coursetotal2 | coursetotal3 | coursetotal4 | coursetotal5 |overallavg | courseperc2 | courseperc3 | contrib2 | contrib3 |
|
||||
| Mean of grades | 100.00 | 75.00 | 50.00 | 25.00 | 0.00 | 50.00 | 75.00 % | 50.00 % | 75.00 | 50.00 |
|
||||
| Weighted mean of grades | - | - | - | - | - | - | - | - | 0.00 | 0.00 |
|
||||
| Simple weighted mean of grades | 100.00 | 75.00 | 50.00 | 25.00 | 0.00 | 50.00 | 75.00 % | 50.00 % | 75.00 | 50.00 |
|
||||
| Mean of grades (with extra credits) | 100.00 | 75.00 | 50.00 | 25.00 | 0.00 | 50.00 | 75.00 % | 50.00 % | 75.00 | 50.00 |
|
||||
| Median of grades | 100.00 | 75.00 | 50.00 | 25.00 | 0.00 | 50.00 | 75.00 % | 50.00 % | 75.00 | 50.00 |
|
||||
| Lowest grade | 100.00 | 75.00 | 50.00 | 25.00 | 0.00 | 50.00 | 75.00 % | 50.00 % | 75.00 | 50.00 |
|
||||
| Highest grade | 100.00 | 75.00 | 50.00 | 25.00 | 0.00 | 50.00 | 75.00 % | 50.00 % | 75.00 | 50.00 |
|
||||
| Mode of grades | 100.00 | 75.00 | 50.00 | 25.00 | 0.00 | 50.00 | 75.00 % | 50.00 % | 75.00 | 50.00 |
|
||||
|
134
grade/tests/behat/grade_single_item_scales.feature
Normal file
134
grade/tests/behat/grade_single_item_scales.feature
Normal file
@ -0,0 +1,134 @@
|
||||
@core @core_grades
|
||||
Feature: View gradebook when single item scales are used
|
||||
In order to use single item scales to grade activities
|
||||
As an teacher
|
||||
I need to be able to view gradebook with single item scales
|
||||
|
||||
Background:
|
||||
Given I log in as "admin"
|
||||
And I set the following administration settings values:
|
||||
| grade_report_showranges | 1 |
|
||||
| grade_aggregations_visible | Mean of grades,Weighted mean of grades,Simple weighted mean of grades,Mean of grades (with extra credits),Median of grades,Lowest grade,Highest grade,Mode of grades,Natural |
|
||||
And I navigate to "Scales" node in "Site administration > Grades"
|
||||
And I press "Add a new scale"
|
||||
And I set the following fields to these values:
|
||||
| Name | Singleitem |
|
||||
| Scale | Ace! |
|
||||
And I press "Save changes"
|
||||
And I log out
|
||||
And the following "courses" exist:
|
||||
| fullname | shortname |
|
||||
| Course 1 | C1 |
|
||||
And the following "users" exist:
|
||||
| username | firstname | lastname | email | idnumber |
|
||||
| teacher1 | Teacher | 1 | teacher1@asd.com | t1 |
|
||||
| student1 | Student | 1 | student1@asd.com | s1 |
|
||||
| student2 | Student | 2 | student2@asd.com | s2 |
|
||||
And the following "course enrolments" exist:
|
||||
| user | course | role |
|
||||
| teacher1 | C1 | editingteacher |
|
||||
| student1 | C1 | student |
|
||||
| student2 | C1 | student |
|
||||
And the following "grade categories" exist:
|
||||
| fullname | course |
|
||||
| Sub category 1 | C1 |
|
||||
And the following "activities" exist:
|
||||
| activity | course | idnumber | name | intro | gradecategory |
|
||||
| assign | C1 | a1 | Test assignment one | Submit something! | Sub category 1 |
|
||||
And I log in as "teacher1"
|
||||
And I follow "Course 1"
|
||||
And I follow "Test assignment one"
|
||||
And I follow "Edit settings"
|
||||
And I expand all fieldsets
|
||||
And I set the field "grade[modgrade_type]" to "Scale"
|
||||
And I set the field "grade[modgrade_scale]" to "Singleitem"
|
||||
And I press "Save and display"
|
||||
And I follow "View/grade all submissions"
|
||||
And I click on "Grade Student 1" "link" in the "Student 1" "table_row"
|
||||
And I set the field "Grade" to "A"
|
||||
And I press "Save changes"
|
||||
And I follow "Course 1"
|
||||
And I follow "Grades"
|
||||
And I navigate to "Course grade settings" node in "Grade administration > Setup"
|
||||
And I set the field "Show weightings" to "Show"
|
||||
And I set the field "Show contribution to course total" to "Show"
|
||||
And I press "Save changes"
|
||||
And I follow "Grader report"
|
||||
And I turn editing mode on
|
||||
|
||||
@javascript
|
||||
Scenario: Test displaying single item scales in gradebook in aggregation method Natural
|
||||
When I turn editing mode off
|
||||
Then the following should exist in the "user-grades" table:
|
||||
| -1- | -4- | -5- | -6- |
|
||||
| Student 1 | Ace! | 1.00 | 1.00 |
|
||||
And the following should exist in the "user-grades" table:
|
||||
| -1- | -2- | -3- | -4- |
|
||||
| Range | Ace!–Ace! | 0.00–1.00 | 0.00–1.00 |
|
||||
| Overall average | Ace! | 1.00 | 1.00 |
|
||||
And I follow "User report"
|
||||
And I set the field "Select all or one user" to "Student 1"
|
||||
And the following should exist in the "user-grade" table:
|
||||
| Grade item | Grade | Range | Contribution to course total |
|
||||
| Test assignment one | Ace! | Ace!–Ace! | 1.00 |
|
||||
| Category total | 1.00 | 0–1 | - |
|
||||
| Course total | 1.00 | 0–1 | - |
|
||||
And I set the field "Select all or one user" to "Student 2"
|
||||
And the following should exist in the "user-grade" table:
|
||||
| Grade item | Grade | Range | Contribution to course total |
|
||||
| Test assignment one | - | Ace!–Ace! | 0.00 |
|
||||
| Category total | - | 0–1 | - |
|
||||
| Course total | - | 0–1 | - |
|
||||
And I set the field "jump" to "Categories and items"
|
||||
And the following should exist in the "grade_edit_tree_table" table:
|
||||
| Name | Max grade |
|
||||
| Test assignment one | 1.00 |
|
||||
| Category total | 1.00 |
|
||||
| Course total | 1.00 |
|
||||
|
||||
@javascript
|
||||
Scenario Outline: Test displaying single item scales in gradebook in all other aggregation methods
|
||||
When I follow "Edit Course 1"
|
||||
And I set the field "Aggregation" to "<aggregation>"
|
||||
And I press "Save changes"
|
||||
And I follow "Edit Sub category 1"
|
||||
And I expand all fieldsets
|
||||
And I set the field "Aggregation" to "<aggregation>"
|
||||
And I set the field "Category name" to "Sub category (<aggregation>)"
|
||||
# And I set the field "Maximum grade" to "5"
|
||||
# And I set the field "Minimum grade" to "1"
|
||||
And I press "Save changes"
|
||||
And I turn editing mode off
|
||||
Then the following should exist in the "user-grades" table:
|
||||
| -1- | -4- | -5- | -6- |
|
||||
| Student 1 | Ace! | <cattotal1> | <coursetotal1> |
|
||||
| Student 2 | - | - | - |
|
||||
And the following should exist in the "user-grades" table:
|
||||
| -1- | -2- | -3- | -4- |
|
||||
| Range | Ace!–Ace! | 0.00–100.0 | 0.00–100.00 |
|
||||
| Overall average | Ace! | <catavg> | <overallavg> |
|
||||
And I follow "User report"
|
||||
And I set the field "Select all or one user" to "Student 1"
|
||||
And I click on "Select all or one user" "select"
|
||||
And the following should exist in the "user-grade" table:
|
||||
| Grade item | Grade | Range | Contribution to course total |
|
||||
| Test assignment one | Ace! | Ace!–Ace! | <contrib1> |
|
||||
| Category total<aggregation>. | <cattotal1> | 0–100 | - |
|
||||
| Course total<aggregation>. | <coursetotal1> | 0–100 | - |
|
||||
And I set the field "jump" to "Categories and items"
|
||||
And the following should exist in the "grade_edit_tree_table" table:
|
||||
| Name | Max grade |
|
||||
| Test assignment one | Ace! (1) |
|
||||
| Category total<aggregation>. | 100.00 |
|
||||
| Course total<aggregation>. | 100.00 |
|
||||
|
||||
Examples:
|
||||
| aggregation | contrib1 | cattotal1 | coursetotal1 | catavg | overallavg |
|
||||
| Mean of grades | 100.00 | 100.00 | 100.00 | 100.00 | 100.00 |
|
||||
| Weighted mean of grades | 0.00 | 100.00 | - | 100.00 | - |
|
||||
| Simple weighted mean of grades | 0.00 | - | - | - | - |
|
||||
| Mean of grades (with extra credits) | 100.00 | 100.00 | 100.00 | 100.00 | 100.00 |
|
||||
| Median of grades | 100.00 | 100.00 | 100.00 | 100.00 | 100.00 |
|
||||
| Lowest grade | 100.00 | 100.00 | 100.00 | 100.00 | 100.00 |
|
||||
| Highest grade | 100.00 | 100.00 | 100.00 | 100.00 | 100.00 |
|
||||
| Mode of grades | 100.00 | 100.00 | 100.00 | 100.00 | 100.00 |
|
@ -969,15 +969,14 @@ class grade_category extends grade_object {
|
||||
$sum = 0;
|
||||
|
||||
foreach ($grade_values as $itemid=>$grade_value) {
|
||||
|
||||
if ($weights !== null) {
|
||||
$weights[$itemid] = $items[$itemid]->aggregationcoef;
|
||||
}
|
||||
if ($items[$itemid]->aggregationcoef <= 0) {
|
||||
continue;
|
||||
}
|
||||
$weightsum += $items[$itemid]->aggregationcoef;
|
||||
$sum += $items[$itemid]->aggregationcoef * $grade_value;
|
||||
if ($weights !== null) {
|
||||
$weights[$itemid] = $items[$itemid]->aggregationcoef;
|
||||
}
|
||||
}
|
||||
if ($weightsum == 0) {
|
||||
$agg_grade = null;
|
||||
|
Loading…
x
Reference in New Issue
Block a user