Initial commit

This commit is contained in:
libertyspy
2026-02-08 16:44:50 +08:00
parent c9d5c38b52
commit a246c88341
6 changed files with 59 additions and 216 deletions

View File

@@ -17,7 +17,7 @@
<div class="ks-model-builder-content">
<div class="ks-model-builder-actions">
<a-space>
<a-tooltip v-if="graph && currentTreeModelGraph" placement="top">
<a-tooltip v-if="graph && currentNodeGraph" placement="top">
<template #title>
保存
</template>
@@ -68,7 +68,7 @@ import Header from './header.vue';
import Properties from './properties.vue';
import { useGraphCanvas } from './builder/hooks';
import { registerNodeElement } from './builder/register';
import type { NodeGraph, NodeTemplate, SettingTaskNodeElement, TreeModel, TreeModelGraph } from './types';
import type { BehaviorTree, NodeGraph, NodeTemplate, SettingTaskNodeElement, TreeModel, TreeModelGraph } from './types';
import { createTree, findOneTreeById, updateTree } from './api';
import { createTaskNodeElement, createTaskNodeElementFromTemplate, hasElements, hasRootElementNode, resolveNodeGraph } from './utils/node';
import TressCard from './trees-card.vue';
@@ -97,7 +97,7 @@ export default defineComponent({
const currentZoom = ref<number>(1);
const draggedNodeData = ref<NodeTemplate | null>(null);
const isDraggingOver = ref(false);
const currentTreeModelGraph = ref<TreeModelGraph | null>(null);
const currentNodeGraph = ref<NodeGraph | null>(null);
const selectedModelNode = ref<Node<NodeProperties> | null>(null);
const selectedNodeTaskElement = ref<SettingTaskNodeElement | null>(null);
const changed = ref<boolean>(false)
@@ -151,7 +151,7 @@ export default defineComponent({
safeStopPropagation(e);
isDraggingOver.value = false;
if (!currentTreeModelGraph.value) {
if (!currentNodeGraph.value) {
message.error('请先选择或者创建行为树.');
return;
}
@@ -201,19 +201,19 @@ export default defineComponent({
};
const createElements = () => {
if(graph.value && currentTreeModelGraph.value){
if(graph.value && currentNodeGraph.value){
graph.value.clearCells();
setTimeout(()=> {
nextTick(()=> {
try{
if (currentTreeModelGraph.value && !currentTreeModelGraph.value?.graph){
currentTreeModelGraph.value.graph = {
if (currentNodeGraph.value && !currentNodeGraph.value?.graph){
currentNodeGraph.value.graph = {
nodes: [],
edges: [],
}
}
const nodes = currentTreeModelGraph.value?.graph?.nodes ?? [];
const edges = currentTreeModelGraph.value?.graph?.edges ?? [];
const nodes = currentNodeGraph.value?.graph?.nodes ?? [];
const edges = currentNodeGraph.value?.graph?.edges ?? [];
nodes.forEach(n=> {
const node = createTaskNodeElement(n);
@@ -297,7 +297,7 @@ export default defineComponent({
console.error('handleSelectTree', treeModel);
findOneTreeById(treeModel.id).then(r => {
if (r.data) {
currentTreeModelGraph.value = r.data;
currentNodeGraph.value = r.data;
createElements();
} else {
message.error(r.message ?? '行为树不存在.');
@@ -308,16 +308,16 @@ export default defineComponent({
const handleSave = () => {
const graphData: NodeGraph = resolveNodeGraph(graph.value as Graph);
console.info('handleSave', graphData);
if (!currentTreeModelGraph.value) {
if (!currentNodeGraph.value) {
message.error('当前决策树不存在');
return;
}
const newModel: TreeModelGraph = {
...currentTreeModelGraph.value,
...currentNodeGraph.value,
graph: graphData,
};
let res = null;
if (currentTreeModelGraph.value.id > 0) {
if (currentNodeGraph.value.id > 0) {
res = createTree(newModel);
} else {
res = updateTree(newModel);
@@ -351,7 +351,7 @@ export default defineComponent({
});
return {
currentTreeModelGraph,
currentNodeGraph,
selectedNodeTaskElement,
selectedModelNode,
graph,