class PumpCard extends HTMLElement { constructor() { super(); this.enabled = false; } connectedCallback() { this.innerHTML = `

Pump

DC pump switch
--

      
`; this.querySelector('#toggle').addEventListener('click', () => this.setPump(!this.enabled)); this.querySelector('#refresh').addEventListener('click', () => this.loadPump()); window.addEventListener('app:login', () => this.loadPump()); if (window.App && window.App.token()) this.loadPump(); } render(json) { this.enabled = !!json.enabled; this.querySelector('#state').textContent = this.enabled ? 'On' : 'Off'; this.querySelector('#dot').classList.toggle('on', this.enabled); this.querySelector('#toggle').textContent = this.enabled ? 'Turn off' : 'Turn on'; } async loadPump() { const text = await window.App.req('GET', '/api/pump'); this.querySelector('#out').textContent = text; try { const json = JSON.parse(text); if (json.success) this.render(json); } catch (error) {} } async setPump(enabled) { const text = await window.App.req('POST', '/api/pump', {enabled}); this.querySelector('#out').textContent = text; try { const json = JSON.parse(text); if (json.success) this.render(json); } catch (error) {} } } customElements.define('pump-card', PumpCard);