Index: branches/HiveStatistics/sources/HeuristicLab.Services.WebApp.Statistics/3.3/WebApi/TaskController.cs
===================================================================
--- branches/HiveStatistics/sources/HeuristicLab.Services.WebApp.Statistics/3.3/WebApi/TaskController.cs	(revision 12584)
+++ branches/HiveStatistics/sources/HeuristicLab.Services.WebApp.Statistics/3.3/WebApi/TaskController.cs	(revision 12768)
@@ -35,4 +35,5 @@
 
 namespace HeuristicLab.Services.WebApp.Statistics.WebApi {
+  [Authorize]
   public class TaskController : ApiController {
     private IPersistenceManager PersistenceManager {
Index: branches/HiveStatistics/sources/HeuristicLab.Services.WebApp.Statistics/3.3/WebApp/clients/details/clientDetails.cshtml
===================================================================
--- branches/HiveStatistics/sources/HeuristicLab.Services.WebApp.Statistics/3.3/WebApp/clients/details/clientDetails.cshtml	(revision 12584)
+++ branches/HiveStatistics/sources/HeuristicLab.Services.WebApp.Statistics/3.3/WebApp/clients/details/clientDetails.cshtml	(revision 12768)
@@ -181,4 +181,73 @@
 </div>
 
+<div class="default-filter-header text-center">
+    <form class="form-inline">
+        <div class="form-group" style="margin-left: 5px; margin-right: 5px;">
+            <label for="fromDate">From:&nbsp;</label>
+            <div class="input-group">
+                <input id="fromDate" type="text" class="form-control" datepicker-popup="dd.MM.yyyy" ng-model="fromDate" is-open="fromIsOpen" datepicker-options="dateOptions" ng-required="true" close-text="Close" />
+                <span class="input-group-btn">
+                    <button type="button" class="btn btn-default" ng-click="openFromDateSelection($event)"><i class="glyphicon glyphicon-calendar"></i></button>
+                </span>
+            </div>
+        </div>
+        <div class="form-group" style="margin-left: 5px; margin-right: 5px;">
+            <label for="fromDate">To:&nbsp;</label>
+            <div class="input-group">
+                <input id="fromDate" type="text" class="form-control" datepicker-popup="dd.MM.yyyy" ng-model="toDate" is-open="toIsOpen" datepicker-options="dateOptions" ng-required="true" close-text="Close" />
+                <span class="input-group-btn">
+                    <button type="button" class="btn btn-default" ng-click="openToDateSelection($event)"><i class="glyphicon glyphicon-calendar"></i></button>
+                </span>
+            </div>
+        </div>
+        <div class="form-group" style="margin-left: 5px; margin-right: 5px;">
+            <button type="button" class="btn btn-default" ng-click="updateCharts()">
+                Apply
+            </button>
+        </div>
+    </form>
+</div>
+
+<div class="default-view-container">
+    <div class="row">
+        <div class="col-lg-12">
+            <div class="panel panel-default">
+                <div class="panel-heading">
+                    <h3 class="panel-title">CPU Utilization Chart</h3>
+                </div>
+                <div class="panel-body">
+                    <flot dataset="cpuSeries" options="chartOptions"></flot>
+                </div>
+            </div>
+        </div>
+    </div>
+
+    <div class="row">
+        <div class="col-lg-12">
+            <div class="panel panel-default">
+                <div class="panel-heading">
+                    <h3 class="panel-title">Core Chart</h3>
+                </div>
+                <div class="panel-body">
+                    <flot dataset="coreSeries" options="fillChartOptions"></flot>
+                </div>
+            </div>
+        </div>
+    </div>
+
+    <div class="row">
+        <div class="col-lg-12">
+            <div class="panel panel-default">
+                <div class="panel-heading">
+                    <h3 class="panel-title">Memory Chart</h3>
+                </div>
+                <div class="panel-body">
+                    <flot dataset="memorySeries" options="fillChartOptions"></flot>
+                </div>
+            </div>
+        </div>
+    </div>
+</div>
+
 <div id="tasks-filter" class="default-filter-header text-center">
     <form class="form-inline">
@@ -212,144 +281,76 @@
 </div>
 
- <div class="default-view-container">
-     <div id="taskListContainer" class="row" ng-show="taskPage.Tasks.length">
-         <div class="col-lg-4 col-md-4" ng-repeat="task in taskPage.Tasks">
-             <div class="panel panel-default">
-                 @if (Request.IsAuthenticated && User.IsInRole(HiveRoles.Administrator)) {
-                    <div class="panel-heading cursor-pointer" ng-click="openDialog(($index + 1)+((curTaskPage-1)*(taskPageSize)), task)">
-                        <h3 class="panel-title" style="display: inline">Task {{($index + 1)+((curTaskPage-1)*(taskPageSize))}}</h3>
-                        <span ng-if="task.State == 'Finished'" class="label label-success" style="float: right;">{{task.State}}</span>
-                        <span ng-if="task.State == 'Aborted' || task.State == 'Failed'" class="label label-danger" style="float: right;">{{task.State}}</span>
-                        <span ng-if="task.State == 'Waiting'" class="label label-warning" style="float: right;">{{task.State}}</span>
-                        <span ng-if="task.State != 'Waiting' && task.State != 'Failed' && task.State != 'Aborted' && task.State != 'Finished'" class="label label-default" style="float: right;">{{task.State}}</span>
-                    </div>
-                 } else {
-                    <div class="panel-heading">
-                        <h3 class="panel-title" style="display: inline">Task {{($index + 1)+((curTaskPage-1)*(taskPageSize))}}</h3>
-                        <span ng-if="task.State == 'Finished'" class="label label-success" style="float: right;">{{task.State}}</span>
-                        <span ng-if="task.State == 'Aborted' || task.State == 'Failed'" class="label label-danger" style="float: right;">{{task.State}}</span>
-                        <span ng-if="task.State == 'Waiting'" class="label label-warning" style="float: right;">{{task.State}}</span>
-                        <span ng-if="task.State != 'Waiting' && task.State != 'Failed' && task.State != 'Aborted' && task.State != 'Finished'" class="label label-default" style="float: right;">{{task.State}}</span>
-                    </div>
-                 }
-                 
-                 <div class="panel-body">
-                     <table class="table table-condensed table-no-border table-auto-width">
-                         @if (Request.IsAuthenticated && User.IsInRole(HiveRoles.Administrator)) {
-                             <tr>
-                                 <td colspan="2"><span data-fittext="0.99">{{task.Id}}</span></td>
-                             </tr>
-                         }
-                        <tr>
-                            <td>Start Time:</td>
-                            <td ng-show="task.StartTime" class="text-right">{{task.StartTime | toDate}}</td>
-                            <td ng-hide="task.StartTime" class="text-right">Not started</td>
-                        </tr>
-                        <tr>
-                            <td>End Time:</td>
-                            <td ng-show="task.EndTime" class="text-right">{{task.EndTime | toDate}}</td>
-                            <td ng-hide="task.EndTime" class="text-right">Not finished</td>
-                        </tr>
-                         <tr>
-                             <td>Calculating Time:</td>
-                             <td class="text-right">{{task.CalculatingTime | toTimespan}}</td>
-                         </tr>
-                         @if (Request.IsAuthenticated && User.IsInRole(HiveRoles.Administrator)) {
-                             <tr>
-                                 <td>User:</td>
-                                 <td class="text-right">
-                                     <a ng-href="#/statistics/users/{{task.UserId}}" ng-show="task.UserName">{{task.UserName}}</a>
-                                     <span ng-hide="task.UserName">Unknown</span>
-                                 </td>
-                             </tr>
-                             <tr>
-                                 <td>Job:</td>
-                                 <td class="text-right">
-                                     <a ng-href="#/statistics/jobs/{{task.JobId}}" ng-show="task.JobName">{{task.JobName}}</a>
-                                     <span ng-hide="task.JobName">Unknown</span>
-                                 </td>
-                             </tr>
-                         }
-                     </table>
-                 </div>
-
-             </div>
-         </div>
-     </div>
-     <div ng-hide="taskPage.Tasks.length">
-         <p class="text-center">Please select at least one state!</p>
-     </div>
-     <div class="row text-center" ng-show="taskPage.TotalTasks > taskPage.Tasks.length">
-         <pagination max-size="10" total-items="taskPage.TotalTasks" ng-model="curTaskPage" ng-change="changeTaskPage()" items-per-page="taskPageSize"
-                     boundary-links="true" rotate="false" num-pages="numPages"></pagination>
-     </div>
- </div>
-
- <div class="default-filter-header text-center">
-     <form class="form-inline">
-         <div class="form-group" style="margin-left: 5px; margin-right: 5px;">
-             <label for="fromDate">From:&nbsp;</label>
-             <div class="input-group">
-                 <input id="fromDate" type="text" class="form-control" datepicker-popup="dd.MM.yyyy" ng-model="fromDate" is-open="fromIsOpen" datepicker-options="dateOptions" ng-required="true" close-text="Close" />
-                 <span class="input-group-btn">
-                     <button type="button" class="btn btn-default" ng-click="openFromDateSelection($event)"><i class="glyphicon glyphicon-calendar"></i></button>
-                 </span>
-             </div>
-         </div>
-         <div class="form-group" style="margin-left: 5px; margin-right: 5px;">
-             <label for="fromDate">To:&nbsp;</label>
-             <div class="input-group">
-                 <input id="fromDate" type="text" class="form-control" datepicker-popup="dd.MM.yyyy" ng-model="toDate" is-open="toIsOpen" datepicker-options="dateOptions" ng-required="true" close-text="Close" />
-                 <span class="input-group-btn">
-                     <button type="button" class="btn btn-default" ng-click="openToDateSelection($event)"><i class="glyphicon glyphicon-calendar"></i></button>
-                 </span>
-             </div>
-         </div>
-         <div class="form-group" style="margin-left: 5px; margin-right: 5px;">
-             <button type="button" class="btn btn-default" ng-click="updateCharts()">
-                 Apply
-             </button>
-         </div>
-     </form>
- </div>
-
- <div class="default-view-container">
-     <div class="row">
-         <div class="col-lg-12">
-             <div class="panel panel-default">
-                 <div class="panel-heading">
-                     <h3 class="panel-title">CPU Utilization Chart</h3>
-                 </div>
-                 <div class="panel-body">
-                     <flot dataset="cpuSeries" options="chartOptions"></flot>
-                 </div>
-             </div>
-         </div>
-     </div>
-
-     <div class="row">
-         <div class="col-lg-12">
-             <div class="panel panel-default">
-                 <div class="panel-heading">
-                     <h3 class="panel-title">Core Chart</h3>
-                 </div>
-                 <div class="panel-body">
-                     <flot dataset="coreSeries" options="fillChartOptions"></flot>
-                 </div>
-             </div>
-         </div>
-     </div>
-
-     <div class="row">
-         <div class="col-lg-12">
-             <div class="panel panel-default">
-                 <div class="panel-heading">
-                     <h3 class="panel-title">Memory Chart</h3>
-                 </div>
-                 <div class="panel-body">
-                     <flot dataset="memorySeries" options="fillChartOptions"></flot>
-                 </div>
-             </div>
-         </div>
-     </div>
- </div>
+<div class="default-view-container">
+    <div id="taskListContainer" class="row" ng-show="taskPage.Tasks.length">
+        <div class="col-lg-4 col-md-4" ng-repeat="task in taskPage.Tasks">
+            <div class="panel panel-default">
+                @if (Request.IsAuthenticated && User.IsInRole(HiveRoles.Administrator)) {
+                   <div class="panel-heading cursor-pointer" ng-click="openDialog(($index + 1)+((curTaskPage-1)*(taskPageSize)), task)">
+                       <h3 class="panel-title" style="display: inline">Task {{($index + 1)+((curTaskPage-1)*(taskPageSize))}}</h3>
+                       <span ng-if="task.State == 'Finished'" class="label label-success" style="float: right;">{{task.State}}</span>
+                       <span ng-if="task.State == 'Aborted' || task.State == 'Failed'" class="label label-danger" style="float: right;">{{task.State}}</span>
+                       <span ng-if="task.State == 'Waiting'" class="label label-warning" style="float: right;">{{task.State}}</span>
+                       <span ng-if="task.State != 'Waiting' && task.State != 'Failed' && task.State != 'Aborted' && task.State != 'Finished'" class="label label-default" style="float: right;">{{task.State}}</span>
+                   </div>
+                } else {
+                   <div class="panel-heading">
+                       <h3 class="panel-title" style="display: inline">Task {{($index + 1)+((curTaskPage-1)*(taskPageSize))}}</h3>
+                       <span ng-if="task.State == 'Finished'" class="label label-success" style="float: right;">{{task.State}}</span>
+                       <span ng-if="task.State == 'Aborted' || task.State == 'Failed'" class="label label-danger" style="float: right;">{{task.State}}</span>
+                       <span ng-if="task.State == 'Waiting'" class="label label-warning" style="float: right;">{{task.State}}</span>
+                       <span ng-if="task.State != 'Waiting' && task.State != 'Failed' && task.State != 'Aborted' && task.State != 'Finished'" class="label label-default" style="float: right;">{{task.State}}</span>
+                   </div>
+                }
+                
+                <div class="panel-body">
+                    <table class="table table-condensed table-no-border table-auto-width">
+                        @if (Request.IsAuthenticated && User.IsInRole(HiveRoles.Administrator)) {
+                            <tr>
+                                <td colspan="2"><span data-fittext="0.99">{{task.Id}}</span></td>
+                            </tr>
+                        }
+                       <tr>
+                           <td>Start Time:</td>
+                           <td ng-show="task.StartTime" class="text-right">{{task.StartTime | toDate}}</td>
+                           <td ng-hide="task.StartTime" class="text-right">Not started</td>
+                       </tr>
+                       <tr>
+                           <td>End Time:</td>
+                           <td ng-show="task.EndTime" class="text-right">{{task.EndTime | toDate}}</td>
+                           <td ng-hide="task.EndTime" class="text-right">Not finished</td>
+                       </tr>
+                        <tr>
+                            <td>Calculating Time:</td>
+                            <td class="text-right">{{task.CalculatingTime | toTimespan}}</td>
+                        </tr>
+                        @if (Request.IsAuthenticated && User.IsInRole(HiveRoles.Administrator)) {
+                            <tr>
+                                <td>User:</td>
+                                <td class="text-right">
+                                    <a ng-href="#/statistics/users/{{task.UserId}}" ng-show="task.UserName">{{task.UserName}}</a>
+                                    <span ng-hide="task.UserName">Unknown</span>
+                                </td>
+                            </tr>
+                            <tr>
+                                <td>Job:</td>
+                                <td class="text-right">
+                                    <a ng-href="#/statistics/jobs/{{task.JobId}}" ng-show="task.JobName">{{task.JobName}}</a>
+                                    <span ng-hide="task.JobName">Unknown</span>
+                                </td>
+                            </tr>
+                        }
+                    </table>
+                </div>
+
+            </div>
+        </div>
+    </div>
+    <div ng-hide="taskPage.Tasks.length">
+        <p class="text-center">Please select at least one state!</p>
+    </div>
+    <div class="row text-center" ng-show="taskPage.TotalTasks > taskPage.Tasks.length">
+        <pagination max-size="10" total-items="taskPage.TotalTasks" ng-model="curTaskPage" ng-change="changeTaskPage()" items-per-page="taskPageSize"
+                    boundary-links="true" rotate="false" num-pages="numPages"></pagination>
+    </div>
+</div>
+
Index: branches/HiveStatistics/sources/HeuristicLab.Services.WebApp.Statistics/3.3/WebApp/clients/details/clientTaskDetailsDialog.cshtml
===================================================================
--- branches/HiveStatistics/sources/HeuristicLab.Services.WebApp.Statistics/3.3/WebApp/clients/details/clientTaskDetailsDialog.cshtml	(revision 12584)
+++ branches/HiveStatistics/sources/HeuristicLab.Services.WebApp.Statistics/3.3/WebApp/clients/details/clientTaskDetailsDialog.cshtml	(revision 12768)
@@ -105,4 +105,13 @@
                     </div>
                 </div>
+                <div class="row">
+                    <div class="col-md-12">
+                        <table class="table table-condensed table-no-border table-auto-width table-content">
+                            <tr>
+                                <td><a href="api/Statistics/Task/GetTaskDataById?id={{task.Id}}">Download</a></td>
+                            </tr>
+                        </table>
+                    </div>
+                </div>
             </div>
         </tab>
Index: branches/HiveStatistics/sources/HeuristicLab.Services.WebApp.Statistics/3.3/WebApp/jobs/details/jobTaskDetailsDialog.cshtml
===================================================================
--- branches/HiveStatistics/sources/HeuristicLab.Services.WebApp.Statistics/3.3/WebApp/jobs/details/jobTaskDetailsDialog.cshtml	(revision 12584)
+++ branches/HiveStatistics/sources/HeuristicLab.Services.WebApp.Statistics/3.3/WebApp/jobs/details/jobTaskDetailsDialog.cshtml	(revision 12768)
@@ -84,4 +84,13 @@
                     </div>
                 </div>
+                <div class="row">
+                    <div class="col-md-12">
+                        <table class="table table-condensed table-no-border table-auto-width table-content">
+                            <tr>
+                                <td><a href="api/Statistics/Task/GetTaskDataById?id={{task.Id}}">Download</a></td>
+                            </tr>
+                        </table>
+                    </div>
+                </div>
             </div>
         </tab>
