JD2022-TU1/data/EngineData/SubmitAssistant/util/form_validation_conf.js

232 lines
No EOL
7 KiB
JavaScript

/**
* Form validation configuration file.
*
* See jQuery validation plugin documentation for more information.
*/
define([
"regex",
"jquery",
"jquery.validate",
],
function(regex){
/****************************************************/
/*********** Custom validation methods *************/
/****************************************************/
//don't ignore hidden select (for "select2 plugin" selects validation)
$.validator.setDefaults({
ignore: "null"
});
//custom validation rules
$.validator.addMethod("tag",
function(value, element) {
return /^[\w,]+$/.test(value);
},
"Only alphanum., '_' and ',' char."
);
$.validator.addMethod("reviewer",
function (value, element) {
return /^[A-Za-z\u00C0-\u017F '-].*$/.test(value);
},
"Only alpha., ''', '-' and ' ' char."
);
//avoid parsing errors with the RegExps used in setDesc
$.validator.addMethod("noChangelogTag",
function(value, element) {
return ! regex.changelog_tag.test(value);
},
"No changelog tag (for parsing)."
);
//avoid parsing errors with the RegExps used in setDesc
$.validator.addMethod("noReviewerTag",
function(value, element) {
return ! regex.reviewer_tag.test(value);
},
"No reviewer tag (for parsing)."
);
//avoid parsing errors with the RegExps used in setDesc
$.validator.addMethod("noValidatorTag",
function(value, element) {
return ! regex.validator_tag.test(value);
},
"No validator tag."
);
$.validator.addMethod("noCarriageReturn",
function(value, element) {
return ! /\n/.test(value);
},
"No carriage return."
);
$.validator.addMethod("noJiraIDMentioned",
function(value, element) {
var textOfDescription = $("#description_field").val();
var pattern = /(JD20\d\d-\d+)/i;
var jiraidPresent = pattern.test(textOfDescription);
if($("#closeJira").is(':checked')){
if(!jiraidPresent) {
return false;
}
}
return true;
}, "Please Enter JIRA ID to be closed."
);
$.validator.addMethod("noDefaultDescription",
function (value, element) {
return value != "<saved by Perforce>";
},
"Please type a description."
);
/****************************************************/
/****************** Form options *******************/
/****************************************************/
var code_description = {
errorElement: 'span',
rules: {
scope_tag: {
required: true,
tag: true,
noChangelogTag: true, //useless because of tag rule
noReviewerTag: true, //useless because of tag rule
noValidatorTag: true, //useless because of tag rule
},
type_tag: {
required: true,
},
reviewer_field: {
noChangelogTag: true,
noReviewerTag: true,
noValidatorTag: true,
reviewer: true,
},
description_field: {
required: {
depends: function(element) {
return ($.trim($("#changelog_field").val()) == "");
}
},
minlength: 5,
noChangelogTag: true,
noReviewerTag: true,
noValidatorTag: true,
noDefaultDescription: true
},
changelog_field: {
required: {
depends: function(element) {
return ($.trim($("#description_field").val()) == "");
}
},
minlength: 5,
noChangelogTag: true,
noReviewerTag: true,
noValidatorTag: true,
noCarriageReturn: true,
},
closeJira: {
noJiraIDMentioned : true,
},
},
messages: {
description_field: {
required: "This field or 'Changelog' is required."
},
changelog_field: {
required: "This field or 'Description' is required."
},
},
highlight: function(element, errorClass) {
$(element).parent().parent().addClass(errorClass)
},
unhighlight: function(element, errorClass, validClass) {
$(element).parent().parent().removeClass(errorClass)
},
errorPlacement: function(error, element) {
element.parent().siblings().eq(0).append(error);
},
onfocusout: false,
onkeyup: false,
onclick: false,
onsubmit: false,
};
var data_description = {
errorElement: 'span',
rules: {
domain_tag: {
required: true
},
description_field: {
required: true,
minlength: 5,
noValidatorTag: true,
noDefaultDescription: true
}
},
highlight: function(element, errorClass) {
$(element).parent().parent().addClass(errorClass)
},
unhighlight: function(element, errorClass, validClass) {
$(element).parent().parent().removeClass(errorClass)
},
errorPlacement: function(error, element) {
element.parent().siblings().eq(0).append(error);
},
onfocusout: false,
onkeyup: false,
onclick: false,
onsubmit: false,
};
var validation_process = {
rules: {
login: {
required: true
},
password: {
required: true
},
},
highlight: function(element, errorClass) {
$(element).parent().parent().addClass(errorClass)
},
unhighlight: function(element, errorClass, validClass) {
$(element).parent().parent().removeClass(errorClass)
},
errorPlacement: function(error, element) {
//do nothing...
},
};
return {
code_description: code_description,
data_description: data_description,
validation_process: validation_process,
}
}
);