diff --git a/plugins/show-linked-portals.user.js b/plugins/show-linked-portals.user.js
index 55ea87dc..04e832c3 100644
--- a/plugins/show-linked-portals.user.js
+++ b/plugins/show-linked-portals.user.js
@@ -2,7 +2,7 @@
// @id iitc-plugin-show-linked-portals@fstopienski
// @name IITC plugin: Show linked portals
// @category Portal Info
-// @version 0.2.0.@@DATETIMEVERSION@@
+// @version 0.3.0.@@DATETIMEVERSION@@
// @namespace https://github.com/jonatkins/ingress-intel-total-conversion
// @updateURL @@UPDATEURL@@
// @downloadURL @@DOWNLOADURL@@
@@ -24,72 +24,83 @@ window.plugin.showLinkedPortal = function () {
window.plugin.showLinkedPortal.portalDetail = function (data) {
var portalLinks = getPortalLinks(data.guid);
+ var length = portalLinks.in.length + portalLinks.out.length
var c = 1;
- $.each(portalLinks.out, function(index,linkGuid) {
- // outgoing links - so the other portal is the destination
- var otherPortalGuid = window.links[linkGuid].options.data.dGuid;
- var portalInfo = window.plugin.showLinkedPortal.getPortalByGuid(otherPortalGuid, true);
- $('#portaldetails').append('
').addClass('showLinkedPortalLink showLinkedPortalLink' + c);
+
+ var title;
+
+ if(portals[guid]) {
+ var data = portals[guid].options.data;
+
+ title = data.title;
+ div.append($('
![]()
').attr({
+ 'src': fixPortalImageUrl(data.image),
+ 'class': 'minImg',
+ 'alt': title,
+ }));
} else {
- // no idea where this portal is(!) - so step back one zoom level
- map.setZoom(map.getZoom()-1);
+ title = 'Go to portal';
+ div
+ .addClass('outOfRange')
+ .append($('
')
+ .text('Portal out of range.'))
}
- });
+ div
+ .attr({
+ 'data-guid': guid,
+ 'data-lat': lat,
+ 'data-lng': lng,
+ 'title': $('
')
+ .append($('
').text(title))
+ .append($('
'))
+ .append($('
').text(key=='d' ? '↴ outgoing link' : '↳ incoming link'))
+ .html(),
+ })
+ .appendTo('#portaldetails');
+
+ c++;
+ }
+
+ portalLinks.out.forEach(renderLinkedPortal, 'd');
+ portalLinks.in.forEach(renderLinkedPortal, 'o');
+
+ if(length > 16) {
+ $('
')
+ .addClass('showLinkedPortalLink showLinkedPortalOverflow')
+ .text(length-16 + ' more')
+ .appendTo('#portaldetails');
+ }
+
+ $('#portaldetails').on('click', '.showLinkedPortalLink', plugin.showLinkedPortal.onLinkedPortalClick);
}
-window.plugin.showLinkedPortal.getPortalByGuid = function (guid,isorigin) {
- var linkDirection = $('
').text(isorigin?'↴ outgoing link':'↳ incoming link');
+plugin.showLinkedPortal.onLinkedPortalClick = function() {
+ var element = $(this);
+ var guid = element.attr('data-guid');
+ var lat = element.attr('data-lat');
+ var lng = element.attr('data-lng');
- var portalInfoString;
+ if(!guid) return; // overflow
- if (window.portals[guid] !== undefined) {
- var portalData = window.portals[guid].options.data;
-
- var portalNameAddressAlt = "'" + portalData.title + "'";
- var portalNameAddressTitle = $('
').append($('
').text(portalData.title))
- .append($('
'))
- .append(linkDirection)
- .html();
- var imageUrl = fixPortalImageUrl(portalData.image);
- portalInfoString = $('
').html($('
![]()
').attr('src', imageUrl)
- .attr('class', 'minImg')
- .attr('alt', portalNameAddressAlt)
- .attr('title', portalNameAddressTitle))
- .html();
- } else {
- var title = $('
').append($('
').text('Go to portal'))
- .append($('
'))
- .append(linkDirection)
- .html();
-
- portalInfoString = $('
').html($('
').attr('class','outOfRange')
- .attr('title',title)
- .text('Portal out of range.'))
- .html();
- }
-
- return portalInfoString;
+ var position = L.latLng(lat, lng);
+ if(!map.getBounds().contains(position)) map.setView(position);
+ if(portals[guid])
+ renderPortalDetails(guid);
+ else
+ zoomToAndShowPortal(guid, position);
};
var setup = function () {
@@ -97,17 +108,18 @@ var setup = function () {
$('head').append('');
}