diff --git a/app/static/css/assiduites.css b/app/static/css/assiduites.css index c22e38e8a1..d4f129a789 100644 --- a/app/static/css/assiduites.css +++ b/app/static/css/assiduites.css @@ -183,7 +183,7 @@ } .etud_row.conflit { - background-color: #ff000061; + background-color: #ff0000c2; } .etud_row .assiduites_bar .absent { @@ -261,7 +261,7 @@ /*<== Modal conflit ==>*/ .modal { - display: none; + display: block; position: fixed; z-index: 500; left: 0; @@ -388,7 +388,6 @@ padding: 20px; border: 1px solid #888; width: max-content; - height: 30%; position: relative; border-radius: 10px; display: none; @@ -492,4 +491,10 @@ .rouge { color: crimson; +} + +.legende { + border: 1px dashed #333; + width: 75%; + padding: 20px; } \ No newline at end of file diff --git a/app/static/js/assiduites.js b/app/static/js/assiduites.js index 015c525739..4f736c68dd 100644 --- a/app/static/js/assiduites.js +++ b/app/static/js/assiduites.js @@ -43,6 +43,12 @@ Object.defineProperty(String.prototype, "capitalize", { enumerable: false, }); // <<== Outils ==>> +Object.defineProperty(Array.prototype, "reversed", { + value: function () { + return [...this].map(this.pop, this); + }, + enumerable: false, +}); /** * Ajout des évents sur les boutons d'assiduité @@ -88,7 +94,7 @@ function validateSelectors() { ); }); - if (getModuleImplId() == null && forceModule) { + if (getModuleImplId() == null && window.forceModule) { const HTML = `
Attention, le module doit obligatoirement être renseigné.
Cela vient de la configuration du semestre ou plus largement du département.
@@ -181,6 +187,23 @@ function sync_post(path, data, success, errors) { error: errors, }); } +/** + * Fait une requête POST de façon asynchrone + * @param {String} path adresse distante + * @param {object} data données à envoyer (objet js) + * @param {CallableFunction} success fonction à effectuer en cas de succès + * @param {CallableFunction} errors fonction à effectuer en cas d'échec + */ +function async_post(path, data, success, errors) { + $.ajax({ + async: true, + type: "POST", + url: path, + data: JSON.stringify(data), + success: success, + error: errors, + }); +} // <<== Gestion des actions de masse ==>> const massActionQueue = new Map(); @@ -489,7 +512,12 @@ function verifyDateInSemester() { const periodSemester = getFormSemestreDates(); - return date.isBetween(periodSemester.deb, periodSemester.fin); + return date.isBetween( + periodSemester.deb, + periodSemester.fin, + undefined, + "[]" + ); } /** @@ -603,8 +631,8 @@ function getTimeLineTimes() { * @param {object} conflict * @returns {boolean} Renvoie Vrai si la période de la timeline est égal au conflit */ -function isConflictSameAsTimeLine(conflict) { - const tlTimes = getTimeLineTimes(); +function isConflictSameAsPeriod(conflict, period = undefined) { + const tlTimes = period == undefined ? getTimeLineTimes() : period; const clTimes = { deb: moment.tz(conflict.date_debut, TIMEZONE), fin: moment.tz(conflict.date_fin, TIMEZONE), @@ -702,14 +730,14 @@ function numberTimeToDate(nb) { * @param {boolean} clear vidage de l'objet "assiduites" ou non * @returns {object} l'objets Assiduités {Assiduite id : A
-Etat : B
-Date de début : C
-Date de fin: D
-Module : E
-F
-
+ Si la période indiquée par la timeline provoque un conflit d'assiduité pour un étudiant sa ligne deviendra
+ rouge.
+
+ 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.
+
+ Correspondance des couleurs :
+