Jelajahi Sumber

Basic display of add ingredients page

Lee Morgan 6 tahun lalu
induk
melakukan
1c96c3e166

+ 0 - 27
Controllers/Controller.js

@@ -1,27 +0,0 @@
-const mongoose = require("mongoose");
-const Ingredient = require("../Models/Ingredient");
-
-const merchantId = "HCVKASXH94531";
-const token = "f1c88a69-e3e4-059a-da06-8858d0636e82";
-
-module.exports = {
-    getIngredients: (req, res)=>{
-        Ingredient.find()
-            .then((ingredients)=>{
-                return res.json(ingredients);
-            })
-            .catch((err)=>{
-                return res.json(err);
-            });
-    },
-
-    createIngredient: (req, res)=>{
-        Ingredient.create(req.body)
-            .then((ingredient)=>{
-                return res.json(ingredient);
-            })
-            .catch((err)=>{
-                return res.json(err);
-            });
-    }
-}

+ 3 - 0
app.js

@@ -5,6 +5,9 @@ const app = express();
 
 mongoose.connect("mongodb://localhost/InventoryManagement", {useNewUrlParser: true, useUnifiedTopology: true});
 
+app.set("view engine", "ejs");
+
+app.use(express.static(__dirname + "/views"));
 app.use(express.urlencoded({extended: true}));
 app.use(express.json());
 

+ 34 - 0
controllers/home.js

@@ -0,0 +1,34 @@
+const Merchant = require("../models/merchant");
+const Ingredient = require("../models/ingredient");
+
+const merchantId = "HCVKASXH94531";
+const token = "f1c88a69-e3e4-059a-da06-8858d0636e82";
+
+module.exports = {
+    displayInventory: (req, res)=>{
+        Merchant.findOne({cloverId: merchantId})
+            .populate("ingredients")
+            .then((merchant)=>{
+                if(merchant){
+                    return res.render("inventory");
+                }else{
+                    return res.redirect("/merchant/new");
+                }
+            })
+            .catch((err)=>{
+                console.log(err);
+                return res.render("error");
+            });
+    },
+
+    merchantSetup: (req, res)=>{
+        Ingredient.find()
+            .then((ingredients)=>{
+                return res.render("merchantSetupPage/merchantSetup", {ingredients: ingredients});
+            })
+            .catch((err)=>{
+                console.log(err);
+                return res.render("error");
+            })
+    }
+}

+ 0 - 0
Models/Ingredient.js → models/ingredient.js


+ 0 - 0
Models/Merchant.js → models/merchant.js


+ 0 - 0
Models/Recipe.js → models/recipe.js


+ 5 - 0
package-lock.json

@@ -104,6 +104,11 @@
       "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz",
       "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0="
     },
+    "ejs": {
+      "version": "2.7.1",
+      "resolved": "https://registry.npmjs.org/ejs/-/ejs-2.7.1.tgz",
+      "integrity": "sha512-kS/gEPzZs3Y1rRsbGX4UOSjtP/CeJP0CxSNZHYxGfVM/VgLcv0ZqM7C45YyTj2DI2g7+P9Dd24C+IMIg6D0nYQ=="
+    },
     "encodeurl": {
       "version": "1.0.2",
       "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz",

+ 1 - 0
package.json

@@ -17,6 +17,7 @@
   },
   "homepage": "https://github.com/The-Subline/Inventory-Management#readme",
   "dependencies": {
+    "ejs": "^2.7.1",
     "express": "^4.17.1",
     "mongoose": "^5.7.1"
   }

+ 3 - 3
routes.js

@@ -1,6 +1,6 @@
-const controller = require("./Controllers/Controller");
+const home = require("./controllers/home");
 
 module.exports = function(app){
-    app.get("/ingredients", controller.getIngredients);
-    app.post("/ingredients", controller.createIngredient);
+    app.get("/", home.displayInventory);
+    app.get("/merchant/new", home.merchantSetup);
 }

+ 1 - 0
views/error.ejs

@@ -0,0 +1 @@
+<h1>Error</h1>

+ 1 - 0
views/inventory.ejs

@@ -0,0 +1 @@
+<h1>Inventory</h1>

+ 25 - 0
views/merchantSetupPage/merchantSetup.css

@@ -0,0 +1,25 @@
+*{margin:0;padding:0;}
+
+.container{
+    display: flex;
+    flex-direction: column;
+    align-items: center;
+}
+
+    h1{
+        margin: 10px;
+    }
+
+    th{
+        border: 2px solid #ff626b;
+        background: #001b2d;
+        color: darkgray;
+        padding: 3px;
+        min-width: 150px;
+    }
+
+    td{
+        border: 1px solid black;
+        text-align: center;
+        padding: 1px 10px;
+    }

+ 28 - 0
views/merchantSetupPage/merchantSetup.ejs

@@ -0,0 +1,28 @@
+<!DOCTYPE html>
+<html>
+    <head>
+        <link rel="stylesheet" href="/merchantSetupPage/merchantSetup.css">
+        <link rel="stylesheet" href="/shared/shared.css">
+    </head>
+    <body>
+        <% include ../shared/header %>
+
+        <div class="container">
+            <h1>Add your first set of ingredients to your pantry</h1>
+
+            <table id="ingredient-display">
+                <tr>
+                    <th>Add</th>
+                    <th>Ingredient</th>
+                    <th>Category</th>
+                    <th>Quantity</th>
+                    <th>Unit</th>
+                </tr>
+            </table>
+        </div>
+
+        <script>let ingredients = <%- JSON.stringify(ingredients) %>;</script>
+        <script src="/merchantSetupPage/merchantSetup.js"></script>
+    </body>
+</html>
+

+ 37 - 0
views/merchantSetupPage/merchantSetup.js

@@ -0,0 +1,37 @@
+console.log(ingredients);
+
+//Populate all ingredients into the table
+let table = document.querySelector("#ingredient-display");
+
+for(let ingredient of ingredients){
+    let row = document.createElement("tr");
+
+    let add = document.createElement("td");
+    let checkbox = document.createElement("input");
+    checkbox.type = "checkbox";
+    add.appendChild(checkbox);
+    row.appendChild(add);
+
+    let name = document.createElement("td");
+    
+    name.innerText = ingredient.name;
+    row.appendChild(name);
+
+    let category = document.createElement("td");
+    category.innerText = ingredient.category;
+    row.appendChild(category);
+
+    let quantity = document.createElement("td");
+    let quantityInput = document.createElement("input");
+    quantityInput.type = "number";
+    quantityInput.step = "0.01";
+    quantityInput.min = "0";
+    quantity.appendChild(quantityInput);
+    row.appendChild(quantity);
+
+    let unit = document.createElement("td");
+    unit.innerText = ingredient.unitType;
+    row.appendChild(unit);
+
+    table.appendChild(row);
+}

+ 6 - 0
views/shared/header.ejs

@@ -0,0 +1,6 @@
+<div class="header">
+    <a href="http://www.thesubline.com" >
+        <img src="/shared/images/logo.png" alt="Subline">
+        <h1>SUBLINE</h1>
+    </a>
+</div>

TEMPAT SAMPAH
views/shared/images/logo.png


+ 25 - 0
views/shared/shared.css

@@ -0,0 +1,25 @@
+.header{
+    display: flex;
+    justify-content: center;
+    background: #001b2d;
+    width: 100%;
+    height: 75px;
+}
+
+    .header a{
+        display: flex;
+        align-items: center;
+        text-decoration: none;
+    }
+
+    .header img{
+        display: inline-block;
+        max-height: 65px;
+        margin: 5px;
+        text-align: center;
+    }
+
+    .header h1{
+        display: inline-block;
+        color: #ff626b;
+    }