window.MXOBJ = MXOBJ = window.MXOBJ||{};
if (!MXOBJ.attachEvent) MXOBJ.attachEvent = function(e,t,f) {if (e.addEventListener)e.addEventListener(t, f, true); else e.attachEvent('on'+t, f);};
if (!MXOBJ.removeFromParent) MXOBJ.removeFromParent = function(e) {if (e&&e.parentElement) {e.parentElement.removeChild(e)}};
String.prototype.replaceAll = function(s, r) {var t=this;return t.split(s).join(r);};
MXOBJ.errorhandler = {};
MXOBJ.errorhandler.icon = document.createElement('div');
MXOBJ.contextMenu.disable(MXOBJ.errorhandler.icon);
MXOBJ.errorhandler.errors = [];
MXOBJ.errorhandler.errCnt = document.createElement('span');
MXOBJ.errorhandler.errMsg = document.createElement('span');
MXOBJ.errorhandler.errImg = document.createElement('span');
MXOBJ.errorhandler.errCnt.innerText = '0';
MXOBJ.errorhandler.icon.setAttribute('style', 'border:none;z-index:100000;width:315px;background-color:yellow');
MXOBJ.errorhandler.errCnt.setAttribute('style', 'color:red;font-size:12px;cursor:default;float:right;padding:0 3px 0 0;position:absolute;z-index:10000;right:0;top:0');
MXOBJ.errorhandler.errMsg.setAttribute('style', 'color:red;font-size:14px;cursor:default;display:inline-block;padding:3px');
MXOBJ.errorhandler.errImg.setAttribute('style', 'background: url("' + /* MXOBJ.moduleBaseUrl + MXOBJ.IMAGE_ROOT_DIR +*/ 'images/mx/icons/Free_Common_widepixel/exclamation5.png");background-position:right top;background-attachment: scroll;background-repeat:no-repeat;background-size:32px 30px;width:33px;height:30px;position:absolute;right:10px;top:0');
MXOBJ.errorhandler.icon.appendChild(MXOBJ.errorhandler.errCnt);
MXOBJ.errorhandler.icon.appendChild(MXOBJ.errorhandler.errMsg);
MXOBJ.errorhandler.icon.appendChild(MXOBJ.errorhandler.errImg);
MXOBJ.errorhandler.icon.setAttribute('title', 'Left click: hide icon / Right click: show error details');
MXOBJ.attachEvent(MXOBJ.errorhandler.icon, 'click', function(evt) {
evt = evt||window.event;
if (MXOBJ.osdetection.isDesktop) {MXOBJ.errorhandler.showIcon(false);return;}
MXOBJ.errorhandler.onIconClick(evt);
});
MXOBJ.attachEvent(MXOBJ.errorhandler.icon, 'contextmenu', function(evt) {
evt = evt||window.event;
MXOBJ.errorhandler.onIconClick(evt);
});
if (!MXOBJ.osdetection.isDesktop) {
MXOBJ.attachEvent(window, 'scroll', function () {MXOBJ.errorhandler.setIconPos()});
}
MXOBJ.errorhandler.onIconClick = function(evt) {
MXOBJ.errorhandler.showErrorDialog(MXOBJ.errorhandler.errors[MXOBJ.errorhandler.errors.length-1]);
MXOBJ.errorhandler.errors.splice(MXOBJ.errorhandler.errors.length-1, 1);
MXOBJ.errorhandler.errCnt.innerText = MXOBJ.errorhandler.errors.length;
if (MXOBJ.errorhandler.errors.length===0) {MXOBJ.errorhandler.showIcon(false);}
};
MXOBJ.errorhandler.showErrorDialog = function(s) {
MXOBJ.errorhandler.popup = MXOBJ.dialog.popup('error', s, null, null, 0, 0, null, true, null);
MXOBJ.errorhandler.popup.style.top = '10px';
};
MXOBJ.errorhandler.isDialogShowing = function() {
return MXOBJ.errorhandler.popup && MXOBJ.errorhandler.popup.showing;
};
MXOBJ.errorhandler.showIcon = function(show) {
if (!show) {MXOBJ.removeFromParent(MXOBJ.errorhandler.icon);return;}
document.body.appendChild(MXOBJ.errorhandler.icon);
MXOBJ.errorhandler.setIconPos();
};
MXOBJ.errorhandler.setIconPos = function() {
if (MXOBJ.osdetection.isDesktop) {
MXOBJ.errorhandler.icon.style.position = 'fixed';
MXOBJ.errorhandler.icon.style.top = '20px';
MXOBJ.errorhandler.icon.style.right = '20px';
} else {
MXOBJ.errorhandler.icon.style.position = 'absolute';
MXOBJ.errorhandler.icon.style.top = (window.scrollY+10) + 'px';
MXOBJ.errorhandler.icon.style.left = (window.scrollX+10) + 'px';
}
};
MXOBJ.errorhandler.onError = function(s, msg, caller, clazz, errorId) {
MXOBJ.errorhandler.beep();
console.error(s?s.replaceAll('
', '\r\n'):'');
if (location.hostname==='localhost') {console.log('%cSPECIAL REMARK: GWT CACHE CAN CAUSE SOME STRANGE ERROR ESPECIALLY WITH LAMBDAS. DELETE CACHE FILES TO RESOLVE THIS WITH "clean_temp_gwt.bat"', 'background-color:red');}
let cons = MXOBJ.logger&&MXOBJ.logger.logArr ? (MXOBJ.logger.logArr.length>20?MXOBJ.logger.logArr.slice(MXOBJ.logger.logArr.length-20, MXOBJ.logger.logArr.length):MXOBJ.logger.logArr).join('
') : 'no console var';
s = "Details:
" + s + " ";
s += "
Console:
" + cons + " ";
MXOBJ.errorhandler.showIcon(true);
MXOBJ.errorhandler.errors.push(s);
MXOBJ.errorhandler.errCnt.innerText = MXOBJ.errorhandler.errors.length;
let mailBody = '\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nDEV INFO:\n\n'
+ 'href: ' + location.href + '\n'
+ 'INSTANCE_ID: ' + MXOBJ.INSTANCE_ID + '\n'
+ 'WINDOW_ID: ' + MXOBJ.WINDOW_ID + '\n'
+ 'moduleBaseUrl: ' + MXOBJ.moduleBaseUrl + '\n'
+ 'moduleName: ' + /*MXOBJ.gwt.moduleName +*/ '\n'
+ 'userAgent: ' + navigator.userAgent + '\n'
+ 'screen w/h: ' + screen.width+'x'+screen.height + '\n'
+ 'window w/h: ' + window.innerWidth+'x'+window.innerHeight + '\n'
+ 'window screen top/left: ' + window.screenTop+'x'+window.screenLeft + '\n'
+ 'window scroll x/y: ' + window.scrollX+'x'+window.scrollY + '\n'
+ 'jsHeapSizeLimit / totalJSHeapSize / usedJSHeapSize: ' + (console&&console.memory ? (console.memory.jsHeapSizeLimit + ' / ' + console.memory.totalJSHeapSize + ' / ' + console.memory.usedJSHeapSize) : '???') + '\n'
+ 'errors.length: ' + MXOBJ.errorhandler.errors.length + '\n'
+ 'caller: ' + caller + '\n'
+ 'clazz: ' + clazz + '\n'
+ 'ERROR_ID: ' + errorId + '\n'
+ 'date: ' + new Date() + '\n'
;
// body limit on chrome: 2027 chars!
MXOBJ.errorhandler.errMsg.innerHTML = 'Developer team has been notified about
this error.
We are working on the solution.
Contact';
};
MXOBJ.errorhandler.encodeContactMailBody = function(mailBody) {
mailBody = encodeURIComponent(mailBody);
mailBody = mailBody.replaceAll('"', '_').replaceAll("'", '_').replaceAll('<', '_').replaceAll('>', '_');
return mailBody;
};
MXOBJ.errorhandler.toStr = function(err, caller, info, br) {
let tSer = 'Client time: ' + new Date() + br + err;
let s = 'ERROR: ' + caller + br + tSer;
s += br + "INFO: " + info;
return [tSer,s];
};
MXOBJ.errorhandler.beep = function() {
if (!MXOBJ.DEV_OR_LOC) {return;}
let snd = new Audio("data:audio/wav;base64,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qJrx4KOQjahZxWbcZgztj2c49nKmkId44S71j0c8eV9yDK6uPRzx5X18eDvjvQ6yKo9ZSS6l//8elePK/Lf//IInrOF/FvDoADYAGBMGb7FtErm5MXMlmPAJQVgWta7Zx2go+8xJ0UiCb8LHHdftWyLJE0QIAIsI+UbXu67dZMjmgDGCGl1H+vpF4NSDckSIkk7Vd+sxEhBQMRU8j/12UIRhzSaUdQ+rQU5kGeFxm+hb1oh6pWWmv3uvmReDl0UnvtapVaIzo1jZbf/pD6ElLqSX+rUmOQNpJFa/r+sa4e/pBlAABoAAAAA3CUgShLdGIxsY7AUABPRrgCABdDuQ5GC7DqPQCgbbJUAoRSUj+NIEig0YfyWUho1VBBBA//uQZB4ABZx5zfMakeAAAAmwAAAAF5F3P0w9GtAAACfAAAAAwLhMDmAYWMgVEG1U0FIGCBgXBXAtfMH10000EEEEEECUBYln03TTTdNBDZopopYvrTTdNa325mImNg3TTPV9q3pmY0xoO6bv3r00y+IDGid/9aaaZTGMuj9mpu9Mpio1dXrr5HERTZSmqU36A3CumzN/9Robv/Xx4v9ijkSRSNLQhAWumap82WRSBUqXStV/YcS+XVLnSS+WLDroqArFkMEsAS+eWmrUzrO0oEmE40RlMZ5+ODIkAyKAGUwZ3mVKmcamcJnMW26MRPgUw6j+LkhyHGVGYjSUUKNpuJUQoOIAyDvEyG8S5yfK6dhZc0Tx1KI/gviKL6qvvFs1+bWtaz58uUNnryq6kt5RzOCkPWlVqVX2a/EEBUdU1KrXLf40GoiiFXK///qpoiDXrOgqDR38JB0bw7SoL+ZB9o1RCkQjQ2CBYZKd/+VJxZRRZlqSkKiws0WFxUyCwsKiMy7hUVFhIaCrNQsKkTIsLivwKKigsj8XYlwt/WKi2N4d//uQRCSAAjURNIHpMZBGYiaQPSYyAAABLAAAAAAAACWAAAAApUF/Mg+0aohSIRobBAsMlO//Kk4soosy1JSFRYWaLC4qZBYWFRGZdwqKiwkNBVmoWFSJkWFxX4FFRQWR+LsS4W/rFRb/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////VEFHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAU291bmRib3kuZGUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMjAwNGh0dHA6Ly93d3cuc291bmRib3kuZGUAAAAAAAAAACU=");
snd.play();setTimeout(function() {snd.play()}, 500);
};