mirror of
https://github.com/cse110-fa22-group29/cse110-fa22-group29.git
synced 2024-12-26 17:09:09 +00:00
Merge pull request #75 from cse110-fa22-group29/allow-for-user-uploaded-images
implementation of basic image local storage
This commit is contained in:
commit
9c531771f2
@ -40,9 +40,14 @@
|
|||||||
<form id="new-food-entry">
|
<form id="new-food-entry">
|
||||||
<fieldset>
|
<fieldset>
|
||||||
<legend>Pic:</legend>
|
<legend>Pic:</legend>
|
||||||
<label for="mealImage">
|
Choose Input type:
|
||||||
|
<select id="select" name="select">
|
||||||
|
<option value="file">File Upload</option>
|
||||||
|
<option value="url">From an URL</option>
|
||||||
|
</select>
|
||||||
|
<label for="mealImage" id="source">
|
||||||
Source:
|
Source:
|
||||||
<input type="text" id="mealImg" name="mealImg">
|
<input type="file" accept="image/*" id="mealImg" name="mealImg">
|
||||||
</label>
|
</label>
|
||||||
<label for="image-alt">
|
<label for="image-alt">
|
||||||
Alt Text:
|
Alt Text:
|
||||||
|
@ -26,9 +26,14 @@
|
|||||||
<!----> <form id="update-food-entry" class="hidden">
|
<!----> <form id="update-food-entry" class="hidden">
|
||||||
<fieldset>
|
<fieldset>
|
||||||
<legend>Pic:</legend>
|
<legend>Pic:</legend>
|
||||||
<label for="mealImage">
|
Choose Input type:
|
||||||
|
<select id="select" name="select">
|
||||||
|
<option value="file">File Upload</option>
|
||||||
|
<option value="url">From an URL</option>
|
||||||
|
</select>
|
||||||
|
<label for="mealImage" id="source">
|
||||||
Source:
|
Source:
|
||||||
<input type="text" id="mealImg" name="mealImg">
|
<input type="file" accept="image/*" id="mealImg" name="mealImg">
|
||||||
</label>
|
</label>
|
||||||
<label for="image-alt">
|
<label for="image-alt">
|
||||||
Alt Text:
|
Alt Text:
|
||||||
|
@ -15,7 +15,44 @@ function initFormHandler() {
|
|||||||
//accessing form components
|
//accessing form components
|
||||||
let tagContainer = document.getElementById("tag-container-form");
|
let tagContainer = document.getElementById("tag-container-form");
|
||||||
let form = document.querySelector("form");
|
let form = document.querySelector("form");
|
||||||
|
|
||||||
|
/*
|
||||||
|
* change the input source of the image between local file and URL
|
||||||
|
* depending on user's selection
|
||||||
|
*/
|
||||||
|
let select = document.getElementById("select");
|
||||||
|
select.addEventListener("change", function() {
|
||||||
|
const input = document.getElementById('source');
|
||||||
|
|
||||||
|
if (select.value == "file") {
|
||||||
|
input.innerHTML = `
|
||||||
|
Source:
|
||||||
|
<input type="file" accept="image/*" id="mealImg" name="mealImg">
|
||||||
|
`
|
||||||
|
}
|
||||||
|
//TODO: change to photo taking for sprint 3
|
||||||
|
else {
|
||||||
|
input.innerHTML = `
|
||||||
|
Source:
|
||||||
|
<input type="text" id="mealImg" name="mealImg">
|
||||||
|
`
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
//addressing sourcing image from local file
|
||||||
|
let imgDataURL = "";
|
||||||
|
document.getElementById("mealImg").addEventListener("change", function() {
|
||||||
|
const reader = new FileReader();
|
||||||
|
|
||||||
|
//store image data URL after successful image load
|
||||||
|
reader.addEventListener("load", ()=>{
|
||||||
|
imgDataURL = reader.result;
|
||||||
|
}, false);
|
||||||
|
|
||||||
|
//convert image file into data URL for local storage
|
||||||
|
reader.readAsDataURL(document.getElementById("mealImg").files[0]);
|
||||||
|
})
|
||||||
|
|
||||||
form.addEventListener("submit", function(e){
|
form.addEventListener("submit", function(e){
|
||||||
/*
|
/*
|
||||||
* User submits the form for their review.
|
* User submits the form for their review.
|
||||||
@ -30,6 +67,9 @@ function initFormHandler() {
|
|||||||
if (`${key}` !== "tag-form") {
|
if (`${key}` !== "tag-form") {
|
||||||
reviewObject[`${key}`] = `${value}`;
|
reviewObject[`${key}`] = `${value}`;
|
||||||
}
|
}
|
||||||
|
if (`${key}` === "mealImg" && select.value == "file") {
|
||||||
|
reviewObject["mealImg"] = imgDataURL;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
reviewObject["tags"] = [];
|
reviewObject["tags"] = [];
|
||||||
|
|
||||||
|
@ -55,6 +55,46 @@ function setupUpdate(){
|
|||||||
tagContainer.append(newTag);
|
tagContainer.append(newTag);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* change the input source of the image between local file and URL
|
||||||
|
* depending on user's selection
|
||||||
|
*/
|
||||||
|
let select = document.getElementById("select");
|
||||||
|
select.addEventListener("change", function() {
|
||||||
|
const input = document.getElementById('source');
|
||||||
|
|
||||||
|
if (select.value == "file") {
|
||||||
|
input.innerHTML = `
|
||||||
|
Source:
|
||||||
|
<input type="file" accept="image/*" id="mealImg" name="mealImg">
|
||||||
|
`
|
||||||
|
}
|
||||||
|
//TODO: change to photo taking for sprint 3
|
||||||
|
else {
|
||||||
|
input.innerHTML = `
|
||||||
|
Source:
|
||||||
|
<input type="text" id="mealImg" name="mealImg">
|
||||||
|
`
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
//addressing sourcing image from local file
|
||||||
|
let imgDataURL = "";
|
||||||
|
document.getElementById("mealImg").addEventListener("change", function() {
|
||||||
|
console.log("reading used");
|
||||||
|
const reader = new FileReader();
|
||||||
|
|
||||||
|
//store image data URL after successful image load
|
||||||
|
reader.addEventListener("load", ()=>{
|
||||||
|
imgDataURL = reader.result;
|
||||||
|
}, false);
|
||||||
|
|
||||||
|
//convert image file into data URL for local storage
|
||||||
|
reader.readAsDataURL(document.getElementById("mealImg").files[0]);
|
||||||
|
})
|
||||||
|
|
||||||
|
|
||||||
//Take formdata values as newData when submit
|
//Take formdata values as newData when submit
|
||||||
form.addEventListener("submit", function(){
|
form.addEventListener("submit", function(){
|
||||||
/*
|
/*
|
||||||
@ -69,6 +109,13 @@ function setupUpdate(){
|
|||||||
if (`${key}` !== "tag-form") {
|
if (`${key}` !== "tag-form") {
|
||||||
newData[`${key}`] = `${value}`;
|
newData[`${key}`] = `${value}`;
|
||||||
}
|
}
|
||||||
|
//Account for the case where image is not updated
|
||||||
|
if (`${key}` === "mealImg" && document.getElementById("mealImg").value === "") {
|
||||||
|
newData["mealImg"] = currReview["mealImg"];
|
||||||
|
}
|
||||||
|
else if (`${key}` === "mealImg" && select.value == "file") {
|
||||||
|
newData["mealImg"] = imgDataURL;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
newData["tags"] = [];
|
newData["tags"] = [];
|
||||||
|
|
||||||
|
@ -10,7 +10,6 @@
|
|||||||
<!-- Recipe Card Custom Element -->
|
<!-- Recipe Card Custom Element -->
|
||||||
<script src="assets/scripts/ReviewCard.js" type="module"></script>
|
<script src="assets/scripts/ReviewCard.js" type="module"></script>
|
||||||
|
|
||||||
|
|
||||||
<!-- Main Stylesheets & Scripts -->
|
<!-- Main Stylesheets & Scripts -->
|
||||||
<!-- Temporarily commented out reset.css due to furthur discussion needed on the values of the default config-->
|
<!-- Temporarily commented out reset.css due to furthur discussion needed on the values of the default config-->
|
||||||
<!-- <link rel="stylesheet" href="/static/reset.css" /> -->
|
<!-- <link rel="stylesheet" href="/static/reset.css" /> -->
|
||||||
|
Loading…
Reference in New Issue
Block a user