ingress-intel-total-conversion/code/portal_highlighter.js
2013-09-18 16:43:12 +02:00

80 lines
2.9 KiB
JavaScript

// Portal Highlighter //////////////////////////////////////////////////////////
// these functions handle portal highlighters
window._highlighters = null;
window._current_highlighter = localStorage.portal_highlighter;
window._no_highlighter = 'No Highlights';
window.addPortalHighlighter = function(name, callback) {
if(_highlighters === null) {
_highlighters = {};
}
_highlighters[name] = callback;
if (typeof android !== 'undefined' && android && android.addPortalHighlighter)
android.addPortalHighlighter(name);
if(localStorage.portal_highlighter === undefined) {
_current_highlighter = name;
if (typeof android !== 'undefined' && android && android.setActiveHighlighter)
android.setActiveHighlighter(name);
localStorage.portal_highlighter = name;
}
portalHighlighterControl();
}
window.portalHighlighterControl = function() {
if (typeof android !== 'undefined' && android && android.addPortalHighlighter) {
$('#portal_highlight_select').remove();
return;
}
if(_highlighters !== null) {
if($('#portal_highlight_select').length === 0) {
$("body").append("<select id='portal_highlight_select'></select>");
}
$("#portal_highlight_select").html('');
$("#portal_highlight_select").append($("<option>").attr('value',_no_highlighter).text(_no_highlighter));
var h_names = Object.keys(_highlighters).sort();
$.each(h_names, function(i, name) {
$("#portal_highlight_select").append($("<option>").attr('value',name).text(name));
});
$("#portal_highlight_select").val(_current_highlighter);
$("#portal_highlight_select").change(function(){ changePortalHighlights($(this).val());});
// notify android that the select spinner is enabled.
// this disables javascript injection on android side.
// if android is not notified, the spinner closes on the next JS call
if (typeof android !== 'undefined' && android && android.spinnerEnabled) {
$("#portal_highlight_select").click(function(){ android.spinnerEnabled(true);});
$("#portal_highlight_select").focus(function(){ android.spinnerEnabled(false);});
}
$(".leaflet-top.leaflet-left").css('padding-top', '20px');
$(".leaflet-control-scale-line").css('margin-top','25px');
}
}
window.changePortalHighlights = function(name) {
_current_highlighter = name;
if (typeof android !== 'undefined' && android && android.setActiveHighlighter)
android.setActiveHighlighter(name);
resetHighlightedPortals();
localStorage.portal_highlighter = name;
}
window.highlightPortal = function(p) {
if(_highlighters !== null && _highlighters[_current_highlighter] !== undefined) {
p.options.highligher = _current_highlighter;
_highlighters[_current_highlighter]({portal: p});
}
}
window.resetHighlightedPortals = function() {
$.each(portals, function(guid, portal) {
setMarkerStyle(portal, guid === selectedPortal);
});
}