This commit is contained in:
parent
53bda4eb06
commit
c25a8d633e
10
src/main.rs
10
src/main.rs
@ -118,14 +118,10 @@ fn ligth_controll(
|
|||||||
if let Ok(action) = action {
|
if let Ok(action) = action {
|
||||||
match action {
|
match action {
|
||||||
Action::Reload => {
|
Action::Reload => {
|
||||||
let new_render = render::Render::new(pool.clone());
|
let result = render.reload_config();
|
||||||
|
if result.is_err() || result.as_ref().ok().is_none() {
|
||||||
if new_render.is_err() || new_render.as_ref().ok().is_none() {
|
println!("Ehh failed to load config i guess: {:?}", result.err());
|
||||||
println!("something every wrong {:?}", new_render.err());
|
|
||||||
continue;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
render = new_render.unwrap();
|
|
||||||
}
|
}
|
||||||
Action::Clear => {
|
Action::Clear => {
|
||||||
render.blank();
|
render.blank();
|
||||||
|
@ -180,6 +180,84 @@ impl Render {
|
|||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub fn reload_config(&mut self) -> Result<(), Box<dyn Error>> {
|
||||||
|
println!("Reload config");
|
||||||
|
|
||||||
|
let conn = self.conn.get()?;
|
||||||
|
|
||||||
|
let stmt = conn.prepare("SELECT ledcount, tags from configuration;");
|
||||||
|
|
||||||
|
if stmt.is_err() || stmt.as_ref().ok().is_none() {
|
||||||
|
Err(format!(
|
||||||
|
"Something went wrong while reading the database {:?}",
|
||||||
|
stmt.as_ref().err()
|
||||||
|
))?;
|
||||||
|
}
|
||||||
|
|
||||||
|
let mut stmt = stmt?;
|
||||||
|
|
||||||
|
struct Data {
|
||||||
|
ledcount: u32,
|
||||||
|
tag: String,
|
||||||
|
}
|
||||||
|
|
||||||
|
let version_iter = stmt.query_map([], |row| {
|
||||||
|
Ok(Data {
|
||||||
|
ledcount: row.get(0)?,
|
||||||
|
tag: row.get(1)?,
|
||||||
|
})
|
||||||
|
});
|
||||||
|
|
||||||
|
if version_iter.is_err() || version_iter.as_ref().ok().is_none() {
|
||||||
|
Err(format!(
|
||||||
|
"Something went wrong while reading the database {:?}",
|
||||||
|
version_iter.as_ref().err()
|
||||||
|
))?;
|
||||||
|
}
|
||||||
|
|
||||||
|
let version_iter = version_iter.ok().unwrap();
|
||||||
|
|
||||||
|
let mut current_pos = 0;
|
||||||
|
|
||||||
|
let mut local_led_config = Vec::new();
|
||||||
|
|
||||||
|
for data in version_iter {
|
||||||
|
let data = data?;
|
||||||
|
|
||||||
|
let tag = if data.tag.is_empty() {
|
||||||
|
None
|
||||||
|
} else {
|
||||||
|
Some(data.tag)
|
||||||
|
};
|
||||||
|
|
||||||
|
let start = current_pos;
|
||||||
|
let end = current_pos + data.ledcount;
|
||||||
|
current_pos = end;
|
||||||
|
|
||||||
|
let start: Result<usize, _> = start.try_into();
|
||||||
|
let end: Result<usize, _> = end.try_into();
|
||||||
|
|
||||||
|
if start.is_err() || start.ok().is_none() || end.is_err() || end.ok().is_none() {
|
||||||
|
println!("Skiping loading configuration");
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
let start = start.ok().unwrap();
|
||||||
|
let end = end.ok().unwrap();
|
||||||
|
|
||||||
|
local_led_config.push(LocalLedConfiguration { tag, start, end });
|
||||||
|
}
|
||||||
|
|
||||||
|
self.num_leds = current_pos;
|
||||||
|
println!(
|
||||||
|
"Loaded: {} leds, with config: {:?}",
|
||||||
|
self.num_leds, local_led_config
|
||||||
|
);
|
||||||
|
self.local_led_config = local_led_config;
|
||||||
|
|
||||||
|
Ok(())
|
||||||
|
}
|
||||||
|
|
||||||
pub fn add_animation(&mut self, animation: Animation) {
|
pub fn add_animation(&mut self, animation: Animation) {
|
||||||
println!("Added animation");
|
println!("Added animation");
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user