Skip to content

Commit cf051a5

Browse files
committed
Support showing elapsed/moving time
1 parent 82f8d06 commit cf051a5

File tree

6 files changed

+47
-28
lines changed

6 files changed

+47
-28
lines changed

README.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,8 +28,8 @@ Features:
2828
- `q`: **Quit**: quit!
2929
- `k`: **Up** - select previous activity
3030
- `j`: **Down** - select next activity
31-
- `K`: **PageUp** - select previous activity
32-
- `J`: **PageDown** - select next activity
31+
- `K`: **PageUp** - select previous activity (`shift-K` to move 10 down)
32+
- `J`: **PageDown** - select next activity (`shift-J` to move 10 up)
3333
- `n`: **Next** - (in activity view) next split
3434
- `p`: **Previous** - (in activity view) previous split
3535
- `o`: **ToggleSortOrder** - switch between ascending and descending order

src/app.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -133,6 +133,7 @@ impl App<'_> {
133133
filter_dialog: false,
134134
sort_dialog: false,
135135
rank_dialog: false,
136+
use_moving_time: true,
136137
},
137138
activity_view_state: ActivityViewState {
138139
pace_table_state: TableState::default(),
Lines changed: 34 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -1,27 +1,24 @@
1-
21
use tui::{
32
layout::Constraint,
43
style::{Color, Modifier, Style},
54
text::Span,
65
widgets::{Cell, Row, Table},
76
};
87

9-
10-
use crate::{
11-
app::App,
12-
store::activity::{Activities},
13-
};
14-
15-
8+
use crate::{app::App, store::activity::Activities};
169

1710
pub fn activity_list_table<'a>(app: &App, activities: &'a Activities) -> Table<'a> {
1811
let mut rows = vec![];
12+
let time_header = match app.activity_list.use_moving_time {
13+
true => "🕑 Moving",
14+
false => "🕑 Elapsed",
15+
};
1916
let header_names = [
2017
"Date",
2118
"",
2219
"Title",
2320
"Dst",
24-
"🕑 Time",
21+
time_header,
2522
"👣 Pace",
2623
"󰓅 Speed",
2724
"💓 Avg. Heart",
@@ -41,13 +38,21 @@ pub fn activity_list_table<'a>(app: &App, activities: &'a Activities) -> Table<'
4138
Cell::from(activity.activity_type_icon()),
4239
Cell::from(activity.title.clone()),
4340
Cell::from(app.unit_formatter.distance(activity.distance)),
44-
Cell::from(app.unit_formatter.stopwatch_time(activity.elapsed_time)),
45-
Cell::from(
46-
app.unit_formatter.pace(activity.moving_time, activity.distance),
47-
),
48-
Cell::from(
49-
app.unit_formatter.speed(activity.meters_per_hour()),
50-
),
41+
Cell::from(app.unit_formatter.stopwatch_time(
42+
match app.activity_list.use_moving_time {
43+
true => activity.moving_time,
44+
false => activity.elapsed_time,
45+
},
46+
)),
47+
Cell::from(match app.activity_list.use_moving_time {
48+
true => app
49+
.unit_formatter
50+
.pace(activity.moving_time, activity.distance),
51+
false => app
52+
.unit_formatter
53+
.pace(activity.elapsed_time, activity.distance),
54+
}),
55+
Cell::from(app.unit_formatter.speed(activity.meters_per_hour())),
5156
Cell::from(
5257
activity
5358
.average_heartrate
@@ -58,7 +63,9 @@ pub fn activity_list_table<'a>(app: &App, activities: &'a Activities) -> Table<'
5863
]));
5964
}
6065

61-
Table::new(rows, &[
66+
Table::new(
67+
rows,
68+
&[
6269
Constraint::Length(10),
6370
Constraint::Length(2),
6471
Constraint::Percentage(20),
@@ -69,13 +76,14 @@ pub fn activity_list_table<'a>(app: &App, activities: &'a Activities) -> Table<'
6976
Constraint::Min(8),
7077
Constraint::Min(8),
7178
Constraint::Min(8),
72-
])
73-
.header(
74-
Row::new(headers)
75-
.height(1)
76-
.bottom_margin(1)
77-
.style(Style::default()),
78-
)
79-
.highlight_style(Style::default().add_modifier(Modifier::BOLD))
80-
.highlight_symbol("")
79+
],
80+
)
81+
.header(
82+
Row::new(headers)
83+
.height(1)
84+
.bottom_margin(1)
85+
.style(Style::default()),
86+
)
87+
.highlight_style(Style::default().add_modifier(Modifier::BOLD))
88+
.highlight_symbol("")
8189
}

src/component/activity_list/mod.rs

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -93,6 +93,7 @@ impl View for ActivityList {
9393
StravaEvent::Filter => toggle_filter(app),
9494
StravaEvent::Sort => toggle_sort(app),
9595
StravaEvent::Rank => toggle_rank(app),
96+
StravaEvent::MovingElapsed => toggle_moving_elapsed(app),
9697
StravaEvent::Enter => table_status_select_current(app),
9798
StravaEvent::Refresh => app.send(InputEvent::Sync),
9899
StravaEvent::IncreaseTolerance => {
@@ -123,6 +124,7 @@ impl View for ActivityList {
123124
StravaEvent::Sort,
124125
StravaEvent::Rank,
125126
StravaEvent::Refresh,
127+
StravaEvent::MovingElapsed,
126128
];
127129
events.push(StravaEvent::Anchor);
128130
if app.activity_anchored.is_some() {
@@ -195,6 +197,7 @@ pub struct ActivityListState {
195197
pub filter_dialog: bool,
196198
pub sort_dialog: bool,
197199
pub rank_dialog: bool,
200+
pub use_moving_time: bool,
198201
}
199202

200203
pub struct ActivityViewState {
@@ -225,3 +228,6 @@ fn toggle_sort(app: &mut App) {
225228
fn toggle_rank(app: &mut App) {
226229
app.activity_list.rank_dialog = !app.activity_list.rank_dialog;
227230
}
231+
fn toggle_moving_elapsed(app: &mut App) {
232+
app.activity_list.use_moving_time = !app.activity_list.use_moving_time;
233+
}

src/component/activity_view.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,7 @@ impl View for ActivityView {
7171
StravaEvent::Previous,
7272
StravaEvent::Enter,
7373
StravaEvent::ToggleLogView,
74+
StravaEvent::MovingElapsed,
7475
StravaEvent::Quit,
7576
]
7677
}

src/event/keymap.rs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ impl KeyMap {
1616
map.insert(KeyCode::Char('J'), StravaEvent::PageDown);
1717
map.insert(KeyCode::Char('n'), StravaEvent::Next);
1818
map.insert(KeyCode::Char('p'), StravaEvent::Previous);
19+
map.insert(KeyCode::Char('m'), StravaEvent::MovingElapsed);
1920
map.insert(KeyCode::Char('o'), StravaEvent::ToggleSortOrder);
2021
map.insert(KeyCode::Char('u'), StravaEvent::ToggleUnitSystem);
2122
map.insert(KeyCode::Char('s'), StravaEvent::Sort);
@@ -82,6 +83,7 @@ pub enum StravaEvent {
8283
Previous,
8384
PageDown,
8485
PageUp,
86+
MovingElapsed,
8587
}
8688
impl StravaEvent {
8789
pub fn describe(se: &StravaEvent) -> &'static str {
@@ -106,6 +108,7 @@ impl StravaEvent {
106108
StravaEvent::Next => "next",
107109
StravaEvent::Previous => "prev",
108110
StravaEvent::ToggleLogView => "logs",
111+
StravaEvent::MovingElapsed => "moving/elapsed",
109112
}
110113
}
111114
}

0 commit comments

Comments
 (0)