diff --git a/vendor/clouds3d.js b/vendor/clouds3d.js index 346398c..1396ceb 100644 --- a/vendor/clouds3d.js +++ b/vendor/clouds3d.js @@ -3613,6 +3613,7 @@ function selectEmergencyRoutes() { var top = pool.slice(0, Math.max(EMERGENCY_COUNT * 8, 24)); emergencyShuffle(top); var used = {}; + var routeFailures = []; for (var r = 0; r < top.length && emergencyRoutes.length < EMERGENCY_COUNT; r++) { var cand = top[r]; var usedKey = cand.netKey + ':' + cand.ci; @@ -3623,7 +3624,14 @@ function selectEmergencyRoutes() { var base = route.length ? route[0].d : 0; for (var rp = 0; rp < route.length; rp++) route[rp].d -= base; var len = route.length ? route[route.length - 1].d : 0; - if (len <= 0) continue; + if (len <= 0) { + routeFailures.push({ + netKey: cand.netKey, ci: cand.ci, lenKm: +cand.lenKm.toFixed(1), + nearKm: +(cand.near * KM_PER_TILE).toFixed(1), reverse: cand.reverse, + pts: route.length, rawLen: +(cand.len * KM_PER_TILE).toFixed(1) + }); + continue; + } emergencyRoutes.push({ pts: route, len: len, lenKm: len * KM_PER_TILE, nearKm: cand.near * KM_PER_TILE }); } for (var v = 0; v < emergencyRoutes.length; v++) { @@ -3646,6 +3654,13 @@ function selectEmergencyRoutes() { } : null, poolMode: poolMode, candidates: pool.length, + candidateSample: top.slice(0, 5).map(function (c) { + return { + netKey: c.netKey, ci: c.ci, lenKm: +c.lenKm.toFixed(1), + nearKm: +(c.near * KM_PER_TILE).toFixed(1), reverse: c.reverse + }; + }), + routeFailures: routeFailures.slice(0, 5), networks: nets.map(function (n) { return { key: n.key, chains: n.net.cnts.length }; }), routes: emergencyRoutes.map(function (r) { return { km: +r.lenKm.toFixed(1), nearKm: +r.nearKm.toFixed(1) }; }) };