Add a find by name feature to player-tracker
It search for an user name and if the user is found, center the map on it's last known position. The feature can be triggered by: - Entering the user nickname in the search box preceded by '@' - Ctrl+Clicking on an user name in the chat
This commit is contained in:
parent
1a8d15d1c5
commit
1f2fa7ac84
@ -62,6 +62,8 @@ window.plugin.playerTracker.setup = function() {
|
|||||||
window.plugin.playerTracker.zoomListener();
|
window.plugin.playerTracker.zoomListener();
|
||||||
});
|
});
|
||||||
window.plugin.playerTracker.zoomListener();
|
window.plugin.playerTracker.zoomListener();
|
||||||
|
|
||||||
|
plugin.playerTracker.setupUserSearch();
|
||||||
}
|
}
|
||||||
|
|
||||||
window.plugin.playerTracker.stored = {};
|
window.plugin.playerTracker.stored = {};
|
||||||
@ -341,8 +343,57 @@ window.plugin.playerTracker.handleData = function(data) {
|
|||||||
plugin.playerTracker.drawData();
|
plugin.playerTracker.drawData();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
window.plugin.playerTracker.findUserPosition = function(nick) {
|
||||||
|
nick = nick.toLowerCase();
|
||||||
|
var foundPlayerData = undefined;
|
||||||
|
$.each(plugin.playerTracker.stored, function(pguid, playerData) {
|
||||||
|
if (playerData.nick.toLowerCase() === nick) {
|
||||||
|
foundPlayerData = playerData;
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
if (!foundPlayerData) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
var evtsLength = foundPlayerData.events.length;
|
||||||
|
var last = foundPlayerData.events[evtsLength-1];
|
||||||
|
return plugin.playerTracker.getLatLngFromEvent(last);
|
||||||
|
}
|
||||||
|
|
||||||
|
window.plugin.playerTracker.centerMapOnUser = function(nick) {
|
||||||
|
var position = plugin.playerTracker.findUserPosition(nick);
|
||||||
|
|
||||||
|
if (position === false) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
map.setView(position, map.getZoom());
|
||||||
|
}
|
||||||
|
|
||||||
|
window.plugin.playerTracker.onNicknameClicked = function(info) {
|
||||||
|
if (info.event.ctrlKey) {
|
||||||
|
plugin.playerTracker.centerMapOnUser(info.nickname);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
window.plugin.playerTracker.onGeoSearch = function(search) {
|
||||||
|
if (/^@/.test(search)) {
|
||||||
|
plugin.playerTracker.centerMapOnUser(search.replace(/^@/, ''));
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
window.plugin.playerTracker.setupUserSearch = function() {
|
||||||
|
addHook('nicknameClicked', window.plugin.playerTracker.onNicknameClicked);
|
||||||
|
addHook('geoSearch', window.plugin.playerTracker.onGeoSearch);
|
||||||
|
|
||||||
|
var geoSearch = $('#geosearch');
|
||||||
|
var beforeEllipsis = /(.*)…/.exec(geoSearch.attr('placeholder'))[1];
|
||||||
|
geoSearch.attr('placeholder', beforeEllipsis + ' or @player…');
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
var setup = plugin.playerTracker.setup;
|
var setup = plugin.playerTracker.setup;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user