diff --git a/code/map_data.js b/code/map_data.js index 118172fa..3edfbe82 100644 --- a/code/map_data.js +++ b/code/map_data.js @@ -149,12 +149,14 @@ window.handlePortalsRender = function(portals) { // 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; - renderPortal(portal); + if(window.portals[portal[0]]) { + highlightPortal(window.portals[portal[0]]); + } + renderPortal(portal); }); // restore selected portal if still available @@ -256,7 +258,7 @@ window.renderPortal = function(ent) { // do nothing if portal did not change var layerGroup = portalsLayers[parseInt(portalLevel)]; var old = findEntityInLeaflet(layerGroup, window.portals, ent[0]); - if(old) { + if(!changing_highlighters && old) { var oo = old.options; // Default checks to see if a portal needs to be re-rendered @@ -304,6 +306,7 @@ window.renderPortal = function(ent) { clickable: true, level: portalLevel, team: team, + ent: ent, details: ent[2], guid: ent[0]}); @@ -341,7 +344,7 @@ window.renderPortal = function(ent) { }); window.renderResonators(ent, null); - + highlightPortal(p); window.runHooks('portalAdded', {portal: p}); p.addTo(layerGroup); } diff --git a/code/portal_highlighter.js b/code/portal_highlighter.js new file mode 100644 index 00000000..c7a94753 --- /dev/null +++ b/code/portal_highlighter.js @@ -0,0 +1,55 @@ +// Portal Highlighter ////////////////////////////////////////////////////////// +// these functions handle portal highlighters + + +window._highlighters = null; +window._current_highlighter = localStorage.portal_highlighter; +window.changing_highlighters = false; + +window.addPortalHighlighter = function(name, callback) { + console.log("Regisering Portal Highlighter: " + name); + if(_highlighters === null) { + _highlighters = {}; + } + _highlighters[name] = callback; + portalHighlighterControl(); +} + +window.portalHighlighterControl = function() { + if(_highlighters !== null) { + if($('#portal_highlight_select').length === 0) { + $("body").append(""); + } + $("#portal_highlight_select").html(''); + $("#portal_highlight_select").append($("