{{/*
Copyright 2019 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.

Main page.
*/}}

<!doctype html>
<html>
<head>
	{{template "head" .Header}}
	<title>syzbot</title>
</head>
<body>
	{{template "header" .Header}}

	<a class="plain" href="#log"><div id="log"><b>Error log:</b></div></a>
	<textarea id="log_textarea" readonly rows="20" wrap=off>{{printf "%s" .Log}}</textarea>
	<script>
		var textarea = document.getElementById("log_textarea");
		textarea.scrollTop = textarea.scrollHeight;
	</script>
	<br><br>

	{{template "manager_list" $.Managers}}

	<table class="list_table">
		<caption id="jobs"><a class="plain" href="#jobs">Recent jobs:</a></caption>
		<thead>
		<tr>
			<th>Bug</th>
			<th>Created</th>
			<th>Duration</th>
			<th>User</th>
			<th>Patch</th>
			<th>Repo</th>
			<th>Manager</th>
			<th>Result</th>
		</tr>
		</thead>
		<tbody>
		{{range $job := $.Jobs}}
			<tr>
				<td class="title"><a href="{{$job.BugLink}}">{{$job.BugTitle}}</a></td>
				<td class="time">{{link $job.ExternalLink (formatTime $job.Created)}}</td>
				<td class="time" title="started: {{formatTime $job.Started}}&#013;finished: {{formatTime $job.Finished}}">
					{{formatDuration $job.Duration}}{{if gt $job.Attempts 1}} ({{$job.Attempts}}){{end}}
				</td>
				<td>
					{{if eq $job.Type 0}}
						{{$job.User}}
					{{else if eq $job.Type 1}}
						bisect
					{{else if eq $job.Type 2}}
						bisect fix
					{{end}}
				</td>
				<td>{{optlink $job.PatchLink "patch"}}</td>
				<td class="kernel" title="{{$job.KernelAlias}}">{{$job.KernelAlias}}</td>
				<td title="{{$job.Namespace}}/{{$job.Reporting}}">{{$job.Manager}}</td>
				<td class="result">
					{{if $job.ErrorLink}}
						{{link $job.ErrorLink "error"}}
					{{else if $job.LogLink}}
						{{link $job.LogLink "log"}}
						({{if $job.Commit}}1{{else}}{{len $job.Commits}}{{end}})
					{{else if $job.CrashTitle}}
						{{optlink $job.CrashReportLink "report"}}
						{{optlink $job.CrashLogLink "log"}}
					{{else if formatTime $job.Finished}}
						OK
					{{else if formatTime $job.Started}}
						running
					{{else}}
						pending
					{{end}}
				</td>
			</tr>
		{{end}}
		</tbody>
	</table>
	<br><br>
</body>
</html>
