Spaces:
Running
Running
File size: 2,374 Bytes
bbf5330 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 |
// Main application logic
document.addEventListener('DOMContentLoaded', () => {
// Initialize tooltips
const tooltipTriggerList = [].slice.call(document.querySelectorAll('[data-bs-toggle="tooltip"]'));
tooltipTriggerList.map(tooltipTriggerEl => {
return new bootstrap.Tooltip(tooltipTriggerEl);
});
// Handle navigation for mobile menu
const mobileMenuButton = document.getElementById('mobile-menu-button');
const mobileMenu = document.getElementById('mobile-menu');
if(mobileMenuButton && mobileMenu) {
mobileMenuButton.addEventListener('click', () => {
mobileMenu.classList.toggle('hidden');
});
}
// Translation functionality (mock)
window.translatePage = (langCode) => {
console.log(`Translating page to ${langCode}`);
// In a real app, this would call your translation API
};
});
// Game progress tracking
class ProgressTracker {
constructor() {
this.dailyGoals = {
languagePractice: false,
documentUpload: false,
resourceViewed: false
};
}
completeTask(taskName) {
if (this.dailyGoals.hasOwnProperty(taskName)) {
this.dailyGoals[taskName] = true;
this.updateProgress();
}
}
updateProgress() {
const completed = Object.values(this.dailyGoals).filter(Boolean).length;
const total = Object.keys(this.dailyGoals).length;
const percent = (completed / total) * 100;
document.querySelectorAll('.progress-percent').forEach(el => {
el.textContent = `${Math.round(percent)}%`;
});
const circle = document.querySelector('.progress-ring-circle');
if (circle) {
const radius = circle.r.baseVal.value;
const circumference = 2 * Math.PI * radius;
const offset = circumference - (percent / 100) * circumference;
circle.style.strokeDashoffset = offset;
}
}
}
// Initialize progress tracking
const tracker = new ProgressTracker();
window.tracker = tracker;
// Simulate completing tasks for demo
document.addEventListener('click', (e) => {
if (e.target.closest('.complete-task-btn')) {
const taskName = e.target.closest('.complete-task-btn').dataset.task;
tracker.completeTask(taskName);
}
}); |