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