Add "Add new DNS server" button
Added a button which allows the user to add new DNS Servers.
After pressing the button a new empty field appears.
Resolves openbmc/openbmc#3089
Tested: Added several new DNS Servers on a Witherspoon.
Change-Id: Ic6a6d2b798ad177b0e9aeb64ba3e4993af442305
Signed-off-by: Gunnar Mills <gmills@us.ibm.com>
diff --git a/app/configuration/controllers/network-controller.html b/app/configuration/controllers/network-controller.html
index dc81ed3..f6d0a5d 100644
--- a/app/configuration/controllers/network-controller.html
+++ b/app/configuration/controllers/network-controller.html
@@ -80,6 +80,7 @@
<label for="net-config__prime-dns">DNS Server {{$index+1}}</label>
<input id="net-config__prime-dns" type="text" ng-model="dns" ng-blur="interface.Nameservers[$index] = dns"/>
</fieldset>
+ <button type="button" class="btn-primary inline" ng-click="interface.Nameservers.push('');">Add new DNS server</button>
</div>
</fieldset>
<div class="network-config__submit-wrapper">
diff --git a/app/configuration/controllers/network-controller.js b/app/configuration/controllers/network-controller.js
index 4e8a7e0..b0daefd 100644
--- a/app/configuration/controllers/network-controller.js
+++ b/app/configuration/controllers/network-controller.js
@@ -55,6 +55,11 @@
promises.push(setDHCPEnabled());
}
+ // Remove any empty strings from the array. Important because we add an
+ // empty string to the end so the user can add a new DNS server, if the
+ // user doesn't fill out the field, we don't want to add.
+ $scope.interface.Nameservers =
+ $scope.interface.Nameservers.filter(Boolean);
// toString() is a cheap way to compare 2 string arrays
if ($scope.interface.Nameservers.toString() !=
$scope.old_interface.Nameservers.toString()) {
@@ -171,6 +176,11 @@
}
function setNameservers() {
+ // Nameservers does not allow an empty array, since we remove all empty
+ // strings above, could have an empty array.
+ if ($scope.interface.Nameservers.length == 0) {
+ $scope.interface.Nameservers.push('');
+ }
return APIUtils
.setNameservers(
$scope.selectedInterface, $scope.interface.Nameservers)