From f76fee63ed9cb3a30d3c0c092d860b1cb93a481b Mon Sep 17 00:00:00 2001 From: Gerard Smyth <gerard.smyth@gmail.com> Date: Thu, 08 May 2014 13:09:30 -0400 Subject: [PATCH] Updated the SyndicationServlet to provide an additional option to return details of the tags in the repository instead of the commits. This uses a new 'ot' request parameter to indicate the object type of the content to return, which can be ither TAG or COMMIT. If this is not provided, then COMMIT is assumed to maintain backwards compatability. If tags are returned, then the paging parameters, 'l' and 'pg' are still supported, but searching options are currently ignored. --- src/main/java/com/gitblit/wicket/pages/DashboardPage.java | 89 +++++++++++++++++++++++--------------------- 1 files changed, 47 insertions(+), 42 deletions(-) diff --git a/src/main/java/com/gitblit/wicket/pages/DashboardPage.java b/src/main/java/com/gitblit/wicket/pages/DashboardPage.java index 0af46c7..9c10e01 100644 --- a/src/main/java/com/gitblit/wicket/pages/DashboardPage.java +++ b/src/main/java/com/gitblit/wicket/pages/DashboardPage.java @@ -34,10 +34,12 @@ import org.apache.wicket.markup.html.panel.Fragment; import org.eclipse.jgit.lib.Repository; -import com.gitblit.GitBlit; import com.gitblit.Keys; import com.gitblit.models.DailyLogEntry; +import com.gitblit.models.Menu.ParameterMenuItem; +import com.gitblit.models.NavLink.DropDownPageMenuNavLink; import com.gitblit.models.Metric; +import com.gitblit.models.NavLink; import com.gitblit.models.RefLogEntry; import com.gitblit.models.RepositoryCommit; import com.gitblit.models.RepositoryModel; @@ -46,12 +48,9 @@ import com.gitblit.utils.RefLogUtils; import com.gitblit.utils.StringUtils; import com.gitblit.wicket.GitBlitWebApp; -import com.gitblit.wicket.PageRegistration; -import com.gitblit.wicket.PageRegistration.DropDownMenuItem; -import com.gitblit.wicket.PageRegistration.DropDownMenuRegistration; -import com.gitblit.wicket.charting.GoogleChart; -import com.gitblit.wicket.charting.GoogleCharts; -import com.gitblit.wicket.charting.GooglePieChart; +import com.gitblit.wicket.charting.Chart; +import com.gitblit.wicket.charting.Charts; +import com.gitblit.wicket.charting.Flotr2Charts; import com.gitblit.wicket.panels.DigestsPanel; import com.gitblit.wicket.panels.LinkPanel; @@ -75,7 +74,7 @@ c.add(Calendar.DATE, -1*daysBack); Date minimumDate = c.getTime(); TimeZone timezone = getTimeZone(); - + // create daily commit digest feed List<DailyLogEntry> digests = new ArrayList<DailyLogEntry>(); for (RepositoryModel model : repositories) { @@ -83,13 +82,13 @@ continue; } if (model.hasCommits && model.lastChange.after(minimumDate)) { - Repository repository = GitBlit.self().getRepository(model.name); + Repository repository = app().repositories().getRepository(model.name); List<DailyLogEntry> entries = RefLogUtils.getDailyLogByRef(model.name, repository, minimumDate, timezone); digests.addAll(entries); repository.close(); } } - + Fragment activityFragment = new Fragment("activity", "activityFragment", this); add(activityFragment); activityFragment.add(new Label("feedTitle", feedTitle)); @@ -118,12 +117,12 @@ DigestsPanel digestsPanel = new DigestsPanel("digests", digests); activityFragment.add(digestsPanel); } - + // add the nifty charts if (!ArrayUtils.isEmpty(digests)) { // aggregate author exclusions Set<String> authorExclusions = new TreeSet<String>(); - for (String author : GitBlit.getStrings(Keys.web.metricAuthorExclusions)) { + for (String author : app().settings().getStrings(Keys.web.metricAuthorExclusions)) { authorExclusions.add(author.toLowerCase()); } for (RepositoryModel model : repositories) { @@ -140,30 +139,30 @@ activityFragment.add(new Label("feedheader").setVisible(false)); } } - + @Override - protected void addDropDownMenus(List<PageRegistration> pages) { + protected void addDropDownMenus(List<NavLink> navLinks) { PageParameters params = getPageParameters(); - DropDownMenuRegistration menu = new DropDownMenuRegistration("gb.filters", - GitBlitWebApp.HOME_PAGE_CLASS); + DropDownPageMenuNavLink menu = new DropDownPageMenuNavLink("gb.filters", + GitBlitWebApp.get().getHomePage()); // preserve repository filter option on time choices menu.menuItems.addAll(getTimeFilterItems(params)); if (menu.menuItems.size() > 0) { // Reset Filter - menu.menuItems.add(new DropDownMenuItem(getString("gb.reset"), null, null)); + menu.menuItems.add(new ParameterMenuItem(getString("gb.reset"))); } - pages.add(menu); + navLinks.add(menu); } /** * Creates the daily activity line chart, the active repositories pie chart, * and the active authors pie chart - * + * * @param recentChanges * @param authorExclusions * @param daysBack @@ -183,7 +182,7 @@ repositoryMetrics.put(repository, new Metric(repository)); } repositoryMetrics.get(repository).count += 1; - + for (RepositoryCommit commit : change.getCommits()) { totalCommits++; String author = StringUtils.removeNewlines(commit.getAuthorIdent().getName()); @@ -197,7 +196,7 @@ } } } - + String headerPattern; if (daysBack == 1) { // today @@ -217,28 +216,34 @@ frag.add(new Label("feedheader", MessageFormat.format(headerPattern, daysBack, totalCommits, authorMetrics.size()))); - // build google charts - GoogleCharts charts = new GoogleCharts(); + if (app().settings().getBoolean(Keys.web.generateActivityGraph, true)) { + // build google charts + Charts charts = new Flotr2Charts(); - // active repositories pie chart - GoogleChart chart = new GooglePieChart("chartRepositories", getString("gb.activeRepositories"), - getString("gb.repository"), getString("gb.commits")); - for (Metric metric : repositoryMetrics.values()) { - chart.addValue(metric.name, metric.count); + // active repositories pie chart + Chart chart = charts.createPieChart("chartRepositories", getString("gb.activeRepositories"), + getString("gb.repository"), getString("gb.commits")); + for (Metric metric : repositoryMetrics.values()) { + chart.addValue(metric.name, metric.count); + } + chart.setShowLegend(false); + String url = urlFor(SummaryPage.class, null).toString() + "?r="; + chart.setClickUrl(url); + charts.addChart(chart); + + // active authors pie chart + chart = charts.createPieChart("chartAuthors", getString("gb.activeAuthors"), + getString("gb.author"), getString("gb.commits")); + for (Metric metric : authorMetrics.values()) { + chart.addValue(metric.name, metric.count); + } + chart.setShowLegend(false); + charts.addChart(chart); + + add(new HeaderContributor(charts)); + frag.add(new Fragment("charts", "chartsFragment", this)); + } else { + frag.add(new Label("charts").setVisible(false)); } - chart.setShowLegend(false); - charts.addChart(chart); - - // active authors pie chart - chart = new GooglePieChart("chartAuthors", getString("gb.activeAuthors"), - getString("gb.author"), getString("gb.commits")); - for (Metric metric : authorMetrics.values()) { - chart.addValue(metric.name, metric.count); - } - chart.setShowLegend(false); - charts.addChart(chart); - - add(new HeaderContributor(charts)); - frag.add(new Fragment("charts", "chartsFragment", this)); } } -- Gitblit v1.9.1