aboutsummaryrefslogtreecommitdiffstats
path: root/pkg
diff options
context:
space:
mode:
authorTaras Madan <tarasmadan@google.com>2024-07-17 18:47:19 +0200
committerTaras Madan <tarasmadan@google.com>2024-07-22 09:31:35 +0000
commit7538bc297d62e223e4216db0e039be296aff4553 (patch)
treee8617233bdd0d45697f72bc1b4d0e93c6d50a4ae /pkg
parent8600e0929b39fbb88bedfb564c30fe4998a6a53e (diff)
dashboard/app: add coverage->subsystems heatmap
Diffstat (limited to 'pkg')
-rw-r--r--pkg/cover/heatmap.go80
1 files changed, 36 insertions, 44 deletions
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 {