Sfoglia il codice sorgente

Update the order filter to working state

Lee Morgan 5 anni fa
parent
commit
3fc10b833d

+ 56 - 53
views/dashboardPage/bundle.js

@@ -1612,7 +1612,7 @@ merchant = new Merchant(data.merchant, data.transactions, {
 });
 
 controller = {
-    openStrand: function(strand){
+    openStrand: function(strand, data = undefined){
         this.closeSidebar();
 
         let strands = document.querySelectorAll(".strand");
@@ -1651,7 +1651,7 @@ controller = {
             case "orders":
                 activeButton = document.getElementById("ordersBtn");
                 document.getElementById("ordersStrand").style.display = "flex";
-                orders.display(Order);
+                orders.display(Order, data);
                 break;
             case "transactions":
                 activeButton = document.getElementById("transactionsBtn");
@@ -1702,7 +1702,7 @@ controller = {
                 orderDetails.display(data);
                 break;
             case "orderFilter":
-                orderFilter.display();
+                orderFilter.display(Order);
                 break;
             case "newOrder":
                 newOrder.display(Order);
@@ -3163,7 +3163,7 @@ let orderDetails = {
 module.exports = orderDetails;
 },{}],18:[function(require,module,exports){
 let orderFilter = {
-    display: function(){
+    display: function(Order){
         let now = new Date();
         let past = new Date(now.getFullYear(), now.getMonth(), now.getDate() - 30);
         let ingredientList = document.getElementById("orderFilterIngredients");
@@ -3187,7 +3187,7 @@ let orderFilter = {
             element.appendChild(text);
         }
 
-        document.getElementById("orderFilterSubmit").onclick = ()=>{this.submit()};
+        document.getElementById("orderFilterSubmit").onclick = ()=>{this.submit(Order)};
     },
 
     toggleActive: function(element){
@@ -3198,7 +3198,7 @@ let orderFilter = {
         }
     },
 
-    submit: function(){
+    submit: function(Order){
         let data = {
             startDate: document.getElementById("orderFilterDateFrom").valueAsDate,
             endDate: document.getElementById("orderFilterDateTo").valueAsDate,
@@ -3235,41 +3235,40 @@ let orderFilter = {
         })
         .then(response => response.json())
         .then((response)=>{
+            let orders = [];
             if(typeof(response) === "string"){
                 banner.createError(response);
+            }else if(response.length === 0){
+                banner.createError("NO ORDERS MATCH YOUR SEARCH");
             }else{
-                let orderList = document.getElementById("orderList");
-                let template = document.getElementById("order").content.children[0];
-
-                while(orderList.children.length > 0){
-                    orderList.removeChild(orderList.firstChild);
-                }
-
+                let ingredients = [];
                 for(let i = 0; i < response.length; i++){
-                    let orderDiv = template.cloneNode(true);
-                    let order = new Order(
+                    for(let j = 0; j < response[i].ingredients.length; j++){
+                        for(let k = 0; k < merchant.ingredients.length; k++){
+                            if(merchant.ingredients[k].ingredient.id === response[i].ingredients[j].ingredient){
+                                ingredients.push({
+                                    ingredient: merchant.ingredients[k].ingredient,
+                                    quantity: response[i].ingredients[j].quantity,
+                                    pricePerUnit: response[i].ingredients[j].pricePerUnit
+                                });
+                                break;
+                            }
+                        }
+                    }
+
+                    orders.push(new Order(
                         response[i]._id,
                         response[i].name,
                         response[i].date,
                         response[i].taxes,
                         response[i].fees,
-                        response[i].ingredients,
+                        ingredients,
                         merchant
-                    );
-
-                    let cost = 0;
-                    for(let j = 0; j < order.ingredients.length; j++){
-                        cost += order.ingredients[j].price * order.ingredients[j].quantity;
-                    }
-
-                    orderDiv.children[0].innerText = order.name;
-                    orderDiv.children[1].innerText = `${order.ingredients.length} items`;
-                    orderDiv.children[2].innerText = order.date.toLocaleDateString();
-                    orderDiv.children[3].innerText = `$${cost.toFixed(2)}`;
-                    orderDiv.onclick = ()=>{controller.openSidebar("orderDetails", order)};
-                    orderList.appendChild(orderDiv);
-                }
+                    ));
+                }    
             }
+
+            controller.openStrand("orders", orders);
         })
         .catch((err)=>{
             banner.createError("UNABLE TO DISPLAY THE ORDERS");
@@ -3285,30 +3284,33 @@ module.exports = orderFilter;
 let orders = {
     orders: [],
 
-    display: function(Order){
+    display: async function(Order, newOrders){
+        if(newOrders){
+            this.orders = newOrders;
+        }
         if(this.orders.length === 0){
-            this.getOrders(Order);
-        }else{
-            document.getElementById("orderFilterBtn").onclick = ()=>{controller.openSidebar("orderFilter")};
-            document.getElementById("newOrderBtn").onclick = ()=>{controller.openSidebar("newOrder")};
+            this.orders = await this.getOrders(Order);
+        }
 
-            let orderList = document.getElementById("orderList");
-            let template = document.getElementById("order").content.children[0];
+        document.getElementById("orderFilterBtn").onclick = ()=>{controller.openSidebar("orderFilter")};
+        document.getElementById("newOrderBtn").onclick = ()=>{controller.openSidebar("newOrder")};
 
-            while(orderList.children.length > 0){
-                orderList.removeChild(orderList.firstChild);
-            }
+        let orderList = document.getElementById("orderList");
+        let template = document.getElementById("order").content.children[0];
 
-            for(let i = 0; i < this.orders.length; i++){
-                let orderDiv = template.cloneNode(true);
-                orderDiv.order = this.orders[i];
-                orderDiv.children[0].innerText = this.orders[i].name;
-                orderDiv.children[1].innerText = `${this.orders[i].ingredients.length} ingredients`;
-                orderDiv.children[2].innerText = this.orders[i].date.toLocaleDateString("en-US");
-                orderDiv.children[3].innerText = `$${this.orders[i].getTotalCost().toFixed(2)}`;
-                orderDiv.onclick = ()=>{controller.openSidebar("orderDetails", this.orders[i])};
-                orderList.appendChild(orderDiv);
-            }
+        while(orderList.children.length > 0){
+            orderList.removeChild(orderList.firstChild);
+        }
+
+        for(let i = 0; i < this.orders.length; i++){
+            let orderDiv = template.cloneNode(true);
+            orderDiv.order = this.orders[i];
+            orderDiv.children[0].innerText = this.orders[i].name;
+            orderDiv.children[1].innerText = `${this.orders[i].ingredients.length} ingredients`;
+            orderDiv.children[2].innerText = this.orders[i].date.toLocaleDateString("en-US");
+            orderDiv.children[3].innerText = `$${this.orders[i].getTotalCost().toFixed(2)}`;
+            orderDiv.onclick = ()=>{controller.openSidebar("orderDetails", this.orders[i])};
+            orderList.appendChild(orderDiv);
         }
     },
 
@@ -3316,7 +3318,7 @@ let orders = {
         let loader = document.getElementById("loaderContainer");
         loader.style.display = "flex";
 
-        fetch("/order", {
+        return fetch("/order", {
             method: "get",
             headers: {
                 "Content-Type": "application/json;charset=utf-8"
@@ -3327,6 +3329,7 @@ let orders = {
             if(typeof(response) === "string"){
                 banner.createError(response);
             }else{
+                let orders = [];
                 let ingredients = [];
                 for(let i = 0; i < response.length; i++){
                     for(let j = 0; j < response[i].ingredients.length; j++){
@@ -3342,7 +3345,7 @@ let orders = {
                         }
                     }
 
-                    this.orders.push(new Order(
+                    orders.push(new Order(
                         response[i]._id,
                         response[i].name,
                         response[i].date,
@@ -3353,7 +3356,7 @@ let orders = {
                     ));
                 }
 
-                this.display();
+                return orders;
             }
         })
         .catch((err)=>{

+ 3 - 3
views/dashboardPage/js/dashboard.js

@@ -36,7 +36,7 @@ merchant = new Merchant(data.merchant, data.transactions, {
 });
 
 controller = {
-    openStrand: function(strand){
+    openStrand: function(strand, data = undefined){
         this.closeSidebar();
 
         let strands = document.querySelectorAll(".strand");
@@ -75,7 +75,7 @@ controller = {
             case "orders":
                 activeButton = document.getElementById("ordersBtn");
                 document.getElementById("ordersStrand").style.display = "flex";
-                orders.display(Order);
+                orders.display(Order, data);
                 break;
             case "transactions":
                 activeButton = document.getElementById("transactionsBtn");
@@ -126,7 +126,7 @@ controller = {
                 orderDetails.display(data);
                 break;
             case "orderFilter":
-                orderFilter.display();
+                orderFilter.display(Order);
                 break;
             case "newOrder":
                 newOrder.display(Order);

+ 26 - 27
views/dashboardPage/js/orderFilter.js

@@ -1,5 +1,5 @@
 let orderFilter = {
-    display: function(){
+    display: function(Order){
         let now = new Date();
         let past = new Date(now.getFullYear(), now.getMonth(), now.getDate() - 30);
         let ingredientList = document.getElementById("orderFilterIngredients");
@@ -23,7 +23,7 @@ let orderFilter = {
             element.appendChild(text);
         }
 
-        document.getElementById("orderFilterSubmit").onclick = ()=>{this.submit()};
+        document.getElementById("orderFilterSubmit").onclick = ()=>{this.submit(Order)};
     },
 
     toggleActive: function(element){
@@ -34,7 +34,7 @@ let orderFilter = {
         }
     },
 
-    submit: function(){
+    submit: function(Order){
         let data = {
             startDate: document.getElementById("orderFilterDateFrom").valueAsDate,
             endDate: document.getElementById("orderFilterDateTo").valueAsDate,
@@ -71,41 +71,40 @@ let orderFilter = {
         })
         .then(response => response.json())
         .then((response)=>{
+            let orders = [];
             if(typeof(response) === "string"){
                 banner.createError(response);
+            }else if(response.length === 0){
+                banner.createError("NO ORDERS MATCH YOUR SEARCH");
             }else{
-                let orderList = document.getElementById("orderList");
-                let template = document.getElementById("order").content.children[0];
-
-                while(orderList.children.length > 0){
-                    orderList.removeChild(orderList.firstChild);
-                }
-
+                let ingredients = [];
                 for(let i = 0; i < response.length; i++){
-                    let orderDiv = template.cloneNode(true);
-                    let order = new Order(
+                    for(let j = 0; j < response[i].ingredients.length; j++){
+                        for(let k = 0; k < merchant.ingredients.length; k++){
+                            if(merchant.ingredients[k].ingredient.id === response[i].ingredients[j].ingredient){
+                                ingredients.push({
+                                    ingredient: merchant.ingredients[k].ingredient,
+                                    quantity: response[i].ingredients[j].quantity,
+                                    pricePerUnit: response[i].ingredients[j].pricePerUnit
+                                });
+                                break;
+                            }
+                        }
+                    }
+
+                    orders.push(new Order(
                         response[i]._id,
                         response[i].name,
                         response[i].date,
                         response[i].taxes,
                         response[i].fees,
-                        response[i].ingredients,
+                        ingredients,
                         merchant
-                    );
-
-                    let cost = 0;
-                    for(let j = 0; j < order.ingredients.length; j++){
-                        cost += order.ingredients[j].price * order.ingredients[j].quantity;
-                    }
-
-                    orderDiv.children[0].innerText = order.name;
-                    orderDiv.children[1].innerText = `${order.ingredients.length} items`;
-                    orderDiv.children[2].innerText = order.date.toLocaleDateString();
-                    orderDiv.children[3].innerText = `$${cost.toFixed(2)}`;
-                    orderDiv.onclick = ()=>{controller.openSidebar("orderDetails", order)};
-                    orderList.appendChild(orderDiv);
-                }
+                    ));
+                }    
             }
+
+            controller.openStrand("orders", orders);
         })
         .catch((err)=>{
             banner.createError("UNABLE TO DISPLAY THE ORDERS");

+ 27 - 23
views/dashboardPage/js/orders.js

@@ -1,30 +1,33 @@
 let orders = {
     orders: [],
 
-    display: function(Order){
+    display: async function(Order, newOrders){
+        if(newOrders){
+            this.orders = newOrders;
+        }
         if(this.orders.length === 0){
-            this.getOrders(Order);
-        }else{
-            document.getElementById("orderFilterBtn").onclick = ()=>{controller.openSidebar("orderFilter")};
-            document.getElementById("newOrderBtn").onclick = ()=>{controller.openSidebar("newOrder")};
+            this.orders = await this.getOrders(Order);
+        }
 
-            let orderList = document.getElementById("orderList");
-            let template = document.getElementById("order").content.children[0];
+        document.getElementById("orderFilterBtn").onclick = ()=>{controller.openSidebar("orderFilter")};
+        document.getElementById("newOrderBtn").onclick = ()=>{controller.openSidebar("newOrder")};
 
-            while(orderList.children.length > 0){
-                orderList.removeChild(orderList.firstChild);
-            }
+        let orderList = document.getElementById("orderList");
+        let template = document.getElementById("order").content.children[0];
 
-            for(let i = 0; i < this.orders.length; i++){
-                let orderDiv = template.cloneNode(true);
-                orderDiv.order = this.orders[i];
-                orderDiv.children[0].innerText = this.orders[i].name;
-                orderDiv.children[1].innerText = `${this.orders[i].ingredients.length} ingredients`;
-                orderDiv.children[2].innerText = this.orders[i].date.toLocaleDateString("en-US");
-                orderDiv.children[3].innerText = `$${this.orders[i].getTotalCost().toFixed(2)}`;
-                orderDiv.onclick = ()=>{controller.openSidebar("orderDetails", this.orders[i])};
-                orderList.appendChild(orderDiv);
-            }
+        while(orderList.children.length > 0){
+            orderList.removeChild(orderList.firstChild);
+        }
+
+        for(let i = 0; i < this.orders.length; i++){
+            let orderDiv = template.cloneNode(true);
+            orderDiv.order = this.orders[i];
+            orderDiv.children[0].innerText = this.orders[i].name;
+            orderDiv.children[1].innerText = `${this.orders[i].ingredients.length} ingredients`;
+            orderDiv.children[2].innerText = this.orders[i].date.toLocaleDateString("en-US");
+            orderDiv.children[3].innerText = `$${this.orders[i].getTotalCost().toFixed(2)}`;
+            orderDiv.onclick = ()=>{controller.openSidebar("orderDetails", this.orders[i])};
+            orderList.appendChild(orderDiv);
         }
     },
 
@@ -32,7 +35,7 @@ let orders = {
         let loader = document.getElementById("loaderContainer");
         loader.style.display = "flex";
 
-        fetch("/order", {
+        return fetch("/order", {
             method: "get",
             headers: {
                 "Content-Type": "application/json;charset=utf-8"
@@ -43,6 +46,7 @@ let orders = {
             if(typeof(response) === "string"){
                 banner.createError(response);
             }else{
+                let orders = [];
                 let ingredients = [];
                 for(let i = 0; i < response.length; i++){
                     for(let j = 0; j < response[i].ingredients.length; j++){
@@ -58,7 +62,7 @@ let orders = {
                         }
                     }
 
-                    this.orders.push(new Order(
+                    orders.push(new Order(
                         response[i]._id,
                         response[i].name,
                         response[i].date,
@@ -69,7 +73,7 @@ let orders = {
                     ));
                 }
 
-                this.display();
+                return orders;
             }
         })
         .catch((err)=>{