Skip to content

Commit 571b7a0

Browse files
dborowitzjrn
authored andcommitted
Link from repo index page to full log, not skipping the first 5
Bug: google/gitiles#128 Change-Id: I13b9c25eca77f7db7e2198c5086161c6517cac5c
1 parent 091575e commit 571b7a0

4 files changed

Lines changed: 39 additions & 15 deletions

File tree

java/com/google/gitiles/LogServlet.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -129,7 +129,8 @@ protected void doGetHtml(HttpServletRequest req, HttpServletResponse res) throws
129129

130130
try (OutputStream out = startRenderStreamingHtml(req, res, "gitiles.logDetail", data)) {
131131
Writer w = newWriter(out, res);
132-
new LogSoyData(req, access, pretty).renderStreaming(paginator, null, renderer, w, df);
132+
new LogSoyData(req, access, pretty)
133+
.renderStreaming(paginator, null, renderer, w, df, LogSoyData.FooterBehavior.NEXT);
133134
w.flush();
134135
}
135136
} catch (RevWalkException e) {

java/com/google/gitiles/LogSoyData.java

Lines changed: 33 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,15 @@ public class LogSoyData {
4949
Field.TAGS);
5050
private static final ImmutableSet<Field> VERBOSE_FIELDS = Field.setOf(FIELDS, Field.DIFF_TREE);
5151

52+
/** Behavior for the footer link when rendering streaming log data. */
53+
public enum FooterBehavior {
54+
/** "Next" link that skips commits in the current view. */
55+
NEXT,
56+
57+
/** "More" link that starts from HEAD. */
58+
LOG_HEAD;
59+
}
60+
5261
private final HttpServletRequest req;
5362
private final GitilesView view;
5463
private final Set<Field> fields;
@@ -70,7 +79,8 @@ public void renderStreaming(
7079
@Nullable String revision,
7180
Renderer renderer,
7281
Writer out,
73-
DateFormatter df)
82+
DateFormatter df,
83+
FooterBehavior footerBehavior)
7484
throws IOException {
7585
renderer
7686
.newRenderer("gitiles.logEntriesHeader")
@@ -91,7 +101,7 @@ public void renderStreaming(
91101

92102
renderer
93103
.newRenderer("gitiles.logEntriesFooter")
94-
.setData(toFooterSoyData(paginator, revision))
104+
.setData(toFooterSoyData(paginator, revision, footerBehavior))
95105
.render(out);
96106
}
97107

@@ -139,17 +149,28 @@ private Map<String, Object> toRenameSoyData(DiffEntry entry) {
139149
"score", entry.getScore());
140150
}
141151

142-
private Map<String, Object> toFooterSoyData(Paginator paginator, @Nullable String revision) {
143-
Map<String, Object> data = Maps.newHashMapWithExpectedSize(1);
144-
ObjectId next = paginator.getNextStart();
145-
if (next != null) {
146-
data.put(
147-
"nextUrl",
148-
copyAndCanonicalizeView(revision)
149-
.replaceParam(LogServlet.START_PARAM, next.name())
150-
.toUrl());
152+
private Map<String, Object> toFooterSoyData(
153+
Paginator paginator, @Nullable String revision, FooterBehavior behavior) {
154+
switch (behavior) {
155+
case NEXT:
156+
ObjectId next = paginator.getNextStart();
157+
if (next == null) {
158+
return ImmutableMap.of();
159+
}
160+
return ImmutableMap.of(
161+
"nextUrl",
162+
copyAndCanonicalizeView(revision)
163+
.replaceParam(LogServlet.START_PARAM, next.name())
164+
.toUrl(),
165+
"nextText",
166+
"Next");
167+
168+
case LOG_HEAD:
169+
return ImmutableMap.of(
170+
"nextUrl", GitilesView.log().copyFrom(view).toUrl(), "nextText", "More");
171+
default:
172+
throw new IllegalStateException("unknown footer behavior: " + behavior);
151173
}
152-
return data;
153174
}
154175

155176
private GitilesView.Builder copyAndCanonicalizeView(String revision) {

java/com/google/gitiles/RepositoryIndexServlet.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -134,7 +134,8 @@ protected void doGetHtml(HttpServletRequest req, HttpServletResponse res) throws
134134
startRenderStreamingHtml(req, res, "gitiles.repositoryIndex", data)) {
135135
Writer w = newWriter(out, res);
136136
new LogSoyData(req, access, "oneline")
137-
.renderStreaming(paginator, "HEAD", renderer, w, df);
137+
.renderStreaming(
138+
paginator, "HEAD", renderer, w, df, LogSoyData.FooterBehavior.LOG_HEAD);
138139
w.flush();
139140
}
140141
} else {

resources/com/google/gitiles/templates/LogDetail.soy

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -74,12 +74,13 @@
7474
* Footer for the list of log entries.
7575
*
7676
* @param? nextUrl URL for the next page of results.
77+
* @param? nextText text for next page link.
7778
*/
7879
{template .logEntriesFooter stricthtml="false"}
7980
</ol>
8081
{if $nextUrl}
8182
<nav class="LogNav">
82-
<a class="LogNav-next" href="{$nextUrl}">{msg desc="text for next URL"}Next &raquo;{/msg}</a>
83+
<a class="LogNav-next" href="{$nextUrl}">{$nextText} &raquo;</a>
8384
</nav>
8485
{/if}
8586
{/template}

0 commit comments

Comments
 (0)