diff --git a/src/PortalTask.h b/src/PortalTask.h index 846e2f2..d4f5be3 100644 --- a/src/PortalTask.h +++ b/src/PortalTask.h @@ -361,10 +361,16 @@ protected: for (short int i = 0; i < apCount; i++) { String ssid = WiFi.SSID(i); doc[i]["ssid"] = ssid; + doc[i]["bssid"] = WiFi.BSSIDstr(i); doc[i]["signalQuality"] = NetworkMgr::rssiToSignalQuality(WiFi.RSSI(i)); doc[i]["channel"] = WiFi.channel(i); doc[i]["hidden"] = !ssid.length(); - doc[i]["encryptionType"] = WiFi.encryptionType(i); + #ifdef ARDUINO_ARCH_ESP8266 + const bss_info* info = WiFi.getScanInfoByIndex(i); + doc[i]["auth"] = info->authmode; + #else + doc[i]["auth"] = WiFi.encryptionType(i); + #endif } doc.shrinkToFit(); diff --git a/src_data/dashboard.html b/src_data/dashboard.html index 967fe81..3ca5d28 100644 --- a/src_data/dashboard.html +++ b/src_data/dashboard.html @@ -38,8 +38,8 @@
Current:
-
-
+
+
@@ -55,8 +55,8 @@
Current:
-
-
+
+
diff --git a/src_data/network.html b/src_data/network.html index 8ca226d..0449f84 100644 --- a/src_data/network.html +++ b/src_data/network.html @@ -82,7 +82,7 @@ # SSID - Signal + Info diff --git a/src_data/static/app.css b/src_data/static/app.css index b18c9c2..8e9bc06 100644 --- a/src_data/static/app.css +++ b/src_data/static/app.css @@ -86,18 +86,6 @@ tr.network:hover { cursor: pointer; } -.greatSignal { - background-color: var(--pico-form-element-valid-border-color); -} - -.normalSignal { - background-color: #e48500; -} - -.badSignal { - background-color: var(--pico-form-element-invalid-border-color); -} - .primary { border: 0.25rem solid var(--pico-form-element-invalid-border-color); padding: 1rem; @@ -194,3 +182,13 @@ tr.network:hover { margin: 1.25rem 0; } + +[class*=" icons-"],[class=icons],[class^=icons-] {font-size: 1.35rem; } +*:has(> [class*=" icons-"], > [class=icons], > [class^=icons-]):has(+ * > [class*=" icons-"], + * > [class=icons], + * > [class^=icons-]) { margin: 0 0.5rem 0 0; } +[data-tooltip]:has(> [class*=" icons-"], > [class=icons], > [class^=icons-]) { border: 0!important; } + + +/*! + * Icons icon font. Generated by Iconly: https://iconly.io/ + */ + @font-face{font-display:auto;font-family:"Icons";font-style:normal;font-weight:400;src:url(./fonts/iconly.eot?1717885802370);src:url(./fonts/iconly.eot?#iefix) format("embedded-opentype"),url(./fonts/iconly.woff2?1717885802370) format("woff2"),url(./fonts/iconly.woff?1717885802370) format("woff"),url(./fonts/iconly.ttf?1717885802370) format("truetype")}[class*=" icons-"],[class=icons],[class^=icons-]{display:inline-block;font-family:"Icons"!important;font-weight:400;font-style:normal;font-variant:normal;text-rendering:auto;line-height:1;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased}.icons-plus:before{content:"\e000"}.icons-minus:before{content:"\e001"}.icons-unlocked:before{content:"\e002"}.icons-locked:before{content:"\e003"}.icons-wifi-strength-1:before{content:"\e004"}.icons-wifi-strength-0:before{content:"\e005"}.icons-wifi-strength-2:before{content:"\e006"}.icons-wifi-strength-3:before{content:"\e008"}.icons-down:before{content:"\e009"}.icons-wifi-strength-4:before{content:"\e00a"}.icons-up:before{content:"\e00c"} diff --git a/src_data/static/app.js b/src_data/static/app.js index 51034fe..48fd387 100644 --- a/src_data/static/app.js +++ b/src_data/static/app.js @@ -150,19 +150,56 @@ function setupNetworkScanForm(formSelector, tableSelector) { }; row.insertCell().textContent = "#" + (i + 1); - row.insertCell().innerHTML = result[i].hidden ? 'Hidden' : result[i].ssid; + row.insertCell().innerHTML = result[i].hidden ? ("" + result[i].bssid + "") : result[i].ssid; - const signalCell = row.insertCell(); - const signalElement = document.createElement("kbd"); - signalElement.textContent = result[i].signalQuality + "%"; - if (result[i].signalQuality > 60) { - signalElement.classList.add('greatSignal'); + // info cell + let infoCell = row.insertCell(); + + // signal quality + let signalQualityIcon = document.createElement("i"); + if (result[i].signalQuality > 80) { + signalQualityIcon.classList.add('icons-wifi-strength-4'); + } else if (result[i].signalQuality > 60) { + signalQualityIcon.classList.add('icons-wifi-strength-3'); } else if (result[i].signalQuality > 40) { - signalElement.classList.add('normalSignal'); + signalQualityIcon.classList.add('icons-wifi-strength-2'); + } else if (result[i].signalQuality > 20) { + signalQualityIcon.classList.add('icons-wifi-strength-1'); } else { - signalElement.classList.add('badSignal'); + signalQualityIcon.classList.add('icons-wifi-strength-0'); } - signalCell.appendChild(signalElement); + + let signalQualityContainer = document.createElement("span"); + signalQualityContainer.setAttribute('data-tooltip', result[i].signalQuality + "%"); + signalQualityContainer.appendChild(signalQualityIcon); + infoCell.appendChild(signalQualityContainer); + + // auth + const authList = { + 0: "Open", + 1: "WEP", + 2: "WPA", + 3: "WPA2", + 4: "WPA/WPA2", + 5: "WPA/WPA2 Enterprise", + 6: "WPA3", + 7: "WPA2/WPA3", + 8: "WAPI", + 9: "OWE", + 10: "WPA3 Enterprise" + }; + let authIcon = document.createElement("i"); + + if (result[i].auth == 0) { + authIcon.classList.add('icons-unlocked'); + } else { + authIcon.classList.add('icons-locked'); + } + + let authContainer = document.createElement("span"); + authContainer.setAttribute('data-tooltip', (result[i].auth in authList) ? authList[result[i].auth] : "unknown"); + authContainer.appendChild(authIcon); + infoCell.appendChild(authContainer); } if (button) { diff --git a/src_data/static/fonts/iconly.eot b/src_data/static/fonts/iconly.eot new file mode 100644 index 0000000..955eb43 Binary files /dev/null and b/src_data/static/fonts/iconly.eot differ diff --git a/src_data/static/fonts/iconly.ttf b/src_data/static/fonts/iconly.ttf new file mode 100644 index 0000000..967cc78 Binary files /dev/null and b/src_data/static/fonts/iconly.ttf differ diff --git a/src_data/static/fonts/iconly.woff b/src_data/static/fonts/iconly.woff new file mode 100644 index 0000000..412a1ce Binary files /dev/null and b/src_data/static/fonts/iconly.woff differ diff --git a/src_data/static/fonts/iconly.woff2 b/src_data/static/fonts/iconly.woff2 new file mode 100644 index 0000000..724540a Binary files /dev/null and b/src_data/static/fonts/iconly.woff2 differ diff --git a/tools/build.py b/tools/build.py index aeb2a0f..932f6c1 100644 --- a/tools/build.py +++ b/tools/build.py @@ -25,6 +25,9 @@ def before_buildfs(source, target, env): dst_name = name + ".gz" dst_path = os.path.join(dst, os.path.relpath(root, src), dst_name) + if os.path.exists(os.path.join(dst, os.path.relpath(root, src))) == False: + os.mkdir(os.path.join(dst, os.path.relpath(root, src))) + with gzip.open(dst_path, 'wb', 9) as f_out: shutil.copyfileobj(f_in, f_out)