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