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/ActivityPage.java |   55 ++++++++++++++++++++++++++++++-------------------------
 1 files changed, 30 insertions(+), 25 deletions(-)

diff --git a/src/main/java/com/gitblit/wicket/pages/ActivityPage.java b/src/main/java/com/gitblit/wicket/pages/ActivityPage.java
index 99992ea..c505a66 100644
--- a/src/main/java/com/gitblit/wicket/pages/ActivityPage.java
+++ b/src/main/java/com/gitblit/wicket/pages/ActivityPage.java
@@ -29,23 +29,21 @@
 import org.apache.wicket.markup.html.basic.Label;
 import org.apache.wicket.markup.html.panel.Fragment;
 
-import com.gitblit.GitBlit;
 import com.gitblit.Keys;
 import com.gitblit.models.Activity;
+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.RepositoryModel;
 import com.gitblit.utils.ActivityUtils;
 import com.gitblit.utils.StringUtils;
 import com.gitblit.wicket.CacheControl;
 import com.gitblit.wicket.CacheControl.LastModified;
-import com.gitblit.wicket.PageRegistration;
-import com.gitblit.wicket.PageRegistration.DropDownMenuItem;
-import com.gitblit.wicket.PageRegistration.DropDownMenuRegistration;
 import com.gitblit.wicket.WicketUtils;
-import com.gitblit.wicket.charting.GoogleChart;
-import com.gitblit.wicket.charting.GoogleCharts;
-import com.gitblit.wicket.charting.GoogleLineChart;
-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.ActivityPanel;
 
 /**
@@ -66,14 +64,19 @@
 		// parameters
 		int daysBack = WicketUtils.getDaysBack(params);
 		if (daysBack < 1) {
-			daysBack = GitBlit.getInteger(Keys.web.activityDuration, 7);
+			daysBack = app().settings().getInteger(Keys.web.activityDuration, 7);
 		}
 		String objectId = WicketUtils.getObject(params);
 
 		// determine repositories to view and retrieve the activity
 		List<RepositoryModel> models = getRepositories(params);
-		List<Activity> recentActivity = ActivityUtils.getRecentActivity(models,
-				daysBack, objectId, getTimeZone());
+		List<Activity> recentActivity = ActivityUtils.getRecentActivity(
+				app().settings(),
+				app().repositories(),
+				models,
+				daysBack,
+				objectId,
+				getTimeZone());
 
 		String headerPattern;
 		if (daysBack == 1) {
@@ -113,8 +116,8 @@
 					daysBack, totalCommits, totalAuthors)));
 
 			// create the activity charts
-			if (GitBlit.getBoolean(Keys.web.generateActivityGraph, true)) {
-				GoogleCharts charts = createCharts(recentActivity);
+			if (app().settings().getBoolean(Keys.web.generateActivityGraph, true)) {
+				Charts charts = createCharts(recentActivity);
 				add(new HeaderContributor(charts));
 				add(new Fragment("chartsPanel", "chartsFragment", this));
 			} else {
@@ -132,12 +135,12 @@
 	}
 
 	@Override
-	protected void addDropDownMenus(List<PageRegistration> pages) {
-		DropDownMenuRegistration filters = new DropDownMenuRegistration("gb.filters",
+	protected void addDropDownMenus(List<NavLink> navLinks) {
+		DropDownPageMenuNavLink filters = new DropDownPageMenuNavLink("gb.filters",
 				ActivityPage.class);
 
 		PageParameters currentParameters = getPageParameters();
-		int daysBack = GitBlit.getInteger(Keys.web.activityDuration, 7);
+		int daysBack = app().settings().getInteger(Keys.web.activityDuration, 7);
 		if (currentParameters != null && !currentParameters.containsKey("db")) {
 			currentParameters.put("db", daysBack);
 		}
@@ -150,9 +153,9 @@
 
 		if (filters.menuItems.size() > 0) {
 			// Reset Filter
-			filters.menuItems.add(new DropDownMenuItem(getString("gb.reset"), null, null));
+			filters.menuItems.add(new ParameterMenuItem(getString("gb.reset")));
 		}
-		pages.add(filters);
+		navLinks.add(filters);
 	}
 
 	/**
@@ -162,7 +165,7 @@
 	 * @param recentActivity
 	 * @return
 	 */
-	private GoogleCharts createCharts(List<Activity> recentActivity) {
+	private Charts createCharts(List<Activity> recentActivity) {
 		// activity metrics
 		Map<String, Metric> repositoryMetrics = new HashMap<String, Metric>();
 		Map<String, Metric> authorMetrics = new HashMap<String, Metric>();
@@ -189,34 +192,36 @@
 			}
 		}
 
-		// build google charts
-		GoogleCharts charts = new GoogleCharts();
+		// build charts
+		Charts charts = new Flotr2Charts();
 
 		// sort in reverse-chronological order and then reverse that
 		Collections.sort(recentActivity);
 		Collections.reverse(recentActivity);
 
 		// daily line chart
-		GoogleChart chart = new GoogleLineChart("chartDaily", getString("gb.dailyActivity"), "day",
+		Chart chart = charts.createLineChart("chartDaily", getString("gb.dailyActivity"), "day",
 				getString("gb.commits"));
 		SimpleDateFormat df = new SimpleDateFormat("MMM dd");
 		df.setTimeZone(getTimeZone());
 		for (Activity metric : recentActivity) {
-			chart.addValue(df.format(metric.startDate), metric.getCommitCount());
+			chart.addValue(metric.startDate, metric.getCommitCount());
 		}
 		charts.addChart(chart);
 
 		// active repositories pie chart
-		chart = new GooglePieChart("chartRepositories", getString("gb.activeRepositories"),
+		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 = new GooglePieChart("chartAuthors", getString("gb.activeAuthors"),
+		chart = charts.createPieChart("chartAuthors", getString("gb.activeAuthors"),
 				getString("gb.author"), getString("gb.commits"));
 		for (Metric metric : authorMetrics.values()) {
 			chart.addValue(metric.name, metric.count);

--
Gitblit v1.9.1