X-Git-Url: https://www.nos-oignons.net/gitweb/website.git/blobdiff_plain/da67d4511d179ea18c8628c47d1d6c954e42ca8e..50cd0d282feac1e57750fbb841921298d0ae879a:/assets/relays.js?ds=sidebyside diff --git a/assets/relays.js b/assets/relays.js index 2253031..2ce5ba1 100644 --- a/assets/relays.js +++ b/assets/relays.js @@ -175,3 +175,46 @@ var nos_oignons_relays = [ color: randomColor(), } ]; + +var nos_oignons_group_colors = [ + "#DB4782", "#DAA03B", "#62A4B7", "#A58585", + "#9DCEB8", "#8077DE", "#DE5C48" +]; + +var nos_oignons_groups = (function() { + var groups = []; + var seen = {}; + nos_oignons_relays.forEach(function(r) { + var name = r.name.replace(/\d+$/, ''); + if (!seen[name]) { + seen[name] = { name: name, fingerprints: [] }; + groups.push(seen[name]); + } + seen[name].fingerprints.push(r.fingerprint); + }); + groups.forEach(function(g, i) { + g.color = nos_oignons_group_colors[i % nos_oignons_group_colors.length]; + }); + return groups; +})(); + +function buildRelayIndex(raw_relays) { + var index = {}; + raw_relays.forEach(function(r) { index[r.fingerprint] = r; }); + return index; +} + +function sumGroupRelayValues(group, relayIndex, extractFn) { + var result = null; + group.fingerprints.forEach(function(fp) { + var relay = relayIndex[fp]; + if (!relay) return; + var values = extractFn(relay); + if (!result) { + result = values.map(function(d) { return { date: d.date, y: d.y }; }); + } else { + values.forEach(function(d, i) { result[i].y += d.y; }); + } + }); + return result || []; +}