| 384 | }).filter(Boolean); |
| 385 | } |
| 386 | function signalBars(ms){ |
| 387 | const levels = [20, 50, 100, 160]; |
| 388 | let on = typeof ms === 'number' ? (ms <= levels[0] ? 5 : ms <= levels[1] ? 4 : ms <= levels[2] ? 3 : ms <= levels[3] ? 2 : 1) : 0; |
| 389 | return `<span class="sig">${[0,1,2,3,4].map(i => `<i class="b ${i < on ? 'on' : 'off'}"></i>`).join('')}</span>`; |
| 390 | } |
| 391 | function monitorItems(s){ |
| 392 | const items = parseCustom(s.custom); |
| 393 | return items.map(item => `<span class="mon-item"><span class="name">${esc(item.name)}</span>${signalBars(item.ms)}<span class="ms">${item.ms}ms</span></span>`).join('') || '-'; |