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