forked from ScoDoc/ScoDoc
Merge pull request 'Fix du multi-select' (#980) from iziram/ScoDoc:main into master
Reviewed-on: ScoDoc/ScoDoc#980
This commit is contained in:
commit
d191fcd10e
@ -224,14 +224,13 @@ def menu_groups_choice(
|
||||
groups_infos,
|
||||
submit_on_change=False,
|
||||
default_deselect_others=True,
|
||||
html_export=True,
|
||||
):
|
||||
"""Menu pour selection groupes
|
||||
group_ids est la liste des groupes actuellement sélectionnés
|
||||
et doit comporter au moins un élément, sauf si formsemestre_id est spécifié.
|
||||
(utilisé pour retrouver le semestre et proposer la liste des autres groupes)
|
||||
|
||||
Si html_export :
|
||||
Si url_export :
|
||||
selecteur.value = &group_ids=xxx&group_ids=yyy...
|
||||
sinon :
|
||||
selecteur.value = [xxx, yyy, ...]
|
||||
@ -273,9 +272,6 @@ def menu_groups_choice(
|
||||
values=values, name="group_ids", html_id="group_ids_sel"
|
||||
)
|
||||
|
||||
if html_export:
|
||||
multi_select.export_format('return "&group_ids="+values.join("&group_ids=")')
|
||||
|
||||
if submit_on_change:
|
||||
multi_select.change_event("submit_group_selector();")
|
||||
|
||||
|
@ -23,7 +23,14 @@ function groups_view_url() {
|
||||
urlParams.delete("group_ids");
|
||||
// ajout des groupes selectionnes
|
||||
var selected_groups = document.getElementById("group_ids_sel").value;
|
||||
url.search = urlParams.toString() + selected_groups;
|
||||
if (Array.isArray(selected_groups)) {
|
||||
selected_groups.forEach((value) => {
|
||||
urlParams.append("group_ids", value);
|
||||
});
|
||||
} else {
|
||||
urlParams.set("group_ids", selected_groups);
|
||||
}
|
||||
url.search = urlParams.toString();
|
||||
return url.href;
|
||||
}
|
||||
|
||||
@ -61,11 +68,13 @@ function change_list_options(selected_options) {
|
||||
// Menu choix groupe:
|
||||
function toggle_visible_etuds() {
|
||||
//
|
||||
document.querySelectorAll('.etud_elem').forEach(element => {
|
||||
element.style.display = 'none';
|
||||
document.querySelectorAll(".etud_elem").forEach((element) => {
|
||||
element.style.display = "none";
|
||||
});
|
||||
var qargs = "";
|
||||
var selectedOptions = document.querySelectorAll("#group_ids_sel option:checked");
|
||||
var selectedOptions = document.querySelectorAll(
|
||||
"#group_ids_sel option:checked"
|
||||
);
|
||||
var qargs = "";
|
||||
selectedOptions.forEach(function (opt) {
|
||||
var group_id = opt.value;
|
||||
@ -79,7 +88,9 @@ function toggle_visible_etuds() {
|
||||
let input_eval = document.querySelectorAll("#formnotes_evaluation_id");
|
||||
if (input_eval.length > 0) {
|
||||
let evaluation_id = input_eval[0].value;
|
||||
let menu_saisie_tableur_a = document.querySelector("#menu_saisie_tableur a");
|
||||
let menu_saisie_tableur_a = document.querySelector(
|
||||
"#menu_saisie_tableur a"
|
||||
);
|
||||
menu_saisie_tableur_a.setAttribute(
|
||||
"href",
|
||||
"saisie_notes_tableur?evaluation_id=" + evaluation_id + qargs
|
||||
|
@ -263,8 +263,20 @@ class MultiSelect extends HTMLElement {
|
||||
}
|
||||
this.dispatchEvent(new Event("change"));
|
||||
|
||||
// create a FormData object
|
||||
const fd = new FormData();
|
||||
const values = this._values();
|
||||
// check if values is an array
|
||||
if (Array.isArray(values)) {
|
||||
values.forEach((value) => {
|
||||
fd.append(this.name, value);
|
||||
});
|
||||
} else {
|
||||
fd.append(this.name, values);
|
||||
}
|
||||
|
||||
// update the form values
|
||||
this._internals.setFormValue(this._values());
|
||||
this._internals.setFormValue(fd);
|
||||
}
|
||||
|
||||
_values(newValues = null) {
|
||||
|
@ -24,8 +24,7 @@
|
||||
#
|
||||
##############################################################################
|
||||
|
||||
"""Vues assiduité
|
||||
"""
|
||||
"""Vues assiduité"""
|
||||
|
||||
import datetime
|
||||
import json
|
||||
@ -1167,7 +1166,7 @@ def signal_assiduites_group():
|
||||
formsemestre_date_fin=str(formsemestre.date_fin),
|
||||
formsemestre_id=formsemestre_id,
|
||||
gr_tit=gr_tit,
|
||||
grp=sco_groups_view.menu_groups_choice(groups_infos, html_export=False),
|
||||
grp=sco_groups_view.menu_groups_choice(groups_infos),
|
||||
minitimeline=_mini_timeline(),
|
||||
moduleimpl_select=_module_selector(formsemestre, moduleimpl_id),
|
||||
nonworkdays=_non_work_days(),
|
||||
|
@ -41,11 +41,11 @@ def formulaire_feuille_appel(formsemestre_id: int):
|
||||
group_ids: list[int] = request.args.getlist("group_ids")
|
||||
data = {"group_ids": group_ids}
|
||||
else:
|
||||
group_ids_str = request.form.get("group_ids")
|
||||
group_ids_list = request.form.getlist("group_ids")
|
||||
try:
|
||||
group_ids = [int(gid) for gid in group_ids_str.split(",") if gid]
|
||||
group_ids = [int(gid) for gid in group_ids_list if gid]
|
||||
except ValueError as exc:
|
||||
log(f"formulaire_feuille_appel: group_ids invalide: {group_ids_str[:100]}")
|
||||
log(f"formulaire_feuille_appel: group_ids invalide: {group_ids_list[:100]}")
|
||||
raise ScoValueError("groupes invalides") from exc
|
||||
data = {}
|
||||
|
||||
@ -81,6 +81,6 @@ def formulaire_feuille_appel(formsemestre_id: int):
|
||||
sco_data=ScoData(formsemestre=formsemestre),
|
||||
form=form,
|
||||
group_name=groups_infos.groups_titles,
|
||||
grp=menu_groups_choice(groups_infos, html_export=False),
|
||||
grp=menu_groups_choice(groups_infos),
|
||||
formsemestre_id=formsemestre_id,
|
||||
)
|
||||
|
@ -30,6 +30,7 @@ Module notes: issu de ScoDoc7 / ZNotes.py
|
||||
|
||||
Emmanuel Viennet, 2021
|
||||
"""
|
||||
|
||||
import html
|
||||
from operator import itemgetter
|
||||
import time
|
||||
|
Loading…
Reference in New Issue
Block a user