diff --git a/amd/build/suivi.js b/amd/build/suivi.js index e7b52053a359ef208911ed4b648f4a1447a69cb1..f37d6053d5cc86f7463e94679d94548a534e3d19 100644 --- a/amd/build/suivi.js +++ b/amd/build/suivi.js @@ -25,6 +25,7 @@ define(['jquery', 'core/ajax', 'core/templates', 'core/str'], function($, ajax, templates, str) { var all_selected=false; var data=[]; + var cours_massif=false; return{ @@ -32,13 +33,13 @@ define(['jquery', 'core/ajax', 'core/templates', 'core/str'], $("#group-select").on('change', function(e){ changeGroup(); + e.stopPropagation(); }); }, - registerSubmit:function(infos){ - data=infos; - console.log(infos); + registerSubmit:function(){ + $("#id_submit_iena").on('click', function(e){ triggerAction(e); }); @@ -65,7 +66,7 @@ define(['jquery', 'core/ajax', 'core/templates', 'core/str'], $('.selectallactivities').click(function() { if ($(".selectallactivities").is(':checked')) { checkAllActivitiesFilter(); - displayActivities(); + showHideActivities(); } else { $('.option').prop('checked', false); var message=str.get_string('selectedActivities', 'format_iena'); @@ -73,7 +74,7 @@ define(['jquery', 'core/ajax', 'core/templates', 'core/str'], $(".dropdown-text").html('0 '+localizedEditString); }); $(".select-text").html(' Select'); - displayActivities(); + showHideActivities(); } }); //initActivityFilter(); @@ -90,7 +91,7 @@ define(['jquery', 'core/ajax', 'core/templates', 'core/str'], checkAllGroupsFilter(); } else { $('.group-option').prop('checked', false); - displayTotalGroupsFilter(); + updateGroupsFilterLabel(); } changeGroup(); @@ -110,8 +111,9 @@ define(['jquery', 'core/ajax', 'core/templates', 'core/str'], } function fetchProgress(){ + console.log("non plutôt on fetch le progress") completeUrl=getCompleteUrl(); - console.log(completeUrl); + $.ajax({ url: completeUrl, data: {action: 'fetchprogress'}, type: 'post', @@ -124,13 +126,12 @@ define(['jquery', 'core/ajax', 'core/templates', 'core/str'], } initActivityFilter(false); displayTotalActivitiesFilter(false); - displayTotalGroupsFilter(false); - displayActivities(false); + updateGroupsFilterLabel(false); + showHideActivities(false); initGroupFilter(false); registerGroupFilter(); changeSection(false); reloadTable(data); - //displayTotalGroupsFilter(false); return data; } }); @@ -145,6 +146,8 @@ define(['jquery', 'core/ajax', 'core/templates', 'core/str'], }) } + + function getCompleteUrl(){ url=window.location.search; urlParams = new URLSearchParams(url); @@ -165,14 +168,15 @@ define(['jquery', 'core/ajax', 'core/templates', 'core/str'], return completeUrl; } + //À changer pour intégrer une fonction plus générique function changeGroup(){ + console.log("on va changer le groupe ?"); var completeUrl=getCompleteUrl(); var groupscheckboxes= $('input[name="groupoptions[]"]:checked'); var groupsid=[]; for (var i = 0; i < groupscheckboxes.length; i++) { groupsid.push(groupscheckboxes[i].value); } - console.log(groupsid); loadMessage("loading"); if(groupsid.length==0){ groupsid.push(-2); @@ -183,13 +187,15 @@ define(['jquery', 'core/ajax', 'core/templates', 'core/str'], success: function(request) { data=calcPercentage(JSON.parse(request)); //initGroupFilter(); + // + changeSection(); if(data.students.length<1000){ localStorage.setItem("groups",request); } - displayTotalGroupsFilter(false); + updateGroupsFilterLabel(false); } }); } @@ -261,6 +267,8 @@ define(['jquery', 'core/ajax', 'core/templates', 'core/str'], //on va devoir calculer le pourcentage, check la completion et reload la table à chaque fois + + function changeSection(changefilter=true){ loadMessage("loading"); sectionid=$("#section-select").val(); @@ -310,10 +318,11 @@ define(['jquery', 'core/ajax', 'core/templates', 'core/str'], //Affiche/cache dynamiquement les activités sélectionnées - function displayActivities(changefilter=true){ + function showHideActivities(changefilter=true){ var arrayActivitiesID=[]; var activitiesToStore=[]; var activities = $('input[name="options[]"]'); + console.log(data.modules); for(var i=0; i<activities.length;i++){ prog=data.modules.find(element => element.id === activities[i].value); @@ -357,7 +366,7 @@ define(['jquery', 'core/ajax', 'core/templates', 'core/str'], }); } - //Reload table with new parameters. + //Reload table with new parameters JUST FOR DISPLAYING THE TABLE. function reloadTable(params){ console.log("on est dans le reloadTable") url=getCompleteUrl(); @@ -375,7 +384,7 @@ define(['jquery', 'core/ajax', 'core/templates', 'core/str'], } - + //Récupère les étudiants sélectionnées par les checkbox function getSelectedStudents(){ var selectedChecks=$("#table-body input:checked"); @@ -567,6 +576,79 @@ define(['jquery', 'core/ajax', 'core/templates', 'core/str'], } + + + //Update activities filter label + function updateActivitiesFilterLabel(){ + var total = $('input[name="options[]"]:checked').length; + if(total == $('input[name="options[]"]').length){ + var message=str.get_string('allActivities', 'format_iena'); + $.when(message).done(function(localizedEditString) { + $(".dropdown-text").html(localizedEditString); + }); + } + else{ + var message=str.get_string('selectedActivities', 'format_iena'); + $.when(message).done(function(localizedEditString) { + $(".dropdown-text").html(total + ' '+localizedEditString); + }); + } + } + + + + //Coche toutes les activités quand on change de section + function checkAllActivitiesFilter(){ + $('.selectallactivities').prop('checked', true); + $('.option').prop('checked', true); + updateActivitiesFilterLabel(); + $(".select-text").html(' Deselect'); + + } + + + + + + //Coche tous les groupes quand le select all est coché + function checkAllGroupsFilter(){ + $('.selectallgroups').prop('checked', true); + $('.group-option').prop('checked', true); + //changeGroup(); + $(".select-text").html(' Deselect'); + + } + + + //Update activities filter label + function updateGroupsFilterLabel(){ + var total = $('input[name="groupoptions[]"]:checked').length; + if(total == $('input[name="groupoptions[]"]').length){ + var message=str.get_string('allGroups', 'format_iena'); + $.when(message).done(function(localizedEditString) { + $(".dropdown-text-group").html(localizedEditString); + }); + } + else{ + var message=str.get_string('selectedGroups', 'format_iena'); + $.when(message).done(function(localizedEditString) { + $(".dropdown-text-group").html(total + ' '+localizedEditString); + }); + } + } + + + + + /*Etapes + Premier chargement : + - On initialise les filtres (on les register) + - On a chargé les données en même temps (avec ces filtres par défaut) + - On affiche/cache les modules selon la section + - On calcule le pourcentage selon les modules VISIBLES + - On affiche/cache les étudiants selon le % d'achèvement + */ + //On va recharger dynamiquement les options donc on doit recréer les événements à chaque fois qu'on change de section function registerActivityFilter(){ $("input[type='checkbox'].justone-activity").on('click', function(e){ @@ -581,30 +663,29 @@ define(['jquery', 'core/ajax', 'core/templates', 'core/str'], $('.selectallactivities').prop('checked', false); $(".select-text").html(' Select'); } - displayTotalActivitiesFilter(); - displayActivities(); + updateActivitiesFilterLabel(); + showHideActivities(); }); } - //Update activities filter label - function displayTotalActivitiesFilter(){ - var total = $('input[name="options[]"]:checked').length; - if(total == $('input[name="options[]"]').length){ - var message=str.get_string('allActivities', 'format_iena'); - $.when(message).done(function(localizedEditString) { - $(".dropdown-text").html(localizedEditString); - }); - } - else{ - var message=str.get_string('selectedActivities', 'format_iena'); - $.when(message).done(function(localizedEditString) { - $(".dropdown-text").html(total + ' '+localizedEditString); - }); - } + function registerGroupFilter(){ + $("input[type='checkbox'].justone-group").on('click', function(e){ + e.stopPropagation(); + var a = $("input[type='checkbox'].justone-group"); + if(a.length == a.filter(":checked").length){ + $('.selectallgroups').prop('checked', true); + } + else { + $('.selectallgroups').prop('checked', false); + } + //Pourquoi ? + //displayTotalActivitiesFilter(); + }); } - + + //Stocke le filtre des activités en localStorage pour ne pas avoir 50 id dans l'url //On fait bien attention à rétablir cocher le selectall si toutes les activités sont bien cochées function initActivityFilter(){ @@ -628,37 +709,10 @@ define(['jquery', 'core/ajax', 'core/templates', 'core/str'], } } } - - } } - //Coche toutes les activités quand on change de section - function checkAllActivitiesFilter(){ - $('.selectallactivities').prop('checked', true); - $('.option').prop('checked', true); - displayTotalActivitiesFilter(); - $(".select-text").html(' Deselect'); - - } - - function registerGroupFilter(){ - $("input[type='checkbox'].justone-group").on('click', function(e){ - e.stopPropagation(); - var a = $("input[type='checkbox'].justone-group"); - if(a.length == a.filter(":checked").length){ - $('.selectallgroups').prop('checked', true); - } - else { - $('.selectallgroups').prop('checked', false); - } - displayTotalActivitiesFilter(); - }); - - - } - - function initGroupFilter(){ + function initGroupFilter(){ if(localStorage.groups){ var checkedGroups=JSON.parse(localStorage.groups); var groups=$("input[type='checkbox'].justone-group"); @@ -687,48 +741,13 @@ define(['jquery', 'core/ajax', 'core/templates', 'core/str'], } } - displayTotalActivitiesFilter(); - } - - //Coche tous les groupes quand le select all est coché - function checkAllGroupsFilter(){ - $('.selectallgroups').prop('checked', true); - $('.group-option').prop('checked', true); - //changeGroup(); - $(".select-text").html(' Deselect'); - - } - - - //Update activities filter label - function displayTotalGroupsFilter(){ - var total = $('input[name="groupoptions[]"]:checked').length; - if(total == $('input[name="groupoptions[]"]').length){ - var message=str.get_string('allGroups', 'format_iena'); - $.when(message).done(function(localizedEditString) { - $(".dropdown-text-group").html(localizedEditString); - }); - } - else{ - var message=str.get_string('selectedGroups', 'format_iena'); - $.when(message).done(function(localizedEditString) { - $(".dropdown-text-group").html(total + ' '+localizedEditString); - }); - } + //Pourquoi ? + // displayTotalActivitiesFilter(); } - - - /*Etapes - Premier chargement : - - On initialise les filtres (on les register) - - On a chargé les données en même temps (avec ces filtres par défaut) - - On affiche/cache les modules selon la section - - On calcule le pourcentage selon les modules VISIBLES - - On affiche/cache les étudiants selon le % d'achèvement - */ + }); diff --git a/suivi_unit.php b/suivi_unit.php index b5c3bb9dce7f0dfeeb91eaa52cc8bf6cc835f3fb..f102f167ff8176e4c519e2d507ae69ae00764647 100644 --- a/suivi_unit.php +++ b/suivi_unit.php @@ -166,6 +166,7 @@ function get_activities($completion, $activesectionid) { } function get_sections($activesectionid) { + error_log("on passe par ici alors qu'on devrait pas"); global $COURSE; // Liste des sections du cours. $modinfo = get_fast_modinfo($COURSE->id); @@ -185,7 +186,7 @@ function get_sections($activesectionid) { return $sections; } -function set_filters($data, $filters, $symbols, $sections, $groups, $currentusergroups, $othergroups, $activesectionid) { +function set_filters($data, $filters, $symbols, $sections, $currentusergroups, $othergroups, $activesectionid) { if (isset($_GET['filter'])) { $filtercomplete = $_GET['filter']; $symbols[mb_substr($filtercomplete, 0, 1, 'UTF-8')]->selected = "selected"; @@ -391,9 +392,10 @@ if (isset($_GET['sectionid'])) { } // On récupère les ids des membres parce que dans l'excel on veut savoir qui appartient à quel groupe. -$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'); @@ -453,6 +455,8 @@ if (isset($_POST['action']) && $_POST['action'] == "details") { } // 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'])) { + error_log("je change le filtre des groupes"); + $groups = groups_get_all_groups($COURSE->id, 0, 0, 'g.*', true); $data = []; $modules = get_activities($completion, $activesectionid); $data["students"]=get_progress_students($modules, $arrayprogress, $groups, $activegroupsids, $activesectionid, $courseid, $cache, $completion); @@ -464,9 +468,9 @@ else if (isset($_POST['action']) && !empty($_POST['action'])) { else { init_page($course, $PAGE); echo $OUTPUT->header(); - + error_log("je load juste la page"); //$progress=$cache->get($activegroupids); - + $groups = groups_get_all_groups($COURSE->id, 0, 0, 'g.*', true); $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){ @@ -489,8 +493,8 @@ else { //$groups = $groupsall->groups; $sections = get_sections($activesectionid); //$data["countstudents"]=$countstudents; - $data = set_filters($data, $filters, $symbols, $sections, array_values($groups), $groupsall->current_user_groups, $groupsall->othergroups, $activesectionid); - $data = set_data($data, $modules, $groups, $activegroupsids, $activesectionid, $listoptions); + $data = set_filters($data, $filters, $symbols, $sections, $groupsall->current_user_groups, $groupsall->othergroups, $activesectionid); + //$data = set_data($data, $modules, $groups, $activegroupsids, $activesectionid, $listoptions); if (isset($_GET["msg_success"])) { $msg = $_GET["msg_success"]; diff --git a/templates/suivi.mustache b/templates/suivi.mustache index 6923f49712a8aa63981c5ee2b1431873286230be..e16d344edd8f983137f374fc532c9f05a227f83d 100644 --- a/templates/suivi.mustache +++ b/templates/suivi.mustache @@ -155,7 +155,7 @@ {{#js}} require(['format_iena/suivi', 'core/templates'], function(module) { module.registerFilters(); - module.registerSubmit({{{ data }}}); + module.registerSubmit(); module.registerSelectAllActivitiesFilter(); module.registerSelectAllGroupsFilter(); module.initTable();