// //*********************************************************************** // * // This file is part of the "fubagToobox" System * // Author: Marko Seidel * // Copyright (C) 2021, archium GmbH * // * //*********************************************************************** // /** = Creative Commons Lizenzvertrag = Diese Software ist von der archium GmbH, Gera ist lizenziert unter einer Creative Commons Namensnennung - Nicht kommerziell - Keine Bearbeitungen 4.0 International Lizenz. (http://creativecommons.org/licenses/by-nc-nd/4.0/deed.de) Individuelle über diese Lizenz hinausgehende Berechtigungen können Sie unter https://archium.org erhalten. = Creative Commons License = Software by archium GmbH, Gera is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International License. (http://creativecommons.org/licenses/by-nc-nd/4.0/) Individual permissions beyond the scope of this license may be available at https://archium.org. **/ // var local_ip = '0.0.0.0'; var local_port = '0'; var timeHandlerPassive = false; var app = { sid: '', trans: { yes: 'Yes', no: 'No', ok: 'OK', cancel: 'Cancel', items: 'Item(s)', today: 'Heute', close: 'Schließen', weeks: ['So', 'Mo', 'Di', 'Mi', 'Do', 'Fr', 'Sa'], months: ['Jan', 'Feb', 'Mär', 'Apr', 'Mai', 'Jun', 'Jul', 'Aug', 'Sep', 'Okt', 'Nov', 'Dez'] }, lang: 'de', theme: 'default', user: null, user_id: null, user_group: null, user_bmson: null, schema: null, range: null, module: [], timestart: 0, timeend: 0, active_module: 'archium', characters:'ACBDFEGIHJLKMONPRQSUTVXWZY9876543210acbdfegihjlkmonprqsutvxwzy', easyui: function (id) { return $.parser.parse(id); }, // declare all characters generateId(length) { let result = ''; const charlength = app.characters.length; for ( let i = 0; i < length; i++ ) { result += app.characters.charAt(Math.floor(Math.random() * charlength)); } return result; }, createID: function () { var maxlen = 59 var actlen = 0; var id = ''; for (var i =0; i= maxlen){ id = id.substr(0, maxlen); } } return 'sess_'+id; }, getID: function (_new) { if (((app.sid).length == 0) || (_new)) { app.sid = app.createID(); console.log('app.getId():', _new, app.sid); } return app.sid; }, // locale IP ermitteln (2021.07.14) getLocalip: function(){ // getlocalIp(); var params = {}; params.app = (app!=null)?((typeof app.sid === 'string')?app.sid:''):'null'; params.caller = 'app.getlocalIp()'; params.fn = 'getlocalIp'; // //console.log('>>getlocalIp(params):', params); $.postJSON('', params, function(data){ app.message(data.msg); //console.log('>>getlocalIp(data):', data); if (data.success == true){ local_ip = data.ip; } }); }, isWindow: function (obj) { return obj != null && obj === obj.window; }, isWindowJ: function (obj) { return (obj.length > 0); }, // schliessen der dialoge auf ESC und ENTER bindKeyaction: function (_formname){ // console.log('bindKeyaction('+_formname+')'); var dlg = $(_formname); if (dlg.length == 1){ dlg.window('window').focus().bind('keyup', function(e){ switch(e.keyCode){ case 27:{ // ESCAPE dlg.window('close').panel('destroy'); break; } case 13:{ // ENTER // console.log('bindKeyaction('+_formname+'):', dlg); if (app.module[app.active_module]){ if (typeof(app.module[app.active_module].gosearch) == 'function'){ app.module[app.active_module].gosearch($(dlg), dlg); // suche ausführen }else{ if (typeof(app.module[app.active_module].gosave) == 'function'){ app.module[app.active_module].gosave(); // ergebnis sichern } } } break; } } }); } }, iffileexistExecute: function(_src, _callback, _failed) { const xhr = new XMLHttpRequest(), method = "GET", url = _src; xhr.open(method, url, true); xhr.onreadystatechange = function() { if (this.readyState === this.DONE) { var status = xhr.status; if (status === 0 || (status >= 200 && status < 400)) { if (typeof _callback == 'function'){ _callback(); } } else { if (typeof _failed == 'function'){ _failed(); } console.log('error:', xhr.responseText); } } } xhr.send(); }, makeStruct: function(_names) { var names = _names.split(' '); var count = names.length; function constructor() { for (var i = 0; i < count; i++) { this[names[i]] = arguments[i]; } } return constructor; }, message: function (msg) { if (msg) { switch (msg) { case 'close': { console.log('message.close:'); return $.messager.close(); } default: { //console.log('message.text:', msg.msg) if (!msg.type) msg.type = 'show'; msg.width = '30%'; msg.height = '25%'; $.messager.defaults.ok = app.trans.ok; return $.messager[msg.type](msg); } } } }, confirm: function(msg, _callback){ if (msg) { switch (msg) { case 'close': { console.log('message.close:'); return $.messager.close(); } default: { //console.log('message.text:', msg.msg) if (!msg.type) msg.type = 'show'; msg.width = '35%'; msg.height = '25%'; $.messager.defaults.yes = app.trans.yes; $.messager.defaults.cancel = app.trans.cancel; return $.messager.confirm('Information', msg.msg, _callback); } } } }, msgcenter: function(_msg, _callback){ var dlg = $.messager.show({ title: ''+_msg.title+'', msg: _msg.msg, width: '25%', height: '20%', showType:'fade', closable: false, style:{ right:'', bottom:'' } }); if (typeof _callback == 'function'){ window.setTimeout(function(_callback){ dlg.dialog('close'); _callback(); }, 3000, _callback); } }, // ############################################################################################# // get string between // ############################################################################################# getstringBetween: function (_string, _start, _end){ var string = ' ' + _string; var ini = string.indexOf(_start); if (ini == 0) return ''; ini += _start.length; string = string.substr(ini) var len = string.indexOf(_end); return string.substr(0, len); }, getTimecompact: function(_time){ var timestr = _time.getUTCFullYear() + ("0" + (_time.getUTCMonth()+1)).slice(-2) + ("0" + _time.getUTCDate()).slice(-2) + ("0" + _time.getUTCHours()).slice(-2) + ("0" + _time.getUTCMinutes()).slice(-2) + ("0" + _time.getUTCSeconds()).slice(-2); // return timestr; }, setLogin: function (_this) { console.log('setLogin(): ', app.sid, _this) app.module[app.active_module].execute(_this, 'login', ''); }, themechange: function(_theme){ if (typeof _theme != 'undefined'){ var link = $('.theme').find('link'); if (link.length == 1){ app.theme = _theme; link.attr('href', ('jeasyui/themes/'+_theme+'/easyui.css').toLowerCase()); } } var linkcloud = $('.cloud').find('link:first'); if (linkcloud.length == 1){ linkcloud.attr('href', ('css/cloud.css').toLowerCase()); } }, // win: null, waitpos: 0, waitint: 300, waitrun: false, waitmax: 100, wait_timer: false, wait: function(_title, _caption, _first){ window.clearTimeout(app.wait_timer); if ((_first == true) | (app.waitpos == 0)){ app.waitrun = true; app.waitpos = 0; app.win = $.messager.progress({ title:_title ,width:'350px' ,msg: _caption.replace('%seconds%', Math.round(app.waitmax/10).toString()) ,interval: 0 }); } // console.log('wait-close:', app.waitpos, app.waitmax, app.wait_timer, app.waitrun); // if ((app.waitrun == false) || (app.waitpos >= app.waitmax)){ app.waitclose(); return; } app.wait_timer = window.setTimeout(function(){ app.waitpos++; app.waitprogress(app.waitpos, 'app.wait()', app.waitpos); app.wait(_title, _caption, false); }, app.waitint); }, waittitle: function(_title, _caption, _first){ app.waitrun = true; if (_first){ app.timestart = Date.now() $.messager.progress('close'); app.win = $.messager.progress({ title:_title, msg:_caption, //value: false, interval: 0 }); if (app.win != null){ app.win.dialog('setTitle', _title); app.win.find('.messager-p-msg').html(_caption); }else{ app.win = $.messager.progress({ title:_title, msg:_caption, interval: 0 }); } } }, waitprogress: function(_progress, _func, _what){ app.waitpos = _progress; if (app.win != null){ //console.log('wait-progress:', _progress, _func, _what, app.waitpos, app.waitmax, app.win); app.win.find('.messager-p-bar').progressbar('setValue', Math.round((app.waitpos*100)/app.waitmax).toString()); } }, waitclose: function(){ if (app.wait_timer){ window.clearTimeout(app.wait_timer); } app.wait_timer = false; app.waitprogress(100); app.waitpos = 0; app.waitrun = false; app.wait_timer = window.setTimeout(function(){ $.messager.progress('close'); app.timeend = Date.now() // console.log('wait-close:', ', dauer(ms):', app.timeend-app.timestart, app.waitpos, app.waitmax); app.win = null; }, app.waitint); return; } // } var sids = []; function block(_message, _width, _caption){ var message = _message; if (_caption){ message = message.replace('%caption%', '"'+_caption+'"'); } $.blockUI({ message: message, css:{ width: ''+_width, border: 'none', padding: '10px', backgroundColor: '#808080', '-webkit-border-radius': '5px', '-moz-border-radius': '5px', opacity: .5, color: 'white' } }); } function unblock(){ $.unblockUI(); } $.postJSON = function (url, params, _success, _complete){ // console.log('(POST) postJSON-request:', params); jQuery.ajax({ 'type': 'POST', 'url': url, 'data': params, 'async': true, 'dataType': params.type, 'success': function(data){ if (typeof _success == 'function'){ //console.log('postJSON received data: ', params.type, params.what, data); // umwandlung sting in JSON-array bzw. object var obj = undefined; // data = data.replace('"', '"'); switch (params.type){ case 'json':{ if (typeof data === 'object'){ obj = data; }else{ obj = JSON.parse(data); } } case 'html':{ if (typeof data === 'string'){ obj = data; }else{ if (typeof data === 'object'){ obj = JSON.stringify(data); } } obj = JSON.stringify(data); } default: obj = data; } if (typeof data === 'object'){ if (data.released == true){ window.setTimeout(function(_msg){ _msg.title = 'Session timed out..'; console.log(_msg); app.msgcenter(_msg, function(){ app.module[app.active_module].logout(); }); }, 100, data.msg); data.msg = null; } if (data.success == false){ app.waitclose(); } } _success(obj); } }, 'complete': _complete }).fail(function(jqxhr, textStatus, error){ console.log('postJSON fail: ', jqxhr, textStatus, error, jqxhr.responseText); app.message({type:'alert', title:'ERROR postJSON in "'+params.func+'"', msg:textStatus + ", " + error}); app.waitclose(); }); }; $.toJSON = function (o){ if (typeof(JSON) == 'object' && JSON.stringify) return JSON.stringify(o); var type = typeof(o); if (o === null) return "null"; if (type == "undefined") return undefined; if (type == "number" || type == "boolean") return o + ""; if (type == "string") return $.quoteString(o); if (type == 'object'){ if (typeof o.toJSON == "function") return $.toJSON(o.toJSON()); if (o.constructor === Date){ var month = o.getUTCMonth() + 1; if (month < 10) month = '0' + month; var day = o.getUTCDate(); if (day < 10) day = '0' + day; var year = o.getUTCFullYear(); var hours = o.getUTCHours(); if (hours < 10) hours = '0' + hours; var minutes = o.getUTCMinutes(); if (minutes < 10) minutes = '0' + minutes; var seconds = o.getUTCSeconds(); if (seconds < 10) seconds = '0' + seconds; var milli = o.getUTCMilliseconds(); if (milli < 100) milli = '0' + milli; if (milli < 10) milli = '0' + milli; return '"' + year + '-' + month + '-' + day + 'T' + hours + ':' + minutes + ':' + seconds + '.' + milli + 'Z"'; } if (o.constructor === Array){ var ret = []; for (var i = 0; i < o.length; i++) ret.push($.toJSON(o[i]) || "null"); return "[" + ret.join(",") + "]"; } var pairs = []; for (var k in o){ var name; var type = typeof k; if (type == "number") name = '"' + k + '"'; else if (type == "string") name = $.quoteString(k); else continue; //skip non-string or number keys if (typeof o[k] == "function") continue; //skip pairs where the value is a function. var val = $.toJSON(o[k]); pairs.push(name + ":" + val); } return "{" + pairs.join(", ") + "}"; } };