Parcourir la source

使用新的更新函数

visuddhinanda il y a 11 mois
Parent
commit
67ec8ac63f

+ 15 - 1
dashboard-v4/dashboard/src/components/task/ProjectTask.tsx

@@ -24,7 +24,21 @@ export function update(input: ITaskData[], target: ITaskData[]): void {
     }
   }
 }
-
+// 更新函数
+export function updateNode(tree: ITaskData[], changed: ITaskData): boolean {
+  for (let i = 0; i < tree.length; i++) {
+    if (tree[i].id === changed.id) {
+      tree[i] = { ...tree[i], ...changed };
+      return true;
+    }
+    if (tree[i].children) {
+      const updated = updateNode(tree[i].children!, changed);
+      updated && console.debug("TaskList children", tree[i].children);
+      if (updated) return true;
+    }
+  }
+  return false;
+}
 interface IWidget {
   studioName?: string;
   projectId?: string;

+ 11 - 5
dashboard-v4/dashboard/src/components/task/TaskList.tsx

@@ -25,6 +25,7 @@ import TaskStatusButton from "./TaskStatusButton";
 import Executors from "./Executors";
 import Category from "./Category";
 import TaskListAdd from "./TaskListAdd";
+import { update, updateNode } from "./ProjectTask";
 
 const { Text } = Typography;
 
@@ -164,7 +165,7 @@ const TaskList = ({
   });
 
   const changeData = (data: ITaskData[]) => {
-    console.debug("task change", data);
+    /*    console.debug("task change", data);
     const update = (item: ITaskData): ITaskData => {
       item.children = item.children?.map(update);
       const found = data.find((t) => t.id === item.id);
@@ -173,10 +174,15 @@ const TaskList = ({
       }
       return item;
     };
-    const newData = dataSource.map(update);
-    setRawData(treeToList(newData));
-    setDataSource(newData);
-    onChange && onChange(JSON.parse(JSON.stringify(newData)));
+    const newData = dataSource.map(update);*/
+    let origin = JSON.parse(JSON.stringify(dataSource));
+    data.forEach((value) => {
+      updateNode(origin, value);
+    });
+    console.debug("TaskList change", dataSource, origin);
+    setRawData(treeToList(origin));
+    setDataSource(origin);
+    onChange && onChange(origin);
   };
 
   const columns: ProColumns<ITaskData>[] = [