254 } |
254 } |
255 } |
255 } |
256 |
256 |
257 html::open(settings.fragment); |
257 html::open(settings.fragment); |
258 for (const auto &[repo, authors] : heatmap.data()) { |
258 for (const auto &[repo, authors] : heatmap.data()) { |
259 html::h1(repo); |
259 bool h1_rendered = false; |
260 for (const auto &[author, entries] : authors) { |
260 for (const auto &[author, entries] : authors) { |
261 if (settings.exclude_author(author)) continue; |
261 if (settings.exclude_author(author)) continue; |
262 |
262 if (!h1_rendered) { |
|
263 html::h1(repo); |
|
264 h1_rendered = true; |
|
265 } |
263 html::h2(author); |
266 html::h2(author); |
264 html::table_begin(report_year); |
267 html::table_begin(report_year); |
265 |
268 |
266 // initialize counters |
269 // initialize counters |
267 unsigned column = 0, row = 0; |
270 unsigned column = 0, row = 0; |