From 80b61dc854fe8a049ff489f2cde38166ea4d2864 Mon Sep 17 00:00:00 2001 From: hodasemi Date: Thu, 5 Oct 2023 11:20:36 +0200 Subject: [PATCH] Add custom css --- resources/css/index.css | 6 ++---- resources/js/main.js | 13 ++++++++++++- resources/static/index.html | 2 ++ src/main.rs | 8 ++++---- src/midea_helper.rs | 18 +++++++++++++++--- 5 files changed, 35 insertions(+), 12 deletions(-) diff --git a/resources/css/index.css b/resources/css/index.css index 72e3962..05e06f7 100644 --- a/resources/css/index.css +++ b/resources/css/index.css @@ -1,5 +1,3 @@ -table, -th, -td { - border: 1px solid black; +td>*:not(:last-child) { + margin-right: 5px; } \ No newline at end of file diff --git a/resources/js/main.js b/resources/js/main.js index f998528..6f84d78 100644 --- a/resources/js/main.js +++ b/resources/js/main.js @@ -9,6 +9,7 @@ async function startup() { ); let table = document.createElement('table'); + table.className = "pure-table pure-table-bordered"; let json = JSON.parse(await response.json()); console.log(json); @@ -54,9 +55,11 @@ async function startup() { // create device name column let device_name_entry = document.createElement('td'); let device_name = document.createElement('input'); + device_name.className = "pure-u-2"; device_name.value = device_descriptor; device_name.readOnly = true; let device_name_edit = document.createElement('button'); + device_name_edit.className = "pure-button"; device_name_edit.onclick = async () => { if (device_name.readOnly) { device_name.readOnly = false; @@ -88,12 +91,15 @@ async function startup() { let device_led_state_entry = document.createElement('td'); let device_led_state = document.createElement('label'); device_led_state.innerText = device_state["led"]; + device_led_state.className = "pure-u-2"; device_led_state.id = "led_" + device_id; let device_led_on = document.createElement('button'); - device_led_on.innerText = "On" + device_led_on.innerText = "On"; + device_led_on.className = "pure-button"; device_led_on.onclick = async () => { await led_on(device_id) }; let device_led_off = document.createElement('button'); device_led_off.innerText = "Off" + device_led_off.className = "pure-button"; device_led_off.onclick = async () => { await led_off(device_id) }; device_led_state_entry.appendChild(device_led_state); @@ -105,6 +111,7 @@ async function startup() { let device_power_state_entry = document.createElement('td'); let device_power_state = document.createElement('label'); device_power_state.innerText = device_state["power"]; + device_power_state.className = "pure-u-2"; device_power_state.id = "power_" + device_id; device_power_state_entry.appendChild(device_power_state); @@ -112,9 +119,11 @@ async function startup() { if (devices[i][2] == true && device_state["power_draw"] < 15) { let device_power_on = document.createElement('button'); device_power_on.innerText = "On" + device_power_on.className = "pure-button"; device_power_on.onclick = async () => { await power_on(device_id) }; let device_power_off = document.createElement('button'); device_power_off.innerText = "Off" + device_power_off.className = "pure-button"; device_power_off.onclick = async () => { await power_off(device_id) }; device_power_state_entry.appendChild(device_power_on); @@ -126,8 +135,10 @@ async function startup() { // create device power draw column let device_power_draw_entry = document.createElement('td'); let device_power_draw = document.createElement('label'); + device_power_draw.className = "pure-u-2"; device_power_draw.innerText = device_state["power_draw"] + " W"; let device_power_draw_graph_button = document.createElement('button'); + device_power_draw_graph_button.className = "pure-button"; device_power_draw_graph_button.onclick = async () => { await render_graph(device_id, device_descriptor) }; let device_power_draw_graph_button_icon = document.createElement('i'); device_power_draw_graph_button_icon.className = "fa fa-line-chart"; diff --git a/resources/static/index.html b/resources/static/index.html index 756c5ec..4c4d4e3 100644 --- a/resources/static/index.html +++ b/resources/static/index.html @@ -9,6 +9,8 @@ Smart Homeserver + diff --git a/src/main.rs b/src/main.rs index fb17db9..7829213 100644 --- a/src/main.rs +++ b/src/main.rs @@ -4,7 +4,7 @@ use std::{ time::{Duration, SystemTime, UNIX_EPOCH}, }; -use crate::{db::DataBase, web_server::plug_data_range}; +use crate::{db::DataBase, midea_helper::MideaDiscovery, web_server::plug_data_range}; mod data; mod db; @@ -57,7 +57,7 @@ async fn run_web_server( const IP: &str = "0.0.0.0"; const PORT: u16 = 8062; - println!("Starting server on {IP}:{PORT}"); + println!("Starting server on http://{IP}:{PORT}"); HttpServer::new(move || { App::new() @@ -89,7 +89,7 @@ async fn main() -> Result<()> { let db_future = DataBase::new("home_server.db"); let devices_future = Devices::read("devices.conf"); - let (db, devices) = try_join!(db_future, devices_future)?; + let (db, devices, midea) = try_join!(db_future, devices_future, MideaDiscovery::discover())?; db.register_devices(&devices)?; let shared_db = Arc::new(Mutex::new(db)); @@ -100,7 +100,7 @@ async fn main() -> Result<()> { .map(|(plug, _)| Tasmota::new(plug)) .collect(); - let dishwasher = MideaDishwasher::create(shared_db.clone()) + let dishwasher = MideaDishwasher::create(midea, shared_db.clone()) .await? .into_iter() .map(|d| Arc::new(d)) diff --git a/src/midea_helper.rs b/src/midea_helper.rs index b34342d..f8bab63 100644 --- a/src/midea_helper.rs +++ b/src/midea_helper.rs @@ -43,17 +43,29 @@ impl LoginInfo { } } +pub struct MideaDiscovery { + infos: Vec, +} + +impl MideaDiscovery { + pub async fn discover() -> Result { + Ok(Self { + infos: Startup::discover().await?, + }) + } +} + pub struct MideaDishwasher { device_info: DeviceInfo, device: Device, } impl MideaDishwasher { - pub async fn create(db: Arc>) -> Result> { + pub async fn create(discovery: MideaDiscovery, db: Arc>) -> Result> { let mut v = Vec::new(); - for device_info in Startup::discover() - .await? + for device_info in discovery + .infos .into_iter() .filter(|device_info| device_info.device_type == 0xE1) {