Help page for view mode
This commit is contained in:
parent
353d422730
commit
1d1778037c
2 changed files with 85 additions and 0 deletions
18
src/app.rs
18
src/app.rs
|
|
@ -21,6 +21,7 @@ pub enum Screen {
|
|||
NewEntry,
|
||||
ReassignProject,
|
||||
LogView,
|
||||
LogViewHelp,
|
||||
}
|
||||
|
||||
pub enum LogViewPeriod {
|
||||
|
|
@ -97,6 +98,7 @@ impl App {
|
|||
Screen::NewEntry => self.handle_new_entry_event(event),
|
||||
Screen::ReassignProject => self.handle_reassign_project_event(event),
|
||||
Screen::LogView => self.handle_log_view_event(event),
|
||||
Screen::LogViewHelp => self.handle_log_view_help_event(event),
|
||||
};
|
||||
|
||||
// If we switched screens, signal that we need to clear
|
||||
|
|
@ -246,6 +248,19 @@ impl App {
|
|||
Ok(false)
|
||||
}
|
||||
|
||||
fn handle_log_view_help_event(&mut self, event: Event) -> anyhow::Result<bool> {
|
||||
match event {
|
||||
Event::Key(KeyEvent { code, .. }) => match code {
|
||||
KeyCode::Esc | KeyCode::Char('q') | KeyCode::Char('?') => {
|
||||
self.current_screen = Screen::LogView;
|
||||
}
|
||||
_ => {}
|
||||
},
|
||||
_ => {}
|
||||
}
|
||||
Ok(false)
|
||||
}
|
||||
|
||||
fn handle_reassign_project_event(&mut self, event: Event) -> anyhow::Result<bool> {
|
||||
match event {
|
||||
Event::Key(KeyEvent {
|
||||
|
|
@ -299,6 +314,9 @@ impl App {
|
|||
self.log_view_selected = 0;
|
||||
self.needs_clear = true;
|
||||
}
|
||||
KeyCode::Char('?') => {
|
||||
self.current_screen = Screen::LogViewHelp;
|
||||
}
|
||||
KeyCode::Char('d') => {
|
||||
self.log_view_period = LogViewPeriod::Day;
|
||||
self.log_view_scroll = 0;
|
||||
|
|
|
|||
67
src/ui.rs
67
src/ui.rs
|
|
@ -22,6 +22,7 @@ pub fn render(frame: &mut Frame, app: &App) {
|
|||
Screen::NewEntry => render_new_entry(frame, app),
|
||||
Screen::ReassignProject => render_reassign_project(frame, app),
|
||||
Screen::LogView => render_log_view(frame, app),
|
||||
Screen::LogViewHelp => render_log_view_help(frame, app),
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -568,6 +569,7 @@ fn render_log_view(frame: &mut Frame, app: &App) {
|
|||
("e", "edit"),
|
||||
("x", "delete"),
|
||||
("c", "copy"),
|
||||
("?", "help"),
|
||||
("q/ESC", "back"),
|
||||
];
|
||||
|
||||
|
|
@ -586,3 +588,68 @@ fn render_log_view(frame: &mut Frame, app: &App) {
|
|||
|
||||
frame.render_widget(command_bar, chunks[1]);
|
||||
}
|
||||
|
||||
fn render_log_view_help(frame: &mut Frame, _app: &App) {
|
||||
let width = frame.size().width.saturating_sub(4).min(60);
|
||||
let area = centered_rect(width, frame.size().height.saturating_sub(2), frame.size());
|
||||
|
||||
frame.render_widget(Clear, area);
|
||||
|
||||
let help_text = vec![
|
||||
"Watson Log Viewer Help",
|
||||
"",
|
||||
"This view displays your Watson time tracking logs with various options",
|
||||
"for viewing and managing your tracked time.",
|
||||
"",
|
||||
"Time Periods:",
|
||||
"- d: Switch to Day view (current day)",
|
||||
"- w: Switch to Week view (current week)",
|
||||
"- m: Switch to Month view (current month)",
|
||||
"",
|
||||
"Grouping:",
|
||||
"- g: Toggle between grouping by Date or by Project",
|
||||
" - By Date: Shows all entries chronologically",
|
||||
" - By Project: Groups entries by project within each date",
|
||||
"",
|
||||
"Navigation:",
|
||||
"- j/k or ↑/↓: Select entries",
|
||||
"- PageUp/PageDown: Jump 10 entries",
|
||||
"",
|
||||
"Actions:",
|
||||
"- e: Edit the selected entry (opens Watson's editor)",
|
||||
"- x: Delete the selected entry (no confirmation)",
|
||||
"- c: Copy all visible log entries to clipboard",
|
||||
"",
|
||||
"Other:",
|
||||
"- ?: Show this help",
|
||||
"- q or ESC: Return to main screen",
|
||||
];
|
||||
|
||||
let text = help_text.join("\n");
|
||||
|
||||
let block = Block::default()
|
||||
.title("Log View Help")
|
||||
.borders(Borders::ALL)
|
||||
.style(Style::default().fg(Color::White));
|
||||
|
||||
let paragraph = Paragraph::new(text)
|
||||
.block(block)
|
||||
.style(Style::default().fg(Color::White))
|
||||
.wrap(ratatui::widgets::Wrap { trim: true });
|
||||
|
||||
frame.render_widget(paragraph, area);
|
||||
|
||||
// Render command bar
|
||||
let bar_area = Rect::new(
|
||||
0,
|
||||
frame.size().height.saturating_sub(1),
|
||||
frame.size().width,
|
||||
1,
|
||||
);
|
||||
|
||||
let command_bar = Paragraph::new(" q/ESC/? (back to log view)")
|
||||
.style(Style::default().fg(Color::White))
|
||||
.alignment(Alignment::Left);
|
||||
|
||||
frame.render_widget(command_bar, bar_area);
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue