/** * Main Javascript file * * @author Open Mind * @date 27/06/2018 * @time 17:42 */ let CUSTOM_NOTIFY = 0x4000; let REFRESH_FILTERS = CUSTOM_NOTIFY + 1; const fetchHeaders = { 'Accept': 'text/html', 'Content-Type': 'text/html', 'X-Requested-With': 'XMLHttpRequest', 'Cache-Control': 'no-cache', 'Pragma': 'no-cache', 'Expires': '0' }; /* usefull if a blinking text is need, like in MaxMara project, you need to place this code in html: * * */ function SetStatusBarText(msg) { $('#statusbartext').text(msg); setTimeout(() => { $('#statusbartext').text(''); }, 60000); } function NotificationBuilder(notifications) { let tplNotify = ''; let htmlNotificationArea = ''; if (notifications.length === 0) { $('#notification_area_button').addClass('disabled'); $('#sysmsgnum').empty(); } else { let notificationCount = 0; notifications.forEach(function (element) { // If notification codes are >CUSTON_NOTIFY means that are special codes to skip in this logic if (element.code > CUSTOM_NOTIFY) return; tplNotify += `[${element.timestamp}] ${element.caption}${element.count}`; notificationCount++; }); htmlNotificationArea = ` ${tplNotify} Cancella tutto `; $('#notification_area_button').removeClass('disabled'); $('#sysmsgnum').html(notificationCount); } $('#notification_area').html(htmlNotificationArea); } function refreshNotificationArea() { fetch(`${BASEURL}/api.system.getserverstatus`, {headers: fetchHeaders}) .then(resp => { if (resp.status === 200) return resp.json(); else return Promise.reject("getserverstatus: error"); }) .then(data => { NotificationBuilder(data.notify); }) .catch(err => { console.log(err); }); } function NotificationDelete(link, code) { fetch(`${BASEURL}/api.system.removenotification/${code}`, {method: "POST"}) .then(() => { if ((link.length != 0) && (link != '#')) window.location.href = `${BASEURL}${link}`; }) .catch(() => { alert('NotificationDelete error'); }); } function SetupConfirmationDialog() { $('.requestconfirm').on('click', function (ev) { let confirmText = $(this).data('confirmtext'); if (!confirm(confirmText)) ev.preventDefault(); }); } function ForceFocus() { setInterval(function () { $("[forcefocus]").focus(); }, 1000); } $(function () { SetupConfirmationDialog(); refreshNotificationArea(); ForceFocus(); // INPUT AUTOFOCUS $('body').on('submit', 'form', function () { $('body').focus(); $('form input,form select').prop('readonly', true); // Manual submit for more control this.submit(); return false; }); setInterval(() => { refreshNotificationArea(); }, 3000); });