diff --git a/app/static/js/assiduites.js b/app/static/js/assiduites.js
index aadd04cae9..8b4df342c9 100644
--- a/app/static/js/assiduites.js
+++ b/app/static/js/assiduites.js
@@ -953,6 +953,89 @@ function createAssiduite(etat, etudid) {
);
return !with_errors;
}
+/**
+ * Création d'une assiduité pour un étudiant
+ * @param {String} etat l'état de l'étudiant
+ * @param {Number | String} etudid l'identifiant de l'étudiant
+ *
+ * TODO : Rendre asynchrone
+ */
+function createAssiduiteComplete(assiduite, etudid) {
+ if (!hasModuleImpl(assiduite) && window.forceModule) {
+ const html = `
+
Attention, le module doit obligatoirement être renseigné.
+ Cela vient de la configuration du semestre ou plus largement du département.
+ Si c'est une erreur, veuillez voir avec le ou les responsables de votre scodoc.
+ `;
+
+ const content = document.createElement("div");
+ content.innerHTML = HTML;
+
+ openAlertModal("Sélection du module", content);
+ }
+ if (
+ data.errors["0"].message == "L'étudiant n'est pas inscrit au module"
+ ) {
+ const HTML = `
+ Attention, l'étudiant n'est pas inscrit à ce module.
+ Si c'est une erreur, veuillez voir avec le ou les responsables de votre scodoc.
+ `;
+
+ const content = document.createElement("div");
+ content.innerHTML = HTML;
+
+ openAlertModal("Sélection du module", content);
+ }
+ if (
+ data.errors["0"].message ==
+ "Duplication: la période rentre en conflit avec une plage enregistrée"
+ ) {
+ const HTML = `
+ L'assiduité n'a pas pu être enregistrée car une autre assiduité existe sur la période sélectionnée
+ Si c'est une erreur, veuillez voir avec le ou les responsables de votre scodoc.
+ `;
+
+ const content = document.createElement("div");
+ content.innerHTML = HTML;
+
+ openAlertModal("Période conflictuelle", content);
+ }
+ with_errors = true;
+ }
+ },
+ (data, status) => {
+ //error
+ console.error(data, status);
+ errorAlert();
+ with_errors = true;
+ }
+ );
+ return !with_errors;
+}
/**
* Suppression d'une assiduité
diff --git a/app/templates/assiduites/pages/ajout_assiduites.j2 b/app/templates/assiduites/pages/ajout_assiduites.j2
new file mode 100644
index 0000000000..311b24a55c
--- /dev/null
+++ b/app/templates/assiduites/pages/ajout_assiduites.j2
@@ -0,0 +1,234 @@
+{% include "assiduites/widgets/toast.j2" %}
+{% block pageContent %}
+
+
Ajouter une assiduité
+ {% include "assiduites/widgets/tableau_base.j2" %}
+ {% if saisie_eval %}
+
+
+
+ La saisie de l'assiduité a été préconfigurée en fonction de l'évaluation.
+ Une fois la saisie finie, cliquez sur le lien si dessous pour revenir sur la gestion de l'évaluation
+
+
retourner sur la page de l'évaluation
+
+ {% endif %}
+
+
+
+
+ Date de début
+
+ Journée entière
+
+
+ Date de fin
+
+
+
+
+
+
+ Etat de l'assiduité
+
+ Absent
+ Retard
+ Présent
+
+
+
+
+
+ Module
+ {% with moduleid="ajout_assiduite_module_impl",label=false %}
+ {% include "assiduites/widgets/moduleimpl_dynamic_selector.j2" %}
+ {% endwith %}
+
+
+
+
+
+
+ Créer l'assiduité
+ Remettre à zero
+
+
+
+
+
+
+
+
+ {% include "assiduites/widgets/tableau_assi.j2" %}
+
+
+
+
+
+
+{% endblock pageContent %}
\ No newline at end of file
diff --git a/app/templates/assiduites/pages/ajout_justificatif.j2 b/app/templates/assiduites/pages/ajout_justificatif.j2
index fac1b11ed5..d74737146a 100644
--- a/app/templates/assiduites/pages/ajout_justificatif.j2
+++ b/app/templates/assiduites/pages/ajout_justificatif.j2
@@ -3,10 +3,7 @@
Justifier des absences ou retards
{% include "assiduites/widgets/tableau_base.j2" %}
-
-
- {% include "assiduites/widgets/tableau_justi.j2" %}
-
+
+
+
+ {% include "assiduites/widgets/tableau_justi.j2" %}
+
@@ -224,12 +225,12 @@
if (document.getElementById('justi_journee').checked) {
date_deb.setAttribute("show", "date")
date_fin.setAttribute("show", "date")
- document.getElementById("date_fin").classList.add("hidden");
+ document.querySelector(`legend[for="justi_date_fin"]`).removeAttribute("required")
+
} else {
date_deb.removeAttribute("show")
date_fin.removeAttribute("show")
- document.getElementById("date_fin").classList.remove("hidden");
-
+ document.querySelector(`legend[for="justi_date_fin"]`).setAttribute("required", "")
}
}
@@ -238,8 +239,12 @@
const date_fin = document.querySelector(".page #justi_date_fin")
const journee = document.querySelector('.page #justi_journee').checked
const deb = date_deb.valueAsObject.date + "T" + (journee ? assi_morning : date_deb.valueAsObject.time)
- const fin = (journee ? date_deb.valueAsObject.date : date_fin.valueAsObject.date) + "T" + (journee ? assi_evening : date_fin.valueAsObject.time)
-
+ let fin = "T" + (journee ? assi_evening : date_fin.valueAsObject.time)
+ if (journee) {
+ fin = (date_fin.valueAsObject.date || date_deb.valueAsObject.date) + fin
+ } else {
+ fin = date_fin.valueAsObject.date + fin
+ }
return {
"deb": deb,
"fin": fin,
diff --git a/app/templates/assiduites/pages/calendrier.j2 b/app/templates/assiduites/pages/calendrier.j2
index 0f9ef84bda..1114f628fe 100644
--- a/app/templates/assiduites/pages/calendrier.j2
+++ b/app/templates/assiduites/pages/calendrier.j2
@@ -476,7 +476,7 @@
const matin = [new Date(date), new Date(date)]
color = "sans_etat"
matin[0].setHours(0, 0, 0, 0)
- matin[1].setHours(12, 59, 59)
+ matin[1].setHours(12, 59, 59) // TODO Utiliser heure pivot (config)
@@ -515,7 +515,7 @@
span_aprem.classList.add("color");
const aprem = [new Date(date), new Date(date)]
color = "sans_etat"
- aprem[0].setHours(13, 0, 0, 0)
+ aprem[0].setHours(13, 0, 0, 0) // TODO Utiliser heure pivot (config)
aprem[1].setHours(23, 59, 59)
diff --git a/app/templates/assiduites/widgets/moduleimpl_dynamic_selector.j2 b/app/templates/assiduites/widgets/moduleimpl_dynamic_selector.j2
index 84366dc629..cdb6c5585d 100644
--- a/app/templates/assiduites/widgets/moduleimpl_dynamic_selector.j2
+++ b/app/templates/assiduites/widgets/moduleimpl_dynamic_selector.j2
@@ -1,13 +1,24 @@
-
- Module
+
+ {% if label != false%}
+
+ Module
+
+ {% else %}
+ {% endif %}
+ {% if moduleid %}
+
+ {% include "assiduites/widgets/simplemoduleimpl_select.j2" %}
+
+ {% else %}
{% include "assiduites/widgets/simplemoduleimpl_select.j2" %}
+ {% endif %}
{% include "assiduites/widgets/simplemoduleimpl_select.j2" %}
-
+