nakedobjects.spa
Version:
Single Page Application client for a Naked Objects application.
118 lines • 4.14 kB
JavaScript
import * as Models from './models';
import * as Msg from './user-messages';
import * as moment from 'moment';
import * as Constants from './constants';
function isInteger(value) {
return typeof value === "number" && isFinite(value) && Math.floor(value) === value;
}
function getDate(val) {
var dt1 = moment(val, Constants.fixedDateFormat, true);
return dt1.isValid() ? dt1.toDate() : null;
}
export function validateNumber(model, newValue, filter) {
var format = model.extensions().format();
switch (format) {
case ("int"):
if (!isInteger(newValue)) {
return "Not an integer";
}
}
var range = model.extensions().range();
if (range) {
var min = range.min;
var max = range.max;
if (min && newValue < min) {
return Msg.outOfRange(newValue, min, max, filter);
}
if (max && newValue > max) {
return Msg.outOfRange(newValue, min, max, filter);
}
}
return "";
}
export function validateStringFormat(model, newValue) {
var maxLength = model.extensions().maxLength();
var pattern = model.extensions().pattern();
var len = newValue ? newValue.length : 0;
if (maxLength && len > maxLength) {
return Msg.tooLong;
}
if (pattern) {
var regex = new RegExp(pattern);
return regex.test(newValue) ? "" : Msg.noPatternMatch;
}
return "";
}
export function validateDateTimeFormat(model, newValue) {
return "";
}
export function validateDateFormat(model, newValue, filter) {
var range = model.extensions().range();
var newDate = (newValue instanceof Date) ? newValue : getDate(newValue);
if (range && newDate) {
var min = range.min ? getDate(range.min) : null;
var max = range.max ? getDate(range.max) : null;
if (min && newDate < min) {
return Msg.outOfRange(Models.toDateString(newDate), Models.getUtcDate(range.min), Models.getUtcDate(range.max), filter);
}
if (max && newDate > max) {
return Msg.outOfRange(Models.toDateString(newDate), Models.getUtcDate(range.min), Models.getUtcDate(range.max), filter);
}
}
return "";
}
export function validateTimeFormat(model, newValue) {
return "";
}
export function validateString(model, newValue, filter) {
var format = model.extensions().format();
switch (format) {
case ("string"):
return validateStringFormat(model, newValue);
case ("date-time"):
return validateDateTimeFormat(model, newValue);
case ("date"):
return validateDateFormat(model, newValue, filter);
case ("time"):
return validateTimeFormat(model, newValue);
default:
return "";
}
}
export function validateMandatory(model, viewValue) {
// first check
var isMandatory = !model.extensions().optional();
if (isMandatory && (viewValue === "" || viewValue == null)) {
return Msg.mandatory;
}
return "";
}
export function validateMandatoryAgainstType(model, viewValue, filter) {
// check type
var returnType = model.extensions().returnType();
switch (returnType) {
case ("number"):
var valueAsNumber = parseFloat(viewValue);
if (Number.isFinite(valueAsNumber)) {
return validateNumber(model, valueAsNumber, filter);
}
return Msg.notANumber;
case ("string"):
return validateString(model, viewValue, filter);
case ("boolean"):
return "";
default:
return "";
}
}
export function validateDate(newValue, validInputFormats) {
for (var _i = 0, validInputFormats_1 = validInputFormats; _i < validInputFormats_1.length; _i++) {
var f = validInputFormats_1[_i];
var dt = moment.utc(newValue, f, true);
if (dt.isValid()) {
return dt;
}
}
return null;
}
//# sourceMappingURL=validate.js.map