{{/*
Copyright 2017 syzkaller project authors. All rights reserved.
Use of this source code is governed by Apache 2 LICENSE that can be found in the LICENSE file.
*/}}

{{/* Common page head part, invoked with *uiHeader */}}
{{define "head"}}
	<link rel="stylesheet" href="/static/style.css"/>
	<script src="/static/common.js"></script>
	{{if .AnalyticsTrackingID}}
		<script async src="https://www.googletagmanager.com/gtag/js?id={{.AnalyticsTrackingID}}"></script>
		<script>
			window.dataLayer = window.dataLayer || [];
			function gtag() { dataLayer.push(arguments); }
			gtag('js', new Date());
			gtag('config', '{{.AnalyticsTrackingID}}');
		</script>
	{{end}}
{{end}}

{{/* Common page header, invoked with *uiHeader */}}
{{define "header"}}
	<header id="topbar">
		<table class="position_table">
			<tr>
				<td>
					<h1><a href="/">syzbot</a></h1>
				</td>
				<td class="search">
					{{if .LoginLink}}
						<a href="{{.LoginLink}}">sign-in</a> |
					{{end}}
					<a href="https://groups.google.com/forum/#!forum/syzkaller" target="_blank">mailing list</a> |
					<a href="https://github.com/google/syzkaller" target="_blank">source</a> |
					<a href="https://github.com/google/syzkaller/blob/master/docs/syzbot.md" target="_blank">docs</a>
				</td>
			</tr>
		</table>
	</header>
	<br>
{{end}}

{{/* List of bugs, invoked with *uiBugGroup */}}
{{define "bug_list"}}
{{if .}}
{{if .Bugs}}
<table class="list_table">
	<caption id="{{.Fragment}}">{{$.Caption}}:</caption>
	<tr>
		{{if $.ShowNamespace}}
			<th><a onclick="return sortTable(this, 'Kernel', textSort)" href="#">Kernel</a></th>
		{{end}}
		<th><a onclick="return sortTable(this, 'Title', textSort)" href="#">Title</a></th>
		<th><a onclick="return sortTable(this, 'Repro', reproSort)" href="#">Repro</a></th>
		<th><a onclick="return sortTable(this, 'Count', numSort)" href="#">Count</a></th>
		<th><a onclick="return sortTable(this, 'Last', timeSort)" href="#">Last</a></th>
		<th><a onclick="return sortTable(this, 'Reported', timeSort)" href="#">Reported</a></th>
		{{if $.ShowPatch}}
			<th><a onclick="return sortTable(this, 'Closed', timeSort)" href="#">Closed</a></th>
			<th><a onclick="return sortTable(this, 'Patch', textSort)" href="#">Patch</a></th>
		{{end}}
		{{if $.ShowPatched}}
			<th><a onclick="return sortTable(this, 'Patched', patchedSort)" href="#">Patched</a></th>
		{{end}}
		{{if $.ShowStatus}}
			<th><a onclick="return sortTable(this, 'Status', textSort)" href="#">Status</a></th>
		{{end}}
	</tr>
	{{range $b := .Bugs}}
		<tr>
			{{if $.ShowNamespace}}<td>{{$b.Namespace}}</td>{{end}}
			<td class="title"><a href="{{$b.Link}}">{{$b.Title}}</a></td>
			<td class="stat">{{formatReproLevel $b.ReproLevel}}</td>
			<td class="stat {{if $b.NumCrashesBad}}bad{{end}}">{{$b.NumCrashes}}</td>
			<td class="stat">{{formatLateness $.Now $b.LastTime}}</td>
			<td class="stat">
				{{if $b.ExternalLink}}
					<a href="{{$b.ExternalLink}}">{{formatLateness $.Now $b.ReportedTime}}</a>
				{{else}}
					{{formatLateness $.Now $b.ReportedTime}}
				{{end}}
			</td>
			{{if $.ShowPatch}}
				<td class="stat">{{formatLateness $.Now $b.ClosedTime}}</td>
				<td class="title" title="{{$b.Commits}}">{{$b.Commits}}</td>
			{{end}}
			{{if $.ShowPatched}}
				<td class="patched" title="{{$b.Commits}}">{{if $b.Commits}}{{len $b.PatchedOn}}/{{$b.NumManagers}}{{end}}</td>
			{{end}}
			{{if $.ShowStatus}}
				<td class="status">
					{{if $b.ExternalLink}}
						<a href="{{$b.ExternalLink}}">{{$b.Status}}</a>
					{{else}}
						{{$b.Status}}
					{{end}}
				</td>
			{{end}}
		</tr>
	{{end}}
</table>
{{end}}
{{end}}
{{end}}
