This is an automated email from the ASF dual-hosted git repository. sureshanaparti pushed a commit to branch 4.19 in repository https://gitbox.apache.org/repos/asf/cloudstack.git
The following commit(s) were added to refs/heads/4.19 by this push: new c35ba606a10 ui: fix account list on domain change in filterview (#9345) c35ba606a10 is described below commit c35ba606a10242a218d0686015288d8363cf30d5 Author: Abhishek Kumar <abhishek.mr...@gmail.com> AuthorDate: Mon Jul 8 17:24:38 2024 +0530 ui: fix account list on domain change in filterview (#9345) * ui: fix account list on domain change in filterview Fixes #9274 * fix * filter accounts for selected domain Signed-off-by: Abhishek Kumar <abhishek.mr...@gmail.com> --- ui/src/components/view/SearchView.vue | 35 ++++++++++++++++++++++++++++------- 1 file changed, 28 insertions(+), 7 deletions(-) diff --git a/ui/src/components/view/SearchView.vue b/ui/src/components/view/SearchView.vue index c284b8a635a..a43dfabf868 100644 --- a/ui/src/components/view/SearchView.vue +++ b/ui/src/components/view/SearchView.vue @@ -66,12 +66,13 @@ return option.label.toLowerCase().indexOf(input.toLowerCase()) >= 0 }" :loading="field.loading" - @input="onchange($event, field.name)"> + @input="onchange($event, field.name)" + @change="onSelectFieldChange(field.name)"> <a-select-option v-for="(opt, idx) in field.opts" :key="idx" - :value="opt.id" - :label="$t(opt.path || opt.name)"> + :value="['account'].includes(field.name) ? opt.name : opt.id" + :label="$t((['storageid'].includes(field.name) || !opt.path) ? opt.name : opt.path)"> <div> <span v-if="(field.name.startsWith('zone'))"> <span v-if="opt.icon"> @@ -85,7 +86,7 @@ </span> <block-outlined v-else style="margin-right: 5px" /> </span> - {{ $t(opt.path || opt.name) }} + {{ $t((['storageid'].includes(field.name) || !opt.path) ? opt.name : opt.path) }} </div> </a-select-option> </a-select> @@ -241,6 +242,11 @@ export default { onchange: async function (event, fieldname) { this.fetchDynamicFieldData(fieldname, event.target.value) }, + onSelectFieldChange (fieldname) { + if (fieldname === 'domainid') { + this.fetchDynamicFieldData('account') + } + }, onVisibleForm () { this.visibleFilter = !this.visibleFilter if (!this.visibleFilter) return @@ -563,6 +569,9 @@ export default { if (domainIndex > -1) { this.fields[domainIndex].loading = false } + if (accountIndex > -1) { + this.fields[accountIndex].loading = false + } if (imageStoreIndex > -1) { this.fields[imageStoreIndex].loading = false } @@ -584,7 +593,9 @@ export default { if (diskOfferingIndex > -1) { this.fields[diskOfferingIndex].loading = false } - this.fillFormFieldValues() + if (Array.isArray(arrayField)) { + this.fillFormFieldValues() + } }) }, initFormFieldData () { @@ -595,6 +606,9 @@ export default { this.fetchDynamicFieldData(arrayField) }, sortArray (data, key = 'name') { + if (!data) { + return [] + } return data.sort(function (a, b) { if (a[key] < b[key]) { return -1 } if (a[key] > b[key]) { return 1 } @@ -644,8 +658,15 @@ export default { }, fetchAccounts (searchKeyword) { return new Promise((resolve, reject) => { - api('listAccounts', { listAll: true, showicon: true, keyword: searchKeyword }).then(json => { - const account = json.listaccountsresponse.account + const params = { listAll: true, isrecursive: false, showicon: true, keyword: searchKeyword } + if (this.form.domainid) { + params.domainid = this.form.domainid + } + api('listAccounts', params).then(json => { + var account = json.listaccountsresponse.account + if (this.form.domainid) { + account = account.filter(a => a.domainid === this.form.domainid) + } resolve({ type: 'account', data: account