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

Main page.
*/}}

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

	{{if .Log}}
	<b>Error log:</b><br>
	<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>
	{{end}}

	{{if $.Managers}}
	<table class="list_table" id="managers">
		<caption>Managers:</caption>
		<tr>
			<th>Name</th>
			<th>Last Active</th>
			<th>Current Build</th>
			<th>Current Uptime</th>
			<th>Today: Fuzzing Time</th>
			<th>Corpus</th>
			<th>Coverage</th>
			<th>Crashes</th>
			<th>Execs</th>
			<th>Failed Build</th>
		</tr>
		{{range $mgr := $.Managers}}
			<tr>
				<td><a href="{{$mgr.Link}}">{{$mgr.Namespace}}/{{$mgr.Name}}</a></td>
				<td class="stat {{if $mgr.LastActiveBad}}bad{{end}}">{{formatLateness $.Now $mgr.LastActive}}</td>
				{{if $mgr.CurrentBuild}}
					<td class="stat" title="{{$mgr.CurrentBuild.KernelAlias}}/{{$mgr.CurrentBuild.KernelCommit}} (syzkaller {{$mgr.CurrentBuild.SyzkallerCommit}})">{{formatLateness $.Now $mgr.CurrentBuild.Time}}</td>
				{{else}}
					<td></td>
				{{end}}
				<td class="stat">{{formatDuration $mgr.CurrentUpTime}}</td>
				<td class="stat">{{formatDuration $mgr.TotalFuzzingTime}}</td>
				<td class="stat">{{formatStat $mgr.MaxCorpus}}</td>
				<td class="stat">{{formatStat $mgr.MaxCover}}</td>
				<td class="stat">{{formatStat $mgr.TotalCrashes}}</td>
				<td class="stat">{{formatStat $mgr.TotalExecs}}</td>
				<td class="stat">{{if $mgr.FailedBuildBugLink}}<a href="{{$mgr.FailedBuildBugLink}}" class="bad">bug</a>{{end}}</td>
			</tr>
		{{end}}
	</table>
	<br><br>
	{{end}}

	{{if $.Jobs}}
	<table class="list_table" id="jobs">
		<caption>Recent jobs:</caption>
		<tr>
			<th>Bug</th>
			<th>Created</th>
			<th>Started</th>
			<th>Finished</th>
			<th>User</th>
			<th>Patch</th>
			<th>Repo</th>
			<th>Manager</th>
			<th>Result</th>
		</tr>
		{{range $job := $.Jobs}}
			<tr>
				<td class="title"><a href="{{$job.BugLink}}">{{$job.BugTitle}}</a></td>
				<td class="time">{{if $job.ExternalLink}}<a href="{{$job.ExternalLink}}">{{formatTime $job.Created}}</a>{{else}}{{formatTime $job.Created}}{{end}}</td>
				<td class="time">{{formatTime $job.Started}}{{if gt $job.Attempts 1}} ({{$job.Attempts}}){{end}}</td>
				<td class="time">{{formatTime $job.Finished}}</td>
				<td>{{$job.User}}</td>
				<td><a href="{{$job.PatchLink}}">patch</a></td>
				<td class="kernel" title="{{$job.KernelAlias}}">{{$job.KernelAlias}}</td>
				<td title="{{$job.Namespace}}/{{$job.Reporting}}">{{$job.Manager}}</td>
				{{if $job.ErrorLink}}
					<td class="result"><a href="{{$job.ErrorLink}}">error</a></td>
				{{else if $job.CrashTitle}}
					<td class="result" title="{{$job.CrashTitle}}">
						{{if $job.CrashReportLink}}
							<a href="{{$job.CrashReportLink}}">report</a>
						{{end}}
						{{if $job.CrashLogLink}}
							 <a href="{{$job.CrashLogLink}}">log</a>
						{{end}}
					</td>
				{{else if formatTime $job.Finished}}
					<td class="result">OK</td>
				{{else if formatTime $job.Started}}
					<td class="result">running</td>
				{{else}}
					<td class="result">pending</td>
				{{end}}
			</tr>
		{{end}}
	</table>
	<br><br>
	{{end}}

	{{range $ns := $.BugNamespaces}}
		<br>
		<h2 id="{{$ns.Name}}">{{$ns.Caption}}</h2>
		{{if $ns.FixedLink}}
			{{if $ns.CoverLink}}
				<a href="{{$ns.CoverLink}}" target="_blank">source coverage</a> |
			{{end}}
			<a href="{{$ns.FixedLink}}">fixed bugs ({{$ns.FixedCount}})</a>
		{{end}}
		{{range $group := $ns.Groups}}
			{{template "bug_list" $group}}
		{{end}}
		<br>
	{{end}}
</body>
</html>
