4 include_once(
"./Services/Tracking/classes/class.ilLPTableBaseGUI.php");
5 include_once(
"./Services/Tracking/classes/class.ilLPStatus.php");
30 public function __construct($a_parent_obj, $a_parent_cmd,
array $a_preselect = null, $a_load_items =
true, $a_is_chart =
false, $a_is_details =
false)
34 $this->preselected = $a_preselect;
35 $this->is_chart = (bool) $a_is_chart;
36 $this->is_details = (bool) $a_is_details;
38 $this->
setId(
"lpobjstatlptbl");
40 parent::__construct($a_parent_obj, $a_parent_cmd);
42 if (!$this->is_details) {
47 $this->
addColumn($lng->txt(
"trac_title"),
"title");
48 $this->
addColumn($lng->txt(
"object_id"),
"obj_id");
52 $this->
addColumn($lng->txt(
"trac_figure"));
57 if (strpos($this->filter[
"yearmonth"],
"-") ===
false) {
58 foreach ($this->
getMonthsYear($this->filter[
"yearmonth"]) as $num => $caption) {
59 $this->
addColumn($caption,
"month_" . $num);
62 foreach ($this->types as
$type) {
64 $caption =
" " . $this->lng->txt(
"trac_object_stat_lp_" . $type);
68 $this->
addColumn($lng->txt(
"trac_members_short") . $caption,
"mem_cnt_" .
$type);
71 include_once(
"./Services/Tracking/classes/class.ilLearningProgressBaseGUI.php");
72 foreach ($this->status as
$status) {
77 foreach ($this->types as $type) {
79 $caption =
$icon . $this->lng->txt(
"trac_object_stat_lp_" . $type);
81 $caption =
$icon .
" Ø";
83 $this->
addColumn($caption, $status .
"_" . $type);
88 if (!$this->is_details) {
89 $this->
setTitle($this->lng->txt(
"trac_object_stat_lp"));
92 $this->
addMultiCommand(
"showLearningProgressGraph", $lng->txt(
"trac_show_graph"));
97 $this->
setFormAction($ilCtrl->getFormAction($a_parent_obj, $a_parent_cmd));
98 $this->
setRowTemplate(
"tpl.lp_object_statistics_lp_row.html",
"Services/Tracking");
111 if ($this->is_details) {
122 if ($a_field !=
"title") {
138 include_once(
"./Services/Form/classes/class.ilSelectInputGUI.php");
153 $this->filter[
"type"] =
"crs";
157 include_once(
"./Services/Form/classes/class.ilTextInputGUI.php");
158 $ti =
new ilTextInputGUI($lng->txt(
"trac_title_description"),
"query");
162 $ti->readFromSession();
163 $this->filter[
"query"] = $ti->getValue();
169 $si->readFromSession();
170 if (!
$si->getValue()) {
173 $this->filter[
"yearmonth"] =
$si->getValue();
175 if (!strpos($this->filter[
"yearmonth"],
"-")) {
178 "mem_cnt_max" => $lng->txt(
"members") .
" " . $lng->txt(
"trac_object_stat_lp_max"),
179 "mem_cnt_avg" => $lng->txt(
"members") .
" Ø",
183 $si->setOptions($options);
185 $si->readFromSession();
186 if (!
$si->getValue()) {
187 $si->setValue(
"mem_cnt_max");
189 $this->filter[
"measure"] =
$si->getValue();
192 if ($this->is_details) {
193 $this->filters =
array();
200 $all_status = array_merge(
array(
"mem_cnt"), $this->status);
209 $objects = array_keys($objects);
211 include_once
"Services/Tracking/classes/class.ilTrQuery.php";
213 $yearmonth = explode(
"-", $this->filter[
"yearmonth"]);
214 if (
sizeof($yearmonth) == 1) {
216 $obj_id = $item[
"obj_id"];
217 if (!isset(
$data[$obj_id])) {
218 $data[$obj_id][
"obj_id"] = $obj_id;
222 $measure_type = substr($this->filter[
"measure"], -3);
223 $measure_field = substr($this->filter[
"measure"], 0, -4);
224 $value = $item[$measure_field .
"_" . $measure_type];
225 $idx = $item[
"yyyy"] .
"-" . str_pad($item[
"mm"], 2,
"0", STR_PAD_LEFT);
226 $data[$obj_id][
"month_" . $idx] = $value;
229 if ($this->is_chart) {
231 foreach (array_keys($this->
getMonthsYear($yearmonth[0])) as $num) {
232 $num = (int) array_pop(explode(
"-", $num));
234 $idx = $yearmonth[0] .
235 "-" . str_pad($num, 2,
"0", STR_PAD_LEFT) .
236 "-" . str_pad($item[
"dd"], 2,
"0", STR_PAD_LEFT);
237 $this->chart_data[$item[
"obj_id"]][$idx] = $item;
244 $obj_id = $item[
"obj_id"];
245 if (!isset(
$data[$obj_id])) {
246 $data[$obj_id][
"obj_id"] = $obj_id;
251 foreach ($all_status as
$status) {
253 if (is_numeric($status)) {
254 $field = $this->status_map[
$status];
260 foreach ($this->types as
$type) {
261 $value = $item[$field .
"_" .
$type];
262 $data[$obj_id][$status .
"_" .
$type] = $value;
267 if ($this->is_chart) {
270 $this->chart_data[$item[
"obj_id"]][$item[
"dd"]] = $item;
276 foreach ($objects as $obj_id) {
277 if (!isset(
$data[$obj_id])) {
278 $data[$obj_id][
"obj_id"] = $obj_id;
286 include_once
"./Services/Link/classes/class.ilLink.php";
292 $all_status = array_merge(
array(
"mem_cnt"), $this->status);
294 include_once
"Services/Tracking/classes/class.ilTrQuery.php";
296 $month =
"month_" . $item[
"yyyy"] .
"-" . str_pad($item[
"mm"], 2,
"0", STR_PAD_LEFT);
298 foreach ($all_status as
$status) {
300 if ($status !=
"mem_cnt") {
301 $field = $this->status_map[
$status];
306 foreach ($this->types as
$type) {
307 $value = $item[$field .
"_" .
$type];
308 $idx = $item[
"yyyy"] .
"-" . str_pad($item[
"mm"], 2,
"0", STR_PAD_LEFT);
309 $data[$status .
"_" .
$type][
"month_" . $idx] = $value;
315 foreach (array_keys(
$data) as $figure) {
316 $status = substr($figure, 0, -4);
317 $type = substr($figure, -3);
325 $text = $this->lng->txt(
"members");
327 if (
$type !=
"avg") {
328 $caption =
$text .
" " . $this->lng->txt(
"trac_object_stat_lp_" .
$type);
330 $caption =
$text .
" Ø";
332 $data[$figure][
"figure"] = $caption;
340 foreach ($this->types as
$type) {
341 $a_row[
"mem_cnt_" .
$type] = null;
343 foreach ($this->status as
$status) {
344 foreach ($this->types as $type) {
345 $a_row[$status .
"_" .
$type] = null;
357 if (!$this->is_details) {
361 if (strpos($this->filter[
"yearmonth"],
"-") ===
false) {
362 $ilCtrl->setParameter($this->parent_obj,
"item_id", $a_set[
"obj_id"]);
363 $url = $ilCtrl->getLinkTarget($this->parent_obj,
"showLearningProgressDetails");
364 $a_set[
"title"] .=
" (<a href=\"#\" onclick=\"ilObjStat.showLPDetails(event, '" .
$url .
"');\">Details</a>)";
365 $ilCtrl->setParameter($this->parent_obj,
"item_id",
"");
368 $this->tpl->setCurrentBlock(
"checkbox");
369 $this->tpl->setVariable(
"OBJ_ID", $a_set[
"obj_id"]);
371 $this->tpl->setVariable(
"ICON_ALT", $this->lng->txt(
$type));
372 $this->tpl->setVariable(
"TITLE_TEXT", $a_set[
"title"]);
373 if ($this->preselected && in_array($a_set[
"obj_id"], $this->preselected)) {
374 $this->tpl->setVariable(
"CHECKBOX_STATE",
" checked=\"checked\"");
376 $this->tpl->parseCurrentBlock();
378 $this->tpl->setCurrentBlock(
"details");
379 $this->tpl->setVariable(
"TXT_FIGURE", $a_set[
"figure"]);
380 $this->tpl->parseCurrentBlock();
383 $this->tpl->setCurrentBlock(
"item");
385 if (strpos($this->filter[
"yearmonth"],
"-") ===
false) {
386 foreach (array_keys($this->
getMonthsYear($this->filter[
"yearmonth"])) as $num) {
388 $this->tpl->setVariable(
"ITEM_VALUE", $value);
389 $this->tpl->parseCurrentBlock();
392 foreach ($this->types as
$type) {
393 $this->tpl->setVariable(
"ITEM_VALUE", $this->
anonymizeValue((
int) $a_set[
"mem_cnt_" . $type]));
394 $this->tpl->parseCurrentBlock();
396 foreach ($this->status as
$status) {
397 foreach ($this->types as $type) {
398 $this->tpl->setVariable(
"ITEM_VALUE", $this->
anonymizeValue((
int) $a_set[$status .
"_" . $type]));
399 $this->tpl->parseCurrentBlock();
409 $a_graph_items =
array(array_pop($a_graph_items));
411 include_once
"Services/Chart/classes/class.ilChart.php";
413 $chart->setsize(700, 500);
419 $custom_order =
array(
429 foreach ($this->chart_data as $object_id => $days) {
430 if (in_array($object_id, $a_graph_items)) {
432 foreach ($custom_order as
$status => $colors) {
450 $chart_colors[] = $colors[0];
452 $chart->setColors($chart_colors);
454 if (strpos($this->filter[
"yearmonth"],
"-") ===
false) {
455 $x_axis = $this->lng->txt(
"month");
458 foreach (array_keys($this->
getMonthsYear($this->filter[
"yearmonth"])) as $month) {
459 for ($loop = 1; $loop<32; $loop++) {
460 $item_day = $month .
"-" . str_pad($loop, 2,
"0", STR_PAD_LEFT);
461 foreach (array_keys($custom_order) as
$status) {
462 if (isset($days[$item_day])) {
464 $value = (int) $days[$item_day][$this->status_map[$status] .
"_avg"];
468 $max_value = max($max_value, $value);
476 $x_axis = $this->lng->txt(
"day");
477 for ($loop = 1; $loop<32; $loop++) {
478 foreach (array_keys($custom_order) as
$status) {
479 if (isset($days[$loop])) {
481 $value = (int) $days[$loop][$this->status_map[$status] .
"_avg"];
485 $max_value = max($max_value, $value);
492 foreach (array_keys($custom_order) as
$status) {
501 if (strpos($this->filter[
"yearmonth"],
"-") ===
false) {
503 foreach ($this->
getMonthsYear($this->filter[
"yearmonth"],
true) as $caption) {
508 for ($loop = 1; $loop<32; $loop++) {
509 $labels[$loop] = $loop .
".";
512 $chart->setTicks($labels, $value_ticks,
true);
521 include_once(
"./Services/YUI/classes/class.ilYuiUtil.php");
523 include_once(
"./Services/jQuery/classes/class.iljQueryUtil.php");
526 $tpl->addJavascript(
"./Services/Tracking/js/ilObjStat.js");
const LP_STATUS_COMPLETED_NUM
static _getIcon( $a_obj_id="", $a_size="big", $a_type="", $a_offline=false)
Get icon for repository item.
anonymizeValue($a_value, $a_force_number=false)
static getObjectLPStatistics(array $a_obj_ids, $a_year, $a_month=null, $a_group_by_day=false)
setDefaultOrderField($a_defaultorderfield)
Set Default order field.
static _getImagePathForStatus($a_status)
Get image path for status.
setEnableNumInfo($a_val)
Set enable num info.
static _getStatusText($a_status, $a_lng=null)
Get status alt text.
getMonthsYear($a_year=null, $a_short=false)
searchObjects(array $filter, $permission, array $preset_obj_ids=null, $a_check_lp_activation=true)
Search objects that match current filters.
const LP_STATUS_IN_PROGRESS_NUM
addFilterItem($a_input_item, $a_optional=false)
Add filter item.
static _lookupTitle($a_id)
lookup object title
getGraph(array $a_graph_items)
setDefaultOrderDirection($a_defaultorderdirection)
Set Default order direction.
setTitle($a_title, $a_icon=0, $a_icon_alt=0)
Set title and title icon.
__construct($a_parent_obj, $a_parent_cmd, array $a_preselect=null, $a_load_items=true, $a_is_chart=false, $a_is_details=false)
Constructor.
setResetCommand($a_val, $a_caption=null)
Set reset filter command.
TableGUI class for learning progress.
setDisableFilterHiding($a_val=true)
Set disable filter hiding.
date( 'd-M-Y', $objPHPExcel->getProperties() ->getCreated())
buildValueScale($a_max_value, $a_anonymize=false, $a_format_seconds=false)
addMultiCommand($a_cmd, $a_text)
Add Command button.
This class represents a text property in a property form.
numericOrdering($a_field)
setMaxLength($a_maxlength)
Set Max Length.
setRowTemplate($a_template, $a_template_dir="")
Set row template.
Create styles array
The data for the language used.
static _lookupType($a_id, $a_reference=false)
lookup object type
fillRow($a_set)
Fill table row.
initLearningProgressDetailsLayer()
const LP_STATUS_NOT_ATTEMPTED_NUM
setFormAction($a_form_action, $a_multipart=false)
Set Form action parameter.
static img($a_src, $a_alt="", $a_width="", $a_height="", $a_border=0, $a_id="", $a_class="")
Build img tag.
getMonthsFilter($a_short=false)
addColumn( $a_text, $a_sort_field="", $a_width="", $a_is_checkbox_action_column=false, $a_class="", $a_tooltip="", $a_tooltip_with_html=false)
Add a column to the header.
setShowRowsSelector($a_value)
Toggle rows-per-page selector.
getDetailItems($a_obj_id)
static initjQuery($a_tpl=null)
inits and adds the jQuery JS-File to the global or a passed template
setEnableHeader($a_enableheader)
Set Enable Header.
TableGUI class for learning progress.
getCurrentFilter($as_query=false)
setEnableTitle($a_enabletitle)
Set Enable Title.
static initPanel($a_resize=false, ilTemplate $a_main_tpl=null)
Init yui panel.
static getInstanceByType($a_type, $a_id)
Get type instance.
setLimit($a_limit=0, $a_default_limit=0)
const LP_STATUS_FAILED_NUM
if(!isset($_REQUEST['ReturnTo'])) if(!isset($_REQUEST['AuthId'])) $options
setFilterCommand($a_val, $a_caption=null)
Set filter command.