{# -*- mode: jinja-html -*- #} <h2>{% if not read_only %}Édition des c{% else %}C{%endif%}oefficients des modules vers les UEs</h2> <div class="help"> {% if not read_only %} Double-cliquer pour changer une valeur. Les valeurs sont automatiquement enregistrées au fur et à mesure. {% endif %} </div> <form class="semestre_selector">Semestre: <select onchange="this.form.submit()"" name="semestre_idx" id="semestre_idx"> {% for i in semestre_ids %} <option value="{{i}}" {%if semestre_idx==i%}selected{%endif%}>{{i}}</option> {% endfor %} <option value="" {%if semestre_idx is none%}selected{%endif%}>tous</option> </select> <input type="hidden" name="formation_id" value="{{formation.id}}"></input> <span><a class="stdlink" href="{{ url_for('notes.ue_table', scodoc_dept=g.scodoc_dept, formation_id=formation.id, semestre_idx=semestre_idx) }}">revenir à la formation</a></span> </form> <div class="tableau"></div> <script> var read_only={{"true" if read_only else "false"}}; $(function () { let data_url = "{{data_source}}"; $.getJSON(data_url, function (data) { build_table(data); }); }); function save(obj) { var value = obj.innerText.trim(); if (value.length == 0) { value = "0"; } if (!/^[\d.,]+$/.test(value)) { message("Il est attendu un nombre"); return false; } if (value == obj.dataset.data) { return true; // Aucune modification, pas d'enregistrement mais on continue normalement } obj.dataset.data = value; obj.classList.add("wait"); // XXX DEBUG // console.log(` // x : ${getComputedStyle(obj).getPropertyValue("--x")} // y : ${getComputedStyle(obj).getPropertyValue("--y")} // data : ${value} // ue_id: ${obj.dataset.ue_id} // module_id : ${obj.dataset.module_id} // `); $.post("{{data_save}}", { module_id: obj.dataset.module_id, ue_id: obj.dataset.ue_id, coef: value }, function (result) { obj.classList.remove("wait"); if (obj.dataset.orig != value) obj.classList.add("modified"); else obj.classList.remove("modified"); // Lorsque les données sont bien enregistrées, on enlève // l'indication que c'est bon au bout d'un temps //setTimeout(() => { // obj.classList.remove("modified"); //}, 1000); } ); return true; } </script>