diff options
| author | Dmitry Vyukov <dvyukov@google.com> | 2024-11-07 16:01:06 +0100 |
|---|---|---|
| committer | Dmitry Vyukov <dvyukov@google.com> | 2024-11-08 14:15:20 +0000 |
| commit | 44b1e39faee03d3a5f496f66157a41f939e74286 (patch) | |
| tree | 63c2bda8f4454ffb11a23c5cbdc6e8f8ba01ffc3 /pkg/html | |
| parent | 0e6221e714759ad3d12fb1a94b62c5c607a4dbab (diff) | |
pkg/manager: wrap stats page with the common header
Add common manager HTML header to the stats page as well.
Diffstat (limited to 'pkg/html')
| -rw-r--r-- | pkg/html/pages/stats.go | 89 | ||||
| -rw-r--r-- | pkg/html/pages/stats_test.go | 7 |
2 files changed, 51 insertions, 45 deletions
diff --git a/pkg/html/pages/stats.go b/pkg/html/pages/stats.go index 2682d28e9..3bc60cc5d 100644 --- a/pkg/html/pages/stats.go +++ b/pkg/html/pages/stats.go @@ -3,48 +3,57 @@ package pages -var StatsTemplate = Create(` -<!doctype html> -<html> -<head> - <title>syzkaller stats</title> - <script type="text/javascript" src="https://www.google.com/jsapi"></script> - <script type="text/javascript"> - google.load("visualization", "1", {packages:["corechart"]}); - google.setOnLoadCallback(function() { - {{range $g := .}} - new google.visualization. {{if $g.Stacked}} AreaChart {{else}} LineChart {{end}} ( - document.getElementById('div_{{$g.ID}}')). - draw(google.visualization.arrayToDataTable([ - ["-" {{range $line := $g.Lines}} , '{{$line}}' {{end}}], - {{range $p := $g.Points}} [ {{$p.X}} {{range $y := $p.Y}} , {{$y}} {{end}} ], {{end}} - ]), { - title: '{{$g.Title}}', - titlePosition: 'in', - width: "95%", - height: "400", - chartArea: {width: '95%', height: '85%'}, - legend: {position: 'in'}, - lineWidth: 2, - focusTarget: "category", - {{if $g.Stacked}} isStacked: true, {{end}} - vAxis: {minValue: 1, textPosition: 'in', gridlines: {multiple: 1}, minorGridlines: {multiple: 1}}, - hAxis: {minValue: 1, textPosition: 'out', maxAlternation: 1, gridlines: {multiple: 1}, - minorGridlines: {multiple: 1}}, - }) - {{end}} +import ( + "bytes" + "fmt" + "html/template" + + "github.com/google/syzkaller/pkg/stat" +) + +func StatsHTML() (template.HTML, error) { + buf := new(bytes.Buffer) + data := stat.RenderGraphs() + if err := statsTemplate.Execute(buf, data); err != nil { + return "", fmt.Errorf("failed to execute stats template: %w", err) + } + return template.HTML(buf.String()), nil +} + +var statsTemplate = Create(` +<script type="text/javascript" src="https://www.google.com/jsapi"></script> +<script type="text/javascript"> + google.load("visualization", "1", {packages:["corechart"]}); + google.setOnLoadCallback(function() { + {{range $g := .}} + new google.visualization. {{if $g.Stacked}} AreaChart {{else}} LineChart {{end}} ( + document.getElementById('div_{{$g.ID}}')). + draw(google.visualization.arrayToDataTable([ + ["-" {{range $line := $g.Lines}} , '{{$line}}' {{end}}], + {{range $p := $g.Points}} [ {{$p.X}} {{range $y := $p.Y}} , {{$y}} {{end}} ], {{end}} + ]), { + title: '{{$g.Title}}', + titlePosition: 'in', + width: "95%", + height: "400", + chartArea: {width: '95%', height: '85%'}, + legend: {position: 'in'}, + lineWidth: 2, + focusTarget: "category", + {{if $g.Stacked}} isStacked: true, {{end}} + vAxis: {minValue: 1, textPosition: 'in', gridlines: {multiple: 1}, minorGridlines: {multiple: 1}}, + hAxis: {minValue: 1, textPosition: 'out', maxAlternation: 1, gridlines: {multiple: 1}, + minorGridlines: {multiple: 1}}, + }) + {{end}} + + {{/* Preserve vertical scroll position after page reloads. Otherwise it's random. */}} + window.scroll(0, window.location.hash.substring(1)); + document.onscroll = function(e) { window.location.hash = Math.round(window.scrollY); }; + }); +</script> - {{/* Preserve vertical scroll position after page reloads. Otherwise it's random. */}} - window.scroll(0, window.location.hash.substring(1)); - document.onscroll = function(e) { window.location.hash = Math.round(window.scrollY); }; - }); - </script> - {{HEAD}} -</head> -<body> {{range $g := .}} <div id="div_{{$g.ID}}"></div> {{end}} -</body> -</html> `) diff --git a/pkg/html/pages/stats_test.go b/pkg/html/pages/stats_test.go index a5dcce01d..141651188 100644 --- a/pkg/html/pages/stats_test.go +++ b/pkg/html/pages/stats_test.go @@ -4,14 +4,11 @@ package pages import ( - "io" "testing" - - "github.com/google/syzkaller/pkg/stat" ) -func TestStatsTemplate(t *testing.T) { - if err := StatsTemplate.Execute(io.Discard, stat.RenderGraphs()); err != nil { +func TestStatsHTML(t *testing.T) { + if _, err := StatsHTML(); err != nil { t.Fatal(err) } } |
