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':

Reply via email to