()
| 291 | copyLink.classList.toggle("hidden", !navigator.clipboard); |
| 292 | |
| 293 | function renderUI() { |
| 294 | // Make the main button reflect the current state |
| 295 | startButton.textContent = buttonTexts[testState.state]; |
| 296 | startButton.classList.toggle("disabled", testState.state === INITIALIZING); |
| 297 | startButton.classList.toggle("active", testState.state === RUNNING); |
| 298 | |
| 299 | // Disable the server selector while test is running |
| 300 | serverSelector.classList.toggle("disabled", testState.state === RUNNING); |
| 301 | |
| 302 | // Show selected server |
| 303 | if (testState.selectedServerDirty) { |
| 304 | const server = testState.speedtest.getSelectedServer(); |
| 305 | selectedServer.textContent = server.name; |
| 306 | if (server.sponsorName) { |
| 307 | if (server.sponsorURL) { |
| 308 | sponsor.innerHTML = `Sponsor: <a href="${server.sponsorURL}">${server.sponsorName}</a>`; |
| 309 | } else { |
| 310 | sponsor.textContent = `Sponsor: ${server.sponsorName}`; |
| 311 | } |
| 312 | } else { |
| 313 | sponsor.innerHTML = " "; |
| 314 | } |
| 315 | testState.selectedServerDirty = false; |
| 316 | } |
| 317 | |
| 318 | // Activate the gauges when test running or finished |
| 319 | gauges.forEach((e) => |
| 320 | e.classList.toggle( |
| 321 | "enabled", |
| 322 | testState.state === RUNNING || testState.state === FINISHED |
| 323 | ) |
| 324 | ); |
| 325 | |
| 326 | // Show ping and jitter if data is available |
| 327 | pingAndJitter.forEach((e) => |
| 328 | e.classList.toggle( |
| 329 | "hidden", |
| 330 | !( |
| 331 | testState.testData && |
| 332 | testState.testData.pingStatus && |
| 333 | testState.testData.jitterStatus |
| 334 | ) |
| 335 | ) |
| 336 | ); |
| 337 | |
| 338 | // Show share button after test if server supports it |
| 339 | shareResults.classList.toggle( |
| 340 | "hidden", |
| 341 | !( |
| 342 | testState.state === FINISHED && |
| 343 | testState.telemetryEnabled && |
| 344 | testState.testData.testId |
| 345 | ) |
| 346 | ); |
| 347 | |
| 348 | if (testState.testDataDirty) { |
| 349 | // Set gauge rotations |
| 350 | downloadProgress.style = `--progress-rotation: ${ |
no test coverage detected