From 84a8a26794bdd9e6e885c4076c067e5738e3a4b5 Mon Sep 17 00:00:00 2001 From: FichteFoll Date: Fri, 10 Dec 2021 12:18:15 +0100 Subject: [PATCH] Automatically sort time table when adjusting times --- src/timesheet.rs | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/timesheet.rs b/src/timesheet.rs index b6e8786..2b5709c 100644 --- a/src/timesheet.rs +++ b/src/timesheet.rs @@ -19,7 +19,7 @@ lazy_static! { static ref OVERRIDE_REGEX: regex::Regex = regex::Regex::new("\\[(.*)\\]").unwrap(); } -#[derive(Serialize, Deserialize, Clone, Debug)] +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, Eq)] pub struct TimePoint { text: String, time: Time, @@ -98,7 +98,10 @@ impl TimeSheet { pub fn shift_current(&mut self, minutes: i64) { let time = &mut self.times[self.selected].time; *time += Duration::minutes(minutes); - *time -= Duration::minutes(time.minute() as i64 % 5) + *time -= Duration::minutes(time.minute() as i64 % 5); + let timepoint = self.times[self.selected].clone(); + self.times.sort_by_key(|tp| tp.time); + self.selected = self.times.iter().position(|tp| tp == &timepoint).unwrap(); } fn current(&self) -> &TimePoint {