From 7538bc297d62e223e4216db0e039be296aff4553 Mon Sep 17 00:00:00 2001 From: Taras Madan Date: Wed, 17 Jul 2024 18:47:19 +0200 Subject: dashboard/app: add coverage->subsystems heatmap --- pkg/cover/heatmap.go | 80 +++++++++++++++++++++++----------------------------- 1 file changed, 36 insertions(+), 44 deletions(-) (limited to 'pkg') diff --git a/pkg/cover/heatmap.go b/pkg/cover/heatmap.go index b6c21295d..383a95deb 100644 --- a/pkg/cover/heatmap.go +++ b/pkg/cover/heatmap.go @@ -173,54 +173,48 @@ where return res, nil } -func DoDirHeatMap(w io.Writer, projectID, ns string, dateFrom, dateTo civil.Date) error { - return DoHeatMap(w, projectID, ns, dateFrom, dateTo, "dir") +type StyleBodyJS struct { + Style template.CSS + Body template.HTML + JS template.HTML } -func DoSubsystemsHeatMap(w io.Writer, projectID, ns string, dateFrom, dateTo civil.Date) error { - return DoHeatMap(w, projectID, ns, dateFrom, dateTo, "subsystems") +// nolint: dupl +func DoDirHeatMap(w io.Writer, projectID, ns string, dateFrom, dateTo civil.Date) error { + style, body, js, err := DoHeatMapStyleBodyJS(projectID, ns, dateFrom, dateTo) + if err != nil { + return fmt.Errorf("failed to DoHeatMapStyleBodyJS() %w", err) + } + return heatmapTemplate.Execute(w, &StyleBodyJS{ + Style: style, + Body: body, + JS: js, + }) } -func DoHeatMap(w io.Writer, projectID, ns string, dateFrom, dateTo civil.Date, hmType string) error { - var style template.CSS - var body, js template.HTML - var err error - f := DoHeatMapStyleBodyJS - switch hmType { - case "dir": - case "subsystems": - f = DoSubsystemsHeatMapStyleBodyJS - } - style, body, js, err = f(projectID, ns, dateFrom, dateTo) +// nolint: dupl +func DoSubsystemsHeatMap(w io.Writer, projectID, ns string, dateFrom, dateTo civil.Date) error { + style, body, js, err := DoSubsystemsHeatMapStyleBodyJS(projectID, ns, dateFrom, dateTo) if err != nil { - return fmt.Errorf("failed to get heatMapStyleBodyJS() %w", err) + return fmt.Errorf("failed to DoSubsystemsHeatMapStyleBodyJS() %w", err) } - return heatmapTemplate.Execute(w, struct { - Style template.CSS - Body template.HTML - JS template.HTML - }{ + return heatmapTemplate.Execute(w, &StyleBodyJS{ Style: style, Body: body, JS: js, }) } -func DoHeatMapStyleBodyJS(projectID, ns string, dateFrom, dateTo civil.Date, +func stylesBodyJSTemplate(templData *templateHeatmap, ) (template.CSS, template.HTML, template.HTML, error) { - covAndDates, err := filesCoverageWithDetails(context.Background(), projectID, ns, dateFrom, dateTo) - if err != nil { - return "", "", "", fmt.Errorf("failed to filesCoverageWithDetails: %w", err) - } - templateData := filesCoverageToTemplateData(covAndDates) var styles, body, js bytes.Buffer - if err := heatmapTemplate.ExecuteTemplate(&styles, "style", templateData); err != nil { + if err := heatmapTemplate.ExecuteTemplate(&styles, "style", templData); err != nil { return "", "", "", fmt.Errorf("failed to get styles: %w", err) } - if err := heatmapTemplate.ExecuteTemplate(&body, "body", templateData); err != nil { + if err := heatmapTemplate.ExecuteTemplate(&body, "body", templData); err != nil { return "", "", "", fmt.Errorf("failed to get body: %w", err) } - if err := heatmapTemplate.ExecuteTemplate(&js, "js", templateData); err != nil { + if err := heatmapTemplate.ExecuteTemplate(&js, "js", templData); err != nil { return "", "", "", fmt.Errorf("failed to get js: %w", err) } return template.CSS(styles.String()), @@ -228,6 +222,16 @@ func DoHeatMapStyleBodyJS(projectID, ns string, dateFrom, dateTo civil.Date, template.HTML(js.Bytes()), nil } +func DoHeatMapStyleBodyJS(projectID, ns string, dateFrom, dateTo civil.Date, +) (template.CSS, template.HTML, template.HTML, error) { + covAndDates, err := filesCoverageWithDetails(context.Background(), projectID, ns, dateFrom, dateTo) + if err != nil { + return "", "", "", fmt.Errorf("failed to filesCoverageWithDetails: %w", err) + } + templData := filesCoverageToTemplateData(covAndDates) + return stylesBodyJSTemplate(templData) +} + func DoSubsystemsHeatMapStyleBodyJS(projectID, ns string, dateFrom, dateTo civil.Date, ) (template.CSS, template.HTML, template.HTML, error) { covWithDetails, err := filesCoverageWithDetails(context.Background(), projectID, ns, dateFrom, dateTo) @@ -246,20 +250,8 @@ func DoSubsystemsHeatMapStyleBodyJS(projectID, ns string, dateFrom, dateTo civil ssCovAndDates = append(ssCovAndDates, &newRecord) } } - templateData := filesCoverageToTemplateData(ssCovAndDates) - var styles, body, js bytes.Buffer - if err := heatmapTemplate.ExecuteTemplate(&styles, "style", templateData); err != nil { - return "", "", "", fmt.Errorf("failed to get styles: %w", err) - } - if err := heatmapTemplate.ExecuteTemplate(&body, "body", templateData); err != nil { - return "", "", "", fmt.Errorf("failed to get body: %w", err) - } - if err := heatmapTemplate.ExecuteTemplate(&js, "js", templateData); err != nil { - return "", "", "", fmt.Errorf("failed to get js: %w", err) - } - return template.CSS(styles.String()), - template.HTML(body.String()), - template.HTML(js.Bytes()), nil + templData := filesCoverageToTemplateData(ssCovAndDates) + return stylesBodyJSTemplate(templData) } func approximateInstrumented(points int64) string { -- cgit mrf-deployment