Bug 15206 - Make CalculateAge a reusable function

Signed-off-by: Owen Leonard <oleonard@myacpl.org>

Signed-off-by: Jonathan Druart <jonathan.druart@bugs.koha-community.org>

Signed-off-by: Brendan Gallagher brendan@bywatersolutions.com
This commit is contained in:
Alex Arnaud 2016-01-26 10:45:46 +01:00 committed by Brendan Gallagher
parent d49f7741bf
commit c4c87f5982
2 changed files with 148 additions and 153 deletions

View File

@ -217,55 +217,25 @@ function select_user(borrowernumber, borrower) {
return 0;
}
function CalculateAge() {
var hint = $("#dateofbirth").siblings(".hint").first();
hint.html(dateformat);
if (dformat == 'metric' && false === CheckDate(document.form.dateofbirth)) {
return;
}
if (!$("#dateofbirth").datepicker( 'getDate' )) {
return;
}
function CalculateAge(dateofbirth) {
var today = new Date();
var dob = new Date($("#dateofbirth").datepicker( 'getDate' ));
var dob = Date_from_syspref(dateofbirth)
var age = new Object();
var nowyear = today.getFullYear();
var nowmonth = today.getMonth();
var nowday = today.getDate();
var birthyear = dob.getFullYear();
var birthmonth = dob.getMonth();
var birthday = dob.getDate();
var year = nowyear - birthyear;
var month = nowmonth - birthmonth;
var day = nowday - birthday;
age.year = today.getFullYear() - dob.getFullYear();
age.month = today.getMonth() - dob.getMonth();
var day = today.getDate() - dob.getDate();
if(day < 0) {
month = parseInt(month) -1;
age.month = parseInt(age.month) -1;
}
if(month < 0) {
year = parseInt(year) -1;
month = 12 + month;
if(age.month < 0) {
age.year = parseInt(age.year) -1;
age.month = 12 + age.month;
}
var age_string;
if (year || month) {
age_string = _('Age: ');
}
if (year) {
age_string += _(year > 1 ? '%s years ' : '%s year ').format(year);
}
if (month) {
age_string += _(month > 1 ? '%s months ' : '%s month ').format(month);
}
hint.html(age_string);
return age;
}
$(document).ready(function(){

View File

@ -6,131 +6,156 @@
[% INCLUDE 'calendar.inc' %]
<script type="text/javascript">
//<![CDATA[
$(document).ready(function() {
$(document).ready(function() {
[% IF categorycode %]
update_category_code( "[% categorycode %]" );
[% ELSE %]
if ( $("#categorycode_entry").length > 0 ){
var category_code = $("#categorycode_entry").find("option:selected").val();
update_category_code( category_code );
}
[% END %]
$("#dateofbirth").datepicker({ maxDate: "-1D", yearRange: "c-120:" });
dateformat = $("#dateofbirth").siblings(".hint").first().html();
CalculateAge();
$("#entryform").validate({
rules: {
email: {
email: true
},
emailpro: {
email: true
},
B_email: {
email: true
}
},
submitHandler: function(form) {
$("body, form input[type='submit'], form button[type='submit'], form a").addClass('waiting');
if (form.beenSubmitted)
return false;
else
form.beenSubmitted = true;
form.submit();
}
});
[% IF categorycode %]
update_category_code( "[% categorycode %]" );
[% ELSE %]
if ( $("#categorycode_entry").length > 0 ){
var category_code = $("#categorycode_entry").find("option:selected").val();
update_category_code( category_code );
}
[% END %]
$("#dateofbirth").datepicker({ maxDate: "-1D", yearRange: "c-120:" });
dateformat = $("#dateofbirth").siblings(".hint").first().html();
write_age();
$("#entryform").validate({
rules: {
email: {
email: true
},
emailpro: {
email: true
},
B_email: {
email: true
}
},
submitHandler: function(form) {
$("body, form input[type='submit'], form button[type='submit'], form a").addClass('waiting');
if (form.beenSubmitted)
return false;
else
form.beenSubmitted = true;
form.submit();
}
});
var mrform = $("#manual_restriction_form");
var mrlink = $("#add_manual_restriction");
mrform.hide();
mrlink.on("click",function(e){
$(this).hide();
mrform.show();
e.preventDefault();
});
$("#cancel_manual_restriction").on("click",function(e){
$('#debarred_expiration').val('');
$('#add_debarment').val(0);
$('#debarred_comment').val('');
mrlink.show();
mrform.hide();
e.preventDefault();
});
});
var mrform = $("#manual_restriction_form");
var mrlink = $("#add_manual_restriction");
mrform.hide();
mrlink.on("click",function(e){
$(this).hide();
mrform.show();
e.preventDefault();
});
$("#cancel_manual_restriction").on("click",function(e){
$('#debarred_expiration').val('');
$('#add_debarment').val(0);
$('#debarred_comment').val('');
mrlink.show();
mrform.hide();
e.preventDefault();
});
});
function clear_entry(node) {
var original = $(node).parent();
$("textarea", original).attr('value', '');
$("select", original).attr('value', '');
}
function clear_entry(node) {
var original = $(node).parent();
$("textarea", original).attr('value', '');
$("select", original).attr('value', '');
}
function clone_entry(node) {
var original = $(node).parent();
var clone = original.clone();
function clone_entry(node) {
var original = $(node).parent();
var clone = original.clone();
var newId = 50 + parseInt(Math.random() * 100000);
$("input,select,textarea", clone).attr('id', function() {
return this.id.replace(/patron_attr_\d+/, 'patron_attr_' + newId);
});
$("input,select,textarea", clone).attr('name', function() {
return this.name.replace(/patron_attr_\d+/, 'patron_attr_' + newId);
});
$("label", clone).attr('for', function() {
return $(this).attr("for").replace(/patron_attr_\d+/, 'patron_attr_' + newId);
});
$("input#patron_attr_" + newId, clone).attr('value','');
$("select#patron_attr_" + newId, clone).attr('value','');
$(original).after(clone);
return false;
}
var newId = 50 + parseInt(Math.random() * 100000);
$("input,select,textarea", clone).attr('id', function() {
return this.id.replace(/patron_attr_\d+/, 'patron_attr_' + newId);
});
$("input,select,textarea", clone).attr('name', function() {
return this.name.replace(/patron_attr_\d+/, 'patron_attr_' + newId);
});
$("label", clone).attr('for', function() {
return $(this).attr("for").replace(/patron_attr_\d+/, 'patron_attr_' + newId);
});
$("input#patron_attr_" + newId, clone).attr('value','');
$("select#patron_attr_" + newId, clone).attr('value','');
$(original).after(clone);
return false;
}
function update_category_code(category_code) {
if ( $(category_code).is("select") ) {
category_code = $("#categorycode_entry").find("option:selected").val();
}
var mytables = $(".attributes_table");
$(mytables).find("li").hide();
$(mytables).find(" li[data-category_code='"+category_code+"']").show();
$(mytables).find(" li[data-category_code='']").show();
}
function update_category_code(category_code) {
if ( $(category_code).is("select") ) {
category_code = $("#categorycode_entry").find("option:selected").val();
}
var mytables = $(".attributes_table");
$(mytables).find("li").hide();
$(mytables).find(" li[data-category_code='"+category_code+"']").show();
$(mytables).find(" li[data-category_code='']").show();
}
function select_user(borrowernumber, borrower) {
var form = $('#entryform').get(0);
if (form.guarantorid.value) {
$("#contact-details").find('a').remove();
$("#contactname, #contactfirstname").parent().find('span').remove();
function select_user(borrowernumber, borrower) {
var form = $('#entryform').get(0);
if (form.guarantorid.value) {
$("#contact-details").find('a').remove();
$("#contactname, #contactfirstname").parent().find('span').remove();
}
var id = borrower.borrowernumber;
form.guarantorid.value = id;
$('#contact-details')
.show()
.find('span')
.after('<a target="blank" href="/cgi-bin/koha/members/moremember.pl?borrowernumber=' + id + '">' + id + '</a>');
$(form.contactname)
.val(borrower.surname)
.before('<span>' + borrower.surname + '</span>').get(0).type = 'hidden';
$(form.contactfirstname)
.val(borrower.firstname)
.before('<span>' + borrower.firstname + '</span>').get(0).type = 'hidden';
form.streetnumber.value = borrower.streetnumber;
form.address.value = borrower.address;
form.address2.value = borrower.address2;
form.city.value = borrower.city;
form.state.value = borrower.state;
form.zipcode.value = borrower.zipcode;
form.country.value = borrower.country;
form.branchcode.value = borrower.branchcode;
form.guarantorsearch.value = _("Change");
return 0;
}
function write_age() {
var hint = $("#dateofbirth").siblings(".hint").first();
hint.html(dateformat);
var age = CalculateAge(document.form.dateofbirth.value);
if (!age.year && !age.month) {
return;
}
var id = borrower.borrowernumber;
form.guarantorid.value = id;
$('#contact-details')
.show()
.find('span')
.after('<a target="blank" href="/cgi-bin/koha/members/moremember.pl?borrowernumber=' + id + '">' + id + '</a>');
var age_string;
if (age.year || age.month) {
age_string = _('Age: ');
}
$(form.contactname)
.val(borrower.surname)
.before('<span>' + borrower.surname + '</span>').get(0).type = 'hidden';
$(form.contactfirstname)
.val(borrower.firstname)
.before('<span>' + borrower.firstname + '</span>').get(0).type = 'hidden';
if (age.year) {
age_string += _(age.year > 1 ? '%s years ' : '%s year ').format(age.year);
}
form.streetnumber.value = borrower.streetnumber;
form.address.value = borrower.address;
form.address2.value = borrower.address2;
form.city.value = borrower.city;
form.state.value = borrower.state;
form.zipcode.value = borrower.zipcode;
form.country.value = borrower.country;
form.branchcode.value = borrower.branchcode;
if (age.month) {
age_string += _(age.month > 1 ? '%s months ' : '%s month ').format(age.month);
}
form.guarantorsearch.value = _("Change");
return 0;
hint.html(age_string);
}
>>>>>>> Bug 15206 - Show patron's age under date of birth in memberentry.pl
var MSG_SEPARATOR = _("Separator must be / in field %s");
var MSG_INCORRECT_DAY = _("Invalid day entered in field %s");
var MSG_INCORRECT_MONTH = _("Invalid month entered in field %s");
@ -329,7 +354,7 @@
[% END %]
Date of birth: </label>
<input type="text" id="dateofbirth" name="dateofbirth" size="20" onchange="CalculateAge();" value="[% UNLESS opduplicate %][% dateofbirth %][% END %]" />
<input type="text" id="dateofbirth" name="dateofbirth" size="20" onchange="write_age();" value="[% UNLESS opduplicate %][% dateofbirth %][% END %]" />
[% IF ( mandatorydateofbirth ) %]<span class="required">Required</span>[% END %]
[% IF ( ERROR_dateofbirth ) %]<span class="required">(Error)</span>[% END %]