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