function getGraph(array $a_graph_items)
 {
     global $lng;
     $a_graph_items = array(array_pop($a_graph_items));
     include_once "Services/Chart/classes/class.ilChart.php";
     $chart = new ilChart("objstlp", 700, 500);
     $legend = new ilChartLegend();
     $chart->setLegend($legend);
     // needed for correct stacking
     $custom_order = array(ilLPStatus::LP_STATUS_IN_PROGRESS_NUM => array("#f7d408", "#fffa00"), ilLPStatus::LP_STATUS_FAILED_NUM => array("#cf0202", "#f15b5b"), ilLPStatus::LP_STATUS_COMPLETED_NUM => array("#17aa0e", "#6ce148"), ilLPStatus::LP_STATUS_NOT_ATTEMPTED_NUM => array("#a4a4a4", "#c4c4c4"));
     $chart->setColors(array());
     $max_value = 0;
     foreach ($this->chart_data as $object_id => $days) {
         if (in_array($object_id, $a_graph_items)) {
             $series = array();
             foreach ($custom_order as $status => $colors) {
                 /*
                 if(strpos($this->filter["yearmonth"], "-") === false)
                 {
                 	$series[$status] = new ilChartData("lines");
                 	$series[$status]->setLineSteps(true);
                 }
                 else
                 {						
                 	$series[$status] = new ilChartData("bars");
                 	$series[$status]->setBarOptions(0.75);
                 	$series[$status]->setFill(true, $colors[1]);
                 }										
                 $series[$status]->setStackingId($object_id);					
                 */
                 $series[$status] = new ilChartData("lines");
                 $series[$status]->setLabel(ilLearningProgressBaseGUI::_getStatusText($status));
                 $chart_colors[] = $colors[0];
             }
             $chart->setColors($chart_colors);
             if (strpos($this->filter["yearmonth"], "-") === false) {
                 $x_axis = $this->lng->txt("month");
                 $counter = 0;
                 foreach (array_keys($this->getMonthsYear($this->filter["yearmonth"])) as $month) {
                     for ($loop = 1; $loop < 32; $loop++) {
                         $item_day = $month . "-" . str_pad($loop, 2, "0", STR_PAD_LEFT);
                         foreach (array_keys($custom_order) as $status) {
                             if (isset($days[$item_day])) {
                                 // as there is only 1 entry per day, avg == sum
                                 $value = (int) $days[$item_day][$this->status_map[$status] . "_avg"];
                             } else {
                                 $value = 0;
                             }
                             $max_value = max($max_value, $value);
                             $value = $this->anonymizeValue($value, true);
                             $series[$status]->addPoint($counter, $value);
                         }
                         $counter++;
                     }
                 }
             } else {
                 $x_axis = $this->lng->txt("day");
                 for ($loop = 1; $loop < 32; $loop++) {
                     foreach (array_keys($custom_order) as $status) {
                         if (isset($days[$loop])) {
                             // as there is only 1 entry per day, avg == sum
                             $value = (int) $days[$loop][$this->status_map[$status] . "_avg"];
                         } else {
                             $value = 0;
                         }
                         $max_value = max($max_value, $value);
                         $value = $this->anonymizeValue($value, true);
                         $series[$status]->addPoint($loop, $value);
                     }
                 }
             }
             foreach (array_keys($custom_order) as $status) {
                 $chart->addData($series[$status]);
             }
         }
     }
     $value_ticks = $this->buildValueScale($max_value, true);
     $labels = array();
     if (strpos($this->filter["yearmonth"], "-") === false) {
         $counter = 0;
         foreach ($this->getMonthsYear($this->filter["yearmonth"], true) as $caption) {
             $labels[$counter] = $caption;
             $counter += 31;
         }
     } else {
         for ($loop = 1; $loop < 32; $loop++) {
             $labels[$loop] = $loop . ".";
         }
     }
     $chart->setTicks($labels, $value_ticks, true);
     return $chart->getHTML();
 }
 function getGraph(array $a_graph_items)
 {
     global $lng;
     include_once "Services/Chart/classes/class.ilChart.php";
     $chart = new ilChart("objstdly", 700, 500);
     $legend = new ilChartLegend();
     $chart->setLegend($legend);
     $max_value = 0;
     foreach ($this->getData() as $object) {
         if (in_array($object["obj_id"], $a_graph_items)) {
             $series = new ilChartData("lines");
             $series->setLabel(ilObject::_lookupTitle($object["obj_id"]));
             for ($loop = 0; $loop < 24; $loop++) {
                 $value = (int) $object["graph"]["hour" . $loop];
                 $max_value = max($max_value, $value);
                 if ($this->filter["measure"] != "spent_seconds") {
                     $value = $this->anonymizeValue($value, true);
                 }
                 $series->addPoint($loop, $value);
             }
             $chart->addData($series);
         }
     }
     $value_ticks = $this->buildValueScale($max_value, $this->filter["measure"] != "spent_seconds", $this->filter["measure"] == "spent_seconds");
     $labels = array();
     for ($loop = 0; $loop < 24; $loop++) {
         $labels[$loop] = str_pad($loop, 2, "0", STR_PAD_LEFT);
     }
     $chart->setTicks($labels, $value_ticks, true);
     return $chart->getHTML();
 }
 /**
  * Build chart for active sessions
  * 
  * @param array $a_data
  * @param string $a_title
  * @param int $a_scale
  * @param array $a_measure
  * @return string 
  */
 protected function getChart($a_data, $a_title, $a_scale = self::SCALE_DAY, $a_measure = null)
 {
     global $lng;
     include_once "Services/Chart/classes/class.ilChart.php";
     $chart = new ilChart("objstacc", 700, 500);
     $chart->setYAxisToInteger(true);
     $legend = new ilChartLegend();
     $chart->setLegend($legend);
     if (!$a_measure) {
         $a_measure = array("min", "avg", "max");
     } else {
         if (!is_array($a_measure)) {
             $a_measure = array($a_measure);
         }
     }
     $colors_map = array("min" => "#00cc00", "avg" => "#0000cc", "max" => "#cc00cc");
     $colors = $act_line = array();
     foreach ($a_measure as $measure) {
         $act_line[$measure] = new ilChartData("lines");
         $act_line[$measure]->setLineSteps(true);
         $act_line[$measure]->setLabel($lng->txt("trac_session_active_" . $measure));
         $colors[] = $colors_map[$measure];
     }
     if ($a_scale != self::SCALE_PERIODIC_WEEK) {
         $max_line = new ilChartData("lines");
         $max_line->setLabel($lng->txt("session_max_count"));
         $colors[] = "#cc0000";
     }
     $chart->setColors($colors);
     $chart_data = $this->adaptDataToScale($a_scale, $a_data, 700);
     unset($a_data);
     $scale = ceil(sizeof($chart_data) / 5);
     $labels = array();
     foreach ($chart_data as $idx => $item) {
         $date = $item["slot_begin"];
         if ($a_scale == self::SCALE_PERIODIC_WEEK || !($idx % ceil($scale))) {
             switch ($a_scale) {
                 case self::SCALE_DAY:
                     $labels[$date] = date("H:i", $date);
                     break;
                 case self::SCALE_WEEK:
                     $labels[$date] = date("d.m. H", $date) . "h";
                     break;
                 case self::SCALE_MONTH:
                     $labels[$date] = date("d.m.", $date);
                     break;
                 case self::SCALE_YEAR:
                     $labels[$date] = date("Y-m", $date);
                     break;
                 case self::SCALE_PERIODIC_WEEK:
                     $day = substr($date, 0, 1);
                     $hour = substr($date, 1, 2);
                     $min = substr($date, 3, 2);
                     // build ascending scale from day values
                     $day_value = ($day - 1) * 60 * 60 * 24;
                     $date = $day_value + $hour * 60 * 60 + $min * 60;
                     // 6-hour interval labels
                     if ($hour != $old_hour && $hour && $hour % 6 == 0) {
                         $labels[$date] = $hour;
                         $old_hour = $hour;
                     }
                     // day label
                     if ($day != $old_day) {
                         $labels[$date] = ilCalendarUtil::_numericDayToString($day, false);
                         $old_day = $day;
                     }
                     break;
             }
         }
         foreach ($a_measure as $measure) {
             $value = (int) $item["active_" . $measure];
             $act_line[$measure]->addPoint($date, $value);
         }
         if ($a_scale != self::SCALE_PERIODIC_WEEK) {
             $max_line->addPoint($date, (int) $item["max_sessions"]);
         }
     }
     foreach ($act_line as $line) {
         $chart->addData($line);
     }
     if ($a_scale != self::SCALE_PERIODIC_WEEK) {
         $chart->addData($max_line);
     }
     $chart->setTicks($labels, null, true);
     return $chart->getHTML();
 }
 function getGraph(array $a_graph_items)
 {
     global $lng;
     include_once "Services/Chart/classes/class.ilChart.php";
     $chart = new ilChart("objsttp", 700, 500);
     $legend = new ilChartLegend();
     $chart->setLegend($legend);
     $types = array();
     foreach ($this->getData() as $id => $item) {
         $types[$id] = $item["title"];
     }
     foreach (array_values($this->getMonthsYear(null, true)) as $idx => $caption) {
         $labels[$idx + 1] = $caption;
     }
     $chart->setTicks($labels, false, true);
     foreach ($this->getData() as $type => $object) {
         if (in_array($type, $a_graph_items)) {
             $series = new ilChartData("lines");
             $series->setLabel($types[$type]);
             foreach (array_keys($this->getMonthsYear()) as $idx => $month) {
                 $series->addPoint($idx + 1, (int) $object["month_" . $month]);
             }
             $chart->addData($series);
         }
     }
     return $chart->getHTML();
 }
 protected function renderChart($a_id, $a_variables)
 {
     include_once "Services/Chart/classes/class.ilChart.php";
     $chart = new ilChart($a_id, 700, 400);
     $legend = new ilChartLegend();
     $chart->setLegend($legend);
     $chart->setYAxisToInteger(true);
     $data = new ilChartData("bars");
     $data->setLabel($this->lng->txt("users_answered"));
     $data->setBarOptions(0.5, "center");
     $max = 5;
     if (sizeof($a_variables) <= $max) {
         if ($a_variables) {
             $labels = array();
             foreach ($a_variables as $idx => $points) {
                 $data->addPoint($idx, $points["selected"]);
                 $labels[$idx] = $idx + 1 . ". " . ilUtil::prepareFormOutput($points["title"]);
             }
             $chart->addData($data);
             $chart->setTicks($labels, false, true);
         }
         return "<div style=\"margin:10px\">" . $chart->getHTML() . "</div>";
     } else {
         $chart_legend = array();
         $labels = array();
         foreach ($a_variables as $idx => $points) {
             $data->addPoint($idx, $points["selected"]);
             $labels[$idx] = $idx + 1 . ".";
             $chart_legend[$idx + 1] = ilUtil::prepareFormOutput($points["title"]);
         }
         $chart->addData($data);
         $chart->setTicks($labels, false, true);
         $legend = "<table>";
         foreach ($chart_legend as $number => $caption) {
             $legend .= "<tr valign=\"top\"><td>" . $number . ".</td><td>" . $caption . "</td></tr>";
         }
         $legend .= "</table>";
         return "<div style=\"margin:10px\"><table><tr valign=\"bottom\"><td>" . $chart->getHTML() . "</td><td class=\"small\" style=\"padding-left:15px\">" . $legend . "</td></tr></table></div>";
     }
 }
 protected function renderChart($a_id, $a_values)
 {
     include_once "Services/Chart/classes/class.ilChart.php";
     $chart = new ilChart($a_id, 700, 400);
     $legend = new ilChartLegend();
     $chart->setLegend($legend);
     $data = new ilChartData("bars");
     $data->setLabel($this->lng->txt("users_answered"));
     $data->setBarOptions(0.1, "center");
     if ($a_values) {
         $labels = array();
         foreach ($a_values as $idx => $answer) {
             $data->addPoint($answer["value"], $answer["selected"]);
             $labels[$answer["value"]] = $answer["value"];
         }
         $chart->addData($data);
         $chart->setTicks($labels, false, true);
     }
     return "<div style=\"margin:10px\">" . $chart->getHTML() . "</div>";
 }
 function getGraph(array $a_graph_items)
 {
     global $lng;
     include_once "Services/Chart/classes/class.ilChart.php";
     $chart = new ilChart("objstacc", 700, 500);
     $legend = new ilChartLegend();
     $chart->setLegend($legend);
     $max_value = 0;
     foreach ($this->getData() as $object) {
         if (in_array($object["obj_id"], $a_graph_items)) {
             $series = new ilChartData("lines");
             $series->setLabel(ilObject::_lookupTitle($object["obj_id"]));
             if (strpos($this->filter["yearmonth"], "-") === false) {
                 foreach (array_keys($this->getMonthsYear($this->filter["yearmonth"])) as $idx => $num) {
                     $value = (int) $object["month_" . $num];
                     $max_value = max($max_value, $value);
                     if ($this->filter["measure"] != "spent_seconds") {
                         $value = $this->anonymizeValue($value, true);
                     }
                     $series->addPoint($idx, $value);
                 }
             } else {
                 for ($loop = 1; $loop < 32; $loop++) {
                     $value = (int) $object["day_" . $loop];
                     $max_value = max($max_value, $value);
                     if ($this->filter["measure"] != "spent_seconds") {
                         $value = $this->anonymizeValue($value, true);
                     }
                     $series->addPoint($loop, $value);
                 }
             }
             $chart->addData($series);
         }
     }
     $value_ticks = $this->buildValueScale($max_value, $this->filter["measure"] != "spent_seconds", $this->filter["measure"] == "spent_seconds");
     $labels = array();
     if (strpos($this->filter["yearmonth"], "-") === false) {
         foreach (array_values($this->getMonthsYear($this->filter["yearmonth"], true)) as $idx => $caption) {
             $labels[$idx] = $caption;
         }
     } else {
         for ($loop = 1; $loop < 32; $loop++) {
             $labels[$loop] = $loop . ".";
         }
     }
     $chart->setTicks($labels, $value_ticks, true);
     return $chart->getHTML();
 }