add: DDS virtual component

This commit is contained in:
alivender
2025-05-11 14:41:38 +08:00
parent 6a786c1519
commit 91838ff632
8 changed files with 1722 additions and 26 deletions

View File

@@ -213,13 +213,12 @@ async function handleAddComponent(componentData: { type: string; name: string; p
index: 0
};
console.log('添加新组件:', newComponent);
console.log('添加新组件:', newComponent);
// 通过画布实例添加组件
if (canvasInstance && canvasInstance.getDiagramData && canvasInstance.setDiagramData) {
if (canvasInstance && canvasInstance.getDiagramData && canvasInstance.updateDiagramDataDirectly) {
const currentData = canvasInstance.getDiagramData();
currentData.parts.push(newComponent);
canvasInstance.setDiagramData(currentData);
canvasInstance.updateDiagramDataDirectly(currentData);
}
}
@@ -227,10 +226,9 @@ async function handleAddComponent(componentData: { type: string; name: string; p
async function handleAddTemplate(templateData: { id: string; name: string; template: any }) {
console.log('添加模板:', templateData);
console.log('=== 模板组件数量:', templateData.template?.parts?.length || 0);
// 获取画布实例
// 获取画布实例
const canvasInstance = diagramCanvas.value as any;
if (!canvasInstance || !canvasInstance.getDiagramData || !canvasInstance.setDiagramData) {
if (!canvasInstance || !canvasInstance.getDiagramData || !canvasInstance.updateDiagramDataDirectly) {
console.error('没有可用的画布实例添加模板');
return;
}
@@ -337,9 +335,8 @@ async function handleAddTemplate(templateData: { id: string; name: string; templ
// 添加到当前连接列表
currentData.connections.push(...newConnections);
}
// 更新图表数据
canvasInstance.setDiagramData(currentData);
// 更新图表数据
canvasInstance.updateDiagramDataDirectly(currentData);
console.log('=== 更新图表数据完成,新组件数量:', currentData.parts.length);
// 显示成功消息
@@ -459,7 +456,7 @@ function handleComponentDelete(componentId: string) {
// 更新组件属性的方法
function updateComponentProp(componentId: string, propName: string, value: any) {
const canvasInstance = diagramCanvas.value as any;
if (!canvasInstance || !canvasInstance.getDiagramData || !canvasInstance.setDiagramData) {
if (!canvasInstance || !canvasInstance.getDiagramData || !canvasInstance.updateDiagramDataDirectly) {
console.error('没有可用的画布实例进行属性更新');
return;
}
@@ -484,7 +481,7 @@ function updateComponentProp(componentId: string, propName: string, value: any)
part.attrs[propName] = value;
}
canvasInstance.setDiagramData(currentData);
canvasInstance.updateDiagramDataDirectly(currentData);
console.log(`更新组件${componentId}的属性${propName}为:`, value, typeof value);
}
}
@@ -492,7 +489,7 @@ function updateComponentProp(componentId: string, propName: string, value: any)
// 更新组件的直接属性
function updateComponentDirectProp(componentId: string, propName: string, value: any) {
const canvasInstance = diagramCanvas.value as any;
if (!canvasInstance || !canvasInstance.getDiagramData || !canvasInstance.setDiagramData) {
if (!canvasInstance || !canvasInstance.getDiagramData || !canvasInstance.updateDiagramDataDirectly) {
console.error('没有可用的画布实例进行属性更新');
return;
}
@@ -504,7 +501,7 @@ function updateComponentDirectProp(componentId: string, propName: string, value:
// @ts-ignore: 动态属性赋值
part[propName] = value;
canvasInstance.setDiagramData(currentData);
canvasInstance.updateDiagramDataDirectly(currentData);
console.log(`更新组件${componentId}的直接属性${propName}为:`, value, typeof value);
}
}