parent
874dca0a68
commit
dc90dfcb76
@ -0,0 +1,209 @@ |
|||||||
|
<?php |
||||||
|
/** |
||||||
|
* This file is part of evaluation graph block plugin for dashboard, |
||||||
|
* it should be required inside dashboard controller for showing it into dashboard interface from plattform |
||||||
|
* @package chamilo.dashboard |
||||||
|
* @author Christian Fasanando |
||||||
|
*/ |
||||||
|
|
||||||
|
/** |
||||||
|
* required files for getting data |
||||||
|
*/ |
||||||
|
require_once api_get_path(LIBRARY_PATH).'usermanager.lib.php'; |
||||||
|
require_once api_get_path(LIBRARY_PATH).'course.lib.php'; |
||||||
|
require_once api_get_path(LIBRARY_PATH).'tracking.lib.php'; |
||||||
|
require_once api_get_path(LIBRARY_PATH).'attendance.lib.php'; |
||||||
|
require_once api_get_path(LIBRARY_PATH).'sessionmanager.lib.php'; |
||||||
|
require_once api_get_path(LIBRARY_PATH).'pchart/pData.class.php'; |
||||||
|
require_once api_get_path(LIBRARY_PATH).'pchart/pChart.class.php'; |
||||||
|
require_once api_get_path(LIBRARY_PATH).'pchart/pCache.class.php'; |
||||||
|
|
||||||
|
require_once api_get_path(SYS_CODE_PATH).'gradebook/lib/be/gradebookitem.class.php'; |
||||||
|
require_once api_get_path(SYS_CODE_PATH).'gradebook/lib/be/evaluation.class.php'; |
||||||
|
require_once api_get_path(SYS_CODE_PATH).'gradebook/lib/be/result.class.php'; |
||||||
|
require_once api_get_path(SYS_CODE_PATH).'gradebook/lib/be/linkfactory.class.php'; |
||||||
|
require_once api_get_path(SYS_CODE_PATH).'gradebook/lib/flatview_data_generator.class.php'; |
||||||
|
require_once api_get_path(SYS_CODE_PATH).'gradebook/lib/scoredisplay.class.php'; |
||||||
|
require_once api_get_path(SYS_CODE_PATH).'gradebook/lib/gradebook_functions.inc.php'; |
||||||
|
|
||||||
|
require_once api_get_path(SYS_CODE_PATH).'gradebook/lib/be/category.class.php'; |
||||||
|
|
||||||
|
|
||||||
|
/** |
||||||
|
* This class is used like controller for this evaluations graph block plugin, |
||||||
|
* the class name must be registered inside path.info file (e.g: controller = "BlockEvaluationGraph"), so dashboard controller will be instantiate it |
||||||
|
* @package chamilo.dashboard |
||||||
|
*/ |
||||||
|
class BlockEvaluationGraph extends Block { |
||||||
|
|
||||||
|
private $user_id; |
||||||
|
private $sessions; |
||||||
|
private $path; |
||||||
|
|
||||||
|
/** |
||||||
|
* Constructor |
||||||
|
*/ |
||||||
|
public function __construct ($user_id) { |
||||||
|
|
||||||
|
/* |
||||||
|
$this->user_id = $user_id; |
||||||
|
if (api_is_platform_admin()) { |
||||||
|
$this->sessions = SessionManager::get_sessions_list(); |
||||||
|
} else if (api_is_drh()) { |
||||||
|
$this->sessions = SessionManager::get_sessions_followed_by_drh($user_id); |
||||||
|
} |
||||||
|
$this->path = 'block_evaluation_graph'; |
||||||
|
*/ |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* This method return content html containing information about sessions and its position for showing it inside dashboard interface |
||||||
|
* it's important to use the name 'get_block' for beeing used from dashboard controller |
||||||
|
* @return array column and content html |
||||||
|
*/ |
||||||
|
public function get_block() { |
||||||
|
|
||||||
|
global $charset; |
||||||
|
|
||||||
|
$column = 1; |
||||||
|
$data = array(); |
||||||
|
|
||||||
|
/* |
||||||
|
if (api_is_platform_admin()) { |
||||||
|
$student_content_html = $this->get_students_content_html_for_platform_admin(); |
||||||
|
} else if (api_is_drh()) {*/ |
||||||
|
$evaluations_graph = $this->get_evaluations_graph(); |
||||||
|
//} |
||||||
|
|
||||||
|
$html = ' |
||||||
|
<li class="widget color-orange" id="intro"> |
||||||
|
<div class="widget-head"> |
||||||
|
<h3>'.get_lang('EvaluatiosGraph').'</h3> |
||||||
|
<div class="widget-actions"><a onclick="javascript:if(!confirm(\''.addslashes(api_htmlentities(get_lang('ConfirmYourChoice'),ENT_QUOTES,$charset)).'\')) return false;" href="index.php?action=disable_block&path='.$this->path.'">'.Display::return_icon('close.gif',get_lang('Close')).'</a></div> |
||||||
|
</div> |
||||||
|
<div class="widget-content" align="center"> |
||||||
|
'.$evaluations_graph.' |
||||||
|
</div> |
||||||
|
</li> |
||||||
|
'; |
||||||
|
|
||||||
|
$data['column'] = $column; |
||||||
|
$data['content_html'] = $html; |
||||||
|
|
||||||
|
return $data; |
||||||
|
|
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* This method return a graph containing informations about evaluations, it's used inside get_block method for showing it inside dashboard interface |
||||||
|
* @return string img html |
||||||
|
*/ |
||||||
|
public function get_evaluations_graph() { |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/* |
||||||
|
$graph = ''; |
||||||
|
|
||||||
|
$course_code = 'CURSO1'; |
||||||
|
$cats = Category::load(null, null, $course_code, null, null, null, false); |
||||||
|
|
||||||
|
$alleval = $cats[0]->get_evaluations(null, true, 'CURSO1'); |
||||||
|
$alllinks = $cats[0]->get_links(null, true); |
||||||
|
$users = get_all_users($alleval, $alllinks); |
||||||
|
$printable_data = get_evaluation_sumary_result($users, $alleval, $alllinks); |
||||||
|
|
||||||
|
//var_dump($printable_data); |
||||||
|
|
||||||
|
/* |
||||||
|
$links = array(); |
||||||
|
$i = 1; |
||||||
|
foreach ($printable_data[0] as $link) { |
||||||
|
if ($i>2) $links[$i] = $link; |
||||||
|
$i++; |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
foreach ($printable_data[1] as $score) { |
||||||
|
$x = 1; |
||||||
|
$scores = array(); |
||||||
|
foreach($score as $sc) { |
||||||
|
if ($x>2) $scores[][$i][] = $sc; |
||||||
|
$x++; |
||||||
|
|
||||||
|
} |
||||||
|
|
||||||
|
} |
||||||
|
*/ |
||||||
|
|
||||||
|
|
||||||
|
// Dataset definition |
||||||
|
$data_set = new pData; |
||||||
|
$data_set->AddPoint(array(3,15,15,8,15),"Serie1"); |
||||||
|
$data_set->AddPoint(array(7,8.5,8.5,5,10),"Serie2"); |
||||||
|
$data_set->AddPoint(array(2,2,2,2,5),"Serie3"); |
||||||
|
$data_set->AddPoint(array('eje1','eje2','forito','tareita','leccion'),"Serie4"); |
||||||
|
|
||||||
|
//$data_set->AddAllSeries(); |
||||||
|
//$data_set->SetAbsciseLabelSerie(); |
||||||
|
|
||||||
|
$data_set->AddAllSeries(); |
||||||
|
$data_set->RemoveSerie("Serie4"); |
||||||
|
$data_set->SetAbsciseLabelSerie("Serie4"); |
||||||
|
|
||||||
|
|
||||||
|
$data_set->SetSerieName("Maximum","Serie1"); |
||||||
|
$data_set->SetSerieName("Average","Serie2"); |
||||||
|
$data_set->SetSerieName("Minimum","Serie3"); |
||||||
|
|
||||||
|
|
||||||
|
$graph_id = $this->user_id.'StudentEvaluationGraph'; |
||||||
|
$cache = new pCache(); |
||||||
|
// the graph id |
||||||
|
$data = $data_set->GetData(); |
||||||
|
|
||||||
|
if ($cache->IsInCache($graph_id, $data)) { |
||||||
|
//if we already created the img |
||||||
|
$img_file = $cache->GetHash($graph_id, $data); |
||||||
|
} else { |
||||||
|
// Initialise the graph |
||||||
|
$test = new pChart(450,230); |
||||||
|
$test->setFontProperties(api_get_path(LIBRARY_PATH).'pchart/fonts/tahoma.ttf',8); |
||||||
|
$test->setGraphArea(50,30,330,200); |
||||||
|
$test->drawFilledRoundedRectangle(7,7,343,223,5,240,240,240); |
||||||
|
$test->drawRoundedRectangle(5,5,345,225,5,230,230,230); |
||||||
|
$test->drawGraphArea(255,255,255,TRUE); |
||||||
|
$test->drawScale($data_set->GetData(),$data_set->GetDataDescription(),SCALE_ADDALL,150,150,150,TRUE,0,2,TRUE); |
||||||
|
$test->drawGrid(4,TRUE,230,230,230,50); |
||||||
|
|
||||||
|
// Draw the 0 line |
||||||
|
$test->setFontProperties(api_get_path(LIBRARY_PATH).'pchart/fonts/tahoma.ttf',6); |
||||||
|
$test->drawTreshold(0,143,55,72,TRUE,TRUE); |
||||||
|
|
||||||
|
// Draw the bar graph |
||||||
|
$test->drawStackedBarGraph($data_set->GetData(),$data_set->GetDataDescription(),TRUE); |
||||||
|
|
||||||
|
// Finish the graph |
||||||
|
$test->setFontProperties(api_get_path(LIBRARY_PATH).'pchart/fonts/tahoma.ttf',8); |
||||||
|
$test->drawLegend(596,150,$data_set->GetDataDescription(),255,255,255); |
||||||
|
$test->setFontProperties(api_get_path(LIBRARY_PATH).'pchart/fonts/tahoma.ttf',10); |
||||||
|
$test->drawTitle(50,22,"Example 20",50,50,50,185); |
||||||
|
|
||||||
|
$cache->WriteToCache($graph_id, $data_set->GetData(), $test); |
||||||
|
ob_start(); |
||||||
|
$test->Stroke(); |
||||||
|
ob_end_clean(); |
||||||
|
$img_file = $cache->GetHash($graph_id, $data_set->GetData()); |
||||||
|
} |
||||||
|
|
||||||
|
if (!empty($img_file)) { |
||||||
|
$graph = '<img src="'.api_get_path(WEB_ARCHIVE_PATH).$img_file.'">'; |
||||||
|
} |
||||||
|
|
||||||
|
return $graph; |
||||||
|
|
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
} |
||||||
|
?> |
@ -0,0 +1,6 @@ |
|||||||
|
name = "Evaluation Graph Block" |
||||||
|
controller = "BlockEvaluationGraph" |
||||||
|
description = "Display maximum, minimum and average evaluations about links inside assessments tool" |
||||||
|
package = Dashboard |
||||||
|
version = 1.0 |
||||||
|
author = Christian Fasanando |
@ -0,0 +1,78 @@ |
|||||||
|
/* Colors */ |
||||||
|
.color-yellow {background:#f2bc00;} |
||||||
|
.color-red {background:#dd0000;} |
||||||
|
.color-blue {background:#148ea4;} |
||||||
|
.color-white {background:#dfdfdf;} |
||||||
|
.color-orange {background:#f66e00;} |
||||||
|
.color-green {background:#8dc100;} |
||||||
|
.color-yellow h3, |
||||||
|
.color-white h3, |
||||||
|
.color-green h3 |
||||||
|
{color:#000;} |
||||||
|
.color-red h3, |
||||||
|
.color-blue h3, |
||||||
|
.color-orange h3 |
||||||
|
{color:#FFF;} |
||||||
|
/* End Colors */ |
||||||
|
|
||||||
|
//#columns #column1 .widget { margin: 30px 35px 0 25px; } |
||||||
|
//#columns #column3 .widget { margin: 30px 25px 0 35px; } |
||||||
|
|
||||||
|
.widget { |
||||||
|
margin: 30px 20px 0 20px; |
||||||
|
padding: 2px; |
||||||
|
-moz-border-radius: 4px; |
||||||
|
-webkit-border-radius: 4px; |
||||||
|
} |
||||||
|
.widget .widget-head { |
||||||
|
color: #000; |
||||||
|
overflow: hidden; |
||||||
|
width: 100%; |
||||||
|
height: 30px; |
||||||
|
line-height: 30px; |
||||||
|
} |
||||||
|
.widget .widget-head h3 { |
||||||
|
padding: 0 5px; |
||||||
|
float: left; |
||||||
|
} |
||||||
|
.widget .widget-content { |
||||||
|
background: #FFF url(img/widget-content-bg.png) repeat-x; |
||||||
|
padding: 0 5px; |
||||||
|
color: #000; |
||||||
|
-moz-border-radius-bottomleft: 2px; |
||||||
|
-moz-border-radius-bottomright: 2px; |
||||||
|
-webkit-border-bottom-left-radius: 2px; |
||||||
|
-webkit-border-bottom-right-radius: 2px; |
||||||
|
line-height: 1.2em; |
||||||
|
overflow: hidden; |
||||||
|
} |
||||||
|
.widget .widget-content p { |
||||||
|
padding: 0.8em 0; |
||||||
|
border-bottom: 1px solid #666; |
||||||
|
} |
||||||
|
.widget .widget-content pre { |
||||||
|
padding: 0.5em 5px; |
||||||
|
color: #EEE; |
||||||
|
font-size: 12px; |
||||||
|
} |
||||||
|
.widget .widget-content ul { |
||||||
|
padding: 5px 0 5px 20px; |
||||||
|
list-style: disc; |
||||||
|
} |
||||||
|
.widget .widget-content ul li {padding: 3px 0;} |
||||||
|
.widget .widget-content ul.images { |
||||||
|
padding: 7px 0 0 0; |
||||||
|
list-style: none; |
||||||
|
height: 1%; |
||||||
|
} |
||||||
|
.widget .widget-content ul.images li { |
||||||
|
display: inline; |
||||||
|
float: left; |
||||||
|
} |
||||||
|
.widget .widget-content ul.images img { |
||||||
|
display: inline; |
||||||
|
float: left; |
||||||
|
margin: 0 0 7px 7px; |
||||||
|
} |
||||||
|
|
||||||
|
.widget-actions {text-align:right;margin-right:5px;margin-top:5px;} |
Loading…
Reference in new issue