plugin: cache recently loaded portal details and always render on the map
This commit is contained in:
parent
02ac86fc00
commit
570f7a0f9a
@ -18,6 +18,7 @@
|
|||||||
// portalSelected: called when portal on map is selected/unselected.
|
// portalSelected: called when portal on map is selected/unselected.
|
||||||
// Provide guid of selected and unselected portal.
|
// Provide guid of selected and unselected portal.
|
||||||
// mapDataRefreshStart: called when we start refreshing map data
|
// mapDataRefreshStart: called when we start refreshing map data
|
||||||
|
// mapDataEntityInject: called just as we start to render data. has callback to inject cached entities into the map render
|
||||||
// mapDataRefreshEnd: called when we complete the map data load
|
// mapDataRefreshEnd: called when we complete the map data load
|
||||||
// portalAdded: called when a portal has been received and is about to
|
// portalAdded: called when a portal has been received and is about to
|
||||||
// be added to its layer group. Note that this does NOT
|
// be added to its layer group. Note that this does NOT
|
||||||
@ -55,7 +56,7 @@
|
|||||||
window._hooks = {}
|
window._hooks = {}
|
||||||
window.VALID_HOOKS = [
|
window.VALID_HOOKS = [
|
||||||
'portalSelected', 'portalDetailsUpdated',
|
'portalSelected', 'portalDetailsUpdated',
|
||||||
'mapDataRefreshStart', 'mapDataRefreshEnd',
|
'mapDataRefreshStart', 'mapDataEntityInject', 'mapDataRefreshEnd',
|
||||||
'portalAdded', 'linkAdded', 'fieldAdded',
|
'portalAdded', 'linkAdded', 'fieldAdded',
|
||||||
'publicChatDataAvailable', 'factionChatDataAvailable',
|
'publicChatDataAvailable', 'factionChatDataAvailable',
|
||||||
'requestFinished', 'nicknameClicked',
|
'requestFinished', 'nicknameClicked',
|
||||||
|
@ -239,6 +239,9 @@ window.MapDataRequest.prototype.refresh = function() {
|
|||||||
|
|
||||||
this.render.startRenderPass(tileParams.level, dataBounds);
|
this.render.startRenderPass(tileParams.level, dataBounds);
|
||||||
|
|
||||||
|
var _render = this.render;
|
||||||
|
window.runHooks ('mapDataEntityInject', {callback: function(ents) { _render.processGameEntities(ents);}});
|
||||||
|
|
||||||
|
|
||||||
this.render.processGameEntities(artifact.getArtifactEntities());
|
this.render.processGameEntities(artifact.getArtifactEntities());
|
||||||
|
|
||||||
|
62
plugins/cache-details-on-map.user.js
Normal file
62
plugins/cache-details-on-map.user.js
Normal file
@ -0,0 +1,62 @@
|
|||||||
|
// ==UserScript==
|
||||||
|
// @id iitc-plugin-cache-details-on-map@jonatkins
|
||||||
|
// @name IITC plugin: Cache viewed portal details and always show them on the map
|
||||||
|
// @category Cache
|
||||||
|
// @version 0.1.0.@@DATETIMEVERSION@@
|
||||||
|
// @namespace https://github.com/jonatkins/ingress-intel-total-conversion
|
||||||
|
// @updateURL @@UPDATEURL@@
|
||||||
|
// @downloadURL @@DOWNLOADURL@@
|
||||||
|
// @description [@@BUILDNAME@@-@@BUILDDATE@@] Cache the details of recently viewed portals and use this to populate the map when possible
|
||||||
|
// @include https://www.ingress.com/intel*
|
||||||
|
// @include http://www.ingress.com/intel*
|
||||||
|
// @match https://www.ingress.com/intel*
|
||||||
|
// @match http://www.ingress.com/intel*
|
||||||
|
// @include https://www.ingress.com/mission/*
|
||||||
|
// @include http://www.ingress.com/mission/*
|
||||||
|
// @match https://www.ingress.com/mission/*
|
||||||
|
// @match http://www.ingress.com/mission/*
|
||||||
|
// @grant none
|
||||||
|
// ==/UserScript==
|
||||||
|
|
||||||
|
@@PLUGINSTART@@
|
||||||
|
|
||||||
|
// PLUGIN START ////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
|
||||||
|
// use own namespace for plugin
|
||||||
|
window.plugin.cachePortalDetailsOnMap = function() {};
|
||||||
|
|
||||||
|
window.plugin.cachePortalDetailsOnMap.MAX_AGE = 12*60*60; //12 hours max age for cached data
|
||||||
|
|
||||||
|
window.plugin.cachePortalDetailsOnMap.portalDetailLoaded = function(data) {
|
||||||
|
window.plugin.cachePortalDetailsOnMap.cache[data.guid] = { loadtime: Date.now(), ent: data.ent };
|
||||||
|
};
|
||||||
|
|
||||||
|
window.plugin.cachePortalDetailsOnMap.entityInject = function(data) {
|
||||||
|
var maxAge = Date.now() - window.plugin.cachePortalDetailsOnMap.MAX_AGE*1000;
|
||||||
|
|
||||||
|
var ents = [];
|
||||||
|
for (var guid in window.plugin.cachePortalDetailsOnMap.cache) {
|
||||||
|
if (window.plugin.cachePortalDetailsOnMap.cache[guid].loadtime < maxAge) {
|
||||||
|
window.plugin.cachePortalDetailsOnMap.cache.delete(guid);
|
||||||
|
} else {
|
||||||
|
ents.push(window.plugin.cachePortalDetailsOnMap.cache[guid].ent);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
data.callback(ents);
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
window.plugin.cachePortalDetailsOnMap.setup = function() {
|
||||||
|
|
||||||
|
window.plugin.cachePortalDetailsOnMap.cache = {};
|
||||||
|
|
||||||
|
addHook('portalDetailLoaded', window.plugin.cachePortalDetailsOnMap.portalDetailLoaded);
|
||||||
|
addHook('mapDataEntityInject', window.plugin.cachePortalDetailsOnMap.entityInject);
|
||||||
|
};
|
||||||
|
|
||||||
|
var setup = window.plugin.cachePortalDetailsOnMap.setup;
|
||||||
|
|
||||||
|
// PLUGIN END //////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
@@PLUGINEND@@
|
Loading…
x
Reference in New Issue
Block a user