From 2205d2885ffd9aa397374a30f6d833a10916beb1 Mon Sep 17 00:00:00 2001 From: "yong.you" Date: Sun, 7 Apr 2013 16:28:47 +0800 Subject: [PATCH] metric report add conversion rate graph --- .../cat/report/page/metric/Handler.java | 2 + .../cat/report/page/metric/MetricDisplay.java | 43 ++++++++++++++++++- .../src/main/webapp/jsp/report/metric.jsp | 12 ++++++ .../cat/demo/TestBusinessMessage.java | 5 +-- pom.xml | 2 +- 5 files changed, 58 insertions(+), 6 deletions(-) diff --git a/cat-home/src/main/java/com/dianping/cat/report/page/metric/Handler.java b/cat-home/src/main/java/com/dianping/cat/report/page/metric/Handler.java index dbf7b52d4..e84676b0d 100644 --- a/cat-home/src/main/java/com/dianping/cat/report/page/metric/Handler.java +++ b/cat-home/src/main/java/com/dianping/cat/report/page/metric/Handler.java @@ -67,6 +67,8 @@ public class Handler implements PageHandler { display.visitMetricReport(report); + display.buildConvertRate("/index", "/detail"); + display.buildConvertRate("/detail", "/order/submitOrder"); model.setDisplay(display); model.setReport(report); } diff --git a/cat-home/src/main/java/com/dianping/cat/report/page/metric/MetricDisplay.java b/cat-home/src/main/java/com/dianping/cat/report/page/metric/MetricDisplay.java index d81946a4f..386106a20 100644 --- a/cat-home/src/main/java/com/dianping/cat/report/page/metric/MetricDisplay.java +++ b/cat-home/src/main/java/com/dianping/cat/report/page/metric/MetricDisplay.java @@ -19,12 +19,16 @@ public class MetricDisplay extends BaseVisitor { private Map m_metrics = new LinkedHashMap(); + private Map m_conversionRates = new LinkedHashMap(); + private String m_key; private Date m_start; private MetricConfig m_config; + private static final String COUNT = ":count"; + public MetricDisplay(MetricConfig metricConfig, Date start) { m_config = metricConfig; m_start = start; @@ -35,7 +39,7 @@ public class MetricDisplay extends BaseVisitor { m_metrics.put(title, new GraphItem(m_start, title, flag.getKey())); } if (flag.isShowCount()) { - String title = flag.getKey() + ":count"; + String title = flag.getKey() + COUNT; m_metrics.put(title, new GraphItem(m_start, title, flag.getKey())); } if (flag.isShowAvg()) { @@ -45,6 +49,33 @@ public class MetricDisplay extends BaseVisitor { } } + public MetricDisplay buildConvertRate(String key1, String key2) { + GraphItem item1 = m_metrics.get(key1 + COUNT); + GraphItem item2 = m_metrics.get(key2 + COUNT); + + if (item1 != null && item2 != null) { + String key = key1 + ":" + key2; + GraphItem item = new GraphItem(m_start, key1 + " to " + key2 + " Conversion Rate", key); + double[] value1 = item1.getValues(); + double[] value2 = item2.getValues(); + int size = item.getSize(); + double[] value = new double[size]; + + for (int i = 0; i < size; i++) { + if (value1[i] > 0) { + value[i] = value2[i] / value1[i]; + } + } + item.setValues(value); + m_conversionRates.put(key, item); + } + return this; + } + + public List getConversionRates() { + return new ArrayList(m_conversionRates.values()); + } + public List getGroups() { return new ArrayList(m_metrics.values()); } @@ -154,7 +185,15 @@ public class MetricDisplay extends BaseVisitor { public String getKey() { return key; } - + + public double[] getValues() { + return values; + } + + public void setValues(double[] values) { + this.values = values; + } + } } diff --git a/cat-home/src/main/webapp/jsp/report/metric.jsp b/cat-home/src/main/webapp/jsp/report/metric.jsp index 4f695252c..89039f4d9 100644 --- a/cat-home/src/main/webapp/jsp/report/metric.jsp +++ b/cat-home/src/main/webapp/jsp/report/metric.jsp @@ -34,7 +34,14 @@ graph(document.getElementById('${item.title}'), data); + + + var data = ${item.jsonString}; + graph(document.getElementById('${item.title}'), data); + + }); +
@@ -65,6 +72,11 @@
+

页面实时转化率

+ + +
+
diff --git a/cat-home/src/test/java/com/dianping/cat/demo/TestBusinessMessage.java b/cat-home/src/test/java/com/dianping/cat/demo/TestBusinessMessage.java index b48f28989..2e5d7627d 100644 --- a/cat-home/src/test/java/com/dianping/cat/demo/TestBusinessMessage.java +++ b/cat-home/src/test/java/com/dianping/cat/demo/TestBusinessMessage.java @@ -14,16 +14,15 @@ public class TestBusinessMessage { for (int i = 0; i < 1000; i++) { Transaction t = Cat.newTransaction("URL", "/index"); Cat.logMetric("order", "quantity" , i); - t.complete(); } - for (int i = 0; i < 1000; i++) { + for (int i = 0; i < 900; i++) { Transaction t = Cat.newTransaction("URL", "/detail"); Cat.logMetric("payment.pending", "amount" , i); t.complete(); } - for (int i = 0; i < 1000; i++) { + for (int i = 0; i < 500; i++) { Transaction t = Cat.newTransaction("URL", "/order/submitOrder"); Cat.logMetric("payment.success", "amount" , i); diff --git a/pom.xml b/pom.xml index 0a04d75e7..e32badb78 100644 --- a/pom.xml +++ b/pom.xml @@ -212,7 +212,7 @@ org.eclipse.jdt.core.compiler.compliance=1.6 dianping.repo - http://192.168.8.45:8080/artifactory/dianping-releases + http://192.168.8.45:8080/artifactory/dianping.repo.snapshots -- GitLab