Skip to content

Commit 5a38327

Browse files
committed
bulb: Update DMS expanded item state row on notify
1 parent dce265d commit 5a38327

1 file changed

Lines changed: 19 additions & 9 deletions

File tree

bulb/src/dms.rs

Lines changed: 19 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -720,23 +720,27 @@ impl Dms {
720720
}
721721
let mut page = Page::new();
722722
self.title(View::Control, &mut page.frag::<html::Div>());
723+
self.render_state_row(anc, &mut page.frag::<html::Div>());
724+
self.render_current_msg(anc, &mut page.frag::<html::Div>());
723725
let mut div = page.frag::<html::Div>();
724-
div.class("row fill");
726+
div.class("info fill")
727+
.cdata_len(opt_ref(&self.location), 64)
728+
.close();
729+
self.message_composer_html(anc, &mut page.frag::<html::Div>());
730+
self.action_plans_html(anc, &mut page.frag::<html::Details>());
731+
String::from(page)
732+
}
733+
734+
/// Render item state row as an HTML div element
735+
fn render_state_row<'p>(&self, anc: &DmsAnc, div: &'p mut html::Div<'p>) {
736+
div.id("state_row").class("row fill");
725737
self.item_states(anc).tooltips(&mut div.span());
726738
if let Some(lock) = &self.lock
727739
&& let Some(expires) = lock.expires()
728740
{
729741
div.span().cdata(expires);
730742
}
731743
div.close();
732-
self.render_current_msg(anc, &mut page.frag::<html::Div>());
733-
div = page.frag::<html::Div>();
734-
div.class("info fill")
735-
.cdata_len(opt_ref(&self.location), 64)
736-
.close();
737-
self.message_composer_html(anc, &mut page.frag::<html::Div>());
738-
self.action_plans_html(anc, &mut page.frag::<html::Details>());
739-
String::from(page)
740744
}
741745

742746
/// Render current message as an HTML div element
@@ -1421,6 +1425,12 @@ impl Card for Dms {
14211425

14221426
/// Handle updating a card in response to an SSE notification
14231427
fn handle_update(&self, anc: DmsAnc) {
1428+
if let Some(state_row) = Doc::get().try_elem::<HtmlElement>("state_row")
1429+
{
1430+
let mut page = Page::new();
1431+
self.render_state_row(&anc, &mut page.frag::<html::Div>());
1432+
state_row.set_outer_html(&String::from(page));
1433+
}
14241434
if let Some(sign_msg) = Doc::get().try_elem::<HtmlElement>("sign_msg") {
14251435
let mut page = Page::new();
14261436
self.render_current_msg(&anc, &mut page.frag::<html::Div>());

0 commit comments

Comments
 (0)