Skip to content

Commit 158e589

Browse files
farhaanbukhshanistark
authored andcommitted
refactor: Moves the js from njk file for schedule
Signed-off-by: Farhaan Bukhsh <[email protected]>
1 parent 5789d37 commit 158e589

File tree

2 files changed

+70
-70
lines changed

2 files changed

+70
-70
lines changed

src/program/schedule.njk

Lines changed: 1 addition & 70 deletions
Original file line numberDiff line numberDiff line change
@@ -401,73 +401,4 @@ layout: base.njk
401401
</div>
402402
</div>
403403

404-
<script>
405-
document.addEventListener('DOMContentLoaded', () => {
406-
const cards = document.querySelectorAll('.schedule-card');
407-
const contents = document.querySelectorAll('.schedule-content');
408-
let selectedCard = null;
409-
410-
// Function to reset all card backgrounds
411-
const resetCardBackgrounds = () => {
412-
cards.forEach(card => {
413-
const highlightDiv = card.querySelector('.card-grid');
414-
highlightDiv.classList.remove('pycon-bg-lime');
415-
highlightDiv.style.backgroundColor = '#FFFFFF';
416-
});
417-
};
418-
419-
// Function to hide all schedules
420-
const hideAllSchedules = () => {
421-
contents.forEach(content => content.classList.add('hidden'));
422-
};
423-
424-
// Initial state: Highlight the first card and show the first schedule
425-
if (cards.length > 0 && contents.length > 0) {
426-
selectedCard = cards[0];
427-
const firstContentId = selectedCard.getAttribute('data-schedule');
428-
429-
// Highlight the first card
430-
const firstHighlightDiv = selectedCard.querySelector('.card-grid');
431-
firstHighlightDiv.classList.add('bg:pycon-bg-lime');
432-
firstHighlightDiv.style.backgroundColor = '#CDFF89';
433-
434-
// Show the first schedule
435-
document.getElementById(firstContentId).classList.remove('hidden');
436-
}
437-
438-
// Add event listeners to all cards
439-
cards.forEach(card => {
440-
const highlightDiv = card.querySelector('.card-grid');
441-
442-
card.addEventListener('click', () => {
443-
// Reset previous selection
444-
resetCardBackgrounds();
445-
hideAllSchedules();
446-
447-
// Highlight the clicked card
448-
highlightDiv.classList.add('pycon-bg-lime');
449-
highlightDiv.style.backgroundColor = '#CDFF89'; // Lime background
450-
451-
// Show the corresponding schedule
452-
const scheduleId = card.getAttribute('data-schedule');
453-
document.getElementById(scheduleId).classList.remove('hidden');
454-
455-
// Update the selected card
456-
selectedCard = card;
457-
});
458-
459-
// Handle hover for unselected cards
460-
card.addEventListener('mouseenter', () => {
461-
if (card !== selectedCard) {
462-
highlightDiv.style.backgroundColor = '#CDFF89'; // Hover lime background
463-
}
464-
});
465-
466-
card.addEventListener('mouseleave', () => {
467-
if (card !== selectedCard) {
468-
highlightDiv.style.backgroundColor = '#FFFFFF'; // Default white background
469-
}
470-
});
471-
});
472-
});
473-
</script>
404+
<script src="{{ env.baseUrl ~ 'js/schedule.js'}}" defer></script>

src/static/js/schedule.js

Lines changed: 69 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,69 @@
1+
document.addEventListener('DOMContentLoaded', () => {
2+
const cards = document.querySelectorAll('.schedule-card');
3+
const contents = document.querySelectorAll('.schedule-content');
4+
let selectedCard = null;
5+
6+
// Function to reset all card backgrounds
7+
const resetCardBackgrounds = () => {
8+
cards.forEach(card => {
9+
const highlightDiv = card.querySelector('.card-grid');
10+
highlightDiv.classList.remove('pycon-bg-lime');
11+
highlightDiv.style.backgroundColor = '#FFFFFF';
12+
});
13+
};
14+
15+
// Function to hide all schedules
16+
const hideAllSchedules = () => {
17+
contents.forEach(content => content.classList.add('hidden'));
18+
};
19+
20+
// Initial state: Highlight the first card and show the first schedule
21+
if (cards.length > 0 && contents.length > 0) {
22+
selectedCard = cards[0];
23+
const firstContentId = selectedCard.getAttribute('data-schedule');
24+
25+
// Highlight the first card
26+
const firstHighlightDiv = selectedCard.querySelector('.card-grid');
27+
firstHighlightDiv.classList.add('bg:pycon-bg-lime');
28+
firstHighlightDiv.style.backgroundColor = '#CDFF89';
29+
30+
// Show the first schedule
31+
document.getElementById(firstContentId).classList.remove('hidden');
32+
}
33+
34+
// Add event listeners to all cards
35+
cards.forEach(card => {
36+
const highlightDiv = card.querySelector('.card-grid');
37+
38+
card.addEventListener('click', () => {
39+
// Reset previous selection
40+
resetCardBackgrounds();
41+
hideAllSchedules();
42+
43+
// Highlight the clicked card
44+
highlightDiv.classList.add('pycon-bg-lime');
45+
highlightDiv.style.backgroundColor = '#CDFF89'; // Lime background
46+
47+
// Show the corresponding schedule
48+
const scheduleId = card.getAttribute('data-schedule');
49+
document.getElementById(scheduleId).classList.remove('hidden');
50+
51+
// Update the selected card
52+
selectedCard = card;
53+
});
54+
55+
// Handle hover for unselected cards
56+
card.addEventListener('mouseenter', () => {
57+
if (card !== selectedCard) {
58+
highlightDiv.style.backgroundColor = '#CDFF89'; // Hover lime background
59+
}
60+
});
61+
62+
card.addEventListener('mouseleave', () => {
63+
if (card !== selectedCard) {
64+
highlightDiv.style.backgroundColor = '#FFFFFF'; // Default white background
65+
}
66+
});
67+
});
68+
});
69+

0 commit comments

Comments
 (0)