chiark / gitweb /
old log abbrev timestamps
authorIan Jackson <ijackson@chiark.greenend.org.uk>
Fri, 27 Nov 2020 00:40:45 +0000 (00:40 +0000)
committerIan Jackson <ijackson@chiark.greenend.org.uk>
Fri, 27 Nov 2020 00:40:45 +0000 (00:40 +0000)
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
src/api.rs
src/session.rs

index 621a814131d8d97906f76eadd4f3423a9ff906b0..7a59ca2cb786f400bc88b819ba16a880904cacbb 100644 (file)
@@ -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<Self, Self::Error> {
@@ -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,
     }
   }
 }
index 528cca564ae8b74c89a18c6f62c960e60e3bce12..febb50d247a2f721527f3d00d82c65994f93dec5 100644 (file)
@@ -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<SessionForm>, layout: PresentationLayout)
       uses.push(for_piece);
     }
 
+    let mut timestamp_abbrev : Option<String> = None;
+
     let log = itertools::chain(
       ig.gs.log.iter()
         .map(|(_, logent)| logent)
@@ -156,7 +157,15 @@ fn session(form : Json<SessionForm>, 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();