[or-cvs] [metrics-web/master] Add resolution parameter to user graphs and sort countries.
karsten at torproject.org
karsten at torproject.org
Mon Jan 31 10:36:21 UTC 2011
commit f6cf3c778e92ed59de6b4022881131b4e4843de2
Author: Karsten Loesing <karsten.loesing at gmx.net>
Date: Mon Jan 31 11:35:15 2011 +0100
Add resolution parameter to user graphs and sort countries.
---
rserve/graphs.R | 8 ++--
.../ernie/web/GraphParameterChecker.java | 24 ++++++++-
web/WEB-INF/users.jsp | 56 ++++++++++++--------
3 files changed, 60 insertions(+), 28 deletions(-)
diff --git a/rserve/graphs.R b/rserve/graphs.R
index 89bd3ac..3d0da80 100644
--- a/rserve/graphs.R
+++ b/rserve/graphs.R
@@ -212,7 +212,7 @@ plot_relayflags_hour <- function(start, end, flags, path) {
ggsave(filename = path, width = 8, height = 5, dpi = 72)
}
-plot_direct_users <- function(start, end, country, path) {
+plot_direct_users <- function(start, end, country, path, dpi) {
drv <- dbDriver("PostgreSQL")
con <- dbConnect(drv, user = dbuser, password = dbpassword, dbname = db)
q <- paste("SELECT date, r, bwp, brn, bwn, brp, bwr, brr ",
@@ -260,10 +260,10 @@ plot_direct_users <- function(start, end, country, path) {
scale_y_continuous(name = "", limits = c(0, max(u$users,
na.rm = TRUE)), formatter = formatter) +
opts(title = title)
- ggsave(filename = path, width = 8, height = 5, dpi = 72)
+ ggsave(filename = path, width = 8, height = 5, dpi = as.numeric(dpi))
}
-plot_bridge_users <- function(start, end, country, path) {
+plot_bridge_users <- function(start, end, country, path, dpi) {
drv <- dbDriver("PostgreSQL")
con <- dbConnect(drv, user = dbuser, password = dbpassword, dbname = db)
q <- paste("SELECT date, users FROM bridge_stats ",
@@ -308,7 +308,7 @@ plot_bridge_users <- function(start, end, country, path) {
scale_y_continuous(name = "", limits = c(0, max(bridgeusers$users,
na.rm = TRUE)), formatter = formatter) +
opts(title = title)
- ggsave(filename = path, width = 8, height = 5, dpi = 72)
+ ggsave(filename = path, width = 8, height = 5, dpi = as.numeric(dpi))
}
plot_gettor <- function(start, end, bundle, path) {
diff --git a/src/org/torproject/ernie/web/GraphParameterChecker.java b/src/org/torproject/ernie/web/GraphParameterChecker.java
index 3d1648b..fe9bc3b 100644
--- a/src/org/torproject/ernie/web/GraphParameterChecker.java
+++ b/src/org/torproject/ernie/web/GraphParameterChecker.java
@@ -48,9 +48,9 @@ public class GraphParameterChecker {
this.availableGraphs.put("bandwidth", "start,end,filename");
this.availableGraphs.put("dirbytes", "start,end,filename");
this.availableGraphs.put("direct-users",
- "start,end,country,filename");
+ "start,end,country,filename,dpi");
this.availableGraphs.put("bridge-users",
- "start,end,country,filename");
+ "start,end,country,filename,dpi");
this.availableGraphs.put("gettor", "start,end,bundle,filename");
this.availableGraphs.put("torperf",
"start,end,source,filesize,filename");
@@ -68,6 +68,7 @@ public class GraphParameterChecker {
this.knownParameterValues.put("bundle", "all,en,zh_CN,fa");
this.knownParameterValues.put("source", "all,siv,moria,torperf");
this.knownParameterValues.put("filesize", "50kb,1mb,5mb");
+ this.knownParameterValues.put("dpi", "72,150,300");
}
/**
@@ -263,6 +264,25 @@ public class GraphParameterChecker {
}
}
+
+ /* Parse graph resolution in dpi. The default is 72. */
+ if (supportedGraphParameters.contains("dpi")) {
+ String[] dpiParameter = (String[]) requestParameters.get("dpi");
+ if (dpiParameter != null) {
+ List<String> knownDpis = Arrays.asList(
+ this.knownParameterValues.get("dpi").split(","));
+ if (dpiParameter.length != 1 ||
+ dpiParameter[0] == null ||
+ !Pattern.matches("[0-9]{1,4}", dpiParameter[0]) ||
+ !knownDpis.contains(dpiParameter[0])) {
+ return null;
+ }
+ } else {
+ dpiParameter = new String[] { "72" };
+ }
+ recognizedGraphParameters.put("dpi", dpiParameter);
+ }
+
/* We now have a map with all required graph parameters. Return it. */
return recognizedGraphParameters;
}
diff --git a/web/WEB-INF/users.jsp b/web/WEB-INF/users.jsp
index bbca073..bc98e9c 100644
--- a/web/WEB-INF/users.jsp
+++ b/web/WEB-INF/users.jsp
@@ -37,50 +37,56 @@ based on the requests seen by a few dozen directory mirrors.</p>
</p><p>
Source: <select name="country">
<option value="all" selected>All users</option>
- <option value="ae">United Arab Emirates</option>
+ <option value="dz">Algeria</option>
<option value="au">Australia</option>
<option value="bh">Bahrain</option>
<option value="br">Brazil</option>
+ <option value="mm">Burma</option>
<option value="ca">Canada</option>
<option value="cn">China</option>
<option value="cu">Cuba</option>
- <option value="de">Germany</option>
<option value="dj">Djibouti</option>
- <option value="dz">Algeria</option>
<option value="eg">Egypt</option>
<option value="et">Ethiopia</option>
<option value="fr">France</option>
- <option value="gb">U.K.</option>
- <option value="il">Israel</option>
+ <option value="de">Germany</option>
<option value="ir">Iran</option>
- <option value="it">Italy</option>
<option value="iq">Iraq</option>
- <option value="jo">Jordan</option>
+ <option value="il">Israel</option>
+ <option value="it">Italy</option>
<option value="jp">Japan</option>
- <option value="kp">North Korea</option>
- <option value="kr">South Korea</option>
+ <option value="jo">Jordan</option>
<option value="kw">Kuwait</option>
<option value="lb">Lebanon</option>
<option value="ly">Libya</option>
<option value="ma">Morocco</option>
- <option value="mm">Burma</option>
+ <option value="kp">North Korea</option>
<option value="om">Oman</option>
- <option value="pl">Poland</option>
<option value="ps">Palestinian territories</option>
+ <option value="pl">Poland</option>
<option value="qa">Qatar</option>
<option value="ru">Russia</option>
<option value="sa">Saudi Arabia</option>
+ <option value="kr">South Korea</option>
<option value="sd">Sudan</option>
<option value="se">Sweden</option>
<option value="sy">Syria</option>
<option value="tn">Tunisia</option>
<option value="tm">Turkmenistan</option>
+ <option value="ae">U.A.E.</option>
+ <option value="gb">U.K.</option>
<option value="us">U.S.A.</option>
<option value="uz">Uzbekistan</option>
<option value="vn">Vietnam</option>
<option value="ye">Yemen</option>
</select>
</p><p>
+ Resolution: <select name="dpi">
+ <option value="72" selected>Screen - 576x360</option>
+ <option value="150">Print low - 1200x750</option>
+ <option value="300">Print high - 2400x1500</option>
+ </select>
+ </p><p>
<input class="submit" type="submit" value="Update graph">
</p>
</div>
@@ -114,50 +120,56 @@ by a few hundred bridges.</p>
</p><p>
Source: <select name="country">
<option value="all" selected>All users</option>
- <option value="ae">United Arab Emirates</option>
+ <option value="dz">Algeria</option>
<option value="au">Australia</option>
<option value="bh">Bahrain</option>
<option value="br">Brazil</option>
+ <option value="mm">Burma</option>
<option value="ca">Canada</option>
<option value="cn">China</option>
<option value="cu">Cuba</option>
- <option value="de">Germany</option>
<option value="dj">Djibouti</option>
- <option value="dz">Algeria</option>
<option value="eg">Egypt</option>
<option value="et">Ethiopia</option>
<option value="fr">France</option>
- <option value="gb">U.K.</option>
- <option value="il">Israel</option>
+ <option value="de">Germany</option>
<option value="ir">Iran</option>
- <option value="it">Italy</option>
<option value="iq">Iraq</option>
- <option value="jo">Jordan</option>
+ <option value="il">Israel</option>
+ <option value="it">Italy</option>
<option value="jp">Japan</option>
- <option value="kp">North Korea</option>
- <option value="kr">South Korea</option>
+ <option value="jo">Jordan</option>
<option value="kw">Kuwait</option>
<option value="lb">Lebanon</option>
<option value="ly">Libya</option>
<option value="ma">Morocco</option>
- <option value="mm">Burma</option>
+ <option value="kp">North Korea</option>
<option value="om">Oman</option>
- <option value="pl">Poland</option>
<option value="ps">Palestinian territories</option>
+ <option value="pl">Poland</option>
<option value="qa">Qatar</option>
<option value="ru">Russia</option>
<option value="sa">Saudi Arabia</option>
+ <option value="kr">South Korea</option>
<option value="sd">Sudan</option>
<option value="se">Sweden</option>
<option value="sy">Syria</option>
<option value="tn">Tunisia</option>
<option value="tm">Turkmenistan</option>
+ <option value="ae">U.A.E.</option>
+ <option value="gb">U.K.</option>
<option value="us">U.S.A.</option>
<option value="uz">Uzbekistan</option>
<option value="vn">Vietnam</option>
<option value="ye">Yemen</option>
</select>
</p><p>
+ Resolution: <select name="dpi">
+ <option value="72" selected>Screen - 576x360</option>
+ <option value="150">Print low - 1200x750</option>
+ <option value="300">Print high - 2400x1500</option>
+ </select>
+ </p><p>
<input class="submit" type="submit" value="Update graph">
</p>
</div>
More information about the tor-commits
mailing list