From fe975f9463ad1b2976f6cb0b5785bd4ee08b15da Mon Sep 17 00:00:00 2001
From: Myriam Delaruelle <myriam.delaruelle@univ-lorraine.fr>
Date: Thu, 13 Feb 2025 14:26:36 +0100
Subject: [PATCH] fin optimisation js

---
 amd/build/suivi.js       | 562 +++++++++++++++++++++------------------
 templates/suivi.mustache |   2 +-
 2 files changed, 303 insertions(+), 261 deletions(-)

diff --git a/amd/build/suivi.js b/amd/build/suivi.js
index f37d605..790fd57 100644
--- a/amd/build/suivi.js
+++ b/amd/build/suivi.js
@@ -44,13 +44,16 @@ define(['jquery', 'core/ajax', 'core/templates', 'core/str'],
 	    			triggerAction(e);
 	    		});
 	    		$("#section-select").on('change', function(){
-	    			changeSection();
+	    			//changeSection();
+	    			wrapperChangeSection();
 	    		});
-	    		$("#filter-select").on('change', function(){
-	    			changeCompletion();
+	    		$("#completion-select").on('change', function(){
+	    			//showHideStudents();
+	    			wrapperChangeCompletion();
 	    		});
 	    		$("#symbol-select").on('change', function(){
-	    			changeCompletion();
+	    			//showHideStudents();
+	    			wrapperChangeCompletion();
 	    		});
                 $('.dropdown-menu-form').on('click', function (e) {
                    e.stopPropagation();
@@ -64,6 +67,7 @@ define(['jquery', 'core/ajax', 'core/templates', 'core/str'],
        		//Evenement pour le selectall : créé une seule fois au chargement de la page
 		    registerSelectAllActivitiesFilter:function(){
 		        $('.selectallactivities').click(function() {
+
 		            if ($(".selectallactivities").is(':checked')) {
 		                checkAllActivitiesFilter();
 		                showHideActivities();
@@ -76,17 +80,18 @@ define(['jquery', 'core/ajax', 'core/templates', 'core/str'],
 		                $(".select-text").html(' Select');
 		                showHideActivities();
 		            }
+		            reloadTable();
 		        });
 		        //initActivityFilter();
 		    },
 		    registerSelectAllGroupsFilter:function(){
 		    
 		    	if(data.countstudents<1000){
-		    		console.log("on rentre ici");
 		    		checkAllGroupsFilter();
 		    	}
 		    	
-		    	$('.selectallgroups').click(function() {
+		    	$('.selectallgroups').click(function(e) {
+		    		e.stopPropagation();
 		            if ($(".selectallgroups").is(':checked')) {
 		                checkAllGroupsFilter();
 		            } else {
@@ -94,12 +99,11 @@ define(['jquery', 'core/ajax', 'core/templates', 'core/str'],
 		                updateGroupsFilterLabel(); 
 		            	
 		            }
-		            changeGroup();
+		            //changeGroup();
 		        });
 		    },
 		    initTable:function(){
 		    	data=fetchProgress();
-		    	
         		
         		
 
@@ -111,25 +115,25 @@ define(['jquery', 'core/ajax', 'core/templates', 'core/str'],
        	}
 
     function fetchProgress(){
-    	console.log("non plutôt on fetch le progress")
+    
     	completeUrl=getCompleteUrl();
     	
     	$.ajax({ url: completeUrl,
         	data: {action: 'fetchprogress'},
         	type: 'post',
         	success: function(request) { 
-        		
+        	
         		data=calcPercentage(JSON.parse(request));
         		if(data.students.length<1000){
         			
         			//localStorage.setItem("groups",request);
         		}
         		initActivityFilter(false);
-		    	displayTotalActivitiesFilter(false);
+		    	updateActivitiesFilterLabel(false);
+		    	initGroupFilter(false);
 		    	updateGroupsFilterLabel(false);
         		showHideActivities(false);
-        		initGroupFilter(false);
-        		registerGroupFilter();
+        		
         		changeSection(false);
         		reloadTable(data);
         		return data;
@@ -137,7 +141,6 @@ define(['jquery', 'core/ajax', 'core/templates', 'core/str'],
 		});
     }
     function initHeaders(){
-
     	var nb_counts=$(".th-rotate").length;
 
 		$(".th-rotate").each(function(index, element){
@@ -154,7 +157,7 @@ define(['jquery', 'core/ajax', 'core/templates', 'core/str'],
     	courseid=urlParams.get('courseid');
     	groupid=$("#group-select").val();
     	sectionid=$("#section-select").val();
-    	filter=$("#symbol-select").val() + $("#filter-select").val();
+    	filter=$("#symbol-select").val() + $("#completion-select").val();
     	completeUrl='suivi_unit.php?courseid='+courseid;
     	if(sectionid){
     		completeUrl+='&sectionid='+sectionid;
@@ -170,7 +173,6 @@ define(['jquery', 'core/ajax', 'core/templates', 'core/str'],
 
     //À 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=[];
@@ -185,16 +187,16 @@ define(['jquery', 'core/ajax', 'core/templates', 'core/str'],
         	data: {action: 'fetchgroups', groupsid:groupsid},
         	type: 'post',
         	success: function(request) { 
-        		data=calcPercentage(JSON.parse(request));
-        		//initGroupFilter();
-        		//
         		
-        		changeSection();
+        		showHideActivities();
+        		
+        		data=calcPercentage(JSON.parse(request));
+        		showHideStudents();
         		if(data.students.length<1000){
         			
         			localStorage.setItem("groups",request);
         		}
-        		
+        		reloadTable(data);
         		updateGroupsFilterLabel(false);
 			}
 		});
@@ -202,9 +204,9 @@ define(['jquery', 'core/ajax', 'core/templates', 'core/str'],
 
 
   	//Affiche ou non (dynamiquement, pas de requête) les étudiants selon le filtre d'achèvement
-    function changeCompletion(changefilter=true){
+    function showHideStudents(changefilter=true){
     	symbol=$("#symbol-select").val();
-    	filter=$("#filter-select").val();
+    	completion=$("#completion-select").val();
     	data.count_results=0;
     	for(var i=0; i<data.students.length; i++){
     		if(data.display_groups==1){
@@ -213,7 +215,7 @@ define(['jquery', 'core/ajax', 'core/templates', 'core/str'],
 
     		
     		if(symbol=="<"){
-    			if(data.students[i].percentage < filter){
+    			if(data.students[i].percentage < completion){
     				data.count_results++;
     				data.students[i].visible=true;
     			}
@@ -222,7 +224,7 @@ define(['jquery', 'core/ajax', 'core/templates', 'core/str'],
     			}
     		}
     		else if(symbol==">"){
-    			if(data.students[i].percentage > filter){
+    			if(data.students[i].percentage > completion){
     				data.count_results++;
     				data.students[i].visible=true;
     			}
@@ -231,7 +233,7 @@ define(['jquery', 'core/ajax', 'core/templates', 'core/str'],
     			}
     		}
     		else if(symbol=="≤"){
-    			if(data.students[i].percentage <= filter){
+    			if(data.students[i].percentage <= completion){
     				data.count_results++;
     				data.students[i].visible=true;
     			}
@@ -240,7 +242,7 @@ define(['jquery', 'core/ajax', 'core/templates', 'core/str'],
     			}
     		}
     		else if(symbol == "≥"){
-    			if(data.students[i].percentage >= filter){
+    			if(data.students[i].percentage >= completion){
     				data.count_results++;
     				data.students[i].visible=true;
     			}
@@ -249,7 +251,7 @@ define(['jquery', 'core/ajax', 'core/templates', 'core/str'],
     			}
     		}
     		else{
-    			if(data.students[i].percentage == filter){
+    			if(data.students[i].percentage == completion){
     				data.count_results++;
     				data.students[i].visible=true;
     			}
@@ -259,15 +261,37 @@ define(['jquery', 'core/ajax', 'core/templates', 'core/str'],
     		}
     		
     	}
-    	if(changefilter==true){
+    	/*if(changefilter==true){
     		reloadTable(data);
-    	}
+    	}*/
     	
     }
 
     //on va devoir calculer le pourcentage, check la completion et reload la table à chaque fois
 
 
+    function wrapperChangeSection(changefilter=true){
+    	changeSection();
+    	reloadTable();
+
+    }
+
+    function wrapperChangeActivities(changefilter=true){
+    	showHideActivities();
+    	data=calcPercentage();
+    	
+
+    	reloadTable();
+
+    }
+
+
+    function wrapperChangeCompletion(changefilter=true){
+    	showHideStudents();
+    	reloadTable();
+    }
+
+
 
     function changeSection(changefilter=true){
     	loadMessage("loading");
@@ -290,39 +314,28 @@ define(['jquery', 'core/ajax', 'core/templates', 'core/str'],
     			}
     		}
     	}
-    	
+    	//Si pas de résultats on recharge juste la table
     	if(data.count_results==0 && changefilter ==true){
-    		reloadTable(data);
+    		//reloadTable(data);
     	}
     	else{
     		data=calcPercentage(data);
-    		changeCompletion(changefilter);
+    		showHideStudents(changefilter);
     	}
-        changeActivitiesDropdown(data.modules);
-    }
+        changeActivitiesDropdown();
 
-    //Charge les activités dynamiquement en fonction de la section choisie
-    function changeActivitiesDropdown(modules){
-        //html='<li><label class="checkbox"><input type="checkbox" class="selectall" value="all" checked>Toutes les activités</label></li><li class="divider"></li>';
-        html="";
-        for (var i = 0; i<modules.length;i++){
-            if(modules[i].visible){
-                html+='<li><label class="checkbox"><input type="checkbox" name="options[]" checked value='+modules[i].id+' class="option justone-activity">'+modules[i].displayname+'</label></li>';
-
-            }
-        }
-        $(".iena-dynamic-activities").html(html);
+        //Vérifier si ça passe ou s'il faut attendre la promise
         registerActivityFilter();
         checkAllActivitiesFilter();
     }
 
 
-    //Affiche/cache dynamiquement les activités sélectionnées
+
+    //Affiche/cache dynamiquement les activités sélectionnées DANS LE TABLEAU
     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);
@@ -344,31 +357,20 @@ define(['jquery', 'core/ajax', 'core/templates', 'core/str'],
         	localStorage.setItem("activities",JSON.stringify(activitiesToStore));
         }
         
-        if(changefilter==true){
+       /* if(changefilter==true){
         	reloadTable(data);
-        }
+        }*/
         
     }
 
 
-    //Charge message de chargement ou d'erreur
-    function loadMessage(type){
-    	if(type=="loading"){
-    		var message = str.get_string('loadingResults', 'format_iena');
-	    	
-    	}
-    	else if(type=="error"){
-			var message = str.get_string('errorLoadingResults', 'format_iena');
-    	}
-
-    	$.when(message).done(function(localizedEditString) {
-		    $("#partial-table").html("<div class='alert alert-primary' role='alert'>"+localizedEditString+"</div>");
-		});	
-    }
+ 
 
     //Reload table with new parameters JUST FOR DISPLAYING THE TABLE.
     function reloadTable(params){
-    	console.log("on est dans le reloadTable")
+    	if(!params){
+    		params=data;
+    	}
     	url=getCompleteUrl();
     	templates.render('format_iena/suivi-table', params)
      	.done(function(html, js){
@@ -385,6 +387,241 @@ define(['jquery', 'core/ajax', 'core/templates', 'core/str'],
 
 
    
+
+
+	//Pour chaque module non caché, on va regarder pour chaque étudiant 
+	//Calcule le pourcentage pour les modules VISIBLES ?
+	function calcPercentage(request){
+		if(!request){
+			request=data;
+		}
+		for (var i = 0; i < request.students.length; i++) {
+			request.students[i].percentage=0;
+			var done=0;
+			var nb_modules=0;
+			for(var j=0; j < request.students[i].progress.length;j++){
+				if(request.modules.find(module => module.id === request.students[i].progress[j].idmodule).visible){
+					nb_modules++;
+					if(request.students[i].progress[j].completionstate == 1 || request.students[i].progress[j].completionstate ==2){
+						done++;
+					}
+				}
+			}
+			request.students[i].percentage=Math.floor(100 * done / nb_modules);
+		}
+		return request;
+	}
+
+
+    
+
+  
+    
+
+
+
+    
+
+     
+
+
+
+
+
+    /*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){
+            e.stopPropagation();
+            var a = $("input[type='checkbox'].justone-activity");
+            if(a.length == a.filter(":checked").length){
+                $('.selectallactivities').prop('checked', true);
+                $(".select-text").html(' Deselect');
+            }
+            else {
+
+                $('.selectallactivities').prop('checked', false);
+                $(".select-text").html(' Select');
+            }
+            updateActivitiesFilterLabel();
+            wrapperChangeActivities();
+            
+        });
+
+        
+    }
+
+
+
+
+    //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(){
+        if(localStorage.activities){
+            var checkedActivities=JSON.parse(localStorage.activities);
+            var activities=$("input[type='checkbox'].justone-activity");
+            if($("input[type='checkbox'].justone-activity[value="+checkedActivities[0]+"]").length > 0){
+            	if(activities.length===checkedActivities.length ){
+	                $(".selectallactivities").prop("checked", true);
+	                $("input[type='checkbox'].justone-activity").prop("checked", true);
+	            }
+	            else{
+	                $(".selectallactivities").prop("checked", false);
+	                for(var i=0; i<activities.length; i++){
+	                    if(checkedActivities.includes(activities[i].value)){
+	                        activities[i].checked=true;
+	                    }
+	                    else{
+	                        activities[i].checked=false;
+	                    }
+	                }
+	            }
+            }
+        }
+    }
+
+
+        //Coche toutes les activités quand on change de section
+    function checkAllActivitiesFilter(){
+        $('.selectallactivities').prop('checked', true);
+        $('.option').prop('checked', true);
+        updateActivitiesFilterLabel();
+
+        
+    }
+
+      //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);
+            }); 
+        }
+    }
+  
+
+  	    //Charge les activités dynamiquement en fonction de la section choisie
+    function changeActivitiesDropdown(){
+        html="";
+        for (var i = 0; i<data.modules.length;i++){
+            if(data.modules[i].visible){
+                html+='<li><label class="checkbox"><input type="checkbox" name="options[]" checked value='+data.modules[i].id+' class="option justone-activity">'+data.modules[i].displayname+'</label></li>';
+
+            }
+        }
+        $(".iena-dynamic-activities").html(html);
+  
+        
+    }
+
+
+   
+    function initGroupFilter(){
+    	$("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);
+            }
+            updateGroupsFilterLabel();
+        }); 
+        if(localStorage.groups){
+            var checkedGroups=JSON.parse(localStorage.groups);
+            var groups=$("input[type='checkbox'].justone-group");
+
+            if($("input[type='checkbox'].justone-group[value="+checkedGroups[0]+"]").length > 0){
+            	if(groups.length===checkedGroups.length ){
+	                $(".selectallgroups").prop("checked", true);
+	                $("input[type='checkbox'].justone-group").prop("checked", true);
+	            }
+	            else{
+	                $(".selectallgroups").prop("checked", false);
+	                for(var i=0; i<groups.length; i++){
+	                    if(checkedGroups.includes(groups[i].value)){
+	                        groups[i].checked=true;
+	                    }
+	                    else{
+	                        groups[i].checked=false;
+	                    }
+	                }
+	            }
+            }
+        }
+        else{
+        	if(data.countstudents<1000){
+        		checkAllGroupsFilter();
+        	}
+        	
+        }
+    }
+
+
+        //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);
+            }); 
+        }
+    }
+  
+   
+   	   //Charge message de chargement ou d'erreur
+    function loadMessage(type){
+    	if(type=="loading"){
+    		var message = str.get_string('loadingResults', 'format_iena');
+	    	
+    	}
+    	else if(type=="error"){
+			var message = str.get_string('errorLoadingResults', 'format_iena');
+    	}
+
+    	$.when(message).done(function(localizedEditString) {
+		    $("#partial-table").html("<div class='alert alert-primary' role='alert'>"+localizedEditString+"</div>");
+		});	
+    }
+
+  
+
+    //****************************** Fonctions liées à l'envoi de messages aux étudiants et au téléchargement du csv **************************//
+    
     //Récupère les étudiants sélectionnées par les checkbox
 	function getSelectedStudents(){
 		var selectedChecks=$("#table-body input:checked");
@@ -555,199 +792,4 @@ define(['jquery', 'core/ajax', 'core/templates', 'core/str'],
 	}
 
 
-	//Pour chaque module non caché, on va regarder pour chaque étudiant 
-	//Calcule le pourcentage pour les modules VISIBLES ?
-	function calcPercentage(data){
-		for (var i = 0; i < data.students.length; i++) {
-			data.students[i].percentage=0;
-			var done=0;
-			var nb_modules=0;
-			for(var j=0; j < data.students[i].progress.length;j++){
-				if(data.modules.find(module => module.id === data.students[i].progress[j].idmodule).visible){
-					nb_modules++;
-					if(data.students[i].progress[j].completionstate == 1 || data.students[i].progress[j].completionstate ==2){
-						done++;
-					}
-				}
-			}
-			data.students[i].percentage=Math.floor(100 * done / nb_modules);
-		}
-		return data;
-	}
-
-
-    
-
-    //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){
-            e.stopPropagation();
-             var a = $("input[type='checkbox'].justone-activity");
-            if(a.length == a.filter(":checked").length){
-                $('.selectallactivities').prop('checked', true);
-                $(".select-text").html(' Deselect');
-            }
-            else {
-
-                $('.selectallactivities').prop('checked', false);
-                $(".select-text").html(' Select');
-            }
-            updateActivitiesFilterLabel();
-            showHideActivities();
-        });
-
-        
-    }
-
-    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(){
-        if(localStorage.activities){
-            var checkedActivities=JSON.parse(localStorage.activities);
-            var activities=$("input[type='checkbox'].justone-activity");
-            if($("input[type='checkbox'].justone-activity[value="+checkedActivities[0]+"]").length > 0){
-            	if(activities.length===checkedActivities.length ){
-	                $(".selectallactivities").prop("checked", true);
-	                $("input[type='checkbox'].justone-activity").prop("checked", true);
-	            }
-	            else{
-	                $(".selectallactivities").prop("checked", false);
-	                for(var i=0; i<activities.length; i++){
-	                    if(checkedActivities.includes(activities[i].value)){
-	                        activities[i].checked=true;
-	                    }
-	                    else{
-	                        activities[i].checked=false;
-	                    }
-	                }
-	            }
-            }
-        }
-    }
-
-    function initGroupFilter(){
-        if(localStorage.groups){
-            var checkedGroups=JSON.parse(localStorage.groups);
-            var groups=$("input[type='checkbox'].justone-group");
-
-            if($("input[type='checkbox'].justone-group[value="+checkedGroups[0]+"]").length > 0){
-            	if(groups.length===checkedGroups.length ){
-	                $(".selectallgroups").prop("checked", true);
-	                $("input[type='checkbox'].justone-group").prop("checked", true);
-	            }
-	            else{
-	                $(".selectallgroups").prop("checked", false);
-	                for(var i=0; i<groups.length; i++){
-	                    if(checkedGroups.includes(groups[i].value)){
-	                        groups[i].checked=true;
-	                    }
-	                    else{
-	                        groups[i].checked=false;
-	                    }
-	                }
-	            }
-            }
-        }
-        else{
-        	if(data.countstudents<1000){
-        		checkAllGroupsFilter();
-        	}
-        	
-        }
-        //Pourquoi ?
-       // displayTotalActivitiesFilter();
-    }
-
-
-
-   
-
-  
 });
diff --git a/templates/suivi.mustache b/templates/suivi.mustache
index e16d344..21c15f1 100644
--- a/templates/suivi.mustache
+++ b/templates/suivi.mustache
@@ -126,7 +126,7 @@
 			{{/symbols}}
 			
 		</select>
-		<select class="custom-select mr-sm-2" id="filter-select" name="filter">
+		<select class="custom-select mr-sm-2" id="completion-select" name="filter">
 			
 			{{#filters}}
 				<option {{selected}} value='{{value}}'>{{name}}</option>
-- 
GitLab