load (domains) continuously in dropdown boxes (#7931)

This commit is contained in:
dahn 2023-10-03 10:37:38 +02:00 committed by GitHub
parent d627539688
commit 5c5ea091ad
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 39 additions and 21 deletions

View File

@ -109,7 +109,7 @@
<tooltip-label :title="$t('label.domainid')" :tooltip="apiParams.domainid.description"/>
</template>
<a-select
:loading="domainLoading"
:loading="domain.loading"
v-model:value="form.domainid"
:placeholder="apiParams.domainid.description"
showSearch
@ -207,7 +207,7 @@ export default {
this.fetchTimeZone = debounce(this.fetchTimeZone, 800)
return {
loading: false,
domainLoading: false,
domain: { loading: false },
domainsList: [],
roleLoading: false,
roles: [],
@ -282,21 +282,28 @@ export default {
}
},
fetchDomains () {
this.domainLoading = true
api('listDomains', {
listAll: true,
showicon: true,
details: 'min'
}).then(response => {
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 () {

View File

@ -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]) }">
<a-select-option v-for="(opt, optIndex) in domains" :key="optIndex" :label="opt.path || opt.name || opt.description">
@ -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])
})