[Author Prev][Author Next][Thread Prev][Thread Next][Author Index][Thread Index]

[tor-commits] [metrics-web/release] Adds summary row to simple and aggregated search



commit cda3abd6fb91f4739d0ef8f350ba701bbc1782f5
Author: Iain R. Learmonth <irl@xxxxxxxx>
Date:   Tue Jul 10 22:33:01 2018 +0100

    Adds summary row to simple and aggregated search
    
    For the simple search, only the advertised bandwidth row is really
    aggregatable. For aggregated search, all columns except version, country
    and autonomous system are aggregated. All aggregations are just sums.
    
    Fixes: #25050
---
 .../resources/web/js/rs/views/aggregate/search.js  | 33 ++++++++++++++++++++--
 src/main/resources/web/js/rs/views/search/do.js    | 13 +++++++--
 .../web/templates/rs/aggregate/search.html         | 13 +++++++++
 src/main/resources/web/templates/rs/search/do.html | 16 +++++++++++
 4 files changed, 71 insertions(+), 4 deletions(-)

diff --git a/src/main/resources/web/js/rs/views/aggregate/search.js b/src/main/resources/web/js/rs/views/aggregate/search.js
index 5cb8c82..3c656fc 100644
--- a/src/main/resources/web/js/rs/views/aggregate/search.js
+++ b/src/main/resources/web/js/rs/views/aggregate/search.js
@@ -18,9 +18,10 @@ define([
     },
     render: function(query){
       document.title = "Relay Search";
-      var compiledTemplate = _.template(aggregateSearchTemplate)
+      var compiledTemplate = _.template(aggregateSearchTemplate);
+      var aggregates = this.collection.models;
       this.$el.html(compiledTemplate({query: query,
-                                     aggregates: this.collection.models,
+                                     aggregates: aggregates,
                                      aType: this.collection.aType,
                                      countries: CountryCodes,
                                      error: this.error,
@@ -34,6 +35,34 @@ define([
         "aaSorting": [[(this.collection.aType == "version") ? 3 : 2, "desc"]],
         "fnDrawCallback": function( oSettings ) {
           $(".tip").tooltip({'html': true});
+        },
+        "footerCallback": function( tfoot, data, start, end, display ) {
+          var sumConsensusWeight = 0;
+          var sumAdvertisedBandwidths = 0;
+          var sumGuardProbability = 0;
+          var sumMiddleProbability = 0;
+          var sumExitProbability = 0;
+          var sumRelays = 0;
+          var sumGuards = 0;
+          var sumExits = 0;
+          for (var i = 0; i < aggregates.length; i++) {
+            sumConsensusWeight += aggregates[i]["consensus_weight_fraction"];
+            sumAdvertisedBandwidths += aggregates[i]["advertised_bandwidth"];
+            sumGuardProbability += aggregates[i]["guard_probability"];
+            sumMiddleProbability += aggregates[i]["middle_probability"];
+            sumExitProbability += aggregates[i]["exit_probability"];
+            sumRelays += aggregates[i]["relays"];
+            sumGuards += aggregates[i]["guards"];
+            sumExits += aggregates[i]["exits"];
+          }
+          $(tfoot).find('th').eq(1).html((sumConsensusWeight * 100).toFixed(2) + "%");
+          $(tfoot).find('th').eq(2).html(hrBandwidth(sumAdvertisedBandwidths));
+          $(tfoot).find('th').eq(3).html((sumGuardProbability * 100).toFixed(2) + "%");
+          $(tfoot).find('th').eq(4).html((sumMiddleProbability * 100).toFixed(2) + "%");
+          $(tfoot).find('th').eq(5).html((sumExitProbability * 100).toFixed(2) + "%");
+          $(tfoot).find('th').eq(6).html(sumRelays);
+          $(tfoot).find('th').eq(7).html(sumGuards);
+          $(tfoot).find('th').eq(8).html(sumExits);
         }
       });
     },
diff --git a/src/main/resources/web/js/rs/views/search/do.js b/src/main/resources/web/js/rs/views/search/do.js
index 18b1f05..5383580 100644
--- a/src/main/resources/web/js/rs/views/search/do.js
+++ b/src/main/resources/web/js/rs/views/search/do.js
@@ -18,9 +18,10 @@ define([
     },
     render: function(query){
       document.title = "Relay Search";
-      var compiledTemplate = _.template(doSearchTemplate)
+      var compiledTemplate = _.template(doSearchTemplate);
+      var relays = this.relays;
       this.$el.html(compiledTemplate({query: query,
-                                     relays: this.relays,
+                                     relays: relays,
                                      countries: CountryCodes,
                                      error: this.error,
                                      relaysPublished: this.relaysPublished,
@@ -49,6 +50,14 @@ define([
         "aaSorting": [[2, "desc"]],
         "fnDrawCallback": function( oSettings ) {
           $(".tip").tooltip({'html':true});
+        },
+        "footerCallback": function( tfoot, data, start, end, display ) {
+          console.log(relays);
+          var sumAdvertisedBandwidths = 0;
+          for (var i = 0; i < relays.length; i++) {
+            sumAdvertisedBandwidths += relays[i].get("advertised_bandwidth");
+          }
+          $(tfoot).find('th').eq(2).html(hrBandwidth(sumAdvertisedBandwidths));
         }
       });
     },
diff --git a/src/main/resources/web/templates/rs/aggregate/search.html b/src/main/resources/web/templates/rs/aggregate/search.html
index 5775057..19e45e7 100644
--- a/src/main/resources/web/templates/rs/aggregate/search.html
+++ b/src/main/resources/web/templates/rs/aggregate/search.html
@@ -53,6 +53,19 @@
                         <th>Exit</th>
 		</tr>
 	</thead>
+	<tfoot>
+		<tr>
+                        <th colspan="<% if (aType == "version") { %>3<% } else { %>2<% } %>">Total</th>
+                        <th>&nbsp;</th>
+                        <th>&nbsp;</th>
+                        <th>&nbsp;</th>
+                        <th>&nbsp;</th>
+                        <th>&nbsp;</th>
+                        <th>&nbsp;</th>
+                        <th>&nbsp;</th>
+                        <th>&nbsp;</th>
+		</tr>
+	</tfoot>
 	<tbody>
 
 <% _.each(aggregates, function(aggregate) { %>
diff --git a/src/main/resources/web/templates/rs/search/do.html b/src/main/resources/web/templates/rs/search/do.html
index 71ec7be..4f48a50 100644
--- a/src/main/resources/web/templates/rs/search/do.html
+++ b/src/main/resources/web/templates/rs/search/do.html
@@ -68,6 +68,22 @@
 			<th>Type</th>
 		</tr>
 	</thead>
+        <tfoot>
+		<tr>
+			<th>&nbsp;</th>
+			<th>Total</th>
+			<th>&nbsp;</th>
+			<th>&nbsp;</th>
+			<th>&nbsp;</th>
+			<th>&nbsp;</th>
+			<th>&nbsp;</th>
+			<th>&nbsp;</th>
+			<th>&nbsp;</th>
+			<th>&nbsp;</th>
+			<th>&nbsp;</th>
+			<th>&nbsp;</th>
+		</tr>
+	</tfoot>
 	<tbody>
 
 <% _.each(relays, function(relay) { %>



_______________________________________________
tor-commits mailing list
tor-commits@xxxxxxxxxxxxxxxxxxxx
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits