From 8257e4177bc3d4e2ea1487c67ebe57739dd2cdc9 Mon Sep 17 00:00:00 2001
From: Fredrik Baksaas <fredbaks@stud.ntnu.no>
Date: Sun, 31 Oct 2021 20:55:51 +0000
Subject: [PATCH] =?UTF-8?q?Lagt=20til=20funksjonalitet=20i=20handlekurv.ht?=
 =?UTF-8?q?ml,=20lagt=20til=20handlekurv=20dropdown=20p=C3=A5=20alle=20sid?=
 =?UTF-8?q?er,=20og=20jobba=20med=20handlekurvsystemet=20generelt?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 css/style.css           |  56 ++++++++++++++++++
 css/styleHandlekurv.css |  39 ++++++++++---
 handlekurv.html         |  39 ++++++++-----
 index.html              |   9 ++-
 js/checkout.js          | 122 ++++++++++++++++++++++++++++++++++++++++
 js/handlekurv.js        |  57 ++++++++++++++-----
 js/handlekurvVindu.js   |  83 +++++++++++++++++++++++++++
 meny.html               |   7 +--
 om_oss.html             |   7 +--
 9 files changed, 371 insertions(+), 48 deletions(-)
 create mode 100644 js/checkout.js
 create mode 100644 js/handlekurvVindu.js

diff --git a/css/style.css b/css/style.css
index 7641887..912864a 100644
--- a/css/style.css
+++ b/css/style.css
@@ -472,3 +472,59 @@ footer {
     -ms-overflow-style: none;  /* IE and Edge */
     scrollbar-width: none;  /* Firefox */
 }
+
+#hkMain{
+    position: fixed;
+    left: 98%;
+    transform: translate(-100%,0);
+    top: 7%;
+    min-height: 80px;
+    width: 250px;
+    border-radius: 7px;
+    box-shadow: 0px 0px 10px; 
+    background-color: white;
+}
+
+#hkTrekant{
+    position: fixed;
+    top: -12.8%;
+    left: 57.5%;
+    width: 0;
+    height: 0; 
+    border-left: 25px solid transparent;
+    border-right: 25px solid transparent;
+    border-bottom: 25px solid white;
+}
+
+#hkBody{
+    padding: 10px;
+}
+
+#hkListe{
+    padding-top: 10px;
+    font-size: 14px;
+    list-style-type: none;
+}
+
+.hkListeV, .hkListeH{
+    display: inline-block;
+    
+}
+
+.hkListeV{
+    width: 75%;
+}
+
+.hkListeH{
+    width: 23%;
+    text-align: right;
+}
+
+#hkKnapp{
+    width: 100%;
+    height: 30px;
+    border: solid 1px;
+    border-radius: 5px;
+    background-color: #b82a31; 
+    margin-top: 15px;
+}
\ No newline at end of file
diff --git a/css/styleHandlekurv.css b/css/styleHandlekurv.css
index ecd648e..4a6373f 100644
--- a/css/styleHandlekurv.css
+++ b/css/styleHandlekurv.css
@@ -7,14 +7,14 @@
     padding: 30px;
     border-radius: 7px;
     box-shadow: 0px 5px 5px; 
-    background-color: white;
+    background-color: #FFE119;
 }
 
-#coTimeSelect,#coBestill{
+#coTimeSelect,#coBestill, #coRabattInput, .coVareKnapp{
     height: 30px;
     border: solid 1px;
     border-radius: 5px;
-    background-color: white; 
+    background-color: #b82a31; 
 }
 
 #topBox{
@@ -29,11 +29,38 @@
     position: relative;
     padding-top: 50px;
     padding-bottom: 50px;
-    padding-left: 30px;
+    padding-left: 50px;
+    padding-right: 50px;
     min-height: 100px;
     width: 100%;
     border: solid 1px;
     border-radius: 5px;
+    background-color: #b82a31;
+    list-style-type: none;
+    font-size: 22px;
+}
+
+.coVareP{
+    padding-top: 5px;
+    padding-bottom: 5px;
+}
+
+.coVareVen{
+    display: inline-block;
+    width: 80%;
+}
+
+.coVareHoy{
+    display: inline-block;
+    text-align: right;
+    width: 19%;
+}
+
+.coVareKnapp{
+    width: 30px;
+    text-align: center;
+    display: inline-block;
+    background-color: #FFE119;
 }
 
 #coNedeLeft{
@@ -67,9 +94,7 @@
 
 #coTimeSelect{
     position: absolute;
-    width: 100px;
-    left: 100%;
-    transform: translate(-100%,-15%);
+    transform: translate(30%,-15%);
 }
 
 #coRabatt{
diff --git a/handlekurv.html b/handlekurv.html
index 6dbe283..c24be18 100644
--- a/handlekurv.html
+++ b/handlekurv.html
@@ -37,10 +37,8 @@
                 </li>
             </ul>
 
-            <div class="cart">
-                <a href="#">
-                    <img src="img/cart.svg" alt="cart">
-                </a>
+            <div class="cart" onclick="toggleHandlekurvVindu()">
+                <img src="img/cart.svg" alt="cart">
             </div>
         </nav>
     </header>
@@ -48,9 +46,19 @@
     <main>
         <div class="checkout" id="topBox">
             <h2>Handlekurv</h2>
-            <div id="coVarer">
-                Handlekurven er tom
-            </div>
+            <ul id="coVarer">
+                <li class="coVareP">Handlekurven er tom</li>
+                <li class="coVareP">
+                    <div class="coVareVen">
+                        <div class="coVareKnapp">-</div>
+                        <div class="coVareKnapp">+</div>
+                        2 stk Margherita
+                    </div>
+                    <div class="coVareHoy">
+                        NA,-
+                    </div>
+                </li>
+            </ul>
         </div>
 
         <div class="checkout" id="bottomBox">
@@ -58,7 +66,7 @@
                 <div id="coLevering">
                     <h3>Estimert leveringstid:</h3>
                     <div id="coTime">
-                        ASAP (20 min)
+                        Levering:
                         <select id="coTimeSelect">
                             <option>25</option>
                             <option>30</option>
@@ -76,19 +84,22 @@
                 <div style="width: 100%;">
                     <ul id="leftList" class="coPayList">
                         <li class="leftListPoint">Subtotal:</li>
-                        <li class="leftListPoint">Subtotal:</li>
-                        <li class="leftListPoint">Subtotal:</li>
+                        <li class="leftListPoint">Levering:</li>
+                        <li class="leftListPoint">Total:</li>
                     </ul>
                     <ul id="rightList" class="coPayList">
-                        <li class="rightListPoint">NA,-</li>
-                        <li class="rightListPoint">NA,-</li>
-                        <li class="rightListPoint">NA,-</li>
+                        <li class="rightListPoint" id="subtotal">NA,-</li>
+                        <li class="rightListPoint" id="levering">NA,-</li>
+                        <li class="rightListPoint" id="total">NA,-</li>
                     </ul>
                 </div>
 
                 <button id="coBestill">Bestill</button>
             </div>
         </div>
+
+
+
     </main>
 
     <footer>
@@ -96,6 +107,8 @@
     </footer>
 
     <script src="js/navbar.js"></script>
+    <script src="js/handlekurvVindu.js"></script>
+    <script src="js/checkout.js"></script>
 </body>
 
 </html>
\ No newline at end of file
diff --git a/index.html b/index.html
index 0f2e6b2..ebcea6f 100644
--- a/index.html
+++ b/index.html
@@ -21,7 +21,7 @@
             </div>
             <div class="logo">
                 <a href="index.html">
-                    <img src="img/QuickFood-logo.png" alt="logo">
+                    <img src="img/QuickFood logo.png" alt="logo">
                 </a>
             </div>
             <ul class="nav-links">
@@ -36,10 +36,8 @@
                 </li>
             </ul>
 
-            <div class="cart">
-                <a href="#">
-                    <img src="img/cart.svg" alt="cart">
-                </a>
+            <div class="cart" onclick="toggleHandlekurvVindu()">
+                <img src="img/cart.svg" alt="cart">
             </div>
         </nav>
     </header>
@@ -136,6 +134,7 @@
     </footer>
 
     <script src="js/navbar.js"></script>
+    <script src="js/handlekurvVindu.js"></script>
 </body>
 
 </html>
diff --git a/js/checkout.js b/js/checkout.js
new file mode 100644
index 0000000..6602c96
--- /dev/null
+++ b/js/checkout.js
@@ -0,0 +1,122 @@
+//var handlekurv = JSON.parse(localStorage.getItem("handlekurv"));
+
+let ul = document.getElementById("coVarer");
+oppdaterCheckout();
+console.log(handlekurv);
+
+function oppdaterCheckout(){
+    ul.innerHTML = "";
+    let subtotal = 0;
+    if(handlekurv.length == 0){
+        let li = document.createElement("li");
+        ul.appendChild(li);
+        li.innerText = "Handlekurven er tom";
+    }else{
+        for(vare of handlekurv){
+            let antall = vare.antall;
+            let pris = vare.pris * antall;
+            subtotal += pris;
+            let navn = vare.navn;
+            let pointer = vare;
+
+            let li = document.createElement("li");
+            ul.appendChild(li);
+
+            let venstre = document.createElement("div");
+            li.appendChild(venstre);
+            venstre.className = "coVareVen";
+            venstre.innerText += " " + antall + " stk " + navn;
+
+            let minus = document.createElement("button");
+            minus.className = "coVareKnapp";
+            minus.innerText = "-";
+            minus.addEventListener("click", function(){trekkFra(pointer)});
+
+            let pluss = document.createElement("button");
+            pluss.className = "coVareKnapp";
+            pluss.innerText = "+";
+            pluss.addEventListener("click", function(){leggTil(pointer)});
+
+
+            venstre.prepend(pluss);
+            venstre.prepend(minus);
+
+            let hoyre = document.createElement("div");
+            li.appendChild(hoyre);
+            hoyre.className = "coVareHoy";
+            hoyre.innerText = pris + ",-";
+        }
+    }
+    pris(subtotal);
+    settTid();  
+}
+
+function pris(subtotalPris){
+    let subtotal = document.getElementById("subtotal");
+    let levering = document.getElementById("levering");
+    let total = document.getElementById("total");
+
+    subtotal.innerHTML = subtotalPris + ",-";
+    levering.innerHTML = "40,-";
+    total.innerHTML = (subtotalPris + 40) + ",-";
+}
+
+function settTid(){
+    const date = new Date();
+    let time = date.getHours();
+    let min = date.getMinutes();
+
+    let select = document.getElementById("coTimeSelect");
+    select.innerHTML = "";
+
+    let delmin = 0;
+    let deltime = 0;
+    let tidut;
+
+    for(let i = 20; i<45; i = i+5){
+        tidut = "";
+        deltime = time;
+        delmin = min + i;
+
+        if((delmin/60) > 1){
+            deltime++;
+            if(deltime > 23){
+                deltime = 0;
+            }
+        }
+        
+        delmin = delmin%60;
+        if(delmin < 10){
+            delmin = "0" + delmin;
+        }
+
+        let option = document.createElement("option");
+        option.innerText = deltime + ":" + delmin;
+        select.appendChild(option);
+
+    }
+}
+
+function trekkFra(vare){
+    for(item of handlekurv){
+        if(item.index == vare.index){
+            if(item.antall > 1){
+                item.antall--;
+            }else{
+                handlekurv.splice(handlekurv.indexOf(item), 1);
+            }
+        }
+    }
+
+    oppdaterCheckout();
+}
+
+function leggTil(vare){
+    for(item of handlekurv){
+        if(item.index == vare.index){
+            item.antall++;
+        }
+    }
+
+    oppdaterCheckout();
+}
\ No newline at end of file
diff --git a/js/handlekurv.js b/js/handlekurv.js
index ea35451..a5d915e 100644
--- a/js/handlekurv.js
+++ b/js/handlekurv.js
@@ -1,34 +1,61 @@
+if(localStorage.getItem("handlekurv") == null){
+    const handlekurv = [];
+    localStorage.setItem("handlekurv", JSON.stringify(handlekurv));
+    console.log(localStorage.getItem("handlekurv"));
+    console.log("la til ny");
+}else{
+    console.log(localStorage.getItem("handlekurv"));
+    console.log("brukte gamle");
+}
+
 const varer = [
     {
         index : 1,
-        navn : "margherita",
-        pris : 130
+        navn : "Margherita",
+        pris : 130,
+        antall : 0
     },
     {
         index : 2,
-        navn : "hamburger",
-        pris : 110
+        navn : "Hamburger",
+        pris : 110,
+        antall : 0
     }
-    ];
-    const handlekurv = [];
+];
+
+const handlekurv = JSON.parse(localStorage.getItem("handlekurv"));
     
-    for(let vare of varer){
-        let index = vare.index;
-        let submit = document.getElementById("submitIndex" + index);
-        let pointer = vare;
-    
-        if(submit){
-        submit.addEventListener("click", function(){leggTilHandlekurv(pointer)});
-        }
+for(let vare of varer){
+    let index = vare.index;
+    let submit = document.getElementById("submitIndex" + index);
+    let pointer = vare;
+   
+    if(submit){
+    submit.addEventListener("click", function(){leggTilHandlekurv(pointer)});
     }
+}
     
     function leggTilHandlekurv(vare){
         let index = vare.index;
         let select = document.getElementById("selectIndex" + index)
         let antall = select.value;
+        let navn = null;
     
-        for(let i=0; i<antall; i++){
+        for(item of handlekurv){
+            if(item.navn == vare.navn){
+                navn = item;
+            }
+        }
+
+        if(!navn){
             handlekurv.push(vare);
+            navn = vare;
+            navn.antall++;
+            antall--;
+        }
+
+        for(let i=0; i<antall; i++){
+            navn.antall++;
         }
     
         sorterListe();
diff --git a/js/handlekurvVindu.js b/js/handlekurvVindu.js
new file mode 100644
index 0000000..d1c04b8
--- /dev/null
+++ b/js/handlekurvVindu.js
@@ -0,0 +1,83 @@
+if(localStorage.getItem("handlekurv") == null){
+    const handlekurv = [];
+    localStorage.setItem("handlekurv", JSON.stringify(handlekurv));
+    console.log(localStorage.getItem("handlekurv"));
+    console.log("la til ny");
+}else{
+    console.log(localStorage.getItem("handlekurv"));
+    console.log("brukte gamle");
+}
+
+const handlekurv = JSON.parse(localStorage.getItem("handlekurv"));
+var toggle = false;
+
+function toggleHandlekurvVindu(){
+    if(toggle){
+        console.log("Vindu av");
+        let main = document.getElementById("hkMain");
+        document.body.removeChild(main);
+        toggle = false;
+    }else{
+        console.log("Vindu på");
+        lagVindu();
+        toggle = true;
+    }
+}
+
+function lagVindu(){
+    let body = document.body;
+
+    let hkMain = document.createElement("div");
+    hkMain.id = "hkMain";
+    body.appendChild(hkMain);
+
+    let hkTrekant = document.createElement("div");
+    hkTrekant.id = "hkTrekant";
+    hkMain.appendChild(hkTrekant);
+
+    let hkBody = document.createElement("div");
+    hkBody.id = "hkBody";
+    hkMain.appendChild(hkBody);
+
+    hkBody.innerText = "Handlekurv:"
+
+    hkListe = document.createElement("ul");
+    hkBody.appendChild(hkListe);
+    hkListe.id = "hkListe";
+
+
+    if(handlekurv.length == 0){
+        let li = document.createElement("li");
+        hkListe.appendChild(li);
+        li.innerText = "Handlekurven er tom";
+    }else{
+        for(vare of handlekurv){
+            let antall = vare.antall;
+            let pris = vare.pris * antall;
+            let navn = vare.navn;
+
+            let li = document.createElement("li");
+            hkListe.appendChild(li);
+            let venstre = document.createElement("div");
+            li.appendChild(venstre);
+            venstre.className = "hkListeV";
+            venstre.innerText = antall + " stk " + navn;
+
+            let hoyre = document.createElement("div");
+            li.appendChild(hoyre);
+            hoyre.className = "hkListeH";
+            hoyre.innerText = pris + ",-";
+
+        }
+    }
+
+    let link = document.createElement("a");
+    link.href = "handlekurv.html";
+
+    let button = document.createElement("button");
+    button.id = "hkKnapp";
+    button.innerText = "Gå til checkout";
+
+    link.appendChild(button);
+    hkBody.appendChild(link);
+}
\ No newline at end of file
diff --git a/meny.html b/meny.html
index 3912650..39704b9 100644
--- a/meny.html
+++ b/meny.html
@@ -37,10 +37,8 @@
                 </li>
             </ul>
 
-            <div class="cart">
-                <a href="#">
-                    <img src="img/cart.svg" alt="cart">
-                </a>
+            <div class="cart" onclick="toggleHandlekurvVindu()">
+                <img src="img/cart.svg" alt="cart">
             </div>
         </nav>
     </header>
@@ -107,6 +105,7 @@
     </footer>
 
     <script src="js/navbar.js"></script>
+    <script src="js/handlekurvVindu.js"></script>
 </body>
 
 </html>
\ No newline at end of file
diff --git a/om_oss.html b/om_oss.html
index 3b07747..cef59c6 100644
--- a/om_oss.html
+++ b/om_oss.html
@@ -35,10 +35,8 @@
                 </li>
             </ul>
 
-            <div class="cart">
-                <a href="#">
-                    <img src="img/cart.svg" alt="cart">
-                </a>
+            <div class="cart" onclick="toggleHandlekurvVindu()">
+                <img src="img/cart.svg" alt="cart">
             </div>
         </nav>
     </header>
@@ -95,6 +93,7 @@
     </footer>
     <script src="js/navbar.js"></script>
     <script src="js/handlekurv.js"></script>
+    <script src="js/handlekurvVindu.js"></script>
 </body>
 
 </html>
\ No newline at end of file
-- 
GitLab