diff --git a/app/docker/components/host-view-panels/node-availability-select/node-availability-select-controller.js b/app/docker/components/host-view-panels/node-availability-select/node-availability-select-controller.js new file mode 100644 index 000000000..fc3e84165 --- /dev/null +++ b/app/docker/components/host-view-panels/node-availability-select/node-availability-select-controller.js @@ -0,0 +1,27 @@ +angular + .module('portainer.docker') + .controller('NodeAvailabilitySelectController', [ + function NodeAvailabilitySelectController() { + this.state = { + hasChanges: false + }; + this.onChange = onChange; + this.save = save; + this.cancelChanges = cancelChanges; + + function onChange() { + this.state.hasChanges = this.originalValue !== this.availability; + } + + function save() { + this.onSave({ availability: this.availability }); + } + + function cancelChanges() { + this.state.hasChanges = false; + this.availability = this.originalValue; + } + + + } + ]); diff --git a/app/docker/components/host-view-panels/node-availability-select/node-availability-select.html b/app/docker/components/host-view-panels/node-availability-select/node-availability-select.html new file mode 100644 index 000000000..c07917efd --- /dev/null +++ b/app/docker/components/host-view-panels/node-availability-select/node-availability-select.html @@ -0,0 +1,21 @@ +
+ + +
\ No newline at end of file diff --git a/app/docker/components/host-view-panels/node-availability-select/node-availability-select.js b/app/docker/components/host-view-panels/node-availability-select/node-availability-select.js new file mode 100644 index 000000000..b09730f37 --- /dev/null +++ b/app/docker/components/host-view-panels/node-availability-select/node-availability-select.js @@ -0,0 +1,10 @@ +angular.module('portainer.docker').component('nodeAvailabilitySelect', { + templateUrl: + 'app/docker/components/host-view-panels/node-availability-select/node-availability-select.html', + controller: 'NodeAvailabilitySelectController', + bindings: { + availability: '<', + originalValue: '<', + onSave: '&' + } +}); diff --git a/app/docker/components/host-view-panels/swarm-node-details-panel/swarm-node-details-panel-controller.js b/app/docker/components/host-view-panels/swarm-node-details-panel/swarm-node-details-panel-controller.js index c2ae18175..58677c583 100644 --- a/app/docker/components/host-view-panels/swarm-node-details-panel/swarm-node-details-panel-controller.js +++ b/app/docker/components/host-view-panels/swarm-node-details-panel/swarm-node-details-panel-controller.js @@ -5,23 +5,18 @@ angular this.state = { managerAddress: '' }; - this.$onInit = initView; this.$onChanges = $onChanges; this.addLabel = addLabel; this.updateNodeLabels = updateNodeLabels; + this.updateNodeAvailability = updateNodeAvailability; var managerRole = 'manager'; - function initView() { - - } - function $onChanges() { if (!this.details) { return; } if (this.details.role === managerRole) { - this.state.managerAddress = - '(' + this.details.managerAddress + ')'; + this.state.managerAddress = '(' + this.details.managerAddress + ')'; } } @@ -35,7 +30,11 @@ angular } function updateNodeLabels(labels) { - this.onChangedLabels({labels: labels}); + this.onChangedLabels({ labels: labels }); + } + + function updateNodeAvailability(availability) { + this.onChangedAvailability({ availability: availability }); } } ]); diff --git a/app/docker/components/host-view-panels/swarm-node-details-panel/swarm-node-details-panel.html b/app/docker/components/host-view-panels/swarm-node-details-panel/swarm-node-details-panel.html index 036da9772..2a442942e 100644 --- a/app/docker/components/host-view-panels/swarm-node-details-panel/swarm-node-details-panel.html +++ b/app/docker/components/host-view-panels/swarm-node-details-panel/swarm-node-details-panel.html @@ -15,11 +15,16 @@ Availability - {{ $ctrl.details.availability }} + + + Status - {{ $ctrl.details.status }} + {{ $ctrl.details.status }} Engine Labels diff --git a/app/docker/components/host-view-panels/swarm-node-details-panel/swarm-node-details-panel.js b/app/docker/components/host-view-panels/swarm-node-details-panel/swarm-node-details-panel.js index 8785f956e..275b44240 100644 --- a/app/docker/components/host-view-panels/swarm-node-details-panel/swarm-node-details-panel.js +++ b/app/docker/components/host-view-panels/swarm-node-details-panel/swarm-node-details-panel.js @@ -4,6 +4,7 @@ angular.module('portainer.docker').component('swarmNodeDetailsPanel', { controller: 'SwarmNodeDetailsPanelController', bindings: { details: '<', - onChangedLabels: '&' + onChangedLabels: '&', + onChangedAvailability: '&' } }); diff --git a/app/docker/views/nodes/node-details/node-details-view-controller.js b/app/docker/views/nodes/node-details/node-details-view-controller.js index c4f82e0fe..35d4ed427 100644 --- a/app/docker/views/nodes/node-details/node-details-view-controller.js +++ b/app/docker/views/nodes/node-details/node-details-view-controller.js @@ -6,6 +6,8 @@ angular.module('portainer.docker').controller('NodeDetailsViewController', [ ctrl.$onInit = initView; ctrl.updateLabels = updateLabels; + ctrl.updateAvailability = updateAvailability; + ctrl.state = { isAgent: false }; @@ -65,6 +67,11 @@ angular.module('portainer.docker').controller('NodeDetailsViewController', [ updateNode(originalNode); } + function updateAvailability(availability) { + originalNode.Availability = availability; + updateNode(originalNode); + } + function updateNode(node) { var config = { Name: node.Name, diff --git a/app/docker/views/nodes/node-details/node-details-view.html b/app/docker/views/nodes/node-details/node-details-view.html index 9a9fd6ba5..92815fe3e 100644 --- a/app/docker/views/nodes/node-details/node-details-view.html +++ b/app/docker/views/nodes/node-details/node-details-view.html @@ -6,5 +6,6 @@ \ No newline at end of file