This is an automated email from the ASF dual-hosted git repository.

xxyu pushed a commit to branch kylin5
in repository https://gitbox.apache.org/repos/asf/kylin.git

commit 63cc18fb5359e4577fea15c5c819e5e67bb8a962
Author: Qian Xia <lauraxiaq...@gmail.com>
AuthorDate: Fri Apr 14 16:31:50 2023 +0800

    KYLIN-5517 export all models
---
 .../common/ModelsExportModal/ModelsExportModal.vue | 27 +++++++++++++++-------
 1 file changed, 19 insertions(+), 8 deletions(-)

diff --git 
a/kystudio/src/components/common/ModelsExportModal/ModelsExportModal.vue 
b/kystudio/src/components/common/ModelsExportModal/ModelsExportModal.vue
index 9c2b38d3c6..3b3b701b39 100644
--- a/kystudio/src/components/common/ModelsExportModal/ModelsExportModal.vue
+++ b/kystudio/src/components/common/ModelsExportModal/ModelsExportModal.vue
@@ -23,9 +23,9 @@
         </div>
       </div>
       <p class="export-tips">{{$t('exportOneModelTip')}}</p>
+      <el-checkbox v-if="type === 'all'" class="ksd-mb-8 ksd-ml-10" 
:indeterminate="isIndeterminate" v-model="checkAll" 
:disabled="allModelItems.status === 'BROKEN'" 
@change="handleSelectAllModels"><span>{{$t('selectAll')}}</span></el-checkbox>
       <div class="export-model-list" v-if="type === 'all'">
         <el-checkbox-group v-model="selectedModals" 
@change="handleSelectModels">
-          <el-checkbox label="all" :disabled="allModelItems.status === 
'BROKEN'" v-if="type === 
'all'"><span>{{$t(allModelItems.name)}}</span></el-checkbox>
           <el-checkbox v-for="item in exportModal.list" :disabled="item.status 
=== 'BROKEN'" :label="item.id" :key="item.id">
             <el-tooltip :content="$t('exportBrokenModelCheckboxTip')" 
effect="dark" placement="top" :disabled="item.status !== 'BROKEN'">
               <span>{{item.name}}</span>
@@ -121,6 +121,8 @@ export default class ModelsExportModal extends Vue {
   isLoadingModals = false
   showLoadingMore = false
   filterName = ''
+  isIndeterminate = false
+  checkAll = false
 
   selectedModals = []
   exportModal = {
@@ -151,9 +153,9 @@ export default class ModelsExportModal extends Vue {
 
   changeCheckboxType (type) {
     if (type === 'ops') {
-      return (this.type === 'all' ? [...this.models, this.allModelItems] : 
this.models).filter(it => this.selectedModals.includes(it.id) && 
!it.has_override_props).length
+      return this.models.filter(it => this.selectedModals.includes(it.id) && 
!it.has_override_props).length
     } else if (type === 'mult-partition') {
-      return (this.type === 'all' ? [...this.models, this.allModelItems] : 
this.models).filter(it => this.selectedModals.includes(it.id) && 
!it.has_multiple_partition_values).length
+      return this.models.filter(it => this.selectedModals.includes(it.id) && 
!it.has_multiple_partition_values).length
     }
   }
 
@@ -178,6 +180,11 @@ export default class ModelsExportModal extends Vue {
     }
   }
 
+  handleSelectAllModels (v) {
+    this.selectedModals = v ? this.models.filter(it => it.status !== 
'BROKEN').map(item => item.id) : []
+    this.handleSelectModels(this.selectedModals)
+  }
+
   handleClose (isSubmit = false) {
     this.hideModal()
     this.resetState()
@@ -185,6 +192,8 @@ export default class ModelsExportModal extends Vue {
     this.exportModal.pageOffset = 1
     this.showLoadingMore = false
     this.selectedModals = []
+    this.isIndeterminate = false
+    this.checkAll = false
     this.filterName = ''
     this.callback && this.callback(isSubmit)
   }
@@ -203,13 +212,15 @@ export default class ModelsExportModal extends Vue {
   }
 
   handleSelectModels (data) {
-    const hasOverrideProps = (this.type === 'all' ? [...this.models, 
this.allModelItems] : this.models).filter(it => data.includes(it.id) && 
it.has_override_props)
-    const hasMultPartitions = (this.type === 'all' ? [...this.models, 
this.allModelItems] : this.models).filter(it => data.includes(it.id) && 
it.has_multiple_partition_values)
+    const hasOverrideProps = this.models.filter(it => data.includes(it.id) && 
it.has_override_props)
+    const hasMultPartitions = this.models.filter(it => data.includes(it.id) && 
it.has_multiple_partition_values)
     this.setModalForm({
       ids: data,
       exportOverProps: !hasOverrideProps.length && this.form.exportOverProps ? 
false : this.form.exportOverProps,
       exportMultiplePartitionValues: !hasMultPartitions.length && 
this.form.exportMultiplePartitionValues ? false : 
this.form.exportMultiplePartitionValues
     })
+    this.isIndeterminate = data.length > 0 && data.length < 
this.models.filter(it => it.status !== 'BROKEN').length
+    this.checkAll = data.length > 0 && data.length === this.models.filter(it 
=> it.status !== 'BROKEN').length
   }
 
   handleCancel () {
@@ -249,9 +260,9 @@ export default class ModelsExportModal extends Vue {
     const { project, form } = this
     this.isSubmiting = true
     const formData = objectClone(form)
-    if (formData.ids.includes('all')) {
-      formData.ids = this.models.map(it => it.uuid)
-    }
+    // if (formData.ids.includes('all')) {
+    //   formData.ids = this.models.map(it => it.uuid)
+    // }
     try {
       // if (this.type !== 'all') {
       await this.downloadModelsMetadata({ project, form: formData })

Reply via email to