UNPKG

nakedobjects.spa

Version:

Single Page Application client for a Naked Objects application.

118 lines 4.14 kB
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