This is an automated email from the ASF dual-hosted git repository.
DaanHoogland pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/cloudstack.git
The following commit(s) were added to refs/heads/main by this push:
new 89a2b025f25 ui: improve related global config popup (#14149)
89a2b025f25 is described below
commit 89a2b025f250eacbb91fd3dc83dc316c66f6f68a
Author: Abhishek Kumar <[email protected]>
AuthorDate: Fri Oct 23 16:20:25 2026 +0530
ui: improve related global config popup (#14149)
Signed-off-by: Abhishek Kumar <[email protected]>
---
ui/public/locales/en.json | 1 +
ui/src/views/setting/ConfigurationValue.vue | 42 +++++++++++++++++++++--------
2 files changed, 32 insertions(+), 11 deletions(-)
diff --git a/ui/public/locales/en.json b/ui/public/locales/en.json
index 6bfc3097101..e2ac9b3896c 100644
--- a/ui/public/locales/en.json
+++ b/ui/public/locales/en.json
@@ -4029,6 +4029,7 @@
"message.recover.vm": "Please confirm that you would like to recover this
Instance.",
"message.reinstall.vm": "NOTE: Proceed with caution. This will cause the
Instance to be reinstalled from the Template; data on the root disk will be
lost. Extra data volumes, if any, will not be touched.",
"message.related.settings.changed": "'%x' has been changed. Would you like to
review or update any related settings below?",
+"message.related.settings.may.not.be.exhaustive": "This list of related
settings may not be exhaustive. Please check the documentation for other
settings that may need to be updated.",
"message.release.ip.failed": "Failed to release IP",
"message.releasing.dedicated.cluster": "Releasing dedicated Cluster...",
"message.releasing.dedicated.host": "Releasing dedicated host...",
diff --git a/ui/src/views/setting/ConfigurationValue.vue
b/ui/src/views/setting/ConfigurationValue.vue
index ea146df8cb3..551a4589a9a 100644
--- a/ui/src/views/setting/ConfigurationValue.vue
+++ b/ui/src/views/setting/ConfigurationValue.vue
@@ -199,6 +199,11 @@
:width="'60vw'"
@cancel="closeRelatedModal">
<p>{{ $t('message.related.settings.changed').replace('%x',
relatedSourceConfigName) }}</p>
+ <a-alert
+ type="info"
+ showIcon
+ style="margin-bottom: 12px"
+ :message="$t('message.related.settings.may.not.be.exhaustive')" />
<a-table
size="small"
:showHeader="false"
@@ -396,22 +401,37 @@ export default {
},
fetchRelatedConfigurations (configrecord) {
const prefix = this.getRelatedConfigPrefix(configrecord)
- if (!prefix) {
- return
- }
- this.relatedLoading = true
- const params = {
+ const scopeParams = {
[this.scopeKey]: this.$route.params?.id,
- keyword: prefix,
pagesize: -1,
listAll: true
}
- if (this.scopeKey === 'domainid' && !params[this.scopeKey]) {
- params[this.scopeKey] = this.resource?.id
+ if (this.scopeKey === 'domainid' && !scopeParams[this.scopeKey]) {
+ scopeParams[this.scopeKey] = this.resource?.id
+ }
+ const requests = []
+ if (prefix) {
+ requests.push(
+ getAPI('listConfigurations', { ...scopeParams, keyword: prefix
}).then(json => {
+ const list = json?.listconfigurationsresponse?.configuration || []
+ return list.filter(c => c.name.startsWith(prefix + '.'))
+ })
+ )
}
- getAPI('listConfigurations', params).then(json => {
- const list = json?.listconfigurationsresponse?.configuration || []
- this.relatedConfigs = list.filter(c => c.name !== configrecord.name &&
c.name.startsWith(prefix + '.'))
+ requests.push(
+ getAPI('listConfigurations', { ...scopeParams, parent:
configrecord.name }).then(json => {
+ return json?.listconfigurationsresponse?.configuration || []
+ })
+ )
+ this.relatedLoading = true
+ Promise.all(requests).then(results => {
+ const merged = new Map()
+ results.flat().forEach(c => {
+ if (c.name !== configrecord.name) {
+ merged.set(c.name, c)
+ }
+ })
+ this.relatedConfigs = Array.from(merged.values())
if (this.relatedConfigs.length > 0) {
this.relatedSourceConfigName = configrecord.name
this.relatedModalVisible = true