From 52e5cc942dca20afa7912d09f5e1fa2a56c75bef Mon Sep 17 00:00:00 2001 From: Jesse Luehrs Date: Fri, 22 Nov 2019 11:37:18 -0500 Subject: more information on the list page --- teleterm-web/src/views/list.rs | 58 +++++++++++++++++++++++++++++++++++------- 1 file changed, 49 insertions(+), 9 deletions(-) (limited to 'teleterm-web/src/views/list.rs') diff --git a/teleterm-web/src/views/list.rs b/teleterm-web/src/views/list.rs index 75fddf2..6d4ccd5 100644 --- a/teleterm-web/src/views/list.rs +++ b/teleterm-web/src/views/list.rs @@ -1,18 +1,58 @@ use crate::prelude::*; pub(crate) fn render(model: &crate::model::Model) -> Vec> { - let mut list = vec![]; - for session in model.sessions() { - list.push(seed::li![seed::button![ + let rows: Vec<_> = model.sessions().iter().map(row).collect(); + vec![ + seed::table![ + seed::tr![ + seed::th!["username"], + seed::th!["size"], + seed::th!["idle"], + seed::th!["watchers"], + seed::th!["title"], + ], + rows + ], + seed::button![simple_ev(Ev::Click, crate::Msg::Refresh), "refresh"], + ] +} + +fn row(session: &crate::protocol::Session) -> Node { + seed::tr![ + seed::td![seed::a![ simple_ev( Ev::Click, crate::Msg::StartWatching(session.id.clone()) ), - format!("{}: {}", session.username, session.id), - ]]); - } - vec![ - seed::ul![list], - seed::button![simple_ev(Ev::Click, crate::Msg::Refresh), "refresh"], + session.username, + ]], + seed::td![format!("{}x{}", session.size.cols, session.size.rows)], + seed::td![format_time(session.idle_time)], + seed::td![format!("{}", session.watchers)], + seed::td![session.title], ] } + +// XXX copied from teleterm +fn format_time(dur: u32) -> String { + let secs = dur % 60; + let dur = dur / 60; + if dur == 0 { + return format!("{}s", secs); + } + + let mins = dur % 60; + let dur = dur / 60; + if dur == 0 { + return format!("{}m{:02}s", mins, secs); + } + + let hours = dur % 24; + let dur = dur / 24; + if dur == 0 { + return format!("{}h{:02}m{:02}s", hours, mins, secs); + } + + let days = dur; + format!("{}d{:02}h{:02}m{:02}s", days, hours, mins, secs) +} -- cgit v1.2.3-54-g00ecf