-
DELARUELLE Myriam authoredDELARUELLE Myriam authored
suivi.js 29.96 KiB
// This file is part of Moodle - http://moodle.org/
//
// Moodle is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// Moodle is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with Moodle. If not, see <http://www.gnu.org/licenses/>.
/**
* Handle add/remove competency links.
*
* @module format_iena/suivi
* @package format_iena
* @copyright 2021 Myriam Delaruelle
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/
define(['jquery', 'core/ajax', 'core/templates', 'core/str'],
function($, ajax, templates, str) {
var all_selected=false;
var data=[];
var cours_massif=false;
return{
registerFilters:function(){
$("#group-select").on('change', function(e){
changeGroup();
e.stopPropagation();
});
},
registerSubmit:function(){
$("#id_submit_iena").on('click', function(e){
triggerAction(e);
});
$("#section-select").on('change', function(){
//changeSection();
wrapperChangeSection();
});
$("#completion-select").on('change', function(){
//showHideStudents();
wrapperChangeCompletion();
});
$("#symbol-select").on('change', function(){
//showHideStudents();
wrapperChangeCompletion();
});
$('.dropdown-menu-form').on('click', function (e) {
e.stopPropagation();
});
$('#iena-button-search').on('click', function(e){
searchStudent();
e.preventDefault()
e.stopPropagation()
})
//registerSelectAllActivitiesFilter();
},
//Evenement pour le selectall : créé une seule fois au chargement de la page
registerSelectAllActivitiesFilter:function(){
$('.selectallactivities').click(function() {
if ($(".selectallactivities").is(':checked')) {
checkAllActivitiesFilter();
showHideActivities();
} else {
$('.option').prop('checked', false);
var message=str.get_string('selectedActivities', 'format_iena');
$.when(message).done(function(localizedEditString) {
$(".dropdown-text").html('0 '+localizedEditString);
});
$(".select-text").html(' Select');
showHideActivities();
}
reloadTable();
});
//initActivityFilter();
},
registerSelectAllGroupsFilter:function(){
if(data.countstudents<1000){
checkAllGroupsFilter();
}
$('.selectallgroups').click(function(e) {
e.stopPropagation();
if ($(".selectallgroups").is(':checked')) {
checkAllGroupsFilter();
} else {
$('.group-option').prop('checked', false);
updateGroupsFilterLabel();
}
});
},
initTable:function(){
data=fetchProgress();
$("#link-more-filters").on("click", function(){
$("#iena-more-filters").toggle();
});
$("#check-more-filters").on("click", function(){
applyMoreFilters();
});
},
}
function fetchProgress(){
completeUrl=getCompleteUrl();
data={action: 'fetchprogress'};
url=window.location.search;
urlParams = new URLSearchParams(url);
courseid=urlParams.get('courseid');
if(localStorage.groups && JSON.parse(localStorage.groups).length > 0 && localStorage.courseid && localStorage.courseid==courseid){
var cachedgroupsid=JSON.parse(localStorage.groups);
var groupsid=[];
for (var i = 0; i < cachedgroupsid.length; i++) {
groupsid.push(cachedgroupsid[i]);
}
if(groupsid.length==0){
groupsid.push(-2);
}
data.groupsid=groupsid;
}
$.ajax({ url: completeUrl,
data: data,
type: 'post',
success: function(request) {
parsedrequest=JSON.parse(request);
data=calcPercentage(parsedrequest);
if(data.countstudents<1500 && !localStorage.groups){
localStorage.setItem("courseid",parsedrequest["courseid"]);
localStorage.setItem("groups",parsedrequest["groups"]);
}
initActivityFilter(false);
updateActivitiesFilterLabel(false);
changeSection(false);
initGroupFilter(false);
updateGroupsFilterLabel(false);
reloadTable(data);
return data;
}
});
}
function initHeaders(){
var nb_counts=$(".th-rotate").length;
$(".th-rotate").each(function(index, element){
$( element ).css("zIndex",nb_counts-index);
})
}
function getCompleteUrl(){
url=window.location.search;
urlParams = new URLSearchParams(url);
courseid=urlParams.get('courseid');
groupid=$("#group-select").val();
sectionid=$("#section-select").val();
filter=$("#symbol-select").val() + $("#completion-select").val();
completeUrl='suivi_unit.php?courseid='+courseid;
if(sectionid){
completeUrl+='§ionid='+sectionid;
}
if(groupid){
completeUrl+="&groupid="+groupid;
}
if(filter){
completeUrl+="&filter="+filter;
}
return completeUrl;
}
//À changer pour intégrer une fonction plus générique
function changeGroup(){
loadMessage("loading");
var completeUrl=getCompleteUrl();
var groupscheckboxes= $('input[name="groupoptions[]"]:checked');
var groupsid=[];
for (var i = 0; i < groupscheckboxes.length; i++) {
groupsid.push(groupscheckboxes[i].value);
}
if(groupsid.length==0){
groupsid.push(-2);
}
$.ajax({ url: completeUrl,
data: {action: 'fetchgroups', groupsid:groupsid},
type: 'post',
success: function(request) {
showHideActivities();
parsedrequest=JSON.parse(request);
data=calcPercentage(parsedrequest);
showHideStudents();
if(data.countstudents<1500){
localStorage.setItem("courseid",parsedrequest["courseid"] )
localStorage.setItem("groups",JSON.stringify(parsedrequest["groups"]));
}
reloadTable(data);
updateGroupsFilterLabel(false);
}
});
}
//Affiche ou non (dynamiquement, pas de requête) les étudiants selon le filtre d'achèvement
function showHideStudents(changefilter=true){
symbol=$("#symbol-select").val();
completion=$("#completion-select").val();
data.count_results=0;
for(var i=0; i<data.students.length; i++){
if(data.display_groups==1){
data.students[i].display_groups=true;
}
if(symbol=="<"){
if(data.students[i].percentage < completion){
data.count_results++;
data.students[i].visible=true;
}
else{
data.students[i].visible=false;
}
}
else if(symbol==">"){
if(data.students[i].percentage > completion){
data.count_results++;
data.students[i].visible=true;
}
else{
data.students[i].visible=false;
}
}
else if(symbol=="≤"){
if(data.students[i].percentage <= completion){
data.count_results++;
data.students[i].visible=true;
}
else{
data.students[i].visible=false;
}
}
else if(symbol == "≥"){
if(data.students[i].percentage >= completion){
data.count_results++;
data.students[i].visible=true;
}
else{
data.students[i].visible=false;
}
}
else{
if(data.students[i].percentage == completion){
data.count_results++;
data.students[i].visible=true;
}
else{
data.students[i].visible=false;
}
}
}
/*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");
sectionid=$("#section-select").val();
data.count_results=0;
//Si les modules font partie de la section on les affiche, et on affiche également le progrès de ces modules
for(var i = 0; i<data.modules.length; i++){
if(data.modules[i].section == sectionid || sectionid == 0){
data.modules[i].visible=true;
data.count_results++;
for(var j = 0; j<data.students.length; j++){
var prog=data.students[j].progress.find(progress => progress.idmodule === data.modules[i].id);
prog.visible=true;
}
}
else{
data.modules[i].visible=false;
for(var j = 0; j<data.students.length; j++){
data.students[j].progress.find(progress => progress.idmodule === data.modules[i].id).visible=false;
}
}
}
//Si pas de résultats on recharge juste la table
if(data.count_results==0 && changefilter ==true){
//reloadTable(data);
}
else{
data=calcPercentage(data);
showHideStudents(changefilter);
}
changeActivitiesDropdown();
//Vérifier si ça passe ou s'il faut attendre la promise
registerActivityFilter();
checkAllActivitiesFilter();
}
//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[]"]');
for(var i=0; i<activities.length;i++){
prog=data.modules.find(element => element.id === activities[i].value);
if(activities[i].checked){
prog.visible=true;
for(var j = 0; j<data.students.length; j++){
data.students[j].progress.find(progress => progress.idmodule === activities[i].value).visible=true;
}
activitiesToStore.push(activities[i].value);
}
else{
prog.visible=false;
for(var j = 0; j<data.students.length; j++){
data.students[j].progress.find(progress => progress.idmodule === activities[i].value).visible=false;
}
}
}
if(data.countstudents<1500){
localStorage.setItem("activities",JSON.stringify(activitiesToStore));
}
/* if(changefilter==true){
reloadTable(data);
}*/
}
//Reload table with new parameters JUST FOR DISPLAYING THE TABLE.
function reloadTable(params){
if(!params){
params=data;
}
url=getCompleteUrl();
templates.render('format_iena/suivi-table', params)
.done(function(html, js){
$("#partial-table").html(html);
templates.runTemplateJS(js);
window.history.pushState('suivi',"", url);
initHeaders();
})
.fail(function(){
loadMessage("error");
});
}
//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;
}
function deleteSearch(old_data){
$('#iena-search-tag').html("");
data=old_data;
$(".iena-filters .custom-select").prop('disabled', false);
$(".iena-filters .iena-custom-dropdown > button").prop('disabled', false);
showHideStudents();
reloadTable(data);
}
function deleteAdvancedFilter(old_data){
loadMessage("loading");
$('#iena-filters-tag').html("");
data=old_data;
$(".iena-filters #symbol-select").prop('disabled', false);
$(".iena-filters #completion-select").prop('disabled', false);
$("#completion-select").prop("disabled", false);
$("#iena-search-form").children().prop("disabled", false);
$("#iena-filters-error").hide();
showHideStudents();
reloadTable(data);
}
function applyMoreFilters(){
completionBegin=$("#completion-select-begin").val();
completionEnd=$("#completion-select-end").val();
if($("#iena-close-advanced").length == 0){
old_data=$.extend(true,{},data);
}
if(( isNaN(Number(completionBegin)) || (completionBegin < 0 || completionBegin > 100)) || (isNaN(Number(completionEnd)) || (completionEnd <0 || completionBegin > 100)) ){
$("#iena-filters-error").show();
if($('#iena-filters-tag').is(":hidden")){
//$('#iena-filters-tag').hide();
$("#symbol-select").prop("disabled", false);
$("#completion-select").prop("disabled", false);
}
}
else{
loadMessage("loading");
$("#iena-search-form").children().prop("disabled", true);
$("#symbol-select").prop("disabled", true);
$("#completion-select").prop("disabled", true);
$('#iena-filters-tag').show();
$('#iena-filters-tag').html(`<span role="option" data-value="" aria-selected="true" class="badge badge-secondary clickable text-wrap text-break line-height-4 m-1" id="form_autocomplete_selection-1739873966209-0" data-active-selection="true">
≥`+completionBegin+`% ≤`+completionEnd+`%<i id="iena-close-advanced" class="icon fa fa-times pl-2 mr-0"></i></span>`);
$('#iena-filters-tag').on('click', 'i', function(e){
deleteAdvancedFilter(old_data);
});
$("#iena-filters-error").hide();
showHideStudentsAdvancedFilters(completionBegin, completionEnd);
reloadTable(data);
}
}
function showHideStudentsAdvancedFilters(completionBegin, completionEnd){
data.count_results=0;
for(var i=0; i<data.students.length; i++){
/*if(data.display_groups==1){
data.students[i].display_groups=true;
}*/
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;
}
}
}
function searchStudent(){
var searchinput= $('input[name="iena-search-student"]').val();
var searchform=document.querySelector("#iena-search-form");
if(searchinput.length<=2){
$('input[name="iena-search-student"]').css("border-color","#dc3545");
$("#iena-search-error").show();
$('#iena-search-tag').hide();
}
else{
loadMessage("loading");
$('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);
$("#iena-more-filters .form-control").prop('disabled', true);
$("#check-more-filters").addClass("disabled");
if($("#iena-close-tag").length == 0){
old_data=$.extend(true,{},data);
}
$('#iena-search-tag').show();
var completeUrl=getCompleteUrl();
$('#iena-search-tag').html(`<span role="option" data-value="`+searchinput+`" aria-selected="true" class="badge badge-secondary clickable text-wrap text-break line-height-4 m-1" id="form_autocomplete_selection-1739873966209-0" data-active-selection="true">
`+searchinput+`<i id="iena-close-tag" class="icon fa fa-times pl-2 mr-0"></i></span>`);
$('#iena-search-tag').on('click', 'i', function(e){
deleteSearch(old_data);
});
$.ajax({ url: completeUrl,
data: {action: 'search_student', search_input:searchinput},
type: 'post',
success: function(request) {
showHideActivities();
data=calcPercentage(JSON.parse(request));
showHideStudents();
$('input[name="iena-search-student"]').val("");
reloadTable(data);
updateGroupsFilterLabel(false);
}
});
}
}
function deleteSearch(old_data){
loadMessage("loading");
$('#iena-search-tag').html("");
data=old_data;
$(".iena-filters .custom-select").prop('disabled', false);
$(".iena-filters .iena-custom-dropdown > button").prop('disabled', false);
$("#iena-more-filters .form-control").prop('disabled', false);
$("#check-more-filters").removeClass("disabled");
showHideStudents();
reloadTable(data);
}
/*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 && JSON.parse(localStorage.groups) != 0 && localStorage.courseid && localStorage.courseid==courseid ){
var checkedGroups=JSON.parse(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 && checkedGroups[0]!=0){
$(".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<1500){
checkAllGroupsFilter();
}
else{
$('.selectallgroups').prop('checked', false);
$('.group-option').prop('checked', false);
}
}
}
//Coche tous les groupes quand le select all est coché
function checkAllGroupsFilter(){
$('.selectallgroups').prop('checked', true);
$('.group-option').prop('checked', true);
$(".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){
var loard="";
if(type=="loading"){
var message = str.get_string('loadingResults', 'format_iena');
loader="<div class=loader></div>";
}
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+loader+"</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");
var students=[];
for(var i=0; i < selectedChecks.length; i++){
students.push(selectedChecks[i].value);
}
return students;
}
//Si on veut envoyer un message à tout le monde on ajoute deux champs cachés :
//La liste des étudiants (array d'id)
//L'url de retour pour revenir sur le tableau de suivi
function triggerAction(e){
value=$("#select-actions-suivi-iena").val();
if(value=="msg"){
url=window.location.search;
urlParams = new URLSearchParams(url);
courseid=urlParams.get('courseid');
students=getSelectedStudents();
var form=$("#form_send_message_iena");
form.attr("action", "send_message.php?courseid="+courseid);
var field=$("<input></input>");
field.attr("type", "hidden");
field.attr("name", "students");
field.attr("value", students.toString());
form.append(field);
var fieldUrl=$("<input></input>");
fieldUrl.attr("type", "hidden");
fieldUrl.attr("name", "back_url");
fieldUrl.attr("value", url);
form.append(fieldUrl);
$(document.body).append(form);
form.submit();
}
else if(value=="download"){
e.stopPropagation();
e.preventDefault();
table_download(data);
}
}
function slug_it(str) {
return str.toString().toLowerCase().trim()
.replace(/\s+/g, '-') /* Replace spaces with - */
.replace(/&/g, '-and-') /* Replace & with 'and' */
.replace(/[^\w\-]+/g, '') /* Remove all non-word chars */
.replace(/\-\-+/g, '-') /* Replace multiple - with single - */
}
function padLeft(date){
return String(date).length > 1? date : '0'+date ;
}
function table_download() {
var students=getSelectedStudents();
var csvContent = "data:text/csv;charset=utf-8,";
var head = ['Moodle_id', 'Prénom', 'Nom', 'Groupe', 'Complétion (en %)'];
data.active_section_id=$("#section-select").val();
for ( var m = 0; m < data.modules.length; m++ ) {
if ( data.active_section_id != data.modules[m].section && data.active_section_id != 0 ) {
continue;
}
head.push('"'+data.modules[m].displayname.replace(',', '')+'"');
}
csvContent += head.join(",");
csvContent += "\n";
/* Pour chaque étudiant */
for ( var s = 0; s < data.students.length; s++ ) {
if(students.includes(data.students[s].id)){
var arr_cpl = [];
/* Pour chaque activité du cours */
var activities_nbr = 0;
var done_activities_nbr = 0;
for ( var mod = 0; mod < data.modules.length; mod++ ) {
/* Si le module n'est pas dans la section actuellement filtrée */
if ( data.active_section_id != data.modules[mod].section && data.active_section_id != 0 ) {
continue;
}
var stud_progress = data.students[s].progress
/* Si l'étudiant n'a pas de progres*/
if ( stud_progress.length == 0 ) {
arr_cpl.push(0);
} else {
// var prog = 0;
/* Pour chaque trace d'achèvement */
var cpl = 0;
for (var i =0; i<stud_progress.length; i++) {
/* Quand l'index de progression correspond à l'id du module */
if ( data.modules[mod].id == stud_progress[i].idmodule ) {
cpl = stud_progress[i].completionstate;
if (cpl == 3) {
cpl = 0.5;
cpl = '"' + cpl.toLocaleString() + '"';
}
}
}
if (cpl == 1 || cpl == 2) {
done_activities_nbr++;
}
arr_cpl.push(cpl);
}
activities_nbr++;
}
var perc = Math.round(100 * 100 * done_activities_nbr / activities_nbr) / 100;
var groups = '"';
active_group_id=$('#group-select').val();
data.active_group_name=$('#group-select').find('option:selected').html()
if ( data.active_group_name != "" && active_group_id != 0 ) {
groups += data.active_group_name.replace('"', '');
} else {
groups += data.students[s].groups.replace('"', '');
}
groups += '"';
var arr = [
data.students[s].id,
data.students[s].firstname,
data.students[s].lastname,
groups,
'"'+perc.toLocaleString()+'"',
arr_cpl
];
var dataString = arr.join(",");
csvContent += dataString + "\n";
}
}
var encodedUri = encodeURI(csvContent);
var section_name = data.active_section_id;
if ( section_name == 0 ) {
section_name = "cours-complet";
} else {
section_name = slug_it($('#section-select').find('option:selected').html()).substring(0, 20);
}
var d = new Date;
month = d.getMonth()+1;
date = d.getFullYear() +"."+ padLeft(month) +"."+ padLeft(d.getDate()) +"-"+ padLeft(d.getHours()) +"."+ padLeft(d.getMinutes()) +"."+ padLeft(d.getSeconds());
var link = document.createElement("a");
link.setAttribute("href", encodedUri);
link.setAttribute("download", "report-"+section_name+"-"+ date +".csv");
document.body.appendChild(link);
link.click();
document.body.removeChild(link);
}
});