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;
});
});

23
wwwroot/js/pdf_view.js Normal file
View File

@@ -0,0 +1,23 @@
'use strict';
$(document).ready(function () {
$('a.pdf-page-link').click(function (e) {
e.preventDefault();
if ($(this).hasClass('selected')) {
return false;
}
$('a.pdf-page-link').each(function (a) {
$(this).removeClass("selected");
});
$(this).addClass("selected");
$("#current_page").html($(this).data('page'));
$("#page_preview").attr("src", $(this).attr('href'));
$("#content_div").animate({ scrollTop: 0 });
return false;
});
});

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

2
wwwroot/js/vendor/jquery-3.6.0.min.js vendored Normal file

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

4
wwwroot/js/vendor/messages_bg.min.js vendored Normal file
View File

@@ -0,0 +1,4 @@
/*! jQuery Validation Plugin - v1.19.3 - 1/9/2021
* https://jqueryvalidation.org/
* Copyright (c) 2021 Jörn Zaefferer; Licensed MIT */
!function(a){"function"==typeof define&&define.amd?define(["jquery","../jquery.validate.min"],a):"object"==typeof module&&module.exports?module.exports=a(require("jquery")):a(jQuery)}(function(a){return a.extend(a.validator.messages,{required:"Полето е задължително.",remote:"Моля, въведете правилната стойност.",email:"Моля, въведете валиден email.",url:"Моля, въведете валидно URL.",date:"Моля, въведете валидна дата.",dateISO:"Моля, въведете валидна дата (ISO).",number:"Моля, въведете валиден номер.",digits:"Моля, въведете само цифри.",creditcard:"Моля, въведете валиден номер на кредитна карта.",equalTo:"Моля, въведете същата стойност отново.",extension:"Моля, въведете стойност с валидно разширение.",maxlength:a.validator.format("Моля, въведете не повече от {0} символа."),minlength:a.validator.format("Моля, въведете поне {0} символа."),rangelength:a.validator.format("Моля, въведете стойност с дължина между {0} и {1} символа."),range:a.validator.format("Моля, въведете стойност между {0} и {1}."),max:a.validator.format("Моля, въведете стойност по-малка или равна на {0}."),min:a.validator.format("Моля, въведете стойност по-голяма или равна на {0}.")}),a});