Landscape,
}
+type PL = PresentationLayout;
+
impl<'r> FromParam<'r> for PresentationLayout {
type Error = strum::ParseError;
fn from_param(param: &'r RawStr) -> Result<Self, Self::Error> {
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,
}
}
}
#[derive(Serialize,Debug)]
struct SessionRenderContext {
- // xxx abbrev timestamps in Landscape
ptoken : RawToken,
ctoken : RawToken,
player : PlayerId,
uses.push(for_piece);
}
+ let mut timestamp_abbrev : Option<String> = None;
+
let log = itertools::chain(
ig.gs.log.iter()
.map(|(_, logent)| logent)
})
},
).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();