|
@@ -1,6 +1,10 @@
|
|
|
<?php
|
|
|
/* For licensing terms, see license.txt */
|
|
|
|
|
|
+use CpChart\Classes\pCache as pCache;
|
|
|
+use CpChart\Classes\pData as pData;
|
|
|
+use CpChart\Classes\pImage as pImage;
|
|
|
+
|
|
|
/**
|
|
|
* GradebookTable Class
|
|
|
* Table to display categories, evaluations and links
|
|
@@ -13,7 +17,8 @@ class GradebookTable extends SortableTable
|
|
|
private $currentcat;
|
|
|
private $datagen;
|
|
|
private $evals_links;
|
|
|
- public $cats;
|
|
|
+ public $cats;
|
|
|
+ private $dataForGraph;
|
|
|
|
|
|
/**
|
|
|
* Constructor
|
|
@@ -205,6 +210,8 @@ class GradebookTable extends SortableTable
|
|
|
// Type.
|
|
|
$row[] = $this->build_type_column($item);
|
|
|
|
|
|
+ $this->dataForGraph['categories'][] = $item->get_name();
|
|
|
+
|
|
|
// Name.
|
|
|
if (get_class($item) == 'Category') {
|
|
|
$row[] = $invisibility_span_open.'<h3>'.$item->get_name().'</h3>'.$invisibility_span_close;
|
|
@@ -291,6 +298,9 @@ class GradebookTable extends SortableTable
|
|
|
$totalAverage[1] + $data['average_score'][1],
|
|
|
];
|
|
|
|
|
|
+ $this->dataForGraph['my_result'][] = (float) $scoredisplay->display_score($totalResult, SCORE_AVERAGE);
|
|
|
+ $this->dataForGraph['average'][] = (float) $scoredisplay->display_score($totalAverage, SCORE_AVERAGE);
|
|
|
+
|
|
|
// Student result
|
|
|
$row[] = $value_data;
|
|
|
// Ranking
|
|
@@ -612,6 +622,101 @@ class GradebookTable extends SortableTable
|
|
|
return $sortable_data;
|
|
|
}
|
|
|
|
|
|
+
|
|
|
+ /**
|
|
|
+ * @return array
|
|
|
+ */
|
|
|
+ private function getDataForGraph()
|
|
|
+ {
|
|
|
+ return $this->dataForGraph;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * @return string
|
|
|
+ */
|
|
|
+ public function getGraph()
|
|
|
+ {
|
|
|
+ $data = $this->getDataForGraph();
|
|
|
+ if (!empty($data) && isset($data['my_result'])) {
|
|
|
+ $dataSet = new pData();
|
|
|
+ $dataSet->addPoints($data['my_result'], get_lang('Me'));
|
|
|
+ // In order to generate random values
|
|
|
+ // $data['average'] = array(rand(0,50), rand(0,50));
|
|
|
+ $dataSet->addPoints($data['average'], get_lang('Average'));
|
|
|
+
|
|
|
+ $dataSet->addPoints($data['categories'], 'categories');
|
|
|
+
|
|
|
+ $dataSet->setAbscissa("categories");
|
|
|
+ $xSize = 600;
|
|
|
+ $ySize = 400;
|
|
|
+ $pChart = new pImage($xSize, $ySize, $dataSet);
|
|
|
+ /* Turn of Antialiasing */
|
|
|
+ $pChart->Antialias = FALSE;
|
|
|
+
|
|
|
+ /* Add a border to the picture */
|
|
|
+ $pChart->drawRectangle(0,0,$xSize-10,$ySize-10,array("R"=>0,"G"=>0,"B"=>0));
|
|
|
+
|
|
|
+ $pChart->drawText(10,16,get_lang('Results'),array("FontSize"=>11,"Align"=>TEXT_ALIGN_BOTTOMLEFT));
|
|
|
+
|
|
|
+ $pChart->setGraphArea(50, 30, $xSize-50, $ySize-50);
|
|
|
+
|
|
|
+ $pChart->setFontProperties(
|
|
|
+ array(
|
|
|
+ 'FontName' => api_get_path(SYS_FONTS_PATH) . 'opensans/OpenSans-Regular.ttf',
|
|
|
+ 'FontSize' => 10
|
|
|
+ )
|
|
|
+ );
|
|
|
+
|
|
|
+ /* Draw the scale */
|
|
|
+ $scaleSettings = array(
|
|
|
+ "XMargin" => 10,
|
|
|
+ "YMargin" => 10,
|
|
|
+ "Floating" => true,
|
|
|
+ "GridR" => 200,
|
|
|
+ "GridG" => 200,
|
|
|
+ "GridB" => 200,
|
|
|
+ "DrawSubTicks" => true,
|
|
|
+ "CycleBackground" => true,
|
|
|
+ );
|
|
|
+ $pChart->drawScale($scaleSettings);
|
|
|
+
|
|
|
+ /* Draw the line chart */
|
|
|
+ $pChart->drawLineChart();
|
|
|
+ $pChart->drawPlotChart(array("DisplayValues"=>TRUE,"PlotBorder"=>TRUE,"BorderSize"=>2,"Surrounding"=>-60,"BorderAlpha"=>80));
|
|
|
+
|
|
|
+ /* Write the chart legend */
|
|
|
+ $pChart->drawLegend(
|
|
|
+ $xSize-180,
|
|
|
+ 9,
|
|
|
+ array(
|
|
|
+ "Style" => LEGEND_NOBORDER,
|
|
|
+ "Mode" => LEGEND_HORIZONTAL,
|
|
|
+ "FontR" => 0,
|
|
|
+ "FontG" => 0,
|
|
|
+ "FontB" => 0,
|
|
|
+ )
|
|
|
+ );
|
|
|
+
|
|
|
+ $cachePath = api_get_path(SYS_ARCHIVE_PATH);
|
|
|
+ $myCache = new pCache(array('CacheFolder' => substr($cachePath, 0, strlen($cachePath) - 1)));
|
|
|
+ $chartHash = $myCache->getHash($dataSet);
|
|
|
+
|
|
|
+ $myCache->writeToCache($chartHash, $pChart);
|
|
|
+ $imgSysPath = api_get_path(SYS_ARCHIVE_PATH) . $chartHash;
|
|
|
+ $myCache->saveFromCache($chartHash, $imgSysPath);
|
|
|
+ $imgWebPath = api_get_path(WEB_ARCHIVE_PATH) . $chartHash;
|
|
|
+
|
|
|
+ if (file_exists($imgSysPath)) {
|
|
|
+ $result = '<div id="contentArea" style="text-align: center;" >';
|
|
|
+ $result .= '<img src="' . $imgWebPath.'" >';
|
|
|
+ $result .= '</div>';
|
|
|
+ return $result;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ return '';
|
|
|
+ }
|
|
|
+
|
|
|
/**
|
|
|
* @param $item
|
|
|
* @return mixed
|