From 5c5ea091ad04aaef0eaf5c56c20737ec1cca355a Mon Sep 17 00:00:00 2001 From: dahn Date: Tue, 3 Oct 2023 10:37:38 +0200 Subject: [PATCH] load (domains) continuously in dropdown boxes (#7931) --- ui/src/views/iam/AddAccount.vue | 39 +++++++++++-------- .../network/CreateIsolatedNetworkForm.vue | 21 +++++++--- 2 files changed, 39 insertions(+), 21 deletions(-) diff --git a/ui/src/views/iam/AddAccount.vue b/ui/src/views/iam/AddAccount.vue index 467a4a24ed8..bfab8df6648 100644 --- a/ui/src/views/iam/AddAccount.vue +++ b/ui/src/views/iam/AddAccount.vue @@ -109,7 +109,7 @@ { - this.domainsList = response.listdomainsresponse.domain || [] - this.form.domain = this.domainsList[0].id || '' - }).catch(error => { - this.$notification.error({ - message: `${this.$t('label.error')} ${error.response.status}`, - description: error.response.data.errorresponse.errortext - }) + this.domain.loading = true + this.loadMore('listDomains', 1, this.domain) + }, + loadMore (apiToCall, page, sema) { + console.log('sema.loading ' + sema.loading) + const params = {} + params.listAll = true + params.details = 'min' + params.pagesize = 100 + params.page = page + var count + api(apiToCall, params).then(json => { + const listDomains = json.listdomainsresponse.domain + count = json.listdomainsresponse.count + this.domainsList = this.domainsList.concat(listDomains) }).finally(() => { - this.domainLoading = false + if (count <= this.domainsList.length) { + sema.loading = false + } else { + this.loadMore(apiToCall, page + 1, sema) + } + this.form.domainid = 0 }) }, fetchRoles () { diff --git a/ui/src/views/network/CreateIsolatedNetworkForm.vue b/ui/src/views/network/CreateIsolatedNetworkForm.vue index 046510dacf2..e9830bba847 100644 --- a/ui/src/views/network/CreateIsolatedNetworkForm.vue +++ b/ui/src/views/network/CreateIsolatedNetworkForm.vue @@ -77,7 +77,7 @@ :filterOption="(input, option) => { return option.label.toLowerCase().indexOf(input.toLowerCase()) >= 0 }" - :loading="domainLoading" + :loading="domain.loading" :placeholder="apiParams.domainid.description" @change="val => { handleDomainChange(domains[val]) }"> @@ -375,7 +375,7 @@ export default { return { actionLoading: false, domains: [], - domainLoading: false, + domain: { loading: false }, selectedDomain: {}, accountVisible: isAdminOrDomainAdmin(), accounts: [], @@ -497,15 +497,26 @@ export default { this.updateVPCCheckAndFetchNetworkOfferingData() }, fetchDomainData () { + this.domain.loading = true + this.loadMore('listDomains', 1, this.domain) + }, + loadMore (apiToCall, page, sema) { const params = {} params.listAll = true params.details = 'min' - this.domainLoading = true - api('listDomains', params).then(json => { + params.pagesize = 100 + params.page = page + var count + api(apiToCall, params).then(json => { const listDomains = json.listdomainsresponse.domain + count = json.listdomainsresponse.count this.domains = this.domains.concat(listDomains) }).finally(() => { - this.domainLoading = false + if (count <= this.domains.length) { + sema.loading = false + } else { + this.loadMore(apiToCall, page + 1, sema) + } this.form.domainid = 0 this.handleDomainChange(this.domains[0]) })