From 9a14ae4a621f19676df256570386a672b33e506d Mon Sep 17 00:00:00 2001 From: Pierre de Lacroix Date: Mon, 29 Jun 2026 17:19:22 +0200 Subject: [PATCH] display shift id in list --- src/grist.rs | 23 ++++++++++++++++++----- 1 file changed, 18 insertions(+), 5 deletions(-) diff --git a/src/grist.rs b/src/grist.rs index 63c4426..a233992 100644 --- a/src/grist.rs +++ b/src/grist.rs @@ -139,13 +139,20 @@ pub enum CustomOrDefined { // {"Autres_infos": Null, "Heure_de_debut": Number(1782144000), "Inscriptions": Array [String("L"), Number(1)], "Type_de_shift": Number(23)} #[derive(Clone, Debug)] pub struct Shift { + pub id: Option, pub shift_type: CustomOrDefined, pub start_time: DateTime, pub inscriptions: Vec, } impl Shift { - pub fn new(shift_type: CustomOrDefined, start_time: u64, inscriptions: Vec) -> Self { + pub fn new( + id: u64, + shift_type: CustomOrDefined, + start_time: u64, + inscriptions: Vec, + ) -> Self { Self { + id: Some(id), shift_type: shift_type, start_time: DateTime::from_timestamp(start_time as i64, 0) .expect("failed to parse timestamp") @@ -165,6 +172,7 @@ impl Shift { guide: impl Into, ) -> Self { Self { + id: None, shift_type: CustomOrDefined::Custom(CustomShiftValues::new( name, priority, persons, duration, guide, )), @@ -250,6 +258,10 @@ impl Shift { impl Display for Shift { fn fmt(&self, f: &mut Fmt<'_>) -> FmtRes { + let id = match self.id { + Some(id) => format!("{} - ", id), + None => "".to_string(), + }; let start_time = self.start_time.format("le %d à %H:%M"); let inscriptions = if self.inscriptions.len() < self.persons() as usize { format!("{}/{}", self.inscriptions.len(), self.persons()) @@ -258,7 +270,8 @@ impl Display for Shift { }; write!( f, - "{} ({}): {}, durée {} h, inscrit·es : {}", + "{}{} ({}): {}, durée {} h, inscrit·es : {}", + id, self.name(), self.priority(), start_time, @@ -297,7 +310,7 @@ pub fn get_priority(record: &RecordsListRecordsInner, column: &str) -> Res Res> { +pub fn get_number_array(record: &RecordsListRecordsInner, column: &str) -> Res> { let val_col = record .fields .get(column) @@ -389,7 +402,7 @@ pub async fn list_shifts() -> Res> { }; let start_time = get_number(&record, "Heure_de_debut")?; let inscriptions_refs = - get_number_array(record, "Inscriptions").context("getting inscriptions refs")?; + get_number_array(&record, "Inscriptions").context("getting inscriptions refs")?; // let inscriptions = inscriptions_refs // .iter() // .filter_map(async |i| get_inscription(i).await.ok()) @@ -398,7 +411,7 @@ pub async fn list_shifts() -> Res> { for inscription_ref in inscriptions_refs { inscriptions.push(get_inscription(inscription_ref).await?); } - let shift = Shift::new(shift_type, start_time, inscriptions); + let shift = Shift::new(record.id, shift_type, start_time, inscriptions); shifts.push(shift); }