From ba9b45a43e1cc011c8197d7821149712cbb31790 Mon Sep 17 00:00:00 2001 From: igurielidze Date: Wed, 1 Apr 2026 19:20:45 +0400 Subject: [PATCH] Add EPC-specific bindings and fix EPC tag path EPC bindings: elements[0].stroke.paint (polyline) and elements[1].elements[1].fill.paint (icon inner path) get color. EPC tag path: Station/Emergency_Pull_Cord (not VFD/APF). Co-Authored-By: Claude Opus 4.6 (1M context) --- svelte-app/src/lib/export.ts | 2 +- svelte-app/src/lib/ignition-view.ts | 10 +++++++++- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/svelte-app/src/lib/export.ts b/svelte-app/src/lib/export.ts index 4201644..6d1c854 100644 --- a/svelte-app/src/lib/export.ts +++ b/svelte-app/src/lib/export.ts @@ -104,7 +104,7 @@ export function exportJSON() { const TAG_PATH_RULES: Array<{ pattern: RegExp; path: string }> = [ // VFD / EPC { pattern: /_VFD\d*$/i, path: 'VFD/APF' }, - { pattern: /_EPC\d*$/i, path: 'VFD/APF' }, + { pattern: /_EPC\d*$/i, path: 'Station/Emergency_Pull_Cord' }, // Sensors { pattern: /_TPE\d*$/i, path: 'Sensor/Tracking' }, { pattern: /_LPE\d*$/i, path: 'Sensor/Long_Range' }, diff --git a/svelte-app/src/lib/ignition-view.ts b/svelte-app/src/lib/ignition-view.ts index 2c3c02a..8d9270b 100644 --- a/svelte-app/src/lib/ignition-view.ts +++ b/svelte-app/src/lib/ignition-view.ts @@ -315,9 +315,17 @@ function generateElementBindings(elements: SvgElement[]): Record { // Sub-element fill bindings — varies by device type const isButton = /_(?:JR|S|SS|EN)\d/i.test(elName); const isDpm = /_DPM\d*/i.test(elName); + const isEpc = /_EPC\d*/i.test(elName); if (el.elements && el.elements.length > 0) { - if (isDpm) { + if (isEpc) { + // EPC: elements[0] is polyline (stroke.paint gets color), + // elements[1] is icon group (elements[1].elements[1].fill.paint gets color) + propConfig[`${prefix}.elements[0].stroke.paint`] = fillPaintBinding(n); + if (el.elements.length > 1 && el.elements[1].elements && el.elements[1].elements.length > 1) { + propConfig[`${prefix}.elements[1].elements[1].fill.paint`] = fillPaintBinding(n); + } + } else if (isDpm) { // DPM: only elements[1] gets color binding (the black triangle) // elements[0] stays as-is, elements[2] is transparent if (el.elements.length > 1) {