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(); }