{{/*
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>
	<title>Syzkaller Dashboard</title>
	<link rel="stylesheet" href="/static/style.css"/>
</head>
<body>
	{{template "header" .Header}}

	<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>

	<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.KernelRepo}}/{{$mgr.CurrentBuild.KernelBranch}}/{{$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>

	<table class="list_table" id="jobs">
		<caption>Recent jobs:</caption>
		<tr>
			<th>Created</th>
			<th>Started</th>
			<th>Finished</th>
			<th>User</th>
			<th>Bug</th>
			<th>Patch</th>
			<th>Reporting</th>
			<th>Manager</th>
			<th>Repo</th>
			<th>Result</th>
		</tr>
		{{range $job := $.Jobs}}
			<tr>
				<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 class="title"><a href="{{$job.BugLink}}">{{$job.BugTitle}}</a></td>
				<td><a href="{{$job.PatchLink}}">patch</a></td>
				<td>{{$job.Namespace}}/{{$job.Reporting}}</td>
				<td>{{$job.Manager}}</td>
				<td>{{$job.KernelRepo}}/{{$job.KernelBranch}}</td>
				<td>
					{{if $job.ErrorLink}}
						<a href="{{$job.ErrorLink}}">error</a>
					{{else if $job.CrashTitle}}
						{{if $job.CrashReportLink}}
							<a href="{{$job.CrashReportLink}}">{{$job.CrashTitle}}</a>
						{{else}}
							{{$job.CrashTitle}}
						{{end}}
						{{if $job.CrashLogLink}}
							 (<a href="{{$job.CrashLogLink}}">log</a>)
						{{end}}
					{{else if formatTime $job.Finished}}
						OK
					{{else if formatTime $job.Started}}
						running
					{{else}}
						pending
					{{end}}
				</td>
			</tr>
		{{end}}
	</table>
	<br><br>

	{{range $group := $.BugGroups}}
		{{template "bug_list" $group}}
	{{end}}
</body>
</html>
