MDL-12942 new extra credit option for simple mean agg

This commit is contained in:
skodak
2009-04-24 16:24:10 +00:00
parent 0b3f171430
commit 4ea98f458e
5 changed files with 29 additions and 10 deletions
+7 -1
View File
@@ -58,7 +58,13 @@ if ($id) {
// set parent
$category->parentcategory = $grade_category->parent;
$grade_item = $grade_category->load_grade_item();
foreach ($grade_item as $key => $value) {
// nomalize coef values if needed
if ($parent_category = $grade_category->get_parent_category()) {
if ($parent_category->aggregation == GRADE_AGGREGATE_SUM or $parent_category->aggregation == GRADE_AGGREGATE_WEIGHTED_MEAN2) {
$grade_item->aggregationcoef = $grade_item->aggregationcoef == 0 ? 0 : 1;
}
}
foreach ($grade_item->get_record_data() as $key => $value) {
$category->{"grade_item_$key"} = $value;
}
+2 -2
View File
@@ -96,8 +96,8 @@ $item->plusfactor = format_float($item->plusfactor, 4);
if (empty($parent_category)) {
$item->aggregationcoef = 0;
} else if ($parent_category->aggregation == GRADE_AGGREGATE_SUM) {
$item->aggregationcoef = $item->aggregationcoef > 0 ? 1 : 0;
} else if ($parent_category->aggregation == GRADE_AGGREGATE_SUM or $parent_category->aggregation == GRADE_AGGREGATE_WEIGHTED_MEAN2) {
$item->aggregationcoef = $item->aggregationcoef == 0 ? 0 : 1;
} else {
$item->aggregationcoef = format_float($item->aggregationcoef, 4);
}
+1 -1
View File
@@ -566,7 +566,7 @@ class grade_edit_tree_column_aggregation extends grade_edit_tree_column_category
}
$script = "window.location='index.php?id={$params['id']}&category={$category->id}&aggregationtype='+this.value+'&sesskey=" . sesskey()."';";
$aggregation = choose_from_menu($options, 'aggregation_'.$category->id, $category->aggregation, get_string('choose'), $script, 0, true);
$aggregation = choose_from_menu($options, 'aggregation_'.$category->id, $category->aggregation, null, $script, 0, true);
if ($this->forced) {
$aggregation = $options[$category->aggregation];
+6
View File
@@ -102,6 +102,9 @@ class edit_outcomeitem_form extends moodleform {
if ($cat->aggregation == GRADE_AGGREGATE_WEIGHTED_MEAN) {
$coefstring = ($coefstring=='' or $coefstring=='aggregationcoefweight') ? 'aggregationcoefweight' : 'aggregationcoef';
} else if ($cat->aggregation == GRADE_AGGREGATE_WEIGHTED_MEAN2) {
$coefstring = ($coefstring=='' or $coefstring=='aggregationcoefextrasum') ? 'aggregationcoefextrasum' : 'aggregationcoef';
} else if ($cat->aggregation == GRADE_AGGREGATE_EXTRACREDIT_MEAN) {
$coefstring = ($coefstring=='' or $coefstring=='aggregationcoefextra') ? 'aggregationcoefextra' : 'aggregationcoef';
@@ -201,6 +204,9 @@ class edit_outcomeitem_form extends moodleform {
if ($parent_category->aggregation == GRADE_AGGREGATE_WEIGHTED_MEAN) {
$aggcoef = 'aggregationcoefweight';
} else if ($parent_category->aggregation == GRADE_AGGREGATE_WEIGHTED_MEAN2) {
$aggcoef = 'aggregationcoefextrasum';
} else if ($parent_category->aggregation == GRADE_AGGREGATE_EXTRACREDIT_MEAN) {
$aggcoef = 'aggregationcoefextra';
+13 -6
View File
@@ -642,19 +642,23 @@ class grade_category extends grade_object {
}
break;
case GRADE_AGGREGATE_WEIGHTED_MEAN2: // Weighted average of all existing final grades, weight is the range of grade (ususally grademax)
case GRADE_AGGREGATE_WEIGHTED_MEAN2:
// Weighted average of all existing final grades with optional extra credit flag,
// weight is the range of grade (ususally grademax)
$weightsum = 0;
$sum = 0;
$sum = null;
foreach($grade_values as $itemid=>$grade_value) {
$weight = $items[$itemid]->grademax - $items[$itemid]->grademin;
if ($weight <= 0) {
continue;
}
$weightsum += $weight;
$sum += $weight * $grade_value;
if ($items[$itemid]->aggregationcoef == 0) {
$weightsum += $weight;
}
$sum += $weight * $grade_value;
}
if ($weightsum == 0) {
$agg_grade = null;
$agg_grade = $sum; // only extra credits
} else {
$agg_grade = $sum / $weightsum;
}
@@ -662,7 +666,7 @@ class grade_category extends grade_object {
case GRADE_AGGREGATE_EXTRACREDIT_MEAN: // special average
$num = 0;
$sum = 0;
$sum = null;
foreach($grade_values as $itemid=>$grade_value) {
if ($items[$itemid]->aggregationcoef == 0) {
$num += 1;
@@ -806,6 +810,7 @@ class grade_category extends grade_object {
*/
function is_aggregationcoef_used() {
return ($this->aggregation == GRADE_AGGREGATE_WEIGHTED_MEAN
or $this->aggregation == GRADE_AGGREGATE_WEIGHTED_MEAN2
or $this->aggregation == GRADE_AGGREGATE_EXTRACREDIT_MEAN
or $this->aggregation == GRADE_AGGREGATE_SUM);
@@ -847,6 +852,8 @@ class grade_category extends grade_object {
// No parent category is overriding this category's aggregation, return its string
if ($this->aggregation == GRADE_AGGREGATE_WEIGHTED_MEAN) {
$this->coefstring = 'aggregationcoefweight';
} else if ($this->aggregation == GRADE_AGGREGATE_WEIGHTED_MEAN2) {
$this->coefstring = 'aggregationcoefextrasum';
} else if ($this->aggregation == GRADE_AGGREGATE_EXTRACREDIT_MEAN) {
$this->coefstring = 'aggregationcoefextra';
} else if ($this->aggregation == GRADE_AGGREGATE_SUM) {