diff --git a/plugins/portal-counts.user.js b/plugins/portal-counts.user.js new file mode 100644 index 00000000..fe8387b3 --- /dev/null +++ b/plugins/portal-counts.user.js @@ -0,0 +1,139 @@ +// ==UserScript== +// @id iitc-plugin-portals-count@yenky +// @name IITC plugin: Show total counts of portals +// @version 0.0.6.@@DATETIMEVERSION@@ +// @namespace https://github.com/jonatkins/ingress-intel-total-conversion +// @updateURL @@UPDATEURL@@ +// @downloadURL @@DOWNLOADURL@@ +// @description [@@BUILDNAME@@-@@BUILDDATE@@] Display a list of all localized portals by level and faction +// @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== + +/* whatsnew +* 0.0.6 : ignoring outside bounds portals (even if close to) +* 0.0.5 : changed table layout, added some colors +* 0.0.4 : reverse show order of portals, using MAX_PORTAL_LEVEL now for array, changed table layout to be more compact, cleaned up code +* 0.0.3 : fixed incorrect rounded portal levels, adjusted viewport +* 0.0.2 : fixed counts to be reset after scrolling +* 0.0.1 : initial release, show count of portals +* todo : +*/ + +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.portalcounts = function() {}; + +//count portals for each level avalaible on the map +window.plugin.portalcounts.getPortals = function(){ + //console.log('** getPortals'); + var retval=false; + var displayBounds = map.getBounds(); + window.plugin.portalcounts.enlP = 0; + window.plugin.portalcounts.resP = 0; + window.plugin.portalcounts.neuP = 0; + + window.plugin.portalcounts.PortalsEnl = new Array(); + window.plugin.portalcounts.PortalsRes = new Array(); + for(var level = window.MAX_PORTAL_LEVEL; level > 0; level--){ + window.plugin.portalcounts.PortalsEnl[level] = 0; + window.plugin.portalcounts.PortalsRes[level] = 0; + } + + $.each(window.portals, function(i, portal) { + retval=true; + var d = portal.options.details; + var team = portal.options.team; + var level = Math.floor(getPortalLevel(d)); + // just count portals in viewport + if(!displayBounds.contains(portal.getLatLng())) return true; + switch (team){ + case 1 : + window.plugin.portalcounts.resP++; + window.plugin.portalcounts.PortalsRes[level]++; + break; + case 2 : + window.plugin.portalcounts.enlP++; + window.plugin.portalcounts.PortalsEnl[level]++; + break; + default: + window.plugin.portalcounts.neuP++; + break; + } + }); + + //get portals informations from IITC + var minlvl = getMinPortalLevel(); + + var counts = ''; + if(retval) { + counts += ''; //'+window.plugin.portalcounts.enlP+' Portal(s)'; + for(var level = window.MAX_PORTAL_LEVEL; level > 0; level--){ + counts += ''; + if(minlvl > level) + counts += ''; + else + counts += ''; + counts += ''; + } + counts += ''; + counts += ''; + counts += ''; + counts += ''; + } else + counts += ''; + counts += '
EnlightmentResistance
Level '+level+'zoom in to see portals in this level'+window.plugin.portalcounts.PortalsEnl[level]+''+window.plugin.portalcounts.PortalsRes[level]+'
 
Neutral:'; + if(minlvl > 0) + counts += 'zoom in to see unclaimed'; + else + counts += window.plugin.portalcounts.neuP; + counts += ' Portal(s)
Enlightment:'+window.plugin.portalcounts.enlP+' Portal(s)
Resistance:'+window.plugin.portalcounts.resP+' Portal(s)
No Portals in range !
'; + alert('
'+counts+'
'); +} + +var setup = function() { + $('body').append(''); + $('#toolbox').append('Portalcounts'); + $('head').append(''); +} + +// PLUGIN END ////////////////////////////////////////////////////////// + +if(window.iitcLoaded && typeof setup === 'function') { + setup(); +} else { + if(window.bootPlugins) + window.bootPlugins.push(setup); + else + window.bootPlugins = [setup]; +} +} // wrapper end +// inject code into site context +var script = document.createElement('script'); +script.appendChild(document.createTextNode('('+ wrapper +')();')); +(document.body || document.head || document.documentElement).appendChild(script); diff --git a/screenshots/plugin_portal_counts.png b/screenshots/plugin_portal_counts.png new file mode 100755 index 00000000..0a5985ea Binary files /dev/null and b/screenshots/plugin_portal_counts.png differ