<!--
Licensed to the Apache Software Foundation (ASF) under one or more
contributor license agreements.  See the NOTICE file distributed with
this work for additional information regarding copyright ownership.
The ASF licenses this file to You under the Apache License, Version 2.0
(the "License"); you may not use this file except in compliance with
the License.  You may obtain a copy of the License at

  http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->
{% extends "experimentpage.html" %}

{% block content %}

<h1>Completed Tasks</h1>

<div class="col-md-15">
<table class="table table-hover">
	<thead>
		<tr>
			<th>Item</th>
			<th>User</th>
			<th>Task Name</th>
			<th>Date Completed</th>
			<th>Activity Count</th>
		</tr>
	</thead>
	<tbody>
		{% for task in completed_tasks %}
			<tr>
				<td>{{ forloop.counter }}</td>
				<td>{{ task.userprofile.user.username }}</td>
				<td>{{ task.op_task.name }}</td>
				<td>{{ task.date_complete }}</td>
				<td>{{ task.activity_count }}</td>
		{% endfor %}
	</tbody>
</table>
</div>

{% endblock %}