initial commit

This commit is contained in:
2026-08-04 14:41:21 +03:00
parent 3cb8fcde60
commit 1a1d6186d8
101 changed files with 23239 additions and 0 deletions

174
wwwroot/js/common.js Normal file
View File

@@ -0,0 +1,174 @@
'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;
});
});