From fc84260e4238fda10842c1bd3b9fb0cb74b95426 Mon Sep 17 00:00:00 2001 From: James Moger <james.moger@gitblit.com> Date: Mon, 04 Apr 2011 16:13:11 -0400 Subject: [PATCH] Dropped log links, created new stylesheet, added activity graph. --- src/com/gitblit/wicket/pages/SummaryPage.java | 81 +++++++++++++++++++++++++++++++++++++++- 1 files changed, 78 insertions(+), 3 deletions(-) diff --git a/src/com/gitblit/wicket/pages/SummaryPage.java b/src/com/gitblit/wicket/pages/SummaryPage.java index 84e78b4..318e3c9 100644 --- a/src/com/gitblit/wicket/pages/SummaryPage.java +++ b/src/com/gitblit/wicket/pages/SummaryPage.java @@ -1,11 +1,13 @@ package com.gitblit.wicket.pages; +import java.awt.Dimension; import java.util.Date; import java.util.List; import java.util.Map; import org.apache.wicket.PageParameters; import org.apache.wicket.markup.html.basic.Label; +import org.apache.wicket.markup.html.image.ContextImage; import org.apache.wicket.markup.repeater.Item; import org.apache.wicket.markup.repeater.data.DataView; import org.apache.wicket.markup.repeater.data.ListDataProvider; @@ -13,18 +15,26 @@ import org.eclipse.jgit.lib.Repository; import org.eclipse.jgit.revwalk.RevCommit; +import com.codecommit.wicket.AbstractChartData; +import com.codecommit.wicket.Chart; +import com.codecommit.wicket.ChartAxis; +import com.codecommit.wicket.ChartAxisType; +import com.codecommit.wicket.ChartProvider; +import com.codecommit.wicket.ChartType; +import com.codecommit.wicket.IChartData; +import com.gitblit.StoredSettings; import com.gitblit.utils.JGitUtils; import com.gitblit.wicket.GitBlitWebApp; import com.gitblit.wicket.GitBlitWebSession; import com.gitblit.wicket.LinkPanel; import com.gitblit.wicket.RepositoryPage; import com.gitblit.wicket.WicketUtils; +import com.gitblit.wicket.models.Metric; import com.gitblit.wicket.models.RefModel; import com.gitblit.wicket.panels.HeadLinksPanel; import com.gitblit.wicket.panels.RefsPanel; import com.gitblit.wicket.panels.ShortLogLinksPanel; import com.gitblit.wicket.panels.TagLinksPanel; - public class SummaryPage extends RepositoryPage { @@ -82,7 +92,7 @@ } }; add(shortlogView); - add(new LinkPanel("shortlogMore", "link", "...", ShortLogPage.class, newRepositoryParameter())); + add(new LinkPanel("shortlogMore", "link", "more...", ShortLogPage.class, newRepositoryParameter())); // tags List<RefModel> tags = JGitUtils.getTags(r, summaryCount); @@ -115,7 +125,8 @@ } }; add(tagView); - add(new LinkPanel("tagsMore", "link", "...", TagsPage.class, newRepositoryParameter())); + add(new LinkPanel("tagsMore", "link", "more...", TagsPage.class, newRepositoryParameter())); + // heads List<RefModel> heads = JGitUtils.getHeads(r, summaryCount); add(new LinkPanel("heads", "title", "heads", HeadsPage.class, newRepositoryParameter())); @@ -140,10 +151,74 @@ }; add(headsView); + // Display an activity line graph + insertActivityGraph(r); + // close the repository r.close(); // footer addFooter(); } + + private void insertActivityGraph(Repository r) { + if (StoredSettings.getBoolean("generateActivityGraph", true)) { + List<Metric> dates = JGitUtils.getDateMetrics(r); + IChartData data = getChartData(dates); + + ChartProvider provider = new ChartProvider(new Dimension(400, 80), ChartType.LINE, data); + ChartAxis dateAxis = new ChartAxis(ChartAxisType.BOTTOM); + dateAxis.setLabels(new String[] { dates.get(0).name, dates.get(dates.size() / 2).name, dates.get(dates.size() - 1).name }); + provider.addAxis(dateAxis); + + ChartAxis commitAxis = new ChartAxis(ChartAxisType.LEFT); + commitAxis.setLabels(new String[] { "", String.valueOf((int) maxValue(dates)) }); + provider.addAxis(commitAxis); + + add(new Chart("commitsChart", provider)); + } else { + add(new ContextImage("commitsChart", "blank.png")); + } + } + + protected IChartData getChartData(List<Metric> results) { + final double[] counts = new double[results.size()]; + int i = 0; + double max = 0; + for (Metric m : results) { + counts[i++] = m.count; + max = Math.max(max, m.count); + } + final double dmax = max; + IChartData data = new AbstractChartData() { + private static final long serialVersionUID = 1L; + + public double[][] getData() { + return new double[][] { counts }; + } + + public double getMax() { + return dmax; + } + }; + return data; + } + + protected String[] getNames(List<Metric> results) { + String[] names = new String[results.size()]; + for (int i = 0; i < results.size(); i++) { + names[i] = results.get(i).name; + } + return names; + } + + protected double maxValue(List<Metric> metrics) { + double max = Double.MIN_VALUE; + for (Metric m : metrics) { + if (m.count > max) { + max = m.count; + } + } + return max; + } } -- Gitblit v1.9.1