class VariableForm extends HTMLElement { constructor() { super(); this.attachShadow({ mode: 'open' }); this.mode = 'add'; this.interfaceData = null; } connectedCallback() { this.render(); this.addEventListeners(); } setMode(mode, data = null) { this.mode = mode; this.interfaceData = data; this.updateForm(); } show() { this.shadowRoot.querySelector('.form-dialog').style.display = 'block'; } hide() { this.shadowRoot.querySelector('.form-dialog').style.display = 'none'; } updateForm() { const form = this.shadowRoot.querySelector('form'); if (this.mode === 'edit' && this.interfaceData) { form.querySelector('[name="systemName"]').value = this.interfaceData.SystemName; form.querySelector('[name="productName"]').value = this.interfaceData.ProductName; form.querySelector('[name="ataName"]').value = this.interfaceData.ATAName; form.querySelector('[name="modelStructName"]').value = this.interfaceData.ModelStructName; form.querySelector('[name="interfaceName"]').value = this.interfaceData.InterfaceName; form.querySelector('[name="interfaceType"]').value = this.interfaceData.InterfaceType; form.querySelector('[name="interfaceOption"]').value = this.interfaceData.InterfaceOption; form.querySelector('[name="interfaceIsArray"]').checked = this.interfaceData.InterfaceIsArray; form.querySelector('[name="interfaceArraySize_1"]').value = this.interfaceData.InterfaceArraySize_1 || ''; form.querySelector('[name="interfaceArraySize_2"]').value = this.interfaceData.InterfaceArraySize_2 || ''; form.querySelector('[name="interfaceNotes"]').value = this.interfaceData.InterfaceNotes || ''; } else { form.reset(); form.querySelector('[name="systemName"]').value = 'XNSim'; form.querySelector('[name="productName"]').value = 'C909'; } } addEventListeners() { const form = this.shadowRoot.querySelector('form'); const closeBtn = this.shadowRoot.querySelector('.close-btn'); const cancelBtn = this.shadowRoot.querySelector('.cancel-btn'); form.addEventListener('submit', (e) => { e.preventDefault(); const formData = new FormData(form); const interfaceData = { SystemName: formData.get('systemName'), ProductName: formData.get('productName'), ATAName: formData.get('ataName'), ModelStructName: formData.get('modelStructName'), InterfaceName: formData.get('interfaceName'), InterfaceType: formData.get('interfaceType'), InterfaceOption: formData.get('interfaceOption'), InterfaceIsArray: formData.get('interfaceIsArray') === 'on', InterfaceArraySize_1: formData.get('interfaceArraySize_1') || null, InterfaceArraySize_2: formData.get('interfaceArraySize_2') || null, InterfaceNotes: formData.get('interfaceNotes') || null }; this.dispatchEvent(new CustomEvent('save-success', { detail: { mode: this.mode, ...interfaceData } })); this.hide(); }); closeBtn.addEventListener('click', () => this.hide()); cancelBtn.addEventListener('click', () => this.hide()); } render() { this.shadowRoot.innerHTML = `