|
| 1 | +var url_base = window.location; |
| 2 | +var current_path; |
| 3 | + |
| 4 | +var mdns_works = window.location.hostname.endsWith(".local"); |
| 5 | + |
| 6 | +async function find_devices() { |
| 7 | + var version_response = await fetch("/cp/version.json"); |
| 8 | + if (version_response.ok) { |
| 9 | + url_base = new URL("/", window.location).href; |
| 10 | + } else { |
| 11 | + // TODO: Remove this when we've settled things. It is only used when this file isn't hosted |
| 12 | + // by a CP device. |
| 13 | + version_response = await fetch("http://circuitpython.local/cp/version.json", {mode: "cors"}); |
| 14 | + mdns_works = mdns_works || version_response.redirected; |
| 15 | + if (!version_response.ok && version_response.redirected) { |
| 16 | + version_response = await fetch(version_response.url); |
| 17 | + } |
| 18 | + let url = new URL("/", version_response.url); |
| 19 | + url_base = url.href; |
| 20 | + } |
| 21 | + const version_info = await version_response.json(); |
| 22 | + let version_span = document.querySelector("#version"); |
| 23 | + version_span.textContent = version_info.version; |
| 24 | + let board_link = document.querySelector("#board"); |
| 25 | + board_link.href = "https://circuitpython.org/board/" + version_info.board_id + "/"; |
| 26 | + board_link.textContent = version_info.board_name; |
| 27 | + let hostname = document.querySelector("#hostname"); |
| 28 | + var port = ""; |
| 29 | + if (version_info.port != 80) { |
| 30 | + port = ":" + version_info.port; |
| 31 | + } |
| 32 | + hostname.href = "http://" + version_info.hostname + ".local" + port + "/"; |
| 33 | + hostname.textContent = version_info.hostname; |
| 34 | + let ip = document.querySelector("#ip"); |
| 35 | + ip.href = "http://" + version_info.ip + port + "/"; |
| 36 | + ip.textContent = version_info.ip; |
| 37 | + const response = await fetch(new URL("/cp/devices.json", url_base)); |
| 38 | + const data = await response.json(); |
| 39 | + let device_list = document.querySelector("#devices"); |
| 40 | + let new_devices = []; |
| 41 | + for (device of data.devices) { |
| 42 | + let li = document.createElement("li"); |
| 43 | + let a = document.createElement("a"); |
| 44 | + li.appendChild(a); |
| 45 | + var port = ""; |
| 46 | + if (device.port != 80) { |
| 47 | + port = ":" + version_info.port; |
| 48 | + } |
| 49 | + var server; |
| 50 | + if (mdns_works) { |
| 51 | + server = device.hostname + ".local"; |
| 52 | + } else { |
| 53 | + server = device.ip; |
| 54 | + } |
| 55 | + a.href = "http://" + server + port + "/"; |
| 56 | + a.textContent = device.instance_name + " (" + device.hostname + ")"; |
| 57 | + new_devices.push(li); |
| 58 | + } |
| 59 | + device_list.replaceChildren(...new_devices); |
| 60 | +} |
| 61 | + |
| 62 | +find_devices(); |
0 commit comments