spirit-tracker/viz/app/main.js
Brennan Wilkes (Text Groove) d92e4b8cf3 feat: V2 store page
2026-01-30 13:04:50 -08:00

34 lines
1 KiB
JavaScript

/**
* Hash routes:
* #/ search
* #/item/<sku> detail
* #/link sku linker (local-write only)
* #/store/<store> store page (in-stock only)
*/
import { destroyChart } from "./item_page.js";
import { renderSearch } from "./search_page.js";
import { renderItem } from "./item_page.js";
import { renderSkuLinker } from "./linker_page.js";
import { renderStore } from "./store_page.js";
function route() {
const $app = document.getElementById("app");
if (!$app) return;
// always clean up chart when navigating
destroyChart();
const h = location.hash || "#/";
const parts = h.replace(/^#\/?/, "").split("/").filter(Boolean);
if (parts.length === 0) return renderSearch($app);
if (parts[0] === "item" && parts[1]) return renderItem($app, decodeURIComponent(parts[1]));
if (parts[0] === "store" && parts[1]) return renderStore($app, decodeURIComponent(parts[1]));
if (parts[0] === "link") return renderSkuLinker($app);
return renderSearch($app);
}
window.addEventListener("hashchange", route);
route();