| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121 |
- /**
- * Main Javascript file
- *
- * @author Open Mind
- * @date 27/06/2018
- * @time 17:42
- */
- let CUSTOM_NOTIFY = 0x4000;
- var 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:
- *
- * <nav class="navbar navbar-collapse p-0">
- * <span class="navbar-text blink" style="color: red" id="statusbartext"></span>
- * </nav>
- */
- 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 += `<a class="dropdown-item" href="javascript:NotificationDelete('${element.link}', ${element.code})">[${element.timestamp}] ${element.caption}<span class="ml-1 badge badge-danger">${element.count}</span></a>`;
- notificationCount++;
- });
- htmlNotificationArea = `
- ${tplNotify}
- <a id="notification_area_deleteall" class="dropdown-item text-center" href="javascript:NotificationDelete('#', 0)" >Cancella tutto</a>
- `;
- $('#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 != null)
- 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 () {
- $("[autofocus]").focus();
- }, 1000);
- }
- $(function () {
- SetupConfirmationDialog();
- refreshNotificationArea();
- ForceFocus(); // INPUT AUTOFOCUS
- $('body').on('submit', 'form', function () {
- $('form input,form select').prop('disabled', false);
- setTimeout(function () {
- $('form input,form select').prop('disabled', true);
- }, 500);
- });
- setInterval(() => {
- refreshNotificationArea();
- }, 3000);
- });
|