Exercise progress report, added exercise date filter

1.9.x
César Perales 12 years ago committed by Yannick Warnier
parent d925c85c18
commit f5e0a67a90
  1. 7
      main/inc/ajax/model.ajax.php
  2. 6
      main/inc/lib/tracking.lib.php
  3. 95
      main/mySpace/index.php
  4. 5
      main/mySpace/myspace.lib.php

@ -271,7 +271,7 @@ switch ($action) {
break;
case 'get_exercise_progress':
//@TODO replace this for a more efficient function (not retrieving the whole data)
$records = Tracking::get_exercise_progress(intval($_GET['session_id']), intval($_GET['course_id']), intval($_GET['exercise_id']));
$records = Tracking::get_exercise_progress(intval($_GET['session_id']), intval($_GET['course_id']), intval($_GET['exercise_id']), $_GET['date_from'], $_GET['date_to']);
$count = count($records);
break;
case 'get_session_access_overview':
@ -626,7 +626,8 @@ switch ($action) {
$sessionId = intval($_GET['session_id']);
$courseId = intval($_GET['course_id']);
$exerciseId = intval($_GET['exercise_id']);
$answer = intval($_GET['answer']);
$date_from = $_GET['date_from'];
$date_to = $_GET['date_to'];
}
$columns = array(
@ -643,7 +644,7 @@ switch ($action) {
'correct',
);
$result = Tracking::get_exercise_progress($sessionId, $courseId, $exerciseId, $answer,
$result = Tracking::get_exercise_progress($sessionId, $courseId, $exerciseId, $date_from, $date_to,
array(
'where' => $where_condition,
'order' => "$sidx $sord",

@ -3178,7 +3178,7 @@ class Tracking
* @param array $options An array of options you can pass to the query (limit, where and order)
* @return array An array with the data of exercise(s) progress
*/
public static function get_exercise_progress($sessionId = 0, $courseId = 0, $exerciseId = 0, $answer = 2, $options = array())
public static function get_exercise_progress($sessionId = 0, $courseId = 0, $exerciseId = 0, $date_from, $date_to, $options = array())
{
/*
* This method gets the data by blocks, as previous attempts at one single
@ -3276,6 +3276,10 @@ class Tracking
$order = " ORDER BY ".$options['order'];
}
if (!empty($date_to) && !empty($date_from)) {
$where .= sprintf(" AND (te.start_date BETWEEN '%s 00:00:00' AND '%s 23:59:59')", $date_from, $date_to);
}
$sql = "SELECT
te.session_id,
ta.id as attempt_id,

@ -678,8 +678,8 @@ if ($is_platform_admin && in_array($view, array('admin')) && $display != 'yourst
$studentList[] = array('id' => $studentInfo['id'], 'text' => $studentInfo['username']);
}
$studentFilter->addElement('text', 'from', get_lang('From'), array('id' => 'date_from'), array('defaults' => $_GET['date_from']));
$studentFilter->addElement('text', 'to', get_lang('Until'), array('id' => 'date_to'), $_GET['date_to']);
$studentFilter->addElement('text', 'from', get_lang('From'), array('id' => 'date_from', 'value' => $_GET['date_from']));
$studentFilter->addElement('text', 'to', get_lang('Until'), array('id' => 'date_to', 'value' => $_GET['date_to']));
$studentFilter->addElement('select_ajax', 'student_name', get_lang('SearchStudent'), null, array('url' => $url, 'defaults' => $studentList), array('class' => 'pull-left'));
$options = array(
@ -689,18 +689,14 @@ if ($is_platform_admin && in_array($view, array('admin')) && $display != 'yourst
DRH => get_lang('Drh'),
);
$studentFilter->addElement('select', 'profile', get_lang('Profile'),$options, array('id' => 'profile'));
//$studentFilter->addElement('submit', '', get_lang('Generate'), 'id="generateReport"');
echo '<div class="">';
echo $studentFilter->return_form();
echo '</div>';
//TODO fix this hack
$date_to = (!empty($_GET['date_to'])) ? ' $(\'#date_to\').val(\'' . $_GET['date_to'] . '\'); ' : '';
$date_from = (!empty($_GET['date_from'])) ? ' $(\'#date_from\').val(\'' . $_GET['date_from'] . '\'); ' : '';
echo '<script>
$(function() {
' . $date_to . '
' . $date_from . '
$("#student_name").on("change", function() {
var date_to = $(\'#date_to\').val();
var date_from = $(\'#date_from\').val();
@ -741,31 +737,6 @@ if ($is_platform_admin && in_array($view, array('admin')) && $display != 'yourst
}
</script>';
/*//profile filter
$profileFilter = new FormValidator('answer_filter', 'get', '', '', array('class'=> 'form-horizontal'), false);
$options = array(
STUDENT => get_lang('Student'),
COURSEMANAGER => get_lang('CourseManager'),
DRH => get_lang('Drh'),
);
$profileFilter->addElement('select', 'profile', get_lang('Profile'),$options, array('id' => 'profile'));
$courseListUrl = api_get_self();
echo '<div class="">';
echo $profileFilter->return_form();
echo '</div>';
echo '<script>
$(function() {
$("#profile").on("change", function() {
var sessionId = $("#session_name").val();
var courseId = $("#course_name").val();
var studentId = $("#student_name").val();
var profileId = $("#profile").val();
window.location = "'.$courseListUrl.'?view=admin&display='.$display.'&session_id="+sessionId+"&course_id="+courseId+"&student_id="+studentId+"&profile_id="+profileId;
});
});
</script>';*/
}
if (in_array($display, array('surveyoverview')))
{
@ -811,49 +782,50 @@ if ($is_platform_admin && in_array($view, array('admin')) && $display != 'yourst
$exerciseList[] = array('id' => $exerciseInfo['id'], 'text' => html_entity_decode($exerciseInfo['title']));
}
$exerciseFilter->addElement('select_ajax', 'exercise_name', get_lang('SearchExercise'), null, array('url' => $url, 'defaults' => $exerciseList));
$courseListUrl = api_get_self();
echo '<div class="">';
echo $exerciseFilter->return_form();
echo '</div>';
$exerciseFilter->addElement('text', 'from', get_lang('From'), array('id' => 'date_from', 'value' => $_GET['date_from']));
$exerciseFilter->addElement('text', 'to', get_lang('Until'), array('id' => 'date_to', 'value' => $_GET['date_to']));
echo '<script>
$(function() {
$("#exercise_name").on("change", function() {
var sessionId = $("#session_name").val();
var courseId = $("#course_name").val();
var exerciseId = $("#exercise_name").val();
window.location = "'.$courseListUrl.'?view=admin&display='.$display.'&session_id="+sessionId+"&course_id="+courseId+"&exercise_id="+exerciseId;
});
});
</script>';
//answer Type
/*$answerFilter = new FormValidator('answer_filter', 'get', '', '', array('class'=> 'form-horizontal'), false);
$options = array(
2 => get_lang('all'),
0 => get_lang('incorrect'),
1 => get_lang('correct'),
);
$answerFilter->addElement('select', 'answer', get_lang('AnswerIndicator'),$options, array('id' => 'answer'));
$courseListUrl = api_get_self();
echo '<div class="">';
echo $answerFilter->return_form();
echo $exerciseFilter->return_form();
echo '</div>';
echo '<script>
$(function() {
$("#answer").on("change", function() {
$("#exercise_name").on("change", function() {
var date_to = $(\'#date_to\').val();
var date_from = $(\'#date_from\').val();
var sessionId = $("#session_name").val();
var courseId = $("#course_name").val();
var exerciseId = $("#exercise_name").val();
var answerType = $("#answer").val();
window.location = "'.$courseListUrl.'?view=admin&display='.$display.'&session_id="+sessionId+"&course_id="+courseId+"&exercise_id="+exerciseId+"&answer="+answerType;
window.location = "'.$courseListUrl.'?view=admin&display='.$display.'&session_id="+sessionId+"&course_id="+courseId+"&exercise_id="+exerciseId+"&date_to="+date_to+"&date_from="+date_from;
});
});
</script>';*/
$("#date_from, #date_to").datepicker({
dateFormat: \'yy-mm-dd\',
onSelect: function( selectedDate ) {
var filled = areBothFilled();
if (filled) {
var date_to = $(\'#date_to\').val();
var date_from = $(\'#date_from\').val();
var sessionId = $("#session_name").val();
var courseId = $("#course_name").val();
var exerciseId = $("#exercise_name").val();
window.location = "'.$courseListUrl.'?view=admin&display='.$display.'&session_id="+sessionId+"&course_id="+courseId+"&exercise_id="+exerciseId+"&date_to="+date_to+"&date_from="+date_from;
}
}
});
function areBothFilled() {
var returnValue = false;
if ((document.getElementById("date_from").value != "") && (document.getElementById("date_to").value != "")){
returnValue = true;
}
return returnValue;
}
</script>';
}
}
@ -892,8 +864,7 @@ if ($is_platform_admin && in_array($view, array('admin')) && $display != 'yourst
} else if($display == 'exerciseprogress') {
if (!empty($_GET['course_id'])) {
if (!empty($_GET['exercise_id'])) {
$answer = (isset($_GET['answer'])) ? intval($_GET['answer']) : 2;
echo MySpace::display_tracking_exercise_progress_overview(intval($_GET['session_id']), intval($_GET['course_id']), intval($_GET['exercise_id']), $answer);
echo MySpace::display_tracking_exercise_progress_overview(intval($_GET['session_id']), intval($_GET['course_id']), intval($_GET['exercise_id']), $_GET['date_to'], $_GET['date_from']);
} else {
Display::display_warning_message(get_lang('ChooseExercise'));
}

@ -351,8 +351,7 @@ class MySpace {
* @return string HTML array of results formatted for gridJS
* @author César Perales <cesar.perales@beeznest.com>, Beeznest Team
*/
function display_tracking_exercise_progress_overview($sessionId = 0, $courseId = 0, $exerciseId = 0, $answer = 2) {
function display_tracking_exercise_progress_overview($sessionId = 0, $courseId = 0, $exerciseId = 0, $date_to, $date_from) {
/**
* Column names
* The column order is important. Check $column variable in the main/inc/ajax/model.ajax.php file
@ -390,7 +389,7 @@ class MySpace {
//get dynamic column names
// jqgrid will use this URL to do the selects
$url = api_get_path(WEB_AJAX_PATH).'model.ajax.php?a=get_exercise_progress&session_id=' . intval($sessionId) . '&course_id=' . intval($courseId) . '&exercise_id=' . intval($exerciseId) . '&answer=' . intval($answer);
$url = api_get_path(WEB_AJAX_PATH).'model.ajax.php?a=get_exercise_progress&session_id=' . intval($sessionId) . '&course_id=' . intval($courseId) . '&exercise_id=' . intval($exerciseId) . '&date_to=' . $date_to . '&date_from=' . $date_from;
//Autowidth
$extra_params['autowidth'] = 'true';

Loading…
Cancel
Save