mirror of
https://github.com/cse110-fa22-group29/cse110-fa22-group29.git
synced 2025-09-10 00:27:20 +00:00
@@ -13,27 +13,26 @@ function init() {
|
||||
* Creates a form and associates a new ID with the new review card.
|
||||
*/
|
||||
function initFormHandler() {
|
||||
|
||||
// Accesses form components
|
||||
let tagContainer = document.getElementById("tag-container-form");
|
||||
let form = document.querySelector("form");
|
||||
|
||||
|
||||
// Declaring variable storing image data url
|
||||
let imgDataURL = "";
|
||||
|
||||
|
||||
// Accessing components related to taking photo
|
||||
let videoMode = true;
|
||||
let player = document.getElementById("player");
|
||||
let canvas = document.getElementById("photoCanvas");
|
||||
let photoButton = document.getElementById("photoButton");
|
||||
let context = canvas.getContext('2d');
|
||||
let context = canvas.getContext("2d");
|
||||
|
||||
// Event listener for the photo taking/reset button
|
||||
photoButton.addEventListener('click', ()=>{
|
||||
photoButton.addEventListener("click", () => {
|
||||
// capturing the current video frame
|
||||
if (videoMode) {
|
||||
videoMode = false;
|
||||
|
||||
|
||||
// setting up the appropriate components for displaying the photo preview
|
||||
photoButton.innerText = "Retake";
|
||||
player.setAttribute("hidden", "");
|
||||
@@ -57,7 +56,7 @@ function initFormHandler() {
|
||||
// Event listener for reading image form different data
|
||||
let select = document.getElementById("select");
|
||||
const input = document.getElementById("mealImg");
|
||||
select.addEventListener("change", function() {
|
||||
select.addEventListener("change", function () {
|
||||
// Select a photo with HTML file selector
|
||||
if (select.value == "file") {
|
||||
// enabling file upload components and hiding photo taking components
|
||||
@@ -80,27 +79,30 @@ function initFormHandler() {
|
||||
photoButton.removeAttribute("hidden", "");
|
||||
|
||||
// getting video stream from user's camera then displaying it on a video element
|
||||
navigator.mediaDevices.getUserMedia({video: true,}).then((stream)=>{
|
||||
navigator.mediaDevices.getUserMedia({ video: true }).then((stream) => {
|
||||
player.srcObject = stream;
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
// Addresses sourcing image from local file
|
||||
document.getElementById("mealImg").addEventListener("change", function() {
|
||||
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);
|
||||
|
||||
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) {
|
||||
// Create reviewObject and put in storage
|
||||
e.preventDefault();
|
||||
let formData = new FormData(form);
|
||||
@@ -119,14 +121,13 @@ function initFormHandler() {
|
||||
}
|
||||
|
||||
// Makes sure that ratings is filled
|
||||
if(reviewObject["rating"] != null){
|
||||
|
||||
if (reviewObject["rating"] != null) {
|
||||
//Adds rags separately as an array
|
||||
reviewObject["tags"] = [];
|
||||
|
||||
// Grabs tags
|
||||
let tags = document.querySelectorAll(".tag");
|
||||
for(let i = 0; i < tags.length; i ++) {
|
||||
for (let i = 0; i < tags.length; i++) {
|
||||
reviewObject["tags"].push(tags[i].innerHTML);
|
||||
tagContainer.removeChild(tags[i]);
|
||||
}
|
||||
@@ -134,43 +135,41 @@ function initFormHandler() {
|
||||
// Assigns the new review with a new ID
|
||||
let nextReviewId = newReviewToStorage(reviewObject);
|
||||
sessionStorage.setItem("currID", JSON.stringify(nextReviewId));
|
||||
|
||||
|
||||
// Redirects to a page that shows the newly created review
|
||||
window.location.assign("./ReviewDetails.html");
|
||||
}
|
||||
}
|
||||
// Does not let user proceed if rating is not complete
|
||||
else{
|
||||
else {
|
||||
window.alert("NO! FILL IN STARS");
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
// Event listener for tag functionality
|
||||
let tagAddBtn = document.getElementById("tag-add-btn");
|
||||
//Set used to track tags and ensure no duplicates
|
||||
let tagSet = new Set();
|
||||
tagAddBtn.addEventListener("click", ()=> {
|
||||
tagAddBtn.addEventListener("click", () => {
|
||||
let tagField = document.getElementById("tag-form");
|
||||
|
||||
// If there is a tag, it'll display the tag
|
||||
if (tagField.value.length > 0) {
|
||||
let tagSetVal = tagField.value.toLowerCase();
|
||||
if (!tagSet.has(tagSetVal)){
|
||||
if (!tagSet.has(tagSetVal)) {
|
||||
let tagLabel = document.createElement("label");
|
||||
tagLabel.innerHTML = tagField.value;
|
||||
tagLabel.setAttribute("class","tag");
|
||||
tagLabel.setAttribute("class", "tag");
|
||||
tagSet.add(tagSetVal);
|
||||
tagLabel.addEventListener("click",()=> {
|
||||
tagLabel.addEventListener("click", () => {
|
||||
tagContainer.removeChild(tagLabel);
|
||||
tagSet.delete(tagSetVal);
|
||||
});
|
||||
|
||||
|
||||
tagContainer.append(tagLabel);
|
||||
} else {
|
||||
window.alert("No duplicate tags allowed");
|
||||
}
|
||||
tagField.value = "";
|
||||
}
|
||||
});
|
||||
|
||||
});
|
||||
}
|
||||
|
Reference in New Issue
Block a user