From e7be9989132a4e5ab7bf16dce8e69c8419428df0 Mon Sep 17 00:00:00 2001
From: William Nolin
Date: Fri, 16 Aug 2019 18:33:10 -0400
Subject: [PATCH] =?UTF-8?q?Finalisation=20des=20unit=C3=A9es=20de=20volume?=
=?UTF-8?q?.?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
recipes.mv.db | Bin 24576 -> 28672 bytes
src/main/resources/static/js/main.js | 35 +++---
.../resources/templates/recipe/explore.html | 109 ++++++++++--------
workdir/recipes.mv.db | Bin 32768 -> 36864 bytes
4 files changed, 81 insertions(+), 63 deletions(-)
diff --git a/recipes.mv.db b/recipes.mv.db
index 6895fe6ff88eee09fc03f9130d82967115ae2f7f..98b5a167e630b2773ecaf62f8ded05c7ea80da73 100644
GIT binary patch
delta 1489
zcmb`G&1=(O9LJw*eX|r)oak1Htt*pBT9Z6&k_J0e6g}8=o#4TXq}^B8J_wV
zi0k7`(4*%P|A1aSDLYJ14;~6mka-Y~;*#`9vvnzoddZW+lV6_i_w#u=eX8?`n!hD+
zv{I?78&Y<--YGvq63Z|Qt*$?;ZAeOPYkpxy$S)Kb?`Lt<4fi#RphlV2R)(tX_%
z;n~0bHXfK#1l%sAmLOe~Hzmks8CsVgpr*vrje5N$ahhr#h7nYjfpn`}H4g_N%R`2T
zbQ?9A<$6srN67Ju$uIyQ1~StW1wg6~K>DM-PNU~%qyAX{A|E2}jDGxmgen@(Qq_|}
z7m%&N*LUr$q3!Ltn7=CPX#{|8A^Hl;fsoxpT7k|BkKeB3@k}We3|Kokh}qKRGdigY
zk~%rMf@%`PPYTf$ZelofLbzmL!ngIHxz!>W$$9
z@o;ZhUf4#apmDn?OuKlD=b1*{sx8|5uSkImu3wPsz
z3yLs`>Vj}JQCQhDMU!!_xQz9<5C19#@0lJswpsPCCUjjIPr{ESK^gBPyzC~)nZL>B
zEdvrDU}H^R0pQY(2iEhxULgH`mxdaOyhw-X`+HOMs!$F;eD=I&(i<^
delta 1651
zcmbtUId2m|6rRP-W!abn5I70Jv4cs(CfWM}6bFMK61gzqlrZb@1fnE1%Ei%;25Qhy
zp&<#UW&V0F-nzP=JsqK!O4!8blMp?06eDe7FK;mG9h$?d;Xblksu0sSuL-&c~@!4Zv@Q3V9!NQLR@8Xs0r+NT3w8Tfs
zC^fvrMzqygb7+y#!9*;cSfIIC}D4WZSj-Ae_IR&>Te?~}z=|$|0cSg?QeY<<`
zfv(onYD}U#F+6zu(6OPxqeBN1JsxJG7v4=E?-9uDIBhpn=X|iYZ8QJjL*?+}uEVtA
z1g$thzQ3jwZ&Xw3#%pRCA22$aRx82hjcp@j@|}C`(a|QBK>S6zg}YV*K72wh|`mcXqbpuqPHVa253^iz?7rmT)GpntOiM1vpO=*O%+E}
zq1Wb~5EqIIbErU93Cenv0?h>mWif8Lhcvtv$zUuvlH!q&{z9@9pM}LU+xTRv {
- e.innerText = unitSelect.value;
+ e.innerText = newUnit;
// Modifie la quantitée
const quantityElem = e.parentElement.parentElement.querySelector(quantitiesSelector);
const originalQuantity = parseInt(quantityElem.dataset.quantityml);
- switch (unitSelect.value) {
- case "L":
- quantityElem.innerText = originalQuantity / lTomL;
- break;
- case "gal":
- quantityElem.innerText = originalQuantity / galTomL;
- break;
- default:
- quantityElem.innerText = originalQuantity;
- break;
- }
-
- // Arrondi à deux décimaux
- quantityElem.innerText = Math.round(quantityElem.innerText * 100) / 100;
+ quantityElem.innerText = convertMlToUnit(newUnit, originalQuantity);
});
+}
+
+// Convertit une quantité en millilitres vers une autre unité de volume
+function convertMlToUnit(unit, quantity) {
+ let newQuantity = unit === "L" ? quantity / lTomL : unit === "gal" ? quantity / galTomL : quantity;
+ return round(newQuantity);
+}
+
+// Convertit une quantité d'une autre unité vers des millilitres
+function convertUnitToMl(unit, quantity) {
+ let newQuantity = unit === "L" ? quantity * lTomL : unit === "gal" ? quantity * galTomL : quantity;
+ return round(newQuantity);
+}
+
+function round(x) {
+ return Math.round(x * 100) / 100;
}
\ No newline at end of file
diff --git a/src/main/resources/templates/recipe/explore.html b/src/main/resources/templates/recipe/explore.html
index ef4895d..c10aa02 100644
--- a/src/main/resources/templates/recipe/explore.html
+++ b/src/main/resources/templates/recipe/explore.html
@@ -55,7 +55,8 @@
-
-
- mL
- |
|
+
+ mL
+ |
@@ -237,36 +238,40 @@
});
document.querySelectorAll(".quantityCustomizer").forEach((e) => {
- // Modifie les quantités de tous les produits
e.addEventListener("change", () => {
const value = e.valueAsNumber;
const oldValue = e.defaultValue;
+ const currentUnit = document.querySelector("#unitsSelect").value;
- const mixID = e.dataset.mixid;
+ // Modifie les quantités de tous les produits
+ // Les 3 parentElement récupèrent la table dans laquelle le produit se trouve
+ // TODO simplifier ?
+ e.parentElement.parentElement.parentElement.querySelectorAll(".quantityCustomizer").forEach((elem) => {
+ const defaultValue = elem.defaultValue;
+ const newValue = (defaultValue * value) / oldValue;
- document.querySelectorAll(".quantityCustomizer").forEach((elem) => {
- if (elem.dataset.mixid === mixID) {
- const defaultValue = elem.defaultValue;
- const newValue = (defaultValue * value) / oldValue;
+ elem.value = round(newValue);
- elem.value = Math.round(newValue * 100) / 100;
- }
+ // Recalcule la quantité en millilitres de chaque produit
+ elem.dataset.quantityml = convertUnitToMl(currentUnit, newValue);
});
});
});
- const mixes = document.querySelectorAll(".mixes");
- let maxWidth = 0;
- mixes.forEach((e) => {
- const width = e.style.width;
-
- if (width > maxWidth) {
- maxWidth = width;
- }
- });
- mixes.forEach((e) => {
- e.style.width = maxWidth;
- });
+ // Fait que toutes les tables de mélange soit de la même largeur
+ // TODO Voir si nécessaire, semble être fait par défault
+ // const mixes = document.querySelectorAll(".mixes");
+ // let maxWidth = 0;
+ // mixes.forEach((e) => {
+ // const width = e.style.width;
+ //
+ // if (width > maxWidth) {
+ // maxWidth = width;
+ // }
+ // });
+ // mixes.forEach((e) => {
+ // e.style.width = maxWidth;
+ // });
document.querySelector("#formSubmit").addEventListener("click", () => {
let formData = {};
@@ -296,20 +301,12 @@
formData[mixID] = {};
}
- formData[mixID][materialID] = e.value;
+ formData[mixID][materialID] = e.dataset.quantityml;
});
- document.querySelectorAll(".notEnough").forEach(e => {
- e.classList.remove("notEnough");
- });
+ clearNotEnoughClasses();
- sendPost(formData, "/inventory/use", r => {
- const splitReason = r.split("-");
- const mixID = splitReason[0];
- const materialID = splitReason[1];
-
- document.querySelector(`#recipe-${mixID}`).querySelector(`#material-${materialID}`).classList.add("notEnough");
- });
+ sendPost(formData, "/inventory/use", r => displayNotEnoughReason(r));
});
document.querySelectorAll(".useMixSubmit").forEach(e => {
@@ -324,24 +321,40 @@
formData[mixID] = {};
}
- formData[mixID][materialID] = elem.value;
+ formData[mixID][materialID] = elem.dataset.quantityml;
});
- document.querySelectorAll(".notEnough").forEach(elem => {
- elem.classList.remove("notEnough");
- });
+ clearNotEnoughClasses();
- sendPost(formData, "/inventory/use", r => {
- const splitReason = r.split("-");
- const mixID = splitReason[0];
- const materialID = splitReason[1];
-
- document.querySelector(`#recipe-${mixID}`).querySelector(`#material-${materialID}`).classList.add("notEnough");
- });
+ sendPost(formData, "/inventory/use", r => displayNotEnoughReason(r));
});
});
})();
+ function changeCustomizersUnits(unitSelect) {
+ const unit = unitSelect.value;
+
+ document.querySelectorAll(".quantityCustomizer").forEach(e => {
+ const originalValue = e.dataset.quantityml;
+
+ e.value = convertMlToUnit(unit, originalValue);
+ });
+ }
+
+ function clearNotEnoughClasses() {
+ document.querySelectorAll(".notEnough").forEach(elem => {
+ elem.classList.remove("notEnough");
+ });
+ }
+
+ function displayNotEnoughReason(reason) {
+ const splitReason = reason.split("-");
+ const mixID = splitReason[0];
+ const materialID = splitReason[1];
+
+ document.querySelector(`#recipe-${mixID}`).querySelector(`#material-${materialID}`).classList.add("notEnough");
+ }
+
function sendPost(data, url, errorCallback) {
const successP = document.querySelector(".success");
const errorP = document.querySelector(".error");
diff --git a/workdir/recipes.mv.db b/workdir/recipes.mv.db
index 7346774d0c45e927860f6821c728784e8eae8745..13c74c161cec6bcc98e7031a44fbcf28a77b2293 100644
GIT binary patch
delta 4153
zcmc(iUu+ab9LM+e*q&BuDFWr_U0aAP*j&r*-gIwgOM8{V^$^MxG=*5A?w?sWDRVuN-KuWz=BdAfI41#EkiN*)t@I`%=IJ3KVvs)-_w4s;W&i!tF
zJF_?Q{rtXjAG>ny0mt+di9r4QY}niV5@7OyRU9!Ib!3$Ii{9N!Sx;
z+B}6OHDFt^Ehmiy{c>Z=f4Q-uZ@AQ0f{N}-1_;=LgnlBE9-gTc4emf
zMiXE6GR~w2_`2)(e0mpOcM@Msf6T*k_}Jh<+I%!v7T^yJ^&Eb;dsC(V>GL7J?|uB$
z-T}VvCKiVF@|uDV48>cuO-*60iQg@3q?fJq(n_9%zK&`c{N~UoulE13h(#vl5>r8(R=l2bTpWE{Rp5M2l`zL;IBy+G=
zY(HGgPjcKkr76-8nfq*herhl~)ZHt&Uv)<2?#}%wSN_=-4)J@w$9!flpN`^8M,
z;Mt7Lr|;n3GRNBoUgCIn!5;l(i?d*lwT`-N=|Wp`3qC#^j|)Oy3)jZgJ3{Iqi?6Vc
z5U)SdzfCtIWM6wE-SS%GwKl#vJk><*2KNDGnkQFHUr!zqtf@xmmwZp{N&JFNPx-}t_3%ab#*^ZC-13E9t@Mg5a5N8OC{Y5
zlRY4BMBa8o6(-dZP0<&rsz0(-h4tA$WDyh%UnZ22fZYcr)nu7;MWu#PbwViX0M!PC
zDI2g<2t@!`A2dysMTX)VG-Zh*%S<7%Z?()6(p9|{sS=B@sMwyO6{q4!Ze25IJFCH}{-CG7
zWL1BLd5`{}YREve{rbaKbNwB(prxaKJA95`=Q#Bu-0OJ+6)$Dw6rXv#uAJoGci+`
znL-wEg!?R-#fky)_D1#grs_u2itx|b#w;-Wnw{vfALbU?)l
zR)Kr#gn|g;pNH!BC*mVql+xW8!FNKDobiQ6i+r8VNVifzYAx!vzE%OLbI
zYcpmc(8Z((Ov>zw^yE`LBGFSym05WiW?f_#X~9qt1U_a{BAH{42kjpYv?mC_erQP?
zx_GOtd7BIEtFb!)Q}scM7_>Hpb|Zt?&1M+aYy$MWhBEyB*4St3QIv<64nswGlK+|GXe(ns01
X=oyv~;9FMY^TVVLWE)sS%(;I7l30pz
delta 3708
zcmeH}?N1y<9LM+exPTO-hi#$d4zEq2l`LgupJsL=aB}2&rY$8lu{AWk?C$N_6MD38
zAQ}@+qO`s+shQYUec_90(ies{XN@n6qKUrIMB@uySmV<>ll}p|LigeBWV+ByUP2-f+T!nh8RDZSHmXt!Gl
z&V*gG&f8PEECa=nGoz
z{A9uX7eh|ai+q}m9c<({F5b2;913xfKiqo|^Xu@~&+Q$Ny&TuH)bUOE>%@mm{EmI)
zncnZBe8UZr9vt8s9w&=~hxvw^3}D^u4
z$hv4`r(3o~_PAv{5(~z1d!)a1^KSS4NQ+nW1&`Cx>m)y%3ZD|sk)`1S!nMZaiS#iA
zBt|ClQyf>PM(exk7gn#_i6k?rUIhk^y4^>=A1|*CheNy=BjNNA4_C<1G~nT9~S?K$3L&n27PbMRVi0*MSP^my~Wv=Dzvv9aZUK*ZKM
z&4}##Qh8*$J`_fxSiWBTB2*W8v;S^+{`f*D%;CGFdGUvN)o!i|5a)mem=?xt%fTw`
zb7VkU8ZeoW8kA)Eo(8c+M*?@bu=W*AG~{_Yy@nk2qb?LO9jaLv)0U|+i$OVdB(ebz
zYa@|uV58Q;P?qUpu!yj6mUhY*(sg6QvFP;JbS#ytZ3RW2#glrB3RG1@l0$B1pU)z*
zYEz2u6fp1u
zC62?_sIu>o&r658TW7d9qi4CMXOl|Xgub+q=1O}y`VWUAzg$Y3yq}~W(8k^lRRd`P
zPt!SswhDzWbx%Bu)^m<&Ny1EFX4=kqhUv$~Vq-($asTYwg`Nz;TTLWy0F`YbY0YC8SX?J%T9hr+>c*O6AqdZ`Jp(Ku~^MN@_V;HB>CBGW7U4=Vk9|
zn)fnol^$#obd1B_-j!N_nZMj*flZ;sLFZB0Xl
zQwfdYsXK?%Eu6*Nz*&@>0<9dAjubC#tU1d$6emCLWgaH)F&hr57=bEA9|suG1Jk2;
YvU~7!M9E;H3Ym1Isg|h7-cjr1-?Tmbp8x;=