← back to Wallco Ai
wallco.ai · /compare view choice (specs/grid) now persists in localStorage[wallco-compare-view] · current view is saved on every load; if user later visits /compare?ids=… without an explicit view= param AND saved pref differs, page redirects via location.replace to honor the saved view; if URL has explicit view= or legacy grid=1, no override · Remove buttons preserve the active view (was dropping users back to specs after removing a design while in grid mode) · verified currentView=specs at /compare?ids=72,161, currentView=grid at /compare?ids=72,161&view=grid, 6 wiring refs total
38e639c902d3ba7c9bfd4644314198f81c4af7b5 · 2026-05-12 12:28:15 -0700 · SteveStudio2
Files touched
Diff
commit 38e639c902d3ba7c9bfd4644314198f81c4af7b5
Author: SteveStudio2 <stevestudio2@SteveStacStudio.lan>
Date: Tue May 12 12:28:15 2026 -0700
wallco.ai · /compare view choice (specs/grid) now persists in localStorage[wallco-compare-view] · current view is saved on every load; if user later visits /compare?ids=… without an explicit view= param AND saved pref differs, page redirects via location.replace to honor the saved view; if URL has explicit view= or legacy grid=1, no override · Remove buttons preserve the active view (was dropping users back to specs after removing a design while in grid mode) · verified currentView=specs at /compare?ids=72,161, currentView=grid at /compare?ids=72,161&view=grid, 6 wiring refs total
---
server.js | 20 +++++++++++++++++++-
1 file changed, 19 insertions(+), 1 deletion(-)
diff --git a/server.js b/server.js
index c2454fa..5acb08c 100644
--- a/server.js
+++ b/server.js
@@ -5472,13 +5472,31 @@ ${htmlHeader('/compare')}
<script>
(function(){
var stored = ${JSON.stringify(rawIds)};
+ var currentView = ${JSON.stringify(view)};
try { localStorage.setItem('wallco-compare', JSON.stringify(stored)); } catch(e){}
+ // Persist whichever view we landed on so the next /compare visit reopens it.
+ try { localStorage.setItem('wallco-compare-view', currentView); } catch(e){}
+ // If the URL did NOT specify a view param and a saved preference exists, redirect
+ // to honor it. Only redirects when redirect target differs from current page.
+ try {
+ var url = new URL(location.href);
+ var hasExplicitView = url.searchParams.has('view') || url.searchParams.get('grid') === '1';
+ var saved = localStorage.getItem('wallco-compare-view');
+ if (!hasExplicitView && saved && saved !== currentView && (saved === 'grid' || saved === 'specs')) {
+ if (saved === 'grid') url.searchParams.set('view', 'grid'); else url.searchParams.delete('view');
+ location.replace(url.toString());
+ return; // bail — page about to reload
+ }
+ } catch(e){}
+ // Preserve current view across Remove clicks too — so removing one design while in
+ // grid view stays in grid view.
+ var viewQS = currentView === 'grid' ? '&view=grid' : '';
document.querySelectorAll('.compare-rm').forEach(function(btn){
btn.addEventListener('click', function(){
var rid = parseInt(btn.dataset.rmid,10);
var next = stored.filter(function(x){ return x !== rid; });
try { localStorage.setItem('wallco-compare', JSON.stringify(next)); } catch(e){}
- window.location.href = next.length ? '/compare?ids=' + next.join(',') : '/compare';
+ window.location.href = next.length ? '/compare?ids=' + next.join(',') + viewQS : '/compare';
});
});
var pBtn = document.getElementById('compare-print');
← 78f4fe2 fix /api/room: read fresh local_path from DB; add parallel r
·
back to Wallco Ai
·
studio: add repeat-size slider + fresh room re-renders on ea 0bbf445 →