From 746ddbcb814a3d741ed0ef826f232ec39f8a5708 Mon Sep 17 00:00:00 2001 From: Rusty Pickle Date: Sun, 9 Nov 2025 12:22:05 +0600 Subject: [PATCH] Add infinite year scrolling --- tui/src/key_checker/key_handler.rs | 16 ++++++++-------- tui/src/page_handler/ui_state.rs | 26 ++++++++++++++++++++++++++ 2 files changed, 34 insertions(+), 8 deletions(-) diff --git a/tui/src/key_checker/key_handler.rs b/tui/src/key_checker/key_handler.rs index 185945d..df38dbd 100644 --- a/tui/src/key_checker/key_handler.rs +++ b/tui/src/key_checker/key_handler.rs @@ -485,7 +485,7 @@ impl<'a> InputKeyHandler<'a> { self.reload_home_table()?; } HomeTab::Years => { - self.home_years.previous(); + self.home_years.previous_yearly(); self.home_months.set_index_zero(); self.reload_home_table()?; } @@ -502,7 +502,7 @@ impl<'a> InputKeyHandler<'a> { self.reload_chart_data()?; } ChartTab::Years => { - self.chart_years.previous(); + self.chart_years.previous_yearly(); self.lerp_state.clear(); self.chart_months.set_index_zero(); self.reload_chart_data()?; @@ -527,7 +527,7 @@ impl<'a> InputKeyHandler<'a> { } SummaryTab::Years => { self.summary_months.set_index_zero(); - self.summary_years.previous(); + self.summary_years.previous_yearly(); self.reload_summary()?; } SummaryTab::Months => { @@ -541,7 +541,7 @@ impl<'a> InputKeyHandler<'a> { CurrentUi::Activity => match self.activity_tab { ActivityTab::Years => { self.activity_months.set_index_zero(); - self.activity_years.previous(); + self.activity_years.previous_yearly(); self.reload_activity_table()?; } ActivityTab::Months => { @@ -565,7 +565,7 @@ impl<'a> InputKeyHandler<'a> { self.reload_home_table()?; } HomeTab::Years => { - self.home_years.next(); + self.home_years.next_yearly(); self.home_months.set_index_zero(); self.reload_home_table()?; } @@ -583,7 +583,7 @@ impl<'a> InputKeyHandler<'a> { } ChartTab::Years => { self.lerp_state.clear(); - self.chart_years.next(); + self.chart_years.next_yearly(); self.chart_months.set_index_zero(); self.reload_chart_data()?; } @@ -605,7 +605,7 @@ impl<'a> InputKeyHandler<'a> { } SummaryTab::Years => { self.summary_months.set_index_zero(); - self.summary_years.next(); + self.summary_years.next_yearly(); self.reload_summary()?; } SummaryTab::Months => { @@ -617,7 +617,7 @@ impl<'a> InputKeyHandler<'a> { CurrentUi::Activity => match self.activity_tab { ActivityTab::Years => { self.activity_months.set_index_zero(); - self.activity_years.next(); + self.activity_years.next_yearly(); self.reload_activity_table()?; } ActivityTab::Months => { diff --git a/tui/src/page_handler/ui_state.rs b/tui/src/page_handler/ui_state.rs index 46b99fe..d204fc9 100644 --- a/tui/src/page_handler/ui_state.rs +++ b/tui/src/page_handler/ui_state.rs @@ -140,6 +140,17 @@ impl IndexedData { self.index = (self.index + 1) % self.titles.len(); } + pub fn next_yearly(&mut self) { + if self.index == 8 { + self.titles.remove(0); + let mut final_year: u64 = self.titles[self.titles.len() - 1].parse().unwrap(); + final_year += 1; + self.titles.push(final_year.to_string()); + } else { + self.next() + } + } + /// Decreases the current index by 1 or goes to final index if at 0 pub fn previous(&mut self) { if self.index > 0 { @@ -149,6 +160,21 @@ impl IndexedData { } } + pub fn previous_yearly(&mut self) { + if self.index == 8 { + let first_year: i64 = self.titles[0].parse().unwrap(); + + if first_year != 2022 { + self.titles.pop(); + self.titles.insert(0, (first_year - 1).to_string()); + } else if self.index > 0 { + self.index -= 1; + } + } else if self.index > 0 { + self.index -= 1; + } + } + pub fn set_index_zero(&mut self) { self.index = 0; }