Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- function attachEvents() {
- let allCatchesDiv = document.getElementById("catches");
- let addCatchButton = Array.from(document.getElementsByClassName("add"))[0];
- let loggedIn = sessionStorage.getItem("token");
- let loggedEmail=sessionStorage.getItem("loggedEmail");
- console.log(loggedEmail)
- if (loggedIn != null) {
- // console.log("you are logged in")
- // console.log(loggedIn)
- addCatchButton.disabled = false;
- }
- addCatchButton.addEventListener("click", addNewCatch);
- function addNewCatch() {
- let addForm = document.getElementById("addForm");
- let inputs = Array.from(addForm.querySelectorAll("input"));
- let newAng = inputs[0].value;
- let newWeight = inputs[1].value;
- let newSpecies = inputs[2].value;
- let newLocation = inputs[3].value;
- let newBait = inputs[4].value;
- let newCaptureTime = inputs[5].value;
- //json because of the sucky white space!
- let newCatchObj = {
- "angler": newAng,
- "weight": newWeight,
- "species": newSpecies,
- "location": newLocation,
- "bait": newBait,
- "captureTime ": newCaptureTime,
- "createdBy": loggedEmail
- }
- let myHeaders = new Headers();
- myHeaders.append("Content-Type", "application/json");
- myHeaders.append("X-Authorization", loggedIn)
- var raw = JSON.stringify(newCatchObj);
- var requestOptions = {
- method: 'POST',
- headers: myHeaders,
- body: raw,
- redirect: 'follow'
- };
- fetch("http://localhost:3030/data/catches", requestOptions)
- .then(response => response.json())
- .then(result => getAllCatches())
- .catch(error => console.log('error', error));
- }
- function getAllCatches() {
- let requestOptions = {
- method: 'GET',
- redirect: 'follow'
- };
- fetch("http://localhost:3030/data/catches", requestOptions)
- .then(response => response.json())
- .then(result => renderAllCatches(result))
- .catch(error => console.log('error', error));
- }
- function renderAllCatches(data) {
- allCatchesDiv.innerHTML = "";
- data.forEach(c => {
- let catchDiv = document.createElement("div");
- //set id equal to catch id to retreive (update/delete) the catch
- catchDiv.id = c._id;
- //in order to check if logged user is owner of catch
- catchDiv.setAttribute('data-id', c.createdBy);
- catchDiv.className = "catch";
- let anglerLabel = document.createElement("label");
- anglerLabel.textContent = "Angler";
- let anglerInput = document.createElement("input");
- anglerInput.className = "angler";
- anglerInput.value = c.angler;
- let hrOne = document.createElement("hr");
- let weightLabel = document.createElement("label");
- weightLabel.textContent = "Weight";
- let weightInput = document.createElement("input");
- weightInput.type = "number";
- weightInput.className = "weight";
- weightInput.value = c.weight;
- let hrWtwo = document.createElement("hr");
- let speciesLabel = document.createElement("label");
- speciesLabel.textContent = "Species";
- let speciesInput = document.createElement("input");
- speciesInput.type = "text";
- speciesInput.className = "species";
- speciesInput.value = c.species;
- let hrThree = document.createElement("hr");
- let locationLabel = document.createElement("label");
- locationLabel.textContent = "Location";
- let locationInput = document.createElement("input");
- locationInput.type = "text";
- locationInput.className = "location";
- locationInput.value = c.location;
- let baitLabel = document.createElement("label");
- baitLabel.textContent = "Bait";
- let baitInput = document.createElement("input");
- baitInput.type = "text";
- baitInput.className = "bait";
- baitInput.value = c.bait;
- let hrFour = document.createElement("hr");
- let hrFuck = document.createElement("hr");
- let captureTimeLabel = document.createElement("label");
- captureTimeLabel.textContent = "Capture time";
- let captureTimeInput = document.createElement("input");
- captureTimeInput.type = "text";
- captureTimeInput.className = "bait";
- //because of the white space in the field name returned by the server!!!!!!!!!!!!!!
- let captureTime = "captureTime "
- captureTimeInput.value = c[captureTime];
- let updateButton = document.createElement("button");
- updateButton.textContent = "Update";
- updateButton.className = "update";
- if (c.hasOwnProperty("createdBy")&& catchDiv.getAttribute('data-id')==loggedEmail) {
- updateButton.disabled = false;
- } else {
- updateButton.disabled = true;
- }
- updateButton.addEventListener("click", () => updateCatch(catchDiv.id, catchDiv))
- let deleteButton = document.createElement("button");
- deleteButton.textContent = "Delete";
- deleteButton.className = "delete";
- if(c.hasOwnProperty("createdBy")&& catchDiv.getAttribute('data-id')==loggedEmail){
- deleteButton.disabled = false;
- } else {
- deleteButton.disabled = true;
- }
- deleteButton.addEventListener("click", () => (deleteCatch(catchDiv.id)))
- catchDiv.appendChild(anglerLabel);
- catchDiv.appendChild(anglerInput);
- catchDiv.appendChild(hrOne);
- catchDiv.appendChild(weightLabel);
- catchDiv.appendChild(weightInput);
- catchDiv.appendChild(hrWtwo);
- catchDiv.appendChild(speciesLabel);
- catchDiv.appendChild(speciesInput);
- catchDiv.appendChild(hrThree);
- catchDiv.appendChild(locationLabel);
- catchDiv.appendChild(locationInput);
- catchDiv.appendChild(hrFour);
- catchDiv.appendChild(baitLabel);
- catchDiv.appendChild(baitInput);
- catchDiv.appendChild(hrFuck);
- catchDiv.appendChild(captureTimeLabel);
- catchDiv.appendChild(captureTimeInput)
- catchDiv.appendChild(updateButton);
- catchDiv.appendChild(deleteButton);
- allCatchesDiv.appendChild(catchDiv);
- });
- }
- //finish this shit
- function updateCatch(id, catchDiv) {
- //the fast and ugly way to get the values
- let values = [];
- let inputs = Array.from(catchDiv.querySelectorAll("input"))
- inputs.forEach(i => {
- values.push(i.value);
- })
- console.log(values);
- //now fight with that white space again
- let captureTime = "captureTime "
- let updatedObj = {
- angler: values[0],
- weight: values[1],
- species: values[2],
- location: values[3],
- bait: values[4]
- }
- updatedObj[captureTime] = values[5];
- console.log(id)
- let myHeaders = new Headers();
- myHeaders.append("X-Authorization", loggedIn);
- myHeaders.append("Content-Type", "application/json");
- let raw = JSON.stringify(updatedObj);
- let requestOptions = {
- method: 'PUT',
- headers: myHeaders,
- body: raw,
- redirect: 'follow'
- };
- fetch(`http://localhost:3030/data/catches/${id}`, requestOptions)
- .then(response => response.json())
- .then(result => getAllCatches())
- .catch(error => console.log('error', error));
- }
- function deleteCatch(id) {
- let myHeaders = new Headers();
- myHeaders.append("X-Authorization", loggedIn);
- var requestOptions = {
- method: 'DELETE',
- headers: myHeaders,
- redirect: 'follow'
- };
- fetch(`http://localhost:3030/data/catches/${id}`, requestOptions)
- .then(response => response.json())
- .then(result => getAllCatches())
- .catch(error => console.log('error', error));
- }
- getAllCatches();
- }
- attachEvents();
Add Comment
Please, Sign In to add comment