diff --git a/gateway/assets/index.html b/gateway/assets/index.html
index 48937e7957..ab0ead39ce 100644
--- a/gateway/assets/index.html
+++ b/gateway/assets/index.html
@@ -57,7 +57,7 @@
-
+
{{ namespace }}
@@ -140,7 +140,7 @@
-
+
diff --git a/gateway/assets/script/bootstrap.js b/gateway/assets/script/bootstrap.js
index d31604fbb7..d4e6334fec 100644
--- a/gateway/assets/script/bootstrap.js
+++ b/gateway/assets/script/bootstrap.js
@@ -17,8 +17,8 @@ app.controller("home", ['$scope', '$log', '$http', '$location', '$interval', '$f
$scope.invocationStatus = "";
$scope.invocationStart = new Date().getTime();
$scope.roundTripDuration = "";
- $scope.selectedNamespace = "openfaas-fn";
- $scope.allNamespaces = ["openfaas-fn"];
+ $scope.selectedNamespace = "";
+ $scope.allNamespaces = [""];
$scope.invocation = {
contentType: "text"
};
@@ -65,14 +65,24 @@ app.controller("home", ['$scope', '$log', '$http', '$location', '$interval', '$f
var fetchFunctionsDelay = 3500;
var queryFunctionDelay = 2500;
- var fetchNamespacesInterval = function() {
+
+
+
+ var fetchNamespaces = function() {
$http.get("../system/namespaces")
.then(function(response) {
$scope.allNamespaces = response.data;
+ if ($scope.selectedNamespace === "") {
+ $scope.selectedNamespace = response.data[0]
+ }
})
- };
-
+ }
+ fetchNamespaces()
+ $scope.selectedNamespace = $scope.allNamespaces[0] // First returned namespace
+ var fetchNamespacesInterval = $interval(function() {
+ fetchNamespaces()
+ }, fetchFunctionsDelay);
var fetchFunctionsInterval = $interval(function() {
refreshData($scope.selectedNamespace);
@@ -86,13 +96,14 @@ app.controller("home", ['$scope', '$log', '$http', '$location', '$interval', '$f
$scope.setNamespace = function(namespace) {
$scope.selectedNamespace = namespace;
+ $scope.selectedFunction = undefined
refreshData($scope.selectedNamespace)
}
var refreshFunction = function(functionInstance) {
- $http.get("../system/function/" + functionInstance.name + "?namespace=" + $scope.selectedNamespace)
+ $http.get("../system/function/" + functionInstance.name + getNamespaceSuffix($scope.selectedNamespace))
.then(function(response) {
- functionInstance.ready = (response.data && response.data.availableReplicas && response.data.availableReplicas > 0);
+ $scope.selectedFunction.ready = (response.data && response.data.availableReplicas && response.data.availableReplicas > 0);
})
.catch(function(err) {
console.error(err);
@@ -114,7 +125,7 @@ app.controller("home", ['$scope', '$log', '$http', '$location', '$interval', '$f
requestContentType = "binary/octet-stream";
}
- var fnNamespace = ($scope.selectedNamespace !== "openfaas-fn") ? "." + $scope.selectedNamespace : "";
+ var fnNamespace = ($scope.selectedNamespace && $scope.selectedNamespace.length > 0) ? "." + $scope.selectedNamespace : "";
var options = {
url: "../function/" + $scope.selectedFunction.name + fnNamespace,
data: $scope.invocation.request,
@@ -204,41 +215,27 @@ app.controller("home", ['$scope', '$log', '$http', '$location', '$interval', '$f
};
var refreshData = function (selectedNamespace) {
- var previous = $scope.functions;
-
- var cl = function (previousItems) {
- $http.get("../system/functions?namespace=" + selectedNamespace).then(function (response) {
- if (response && response.data) {
- if (previousItems.length != response.data.length) {
- $scope.functions = response.data;
-
- // update the selected function object because the newly fetched object from the API becomes a different object
- var filteredSelectedFunction = $filter('filter')($scope.functions, { name: $scope.selectedFunction.name }, true);
- if (filteredSelectedFunction && filteredSelectedFunction.length > 0) {
- $scope.selectedFunction = filteredSelectedFunction[0];
- } else {
- $scope.selectedFunction = undefined;
- }
- } else {
- for (var i = 0; i < $scope.functions.length; i++) {
- for (var j = 0; j < response.data.length; j++) {
- if ($scope.functions[i].name == response.data[j].name) {
- $scope.functions[i].image = response.data[j].image;
- $scope.functions[i].replicas = response.data[j].replicas;
- $scope.functions[i].invocationCount = response.data[j].invocationCount;
- $scope.functions[i].namespace = response.data[j].namespace;
- }
- }
- }
- }
+ var cl = function () {
+
+ $http.get("../system/functions" + getNamespaceSuffix(selectedNamespace)).then(function (response) {
+
+ const curNamespace = ($scope.functions.length > 0 && $scope.functions[0].namespace && $scope.functions[0].namespace) ? $scope.functions[0].namespace : "";
+ const newNamespace = (response.data && response.data[0] && response.data[0].namespace) ? response.data[0].namespace : "";
+
+
+ if (response && response.data && (curNamespace !== newNamespace || $scope.functions.length != response.data.length)) {
+ $scope.functions = response.data;
+ if (!$scope.functions.indexOf($scope.selectedFunction )) {
+ $scope.selectedFunction = undefined;
+ }
}
});
};
- cl(previous);
+ cl();
}
var fetch = function() {
- $http.get("../system/functions?namespace=" + $scope.selectedNamespace).then(function(response) {
+ $http.get("../system/functions" + getNamespaceSuffix($scope.selectedNamespace)).then(function(response) {
$scope.functions = response.data;
});
};
@@ -267,13 +264,13 @@ app.controller("home", ['$scope', '$log', '$http', '$location', '$interval', '$f
templateUrl: "templates/newfunction.html",
locals: {
item: $scope.functionTemplate,
- allNamespaces: $scope.allNamespaces
+ selectedNamespace: $scope.selectedNamespace
},
- controller: DialogController
+ controller: DialogController,
});
};
- var DialogController = function($scope, $mdDialog, item) {
+ var DialogController = function($scope, $mdDialog, item, selectedNamespace) {
var fetchNamespaces = function () {
$http.get("../system/namespaces")
.then(function(response) {
@@ -294,7 +291,7 @@ app.controller("home", ['$scope', '$log', '$http', '$location', '$interval', '$f
$scope.annotationFieldsVisible = false;
$scope.annotationInputs = [{key: "", value: ""}];
- $scope.namespaceSelect = "openfaas-fn";
+ $scope.namespaceSelect = selectedNamespace;
fetchNamespaces();
@@ -354,7 +351,7 @@ app.controller("home", ['$scope', '$log', '$http', '$location', '$interval', '$f
item.labels = {};
item.annotations = {};
item.secrets = [];
- item.namespace = "openfaas-fn";
+ item.namespace = "";
$scope.validationError = "";
$scope.closeDialog();
@@ -572,7 +569,8 @@ app.controller("home", ['$scope', '$log', '$http', '$location', '$interval', '$f
$mdDialog.show(confirm)
.then(function() {
var options = {
- url: "../system/functions?namespace=" + $scope.selectedNamespace,
+
+ url: "../system/functions" + getNamespaceSuffix($scope.selectedNamespace),
data: {
functionName: $scope.selectedFunction.name
},
@@ -594,7 +592,6 @@ app.controller("home", ['$scope', '$log', '$http', '$location', '$interval', '$f
};
fetch();
- fetchNamespacesInterval();
}
]);
@@ -603,4 +600,8 @@ function uuidv4() {
return ([1e7]+-1e3+-4e3+-8e3+-1e11).replace(/[018]/g, function(c) {
return (c ^ cryptoInstance.getRandomValues(new Uint8Array(1))[0] & 15 >> c / 4).toString(16)
})
-}
\ No newline at end of file
+}
+
+function getNamespaceSuffix(namespace) {
+ return namespace && namespace.length > 0 ? "?namespace=" + namespace : ""
+}
\ No newline at end of file
diff --git a/gateway/assets/templates/newfunction.html b/gateway/assets/templates/newfunction.html
index 891ab185ef..2ee5f68f53 100644
--- a/gateway/assets/templates/newfunction.html
+++ b/gateway/assets/templates/newfunction.html
@@ -63,7 +63,7 @@ Deploy A New Function
Namespace your function runs in i.e. 'openfaas-fn'. Only namespaces OpenFaaS can manage will show here
-
+
{{ namespace }}