// ==UserScript== // @id iitc-plugin-show-linked-portals@fstopienski // @name IITC plugin: Show linked portals // @category Portal Info // @version 0.0.6.@@DATETIMEVERSION@@ // @namespace https://github.com/jonatkins/ingress-intel-total-conversion // @updateURL @@UPDATEURL@@ // @downloadURL @@DOWNLOADURL@@ // @description [@@BUILDNAME@@-@@BUILDDATE@@] Tries to show the linked portals (image, name and address) in portal detail view and jump to linked portal on click // @include https://www.ingress.com/intel* // @include http://www.ingress.com/intel* // @match https://www.ingress.com/intel* // @match http://www.ingress.com/intel* // @grant none // ==/UserScript== @@PLUGINSTART@@ // PLUGIN START //////////////////////////////////////////////////////// /* * 0.0.1 initial release, show images, names and addresses of linked portal in portal detailview * - mouse click of the linked portal image selected the portal and adjust map * - click of "Linked Portal is out of range" zoom a step out */ // use own namespace for plugin window.plugin.showLinkedPortal = function () { }; window.plugin.showLinkedPortal.handleUpdate = function () { if (!requests.isLastRequest('getThinnedEntitiesV3')) { return; } } window.plugin.showLinkedPortal.portalDetail = function (data) { // don't render linked portal data if portal is neutral. // (the data can remain sometimes - when a portal decays?) if (data.portalDetails.controllingTeam.team == 'NEUTRAL') return; var d = data.portalDetails.portalV2, c = 1; //get linked portals $(d.linkedEdges).each(function () { var portalInfo = window.plugin.showLinkedPortal.getPortalByGuid(this.otherPortalGuid); $('#portaldetails').append(''); c = c + 1; }); $('.showLinkedPortalLink:not(.outOfRange)').bind('click', function () { var guid = $(this).attr('data-guid'); if (window.portals[guid] !== undefined) { window.selectPortal($(this).attr('data-guid')); window.renderPortalDetails(window.selectedPortal); var portalDetails = window.portals[guid].options.details; var lat0 = portalDetails.locationE6.latE6 / 1E6; var lon0 = portalDetails.locationE6.lngE6 / 1E6; var Rlatlng = [lat0, lon0]; map.setView(Rlatlng, map.getZoom()); } else { map.setZoom((map.getZoom() - 1)); } }); } window.plugin.showLinkedPortal.getPortalByGuid = function (guid) { var portalInfoString = 'Linked Portal out of range.'; if (window.portals[guid] !== undefined) { var portalDetails = window.portals[guid].options.details; portalInfoString = ''; var portalNameAdressAlt = "'" + portalDetails.portalV2.descriptiveText.TITLE + "' (" + portalDetails.portalV2.descriptiveText.ADDRESS + ")"; var portalNameAdressTitle = $('
').append('\'') .append($('').text(portalDetails.portalV2.descriptiveText.TITLE)) .append('\'') .append($('
')) .append($('').text('(' + portalDetails.portalV2.descriptiveText.ADDRESS + ')')) .html(); var imageUrl = (portalDetails.imageByUrl ? portalDetails.imageByUrl.imageUrl : window.DEFAULT_PORTAL_IMG); portalInfoString = $('
').html($('').attr('src', imageUrl) .attr('class', 'minImg') .attr('alt', portalNameAdressAlt) .attr('title', portalNameAdressTitle)) .html(); } return portalInfoString; }; window.plugin.showLinkedPortal.setupCallback = function () { // make the value update when the map data updates var handleDataResponseOrig = window.handleDataResponse; window.handleDataResponse = function (data, textStatus, jqXHR) { handleDataResponseOrig(data, textStatus, jqXHR); window.renderPortalDetails(window.selectedPortal); } } var setup = function () { window.addHook('requestFinished', window.plugin.showLinkedPortal.handleUpdate); window.addHook('portalDetailsUpdated', window.plugin.showLinkedPortal.portalDetail); $('head').append(''); window.plugin.showLinkedPortal.setupCallback(); } // PLUGIN END ////////////////////////////////////////////////////////// @@PLUGINEND@@