You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@dolphinscheduler.apache.org by ke...@apache.org on 2022/11/27 04:09:16 UTC

[dolphinscheduler] branch 3.1.2-prepare updated (5221428340 -> 99b86d112b)

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

kerwin pushed a change to branch 3.1.2-prepare
in repository https://gitbox.apache.org/repos/asf/dolphinscheduler.git


    from 5221428340 [fix][doc] python api release link
     new 3579008c45 Update use-dependent.ts typo (#12462)
     new 99b86d112b [Bug-13008] [UI] When using the complement function, turn on the dependent mode to generate multiple unrelated workflow instances (#13009)

The 2 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 .../task/components/node/fields/use-dependent.ts   | 45 ++++++++++++++--------
 .../projects/task/components/node/format-data.ts   | 19 ++-------
 .../views/projects/task/components/node/types.ts   | 19 ++++++---
 3 files changed, 46 insertions(+), 37 deletions(-)


[dolphinscheduler] 01/02: Update use-dependent.ts typo (#12462)

Posted by ke...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

kerwin pushed a commit to branch 3.1.2-prepare
in repository https://gitbox.apache.org/repos/asf/dolphinscheduler.git

commit 3579008c450b5b93faff508b5c0165746e25afbf
Author: moonkop <mo...@qq.com>
AuthorDate: Tue Nov 8 10:05:09 2022 +0800

    Update use-dependent.ts typo (#12462)
---
 .../src/views/projects/task/components/node/fields/use-dependent.ts | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/dolphinscheduler-ui/src/views/projects/task/components/node/fields/use-dependent.ts b/dolphinscheduler-ui/src/views/projects/task/components/node/fields/use-dependent.ts
index 1e714a1475..26ef67eb10 100644
--- a/dolphinscheduler-ui/src/views/projects/task/components/node/fields/use-dependent.ts
+++ b/dolphinscheduler-ui/src/views/projects/task/components/node/fields/use-dependent.ts
@@ -68,7 +68,7 @@ export function useDependent(model: { [field: string]: any }): IJsonItem[] {
       label: t('project.node.hour')
     }
   ]
-  const DATE_LSIT = {
+  const DATE_LIST = {
     hour: [
       {
         value: 'currentHour',
@@ -252,7 +252,7 @@ export function useDependent(model: { [field: string]: any }): IJsonItem[] {
             )
           }
           if (dependItem.cycle) {
-            dependItem.dateOptions = DATE_LSIT[dependItem.cycle]
+            dependItem.dateOptions = DATE_LIST[dependItem.cycle]
           }
         })
       })
@@ -354,7 +354,7 @@ export function useDependent(model: { [field: string]: any }): IJsonItem[] {
             props: {
               onUpdateValue: (value: IDateType) => {
                 model.dependTaskList[i].dependItemList[j].dateOptions =
-                  DATE_LSIT[value]
+                  DATE_LIST[value]
                 model.dependTaskList[i].dependItemList[j].dateValue = null
               }
             },


[dolphinscheduler] 02/02: [Bug-13008] [UI] When using the complement function, turn on the dependent mode to generate multiple unrelated workflow instances (#13009)

Posted by ke...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

kerwin pushed a commit to branch 3.1.2-prepare
in repository https://gitbox.apache.org/repos/asf/dolphinscheduler.git

commit 99b86d112bda6bb6f42551060adafc58a96eb352
Author: Kerwin <37...@users.noreply.github.com>
AuthorDate: Sun Nov 27 11:14:00 2022 +0800

    [Bug-13008] [UI] When using the complement function, turn on the dependent mode to generate multiple unrelated workflow instances (#13009)
    
    * Fix dirty data generated by dependent nodes.
---
 .../task/components/node/fields/use-dependent.ts   | 41 ++++++++++++++--------
 .../projects/task/components/node/format-data.ts   | 19 ++--------
 .../views/projects/task/components/node/types.ts   | 19 +++++++---
 3 files changed, 44 insertions(+), 35 deletions(-)

diff --git a/dolphinscheduler-ui/src/views/projects/task/components/node/fields/use-dependent.ts b/dolphinscheduler-ui/src/views/projects/task/components/node/fields/use-dependent.ts
index 26ef67eb10..77149418c1 100644
--- a/dolphinscheduler-ui/src/views/projects/task/components/node/fields/use-dependent.ts
+++ b/dolphinscheduler-ui/src/views/projects/task/components/node/fields/use-dependent.ts
@@ -29,7 +29,9 @@ import {
 import { Router, useRouter } from 'vue-router'
 import type {
   IJsonItem,
-  IDependpendItem,
+  IDependentItem,
+  IDependentItemOptions,
+  IDependTaskOptions,
   IDependTask,
   ITaskState,
   IDateType
@@ -49,6 +51,7 @@ export function useDependent(model: { [field: string]: any }): IJsonItem[] {
   const taskCache = {} as {
     [key: number]: { label: string; value: number }[]
   }
+  const selectOptions = ref([] as IDependTaskOptions[])
 
   const CYCLE_LIST = [
     {
@@ -236,25 +239,30 @@ export function useDependent(model: { [field: string]: any }): IJsonItem[] {
   watch(
     () => model.dependTaskList,
     (value) => {
-      value.forEach((item: IDependTask) => {
+      selectOptions.value = []
+      value.forEach((item: IDependTask, taskIndex: number) => {
         if (!item.dependItemList?.length) return
 
-        item.dependItemList?.forEach(async (dependItem: IDependpendItem) => {
+        const itemListOptions = ref([] as IDependentItemOptions[])
+        item.dependItemList?.forEach(async (dependItem: IDependentItem, itemIndex: number) => {
+          itemListOptions.value[itemIndex] = {}
           if (dependItem.projectCode) {
-            dependItem.definitionCodeOptions = await getProcessList(
+            itemListOptions.value[itemIndex].definitionCodeOptions = await getProcessList(
               dependItem.projectCode
             )
           }
           if (dependItem.projectCode && dependItem.definitionCode) {
-            dependItem.depTaskCodeOptions = await getTaskList(
+            itemListOptions.value[itemIndex].depTaskCodeOptions = await getTaskList(
               dependItem.projectCode,
               dependItem.definitionCode
             )
           }
           if (dependItem.cycle) {
-            dependItem.dateOptions = DATE_LIST[dependItem.cycle]
+            itemListOptions.value[itemIndex].dateOptions = DATE_LIST[dependItem.cycle]
           }
         })
+        selectOptions.value[taskIndex] = {} as IDependTaskOptions
+        selectOptions.value[taskIndex].dependItemList = itemListOptions.value
       })
     }
   )
@@ -277,7 +285,13 @@ export function useDependent(model: { [field: string]: any }): IJsonItem[] {
               filterable: true,
               onUpdateValue: async (projectCode: number) => {
                 const item = model.dependTaskList[i].dependItemList[j]
-                item.definitionCodeOptions = await getProcessList(projectCode)
+                const options = selectOptions?.value[i] || {}
+                const itemListOptions = options?.dependItemList || []
+                const itemOptions = {} as IDependentItemOptions
+                itemOptions.definitionCodeOptions = await getProcessList(projectCode)
+                itemListOptions[j] = itemOptions
+                options.dependItemList = itemListOptions
+                selectOptions.value[i] = options
                 item.depTaskCode = null
                 item.definitionCode = null
               }
@@ -303,16 +317,15 @@ export function useDependent(model: { [field: string]: any }): IJsonItem[] {
               filterable: true,
               onUpdateValue: async (processCode: number) => {
                 const item = model.dependTaskList[i].dependItemList[j]
-                item.depTaskCodeOptions = await getTaskList(
+                selectOptions.value[i].dependItemList[j].depTaskCodeOptions = await getTaskList(
                   item.projectCode,
                   processCode
                 )
                 item.depTaskCode = 0
               }
             },
-            options:
-              model.dependTaskList[i]?.dependItemList[j]
-                ?.definitionCodeOptions || [],
+            options: selectOptions.value[i]?.dependItemList[j]
+                    ?.definitionCodeOptions || [],
             path: `dependTaskList.${i}.dependItemList.${j}.definitionCode`,
             rule: {
               required: true,
@@ -333,7 +346,7 @@ export function useDependent(model: { [field: string]: any }): IJsonItem[] {
               filterable: true
             },
             options:
-              model.dependTaskList[i]?.dependItemList[j]?.depTaskCodeOptions ||
+              selectOptions.value[i]?.dependItemList[j]?.depTaskCodeOptions ||
               [],
             path: `dependTaskList.${i}.dependItemList.${j}.depTaskCode`,
             rule: {
@@ -353,7 +366,7 @@ export function useDependent(model: { [field: string]: any }): IJsonItem[] {
             name: t('project.node.cycle_time'),
             props: {
               onUpdateValue: (value: IDateType) => {
-                model.dependTaskList[i].dependItemList[j].dateOptions =
+                selectOptions.value[i].dependItemList[j].dateOptions =
                   DATE_LIST[value]
                 model.dependTaskList[i].dependItemList[j].dateValue = null
               }
@@ -376,7 +389,7 @@ export function useDependent(model: { [field: string]: any }): IJsonItem[] {
             span: 10,
             name: ' ',
             options:
-              model.dependTaskList[i]?.dependItemList[j]?.dateOptions || [],
+              selectOptions.value[i]?.dependItemList[j]?.dateOptions || [],
             path: `dependTaskList.${i}.dependItemList.${j}.dateValue`,
             rule: {
               trigger: ['input', 'blur'],
diff --git a/dolphinscheduler-ui/src/views/projects/task/components/node/format-data.ts b/dolphinscheduler-ui/src/views/projects/task/components/node/format-data.ts
index c7be65e8ca..f98f147236 100644
--- a/dolphinscheduler-ui/src/views/projects/task/components/node/format-data.ts
+++ b/dolphinscheduler-ui/src/views/projects/task/components/node/format-data.ts
@@ -15,15 +15,14 @@
  * limitations under the License.
  */
 
-import { omit, cloneDeep } from 'lodash'
+import { omit } from 'lodash'
 import type {
   INodeData,
   ITaskData,
   ITaskParams,
   ISqoopTargetParams,
   ISqoopSourceParams,
-  ILocalParam,
-  IDependTask
+  ILocalParam
 } from './types'
 
 export function formatParams(data: INodeData): {
@@ -261,21 +260,9 @@ export function formatParams(data: INodeData): {
     taskParams.xmx = data.xmx
   }
   if (data.taskType === 'DEPENDENT') {
-    const dependTaskList = cloneDeep(data.dependTaskList)?.map(
-      (taskItem: IDependTask) => {
-        if (taskItem.dependItemList?.length) {
-          taskItem.dependItemList.forEach((dependItem) => {
-            delete dependItem.definitionCodeOptions
-            delete dependItem.depTaskCodeOptions
-            delete dependItem.dateOptions
-          })
-        }
-        return taskItem
-      }
-    )
     taskParams.dependence = {
       relation: data.relation,
-      dependTaskList: dependTaskList
+      dependTaskList: data.dependTaskList
     }
   }
   if (data.taskType === 'DATA_QUALITY') {
diff --git a/dolphinscheduler-ui/src/views/projects/task/components/node/types.ts b/dolphinscheduler-ui/src/views/projects/task/components/node/types.ts
index 2dba623ea6..d16e1b642e 100644
--- a/dolphinscheduler-ui/src/views/projects/task/components/node/types.ts
+++ b/dolphinscheduler-ui/src/views/projects/task/components/node/types.ts
@@ -69,12 +69,19 @@ interface IResponseJsonItem extends Omit<IJsonItemParams, 'type'> {
   emit: 'change'[]
 }
 
-interface IDependpendItem {
-  depTaskCode?: number
-  status?: 'SUCCESS' | 'FAILURE'
+interface IDependentItemOptions {
   definitionCodeOptions?: IOption[]
   depTaskCodeOptions?: IOption[]
   dateOptions?: IOption[]
+}
+
+interface IDependTaskOptions {
+  dependItemList: IDependentItemOptions[]
+}
+
+interface IDependentItem {
+  depTaskCode?: number
+  status?: 'SUCCESS' | 'FAILURE'
   projectCode?: number
   definitionCode?: number
   cycle?: 'month' | 'week' | 'day' | 'hour'
@@ -85,7 +92,7 @@ interface IDependTask {
   condition?: string
   nextNode?: number
   relation?: RelationType
-  dependItemList?: IDependpendItem[]
+  dependItemList?: IDependentItem[]
 }
 
 interface ISwitchResult {
@@ -459,7 +466,9 @@ export {
   ISqoopSourceParams,
   ISqoopTargetParams,
   IDependTask,
-  IDependpendItem,
+  IDependentItem,
+  IDependentItemOptions,
+  IDependTaskOptions,
   IFormItem,
   IJsonItem,
   FormRules,