UPDATE: VERSION-20260314
This commit is contained in:
@@ -19,7 +19,7 @@
|
||||
<div class="ks-model-builder-content" style="width: calc(100% - 250px);">
|
||||
<div class="ks-model-builder-actions">
|
||||
<a-space>
|
||||
<a-button v-if="graph && currentBehaviorTree" class="ks-model-builder-save" size="small" @click="handleSave">
|
||||
<a-button v-if="graph && currentScenario" class="ks-model-builder-save" size="small" @click="handleSave">
|
||||
<CheckOutlined />
|
||||
<span>保存</span>
|
||||
</a-button>
|
||||
@@ -51,7 +51,8 @@ import { CheckCircleOutlined, CheckOutlined, RollbackOutlined, SaveOutlined } fr
|
||||
import { Wrapper } from '@/components/wrapper';
|
||||
import { safePreventDefault, safeStopPropagation } from '@/utils/event';
|
||||
import Header from '../header.vue';
|
||||
import type { BehaviorTree, NodeDragTemplate, NodeTemplate } from '../types';
|
||||
|
||||
import type { currentScenario, NodeDragTemplate, NodeTemplate } from '../types';
|
||||
import type { GraphTaskElement, NodeGraph } from '../builder/element';
|
||||
import { useGraphCanvas } from '../builder/hooks';
|
||||
import { registerNodeElement } from '../builder/register';
|
||||
@@ -59,6 +60,7 @@ import { createLineOptions } from '../builder/line';
|
||||
import { createTree, findOneTreeById, updateTree } from '../designer/api';
|
||||
import { createGraphTaskElement, hasElements, hasRootElementNode, resolveNodeGraph } from '../builder/utils';
|
||||
import { createGraphTaskElementFromTemplate } from '../utils/node';
|
||||
|
||||
import PlatformCard from './platform-card.vue';
|
||||
import NodesCard from './nodes-card.vue';
|
||||
|
||||
@@ -85,7 +87,7 @@ export default defineComponent({
|
||||
const draggedNodeData = ref<NodeDragTemplate | null>(null);
|
||||
const isDraggingOver = ref(false);
|
||||
const currentTreeEditing = ref<boolean>(false);
|
||||
const currentBehaviorTree = ref<BehaviorTree | null>(null);
|
||||
const currentScenario = ref<currentScenario | null>(null);
|
||||
const currentNodeGraph = ref<NodeGraph | null>(null);
|
||||
const selectedModelNode = ref<Node<NodeProperties> | null>(null);
|
||||
const selectedNodeTaskElement = ref<GraphTaskElement | null>(null);
|
||||
@@ -142,7 +144,7 @@ export default defineComponent({
|
||||
isDraggingOver.value = false;
|
||||
currentTreeEditing.value = false;
|
||||
|
||||
if (!currentBehaviorTree.value) {
|
||||
if (!currentScenario.value) {
|
||||
message.error('请先选择或者创建行为树.');
|
||||
return;
|
||||
}
|
||||
@@ -191,7 +193,7 @@ export default defineComponent({
|
||||
}
|
||||
};
|
||||
|
||||
const handleSelectTree = (tree: BehaviorTree) => {
|
||||
const handleSelectTree = (tree: currentScenario) => {
|
||||
console.info('handleSelectTree', tree);
|
||||
findOneTreeById(tree.id).then(r => {
|
||||
if (r.data) {
|
||||
@@ -207,7 +209,7 @@ export default defineComponent({
|
||||
edges: [],
|
||||
};
|
||||
}
|
||||
currentBehaviorTree.value = {
|
||||
currentScenario.value = {
|
||||
...r.data,
|
||||
graph: nodeGraph,
|
||||
};
|
||||
@@ -227,19 +229,19 @@ export default defineComponent({
|
||||
console.error('clear cells error, cause:', e);
|
||||
}
|
||||
setTimeout(() => {
|
||||
if (currentBehaviorTree.value?.graph && graph.value) {
|
||||
if (currentBehaviorTree.value?.graph.nodes) {
|
||||
currentBehaviorTree.value?.graph.nodes.forEach(ele => {
|
||||
if (currentScenario.value?.graph && graph.value) {
|
||||
if (currentScenario.value?.graph.nodes) {
|
||||
currentScenario.value?.graph.nodes.forEach(ele => {
|
||||
const node = createGraphTaskElement(ele as GraphTaskElement);
|
||||
console.info('create node: ', ele);
|
||||
// 将节点添加到画布
|
||||
graph.value?.addNode(node as Node);
|
||||
});
|
||||
}
|
||||
if (currentBehaviorTree.value?.graph.edges) {
|
||||
if (currentScenario.value?.graph.edges) {
|
||||
// 然后添加所有边,确保包含桩点信息
|
||||
setTimeout(() => {
|
||||
currentBehaviorTree.value?.graph.edges.forEach(edgeData => {
|
||||
currentScenario.value?.graph.edges.forEach(edgeData => {
|
||||
graph.value?.addEdge({
|
||||
...edgeData,
|
||||
...createLineOptions(),
|
||||
@@ -253,7 +255,7 @@ export default defineComponent({
|
||||
};
|
||||
|
||||
const handleCreateTree = () => {
|
||||
currentBehaviorTree.value = {
|
||||
currentScenario.value = {
|
||||
id: 0,
|
||||
name: '行为树',
|
||||
description: null,
|
||||
@@ -296,7 +298,7 @@ export default defineComponent({
|
||||
handleGraphEvent('blank:click', () => {
|
||||
selectedModelNode.value = null;
|
||||
selectedNodeTaskElement.value = null;
|
||||
currentTreeEditing.value = null !== currentBehaviorTree.value;
|
||||
currentTreeEditing.value = null !== currentScenario.value;
|
||||
});
|
||||
|
||||
handleGraphEvent('node:click', (args: any) => {
|
||||
@@ -348,12 +350,12 @@ export default defineComponent({
|
||||
const handleSave = () => {
|
||||
const graphData: NodeGraph = resolveNodeGraph(graph.value as Graph);
|
||||
console.info('handleSave', graphData);
|
||||
if (!currentBehaviorTree.value) {
|
||||
if (!currentScenario.value) {
|
||||
message.error('当前决策树不存在');
|
||||
return;
|
||||
}
|
||||
const newTree: BehaviorTree = {
|
||||
...currentBehaviorTree.value,
|
||||
const newTree: currentScenario = {
|
||||
...currentScenario.value,
|
||||
graph: graphData,
|
||||
xmlContent: JSON.stringify(graphData),
|
||||
};
|
||||
@@ -366,7 +368,7 @@ export default defineComponent({
|
||||
return;
|
||||
}
|
||||
let res = null;
|
||||
if (currentBehaviorTree.value.id > 0) {
|
||||
if (currentScenario.value.id > 0) {
|
||||
res = createTree(newTree);
|
||||
} else {
|
||||
res = updateTree(newTree);
|
||||
@@ -404,7 +406,7 @@ export default defineComponent({
|
||||
treesCardRef,
|
||||
handleCreateTree,
|
||||
currentTreeEditing,
|
||||
currentBehaviorTree,
|
||||
currentScenario,
|
||||
currentNodeGraph,
|
||||
selectedNodeTaskElement,
|
||||
selectedModelNode,
|
||||
|
||||
Reference in New Issue
Block a user