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/ActivityPage.java | 70 ++++++++++++++++------------------ 1 files changed, 33 insertions(+), 37 deletions(-) diff --git a/src/com/gitblit/wicket/pages/ActivityPage.java b/src/com/gitblit/wicket/pages/ActivityPage.java index 011eef1..bceac8f 100644 --- a/src/com/gitblit/wicket/pages/ActivityPage.java +++ b/src/com/gitblit/wicket/pages/ActivityPage.java @@ -17,7 +17,6 @@ import java.text.MessageFormat; import java.text.SimpleDateFormat; -import java.util.ArrayList; import java.util.Collections; import java.util.HashMap; import java.util.HashSet; @@ -30,13 +29,15 @@ import org.apache.wicket.markup.html.basic.Label; import com.gitblit.GitBlit; +import com.gitblit.Keys; import com.gitblit.models.Activity; import com.gitblit.models.Metric; import com.gitblit.models.RepositoryModel; -import com.gitblit.models.UserModel; import com.gitblit.utils.ActivityUtils; import com.gitblit.utils.StringUtils; -import com.gitblit.wicket.GitBlitWebSession; +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; @@ -54,7 +55,7 @@ public class ActivityPage extends RootPage { public ActivityPage(PageParameters params) { - super(); + super(params); setupPage("", ""); // parameters @@ -66,7 +67,8 @@ // determine repositories to view and retrieve the activity List<RepositoryModel> models = getRepositories(params); - List<Activity> recentActivity = ActivityUtils.getRecentActivity(models, daysBack, objectId); + List<Activity> recentActivity = ActivityUtils.getRecentActivity(models, + daysBack, objectId, getTimeZone()); if (recentActivity.size() == 0) { // no activity, skip graphs and activity panel @@ -78,7 +80,7 @@ int totalCommits = 0; Set<String> uniqueAuthors = new HashSet<String>(); for (Activity activity : recentActivity) { - totalCommits += activity.commits.size(); + totalCommits += activity.getCommitCount(); uniqueAuthors.addAll(activity.getAuthorMetrics().keySet()); } int totalAuthors = uniqueAuthors.size(); @@ -96,40 +98,33 @@ } } - private List<RepositoryModel> getRepositories(PageParameters params) { - final UserModel user = GitBlitWebSession.get().getUser(); - String set = WicketUtils.getSet(params); - String repositoryName = WicketUtils.getRepositoryName(params); + @Override + protected boolean reusePageParameters() { + return true; + } - List<RepositoryModel> models = null; - if (!StringUtils.isEmpty(repositoryName)) { - // named repository - models = new ArrayList<RepositoryModel>(); - RepositoryModel model = GitBlit.self().getRepositoryModel(repositoryName); - if (user.canAccessRepository(model)) { - models.add(model); - } + @Override + protected void addDropDownMenus(List<PageRegistration> pages) { + DropDownMenuRegistration filters = new DropDownMenuRegistration("gb.filters", + ActivityPage.class); + + PageParameters currentParameters = getPageParameters(); + int daysBack = GitBlit.getInteger(Keys.web.activityDuration, 14); + if (currentParameters != null && !currentParameters.containsKey("db")) { + currentParameters.put("db", daysBack); } - // get all user accessible repositories - if (models == null) { - models = GitBlit.self().getRepositoryModels(user); - } + // preserve time filter options on repository choices + filters.menuItems.addAll(getRepositoryFilterItems(currentParameters)); - // filter the repositories by the specified set - if (!StringUtils.isEmpty(set)) { - List<String> sets = StringUtils.getStringsFromValue(set, ","); - List<RepositoryModel> setModels = new ArrayList<RepositoryModel>(); - for (RepositoryModel model : models) { - for (String curr : sets) { - if (model.federationSets.contains(curr)) { - setModels.add(model); - } - } - } - models = setModels; + // preserve repository filter options on time choices + filters.menuItems.addAll(getTimeFilterItems(currentParameters)); + + if (filters.menuItems.size() > 0) { + // Reset Filter + filters.menuItems.add(new DropDownMenuItem(getString("gb.reset"), null, null)); } - return models; + pages.add(filters); } /** @@ -158,7 +153,7 @@ // aggregate repository metrics for (Map.Entry<String, Metric> entry : activity.getRepositoryMetrics().entrySet()) { - String repository = entry.getKey(); + String repository = StringUtils.stripDotGit(entry.getKey()); if (!repositoryMetrics.containsKey(repository)) { repositoryMetrics.put(repository, new Metric(repository)); } @@ -179,8 +174,9 @@ GoogleChart chart = new GoogleLineChart("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.commits.size()); + chart.addValue(df.format(metric.startDate), metric.getCommitCount()); } chart.setWidth(w); chart.setHeight(h); -- Gitblit v1.9.1