. /** * HTML rendering methods are defined here * * @package report_overviewstats * @category output * @package report_overviewstats * @copyright 2023 DualCube * @copyright based on work by 2013 David Mudrak * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later */ /** * Overview statistics renderer */ class report_overviewstats_renderer extends plugin_renderer_base { /** * Render the report charts * * @see report_overviewstats_chart::get_content() for the expected structure * @param array $charts list of {@link report_overviewstats_chart} instances * @return string */ public function charts($course) { $chartsdata = []; if (is_null($course)) { $chartsdata[] = report_overviewstats_chart::report_overviewstats_chart_logins(); $chartsdata[] = report_overviewstats_chart::report_overviewstats_chart_countries(); $chartsdata[] = report_overviewstats_chart::report_overviewstats_chart_langs(); $chartsdata[] = report_overviewstats_chart::report_overviewstats_chart_courses(); } else { $chartsdata[] = report_overviewstats_chart::report_overviewstats_chart_enrolments($course); } $outlist = ''; $outbody = ''; $counter = 0; foreach ($chartsdata as $chart) { foreach ($chart as $title => $content) { $counter++; $outlist .= html_writer::tag('li', html_writer::link('#chart_seq_' . $counter, s($title))); $outbody .= html_writer::start_div('chart', ['id' => 'chart_seq_' . $counter]); $outbody .= $this->output->heading($title, 2); if (is_array($content)) { foreach ($content as $subtitle => $subcontent) { $outbody .= html_writer::start_div('subchart'); $outbody .= $this->output->heading($subtitle, 3); $outbody .= $subcontent; $outbody .= html_writer::end_div(); } } else { $outbody .= $content; } $outbody .= html_writer::end_div(); } } $out = $this->output->header(); $out .= html_writer::start_tag('ul', ['class' => 'chartslist']); $out .= $outlist; $out .= html_writer::end_tag('ul'); $out .= html_writer::div($outbody, 'charts'); $out .= $this->output->footer(); return $out; } }