UNPKG

@progress/telerik-jquery-report-viewer

Version:

Progress® Telerik® Report Viewer for jQuery

161 lines (158 loc) 4.47 kB
import { stringFormat, tryParseFloat, tryParseInt, parseToLocalDate } from './utils.js'; import { stringResources } from './stringResources.js'; import { ParameterTypes } from './enums.js'; var ParameterValidators = function() { var validators = {}; function validateParameter(parameter, value, validatorFunc, compareFunc) { var values = [].concat(value).map(function(value1) { return checkAvailableValues(parameter, validatorFunc(value1), compareFunc); }); if (parameter.multivalue) { if (value == null || value.length == 0) { if (parameter.allowNull) { return value; } throw stringResources.invalidParameter; } return values; } return values[0]; } function isNull(parameter, value) { return parameter.allowNull && -1 != [null, "", void 0].indexOf(value); } function checkAvailableValues(parameter, value, compareFunc) { if (parameter.availableValues) { var found = Array.from(parameter.availableValues).some(function(av) { return compareFunc(value, av.value); }); if (!found) { if (parameter.allowNull && !value) { return value; } throw stringResources.invalidParameter; } } return value; } validators[ParameterTypes.STRING] = { validate: function(parameter, value) { return validateParameter( parameter, value, function(value2) { if (!value2) { if (parameter.allowNull) { return null; } if (parameter.allowBlank) { return ""; } throw stringResources.parameterIsEmpty; } return value2; }, function(s1, s2) { return s1 == s2; } ); } }; validators[ParameterTypes.FLOAT] = { validate: function(parameter, value) { return validateParameter( parameter, value, function(value2) { var num = tryParseFloat(value2); if (isNaN(num)) { if (isNull(parameter, value2)) { return null; } throw stringResources.parameterIsEmpty; } return num; }, function(f1, f2) { return tryParseFloat(f1) == tryParseFloat(f2); } ); } }; validators[ParameterTypes.INTEGER] = { validate: function(parameter, value) { return validateParameter( parameter, value, function(value2) { var num = tryParseInt(value2); if (isNaN(num)) { if (isNull(parameter, value2)) { return null; } throw stringResources.parameterIsEmpty; } return num; }, function(n1, n2) { return tryParseInt(n1) == tryParseFloat(n2); } ); } }; validators[ParameterTypes.DATETIME] = { validate: function(parameter, value) { return validateParameter( parameter, value, function(value2) { if (parameter.allowNull && (value2 === null || value2 === "" || value2 === void 0)) { return null; } if (!isNaN(Date.parse(value2))) { if (parameter.availableValues) { return value2; } return parseToLocalDate(value2); } throw stringResources.invalidDateTimeValue; }, function(d1, d2) { d1 = parseToLocalDate(d1); d2 = parseToLocalDate(d2); return d1.getTime() == d2.getTime(); } ); } }; validators[ParameterTypes.BOOLEAN] = { validate: function(parameter, value) { return validateParameter( parameter, value, function(value2) { if (-1 != ["true", "false"].indexOf(String(value2).toLowerCase())) { return Boolean(value2); } if (isNull(parameter, value2)) { return null; } throw stringResources.parameterIsEmpty; }, function(b1, b2) { return Boolean(b1) == Boolean(b2); } ); } }; return { validate: function(parameter, value) { var v = validators[parameter.type]; if (!v) { throw stringFormat(stringResources.cannotValidateType, parameter); } return v.validate(parameter, value); } }; }(); export { ParameterValidators };