diff options
author | Eugeniy Mikhailov <evgmik@gmail.com> | 2011-03-11 12:48:30 -0500 |
---|---|---|
committer | Eugeniy Mikhailov <evgmik@gmail.com> | 2011-03-11 12:48:30 -0500 |
commit | 587555f2ae5d10c11a70086a5429d9e7c9a684fc (patch) | |
tree | 579bfcbd9abe966ac4f338005a1f4e230b1c6659 | |
parent | 767b9d5f263db37161e3f828eda4f02e70d8d783 (diff) | |
download | GradeBook-587555f2ae5d10c11a70086a5429d9e7c9a684fc.tar.gz GradeBook-587555f2ae5d10c11a70086a5429d9e7c9a684fc.zip |
added gran total calculation
Ignore-this: f708e156d5edf108bfa08ed561b12f96
darcs-hash:20110311174830-067c0-252c0efab06334fea2ed924c3e47dd10ea56cd66.gz
-rwxr-xr-x | GradeBook_lib.tcl | 33 |
1 files changed, 30 insertions, 3 deletions
diff --git a/GradeBook_lib.tcl b/GradeBook_lib.tcl index 073ac60..efb5f92 100755 --- a/GradeBook_lib.tcl +++ b/GradeBook_lib.tcl @@ -162,16 +162,43 @@ proc calculteWeightedTotals { } { set students_list [ allUserNamesInGroup student ] set students_list [concat $students_list [ allUserNamesInGroup dropped ] ] foreach student $students_list { - set points_sum [ calculteSumOfPointsForStudentInCategory $student $category ] + set points_sum($category,$student) [ calculteSumOfPointsForStudentInCategory $student $category ] if { $max_points($category) != 0 } { # normalizing - set points_sum [expr { 1. * $points_sum / $max_points($category) } ] + set points_sum($category,$student) [expr { 1. * $points_sum($category,$student) / $max_points($category) } ] } - UpdateColValue4UserNameNonWeb $CategoryWeightedTolalName $student $points_sum + UpdateColValue4UserNameNonWeb $CategoryWeightedTolalName $student $points_sum($category,$student) } } } } + + # now calculation of weighted grand total + set grand_total_col_name "Grand Total" + if { $grand_total_col_name ni $all_column_names } { + dbg "Column $grand_total_col_name does not exist, will create it now" 1 + AddColumnNonWeb $grand_total_col_name weighted_column 0 + } + foreach student $students_list { + set grand_total($student) 0 + foreach {category weight} [getGradingWeights] { + if { ![info exist max_points($category)] } { + set tmpList [ calculteMaxPointsInCategory $category ] + set max_points($category) [lindex $tmpList 0] + } + if { $max_points($category) == 0} { + dbg "Category: $category has 0 for total maximum points. Skipping it." 4 + continue + } + set grand_total($student) [ expr { $grand_total($student) + $weight*$points_sum($category,$student) } ] + } + UpdateColValue4UserNameNonWeb $grand_total_col_name $student $grand_total($student) + } + set max_weighted_sum 0 + foreach {category weight} [getGradingWeights] { + set max_weighted_sum [ expr {$max_weighted_sum +$weight} ] + } + UpdateColValue4UserNameNonWeb $grand_total_col_name _Max_Points_ $max_weighted_sum } proc grade_Category2html_name { category } { |