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

lgcareer pushed a commit to branch dev-resource-tree
in repository https://gitbox.apache.org/repos/asf/incubator-dolphinscheduler.git


The following commit(s) were added to refs/heads/dev-resource-tree by this push:
     new ae7fbf2  Modify the main jar package (#2200)
ae7fbf2 is described below

commit ae7fbf2ad33e719f13af76b1d3699758efb52fd7
Author: break60 <[email protected]>
AuthorDate: Tue Mar 17 13:22:39 2020 +0800

    Modify the main jar package (#2200)
    
    * Change crumb position
    
    * UDF changed to multiple choice
    
    * Limit customization file content to no more than 3000 lines
    
    * Limit customization file content to no more than 3000 lines(#2128)
    
    * Modify the main jar package
---
 .../pages/dag/_source/formModel/tasks/flink.vue    | 68 +++++++++------------
 .../home/pages/dag/_source/formModel/tasks/mr.vue  | 70 +++++++++-------------
 .../pages/dag/_source/formModel/tasks/spark.vue    | 21 +++----
 .../src/js/conf/home/pages/dag/index.vue           |  4 +-
 .../src/js/conf/home/store/dag/actions.js          | 19 ++++++
 .../src/js/conf/home/store/dag/mutations.js        |  1 +
 .../src/js/conf/home/store/dag/state.js            |  2 +
 7 files changed, 89 insertions(+), 96 deletions(-)

diff --git 
a/dolphinscheduler-ui/src/js/conf/home/pages/dag/_source/formModel/tasks/flink.vue
 
b/dolphinscheduler-ui/src/js/conf/home/pages/dag/_source/formModel/tasks/flink.vue
index 03e53fe..60a2da4 100644
--- 
a/dolphinscheduler-ui/src/js/conf/home/pages/dag/_source/formModel/tasks/flink.vue
+++ 
b/dolphinscheduler-ui/src/js/conf/home/pages/dag/_source/formModel/tasks/flink.vue
@@ -48,19 +48,9 @@
     <m-list-box>
       <div slot="text">{{$t('Main jar package')}}</div>
       <div slot="content">
-        <x-select
-                style="width: 100%;"
-                :placeholder="$t('Please enter main jar package')"
-                v-model="mainJar"
-                filterable
-                :disabled="isDetails">
-          <x-option
-                  v-for="city in mainJarList"
-                  :key="city.code"
-                  :value="city.code"
-                  :label="city.code">
-          </x-option>
-        </x-select>
+        <treeselect v-model="mainJar" :options="mainJarLists" 
:disable-branch-nodes="true" :normalizer="normalizer" :placeholder="$t('Please 
enter main jar package')">
+          <div slot="value-label" slot-scope="{ node }">{{ node.raw.fullName 
}}</div>
+        </treeselect>
       </div>
     </m-list-box>
     <m-list-box>
@@ -151,12 +141,9 @@
     <m-list-box>
       <div slot="text">{{$t('Resources')}}</div>
       <div slot="content">
-        <m-resources
-                ref="refResources"
-                @on-resourcesData="_onResourcesData"
-                @on-cache-resourcesData="_onCacheResourcesData"
-                :resource-list="resourceList">
-        </m-resources>
+        <treeselect v-model="resourceList" :multiple="true" 
:options="mainJarList" :normalizer="normalizer" :placeholder="$t('Please select 
resources')">
+          <div slot="value-label" slot-scope="{ node }">{{ node.raw.fullName 
}}</div>
+        </treeselect>
       </div>
     </m-list-box>
     <m-list-box>
@@ -178,6 +165,8 @@
   import mLocalParams from './_source/localParams'
   import mListBox from './_source/listBox'
   import mResources from './_source/resources'
+  import Treeselect from '@riophae/vue-treeselect'
+  import '@riophae/vue-treeselect/dist/vue-treeselect.css'
   import disabledState from '@/module/mixin/disabledState'
 
   export default {
@@ -189,6 +178,7 @@
         // Master jar package
         mainJar: null,
         // Master jar package(List)
+        mainJarLists: [],
         mainJarList: [],
         // Deployment method
         deployMode: 'cluster',
@@ -215,7 +205,12 @@
         // Program type
         programType: 'SCALA',
         // Program type(List)
-        programTypeList: [{ code: 'JAVA' }, { code: 'SCALA' }, { code: 
'PYTHON' }]
+        programTypeList: [{ code: 'JAVA' }, { code: 'SCALA' }, { code: 
'PYTHON' }],
+        normalizer(node) {
+          return {
+            label: node.name
+          }
+        }
       }
     },
     props: {
@@ -320,24 +315,12 @@
         })
         return true
       },
-      /**
-       * get resources list
-       */
-      _getResourcesList () {
-        return new Promise((resolve, reject) => {
-          let isJar = (alias) => {
-            return alias.substring(alias.lastIndexOf('.') + 1, alias.length) 
!== 'jar'
-          }
-          this.mainJarList = 
_.map(_.cloneDeep(this.store.state.dag.resourcesListS), v => {
-            return {
-              id: v.id,
-              code: v.alias,
-              disabled: isJar(v.alias)
-            }
-          })
-          resolve()
+      diGuiTree(item) {  // Recursive convenience tree structure
+        item.forEach(item => {
+          item.children === '' || item.children === undefined || item.children 
=== null || item.children.length === 0?        
+            delete item.children : this.diGuiTree(item.children);
         })
-      }
+      },
     },
     watch: {
       // Listening type
@@ -373,9 +356,13 @@
       }
     },
     created () {
-      this._getResourcesList().then(() => {
+        let item = this.store.state.dag.resourcesListS
+        let items = this.store.state.dag.resourcesListJar
+        this.diGuiTree(item)
+        this.diGuiTree(items)
+        this.mainJarList = item
+        this.mainJarLists = items
         let o = this.backfillItem
-
         // Non-null objects represent backfill
         if (!_.isEmpty(o)) {
           this.mainClass = o.params.mainClass || ''
@@ -403,12 +390,11 @@
             this.localParams = localParams
           }
         }
-      })
     },
     mounted () {
 
     },
-    components: { mLocalParams, mListBox, mResources }
+    components: { mLocalParams, mListBox, mResources, Treeselect }
   }
 </script>
 
diff --git 
a/dolphinscheduler-ui/src/js/conf/home/pages/dag/_source/formModel/tasks/mr.vue 
b/dolphinscheduler-ui/src/js/conf/home/pages/dag/_source/formModel/tasks/mr.vue
index 706a35f..6d9119d 100644
--- 
a/dolphinscheduler-ui/src/js/conf/home/pages/dag/_source/formModel/tasks/mr.vue
+++ 
b/dolphinscheduler-ui/src/js/conf/home/pages/dag/_source/formModel/tasks/mr.vue
@@ -44,19 +44,9 @@
     <m-list-box>
       <div slot="text">{{$t('Main jar package')}}</div>
       <div slot="content">
-        <x-select
-                style="width: 100%;"
-                :placeholder="$t('Please enter main jar package')"
-                v-model="mainJar"
-                filterable
-                :disabled="isDetails">
-          <x-option
-                  v-for="city in mainJarList"
-                  :key="city.code"
-                  :value="city.code"
-                  :label="city.code">
-          </x-option>
-        </x-select>
+        <treeselect v-model="mainJar" :options="mainJarLists" 
:disable-branch-nodes="true" :normalizer="normalizer" :placeholder="$t('Please 
enter main jar package')">
+          <div slot="value-label" slot-scope="{ node }">{{ node.raw.fullName 
}}</div>
+        </treeselect>
       </div>
     </m-list-box>
     <m-list-box>
@@ -88,12 +78,9 @@
     <m-list-box>
       <div slot="text">{{$t('Resources')}}</div>
       <div slot="content">
-        <m-resources
-                ref="refResources"
-                @on-resourcesData="_onResourcesData"
-                @on-cache-resourcesData="_onCacheResourcesData"
-                :resource-list="resourceList">
-        </m-resources>
+        <treeselect v-model="resourceList" :multiple="true" 
:options="mainJarList" :normalizer="normalizer" :placeholder="$t('Please select 
resources')">
+          <div slot="value-label" slot-scope="{ node }">{{ node.raw.fullName 
}}</div>
+        </treeselect>
       </div>
     </m-list-box>
     <m-list-box>
@@ -115,6 +102,8 @@
   import mListBox from './_source/listBox'
   import mResources from './_source/resources'
   import mLocalParams from './_source/localParams'
+  import Treeselect from '@riophae/vue-treeselect'
+  import '@riophae/vue-treeselect/dist/vue-treeselect.css'
   import disabledState from '@/module/mixin/disabledState'
   export default {
     name: 'mr',
@@ -125,6 +114,7 @@
         // Master jar package
         mainJar: null,
         // Main jar package (List)
+        mainJarLists: [],
         mainJarList: [],
         // Resource(list)
         resourceList: [],
@@ -139,7 +129,12 @@
         // Program type
         programType: 'JAVA',
         // Program type(List)
-        programTypeList: [{ code: 'JAVA' }, { code: 'PYTHON' }]
+        programTypeList: [{ code: 'JAVA' }, { code: 'PYTHON' }],
+        normalizer(node) {
+          return {
+            label: node.name
+          }
+        }
       }
     },
     props: {
@@ -165,6 +160,12 @@
       _onCacheResourcesData (a) {
         this.cacheResourceList = a
       },
+      diGuiTree(item) {  // Recursive convenience tree structure
+        item.forEach(item => {
+          item.children === '' || item.children === undefined || item.children 
=== null || item.children.length === 0?        
+            delete item.children : this.diGuiTree(item.children);
+        })
+      },
       /**
        * verification
        */
@@ -202,24 +203,7 @@
         })
         return true
       },
-      /**
-       * Get resource data
-       */
-      _getResourcesList () {
-        return new Promise((resolve, reject) => {
-          let isJar = (alias) => {
-            return alias.substring(alias.lastIndexOf('.') + 1, alias.length) 
!== 'jar'
-          }
-          this.mainJarList = 
_.map(_.cloneDeep(this.store.state.dag.resourcesListS), v => {
-            return {
-              id: v.id,
-              code: v.alias,
-              disabled: isJar(v.alias)
-            }
-          })
-          resolve()
-        })
-      }
+    
     },
     watch: {
       /**
@@ -251,7 +235,12 @@
       }
     },
     created () {
-      this._getResourcesList().then(() => {
+        let item = this.store.state.dag.resourcesListS
+        let items = this.store.state.dag.resourcesListJar
+        this.diGuiTree(item)
+        this.diGuiTree(items)
+        this.mainJarList = item
+        this.mainJarLists = items
         let o = this.backfillItem
 
         // Non-null objects represent backfill
@@ -275,12 +264,11 @@
             this.localParams = localParams
           }
         }
-      })
     },
     mounted () {
 
     },
-    components: { mLocalParams, mListBox, mResources }
+    components: { mLocalParams, mListBox, mResources, Treeselect }
   }
 </script>
 
diff --git 
a/dolphinscheduler-ui/src/js/conf/home/pages/dag/_source/formModel/tasks/spark.vue
 
b/dolphinscheduler-ui/src/js/conf/home/pages/dag/_source/formModel/tasks/spark.vue
index 915f64d..bc16457 100644
--- 
a/dolphinscheduler-ui/src/js/conf/home/pages/dag/_source/formModel/tasks/spark.vue
+++ 
b/dolphinscheduler-ui/src/js/conf/home/pages/dag/_source/formModel/tasks/spark.vue
@@ -63,19 +63,9 @@
     <m-list-box>
       <div slot="text">{{$t('Main jar package')}}</div>
       <div slot="content">
-        <x-select
-                style="width: 100%;"
-                :placeholder="$t('Please enter main jar package')"
-                v-model="mainJar"
-                filterable
-                :disabled="isDetails">
-          <x-option
-                  v-for="city in mainJarList"
-                  :key="city.code"
-                  :value="city.code"
-                  :label="city.code">
-          </x-option>
-        </x-select>
+        <treeselect v-model="mainJar" :options="mainJarLists" 
:disable-branch-nodes="true" :normalizer="normalizer" :placeholder="$t('Please 
enter main jar package')">
+          <div slot="value-label" slot-scope="{ node }">{{ node.raw.fullName 
}}</div>
+        </treeselect>
       </div>
     </m-list-box>
     <m-list-box>
@@ -215,6 +205,7 @@
   import mListBox from './_source/listBox'
   import mResources from './_source/resources'
   import Treeselect from '@riophae/vue-treeselect'
+  import '@riophae/vue-treeselect/dist/vue-treeselect.css'
   import disabledState from '@/module/mixin/disabledState'
 
   export default {
@@ -226,6 +217,7 @@
         // Master jar package
         mainJar: null,
         // Master jar package(List)
+        mainJarLists: [],
         mainJarList: [],
         // Deployment method
         deployMode: 'cluster',
@@ -415,8 +407,11 @@
     },
     created () {
         let item = this.store.state.dag.resourcesListS
+        let items = this.store.state.dag.resourcesListJar
         this.diGuiTree(item)
+        this.diGuiTree(items)
         this.mainJarList = item
+        this.mainJarLists = items
         let o = this.backfillItem
 
         // Non-null objects represent backfill
diff --git a/dolphinscheduler-ui/src/js/conf/home/pages/dag/index.vue 
b/dolphinscheduler-ui/src/js/conf/home/pages/dag/index.vue
index 3fd4eed..780756e 100644
--- a/dolphinscheduler-ui/src/js/conf/home/pages/dag/index.vue
+++ b/dolphinscheduler-ui/src/js/conf/home/pages/dag/index.vue
@@ -40,7 +40,7 @@
     props: {},
     methods: {
       ...mapMutations('dag', ['resetParams']),
-      ...mapActions('dag', ['getProcessList','getProjectList', 
'getResourcesList']),
+      ...mapActions('dag', ['getProcessList','getProjectList', 
'getResourcesList','getResourcesListJar']),
       ...mapActions('security', ['getTenantList','getWorkerGroupsAll']),
       /**
        * init
@@ -57,6 +57,8 @@
           this.getProjectList(),
           // get resource
           this.getResourcesList(),
+          // get jar
+          this.getResourcesListJar(),
           // get worker group list
           this.getWorkerGroupsAll(),
           this.getTenantList()
diff --git a/dolphinscheduler-ui/src/js/conf/home/store/dag/actions.js 
b/dolphinscheduler-ui/src/js/conf/home/store/dag/actions.js
index 20bc113..50295ad 100644
--- a/dolphinscheduler-ui/src/js/conf/home/store/dag/actions.js
+++ b/dolphinscheduler-ui/src/js/conf/home/store/dag/actions.js
@@ -334,6 +334,25 @@ export default {
     })
   },
   /**
+   * get jar
+   */
+  getResourcesListJar ({ state }) {
+    return new Promise((resolve, reject) => {
+      if (state.resourcesListJar.length) {
+        resolve()
+        return
+      }
+      io.get(`resources/list/jar`, {
+        type: 'FILE'
+      }, res => {
+        state.resourcesListJar = res.data
+        resolve(res.data)
+      }).catch(res => {
+        reject(res)
+      })
+    })
+  },
+  /**
    * Get process instance
    */
   getProcessInstance ({ state }, payload) {
diff --git a/dolphinscheduler-ui/src/js/conf/home/store/dag/mutations.js 
b/dolphinscheduler-ui/src/js/conf/home/store/dag/mutations.js
index 6ceabed..4f54b1d 100644
--- a/dolphinscheduler-ui/src/js/conf/home/store/dag/mutations.js
+++ b/dolphinscheduler-ui/src/js/conf/home/store/dag/mutations.js
@@ -108,6 +108,7 @@ export default {
     state.tenantId = payload && payload.tenantId || -1
     state.processListS = payload && payload.processListS || []
     state.resourcesListS = payload && payload.resourcesListS || []
+    state.resourcesListJar = payload && payload.resourcesListJar || []
     state.projectListS = payload && payload.projectListS || []
     state.isDetails = payload && payload.isDetails || false
     state.runFlag = payload && payload.runFlag || ''
diff --git a/dolphinscheduler-ui/src/js/conf/home/store/dag/state.js 
b/dolphinscheduler-ui/src/js/conf/home/store/dag/state.js
index b7d592a..0605a26 100644
--- a/dolphinscheduler-ui/src/js/conf/home/store/dag/state.js
+++ b/dolphinscheduler-ui/src/js/conf/home/store/dag/state.js
@@ -53,6 +53,8 @@ export default {
   projectListS: [],
   // tasks resourcesList
   resourcesListS: [],
+  // tasks resourcesListJar
+  resourcesListJar: [],
   // tasks datasource Type
   dsTypeListS: [
     {

Reply via email to