From 2f276fcba24cd401e36f10bc9159b6623897a237 Mon Sep 17 00:00:00 2001 From: Excellencedev Date: Fri, 10 Oct 2025 02:28:42 +0100 Subject: [PATCH 1/2] Fix issue --- .../primitive-components/Port/Port.ts | 22 +++++++++++++++---- ...ematic-rect-with-traces-schematic.snap.svg | 7 +++--- .../schematic-rect-with-traces.test.tsx | 10 +++++++-- 3 files changed, 30 insertions(+), 9 deletions(-) diff --git a/lib/components/primitive-components/Port/Port.ts b/lib/components/primitive-components/Port/Port.ts index 6d016b9e3..1e72fbb3d 100644 --- a/lib/components/primitive-components/Port/Port.ts +++ b/lib/components/primitive-components/Port/Port.ts @@ -316,14 +316,21 @@ export class Port extends PrimitiveComponent { doInitialSourceParentAttachment(): void { const { db } = this.root! - if (!this.parent?.source_component_id) { + let source_component_id = this.parent?.source_component_id + let current = this.parent + while (current && !source_component_id) { + current = current.parent + source_component_id = current?.source_component_id + } + + if (!source_component_id) { throw new Error( `${this.getString()} has no parent source component (parent: ${this.parent?.getString()})`, ) } db.source_port.update(this.source_port_id!, { - source_component_id: this.parent?.source_component_id!, + source_component_id: source_component_id!, subcircuit_id: this.getSubcircuit()?.subcircuit_id!, }) @@ -335,7 +342,14 @@ export class Port extends PrimitiveComponent { const { db } = this.root! const { matchedComponents } = this - if (!this.parent?.pcb_component_id) { + let pcb_component_id = this.parent?.pcb_component_id + let current = this.parent + while (current && !pcb_component_id) { + current = current.parent + pcb_component_id = current?.pcb_component_id + } + + if (!pcb_component_id) { throw new Error( `${this.getString()} has no parent pcb component, cannot render pcb_port (parent: ${this.parent?.getString()})`, ) @@ -366,7 +380,7 @@ export class Port extends PrimitiveComponent { const isBoardPinout = this._shouldIncludeInBoardPinout() const pcb_port = db.pcb_port.insert({ - pcb_component_id: this.parent?.pcb_component_id!, + pcb_component_id: pcb_component_id!, layers: this.getAvailablePcbLayers(), subcircuit_id: subcircuit?.subcircuit_id ?? undefined, pcb_group_id: this.getGroup()?.pcb_group_id ?? undefined, diff --git a/tests/components/primitive-components/__snapshots__/schematic-rect-with-traces-schematic.snap.svg b/tests/components/primitive-components/__snapshots__/schematic-rect-with-traces-schematic.snap.svg index 9e44428e4..0f88d3eba 100644 --- a/tests/components/primitive-components/__snapshots__/schematic-rect-with-traces-schematic.snap.svg +++ b/tests/components/primitive-components/__snapshots__/schematic-rect-with-traces-schematic.snap.svg @@ -1,4 +1,4 @@ --5,-7-5,-6-5,-5-5,-4-5,-3-5,-2-5,-1-5,0-5,1-5,2-4,-7-4,-6-4,-5-4,-4-4,-3-4,-2-4,-1-4,0-4,1-4,2-3,-7-3,-6-3,-5-3,-4-3,-3-3,-2-3,-1-3,0-3,1-3,2-2,-7-2,-6-2,-5-2,-4-2,-3-2,-2-2,-1-2,0-2,1-2,2-1,-7-1,-6-1,-5-1,-4-1,-3-1,-2-1,-1-1,0-1,1-1,20,-70,-60,-50,-40,-30,-20,-10,00,10,21,-71,-61,-51,-41,-31,-21,-11,01,11,22,-72,-62,-52,-42,-32,-22,-12,02,12,23,-73,-63,-53,-43,-33,-23,-13,03,13,24,-74,-64,-54,-44,-34,-24,-14,04,14,25,-75,-65,-55,-45,-35,-25,-15,05,15,26,-76,-66,-56,-46,-36,-26,-16,06,16,27,-77,-67,-57,-47,-37,-27,-17,07,17,2 \ No newline at end of file diff --git a/tests/components/primitive-components/schematic-rect-with-traces.test.tsx b/tests/components/primitive-components/schematic-rect-with-traces.test.tsx index 246e48e18..27d159dc4 100644 --- a/tests/components/primitive-components/schematic-rect-with-traces.test.tsx +++ b/tests/components/primitive-components/schematic-rect-with-traces.test.tsx @@ -1,13 +1,16 @@ import { test, expect } from "bun:test" import { getTestFixture } from "tests/fixtures/get-test-fixture" -test.skip("SchematicRect with traces", async () => { +test("SchematicRect with traces", async () => { const { circuit } = getTestFixture() circuit.add( - + { /> Date: Fri, 10 Oct 2025 02:35:07 +0100 Subject: [PATCH 2/2] Type error --- lib/components/primitive-components/Port/Port.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/components/primitive-components/Port/Port.ts b/lib/components/primitive-components/Port/Port.ts index 1e72fbb3d..036e561a6 100644 --- a/lib/components/primitive-components/Port/Port.ts +++ b/lib/components/primitive-components/Port/Port.ts @@ -334,7 +334,7 @@ export class Port extends PrimitiveComponent { subcircuit_id: this.getSubcircuit()?.subcircuit_id!, }) - this.source_component_id = this.parent?.source_component_id + this.source_component_id = source_component_id } doInitialPcbPortRender(): void {