[player-tracker] don't select portal when clicking the marker; instead, make portal names in popup clickable
This commit is contained in:
parent
7311b85059
commit
2cab4f71f9
7
plugins/player-tracker.css
Normal file
7
plugins/player-tracker.css
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
.plugin-player-tracker-popup a {
|
||||||
|
color: inherit;
|
||||||
|
text-decoration: underline;
|
||||||
|
text-decoration-style: dashed;
|
||||||
|
-moz-text-decoration-style: dashed;
|
||||||
|
-webkit-text-decoration-style: dashed;
|
||||||
|
}
|
@ -76,9 +76,6 @@ window.plugin.playerTracker.stored = {};
|
|||||||
plugin.playerTracker.onClickListener = function(event) {
|
plugin.playerTracker.onClickListener = function(event) {
|
||||||
var marker = event.target;
|
var marker = event.target;
|
||||||
|
|
||||||
var ll = marker.options.referenceToPortal.split(",");
|
|
||||||
window.selectPortalByLatLng(ll[0]/1E6, ll[1]/1E6);
|
|
||||||
|
|
||||||
if (marker.options.desc) {
|
if (marker.options.desc) {
|
||||||
plugin.playerTracker.playerPopup.setContent(marker.options.desc);
|
plugin.playerTracker.playerPopup.setContent(marker.options.desc);
|
||||||
plugin.playerTracker.playerPopup.setLatLng(marker.getLatLng());
|
plugin.playerTracker.playerPopup.setLatLng(marker.getLatLng());
|
||||||
@ -308,44 +305,73 @@ window.plugin.playerTracker.drawData = function() {
|
|||||||
var tooltip = isTouchDev ? '' : (playerData.nick+', '+ago(last.time, now)+' ago');
|
var tooltip = isTouchDev ? '' : (playerData.nick+', '+ago(last.time, now)+' ago');
|
||||||
|
|
||||||
// popup for marker
|
// popup for marker
|
||||||
var cssClass = playerData.team === 'RESISTANCE' ? 'res' : 'enl';
|
var popup = $('<div>')
|
||||||
var popup = '<span class="nickname '+cssClass+'" style="font-weight:bold;">' + playerData.nick + '</span>';
|
.addClass('plugin-player-tracker-popup');
|
||||||
|
$('<span>')
|
||||||
|
.addClass('nickname ' + (playerData.team === 'RESISTANCE' ? 'res' : 'enl'))
|
||||||
|
.css('font-weight', 'bold')
|
||||||
|
.text(playerData.nick)
|
||||||
|
.appendTo(popup);
|
||||||
|
|
||||||
if(window.plugin.guessPlayerLevels !== undefined &&
|
if(window.plugin.guessPlayerLevels !== undefined &&
|
||||||
window.plugin.guessPlayerLevels.fetchLevelDetailsByPlayer !== undefined) {
|
window.plugin.guessPlayerLevels.fetchLevelDetailsByPlayer !== undefined) {
|
||||||
function getLevel(lvl) {
|
function getLevel(lvl) {
|
||||||
return '<span style="padding:4px;color:white;background-color:'+COLORS_LVL[lvl]+'">'+lvl+'</span>';
|
return $('<span>')
|
||||||
|
.css({
|
||||||
|
padding: '4px',
|
||||||
|
color: 'white',
|
||||||
|
backgroundColor: COLORS_LVL[lvl],
|
||||||
|
})
|
||||||
|
.text(lvl);
|
||||||
}
|
}
|
||||||
popup += '<span style="font-weight:bold;margin-left:10px;">';
|
|
||||||
|
var level = $('<span>')
|
||||||
|
.css({'font-weight': 'bold', 'margin-left': '10px'})
|
||||||
|
.appendTo(popup);
|
||||||
|
|
||||||
var playerLevelDetails = window.plugin.guessPlayerLevels.fetchLevelDetailsByPlayer(plrname);
|
var playerLevelDetails = window.plugin.guessPlayerLevels.fetchLevelDetailsByPlayer(plrname);
|
||||||
if(playerLevelDetails.min == 8) {
|
if(playerLevelDetails.min == 8) {
|
||||||
popup += 'Level ' + getLevel(8);
|
level
|
||||||
|
.text('Level ')
|
||||||
|
.append(getLevel(8));
|
||||||
} else {
|
} else {
|
||||||
popup += 'Min level: ' + getLevel(playerLevelDetails.min);
|
level
|
||||||
|
.text('Min level ')
|
||||||
|
.append(getLevel(playerLevelDetails.min));
|
||||||
if(playerLevelDetails.min != playerLevelDetails.guessed)
|
if(playerLevelDetails.min != playerLevelDetails.guessed)
|
||||||
popup += ', guessed level: ' + getLevel(playerLevelDetails.guessed);
|
level
|
||||||
|
.append(document.createTextNode(', guessed level: '))
|
||||||
|
.append(getLevel(playerLevelDetails.guessed));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
popup += '</span>';
|
popup
|
||||||
}
|
.append('<br>')
|
||||||
|
.append(document.createTextNode(ago(last.time, now)))
|
||||||
|
.append('<br>')
|
||||||
|
.append(plugin.playerTracker.getPortalLink(last));
|
||||||
|
|
||||||
popup += '<br>'
|
|
||||||
+ ago(last.time, now) + ' ago<br>'
|
|
||||||
+ window.chat.getChatPortalName(last);
|
|
||||||
// show previous data in popup
|
// show previous data in popup
|
||||||
if(evtsLength >= 2) {
|
if(evtsLength >= 2) {
|
||||||
popup += '<br> <br>previous locations:<br>'
|
popup
|
||||||
+ '<table style="border-spacing:0">';
|
.append('<br>')
|
||||||
}
|
.append('<br>')
|
||||||
|
.append(document.createTextNode('previous locations:'))
|
||||||
|
.append('<br>');
|
||||||
|
|
||||||
|
var table = $('<table>')
|
||||||
|
.appendTo(popup)
|
||||||
|
.css('border-spacing', '0');
|
||||||
for(var i = evtsLength - 2; i >= 0 && i >= evtsLength - 10; i--) {
|
for(var i = evtsLength - 2; i >= 0 && i >= evtsLength - 10; i--) {
|
||||||
var ev = playerData.events[i];
|
var ev = playerData.events[i];
|
||||||
popup += '<tr align="left"><td>' + ago(ev.time, now) + '</td>'
|
$('<tr>')
|
||||||
+ '<td>ago</td>'
|
.append($('<td>')
|
||||||
+ '<td>' + window.chat.getChatPortalName(ev) + '</td></tr>';
|
.text(ago(ev.time, now) + ' ago'))
|
||||||
|
.append($('<td>')
|
||||||
|
.append(plugin.playerTracker.getPortalLink(ev)))
|
||||||
|
.appendTo(table);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
if(evtsLength >= 2)
|
|
||||||
popup += '</table>';
|
|
||||||
|
|
||||||
// calculate the closest portal to the player
|
// calculate the closest portal to the player
|
||||||
var eventPortal = []
|
var eventPortal = []
|
||||||
@ -369,12 +395,12 @@ window.plugin.playerTracker.drawData = function() {
|
|||||||
|
|
||||||
// marker itself
|
// marker itself
|
||||||
var icon = playerData.team === 'RESISTANCE' ? new plugin.playerTracker.iconRes() : new plugin.playerTracker.iconEnl();
|
var icon = playerData.team === 'RESISTANCE' ? new plugin.playerTracker.iconRes() : new plugin.playerTracker.iconEnl();
|
||||||
// as per OverlappingMarkerSpiderfier docs, click events (popups, etc) must be handled via it rather than the standard
|
// as per OverlappingMarkerSpiderfier docs, click events (popups, etc) must be handled via it rather than the standard
|
||||||
// marker click events. so store the popup text in the options, then display it in the oms click handler
|
// marker click events. so store the popup text in the options, then display it in the oms click handler
|
||||||
var m = L.marker(gllfe(last), {icon: icon, referenceToPortal: closestPortal, opacity: absOpacity, desc: popup, title: tooltip});
|
var m = L.marker(gllfe(last), {icon: icon, referenceToPortal: closestPortal, opacity: absOpacity, desc: popup[0], title: tooltip});
|
||||||
m.addEventListener('spiderfiedclick', plugin.playerTracker.onClickListener);
|
m.addEventListener('spiderfiedclick', plugin.playerTracker.onClickListener);
|
||||||
|
|
||||||
// m.bindPopup(title);
|
// m.bindPopup(title);
|
||||||
|
|
||||||
if (tooltip) {
|
if (tooltip) {
|
||||||
// ensure tooltips are closed, sometimes they linger
|
// ensure tooltips are closed, sometimes they linger
|
||||||
@ -423,6 +449,30 @@ window.plugin.playerTracker.drawData = function() {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
window.plugin.playerTracker.getPortalLink = function(data) {
|
||||||
|
var position = data.latlngs[0];
|
||||||
|
var ll = position.join(',');
|
||||||
|
return $('<a>')
|
||||||
|
.addClass('text-overflow-ellipsis')
|
||||||
|
.css('max-width', '15em')
|
||||||
|
.text(window.chat.getChatPortalName(data))
|
||||||
|
.prop({
|
||||||
|
title: window.chat.getChatPortalName(data),
|
||||||
|
href: '/intel?ll=' + ll + '&pll=' + ll,
|
||||||
|
})
|
||||||
|
.click(function(event) {
|
||||||
|
window.selectPortalByLatLng(position);
|
||||||
|
event.preventDefault();
|
||||||
|
return false;
|
||||||
|
})
|
||||||
|
.dblclick(function(event) {
|
||||||
|
map.setView(position, 17)
|
||||||
|
window.selectPortalByLatLng(position);
|
||||||
|
event.preventDefault();
|
||||||
|
return false;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
window.plugin.playerTracker.handleData = function(data) {
|
window.plugin.playerTracker.handleData = function(data) {
|
||||||
if(window.map.getZoom() < window.PLAYER_TRACKER_MIN_ZOOM) return;
|
if(window.map.getZoom() < window.PLAYER_TRACKER_MIN_ZOOM) return;
|
||||||
|
|
||||||
@ -480,6 +530,8 @@ window.plugin.playerTracker.onGeoSearch = function(search) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
window.plugin.playerTracker.setupUserSearch = function() {
|
window.plugin.playerTracker.setupUserSearch = function() {
|
||||||
|
$('<style>').prop('type', 'text/css').html('@@INCLUDESTRING:plugins/player-tracker.css@@').appendTo('head');
|
||||||
|
|
||||||
addHook('nicknameClicked', window.plugin.playerTracker.onNicknameClicked);
|
addHook('nicknameClicked', window.plugin.playerTracker.onNicknameClicked);
|
||||||
addHook('geoSearch', window.plugin.playerTracker.onGeoSearch);
|
addHook('geoSearch', window.plugin.playerTracker.onGeoSearch);
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user