about summary refs log tree commit diff
diff options
context:
space:
mode:
authorJohan Herland <johan@herland.net>2010-11-15 18:39:53 +0100
committerLars Hjemli <hjemli@gmail.com>2010-11-16 08:18:37 +0100
commitc2bfd40f8aaaa69a66c6eb729c202e42a43ec166 (patch)
tree7ab4e467a6e39124f7336b5599dfc58c8fbb4b18
parentui-log: Line-wrap long commit subjects when showmsg is enabled (diff)
downloadcgit-pink-c2bfd40f8aaaa69a66c6eb729c202e42a43ec166.tar.gz
cgit-pink-c2bfd40f8aaaa69a66c6eb729c202e42a43ec166.zip
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>
-rw-r--r--ui-log.c42
1 files changed, 30 insertions, 12 deletions
diff --git a/ui-log.c b/ui-log.c
index 05b5c29..8add66a 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 @@ void print_commit(struct commit *commit, struct rev_info *revs)
 		/* 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 @@ void print_commit(struct commit *commit, struct rev_info *revs)
 	}
 
 	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 @@ void print_commit(struct commit *commit, struct rev_info *revs)
 		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 @@ void print_commit(struct commit *commit, struct rev_info *revs)
 	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 @@ void print_commit(struct commit *commit, struct rev_info *revs)
 	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 @@ void print_commit(struct commit *commit, struct rev_info *revs)
 			}
 			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 @@ void cgit_print_log(const char *tip, int ofs, int cnt, char *grep, char *pattern
 	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 @@ void cgit_print_log(const char *tip, int ofs, int cnt, char *grep, char *pattern
 		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++;