diff --git a/cat-home/src/main/java/com/dianping/cat/report/page/transaction/DisplayNames.java b/cat-home/src/main/java/com/dianping/cat/report/page/transaction/DisplayNames.java index 36400fc91e8facc080b833c70ef911cb960c0911..cff21a51ecff0c3f30dfd59168bd7f2ec00a9a3b 100644 --- a/cat-home/src/main/java/com/dianping/cat/report/page/transaction/DisplayNames.java +++ b/cat-home/src/main/java/com/dianping/cat/report/page/transaction/DisplayNames.java @@ -21,6 +21,7 @@ public class DisplayNames { public DisplayNames display(String sorted, String type, String ip, TransactionReport report, String queryName) { Map types = report.getMachines().get(ip).getTypes(); TransactionName all = new TransactionName("TOTAL"); + all.setTotalPercent(1); if (types != null) { TransactionType names = types.get(type); @@ -40,6 +41,11 @@ public class DisplayNames { } Collections.sort(m_results, new TransactionNameComparator(sorted)); + long total = all.getTotalCount(); + for (TransactionNameModel nameModel : m_results) { + TransactionName transactionName = nameModel.getDetail(); + transactionName.setTotalPercent(transactionName.getTotalCount() / (double) total); + } m_results.add(0, new TransactionNameModel("TOTAL", all)); return this; } diff --git a/cat-home/src/main/java/com/dianping/cat/report/page/transaction/Handler.java b/cat-home/src/main/java/com/dianping/cat/report/page/transaction/Handler.java index 7e9e45f7477a29b2a377409c739dfa6c864b9e8f..25222c90cd7d99604f553ff9a808f3caabed647d 100755 --- a/cat-home/src/main/java/com/dianping/cat/report/page/transaction/Handler.java +++ b/cat-home/src/main/java/com/dianping/cat/report/page/transaction/Handler.java @@ -33,6 +33,7 @@ import com.dianping.cat.report.page.model.spi.ModelRequest; import com.dianping.cat.report.page.model.spi.ModelResponse; import com.dianping.cat.report.page.model.spi.ModelService; import com.dianping.cat.report.page.model.transaction.TransactionReportMerger; +import com.dianping.cat.report.page.transaction.DisplayNames.TransactionNameModel; import com.dianping.cat.report.page.transaction.GraphPayload.AverageTimePayload; import com.dianping.cat.report.page.transaction.GraphPayload.DurationPayload; import com.dianping.cat.report.page.transaction.GraphPayload.FailurePayload; @@ -81,13 +82,15 @@ public class Handler implements PageHandler { private Gson m_gson = new Gson(); - private void buildTransactionNameGraph(String ip, String type, TransactionReport report, Model model) { + private void buildTransactionNameGraph(List names, Model model) { PieChart chart = new PieChart(); - Collection values = report.findOrCreateMachine(ip).findOrCreateType(type).getNames().values(); List items = new ArrayList(); - for (TransactionName name : values) { + + for (int i = 1; i < names.size(); i++) { + TransactionNameModel name = names.get(i); Item item = new Item(); - item.setNumber(name.getTotalCount()).setTitle(name.getId()); + TransactionName transaction = name.getDetail(); + item.setNumber(transaction.getTotalCount()).setTitle(transaction.getId()); items.add(item); } @@ -197,12 +200,21 @@ public class Handler implements PageHandler { Payload payload = ctx.getPayload(); normalize(model, payload); + String type = payload.getType(); switch (payload.getAction()) { case HOURLY_REPORT: showHourlyReport(model, payload); + if (!StringUtils.isEmpty(type)) { + buildTransactionNameGraph(model.getDisplayNameReport().getResults(), model); + } + break; case HISTORY_REPORT: showSummarizeReport(model, payload); + if (!StringUtils.isEmpty(type)) { + buildTransactionNameGraph(model.getDisplayNameReport().getResults(), model); + } + break; case HISTORY_GRAPH: m_historyGraph.buildTrendGraph(model, payload); @@ -323,7 +335,6 @@ public class Handler implements PageHandler { String ip = payload.getIpAddress(); if (!StringUtils.isEmpty(type)) { model.setDisplayNameReport(new DisplayNames().display(sorted, type, ip, report, queryName)); - buildTransactionNameGraph(ip, type, report, model); } else { model.setDisplayTypeReport(new DisplayTypes().display(sorted, ip, report)); } @@ -396,7 +407,6 @@ public class Handler implements PageHandler { if (!StringUtils.isEmpty(type)) { model.setDisplayNameReport(new DisplayNames().display(sorted, type, ip, transactionReport, payload.getQueryName())); - buildTransactionNameGraph(ip, type, transactionReport, model); } else { model.setDisplayTypeReport(new DisplayTypes().display(sorted, ip, transactionReport)); }