Skip to content
Snippets Groups Projects
Commit 8b8ef088 authored by DELARUELLE Myriam's avatar DELARUELLE Myriam
Browse files

dropdown and post parameters for groups ids

parent 47dc0d45
Branches
No related tags found
No related merge requests found
......@@ -77,11 +77,26 @@ define(['jquery', 'core/ajax', 'core/templates', 'core/str'],
});
//initActivityFilter();
},
registerSelectAllGroupsFilter:function(){
$('.selectallgroups').click(function() {
if ($(".selectallgroups").is(':checked')) {
checkAllGroupsFilter();
} else {
$('.group-option').prop('checked', false);
var message=str.get_string('selectedActivities', 'format_iena');
$.when(message).done(function(localizedEditString) {
$(".group-dropdown-text").html('0 '+localizedEditString);
});
changeGroup();
}
});
},
initTable:function(){
initActivityFilter(false);
displayTotalActivitiesFilter(false);
displayActivities(false);
initGroupFilter(false)
initGroupFilter(false);
registerGroupFilter();
changeSection(false);
reloadTable(data);
......@@ -131,16 +146,21 @@ define(['jquery', 'core/ajax', 'core/templates', 'core/str'],
}
function changeGroup(){
completeUrl=getCompleteUrl();
var completeUrl=getCompleteUrl();
var groupscheckboxes= $('input[name="groupoptions[]"]:checked');
var groupsid=[];
for (var i = 0; i < groupscheckboxes.length; i++) {
groupsid.push(groupscheckboxes[i].value);
}
loadMessage("loading");
$.ajax({ url: completeUrl,
data: {action: 'test'},
data: {action: 'fetchgroups', groupsid:groupsid},
type: 'post',
success: function(request) {
console.log(request);
data=calcPercentage(JSON.parse(request));
initGroupFilter();
//initGroupFilter();
changeSection();
}
});
......@@ -511,25 +531,6 @@ define(['jquery', 'core/ajax', 'core/templates', 'core/str'],
return data;
}
//Evenement pour le selectall : créé une seule fois au chargement de la page
/*function registerSelectAllActivitiesFilter(){
$('.selectall').click(function() {
if ($(".selectall").is(':checked')) {
checkAllActivitiesFilter();
displayActivities();
} else {
$('.option').prop('checked', false);
var message=str.get_string('selectedActivities', 'format_iena');
$.when(message).done(function(localizedEditString) {
$(".dropdown-text").html('0 '+localizedEditString);
});
$(".select-text").html(' Select');
displayActivities();
}
});
initActivityFilter();
}*/
//On va recharger dynamiquement les options donc on doit recréer les événements à chaque fois qu'on change de section
function registerActivityFilter(){
......@@ -614,12 +615,9 @@ define(['jquery', 'core/ajax', 'core/templates', 'core/str'],
var a = $("input[type='checkbox'].justone-group");
if(a.length == a.filter(":checked").length){
$('.selectallgroups').prop('checked', true);
$(".select-text").html(' Deselect');
}
else {
$('.selectallgroups').prop('checked', false);
$(".select-text").html(' Select');
}
//displayTotalActivitiesFilter();
//displayActivities();
......@@ -649,12 +647,20 @@ define(['jquery', 'core/ajax', 'core/templates', 'core/str'],
}
}
}
}
//displayTotalActivitiesFilter();
//displayActivities();
}
//Coche toutes les activités quand on change de section
function checkAllGroupsFilter(){
$('.selectallgroups').prop('checked', true);
$('.group-option').prop('checked', true);
changeGroup();
$(".select-text").html(' Deselect');
}
});
......@@ -1094,13 +1094,13 @@ th.first-column-iena, th.second-column-iena, th.actions-column-iena, th.third-co
top: 13px;
}
.iena-dynamic-options{
.iena-dynamic-options, .iena-dynamic-activities{
list-style: none;
padding: 0;
margin-left: 0;
}
.iena-dynamic-options label{
.iena-dynamic-options label, .iena-dynamic-activities label{
white-space: nowrap;
text-overflow: ellipsis;
width: 94%;
......
......@@ -114,7 +114,7 @@ function format_progress($progress, $modules, $groups, $activegroupids, $actives
$progressstudent->email = $proginfo->email;
$progressstudent->progress = array();
$progressstudent->report_link = $CFG->wwwroot . "/report/outline/user.php?id=" .
$progressstudent->id . "&course=" . $COURSE->id . "&mode=outline";
$progressstudent->id . "&course=" . $COURSE->id . "&mode=outline";
$progressstudent->message_link = $CFG->wwwroot . "/message/index.php?id=" . $progressstudent->id;
//if ($activegroupid == 0) {
......@@ -228,13 +228,13 @@ function set_filters($data, $filters, $symbols, $sections, $groups, $currentuser
return $data;
}
function set_data($data, $modules, $progress, $groups, $activegroupid, $activesectionid, $listoptions) {
function set_data($data, $modules, $progress, $groups, $activegroupsids, $activesectionid, $listoptions) {
global $COURSE, $USER, $CFG;
$data["modules"] = $modules;
$countmodules = count($data["modules"]);
$data["students"] = format_progress($progress, $modules, $groups, $activegroupid, $activesectionid);
$data["students"] = format_progress($progress, $modules, $groups, $activegroupsids, $activesectionid);
$countstudents = count($data["students"]);
if ($countstudents > 0 && $countmodules > 0) {
......@@ -335,47 +335,43 @@ if (!has_capability('course/iena:suivi', $context = context_course::instance($co
exit;
}
if (isset($_POST['groupids'])) {
$activegroupids = $_POST['groupids'];
if (isset($_POST['groupsid'])) {
$activegroupsids = $_POST['groupsid'];
} else {
$activegroupids = [0];
$activegroupsids = array(0);
}
/*$progressrequest = $completion->get_progress_all(
'',
array(),
$activegroupid,
'u.lastname ASC, u.firstname ASC',
'',
'',
$context
);
*/
$cache = cache::make('format_iena', 'students');
if($cache->get($activegroupids) !== false){
$progress=$cache->get($activegroupids);
}
else{
$arrayprogressgroups=array();
//for($i=0; $i<count($activegroupids); $i++){
$progressrequest = $completion->get_progress_all(
//Si le progrès de chacun des groupes existe déjà en cache on va les charger, sinon on les récupère dans la BDD et on les stocke
$arrayprogress=array();
for($i=0; $i<count($activegroupsids); $i++){
if($cache->get($activegroupsids[$i]) !== false){
$progress=$cache->get($activegroupsids[$i]);
}
else{
$progressrequest = $completion->get_progress_all(
'',
array(),
0,
$activegroupsids[$i],
'u.lastname ASC, u.firstname ASC',
'',
'',
$context
);
//array_push($arrayprogressgroups, $progressrequest);
//}
$progress=$cache->set($activegroupids, $progressrequest);
$cache->set($activegroupsids[$i], $progressrequest);
$progress=$progressrequest;
}
$arrayprogress=(object) array_unique(array_merge((array) $arrayprogress, (array) $progress), SORT_REGULAR);
}
$activesectionid = 0;
// Section du get acquise depuis le clic sur l'indicateur dans la page du cours,
// section depuis laquelle on a cliqué sur le bouton pour voir le suivi.
......@@ -387,20 +383,14 @@ if (isset($_GET['sectionid'])) {
$groups = groups_get_all_groups($COURSE->id, 0, 0, 'g.*', true);
$renderer = $PAGE->get_renderer('format_iena');
//Si on cherche les détails d'une activité
if (isset($_POST['action']) && $_POST['action'] == "details") {
require_once($CFG->libdir . '/gradelib.php');
// Si on cherche les détails d'une activité
$data = [];
$idetu=$_POST['idetudiant'];
$idmodule=$_POST['idmodule'];
$modinfo = get_fast_modinfo($COURSE->id, $idetu);
$cm = $modinfo->get_cm($idmodule);
//Utile ?
$completioninfo = new \completion_info($COURSE);
$completiondetails = new cm_completion_details($completioninfo, $cm, $idetu);
......@@ -446,7 +436,7 @@ if (isset($_POST['action']) && $_POST['action'] == "details") {
$data =array();
$data['url']=strval($cm->url);
$data['completion']=strval($cm->completion);
$data["grades"]=$lastgrade;
$data["grades"]=$lastgrade;
$data["customcompletion"]=$cm->customdata;
$data["completioninfos"]=$activityhtml;
$data["completionstate"]=$completiondetails->get_overall_completion();
......@@ -455,23 +445,22 @@ if (isset($_POST['action']) && $_POST['action'] == "details") {
echo json_encode($data);
}
// If a post is sent trought the page --> Si on change les filtres, le template est appelé en JS
// If a post is sent trought the page --> Si on change les filtres (de groupes), le template est appelé en JS
else if (isset($_POST['action']) && !empty($_POST['action'])) {
// Si on change les filtres.
$data = [];
$progress=$cache->get($activegroupids);
$modules = get_activities($completion, $activesectionid);
$data = set_data($data, $modules, $progress, $groups, $activegroupids, $activesectionid, $listoptions);
$data = set_data($data, $modules, $arrayprogress, $groups, $activegroupsids, $activesectionid, $listoptions);
echo json_encode($data);
} else {
//Si on cherche les détails d'une activité
init_page($course, $PAGE);
echo $OUTPUT->header();
$progress=$cache->get($activegroupids);
//$progress=$cache->get($activegroupids);
$progress=$arrayprogress;
$data = [];
//Si la complétion du cours n'est pas activée on redirige l'enseignant vers l'interface pour l'activer
if(!$COURSE->enablecompletion){
......@@ -486,7 +475,7 @@ else if (isset($_POST['action']) && !empty($_POST['action'])) {
$modules = get_activities($completion, $activesectionid);
//Répartit les groupes en "mes groupes" et "les groupes dont je ne fais pas partie"
$groupsall = get_groups($context, $activegroupids, $groups);
$groupsall = get_groups($context, $activegroupsids, $groups);
if (isset($groupsall->current_user_groups) && !empty($groupsall->current_user_groups)) {
$currentusergroups = $groupsall->current_user_groups;
......@@ -495,7 +484,7 @@ else if (isset($_POST['action']) && !empty($_POST['action'])) {
$sections = get_sections($activesectionid);
$data = set_filters($data, $filters, $symbols, $sections, array_values($groups), $groupsall->current_user_groups, $groupsall->othergroups, $activesectionid);
$data = set_data($data, $modules, $progress, $groups, $activegroupids, $activesectionid, $listoptions);
$data = set_data($data, $modules, $arrayprogress, $groups, $activegroupsids, $activesectionid, $listoptions);
if (isset($_GET["msg_success"])) {
$msg = $_GET["msg_success"];
......
......@@ -77,7 +77,7 @@
</div>
<div class="dropdown mr-sm-2 iena-custom-dropdown" id="group-select" name="groupid">
<button class="btn btn-default dropdown-toggle" type="button" data-toggle="dropdown">
<span class="dropdown-text">Tous les groupes</span>
<span class="group-dropdown-text">Tous les groupes</span>
<span class="caret"></span></button>
<ul class="dropdown-menu dropdown-menu-form" id="iena-group-dropdown">
<li>
......@@ -90,7 +90,7 @@
</optgroup>
<ul class="iena-dynamic-options">
{{#current_user_groups}}
<li><label class="checkbox"><input type="checkbox" name="groupoptions[]" value={{id}} class="groupe-option justone-group">{{name}}</label></li>
<li><label class="checkbox"><input type="checkbox" name="groupoptions[]" value={{id}} class="group-option justone-group">{{name}}</label></li>
{{/current_user_groups}}
</ul>
......@@ -100,7 +100,7 @@
</optgroup>
{{#othergroups}}
<li><label class="checkbox"><input type="checkbox" name="groupoptions[]" value={{id}} class="groupe-option justone-group">{{name}}</label></li>
<li><label class="checkbox"><input type="checkbox" name="groupoptions[]" value={{id}} class="group-option justone-group">{{name}}</label></li>
{{/othergroups}}
</ul>
......@@ -173,6 +173,7 @@ require(['format_iena/suivi', 'core/templates'], function(module) {
module.registerFilters();
module.registerSubmit({{{ data }}});
module.registerSelectAllActivitiesFilter();
module.registerSelectAllGroupsFilter();
module.initTable();
});
{{/js}}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment