Merge pull request #2 from nexushoratio/master

Pull from upstream.
This commit is contained in:
nexushoratio 2013-11-24 22:54:45 -08:00
commit 5f3962f39e
13 changed files with 107 additions and 107 deletions

View File

@ -600,8 +600,8 @@ try { console.log('Loading included JS now'); } catch(e) {}
try { console.log('done loading included JS'); } catch(e) {} try { console.log('done loading included JS'); } catch(e) {}
//note: no protocol - so uses http or https as used on the current page //note: no protocol - so uses http or https as used on the current page
var JQUERY = '//ajax.googleapis.com/ajax/libs/jquery/2.0.0/jquery.min.js'; var JQUERY = '//ajax.googleapis.com/ajax/libs/jquery/2.0.3/jquery.min.js';
var JQUERYUI = '//ajax.googleapis.com/ajax/libs/jqueryui/1.10.2/jquery-ui.min.js'; var JQUERYUI = '//ajax.googleapis.com/ajax/libs/jqueryui/1.10.3/jquery-ui.min.js';
// after all scripts have loaded, boot the actual app // after all scripts have loaded, boot the actual app
load(JQUERY).then(JQUERYUI).thenRun(boot); load(JQUERY).then(JQUERYUI).thenRun(boot);

View File

@ -106,6 +106,9 @@ window.chat.genPostData = function(isFaction, storageHash, getOlderMsgs) {
// Currently this edge case is not handled. Lets see if this is a // Currently this edge case is not handled. Lets see if this is a
// problem in crowded areas. // problem in crowded areas.
$.extend(data, {minTimestampMs: min}); $.extend(data, {minTimestampMs: min});
// when requesting with an acutal minimum timestamp, request oldest rather than newest first.
// this matches the stock intel site, and ensures no gaps when continuing after an extended idle period
if (min > -1) $.extend(data, {ascendingTimestampOrder: true});
} }
return data; return data;
} }

View File

@ -91,7 +91,7 @@ window.MapDataRequest.prototype.mapMoveStart = function() {
window.MapDataRequest.prototype.mapMoveEnd = function() { window.MapDataRequest.prototype.mapMoveEnd = function() {
var bounds = clampLatLngBounds(map.getBounds()); var bounds = clampLatLngBounds(map.getBounds());
var zoom = getPortalDataZoom(); var zoom = map.getZoom();
if (this.fetchedDataParams) { if (this.fetchedDataParams) {
// we have fetched (or are fetching) data... // we have fetched (or are fetching) data...
@ -180,7 +180,7 @@ window.MapDataRequest.prototype.refresh = function() {
var bounds = clampLatLngBounds(map.getBounds()); var bounds = clampLatLngBounds(map.getBounds());
var zoom = getPortalDataZoom(); var zoom = map.getZoom();
var minPortalLevel = getMinPortalLevelForZoom(zoom); var minPortalLevel = getMinPortalLevelForZoom(zoom);
//DEBUG: resize the bounds so we only retrieve some data //DEBUG: resize the bounds so we only retrieve some data

View File

@ -326,6 +326,16 @@ window.requestDataMunge = function(data) {
}; };
var newdata = munge(data); var newdata = munge(data);
try {
newdata = nemesis.dashboard.requests.normalizeParamCount(newdata);
} catch(e) {
if (!window._mungeHaveLoggedError) {
console.warn('Failed to call the stock site normalizeParamCount() function: '+e);
window._mungeHaveLoggedError = true;
}
}
return newdata; return newdata;
} }

View File

@ -66,6 +66,12 @@ window.resolvePlayerNames = function() {
//limit per request. stock site is never more than 13 (8 res, 4 mods, owner) //limit per request. stock site is never more than 13 (8 res, 4 mods, owner)
//testing shows 15 works and 20 fails //testing shows 15 works and 20 fails
var MAX_RESOLVE_PLAYERS_PER_REQUEST = 15; var MAX_RESOLVE_PLAYERS_PER_REQUEST = 15;
var MAX_RESOLVE_REQUESTS = 8;
if (window.playersToResolve.length > MAX_RESOLVE_PLAYERS_PER_REQUEST*MAX_RESOLVE_REQUESTS) {
console.log('Warning: player name resolve queue had '+window.playersToResolve.length+' entries. Limiting to the first '+MAX_RESOLVE_PLAYERS_PER_REQUEST*MAX_RESOLVE_REQUESTS+' to prevent excessive requests');
window.playersToResolve = playersToResolve.slice(0,MAX_RESOLVE_PLAYERS_PER_REQUEST*MAX_RESOLVE_REQUESTS);
}
var p = window.playersToResolve.slice(0,MAX_RESOLVE_PLAYERS_PER_REQUEST); var p = window.playersToResolve.slice(0,MAX_RESOLVE_PLAYERS_PER_REQUEST);
window.playersToResolve = playersToResolve.slice(MAX_RESOLVE_PLAYERS_PER_REQUEST); window.playersToResolve = playersToResolve.slice(MAX_RESOLVE_PLAYERS_PER_REQUEST);

View File

@ -91,7 +91,9 @@ window.getAvgResoDist = function(d) {
var sum = 0, resos = 0; var sum = 0, resos = 0;
$.each(d.resonatorArray.resonators, function(ind, reso) { $.each(d.resonatorArray.resonators, function(ind, reso) {
if(!reso) return true; if(!reso) return true;
sum += parseInt(reso.distanceToPortal); var resDist = parseInt(reso.distanceToPortal);
if (resDist == 0) resDist = 0.01; // set a non-zero but very small distance for zero deployment distance. allows the return value to distinguish between zero deployment distance average and zero resonators
sum += resDist;
resos++; resos++;
}); });
return resos ? sum/resos : 0; return resos ? sum/resos : 0;

View File

@ -67,13 +67,7 @@ window.startRefreshTimeout = function(override) {
window.requests._quickRefreshPending = false; window.requests._quickRefreshPending = false;
t = REFRESH*1000; t = REFRESH*1000;
// new getThinnedEntitiesV4 involves a LOT more requests when zoomed out above a data level of 13 var adj = ZOOM_LEVEL_ADJ * (18 - map.getZoom());
// so, to give the refresh a chance to complete (and also reduce load on niantic servers), boost the refresh interval
// in this case
// (TODO: complete rewrite of refresh+request handling. don't start timer until complete, and retry error=TIMEOUT requests)
if (getPortalDataZoom() <=12 ) t = t*4;
var adj = ZOOM_LEVEL_ADJ * (18 - getPortalDataZoom());
if(adj > 0) t += adj*1000; if(adj > 0) t += adj*1000;
} }
var next = new Date(new Date().getTime() + t).toLocaleTimeString(); var next = new Date(new Date().getTime() + t).toLocaleTimeString();

View File

@ -146,7 +146,7 @@ window.postAjax = function(action, data, success, error) {
// and of the 'version' parameter (we assume it's a version - if missing/wrong that's what the error refers to) // and of the 'version' parameter (we assume it's a version - if missing/wrong that's what the error refers to)
versionStr = mungeOneString(versionStr); versionStr = mungeOneString(versionStr);
var post_data = JSON.stringify(window.requestDataMunge($.extend({method: methodName, version: versionStr}, data))); var post_data = JSON.stringify(window.requestDataMunge($.extend({}, data, {method: methodName, version: versionStr})));
var remove = function(data, textStatus, jqXHR) { window.requests.remove(jqXHR); }; var remove = function(data, textStatus, jqXHR) { window.requests.remove(jqXHR); };
var errCnt = function(jqXHR) { window.failedRequestCount++; window.requests.remove(jqXHR); }; var errCnt = function(jqXHR) { window.failedRequestCount++; window.requests.remove(jqXHR); };
var result = $.ajax({ var result = $.ajax({
@ -276,41 +276,20 @@ window.androidPermalink = function() {
} }
window.getPortalDataZoom = function() {
var mapZoom = map.getZoom();
// make sure we're dealing with an integer here
// (mobile: a float somehow gets through in some cases!)
var z = parseInt(mapZoom);
// limiting the maximum zoom level for data retrieval reduces the number of requests at high zoom levels
// (as all portal data is retrieved at z=17, why retrieve multiple z=18 tiles when fewer z=17 would do?)
// very effective along with the new cache code
if (z > 17) z=17;
//sanity check - should never happen
if (z < 0) z=0;
return z;
}
window.getMinPortalLevelForZoom = function(z) { window.getMinPortalLevelForZoom = function(z) {
// try to use the zoom-to-level mapping from the stock intel page, if available
var ZOOM_TO_LEVEL; // these values are from the stock intel map. however, they're too detailed for reasonable speed, and increasing
try { // detail at a higher zoom level shows enough detail still, AND speeds up IITC considerably
ZOOM_TO_LEVEL = nemesis.dashboard.zoomlevel.ZOOM_TO_LOD_; //var ZOOM_TO_LEVEL = [8, 8, 8, 8, 7, 7, 6, 6, 5, 4, 4, 3, 3, 2, 2, 1, 1];
} catch(e) { var ZOOM_TO_LEVEL = [8, 8, 8, 8, 8, 8, 7, 7, 6, 5, 4, 4, 3, 2, 2, 1, 1];
//based on code from stock gen_dashboard.js
ZOOM_TO_LEVEL = [8, 8, 8, 8, 7, 7, 6, 6, 5, 4, 4, 3, 3, 2, 2, 1, 1];
}
var l = ZOOM_TO_LEVEL[z] || 0; var l = ZOOM_TO_LEVEL[z] || 0;
return l; return l;
} }
window.getMinPortalLevel = function() { window.getMinPortalLevel = function() {
var z = getPortalDataZoom(); var z = map.getZoom();
return getMinPortalLevelForZoom(z); return getMinPortalLevelForZoom(z);
} }

View File

@ -142,7 +142,7 @@ window.CHAT_MIN_RANGE = 6;
window.VIEWPORT_PAD_RATIO = 0.3; window.VIEWPORT_PAD_RATIO = 0.3;
// how many items to request each query // how many items to request each query
window.CHAT_PUBLIC_ITEMS = 200; window.CHAT_PUBLIC_ITEMS = 50;
window.CHAT_FACTION_ITEMS = 50; window.CHAT_FACTION_ITEMS = 50;
// how many pixels to the top before requesting new data // how many pixels to the top before requesting new data
window.CHAT_REQUEST_SCROLL_TOP = 200; window.CHAT_REQUEST_SCROLL_TOP = 200;

View File

@ -0,0 +1,51 @@
// ==UserScript==
// @id iitc-plugin-default-intel-detail@jonatkins
// @name IITC plugin: Default intel detail level
// @category Tweaks
// @version 0.1.0.@@DATETIMEVERSION@@
// @namespace https://github.com/jonatkins/ingress-intel-total-conversion
// @updateURL @@UPDATEURL@@
// @downloadURL @@DOWNLOADURL@@
// @description [@@BUILDNAME@@-@@BUILDDATE@@] Use the portal level detail levels from the standard intel site. By default, IITC shows less detail when zoomed out, as this is enough for general use, is more friendly to the niantic servers, and loads much faster. This plugin restores the default zoom level to portal level mapping. Note: using this plugin causes a larger number of requests to the intel server, and at high resolutions can cause excessive requests to be made (yes: the default intel site also has this problem!), so it is not recommended except for low resolution screens.
// @include https://www.ingress.com/intel*
// @include http://www.ingress.com/intel*
// @match https://www.ingress.com/intel*
// @match http://www.ingress.com/intel*
// @grant none
// ==/UserScript==
@@PLUGINSTART@@
// PLUGIN START ////////////////////////////////////////////////////////
// use own namespace for plugin
window.plugin.defaultIntelDetail = function() {};
window.plugin.defaultIntelDetail.setup = function() {
var stockIntelDetail = nemesis.dashboard.zoomlevel.ZOOM_TO_LOD_;
// save the original function - so we can chain to it for levels we don't modify
var origGetMinPortalLevelForZoom = window.getMinPortalLevelForZoom;
// replace the window.getMinPortalLevelForZoom function - modify behaviour when L1+ or L3+ portals are shown
window.getMinPortalLevelForZoom = function(z) {
// for the further out zoom levels, use the stock intel site detail levels
if (z <= 11) {
return stockIntelDetail[z];
}
// for the closer zoom levels, stock intel and IITC default is the same. falling back
// in this case allows this plugin to work alongside show-more-portals
return origGetMinPortalLevelForZoom(z);
}
};
var setup = window.plugin.defaultIntelDetail.setup;
// PLUGIN END //////////////////////////////////////////////////////////
@@PLUGINEND@@

View File

@ -2,7 +2,7 @@
// @id iitc-plugin-highlight-bad-deployment-distance@cathesaurus // @id iitc-plugin-highlight-bad-deployment-distance@cathesaurus
// @name IITC plugin: highlight badly-deployed portals // @name IITC plugin: highlight badly-deployed portals
// @category Highlighter // @category Highlighter
// @version 0.1.0.@@DATETIMEVERSION@@ // @version 0.1.1.@@DATETIMEVERSION@@
// @namespace https://github.com/jonatkins/ingress-intel-total-conversion // @namespace https://github.com/jonatkins/ingress-intel-total-conversion
// @updateURL @@UPDATEURL@@ // @updateURL @@UPDATEURL@@
// @downloadURL @@DOWNLOADURL@@ // @downloadURL @@DOWNLOADURL@@
@ -25,12 +25,15 @@ window.plugin.portalHighlighterBadDeploymentDistance.highlight = function(data)
var d = data.portal.options.details; var d = data.portal.options.details;
var portal_deployment = 0; var portal_deployment = 0;
if(getTeam(d) !== 0) { if(getTeam(d) !== 0) {
if(window.getAvgResoDist(d) > 0 && window.getAvgResoDist(d) < window.HACK_RANGE*0.9) { var avgDist = window.getAvgResoDist(d);
portal_deployment = (window.HACK_RANGE - window.getAvgResoDist(d))/window.HACK_RANGE; if(avgDist > 0 && avgDist < window.HACK_RANGE*0.9) {
portal_deployment = (window.HACK_RANGE - avgDist)/window.HACK_RANGE;
} }
if(portal_deployment > 0) { if(portal_deployment > 0) {
var fill_opacity = portal_deployment*.85 + .15; var fill_opacity = portal_deployment*.85 + .15;
color = 'red'; // magenta for *exceptionally* close deployments (spoofing? under 1m average), then shades of
// red, orange and yellow for further out
color = avgDist < 1 ? 'magenta' : avgDist < (window.HACK_RANGE*.25) ? 'red' : avgDist < (window.HACK_RANGE*.6) ? 'orange' : 'yellow';
var params = {fillColor: color, fillOpacity: fill_opacity}; var params = {fillColor: color, fillOpacity: fill_opacity};
data.portal.setStyle(params); data.portal.setStyle(params);
} }

View File

@ -1,12 +1,12 @@
// ==UserScript== // ==UserScript==
// @id iitc-plugin-show-less-portals@jonatkins // @id iitc-plugin-show-less-portals@jonatkins
// @name IITC plugin: Show less portals when zoomed out // @name IITC plugin: Show less portals when zoomed out
// @category Tweaks // @category Deleted
// @version 0.1.4.@@DATETIMEVERSION@@ // @version 0.2.0.@@DATETIMEVERSION@@
// @namespace https://github.com/jonatkins/ingress-intel-total-conversion // @namespace https://github.com/jonatkins/ingress-intel-total-conversion
// @updateURL @@UPDATEURL@@ // @updateURL @@UPDATEURL@@
// @downloadURL @@DOWNLOADURL@@ // @downloadURL @@DOWNLOADURL@@
// @description [@@BUILDNAME@@-@@BUILDDATE@@] Decrease the portal detail level used when zoomed out. This can speed up map loading, decrease the amount of data used, and solve excessive request issues. Only applies when zoomed out to show no closer than L3 portals. May stop display of the smaller links/fields. // @description [@@BUILDNAME@@-@@BUILDDATE@@] IITC now defaults to showing fewer portals when zoomed out, making this plugin unnecessary
// @include https://www.ingress.com/intel* // @include https://www.ingress.com/intel*
// @include http://www.ingress.com/intel* // @include http://www.ingress.com/intel*
// @match https://www.ingress.com/intel* // @match https://www.ingress.com/intel*
@ -14,46 +14,3 @@
// @grant none // @grant none
// ==/UserScript== // ==/UserScript==
@@PLUGINSTART@@
// PLUGIN START ////////////////////////////////////////////////////////
// use own namespace for plugin
window.plugin.showLessPortals = function() {};
window.plugin.showLessPortals.setup = function() {
// save the original function - so we can chain to it for levels we don't modify
var origGetPortalDataZoom = window.getPortalDataZoom;
// replace the window.getPortalDataZoom function - modify behaviour when zoomed close
window.getPortalDataZoom = function() {
var mapZoom = map.getZoom();
// the latest intel site update, as of 2013-10-16, requests a silly number of map tiles at the larger zoom levels
// IITC matches the behaviour by default, but it makes sense to reduce the detail level sooner
// at the largest scale zooms - move back two levels
if (mapZoom <= 7) {
return Math.max(mapZoom-2,0);
}
// intermediate zoom levels - move back one
if (mapZoom <= 11) {
return Math.max(mapZoom-1,0);
}
// otherwise revert to default behaviour
return origGetPortalDataZoom();
}
};
var setup = window.plugin.showLessPortals.setup;
// PLUGIN END //////////////////////////////////////////////////////////
@@PLUGINEND@@

View File

@ -2,11 +2,11 @@
// @id iitc-plugin-show-more-portals@jonatkins // @id iitc-plugin-show-more-portals@jonatkins
// @name IITC plugin: Show more portals // @name IITC plugin: Show more portals
// @category Tweaks // @category Tweaks
// @version 0.1.5.@@DATETIMEVERSION@@ // @version 0.1.6.@@DATETIMEVERSION@@
// @namespace https://github.com/jonatkins/ingress-intel-total-conversion // @namespace https://github.com/jonatkins/ingress-intel-total-conversion
// @updateURL @@UPDATEURL@@ // @updateURL @@UPDATEURL@@
// @downloadURL @@DOWNLOADURL@@ // @downloadURL @@DOWNLOADURL@@
// @description [@@BUILDNAME@@-@@BUILDDATE@@] Boost the detail level of portals shown so that unclaimed portals are visible when normally L1+ portals would be shown, and L2+ are visible when normally L3+ are shown // @description [@@BUILDNAME@@-@@BUILDDATE@@] Boost the detail level of portals shown so that unclaimed portals are visible when normally L1+ portals would be shown, and L2+ are visible when normally L3+ are shown. Recent protocol changes by Niantic means this no longer sends more requests than the standard intel site, and can mean fewer requests.
// @include https://www.ingress.com/intel* // @include https://www.ingress.com/intel*
// @include http://www.ingress.com/intel* // @include http://www.ingress.com/intel*
// @match https://www.ingress.com/intel* // @match https://www.ingress.com/intel*
@ -25,29 +25,24 @@ window.plugin.showMorePortals = function() {};
window.plugin.showMorePortals.setup = function() { window.plugin.showMorePortals.setup = function() {
// save the original function - so we can chain to it for levels we don't modify // save the original function - so we can chain to it for levels we don't modify
var origGetPortalDataZoom = window.getPortalDataZoom; var origGetMinPortalLevelForZoom = window.getMinPortalLevelForZoom;
// replace the window.getPortalDataZoom function - modify behaviour when zoomed close // replace the window.getMinPortalLevelForZoom function - modify behaviour when L1+ or L3+ portals are shown
window.getPortalDataZoom = function() { window.getMinPortalLevelForZoom = function(z) {
var mapZoom = map.getZoom(); var level = origGetMinPortalLevelForZoom(z);
// as of 2013-10-16... // as of 2013-10-16...
// the stock site uses the same tile size for both L1+ portals and all portals // the stock site uses the same tile size for both L1+ portals and all portals
// therefore, changing the L1+ zoom levels into all portals zoom level is not unfriendly to the servers // therefore, changing the L1+ zoom levels into all portals zoom level is not unfriendly to the servers
// and the same applies for L2+ and L3+ detail levels
// (in some ways it's nicer, as IITC caches better) // (in some ways it's nicer, as IITC caches better)
if (mapZoom >= 15) {
return 17;
}
// and, the same scale for L2+ and L3+ portals. again, forcing the level down isn't unfriendly to the servers if (level == 1) level = 0;
// (ditto on the caching) if (level == 3) level = 2;
if (mapZoom >= 12) {
return 13;
}
return origGetPortalDataZoom(); return level;
} }