diff --git a/app/scodoc/sco_groups_view.py b/app/scodoc/sco_groups_view.py index 3a16c98ff..02185fd87 100644 --- a/app/scodoc/sco_groups_view.py +++ b/app/scodoc/sco_groups_view.py @@ -225,9 +225,8 @@ def menu_groups_choice( submit_on_change=False, default_deselect_others=True, html_export=True, - change_event=None, # XXX ??? ): - """menu pour selection groupes + """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) @@ -237,10 +236,6 @@ def menu_groups_choice( sinon : selecteur.value = [xxx, yyy, ...] - Si change_event : - met à jour l'événement onchange du selecteur - (attend du js, plus d'informations sur scu.MultiSelect.change_event) - """ default_group_id = sco_groups.get_default_group(groups_infos.formsemestre_id) n_members = len(sco_groups.get_group_members(default_group_id)) @@ -767,7 +762,7 @@ def groups_table( name="options", html_id="group_list_options", ) - multi_select.change_event("change_list_options(event.target.value);") + multi_select.change_event("change_list_options(values);") H.extend( # ; [ diff --git a/app/static/js/multi-select.js b/app/static/js/multi-select.js index 178586f81..acd2226b3 100644 --- a/app/static/js/multi-select.js +++ b/app/static/js/multi-select.js @@ -20,7 +20,8 @@ .values() => ["val1",...] .values(["val1",...]) => // sélectionne les options correspondantes (ne vérifie pas les options "single") - .on("change", (values) => {}) => // écoute le changement de valeur + .on((values) => {}) => // écoute le changement de valeur + .format((values)=>{}) // modifie les valeurs avant d'être envoyées / récupérées. values est un tableau des valeurs des options sélectionnées */ class MultiSelect extends HTMLElement { @@ -247,8 +248,6 @@ class MultiSelect extends HTMLElement { (checkbox) => checkbox.checked ); - const values = checkedBoxes.map((checkbox) => checkbox.value); - const opts = checkedBoxes.map((checkbox) => { return this.querySelector(`option[value="${checkbox.value}"]`); }); @@ -263,6 +262,9 @@ class MultiSelect extends HTMLElement { btn.textContent = `${checkedBoxes.length} sélections`; } this.dispatchEvent(new Event("change")); + + // update the form values + this._internals.setFormValue(this._values()); } _values(newValues = null) { @@ -284,7 +286,6 @@ class MultiSelect extends HTMLElement { checkbox.checked = newValues.includes(checkbox.value); }); - this._internals.setFormValue(this._values()); this._updateSelect(); } } @@ -298,7 +299,9 @@ class MultiSelect extends HTMLElement { } on(callback) { - this.addEventListener("change", callback); + this.addEventListener("change", () => { + callback(this._values()); + }); } format(callback) { diff --git a/app/templates/scolar/formulaire_feuille_appel.j2 b/app/templates/scolar/formulaire_feuille_appel.j2 index 8c93e15e7..6e6e3f2a4 100644 --- a/app/templates/scolar/formulaire_feuille_appel.j2 +++ b/app/templates/scolar/formulaire_feuille_appel.j2 @@ -23,7 +23,6 @@ id="feuille_emargement" action="{{request.base_url}}" method="post" - onsubmit="serializeGroupIds(event)" > {{ form.hidden_tag() }}
Groupes : {{grp|safe}}
@@ -56,24 +55,4 @@ {% include "sco_timepicker.j2" %} - -{% endblock scripts %} \ No newline at end of file +{% endblock scripts %}