From f337e0335d3e96da0d90853351b0e54e45c82c93 Mon Sep 17 00:00:00 2001 From: Alex Janka <alex@alexjanka.com> Date: Sat, 28 Dec 2024 09:18:26 +1100 Subject: [PATCH] webapp: formatting --- webapp/index.html | 2 +- webapp/info/index.html | 2 +- webapp/pid/index.html | 2 +- webapp/regulator/index.html | 2 +- webapp/script.js | 638 +++++++++++++++++++----------------- webapp/shutoff/index.html | 2 +- webapp/style.css | 115 ++++--- 7 files changed, 397 insertions(+), 366 deletions(-) diff --git a/webapp/index.html b/webapp/index.html index e0da197..f368d35 100644 --- a/webapp/index.html +++ b/webapp/index.html @@ -41,4 +41,4 @@ </div> </body> -</html> \ No newline at end of file +</html> diff --git a/webapp/info/index.html b/webapp/info/index.html index 8358971..e19994e 100644 --- a/webapp/info/index.html +++ b/webapp/info/index.html @@ -20,4 +20,4 @@ </div> </body> -</html> \ No newline at end of file +</html> diff --git a/webapp/pid/index.html b/webapp/pid/index.html index fae88ce..0818cc7 100644 --- a/webapp/pid/index.html +++ b/webapp/pid/index.html @@ -30,4 +30,4 @@ </div> </body> -</html> \ No newline at end of file +</html> diff --git a/webapp/regulator/index.html b/webapp/regulator/index.html index 9ee579d..7e53657 100644 --- a/webapp/regulator/index.html +++ b/webapp/regulator/index.html @@ -31,4 +31,4 @@ </div> </body> -</html> \ No newline at end of file +</html> diff --git a/webapp/script.js b/webapp/script.js index b3b0738..3a60c7f 100644 --- a/webapp/script.js +++ b/webapp/script.js @@ -1,89 +1,92 @@ -const api_url = window.location.protocol + "//" + window.location.hostname + ":" + window.location.port; +const api_url = + window.location.protocol + + "//" + + window.location.hostname + + ":" + + window.location.port; Object.prototype.disable = function () { - var that = this; - for (var i = 0, len = that.length; i < len; i++) { - that[i].disabled = true; - } - return that; + var that = this; + for (var i = 0, len = that.length; i < len; i++) { + that[i].disabled = true; + } + return that; }; Object.prototype.enable = function () { - var that = this; - for (var i = 0, len = that.length; i < len; i++) { - that[i].disabled = false; - } - return that; + var that = this; + for (var i = 0, len = that.length; i < len; i++) { + that[i].disabled = false; + } + return that; }; - function init_main() { - refresh_interval = register(refresh); + refresh_interval = register(refresh); - refresh(); - document.addEventListener("visibilitychange", () => { - if (document.hidden) { - clearInterval(refresh_interval); - } else { - refresh(); - refresh_interval = register(refresh); - } - }); + refresh(); + document.addEventListener("visibilitychange", () => { + if (document.hidden) { + clearInterval(refresh_interval); + } else { + refresh(); + refresh_interval = register(refresh); + } + }); } function init_pid() { - refresh_gains(); - document.addEventListener("visibilitychange", () => { - if (!document.hidden) { - refresh_gains(); - } - }); + refresh_gains(); + document.addEventListener("visibilitychange", () => { + if (!document.hidden) { + refresh_gains(); + } + }); } function init_shutoff() { - refresh_shutoff(); - document.addEventListener("visibilitychange", () => { - if (!document.hidden) { - refresh_shutoff(); - } - }); + refresh_shutoff(); + document.addEventListener("visibilitychange", () => { + if (!document.hidden) { + refresh_shutoff(); + } + }); } function init_info() { - refresh_interval = register(refresh_info); + refresh_interval = register(refresh_info); - refresh_info(); - document.addEventListener("visibilitychange", () => { - if (document.hidden) { - clearInterval(refresh_interval); - } else { - refresh_info(); - refresh_interval = register(refresh_info); - } - }); + refresh_info(); + document.addEventListener("visibilitychange", () => { + if (document.hidden) { + clearInterval(refresh_interval); + } else { + refresh_info(); + refresh_interval = register(refresh_info); + } + }); } function init_regulator() { + refresh_interval = register(refresh_regulator_state); - refresh_interval = register(refresh_regulator_state); - - refresh_regulator_state(); - document.addEventListener("visibilitychange", () => { - if (document.hidden) { - clearInterval(refresh_interval); - } else { - refresh_regulator_state(); - refresh_interval = register(refresh_regulator_state); - } - }); + refresh_regulator_state(); + document.addEventListener("visibilitychange", () => { + if (document.hidden) { + clearInterval(refresh_interval); + } else { + refresh_regulator_state(); + refresh_interval = register(refresh_regulator_state); + } + }); } function register(func) { - return setInterval(func, 5000); + return setInterval(func, 5000); } function flash() { - fetch(api_url + "/flash", { method: "POST" }); + fetch(api_url + "/flash", { method: "POST" }); } var is_automatic_control; @@ -91,351 +94,380 @@ var current_min_rate; var current_max_rate; const delay = (time) => { - return new Promise(resolve => setTimeout(resolve, time)); + return new Promise((resolve) => setTimeout(resolve, time)); }; function set_minimum() { - var set_button = document.getElementById("set-minimum"); - var number_input = document.getElementById("min-rate"); - if (!isNaN(number_input.value)) { - set_button.disabled = true; - number_input.disabled = true; - fetch(api_url + "/set-min/" + number_input.value, { method: "POST" }) - .then(async (response) => { - let delayres = await delay(100); - refresh_buttons(); - }); - } + var set_button = document.getElementById("set-minimum"); + var number_input = document.getElementById("min-rate"); + if (!isNaN(number_input.value)) { + set_button.disabled = true; + number_input.disabled = true; + fetch(api_url + "/set-min/" + number_input.value, { method: "POST" }).then( + async (response) => { + let delayres = await delay(100); + refresh_buttons(); + } + ); + } } function change_min() { - var set_button = document.getElementById("set-minimum"); - var number_input = document.getElementById("min-rate"); - set_button.disabled = (number_input.value == current_min_rate); + var set_button = document.getElementById("set-minimum"); + var number_input = document.getElementById("min-rate"); + set_button.disabled = number_input.value == current_min_rate; } function set_maximum() { - var set_button = document.getElementById("set-maximum"); - var number_input = document.getElementById("max-rate"); - if (!isNaN(number_input.value)) { - set_button.disabled = true; - number_input.disabled = true; - fetch(api_url + "/set-max/" + number_input.value, { method: "POST" }) - .then(async (response) => { - let delayres = await delay(100); - refresh_buttons(); - }); - } + var set_button = document.getElementById("set-maximum"); + var number_input = document.getElementById("max-rate"); + if (!isNaN(number_input.value)) { + set_button.disabled = true; + number_input.disabled = true; + fetch(api_url + "/set-max/" + number_input.value, { method: "POST" }).then( + async (response) => { + let delayres = await delay(100); + refresh_buttons(); + } + ); + } } function change_max() { - var set_button = document.getElementById("set-maximum"); - var number_input = document.getElementById("max-rate"); - set_button.disabled = (number_input.value == current_max_rate); + var set_button = document.getElementById("set-maximum"); + var number_input = document.getElementById("max-rate"); + set_button.disabled = number_input.value == current_max_rate; } function set_proportional() { - var set_button = document.getElementById("set-proportional"); - var number_input = document.getElementById("proportional-gain"); - if (!isNaN(number_input.value)) { - set_button.disabled = true; - number_input.disabled = true; - fetch(api_url + "/pid-settings/proportional/" + number_input.value, { method: "POST" }) - .then(async (response) => { - let delayres = await delay(100); - refresh_gains(); - }); - } + var set_button = document.getElementById("set-proportional"); + var number_input = document.getElementById("proportional-gain"); + if (!isNaN(number_input.value)) { + set_button.disabled = true; + number_input.disabled = true; + fetch(api_url + "/pid-settings/proportional/" + number_input.value, { + method: "POST", + }).then(async (response) => { + let delayres = await delay(100); + refresh_gains(); + }); + } } function set_derivative() { - var set_button = document.getElementById("set-derivative"); - var number_input = document.getElementById("derivative-gain"); - if (!isNaN(number_input.value)) { - set_button.disabled = true; - number_input.disabled = true; - fetch(api_url + "/pid-settings/derivative/" + number_input.value, { method: "POST" }) - .then(async (response) => { - let delayres = await delay(100); - refresh_gains(); - }); - } + var set_button = document.getElementById("set-derivative"); + var number_input = document.getElementById("derivative-gain"); + if (!isNaN(number_input.value)) { + set_button.disabled = true; + number_input.disabled = true; + fetch(api_url + "/pid-settings/derivative/" + number_input.value, { + method: "POST", + }).then(async (response) => { + let delayres = await delay(100); + refresh_gains(); + }); + } } function set_shutoff_voltage() { - var set_button = document.getElementById("set-shutoff-voltage"); - var number_input = document.getElementById("shutoff-voltage"); - if (!isNaN(number_input.value)) { - set_button.disabled = true; - number_input.disabled = true; - fetch(api_url + "/shutoff/voltage/" + number_input.value, { method: "POST" }) - .then(async (response) => { - let delayres = await delay(100); - refresh_shutoff(); - }); - } + var set_button = document.getElementById("set-shutoff-voltage"); + var number_input = document.getElementById("shutoff-voltage"); + if (!isNaN(number_input.value)) { + set_button.disabled = true; + number_input.disabled = true; + fetch(api_url + "/shutoff/voltage/" + number_input.value, { + method: "POST", + }).then(async (response) => { + let delayres = await delay(100); + refresh_shutoff(); + }); + } } function set_shutoff_time() { - var set_button = document.getElementById("set-shutoff-time"); - var number_input = document.getElementById("shutoff-time"); - if (!isNaN(number_input.value)) { - set_button.disabled = true; - number_input.disabled = true; - fetch(api_url + "/shutoff/time/" + number_input.value, { method: "POST" }) - .then(async (response) => { - let delayres = await delay(100); - refresh_shutoff(); - }); - } + var set_button = document.getElementById("set-shutoff-time"); + var number_input = document.getElementById("shutoff-time"); + if (!isNaN(number_input.value)) { + set_button.disabled = true; + number_input.disabled = true; + fetch(api_url + "/shutoff/time/" + number_input.value, { + method: "POST", + }).then(async (response) => { + let delayres = await delay(100); + refresh_shutoff(); + }); + } } function set_regulator_state() { - var set_button = document.getElementById("set-regulator-state"); - var state_input = document.getElementById("regstate"); + var set_button = document.getElementById("set-regulator-state"); + var state_input = document.getElementById("regstate"); - set_button.disabled = true; - state_input.disabled = true; - - fetch(api_url + "/set-regulator-state/" + state_input.value, { method: "POST" }) - .then(async (response) => { - let delayres = await delay(300); - refresh_regulator_state(); - }); + set_button.disabled = true; + state_input.disabled = true; + fetch(api_url + "/set-regulator-state/" + state_input.value, { + method: "POST", + }).then(async (response) => { + let delayres = await delay(300); + refresh_regulator_state(); + }); } function set_load_divisor() { - var set_button = document.getElementById("set-load-divisor"); - var number_input = document.getElementById("load-divisor"); - if (!isNaN(number_input.value)) { - set_button.disabled = true; - number_input.disabled = true; - fetch(api_url + "/pid-settings/load_divisor/" + number_input.value, { method: "POST" }) - .then(async (response) => { - let delayres = await delay(100); - refresh_gains(); - }); - } + var set_button = document.getElementById("set-load-divisor"); + var number_input = document.getElementById("load-divisor"); + if (!isNaN(number_input.value)) { + set_button.disabled = true; + number_input.disabled = true; + fetch(api_url + "/pid-settings/load_divisor/" + number_input.value, { + method: "POST", + }).then(async (response) => { + let delayres = await delay(100); + refresh_gains(); + }); + } } function disable_automatic_control() { - if (is_automatic_control) { - document.getElementById('control-disabled').checked = true; - document.body.classList.add("loading"); + if (is_automatic_control) { + document.getElementById("control-disabled").checked = true; + document.body.classList.add("loading"); - fetch(api_url + "/disable-control", { method: "POST" }) - .then(async (response) => { - let delayres = await delay(100); - refresh_buttons(); - }); - } + fetch(api_url + "/disable-control", { method: "POST" }).then( + async (response) => { + let delayres = await delay(100); + refresh_buttons(); + } + ); + } } function enable_automatic_control() { - if (!is_automatic_control) { - document.getElementById('control-enabled').checked = true; - document.body.classList.add("loading"); - fetch(api_url + "/enable-control", { method: "POST" }) - .then(async (response) => { - let delayres = await delay(100); - refresh_buttons(); - }); - } + if (!is_automatic_control) { + document.getElementById("control-enabled").checked = true; + document.body.classList.add("loading"); + fetch(api_url + "/enable-control", { method: "POST" }).then( + async (response) => { + let delayres = await delay(100); + refresh_buttons(); + } + ); + } } function update_control_buttons(data) { - current_max_rate = data.max_rate; - current_min_rate = data.min_rate; + current_max_rate = data.max_rate; + current_min_rate = data.min_rate; - var number_input_min = document.getElementById("min-rate"); - if (number_input_min.disabled || number_input_min.value == "") { - number_input_min.value = data.min_rate; - number_input_min.disabled = false; - } - document.getElementById("set-minimum").disabled = (number_input_min.value == current_min_rate); + var number_input_min = document.getElementById("min-rate"); + if (number_input_min.disabled || number_input_min.value == "") { + number_input_min.value = data.min_rate; + number_input_min.disabled = false; + } + document.getElementById("set-minimum").disabled = + number_input_min.value == current_min_rate; - var number_input_max = document.getElementById("max-rate"); - if (number_input_max.disabled || number_input_max.value == "") { - number_input_max.value = data.max_rate; - number_input_max.disabled = false; - } - document.getElementById("set-maximum").disabled = (number_input_max.value == current_max_rate); + var number_input_max = document.getElementById("max-rate"); + if (number_input_max.disabled || number_input_max.value == "") { + number_input_max.value = data.max_rate; + number_input_max.disabled = false; + } + document.getElementById("set-maximum").disabled = + number_input_max.value == current_max_rate; - document.body.classList.remove("loading"); - is_automatic_control = data.control_enable; - if (data.control_enable) { - document.getElementById('control-enabled').checked = true; - } else { - document.getElementById('control-disabled').checked = true; - } + document.body.classList.remove("loading"); + is_automatic_control = data.control_enable; + if (data.control_enable) { + document.getElementById("control-enabled").checked = true; + } else { + document.getElementById("control-disabled").checked = true; + } - var control_selector = document.getElementById("control-selector"); - if (data.is_charging) { - if (control_selector.classList.contains('disabled')) { - control_selector.classList.remove('disabled'); - } - document.getElementsByName('control').enable(); - } - else { - if (!control_selector.classList.contains('disabled')) { - control_selector.classList.add('disabled'); - } - document.getElementsByName('control').disable(); - } + var control_selector = document.getElementById("control-selector"); + if (data.is_charging) { + if (control_selector.classList.contains("disabled")) { + control_selector.classList.remove("disabled"); + } + document.getElementsByName("control").enable(); + } else { + if (!control_selector.classList.contains("disabled")) { + control_selector.classList.add("disabled"); + } + document.getElementsByName("control").disable(); + } } function refresh_gains() { - fetch(api_url + "/pid-settings/status") - .then((response) => response.json()) - .then((json) => update_gains(json)); + fetch(api_url + "/pid-settings/status") + .then((response) => response.json()) + .then((json) => update_gains(json)); } function update_gains(data) { - var proportional_set_button = document.getElementById("set-proportional"); - var proportional_number_input = document.getElementById("proportional-gain"); - proportional_set_button.disabled = false; - proportional_number_input.disabled = false; - proportional_number_input.value = data.proportional_gain; - var derivative_set_button = document.getElementById("set-derivative"); - var derivative_number_input = document.getElementById("derivative-gain"); - derivative_set_button.disabled = false; - derivative_number_input.disabled = false; - derivative_number_input.value = data.derivative_gain; - var load_divisor_button = document.getElementById("set-load-divisor"); - var load_divisor_input = document.getElementById("load-divisor"); - load_divisor_button.disabled = false; - load_divisor_input.disabled = false; - load_divisor_input.value = data.load_divisor; + var proportional_set_button = document.getElementById("set-proportional"); + var proportional_number_input = document.getElementById("proportional-gain"); + proportional_set_button.disabled = false; + proportional_number_input.disabled = false; + proportional_number_input.value = data.proportional_gain; + var derivative_set_button = document.getElementById("set-derivative"); + var derivative_number_input = document.getElementById("derivative-gain"); + derivative_set_button.disabled = false; + derivative_number_input.disabled = false; + derivative_number_input.value = data.derivative_gain; + var load_divisor_button = document.getElementById("set-load-divisor"); + var load_divisor_input = document.getElementById("load-divisor"); + load_divisor_button.disabled = false; + load_divisor_input.disabled = false; + load_divisor_input.value = data.load_divisor; } function refresh_shutoff() { - fetch(api_url + "/shutoff/status") - .then((response) => response.json()) - .then((json) => update_shutoff(json)); + fetch(api_url + "/shutoff/status") + .then((response) => response.json()) + .then((json) => update_shutoff(json)); } function refresh_regulator_state() { - var set_button = document.getElementById("set-regulator-state"); - var state_input = document.getElementById("regstate"); + var set_button = document.getElementById("set-regulator-state"); + var state_input = document.getElementById("regstate"); - set_button.disabled = false; - state_input.disabled = false; + set_button.disabled = false; + state_input.disabled = false; - fetch(api_url + "/regulator-state") - .then((response) => response.json()) - .catch(() => null) - .then((json) => update_regulator_state(json)); + fetch(api_url + "/regulator-state") + .then((response) => response.json()) + .catch(() => null) + .then((json) => update_regulator_state(json)); } function update_shutoff(data) { - var voltage_set_button = document.getElementById("set-shutoff-voltage"); - var voltage_number_input = document.getElementById("shutoff-voltage"); - voltage_set_button.disabled = false; - voltage_number_input.disabled = false; - voltage_number_input.value = data.voltage; - var time_set_button = document.getElementById("set-shutoff-time"); - var time_number_input = document.getElementById("shutoff-time"); - time_set_button.disabled = false; - time_number_input.disabled = false; - time_number_input.value = data.time; + var voltage_set_button = document.getElementById("set-shutoff-voltage"); + var voltage_number_input = document.getElementById("shutoff-voltage"); + voltage_set_button.disabled = false; + voltage_number_input.disabled = false; + voltage_number_input.value = data.voltage; + var time_set_button = document.getElementById("set-shutoff-time"); + var time_number_input = document.getElementById("shutoff-time"); + time_set_button.disabled = false; + time_number_input.disabled = false; + time_number_input.value = data.time; } function update_regulator_state(state) { - console.log(state); - if (state == null) { var cur = "Unknown" } else { var cur = state.regulator_state } + console.log(state); + if (state == null) { + var cur = "Unknown"; + } else { + var cur = state.regulator_state; + } - var current_state = document.getElementById("current-state"); - current_state.textContent = "Current state: " + cur; + var current_state = document.getElementById("current-state"); + current_state.textContent = "Current state: " + cur; } function refresh_buttons() { - fetch(api_url + "/control-state") - .then((response) => response.json()) - .then((json) => update_control_buttons(json)); + fetch(api_url + "/control-state") + .then((response) => response.json()) + .then((json) => update_control_buttons(json)); } function refresh() { - set_favicon(null); + set_favicon(null); - refresh_buttons(); + refresh_buttons(); - fetch(api_url + "/car-state") - .then((response) => response.json()) - .then((json) => update_state(json)); + fetch(api_url + "/car-state") + .then((response) => response.json()) + .then((json) => update_state(json)); } function refresh_info() { - set_favicon(null); + set_favicon(null); - fetch(api_url + "/car-state") - .then((response) => response.json()) - .then((json) => update_info(json)); + fetch(api_url + "/car-state") + .then((response) => response.json()) + .then((json) => update_info(json)); } function update_info(state) { - set_favicon(state.charge_state); + set_favicon(state.charge_state); - var info_div = document.getElementById("info"); - while (info_div.childElementCount > 0) { info_div.removeChild(info_div.firstChild) } + var info_div = document.getElementById("info"); + while (info_div.childElementCount > 0) { + info_div.removeChild(info_div.firstChild); + } - el = document.createElement('p'); + el = document.createElement("p"); - state_json = document.createElement('pre'); - state_json.appendChild(document.createTextNode(JSON.stringify(state, null, '\t'))); - el.appendChild(state_json); - info_div.appendChild(el); + state_json = document.createElement("pre"); + state_json.appendChild( + document.createTextNode(JSON.stringify(state, null, "\t")) + ); + el.appendChild(state_json); + info_div.appendChild(el); } function update_state(state) { - set_favicon(state.charge_state); + set_favicon(state.charge_state); - var info_div = document.getElementById("info"); - while (info_div.childElementCount > 0) { info_div.removeChild(info_div.firstChild) } + var info_div = document.getElementById("info"); + while (info_div.childElementCount > 0) { + info_div.removeChild(info_div.firstChild); + } - el = document.createElement('p'); + el = document.createElement("p"); - var charging_state_info = ""; + var charging_state_info = ""; - switch (state.charge_state.charging_state) { - case "Charging": - charging_state_info = "charging at " + state.charge_state.charge_rate + "A"; - break; - case "Stopped": - charging_state_info = "charge stopped"; - break; - case "Disconnected": - charging_state_info = "disconnected" - break; - } + switch (state.charge_state.charging_state) { + case "Charging": + charging_state_info = + "charging at " + state.charge_state.charge_rate + "A"; + break; + case "Stopped": + charging_state_info = "charge stopped"; + break; + case "Disconnected": + charging_state_info = "disconnected"; + break; + } - if (state.location_data.home) { - if (state.charge_state.charging_state == "Charging") { - charging_state_info = "set at " + state.charge_state.charge_current_request + "A, " + charging_state_info; - } - charging_state_info = "At home; " + charging_state_info; - } else { - charging_state_info = "Not home; " + charging_state_info; - } + if (state.location_data.home) { + if (state.charge_state.charging_state == "Charging") { + charging_state_info = + "set at " + + state.charge_state.charge_current_request + + "A, " + + charging_state_info; + } + charging_state_info = "At home; " + charging_state_info; + } else { + charging_state_info = "Not home; " + charging_state_info; + } - el.appendChild(document.createTextNode(charging_state_info)); + el.appendChild(document.createTextNode(charging_state_info)); - info_div.appendChild(el); + info_div.appendChild(el); } function set_favicon(charge_state) { - let favicon = document.getElementById("favicon"); + let favicon = document.getElementById("favicon"); - favicon.setAttribute("href", "data:image/svg+xml,<svg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 100 100%22><text y=%22.9em%22 font-size=%2290%22>" + get_emoji(charge_state) + "</text></svg>"); + favicon.setAttribute( + "href", + "data:image/svg+xml,<svg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 100 100%22><text y=%22.9em%22 font-size=%2290%22>" + + get_emoji(charge_state) + + "</text></svg>" + ); } function get_emoji(charge_state) { - if (charge_state == null) { - return "âŗ"; - } - else if (charge_state.charge_rate > 0) { - return "đ"; - } else if (charge_state.battery_level < 60) { - return "đĒĢ" - } else return "đ"; -} \ No newline at end of file + if (charge_state == null) { + return "âŗ"; + } else if (charge_state.charge_rate > 0) { + return "đ"; + } else if (charge_state.battery_level < 60) { + return "đĒĢ"; + } else return "đ"; +} diff --git a/webapp/shutoff/index.html b/webapp/shutoff/index.html index 77b66ca..74e6ea6 100644 --- a/webapp/shutoff/index.html +++ b/webapp/shutoff/index.html @@ -27,4 +27,4 @@ </div> </body> -</html> \ No newline at end of file +</html> diff --git a/webapp/style.css b/webapp/style.css index 71cb8ba..f19cd5a 100644 --- a/webapp/style.css +++ b/webapp/style.css @@ -1,102 +1,101 @@ body { - font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; - background-color: #333; - color: #333; + font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, + Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; + background-color: #333; + color: #333; } .container { - max-width: 40rem; - margin: auto; - padding: 0.5rem 2rem; - border-radius: 10px; - background-color: #faf9fd; + max-width: 40rem; + margin: auto; + padding: 0.5rem 2rem; + border-radius: 10px; + background-color: #faf9fd; } .outlink { - display: block; - font-weight: bold; - margin-top: 0.5rem; + display: block; + font-weight: bold; + margin-top: 0.5rem; } a.outlink { - text-decoration: none; - color: rgb(52, 52, 246); + text-decoration: none; + color: rgb(52, 52, 246); } a.outlink:hover { - color: rgb(110, 100, 255); + color: rgb(110, 100, 255); } .loading, .loading * { - cursor: progress; + cursor: progress; } .disabled, .disabled * { - cursor: not-allowed; + cursor: not-allowed; } .selector { - padding: 1rem; - background-color: gray; - color: #333; - width: max-content; - border: 0.2rem; - border-radius: 6px; - + padding: 1rem; + background-color: gray; + color: #333; + width: max-content; + border: 0.2rem; + border-radius: 6px; } label { - padding: 0.5rem 1rem; - margin: 0.5rem; - font-weight: bold; - transition: all .2s 0s ease; - border-radius: 4px; - text-align: center; + padding: 0.5rem 1rem; + margin: 0.5rem; + font-weight: bold; + transition: all 0.2s 0s ease; + border-radius: 4px; + text-align: center; } -input[type=radio] { - display: none; +input[type="radio"] { + display: none; } -input[type=radio]:checked+label { - background-color: white; +input[type="radio"]:checked + label { + background-color: white; } -input[type=radio]:checked:disabled+label { - background-color: #ddd; +input[type="radio"]:checked:disabled + label { + background-color: #ddd; } -input[type=radio]:disabled+label { - color: #666; +input[type="radio"]:disabled + label { + color: #666; } @media (width > 600px) { - .container { - margin-top: 2rem; - } + .container { + margin-top: 2rem; + } } - @media (prefers-color-scheme: dark) { - body { - background-color: #191919; - } + body { + background-color: #191919; + } - .container { - background-color: #444; - color: #f0f0f0; - } + .container { + background-color: #444; + color: #f0f0f0; + } - a.outlink { - text-decoration: none; - /* color: rgb(152, 152, 242); */ - color: rgb(125, 125, 250); - /* color: rgb(94, 94, 252); */ - } + a.outlink { + text-decoration: none; + /* color: rgb(152, 152, 242); */ + color: rgb(125, 125, 250); + /* color: rgb(94, 94, 252); */ + } - a.outlink:hover { - color: rgb(130, 120, 255); - } -} \ No newline at end of file + a.outlink:hover { + color: rgb(130, 120, 255); + } +}