Disable bulb controls when no bulbs selected
This commit is contained in:
@ -3,8 +3,8 @@ use crate::css::C;
|
||||
use chrono::{NaiveTime, Weekday};
|
||||
use common::{BulbGroup, BulbGroupShape, BulbMap, ClientMessage, ServerMessage};
|
||||
use lighter_lib::{BulbId, BulbMode};
|
||||
use seed::prelude::*;
|
||||
use seed::{attrs, button, div, input, C};
|
||||
use seed::{prelude::*, IF};
|
||||
use seed_router::Page;
|
||||
use std::collections::{BTreeMap, HashMap, HashSet};
|
||||
use std::fmt::Write;
|
||||
@ -228,14 +228,11 @@ impl Page for Model {
|
||||
.next()
|
||||
.and_then(|&index| self.bulb_map.groups.get(index))
|
||||
.and_then(|group| group.bulbs.first())
|
||||
.and_then(|id| self.bulb_states.get(id))
|
||||
.cloned() // TODO: remove clone
|
||||
.unwrap_or_default();
|
||||
.and_then(|id| self.bulb_states.get(id));
|
||||
|
||||
let calendar_day = |day: Weekday| {
|
||||
let time = selected_bulb
|
||||
.wake_schedule
|
||||
.get(&day)
|
||||
.and_then(|b| b.wake_schedule.get(&day))
|
||||
.map(|t| t.to_string())
|
||||
.unwrap_or_default();
|
||||
div![
|
||||
@ -261,18 +258,20 @@ impl Page for Model {
|
||||
],
|
||||
div![
|
||||
C![C.bulb_controls],
|
||||
IF!(selected_bulb.is_none() => C![C.bulb_controls_disable]),
|
||||
self.color_picker
|
||||
.view()
|
||||
.map_msg(|msg| Msg::ColorPicker(msg)),
|
||||
button![
|
||||
if selected_bulb.mode.power {
|
||||
if selected_bulb.map(|b| b.mode.power).unwrap_or(false) {
|
||||
C![C.bulb_power_button, C.bulb_power_button_on]
|
||||
} else {
|
||||
C![C.bulb_power_button]
|
||||
},
|
||||
ev(Ev::Click, move |_| Msg::SetBulbPower(
|
||||
!selected_bulb.mode.power
|
||||
)),
|
||||
{
|
||||
let target_power = selected_bulb.map(|b| !b.mode.power);
|
||||
ev(Ev::Click, move |_| target_power.map(Msg::SetBulbPower))
|
||||
},
|
||||
div![attrs! { At::Id => "switch_socket" }],
|
||||
div![attrs! { At::Id => "off_label" }, "Off"],
|
||||
div![attrs! { At::Id => "on_label" }, "On"],
|
||||
|
||||
Reference in New Issue
Block a user