// Battery widget dialog: display-mode setting and the rendered preview. // Not a page-load script -- frame_layout.js fetches this widget's dialog // HTML fragment, injects it into the shared , points // window.FRAME_API at this specific widget // (/api/frames/{id}/widgets/{widget_id}), then calls initBatteryDialog(). function loadBatteryPreview() { document.getElementById('battery-preview').src = `${window.FRAME_API}/preview/battery?_=${Date.now()}`; } function initBatteryDialog() { document.getElementById('battery-config-form').addEventListener('submit', async (e) => { e.preventDefault(); const body = new URLSearchParams({ battery_mode: document.getElementById('battery_mode').value, }); try { const resp = await fetch(`${window.FRAME_API}/config`, { method: 'POST', headers: { 'Content-Type': 'application/x-www-form-urlencoded' }, body, }); if (!resp.ok) throw new Error(await apiError(resp)); showStatus(true, 'Saved.'); loadBatteryPreview(); } catch (e) { showStatus(false, e.message); } }); document.getElementById('battery-preview-refresh').addEventListener('click', loadBatteryPreview); loadBatteryPreview(); initBorderFields(); } function closeBatteryDialog() { // Nothing to tear down -- no poll interval, no upload state. }