-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathscript.js
More file actions
43 lines (36 loc) · 1.47 KB
/
script.js
File metadata and controls
43 lines (36 loc) · 1.47 KB
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
async function loadProjects() {
const container = document.getElementById('projects-container');
try {
const res = await fetch('http://localhost:5000/projects.json');
const projects = await res.json();
container.innerHTML = '';
projects.forEach(project => {
const folder = document.createElement('div');
folder.className = 'project-folder';
folder.innerHTML = `<h2>${project.name}</h2><div class="file-list"></div>`;
container.appendChild(folder);
const fileList = folder.querySelector('.file-list');
project.files.forEach(file => {
const f = document.createElement('div');
f.className = 'file';
f.innerHTML = `
<div class="file-name">${file.name} (${file.type})</div>
<pre class="file-code">${file.code}</pre>
`;
fileList.appendChild(f);
const fileNameDiv = f.querySelector('.file-name');
const fileCode = f.querySelector('.file-code');
fileNameDiv.addEventListener('click', () => {
fileCode.style.display = fileCode.style.display === 'block' ? 'none' : 'block';
});
});
folder.querySelector('h2').addEventListener('click', () => {
fileList.style.display = fileList.style.display === 'block' ? 'none' : 'block';
});
});
} catch(err) {
container.innerHTML = '<p style="color:red;">Failed to load projects.</p>';
console.error(err);
}
}
document.addEventListener('DOMContentLoaded', loadProjects);