From d582fb96c10f938874beffc0aa287288088f1d5d Mon Sep 17 00:00:00 2001 From: erickson Date: Tue, 9 Dec 2008 00:51:47 +0000 Subject: [PATCH] add magic to fall back to the juvenile flag to determine juvenility (?) if no DOB is present git-svn-id: svn://svn.open-ils.org/ILS/trunk@11459 dcc99617-32d9-48b4-a31d-7c20da2025e4 --- .../xul/staff_client/server/patron/ue_config.js | 69 +++++++++++++--------- 1 file changed, 42 insertions(+), 27 deletions(-) diff --git a/Open-ILS/xul/staff_client/server/patron/ue_config.js b/Open-ILS/xul/staff_client/server/patron/ue_config.js index ac8f7feea5..836aa6fa16 100644 --- a/Open-ILS/xul/staff_client/server/patron/ue_config.js +++ b/Open-ILS/xul/staff_client/server/patron/ue_config.js @@ -355,6 +355,8 @@ function uEditDefineData(patron) { widget : { id : 'ue_juvenile', type : 'checkbox', + onpostchange : function(field) { uEditCheckDOB(uEditFindFieldByKey('dob')); }, + onblur : function(field) { uEditCheckDOB(uEditFindFieldByKey('dob')); } } }, { @@ -1038,44 +1040,57 @@ var __lastdob; function uEditCheckDOB(field) { var dob = uEditNodeVal(field); + var ident_field = uEditFindFieldByKey('ident_value2'); - /* don't bother if the data isn't valid */ - if(!dob || !dob.match(field.widget.regex)) - return; + if(dob) { - if( dob == __lastdob ) return; + /* don't bother if the data isn't valid */ + if(!dob.match(field.widget.regex)) + return; - __lastdob = dob; + if( dob == __lastdob ) return; - var parts = dob.split(/-/); - parts[2] = parts[2].replace(/[T ].*/,''); - dob = buildDate( parts[0], parts[1], parts[2] ); + __lastdob = dob; - var today = new Date(); + var parts = dob.split(/-/); + parts[2] = parts[2].replace(/[T ].*/,''); + dob = buildDate( parts[0], parts[1], parts[2] ); - if(!dob || dob > today) { - addCSSClass(field.widget.node, CSS_INVALID_DATA); - alertId('ue_bad_date'); - return; - } + var today = new Date(); - var base = new Date(); - var age = orgSettings['global.juvenile_age_threshold'].value || DEFAULT_ADULT_AGE; - base.setTime(base.getTime() - Number(interval_to_seconds(age) + '000')); + if(!dob || dob > today) { + addCSSClass(field.widget.node, CSS_INVALID_DATA); + alertId('ue_bad_date'); + return; + } - var f = uEditFindFieldByKey('ident_value2'); - unHideMe(f.widget.node.parentNode.parentNode.parentNode); + var base = new Date(); + var age = orgSettings['global.juvenile_age_threshold'].value || DEFAULT_ADULT_AGE; + base.setTime(base.getTime() - Number(interval_to_seconds(age) + '000')); - if( dob < base ) { /* patron is of age */ - f.required = false; - if(!uEditNodeVal(f)) - hideMe(f.widget.node.parentNode.parentNode.parentNode); - return; - } - uEditFindFieldByKey('juvenile').widget.node.checked = true; + unHideMe(ident_field.widget.node.parentNode.parentNode.parentNode); + if( dob < base ) { /* patron is of age */ + ident_field.required = false; + uEditFindFieldByKey('juvenile').widget.node.checked = false; + if(!uEditNodeVal(ident_field)) + hideMe(ident_field.widget.node.parentNode.parentNode.parentNode); + return; + } + + } else { + // no DOB and we are not flagged as a juvenile + if(uEditFindFieldByKey('juvenile').widget.node.checked == false) { + if(!uEditNodeVal(ident_field)) + hideMe(ident_field.widget.node.parentNode.parentNode.parentNode); + return; + } + } - f.required = true; + unHideMe(ident_field.widget.node.parentNode.parentNode.parentNode); + if(!uEditFindFieldByKey('juvenile').widget.node.checked) + uEditFindFieldByKey('juvenile').widget.node.checked = true; + ident_field.required = true; uEditCheckErrors(); } -- 2.11.0