mirror of
https://git.tt-rss.org/git/tt-rss.git
synced 2025-12-13 20:45:55 +00:00
build custom layer of Dojo to speed up loading of tt-rss (refs #293)
This commit is contained in:
@@ -5,55 +5,82 @@
|
||||
*/
|
||||
|
||||
|
||||
if(!dojo._hasResource["dojo._base._loader.loader_debug"]){
|
||||
dojo._hasResource["dojo._base._loader.loader_debug"]=true;
|
||||
if(!dojo._hasResource["dojo._base._loader.loader_debug"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
|
||||
dojo._hasResource["dojo._base._loader.loader_debug"] = true;
|
||||
dojo.provide("dojo._base._loader.loader_debug");
|
||||
dojo.nonDebugProvide=dojo.provide;
|
||||
dojo.provide=function(_1){
|
||||
var _2=dojo["_xdDebugQueue"];
|
||||
if(_2&&_2.length>0&&_1==_2["currentResourceName"]){
|
||||
if(dojo.isAIR){
|
||||
window.setTimeout(function(){
|
||||
dojo._xdDebugFileLoaded(_1);
|
||||
},1);
|
||||
}else{
|
||||
window.setTimeout(dojo._scopeName+"._xdDebugFileLoaded('"+_1+"')",1);
|
||||
|
||||
//Override dojo.provide, so we can trigger the next
|
||||
//script tag for the next local module. We can only add one
|
||||
//at a time because there are browsers that execute script tags
|
||||
//in the order that the code is received, and not in the DOM order.
|
||||
dojo.nonDebugProvide = dojo.provide;
|
||||
|
||||
dojo.provide = function(resourceName){
|
||||
var dbgQueue = dojo["_xdDebugQueue"];
|
||||
if(dbgQueue && dbgQueue.length > 0 && resourceName == dbgQueue["currentResourceName"]){
|
||||
//Set a timeout so the module can be executed into existence. Normally the
|
||||
//dojo.provide call in a module is the first line. Don't want to risk attaching
|
||||
//another script tag until the current one finishes executing.
|
||||
if(dojo.isAIR){
|
||||
window.setTimeout(function(){dojo._xdDebugFileLoaded(resourceName);}, 1);
|
||||
}else{
|
||||
window.setTimeout(dojo._scopeName + "._xdDebugFileLoaded('" + resourceName + "')", 1);
|
||||
}
|
||||
}
|
||||
|
||||
return dojo.nonDebugProvide.apply(dojo, arguments);
|
||||
}
|
||||
|
||||
dojo._xdDebugFileLoaded = function(resourceName){
|
||||
|
||||
if(!dojo._xdDebugScopeChecked){
|
||||
//If using a scoped dojo, we need to expose dojo as a real global
|
||||
//for the debugAtAllCosts stuff to work.
|
||||
if(dojo._scopeName != "dojo"){
|
||||
window.dojo = window[dojo.config.scopeMap[0][1]];
|
||||
window.dijit = window[dojo.config.scopeMap[1][1]];
|
||||
window.dojox = window[dojo.config.scopeMap[2][1]];
|
||||
}
|
||||
|
||||
dojo._xdDebugScopeChecked = true;
|
||||
}
|
||||
|
||||
var dbgQueue = dojo._xdDebugQueue;
|
||||
|
||||
if(resourceName && resourceName == dbgQueue.currentResourceName){
|
||||
dbgQueue.shift();
|
||||
}
|
||||
|
||||
if(dbgQueue.length == 0){
|
||||
//Check for more modules that need debug loading.
|
||||
//dojo._xdWatchInFlight will add more things to the debug
|
||||
//queue if they just recently loaded but it was not detected
|
||||
//between the dojo._xdWatchInFlight intervals.
|
||||
dojo._xdWatchInFlight();
|
||||
}
|
||||
|
||||
if(dbgQueue.length == 0){
|
||||
dbgQueue.currentResourceName = null;
|
||||
|
||||
//Make sure nothing else is in flight.
|
||||
//If something is still in flight, then it still
|
||||
//needs to be added to debug queue after it loads.
|
||||
for(var param in dojo._xdInFlight){
|
||||
if(dojo._xdInFlight[param] === true){
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
dojo._xdNotifyLoaded();
|
||||
}else{
|
||||
if(resourceName == dbgQueue.currentResourceName){
|
||||
dbgQueue.currentResourceName = dbgQueue[0].resourceName;
|
||||
var element = document.createElement("script");
|
||||
element.type = "text/javascript";
|
||||
element.src = dbgQueue[0].resourcePath;
|
||||
document.getElementsByTagName("head")[0].appendChild(element);
|
||||
}
|
||||
}
|
||||
}
|
||||
return dojo.nonDebugProvide.apply(dojo,arguments);
|
||||
};
|
||||
dojo._xdDebugFileLoaded=function(_3){
|
||||
if(!dojo._xdDebugScopeChecked){
|
||||
if(dojo._scopeName!="dojo"){
|
||||
window.dojo=window[dojo.config.scopeMap[0][1]];
|
||||
window.dijit=window[dojo.config.scopeMap[1][1]];
|
||||
window.dojox=window[dojo.config.scopeMap[2][1]];
|
||||
}
|
||||
dojo._xdDebugScopeChecked=true;
|
||||
}
|
||||
var _4=dojo._xdDebugQueue;
|
||||
if(_3&&_3==_4.currentResourceName){
|
||||
_4.shift();
|
||||
}
|
||||
if(_4.length==0){
|
||||
dojo._xdWatchInFlight();
|
||||
}
|
||||
if(_4.length==0){
|
||||
_4.currentResourceName=null;
|
||||
for(var _5 in dojo._xdInFlight){
|
||||
if(dojo._xdInFlight[_5]===true){
|
||||
return;
|
||||
}
|
||||
}
|
||||
dojo._xdNotifyLoaded();
|
||||
}else{
|
||||
if(_3==_4.currentResourceName){
|
||||
_4.currentResourceName=_4[0].resourceName;
|
||||
var _6=document.createElement("script");
|
||||
_6.type="text/javascript";
|
||||
_6.src=_4[0].resourcePath;
|
||||
document.getElementsByTagName("head")[0].appendChild(_6);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user