first commit

This commit is contained in:
2024-11-05 12:22:50 +01:00
commit e5682a3912
19641 changed files with 2948548 additions and 0 deletions

View File

@@ -0,0 +1,189 @@
/**
* Copyright 2021-2022 InPost S.A.
*
* NOTICE OF LICENSE
*
* Licensed under the EUPL-1.2 or later.
* You may not use this work except in compliance with the Licence.
*
* You may obtain a copy of the Licence at:
* https://joinup.ec.europa.eu/software/page/eupl
* It is also bundled with this package in the file LICENSE.txt
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the Licence is distributed on an AS IS basis,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the Licence for the specific language governing permissions
* and limitations under the Licence.
*
* @author InPost S.A.
* @copyright 2021-2022 InPost S.A.
* @license https://joinup.ec.europa.eu/software/page/eupl
*/
function inPostShippingXhr(config) {
const options = {
type: config.type || 'POST',
url: config.url || window.location.href,
data: config.data || null,
}
const loader = $('.inpost-loader');
loader.addClass('active');
const xhr = new XMLHttpRequest();
xhr.onreadystatechange = function () {
if (xhr.readyState === XMLHttpRequest.HEADERS_RECEIVED) {
const contentType = xhr.getResponseHeader('Content-type');
if (contentType === 'application/json') {
xhr.responseType = 'json';
} else if (contentType === 'text/html') {
xhr.responseType = 'text';
} else {
xhr.responseType = 'blob';
}
} else if (xhr.readyState === XMLHttpRequest.DONE) {
loader.removeClass('active');
if (xhr.status === 200) {
if (xhr.responseType === 'json') {
if (typeof config.callbackJson === 'function') {
config.callbackJson(xhr.response, xhr);
}
} else if (xhr.responseType === 'text') {
if (typeof config.callbackHtml === 'function') {
config.callbackHtml(xhr.response, xhr);
}
} else if (typeof config.callbackBlob === 'function') {
config.callbackBlob(xhr.response, xhr);
}
}
}
}
xhr.open(options.type, options.url, true);
xhr.send(options.data);
}
function blobFileDownload(data, xhr) {
let filename = '';
const disposition = xhr.getResponseHeader('Content-Disposition');
if (disposition && disposition.indexOf('attachment') !== -1) {
const filenameRegex = /filename[^;=\n]*=((['"]).*?\2|[^;\n]*)/;
const matches = filenameRegex.exec(disposition);
if (matches != null && matches[1]) {
filename = matches[1].replace(/['"]/g, '');
}
}
const blob = new Blob([data], {
type: xhr.getResponseHeader('Content-type'),
});
const url = window.URL.createObjectURL(blob);
const a = document.createElement('a');
a.style.display = 'none';
a.href = url;
a.download = filename;
document.body.appendChild(a);
a.click();
window.URL.revokeObjectURL(url);
a.remove();
}
function displayAjaxErrors(errors) {
const ajaxBox = $('#ajaxBox');
errors = errors.join('</li><li>');
ajaxBox
.html(`<div class="alert alert-danger"><button type="button" class="close" data-dismiss="alert">&times;</button><ul><li>${errors}</li></ul></div>`)
.show();
scrollElementIntoView(ajaxBox);
}
function displayAjaxSuccess(message) {
const ajaxBox = $('#ajaxBox');
ajaxBox
.html(`<div class="alert alert-success"><button type="button" class="close" data-dismiss="alert">&times;</button>${message}</div>`)
.show();
scrollElementIntoView(ajaxBox);
}
function scrollElementIntoView(selector) {
selector.get(0).scrollIntoView({
block: 'end',
behavior: 'smooth',
});
}
function openPrintLabelModal(action, showType = true) {
const form = $('#inpost-print-shipment-label-form');
form.attr('action', action);
if (showType) {
form.find('input[name="label_type"]').closest('.form-group').show();
} else {
form.find('input[name="label_type"]').closest('.form-group').hide();
}
$('#inpost-print-shipment-label-modal').modal('show');
}
function submitPrintLabelForm(callbackJson, formData = null) {
const form = $('#inpost-print-shipment-label-form');
if (formData) {
form.find('input:checked').each(function () {
const input = $(this);
formData.append(input.attr('name'), input.val());
});
} else {
formData = new FormData(form.get(0));
}
inPostShippingXhr({
url: form.attr('action'),
data: formData,
callbackBlob: function(data, xhr) {
blobFileDownload(data, xhr);
$('#inpost-print-shipment-label-modal').modal('hide');
},
callbackJson: callbackJson,
});
}
function openDispatchOrderModal(action) {
const form = $('#inpost-dispatch-order-form');
form.attr('action', action);
$('#inpost-create-dispatch-order-modal').modal('show');
}
function submitDispatchOrderForm(formData = null) {
const form = $('#inpost-dispatch-order-form');
if (formData) {
formData.append('id_dispatch_point', $('#id_dispatch_point').val());
} else {
formData = new FormData(form.get(0));
}
formData.append('ajax', '1');
inPostShippingXhr({
url: form.attr('action'),
data: formData,
callbackJson: function (response) {
if ('errors' in response) {
const errors = response.errors.join('</li><li>');
$('#inpost-dispatch-order-form-errors').html(`<article class="alert alert-danger"><ul><li>${errors}</li></ul></article>`);
} else if ('redirect' in response) {
window.location.href = response.redirect;
} else {
window.location.reload();
}
},
});
}