You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
90 lines
2.5 KiB
TypeScript
90 lines
2.5 KiB
TypeScript
import React from "react";
|
|
import { Button, Card, Form, Input } from "antd";
|
|
import { BehaviorTreeModel } from "../../common/BehaviorTreeModel";
|
|
import { FormInstance } from "antd/lib/form";
|
|
|
|
const { Item } = Form;
|
|
|
|
interface TreePanelProps {
|
|
model?: BehaviorTreeModel;
|
|
onRenameTree: (name: string) => void;
|
|
onRemoveTree: () => void;
|
|
onChangeTreeDesc: (desc: string) => void;
|
|
}
|
|
|
|
interface TreePanelState {
|
|
}
|
|
|
|
const inlineFormItemLayout = {
|
|
labelCol: {
|
|
sm: { span: 4 },
|
|
},
|
|
wrapperCol: {
|
|
sm: { span: 12 },
|
|
},
|
|
};
|
|
|
|
export default class TreePanel extends React.Component<TreePanelProps, TreePanelState> {
|
|
name: string = '';
|
|
desc: string = '';
|
|
formRef = React.createRef<FormInstance>();
|
|
|
|
componentDidMount() {
|
|
const { model } = this.props;
|
|
this.name = model.name;
|
|
this.desc = model.desc;
|
|
this.formRef.current.resetFields();
|
|
this.formRef.current.setFieldsValue({
|
|
name: model.name,
|
|
desc: model.desc,
|
|
})
|
|
}
|
|
|
|
render() {
|
|
const { model } = this.props;
|
|
if (!model) {
|
|
return <div />;
|
|
}
|
|
return (
|
|
<Card title="概况" style={{ height: "100%" }}>
|
|
<Form
|
|
{...inlineFormItemLayout}
|
|
ref={this.formRef}
|
|
>
|
|
<Item label="行为树" name="name">
|
|
<Input disabled onBlur={this.handleSubmit} />
|
|
</Item>
|
|
<Item label="说明" name="desc">
|
|
<Input onBlur={this.handleSubmit} />
|
|
</Item>
|
|
{/* <Item>
|
|
<Button type='ghost' onClick={this.handleRemoveTree}>删除</Button>
|
|
</Item> */}
|
|
</Form>
|
|
</Card>
|
|
);
|
|
}
|
|
|
|
handleSubmit = () => {
|
|
const { model, onRenameTree, onChangeTreeDesc } = this.props;
|
|
const name = this.formRef.current.getFieldValue("name");
|
|
const desc = this.formRef.current.getFieldValue("desc");
|
|
if (name != this.name) {
|
|
console.log("change name", name);
|
|
this.name = name;
|
|
model.name = name;
|
|
onRenameTree(name);
|
|
}
|
|
if (desc != this.desc) {
|
|
console.log("change desc", desc);
|
|
this.desc = desc;
|
|
model.desc = desc;
|
|
onChangeTreeDesc(desc);
|
|
}
|
|
}
|
|
|
|
handleRemoveTree = () => {
|
|
this.props.onRemoveTree();
|
|
}
|
|
}
|