Index: branches/HiveStatistics/sources/HeuristicLab.ExtLibs/HeuristicLab.AvalonEdit/5.0.1/HeuristicLab.AvalonEdit-5.0.1/Plugin.cs.frame
===================================================================
--- branches/HiveStatistics/sources/HeuristicLab.ExtLibs/HeuristicLab.AvalonEdit/5.0.1/HeuristicLab.AvalonEdit-5.0.1/Plugin.cs.frame	(revision 12516)
+++ branches/HiveStatistics/sources/HeuristicLab.ExtLibs/HeuristicLab.AvalonEdit/5.0.1/HeuristicLab.AvalonEdit-5.0.1/Plugin.cs.frame	(revision 12522)
@@ -27,4 +27,5 @@
   [PluginFile("ICSharpCode.AvalonEdit.dll", PluginFileType.Assembly)]
   [PluginFile("ICSharpCode.AvalonEdit License-5.0.1.txt", PluginFileType.License)]
+  [PluginDependency("HeuristicLab.NRefactory", "5.5")]
   public class HeuristicLabAvalonEditPlugin : PluginBase {
   }
Index: branches/HiveStatistics/sources/HeuristicLab.Services.WebApp.Status/3.3/WebApp/history/history.cshtml
===================================================================
--- branches/HiveStatistics/sources/HeuristicLab.Services.WebApp.Status/3.3/WebApp/history/history.cshtml	(revision 12516)
+++ branches/HiveStatistics/sources/HeuristicLab.Services.WebApp.Status/3.3/WebApp/history/history.cshtml	(revision 12522)
@@ -12,5 +12,5 @@
 <div id="history-header">
     <form class="form-inline">
-        <div class="form-group">
+        <div class="form-group" style="margin-left: 5px; margin-right: 5px;">
             <label for="fromDate">From:&nbsp;</label>
             <div class="input-group">
@@ -21,6 +21,6 @@
             </div>
         </div>
-        <div class="form-group">
-            <label for="fromDate">&nbsp;&nbsp;To:&nbsp;</label>
+        <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" />
@@ -29,4 +29,9 @@
                 </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>
Index: branches/HiveStatistics/sources/HeuristicLab.Services.WebApp.Status/3.3/WebApp/history/historyCtrl.js
===================================================================
--- branches/HiveStatistics/sources/HeuristicLab.Services.WebApp.Status/3.3/WebApp/history/historyCtrl.js	(revision 12516)
+++ branches/HiveStatistics/sources/HeuristicLab.Services.WebApp.Status/3.3/WebApp/history/historyCtrl.js	(revision 12522)
@@ -14,17 +14,9 @@
                 yaxis: {
                     min: 0,
-                    max: 100,
-                    zoomRange: false,
-                    panRange: false
+                    max: 100
                 },
                 xaxis: {
                     mode: "time",
                     twelveHourClock: false
-                },
-                zoom: {
-                    interactive: true
-                },
-                pan: {
-                    interactive: true
                 }
             };
@@ -42,17 +34,7 @@
                     }
                 },
-                yaxis: {
-                    zoomRange: false,
-                    panRange: false
-                },
                 xaxis: {
                     mode: "time",
                     twelveHourClock: false
-                },
-                zoom: {
-                    interactive: true
-                },
-                pan: {
-                    interactive: true
                 }
             };
@@ -88,5 +70,5 @@
             $scope.memorySeries = [[]];
 
-            var updateCharts = function () {
+            $scope.updateCharts = function () {
                 dataService.getStatusHistory({ start: ConvertFromDate($scope.fromDate), end: ConvertToDate($scope.toDate) }, function (status) {
                     var noOfStatus = status.length;
@@ -100,6 +82,6 @@
                         coreSeries[0].push([curStatus.Timestamp, curStatus.CoreStatus.ActiveCores]);
                         coreSeries[1].push([curStatus.Timestamp, curStatus.CoreStatus.CalculatingCores]);
-                        memorySeries[0].push([curStatus.Timestamp, curStatus.MemoryStatus.ActiveMemory]);
-                        memorySeries[1].push([curStatus.Timestamp, curStatus.MemoryStatus.UsedMemory]);
+                        memorySeries[0].push([curStatus.Timestamp, Math.round(curStatus.MemoryStatus.ActiveMemory / 1024)]);
+                        memorySeries[1].push([curStatus.Timestamp, Math.round(curStatus.MemoryStatus.UsedMemory / 1024)]);
                     }
                     $scope.cpuSeries = [{ data: cpuSeries, label: "&nbsp;CPU Utilization", color: "#f7921d" }];
@@ -115,11 +97,5 @@
                 });
             };
-
-            $scope.$watch('fromDate', function (newValue, oldValue) {
-                updateCharts();
-            });
-            $scope.$watch('toDate', function (newValue, oldValue) {
-                updateCharts();
-            });
+            $scope.updateCharts();
         }]
     );
Index: branches/HiveStatistics/sources/HeuristicLab.Services.WebApp.Status/3.3/WebApp/status/status.cshtml
===================================================================
--- branches/HiveStatistics/sources/HeuristicLab.Services.WebApp.Status/3.3/WebApp/status/status.cshtml	(revision 12516)
+++ branches/HiveStatistics/sources/HeuristicLab.Services.WebApp.Status/3.3/WebApp/status/status.cshtml	(revision 12522)
@@ -80,13 +80,13 @@
                     <tr data-toggle="tooltip" data-placement="bottom" title="All online slaves">
                         <td class="text-left">Total:</td>
-                        <td class="text-right">{{status.MemoryStatus.TotalMemory | number}} GB</td>
+                        <td class="text-right">{{status.MemoryStatus.TotalMemory | toGB}}</td>
                     </tr>
                     <tr data-toggle="tooltip" data-placement="bottom" title="All calculating and idle slaves that are allowed to calculate">
                         <td class="text-left">Active:</td>
-                        <td class="text-right">{{status.MemoryStatus.ActiveMemory | number}} GB</td>
+                        <td class="text-right">{{status.MemoryStatus.ActiveMemory | toGB}}</td>
                     </tr>
                     <tr data-toggle="tooltip" data-placement="bottom" title="All calculating slaves that are allowed to calculate">
                         <td class="text-left">Calculating:</td>
-                        <td class="text-right">{{status.MemoryStatus.UsedMemory | number}} GB</td>
+                        <td class="text-right">{{status.MemoryStatus.UsedMemory | toGB}}</td>
                     </tr>
                 </table>
@@ -234,5 +234,5 @@
                             <td>{{slave.CpuUtilization | number: 2}} %</td>
                             <td>{{slave.Cores | number}}</td>
-                            <td>{{slave.Memory | number}} GB</td>
+                            <td>{{slave.Memory | toGB}}</td>
                         </tr>
                         <tr ng-hide="activeCalculatingSlaves.length">
@@ -292,5 +292,5 @@
                             <td>{{slave.CpuUtilization | number: 2}} %</td>
                             <td>{{slave.Cores | number}}</td>
-                            <td>{{slave.Memory | number}} GB</td>
+                            <td>{{slave.Memory | toGB}}</td>
                         </tr>
                         <tr ng-hide="activeIdleSlaves.length">
@@ -349,5 +349,5 @@
                             <td>{{slave.CpuUtilization | number: 2}} %</td>
                             <td>{{slave.Cores | number}}</td>
-                            <td>{{slave.Memory | number}} GB</td>
+                            <td>{{slave.Memory | toGB}}</td>
                         </tr>
                         <tr ng-hide="inactiveSlaves.length">
Index: branches/HiveStatistics/sources/HeuristicLab.Services.WebApp.Status/3.3/WebApp/status/statusCtrl.js
===================================================================
--- branches/HiveStatistics/sources/HeuristicLab.Services.WebApp.Status/3.3/WebApp/status/statusCtrl.js	(revision 12516)
+++ branches/HiveStatistics/sources/HeuristicLab.Services.WebApp.Status/3.3/WebApp/status/statusCtrl.js	(revision 12522)
@@ -148,6 +148,6 @@
                     coreSeries[0].push([$scope.status.Timestamp, status.CoreStatus.TotalCores]);
                     coreSeries[1].push([$scope.status.Timestamp, usedCores]);
-                    memorySeries[0].push([$scope.status.Timestamp, status.MemoryStatus.TotalMemory]);
-                    memorySeries[1].push([$scope.status.Timestamp, usedMemory]);
+                    memorySeries[0].push([$scope.status.Timestamp, Math.round(status.MemoryStatus.TotalMemory / 1024)]);
+                    memorySeries[1].push([$scope.status.Timestamp, Math.round(usedMemory / 1024)]);
                     $scope.cpu.series = [{ data: cpuSeries, label: "&nbsp;CPU Utilization", color: "#f7921d" }];
                     $scope.core.series = [
@@ -170,6 +170,6 @@
                     var noOfStatus = status.length;
                     var cpuSeries = [];
-                    var coreSeries = [[],[]];
-                    var memorySeries = [[],[]];
+                    var coreSeries = [[], []];
+                    var memorySeries = [[], []];
                     for (var i = 0; i < noOfStatus; ++i) {
                         var curStatus = status[i];
@@ -178,6 +178,6 @@
                         coreSeries[0].push([curStatus.Timestamp, curStatus.CoreStatus.ActiveCores]);
                         coreSeries[1].push([curStatus.Timestamp, curStatus.CoreStatus.CalculatingCores]);
-                        memorySeries[0].push([curStatus.Timestamp, curStatus.MemoryStatus.ActiveMemory]);
-                        memorySeries[1].push([curStatus.Timestamp, curStatus.MemoryStatus.UsedMemory]);
+                        memorySeries[0].push([curStatus.Timestamp, Math.round(curStatus.MemoryStatus.ActiveMemory / 1024)]);
+                        memorySeries[1].push([curStatus.Timestamp, Math.round(curStatus.MemoryStatus.UsedMemory / 1024)]);
                     }
                     $scope.cpu.series = [{ data: cpuSeries, label: "&nbsp;CPU Utilization", color: "#f7921d" }];
@@ -202,3 +202,12 @@
         }]
     );
+
+    module.filter('toGB', function () {
+        return function (text, length, end) {
+            if (text == null || text == '') text = '0';
+            text = Math.round(parseInt(text) / 1024);
+            return text + ' GB';
+        };
+    });
+
 })();
Index: branches/HiveStatistics/sources/HeuristicLab.Services.WebApp/3.3/WebApp/shared/menu/menuCtrl.js
===================================================================
--- branches/HiveStatistics/sources/HeuristicLab.Services.WebApp/3.3/WebApp/shared/menu/menuCtrl.js	(revision 12516)
+++ branches/HiveStatistics/sources/HeuristicLab.Services.WebApp/3.3/WebApp/shared/menu/menuCtrl.js	(revision 12522)
@@ -7,20 +7,25 @@
             $scope.menuEntries = app.getMenu().getMenuEntries();
             $scope.isActive = function (viewLocation) {
-                var loc = viewLocation.toUpperCase().substr(1);
-                var actualLocation = $location.path().toUpperCase();
-                var splitLoc = loc.split("/");
-                if (splitLoc.length <= 2) {
-                    var actualLocationSplit = actualLocation.split("/");
-                    if (actualLocationSplit.length > 1) {
-                        if (splitLoc[1] == actualLocationSplit[1]) {
-                            return true;
+                var linkLocation = viewLocation.toUpperCase().substr(1);
+                var currentLocation = $location.path().toUpperCase();
+                if (linkLocation == currentLocation) {
+                    return true;
+                }
+                var linkLocationParts = linkLocation.split("/");
+                var currentLocationParts = currentLocation.split("/");
+                var linkLocationPartsLength = linkLocationParts.length;
+                if (linkLocationPartsLength < currentLocationParts.length) {
+                    for (var i = 0; i < linkLocationPartsLength; ++i) {
+                        if (linkLocationParts[i] !== currentLocationParts[i]) {
+                            return false;
                         }
                     }
+                    return true;
                 }
-                return $location.path().toUpperCase() == loc;
+                return false;
             };
 
-            $scope.logout = function() {
-                authService.logout({}, function() {
+            $scope.logout = function () {
+                authService.logout({}, function () {
                     $window.location.hash = "";
                     $window.location.reload();
@@ -28,5 +33,5 @@
             };
 
-            $scope.hideMenu = function() {
+            $scope.hideMenu = function () {
                 $(".navbar-collapse").collapse('hide');
             };
Index: branches/HiveStatistics/sources/HeuristicLab.Tests/HeuristicLab-3.3/PluginDependenciesTest.cs
===================================================================
--- branches/HiveStatistics/sources/HeuristicLab.Tests/HeuristicLab-3.3/PluginDependenciesTest.cs	(revision 12516)
+++ branches/HiveStatistics/sources/HeuristicLab.Tests/HeuristicLab-3.3/PluginDependenciesTest.cs	(revision 12522)
@@ -60,7 +60,12 @@
       foreach (Assembly pluginAssembly in loadedPlugins.Keys) {
         Type plugin = loadedPlugins[pluginAssembly];
+        var pluginFiles = new HashSet<string>(Attribute.GetCustomAttributes(plugin, false)
+            .OfType<PluginFileAttribute>().Where(pf => pf.FileType == PluginFileType.Assembly).Select(pf => pf.FileName));
+        var pluginAssemblies = PluginLoader.Assemblies.Where(a => pluginFiles.Contains(Path.GetFileName(a.Location))).ToList();
+        var referencedAssemblies = pluginAssemblies.SelectMany(a => a.GetReferencedAssemblies()).ToList();
+
         Dictionary<string, PluginDependencyAttribute> pluginDependencies = Attribute.GetCustomAttributes(plugin, false).OfType<PluginDependencyAttribute>().ToDictionary(a => a.Dependency);
 
-        foreach (AssemblyName referencedAssemblyName in pluginAssembly.GetReferencedAssemblies()) {
+        foreach (AssemblyName referencedAssemblyName in referencedAssemblies) {
           if (IsPluginAssemblyName(referencedAssemblyName)) {
             if (!pluginDependencies.ContainsKey(pluginNames[referencedAssemblyName.FullName]))
@@ -87,4 +92,8 @@
         Type plugin = loadedPlugins[pluginAssembly];
         Dictionary<PluginDependencyAttribute, string> pluginDependencies = Attribute.GetCustomAttributes(plugin, false).OfType<PluginDependencyAttribute>().ToDictionary(a => a, a => a.Dependency);
+        var pluginFiles = new HashSet<string>(Attribute.GetCustomAttributes(plugin, false)
+          .OfType<PluginFileAttribute>().Where(pf => pf.FileType == PluginFileType.Assembly).Select(pf => pf.FileName));
+        var pluginAssemblies = PluginLoader.Assemblies.Where(a => pluginFiles.Contains(Path.GetFileName(a.Location))).ToList();
+        var referencedAssemblies = pluginAssemblies.SelectMany(a => a.GetReferencedAssemblies()).ToList();
 
         foreach (PluginDependencyAttribute attribute in pluginDependencies.Keys) {
@@ -93,8 +102,8 @@
           if (pluginDependencyName == "HeuristicLab.MathJax") continue; //is never referenced as this plugin contains HTML files
           if (pluginDependencyName == "HeuristicLab.MatlabConnector") continue; //the matlab connector is loaded dynamically and hence not referenced by the dll
-          var referencedPluginAssemblies = pluginAssembly.GetReferencedAssemblies().Where(IsPluginAssemblyName);
+          var referencedPluginAssemblies = referencedAssemblies.Where(IsPluginAssemblyName);
           if (referencedPluginAssemblies.Any(a => pluginNames[a.FullName] == pluginDependencyName)) continue;
 
-          var referencedNonPluginAssemblies = pluginAssembly.GetReferencedAssemblies().Where(a => !IsPluginAssemblyName(a));
+          var referencedNonPluginAssemblies = referencedAssemblies.Where(a => !IsPluginAssemblyName(a));
           bool found = (from referencedNonPluginAssembly in referencedNonPluginAssemblies
                         select referencedNonPluginAssembly.Name into assemblyName
