44 lines
1.8 KiB
JavaScript
44 lines
1.8 KiB
JavaScript
import {loadingGif} from "./loading.js";
|
|
import {androidResultTable} from "./androidResultTable.js";
|
|
import {setCreatureTable} from "./setCreatureTable.js";
|
|
|
|
|
|
document.getElementById('searchForm').addEventListener('submit', function (event) {
|
|
event.preventDefault();
|
|
const creatureName = document.getElementById('creature').value;
|
|
const queryParams = new URLSearchParams({
|
|
creature: creatureName,
|
|
});
|
|
|
|
// Insert the loading.gif before making the fetch request
|
|
let resultSection = document.getElementById('resultSection');
|
|
let imgElement = loadingGif(resultSection);
|
|
|
|
setTimeout(() => {
|
|
fetch(`${window.BASE_URL}/rules/creature?${queryParams}`)
|
|
.then((response) => {
|
|
if (!response.ok) {
|
|
throw response;
|
|
}
|
|
return response.json(); // we only get here if there is no error
|
|
})
|
|
.then((json) => {
|
|
if (json === null) { // if json is null update the image and stop execution
|
|
imgElement.src = `${window.IMG}/404.jpg`;
|
|
throw new Error('No data found'); // this will stop the execution and go to the catch block
|
|
}
|
|
resultSection.innerHTML = ''; // Clear previous content
|
|
if (creatureName === 'android') {
|
|
androidResultTable(json, creatureName);
|
|
} else {
|
|
setCreatureTable(json, creatureName);
|
|
}
|
|
})
|
|
.catch((err) => {
|
|
console.log(err);
|
|
if (!resultSection.hasChildNodes()) { // Only update the image if it wasn't already updated
|
|
imgElement.src = `${window.IMG}/404.jpg`;
|
|
}
|
|
});
|
|
}, 1000);
|
|
}); |