summaryrefslogtreecommitdiff
path: root/client/src
diff options
context:
space:
mode:
Diffstat (limited to 'client/src')
-rw-r--r--client/src/index.js75
-rw-r--r--client/src/shoppingbasket.js70
2 files changed, 145 insertions, 0 deletions
diff --git a/client/src/index.js b/client/src/index.js
index e69de29..13d7219 100644
--- a/client/src/index.js
+++ b/client/src/index.js
@@ -0,0 +1,75 @@
+function orderButtonClicked(event) {
+ console.log("button click");
+ var button;
+ if (event.target.classList.contains("orderbutton")) {
+ button = event.target;
+ } else {
+ button = event.target.parentNode;
+ }
+ var node = button.previousElementSibling;
+ var adults;
+ var kids;
+ var parkName;
+ while (true) {
+ if (node.classList.contains("numberofkids")) {
+ kids = Number(node.value);
+ }
+ if (node.classList.contains("numberofadults")) {
+ adults = Number(node.value)
+ }
+ if (node.classList.contains("parkname")) {
+ parkName = node.innerText;
+ break
+ }
+ if (node.previousElementSibling == null) {
+ node = node.parentNode;
+ } else {
+ node = node.previousElementSibling;
+ }
+ }
+
+ if (kids > 0 || adults > 0) {
+ saveOrderInShoppingBasket(parkName, adults, kids);
+ }
+};
+
+function saveOrderInShoppingBasket(name, adults, kids) {
+ var order = {
+ name: name,
+ adults: adults,
+ children: kids,
+ };
+ var orderString = JSON.stringify(order);
+ localStorage.setItem(localStorage.length + 1, orderString)
+ document.querySelector(".badge").innerText = localStorage.length;
+}
+
+document.querySelector(".badge").innerText = localStorage.length;
+var buttons = document.querySelectorAll(".orderbutton");
+
+
+for (var i = 0; i < buttons.length; i++) {
+ console.log(buttons[i]);
+ buttons[i].addEventListener("click", orderButtonClicked);
+}
+
+
+// When the user scrolls the page, execute myFunction
+window.onscroll = function() {myFunction()};
+
+// Get the header
+var header = document.getElementById("sticky-header");
+
+// Get the offset position of the navbar
+var sticky = header.offsetTop;
+
+// Add the sticky class to the header when you reach its scroll position. Remove "sticky" when you leave the scroll position
+function myFunction() {
+ if (window.pageYOffset > sticky) {
+ header.classList.add("sticky");
+ } else {
+ header.classList.remove("sticky");
+ }
+}
+
+
diff --git a/client/src/shoppingbasket.js b/client/src/shoppingbasket.js
index e69de29..c23c02c 100644
--- a/client/src/shoppingbasket.js
+++ b/client/src/shoppingbasket.js
@@ -0,0 +1,70 @@
+document.querySelector(".badge").innerText = localStorage.length;
+
+function getOrderArray() {
+ var orders = new Array;
+ for (let i = 0; i < localStorage.length; i++) {
+ var order = localStorage.getItem(i+1);
+ order = JSON.parse(order);
+ orders.push(order);
+ }
+ // console.log(orders);
+ return orders;
+}
+
+class Order {
+ constructor(orderJSON) {
+ for (const [key, value] of Object.entries(orderJSON)) {
+ this[key] = value;
+ }
+
+ }
+
+ addToMain() {
+ // https://developer.mozilla.org/en-US/docs/Web/HTML/Element/template
+ var main = document.querySelector("main");
+ var template = document.querySelector("#ticket");
+
+ var clone = template.content.cloneNode(true);
+ // console.log(clone);
+ var lines = clone.querySelectorAll("div");
+
+ for (var i = 0; i < lines.length; i++) {
+ var text = lines[i].textContent;
+
+ if (text === "Parkname") {
+ console.log(this.name);
+ lines[i].textContent = this.name;
+ }
+
+ if (text.toLowerCase().includes("adults")) {
+ lines[i].textContent = text + " " + this.adults;
+ }
+
+ if (text.toLowerCase().includes("kids")) {
+ lines[i].textContent = text + " " + this.children;
+ }
+ }
+
+ main.appendChild(clone);
+ }
+}
+
+
+function displayOrders() {
+ var orders = getOrderArray();
+ for (let i = 0; i < orders.length; i++) {
+ orderObj = new Order(orders[i]);
+ orderObj.addToMain();
+ }
+
+}
+
+displayOrders();
+
+function finalizePayment(event) {
+ console.log("finalizing payments");
+ localStorage.clear();
+ window.location.replace("orderplaced.html");
+}
+
+document.querySelector("#finalizepaymentbutton").addEventListener("click", finalizePayment);