]> nos-oignons.net Git - website.git/blobdiff - assets/relays.js
Les graphs sont maintenant groupés par noms!
[website.git] / assets / relays.js
index 2253031af856e6426445982ed2d9500bb85ea6d5..2ce5ba1083303f151bad16225c0435f855e5ce43 100644 (file)
@@ -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 || [];
+}