From d6b70ab47bc5be26a9671dfd3a0a3dd9fa044eb4 Mon Sep 17 00:00:00 2001
From: James Moger <james.moger@gitblit.com>
Date: Mon, 20 Oct 2014 16:17:39 -0400
Subject: [PATCH] Prepare 1.6.1 release
---
src/main/java/com/gitblit/wicket/pages/ActivityPage.java | 93 +++++++++++++++++++++++++++++++---------------
1 files changed, 63 insertions(+), 30 deletions(-)
diff --git a/src/main/java/com/gitblit/wicket/pages/ActivityPage.java b/src/main/java/com/gitblit/wicket/pages/ActivityPage.java
index 8e841c7..c505a66 100644
--- a/src/main/java/com/gitblit/wicket/pages/ActivityPage.java
+++ b/src/main/java/com/gitblit/wicket/pages/ActivityPage.java
@@ -27,31 +27,34 @@
import org.apache.wicket.PageParameters;
import org.apache.wicket.behavior.HeaderContributor;
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.PageRegistration;
-import com.gitblit.wicket.PageRegistration.DropDownMenuItem;
-import com.gitblit.wicket.PageRegistration.DropDownMenuRegistration;
+import com.gitblit.wicket.CacheControl;
+import com.gitblit.wicket.CacheControl.LastModified;
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;
/**
* Activity Page shows a list of recent commits across all visible Gitblit
* repositories.
- *
+ *
* @author James Moger
- *
+ *
*/
+
+@CacheControl(LastModified.ACTIVITY)
public class ActivityPage extends RootPage {
public ActivityPage(PageParameters params) {
@@ -61,19 +64,42 @@
// parameters
int daysBack = WicketUtils.getDaysBack(params);
if (daysBack < 1) {
- daysBack = 14;
+ 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) {
+ // today
+ if (recentActivity.size() == 0) {
+ headerPattern = getString("gb.todaysActivityNone");
+ } else {
+ headerPattern = getString("gb.todaysActivityStats");
+ }
+ } else {
+ // multiple days
+ if (recentActivity.size() == 0) {
+ headerPattern = getString("gb.recentActivityNone");
+ } else {
+ headerPattern = getString("gb.recentActivityStats");
+ }
+ }
if (recentActivity.size() == 0) {
// no activity, skip graphs and activity panel
- add(new Label("subheader", MessageFormat.format(getString("gb.recentActivityNone"),
+ add(new Label("subheader", MessageFormat.format(headerPattern,
daysBack)));
+ add(new Label("chartsPanel").setVisible(false));
add(new Label("activityPanel"));
} else {
// calculate total commits and total authors
@@ -86,12 +112,17 @@
int totalAuthors = uniqueAuthors.size();
// add the subheader with stat numbers
- add(new Label("subheader", MessageFormat.format(getString("gb.recentActivityStats"),
+ add(new Label("subheader", MessageFormat.format(headerPattern,
daysBack, totalCommits, totalAuthors)));
// create the activity charts
- GoogleCharts charts = createCharts(recentActivity);
- add(new HeaderContributor(charts));
+ if (app().settings().getBoolean(Keys.web.generateActivityGraph, true)) {
+ Charts charts = createCharts(recentActivity);
+ add(new HeaderContributor(charts));
+ add(new Fragment("chartsPanel", "chartsFragment", this));
+ } else {
+ add(new Label("chartsPanel").setVisible(false));
+ }
// add activity panel
add(new ActivityPanel("activityPanel", recentActivity));
@@ -104,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, 14);
+ int daysBack = app().settings().getInteger(Keys.web.activityDuration, 7);
if (currentParameters != null && !currentParameters.containsKey("db")) {
currentParameters.put("db", daysBack);
}
@@ -122,19 +153,19 @@
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);
}
/**
* Creates the daily activity line chart, the active repositories pie chart,
* and the active authors pie chart
- *
+ *
* @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>();
@@ -161,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