VIVO-921: some additional validation work as well as dislaying an indicator when a data property has been ingested in an invalid format.

This commit is contained in:
Tim Worrall 2015-04-06 14:48:05 -04:00
parent ced99d7703
commit a32ee20a40
7 changed files with 199 additions and 43 deletions

View file

@ -87,6 +87,17 @@
<script type="text/javascript">
var datatype = "${datatype!}";
var i18nStrings = {
four_digit_year: '${i18n().four_digit_year}',
year_numeric: '${i18n().year_numeric}',
year_month_day: '${i18n().year_month_day}',
minimum_ymd: '${i18n().minimum_ymd}',
minimum_hour: '${i18n().minimum_hour}',
year_month: '${i18n().year_month}',
decimal_only: '${i18n().decimal_only}',
whole_number: '${i18n().whole_number}'
};
</script>
<#include "defaultFormScripts.ftl">

View file

@ -17,6 +17,7 @@ var defaultDataPropertyUtils = {
this.textArea = $('textarea.useTinyMce');
$.extend(this, datatype);
$.extend(this, i18nStrings);
},
@ -42,49 +43,104 @@ var defaultDataPropertyUtils = {
}
}
else {
defaultDataPropertyUtils.createLiteralValue();
return defaultDataPropertyUtils.createAndValidateLiteralValue();
}
return true;
});
},
createLiteralValue: function() {
createAndValidateLiteralValue: function() {
var theType = datatype.substring(datatype.lastIndexOf("#") + 1);
var temp = "";
switch (theType) {
case 'date':
temp = $('#dateTimeField-year').val() + "-"
+ $('#dateTimeField-month').val() + "-"
+ $('#dateTimeField-day').val();
$('#literal').val(temp);
break;
case 'dateTime':
temp = $('#dateTimeField-year').val() + "-"
+ $('#dateTimeField-month').val() + "-"
+ $('#dateTimeField-day').val() + "T"
+ $('#dateTimeField-hour').val() + ":"
+ $('#dateTimeField-minute').val() + ":"
+ $('#dateTimeField-second').val();
$('#literal').val(temp);
break;
case 'time':
temp = $('#dateTimeField-hour').val() + ":"
+ $('#dateTimeField-minute').val() + ":"
+ $('#dateTimeField-second').val();
$('#literal').val(temp);
break;
case 'gYear':
$('#literal').val($('#dateTimeField-year').val());
break;
case 'gYearMonth':
temp = $('#dateTimeField-year').val() + "-" + $('#dateTimeField-month').val();
$('#literal').val(temp);
break;
case 'gMonth':
temp = "--" + $('#dateTimeField-month').val()
$('input#literal').val(temp);
break;
if ( $('#literal').attr("type") == "hidden" ) {
if ( $('#dateTimeField-year').length ) {
if ( $('#dateTimeField-year').val().length < 4 ) {
alert(defaultDataPropertyUtils.four_digit_year);
return false;
}
var reg = /^\d+$/;
if ( !reg.test($('#dateTimeField-year').val()) ) {
alert(defaultDataPropertyUtils.year_numeric);
return false;
}
}
switch (theType) {
case 'date':
temp = $('#dateTimeField-year').val() + "-"
+ $('#dateTimeField-month').val() + "-"
+ $('#dateTimeField-day').val();
if ( temp.indexOf("-") == 0 || temp.lastIndexOf("-") == (temp.length - 1) || temp.indexOf("--") > 0 ) {
alert(defaultDataPropertyUtils.year_month_day);
return false;
}
$('#literal').val(temp);
break;
case 'dateTime':
temp = $('#dateTimeField-year').val() + "-"
+ $('#dateTimeField-month').val() + "-"
+ $('#dateTimeField-day').val() + "T"
+ ($('#dateTimeField-hour').val().length == 0 ? "00" : $('#dateTimeField-hour').val()) + ":"
+ ($('#dateTimeField-minute').val().length == 0 ? "00" : $('#dateTimeField-minute').val()) + ":"
+ ($('#dateTimeField-second').val().length == 0 ? "00" : $('#dateTimeField-second').val());
if ( temp.indexOf("-") == 0 || temp.indexOf("-T") > 0 || temp.indexOf("--") > 0 ) {
alert(defaultDataPropertyUtils.minimum_ymd);
return false;
}
$('#literal').val(temp);
break;
case 'time':
temp = $('#dateTimeField-hour').val() + ":"
+ ($('#dateTimeField-minute').val().length == 0 ? "00" : $('#dateTimeField-minute').val()) + ":"
+ ($('#dateTimeField-second').val().length == 0 ? "00" : $('#dateTimeField-second').val());
if ( temp.indexOf(":") == 0 ) {
alert(defaultDataPropertyUtils.minimum_hour);
return false;
}
$('#literal').val(temp);
break;
case 'gYear':
$('#literal').val($('#dateTimeField-year').val());
break;
case 'gYearMonth':
temp = $('#dateTimeField-year').val() + "-" + $('#dateTimeField-month').val();
if ( temp.indexOf("-") == 0 || temp.lastIndexOf("-") == (temp.length - 1) ) {
alert(defaultDataPropertyUtils.year_month);
return false;
}
$('#literal').val(temp);
break;
case 'gMonth':
if ( $('#dateTimeField-month').val().length == 2 ) {
temp = "--" + $('#dateTimeField-month').val()
$('input#literal').val(temp);
}
break;
}
}
else if ( $('#literal').attr("type") == "text" ) {
switch (theType) {
case 'float':
if ( $('#literal').val().indexOf(",") > -1 ) {
alert(defaultDataPropertyUtils.decimal_only);
return false;
}
$('#literal').val($('#literal').val().replace(",",""));
break;
case 'integer':
if ( $('#literal').val().indexOf(".") > -1 || $('#literal').val().indexOf(",") > 0 ) {
alert(defaultDataPropertyUtils.whole_number);
return false;
}
break;
case 'int':
if ( $('#literal').val().indexOf(".") > -1 || $('#literal').val().indexOf(",") > 0 ) {
alert(defaultDataPropertyUtils.whole_number);
return false;
}
break;
}
}
return true;
},
parseLiteralValue: function() {