[moodle] / contrib / plugins / grade / report / visual / visualizations / visual_grade_distribution.php Repository:

Annotation of /contrib/plugins/grade/report/visual/visualizations/visual_grade_distribution.php

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.1 - (view) (download)

1 : dservos 1.1 <?php
2 :     require_once $CFG->dirroot . '/grade/report/visual/visualizations/visualization.php';
3 :    
4 :     class grade_distribution extends visualization {
5 :     const RANGE = 10;
6 :    
7 :     public $colorencodernode;
8 :    
9 :     public $colorencoderedge;
10 :    
11 :     public $shapeencodernode;
12 :    
13 :     public $shapeencoderedge;
14 :    
15 :     public $grouplegend;
16 :    
17 :     public $itemlegend;
18 :    
19 :     public function __construct() {
20 :     parent::__construct(get_string('gradedistribution', 'gradereport_visual'));
21 :    
22 :     $this->layout = visualization::LAYOUT_AXIS;
23 :     $this->layoutsettings = null;//array('false', 'true');
24 :     //$this->nodeshape = visualization::SHAPE_VERTICAL_BAR;
25 :     //$this->edgeshape = visualization::SHAPE_BEZIER;
26 :    
27 :     $this->edges = array(new edge('grade', array('item', 'group')));
28 :    
29 :     $this->xaxis = 'grade';
30 :     $this->yaxis = 'students';
31 :     $this->xaxislabelformat = '0\\%';
32 :     //$this->xaxismax = 100 + grade_distribution::RANGE;
33 :     //$this->xaxismin = grade_distribution::RANGE;
34 :     $this->xaxisxoffset = -27;
35 :    
36 :     $this->xaxislabel = get_string('grade', 'gradereport_visual');
37 :     $this->yaxislabel = get_string('numberstudents', 'gradereport_visual');
38 :     $this->title = get_string('gradedistribution:title', 'gradereport_visual');
39 :    
40 :     $this->capabilities = null;
41 :    
42 :     $this->colorencoderedge = new encoder(encoder::ENCODER_COLOR, 'item', array(2));
43 :     $this->colorencodernode = new encoder(encoder::ENCODER_COLOR, 'item', array(1));
44 :     //$this->shapeencoderedge = new encoder(encoder::ENCODER_SHAPE, 'group', array(2));
45 :     $this->shapeencodernode = new encoder(encoder::ENCODER_SHAPE, 'group', array(1));
46 :     $this->encoders = array($this->colorencodernode, $this->colorencoderedge, $this->shapeencodernode);
47 :    
48 :     $this->grouplegend = new legend($this->shapeencodernode);
49 :     $this->itemlegend = new legend($this->colorencodernode);
50 :     $this->legends = array($this->itemlegend, $this->grouplegend);
51 :     }
52 :    
53 :     public function report_data($visualreport) {
54 :     $data = array();
55 :     $data['header'] = array();
56 :     $data['header']['students'] = 'students';
57 :     // $data['header']['gradelevel'] = 'gradelevel';
58 :     $data['header']['grade'] = 'grade';
59 :     $data['header']['item'] = 'item';
60 :     $data['header']['group'] = 'group';
61 :     //$data['header']['range'] = 'range';
62 :    
63 :     $rawdata = array();
64 :     $counters = array();
65 :     $rangesize = round(100 / grade_distribution::RANGE);
66 :    
67 :     foreach($visualreport->grades as $itemkey=>$itemgrades) {
68 :     foreach($itemgrades as $studentkey=>$studentdata) {
69 :     if($studentdata != null && $studentdata->finalgrade != null) {
70 :     foreach(groups_get_user_groups($visualreport->courseid, $studentkey) as $grouping) {
71 :     $gradelevel = floor(round($studentdata->standardise_score($studentdata->finalgrade, $visualreport->gtree->items[$itemkey]->grademin, $visualreport->gtree->items[$itemkey]->grademax, 0, 100)) / grade_distribution::RANGE);
72 :     if($gradelevel == $rangesize) {
73 :     $gradelevel = $rangesize - 1;
74 :     }
75 :    
76 :     if(count($grouping) > 0) {
77 :     foreach($grouping as $group) {
78 :     if(isset($rawdata[$gradelevel][$itemkey][$group])) {
79 :     $rawdata[$gradelevel][$itemkey][$group] += 1;
80 :     } else {
81 :     $rawdata[$gradelevel][$itemkey][$group] = 1;
82 :     }
83 :    
84 :     if(isset($counters[$itemkey][$group])) {
85 :     $counters[$itemkey][$group] += 1;
86 :     } else {
87 :     $counters[$itemkey][$group] = 1;
88 :     }
89 :     }
90 :     } else {
91 :     if(isset($rawdata[$gradelevel][$itemkey]['ng'])) {
92 :     $rawdata[$gradelevel][$itemkey]['ng'] += 1;
93 :     } else {
94 :     $rawdata[$gradelevel][$itemkey]['ng'] = 1;
95 :     }
96 :    
97 :     if(isset($counters[$itemkey]['ng'])) {
98 :     $counters[$itemkey]['ng'] += 1;
99 :     } else {
100 :     $counters[$itemkey]['ng'] = 1;
101 :     }
102 :     }
103 :    
104 :     if(isset($rawdata[$gradelevel][$itemkey]['ag'])) {
105 :     $rawdata[$gradelevel][$itemkey]['ag'] += 1;
106 :     } else {
107 :     $rawdata[$gradelevel][$itemkey]['ag'] = 1;
108 :     }
109 :    
110 :     if(isset($counters[$itemkey]['ag'])) {
111 :     $counters[$itemkey]['ag'] += 1;
112 :     } else {
113 :     $counters[$itemkey]['ag'] = 1;
114 :     }
115 :     }
116 :     }
117 :     }
118 :    
119 :     for($i = 0; $i < $rangesize; $i++) {
120 :     foreach(groups_get_all_groups($visualreport->courseid) as $group) {
121 :     if(!isset($rawdata[$i][$itemkey][$group->id])) {
122 :     $rawdata[$i][$itemkey][$group->id] = 0;
123 :     }
124 :     }
125 :    
126 :     if(!isset($rawdata[$i][$itemkey]['ng'])) {
127 :     $rawdata[$i][$itemkey]['ng'] = 0;
128 :     }
129 :    
130 :     if(!isset($rawdata[$i][$itemkey]['ag'])) {
131 :     $rawdata[$i][$itemkey]['ag'] = 0;
132 :     }
133 :     }
134 :     }
135 :    
136 :    
137 :     $i = 0;
138 :    
139 :     foreach($rawdata as $gradelevel=>$items) {
140 :     foreach($items as $itemkey=>$groups) {
141 :     foreach($groups as $groupkey=>$students) {
142 :     $index = $gradelevel * 10000 + $i;
143 :     $data[$index]['students'] = $students;
144 :     //$data[$index]['gradelevel'] = $gradelevel;
145 :     $data[$index]['grade'] = $gradelevel * grade_distribution::RANGE; //($gradelevel * grade_distribution::RANGE) . '% - ' . (($gradelevel + 1) * grade_distribution::RANGE - 1) . '%';
146 :     $data[$index]['item'] = $visualreport->gtree->items[$itemkey]->get_name();
147 :     if($groupkey == 'ng') {
148 :     $data[$index]['group'] = get_string('nogroup', 'gradereport_visual');
149 :     } else if($groupkey == 'ag'){
150 :     $data[$index]['group'] = get_string('allgroups', 'gradereport_visual');
151 :     } else {
152 :     $data[$index]['group'] = groups_get_group_name($groupkey);
153 :     }
154 :     //$data[$index]['range'] = grade_distribution::RANGE;
155 :    
156 :     $i++;
157 :     }
158 :     }
159 :     }
160 :    
161 :     // ksort($data);
162 :    
163 :     return $data;
164 :     }
165 :     }
166 :     ?>

Moodle CVS Admin
ViewVC Help
Powered by ViewVC 1.0.7