add refactored template for ap list
This commit is contained in:
parent
acab30acce
commit
4f36f61128
|
@ -0,0 +1,103 @@
|
|||
use std::collections::HashMap;
|
||||
|
||||
use maud::{html, Markup, PreEscaped};
|
||||
use peach_network::{network, AccessPoint};
|
||||
use rouille::Request;
|
||||
|
||||
use crate::{
|
||||
templates,
|
||||
utils::{flash::FlashRequest, theme},
|
||||
};
|
||||
|
||||
// ROUTE: /settings/network/wifi
|
||||
|
||||
/// Retrieve network state data required by the WiFi network list template.
|
||||
fn get_network_state_data(ap: &str, wlan: &str) -> (String, String, HashMap<String, AccessPoint>) {
|
||||
let ap_state = match network::state("ap0") {
|
||||
Ok(Some(state)) => state,
|
||||
Err(_) => "Interface unavailable".to_string(),
|
||||
};
|
||||
|
||||
let wlan_ssid = match network::ssid("wlan0") {
|
||||
Ok(Some(ssid)) => ssid,
|
||||
Err(_) => "Not connected".to_string(),
|
||||
};
|
||||
|
||||
let wlan_networks = match network::all_networks("wlan0") {
|
||||
Ok(networks) => networks,
|
||||
Err(_) => HashMap::new(),
|
||||
};
|
||||
|
||||
(ap_state, wlan_ssid, wlan_networks)
|
||||
}
|
||||
|
||||
fn render_network_connected_elements(ssid: String) -> Markup {
|
||||
let ap_detail_url = format!("/network/wifi?ssid={}", ssid);
|
||||
|
||||
html! {
|
||||
a class="list-item link primary-bg" href=(ap_detail_url) {
|
||||
img id="netStatus" class="icon icon-active icon-medium list-icon" src="/icons/wifi.svg" alt="WiFi online";
|
||||
p class="list-text" { (ssid) }
|
||||
label class="label-small list-label font-gray" for="netStatus" title="Status" { "Connected" }
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
fn render_network_available_elements(ssid: String, ap_state: String) -> Markup {
|
||||
let ap_detail_url = format!("/network/wifi?ssid={}", ssid);
|
||||
|
||||
html! {
|
||||
a class="list-item link light-bg" href=(ap_detail_url) {
|
||||
img id="netStatus" class="icon icon-inactive icon-medium list-icon" src="/icons/wifi.svg" alt="WiFi offline";
|
||||
p class="list-text" { (ssid) }
|
||||
label class="label-small list-label font-gray" for="netStatus" title="Status" { (ap_state) }
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
fn render_network_unavailable_elements(ssid: String, ap_state: String) -> Markup {
|
||||
let ap_detail_url = format!("/network/wifi?ssid={}", ssid);
|
||||
|
||||
html! {
|
||||
a class="list-item link" href=(ap_detail_url) {
|
||||
img id="netStatus" class="icon icon-inactive icon-medium list-icon" src="/icons/wifi.svg" alt="WiFi offline";
|
||||
p class="list-text" { (ssid) }
|
||||
label class="label-small list-label font-gray" for="netStatus" title="Status" { (ap_state) }
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/// WiFi network list template builder.
|
||||
pub fn build_template(request: &Request) -> PreEscaped<String> {
|
||||
let (ap_state, wlan_ssid, wlan_networks) = get_network_state_data("ap0", "wlan0");
|
||||
|
||||
html! {
|
||||
div class="card center" {
|
||||
div class="center list-container" {
|
||||
ul class="list" {
|
||||
@if ap_state == "up" {
|
||||
li class="list-item light-bg warning-border" {
|
||||
"Enable WiFi client mode to view saved and available networks."
|
||||
}
|
||||
} @else if wlan_networks {
|
||||
@for (ssid, ap) in wlan_networks {
|
||||
li {
|
||||
@if ssid == wlan_ssid {
|
||||
(render_network_connected_elements(ssid))
|
||||
} @else if ap.state == "Available" {
|
||||
(render_network_available_elements(ssid, ap.state))
|
||||
} @else {
|
||||
(render_network_unavailable_elements(ssid, ap.state))
|
||||
}
|
||||
}
|
||||
}
|
||||
} @else {
|
||||
li class="list-item light-bg" {
|
||||
"No saved or available networks found."
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
|
@ -1,3 +1,4 @@
|
|||
pub mod configure_dns;
|
||||
pub mod list_aps;
|
||||
pub mod menu;
|
||||
pub mod modify_ap;
|
||||
|
|
Loading…
Reference in New Issue