This is an automated email from the ASF dual-hosted git repository. weizhou pushed a commit to branch 4.20 in repository https://gitbox.apache.org/repos/asf/cloudstack.git
The following commit(s) were added to refs/heads/4.20 by this push: new f24b1757a0b ui: donot filter edge zones while registering directdownload iso (#10865) f24b1757a0b is described below commit f24b1757a0b920d88470033bdf4bd658717a8d20 Author: Abhishek Kumar <abhishek.mr...@gmail.com> AuthorDate: Wed Sep 3 15:16:10 2025 +0530 ui: donot filter edge zones while registering directdownload iso (#10865) Fixes #10766 Signed-off-by: Abhishek Kumar <abhishek.mr...@gmail.com> --- ui/src/views/image/RegisterOrUploadIso.vue | 45 ++++++++++++++++++++---------- 1 file changed, 31 insertions(+), 14 deletions(-) diff --git a/ui/src/views/image/RegisterOrUploadIso.vue b/ui/src/views/image/RegisterOrUploadIso.vue index 871a8482e99..37ae369727f 100644 --- a/ui/src/views/image/RegisterOrUploadIso.vue +++ b/ui/src/views/image/RegisterOrUploadIso.vue @@ -85,7 +85,7 @@ <template #label> <tooltip-label :title="$t('label.directdownload')" :tooltip="apiParams.directdownload.description"/> </template> - <a-switch v-model:checked="form.directdownload"/> + <a-switch v-model:checked="form.directdownload" @change="handleDirectDownloadChange"/> </a-form-item> <a-form-item ref="checksum" name="checksum"> @@ -110,7 +110,7 @@ }" :loading="zoneLoading" :placeholder="apiParams.zoneid.description"> - <a-select-option :value="opt.id" v-for="opt in zones" :key="opt.id" :label="opt.name || opt.description"> + <a-select-option :value="opt.id" v-for="opt in zoneList" :key="opt.id" :label="opt.name || opt.description"> <span> <resource-icon v-if="opt.icon" :image="opt.icon.base64image" size="1x" style="margin-right: 5px"/> <global-outlined v-else style="margin-right: 5px" /> @@ -361,17 +361,18 @@ export default { }, created () { this.initForm() - this.zones = [] - if (this.$store.getters.userInfo.roletype === 'Admin' && this.currentForm === 'Create') { - this.zones = [ - { - id: '-1', - name: this.$t('label.all.zone') - } - ] - } + this.initZones() this.fetchData() }, + computed: { + zoneList () { + let filteredZones = this.zones + if (!this.form.directdownload) { + filteredZones = this.zones.filter(zone => zone.type !== 'Edge') + } + return filteredZones + } + }, methods: { initForm () { this.formRef = ref() @@ -390,6 +391,17 @@ export default { ostypeid: [{ required: true, message: this.$t('message.error.select') }] }) }, + initZones () { + this.zones = [] + if (this.$store.getters.userInfo.roletype === 'Admin' && this.currentForm === 'Create') { + this.zones = [ + { + id: '-1', + name: this.$t('label.all.zone') + } + ] + } + }, fetchData () { this.fetchZoneData() this.fetchOsType() @@ -412,11 +424,10 @@ export default { const listZones = json.listzonesresponse.zone if (listZones) { this.zones = this.zones.concat(listZones) - this.zones = this.zones.filter(zone => zone.type !== 'Edge') } }).finally(() => { this.zoneLoading = false - this.form.zoneid = (this.zones[0].id ? this.zones[0].id : '') + this.form.zoneid = this.zoneList?.[0]?.id || '' }) }, fetchOsType () { @@ -467,6 +478,12 @@ export default { this.fileList = newFileList this.form.file = undefined }, + handleDirectDownloadChange () { + if (this.form.zoneid && this.zoneList.find(entry => entry.id === this.form.zoneid)) { + return + } + this.form.zoneid = this.zoneList?.[0]?.id || '' + }, beforeUpload (file) { this.fileList = [file] this.form.file = file @@ -531,7 +548,7 @@ export default { } switch (key) { case 'zoneid': - var zone = this.zones.filter(zone => zone.id === input) + var zone = this.zoneList.filter(zone => zone.id === input) params[key] = zone[0].id break case 'ostypeid':