Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
06/26/15 11:35:20 (10 years ago)
Author:
dglaser
Message:

#2388: Merged trunk into HiveStatistics branch

Location:
branches/HiveStatistics/sources
Files:
10 edited

Legend:

Unmodified
Added
Removed
  • branches/HiveStatistics/sources

  • branches/HiveStatistics/sources/HeuristicLab.ExtLibs

  • branches/HiveStatistics/sources/HeuristicLab.ExtLibs/HeuristicLab.AvalonEdit/5.0.1/HeuristicLab.AvalonEdit-5.0.1/Plugin.cs.frame

    r12012 r12522  
    2727  [PluginFile("ICSharpCode.AvalonEdit.dll", PluginFileType.Assembly)]
    2828  [PluginFile("ICSharpCode.AvalonEdit License-5.0.1.txt", PluginFileType.License)]
     29  [PluginDependency("HeuristicLab.NRefactory", "5.5")]
    2930  public class HeuristicLabAvalonEditPlugin : PluginBase {
    3031  }
  • branches/HiveStatistics/sources/HeuristicLab.Services.WebApp.Status/3.3/WebApp/history/history.cshtml

    r12516 r12522  
    1212<div id="history-header">
    1313    <form class="form-inline">
    14         <div class="form-group">
     14        <div class="form-group" style="margin-left: 5px; margin-right: 5px;">
    1515            <label for="fromDate">From:&nbsp;</label>
    1616            <div class="input-group">
     
    2121            </div>
    2222        </div>
    23         <div class="form-group">
    24             <label for="fromDate">&nbsp;&nbsp;To:&nbsp;</label>
     23        <div class="form-group" style="margin-left: 5px; margin-right: 5px;">
     24            <label for="fromDate">To:&nbsp;</label>
    2525            <div class="input-group">
    2626                <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" />
     
    2929                </span>
    3030            </div>
     31        </div>
     32        <div class="form-group" style="margin-left: 5px; margin-right: 5px;">
     33            <button type="button" class="btn btn-default" ng-click="updateCharts()">
     34                Apply
     35            </button>
    3136        </div>
    3237    </form>
  • branches/HiveStatistics/sources/HeuristicLab.Services.WebApp.Status/3.3/WebApp/history/historyCtrl.js

    r12435 r12522  
    1414                yaxis: {
    1515                    min: 0,
    16                     max: 100,
    17                     zoomRange: false,
    18                     panRange: false
     16                    max: 100
    1917                },
    2018                xaxis: {
    2119                    mode: "time",
    2220                    twelveHourClock: false
    23                 },
    24                 zoom: {
    25                     interactive: true
    26                 },
    27                 pan: {
    28                     interactive: true
    2921                }
    3022            };
     
    4234                    }
    4335                },
    44                 yaxis: {
    45                     zoomRange: false,
    46                     panRange: false
    47                 },
    4836                xaxis: {
    4937                    mode: "time",
    5038                    twelveHourClock: false
    51                 },
    52                 zoom: {
    53                     interactive: true
    54                 },
    55                 pan: {
    56                     interactive: true
    5739                }
    5840            };
     
    8870            $scope.memorySeries = [[]];
    8971
    90             var updateCharts = function () {
     72            $scope.updateCharts = function () {
    9173                dataService.getStatusHistory({ start: ConvertFromDate($scope.fromDate), end: ConvertToDate($scope.toDate) }, function (status) {
    9274                    var noOfStatus = status.length;
     
    10082                        coreSeries[0].push([curStatus.Timestamp, curStatus.CoreStatus.ActiveCores]);
    10183                        coreSeries[1].push([curStatus.Timestamp, curStatus.CoreStatus.CalculatingCores]);
    102                         memorySeries[0].push([curStatus.Timestamp, curStatus.MemoryStatus.ActiveMemory]);
    103                         memorySeries[1].push([curStatus.Timestamp, curStatus.MemoryStatus.UsedMemory]);
     84                        memorySeries[0].push([curStatus.Timestamp, Math.round(curStatus.MemoryStatus.ActiveMemory / 1024)]);
     85                        memorySeries[1].push([curStatus.Timestamp, Math.round(curStatus.MemoryStatus.UsedMemory / 1024)]);
    10486                    }
    10587                    $scope.cpuSeries = [{ data: cpuSeries, label: "&nbsp;CPU Utilization", color: "#f7921d" }];
     
    11597                });
    11698            };
    117 
    118             $scope.$watch('fromDate', function (newValue, oldValue) {
    119                 updateCharts();
    120             });
    121             $scope.$watch('toDate', function (newValue, oldValue) {
    122                 updateCharts();
    123             });
     99            $scope.updateCharts();
    124100        }]
    125101    );
  • branches/HiveStatistics/sources/HeuristicLab.Services.WebApp.Status/3.3/WebApp/status/status.cshtml

    r12435 r12522  
    8080                    <tr data-toggle="tooltip" data-placement="bottom" title="All online slaves">
    8181                        <td class="text-left">Total:</td>
    82                         <td class="text-right">{{status.MemoryStatus.TotalMemory | number}} GB</td>
     82                        <td class="text-right">{{status.MemoryStatus.TotalMemory | toGB}}</td>
    8383                    </tr>
    8484                    <tr data-toggle="tooltip" data-placement="bottom" title="All calculating and idle slaves that are allowed to calculate">
    8585                        <td class="text-left">Active:</td>
    86                         <td class="text-right">{{status.MemoryStatus.ActiveMemory | number}} GB</td>
     86                        <td class="text-right">{{status.MemoryStatus.ActiveMemory | toGB}}</td>
    8787                    </tr>
    8888                    <tr data-toggle="tooltip" data-placement="bottom" title="All calculating slaves that are allowed to calculate">
    8989                        <td class="text-left">Calculating:</td>
    90                         <td class="text-right">{{status.MemoryStatus.UsedMemory | number}} GB</td>
     90                        <td class="text-right">{{status.MemoryStatus.UsedMemory | toGB}}</td>
    9191                    </tr>
    9292                </table>
     
    234234                            <td>{{slave.CpuUtilization | number: 2}} %</td>
    235235                            <td>{{slave.Cores | number}}</td>
    236                             <td>{{slave.Memory | number}} GB</td>
     236                            <td>{{slave.Memory | toGB}}</td>
    237237                        </tr>
    238238                        <tr ng-hide="activeCalculatingSlaves.length">
     
    292292                            <td>{{slave.CpuUtilization | number: 2}} %</td>
    293293                            <td>{{slave.Cores | number}}</td>
    294                             <td>{{slave.Memory | number}} GB</td>
     294                            <td>{{slave.Memory | toGB}}</td>
    295295                        </tr>
    296296                        <tr ng-hide="activeIdleSlaves.length">
     
    349349                            <td>{{slave.CpuUtilization | number: 2}} %</td>
    350350                            <td>{{slave.Cores | number}}</td>
    351                             <td>{{slave.Memory | number}} GB</td>
     351                            <td>{{slave.Memory | toGB}}</td>
    352352                        </tr>
    353353                        <tr ng-hide="inactiveSlaves.length">
  • branches/HiveStatistics/sources/HeuristicLab.Services.WebApp.Status/3.3/WebApp/status/statusCtrl.js

    r12467 r12522  
    148148                    coreSeries[0].push([$scope.status.Timestamp, status.CoreStatus.TotalCores]);
    149149                    coreSeries[1].push([$scope.status.Timestamp, usedCores]);
    150                     memorySeries[0].push([$scope.status.Timestamp, status.MemoryStatus.TotalMemory]);
    151                     memorySeries[1].push([$scope.status.Timestamp, usedMemory]);
     150                    memorySeries[0].push([$scope.status.Timestamp, Math.round(status.MemoryStatus.TotalMemory / 1024)]);
     151                    memorySeries[1].push([$scope.status.Timestamp, Math.round(usedMemory / 1024)]);
    152152                    $scope.cpu.series = [{ data: cpuSeries, label: "&nbsp;CPU Utilization", color: "#f7921d" }];
    153153                    $scope.core.series = [
     
    170170                    var noOfStatus = status.length;
    171171                    var cpuSeries = [];
    172                     var coreSeries = [[],[]];
    173                     var memorySeries = [[],[]];
     172                    var coreSeries = [[], []];
     173                    var memorySeries = [[], []];
    174174                    for (var i = 0; i < noOfStatus; ++i) {
    175175                        var curStatus = status[i];
     
    178178                        coreSeries[0].push([curStatus.Timestamp, curStatus.CoreStatus.ActiveCores]);
    179179                        coreSeries[1].push([curStatus.Timestamp, curStatus.CoreStatus.CalculatingCores]);
    180                         memorySeries[0].push([curStatus.Timestamp, curStatus.MemoryStatus.ActiveMemory]);
    181                         memorySeries[1].push([curStatus.Timestamp, curStatus.MemoryStatus.UsedMemory]);
     180                        memorySeries[0].push([curStatus.Timestamp, Math.round(curStatus.MemoryStatus.ActiveMemory / 1024)]);
     181                        memorySeries[1].push([curStatus.Timestamp, Math.round(curStatus.MemoryStatus.UsedMemory / 1024)]);
    182182                    }
    183183                    $scope.cpu.series = [{ data: cpuSeries, label: "&nbsp;CPU Utilization", color: "#f7921d" }];
     
    202202        }]
    203203    );
     204
     205    module.filter('toGB', function () {
     206        return function (text, length, end) {
     207            if (text == null || text == '') text = '0';
     208            text = Math.round(parseInt(text) / 1024);
     209            return text + ' GB';
     210        };
     211    });
     212
    204213})();
  • branches/HiveStatistics/sources/HeuristicLab.Services.WebApp/3.3/WebApp/shared/menu/menuCtrl.js

    r12435 r12522  
    77            $scope.menuEntries = app.getMenu().getMenuEntries();
    88            $scope.isActive = function (viewLocation) {
    9                 var loc = viewLocation.toUpperCase().substr(1);
    10                 var actualLocation = $location.path().toUpperCase();
    11                 var splitLoc = loc.split("/");
    12                 if (splitLoc.length <= 2) {
    13                     var actualLocationSplit = actualLocation.split("/");
    14                     if (actualLocationSplit.length > 1) {
    15                         if (splitLoc[1] == actualLocationSplit[1]) {
    16                             return true;
     9                var linkLocation = viewLocation.toUpperCase().substr(1);
     10                var currentLocation = $location.path().toUpperCase();
     11                if (linkLocation == currentLocation) {
     12                    return true;
     13                }
     14                var linkLocationParts = linkLocation.split("/");
     15                var currentLocationParts = currentLocation.split("/");
     16                var linkLocationPartsLength = linkLocationParts.length;
     17                if (linkLocationPartsLength < currentLocationParts.length) {
     18                    for (var i = 0; i < linkLocationPartsLength; ++i) {
     19                        if (linkLocationParts[i] !== currentLocationParts[i]) {
     20                            return false;
    1721                        }
    1822                    }
     23                    return true;
    1924                }
    20                 return $location.path().toUpperCase() == loc;
     25                return false;
    2126            };
    2227
    23             $scope.logout = function() {
    24                 authService.logout({}, function() {
     28            $scope.logout = function () {
     29                authService.logout({}, function () {
    2530                    $window.location.hash = "";
    2631                    $window.location.reload();
     
    2833            };
    2934
    30             $scope.hideMenu = function() {
     35            $scope.hideMenu = function () {
    3136                $(".navbar-collapse").collapse('hide');
    3237            };
  • branches/HiveStatistics/sources/HeuristicLab.Tests

  • branches/HiveStatistics/sources/HeuristicLab.Tests/HeuristicLab-3.3/PluginDependenciesTest.cs

    r12012 r12522  
    6060      foreach (Assembly pluginAssembly in loadedPlugins.Keys) {
    6161        Type plugin = loadedPlugins[pluginAssembly];
     62        var pluginFiles = new HashSet<string>(Attribute.GetCustomAttributes(plugin, false)
     63            .OfType<PluginFileAttribute>().Where(pf => pf.FileType == PluginFileType.Assembly).Select(pf => pf.FileName));
     64        var pluginAssemblies = PluginLoader.Assemblies.Where(a => pluginFiles.Contains(Path.GetFileName(a.Location))).ToList();
     65        var referencedAssemblies = pluginAssemblies.SelectMany(a => a.GetReferencedAssemblies()).ToList();
     66
    6267        Dictionary<string, PluginDependencyAttribute> pluginDependencies = Attribute.GetCustomAttributes(plugin, false).OfType<PluginDependencyAttribute>().ToDictionary(a => a.Dependency);
    6368
    64         foreach (AssemblyName referencedAssemblyName in pluginAssembly.GetReferencedAssemblies()) {
     69        foreach (AssemblyName referencedAssemblyName in referencedAssemblies) {
    6570          if (IsPluginAssemblyName(referencedAssemblyName)) {
    6671            if (!pluginDependencies.ContainsKey(pluginNames[referencedAssemblyName.FullName]))
     
    8792        Type plugin = loadedPlugins[pluginAssembly];
    8893        Dictionary<PluginDependencyAttribute, string> pluginDependencies = Attribute.GetCustomAttributes(plugin, false).OfType<PluginDependencyAttribute>().ToDictionary(a => a, a => a.Dependency);
     94        var pluginFiles = new HashSet<string>(Attribute.GetCustomAttributes(plugin, false)
     95          .OfType<PluginFileAttribute>().Where(pf => pf.FileType == PluginFileType.Assembly).Select(pf => pf.FileName));
     96        var pluginAssemblies = PluginLoader.Assemblies.Where(a => pluginFiles.Contains(Path.GetFileName(a.Location))).ToList();
     97        var referencedAssemblies = pluginAssemblies.SelectMany(a => a.GetReferencedAssemblies()).ToList();
    8998
    9099        foreach (PluginDependencyAttribute attribute in pluginDependencies.Keys) {
     
    93102          if (pluginDependencyName == "HeuristicLab.MathJax") continue; //is never referenced as this plugin contains HTML files
    94103          if (pluginDependencyName == "HeuristicLab.MatlabConnector") continue; //the matlab connector is loaded dynamically and hence not referenced by the dll
    95           var referencedPluginAssemblies = pluginAssembly.GetReferencedAssemblies().Where(IsPluginAssemblyName);
     104          var referencedPluginAssemblies = referencedAssemblies.Where(IsPluginAssemblyName);
    96105          if (referencedPluginAssemblies.Any(a => pluginNames[a.FullName] == pluginDependencyName)) continue;
    97106
    98           var referencedNonPluginAssemblies = pluginAssembly.GetReferencedAssemblies().Where(a => !IsPluginAssemblyName(a));
     107          var referencedNonPluginAssemblies = referencedAssemblies.Where(a => !IsPluginAssemblyName(a));
    99108          bool found = (from referencedNonPluginAssembly in referencedNonPluginAssemblies
    100109                        select referencedNonPluginAssembly.Name into assemblyName
Note: See TracChangeset for help on using the changeset viewer.