120 lines
3.1 KiB
JavaScript
120 lines
3.1 KiB
JavaScript
/*
|
|
* ============================== - Async Help
|
|
* _ _ _
|
|
* /\ | | | | | |
|
|
* / \ ___ _ _ _ __ ___ | |__| | ___| |_ __
|
|
* / /\ \ / __| | | | '_ \ / __| | __ |/ _ \ | '_ \
|
|
* / ____ \\__ \ |_| | | | | (__ | | | | __/ | |_) |
|
|
* /_/ \_\___/\__, |_| |_|\___| |_| |_|\___|_| .__/
|
|
* __/ | | |
|
|
* |___/ |_|
|
|
*
|
|
*/
|
|
|
|
function asyncRedirect(target, method) {
|
|
$('#progress').removeClass('hidden');
|
|
let request = fetch(target, {
|
|
method: method,
|
|
headers: {
|
|
'Content-Type': 'application/x-www-form-urlencoded',
|
|
'X-Requested-With': 'fetch'
|
|
}
|
|
}).then(function (response) {
|
|
return response.text();
|
|
}).then(function (data) {
|
|
$('body #content').html(data).trigger('reloaded');
|
|
history.replaceState({}, '', target);
|
|
}).catch(function (error) {
|
|
|
|
}).finally(function () {
|
|
$('#progress').addClass('hidden');
|
|
});
|
|
}
|
|
|
|
/*
|
|
* Fill a given element with content on a
|
|
* remote location
|
|
*
|
|
*/
|
|
function asyncFill(target, method, location, callback = function () { }, params = {}, payload = {}) {
|
|
fetch(target, {
|
|
method: method,
|
|
headers: {
|
|
'Content-Type': 'application/x-www-form-urlencoded',
|
|
'X-Requested-With': 'fetch'
|
|
}
|
|
}).then(function (response) {
|
|
return response.text();
|
|
}).then(function (data) {
|
|
$(location).html(data).trigger('filled');
|
|
}).catch(function (error) {
|
|
}).finally(function () {
|
|
callback(params);
|
|
});
|
|
}
|
|
|
|
/**
|
|
* Search any type of content on a remote location
|
|
*
|
|
**/
|
|
async function asyncContent(target, method, type, callback = function () { }) {
|
|
return fetch(target, {
|
|
method: method,
|
|
headers: {
|
|
'Content-Type': 'application/x-www-form-urlencoded',
|
|
'X-Requested-With': 'fetch'
|
|
}
|
|
}).then(function (response) {
|
|
var content = "";
|
|
|
|
if (type == 'text') {
|
|
content = response.text();
|
|
} else {
|
|
content = response.json();
|
|
}
|
|
|
|
return {
|
|
"status": response.ok,
|
|
"content": content
|
|
};
|
|
|
|
}).then(function (data) {
|
|
callback(data.content);
|
|
return data;
|
|
}).finally(function (content) {
|
|
|
|
});
|
|
|
|
}
|
|
|
|
|
|
/*
|
|
* ============================== Modal
|
|
* _ __ _ _
|
|
* | \/ | | | | |
|
|
* | \ / | ___ __| | __ _| |
|
|
* | |\/| |/ _ \ / _` |/ _` | |
|
|
* | | | | (_) | (_| | (_| | |
|
|
* |_| |_|\___/ \__,_|\__,_|_|
|
|
*
|
|
*/
|
|
|
|
var scan;
|
|
|
|
var modalTarget = {}; // Store field where the modal will place the selected stuff
|
|
let modal = new bootstrap.Modal($('#modal'), { keyboard: true });
|
|
var modalClose;
|
|
|
|
$('#modal').on('hidden.bs.modal', function (evt) {
|
|
$(this).find('.modal-body').html('');
|
|
$(this).find('.modal-title').html('');
|
|
if (typeof modalClose === "function") {
|
|
modalClose();
|
|
}
|
|
});
|
|
|
|
async function openModal(params) {
|
|
modalTarget = params.target;
|
|
modalClose = params.close;
|
|
modal.toggle();
|
|
} |