Changeset 12558


Ignore:
Timestamp:
07/01/15 11:24:12 (4 years ago)
Author:
dglaser
Message:

#2388: Merged trunk into HiveStatistics branch

Location:
branches/HiveStatistics/sources
Files:
12 edited
1 copied

Legend:

Unmodified
Added
Removed
  • branches/HiveStatistics/sources

  • branches/HiveStatistics/sources/HeuristicLab.Services.WebApp.Status/3.3/HeuristicLab.Services.WebApp.Status-3.3.csproj

    r12551 r12558  
    7676      <SpecificVersion>False</SpecificVersion>
    7777      <HintPath>..\..\packages\Newtonsoft.Json.7.0.1\lib\net45\Newtonsoft.Json.dll</HintPath>
     78      <Private>False</Private>
    7879    </Reference>
    7980    <Reference Include="System" />
  • branches/HiveStatistics/sources/HeuristicLab.Services.WebApp.Status/3.3/WebApi/DataController.cs

    r12551 r12558  
    216216      double mean = 0;
    217217      double M2 = 0;
    218 
    219218      foreach (double x in source) {
    220219        n = n + 1;
  • branches/HiveStatistics/sources/HeuristicLab.Services.WebApp.Status/3.3/WebApp/status/status.cshtml

    r12551 r12558  
    216216            </div>
    217217            <div class="panel-body">
    218                 <table class="table table-hover">
     218                <table class="table table-hover" ts-wrapper>
    219219                    <thead>
    220                     <tr>
    221                         <th>Username</th>
    222                         <th>Calculating Tasks</th>
    223                         <th>Waiting Tasks</th>
    224                     </tr>
     220                        <tr>
     221                            <th ts-criteria="User.Name">Username</th>
     222                            <th ts-criteria="CalculatingTasks|parseInt">Calculating Tasks</th>
     223                            <th ts-criteria="WaitingTasks|parseInt">Waiting Tasks</th>
     224                        </tr>
    225225                    </thead>
    226                     <tr ng-repeat="task in status.TasksStatus">
    227                         <td>{{task.User.Name}}</td>
    228                         <td>{{task.CalculatingTasks | number}}</td>
    229                         <td>{{task.WaitingTasks | number}}</td>
    230                     </tr>
    231                     <tr ng-hide="status.TasksStatus.length">
    232                         <td colspan="3" class="text-center">
    233                             There are no waiting or calculating tasks available!
    234                         </td>
    235                     </tr>
     226                    <tbody>
     227                        <tr ng-repeat="task in status.TasksStatus" ts-repeat>
     228                            <td>{{task.User.Name}}</td>
     229                            <td>{{task.CalculatingTasks | number}}</td>
     230                            <td>{{task.WaitingTasks | number}}</td>
     231                        </tr>
     232                        <tr ng-hide="status.TasksStatus.length">
     233                            <td colspan="3" class="text-center">
     234                                There are no waiting or calculating tasks available!
     235                            </td>
     236                        </tr>
     237                    </tbody>
    236238                </table>
    237239            </div>
     
    254256                 class="panel-collapse collapse in">
    255257                <div class="panel-body">
    256                     <table class="table table-hover">
     258                    <table class="table table-hover" ts-wrapper>
    257259                        <thead>
    258                         <tr>
    259                             <th ng-click="activeCalculatingSlavesOrderColumn='Slave.Name';
    260                                                   activeCalculatingSlavesReverseSort=!activeCalculatingSlavesReverseSort">
    261                                 Slave
    262                             </th>
    263                             <th ng-click="activeCalculatingSlavesOrderColumn='CpuUtilization';
    264                                                   activeCalculatingSlavesReverseSort=!activeCalculatingSlavesReverseSort">
    265                                 CPU Utilization
    266                             </th>
    267                             <th ng-click="activeCalculatingSlavesOrderColumn='Cores';
    268                                                   activeCalculatingSlavesReverseSort=!activeCalculatingSlavesReverseSort">
    269                                 Cores
    270                             </th>
    271                             <th ng-click="activeCalculatingSlavesOrderColumn='Memory';
    272                                                   activeCalculatingSlavesReverseSort=!activeCalculatingSlavesReverseSort">
    273                                 Memory
    274                             </th>
    275                         </tr>
     260                            <tr>
     261                                <th ts-criteria="Slave.Name">Slave</th>
     262                                <th ts-criteria="CpuUtilization|parseFloat">CPU Utilization</th>
     263                                <th ts-criteria="Cores|parseInt">Cores</th>
     264                                <th ts-criteria="Memory|parseInt">Memory</th>
     265                            </tr>
    276266                        </thead>
    277                         <tr ng-repeat="slave in activeCalculatingSlaves = (status.SlavesStatus
     267                        <tbody>
     268                            <tr ng-repeat="slave in activeCalculatingSlaves = (status.SlavesStatus
    278269                                | filter: {
    279270                                    IsAllowedToCalculate: true,
    280271                                    State: 'Calculating'
    281                                   }
    282                                 | orderBy: activeCalculatingSlavesOrderColumn:activeCalculatingSlavesReverseSort)">
    283                             <td>{{slave.Slave.Name}}</td>
    284                             <td>{{slave.CpuUtilization | number: 2}} %</td>
    285                             <td>{{slave.Cores - slave.FreeCores | number}} / {{slave.Cores | number}}</td>
    286                             <td>{{slave.Memory - slave.FreeMemory | kbToGB}} / {{slave.Memory | kbToGB}} GB</td>
    287                         </tr>
    288                         <tr ng-hide="activeCalculatingSlaves.length">
    289                             <td colspan="4" class="text-center">
    290                                 There are no active calculating slaves available!
    291                             </td>
    292                         </tr>
     272                                  })" ts-repeat>
     273                                <td>{{slave.Slave.Name}}</td>
     274                                <td>{{slave.CpuUtilization | number: 2}} %</td>
     275                                <td>{{slave.Cores - slave.FreeCores | number}} / {{slave.Cores | number}}</td>
     276                                <td>{{slave.Memory - slave.FreeMemory | kbToGB}} / {{slave.Memory | kbToGB}} GB</td>
     277                            </tr>
     278                            <tr ng-hide="activeCalculatingSlaves.length">
     279                                <td colspan="4" class="text-center">
     280                                    There are no active calculating slaves available!
     281                                </td>
     282                            </tr>
     283                        </tbody>
    293284                    </table>
    294285                </div>
     
    312303                 class="panel-collapse collapse">
    313304                <div class="panel-body">
    314                     <table class="table table-hover">
     305                    <table class="table table-hover" ts-wrapper>
    315306                        <thead>
    316307                        <tr>
    317                             <th ng-click="activeIdleSlavesOrderColumn='Slave.Name';
    318                                                   activeIdleSlavesReverseSort=!activeIdleSlavesReverseSort">
    319                                 Slave
    320                             </th>
    321                             <th ng-click="activeIdleSlavesOrderColumn='CpuUtilization';
    322                                                   activeIdleSlavesReverseSort=!activeIdleSlavesReverseSort">
    323                                 CPU Utilization
    324                             </th>
    325                             <th ng-click="activeIdleSlavesOrderColumn='Cores';
    326                                                   activeIdleSlavesReverseSort=!activeIdleSlavesReverseSort">
    327                                 Cores
    328                             </th>
    329                             <th ng-click="activeIdleSlavesOrderColumn='Memory';
    330                                                   activeIdleSlavesReverseSort=!activeIdleSlavesReverseSort">
    331                                 Memory
    332                             </th>
     308                            <th ts-criteria="Slave.Name">Slave</th>
     309                            <th ts-criteria="CpuUtilization|parseFloat">CPU Utilization</th>
     310                            <th ts-criteria="Cores|parseInt">Cores</th>
     311                            <th ts-criteria="Memory|parseInt">Memory</th>
    333312                        </tr>
    334313                        </thead>
    335                         <tr ng-repeat="slave in activeIdleSlaves = (status.SlavesStatus
     314                        <tbody>
     315                            <tr ng-repeat="slave in activeIdleSlaves = (status.SlavesStatus
    336316                                | filter: {
    337317                                    IsAllowedToCalculate: true,
    338318                                    State: 'Idle'
    339                                   }
    340                                 | orderBy: activeIdleSlavesOrderColumn:activeIdleSlavesReverseSort)">
    341                             <td>{{slave.Slave.Name}}</td>
    342                             <td>{{slave.CpuUtilization | number: 2}} %</td>
    343                             <td>{{slave.Cores - slave.FreeCores | number}} / {{slave.Cores | number}}</td>
    344                             <td>{{slave.Memory - slave.FreeMemory | kbToGB}} / {{slave.Memory | kbToGB}} GB</td>
    345                         </tr>
    346                         <tr ng-hide="activeIdleSlaves.length">
    347                             <td colspan="4" class="text-center">
    348                             There are no active idle slaves available!
    349                             <td>
    350                         </tr>
     319                                  })" ts-repeat>
     320                                <td>{{slave.Slave.Name}}</td>
     321                                <td>{{slave.CpuUtilization | number: 2}} %</td>
     322                                <td>{{slave.Cores - slave.FreeCores | number}} / {{slave.Cores | number}}</td>
     323                                <td>{{slave.Memory - slave.FreeMemory | kbToGB}} / {{slave.Memory | kbToGB}} GB</td>
     324                            </tr>
     325                            <tr ng-hide="activeIdleSlaves.length">
     326                                <td colspan="4" class="text-center">
     327                                    There are no active idle slaves available!
     328                                <td>
     329                            </tr>
     330                        </tbody>
    351331                    </table>
    352332                </div>
     
    370350                 class="panel-collapse collapse">
    371351                <div class="panel-body">
    372                     <table class="table table-hover">
     352                    <table class="table table-hover" ts-wrapper>
    373353                        <thead>
    374                         <tr>
    375                             <th ng-click="inactiveSlavesOrderColumn='Slave.Name';
    376                                                   inactiveSlavesReverseSort=!inactiveSlavesReverseSort">
    377                                 Slave
    378                             </th>
    379                             <th ng-click="inactiveSlavesOrderColumn='CpuUtilization';
    380                                                   inactiveSlavesReverseSort=!inactiveSlavesReverseSort">
    381                                 CPU Utilization
    382                             </th>
    383                             <th ng-click="inactiveSlavesOrderColumn='Cores';
    384                                                   inactiveSlavesReverseSort=!inactiveSlavesReverseSort">
    385                                 Cores
    386                             </th>
    387                             <th ng-click="inactiveSlavesOrderColumn='Memory';
    388                                                   inactiveSlavesReverseSort=!inactiveSlavesReverseSort">
    389                                 Memory
    390                             </th>
    391                         </tr>
     354                            <tr>
     355                                <th ts-criteria="Slave.Name">Slave</th>
     356                                <th ts-criteria="CpuUtilization|parseFloat">CPU Utilization</th>
     357                                <th ts-criteria="Cores|parseInt">Cores</th>
     358                                <th ts-criteria="Memory|parseInt">Memory</th>
     359                            </tr>
    392360                        </thead>
    393                         <tr ng-repeat="slave in inactiveSlaves = (status.SlavesStatus
     361                        <tbody>
     362                            <tr ng-repeat="slave in inactiveSlaves = (status.SlavesStatus
    394363                                | filter: {
    395364                                    IsAllowedToCalculate: false
    396                                   }
    397                                 | orderBy: inactiveSlavesOrderColumn:inactiveSlavesReverseSort)">
    398                             <td>{{slave.Slave.Name}}</td>
    399                             <td>{{slave.CpuUtilization | number: 2}} %</td>
    400                             <td>{{slave.Cores - slave.FreeCores | number}} / {{slave.Cores | number}}</td>
    401                             <td>{{slave.Memory - slave.FreeMemory | kbToGB}} / {{slave.Memory | kbToGB}} GB</td>
    402                         </tr>
    403                         <tr ng-hide="inactiveSlaves.length">
    404                             <td colspan="4" class="text-center">No inactive slaves available!</td>
    405                         </tr>
     365                                  })" ts-repeat>
     366                                <td>{{slave.Slave.Name}}</td>
     367                                <td>{{slave.CpuUtilization | number: 2}} %</td>
     368                                <td>{{slave.Cores - slave.FreeCores | number}} / {{slave.Cores | number}}</td>
     369                                <td>{{slave.Memory - slave.FreeMemory | kbToGB}} / {{slave.Memory | kbToGB}} GB</td>
     370                            </tr>
     371                            <tr ng-hide="inactiveSlaves.length">
     372                                <td colspan="4" class="text-center">No inactive slaves available!</td>
     373                            </tr>
     374                        </tbody>
    406375                    </table>
    407376                </div>
  • branches/HiveStatistics/sources/HeuristicLab.Services.WebApp.Status/3.3/WebApp/status/statusCtrl.js

    r12551 r12558  
    8484                CalculatingTasks: 0
    8585            };
    86 
    87             $scope.activeIdleSlaveFilter = function (slave) {
    88                 return (slave.IsAllowedToCalculate == true) && (slave.State == 'Idle');
    89             };
    90 
    91             $scope.activeCalculatingSlavesReverseSort = false;
    92             $scope.activeCalculatingSlavesOrderColumn = 'slave.Slave.Name';
    93 
    94             $scope.activeIdleSlavesReverseSort = false;
    95             $scope.activeIdleSlavesOrderColumn = 'slave.Slave.Name';
    96 
    97             $scope.inactiveSlavesReverseSort = false;
    98             $scope.inactiveSlavesOrderColumn = 'slave.Slave.Name';
    99 
    10086
    10187            var updateStatus = function () {
  • branches/HiveStatistics/sources/HeuristicLab.Services.WebApp.Status/3.3/status.js

    r12477 r12558  
    22(function () {
    33    var plugin = appStatusPlugin;
    4     plugin.dependencies = ['ngResource', 'ui.knob', 'ui.bootstrap'];
     4    plugin.dependencies = ['ngResource', 'ui.knob', 'ui.bootstrap', 'tableSort'];
    55    plugin.files = [
    66        'WebApp/status.css',
     
    1515    ];
    1616    var menu = app.getMenu();
    17     var section = menu.getSection('Menü', 1);
     17    var section = menu.getSection('Menu', 1);
    1818    section.addEntry({
    1919        name: 'Status',
  • branches/HiveStatistics/sources/HeuristicLab.Services.WebApp/3.3/Configs/BundleConfig.cs

    r12551 r12558  
    4141        "~/WebApp/libs/bootstrap/css/bootstrap-theme.min.css",
    4242        "~/WebApp/libs/font-aweseome/font-aweseome.min.css",
    43         "~/WebApp/libs/angularjs/loading-bar/loading-bar.css"
     43        "~/WebApp/libs/angularjs/loading-bar/loading-bar.css",
     44        "~/WebApp/libs/angularjs/angular-tablesort/tablesort.css"
    4445      ));
    4546
     
    7071        "~/WebApp/libs/angularjs/angular-ui-router.min.js",
    7172        "~/WebApp/libs/angularjs/angular-knob/angular-knob.js",
     73        "~/WebApp/libs/angularjs/angular-tablesort/angular-tablesort.js",
    7274        "~/WebApp/libs/angularjs/angular-ui/ui-bootstrap-tpls-0.13.0.min.js",
    7375        "~/WebApp/libs/angularjs/loading-bar/loading-bar.js",
  • branches/HiveStatistics/sources/HeuristicLab.Services.WebApp/3.3/Controllers/AppController.cs

    r12435 r12558  
    4747    }
    4848
     49    public ActionResult RedirectUrl(string url) {
     50      return RedirectPermanent(url);
     51    }
    4952  }
    5053}
  • branches/HiveStatistics/sources/HeuristicLab.Services.WebApp/3.3/HeuristicLab.Services.WebApp-3.3.csproj

    r12551 r12558  
    143143    <Content Include="WebApp\app.css" />
    144144    <Content Include="Global.asax" />
     145    <Content Include="WebApp\libs\angularjs\angular-tablesort\angular-tablesort.js" />
     146    <Content Include="WebApp\libs\angularjs\angular-tablesort\tablesort.css" />
    145147    <Content Include="WebApp\libs\angularjs\fittext\ng-FitText.js" />
    146148    <Content Include="WebApp\main.js" />
  • branches/HiveStatistics/sources/HeuristicLab.Services.WebApp/3.3/WebApp/plugins/login/loginCtrl.js

    r12428 r12558  
    99                        $window.location.reload();
    1010                    } else {
    11                         $scope.result = "error logging in";
     11                        $scope.result = "Invalid username or password. Please try again.";
    1212                    }
    1313                });
  • branches/HiveStatistics/sources/HeuristicLab.Services.WebApp/3.3/WebApp/plugins/plugins/plugins.cshtml

    r12551 r12558  
    1616                </div>
    1717                <div class="panel-body">
    18                     <table class="table table-hover table-condensed">
     18                    <table class="table table-hover table-condensed" ts-wrapper>
    1919                        <thead>
    2020                            <tr>
    2121                                <th>#</th>
    22                                 <th>Name</th>
    23                                 <th>Assembly</th>
    24                                 <th>Last reload</th>
     22                                <th ts-criteria="Name">Name</th>
     23                                <th ts-criteria="AssemblyName">Assembly</th>
     24                                <th ts-criteria="LastReload">Last reload</th>
    2525                                <th>Status</th>
    2626                                <th></th>
    2727                            </tr>
    2828                        </thead>
    29                         <tr ng-repeat="plugin in plugins">
    30                             <td>{{$index + 1}}</td>
    31                             <td>{{plugin.Name}}</td>
    32                             <td>{{plugin.AssemblyName}}</td>
    33                             <td>{{plugin.LastReload}}</td>
    34                             <td>
    35                                 <span ng-hide="plugin.Exception" class="glyphicon glyphicon glyphicon-ok" style="color: green"></span>
    36                                 <span ng-show="plugin.Exception" class="glyphicon glyphicon glyphicon-remove" style="color: darkred"
    37                                       ng-click="open(plugin.Name, plugin.Exception)"></span>
    38                             </td>
    39                             <td>
    40                                 <a ng-href="" class="cursor-pointer" data-ng-click="reloadPlugin(plugin.Name)">Reload</a>
    41                             </td>
    42                         </tr>
     29                        <tbody>
     30                            <tr ng-repeat="plugin in plugins" ts-repeat>
     31                                <td>{{$index + 1}}</td>
     32                                <td>{{plugin.Name}}</td>
     33                                <td>{{plugin.AssemblyName}}</td>
     34                                <td>{{plugin.LastReload}}</td>
     35                                <td>
     36                                    <span ng-hide="plugin.Exception" class="glyphicon glyphicon glyphicon-ok" style="color: green"></span>
     37                                    <span ng-show="plugin.Exception" class="glyphicon glyphicon glyphicon-remove" style="color: darkred"
     38                                          ng-click="open(plugin.Name, plugin.Exception)"></span>
     39                                </td>
     40                                <td>
     41                                    <a ng-href="" class="cursor-pointer" data-ng-click="reloadPlugin(plugin.Name)">Reload</a>
     42                                </td>
     43                            </tr>
     44                        </tbody>
    4345                    </table>
    4446                </div>
  • branches/HiveStatistics/sources/HeuristicLab.Services.WebApp/3.3/WebApp/plugins/plugins/plugins.js

    r12525 r12558  
    22(function () {
    33    var plugin = appPluginsPlugin;
    4     plugin.dependencies = ['ngResource', 'ui.bootstrap'];
     4    plugin.dependencies = ['ngResource', 'ui.bootstrap', 'tableSort'];
    55    plugin.files = [
    66        'pluginsService.js',
Note: See TracChangeset for help on using the changeset viewer.