From 6b9fe01e50429ee99bcb04ef997f5061faec0664 Mon Sep 17 00:00:00 2001
From: Myriam Delaruelle <myriam.delaruelle@univ-lorraine.fr>
Date: Thu, 20 Feb 2025 15:44:38 +0100
Subject: [PATCH] completion advanced filter (overkill)

---
 amd/build/suivi.js       | 157 ++++++++++++++++++++++++++++++++++++++-
 suivi_unit.php           |   9 +++
 templates/suivi.mustache |  29 ++++++++
 3 files changed, 191 insertions(+), 4 deletions(-)

diff --git a/amd/build/suivi.js b/amd/build/suivi.js
index 52d7dee..e185a5a 100644
--- a/amd/build/suivi.js
+++ b/amd/build/suivi.js
@@ -109,10 +109,19 @@ define(['jquery', 'core/ajax', 'core/templates', 'core/str'],
 		    },
 		    initTable:function(){
 		    	data=fetchProgress();
-        		
+		    	
+        		$("#link-more-filters").on("click", function(){
+        			$("#iena-more-filters").toggle();
+        		});
+
+    
+        		$("#check-more-filters").on("click", function(){
+        			applyMoreFilters();
+        		});
         		
 
-		    }
+		    },
+		    
        		
 
        		
@@ -132,7 +141,7 @@ define(['jquery', 'core/ajax', 'core/templates', 'core/str'],
         			
         			localStorage.setItem("groups",request);
         		}
-        		console.log(request);
+        	
         		initActivityFilter(false);
 		    	updateActivitiesFilterLabel(false);
 		    	initGroupFilter(false);
@@ -440,7 +449,7 @@ define(['jquery', 'core/ajax', 'core/templates', 'core/str'],
 			
 			$('input[name="iena-search-student"]').css("border-color","#8f959e");
 			$("#iena-search-error").hide();
-			
+
 			$(".iena-filters .custom-select").prop('disabled', true);
 			$(".iena-filters .iena-custom-dropdown > button").prop('disabled', true);
 
@@ -485,6 +494,146 @@ define(['jquery', 'core/ajax', 'core/templates', 'core/str'],
         		
 	}
     
+    
+	function applyMoreFilters(){
+		if ($("#check-more-filters").is(":checked")){
+			$("#symbol-select").prop("disabled", true);
+			$("#completion-select").prop("disabled", true);
+		}
+		else{
+			$("#symbol-select").prop("disabled", false);
+			$("#completion-select").prop("disabled", false);
+		}
+		symbolBegin=$("#symbol-select-begin").val();
+    	completionBegin=$("#completion-select-begin").val();
+    	symbolEnd=$("#symbol-select-end").val();
+    	completionEnd=$("#completion-select-end").val();
+    	if((typeof completionBegin != Number && (completionBegin <0 || completionBegin > 100)) || (typeof completionEnd != Number && (completionEnd <0 || completionBegin > 100)) ){
+    		console.log(typeof completionBegin);
+
+    	}
+    	else{
+    		console.log("on montre les étyd");
+    		showHideStudentsAdvancedFilters(symbolBegin, completionBegin, symbolEnd, completionEnd);
+    		reloadTable(data);
+    	}
+	}
+
+
+
+	function showHideStudentsAdvancedFilters(symbolBegin, completionBegin, symbolEnd, completionEnd){
+    	
+    	data.count_results=0;
+    	console.log(data.students);
+    	for(var i=0; i<data.students.length; i++){
+    		/*if(data.display_groups==1){
+    			data.students[i].display_groups=true;
+    		}*/
+    		console.log(symbolBegin);
+    		console.log(symbolEnd);
+    		switch(symbolBegin){
+    			case ">":
+    				switch(symbolEnd){
+    					case "<":
+    						console.log("on devrait arriver ic");
+    						if(data.students[i].percentage > completionBegin && data.students[i].percentage < completionEnd){
+			    				data.count_results++;
+			    				data.students[i].visible=true;
+			    			}
+			    			else{
+								data.students[i].visible=false;
+			    			}
+    						break;
+    					case "=":
+    						if(data.students[i].percentage > completionBegin && data.students[i].percentage == completionEnd){
+			    				data.count_results++;
+			    				data.students[i].visible=true;
+			    			}
+			    			else{
+								data.students[i].visible=false;
+			    			}
+    						break;
+    					case "≤":
+    						if(data.students[i].percentage > completionBegin && data.students[i].percentage <= completionEnd){
+			    				data.count_results++;
+			    				data.students[i].visible=true;
+			    			}
+			    			else{
+								data.students[i].visible=false;
+			    			}
+    						break;
+    				}
+    				break;
+    			case "=":
+    				switch(symbolEnd){
+    					case "<":
+    						if(data.students[i].percentage == completionBegin && data.students[i].percentage < completionEnd){
+			    				data.count_results++;
+			    				data.students[i].visible=true;
+			    			}
+			    			else{
+								data.students[i].visible=false;
+			    			}
+    						break;
+    					case "=":
+    						if(data.students[i].percentage == completionBegin && data.students[i].percentage == completionEnd){
+			    				data.count_results++;
+			    				data.students[i].visible=true;
+			    			}
+			    			else{
+								data.students[i].visible=false;
+			    			}
+    						break;
+    					case "≤":
+    						if(data.students[i].percentage == completionBegin && data.students[i].percentage <= completionEnd){
+			    				data.count_results++;
+			    				data.students[i].visible=true;
+			    			}
+			    			else{
+								data.students[i].visible=false;
+			    			}
+    						break;
+    				}
+    				break;
+				case "≥":
+					switch(symbolEnd){
+    					case "<":
+    						if(data.students[i].percentage >= completionBegin && data.students[i].percentage < completionEnd){
+			    				data.count_results++;
+			    				data.students[i].visible=true;
+			    			}
+			    			else{
+								data.students[i].visible=false;
+			    			}
+    						break;
+    					case "=":
+    						if(data.students[i].percentage >= completionBegin && data.students[i].percentage == completionEnd){
+			    				data.count_results++;
+			    				data.students[i].visible=true;
+			    			}
+			    			else{
+								data.students[i].visible=false;
+			    			}
+    						break;
+    					case "≤":
+    						if(data.students[i].percentage >= completionBegin && data.students[i].percentage <= completionEnd){
+			    				data.count_results++;
+			    				data.students[i].visible=true;
+			    			}
+			    			else{
+								data.students[i].visible=false;
+			    			}
+    						break;
+    				}
+					break;
+
+    		}
+
+    		
+    	}
+
+    	
+    }
 
      
 
diff --git a/suivi_unit.php b/suivi_unit.php
index 86d5a7a..3967ae3 100644
--- a/suivi_unit.php
+++ b/suivi_unit.php
@@ -204,6 +204,13 @@ function set_filters($data, $filters, $symbols, $sections, $currentusergroups, $
 
     $data['filters'] = array_values($filters);
     $data['symbols'] = array_values($symbols);
+    $data['symbolsAdvancedBegin']=array($data['symbols'][0],$data['symbols'][2],$data['symbols'][4]);
+    $data['symbolsAdvancedEnd']=array($data['symbols'][0],$data['symbols'][1],$data['symbols'][3]);
+
+   
+
+
+
     $data["sections"] = $sections;
     //Ici on récupère les groupes "autres" auxquels je n'appartiens pas
     //$data["groups"] = array_values($groups);
@@ -405,6 +412,8 @@ $symbols = [
     ]
 ];
 
+
+
 //On s'occupe des options ici
 
 
diff --git a/templates/suivi.mustache b/templates/suivi.mustache
index ed6996a..d2d0768 100644
--- a/templates/suivi.mustache
+++ b/templates/suivi.mustache
@@ -137,6 +137,35 @@
 			
 		</select>
 	</div>
+	<div>
+		<a href="#" id="link-more-filters">Filtres avancés</a>
+		<div id="iena-more-filters" style="display:none">
+			<input type="checkbox" id="check-more-filters"></input>
+			<div class="input-group">
+				<div class="input-group-prepend">
+					<label>Plage d'achèvement</label>
+				</div>
+				<select class="custom-select mr-sm-2" id="symbol-select-begin" name="filter">
+					
+					{{#symbolsAdvancedBegin}}
+						<option {{selected}} value='{{value}}'>{{name}}</option>
+					{{/symbolsAdvancedBegin}}
+					
+				</select>
+				<input type="text" class="form-control" id="completion-select-begin"></input>
+				<span>et</span>
+				<select class="custom-select mr-sm-2" id="symbol-select-end" name="filter">
+					
+					{{#symbolsAdvancedEnd}}
+						<option {{selected}} value='{{value}}'>{{name}}</option>
+					{{/symbolsAdvancedEnd}}
+					
+				</select>
+				<input type="text" class="form-control" id="completion-select-end"></input>
+			</div>
+		</div>
+	</div>
+
 </form>
 
 <div>
-- 
GitLab