Merge pull request #14 from Xelio/plugin-ap-list-patch-3
Plugin AP List patch
This commit is contained in:
commit
aea6f38b40
86
plugins/ap-list.css
Normal file
86
plugins/ap-list.css
Normal file
@ -0,0 +1,86 @@
|
||||
|
||||
#ap-list {
|
||||
color: #ffce00;
|
||||
font-size: 90%;
|
||||
padding: 4px 2px;
|
||||
}
|
||||
|
||||
#ap-list-side-labels {
|
||||
display: inline-block;
|
||||
width: 90%;
|
||||
}
|
||||
|
||||
#ap-list-eny {
|
||||
display: inline-block;
|
||||
text-align: center;
|
||||
width: 50%;
|
||||
opacity: 1.0;
|
||||
}
|
||||
|
||||
#ap-list-frd {
|
||||
display: inline-block;
|
||||
text-align: center;
|
||||
width: 50%;
|
||||
opacity: 0.5;
|
||||
}
|
||||
|
||||
#ap-list-reload {
|
||||
display: inline-block;
|
||||
text-align: right;
|
||||
width: 10%;
|
||||
}
|
||||
|
||||
#ap-list-table {
|
||||
width: 100%;
|
||||
table-layout:fixed;
|
||||
}
|
||||
|
||||
.ap-list-td-checkbox {
|
||||
width: 5%;
|
||||
height: 1px;
|
||||
}
|
||||
|
||||
.ap-list-td-link {
|
||||
overflow:hidden;
|
||||
white-space:nowrap;
|
||||
}
|
||||
|
||||
.ap-list-td-link-eny {
|
||||
width: 80%;
|
||||
}
|
||||
|
||||
.ap-list-td-link-frd {
|
||||
width: 85%;
|
||||
}
|
||||
|
||||
.ap-list-checkbox-outer {
|
||||
display: table;
|
||||
height: 100%;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.ap-list-checkbox-mid {
|
||||
display: table-cell;
|
||||
vertical-align: middle;
|
||||
}
|
||||
|
||||
.ap-list-checkbox-inner {
|
||||
width: 10px;
|
||||
height: 10px;
|
||||
border: 1px solid rgb(32, 168, 177);
|
||||
margin: 0 auto;
|
||||
}
|
||||
|
||||
.ap-list-checkbox-selected {
|
||||
background-color: rgb(32, 168, 177);
|
||||
}
|
||||
|
||||
.ap-list-link {
|
||||
white-space: nowrap;
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
}
|
||||
|
||||
.ap-list-link-selected {
|
||||
font-style:italic;
|
||||
}
|
@ -1,7 +1,7 @@
|
||||
// ==UserScript==
|
||||
// @id iitc-plugin-ap-list@xelio
|
||||
// @name IITC plugin: AP List
|
||||
// @version 0.4.1.@@DATETIMEVERSION@@
|
||||
// @version 0.4.2.@@DATETIMEVERSION@@
|
||||
// @namespace https://github.com/jonatkins/ingress-intel-total-conversion
|
||||
// @updateURL @@UPDATEURL@@
|
||||
// @downloadURL @@DOWNLOADURL@@
|
||||
@ -40,6 +40,9 @@ window.plugin.apList.cacheActiveZoomLevel;
|
||||
|
||||
window.plugin.apList.destroyPortalsGuid = new Array();
|
||||
|
||||
window.plugin.apList.portalLocationIndicator;
|
||||
window.plugin.apList.animTimeout;
|
||||
|
||||
|
||||
window.plugin.apList.handleUpdate = function() {
|
||||
if(!requests.isLastRequest('getThinnedEntitiesV2')) return;
|
||||
@ -51,18 +54,18 @@ window.plugin.apList.handleUpdate = function() {
|
||||
window.plugin.apList.updatePortalTable = function(side) {
|
||||
var displayEnemy = (plugin.apList.displaySide === window.plugin.apList.SIDE_ENEMY);
|
||||
|
||||
var content = '<table style="width: 100%; table-layout:fixed">';
|
||||
var content = '<table id="ap-list-table">';
|
||||
for(var i = 0; i < plugin.apList.topMaxCount; i++) {
|
||||
var portal = plugin.apList.sortedPortals[side][i];
|
||||
content += '<tr>';
|
||||
// Only enemy portal list will display destroy checkbox
|
||||
if(displayEnemy) {
|
||||
content += '<td style="width: 5%; height: 1px">'
|
||||
content += '<td class="ap-list-td-checkbox">'
|
||||
+ (portal ? plugin.apList.getPortalDestroyCheckbox(portal) : ' ')
|
||||
+ '</td>';
|
||||
}
|
||||
content += '<td style="width: ' + (displayEnemy ? '80%' : '85%')
|
||||
+ '; overflow:hidden; white-space:nowrap">'
|
||||
content += '<td class="ap-list-td-link ' + (displayEnemy ? 'ap-list-td-link-eny' : 'ap-list-td-link-frd')
|
||||
+ '">'
|
||||
+ (portal ? plugin.apList.getPortalLink(portal) : ' ')
|
||||
+ '</td>'
|
||||
+ '<td>'
|
||||
@ -76,16 +79,15 @@ window.plugin.apList.updatePortalTable = function(side) {
|
||||
|
||||
window.plugin.apList.getPortalDestroyCheckbox = function(portal) {
|
||||
// Change background color to border color if portal selected for destroy
|
||||
var style = 'width: 10px; height: 10px; border: 1px solid rgb(32, 168, 177); margin: 0 auto; '
|
||||
+ (plugin.apList.destroyPortalIndex(portal.guid) >= 0
|
||||
? 'background-color: rgb(32, 168, 177);'
|
||||
: '');
|
||||
var checkboxClass = plugin.apList.destroyPortalIndex(portal.guid) >= 0
|
||||
? 'ap-list-checkbox-inner ap-list-checkbox-selected'
|
||||
: 'ap-list-checkbox-inner';
|
||||
var onClick = 'window.plugin.apList.destroyPortal(\'' + portal.guid + '\');';
|
||||
// 3 div for centering checkbox horizontally and vertically,
|
||||
// click event on outest div for people with not so good aiming
|
||||
var div = '<div style="display: table; height: 100%; width: 100%;" onclick="' + onClick + '">'
|
||||
+ '<div style="display: table-cell; vertical-align: middle;">'
|
||||
+ '<div style="' + style + '"/>'
|
||||
var div = '<div class="ap-list-checkbox-outer" onclick="' + onClick + '">'
|
||||
+ '<div class="ap-list-checkbox-mid">'
|
||||
+ '<div class="' + checkboxClass + '"/>'
|
||||
+ '</div>'
|
||||
+ '</div>';
|
||||
return div;
|
||||
@ -144,24 +146,24 @@ window.plugin.apList.getPortalApTitle = function(portal) {
|
||||
// hover: show address
|
||||
window.plugin.apList.getPortalLink = function(portal) {
|
||||
var latlng = [portal.locationE6.latE6/1E6, portal.locationE6.lngE6/1E6].join();
|
||||
var jsSingleClick = 'window.renderPortalDetails(\''+portal.guid+'\');return false';
|
||||
var jsSingleClick = 'window.plugin.apList.selectPortal(\''+portal.guid+'\');return false';
|
||||
var jsDoubleClick = 'window.zoomToAndShowPortal(\''+portal.guid+'\', ['+latlng+']);return false';
|
||||
var perma = 'https://ingress.com/intel?latE6='+portal.locationE6.latE6
|
||||
+'&lngE6='+portal.locationE6.lngE6+'&z=17&pguid='+portal.guid;
|
||||
var style = plugin.apList.destroyPortalIndex(portal.guid) >= 0
|
||||
? 'font-style:italic'
|
||||
: '';
|
||||
//Use Jquery to create the link, which escape characters in TITLE and ADDRESS of portal
|
||||
var a = $('<a>',{
|
||||
"class": 'help',
|
||||
style: style,
|
||||
text: portal.portalV2.descriptiveText.TITLE,
|
||||
title: portal.portalV2.descriptiveText.ADDRESS,
|
||||
href: perma,
|
||||
onClick: jsSingleClick,
|
||||
onDblClick: jsDoubleClick
|
||||
})[0].outerHTML;
|
||||
var div = '<div style="white-space: nowrap; overflow: hidden; text-overflow:ellipsis;">'+a+'</div>';
|
||||
|
||||
var divClass = plugin.apList.destroyPortalIndex(portal.guid) >= 0
|
||||
? 'ap-list-link ap-list-link-selected'
|
||||
: 'ap-list-link';
|
||||
var div = '<div class="' + divClass + '">'+a+'</div>';
|
||||
return div;
|
||||
}
|
||||
|
||||
@ -406,24 +408,70 @@ window.plugin.apList.getAttackApGain = function(d) {
|
||||
}
|
||||
}
|
||||
|
||||
window.plugin.apList.selectPortal = function(guid) {
|
||||
renderPortalDetails(guid);
|
||||
plugin.apList.setPortalLocationIndicator(guid);
|
||||
}
|
||||
|
||||
window.plugin.apList.setPortalLocationIndicator = function(guid) {
|
||||
var portal = window.portals[guid];
|
||||
if(!portal) return;
|
||||
var startRadius = screen.availWidth / 2;
|
||||
var portalRadius = portal.options.radius;
|
||||
var latlng = portal.getLatLng();
|
||||
var property = {
|
||||
radius: startRadius,
|
||||
fill: false,
|
||||
color: COLOR_SELECTED_PORTAL,
|
||||
weight: 2,
|
||||
opacity: 1,
|
||||
portalRadius: portalRadius,
|
||||
clickable: false };
|
||||
|
||||
if(plugin.apList.portalLocationIndicator)
|
||||
map.removeLayer(plugin.apList.portalLocationIndicator);
|
||||
if(plugin.apList.animTimeout)
|
||||
clearTimeout(plugin.apList.animTimeout);
|
||||
plugin.apList.portalLocationIndicator = L.circleMarker(latlng, property).addTo(map);
|
||||
plugin.apList.animTimeout = setTimeout(plugin.apList.animPortalLocationIndicator,100);
|
||||
}
|
||||
|
||||
window.plugin.apList.animPortalLocationIndicator = function() {
|
||||
var radius = plugin.apList.portalLocationIndicator.options.radius;
|
||||
var portalRadius = plugin.apList.portalLocationIndicator.options.portalRadius
|
||||
if(radius > portalRadius) {
|
||||
var step = radius / 3;
|
||||
if(radius < 80) step = step / 3;
|
||||
var newRadius = plugin.apList.portalLocationIndicator.options.radius -= step;
|
||||
plugin.apList.portalLocationIndicator.setRadius(newRadius);
|
||||
if(plugin.apList.animTimeout)
|
||||
clearTimeout(plugin.apList.animTimeout);
|
||||
plugin.apList.animTimeout = setTimeout(plugin.apList.animPortalLocationIndicator,100);
|
||||
} else {
|
||||
map.removeLayer(plugin.apList.portalLocationIndicator);
|
||||
}
|
||||
}
|
||||
|
||||
// Change display table to friendly portals
|
||||
window.plugin.apList.displayFriendly = function() {
|
||||
plugin.apList.displaySide = plugin.apList.SIDE_FRIENDLY;
|
||||
plugin.apList.changeDisplaySide(plugin.apList.displaySide);
|
||||
plugin.apList.changeDisplaySide(plugin.apList.SIDE_FRIENDLY);
|
||||
}
|
||||
|
||||
// Change display table to enemy portals
|
||||
window.plugin.apList.displayEnemy = function() {
|
||||
plugin.apList.displaySide = plugin.apList.SIDE_ENEMY;
|
||||
plugin.apList.changeDisplaySide(plugin.apList.displaySide);
|
||||
plugin.apList.changeDisplaySide(plugin.apList.SIDE_ENEMY);
|
||||
}
|
||||
|
||||
window.plugin.apList.changeDisplaySide = function(side) {
|
||||
plugin.apList.updatePortalTable(side);
|
||||
plugin.apList.toggleSideLabel(side);
|
||||
|
||||
var scrollTo = $("#ap-list").position().top + $("#ap-list").outerHeight()
|
||||
- $("#sidebar").height() + $("#sidebar").scrollTop()
|
||||
var isChange = (plugin.apList.displaySide !== side);
|
||||
var scrollTo = 0;
|
||||
if(isChange) {
|
||||
plugin.apList.displaySide = side;
|
||||
plugin.apList.updatePortalTable(side);
|
||||
plugin.apList.toggleSideLabel(side);
|
||||
scrollTo = $("#ap-list").position().top + $("#ap-list").outerHeight()
|
||||
- $("#sidebar").height() + $("#sidebar").scrollTop();
|
||||
}
|
||||
$('#sidebar').scrollTop(scrollTo);
|
||||
}
|
||||
|
||||
@ -456,17 +504,24 @@ window.plugin.apList.setupVar = function() {
|
||||
= "#ap-list-eny";
|
||||
}
|
||||
|
||||
window.plugin.apList.setupCSS = function() {
|
||||
$("<style>")
|
||||
.prop("type", "text/css")
|
||||
.html("@@INCLUDESTRING:plugins/ap-list.css@@")
|
||||
.appendTo("head");
|
||||
}
|
||||
|
||||
window.plugin.apList.setupList = function() {
|
||||
var content = '<div id="ap-list">'
|
||||
+ '<span style="display: inline-block; width: 90%">'
|
||||
+ '<span id="ap-list-eny" style="display: inline-block; text-align: center; width: 50%; opacity:1.0;">'
|
||||
+ '<span id="ap-list-side-labels">'
|
||||
+ '<span id="ap-list-eny">'
|
||||
+ '<a href="#" onclick="window.plugin.apList.displayEnemy();return false;">Enemy</a>'
|
||||
+ '</span>'
|
||||
+ '<span id="ap-list-frd" style="display: inline-block; text-align: center; width: 50%; opacity:0.5;">'
|
||||
+ '<span id="ap-list-frd">'
|
||||
+ '<a href="#" onclick="window.plugin.apList.displayFriendly();return false;">Friendly</a>'
|
||||
+ '</span>'
|
||||
+ '</span>'
|
||||
+ '<span id="ap-list-reload" style="display: inline-block; text-align: right; width: 10%">'
|
||||
+ '<span id="ap-list-reload">'
|
||||
+ '<a href="#" title="Clear list and reload" onclick="window.plugin.apList.disableCache();'
|
||||
+ 'plugin.apList.hideReloadLabel();return false;">↻ R</a>'
|
||||
+ '</span>'
|
||||
@ -475,7 +530,6 @@ window.plugin.apList.setupList = function() {
|
||||
|
||||
$('#sidebar').append(content);
|
||||
$('#ap-list-reload').hide();
|
||||
$('#ap-list').css({'color':'#ffce00', 'font-size':'90%', 'padding':'4px 2px'});
|
||||
}
|
||||
|
||||
window.plugin.apList.setupMapEvent = function() {
|
||||
@ -509,6 +563,7 @@ window.plugin.apList.setupMapEvent = function() {
|
||||
|
||||
var setup = function() {
|
||||
window.plugin.apList.setupVar();
|
||||
window.plugin.apList.setupCSS();
|
||||
window.plugin.apList.setupList();
|
||||
window.plugin.apList.setupMapEvent();
|
||||
window.addHook('requestFinished', window.plugin.apList.handleUpdate);
|
||||
|
Loading…
x
Reference in New Issue
Block a user