From b392a56cab72ee71f529645f538ad120d8be850b Mon Sep 17 00:00:00 2001 From: jamiesensei Date: Fri, 16 May 2008 14:56:23 +0000 Subject: [PATCH] MDL-14844 "Quiz Report: Bar Graph doesn't displayed maximum grade" Now using php ceil function to round up $bands as in some cases it could be a non integer. --- mod/quiz/report/overview/overviewgraph.php | 13 ++++++++++--- mod/quiz/report/reportlib.php | 4 ++-- 2 files changed, 12 insertions(+), 5 deletions(-) diff --git a/mod/quiz/report/overview/overviewgraph.php b/mod/quiz/report/overview/overviewgraph.php index 247a35d0ea..37d266a62f 100644 --- a/mod/quiz/report/overview/overviewgraph.php +++ b/mod/quiz/report/overview/overviewgraph.php @@ -45,21 +45,28 @@ while ($bands >= 20 || $bands < 10){ } $bandwidth = $quiz->grade / $bands; +$bands = ceil($bands); $bandlabels = array(); for ($i=0;$i < $quiz->grade;$i += $bandwidth){ - $bandlabels[] = number_format($i, $quiz->decimalpoints).' - '.number_format($i+$bandwidth, $quiz->decimalpoints); + $label = number_format($i, $quiz->decimalpoints).' - '; + if ($quiz->grade > $i+$bandwidth){ + $label .= number_format($i+$bandwidth, $quiz->decimalpoints); + } else { + $label .= number_format($quiz->grade, $quiz->decimalpoints); + } + $bandlabels[] = $label; } $line->x_data = $bandlabels; $useridlist = join(',',array_keys(get_users_by_capability($modcontext, 'mod/quiz:attempt','','','','','','',false))); -$line->y_data['allusers'] = quiz_report_grade_bands($bands, $quizid, $useridlist); +$line->y_data['allusers'] = quiz_report_grade_bands($bandwidth, $bands, $quizid, $useridlist); if ($currentgroup){ //only turn on legends if there is more than one set of bars $line->parameter['legend'] = 'outside-top'; $line->parameter['legend_border'] = 'black'; $line->parameter['legend_offset'] = 4; $useridingrouplist = join(',',array_keys(get_users_by_capability($modcontext, 'mod/quiz:attempt','','','','',$currentgroup,'',false))); - $line->y_data['groupusers'] = quiz_report_grade_bands($bands, $quizid, $useridingrouplist); + $line->y_data['groupusers'] = quiz_report_grade_bands($bandwidth, $bands, $quizid, $useridingrouplist); $line->y_format['groupusers'] = array('colour' => 'green', 'bar' => 'fill', 'shadow_offset' => 1, 'legend' => groups_get_group_name($currentgroup)); $line->y_order = array('allusers', 'groupusers'); diff --git a/mod/quiz/report/reportlib.php b/mod/quiz/report/reportlib.php index 5d759d560b..7bf9991fc2 100644 --- a/mod/quiz/report/reportlib.php +++ b/mod/quiz/report/reportlib.php @@ -146,9 +146,9 @@ function quiz_report_qm_filter_subselect($quiz, $useridsql = 'u.id'){ return $qmsubselect; } -function quiz_report_grade_bands($bands, $quizid, $useridlist){ +function quiz_report_grade_bands($bandwidth, $bands, $quizid, $useridlist){ $sql = "SELECT - FLOOR(qg.grade*$bands/q.grade) AS band, + FLOOR(qg.grade/$bandwidth) AS band, COUNT(1) AS num FROM mdl_quiz_grades qg, -- 2.39.5