72 lines
2.3 KiB
JavaScript
72 lines
2.3 KiB
JavaScript
/*
|
|
* Inspector length validator.
|
|
*/
|
|
+function ($) { "use strict";
|
|
|
|
var Base = $.oc.inspector.validators.base,
|
|
BaseProto = Base.prototype
|
|
|
|
var LengthValidator = function(options) {
|
|
Base.call(this, options)
|
|
}
|
|
|
|
LengthValidator.prototype = Object.create(BaseProto)
|
|
LengthValidator.prototype.constructor = Base
|
|
|
|
LengthValidator.prototype.isValid = function(value) {
|
|
if (value === undefined || value === null) {
|
|
return null
|
|
}
|
|
|
|
if (typeof value == 'boolean') {
|
|
this.throwError('The Length Inspector validator cannot work with Boolean values.')
|
|
|
|
}
|
|
|
|
var length = null
|
|
|
|
if(Object.prototype.toString.call(value) === '[object Array]' || typeof value === 'string') {
|
|
length = value.length
|
|
}
|
|
else if (typeof value === 'object') {
|
|
length = this.getObjectLength(value)
|
|
}
|
|
|
|
if (this.options.min !== undefined || this.options.max !== undefined) {
|
|
if (this.options.min !== undefined) {
|
|
if (this.options.min.value === undefined) {
|
|
throw new Error('The min.value parameter is not defined in the Length Inspector validator configuration.')
|
|
}
|
|
|
|
if (length < this.options.min.value) {
|
|
return this.options.min.message !== undefined ?
|
|
this.options.min.message :
|
|
"The value should not be shorter than " + this.options.min.value
|
|
}
|
|
}
|
|
|
|
if (this.options.max !== undefined) {
|
|
if (this.options.max.value === undefined)
|
|
throw new Error('The max.value parameter is not defined in the Length Inspector validator configuration.')
|
|
|
|
if (length > this.options.max.value) {
|
|
return this.options.max.message !== undefined ?
|
|
this.options.max.message :
|
|
"The value should not be longer than " + this.options.max.value
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
LengthValidator.prototype.getObjectLength = function(value) {
|
|
var result = 0
|
|
|
|
for (var key in value) {
|
|
result++
|
|
}
|
|
|
|
return result
|
|
}
|
|
|
|
$.oc.inspector.validators.length = LengthValidator
|
|
}(window.jQuery); |