-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathscript.js
More file actions
59 lines (46 loc) · 1.64 KB
/
script.js
File metadata and controls
59 lines (46 loc) · 1.64 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
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
import { spectrumData } from './data.js';
const container = document.getElementById('spectrums');
spectrumData.forEach(band => {
const section = document.createElement('section');
section.id = `band${band.id}`;
section.innerHTML = `<h2>${band.title}</h2>`;
const chart = document.createElement('div');
chart.className = 'chart';
chart.dataset.band = band.id;
band.blocks.forEach(b => {
const blk = document.createElement('div');
blk.className = `block ${b.type}`;
blk.style.flex = b.width;
blk.innerHTML = `
<strong>${b.label}</strong>
<span>${b.width} MHz</span>
`;
blk.dataset.details = b.details;
chart.appendChild(blk);
});
const start = document.createElement('div');
start.className = 'frequency start';
start.textContent = band.freqStart;
chart.appendChild(start);
const end = document.createElement('div');
end.className = 'frequency end';
end.textContent = band.freqEnd;
chart.appendChild(end);
const hint = document.createElement('p');
hint.className = 'info';
hint.textContent = 'Click on a spectrum block to view details below.';
const details = document.createElement('div');
details.className = 'details';
section.append(chart, hint, details);
container.append(section);
});
container.addEventListener('click', e => {
const blk = e.target.closest('.block');
if (!blk) return;
blk.parentNode.querySelectorAll('.block').forEach(b => b.classList.remove('selected'));
blk.classList.add('selected');
const sec = blk.closest('section');
const det = sec.querySelector('.details');
det.innerHTML = blk.dataset.details;
det.classList.add('visible');
});