diff --git a/ui/src/views/project/AddAccountOrUserToProject.vue b/ui/src/views/project/AddAccountOrUserToProject.vue
index d85dc785729..bb5fb0884c6 100644
--- a/ui/src/views/project/AddAccountOrUserToProject.vue
+++ b/ui/src/views/project/AddAccountOrUserToProject.vue
@@ -31,27 +31,23 @@
-
-
-
-
-
-
-
-
-
-
- {{ account.name }}
-
-
-
+ :filterOption="filterOption"
+ :options="accounts"
+ >
+
+
+
+
+
+
+
+
+ {{ account.name }}
+
+
@@ -121,27 +117,23 @@
-
-
-
-
-
-
-
- {{ user.firstname + ' ' + user.lastname + " (" + user.username + ")" }}
-
+
+
+
+
+
+ {{ user.firstName + ' ' + user.lastName + " (" + user.username + ")" }}
-
+
@@ -254,6 +246,11 @@ export default {
this.fetchProjectRoles()
}
},
+ filterOption (input, option) {
+ return (
+ option.value.toUpperCase().indexOf(input.toUpperCase()) >= 0
+ )
+ },
fetchUsers (keyword) {
this.load.users = true
const params = { listall: true, showicon: true }
@@ -261,13 +258,28 @@ export default {
params.keyword = keyword
}
api('listUsers', params).then(response => {
- this.users = response.listusersresponse.user ? response.listusersresponse.user : []
+ this.users = this.parseUsers(response?.listusersresponse?.user)
}).catch(error => {
this.$notifyError(error)
}).finally(() => {
this.load.users = false
})
},
+ parseUsers (users) {
+ if (!users) {
+ return []
+ }
+
+ return users.map(user => {
+ return {
+ value: user.username,
+ username: user.username,
+ firstName: user.firstname,
+ lastName: user.lastname,
+ icon: user.icon
+ }
+ })
+ },
fetchAccounts (keyword) {
this.load.accounts = true
const params = { domainid: this.resource.domainid, showicon: true }
@@ -275,13 +287,26 @@ export default {
params.keyword = keyword
}
api('listAccounts', params).then(response => {
- this.accounts = response.listaccountsresponse.account || []
+ this.accounts = this.parseAccounts(response?.listaccountsresponse?.account)
}).catch(error => {
this.$notifyError(error)
}).finally(() => {
this.load.accounts = false
})
},
+ parseAccounts (accounts) {
+ if (!accounts) {
+ return []
+ }
+
+ return accounts.map(account => {
+ return {
+ value: account.name,
+ name: account.name,
+ icon: account.icon
+ }
+ })
+ },
fetchProjectRoles () {
this.load.projectRoles = true
api('listProjectRoles', {