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 <[email protected]>
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 <[email protected]>
---
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