36459-vm/assets/js/challenges.js
2025-11-29 17:28:26 +00:00

57 lines
2.1 KiB
JavaScript

document.addEventListener('DOMContentLoaded', function() {
const difficultyFilter = document.getElementById('difficulty-filter');
const learningStyleFilter = document.getElementById('learning-style-filter');
const sortBy = document.getElementById('sort-by');
const challengeList = document.querySelector('.challenge-list');
if (difficultyFilter) {
function fetchChallenges() {
const difficulty = difficultyFilter.value;
const learningStyle = learningStyleFilter.value;
const sort = sortBy.value;
const formData = new FormData();
formData.append('difficulty', difficulty);
formData.append('learning_style', learningStyle);
formData.append('sort_by', sort);
fetch('api/filter_challenges.php', {
method: 'POST',
body: formData
})
.then(response => response.text())
.then(data => {
challengeList.innerHTML = data;
});
}
difficultyFilter.addEventListener('change', fetchChallenges);
learningStyleFilter.addEventListener('change', fetchChallenges);
sortBy.addEventListener('change', fetchChallenges);
}
const runCodeBtn = document.getElementById('run-code');
if (runCodeBtn) {
runCodeBtn.addEventListener('click', function() {
const solution = document.getElementById('solution').value;
const language = document.getElementById('language').value;
const challengeId = document.querySelector('input[name="challenge_id"]').value;
const formData = new FormData();
formData.append('solution', solution);
formData.append('language', language);
formData.append('challenge_id', challengeId);
fetch('api/run_code.php', {
method: 'POST',
body: formData
})
.then(response => response.text())
.then(data => {
const outputDiv = document.getElementById('output');
outputDiv.innerHTML = data;
});
});
}
});