Paul Martin
2016-04-16 eecaad8b8e2c447429c31a01d49260ddd6b4ee03
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);