diff options
| author | Taras Madan <tarasmadan@google.com> | 2025-01-07 20:47:29 +0100 |
|---|---|---|
| committer | Taras Madan <tarasmadan@google.com> | 2025-01-09 10:20:58 +0000 |
| commit | 7cc17001e974d9ff7d7ce042c4e2ad2e8ec0e55e (patch) | |
| tree | bd76bcfe68cf89381bd61ba5f8036665ad5cd523 /dashboard/app/graphs.go | |
| parent | 9220929f371b5549fde0c05fdb17e18ec842f077 (diff) | |
dashboard/app: add targeting controls to the coverage page
It allows to control known parameters:
1. Period (months or days).
2. Target subsystem.
3. Target manager.
And adds the disabled "Only unique" checkbox.
Diffstat (limited to 'dashboard/app/graphs.go')
| -rw-r--r-- | dashboard/app/graphs.go | 26 |
1 files changed, 23 insertions, 3 deletions
diff --git a/dashboard/app/graphs.go b/dashboard/app/graphs.go index 54520820f..9918f9200 100644 --- a/dashboard/app/graphs.go +++ b/dashboard/app/graphs.go @@ -10,6 +10,7 @@ import ( "net/http" "net/url" "regexp" + "slices" "sort" "strconv" "time" @@ -194,8 +195,8 @@ func handleFoundBugsGraph(c context.Context, w http.ResponseWriter, r *http.Requ return serveTemplate(w, "graph_histogram.html", data) } -type funcStyleBodyJS func(ctx context.Context, projectID, ns, subsystem, manager string, - periods []coveragedb.TimePeriod) (template.CSS, template.HTML, template.HTML, error) +type funcStyleBodyJS func(ctx context.Context, projectID string, scope *cover.SelectScope, sss, managers []string, +) (template.CSS, template.HTML, template.HTML, error) func handleCoverageHeatmap(c context.Context, w http.ResponseWriter, r *http.Request) error { return handleHeatmap(c, w, r, cover.DoHeatMapStyleBodyJS) @@ -235,9 +236,28 @@ func handleHeatmap(c context.Context, w http.ResponseWriter, r *http.Request, f if err != nil { return fmt.Errorf("%s: %w", err.Error(), ErrClientBadRequest) } + managers, err := CachedManagerList(c, hdr.Namespace) + if err != nil { + return err + } + ssService := getNsConfig(c, hdr.Namespace).Subsystems.Service + var subsystems []string + for _, ss := range ssService.List() { + subsystems = append(subsystems, ss.Name) + } + slices.Sort(managers) + slices.Sort(subsystems) + var style template.CSS var body, js template.HTML - if style, body, js, err = f(c, "syzkaller", hdr.Namespace, ss, manager, periods); err != nil { + if style, body, js, err = f(c, "syzkaller", + &cover.SelectScope{ + Ns: hdr.Namespace, + Subsystem: ss, + Manager: manager, + Periods: periods, + }, + subsystems, managers); err != nil { return fmt.Errorf("failed to generate heatmap: %w", err) } return serveTemplate(w, "custom_content.html", struct { |
