@@ -13,7 +13,7 @@
|
|||||||
<TressCard
|
<TressCard
|
||||||
ref="treesCardRef"
|
ref="treesCardRef"
|
||||||
:scenarioId="currentScenarioId"
|
:scenarioId="currentScenarioId"
|
||||||
:platformId="currentPlatformId"
|
:treeId="currentTreeId"
|
||||||
@create-tree="handleCreateTree"
|
@create-tree="handleCreateTree"
|
||||||
@select-tree="handleSelectTree"
|
@select-tree="handleSelectTree"
|
||||||
/>
|
/>
|
||||||
@@ -128,6 +128,7 @@ export default defineComponent({
|
|||||||
const nodeCommands = ref<NodeCommand[]>([])
|
const nodeCommands = ref<NodeCommand[]>([])
|
||||||
const currentScenarioId = ref<number | undefined>();
|
const currentScenarioId = ref<number | undefined>();
|
||||||
const currentPlatformId = ref<number | null>(null);
|
const currentPlatformId = ref<number | null>(null);
|
||||||
|
const currentTreeId = ref<number | null>(null);
|
||||||
const fromScenarioPage = ref<boolean>(false);
|
const fromScenarioPage = ref<boolean>(false);
|
||||||
|
|
||||||
const {
|
const {
|
||||||
@@ -326,12 +327,35 @@ export default defineComponent({
|
|||||||
selectedModelNode.value = null;
|
selectedModelNode.value = null;
|
||||||
selectedNodeTaskElement.value = null;
|
selectedNodeTaskElement.value = null;
|
||||||
loadSubPlatforms(currentPlatformId.value);
|
loadSubPlatforms(currentPlatformId.value);
|
||||||
console.log('currentBehaviorTree.value: ', tree);
|
|
||||||
|
|
||||||
nextTick(() => {
|
nextTick(() => {
|
||||||
initGraph();
|
initGraph();
|
||||||
console.log('initGraphTree: ', tree);
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
const loadTargetTree = (tree: BehaviorTree) => {
|
||||||
|
currentTreeId.value = tree.id;
|
||||||
|
resolveBehaviorTreeGraph(tree.id, tree.xmlContent).then(nodeGraph => {
|
||||||
|
applyBehaviorTree({
|
||||||
|
...tree,
|
||||||
|
graph: nodeGraph,
|
||||||
|
});
|
||||||
|
}).catch(error => {
|
||||||
|
console.error('resolve tree graph error:', error);
|
||||||
|
message.error('加载行为树图失败');
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
const handleCreateTree = () => {
|
||||||
|
destroyGraph();
|
||||||
|
|
||||||
|
selectedModelNode.value = null;
|
||||||
|
selectedNodeTaskElement.value = null;
|
||||||
|
subPlatforms.value = []; // 重置下属平台
|
||||||
|
|
||||||
|
initGraphConfig();
|
||||||
|
nextTick(() => {
|
||||||
|
initGraph();
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -339,15 +363,7 @@ export default defineComponent({
|
|||||||
console.info('handleSelectTree', tree);
|
console.info('handleSelectTree', tree);
|
||||||
findOneTreeById(tree.id).then(r => {
|
findOneTreeById(tree.id).then(r => {
|
||||||
if (r.data) {
|
if (r.data) {
|
||||||
resolveBehaviorTreeGraph(r.data.id, r.data.xmlContent).then(nodeGraph => {
|
loadTargetTree(r.data);
|
||||||
applyBehaviorTree({
|
|
||||||
...r.data,
|
|
||||||
graph: nodeGraph,
|
|
||||||
});
|
|
||||||
}).catch(error => {
|
|
||||||
console.error('resolve tree graph error:', error);
|
|
||||||
message.error('加载行为树图失败');
|
|
||||||
});
|
|
||||||
} else {
|
} else {
|
||||||
message.error(r.msg ?? '行为树不存在.');
|
message.error(r.msg ?? '行为树不存在.');
|
||||||
}
|
}
|
||||||
@@ -381,18 +397,7 @@ export default defineComponent({
|
|||||||
currentScenarioId.value = scenario.id;
|
currentScenarioId.value = scenario.id;
|
||||||
};
|
};
|
||||||
|
|
||||||
const handleCreateTree = () => {
|
|
||||||
destroyGraph();
|
|
||||||
initGraphConfig();
|
|
||||||
|
|
||||||
selectedModelNode.value = null;
|
|
||||||
selectedNodeTaskElement.value = null;
|
|
||||||
subPlatforms.value = []; // 重置下属平台
|
|
||||||
|
|
||||||
nextTick(() => {
|
|
||||||
initGraph();
|
|
||||||
});
|
|
||||||
};
|
|
||||||
|
|
||||||
// 初始化X6画布
|
// 初始化X6画布
|
||||||
const initGraph = () => {
|
const initGraph = () => {
|
||||||
@@ -404,9 +409,7 @@ export default defineComponent({
|
|||||||
try {
|
try {
|
||||||
graph.value = createCanvas(canvas.value);
|
graph.value = createCanvas(canvas.value);
|
||||||
console.log('画布初始化成功');
|
console.log('画布初始化成功');
|
||||||
if (!currentBehaviorTree.value) {
|
|
||||||
initGraphConfig();
|
|
||||||
}
|
|
||||||
createElements();
|
createElements();
|
||||||
|
|
||||||
graph.value?.on('edge:click', (args: any) => {
|
graph.value?.on('edge:click', (args: any) => {
|
||||||
@@ -457,22 +460,23 @@ export default defineComponent({
|
|||||||
console.info('init');
|
console.info('init');
|
||||||
|
|
||||||
nextTick(() => {
|
nextTick(() => {
|
||||||
|
initGraphConfig();
|
||||||
initGraph();
|
initGraph();
|
||||||
window.addEventListener('resize', handleResize);
|
|
||||||
console.log('节点挂载完成');
|
console.log('节点挂载完成');
|
||||||
|
|
||||||
|
window.addEventListener('resize', handleResize);
|
||||||
|
|
||||||
resolveQuery();
|
resolveQuery();
|
||||||
|
|
||||||
if (currentPlatformId.value) {
|
if (currentPlatformId.value) {
|
||||||
findOneTreeByPlatformId(currentPlatformId.value).then(r => {
|
findOneTreeByPlatformId(currentPlatformId.value).then(r => {
|
||||||
if (r.data) {
|
if (r.data) {
|
||||||
handleSelectTree(r.data);
|
loadTargetTree(r.data);
|
||||||
} else {
|
} else {
|
||||||
handleCreateTree();
|
handleCreateTree();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
currentPlatformId.value = null;
|
|
||||||
handleCreateTree();
|
handleCreateTree();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
@@ -544,6 +548,7 @@ export default defineComponent({
|
|||||||
nodeCommands,
|
nodeCommands,
|
||||||
currentScenarioId,
|
currentScenarioId,
|
||||||
currentPlatformId,
|
currentPlatformId,
|
||||||
|
currentTreeId,
|
||||||
platforms,
|
platforms,
|
||||||
subPlatforms,
|
subPlatforms,
|
||||||
scenariosCardRef,
|
scenariosCardRef,
|
||||||
|
|||||||
@@ -18,7 +18,7 @@
|
|||||||
</div>
|
</div>
|
||||||
<a-list :data-source="behaviorTrees || []" size="small" style="min-height: 25vh">
|
<a-list :data-source="behaviorTrees || []" size="small" style="min-height: 25vh">
|
||||||
<template #renderItem="{ item }">
|
<template #renderItem="{ item }">
|
||||||
<a-list-item :class="{ 'ks-item-selected': platformId === item.id || selectedId === item.id }" @click="()=> handleSelect(item)">
|
<a-list-item :class="{ 'ks-item-selected': treeId === item.id }" @click="()=> handleSelect(item)">
|
||||||
<a-flex>
|
<a-flex>
|
||||||
<a-tooltip placement="bottom">
|
<a-tooltip placement="bottom">
|
||||||
<template #title>
|
<template #title>
|
||||||
@@ -67,7 +67,7 @@ import { substring } from '@/utils/strings';
|
|||||||
export default defineComponent({
|
export default defineComponent({
|
||||||
props: {
|
props: {
|
||||||
scenarioId: Number as PropType<number | undefined>,
|
scenarioId: Number as PropType<number | undefined>,
|
||||||
platformId: Number as PropType<number | null>,
|
treeId: Number as PropType<number | null>,
|
||||||
},
|
},
|
||||||
emits: ['select-tree', 'create-tree'],
|
emits: ['select-tree', 'create-tree'],
|
||||||
components: {
|
components: {
|
||||||
@@ -87,7 +87,6 @@ export default defineComponent({
|
|||||||
});
|
});
|
||||||
const activeKey = ref<number>(1);
|
const activeKey = ref<number>(1);
|
||||||
const totalTress = ref<number>(0);
|
const totalTress = ref<number>(0);
|
||||||
const selectedId = ref<number | null>(null);
|
|
||||||
|
|
||||||
watch(
|
watch(
|
||||||
() => props.scenarioId,
|
() => props.scenarioId,
|
||||||
@@ -99,17 +98,7 @@ export default defineComponent({
|
|||||||
}
|
}
|
||||||
behaviorTreeQuery.value.pageNum = 1;
|
behaviorTreeQuery.value.pageNum = 1;
|
||||||
behaviorTreeQuery.value.scenarioId = props.scenarioId;
|
behaviorTreeQuery.value.scenarioId = props.scenarioId;
|
||||||
loadTress(() => {
|
loadTress();
|
||||||
if (props.platformId) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
// 默认选中第一个行为树
|
|
||||||
const selectedTree = behaviorTrees.value[0];
|
|
||||||
if (selectedTree) {
|
|
||||||
selectedId.value = selectedTree.id;
|
|
||||||
emit('select-tree', selectedTree);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
},
|
},
|
||||||
{ immediate: true }
|
{ immediate: true }
|
||||||
);
|
);
|
||||||
@@ -152,7 +141,6 @@ export default defineComponent({
|
|||||||
];
|
];
|
||||||
|
|
||||||
const handleSelect = (record: BehaviorTree) => {
|
const handleSelect = (record: BehaviorTree) => {
|
||||||
selectedId.value = record.id;
|
|
||||||
emit('select-tree', record);
|
emit('select-tree', record);
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -171,7 +159,6 @@ export default defineComponent({
|
|||||||
totalTress,
|
totalTress,
|
||||||
substring,
|
substring,
|
||||||
activeKey,
|
activeKey,
|
||||||
selectedId,
|
|
||||||
behaviorTrees,
|
behaviorTrees,
|
||||||
behaviorTreeQuery,
|
behaviorTreeQuery,
|
||||||
loadTress,
|
loadTress,
|
||||||
|
|||||||
Reference in New Issue
Block a user