diff --git a/mod/quiz/report/statistics/report.php b/mod/quiz/report/statistics/report.php index 36cc05357f8..690d016eac9 100644 --- a/mod/quiz/report/statistics/report.php +++ b/mod/quiz/report/statistics/report.php @@ -449,13 +449,32 @@ class quiz_statistics_report extends quiz_default_report { * variants. */ protected function output_quiz_structure_analysis_table($questionstats) { - $tooutput = array(); $limitvariants = !$this->table->is_downloading(); foreach ($questionstats->get_all_slots() as $slot) { // Output the data for these question statistics. - $tooutput = array_merge($tooutput, $questionstats->structure_analysis_for_one_slot($slot, $limitvariants)); + $structureanalysis = $questionstats->structure_analysis_for_one_slot($slot, $limitvariants); + if (is_null($structureanalysis)) { + $this->table->add_separator(); + } else { + foreach ($structureanalysis as $row) { + $bgcssclass = ''; + // The only way to identify in this point of the report if a row is a summary row + // is checking if it's a instance of calculated_question_summary class. + if ($row instanceof \core_question\statistics\questions\calculated_question_summary) { + // Apply a custom css class to summary row to remove border and reduce paddings. + $bgcssclass = 'quiz_statistics-summaryrow'; + + // For question that contain a summary row, we add a "hidden" row in between so the report + // display both rows with same background color. + $this->table->add_data_keyed([], 'd-none hidden'); + } + + $this->table->add_data_keyed($this->table->format_row($row), $bgcssclass); + } + } } - $this->table->format_and_add_array_of_rows($tooutput); + + $this->table->finish_output(!$this->table->is_downloading()); } /** diff --git a/mod/quiz/styles.css b/mod/quiz/styles.css index deabee0a9e3..2aa42f22d6b 100644 --- a/mod/quiz/styles.css +++ b/mod/quiz/styles.css @@ -614,6 +614,12 @@ table.quizreviewsummary td.cell { border-bottom: lightgrey solid 0.2em; } +#page-mod-quiz-report tr.quiz_statistics-summaryrow td.cell { + padding-top: 1px; + padding-bottom: 1px; + border-top: none; +} + /** Mod quiz edit **/ #page-mod-quiz-edit .statusbar { margin: 0.6em 0.4em;