cgit

commit c2bfd40f8aaaa69a66c6eb729c202e42a43ec166

Author: Johan Herland <johan@herland.net>

ui-log: Move 'Age' column when commit graph is present

When the commit graph is present, we prefer to draw it along the left edge,
and moving the 'Age' column to the right of the 'Author' column, like in gitk.

Signed-off-by: Johan Herland <johan@herland.net>
Signed-off-by: Lars Hjemli <hjemli@gmail.com>

 ui-log.c | 42 ++++++++++++++++++++++++++++++------------


diff --git a/ui-log.c b/ui-log.c
index 05b5c297bb9885f0421178eb698558a19d959abd..8add66aa0f41c16081a2ead29ba2c19a8f41ace5 100644
--- a/ui-log.c
+++ b/ui-log.c
@@ -96,7 +96,7 @@ void print_commit(struct commit *commit, struct rev_info *revs)
 {
 	struct commitinfo *info;
 	char *tmp;
-	int cols = 2;
+	int cols = revs->graph ? 3 : 2;
 	struct strbuf graphbuf = STRBUF_INIT;
 	struct strbuf msgbuf = STRBUF_INIT;
 
@@ -110,7 +110,7 @@ 	if (revs->graph) {
 		/* Advance graph until current commit */
 		while (!graph_next_line(revs->graph, &graphbuf)) {
 			/* Print graph segment in otherwise empty table row */
-			html("<tr class='nohover'><td/><td class='commitgraph'>");
+			html("<tr class='nohover'><td class='commitgraph'>");
 			html(graphbuf.buf);
 			htmlf("</td><td colspan='%d' /></tr>\n", cols);
 			strbuf_setlen(&graphbuf, 0);
@@ -119,14 +119,7 @@ 		/* Current commit's graph segment is now ready in graphbuf */
 	}
 
 	info = cgit_parse_commit(commit);
-	htmlf("<tr%s><td>",
-		ctx.qry.showmsg ? " class='logheader'" : "");
-	tmp = fmt("id=%s", sha1_to_hex(commit->object.sha1));
-	tmp = cgit_fileurl(ctx.repo->url, "commit", ctx.qry.vpath, tmp);
-	html_link_open(tmp, NULL, NULL);
-	cgit_print_age(commit->date, TM_WEEK * 2, FMT_SHORTDATE);
-	html_link_close();
-	html("</td>");
+	htmlf("<tr%s>", ctx.qry.showmsg ? " class='logheader'" : "");
 
 	if (revs->graph) {
 		/* Print graph segment for current commit */
@@ -135,6 +128,15 @@ 		html(graphbuf.buf);
 		html("</td>");
 		strbuf_setlen(&graphbuf, 0);
 	}
+	else {
+		html("<td>");
+		tmp = fmt("id=%s", sha1_to_hex(commit->object.sha1));
+		tmp = cgit_fileurl(ctx.repo->url, "commit", ctx.qry.vpath, tmp);
+		html_link_open(tmp, NULL, NULL);
+		cgit_print_age(commit->date, TM_WEEK * 2, FMT_SHORTDATE);
+		html_link_close();
+		html("</td>");
+	}
 
 	htmlf("<td%s>", ctx.qry.showmsg ? " class='logsubject'" : "");
 	if (ctx.qry.showmsg) {
@@ -167,6 +169,16 @@ 			 sha1_to_hex(commit->object.sha1), ctx.qry.vpath, 0);
 	show_commit_decorations(commit);
 	html("</td><td>");
 	html_txt(info->author);
+
+	if (revs->graph) {
+		html("</td><td>");
+		tmp = fmt("id=%s", sha1_to_hex(commit->object.sha1));
+		tmp = cgit_fileurl(ctx.repo->url, "commit", ctx.qry.vpath, tmp);
+		html_link_open(tmp, NULL, NULL);
+		cgit_print_age(commit->date, TM_WEEK * 2, FMT_SHORTDATE);
+		html_link_close();
+	}
+
 	if (ctx.repo->enable_log_filecount) {
 		files = 0;
 		add_lines = 0;
@@ -182,7 +194,7 @@ 	}
 	html("</td></tr>\n");
 
 	if (revs->graph || ctx.qry.showmsg) { /* Print a second table row */
-		html("<tr class='nohover'><td/>"); /* Empty 'Age' column */
+		html("<tr class='nohover'>");
 
 		if (ctx.qry.showmsg) {
 			/* Concatenate commit message + notes in msgbuf */
@@ -223,6 +235,8 @@ 				lines--;
 			}
 			html("</td>\n");
 		}
+		else
+			html("<td/>"); /* Empty 'Age' column */
 
 		/* Print msgbuf into remainder of table row */
 		htmlf("<td colspan='%d'%s>\n", cols,
@@ -345,9 +359,11 @@
 	if (pager)
 		html("<table class='list nowrap'>");
 
-	html("<tr class='nohover'><th class='left'>Age</th>");
+	html("<tr class='nohover'>");
 	if (commit_graph)
 		html("<th></th>");
+	else
+		html("<th class='left'>Age</th>");
 	html("<th class='left'>Commit message");
 	if (pager) {
 		html(" (");
@@ -358,6 +374,8 @@ 			      ctx.qry.search, ctx.qry.showmsg ? 0 : 1);
 		html(")");
 	}
 	html("</th><th class='left'>Author</th>");
+	if (commit_graph)
+		html("<th class='left'>Age</th>");
 	if (ctx.repo->enable_log_filecount) {
 		html("<th class='left'>Files</th>");
 		columns++;