More factoring of tui-related code.

This commit is contained in:
scoobybejesus 2019-10-20 20:45:50 -04:00
parent c489b92711
commit b5ca5a0929
3 changed files with 124 additions and 99 deletions

View File

@ -39,8 +39,6 @@ mod skip_wizard;
mod setup; mod setup;
mod tui; mod tui;
use crate::tui::app::PrintWindow;
use crate::tui::event::{Events, Event, Config};
#[derive(StructOpt, Debug)] #[derive(StructOpt, Debug)]
@ -218,12 +216,7 @@ fn main() -> Result<(), Box<dyn Error>> {
if present_print_menu_tui { if present_print_menu_tui {
let reports = tui::app::REPORTS; use crate::tui::event::{Events, Event, Config};
let events = Events::with_config(Config {
tick_rate: Duration::from_millis(250u64),
..Config::default()
});
let stdout = io::stdout().into_raw_mode()?; let stdout = io::stdout().into_raw_mode()?;
let stdout = MouseTerminal::from(stdout); let stdout = MouseTerminal::from(stdout);
@ -232,11 +225,16 @@ fn main() -> Result<(), Box<dyn Error>> {
let mut terminal = Terminal::new(backend)?; let mut terminal = Terminal::new(backend)?;
terminal.hide_cursor()?; terminal.hide_cursor()?;
let mut app = PrintWindow::new("Reports"); let mut app = tui::app::PrintWindow::new("Reports");
let events = Events::with_config(Config {
tick_rate: Duration::from_millis(250u64),
..Config::default()
});
loop { loop {
tui::ui::draw(&mut terminal, &app, reports.len() as u16)?; tui::ui::draw(&mut terminal, &app)?;
match events.next()? { match events.next()? {
@ -251,12 +249,6 @@ fn main() -> Result<(), Box<dyn Error>> {
Key::Down => { Key::Down => {
app.on_down(); app.on_down();
} }
Key::Left => {
// app.on_left();
}
Key::Right => {
// app.on_right();
}
_ => {} _ => {}
}, },
_ => {} _ => {}
@ -271,83 +263,15 @@ fn main() -> Result<(), Box<dyn Error>> {
std::mem::drop(terminal); std::mem::drop(terminal);
std::thread::sleep(Duration::from_millis(10)); std::thread::sleep(Duration::from_millis(10));
for report in app.to_print { tui::app::export(
println!("Exporting: {}", reports[report]); &app,
match report + 1 { &settings,
1 => { &action_records_map,
csv_export::_1_account_sums_to_csv( &raw_acct_map,
&settings, &account_map,
&raw_acct_map, &transactions_map
&account_map )?;
);
}
2 => {
csv_export::_2_account_sums_nonzero_to_csv(
&account_map,
&settings,
&raw_acct_map
);
}
3 => {
csv_export::_3_account_sums_to_csv_with_orig_basis(
&settings,
&raw_acct_map,
&account_map
);
}
4 => {
csv_export::_4_transaction_mvmt_detail_to_csv(
&settings,
&action_records_map,
&raw_acct_map,
&account_map,
&transactions_map
)?;
}
5 => {
csv_export::_5_transaction_mvmt_summaries_to_csv(
&settings,
&action_records_map,
&raw_acct_map,
&account_map,
&transactions_map
)?;
}
6 => {
csv_export::_6_transaction_mvmt_detail_to_csv_w_orig(
&settings,
&action_records_map,
&raw_acct_map,
&account_map,
&transactions_map
)?;
}
7 => {
txt_export::_1_account_lot_detail_to_txt(
&settings,
&raw_acct_map,
&account_map,
&transactions_map,
&action_records_map
)?;
}
8 => {
txt_export::_2_account_lot_summary_to_txt(
&settings,
&raw_acct_map,
&account_map,
)?;
}
9 => {
txt_export::_3_account_lot_summary_non_zero_to_txt(
&settings,
&raw_acct_map,
&account_map,
)?;
}
_ => {}
}
}
} }
// use tests::test; // use tests::test;

View File

@ -1,6 +1,15 @@
// Copyright (c) 2017-2019, scoobybejesus // Copyright (c) 2017-2019, scoobybejesus
// Redistributions must include the license: https://github.com/scoobybejesus/cryptools/blob/master/LEGAL.txt // Redistributions must include the license: https://github.com/scoobybejesus/cryptools/blob/master/LEGAL.txt
use std::error::Error;
use std::collections::{HashMap};
use crate::transaction::{Transaction, ActionRecord};
use crate::account::{Account, RawAccount};
use crate::core_functions::{ImportProcessParameters};
use crate::csv_export;
use crate::txt_export;
pub (crate) const REPORTS: [&'static str; 9] = [ pub (crate) const REPORTS: [&'static str; 9] = [
"1. CSV: Account Sums", "1. CSV: Account Sums",
@ -100,3 +109,98 @@ impl<'a> PrintWindow<'a> {
vec.dedup(); vec.dedup();
} }
} }
pub fn export(
app: &PrintWindow,
settings: &ImportProcessParameters,
action_records_map: &HashMap<u32, ActionRecord>,
raw_acct_map: &HashMap<u16, RawAccount>,
account_map: &HashMap<u16, Account>,
transactions_map: &HashMap<u32, Transaction>,
) -> Result<(), Box<dyn Error>> {
let reports = REPORTS.to_vec();
for report in app.to_print.iter() {
println!("Exporting: {}", reports[*report]);
match report + 1 {
1 => {
csv_export::_1_account_sums_to_csv(
&settings,
&raw_acct_map,
&account_map
);
}
2 => {
csv_export::_2_account_sums_nonzero_to_csv(
&account_map,
&settings,
&raw_acct_map
);
}
3 => {
csv_export::_3_account_sums_to_csv_with_orig_basis(
&settings,
&raw_acct_map,
&account_map
);
}
4 => {
csv_export::_4_transaction_mvmt_detail_to_csv(
&settings,
&action_records_map,
&raw_acct_map,
&account_map,
&transactions_map
)?;
}
5 => {
csv_export::_5_transaction_mvmt_summaries_to_csv(
&settings,
&action_records_map,
&raw_acct_map,
&account_map,
&transactions_map
)?;
}
6 => {
csv_export::_6_transaction_mvmt_detail_to_csv_w_orig(
&settings,
&action_records_map,
&raw_acct_map,
&account_map,
&transactions_map
)?;
}
7 => {
txt_export::_1_account_lot_detail_to_txt(
&settings,
&raw_acct_map,
&account_map,
&transactions_map,
&action_records_map
)?;
}
8 => {
txt_export::_2_account_lot_summary_to_txt(
&settings,
&raw_acct_map,
&account_map,
)?;
}
9 => {
txt_export::_3_account_lot_summary_non_zero_to_txt(
&settings,
&raw_acct_map,
&account_map,
)?;
}
_ => {}
}
}
Ok(())
}

View File

@ -10,13 +10,10 @@ use ::tui::layout::{Layout, Constraint, Direction};
use ::tui::backend::Backend; use ::tui::backend::Backend;
use crate::tui::app::PrintWindow; use crate::tui::app::PrintWindow;
use crate::tui;
pub fn draw<B: Backend>( pub fn draw<B: Backend>(terminal: &mut Terminal<B>, app: &PrintWindow) -> Result<(), io::Error> {
terminal: &mut Terminal<B>,
app: &PrintWindow,
reports_len: u16,
) -> Result<(), io::Error> {
terminal.draw(|mut f| { terminal.draw(|mut f| {
@ -24,7 +21,7 @@ pub fn draw<B: Backend>(
.constraints([ .constraints([
Constraint::Length(1), Constraint::Length(1),
Constraint::Length(8), Constraint::Length(8),
Constraint::Length(reports_len + 2), Constraint::Length(tui::app::REPORTS.len() as u16 + 2),
Constraint::Percentage(35) Constraint::Percentage(35)
].as_ref()) ].as_ref())
.split(f.size()); .split(f.size());