Files
backend/edu/script.js
2025-11-19 10:41:46 -05:00

66 lines
2.8 KiB
JavaScript

document.addEventListener('DOMContentLoaded', () => {
// --- Tip of the Day Logic ---
const tips = [
"Spaced repetition is a learning technique that incorporates increasing intervals of time between subsequent review of previously learned material.",
"The Pomodoro Technique uses a timer to break down work into intervals, traditionally 25 minutes in length, separated by short breaks.",
"Teaching someone else is one of the best ways to learn a new concept (The Feynman Technique).",
"Sleep is crucial for memory consolidation. Pulling an all-nighter is often counterproductive.",
"Active recall (testing yourself) is far more effective than passive re-reading.",
"Interleaving practice (mixing different subjects or topics) improves long-term retention compared to blocked practice.",
"Exercise increases blood flow to the brain and can improve cognitive performance.",
"Setting specific, measurable goals (SMART goals) helps maintain motivation.",
"Taking handwritten notes can improve conceptual understanding better than typing.",
"Mnemonic devices like acronyms or rhymes can help encode information into long-term memory."
];
const tipElement = document.getElementById('daily-tip');
const newTipBtn = document.getElementById('new-tip-btn');
function showRandomTip() {
const randomIndex = Math.floor(Math.random() * tips.length);
tipElement.textContent = tips[randomIndex];
// Add a subtle animation effect
tipElement.style.opacity = 0;
setTimeout(() => {
tipElement.style.opacity = 1;
}, 50);
}
if (newTipBtn) {
newTipBtn.addEventListener('click', showRandomTip);
}
// Show initial tip
if (tipElement) {
showRandomTip();
tipElement.style.transition = "opacity 0.5s ease-in-out";
}
// --- Filtering Logic ---
const filterBtns = document.querySelectorAll('.filter-btn');
const cards = document.querySelectorAll('.card');
filterBtns.forEach(btn => {
btn.addEventListener('click', () => {
// Remove active class from all buttons
filterBtns.forEach(b => b.classList.remove('active'));
// Add active class to clicked button
btn.classList.add('active');
const filterValue = btn.getAttribute('data-filter');
cards.forEach(card => {
if (filterValue === 'all' || card.getAttribute('data-category') === filterValue) {
card.style.display = 'flex';
// Add animation for appearing elements
card.style.animation = 'fadeIn 0.5s ease-in-out';
} else {
card.style.display = 'none';
}
});
});
});
});