diff --git a/code/map_data.js b/code/map_data.js index dd5c2636..2c956a95 100644 --- a/code/map_data.js +++ b/code/map_data.js @@ -173,16 +173,17 @@ 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; if(urlPortalLL && urlPortalLL[0] === portal[2].locationE6.latE6/1E6 && urlPortalLL[1] === portal[2].locationE6.lngE6/1E6) { urlPortal = portal[0]; portalInUrlAvailable = true; urlPortalLL = null; } + if(window.portals[portal[0]]) { + highlightPortal(window.portals[portal[0]]); + } renderPortal(portal); }); @@ -285,7 +286,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 @@ -333,6 +334,7 @@ window.renderPortal = function(ent) { clickable: true, level: portalLevel, team: team, + ent: ent, details: ent[2], guid: ent[0]}); @@ -370,7 +372,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..e36274d9 --- /dev/null +++ b/code/portal_highlighter.js @@ -0,0 +1,64 @@ +// Portal Highlighter ////////////////////////////////////////////////////////// +// these functions handle portal highlighters + + +window._highlighters = null; +window._current_highlighter = localStorage.portal_highlighter; +window.changing_highlighters = false; +window._no_highlighter = 'No Highlights'; + +window.addPortalHighlighter = function(name, callback) { + if(_highlighters === null) { + _highlighters = {}; + } + _highlighters[name] = callback; + if(localStorage.portal_highlighter === undefined) { + _current_highlighter = name; + localStorage.portal_highlighter = name; + } + portalHighlighterControl(); +} + +window.portalHighlighterControl = function() { + if(_highlighters !== null) { + if($('#portal_highlight_select').length === 0) { + $("body").append(""); + } + $("#portal_highlight_select").html(''); + $("#portal_highlight_select").append($("