1{{/* 2Copyright 2017 syzkaller project authors. All rights reserved. 3Use of this source code is governed by Apache 2 LICENSE that can be found in the LICENSE file. 4*/}} 5 6{{/* Common page head part, invoked with *uiHeader */}} 7{{define "head"}} 8 <link rel="stylesheet" href="/static/style.css"/> 9 <script src="/static/common.js"></script> 10 {{if .AnalyticsTrackingID}} 11 <script async src="https://www.googletagmanager.com/gtag/js?id={{.AnalyticsTrackingID}}"></script> 12 <script> 13 window.dataLayer = window.dataLayer || []; 14 function gtag() { dataLayer.push(arguments); } 15 gtag('js', new Date()); 16 gtag('config', '{{.AnalyticsTrackingID}}'); 17 </script> 18 {{end}} 19{{end}} 20 21{{/* Common page header, invoked with *uiHeader */}} 22{{define "header"}} 23 <header id="topbar"> 24 <table class="position_table"> 25 <tr> 26 <td> 27 <h1><a href="/">syzbot</a></h1> 28 </td> 29 <td class="search"> 30 {{if .LoginLink}} 31 <a href="{{.LoginLink}}">sign-in</a> | 32 {{end}} 33 <a href="https://groups.google.com/forum/#!forum/syzkaller" target="_blank">mailing list</a> | 34 <a href="https://github.com/google/syzkaller" target="_blank">source</a> | 35 <a href="https://github.com/google/syzkaller/blob/master/docs/syzbot.md" target="_blank">docs</a> 36 </td> 37 </tr> 38 </table> 39 </header> 40 <br> 41{{end}} 42 43{{/* List of bugs, invoked with *uiBugGroup */}} 44{{define "bug_list"}} 45{{if .}} 46{{if .Bugs}} 47<table class="list_table"> 48 <caption id="{{.Fragment}}">{{$.Caption}}:</caption> 49 <tr> 50 {{if $.ShowNamespace}} 51 <th><a onclick="return sortTable(this, 'Kernel', textSort)" href="#">Kernel</a></th> 52 {{end}} 53 <th><a onclick="return sortTable(this, 'Title', textSort)" href="#">Title</a></th> 54 <th><a onclick="return sortTable(this, 'Repro', reproSort)" href="#">Repro</a></th> 55 <th><a onclick="return sortTable(this, 'Count', numSort)" href="#">Count</a></th> 56 <th><a onclick="return sortTable(this, 'Last', timeSort)" href="#">Last</a></th> 57 <th><a onclick="return sortTable(this, 'Reported', timeSort)" href="#">Reported</a></th> 58 {{if $.ShowPatch}} 59 <th><a onclick="return sortTable(this, 'Closed', timeSort)" href="#">Closed</a></th> 60 <th><a onclick="return sortTable(this, 'Patch', textSort)" href="#">Patch</a></th> 61 {{end}} 62 {{if $.ShowPatched}} 63 <th><a onclick="return sortTable(this, 'Patched', patchedSort)" href="#">Patched</a></th> 64 {{end}} 65 {{if $.ShowStatus}} 66 <th><a onclick="return sortTable(this, 'Status', textSort)" href="#">Status</a></th> 67 {{end}} 68 </tr> 69 {{range $b := .Bugs}} 70 <tr> 71 {{if $.ShowNamespace}}<td>{{$b.Namespace}}</td>{{end}} 72 <td class="title"><a href="{{$b.Link}}">{{$b.Title}}</a></td> 73 <td class="stat">{{formatReproLevel $b.ReproLevel}}</td> 74 <td class="stat {{if $b.NumCrashesBad}}bad{{end}}">{{$b.NumCrashes}}</td> 75 <td class="stat">{{formatLateness $.Now $b.LastTime}}</td> 76 <td class="stat"> 77 {{if $b.ExternalLink}} 78 <a href="{{$b.ExternalLink}}">{{formatLateness $.Now $b.ReportedTime}}</a> 79 {{else}} 80 {{formatLateness $.Now $b.ReportedTime}} 81 {{end}} 82 </td> 83 {{if $.ShowPatch}} 84 <td class="stat">{{formatLateness $.Now $b.ClosedTime}}</td> 85 <td class="title" title="{{$b.Commits}}">{{$b.Commits}}</td> 86 {{end}} 87 {{if $.ShowPatched}} 88 <td class="patched" title="{{$b.Commits}}">{{if $b.Commits}}{{len $b.PatchedOn}}/{{$b.NumManagers}}{{end}}</td> 89 {{end}} 90 {{if $.ShowStatus}} 91 <td class="status"> 92 {{if $b.ExternalLink}} 93 <a href="{{$b.ExternalLink}}">{{$b.Status}}</a> 94 {{else}} 95 {{$b.Status}} 96 {{end}} 97 </td> 98 {{end}} 99 </tr> 100 {{end}} 101</table> 102{{end}} 103{{end}} 104{{end}} 105