2023-06-20 08:33:49 +02:00
|
|
|
{% include "assiduites/widgets/toast.j2" %}
|
2023-04-17 15:44:55 +02:00
|
|
|
<section id="content">
|
|
|
|
|
|
|
|
<div class="no-display">
|
|
|
|
<span class="formsemestre_id">{{formsemestre_id}}</span>
|
|
|
|
<span id="formsemestre_date_debut">{{formsemestre_date_debut}}</span>
|
|
|
|
<span id="formsemestre_date_fin">{{formsemestre_date_fin}}</span>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
<h2>
|
2023-10-09 19:08:57 +02:00
|
|
|
{% if readonly == "true" %}
|
|
|
|
Assiduité {{gr_tit|safe}} {{sem}} (lecture seule)
|
|
|
|
{% else %}
|
|
|
|
Saisie de l'assiduité {{gr_tit|safe}} {{sem}}
|
|
|
|
{% endif %}
|
2023-04-17 15:44:55 +02:00
|
|
|
</h2>
|
|
|
|
|
|
|
|
<fieldset class="selectors">
|
|
|
|
<div class="infos">
|
2023-10-09 19:08:57 +02:00
|
|
|
<div class="infos-button">Groupes : {{grp|safe}}</div>
|
2023-10-23 14:56:18 +02:00
|
|
|
<div class="infos-button" style="margin-left: 24px;">Date : <span style="margin-left: 8px;"
|
|
|
|
id="datestr"></span>
|
2024-01-21 22:11:07 +01:00
|
|
|
<input type="text" name="tl_date" id="tl_date" value="{{ date }}"
|
2023-11-15 14:11:47 +01:00
|
|
|
onchange="updateDate()">
|
2023-10-09 19:08:57 +02:00
|
|
|
</div>
|
2023-04-17 15:44:55 +02:00
|
|
|
</div>
|
|
|
|
</fieldset>
|
2023-07-26 16:43:49 +02:00
|
|
|
|
2024-01-12 11:36:00 +01:00
|
|
|
{% if readonly == "false" %}
|
2023-07-26 16:43:49 +02:00
|
|
|
{{timeline|safe}}
|
|
|
|
|
|
|
|
<div style="margin: 1vh 0;">
|
2023-08-13 22:40:16 +02:00
|
|
|
<div id="forcemodule" style="display: none; margin:10px 0px;">
|
|
|
|
Vous devez spécifier le module ! (voir réglage préférence du semestre)
|
|
|
|
</div>
|
2023-10-09 19:08:57 +02:00
|
|
|
<div>Module : {{moduleimpl_select|safe}}</div>
|
2023-07-26 16:43:49 +02:00
|
|
|
</div>
|
|
|
|
{% else %}
|
|
|
|
{% endif %}
|
2023-10-09 19:08:57 +02:00
|
|
|
|
|
|
|
{% if readonly == "true" %}
|
|
|
|
<button id="validate_selectors" onclick="validateSelectors(this)">
|
|
|
|
Voir l'assiduité
|
|
|
|
</button>
|
|
|
|
{% else %}
|
|
|
|
<button id="validate_selectors" onclick="validateSelectors(this)">
|
|
|
|
Faire la saisie
|
|
|
|
</button>
|
|
|
|
{% endif %}
|
2024-01-12 11:36:00 +01:00
|
|
|
|
2023-10-09 19:08:57 +02:00
|
|
|
|
2023-04-17 15:44:55 +02:00
|
|
|
<div class="etud_holder">
|
2023-06-12 17:54:30 +02:00
|
|
|
<p class="placeholder">
|
|
|
|
</p>
|
2023-04-17 15:44:55 +02:00
|
|
|
</div>
|
2023-06-12 17:54:30 +02:00
|
|
|
<div class="legende">
|
|
|
|
<h3>Explication diverses</h3>
|
|
|
|
<p>
|
|
|
|
Si la période indiquée par la timeline provoque un conflit d'assiduité pour un étudiant sa ligne deviendra
|
|
|
|
rouge.
|
|
|
|
<br>
|
|
|
|
Dans ce cas il faut résoudre manuellement le conflit : cliquez sur un des boutons d'assiduités pour ouvrir
|
|
|
|
le
|
|
|
|
résolveur de conflit.
|
|
|
|
<br>
|
|
|
|
Correspondance des couleurs :
|
|
|
|
</p>
|
|
|
|
<ul>
|
2023-11-16 14:25:06 +01:00
|
|
|
{% include "assiduites/widgets/legende_couleur.j2" %}
|
2023-06-12 17:54:30 +02:00
|
|
|
</ul>
|
2023-04-17 15:44:55 +02:00
|
|
|
</div>
|
|
|
|
<!-- Ajout d'un conteneur pour le loader -->
|
|
|
|
<div class="loader-container" id="loaderContainer">
|
|
|
|
<div class="loader"></div>
|
|
|
|
</div>
|
|
|
|
|
2023-06-20 08:33:49 +02:00
|
|
|
{% include "assiduites/widgets/alert.j2" %}
|
|
|
|
{% include "assiduites/widgets/prompt.j2" %}
|
|
|
|
{% include "assiduites/widgets/conflict.j2" %}
|
2023-04-17 15:44:55 +02:00
|
|
|
|
|
|
|
<script>
|
2023-06-12 17:54:30 +02:00
|
|
|
|
2024-01-12 11:36:00 +01:00
|
|
|
{% if readonly != "false" %}
|
|
|
|
function getPeriodValues(){
|
|
|
|
return [0, 23]
|
|
|
|
}
|
|
|
|
{% endif %}
|
|
|
|
|
|
|
|
|
2023-05-30 11:47:59 +02:00
|
|
|
const nonWorkDays = [{{ nonworkdays| safe }}];
|
|
|
|
|
2023-07-26 16:43:49 +02:00
|
|
|
const readOnly = {{ readonly }};
|
|
|
|
|
|
|
|
|
2023-04-17 15:44:55 +02:00
|
|
|
setupDate();
|
2023-11-17 10:17:26 +01:00
|
|
|
updateDate();
|
2024-01-12 11:36:00 +01:00
|
|
|
if (!readOnly){
|
|
|
|
setupTimeLine(()=>{
|
|
|
|
generateAllEtudRow();
|
|
|
|
});
|
|
|
|
}
|
2023-04-25 22:59:06 +02:00
|
|
|
|
2023-06-12 17:54:30 +02:00
|
|
|
window.forceModule = "{{ forcer_module }}"
|
|
|
|
window.forceModule = window.forceModule == "True" ? true : false
|
|
|
|
|
2023-07-25 19:59:47 +02:00
|
|
|
const etudsDefDem = {{ defdem | safe }}
|
|
|
|
|
2023-10-23 14:56:18 +02:00
|
|
|
const select = document.getElementById("moduleimpl_select");
|
|
|
|
|
|
|
|
select?.addEventListener('change', (e) => {
|
|
|
|
generateAllEtudRow();
|
|
|
|
});
|
|
|
|
|
2023-06-13 16:25:45 +02:00
|
|
|
if (window.forceModule) {
|
|
|
|
const btn = document.getElementById("validate_selectors");
|
|
|
|
|
|
|
|
|
2023-07-26 16:43:49 +02:00
|
|
|
if (!readOnly && select.value == "") {
|
2023-07-04 15:04:58 +02:00
|
|
|
document.getElementById('forcemodule').style.display = "block";
|
2023-06-13 16:25:45 +02:00
|
|
|
}
|
|
|
|
|
2023-07-26 16:43:49 +02:00
|
|
|
select?.addEventListener('change', (e) => {
|
2023-06-13 16:25:45 +02:00
|
|
|
if (e.target.value != "") {
|
2023-07-04 15:04:58 +02:00
|
|
|
document.getElementById('forcemodule').style.display = "none";
|
2023-06-13 16:25:45 +02:00
|
|
|
} else {
|
2023-07-04 15:04:58 +02:00
|
|
|
document.getElementById('forcemodule').style.display = "block";
|
2023-06-13 16:25:45 +02:00
|
|
|
}
|
|
|
|
});
|
|
|
|
}
|
|
|
|
|
2023-04-17 15:44:55 +02:00
|
|
|
</script>
|
|
|
|
</section>
|