Libra = Libra || {} Libra.config = Libra.config || {} Libra.config.site.portWs=8080 Libra.config.client = Libra.config.client || {} Libra.config.client.proto = location.protocol.slice( 0, -1 ) Libra.config.client.protoWs = "wss" Libra.config.view={redirect:{}} Libra.config.icon='bootstrap' Libra.data = Libra.data || {} Libra.data.path = Libra.data.path || {} Libra.data.network = Libra.data.network || {} Libra.data.network.onceRequestParams = {} Libra.data.network.rid = 0 Libra.data.network.req = {} Libra.data.network.send = {} Libra.data.network.isWs = 1 Libra.data.network.ws = 0 Libra.data.network.forceProto = 'ws' Libra.data.network.wsTimeout=1000 Libra.data.network.wsPingTimeout=55000 Libra.Network = Libra.Network || {} Libra.Network.getExtraParams = () => { return {}} Libra.data.network.asyncMode = 'async' Libra.data.network.loaded = [] Libra.data.network.session = [] isset = a => typeof a !== 'undefined' Libra.load = ( arg, args = { session: null, fn: null, scope: null } )=> { let i, j, ext, path, script, prior, session //switch(arg.target){ //case 'Libra':arg.path = Libra.data.path.virtual + arg.path; break //case 'fw':arg.path = Libra.data.path.fw + arg.path; break //case 'origin':arg.path = Libra.data.path.origin + arg.path; break //} if(arg.target)arg.path = Libra.data.path[arg.target] + arg.path if ( typeof args !== 'object' ) error( 'Loader.load: args is incorrect' ) if ( typeof arg.path === 'undefined' ) { error( 'load:arg.path is needed' ); return false } if ( !Array.isArray( arg.path ) ) arg.path = [ arg.path ] if ( args.fn || args.session ) { session = args.session || Libra.getSessionId() Libra.data.network.session[ session ] = { cb:args, path: {} } } for ( i in arg.path ) { path = ( arg.pathPrefix ? arg.pathPrefix : '' ) + arg.path[ i ] if ( session ) Libra.data.network.session[ session ].path[ path ] = false if ( arg.cache && Libra.Network.isLoaded( path ) ) { if ( session ) delete( Libra.data.network.session[ session ].path[ path ] ) continue } ext = path.split( '.' ) ext = ext[ ext.length-1 ].toLowerCase() switch ( ext ) { case 'css': script = document.createElement( 'link' ); prior = document.getElementsByTagName( 'head' )[ 0 ]; script.rel = 'stylesheet';/* script.media = 'screen' */ break case 'js': case 'php': default: script = document.createElement('script'); /*console.log('qui',script,typeof script.type);script.type='text/javascript';*/prior = document.getElementsByTagName('script')[0]; break } script.async = Libra.data.network.asyncMode script.pathLibra = path if ( session ) script.session = session prior.parentNode.insertBefore( script, prior ) script.onerror = () => delete( Libra.data.network.session[ this.session ] ) // TODO error script.onload = script.onreadystatechange = function( _, isAbort ) { if ( isAbort || !/*script*/this.readyState || /loaded|complete/.test( script.readyState ) ) { this.onload = this.onreadystatechange = null if ( !isAbort ) { Libra.data.network.loaded[ this.pathLibra ] = 1; if ( this.session ) Libra.Network.sessionCheck( this ) } else{ Libra.data.network.loaded[this.pathLibra]=0; if( this.session ) delete( Libra.data.network.session[ this.session ] ) } } } let extraParams = Libra.Network.getExtraParams() if ( session ) extraParams._libraCbSession = session let strArr=[] for ( j in extraParams ) strArr.push( j + '=' + extraParams[ j ] ) if(strArr.length) path += ( path.includes( '?' ) ? '&' : '?' ) + strArr.join( '&' ) switch( ext ) { case 'css': script.href = path; break case 'js': case 'php': default: if ( arg.charset ) script.charset = arg.charset script.src = path break } } return session } Libra.config.envDomains = { dev: 'dev.smartika.net', test: 'test.smartika.net', prod: 'smartika.net'} Libra.config.envDomainsWs = { dev: 'devws.smartika.net', test: 'testws.smartika.net', prod: 'ws.smartika.net'} Libra.config.env = Object.keys( Libra.config.envDomains ).find( key => Libra.config.envDomains[ key ] === window.location.hostname) Libra.config.envDomain = Libra.config.envDomains[ Libra.config.env ] Libra.config.envDomainWs = Libra.config.envDomainsWs[ Libra.config.env ] Libra.data.path.fw = Libra.config.client.proto + '://'+Libra.config.envDomain+'/framework/' Libra.data.path.libra = Libra.config.client.proto + '://'+Libra.config.envDomain+'/Libra/' Libra.data.path.virtual = Libra.config.client.proto + '://'+Libra.config.envDomain+'/' Libra.data.path.app = window.location.origin + window.location.pathname Libra.Cookie = { del: name=>document.cookie = name +'=; domain=.'+Libra.config.envDomain+'; Path=/; Expires=Thu, 01 Jan 1970 00:00:01 GMT;', set: (cname, cvalue, sec = 31536000) => { let d = new Date() if( sec !== 0) d.setTime( d.getTime() + ( sec *1000)) else{ sec=1;error('minimal seconds for cookie: 1')} let expires = "; expires="+d.toUTCString() document.cookie = cname + "=" + cvalue + expires + '; domain=.'+Libra.config.envDomain+'; path=/; SameSite=None; Secure' }, get: name => { var nameEQ = name + "=", ca = document.cookie.split(';') for(var i = 0; i < ca.length; i++ ){ var c = ca[ i ] while ( c.charAt( 0 ) == ' ' ) c = c.substring( 1, c.length ) if ( c.indexOf( nameEQ ) == 0) return c.substring( nameEQ.length, c.length ) } return null /*let c, * name = cname + "=", * ca = document.cookie.split( ';' ) * * for( let i = 0; i < ca.length; i++ ){ * c = ca[i] * while ( c.charAt( 0 ) == ' ') c = c.substring( 1 ) * if ( c.indexOf( name ) == 0 && c.substring( name.length, c.length )!='undefined') return c.substring( name.length, c.length ) } return null*/ } } let _libraCid = Libra.Cookie.get( '_libraCid' ) if( !_libraCid || _libraCid == 'undefined' ) Libra.Cookie.set( '_libraCid','mcqvmembk3djihpa1lj2nvpgrk' ) Libra.Cookie.set( '_libraEnv', Libra.config.env ) Libra.Cookie.set( '_libraSiteId', Libra.config.site.id ) Libra.config.site.remoteIp = '192.168.254.240' Libra.config.client.hash = window.location.hash.slice( 1 ) Libra.config.isMobile=/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent) Libra.config.init={initTab:["initNS", "initLang", "initDom","initTemplate", "initClass", "initAlias", "initNw", "initDd", "initAppBoot", "initStorage","initUser", "initX", "initHash","initCookieNotice","initCookie","initBus","initApp", "initDone"]}; // TODO cookie _libraUserId Libra.config.user = { id: parseInt( Libra.Cookie.get( '_libraUserId' ), 10 ) || 0, // ,name: Libra.Cookie.get( '_userName' ) || 'anonymous' // ,mail: Libra.Cookie.get( '_userMail' ) // ,group: JSON.parse(Libra.Cookie.get( '_userGroup' )) name: 'anonymous', avatarName:'', mail: '', group: {}, //id: 0 // ,lang:Libra.Cookie.get('_userLang') lang:Libra.Cookie.get('lang') || navigator.language.split('-')[0] ,cid: Libra.Cookie.get( '_libraCid' ) || 'mcqvmembk3djihpa1lj2nvpgrk' } let arr=Libra.config.user.name.split(' ') for(let i in arr) Libra.config.user.avatarName+=arr[i][0].toUpperCase() //let _libraUserGroup=Libra.Cookie.get('_userGroup') //if(_libraUserGroup)Libra.config.user.group=JSON.parse(Libra.Cookie.get('_userGroup')) //Libra.Cookie.set( '_libraCid', Libra.config.user.cid,1 ) Libra.load({ target: 'libra', path: 'Css/libra.css' }) Libra.load({ target: 'libra', path: "Boot/Boot.js.php?Libra=" + JSON.stringify( Libra )})