JD2022-TU1/data/EngineData/SubmitAssistant/view/validation.js

112 lines
No EOL
2.8 KiB
JavaScript

define([
"form_validation_conf",
"ajax_conf",
"constants",
"error_messages",
"text!template/validation.html",
"text!conf/validators.txt",
"jquery",
"underscore",
"backbone",
"jquery.validate",
],
function(form_validation_conf, ajax_conf,
constants, error_messages,
tmpl_validation, validators){
/**
* Manage the validation modal window and the ldap connection for validator.
*/
var ValidationView = Backbone.View.extend({
el: "#validation_content",
model: undefined,
validator_login: [],
$validation_modal: [],
$validation_form: [],
/**
* See Backbone documentation.
*
* @param model - the changelist model
*/
initialize: function(){
this.render();
//form validation: add submit handler dynamically to modify changelist model
this.$validation_form.validate(form_validation_conf.validation_process);
this.$validation_form.validate().settings.submitHandler = $.proxy(this.validationProcessSubmitHandler, this);
},
render: function(){
var validators_tab = validators.split("\n").sort();
for(var i = 0, length = validators_tab.length ; i < length ; i++){
this.validator_login.push($.trim(validators_tab[i]));
}
var template = _.template(tmpl_validation, {
validator_login: this.validator_login,
});
this.$el.html(template);
this.$validation_modal = this.$("#validation_modal");
this.$validation_form = this.$("#validation_form");
},
/**
* Display view like a modal window with bootstrap animation
*/
show: function(){
this.$validation_modal.modal("show");
},
/**
* Hide view with bootstrap animation
*/
hide: function(){
this.$validation_modal.modal("hide");
},
/**
* Submit handler for validation form (login & password).
* Send form to ldap connection script with AJAX request.
*/
validationProcessSubmitHandler: function(){
var data = this.$validation_form.serialize();
$.ajax(ajax_conf.ldapRequest($.proxy(this.onRequestSuccess, this),
$.proxy(this.onRequestError, this), data));
},
/**
* Ajax request onSuccess callback.
* Set the validator in the model.
* Trigger event to notify parent view.
*/
onRequestSuccess: function(){
var validator = this.$validation_form.find("#validator_login").val();
this.model.set("validator", validator);
this.model.trigger(constants.event_success_validation, [validator]);
},
/**
* Ajax request onError callback.
* Display error.
*
* @param jqXHR - the XMLHTTPRequest object.
*/
onRequestError: function(jqXHR){
alert(error_messages.validationError(jqXHR));
},
});
return ValidationView;
})