Test and deploy / test-and-deploy (push) Successful in 1m34s
New plan reset the form correctly but left the Plans drawer open over
it, so the reset was invisible until the user closed the drawer
themselves. Now closes it immediately, matching selectPlan().
Also adds a delete button per plan in the Plans drawer (server route
already existed) - deleting the currently open plan resets to a fresh
blank one, matching New plan.
Why-panel teaching callouts ("WHY CULTIVAR SETS THE CLOCK" etc.) now
default collapsed instead of wall-to-wall expanded on first load, with
an "Expand all" button in the header on both the planner and cupping
pages. Persistence flips from tracking collapsed-vs-default-open to
expanded-vs-default-closed to match.
Co-Authored-By: Claude Sonnet 5 <[email protected]>
43 lines
1.4 KiB
JavaScript
43 lines
1.4 KiB
JavaScript
// Shared teaching-layer collapse memory for every page that uses `.why-panel` (`<details>`
|
|
// with a `data-why` id): the planner and the cupping session view. One localStorage key across
|
|
// both so a user's choices carry over between pages.
|
|
//
|
|
// Panels are collapsed by default (see index.html/cupping.html) so the form isn't wall-to-wall
|
|
// explanatory text on first load; this tracks which ones a user has explicitly opened, rather
|
|
// than which they've closed, so it stays meaningful against a closed-by-default baseline.
|
|
const WHY_EXPANDED_KEY = "roastPlannerWhyExpanded.v1";
|
|
|
|
export function wireWhyPanels() {
|
|
let expanded;
|
|
try {
|
|
expanded = new Set(JSON.parse(localStorage.getItem(WHY_EXPANDED_KEY)) || []);
|
|
} catch {
|
|
expanded = new Set();
|
|
}
|
|
const persist = () => {
|
|
try {
|
|
localStorage.setItem(WHY_EXPANDED_KEY, JSON.stringify([...expanded]));
|
|
} catch {
|
|
/* unavailable storage */
|
|
}
|
|
};
|
|
|
|
const panels = [...document.querySelectorAll(".why-panel")];
|
|
for (const panel of panels) {
|
|
if (expanded.has(panel.dataset.why)) panel.open = true;
|
|
panel.addEventListener("toggle", () => {
|
|
if (panel.open) expanded.add(panel.dataset.why);
|
|
else expanded.delete(panel.dataset.why);
|
|
persist();
|
|
});
|
|
}
|
|
|
|
document.getElementById("btn-expand-why")?.addEventListener("click", () => {
|
|
for (const panel of panels) {
|
|
panel.open = true;
|
|
expanded.add(panel.dataset.why);
|
|
}
|
|
persist();
|
|
});
|
|
}
|