ingress-intel-total-conversion/plugins/cache-details-on-map.user.js

63 lines
2.3 KiB
JavaScript

// ==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://*.ingress.com/intel*
// @include http://*.ingress.com/intel*
// @match https://*.ingress.com/intel*
// @match http://*.ingress.com/intel*
// @include https://*.ingress.com/mission/*
// @include http://*.ingress.com/mission/*
// @match https://*.ingress.com/mission/*
// @match http://*.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) {
delete window.plugin.cachePortalDetailsOnMap.cache[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@@