portal may become unselected

This simplifies the logic a bit, hopefully making it easier to debug the
issue See #404. It seems to be related to when the portal changed because
I could trigger it easily on zooming in/out when there was a cache bug
that gave me an R portal in one zoom level and an E one in the other.
This commit is contained in:
Stefan Breunig
2013-03-07 11:30:58 +01:00
parent 26c18a7ddf
commit b6bf5669a5

View File

@ -144,25 +144,26 @@ window.handleDataResponse = function(data, textStatus, jqXHR) {
}
window.handlePortalsRender = function(portals) {
var portalUpdateAvailable = false;
var portalInUrlAvailable = false;
// Preserve and restore "selectedPortal" between portal re-render
if(portalUpdateAvailable) var oldSelectedPortal = selectedPortal;
// Preserve selectedPortal because it will get lost on re-rendering
// the portal
var oldSelectedPortal = selectedPortal;
runHooks('portalDataLoaded', {portals : portals});
$.each(portals, function(ind, portal) {
if(selectedPortal === portal[0]) portalUpdateAvailable = true;
if(urlPortal && portal[0] == urlPortal) portalInUrlAvailable = true;
//~ if(selectedPortal === portal[0]) portalUpdateAvailable = true;
if(urlPortal && portal[0] === urlPortal) portalInUrlAvailable = true;
renderPortal(portal);
});
var selectedPortalLayer = portals[oldSelectedPortal];
if(portalUpdateAvailable && selectedPortalLayer) selectedPortal = oldSelectedPortal;
if(selectedPortalLayer) {
// restore selected portal if still available
var selectedPortalGroup = portals[oldSelectedPortal];
if(selectedPortalGroup) {
selectedPortal = oldSelectedPortal;
renderPortalDetails(selectedPortal);
try {
selectedPortalLayer.bringToFront();
selectedPortalGroup.bringToFront();
} catch(e) { /* portal is now visible, catch Leaflet error */ }
}
@ -170,8 +171,6 @@ window.handlePortalsRender = function(portals) {
renderPortalDetails(urlPortal);
urlPortal = null; // select it only once
}
if(portalUpdateAvailable) renderPortalDetails(selectedPortal);
}
// removes entities that are still handled by Leaflet, although they