From eabdba2602255bec65146c8242e71fd696a8dddc Mon Sep 17 00:00:00 2001 From: Kirigaya <1193466151@qq.com> Date: Fri, 27 Dec 2024 20:09:56 +0800 Subject: [PATCH] =?UTF-8?q?=E5=8F=96=E6=B6=88=E6=8B=96=E6=8B=BD=E7=9A=84?= =?UTF-8?q?=E5=AE=9E=E7=8E=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/App.vue | 35 +---------------------------------- src/hook/render/cell.js | 22 ++++++++++++++++------ src/hook/render/index.js | 3 ++- src/hook/render/port.js | 4 +++- 4 files changed, 22 insertions(+), 42 deletions(-) diff --git a/src/App.vue b/src/App.vue index 16a56a5..e007dc7 100644 --- a/src/App.vue +++ b/src/App.vue @@ -13,8 +13,6 @@ import { setDefaultCss } from './hook/css'; import { useI18n } from 'vue-i18n'; const { t } = useI18n(); -import { AvoidLib } from '@/lib/avoid'; - import { globalLookup, globalSetting } from './hook/global'; import { ElLoading } from 'element-plus'; @@ -39,38 +37,7 @@ onMounted(async () => { }); // 初始化载入 netlist 的 json 文件 - const [ netJson, skinBinary ] = await window.readNetFile(); - - // 载入 avoid lib - const wasmBinaryResponse = await fetch(window.avoidWasm); - const wasmBinary = await wasmBinaryResponse.arrayBuffer(); - await AvoidLib.load({ wasmBinary }); - const Avoid = AvoidLib.getInstance(); - globalLookup.Avoid = Avoid; - - - const router = new Avoid.Router(Avoid.PolyLineRouting); - const srcPt = new Avoid.Point(1.2, 0.5); - const dstPt = new Avoid.Point(1.5, 4); - const srcConnEnd = new Avoid.ConnEnd(srcPt); - const dstConnEnd = new Avoid.ConnEnd(dstPt); - const connRef = new Avoid.ConnRef(router); - - - function connCallback(connRefPtr) { - const connRef = Avoid.wrapPointer(connRefPtr, Avoid.ConnRef); - console.log(`Connector ${connRef.id()} needs rerouting!`); - const route = connRef.displayRoute(); - console.log('New path: '); - for (let i = 0; i < route.size(); i++) { - console.log(`(${route.get_ps(i).x}, ${route.get_ps(i).y})`); - } - } - - connRef.setCallback(connCallback, connRef); - // Force inital callback: - router.processTransaction(); - + const [ netJson, skinBinary ] = await window.readNetFile(); const render = globalLookup.netlistRender; const skinManager = globalLookup.skinManager; diff --git a/src/hook/render/cell.js b/src/hook/render/cell.js index 20eb19f..506f90b 100644 --- a/src/hook/render/cell.js +++ b/src/hook/render/cell.js @@ -1,5 +1,5 @@ import * as d3 from 'd3'; -import { globalSetting } from '../global'; +import { globalLookup, globalSetting } from '../global'; import { NetlistRender } from '.'; import { LAYOUT_CONSTANT, makeEdgeId } from './layout'; @@ -63,7 +63,9 @@ export class CellRender { .each(function (data) { const cellSelection = d3.select(this); const manager = _this.createDataManager(cellSelection, data); - registerDragEvent(manager, rootRender); + + // TODO: 实现拖拽 + // registerDragEvent(manager, rootRender); }); if (globalSetting.renderAnimation) { @@ -149,11 +151,15 @@ async function dragStart(event, manager, rootRender) { const nodes = []; const edges = []; + const Avoid = globalLookup.Avoid; + const layoutOptions = { // node 固定不动 - 'org.eclipse.elk.stress.fixed': true, + 'elk.stress.fixed': true, // node 的 port 固定不动 - 'org.eclipse.elk.portConstraints': 'FIXED_POS' + 'elk.portConstraints': 'FIXED_POS', + // 从左到右 + 'elk.direction': 'RIGHT' }; // 添加自己的节点 @@ -237,6 +243,7 @@ async function dragStart(event, manager, rootRender) { nodes.push(cellNode); + context.cellNode = cellNode; context.elkGraph.children = nodes; context.elkGraph.edges = edges; context.elkGraph.layoutOptions = { @@ -266,8 +273,11 @@ async function dragged(event, manager, rootRender) { // 根据最小拓扑图,提取出关键点,重新计算布局 const context = manager.dragContext; const elkGraph = context.elkGraph; - const computedLayout = await rootRender.elk.layout(elkGraph); - console.log(computedLayout); + const currentNode = elkGraph.children.at(-1); + currentNode.x = event.x; + currentNode.y = event.y; + + // const computedLayout = await rootRender.elk.layout(elkGraph); } /** diff --git a/src/hook/render/index.js b/src/hook/render/index.js index 5f5ce67..14c0839 100644 --- a/src/hook/render/index.js +++ b/src/hook/render/index.js @@ -32,6 +32,7 @@ export class NetlistRender { 'elk.spacing.nodeNode': 35, 'elk.layered.layering.strategy': 'NETWORK_SIMPLEX', 'elk.algorithm': 'layered', + 'elk.direction': 'RIGHT', 'elk.partitioning.activate': true } }; @@ -114,7 +115,7 @@ export class NetlistRender { const start = performance.now(); const layoutGraph = await this.elk.layout(graph); const timecost = (performance.now() - start).toFixed(3); - + pinkLog(`布局计算耗时 ${timecost} ms`); return layoutGraph; diff --git a/src/hook/render/port.js b/src/hook/render/port.js index 449cdde..02bbd88 100644 --- a/src/hook/render/port.js +++ b/src/hook/render/port.js @@ -94,7 +94,9 @@ export class PortRender { .each(function (data) { const portSelection = d3.select(this); const manager = _this.createDataManager(portSelection, data); - registerDragEvent(manager, rootRender); + + // TODO: 实现拖拽 + // registerDragEvent(manager, rootRender); }); this.selections = portSelections;