Преглед изворни кода

Re-implement the ability to add recipes through a spreadsheet.

Lee Morgan пре 5 година
родитељ
комит
cec10f7f2a

+ 2 - 0
views/dashboardPage/ejs/sidebars/newRecipe.ejs

@@ -23,6 +23,8 @@
             <div id="newRecipeChosenList"></div>
 
             <button id="submitNewRecipe" class="sidebarButton">CREATE</button>
+
+            <button id="recipeFileUpload" class="linkButton">Or, upload a spreadsheet</button>
         </div>
     </div>
 

+ 36 - 0
views/dashboardPage/js/sidebars/newRecipe.js

@@ -5,6 +5,7 @@ let newRecipe = {
         document.getElementById("sidebarDiv").classList.add("sidebarWide");
 
         document.getElementById("submitNewRecipe").onclick = ()=>{this.submit()};
+        document.getElementById("recipeFileUpload").onclick = ()=>{controller.openModal("recipeSpreadsheet")};
 
         for(let i = 0; i < merchant.ingredients.length; i++){
             this.unchosen.push(merchant.ingredients[i].ingredient);
@@ -92,6 +93,41 @@ let newRecipe = {
             .finally(()=>{
                 loader.style.display = "none";
             });
+    },
+
+    submitSpreadsheet: function(){
+        event.preventDefault();
+        controller.closeModal();
+
+        const file = document.getElementById("spreadsheetInput").files[0];
+        let data = new FormData();
+        data.append("recipes", file);
+
+        let loader = document.getElementById("loaderContainer");
+        loader.style.display = "flex";
+
+        fetch("/recipes/create/spreadsheet", {
+            method: "post",
+            body: data
+        })
+            .then(response => response.json())
+            .then((response)=>{
+                if(typeof(response) === "string"){
+                    controller.createBanner(response, "error");
+                }else{
+                    merchant.addRecipes(response);
+                    state.updateRecipes();
+
+                    controller.createBanner("ALL RECIPES SUCCESSFULLY CREATED", "success");
+                    controller.openStrand("recipeBook");
+                }
+            })
+            .catch((err)=>{
+                controller.createBanner("UNABLE TO DISPLAY NEW RECIPES.  PLEASE REFRESH THE PAGE", "error");
+            })
+            .finally(()=>{
+                loader.style.display = "none";
+            });
     }
 };