Online Team Feedback Collection Tool

Online Team Feedback Collection Tool

Live Feedback Stream

Loading feedback...

Share Your Feedback

From: ${from}

Date: ${timestamp}

`; return card; } // --- EVENT LISTENERS --- // Tab navigation if (tabsContainer) { tabsContainer.addEventListener('click', (event) => { if (event.target.matches('.tab-btn')) { const tabIndex = parseInt(event.target.dataset.tabIndex); document.querySelectorAll('.tab-btn').forEach((btn, i) => { btn.classList.toggle('active', i === tabIndex); btn.classList.toggle('inactive', i !== tabIndex); }); tabContents.forEach((content, i) => { content.classList.toggle('active', i === tabIndex); }); } }); } // Feedback form submission if (feedbackForm) { feedbackForm.addEventListener('submit', async (e) => { e.preventDefault(); if (!currentUserId) { alert("Not authenticated. Please wait or refresh."); return; } const submitBtn = document.getElementById('submit-btn'); submitBtn.disabled = true; submitBtn.textContent = 'Submitting...'; const formData = new FormData(feedbackForm); const isAnonymous = document.getElementById('anonymous-checkbox').checked; const feedbackData = { to: formData.get('feedback-to'), category: document.getElementById('feedback-category').value, rating: parseInt(formData.get('rating')), message: document.getElementById('feedback-message').value, from: isAnonymous ? 'Anonymous' : currentUserId, timestamp: serverTimestamp() }; try { await addDoc(collection(db, `artifacts/${appId}/public/data/feedback`), feedbackData); // Show success message and reset form const successMsg = document.getElementById('submit-success-message'); if (successMsg) { successMsg.classList.remove('hidden'); setTimeout(() => successMsg.classList.add('hidden'), 4000); } feedbackForm.reset(); } catch (error) { console.error("Error submitting feedback:", error); alert("Failed to submit feedback. Please try again."); } finally { submitBtn.disabled = false; submitBtn.textContent = 'Submit Feedback'; } }); } // Filter change listener if(filterCategory) { filterCategory.addEventListener('change', renderFeedback); } // --- INITIALIZATION --- initializeAuth(); });
Scroll to Top