in google-cloud-server/src/main/resources/buildServerResources/knockout.validation-2.0.3.js [1477:1512]
ko.validatedObservable = function (initialValue, options) {
if (!options && !kv.utils.isObject(initialValue)) {
return ko.observable(initialValue).extend({ validatable: true });
}
var obsv = ko.observable(initialValue);
obsv.errors = kv.group(kv.utils.isObject(initialValue) ? initialValue : {}, options);
obsv.isValid = ko.observable(obsv.errors().length === 0);
if (ko.isObservable(obsv.errors)) {
obsv.errors.subscribe(function(errors) {
obsv.isValid(errors.length === 0);
});
}
else {
ko.computed(obsv.errors).subscribe(function (errors) {
obsv.isValid(errors.length === 0);
});
}
obsv.subscribe(function(newValue) {
if (!kv.utils.isObject(newValue)) {
/*
* The validation group works on objects.
* Since the new value is a primitive (scalar, null or undefined) we need
* to create an empty object to pass along.
*/
newValue = {};
}
// Force the group to refresh
obsv.errors._updateState(newValue);
obsv.isValid(obsv.errors().length === 0);
});
return obsv;
};