2021-04-28 20:10:26 +02:00

91 lines
2.2 KiB
JavaScript

/*************************************
* SPDX-FileCopyrightText: 2009-2020 Vtenext S.r.l. <info@vtenext.com>
* SPDX-License-Identifier: AGPL-3.0-only
************************************/
function MessageBoxPopup(){
function center(el){
el.css({position: 'absolute'});
el.width("400px");
el.height("110px");
placeAtCenter(el.get(0));
}
function close(){
jQuery('#error_message_box').css('display', 'none');
}
function show(module){
if(typeof('VteJS_DialogBox') != 'undefined') VteJS_DialogBox.unblock();
jQuery('#error_message_box').css('display', 'block');
center(jQuery('#error_message_box'));
}
jQuery('#error_message_box_close').click(close);
jQuery('#error_message_box_cancel').click(close);
return {
close:close,show:show
};
}
var validateMandatoryFields = {
init: function(){
this.mandatoryFields = [];
},
validator: function (){
var emptyFields = [];
var result;
var mandatoryFields = this.mandatoryFields;
for(var i = 0; i < mandatoryFields.length; i++){
var fieldName = mandatoryFields[i];
if(this.fieldValue(fieldName)==""){
emptyFields.push(fieldName);
}
}
if(emptyFields.length!=0){
result = [false, 'empty_fields_message', emptyFields];
}else{
result = [true];
}
return result;
}
};
var VTFieldValidatorPrototype = {
validate: function(){
var isValid = true;
var validators = this.validators;
for(var i = 0; i < validators.length; i++){
var validator = validators[i];
var result = validator.call(this);
if(result[0]==false){
jQuery('#'+result[1]).css('display', 'block');
isValid = false;
}
}
if(!isValid){
this.messageBoxPopup.show();
}
return isValid;
},
addValidator: function(name, validator){
validator.init.call(this);
this.validators.push(validator.validator);
},
fieldValue: function(fieldName){
return this.form.find('[name='+fieldName+']').val();
}
};
function VTFieldValidator(form){
var _this = this;
_this.form = form;
_this.messageBoxPopup = MessageBoxPopup();
form.submit(function(){
return _this.validate();
});
_this.validators = [];
_this.addValidator('mandatoryFields', validateMandatoryFields);
}
VTFieldValidator.prototype = VTFieldValidatorPrototype;