Răsfoiți Sursa

Complete basic home page

Lee Morgan 6 ani în urmă
părinte
comite
3eb097ece6
3 a modificat fișierele cu 62 adăugiri și 32 ștergeri
  1. 31 0
      views/inventory/inventory.css
  2. 16 12
      views/inventory/inventory.ejs
  3. 15 20
      views/inventory/inventory.js

+ 31 - 0
views/inventory/inventory.css

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

+ 16 - 12
views/inventory/inventory.ejs

@@ -7,21 +7,25 @@
     <body>
         <% include ../shared/header %>
 
-        <input id="filter" onkeyup="filter()" type="text">
+        <div class="container">
+            <h1><%= merchant.name %> inventory</h1>
 
-        <table>
-            <thead>
-                <tr>
-                    <th>Item</th>
-                    <th>Category</th>
-                    <th>Quantity</th>
-                </tr>
-                <tbody></tbody>
-            </thead>
-        </table>
+            <input id="filter" onkeyup="filter()" type="text" placeholder="Start typing to filter">
+
+            <table>
+                <thead>
+                    <tr>
+                        <th onclick="sortIngredients('name')">Item</th>
+                        <th onclick="sortIngredients('category')">Category</th>
+                        <th onclick="sortIngredients('quantity')">Quantity</th>
+                        <th onclick="sortIngredients('unit')">Unit</th>
+                    </tr>
+                    <tbody></tbody>
+                </thead>
+            </table>
+        </div>
 
         <script>let merchant = <%- JSON.stringify(merchant) %>;</script>
-        <script src="https://unpkg.com/axios/dist/axios.min.js"></script>
         <script src="/inventory/inventory.js"></script>
     </body>
 </html>

+ 15 - 20
views/inventory/inventory.js

@@ -1,18 +1,7 @@
-console.log(merchant);
-
-let fullList = [];
-for(let item of merchant.inventory){
-    fullList.push({
-        name: item.ingredient.name,
-        category: item.ingredient.category,
-        quantity: item.quantity,
-        unit: item.ingredient.unitType 
-    });
-}
-
+let items = [];
 let tbody = document.querySelector("tbody");
 
-let renderIngredients = (items = fullList)=>{
+let renderIngredients = ()=>{
     while(tbody.hasChildNodes()){
         tbody.removeChild(tbody.firstChild);
     }
@@ -39,21 +28,27 @@ let renderIngredients = (items = fullList)=>{
     }
 }
 
-let sortIngredients = (items = fullList)=>{
-    items.sort((a, b) => (a.name > b.name) ? 1 : -1)
+let sortIngredients = (property)=>{
+    items.sort((a, b) => (a[property] > b[property]) ? 1 : -1);
     renderIngredients();
 }
 
 let filter = ()=>{
-    let items = [];
+    items = [];
     let searchString = document.querySelector("#filter").value;
-    for(let item of fullList){
-        if(item.name.toLowerCase().includes(searchString)){
-            items.push(item);
+    for(let item of merchant.inventory){
+        if(item.ingredient.name.toLowerCase().includes(searchString)){
+            items.push({
+                name: item.ingredient.name,
+                category: item.ingredient.category,
+                quantity: item.quantity,
+                unit: item.ingredient.unitType
+            });
         }
     }
 
+    sortIngredients("name");
     renderIngredients(items);
 }
 
-sortIngredients();
+filter();