setting up inventory dashboard

This commit is contained in:
Zach Harding
2026-03-25 08:41:21 -04:00
parent 171ce294f4
commit db12844dea
5 changed files with 208 additions and 36 deletions

View File

@@ -118,7 +118,6 @@ import BackToTop from "./BackToTop.astro"
canvas.width = img.naturalWidth;
canvas.height = img.naturalHeight;
// Load with crossOrigin so toBlob() stays untainted
await new Promise((resolve) => {
const clean = new Image();
clean.crossOrigin = 'anonymous';
@@ -172,6 +171,19 @@ import BackToTop from "./BackToTop.astro"
}, 2000);
}
// ── Tab switching helper ──────────────────────────────────────────────────
// Called after every modal swap. Checks sessionStorage for a tab request
// set by the inventory button click, activates it once, then clears it.
function switchToRequestedTab() {
const tab = sessionStorage.getItem('openModalTab');
if (!tab) return;
sessionStorage.removeItem('openModalTab');
requestAnimationFrame(() => {
const tabEl = document.querySelector(`#cardModal [data-bs-target="#${tab}"]`);
if (tabEl) bootstrap.Tab.getOrCreateInstance(tabEl).show();
});
}
// ── State ─────────────────────────────────────────────────────────────────
const cardIndex = [];
let currentCardId = null;
@@ -263,6 +275,7 @@ import BackToTop from "./BackToTop.astro"
if (typeof htmx !== 'undefined') htmx.process(modal);
updateNavButtons(modal);
initChartAfterSwap(modal);
switchToRequestedTab();
};
if (document.startViewTransition && direction) {
@@ -365,6 +378,7 @@ import BackToTop from "./BackToTop.astro"
await transition.finished;
updateNavButtons(target);
initChartAfterSwap(target);
switchToRequestedTab();
} catch (err) {
console.error('[card-modal] transition failed:', err);
@@ -383,10 +397,12 @@ import BackToTop from "./BackToTop.astro"
cardModal.addEventListener('shown.bs.modal', () => {
updateNavButtons(cardModal);
initChartAfterSwap(cardModal);
switchToRequestedTab();
});
cardModal.addEventListener('hidden.bs.modal', () => {
currentCardId = null;
updateNavButtons(null);
});
})();
</script>