Julio Montoya 14 years ago
parent
commit
bd9119dd6c

+ 5 - 4
main/gradebook/gradebook_flatview.php

@@ -275,15 +275,16 @@ if (isset($_GET['isStudentView']) && $_GET['isStudentView'] == 'false') {
 	echo '</div>';*/
 
 	// main graph
-	//@todo load images with jquery
-	echo '<div id="contentArea" style="text-align:center;" >';
+	$flatviewtable->display();
+	
 	$image_file = $flatviewtable->display_graph();
 	$my_info_path_img = array();
 	$my_info_path_img = explode('/', $image_file);
 	if (strlen($my_info_path_img[5]) == 32) {
 		echo '<img  src="'.$image_file.'">';
-	}
-    $flatviewtable->display();
+	}    
+    //@todo load images with jquery
+    echo '<div id="contentArea" style="text-align:center;" >';    
 	$flatviewtable->display_graph_by_resource();
 	echo '</div>';
 }

+ 52 - 38
main/gradebook/lib/fe/flatviewtable.class.php

@@ -149,26 +149,27 @@ class FlatViewTable extends SortableTable
 		//return '<div id="imageloaded" style="float:center;"><img src="'.api_get_path(WEB_ARCHIVE_PATH).$img_file_generated_name.'" ></div>';
 	}
 
-	function display_graph_by_resource()
-	{
-		include_once(api_get_path(LIBRARY_PATH).'pchart/pData.class.php');
-		include_once(api_get_path(LIBRARY_PATH).'pchart/pChart.class.php');
-		include_once(api_get_path(LIBRARY_PATH).'pchart/pCache.class.php');
+	function display_graph_by_resource() {
+		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';
 
 		$header_name = $this->datagen->get_header_names();
 		$total_users = $this->datagen->get_total_users_count();
 		$img_file = '';
 
-		if ($this->datagen->get_total_items_count()>0 && $total_users > 0 ) {
-            //remove lastname and firstname columns (which are meant for the table, not the graph)
+		if ($this->datagen->get_total_items_count() > 0 && $total_users > 0 ) {
+            //Removing first name
 			array_shift($header_name);
+			//Removing last name
 			array_shift($header_name);
-
+            
 			$displayscore= ScoreDisplay :: instance();
 			$customdisplays = $displayscore->get_custom_score_display_settings();
+			
 			if (is_array($customdisplays) && count(($customdisplays))) {
 
-				$user_results = ($this->datagen->get_data_to_graph2());
+				$user_results = $this->datagen->get_data_to_graph2();
 				$pre_result = $new_result = array();
 				$DataSet = new pData;
 				//filling the Dataset
@@ -188,45 +189,53 @@ class FlatViewTable extends SortableTable
 				$show_draw = false;
 				$resource_list = array();
 				$pre_result2 = array();
-				//print_r($pre_result); exit;
 
 				foreach($pre_result as $key=>$res_array) {
 					rsort($res_array);
 					$pre_result2[] = $res_array;
 				}
-				//print_r($pre_result2);
-
-				if ($total_users>0) {
+				
+				if ($total_users > 0) {
 					foreach($pre_result2 as $key=>$res_array) {
-						//$resource_list
-						//$total =  $res / ($total_users*100);
-						// mayor a menor
 						$key_list = array();
 						foreach($res_array as $user_result) {
-							$resource_list[$key][$user_result[1]]+=1;
+							$resource_list[$key][$user_result[1]] += 1;
 							$key_list[] = $user_result[1];
 						}
 						//@todo when a display custom does not exist the order of the color does not match
 						//filling all the answer that are not responded with 0
-						foreach($customdisplays as $display) {
+						rsort($customdisplays);
+						foreach ($customdisplays as $display) {
 							if (!in_array($display['display'], $key_list))
-								$resource_list[$key][$display['display']]=0;
+								$resource_list[$key][$display['display']] = 0;
 						}
 						$i++;
 					}
+				}				
+				
+				//fixing $resource_list		
+				$max = 0;		
+				$new_list = array();
+				foreach($resource_list as $key=>$value) {
+				    $new_value = array();
+				    foreach($customdisplays as $item) {				        
+				        if ($value[$item['display']] > $max) {
+				            $max = $value[$item['display']];
+				        }
+				        $new_value[$item['display']] = $value[$item['display']];				        
+				    }
+				    $new_list[] = $new_value;
 				}
-				//print_r($customdisplays);
-				//print_r($resource_list); exit;
+				$resource_list = $new_list;
+				
+				
 				$i = 1;
 				$j = 0;
-				// here-----------------------------------
-				//print_r($resource_list);
-				foreach($resource_list as $key=>$resource) {
+
+				foreach ($resource_list as $key=>$resource) {
 					$new_resource_list = $new_resource_list_name = array();
-					$DataSet = new pData;
-					foreach($resource as $name=>$cant) {
-						//$new_resource_list[]=$cant;
-						//$new_resource_list_name[]=$name;
+					$DataSet = new pData();
+					foreach ($resource as $name=>$cant) {
 						$DataSet->AddPoint($cant,"Serie".$j);
 						$DataSet->SetSerieName(strip_tags($name),"Serie".$j);
 						$j++;
@@ -242,11 +251,11 @@ class FlatViewTable extends SortableTable
 					$Cache = new pCache();
 					// the graph id
 					$gradebook_id = intval($_GET['selectcat']);
-					$graph_id = api_get_user_id().'ByResource'.$gradebook_id.api_get_course_id();
+					$graph_id = api_get_user_id().'ByResource'.$gradebook_id.api_get_course_id().api_get_session_id();
 
 					if ($show_draw) {
-						if ($Cache->IsInCache($graph_id, $DataSet->GetData())) {
-						//if (0) {
+						//if ($Cache->IsInCache($graph_id, $DataSet->GetData())) {
+						if (0) {
 							//if we already created the img we get the img file id
 							//echo 'in cache';
 							$img_file = $Cache->GetHash($graph_id,$DataSet->GetData());
@@ -256,10 +265,10 @@ class FlatViewTable extends SortableTable
 							$chart_size_w= 480;
 							$chart_size_h= 250;
 
-							$Test = new pChart($chart_size_w,$chart_size_h);
+							$Test = new pChart($chart_size_w, $chart_size_h);
 
 							// Adding the color schemma
-							$Test->loadColorPalette(api_get_path(LIBRARY_PATH)."pchart/palette/hard_blue.txt");
+							$Test->loadColorPalette(api_get_path(LIBRARY_PATH)."pchart/palette/pastel.txt");
 
 							// set font of the axes
 							$Test->setFontProperties(api_get_path(LIBRARY_PATH)."pchart/fonts/tahoma.ttf",8);
@@ -271,11 +280,16 @@ class FlatViewTable extends SortableTable
 
 							//background color area & stripe or not
 							$Test->drawGraphArea(255,255,255,TRUE);
-							//print_r($DataSet->GetData());
-							$Test->drawScale($DataSet->GetData(),$DataSet->GetDataDescription(),SCALE_START0,150,150,150,TRUE,0,1, FALSE);
+							
+							//Setting max height by default see #3296
+						    if (!empty($max)) {
+                                $Test->setFixedScale(0, $max);    
+						    }
+							
+							$Test->drawScale($DataSet->GetData(),$DataSet->GetDataDescription(), SCALE_ADDALLSTART0, 150,150,150, TRUE, 0, 0, FALSE);
 
 							//background grid
-							$Test->drawGrid(4,TRUE,230,230,230,50);
+							$Test->drawGrid(4, TRUE,230,230,230,50);
 
 							// Draw the 0 line
 							//$Test->setFontProperties(api_get_path(LIBRARY_PATH)."pchart/fonts/tahoma.ttf",6);
@@ -286,7 +300,7 @@ class FlatViewTable extends SortableTable
 
 							//Set legend properties: width, height and text color and font
 							$Test->setFontProperties(api_get_path(LIBRARY_PATH)."pchart/fonts/tahoma.ttf",9);
-							$Test->drawLegend($area_graph_w+10, 70,$DataSet->GetDataDescription(),255,255,255);
+							$Test->drawLegend($area_graph_w+10, 50,$DataSet->GetDataDescription(),255,255,255);
 
 							//Set title properties
 							$Test->setFontProperties(api_get_path(LIBRARY_PATH)."pchart/fonts/tahoma.ttf",10);
@@ -302,7 +316,7 @@ class FlatViewTable extends SortableTable
 						}
 						echo '<img src="'.api_get_path(WEB_ARCHIVE_PATH).$img_file.'" >';
 						if ($i % 2 == 0 && $i!=0) {
-							echo '<br>';
+							echo '<br />';
 						}
 						$i++;
 					}

+ 60 - 64
main/gradebook/lib/scoredisplay.class.php

@@ -1,5 +1,6 @@
 <?php
 /* For licensing terms, see /license.txt */
+
 // Score display types constants
 define('SCORE_DIV',1);
 define('SCORE_PERCENT',2);
@@ -21,8 +22,7 @@ define('SCORE_ONLY_CUSTOM',3);
  */
 class ScoreDisplay
 {
-
-// Singleton stuff
+    // Singleton stuff
 
 	/**
 	 * Get the instance of this class
@@ -59,7 +59,8 @@ class ScoreDisplay
 
 		}
 	}
-// As object
+	
+    // As object
 
 	private $coloring_enabled;
 	private $color_split_value;
@@ -166,34 +167,32 @@ class ScoreDisplay
 		return $this->color_split_value;
 	}
 
-        /**
-         * Get current gradebook category id
-         * @return int  Category id
-         */
-        private function get_current_gradebook_category_id() {
-
-            $tbl_gradebook_category = Database :: get_main_table(TABLE_MAIN_GRADEBOOK_CATEGORY);
-            $curr_course_code = api_get_course_id();
-            $curr_session_id = api_get_session_id();
-
-            $session_condition = '';
-            if (empty($curr_session_id)) {
-                $session_condition = ' AND session_id is null ';
-            } else {
-                $session_condition = ' AND session_id = '.$curr_session_id;
-            }
-
-            $sql = 'SELECT id  FROM '.$tbl_gradebook_category.' WHERE course_code = "'.$curr_course_code.'" '. $session_condition;
-            $rs  = Database::query($sql);
-            $category_id = 0;
-            if (Database::num_rows($rs) > 0) {
-                $row = Database::fetch_row($rs);
-                $category_id = $row[0];
-            }
-
-            return $category_id;
+    /**
+     * Get current gradebook category id
+     * @return int  Category id
+     */
+    private function get_current_gradebook_category_id() {
+
+        $tbl_gradebook_category = Database :: get_main_table(TABLE_MAIN_GRADEBOOK_CATEGORY);
+        $curr_course_code = api_get_course_id();
+        $curr_session_id = api_get_session_id();
+
+        $session_condition = '';
+        if (empty($curr_session_id)) {
+            $session_condition = ' AND session_id is null ';
+        } else {
+            $session_condition = ' AND session_id = '.$curr_session_id;
+        }
 
+        $sql = 'SELECT id FROM '.$tbl_gradebook_category.' WHERE course_code = "'.$curr_course_code.'" '. $session_condition;
+        $rs  = Database::query($sql);
+        $category_id = 0;
+        if (Database::num_rows($rs) > 0) {
+            $row = Database::fetch_row($rs);
+            $category_id = $row[0];
         }
+        return $category_id;
+    }
 
 	/**
 	 * Update custom score display settings
@@ -212,7 +211,7 @@ class ScoreDisplay
                 }
 
 		// remove previous settings
-                $tbl_display = Database :: get_main_table(TABLE_MAIN_GRADEBOOK_SCORE_DISPLAY);
+        $tbl_display = Database :: get_main_table(TABLE_MAIN_GRADEBOOK_SCORE_DISPLAY);
 		$sql = 'DELETE FROM '.$tbl_display.' WHERE category_id = '.$category_id;
 		Database::query($sql);
 
@@ -269,8 +268,8 @@ class ScoreDisplay
 				. $display
 				. ($split_enabled ? $this->get_color_display_end_tag($my_score) : ''));
 	}
-// Internal functions
-
+	
+    // Internal functions
 	private function display_default ($score, $type) {
 		switch ($type) {
 			case SCORE_DIV :			// X / Y
@@ -353,33 +352,32 @@ class ScoreDisplay
 		}
 	}
 
-        /**
-         * Get score color percent by category
-         * @param   int Gradebook category id
-         * @return  int Score
-         */
-        private function get_score_color_percent($category_id = null) {
+    /**
+     * Get score color percent by category
+     * @param   int Gradebook category id
+     * @return  int Score
+     */
+    private function get_score_color_percent($category_id = null) {
 
-            $tbl_display = Database :: get_main_table(TABLE_MAIN_GRADEBOOK_SCORE_DISPLAY);
-
-            if (isset($category_id)) {
-                $category_id = intval($category_id);
-            } else {
-                $category_id = $this->get_current_gradebook_category_id();
-            }
+        $tbl_display = Database :: get_main_table(TABLE_MAIN_GRADEBOOK_SCORE_DISPLAY);
 
-	    $sql = 'SELECT score_color_percent FROM '.$tbl_display.' WHERE category_id = '.$category_id.' LIMIT 1';
-	    $result = Database::query($sql);
-            $score = 0;
-            if (Database::num_rows($result) > 0) {
-                $row = Database::fetch_row($result);
-                $score = $row[0];
-            } else {
-                $score = $this->load_int_setting('gradebook_score_display_colorsplit',50);
-            }
-            return $score;
+        if (isset($category_id)) {
+            $category_id = intval($category_id);
+        } else {
+            $category_id = $this->get_current_gradebook_category_id();
+        }
 
+    $sql = 'SELECT score_color_percent FROM '.$tbl_display.' WHERE category_id = '.$category_id.' LIMIT 1';
+    $result = Database::query($sql);
+        $score = 0;
+        if (Database::num_rows($result) > 0) {
+            $row = Database::fetch_row($result);
+            $score = $row[0];
+        } else {
+            $score = $this->load_int_setting('gradebook_score_display_colorsplit',50);
         }
+        return $score;
+    }
 
 
 	private function save_bool_setting ($property, $value) {
@@ -401,17 +399,15 @@ class ScoreDisplay
 	 * @return  array   2-dimensional array - every element contains 3 subelements (id, score, display)
 	 */
 	private function get_custom_displays($category_id = null) {
-                $tbl_display = Database :: get_main_table(TABLE_MAIN_GRADEBOOK_SCORE_DISPLAY);
-
-                if (isset($category_id)) {
-                    $category_id = intval($category_id);
-                } else {
-                    $category_id = $this->get_current_gradebook_category_id();
-                }
-
+        $tbl_display = Database :: get_main_table(TABLE_MAIN_GRADEBOOK_SCORE_DISPLAY);
+        if (isset($category_id)) {
+            $category_id = intval($category_id);
+        } else {
+            $category_id = $this->get_current_gradebook_category_id();
+        }
 		$sql = 'SELECT * FROM '.$tbl_display.' WHERE category_id = '.$category_id.' ORDER BY score';
 		$result = Database::query($sql);
-		return Database::store_result($result);
+		return Database::store_result($result,'ASSOC');
 	}
 
 

+ 13 - 0
main/inc/lib/pchart/palette/pastel.txt

@@ -0,0 +1,13 @@
+188,224,46
+224,100,46
+224,214,46
+46,151,224
+250,91,73
+250,203,50
+126,183,18
+255,153,0
+254,204,128
+254,230,128
+128,200,254
+191,254,191
+189,183,107