[show-linked-portals] mostly rewritten
This commit is contained in:
parent
bcc3b52e5c
commit
c58438e4c4
@ -2,7 +2,7 @@
|
|||||||
// @id iitc-plugin-show-linked-portals@fstopienski
|
// @id iitc-plugin-show-linked-portals@fstopienski
|
||||||
// @name IITC plugin: Show linked portals
|
// @name IITC plugin: Show linked portals
|
||||||
// @category Portal Info
|
// @category Portal Info
|
||||||
// @version 0.2.0.@@DATETIMEVERSION@@
|
// @version 0.3.0.@@DATETIMEVERSION@@
|
||||||
// @namespace https://github.com/jonatkins/ingress-intel-total-conversion
|
// @namespace https://github.com/jonatkins/ingress-intel-total-conversion
|
||||||
// @updateURL @@UPDATEURL@@
|
// @updateURL @@UPDATEURL@@
|
||||||
// @downloadURL @@DOWNLOADURL@@
|
// @downloadURL @@DOWNLOADURL@@
|
||||||
@ -24,72 +24,83 @@ window.plugin.showLinkedPortal = function () {
|
|||||||
|
|
||||||
window.plugin.showLinkedPortal.portalDetail = function (data) {
|
window.plugin.showLinkedPortal.portalDetail = function (data) {
|
||||||
var portalLinks = getPortalLinks(data.guid);
|
var portalLinks = getPortalLinks(data.guid);
|
||||||
|
var length = portalLinks.in.length + portalLinks.out.length
|
||||||
|
|
||||||
var c = 1;
|
var c = 1;
|
||||||
|
|
||||||
$.each(portalLinks.out, function(index,linkGuid) {
|
function renderLinkedPortal(linkGuid) {
|
||||||
// outgoing links - so the other portal is the destination
|
if(c > 16) return;
|
||||||
var otherPortalGuid = window.links[linkGuid].options.data.dGuid;
|
|
||||||
var portalInfo = window.plugin.showLinkedPortal.getPortalByGuid(otherPortalGuid, true);
|
|
||||||
$('#portaldetails').append('<div class="showLinkedPortalLink showLinkedPortalLink' + c + '" id="showLinkedPortalLink_' + c + '" data-guid="' + otherPortalGuid + '">' + portalInfo + '</div>');
|
|
||||||
c = c + 1;
|
|
||||||
});
|
|
||||||
$.each(portalLinks.in, function(index,linkGuid) {
|
|
||||||
// incoming link - so the other portal is the origin
|
|
||||||
var otherPortalGuid = window.links[linkGuid].options.data.oGuid;
|
|
||||||
var portalInfo = window.plugin.showLinkedPortal.getPortalByGuid(otherPortalGuid, false);
|
|
||||||
$('#portaldetails').append('<div class="showLinkedPortalLink showLinkedPortalLink' + c + '" id="showLinkedPortalLink_' + c + '" data-guid="' + otherPortalGuid + '">' + portalInfo + '</div>');
|
|
||||||
c = c + 1;
|
|
||||||
});
|
|
||||||
|
|
||||||
$('.showLinkedPortalLink:not(.outOfRange)').bind('click', function () {
|
var key = this; // passed by Array.prototype.forEach
|
||||||
var guid = $(this).attr('data-guid');
|
var link = window.links[linkGuid].options.data;
|
||||||
window.renderPortalDetails(guid);
|
var guid = link[key + 'Guid'];
|
||||||
var latlng = findPortalLatLng(guid);
|
var lat = link[key + 'LatE6']/1E6;
|
||||||
if (latlng) {
|
var lng = link[key + 'LngE6']/1E6;
|
||||||
if (!map.getBounds().pad(-0.1).contains(latlng)) {
|
|
||||||
map.panTo(latlng);
|
var div = $('<div>').addClass('showLinkedPortalLink showLinkedPortalLink' + c);
|
||||||
}
|
|
||||||
|
var title;
|
||||||
|
|
||||||
|
if(portals[guid]) {
|
||||||
|
var data = portals[guid].options.data;
|
||||||
|
|
||||||
|
title = data.title;
|
||||||
|
div.append($('<img/>').attr({
|
||||||
|
'src': fixPortalImageUrl(data.image),
|
||||||
|
'class': 'minImg',
|
||||||
|
'alt': title,
|
||||||
|
}));
|
||||||
} else {
|
} else {
|
||||||
// no idea where this portal is(!) - so step back one zoom level
|
title = 'Go to portal';
|
||||||
map.setZoom(map.getZoom()-1);
|
div
|
||||||
|
.addClass('outOfRange')
|
||||||
|
.append($('<span/>')
|
||||||
|
.text('Portal out of range.'))
|
||||||
}
|
}
|
||||||
|
|
||||||
});
|
div
|
||||||
|
.attr({
|
||||||
|
'data-guid': guid,
|
||||||
|
'data-lat': lat,
|
||||||
|
'data-lng': lng,
|
||||||
|
'title': $('<div/>')
|
||||||
|
.append($('<strong/>').text(title))
|
||||||
|
.append($('<br/>'))
|
||||||
|
.append($('<span/>').text(key=='d' ? '↴ outgoing link' : '↳ incoming link'))
|
||||||
|
.html(),
|
||||||
|
})
|
||||||
|
.appendTo('#portaldetails');
|
||||||
|
|
||||||
|
c++;
|
||||||
|
}
|
||||||
|
|
||||||
|
portalLinks.out.forEach(renderLinkedPortal, 'd');
|
||||||
|
portalLinks.in.forEach(renderLinkedPortal, 'o');
|
||||||
|
|
||||||
|
if(length > 16) {
|
||||||
|
$('<div>')
|
||||||
|
.addClass('showLinkedPortalLink showLinkedPortalOverflow')
|
||||||
|
.text(length-16 + ' more')
|
||||||
|
.appendTo('#portaldetails');
|
||||||
|
}
|
||||||
|
|
||||||
|
$('#portaldetails').on('click', '.showLinkedPortalLink', plugin.showLinkedPortal.onLinkedPortalClick);
|
||||||
}
|
}
|
||||||
|
|
||||||
window.plugin.showLinkedPortal.getPortalByGuid = function (guid,isorigin) {
|
plugin.showLinkedPortal.onLinkedPortalClick = function() {
|
||||||
var linkDirection = $('<span/>').text(isorigin?'↴ outgoing link':'↳ incoming link');
|
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 position = L.latLng(lat, lng);
|
||||||
var portalData = window.portals[guid].options.data;
|
if(!map.getBounds().contains(position)) map.setView(position);
|
||||||
|
if(portals[guid])
|
||||||
var portalNameAddressAlt = "'" + portalData.title + "'";
|
renderPortalDetails(guid);
|
||||||
var portalNameAddressTitle = $('<div/>').append($('<strong/>').text(portalData.title))
|
else
|
||||||
.append($('<br/>'))
|
zoomToAndShowPortal(guid, position);
|
||||||
.append(linkDirection)
|
|
||||||
.html();
|
|
||||||
var imageUrl = fixPortalImageUrl(portalData.image);
|
|
||||||
portalInfoString = $('<div/>').html($('<img/>').attr('src', imageUrl)
|
|
||||||
.attr('class', 'minImg')
|
|
||||||
.attr('alt', portalNameAddressAlt)
|
|
||||||
.attr('title', portalNameAddressTitle))
|
|
||||||
.html();
|
|
||||||
} else {
|
|
||||||
var title = $('<div/>').append($('<strong/>').text('Go to portal'))
|
|
||||||
.append($('<br/>'))
|
|
||||||
.append(linkDirection)
|
|
||||||
.html();
|
|
||||||
|
|
||||||
portalInfoString = $('<div/>').html($('<span/>').attr('class','outOfRange')
|
|
||||||
.attr('title',title)
|
|
||||||
.text('Portal out of range.'))
|
|
||||||
.html();
|
|
||||||
}
|
|
||||||
|
|
||||||
return portalInfoString;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
var setup = function () {
|
var setup = function () {
|
||||||
@ -97,17 +108,18 @@ var setup = function () {
|
|||||||
$('head').append('<style>' +
|
$('head').append('<style>' +
|
||||||
'.showLinkedPortalLink{cursor: pointer; position: absolute; height: 40px; width: 50px; border:solid 1px; overflow: hidden; text-align: center; background: #0e3d4e;}' +
|
'.showLinkedPortalLink{cursor: pointer; position: absolute; height: 40px; width: 50px; border:solid 1px; overflow: hidden; text-align: center; background: #0e3d4e;}' +
|
||||||
'.showLinkedPortalLink .minImg{height: 40px;}' +
|
'.showLinkedPortalLink .minImg{height: 40px;}' +
|
||||||
'.showLinkedPortalLink span.outOfRange{font-size: 10px;}' +
|
'.showLinkedPortalLink.outOfRange span{font-size: 10px;}' +
|
||||||
|
|
||||||
'.showLinkedPortalLink1,.showLinkedPortalLink2,.showLinkedPortalLink3,.showLinkedPortalLink4 {left: 5px}' +
|
'.showLinkedPortalLink1,.showLinkedPortalLink2,.showLinkedPortalLink3,.showLinkedPortalLink4 {left: 5px}' +
|
||||||
'.showLinkedPortalLink5,.showLinkedPortalLink6,.showLinkedPortalLink7,.showLinkedPortalLink8 {right: 11px}' +
|
'.showLinkedPortalLink5,.showLinkedPortalLink6,.showLinkedPortalLink7,.showLinkedPortalLink8 {right: 5px}' +
|
||||||
'.showLinkedPortalLink9,.showLinkedPortalLink10,.showLinkedPortalLink11,.showLinkedPortalLink12 {left: 59px}' +
|
'.showLinkedPortalLink9,.showLinkedPortalLink10,.showLinkedPortalLink11,.showLinkedPortalLink12 {left: 59px}' +
|
||||||
'.showLinkedPortalLink13,.showLinkedPortalLink14,.showLinkedPortalLink15,.showLinkedPortalLink16 {right: 65px}' +
|
'.showLinkedPortalLink13,.showLinkedPortalLink14,.showLinkedPortalLink15,.showLinkedPortalLink16 {right: 59px}' +
|
||||||
|
|
||||||
'.showLinkedPortalLink1,.showLinkedPortalLink5,.showLinkedPortalLink9,.showLinkedPortalLink13 {top: 25px; }' +
|
'.showLinkedPortalLink1,.showLinkedPortalLink5,.showLinkedPortalLink9,.showLinkedPortalLink13 {top: 23px; }' +
|
||||||
'.showLinkedPortalLink2,.showLinkedPortalLink6,.showLinkedPortalLink10,.showLinkedPortalLink14 {top: 69px; }' +
|
'.showLinkedPortalLink2,.showLinkedPortalLink6,.showLinkedPortalLink10,.showLinkedPortalLink14 {top: 72px; }' +
|
||||||
'.showLinkedPortalLink3,.showLinkedPortalLink7,.showLinkedPortalLink11,.showLinkedPortalLink15 {top: 113px; }' +
|
'.showLinkedPortalLink3,.showLinkedPortalLink7,.showLinkedPortalLink11,.showLinkedPortalLink15 {top: 122px; }' +
|
||||||
'.showLinkedPortalLink4,.showLinkedPortalLink8,.showLinkedPortalLink12,.showLinkedPortalLink16 {top: 157px; }' +
|
'.showLinkedPortalLink4,.showLinkedPortalLink8,.showLinkedPortalLink12,.showLinkedPortalLink16,.showLinkedPortalOverflow {top: 171px; }' +
|
||||||
|
'.showLinkedPortalOverflow{left: 50%;margin-left:-25px;cursor: default;}' +
|
||||||
'#level{text-align: center; margin-right: -0.5em; position: relative; right: 50%; width: 1em;}' +
|
'#level{text-align: center; margin-right: -0.5em; position: relative; right: 50%; width: 1em;}' +
|
||||||
'</style>');
|
'</style>');
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user