diff --git a/src/main/webapp/js/trainers.js b/src/main/webapp/js/trainers.js index 314623cb1ac36124cc621a2fc28acc0fca4e1c3c..e3ccae4b3845603eee5abcf3d790c14ad53ea9f5 100644 --- a/src/main/webapp/js/trainers.js +++ b/src/main/webapp/js/trainers.js @@ -13,7 +13,7 @@ function updateDetails(trainerId) { parent.innerHTML = ` <div class="card" id="${tr.id}_card"> - <img src="${tr.profileUrl}" class="card-img-top" alt="${tr.name}"> + ${tr.profileUrl ? `<img src="${tr.profileUrl}" class="card-img-top" alt="${tr.name}">` : ''} <div class="card-body"> <h5 class="card-title">${tr.name}</h5> <p class="card-text"> @@ -52,4 +52,45 @@ function createTrainersTable() { </tbody> </table> ` +} + +function refreshTable() { + tableParentId = "tableDiv"; + detailsParentId = "detailsDiv"; + + fetch('/pokemon/api/trainers') + .then(res => res.json()) + .then(data => { + trainers = data; + createTrainersTable() + }) + .catch(err => { + console.error(`Unable to fetch trainers: ${err.status}`); + console.error(err); + }); +} + + +function handleTrainerCreate(event) { + event.preventDefault(); + const trainerName = document.getElementById("trainerName").value; + + const postData = JSON.stringify({name: trainerName}) + + + fetch( + 'api/trainers', { + method: 'POST', + headers: { + 'Content-Type' : 'application/json' + }, + body: postData + }) + .then(response => response.json()) + .then(data => { + refreshTable(); + }) + .catch(err => { + console.error('Error', err); + }) } \ No newline at end of file diff --git a/src/main/webapp/trainers.html b/src/main/webapp/trainers.html index 8e25048ec49849605d849fe2a7863746760a1244..30ca5f34e6060a17a240bdb83a5f21c772ba9b86 100644 --- a/src/main/webapp/trainers.html +++ b/src/main/webapp/trainers.html @@ -15,30 +15,32 @@ <body> <script src="js/trainers.js"></script> -<script> - tableParentId = "tableDiv"; - detailsParentId = "detailsDiv"; - - fetch('/pokemon/api/trainers') - .then(res => res.json()) - .then(data => { - trainers = data; - createTrainersTable() - }) - .catch(err => { - console.error(`Unable to fetch trainers: ${err.status}`); - console.error(err); - }); -</script> <h1>Trainers</h1> <div class="container"> - <div class="row"> - <div id="tableDiv" class="col-8">No data</div> - <div id="detailsDiv" class="col-4">No data</div> + <div style="padding:20px" > + <form id="createTrainerForm"> + <div class="form-group"> + <label for="trainerName">Trainer Name</label> + <input type="text" class="form-control" id="trainerName" placeholder="Enter Trainer Name"> + </div> + <button type="submit" class="btn btn-primary">Create Trainer</button> + </form> + </div> + + <div class="container"> + <div class="row"> + <div id="tableDiv" class="col-8">No data</div> + <div id="detailsDiv" class="col-4">No data</div> + </div> </div> </div> +<script> + const createTrainerForm = document.getElementById("createTrainerForm"); + createTrainerForm.addEventListener("submit", handleTrainerCreate); + refreshTable(); +</script> </body> </html> \ No newline at end of file