const count = document.getElementById("count") const mainContainer = document.getElementById("siteList") const regionNamesInEnglish = new Intl.DisplayNames(['en'], { type: 'language' }); fetch("providers.json" + "?v=" + Date.now()) .then(r => r.json()) .then(function (data) { count.innerHTML = Object.keys(data).length; for (var key in data) { if (data.hasOwnProperty(key)) { var value = data[key]; if (value.url == "NONE") { continue; } var _status = value.status var _lang = value.language var node = document.createElement("tr"); node.classList.add("row"); var _a = document.createElement("a"); _a.setAttribute('href', value.url); _a.innerHTML = value.name var _langEl = document.createElement("sup"); var _langName = "Unknown"; try { _langName = regionNamesInEnglish.of(_lang); } catch (langerr) { _langName = "Unknown"; console.log("Error on parsing language code => " + langerr); } _langEl.innerHTML = " " + _langName _a.appendChild(_langEl); var _statusText = "Unknown"; var _buttonText = "yellow"; switch (_status) { case 0: _statusText = "Unavailable"; _buttonText = "red"; break; case 1: _statusText = "Available"; _buttonText = "green"; break; case 2: _statusText = "Slow"; _buttonText = "yellow"; break; case 3: _statusText = "Beta"; _buttonText = "blue"; break; } _a.classList.add(_buttonText + "Button"); _a.classList.add("indicator"); _a.classList.add("button"); node.appendChild(_a); mainContainer.appendChild(node); } } })