2024-03-30 16:14:42 +00:00
|
|
|
///
|
|
|
|
/// dom observer
|
|
|
|
/// checks for elements on the DOM now and added later
|
|
|
|
///
|
|
|
|
|
2024-03-31 01:28:46 +00:00
|
|
|
var $$ = (selector) => {
|
|
|
|
|
|
|
|
// add jquery functions that
|
|
|
|
// are used and needed to be used for
|
|
|
|
// $$()
|
|
|
|
const functions = [
|
|
|
|
'on',
|
|
|
|
'click',
|
|
|
|
'submit',
|
|
|
|
'each'
|
|
|
|
];
|
|
|
|
|
|
|
|
let vtable = {};
|
|
|
|
|
|
|
|
for (const name of functions) {
|
|
|
|
vtable[name] = (...params) => {
|
|
|
|
|
|
|
|
const onCreate = (me) => {
|
|
|
|
me[name](...params);
|
|
|
|
};
|
|
|
|
|
|
|
|
const onMutate = (mutations) => {
|
|
|
|
mutations.forEach((mutation) => {
|
|
|
|
if (!mutation.addedNodes.length) {
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
let elements = $(mutation.addedNodes).find(selector);
|
|
|
|
for (let i = 0, len = elements.length; i < len; i++) {
|
|
|
|
let me = $(elements[i]);
|
|
|
|
onCreate(me);
|
|
|
|
}
|
|
|
|
});
|
|
|
|
};
|
|
|
|
|
|
|
|
$(function() {
|
|
|
|
$(selector).each(function (_ , me) {
|
|
|
|
onCreate($(me));
|
|
|
|
});
|
|
|
|
|
|
|
|
let config = { childList: true, subtree: true };
|
|
|
|
let MutationObserver = window.MutationObserver;
|
|
|
|
let observer = new MutationObserver(onMutate);
|
|
|
|
observer.observe(document.body, config);
|
|
|
|
});
|
|
|
|
|
|
|
|
};
|
|
|
|
}
|
2024-03-30 16:14:42 +00:00
|
|
|
|
2024-03-31 01:28:46 +00:00
|
|
|
return vtable;
|
2024-03-30 16:14:42 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
///
|
|
|
|
/// ajax error handle
|
|
|
|
///
|
|
|
|
|
|
|
|
var errorToast = (xhr) => {
|
|
|
|
let data = xhr.responseJSON;
|
|
|
|
let msg = data.message;
|
|
|
|
let detail = data.details;
|
|
|
|
let hint = data.hint;
|
|
|
|
|
|
|
|
let query = '?msg=' + msg;
|
|
|
|
if (detail) {
|
|
|
|
query += '&detail=' + detail;
|
|
|
|
}
|
|
|
|
if (hint) {
|
|
|
|
query += '&hint=' + hint;
|
|
|
|
}
|
|
|
|
let url = '/template/toast' + query;
|
|
|
|
$.get(url, function (data) {
|
|
|
|
$('#toast-container').prepend(data);
|
|
|
|
})
|
|
|
|
}
|
|
|
|
|
2024-03-31 01:28:46 +00:00
|
|
|
$$('.action-close-toast').on('click', function() {
|
|
|
|
$(this).parent().remove();
|
|
|
|
});
|
2024-03-30 16:14:42 +00:00
|
|
|
|
2024-03-31 01:28:46 +00:00
|
|
|
$$('.action-close-toast').each(function() {
|
|
|
|
let me = $(this);
|
2024-03-30 16:14:42 +00:00
|
|
|
setTimeout(function() {
|
2024-03-31 01:28:46 +00:00
|
|
|
me.parent().remove();
|
2024-03-30 16:14:42 +00:00
|
|
|
}, 5000);
|
|
|
|
});
|
|
|
|
|
2024-03-31 01:28:46 +00:00
|
|
|
///
|
|
|
|
/// ajax setup
|
|
|
|
///
|
2024-03-30 16:14:42 +00:00
|
|
|
|
2024-03-31 01:28:46 +00:00
|
|
|
$.ajaxSetup({
|
|
|
|
headers: (() => {
|
|
|
|
let ajaxHeaders = {};
|
|
|
|
ajaxHeaders['Content-Type'] = 'application/json';
|
|
|
|
if (jwtStr) {
|
|
|
|
ajaxHeaders['Authorization'] = 'Bearer ' + jwtStr
|
|
|
|
}
|
|
|
|
return ajaxHeaders;
|
|
|
|
})(),
|
|
|
|
error: errorToast
|
|
|
|
})
|