Untitled

 avatar
unknown
javascript
a year ago
5.5 kB
6
Indexable
let currentMissileDetails;

console.log("bruh")

document.addEventListener('DOMContentLoaded', function () {
    const urlParams = new URLSearchParams(window.location.search);
    const missileName = urlParams.get('name');

    fetchAndDisplayMissileDetails(missileName);
});

async function fetchAndDisplayMissileDetails(missileName) {
    try {
        const response = await fetch(`https://wt-api-wv7h.onrender.com/missiles/${missileName}`);
        const missileDetails = await response.json();
        currentMissileDetails = missileDetails;
        displayMissileDetails(missileDetails);
    } catch (error) {
        console.error('Error fetching missile details:', error);
    }
}

document.addEventListener('DOMContentLoaded', function () {
    var goBackButton = document.getElementById('goBackButton');
    goBackButton.addEventListener('click', function () {
        window.history.back();
    });
});
/* add or remove line wether it exists or not in the current object */


function displayMissileDetails(missileDetails) {
    const missileDetailsContainer = document.getElementById('missileDetails');
    
    let detailsHTML = `<h1>${missileDetails.name}</h1>`;
    
    if (missileDetails.mass) {
        detailsHTML += `<p>Mass: ${missileDetails.mass}</p>`;
    }
    if (missileDetails.guidance) {
        detailsHTML += `<p>Guidance: ${missileDetails.guidance}</p>`;
    }
    if (missileDetails.signal) {
        detailsHTML += `<p>Signal: ${missileDetails.signal}</p>`
    }
    if (missileDetails.aspect) {
        detailsHTML += `<p>Aspect: ${missileDetails.aspect}</p>`;
    }
    if (missileDetails.rearAspectLockRange) {
        detailsHTML += `<p>Lock range(rear-aspect): ${missileDetails.rearAspectLockRange}</p>`
    }
    if (missileDetails.launchRange) {
        detailsHTML += `<p>Launch range: ${missileDetails.launchRange}</p>`;
    }
    if (missileDetails.maxSpeed) {
        detailsHTML += `<p>Maximum Speed: ${missileDetails.maxSpeed}</p>`
    }
    if (missileDetails.maxOverload) {
        detailsHTML += `<p>Maximum overload: ${missileDetails.maxOverload}</p>`
    }
    if (missileDetails.guidanceTime) {
        detailsHTML += `<p>Missile guidance time: ${missileDetails.guidanceTime}</p>`
    }
    if (missileDetails.explosiveMass) {
        detailsHTML += `<p>Explosive Mass: ${missileDetails.explosiveMass}</p>`
    }
    if (missileDetails.guidanceAirToGround) {
        detailsHTML += `<p>Guidance: ${missileDetails.guidanceAirToGround}</p>`
    }
    if(missileDetails.maxSpeedAirToGround) {
        detailsHTML += `<p>Maximum speed: ${missileDetails.maxSpeedAirToGround}</p>`
    }
    if (missileDetails.guidanceTimeAirToGround) {
        detailsHTML += `<p>Missile guidance time: ${missileDetails.guidanceTimeAirToGround}</p>`
    }
    if (missileDetails.firingRange) {
        detailsHTML += `<p>Firing Range: ${missileDetails.firingRange}</p>`
    }
    if (missileDetails.armorPenetration) {
        detailsHTML += `<p>Armour penetration: ${missileDetails.armorPenetration}</p>`
    }

    const editButton = document.createElement('button');
    editButton.textContent = 'Edit';
    editButton.addEventListener('click', enableEditMode);
    missileDetailsContainer.innerHTML = detailsHTML;
    missileDetailsContainer.appendChild(editButton);

}


/* --- This entire idea of creating new input boxes was made by chagpt and it failed ---*/
function enableEditMode() {
    const missileDetailsContainer = document.getElementById('missileDetails');
    missileDetailsContainer.innerHTML = '';

    const inputFieldsContainer = document.createElement('div'); 

    for (const prop in missileDetails) {
        if (missileDetails.hasOwnProperty(prop)) {

            if (prop === '_id' || prop === 'name') {
                continue;
            }

            const label = document.createElement('label');
            label.textContent = prop.charAt(0).toUpperCase() + prop.slice(1);
            const input = document.createElement('input');
            input.type = 'text';
            input.value = missileDetails[prop];
            input.id = `edited${prop}Input`;

            inputFieldsContainer.appendChild(label);
            inputFieldsContainer.appendChild(input);
        }
    }
    const saveChangesButton = document.createElement('button');
    saveChangesButton.textContent = 'Save Changes';
    saveChangesButton.addEventListener('click', saveChanges);
    missileDetailsContainer.appendChild(inputFieldsContainer);
    missileDetailsContainer.appendChild(saveChangesButton);
}
function saveChanges() {
    const missileDetailsContainer = document.getElementById('missileDetails');

    for (const prop in missileDetails) {
        if (missileDetails.hasOwnProperty(prop) && prop !== '_id' && prop !== 'name') {
            const editedValue = document.getElementById(`edited${prop}Input`).value;
            missileDetails[prop] = editedValue;
        }
    }

    fetch(`https://wt-api-wv7h.onrender.com/missiles/${missileDetails._id}`, {
        method: 'PATCH',
        headers: {
            'Content-Type': 'application/json',
        },
        body: JSON.stringify(missileDetails),
    })
    .then(response => response.json())
    .then(data => {
        console.log('Success:', data);
        displayMissileDetails(missileDetails);
    })
    .catch(error => {
        console.error('Error:', error);
    });
}


Editor is loading...
Leave a Comment