Growth chart: accept explicit 0 in any age field
Previously any form of zero total ("0 days", all blank) rejected
with "Enter age". Newborns at birth are a legitimate entry —
distinguish blank-all (error) from explicit-zero (valid).
This commit is contained in:
parent
df592d401b
commit
7cc8a1fa99
1 changed files with 19 additions and 9 deletions
|
|
@ -1151,11 +1151,21 @@
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
var yr = parseFloat((document.getElementById('growth-age-yr') || {}).value) || 0;
|
var yrEl = document.getElementById('growth-age-yr');
|
||||||
var mo = parseFloat((document.getElementById('growth-age-mo') || {}).value) || 0;
|
var moEl = document.getElementById('growth-age-mo');
|
||||||
var dy = parseFloat((document.getElementById('growth-age-d') || {}).value) || 0;
|
var dyEl = document.getElementById('growth-age-d');
|
||||||
|
var yrRaw = yrEl ? yrEl.value.trim() : '';
|
||||||
|
var moRaw = moEl ? moEl.value.trim() : '';
|
||||||
|
var dyRaw = dyEl ? dyEl.value.trim() : '';
|
||||||
|
// Treat blank fields as 0, but require at least ONE field to have any value.
|
||||||
|
// "0 days" (newborn at birth) is valid — explicit zero counts.
|
||||||
|
if (yrRaw === '' && moRaw === '' && dyRaw === '') {
|
||||||
|
showToast('Enter age (years, months, or days)', 'error'); return;
|
||||||
|
}
|
||||||
|
var yr = parseFloat(yrRaw) || 0;
|
||||||
|
var mo = parseFloat(moRaw) || 0;
|
||||||
|
var dy = parseFloat(dyRaw) || 0;
|
||||||
var age = yr * 12 + mo + dy / 30.4375; // age in months, fractional OK
|
var age = yr * 12 + mo + dy / 30.4375; // age in months, fractional OK
|
||||||
if (!age && yr === 0 && mo === 0 && dy === 0) { showToast('Enter age (years, months, or days)', 'error'); return; }
|
|
||||||
if (age < 0) { showToast('Age cannot be negative', 'error'); return; }
|
if (age < 0) { showToast('Age cannot be negative', 'error'); return; }
|
||||||
|
|
||||||
if (currentGrowthType === 'wfa') {
|
if (currentGrowthType === 'wfa') {
|
||||||
|
|
@ -1266,11 +1276,11 @@
|
||||||
var ageHint = document.getElementById('growth-age-parsed');
|
var ageHint = document.getElementById('growth-age-parsed');
|
||||||
function updateAgeHint() {
|
function updateAgeHint() {
|
||||||
if (!ageHint) return;
|
if (!ageHint) return;
|
||||||
var yr = parseFloat((document.getElementById('growth-age-yr') || {}).value) || 0;
|
var yrRaw = ((document.getElementById('growth-age-yr') || {}).value || '').trim();
|
||||||
var mo = parseFloat((document.getElementById('growth-age-mo') || {}).value) || 0;
|
var moRaw = ((document.getElementById('growth-age-mo') || {}).value || '').trim();
|
||||||
var dy = parseFloat((document.getElementById('growth-age-d') || {}).value) || 0;
|
var dyRaw = ((document.getElementById('growth-age-d') || {}).value || '').trim();
|
||||||
if (!yr && !mo && !dy) { ageHint.textContent = ''; return; }
|
if (yrRaw === '' && moRaw === '' && dyRaw === '') { ageHint.textContent = ''; return; }
|
||||||
var total = yr * 12 + mo + dy / 30.4375;
|
var total = (parseFloat(yrRaw) || 0) * 12 + (parseFloat(moRaw) || 0) + (parseFloat(dyRaw) || 0) / 30.4375;
|
||||||
ageHint.style.color = 'var(--g500)';
|
ageHint.style.color = 'var(--g500)';
|
||||||
ageHint.textContent = formatParsedAge(total);
|
ageHint.textContent = formatParsedAge(total);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue