提交 2205d288 编写于 作者: Y yong.you

metric report add conversion rate graph

上级 614b2436
......@@ -67,6 +67,8 @@ public class Handler implements PageHandler<Context> {
display.visitMetricReport(report);
display.buildConvertRate("/index", "/detail");
display.buildConvertRate("/detail", "/order/submitOrder");
model.setDisplay(display);
model.setReport(report);
}
......
......@@ -19,12 +19,16 @@ public class MetricDisplay extends BaseVisitor {
private Map<String, GraphItem> m_metrics = new LinkedHashMap<String, GraphItem>();
private Map<String, GraphItem> m_conversionRates = new LinkedHashMap<String, GraphItem>();
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<GraphItem> getConversionRates() {
return new ArrayList<GraphItem>(m_conversionRates.values());
}
public List<GraphItem> getGroups() {
return new ArrayList<GraphItem>(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;
}
}
}
......@@ -34,7 +34,14 @@
graph(document.getElementById('${item.title}'), data);
</c:forEach>
<c:forEach var="item" items="${model.display.conversionRates}" varStatus="status">
var data = ${item.jsonString};
graph(document.getElementById('${item.title}'), data);
</c:forEach>
});
</script>
<div class="report">
<table class="header">
......@@ -65,6 +72,11 @@
<c:forEach var="item" items="${model.display.groups}" varStatus="status">
<div style="float:left;" id="${item.title}" class="graph"></div>
</c:forEach>
<h3 class='text-center'>页面实时转化率</h3>
<c:forEach var="item" items="${model.display.conversionRates}" varStatus="status">
<div style="float:left;" id="${item.title}" class="graph"></div>
</c:forEach>
</div>
</div></div>
<table class="footer">
......
......@@ -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);
......
......@@ -212,7 +212,7 @@ org.eclipse.jdt.core.compiler.compliance=1.6
<distributionManagement>
<repository>
<id>dianping.repo</id>
<url>http://192.168.8.45:8080/artifactory/dianping-releases</url>
<url>http://192.168.8.45:8080/artifactory/dianping.repo.snapshots</url>
</repository>
</distributionManagement>
<properties>
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册