From: Ian Jackson Date: Fri, 27 Nov 2020 00:40:45 +0000 (+0000) Subject: old log abbrev timestamps X-Git-Tag: otter-0.2.0~343 X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=commitdiff_plain;h=7e074d7bc77fe7c145c6c738f4125d173cbebb7e;p=otter.git old log abbrev timestamps Signed-off-by: Ian Jackson --- diff --git a/src/api.rs b/src/api.rs index 621a8141..7a59ca2c 100644 --- a/src/api.rs +++ b/src/api.rs @@ -12,6 +12,8 @@ pub enum PresentationLayout { Landscape, } +type PL = PresentationLayout; + impl<'r> FromParam<'r> for PresentationLayout { type Error = strum::ParseError; fn from_param(param: &'r RawStr) -> Result { @@ -22,8 +24,14 @@ impl<'r> FromParam<'r> for PresentationLayout { impl PresentationLayout { pub fn template(self) -> &'static str { match self { - PresentationLayout::Portrait => "session", - PresentationLayout::Landscape => "landscape", + PL::Portrait => "session", + PL::Landscape => "landscape", + } + } + pub fn abbreviate_timestamps(self) -> bool { + match self { + PL::Portrait => false, + PL::Landscape => true, } } } diff --git a/src/session.rs b/src/session.rs index 528cca56..febb50d2 100644 --- a/src/session.rs +++ b/src/session.rs @@ -6,7 +6,6 @@ use crate::imports::*; #[derive(Serialize,Debug)] struct SessionRenderContext { - // xxx abbrev timestamps in Landscape ptoken : RawToken, ctoken : RawToken, player : PlayerId, @@ -132,6 +131,8 @@ fn session(form : Json, layout: PresentationLayout) uses.push(for_piece); } + let mut timestamp_abbrev : Option = None; + let log = itertools::chain( ig.gs.log.iter() .map(|(_, logent)| logent) @@ -156,7 +157,15 @@ fn session(form : Json, layout: PresentationLayout) }) }, ).map(|logent|{ - let when = logent.when.render(tz); + let mut when = logent.when.render(tz); + if layout.abbreviate_timestamps() { + let (abbrev, _) = zcoord::misc::timestring_abbreviate( + timestamp_abbrev.get_or_insert(default()), + &when + ); + let abbrev = abbrev.into(); + timestamp_abbrev = Some(mem::replace(&mut when, abbrev)); + } SessionFormattedLogEntry { when, logent } }).collect();