97 lines
3.6 KiB
HTML
97 lines
3.6 KiB
HTML
{# -*- 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 %}
|
|
<p>Double-cliquer pour changer une valeur.
|
|
Les valeurs sont automatiquement enregistrées au fur et à mesure.
|
|
</p>
|
|
{% endif %}
|
|
<p>Chaque ligne représente une ressource ou SAÉ, et chaque colonne une Unité d'Enseignement (UE).
|
|
</p>
|
|
</div>
|
|
<form class="semestre_selector">
|
|
<input type="hidden" name="formation_id" value="{{formation.id}}"></input>
|
|
<div>
|
|
<div>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>
|
|
</div>
|
|
{% if formation.referentiel_competence %}
|
|
<div>Parcours:
|
|
<select onchange="this.form.submit()" name="parcours_id" id="semestre_idx">
|
|
<option value="" {%if parcours_id is none%}selected{%endif%}>Tous</option>
|
|
{% for parcour in formation.referentiel_competence.parcours %}
|
|
<option value="{{parcour.id}}" {%if parcours_id==parcour.id%}selected{%endif%}> {{parcour.libelle}}
|
|
({{parcour.code}})
|
|
</option>
|
|
{% endfor %}
|
|
</select>
|
|
</div>
|
|
{% endif %}
|
|
<div>
|
|
<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>
|
|
</div>
|
|
</div>
|
|
</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> |