From d445df8e638f4613d479581503042e5c61e123d4 Mon Sep 17 00:00:00 2001
From: Ingrid <ingridmegge@gmail.com>
Date: Mon, 24 Apr 2023 06:52:30 +0200
Subject: [PATCH] la inn pluss-knapp

---
 package-lock.json                     | 51 +++++++++++++++++++--------
 package.json                          |  1 +
 src/components/EatFridgeItemModal.vue |  2 +-
 src/components/FridgeItem.vue         |  7 ++--
 src/util/API.js                       | 15 ++++++++
 src/views/FridgeView.vue              | 40 +++++++++++++++++++--
 6 files changed, 95 insertions(+), 21 deletions(-)
 create mode 100644 src/util/API.js

diff --git a/package-lock.json b/package-lock.json
index d4c3290..efc9ac1 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -9,6 +9,7 @@
       "version": "0.0.0",
       "dependencies": {
         "@iconify/iconify": "^3.1.0",
+        "axios": "^1.3.6",
         "pinia": "^2.0.28",
         "sass": "^1.62.0",
         "vue": "^3.2.45",
@@ -1409,8 +1410,7 @@
     "node_modules/asynckit": {
       "version": "0.4.0",
       "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
-      "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==",
-      "dev": true
+      "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q=="
     },
     "node_modules/at-least-node": {
       "version": "1.0.0",
@@ -1437,20 +1437,19 @@
       "dev": true
     },
     "node_modules/axios": {
-      "version": "0.27.2",
-      "resolved": "https://registry.npmjs.org/axios/-/axios-0.27.2.tgz",
-      "integrity": "sha512-t+yRIyySRTp/wua5xEr+z1q60QmLq8ABsS5O9Me1AsE5dfKqgnCFzwiCZZ/cGNd1lq4/7akDWMxdhVlucjmnOQ==",
-      "dev": true,
+      "version": "1.3.6",
+      "resolved": "https://registry.npmjs.org/axios/-/axios-1.3.6.tgz",
+      "integrity": "sha512-PEcdkk7JcdPiMDkvM4K6ZBRYq9keuVJsToxm2zQIM70Qqo2WHTdJZMXcG9X+RmRp2VPNUQC8W1RAGbgt6b1yMg==",
       "dependencies": {
-        "follow-redirects": "^1.14.9",
-        "form-data": "^4.0.0"
+        "follow-redirects": "^1.15.0",
+        "form-data": "^4.0.0",
+        "proxy-from-env": "^1.1.0"
       }
     },
     "node_modules/axios/node_modules/form-data": {
       "version": "4.0.0",
       "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz",
       "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==",
-      "dev": true,
       "dependencies": {
         "asynckit": "^0.4.0",
         "combined-stream": "^1.0.8",
@@ -1460,6 +1459,11 @@
         "node": ">= 6"
       }
     },
+    "node_modules/axios/node_modules/proxy-from-env": {
+      "version": "1.1.0",
+      "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz",
+      "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg=="
+    },
     "node_modules/balanced-match": {
       "version": "1.0.2",
       "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
@@ -1944,7 +1948,6 @@
       "version": "1.0.8",
       "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz",
       "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==",
-      "dev": true,
       "dependencies": {
         "delayed-stream": "~1.0.0"
       },
@@ -2215,7 +2218,6 @@
       "version": "1.0.0",
       "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
       "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==",
-      "dev": true,
       "engines": {
         "node": ">=0.4.0"
       }
@@ -2717,7 +2719,6 @@
       "version": "1.15.2",
       "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz",
       "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==",
-      "dev": true,
       "funding": [
         {
           "type": "individual",
@@ -3965,7 +3966,6 @@
       "version": "1.52.0",
       "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz",
       "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==",
-      "dev": true,
       "engines": {
         "node": ">= 0.6"
       }
@@ -3974,7 +3974,6 @@
       "version": "2.1.35",
       "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz",
       "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==",
-      "dev": true,
       "dependencies": {
         "mime-db": "1.52.0"
       },
@@ -6538,6 +6537,30 @@
         "node": ">=12.0.0"
       }
     },
+    "node_modules/wait-on/node_modules/axios": {
+      "version": "0.27.2",
+      "resolved": "https://registry.npmjs.org/axios/-/axios-0.27.2.tgz",
+      "integrity": "sha512-t+yRIyySRTp/wua5xEr+z1q60QmLq8ABsS5O9Me1AsE5dfKqgnCFzwiCZZ/cGNd1lq4/7akDWMxdhVlucjmnOQ==",
+      "dev": true,
+      "dependencies": {
+        "follow-redirects": "^1.14.9",
+        "form-data": "^4.0.0"
+      }
+    },
+    "node_modules/wait-on/node_modules/form-data": {
+      "version": "4.0.0",
+      "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz",
+      "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==",
+      "dev": true,
+      "dependencies": {
+        "asynckit": "^0.4.0",
+        "combined-stream": "^1.0.8",
+        "mime-types": "^2.1.12"
+      },
+      "engines": {
+        "node": ">= 6"
+      }
+    },
     "node_modules/watchpack": {
       "version": "2.4.0",
       "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.0.tgz",
diff --git a/package.json b/package.json
index a08af32..7d4e295 100644
--- a/package.json
+++ b/package.json
@@ -12,6 +12,7 @@
   },
   "dependencies": {
     "@iconify/iconify": "^3.1.0",
+    "axios": "^1.3.6",
     "pinia": "^2.0.28",
     "sass": "^1.62.0",
     "vue": "^3.2.45",
diff --git a/src/components/EatFridgeItemModal.vue b/src/components/EatFridgeItemModal.vue
index c11093d..04c0311 100644
--- a/src/components/EatFridgeItemModal.vue
+++ b/src/components/EatFridgeItemModal.vue
@@ -5,7 +5,7 @@
       <p>{{sliderValue}}</p>
 
       <label for="slider">Mengde tatt av varen:</label>
-      <input type = "range" id = "slider" name = "slider" min="0" max="100" v-model="sliderValue" @input="sliderChanged">
+      <input type = "range" id = "slider" name = "slider" min="0" max="100" v-model="sliderValue">
 
       <div id="buttons">
           <button @click="close">Ble kastet 🧺</button>
diff --git a/src/components/FridgeItem.vue b/src/components/FridgeItem.vue
index b7f9650..d93b7c9 100644
--- a/src/components/FridgeItem.vue
+++ b/src/components/FridgeItem.vue
@@ -50,12 +50,13 @@ export default {
                 default:
                     return "Utgår " + this.expiration
             }
-
-
-            return "i morgen"
         }
     },
     props: {
+        fridgeItem: {
+          type:Object,
+          required: false,
+        },
         itemName: String,
         expiration: String,
         image: String,
diff --git a/src/util/API.js b/src/util/API.js
new file mode 100644
index 0000000..514c74b
--- /dev/null
+++ b/src/util/API.js
@@ -0,0 +1,15 @@
+import axios from "axios";
+export const API = {
+    /**
+     * Fetches all fridgeItems
+     */
+    getFridgeItems(){
+        return axios.get(`${import.meta.env.VITE_BACKEND_URL}/fridge`)
+            .then((response) => {
+                return response.data;
+            }).catch(() => {
+                throw new Error();
+            });
+    }
+
+}
diff --git a/src/views/FridgeView.vue b/src/views/FridgeView.vue
index e9ca115..499e0e1 100644
--- a/src/views/FridgeView.vue
+++ b/src/views/FridgeView.vue
@@ -2,7 +2,8 @@
     <main>
         <h1>Kjøleskap</h1><br><br>
       <eat-fridge-item-modal @closeModal="hideModal" v-if="visible" :fridge-item="selectedItem"></eat-fridge-item-modal>
-        <div id = "itemCOntainer">
+        <div id = "itemContainer">
+            <!--<FridgeItem v-for="item in fridgeItems" :key="item.id" fridgeItem="item"></FridgeItem>-->
             <FridgeItem @appleBtnPressed="showModal" item-name="Melk" quantity="5" quantity-unit="dl" expiration="21.04.23"></FridgeItem>
             <FridgeItem @appleBtnPressed="showModal" item-name="Melk" quantity="5" quantity-unit="dl" expiration="22.04.23"></FridgeItem>
             <FridgeItem @appleBtnPressed="showModal" item-name="Fløte" quantity="1" quantity-unit="dl" expiration="21.04.22"></FridgeItem>
@@ -12,6 +13,14 @@
             <FridgeItem @appleBtnPressed="showModal" item-name="Smør" quantity="350" quantity-unit="g" expiration="25.06.23"></FridgeItem>
         </div>
 
+        <div id="addItemBtn-container">
+          <button @click="addItemToFridge" id="addItemBtn">
+            <span class="plus">+</span>
+          </button>
+        </div>
+
+
+
     </main>
 
 </template>
@@ -19,6 +28,7 @@
 <script>
 import FridgeItem from "@/components/FridgeItem.vue";
 import EatFridgeItemModal from "@/components/EatFridgeItemModal.vue";
+import {API} from "@/util/API";
 
 export default {
     name: "FridgeView",
@@ -26,7 +36,8 @@ export default {
   data() {
       return {
         visible: false,
-        selectedItem: null
+        selectedItem: null,
+        fridgeItems: [],
       }
   },
   methods: {
@@ -37,7 +48,13 @@ export default {
       },
     hideModal(){
         this.visible=false;
+    },
+    addItemToFridge() {
+        alert("Denne knappen legger en ny vare i kjøleskapet")
     }
+  },
+  mounted(){
+      this.fridgeItems = API.getFridgeItems();
   }
 }
 </script>
@@ -49,7 +66,24 @@ main {
     background-color: base.$white;
 }
 
-#itemCOntainer {
+#itemContainer {
     background-color: base.$grey;
 }
+
+#addItemBtn {
+  width: 2.5em;
+  height: 2.5em;
+  border-radius: 50%;
+  font-size: 30px;
+  border:none;
+  background-color: base.$green;
+  color: white;
+  box-shadow: 0px 0px 20px rgba(0,0,0,0.3);
+}
+
+#addItemBtn-container {
+  display:flex;
+  justify-content: right;
+}
+
 </style>
\ No newline at end of file
-- 
GitLab