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

working stage

parent d64a78ee
No related branches found
No related tags found
No related merge requests found
...@@ -25,6 +25,7 @@ define(['jquery', 'core/ajax', 'core/templates', 'core/str'], ...@@ -25,6 +25,7 @@ define(['jquery', 'core/ajax', 'core/templates', 'core/str'],
function($, ajax, templates, str) { function($, ajax, templates, str) {
var all_selected=false; var all_selected=false;
var data=[]; var data=[];
var cours_massif=false;
return{ return{
...@@ -32,13 +33,13 @@ define(['jquery', 'core/ajax', 'core/templates', 'core/str'], ...@@ -32,13 +33,13 @@ define(['jquery', 'core/ajax', 'core/templates', 'core/str'],
$("#group-select").on('change', function(e){ $("#group-select").on('change', function(e){
changeGroup(); changeGroup();
e.stopPropagation();
}); });
}, },
registerSubmit:function(infos){ registerSubmit:function(){
data=infos;
console.log(infos);
$("#id_submit_iena").on('click', function(e){ $("#id_submit_iena").on('click', function(e){
triggerAction(e); triggerAction(e);
}); });
...@@ -65,7 +66,7 @@ define(['jquery', 'core/ajax', 'core/templates', 'core/str'], ...@@ -65,7 +66,7 @@ define(['jquery', 'core/ajax', 'core/templates', 'core/str'],
$('.selectallactivities').click(function() { $('.selectallactivities').click(function() {
if ($(".selectallactivities").is(':checked')) { if ($(".selectallactivities").is(':checked')) {
checkAllActivitiesFilter(); checkAllActivitiesFilter();
displayActivities(); showHideActivities();
} else { } else {
$('.option').prop('checked', false); $('.option').prop('checked', false);
var message=str.get_string('selectedActivities', 'format_iena'); var message=str.get_string('selectedActivities', 'format_iena');
...@@ -73,7 +74,7 @@ define(['jquery', 'core/ajax', 'core/templates', 'core/str'], ...@@ -73,7 +74,7 @@ define(['jquery', 'core/ajax', 'core/templates', 'core/str'],
$(".dropdown-text").html('0 '+localizedEditString); $(".dropdown-text").html('0 '+localizedEditString);
}); });
$(".select-text").html(' Select'); $(".select-text").html(' Select');
displayActivities(); showHideActivities();
} }
}); });
//initActivityFilter(); //initActivityFilter();
...@@ -90,7 +91,7 @@ define(['jquery', 'core/ajax', 'core/templates', 'core/str'], ...@@ -90,7 +91,7 @@ define(['jquery', 'core/ajax', 'core/templates', 'core/str'],
checkAllGroupsFilter(); checkAllGroupsFilter();
} else { } else {
$('.group-option').prop('checked', false); $('.group-option').prop('checked', false);
displayTotalGroupsFilter(); updateGroupsFilterLabel();
} }
changeGroup(); changeGroup();
...@@ -110,8 +111,9 @@ define(['jquery', 'core/ajax', 'core/templates', 'core/str'], ...@@ -110,8 +111,9 @@ define(['jquery', 'core/ajax', 'core/templates', 'core/str'],
} }
function fetchProgress(){ function fetchProgress(){
console.log("non plutôt on fetch le progress")
completeUrl=getCompleteUrl(); completeUrl=getCompleteUrl();
console.log(completeUrl);
$.ajax({ url: completeUrl, $.ajax({ url: completeUrl,
data: {action: 'fetchprogress'}, data: {action: 'fetchprogress'},
type: 'post', type: 'post',
...@@ -124,13 +126,12 @@ define(['jquery', 'core/ajax', 'core/templates', 'core/str'], ...@@ -124,13 +126,12 @@ define(['jquery', 'core/ajax', 'core/templates', 'core/str'],
} }
initActivityFilter(false); initActivityFilter(false);
displayTotalActivitiesFilter(false); displayTotalActivitiesFilter(false);
displayTotalGroupsFilter(false); updateGroupsFilterLabel(false);
displayActivities(false); showHideActivities(false);
initGroupFilter(false); initGroupFilter(false);
registerGroupFilter(); registerGroupFilter();
changeSection(false); changeSection(false);
reloadTable(data); reloadTable(data);
//displayTotalGroupsFilter(false);
return data; return data;
} }
}); });
...@@ -145,6 +146,8 @@ define(['jquery', 'core/ajax', 'core/templates', 'core/str'], ...@@ -145,6 +146,8 @@ define(['jquery', 'core/ajax', 'core/templates', 'core/str'],
}) })
} }
function getCompleteUrl(){ function getCompleteUrl(){
url=window.location.search; url=window.location.search;
urlParams = new URLSearchParams(url); urlParams = new URLSearchParams(url);
...@@ -165,14 +168,15 @@ define(['jquery', 'core/ajax', 'core/templates', 'core/str'], ...@@ -165,14 +168,15 @@ define(['jquery', 'core/ajax', 'core/templates', 'core/str'],
return completeUrl; return completeUrl;
} }
//À changer pour intégrer une fonction plus générique
function changeGroup(){ function changeGroup(){
console.log("on va changer le groupe ?");
var completeUrl=getCompleteUrl(); var completeUrl=getCompleteUrl();
var groupscheckboxes= $('input[name="groupoptions[]"]:checked'); var groupscheckboxes= $('input[name="groupoptions[]"]:checked');
var groupsid=[]; var groupsid=[];
for (var i = 0; i < groupscheckboxes.length; i++) { for (var i = 0; i < groupscheckboxes.length; i++) {
groupsid.push(groupscheckboxes[i].value); groupsid.push(groupscheckboxes[i].value);
} }
console.log(groupsid);
loadMessage("loading"); loadMessage("loading");
if(groupsid.length==0){ if(groupsid.length==0){
groupsid.push(-2); groupsid.push(-2);
...@@ -183,13 +187,15 @@ define(['jquery', 'core/ajax', 'core/templates', 'core/str'], ...@@ -183,13 +187,15 @@ define(['jquery', 'core/ajax', 'core/templates', 'core/str'],
success: function(request) { success: function(request) {
data=calcPercentage(JSON.parse(request)); data=calcPercentage(JSON.parse(request));
//initGroupFilter(); //initGroupFilter();
//
changeSection(); changeSection();
if(data.students.length<1000){ if(data.students.length<1000){
localStorage.setItem("groups",request); localStorage.setItem("groups",request);
} }
displayTotalGroupsFilter(false); updateGroupsFilterLabel(false);
} }
}); });
} }
...@@ -261,6 +267,8 @@ define(['jquery', 'core/ajax', 'core/templates', 'core/str'], ...@@ -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 //on va devoir calculer le pourcentage, check la completion et reload la table à chaque fois
function changeSection(changefilter=true){ function changeSection(changefilter=true){
loadMessage("loading"); loadMessage("loading");
sectionid=$("#section-select").val(); sectionid=$("#section-select").val();
...@@ -310,10 +318,11 @@ define(['jquery', 'core/ajax', 'core/templates', 'core/str'], ...@@ -310,10 +318,11 @@ define(['jquery', 'core/ajax', 'core/templates', 'core/str'],
//Affiche/cache dynamiquement les activités sélectionnées //Affiche/cache dynamiquement les activités sélectionnées
function displayActivities(changefilter=true){ function showHideActivities(changefilter=true){
var arrayActivitiesID=[]; var arrayActivitiesID=[];
var activitiesToStore=[]; var activitiesToStore=[];
var activities = $('input[name="options[]"]'); var activities = $('input[name="options[]"]');
console.log(data.modules);
for(var i=0; i<activities.length;i++){ for(var i=0; i<activities.length;i++){
prog=data.modules.find(element => element.id === activities[i].value); prog=data.modules.find(element => element.id === activities[i].value);
...@@ -357,7 +366,7 @@ define(['jquery', 'core/ajax', 'core/templates', 'core/str'], ...@@ -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){ function reloadTable(params){
console.log("on est dans le reloadTable") console.log("on est dans le reloadTable")
url=getCompleteUrl(); url=getCompleteUrl();
...@@ -375,7 +384,7 @@ define(['jquery', 'core/ajax', 'core/templates', 'core/str'], ...@@ -375,7 +384,7 @@ define(['jquery', 'core/ajax', 'core/templates', 'core/str'],
} }
//Récupère les étudiants sélectionnées par les checkbox //Récupère les étudiants sélectionnées par les checkbox
function getSelectedStudents(){ function getSelectedStudents(){
var selectedChecks=$("#table-body input:checked"); var selectedChecks=$("#table-body input:checked");
...@@ -567,6 +576,79 @@ define(['jquery', 'core/ajax', 'core/templates', 'core/str'], ...@@ -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 //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(){
$("input[type='checkbox'].justone-activity").on('click', function(e){ $("input[type='checkbox'].justone-activity").on('click', function(e){
...@@ -581,30 +663,29 @@ define(['jquery', 'core/ajax', 'core/templates', 'core/str'], ...@@ -581,30 +663,29 @@ define(['jquery', 'core/ajax', 'core/templates', 'core/str'],
$('.selectallactivities').prop('checked', false); $('.selectallactivities').prop('checked', false);
$(".select-text").html(' Select'); $(".select-text").html(' Select');
} }
displayTotalActivitiesFilter(); updateActivitiesFilterLabel();
displayActivities(); showHideActivities();
}); });
} }
//Update activities filter label function registerGroupFilter(){
function displayTotalActivitiesFilter(){ $("input[type='checkbox'].justone-group").on('click', function(e){
var total = $('input[name="options[]"]:checked').length; e.stopPropagation();
if(total == $('input[name="options[]"]').length){ var a = $("input[type='checkbox'].justone-group");
var message=str.get_string('allActivities', 'format_iena'); if(a.length == a.filter(":checked").length){
$.when(message).done(function(localizedEditString) { $('.selectallgroups').prop('checked', true);
$(".dropdown-text").html(localizedEditString); }
}); else {
} $('.selectallgroups').prop('checked', false);
else{ }
var message=str.get_string('selectedActivities', 'format_iena'); //Pourquoi ?
$.when(message).done(function(localizedEditString) { //displayTotalActivitiesFilter();
$(".dropdown-text").html(total + ' '+localizedEditString); });
});
}
} }
//Stocke le filtre des activités en localStorage pour ne pas avoir 50 id dans l'url //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 //On fait bien attention à rétablir cocher le selectall si toutes les activités sont bien cochées
function initActivityFilter(){ function initActivityFilter(){
...@@ -628,37 +709,10 @@ define(['jquery', 'core/ajax', 'core/templates', 'core/str'], ...@@ -628,37 +709,10 @@ define(['jquery', 'core/ajax', 'core/templates', 'core/str'],
} }
} }
} }
} }
} }
//Coche toutes les activités quand on change de section function initGroupFilter(){
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(){
if(localStorage.groups){ if(localStorage.groups){
var checkedGroups=JSON.parse(localStorage.groups); var checkedGroups=JSON.parse(localStorage.groups);
var groups=$("input[type='checkbox'].justone-group"); var groups=$("input[type='checkbox'].justone-group");
...@@ -687,48 +741,13 @@ define(['jquery', 'core/ajax', 'core/templates', 'core/str'], ...@@ -687,48 +741,13 @@ define(['jquery', 'core/ajax', 'core/templates', 'core/str'],
} }
} }
displayTotalActivitiesFilter(); //Pourquoi ?
} // 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);
});
}
} }
/*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
*/
}); });
...@@ -166,6 +166,7 @@ function get_activities($completion, $activesectionid) { ...@@ -166,6 +166,7 @@ function get_activities($completion, $activesectionid) {
} }
function get_sections($activesectionid) { function get_sections($activesectionid) {
error_log("on passe par ici alors qu'on devrait pas");
global $COURSE; global $COURSE;
// Liste des sections du cours. // Liste des sections du cours.
$modinfo = get_fast_modinfo($COURSE->id); $modinfo = get_fast_modinfo($COURSE->id);
...@@ -185,7 +186,7 @@ function get_sections($activesectionid) { ...@@ -185,7 +186,7 @@ function get_sections($activesectionid) {
return $sections; 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'])) { if (isset($_GET['filter'])) {
$filtercomplete = $_GET['filter']; $filtercomplete = $_GET['filter'];
$symbols[mb_substr($filtercomplete, 0, 1, 'UTF-8')]->selected = "selected"; $symbols[mb_substr($filtercomplete, 0, 1, 'UTF-8')]->selected = "selected";
...@@ -391,9 +392,10 @@ if (isset($_GET['sectionid'])) { ...@@ -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. // 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'); $renderer = $PAGE->get_renderer('format_iena');
//Si on cherche les détails d'une activité //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');
...@@ -453,6 +455,8 @@ if (isset($_POST['action']) && $_POST['action'] == "details") { ...@@ -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 // 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'])) {
error_log("je change le filtre des groupes");
$groups = groups_get_all_groups($COURSE->id, 0, 0, 'g.*', true);
$data = []; $data = [];
$modules = get_activities($completion, $activesectionid); $modules = get_activities($completion, $activesectionid);
$data["students"]=get_progress_students($modules, $arrayprogress, $groups, $activegroupsids, $activesectionid, $courseid, $cache, $completion); $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'])) { ...@@ -464,9 +468,9 @@ else if (isset($_POST['action']) && !empty($_POST['action'])) {
else { else {
init_page($course, $PAGE); init_page($course, $PAGE);
echo $OUTPUT->header(); echo $OUTPUT->header();
error_log("je load juste la page");
//$progress=$cache->get($activegroupids); //$progress=$cache->get($activegroupids);
$groups = groups_get_all_groups($COURSE->id, 0, 0, 'g.*', true);
$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){
...@@ -489,8 +493,8 @@ else { ...@@ -489,8 +493,8 @@ else {
//$groups = $groupsall->groups; //$groups = $groupsall->groups;
$sections = get_sections($activesectionid); $sections = get_sections($activesectionid);
//$data["countstudents"]=$countstudents; //$data["countstudents"]=$countstudents;
$data = set_filters($data, $filters, $symbols, $sections, array_values($groups), $groupsall->current_user_groups, $groupsall->othergroups, $activesectionid); $data = set_filters($data, $filters, $symbols, $sections, $groupsall->current_user_groups, $groupsall->othergroups, $activesectionid);
$data = set_data($data, $modules, $groups, $activegroupsids, $activesectionid, $listoptions); //$data = set_data($data, $modules, $groups, $activegroupsids, $activesectionid, $listoptions);
if (isset($_GET["msg_success"])) { if (isset($_GET["msg_success"])) {
$msg = $_GET["msg_success"]; $msg = $_GET["msg_success"];
......
...@@ -155,7 +155,7 @@ ...@@ -155,7 +155,7 @@
{{#js}} {{#js}}
require(['format_iena/suivi', 'core/templates'], function(module) { require(['format_iena/suivi', 'core/templates'], function(module) {
module.registerFilters(); module.registerFilters();
module.registerSubmit({{{ data }}}); module.registerSubmit();
module.registerSelectAllActivitiesFilter(); module.registerSelectAllActivitiesFilter();
module.registerSelectAllGroupsFilter(); module.registerSelectAllGroupsFilter();
module.initTable(); module.initTable();
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment