175 lines
4.5 KiB
JavaScript
175 lines
4.5 KiB
JavaScript
'use strict';
|
|
|
|
$.defaultHandlers = {
|
|
|
|
disableSubmitButton: function( form , disable) {
|
|
form.find(":submit").attr("disabled", disable);
|
|
},
|
|
|
|
startWait: function( ) {
|
|
$('#pleaseWaitDialog').modal('show');
|
|
},
|
|
|
|
endWait: function( ) {
|
|
$('#pleaseWaitDialog').modal('hide');
|
|
},
|
|
|
|
showErrorMessage: function( form , message ) {
|
|
var div = form.find(".form-error-message");
|
|
if (div.length) {
|
|
div.show();
|
|
div.html(message);
|
|
} else {
|
|
alert(message);
|
|
}
|
|
},
|
|
|
|
hideErrorMessage: function( form ) {
|
|
var div = form.find(".form-error-message");
|
|
if (div.length)
|
|
div.hide();
|
|
},
|
|
|
|
validateResponse: function( response ) {
|
|
if (!response)
|
|
return { Success: false, ErrorMessage: "Системна грешка." };
|
|
return {
|
|
Success: response.Success ?? false,
|
|
Result: response.Result ,
|
|
ErrorMessage: response.ErrorMessage ?? "Системна грешка."
|
|
};
|
|
},
|
|
|
|
postProcessSuccess: function( caller , response ) {
|
|
|
|
// if data-navigate="" is set, go there
|
|
var navigate_url = caller.data("navigate");
|
|
if (navigate_url) {
|
|
window.location = navigate_url.replace(':response', response);
|
|
return;
|
|
}
|
|
|
|
// fallback: refresh the page
|
|
window.location.reload();
|
|
} ,
|
|
|
|
processResponse: function( form , response ) {
|
|
var result = $.defaultHandlers.validateResponse( response );
|
|
if (!result.Success) {
|
|
$.defaultHandlers.showErrorMessage(form, result.ErrorMessage);
|
|
return;
|
|
}
|
|
$.defaultHandlers.postProcessSuccess(form, result.Result);
|
|
},
|
|
|
|
submitHandler: function( element , event ) {
|
|
event.preventDefault();
|
|
|
|
var form = $(element);
|
|
$.defaultHandlers.hideErrorMessage(form);
|
|
$.defaultHandlers.disableSubmitButton(form, true);
|
|
$.defaultHandlers.startWait();
|
|
$.ajax({
|
|
url: form.data("service"),
|
|
type: 'POST',
|
|
data: new FormData(element),
|
|
async: true,
|
|
cache: false,
|
|
contentType: false,
|
|
enctype: 'multipart/form-data',
|
|
processData: false,
|
|
success: function( response ) {
|
|
$.defaultHandlers.disableSubmitButton(form, false);
|
|
$.defaultHandlers.processResponse(form, response);
|
|
$.defaultHandlers.endWait();
|
|
},
|
|
error: function( xhr , status , error ) {
|
|
$.defaultHandlers.disableSubmitButton(form, false);
|
|
$.defaultHandlers.showErrorMessage(form, "XHR:" + xhr.responseText + "\n<br>Status: " + status + "\n<br>Error: " + error);
|
|
$.defaultHandlers.endWait();
|
|
}
|
|
});
|
|
return false;
|
|
} ,
|
|
|
|
processRestLinkResponse: function( sender , response ) {
|
|
var result = $.defaultHandlers.validateResponse( response );
|
|
if (!result.Success) {
|
|
alert( result.ErrorMessage );
|
|
return;
|
|
}
|
|
$.defaultHandlers.postProcessSuccess(sender, result.Result);
|
|
} ,
|
|
|
|
restLinkHandler: function( event ) {
|
|
event.preventDefault();
|
|
|
|
var sender = $(event.target);
|
|
sender.attr("disabled", true);
|
|
$.defaultHandlers.startWait();
|
|
$.ajax({
|
|
url: sender.data("service"),
|
|
type: 'GET',
|
|
async: true,
|
|
cache: false,
|
|
processData: false,
|
|
success: function( response ) {
|
|
sender.attr("disabled", false);
|
|
$.defaultHandlers.processRestLinkResponse(sender, response);
|
|
$.defaultHandlers.endWait();
|
|
},
|
|
error: function( xhr , status , error ) {
|
|
sender.attr("disabled", false);
|
|
alert("XHR:" + xhr.responseText + "\n<br>Status: " + status + "\n<br>Error: " + error);
|
|
$.defaultHandlers.endWait();
|
|
}
|
|
});
|
|
return false;
|
|
}
|
|
};
|
|
|
|
$(document).ready(function( ) {
|
|
|
|
//$("#pleaseWaitDialog").modal({ backdrop: 'static', keyboard: false });
|
|
//$("#pleaseWaitDialog").modal({ show:true, backdrop: 'static', keyboard: false });
|
|
// $("#pleaseWaitDialog").modal("show");
|
|
|
|
$('#pleaseWaitDialog').modal({ show: true, backdrop: 'static', keyboard: false });
|
|
// setTimeout(function () { $('#pleaseWaitDialog').modal('show'); }, 1000);
|
|
// setTimeout(function () { $('#pleaseWaitDialog').modal('hide'); }, 3000);
|
|
|
|
$('form.js_default').each(function( ) {
|
|
$(this).validate({});
|
|
});
|
|
|
|
$('form.js_service').each(function () {
|
|
$(this).validate({ submitHandler: $.defaultHandlers.submitHandler });
|
|
});
|
|
|
|
$('a.js_service').click(
|
|
$.defaultHandlers.restLinkHandler
|
|
);
|
|
|
|
$('button.js_service').click(
|
|
$.defaultHandlers.restLinkHandler
|
|
);
|
|
|
|
$('a.toggle_dialog').click(function( e ) {
|
|
$("#" + $(this).data('hide')).modal("hide");
|
|
var dialog = $("#" + $(this).data('show'));
|
|
dialog.modal("show");
|
|
dialog.find('[autofocus]').focus();
|
|
e.preventDefault();
|
|
return false;
|
|
});
|
|
|
|
$('a.js_dialog').click(function( e ) {
|
|
var dialog = $('#' + $(this).data('target'));
|
|
dialog.modal("toggle");
|
|
dialog.find('[autofocus]').focus();
|
|
e.preventDefault();
|
|
return false;
|
|
});
|
|
|
|
});
|