feat(ui): add more info about nodes in Swarm view (#92)

* feat(ui): add more info about nodes in Swarm view

* style(ui): update title for section in swarm view
pull/94/head
Anthony Lapenna 8 years ago committed by GitHub
parent 95b16919a6
commit 06c2635e82

@ -8,43 +8,7 @@
</rd-header> </rd-header>
<div class="row"> <div class="row">
<div class="col-lg-3 col-md-6 col-xs-12"> <div class="col-lg-12 col-md-12 col-sm-12 col-xs-12">
<rd-widget>
<rd-widget-body>
<div class="widget-icon pull-left">
<i class="fa fa-code"></i>
</div>
<div class="title">{{ docker.Version }}</div>
<div class="comment">Swarm version</div>
</rd-widget-body>
</rd-widget>
</div>
<div class="col-lg-3 col-md-6 col-xs-12">
<rd-widget>
<rd-widget-body>
<div class="widget-icon pull-left">
<i class="fa fa-code"></i>
</div>
<div class="title">{{ docker.ApiVersion }}</div>
<div class="comment">API version</div>
</rd-widget-body>
</rd-widget>
</div>
<div class="col-lg-3 col-md-6 col-xs-12">
<rd-widget>
<rd-widget-body>
<div class="widget-icon pull-left">
<i class="fa fa-code"></i>
</div>
<div class="title">{{ docker.GoVersion }}</div>
<div class="comment">Go version</div>
</rd-widget-body>
</rd-widget>
</div>
</div>
<div class="row">
<div class="col-lg-6">
<rd-widget> <rd-widget>
<rd-widget-header icon="fa-object-group" title="Cluster status"></rd-widget-header> <rd-widget-header icon="fa-object-group" title="Cluster status"></rd-widget-header>
<rd-widget-body classes="no-padding"> <rd-widget-body classes="no-padding">
@ -58,34 +22,48 @@
<td>Images</td> <td>Images</td>
<td>{{ info.Images }}</td> <td>{{ info.Images }}</td>
</tr> </tr>
<tr>
<td>Swarm version</td>
<td>{{ docker.Version|swarmversion }}</td>
</tr>
<tr>
<td>Docker API version</td>
<td>{{ docker.ApiVersion }}</td>
</tr>
<tr> <tr>
<td>Strategy</td> <td>Strategy</td>
<td>{{ swarm.Strategy }}</td> <td>{{ swarm.Strategy }}</td>
</tr> </tr>
<tr> <tr>
<td>CPUs</td> <td>Total CPU</td>
<td>{{ info.NCPU }}</td> <td>{{ info.NCPU }}</td>
</tr> </tr>
<tr> <tr>
<td>Total Memory</td> <td>Total memory</td>
<td>{{ info.MemTotal|humansize }}</td> <td>{{ info.MemTotal|humansize }}</td>
</tr> </tr>
<tr> <tr>
<td>Operating System</td> <td>Operating system</td>
<td>{{ info.OperatingSystem }}</td> <td>{{ info.OperatingSystem }}</td>
</tr> </tr>
<tr> <tr>
<td>Kernel Version</td> <td>Kernel version</td>
<td>{{ info.KernelVersion }}</td> <td>{{ info.KernelVersion }}</td>
</tr> </tr>
<tr>
<td>Go version</td>
<td>{{ docker.GoVersion }}</td>
</tr>
</tbody> </tbody>
</table> </table>
</rd-widget-body> </rd-widget-body>
</rd-widget> </rd-widget>
</div> </div>
<div class="col-lg-6"> </div>
<div class="row">
<div class="col-lg-12 col-md-12 col-sm-12 col-xs-12">
<rd-widget> <rd-widget>
<rd-widget-header icon="fa-hdd-o" title="Nodes status"></rd-widget-header> <rd-widget-header icon="fa-hdd-o" title="Node status"></rd-widget-header>
<rd-widget-body classes="no-padding"> <rd-widget-body classes="no-padding">
<table class="table table-striped"> <table class="table table-striped">
<thead> <thead>
@ -97,6 +75,20 @@
<span ng-show="sortType == 'Name' && sortReverse" class="glyphicon glyphicon-chevron-up"></span> <span ng-show="sortType == 'Name' && sortReverse" class="glyphicon glyphicon-chevron-up"></span>
</a> </a>
</th> </th>
<th>
<a ui-sref="swarm" ng-click="order('cpu')">
CPU
<span ng-show="sortType == 'cpu' && !sortReverse" class="glyphicon glyphicon-chevron-down"></span>
<span ng-show="sortType == 'cpu' && sortReverse" class="glyphicon glyphicon-chevron-up"></span>
</a>
</th>
<th>
<a ui-sref="swarm" ng-click="order('memory')">
Memory
<span ng-show="sortType == 'memory' && !sortReverse" class="glyphicon glyphicon-chevron-down"></span>
<span ng-show="sortType == 'memory' && sortReverse" class="glyphicon glyphicon-chevron-up"></span>
</a>
</th>
<th> <th>
<a ui-sref="swarm" ng-click="order('IP')"> <a ui-sref="swarm" ng-click="order('IP')">
IP IP
@ -123,6 +115,8 @@
<tbody> <tbody>
<tr ng-repeat="node in (state.filteredNodes = (swarm.Status | filter:state.filter | orderBy:sortType:sortReverse))"> <tr ng-repeat="node in (state.filteredNodes = (swarm.Status | filter:state.filter | orderBy:sortType:sortReverse))">
<td>{{ node.name }}</td> <td>{{ node.name }}</td>
<td>{{ node.cpu }}</td>
<td>{{ node.memory }}</td>
<td>{{ node.ip }}</td> <td>{{ node.ip }}</td>
<td>{{ node.version }}</td> <td>{{ node.version }}</td>
<td><span class="label label-{{ node.status|nodestatusbadge }}">{{ node.status }}</span></td> <td><span class="label label-{{ node.status|nodestatusbadge }}">{{ node.status }}</span></td>

@ -53,8 +53,8 @@ angular.module('swarm', [])
node.id = info[offset + 1][1]; node.id = info[offset + 1][1];
node.status = info[offset + 2][1]; node.status = info[offset + 2][1];
node.containers = info[offset + 3][1]; node.containers = info[offset + 3][1];
node.cpu = info[offset + 4][1]; node.cpu = info[offset + 4][1].split('/')[1];
node.memory = info[offset + 5][1]; node.memory = info[offset + 5][1].split('/')[1];
node.labels = info[offset + 6][1]; node.labels = info[offset + 6][1];
node.version = info[offset + 8][1]; node.version = info[offset + 8][1];
$scope.swarm.Status.push(node); $scope.swarm.Status.push(node);

@ -21,18 +21,6 @@ function ContainerViewModel(data) {
this.Checked = false; this.Checked = false;
} }
function EventViewModel(data) {
// Type, Action, Actor unavailable in Docker < 1.10
this.Time = data.time;
if (data.Type) {
this.Type = data.Type;
this.Details = createEventDetails(data);
} else {
this.Type = data.status;
this.Details = data.from;
}
}
function createEventDetails(event) { function createEventDetails(event) {
var eventAttr = event.Actor.Attributes; var eventAttr = event.Actor.Attributes;
var details = ''; var details = '';
@ -126,3 +114,15 @@ function createEventDetails(event) {
} }
return details; return details;
} }
function EventViewModel(data) {
// Type, Action, Actor unavailable in Docker < 1.10
this.Time = data.time;
if (data.Type) {
this.Type = data.Type;
this.Details = createEventDetails(data);
} else {
this.Type = data.status;
this.Details = data.from;
}
}

Loading…
Cancel
Save