File size: 4,751 Bytes
ea8b42c
 
 
 
 
a3420a3
 
ea8b42c
 
 
 
 
d0e4fca
 
ea8b42c
 
 
 
 
da9cc67
 
ea8b42c
 
 
 
 
0117656
 
ea8b42c
 
 
 
 
910d8dd
 
ea8b42c
 
 
 
 
b43c5fe
 
ea8b42c
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
0dc0e3c
ea5664a
ea8b42c
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
// Projects data
const projects = [
    {
        title: "Python 基礎課程",
        description: "針對初學者設計的完整 Python 程式設計入門課程,包含實務練習。",
image: "https://huggingface.co/spaces/hklamsir/tech-edumaster/resolve/main/images/認識Python程式編寫_01.png",
category: "course",
        year: "2023"
    },
    {
        title: "網頁開發工作坊",
        description: "涵蓋 HTML、CSS 及 JavaScript 基礎的互動式工作坊,適合中學生參與。",
image: "https://huggingface.co/spaces/hklamsir/tech-edumaster/resolve/main/images/前端網站開發.png",
category: "workshop",
        year: "2022"
    },
    {
        title: "資安防護資源包",
        description: "網路安全教育的學習材料與實務練習集合。",
        image: "https://huggingface.co/spaces/hklamsir/tech-edumaster/resolve/main/images/資安防護資源包.png",
category: "resource",
        year: "2023"
    },
    {
        title: "資料科學訓練營",
        description: "為期8週的密集課程,教授使用Python進行數據分析與視覺化。",
        image: "https://huggingface.co/spaces/hklamsir/tech-edumaster/resolve/main/images/資料科學訓練營-2.png",
category: "course",
        year: "2021"
    },
    {
        title: "雲端運算研討會",
        description: "為IT專業人士設計的兩天AWS與Azure基礎研討會。",
        image: "https://huggingface.co/spaces/hklamsir/tech-edumaster/resolve/main/images/雲端運算研討會.png",
category: "workshop",
        year: "2022"
    },
    {
        title: "Python教學電子書",
        description: "教育工作者適用的Python有效教學策略指南。",
        image: "https://huggingface.co/spaces/hklamsir/tech-edumaster/resolve/main/images/Python教學電子書.png",
category: "resource",
        year: "2020"
    }
];

// Initialize gallery
document.addEventListener('DOMContentLoaded', function() {
    const galleryContainer = document.querySelector('.gallery-container');
    const filterButtons = document.querySelectorAll('.filter-btn');
    
    // Load all projects initially
    loadProjects(projects);
    
    // Filter projects
    filterButtons.forEach(button => {
        button.addEventListener('click', function() {
            // Update active button
            filterButtons.forEach(btn => btn.classList.remove('active'));
            this.classList.add('active');
            
            const filter = this.getAttribute('data-filter');
            const filteredProjects = filter === 'all' 
                ? projects 
                : projects.filter(project => project.category === filter);
            
            loadProjects(filteredProjects);
        });
    });
    
    function loadProjects(projectsToLoad) {
        galleryContainer.innerHTML = '';
        
        projectsToLoad.forEach(project => {
            const projectEl = document.createElement('div');
            projectEl.className = 'gallery-item bg-white rounded-lg overflow-hidden shadow-md';
            projectEl.innerHTML = `
                <img src="${project.image}" alt="${project.title}" class="w-full h-48 object-cover">
                <div class="p-6">
                    <span class="project-tag tag-${project.category} mb-2">${project.category}</span>
                    <h3 class="text-xl font-semibold mb-2">${project.title}</h3>
                    <p class="text-gray-600 mb-4">${project.description}</p>
                    <div class="flex justify-between items-center text-sm text-gray-500">
                        <span>${project.year}</span>
                        <a href="${project.category === 'workshop' ? 'web-dev-workshop.html' : 'python-course.html'}" class="text-primary hover:underline">查看詳情</a>
</div>
                </div>
            `;
            
            galleryContainer.appendChild(projectEl);
        });
    }
    
    // Simple form validation for contact form
    const contactForm = document.querySelector('form');
    if (contactForm) {
        contactForm.addEventListener('submit', function(e) {
            e.preventDefault();
            const name = document.getElementById('name').value.trim();
            const email = document.getElementById('email').value.trim();
            const message = document.getElementById('message').value.trim();
            
            if (!name || !email || !message) {
                alert('Please fill in all fields');
                return;
            }
            
            // In a real application, you would send the form data to a server
            alert('Thank you for your message! I will get back to you soon.');
            contactForm.reset();
        });
    }
});