diff --git a/src/static/app.js b/src/static/app.js index dcc1e38..b2b824a 100644 --- a/src/static/app.js +++ b/src/static/app.js @@ -19,12 +19,22 @@ document.addEventListener("DOMContentLoaded", () => { activityCard.className = "activity-card"; const spotsLeft = details.max_participants - details.participants.length; + + const participantsList = details.participants.length > 0 + ? `
+
Participantes:
+ +
` + : '

Nenhum participante inscrito ainda

'; activityCard.innerHTML = `

${name}

${details.description}

Schedule: ${details.schedule}

Availability: ${spotsLeft} spots left

+ ${participantsList} `; activitiesList.appendChild(activityCard); @@ -56,14 +66,25 @@ document.addEventListener("DOMContentLoaded", () => { } ); + if (!response.ok) { + console.error(`HTTP Error: ${response.status} - ${response.statusText}`); + } + const result = await response.json(); if (response.ok) { messageDiv.textContent = result.message; messageDiv.className = "success"; signupForm.reset(); + fetchActivities(); // Atualizar a lista de atividades + } else if (response.status === 401) { + messageDiv.textContent = "Unauthorized: Please log in to sign up for activities."; + messageDiv.className = "error"; + } else if (response.status === 404) { + messageDiv.textContent = "Activity not found. Please try again."; + messageDiv.className = "error"; } else { - messageDiv.textContent = result.detail || "An error occurred"; + messageDiv.textContent = result.detail || "An unexpected error occurred."; messageDiv.className = "error"; } @@ -74,10 +95,10 @@ document.addEventListener("DOMContentLoaded", () => { messageDiv.classList.add("hidden"); }, 5000); } catch (error) { - messageDiv.textContent = "Failed to sign up. Please try again."; + console.error("Network or server error:", error); + messageDiv.textContent = "Failed to sign up. Please check your connection and try again."; messageDiv.className = "error"; messageDiv.classList.remove("hidden"); - console.error("Error signing up:", error); } }); diff --git a/src/static/styles.css b/src/static/styles.css index a533b32..f6c12c6 100644 --- a/src/static/styles.css +++ b/src/static/styles.css @@ -142,3 +142,33 @@ footer { padding: 20px; color: #666; } + +.participants-section { + margin-top: 15px; + padding-top: 15px; + border-top: 1px solid #ddd; +} + +.participants-section h5 { + color: #1a237e; + margin-bottom: 8px; + font-size: 0.95em; +} + +.participants-section ul { + list-style-position: inside; + padding-left: 10px; +} + +.participants-section li { + color: #555; + font-size: 0.9em; + margin-bottom: 4px; +} + +.no-participants { + color: #666; + font-style: italic; + font-size: 0.9em; + margin-top: 15px; +}