Code Restructure
This commit is contained in:
parent
c75caa91dd
commit
c9d7300a05
@ -125,22 +125,23 @@ window.handleDataResponse = function(data, textStatus, jqXHR) {
|
|||||||
});
|
});
|
||||||
|
|
||||||
// Process the portals with portal render limit handler first
|
// Process the portals with portal render limit handler first
|
||||||
ppp = portalRenderLimit.processPortals(ppp);
|
// Low level portal will hold until last request
|
||||||
handlePortalData(ppp);
|
var newPpp = portalRenderLimit.splitOrMergeLowLevelPortals(ppp);
|
||||||
|
handlePortalData(newPpp);
|
||||||
|
|
||||||
resolvePlayerNames();
|
resolvePlayerNames();
|
||||||
renderUpdateStatus();
|
renderUpdateStatus();
|
||||||
}
|
}
|
||||||
|
|
||||||
window.handlePortalData = function(ppp) {
|
window.handlePortalData = function(portals) {
|
||||||
var portalUpdateAvailable = false;
|
var portalUpdateAvailable = false;
|
||||||
var portalInUrlAvailable = false;
|
var portalInUrlAvailable = false;
|
||||||
|
|
||||||
// Preserve and restore "selectedPortal" between portal re-render
|
// Preserve and restore "selectedPortal" between portal re-render
|
||||||
if(portalUpdateAvailable) var oldSelectedPortal = selectedPortal;
|
if(portalUpdateAvailable) var oldSelectedPortal = selectedPortal;
|
||||||
|
|
||||||
runHooks('portalDataLoaded', {portals : ppp});
|
runHooks('portalDataLoaded', {portals : portals});
|
||||||
$.each(ppp, function(ind, portal) {
|
$.each(portals, function(ind, portal) {
|
||||||
if(selectedPortal === portal[0]) portalUpdateAvailable = true;
|
if(selectedPortal === portal[0]) portalUpdateAvailable = true;
|
||||||
if(urlPortal && portal[0] == urlPortal) portalInUrlAvailable = true;
|
if(urlPortal && portal[0] == urlPortal) portalInUrlAvailable = true;
|
||||||
renderPortal(portal);
|
renderPortal(portal);
|
||||||
|
@ -48,14 +48,17 @@ window.portalRenderLimit.portalsPreviousMinLevel = new Array(MAX_PORTAL_LEVEL +
|
|||||||
|
|
||||||
window.portalRenderLimit.init = function () {
|
window.portalRenderLimit.init = function () {
|
||||||
var currentZoomLevel = map.getZoom();
|
var currentZoomLevel = map.getZoom();
|
||||||
if(!portalRenderLimit.previousZoomLevel) portalRenderLimit.previousZoomLevel = currentZoomLevel;
|
portalRenderLimit.previousZoomLevel = portalRenderLimit.previousZoomLevel || currentZoomLevel;
|
||||||
|
|
||||||
|
// If there is a minLevel set in previous run, calculate previousMinLevel with it.
|
||||||
if(portalRenderLimit.minLevelSet) {
|
if(portalRenderLimit.minLevelSet) {
|
||||||
var zoomDiff = currentZoomLevel - portalRenderLimit.previousZoomLevel;
|
var zoomDiff = currentZoomLevel - portalRenderLimit.previousZoomLevel;
|
||||||
portalRenderLimit.previousMinLevel = Math.max(portalRenderLimit.minLevel - zoomDiff, -1);
|
portalRenderLimit.previousMinLevel = Math.max(portalRenderLimit.minLevel - zoomDiff, -1);
|
||||||
portalRenderLimit.previousMinLevel = Math.min(portalRenderLimit.previousMinLevel, MAX_PORTAL_LEVEL);
|
portalRenderLimit.previousMinLevel = Math.min(portalRenderLimit.previousMinLevel, MAX_PORTAL_LEVEL);
|
||||||
}
|
}
|
||||||
|
|
||||||
portalRenderLimit.previousZoomLevel = currentZoomLevel;
|
portalRenderLimit.previousZoomLevel = currentZoomLevel;
|
||||||
|
|
||||||
portalRenderLimit.initialized = true;
|
portalRenderLimit.initialized = true;
|
||||||
portalRenderLimit.minLevel = -1;
|
portalRenderLimit.minLevel = -1;
|
||||||
portalRenderLimit.resetCounting();
|
portalRenderLimit.resetCounting();
|
||||||
@ -75,54 +78,59 @@ window.portalRenderLimit.resetPortalsPreviousMinLevel = function() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
window.portalRenderLimit.processPortals = function(ppp) {
|
window.portalRenderLimit.splitOrMergeLowLevelPortals = function(originPortals) {
|
||||||
portalRenderLimit.resetCounting();
|
portalRenderLimit.resetCounting();
|
||||||
var resultPortals = new Array();
|
portalRenderLimit.countingPortals(originPortals);
|
||||||
|
|
||||||
$.each(ppp, function(ind, portal) {
|
var resultPortals = portalRenderLimit.isLastRequest()
|
||||||
portalRenderLimit.countPortal(portal);
|
? portalRenderLimit.mergeLowLevelPortals(originPortals)
|
||||||
|
: portalRenderLimit.splitLowLevelPortals(originPortals);
|
||||||
|
|
||||||
if(!portalRenderLimit.isLastRequest()) {
|
|
||||||
var portalLevel = parseInt(getPortalLevel(portal[2]));
|
|
||||||
if(portalLevel < portalRenderLimit.previousMinLevel) {
|
|
||||||
portalRenderLimit.portalsPreviousMinLevel[portalLevel].push(portal);
|
|
||||||
}else{
|
|
||||||
resultPortals.push(portal);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
if(portalRenderLimit.isLastRequest()) {
|
|
||||||
resultPortals = portalRenderLimit.getLowLevelPortals(ppp);
|
|
||||||
portalRenderLimit.resetPortalsPreviousMinLevel();
|
|
||||||
}
|
|
||||||
return resultPortals;
|
return resultPortals;
|
||||||
}
|
}
|
||||||
|
|
||||||
window.portalRenderLimit.handleFailRequest = function() {
|
window.portalRenderLimit.handleFailRequest = function() {
|
||||||
if(portalRenderLimit.isLastRequest()) {
|
if(portalRenderLimit.isLastRequest()) {
|
||||||
var ppp = portalRenderLimit.getLowLevelPortals(null);
|
var resultPortals = portalRenderLimit.mergeLowLevelPortals(null);
|
||||||
portalRenderLimit.resetPortalsPreviousMinLevel();
|
handlePortalData(resultPortals);
|
||||||
handlePortalData(ppp);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
window.portalRenderLimit.countPortal = function(ent) {
|
window.portalRenderLimit.countingPortals = function(portals) {
|
||||||
var portalGuid = ent[0];
|
$.each(portals, function(ind, portal) {
|
||||||
var portalLevel = parseInt(getPortalLevel(ent[2]));
|
var portalGuid = portal[0];
|
||||||
var layerGroup = portalsLayers[portalLevel];
|
var portalLevel = parseInt(getPortalLevel(portal[2]));
|
||||||
|
var layerGroup = portalsLayers[portalLevel];
|
||||||
if(findEntityInLeaflet(layerGroup, window.portals, ent[0])) return;
|
|
||||||
portalRenderLimit.newPortalsPerLevel[portalLevel]++;
|
if(findEntityInLeaflet(layerGroup, window.portals, portalGuid)) return true;
|
||||||
|
|
||||||
|
portalRenderLimit.newPortalsPerLevel[portalLevel]++;
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
window.portalRenderLimit.getLowLevelPortals = function(appendTo) {
|
window.portalRenderLimit.splitLowLevelPortals = function(portals) {
|
||||||
|
var resultPortals = new Array();
|
||||||
|
$.each(portals, function(ind, portal) {
|
||||||
|
var portalLevel = parseInt(getPortalLevel(portal[2]));
|
||||||
|
if(portalLevel < portalRenderLimit.previousMinLevel) {
|
||||||
|
portalRenderLimit.portalsPreviousMinLevel[portalLevel].push(portal);
|
||||||
|
}else{
|
||||||
|
resultPortals.push(portal);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
return resultPortals;
|
||||||
|
}
|
||||||
|
|
||||||
|
window.portalRenderLimit.mergeLowLevelPortals = function(appendTo) {
|
||||||
var resultPortals = appendTo ? appendTo : new Array();
|
var resultPortals = appendTo ? appendTo : new Array();
|
||||||
for(var i = portalRenderLimit.getMinLevel();
|
for(var i = portalRenderLimit.getMinLevel();
|
||||||
i < portalRenderLimit.previousMinLevel;
|
i < portalRenderLimit.previousMinLevel;
|
||||||
i++) {
|
i++) {
|
||||||
$.merge(resultPortals, portalRenderLimit.portalsPreviousMinLevel[i]);
|
$.merge(resultPortals, portalRenderLimit.portalsPreviousMinLevel[i]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Reset portalsPreviousMinLevel, ensure they return only once
|
||||||
|
portalRenderLimit.resetPortalsPreviousMinLevel();
|
||||||
return resultPortals;
|
return resultPortals;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user