forked from ScoDoc/ScoDoc
Assiduites : Correction bug timeline
This commit is contained in:
parent
5be9d711a7
commit
d2a17ffdfb
@ -12,13 +12,13 @@
|
|||||||
const t_start = {{ t_start }};
|
const t_start = {{ t_start }};
|
||||||
const t_end = {{ t_end }};
|
const t_end = {{ t_end }};
|
||||||
|
|
||||||
const tick_time = 60 / {{ tick_time }}
|
const tick_time = 60 / {{ tick_time }};
|
||||||
const tick_delay = 1 / tick_time
|
const tick_delay = 1 / tick_time;
|
||||||
|
|
||||||
const period_default = {{ periode_defaut }};
|
const period_default = {{ periode_defaut }};
|
||||||
|
|
||||||
function createTicks() {
|
function createTicks() {
|
||||||
let i = t_start
|
let i = t_start;
|
||||||
|
|
||||||
while (i <= t_end) {
|
while (i <= t_end) {
|
||||||
const hourTick = document.createElement("div");
|
const hourTick = document.createElement("div");
|
||||||
@ -33,7 +33,7 @@
|
|||||||
timelineContainer.appendChild(tickLabel);
|
timelineContainer.appendChild(tickLabel);
|
||||||
|
|
||||||
if (i < t_end) {
|
if (i < t_end) {
|
||||||
let j = Math.floor(i + 1)
|
let j = Math.floor(i + 1);
|
||||||
|
|
||||||
while (i < j) {
|
while (i < j) {
|
||||||
i += tick_delay;
|
i += tick_delay;
|
||||||
@ -46,26 +46,28 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
i = j
|
i = j;
|
||||||
|
} else {
|
||||||
|
i++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function numberToTime(num) {
|
function numberToTime(num) {
|
||||||
const integer = Math.floor(num)
|
const integer = Math.floor(num);
|
||||||
const decimal = (num % 1) * 60
|
const decimal = (num % 1) * 60;
|
||||||
|
|
||||||
let dec = `:${decimal}`
|
let dec = `:${decimal}`;
|
||||||
if (decimal < 10) {
|
if (decimal < 10) {
|
||||||
dec = `:0${decimal}`
|
dec = `:0${decimal}`;
|
||||||
}
|
}
|
||||||
|
|
||||||
let int = `${integer}`
|
let int = `${integer}`;
|
||||||
if (integer < 10) {
|
if (integer < 10) {
|
||||||
int = `0${integer}`
|
int = `0${integer}`;
|
||||||
}
|
}
|
||||||
|
|
||||||
return int + dec
|
return int + dec;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -76,7 +78,7 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
function setupTimeLine(callback) {
|
function setupTimeLine(callback) {
|
||||||
const func_call = callback ? callback : () => { }
|
const func_call = callback ? callback : () => { };
|
||||||
timelineContainer.addEventListener("mousedown", (event) => {
|
timelineContainer.addEventListener("mousedown", (event) => {
|
||||||
const startX = event.clientX;
|
const startX = event.clientX;
|
||||||
|
|
||||||
@ -96,9 +98,9 @@
|
|||||||
"mouseup",
|
"mouseup",
|
||||||
() => {
|
() => {
|
||||||
generateAllEtudRow();
|
generateAllEtudRow();
|
||||||
snapHandlesToQuarters()
|
snapHandlesToQuarters();
|
||||||
document.removeEventListener("mousemove", onMouseMove);
|
document.removeEventListener("mousemove", onMouseMove);
|
||||||
func_call()
|
func_call();
|
||||||
},
|
},
|
||||||
{ once: true }
|
{ once: true }
|
||||||
);
|
);
|
||||||
@ -125,12 +127,12 @@
|
|||||||
document.addEventListener(
|
document.addEventListener(
|
||||||
"mouseup",
|
"mouseup",
|
||||||
() => {
|
() => {
|
||||||
snapHandlesToQuarters()
|
snapHandlesToQuarters();
|
||||||
generateAllEtudRow();
|
generateAllEtudRow();
|
||||||
|
|
||||||
document.removeEventListener("mousemove", onMouseMove);
|
document.removeEventListener("mousemove", onMouseMove);
|
||||||
|
|
||||||
func_call()
|
func_call();
|
||||||
|
|
||||||
},
|
},
|
||||||
{ once: true }
|
{ once: true }
|
||||||
@ -162,40 +164,40 @@
|
|||||||
const startValue = snapToQuarter(startHour);
|
const startValue = snapToQuarter(startHour);
|
||||||
const endValue = snapToQuarter(endHour);
|
const endValue = snapToQuarter(endHour);
|
||||||
|
|
||||||
const computedValues = [Math.max(startValue, t_start), Math.min(t_end, endValue)]
|
const computedValues = [Math.max(startValue, t_start), Math.min(t_end, endValue)];
|
||||||
|
|
||||||
if (computedValues[0] > t_end || computedValues[1] < t_start) {
|
if (computedValues[0] > t_end || computedValues[1] < t_start) {
|
||||||
return [t_start, min(t_end, t_start + period_default)]
|
return [t_start, min(t_end, t_start + period_default)];
|
||||||
}
|
}
|
||||||
|
|
||||||
if (computedValues[1] - computedValues[0] <= tick_delay && computedValues[1] < t_end - tick_delay) {
|
if (computedValues[1] - computedValues[0] <= tick_delay && computedValues[1] < t_end - tick_delay) {
|
||||||
computedValues[1] += tick_delay;
|
computedValues[1] += tick_delay;
|
||||||
}
|
}
|
||||||
|
|
||||||
return computedValues
|
return computedValues;
|
||||||
}
|
}
|
||||||
|
|
||||||
function setPeriodValues(deb, fin) {
|
function setPeriodValues(deb, fin) {
|
||||||
deb = snapToQuarter(deb)
|
deb = snapToQuarter(deb);
|
||||||
fin = snapToQuarter(fin)
|
fin = snapToQuarter(fin);
|
||||||
let leftPercentage = (deb - t_start) / (t_end - t_start) * 100
|
let leftPercentage = (deb - t_start) / (t_end - t_start) * 100;
|
||||||
let widthPercentage = (fin - deb) / (t_end - t_start) * 100
|
let widthPercentage = (fin - deb) / (t_end - t_start) * 100;
|
||||||
periodTimeLine.style.left = `${leftPercentage}%`
|
periodTimeLine.style.left = `${leftPercentage}%`;
|
||||||
periodTimeLine.style.width = `${widthPercentage}%`
|
periodTimeLine.style.width = `${widthPercentage}%`;
|
||||||
|
|
||||||
snapHandlesToQuarters()
|
snapHandlesToQuarters();
|
||||||
generateAllEtudRow();
|
generateAllEtudRow();
|
||||||
}
|
}
|
||||||
|
|
||||||
function snapHandlesToQuarters() {
|
function snapHandlesToQuarters() {
|
||||||
const periodValues = getPeriodValues();
|
const periodValues = getPeriodValues();
|
||||||
let lef = Math.min(computePercentage(periodValues[0], t_start), computePercentage(t_end, tick_delay))
|
let lef = Math.min(computePercentage(periodValues[0], t_start), computePercentage(t_end, tick_delay));
|
||||||
if (lef < 0) {
|
if (lef < 0) {
|
||||||
lef = 0;
|
lef = 0;
|
||||||
}
|
}
|
||||||
const left = `${lef}%`
|
const left = `${lef}%`;
|
||||||
|
|
||||||
let wid = Math.max(computePercentage(periodValues[1], periodValues[0]), computePercentage(tick_delay, 0))
|
let wid = Math.max(computePercentage(periodValues[1], periodValues[0]), computePercentage(tick_delay, 0));
|
||||||
if (wid > 100) {
|
if (wid > 100) {
|
||||||
wid = 100;
|
wid = 100;
|
||||||
}
|
}
|
||||||
@ -205,11 +207,11 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
function computePercentage(a, b) {
|
function computePercentage(a, b) {
|
||||||
return ((a - b) / (t_end - t_start)) * 100
|
return ((a - b) / (t_end - t_start)) * 100;
|
||||||
}
|
}
|
||||||
|
|
||||||
createTicks();
|
createTicks();
|
||||||
setPeriodValues(t_start, t_start + period_default)
|
setPeriodValues(t_start, t_start + period_default);
|
||||||
|
|
||||||
</script>
|
</script>
|
||||||
<style>
|
<style>
|
||||||
|
@ -547,7 +547,6 @@ def signal_assiduites_diff():
|
|||||||
grp + ' <span class="fontred">' + groups_infos.groups_titles + "</span>"
|
grp + ' <span class="fontred">' + groups_infos.groups_titles + "</span>"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
return HTMLBuilder(
|
return HTMLBuilder(
|
||||||
header,
|
header,
|
||||||
render_template(
|
render_template(
|
||||||
@ -604,7 +603,7 @@ def _timeline(formsemestre_id=None) -> HTMLElement:
|
|||||||
"assiduites/timeline.j2",
|
"assiduites/timeline.j2",
|
||||||
t_start=get_time("assi_morning_time", "08:00:00"),
|
t_start=get_time("assi_morning_time", "08:00:00"),
|
||||||
t_end=get_time("assi_afternoon_time", "18:00:00"),
|
t_end=get_time("assi_afternoon_time", "18:00:00"),
|
||||||
tick_time=ScoDocSiteConfig.get("assi_tick_time", 0.25),
|
tick_time=ScoDocSiteConfig.get("assi_tick_time", 15),
|
||||||
periode_defaut=sco_preferences.get_preference(
|
periode_defaut=sco_preferences.get_preference(
|
||||||
"periode_defaut", formsemestre_id
|
"periode_defaut", formsemestre_id
|
||||||
),
|
),
|
||||||
|
@ -217,7 +217,7 @@ def config_assiduites():
|
|||||||
form.afternoon_time.data = ScoDocSiteConfig.get(
|
form.afternoon_time.data = ScoDocSiteConfig.get(
|
||||||
"assi_afternoon_time", datetime.time(18, 0, 0)
|
"assi_afternoon_time", datetime.time(18, 0, 0)
|
||||||
)
|
)
|
||||||
form.tick_time.data = float(ScoDocSiteConfig.get("assi_tick_time", 0.25))
|
form.tick_time.data = float(ScoDocSiteConfig.get("assi_tick_time", 15))
|
||||||
return render_template(
|
return render_template(
|
||||||
"assiduites/config_assiduites.j2",
|
"assiduites/config_assiduites.j2",
|
||||||
form=form,
|
form=form,
|
||||||
|
Loading…
Reference in New Issue
Block a user