Only absolute positioning in SVG so draw a bar in removed colour of length representing all the changes and then draw additions on top.
Signed-off-by: Chris Mayo <[email protected]> --- cgit.css | 16 +++++----------- ui-diff.c | 16 ++++++++-------- 2 files changed, 13 insertions(+), 19 deletions(-) diff --git a/cgit.css b/cgit.css index d4aadbf..2321333 100644 --- a/cgit.css +++ b/cgit.css @@ -511,22 +511,16 @@ div#cgit table.diffstat td.graph { vertical-align: middle; } -div#cgit table.diffstat td.graph table { - border: none; -} - -div#cgit table.diffstat td.graph td { - padding: 0px; - border: 0px; +div#cgit table.diffstat td.graph svg { height: 7pt; } -div#cgit table.diffstat td.graph td.add { - background-color: #5c5; +div#cgit table.diffstat td.graph rect.add { + fill: #5c5; } -div#cgit table.diffstat td.graph td.rem { - background-color: #c55; +div#cgit table.diffstat td.graph rect.rem { + fill: #c55; } div#cgit div.diffstat-summary { diff --git a/ui-diff.c b/ui-diff.c index 70dcc91..001d77e 100644 --- a/ui-diff.c +++ b/ui-diff.c @@ -51,6 +51,7 @@ struct diff_filespec *cgit_get_current_new_file(void) static void print_fileinfo(struct fileinfo *info) { char *class; + int total_changes; switch (info->status) { case DIFF_STATUS_ADDED: @@ -111,16 +112,15 @@ static void print_fileinfo(struct fileinfo *info) info->old_size, info->new_size); return; } - htmlf("%d", info->added + info->removed); + total_changes = info->added + info->removed; + htmlf("%d", total_changes); html("</td><td class='graph'>"); - htmlf("<table summary='file diffstat' width='%d%%'><tr>", (max_changes > 100 ? 100 : max_changes)); - htmlf("<td class='add' style='width: %.1f%%;'/>", + htmlf("<svg aria-label='file diffstat' width='%d%%'>", (max_changes > 100 ? 100 : max_changes)); + htmlf("<rect class='rem' width='%.1f%%' height='100%%'/>", + total_changes * 100.0 / max_changes); + htmlf("<rect class='add' width='%.1f%%' height='100%%'/>", info->added * 100.0 / max_changes); - htmlf("<td class='rem' style='width: %.1f%%;'/>", - info->removed * 100.0 / max_changes); - htmlf("<td class='none' style='width: %.1f%%;'/>", - (max_changes - info->removed - info->added) * 100.0 / max_changes); - html("</tr></table></td></tr>\n"); + html("</svg></td></tr>\n"); } static void count_diff_lines(char *line, int len) -- 2.20.1 _______________________________________________ CGit mailing list [email protected] https://lists.zx2c4.com/mailman/listinfo/cgit
