Você não pode selecionar mais de 25 tópicos Os tópicos devem começar com uma letra ou um número, podem incluir traços ('-') e podem ter até 35 caracteres.

SummaryPage.java 4.1KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132
  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.StoredSettings;
  16. import com.gitblit.utils.JGitUtils;
  17. import com.gitblit.wicket.GitBlitWebApp;
  18. import com.gitblit.wicket.GitBlitWebSession;
  19. import com.gitblit.wicket.RepositoryPage;
  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 = StoredSettings.getInteger("summaryCommitCount", numCommitsDef);
  30. if (numberCommits <= 0) {
  31. numberCommits = numCommitsDef;
  32. }
  33. int numberRefs = StoredSettings.getInteger("summaryRefsCount", numRefsDef);
  34. if (numberRefs <= 0) {
  35. numberRefs = numRefsDef;
  36. }
  37. Repository r = getRepository();
  38. String owner = JGitUtils.getRepositoryOwner(r);
  39. GitBlitWebSession session = GitBlitWebSession.get();
  40. String lastchange = session.formatDateTimeLong(JGitUtils.getLastChange(r));
  41. String cloneurl = GitBlitWebApp.get().getCloneUrl(repositoryName);
  42. // repository description
  43. add(new Label("repositoryDescription", description));
  44. add(new Label("repositoryOwner", owner));
  45. add(new Label("repositoryLastChange", lastchange));
  46. add(new Label("repositoryCloneUrl", cloneurl));
  47. add(new LogPanel("commitsPanel", repositoryName, r, numberCommits, false));
  48. add(new TagsPanel("tagsPanel", repositoryName, r, numberRefs));
  49. add(new BranchesPanel("branchesPanel", repositoryName, r, numberRefs));
  50. // Display an activity line graph
  51. insertActivityGraph(r);
  52. }
  53. @Override
  54. protected String getPageName() {
  55. return getString("gb.summary");
  56. }
  57. private void insertActivityGraph(Repository r) {
  58. if (StoredSettings.getBoolean("generateActivityGraph", true)) {
  59. List<Metric> dates = JGitUtils.getDateMetrics(r);
  60. IChartData data = getChartData(dates);
  61. ChartProvider provider = new ChartProvider(new Dimension(400, 80), ChartType.LINE, data);
  62. ChartAxis dateAxis = new ChartAxis(ChartAxisType.BOTTOM);
  63. dateAxis.setLabels(new String[] { dates.get(0).name, dates.get(dates.size() / 2).name, dates.get(dates.size() - 1).name });
  64. provider.addAxis(dateAxis);
  65. ChartAxis commitAxis = new ChartAxis(ChartAxisType.LEFT);
  66. commitAxis.setLabels(new String[] { "", String.valueOf((int) maxValue(dates)) });
  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> results) {
  74. final double[] counts = new double[results.size()];
  75. int i = 0;
  76. double max = 0;
  77. for (Metric m : results) {
  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. }