You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

SummaryPage.java 4.1KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133
  1. package com.gitblit.wicket.pages;
  2. import java.awt.Dimension;
  3. import java.util.List;
  4. import org.apache.wicket.PageParameters;
  5. import org.apache.wicket.markup.html.basic.Label;
  6. import org.apache.wicket.markup.html.image.ContextImage;
  7. import org.eclipse.jgit.lib.Repository;
  8. import com.codecommit.wicket.AbstractChartData;
  9. import com.codecommit.wicket.Chart;
  10. import com.codecommit.wicket.ChartAxis;
  11. import com.codecommit.wicket.ChartAxisType;
  12. import com.codecommit.wicket.ChartProvider;
  13. import com.codecommit.wicket.ChartType;
  14. import com.codecommit.wicket.IChartData;
  15. import com.gitblit.GitBlit;
  16. import com.gitblit.Keys;
  17. import com.gitblit.utils.JGitUtils;
  18. import com.gitblit.wicket.RepositoryPage;
  19. import com.gitblit.wicket.WicketUtils;
  20. import com.gitblit.wicket.models.Metric;
  21. import com.gitblit.wicket.panels.BranchesPanel;
  22. import com.gitblit.wicket.panels.LogPanel;
  23. import com.gitblit.wicket.panels.TagsPanel;
  24. public class SummaryPage extends RepositoryPage {
  25. public SummaryPage(PageParameters params) {
  26. super(params);
  27. int numCommitsDef = 20;
  28. int numRefsDef = 5;
  29. int numberCommits = GitBlit.self().settings().getInteger(Keys.web.summaryCommitCount, numCommitsDef);
  30. if (numberCommits <= 0) {
  31. numberCommits = numCommitsDef;
  32. }
  33. int numberRefs = GitBlit.self().settings().getInteger(Keys.web.summaryRefsCount, numRefsDef);
  34. if (numberRefs <= 0) {
  35. numberRefs = numRefsDef;
  36. }
  37. Repository r = getRepository();
  38. List<Metric> metrics = JGitUtils.getDateMetrics(r);
  39. long numberOfCommits = 0;
  40. for (Metric m : metrics) {
  41. numberOfCommits += m.count;
  42. }
  43. // repository description
  44. add(new Label("repositoryDescription", description));
  45. add(new Label("repositoryOwner", JGitUtils.getRepositoryOwner(r)));
  46. add(WicketUtils.createTimestampLabel("repositoryLastChange", JGitUtils.getLastChange(r), getTimeZone()));
  47. add(new Label("repositoryCloneUrl", GitBlit.self().getCloneUrl(repositoryName)));
  48. add(new LogPanel("commitsPanel", repositoryName, null, r, numberCommits, 0));
  49. add(new TagsPanel("tagsPanel", repositoryName, r, numberRefs));
  50. add(new BranchesPanel("branchesPanel", repositoryName, r, numberRefs));
  51. // Display an activity line graph
  52. insertActivityGraph(metrics);
  53. }
  54. @Override
  55. protected String getPageName() {
  56. return getString("gb.summary");
  57. }
  58. private void insertActivityGraph(List<Metric> metrics) {
  59. if (GitBlit.self().settings().getBoolean(Keys.web.generateActivityGraph, true)) {
  60. IChartData data = getChartData(metrics);
  61. ChartProvider provider = new ChartProvider(new Dimension(400, 80), ChartType.LINE, data);
  62. ChartAxis dateAxis = new ChartAxis(ChartAxisType.BOTTOM);
  63. dateAxis.setLabels(new String[] { metrics.get(0).name, metrics.get(metrics.size() / 2).name, metrics.get(metrics.size() - 1).name });
  64. provider.addAxis(dateAxis);
  65. ChartAxis commitAxis = new ChartAxis(ChartAxisType.LEFT);
  66. commitAxis.setLabels(new String[] { "", String.valueOf((int) maxValue(metrics)) });
  67. provider.addAxis(commitAxis);
  68. add(new Chart("commitsChart", provider));
  69. } else {
  70. add(new ContextImage("commitsChart", "blank.png"));
  71. }
  72. }
  73. protected IChartData getChartData(List<Metric> metrics) {
  74. final double[] counts = new double[metrics.size()];
  75. int i = 0;
  76. double max = 0;
  77. for (Metric m : metrics) {
  78. counts[i++] = m.count;
  79. max = Math.max(max, m.count);
  80. }
  81. final double dmax = max;
  82. IChartData data = new AbstractChartData() {
  83. private static final long serialVersionUID = 1L;
  84. public double[][] getData() {
  85. return new double[][] { counts };
  86. }
  87. public double getMax() {
  88. return dmax;
  89. }
  90. };
  91. return data;
  92. }
  93. protected String[] getNames(List<Metric> results) {
  94. String[] names = new String[results.size()];
  95. for (int i = 0; i < results.size(); i++) {
  96. names[i] = results.get(i).name;
  97. }
  98. return names;
  99. }
  100. protected double maxValue(List<Metric> metrics) {
  101. double max = Double.MIN_VALUE;
  102. for (Metric m : metrics) {
  103. if (m.count > max) {
  104. max = m.count;
  105. }
  106. }
  107. return max;
  108. }
  109. }