+div.config-section {
+ font-weight: bold;
+ font-size: 18px;
+ margin-right: -15px;
+ margin-left: -15px;
+}
+
+{% endblock %}
+
+
{% block app_content %}
@@ -33,6 +46,25 @@ affectent notamment les comptages d'absences de tous les bulletins des
{{ wtf.form_field(form.edt_ics_path) }}
+ Extraction des identifiants depuis les calendriers
+
+ Indiquer ici comment récupérer les informations (titre, groupe, module)
+ dans les calendriers publiés par votre logiciel d'emploi du temps.
+
+
+ {{ wtf.form_field(form.edt_ics_title_field) }}
+ {{ wtf.form_field(form.edt_ics_title_regexp) }}
+
+
+ {{ wtf.form_field(form.edt_ics_group_field) }}
+ {{ wtf.form_field(form.edt_ics_group_regexp) }}
+
+
+ {{ wtf.form_field(form.edt_ics_mod_field) }}
+ {{ wtf.form_field(form.edt_ics_mod_regexp) }}
+
+
+
{{ wtf.form_field(form.submit) }}
{{ wtf.form_field(form.cancel) }}
@@ -41,8 +73,4 @@ affectent notamment les comptages d'absences de tous les bulletins des
-
-
-
-
{% endblock %}
diff --git a/app/templates/assiduites/widgets/timeline.j2 b/app/templates/assiduites/widgets/timeline.j2
index 3a450708..9d614195 100644
--- a/app/templates/assiduites/widgets/timeline.j2
+++ b/app/templates/assiduites/widgets/timeline.j2
@@ -131,12 +131,12 @@
document.addEventListener(
"mouseup",
mouseUp,
- {once:true}
+ { once: true }
);
document.addEventListener(
"touchend",
mouseUp,
- {once:true}
+ { once: true }
);
} else if (event.target === periodTimeLine) {
@@ -217,6 +217,14 @@
}
function setPeriodValues(deb, fin) {
+ if (fin < deb) {
+ throw new RangeError(`le paramètre 'deb' doit être inférieur au paramètre 'fin' ([${deb};${fin}])`)
+ }
+
+ if (deb < 0 || fin < 0) {
+ throw new RangeError(`Les paramètres doivent être des entiers positifis ([${deb};${fin}])`)
+ }
+
deb = snapToQuarter(deb);
fin = snapToQuarter(fin);
let leftPercentage = (deb - t_start) / (t_end - t_start) * 100;
@@ -231,13 +239,13 @@
function snapHandlesToQuarters() {
const periodValues = getPeriodValues();
- let lef = Math.min(computePercentage(periodValues[0], t_start), computePercentage(t_end, tick_delay));
+ let lef = Math.min(computePercentage(Math.abs(periodValues[0]), t_start), computePercentage(Math.abs(t_end), tick_delay));
if (lef < 0) {
lef = 0;
}
const left = `${lef}%`;
- let wid = Math.max(computePercentage(periodValues[1], periodValues[0]), computePercentage(tick_delay, 0));
+ let wid = Math.max(computePercentage(Math.abs(periodValues[1]), Math.abs(periodValues[0])), computePercentage(tick_delay, 0));
if (wid > 100) {
wid = 100;
}
@@ -251,10 +259,23 @@
function computePercentage(a, b) {
return ((a - b) / (t_end - t_start)) * 100;
}
+ function fromTime(time, separator = ":") {
+ const [hours, minutes] = time.split(separator).map((el) => Number(el))
+ return hours + minutes / 60
+ }
createTicks();
setPeriodValues(t_start, t_start + period_default);
+ {% if heures %}
+ let [heure_deb, heure_fin] = [{{ heures | safe }}]
+ if (heure_deb != '' && heure_fin != '') {
+ heure_deb = fromTime(heure_deb);
+ heure_fin = fromTime(heure_fin);
+ setPeriodValues(heure_deb, heure_fin)
+ }
+ {% endif %}
+