diff --git a/code/portal_detail_display.js b/code/portal_detail_display.js
index 5004ce1c..47967e57 100644
--- a/code/portal_detail_display.js
+++ b/code/portal_detail_display.js
@@ -90,6 +90,17 @@ window.renderPortalDetails = function(guid) {
portalDetailedDescription += '';
}
+ var levelDetails = getPortalLevel(d);
+ if(levelDetails != 8) {
+ if(levelDetails==Math.ceil(levelDetails))
+ levelDetails += "\n8";
+ else
+ levelDetails += "\n" + (Math.ceil(levelDetails) - levelDetails)*8;
+ levelDetails += " resonator level(s) needed for next portal level";
+ } else {
+ levelDetails += "\nfully upgraded";
+ }
+ levelDetails = "Level " + levelDetails;
$('#portaldetails')
.attr('class', TEAM_TO_CSS[getTeam(d)])
@@ -98,7 +109,7 @@ window.renderPortalDetails = function(guid) {
+ 'X'
// help cursor via ".imgpreview img"
+ '
'
- + '
'+Math.floor(getPortalLevel(d))+''
+ + '
'+Math.floor(getPortalLevel(d))+''
+ '
'+ portalDetailedDescription + '
'
+ '

'
+ ''
@@ -134,9 +145,14 @@ window.setPortalIndicators = function(d) {
var range = getPortalRange(d);
var coord = [d.locationE6.latE6/1E6, d.locationE6.lngE6/1E6];
- portalRangeIndicator = (range > 0
- ? L.geodesicCircle(coord, range, { fill: false, color: RANGE_INDICATOR_COLOR, weight: 3, clickable: false })
- : L.circle(coord, range, { fill: false, stroke: false, clickable: false })
+ portalRangeIndicator = (range.range > 0
+ ? L.geodesicCircle(coord, range.range, {
+ fill: false,
+ color: RANGE_INDICATOR_COLOR,
+ weight: 3,
+ dashArray: range.isLinkable ? undefined : "10,10",
+ clickable: false })
+ : L.circle(coord, range.range, { fill: false, stroke: false, clickable: false })
).addTo(map);
portalAccessIndicator = L.circle(coord, HACK_RANGE,
diff --git a/code/portal_detail_display_tools.js b/code/portal_detail_display_tools.js
index a1196d60..353189d9 100644
--- a/code/portal_detail_display_tools.js
+++ b/code/portal_detail_display_tools.js
@@ -5,11 +5,20 @@
// returns displayable text+link about portal range
window.getRangeText = function(d) {
var range = getPortalRange(d);
+
+ var title = 'Base range:\t' + digits(Math.floor(range.base))+'m'
+ + '\nLink amp boost:\t×'+range.boost
+ + '\nRange:\t'+digits(Math.floor(range.range))+'m';
+
+ if(!range.isLinkable) title += '\nPortal is missing resonators,\nno new links can be made';
+
return ['range',
- ''
- + (range > 1000
- ? Math.floor(range/1000) + ' km'
- : Math.floor(range) + ' m')
+ ''
+ + (range.range > 1000
+ ? Math.floor(range.range/1000) + ' km'
+ : Math.floor(range.range) + ' m')
+ ''];
}
diff --git a/code/portal_info.js b/code/portal_info.js
index a6a5bc01..569f8f0f 100644
--- a/code/portal_info.js
+++ b/code/portal_info.js
@@ -47,18 +47,20 @@ window.getPortalRange = function(d) {
$.each(d.resonatorArray.resonators, function(ind, reso) {
if(!reso) {
resoMissing = true;
- return false;
+ return;
}
lvl += parseInt(reso.level);
});
- if(resoMissing) return 0;
- var range = 160*Math.pow(getPortalLevel(d), 4);
+ var range = {
+ base: 160*Math.pow(getPortalLevel(d), 4),
+ boost: getLinkAmpRangeBoost(d)
+ };
- var boost = getLinkAmpRangeBoost(d);
-
- return range*boost;
+ range.range = range.boost * range.base;
+ range.isLinkable = !resoMissing;
+ return range;
}
window.getLinkAmpRangeBoost = function(d) {
diff --git a/style.css b/style.css
index d32df69c..3b766077 100644
--- a/style.css
+++ b/style.css
@@ -526,6 +526,7 @@ h3 {
display: block;
margin-right: 15px;
text-align:right;
+ float: right;
}
/* portal mods */