feat(engine-details): add labels-table component

pull/2255/head
Chaim Lando 2018-09-06 11:41:54 +03:00
parent 67c020db9b
commit 2f4b68e043
3 changed files with 86 additions and 0 deletions

View File

@ -0,0 +1,24 @@
angular.module('portainer.docker').controller('NodeLabelsTableController', [
function NodeLabelsTableController() {
var ctrl = this;
ctrl.removeLabel = removeLabel;
ctrl.updateLabel = updateLabel;
function removeLabel(index) {
var removedElement = ctrl.labels.splice(index, 1);
if (removedElement !== null) {
console.log(ctrl.labels);
ctrl.onChangedLabels({labels: ctrl.labels});
}
}
function updateLabel(label) {
if (
label.value !== label.originalValue ||
label.key !== label.originalKey
) {
ctrl.onChangedLabels({labels: ctrl.labels});
}
}
}
]);

View File

@ -0,0 +1,53 @@
<div ng-if="!$ctrl.labels.length">
There are no labels for this node.
</div>
<table class="table" ng-if="$ctrl.labels.length">
<thead>
<tr>
<th>Label</th>
<th>Value</th>
</tr>
</thead>
<tbody>
<tr ng-repeat="label in $ctrl.labels">
<td>
<div class="input-group input-group-sm">
<span class="input-group-addon fit-text-size">Name</span>
<input type="text" class="form-control" ng-model="label.key" placeholder="e.g. com.example.foo"
ng-change="$ctrl.updateLabel(label)">
</div>
</td>
<td>
<div class="input-group input-group-sm">
<span class="input-group-addon fit-text-size">Value</span>
<input type="text" class="form-control" ng-model="label.value" placeholder="e.g. bar"
ng-change="$ctrl.updateLabel(label)">
<span class="input-group-btn">
<button class="btn btn-sm btn-danger" type="button" ng-click="$ctrl.removeLabel($index)">
<i class="fa fa-trash" aria-hidden="true"></i>
</button>
</span>
</div>
</td>
</tr>
<tr>
<td></td>
<td>
<div class="btn-toolbar" role="toolbar">
<div class="btn-group" role="group">
<button type="button" class="btn btn-primary btn-sm" ng-disabled="!$ctrl.hasChanges()"
ng-click="$ctrl.save()">Apply changes</button>
<button type="button" class="btn btn-default btn-sm dropdown-toggle" data-toggle="dropdown"
aria-haspopup="true" aria-expanded="false">
<span class="caret"></span>
</button>
<ul class="dropdown-menu">
<li><a ng-click="$ctrl.cancelChanges(node)">Reset changes</a></li>
</ul>
</div>
</div>
</td>
</tr>
</tbody>
</table>

View File

@ -0,0 +1,9 @@
angular.module('portainer.docker').component('nodeLabelsTable', {
templateUrl:
'app/docker/components/host-view-panels/node-labels-table/node-labels-table.html',
controller: 'NodeLabelsTableController',
bindings: {
labels: '<',
onChangedLabels: '&'
}
});