style(ui): presets patterns and layout tweaks

Made-with: Cursor
This commit is contained in:
2026-04-19 23:28:08 +12:00
parent 35730b36f0
commit 5f9ff9bcc9
3 changed files with 25 additions and 12 deletions

View File

@@ -720,6 +720,7 @@ document.addEventListener('DOMContentLoaded', () => {
// Load pattern definitions from pattern.json
let patternsPayload = null;
let response = await fetch('/patterns/definitions', {
cache: 'no-store',
headers: { Accept: 'application/json' },
});
if (response.ok) {
@@ -730,6 +731,7 @@ document.addEventListener('DOMContentLoaded', () => {
if (!Object.keys(normalized).length) {
// Fallback when definitions route is unavailable or returns an empty map.
response = await fetch('/patterns', {
cache: 'no-store',
headers: { Accept: 'application/json' },
});
if (!response.ok) {
@@ -1341,26 +1343,27 @@ document.addEventListener('DOMContentLoaded', () => {
throw new Error('Failed to save preset');
}
// Same device targeting as Try: zone tab supplies names → /presets/push gets targets + select.
const section = document.querySelector('.presets-section[data-zone-id]');
const deviceNames = tabDeviceNamesFromSection(section);
// Use saved preset from server response for sending
const saved = await response.json().catch(() => null);
if (saved && typeof saved === 'object') {
if (currentEditId) {
// PUT returns the preset object directly; use the existing ID
// Save & Send should not force-select the preset on devices.
await sendPresetViaEspNow(currentEditId, saved, [], true, false);
await sendPresetViaEspNow(currentEditId, saved, deviceNames, true, false);
} else {
// POST returns { id: preset }
const entries = Object.entries(saved);
if (entries.length > 0) {
const [newId, presetData] = entries[0];
// Save & Send should not force-select the preset on devices.
await sendPresetViaEspNow(newId, presetData, [], true, false);
await sendPresetViaEspNow(newId, presetData, deviceNames, true, false);
}
}
} else {
// Fallback: send what we just built
// Save & Send should not force-select the preset on devices.
await sendPresetViaEspNow(payload.name, payload, [], true, false);
await sendPresetViaEspNow(currentEditId || payload.name, payload, deviceNames, true, false);
}
await loadPresets();