Index: branches/HeuristicLab.Hive.Azure/HeuristicLab.Services.Hive.Web/Hive-3.3/Status.aspx
===================================================================
--- branches/HeuristicLab.Hive.Azure/HeuristicLab.Services.Hive.Web/Hive-3.3/Status.aspx	(revision 7019)
+++ branches/HeuristicLab.Hive.Azure/HeuristicLab.Services.Hive.Web/Hive-3.3/Status.aspx	(revision 7215)
@@ -6,7 +6,11 @@
 <html xmlns="http://www.w3.org/1999/xhtml">
 <head runat="server">
-  <title></title>
+  <title>HeuristicLab Hive Status Monitor</title> 
+  <link rel="icon" type="image/ico" href="HeuristicLab.ico" /> 
 </head>
 <body>
+  <center>
+    <h1>HeuristicLab Hive Status Monitor</h1>
+  </center>
   <form id="form1" runat="server">
   <div>
@@ -20,16 +24,13 @@
     <asp:Label ID="waitingJobsLabel" runat="server" />
     <br />
+    Avg. CPU Utilization:
+    <asp:Label ID="cpuUtilizationLabel" runat="server" />
+      <br />
     Slaves (CPU Utilization):
     <asp:Label ID="slavesLabel" runat="server" />
-    <br />
-    Avg. CPU Utilization:
-    <asp:Label ID="cpuUtilizationLabel" runat="server" />
-    <br />
-    ExecutionTime on Hive:
-    <asp:Label ID="totalExecutionTimeLabel" runat="server" />
-    <br />
+      <br />
     <br />
     Days:
-    <asp:DropDownList ID="daysDropDownList" runat="server" AutoPostBack="True" OnSelectedIndexChanged="daysDropDownList_SelectedIndexChanged">
+    <asp:DropDownList ID="daysDropDownList" runat="server" AutoPostBack="True">
       <asp:ListItem Value="1"></asp:ListItem>
       <asp:ListItem Value="2"></asp:ListItem>
@@ -121,55 +122,5 @@
     </asp:Chart>
     <br />
-    Speedup (ComputedMinutes/Minute)<br />
-    <asp:Chart ID="speedupChartMinutes" runat="server" Palette="None" Width="1900px"
-      PaletteCustomColors="79, 129, 189">
-      <Series>
-        <asp:Series ChartType="Area" Name="Speedup" XValueType="DateTime" YValueType="Double">
-        </asp:Series>
-        <asp:Series BorderWidth="2" ChartArea="ChartArea1" 
-          ChartType="Line" Color="185, 205, 150" Name="Cores">
-        </asp:Series>
-      </Series>
-      <ChartAreas>
-        <asp:ChartArea BackColor="Black" BackHatchStyle="DottedGrid" BackSecondaryColor="0, 96, 43"
-          BorderColor="DarkGreen" BorderDashStyle="Dot" Name="ChartArea1">
-          <AxisY Minimum="-5">
-            <MajorGrid Enabled="False" />
-          </AxisY>
-          <AxisX IntervalAutoMode="VariableCount" IntervalOffset="1" IntervalOffsetType="Hours"
-            IntervalType="Hours" IsLabelAutoFit="False" >
-            <MajorGrid Enabled="False" />
-            <LabelStyle Format="d/M/yyyy HH:mm" IsStaggered="True" />
-          </AxisX>
-        </asp:ChartArea>
-      </ChartAreas>
-    </asp:Chart>
-    <br />
-    Speedup (ComputedHours/Hour)<br />
-    <br />
-    <asp:Chart ID="speedupChartHours" runat="server" Palette="None" Width="1900px" PaletteCustomColors="79, 129, 189">
-      <Series>
-        <asp:Series ChartType="Area" Name="Speedup" XValueType="DateTime" 
-          YValueType="Double">
-        </asp:Series>
-        <asp:Series BorderWidth="2" ChartArea="ChartArea1" 
-          ChartType="Line" Color="185, 205, 150" Name="Cores">
-        </asp:Series>
-      </Series>
-      <ChartAreas>
-        <asp:ChartArea BackColor="Black" BackHatchStyle="DottedGrid" BackSecondaryColor="0, 96, 43"
-          BorderColor="DarkGreen" BorderDashStyle="Dot" Name="ChartArea1">
-          <AxisY>
-            <MajorGrid Enabled="False" />
-          </AxisY>
-          <AxisX IntervalAutoMode="VariableCount" IntervalOffset="1" IntervalOffsetType="Hours"
-            IntervalType="Hours" IsLabelAutoFit="False">
-            <MajorGrid Enabled="False" />
-            <LabelStyle Format="d/M/yyyy HH:mm" IsStaggered="True" />
-          </AxisX>
-        </asp:ChartArea>
-      </ChartAreas>
-    </asp:Chart>
-    <br />
+      <br />
   </div>
   </form>
Index: branches/HeuristicLab.Hive.Azure/HeuristicLab.Services.Hive.Web/Hive-3.3/Status.aspx.cs
===================================================================
--- branches/HeuristicLab.Hive.Azure/HeuristicLab.Services.Hive.Web/Hive-3.3/Status.aspx.cs	(revision 7019)
+++ branches/HeuristicLab.Hive.Azure/HeuristicLab.Services.Hive.Web/Hive-3.3/Status.aspx.cs	(revision 7215)
@@ -32,27 +32,37 @@
 using System.Web.UI.DataVisualization.Charting;
 using DA = HeuristicLab.Services.Hive.DataAccess;
+using DT = HeuristicLab.Services.Hive.DataTransfer;
 
 public partial class Status : System.Web.UI.Page {
   protected void Page_Load(object sender, EventArgs e) {
     var dao = ServiceLocator.Instance.HiveDao;
+    var transactionManager = ServiceLocator.Instance.TransactionManager;
     var resourceName = Request.QueryString["resource"];
-    IEnumerable<Guid> resourceIds;
+    IEnumerable<Guid> resourceIds = new List<Guid>();
+    IEnumerable<DT.Slave> onlineSlaves = new List<DT.Slave>();
+    int currentlyJobsWaiting = 0;
+
     if (!string.IsNullOrEmpty(resourceName)) {
-      var resId = dao.GetResources(x => x.Name == resourceName).Single().Id;
-      resourceIds = dao.GetChildResources(resId).Select(x => x.Id).Union(new List<Guid> { resId });
-      speedupChartHours.Visible = false;
-      speedupChartMinutes.Visible = false;
+        transactionManager.UseTransaction(() =>
+        {
+            var resId = dao.GetResources(x => x.Name == resourceName).Single().Id;
+            resourceIds = dao.GetChildResources(resId).Select(x => x.Id).Union(new List<Guid> { resId });
+        }, false, false);        
     } else {
-      resourceIds = dao.GetResources(x => true).Select(y => y.Id);
-      speedupChartHours.Visible = true;
-      speedupChartMinutes.Visible = true;
-    }
-                                  
-    var onlineSlaves = dao.GetSlaves(x => (x.SlaveState == DA.SlaveState.Calculating || x.SlaveState == DA.SlaveState.Idle) && resourceIds.Contains(x.ResourceId));
+        transactionManager.UseTransaction(() =>
+        {
+             resourceIds = dao.GetResources(x => true).Select(y => y.Id);
+        }, false, false);
+    }   
+
+    transactionManager.UseTransaction(() =>
+    {                     
+        onlineSlaves = dao.GetSlaves(x => (x.SlaveState == DA.SlaveState.Calculating || x.SlaveState == DA.SlaveState.Idle) && resourceIds.Contains(x.ResourceId));
+        currentlyJobsWaiting = dao.GetTasks(x => x.State == DA.TaskState.Waiting).Count();
+    }, false, false);
 
     int currentlyAvailableCores = onlineSlaves.Where(s => s.Cores.HasValue).Sum(s => s.Cores.Value);
     int currentlyUsedCores = currentlyAvailableCores - onlineSlaves.Where(s => s.FreeCores.HasValue).Sum(s => s.FreeCores.Value);
-    int currentlyJobsWaiting = ServiceLocator.Instance.HiveDao.GetTasks(x => x.State == DA.TaskState.Waiting).Count();
-
+    
     this.availableCoresLabel.Text = currentlyAvailableCores.ToString();
     this.usedCoresLabel.Text = currentlyUsedCores.ToString();
@@ -63,18 +73,13 @@
     cpuUtilizationLabel.Text = (onlineSlaves.Count() > 0 ? Math.Round(onlineSlaves.Average(s => s.CpuUtilization), 2).ToString() : "0.0") + " %";
 
-    HeuristicLab.Services.Hive.DataTransfer.Statistics[] stats;
-    if (daysDropDownList.SelectedValue == "All") {
-      stats = dao.GetStatistics(x => true).OrderBy(x => x.TimeStamp).ToArray();
-    } else {
-      stats = dao.GetStatistics(x => x.Timestamp >= DateTime.Now.Subtract(TimeSpan.FromDays(int.Parse(daysDropDownList.SelectedValue)))).OrderBy(x => x.TimeStamp).ToArray();
-    }
-                                                     
-    if (stats.Length != 0) {
-      var firstStatisticsDate = stats.OrderBy(x => x.TimeStamp).First().TimeStamp;
-      var statisticsSince = DateTime.Now - firstStatisticsDate;
-      totalExecutionTimeLabel.Text = new TimeSpan(stats.Last().UserStatistics.Sum(x => x.ExecutionTime.Ticks)).ToString() + " (since " + Math.Round(statisticsSince.TotalDays, 2) + " days)";
-    } else {
-      totalExecutionTimeLabel.Text = "00:00:00.00";
-    }
+    DT.Statistics[] stats = new DT.Statistics[0];    
+    transactionManager.UseTransaction(() =>
+    {   
+        if (daysDropDownList.SelectedValue == "All") {
+          stats = dao.GetStatistics(x => true).OrderBy(x => x.TimeStamp).ToArray();
+        } else {
+          stats = dao.GetStatistics(x => x.Timestamp >= DateTime.Now.Subtract(TimeSpan.FromDays(int.Parse(daysDropDownList.SelectedValue)))).OrderBy(x => x.TimeStamp).ToArray();
+        }
+    }, false, false);
     
     for (int i = 0; i < stats.Length; i++) {
@@ -95,30 +100,5 @@
       memoryChart.Series[0].Points.AddXY(s.TimeStamp.ToOADate(), memory / 1024.0);
       memoryChart.Series[1].Points.AddXY(s.TimeStamp.ToOADate(), usedMemory / 1024.0);
-
-      if (i > 0) {
-        var execTime = new TimeSpan(s.UserStatistics.Sum(x => x.ExecutionTime.Ticks));
-        var execTimePrev = new TimeSpan(stats[i - 1].UserStatistics.Sum(x => x.ExecutionTime.Ticks));
-        var execTimeDifference = execTimePrev - execTime;
-
-        var timeDifference = stats[i - 1].TimeStamp - s.TimeStamp; // the difference between statistic entries is not alway exactly 1 minute
-        var speedup = execTimeDifference.TotalMinutes / timeDifference.TotalMinutes;
-        speedupChartMinutes.Series[0].Points.AddXY(s.TimeStamp.ToOADate(), speedup);
-        speedupChartMinutes.Series[1].Points.AddXY(s.TimeStamp.ToOADate(), cores);
-      }
-      if (i - 60 >= 0) {
-        var execTime = new TimeSpan(s.UserStatistics.Sum(x => x.ExecutionTime.Ticks));
-        var execTimePrev = new TimeSpan(stats[i - 60].UserStatistics.Sum(x => x.ExecutionTime.Ticks));
-        var execTimeDifference = execTimePrev - execTime;
-
-        var timeDifference = stats[i - 60].TimeStamp - s.TimeStamp; // the difference between statistic entries is not alway exactly 1 minute
-        var speedup = execTimeDifference.TotalMinutes / timeDifference.TotalMinutes;
-        speedupChartHours.Series[0].Points.AddXY(s.TimeStamp.ToOADate(), speedup);
-        speedupChartHours.Series[1].Points.AddXY(s.TimeStamp.ToOADate(), cores);
-      }
     }
   }
-
-  protected void daysDropDownList_SelectedIndexChanged(object sender, EventArgs e) {
-
-  }
 }
