From fd3b75000744cd6c6008b881a3c211215aa5c0d5 Mon Sep 17 00:00:00 2001 From: zhandouxiaojiji Date: Tue, 27 Oct 2020 21:31:22 +0800 Subject: [PATCH] add TreePanel --- render-process/Editor/NodePanel.tsx | 2 +- render-process/Editor/TreePanel.tsx | 33 +++++++++++++++++++++ render-process/Editor/index.tsx | 45 +++++++++++++++++------------ 3 files changed, 61 insertions(+), 19 deletions(-) create mode 100644 render-process/Editor/TreePanel.tsx diff --git a/render-process/Editor/NodePanel.tsx b/render-process/Editor/NodePanel.tsx index 680ceb8..6d22e55 100644 --- a/render-process/Editor/NodePanel.tsx +++ b/render-process/Editor/NodePanel.tsx @@ -10,7 +10,7 @@ interface NodePanelState { } -export default class Panel extends React.Component { +export default class NodePanel extends React.Component { componentDidMount() { } diff --git a/render-process/Editor/TreePanel.tsx b/render-process/Editor/TreePanel.tsx new file mode 100644 index 0000000..f0be514 --- /dev/null +++ b/render-process/Editor/TreePanel.tsx @@ -0,0 +1,33 @@ +import React from 'react'; +import { Card } from 'antd'; +import { INode } from '@antv/g6/lib/interface/item'; +import { BehaviorTreeModel } from '../../common/BehaviorTreeModel'; + +interface TreePanelProps { + model?: BehaviorTreeModel; +} + +interface TreePanelState { +} + +export default class TreePanel extends React.Component { + state: TreePanelState = {}; + + componentDidMount() { + } + + render() { + const { model } = this.props; + if(!model) { + return (
) + } + return ( + + 行为树:{model.name} + + + ) + } + +} + diff --git a/render-process/Editor/index.tsx b/render-process/Editor/index.tsx index 2dacd52..c54b276 100644 --- a/render-process/Editor/index.tsx +++ b/render-process/Editor/index.tsx @@ -9,20 +9,20 @@ import { G6GraphEvent } from '@antv/g6/lib/interface/behavior'; import './Editor.css'; import * as Utils from '../../common/Utils'; import { BehaviorTreeModel, GraphNodeModel } from '../../common/BehaviorTreeModel'; +import TreePanel from './TreePanel'; export interface EditorProps { filepath: string; } interface EditorState { - curNodeId: string | null; + curNodeId?: string; + treeModel?: BehaviorTreeModel; } export default class Editor extends React.Component { private ref: React.RefObject; - state: EditorState = { - curNodeId: null - } + state: EditorState = {} private graph: TreeGraph; private dragSrcId: string; @@ -33,9 +33,9 @@ export default class Editor extends React.Component { this.ref = React.createRef(); } - shouldComponentUpdate() { - return !this.graph; - } + // shouldComponentUpdate(nextProps: EditorProps, nextState: EditorState) { + // return !this.graph || this.state.curNodeId != nextState.curNodeId; + // } componentDidMount() { const graph = new TreeGraph({ @@ -80,7 +80,7 @@ export default class Editor extends React.Component { return 150; }, getHeight: (d: GraphNodeModel) => { - if(d.size) { + if (d.size) { return d.size[1]; } else { return 50; @@ -106,7 +106,7 @@ export default class Editor extends React.Component { }); graph.on('nodeselectchange', (e: G6GraphEvent) => { - if(e.target) { + if (e.target) { this.onSelectNode(e.target.getID()); } else { this.onSelectNode(null); @@ -142,7 +142,7 @@ export default class Editor extends React.Component { graph.setItemState(this.dragSrcId, 'dragSrc', true); }); graph.on('node:dragend', (e: G6GraphEvent) => { - if(this.dragSrcId) { + if (this.dragSrcId) { graph.setItemState(this.dragSrcId, 'dragSrc', false); this.dragSrcId = null; } @@ -153,8 +153,8 @@ export default class Editor extends React.Component { if (dstNodeId == this.dragSrcId) { return; } - - if(this.dragDstId) { + + if (this.dragDstId) { graph.setItemState(this.dragDstId, 'dragRight', false); graph.setItemState(this.dragDstId, 'dragDown', false); graph.setItemState(this.dragDstId, 'dragUp', false); @@ -180,11 +180,11 @@ export default class Editor extends React.Component { const dstNode = e.item; var dragDir; - if(dstNode.hasState('dragRight')) { + if (dstNode.hasState('dragRight')) { dragDir = 'dragRight'; - } else if(dstNode.hasState('dragDown')) { + } else if (dstNode.hasState('dragDown')) { dragDir = 'dragDown'; - } else if(dstNode.hasState('dragUp')) { + } else if (dstNode.hasState('dragUp')) { dragDir = 'dragUp'; } @@ -260,6 +260,8 @@ export default class Editor extends React.Component { graph.fitCenter(); this.graph = graph; + + this.setState({treeModel: tree}); } onSelectNode(curNodeId: string | null) { @@ -276,9 +278,17 @@ export default class Editor extends React.Component { } } + createNode(name: string) { + + } + render() { console.log("render editor") - const { curNodeId: curNode } = this.state; + const { curNodeId, treeModel } = this.state; + var curNode; + if (curNodeId) { + curNode = this.graph.findDataById(curNodeId); + } return (
@@ -288,8 +298,7 @@ export default class Editor extends React.Component { ref={this.ref} /> - + {curNode ? : }