diff options
| author | Leo Goetz <dev@leogtz.de> | 2026-01-29 14:55:56 +0100 |
|---|---|---|
| committer | Leo Goetz <dev@leogtz.de> | 2026-01-29 14:55:56 +0100 |
| commit | d5a420a8135537c9fc36f9dd81ec7c9fc0500e66 (patch) | |
| tree | 7b3db6a743d8f463432b719748e2a3f99960dade /services/Router.js | |
| parent | 64cc496a6cb6e1b73ed731f814018bab62d01d84 (diff) | |
feat: added router, api and data
Diffstat (limited to 'services/Router.js')
| -rw-r--r-- | services/Router.js | 61 |
1 files changed, 61 insertions, 0 deletions
diff --git a/services/Router.js b/services/Router.js new file mode 100644 index 0000000..13ef58e --- /dev/null +++ b/services/Router.js @@ -0,0 +1,61 @@ +const Router = { + init: () => { + document.querySelectorAll("a.navlink").forEach((a) => { + a.addEventListener("click", (event) => { + event.preventDefault(); + const url = event.target.getAttribute("href"); + Router.go(url); + }); + }); + // Event Handler for URL changes + window.addEventListener("popstate", (event) => { + Router.go(event.state.route, false); + }); + + // Check inital URL + Router.go(location.pathname); + }, + + go: (route, addToHistory = true) => { + console.log("Going to route" + route); + + if (addToHistory) { + history.pushState({ route }, "", route); + } + + let pageElement = null; + + switch (route) { + case "/": + pageElement = document.createElement("h1"); + pageElement.textContent = "Menu"; + break; + case "/order": + pageElement = document.createElement("h1"); + pageElement.textContent = "Your Order"; + break; + default: + if (route.startsWith("/product-")) { + pageElement = document.createElement("h1"); + pageElement.textContent = "Your Order"; + const paramId = route.substring(route.lastIndexOf("-") + 1); + // Dataset is great for storing costum data because it doesnt get + // parsed by the browser + pageElement.dataset.id = paramId; + } + } + + if (pageElement) { + // document.querySelector("main").children[0].remove(); + + // For little Performance Improvement + const cache = document.querySelector("main"); + cache.innerHTML = ""; + cache.appendChild(pageElement); + window.screenX = 0; + window.screenY = 0; + } + }, +}; + +export default Router; |
