From 9effe1630d97039b3e01cd9b58ed07e75be1d63c Mon Sep 17 00:00:00 2001 From: James Moger <james.moger@gitblit.com> Date: Mon, 25 Feb 2013 08:40:30 -0500 Subject: [PATCH] Merge pull request #75 from thefake/master --- src/com/gitblit/wicket/pages/MetricsPage.java | 67 +++++++++++++++------------------ 1 files changed, 31 insertions(+), 36 deletions(-) diff --git a/src/com/gitblit/wicket/pages/MetricsPage.java b/src/com/gitblit/wicket/pages/MetricsPage.java index c6231e9..5904a64 100644 --- a/src/com/gitblit/wicket/pages/MetricsPage.java +++ b/src/com/gitblit/wicket/pages/MetricsPage.java @@ -17,16 +17,16 @@ import java.awt.Color; import java.awt.Dimension; -import java.text.ParseException; +import java.text.MessageFormat; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Calendar; import java.util.Collections; import java.util.Comparator; -import java.util.Date; import java.util.List; import org.apache.wicket.PageParameters; +import org.apache.wicket.markup.html.basic.Label; import org.eclipse.jgit.lib.Repository; import org.wicketstuff.googlecharts.Chart; import org.wicketstuff.googlecharts.ChartAxis; @@ -40,6 +40,7 @@ import com.gitblit.models.Metric; import com.gitblit.utils.MetricUtils; +import com.gitblit.utils.StringUtils; import com.gitblit.wicket.WicketUtils; public class MetricsPage extends RepositoryPage { @@ -47,17 +48,31 @@ public MetricsPage(PageParameters params) { super(params); Repository r = getRepository(); - insertLinePlot("commitsChart", MetricUtils.getDateMetrics(r, false, null)); - insertBarPlot("dayOfWeekChart", getDayOfWeekMetrics(r)); - insertLinePlot("timeOfDayChart", getTimeOfDayMetrics(r)); - insertPieChart("authorsChart", getAuthorMetrics(r)); + if (StringUtils.isEmpty(objectId)) { + add(new Label("branchTitle", getRepositoryModel().HEAD)); + } else { + add(new Label("branchTitle", objectId)); + } + Metric metricsTotal = null; + List<Metric> metrics = MetricUtils.getDateMetrics(r, objectId, true, null, getTimeZone()); + metricsTotal = metrics.remove(0); + if (metricsTotal == null) { + add(new Label("branchStats", "")); + } else { + add(new Label("branchStats", + MessageFormat.format(getString("gb.branchStats"), metricsTotal.count, + metricsTotal.tag, getTimeUtils().duration(metricsTotal.duration)))); + } + insertLinePlot("commitsChart", metrics); + insertBarPlot("dayOfWeekChart", getDayOfWeekMetrics(r, objectId)); + insertPieChart("authorsChart", getAuthorMetrics(r, objectId)); } private void insertLinePlot(String wicketId, List<Metric> metrics) { if ((metrics != null) && (metrics.size() > 0)) { IChartData data = WicketUtils.getChartData(metrics); - ChartProvider provider = new ChartProvider(new Dimension(500, 100), ChartType.LINE, + ChartProvider provider = new ChartProvider(new Dimension(400, 100), ChartType.LINE, data); ChartAxis dateAxis = new ChartAxis(ChartAxisType.BOTTOM); dateAxis.setLabels(new String[] { metrics.get(0).name, @@ -82,7 +97,7 @@ if ((metrics != null) && (metrics.size() > 0)) { IChartData data = WicketUtils.getChartData(metrics); - ChartProvider provider = new ChartProvider(new Dimension(500, 100), + ChartProvider provider = new ChartProvider(new Dimension(400, 100), ChartType.BAR_VERTICAL_SET, data); ChartAxis dateAxis = new ChartAxis(ChartAxisType.BOTTOM); List<String> labels = new ArrayList<String>(); @@ -110,7 +125,7 @@ for (Metric metric : metrics) { labels.add(metric.name); } - ChartProvider provider = new ChartProvider(new Dimension(500, 200), ChartType.PIE, data); + ChartProvider provider = new ChartProvider(new Dimension(800, 200), ChartType.PIE, data); provider.setPieLabels(labels.toArray(new String[labels.size()])); add(new Chart(wicketId, provider)); } else { @@ -118,12 +133,12 @@ } } - private List<Metric> getDayOfWeekMetrics(Repository repository) { - List<Metric> list = MetricUtils.getDateMetrics(repository, false, "E"); + private List<Metric> getDayOfWeekMetrics(Repository repository, String objectId) { + List<Metric> list = MetricUtils.getDateMetrics(repository, objectId, false, "E", getTimeZone()); SimpleDateFormat sdf = new SimpleDateFormat("E"); Calendar cal = Calendar.getInstance(); - List<Metric> sorted = new ArrayList<Metric>(7); + List<Metric> sorted = new ArrayList<Metric>(); int firstDayOfWeek = cal.getFirstDayOfWeek(); int dayOfWeek = cal.get(Calendar.DAY_OF_WEEK); @@ -133,7 +148,7 @@ String day = sdf.format(cal.getTime()); for (Metric metric : list) { if (metric.name.equals(day)) { - sorted.add(i, metric); + sorted.add(metric); list.remove(metric); break; } @@ -143,35 +158,15 @@ return sorted; } - private List<Metric> getTimeOfDayMetrics(Repository repository) { - SimpleDateFormat ndf = new SimpleDateFormat("yyyy-MM-dd"); - SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm"); - List<Metric> list = MetricUtils.getDateMetrics(repository, false, "yyyy-MM-dd HH:mm"); - Calendar cal = Calendar.getInstance(); - - for (Metric metric : list) { - try { - Date date = sdf.parse(metric.name); - cal.setTime(date); - double y = cal.get(Calendar.HOUR_OF_DAY) + (cal.get(Calendar.MINUTE) / 60d); - metric.duration = (int) (date.getTime() / 60000L); - metric.count = y; - metric.name = ndf.format(date); - } catch (ParseException p) { - } - } - return list; - } - - private List<Metric> getAuthorMetrics(Repository repository) { - List<Metric> authors = MetricUtils.getAuthorMetrics(repository, true); + private List<Metric> getAuthorMetrics(Repository repository, String objectId) { + List<Metric> authors = MetricUtils.getAuthorMetrics(repository, objectId, true); Collections.sort(authors, new Comparator<Metric>() { @Override public int compare(Metric o1, Metric o2) { if (o1.count > o2.count) { return -1; } else if (o1.count < o2.count) { - return 1; + return 1; } return 0; } -- Gitblit v1.9.1