diff --git a/plugins/portal-level-numbers.user.js b/plugins/portal-level-numbers.user.js new file mode 100644 index 00000000..b070b160 --- /dev/null +++ b/plugins/portal-level-numbers.user.js @@ -0,0 +1,100 @@ +// ==UserScript== +// @id iitc-plugin-portal-level-numbers@rongou +// @name IITC plugin: Portal Level Numbers +// @version 0.1.0.@@DATETIMEVERSION@@ +// @namespace https://github.com/jonatkins/ingress-intel-total-conversion +// @updateURL @@UPDATEURL@@ +// @downloadURL @@DOWNLOADURL@@ +// @description [@@BUILDNAME@@-@@BUILDDATE@@] Show portal level numbers on map. +// @include https://www.ingress.com/intel* +// @include http://www.ingress.com/intel* +// @match https://www.ingress.com/intel* +// @match http://www.ingress.com/intel* +// ==/UserScript== + +function wrapper() { +// ensure plugin framework is there, even if iitc is not yet loaded +if(typeof window.plugin !== 'function') window.plugin = function() {}; + + +// PLUGIN START //////////////////////////////////////////////////////// + +// use own namespace for plugin +window.plugin.portalLevelNumbers = function() {}; + +window.plugin.portalLevelNumbers.levelLayers = {}; +window.plugin.portalLevelNumbers.levelLayerGroup = new L.LayerGroup(); + +// Use portal add and remove event to control render of portal level numbers +window.plugin.portalLevelNumbers.portalAdded = function(data) { + data.portal.on('add', function() { + plugin.portalLevelNumbers.renderLevel(this.options.guid, this.getLatLng()); + }); + + data.portal.on('remove', function() { + plugin.portalLevelNumbers.removeLevel(this.options.guid); + }); +} + +window.plugin.portalLevelNumbers.renderLevel = function(guid,latLng) { + plugin.portalLevelNumbers.removeLevel(guid); + + var d = window.portals[guid].options.details; + var levelNumber = Math.floor(window.getPortalLevel(d)); + var level = L.marker(latLng, { + icon: L.divIcon({ + className: 'plugin-portal-level-numbers', + iconAnchor: [6,7], + iconSize: [12,10], + html: levelNumber + }), + guid: guid + }); + + plugin.portalLevelNumbers.levelLayers[guid] = level; + level.addTo(plugin.portalLevelNumbers.levelLayerGroup); +} + +window.plugin.portalLevelNumbers.removeLevel = function(guid) { + var previousLayer = plugin.portalLevelNumbers.levelLayers[guid]; + if(previousLayer) { + plugin.portalLevelNumbers.levelLayerGroup.removeLayer(previousLayer); + delete plugin.portalLevelNumbers.levelLayers[guid]; + } +} + +var setup = function() { + $("