()
| 119 | loadAndRenderData(window.STATIC_DATA); |
| 120 | } else { |
| 121 | function fetchAndRender() { |
| 122 | fetch('/api/data') |
| 123 | .then(resp => resp.json()) |
| 124 | .then(data => { |
| 125 | const dataStr = JSON.stringify(data); |
| 126 | if (dataStr === lastDataStr) { |
| 127 | return; |
| 128 | } |
| 129 | lastDataStr = dataStr; |
| 130 | loadAndRenderData(data); |
| 131 | }); |
| 132 | } |
| 133 | fetchAndRender(); |
| 134 | setInterval(fetchAndRender, 2000); // Live update every 2s |
| 135 | } |
no test coverage detected