Leo 2 роки тому
батько
коміт
293f01ec90

Різницю між файлами не показано, бо вона завелика
+ 0 - 0
demo1.dag


Різницю між файлами не показано, бо вона завелика
+ 0 - 0
demo2.dag


+ 16 - 23
packages/yili-dag/src/Dag.tsx

@@ -818,37 +818,30 @@ export default class Dag extends React.Component<any, any> {
     }
   };
 
-  saveChangeStatus = (nodeId: any) => {
-    const allEdges = this.state.dagGraph.getEdges();
-    const allNodes = this.state.dagGraph.getNodes();
-    allNodes.forEach((node: any) => {
-      const nodeData = node.getData();
-      if (
-        nodeData.nodeId === nodeId &&
-        !['datasource', 'outputsource'].includes(node.type)
-      ) {
-        node.setData(
+  updateNodeStatus = (nodeId: any, edges: any) => {
+    edges.forEach((edge: any) => {
+      const source = edge.getSourceNode().getData();
+      const target = edge.getTargetNode().getData();
+      if (source.nodeId === nodeId && target.type !== 'outputsource') {
+        edge.getTargetNode().setData(
           {
-            ...nodeData,
+            ...target,
             status: 'undone'
           },
           { overwrite: true }
         );
+        const filterEdges = edges.filter((item: any) => item !== edge);
+        this.updateNodeStatus(target.nodeId, filterEdges);
       }
     });
+  };
+
+  saveChangeStatus = (nodeId: any) => {
+    const allEdges = this.state.dagGraph.getEdges();
     allEdges.forEach((edge: any) => {
       const target = edge.getTargetNode().getData();
-      const source = edge.getSourceNode().getData();
-      if (source.nodeId === nodeId && target.type !== 'outputsource') {
-        if (source.type !== 'datasource') {
-          edge.getSourceNode().setData(
-            {
-              ...source,
-              status: 'undone'
-            },
-            { overwrite: true }
-          );
-        }
+      // 将当前点击节点状态改为未执行
+      if (target.nodeId === nodeId && target.type === 'script') {
         edge.getTargetNode().setData(
           {
             ...target,
@@ -856,9 +849,9 @@ export default class Dag extends React.Component<any, any> {
           },
           { overwrite: true }
         );
-        this.saveChangeStatus(target.nodeId);
       }
     });
+    this.updateNodeStatus(nodeId, allEdges);
   };
 
   // 最后输出模板

+ 2 - 2
packages/yili-dag/src/ScriptEditor.tsx

@@ -88,7 +88,7 @@ export default class ScriptEditor extends React.Component<any, any> {
   }
 
   getEditorTemplate() {
-    const { inputNumber } = this.props;
+    const { inputNumber, outputNumber } = this.props;
     console.log('inputNumber:', inputNumber);
     const pyTemplate = `def main_func(${Array.from(
       { length: inputNumber },
@@ -102,7 +102,7 @@ ${Array.from(
   { length: inputNumber },
   (_, i) => '    r' + i + ' = input' + i
 ).join('\n')}
-    return [${Array.from({ length: inputNumber }, (_, i) => 'r' + i).join(
+    return [${Array.from({ length: outputNumber }, (_, i) => 'r' + i).join(
       ', '
     )}]
 `;

+ 11 - 7
packages/yili-dag/src/ScriptNodeInfo.tsx

@@ -31,7 +31,8 @@ export default class ScriptNodeInfo extends React.Component<any, any> {
       inputNumber: 1,
       outputNumber: 1,
       columns: [],
-      tableData: []
+      tableData: [],
+      editorValue: ''
     };
   }
 
@@ -43,10 +44,9 @@ export default class ScriptNodeInfo extends React.Component<any, any> {
 
   // 保存编辑的代码
   submitScriptEdit = () => {
-    const editorValue = (this.editorRef.current as any).state.editor.getValue();
-    this.props.nodeInfo.scriptText = editorValue;
     this.setState({ scriptModalVisible: false });
-    this.props.changeStatus(this.props.nodeInfo.nodeId);
+    const editorValue = (this.editorRef.current as any).state.editor.getValue();
+    this.setState({ editorValue: editorValue });
   };
 
   // 提交代码校验
@@ -59,7 +59,8 @@ export default class ScriptNodeInfo extends React.Component<any, any> {
   componentDidMount(): void {
     this.setState({
       inputNumber: this.props.nodeInfo.inputNumber,
-      outputNumber: this.props.nodeInfo.outputNumber
+      outputNumber: this.props.nodeInfo.outputNumber,
+      editorValue: this.props.nodeInfo.scriptText
     });
   }
 
@@ -70,6 +71,7 @@ export default class ScriptNodeInfo extends React.Component<any, any> {
       this.props.nodeInfo.nodeName = nodeName;
       this.props.nodeInfo.nodeId = nodeId;
       this.props.nodeInfo.outputNumber = this.state.outputNumber;
+      this.props.nodeInfo.scriptText = this.state.editorValue;
       this.updateInputPorts(this.state.inputNumber);
       this.updateOutputPorts(this.state.outputNumber);
       this.props.node.setData({ ...this.props.nodeInfo });
@@ -88,7 +90,8 @@ export default class ScriptNodeInfo extends React.Component<any, any> {
     );
     this.setState({
       inputNumber: this.props.nodeInfo.inputNumber,
-      outputNumber: this.props.nodeInfo.outputNumber
+      outputNumber: this.props.nodeInfo.outputNumber,
+      editorValue: this.props.nodeInfo.scriptText
     });
   }
 
@@ -403,8 +406,9 @@ export default class ScriptNodeInfo extends React.Component<any, any> {
               <div className="script-header"></div>
               <ScriptEditor
                 inputNumber={this.state.inputNumber}
+                outputNumber={this.state.outputNumber}
                 type={this.props.nodeInfo.label}
-                scriptText={this.props.nodeInfo.scriptText}
+                scriptText={this.state.editorValue}
                 ref={this.editorRef as any}
               />
             </div>

Різницю між файлами не показано, бо вона завелика
+ 0 - 0
untitled.dag


Різницю між файлами не показано, бо вона завелика
+ 0 - 0
untitled1.dag


Деякі файли не було показано, через те що забагато файлів було змінено