diff options
| -rw-r--r-- | src/web_frontend/chart.rs | 13 | ||||
| -rw-r--r-- | src/web_frontend/transactions.rs | 9 | ||||
| -rw-r--r-- | templates/asset.html.tera | 2 | ||||
| -rw-r--r-- | templates/chart.html.tera | 8 | ||||
| -rw-r--r-- | templates/transaction.html.tera | 9 |
5 files changed, 21 insertions, 20 deletions
diff --git a/src/web_frontend/chart.rs b/src/web_frontend/chart.rs index ed593dd..43ec3eb 100644 --- a/src/web_frontend/chart.rs +++ b/src/web_frontend/chart.rs @@ -23,8 +23,9 @@ struct ChartContext { } -#[get("/chart?<start>&<end>")] -pub fn chart_handler(start : Option<&RawStr>, end : Option<&RawStr>) -> rocket_contrib::templates::Template { +#[get("/chart/<account>?<start>&<end>")] +pub fn chart_handler(account : &RawStr, start : Option<&RawStr>, end : Option<&RawStr>) -> rocket_contrib::templates::Template { + let account_name = account.to_string(); let date_start = match start { Some(s) => { let mut tmp = s.to_string(); tmp.push_str("-01"); @@ -40,7 +41,7 @@ pub fn chart_handler(start : Option<&RawStr>, end : Option<&RawStr>) -> rocket_c let date_range = crate::web_frontend::util::DateRange::new(date_start, date_end); let asset_ini = "data/asset.ini"; let asset = crate::banking::asset::Asset::from_ini_file(asset_ini); - let account = asset.get_account_by_name("Girokonto"); + let account = asset.get_account_by_name(&account_name); let acc; match account { Some(trans) => acc = trans, @@ -55,12 +56,12 @@ pub fn chart_handler(start : Option<&RawStr>, end : Option<&RawStr>) -> rocket_c } let mut groups = HashMap::new(); - let t = acc.transactions; + let t = acc.transactions; // filter transaction to match only the specified timeframe println!("unfiltered number: {}", t.len()); let mut t_filtered = Vec::new(); for date in date_range { - let mut tmp : Vec<_> = t.iter().filter(|x| x.date.month() == date.month()).collect(); + let mut tmp : Vec<_> = t.iter().filter(|x| x.date.month() == date.month() && x.date.year() == date.year()).collect(); t_filtered.append(& mut tmp); } @@ -88,7 +89,7 @@ pub fn chart_handler(start : Option<&RawStr>, end : Option<&RawStr>) -> rocket_c total_chart = total_chart + complete; // ALSO INSERT OTHER, AKA THE REST } - let context = ChartContext { account_name : String::from("Girokonto"), + let context = ChartContext { account_name : account_name, groups : groups, total_sum : total_sum, total_chart : total_chart, date_start : date_start.to_string()[0..7].to_string(), date_end : date_end.to_string()[0..7].to_string() }; diff --git a/src/web_frontend/transactions.rs b/src/web_frontend/transactions.rs index d17f50d..54aacf9 100644 --- a/src/web_frontend/transactions.rs +++ b/src/web_frontend/transactions.rs @@ -37,9 +37,10 @@ fn apply_transaction_filter(filter : String, transactions : Vec<crate::banking:: } -#[get("/transactions?<start>&<end>&<filter>")] -pub fn transaction_handler(start : Option<&RawStr>, end : Option<&RawStr>, +#[get("/transactions/<account>?<start>&<end>&<filter>")] +pub fn transaction_handler(account : &RawStr, start : Option<&RawStr>, end : Option<&RawStr>, filter : Option<&RawStr>) -> rocket_contrib::templates::Template { + let account_name = account.to_string(); let date_start = match start { Some(s) => { let mut tmp = s.to_string(); tmp.push_str("-01"); @@ -58,7 +59,7 @@ pub fn transaction_handler(start : Option<&RawStr>, end : Option<&RawStr>, }; let asset_ini = "data/asset.ini"; let asset : Asset = crate::banking::asset::Asset::from_ini_file(asset_ini); - let transactions = asset.get_account_by_name("Girokonto"); + let transactions = asset.get_account_by_name(&account_name); let acc; match transactions { Some(trans) => acc = trans, @@ -78,7 +79,7 @@ pub fn transaction_handler(start : Option<&RawStr>, end : Option<&RawStr>, // apply filter let ft = apply_transaction_filter(transaction_filter.clone(), t_filtered); - let context = TransactionContext { transactions: ft, account_name : String::from("Girokonto"), + let context = TransactionContext { transactions: ft, account_name : account_name, filter : transaction_filter, date_start : date_start.to_string()[0..7].to_string(), date_end : date_end.to_string()[0..7].to_string()}; Template::render("transaction", context) diff --git a/templates/asset.html.tera b/templates/asset.html.tera index bd0e5b9..9e768d7 100644 --- a/templates/asset.html.tera +++ b/templates/asset.html.tera @@ -57,7 +57,7 @@ {% set amount_sum = 0 %} {% for account in accounts %} <tr> - <td>{{ account.name }}</td> + <td><a href="/transactions/{{ account.name }}">{{ account.name }}</a></td> <td>{{ account.category }}</td> {% if account.balance >= 0 %} <td class="text-success">{{ account.balance | round(method="common", precision=2)}}</td> diff --git a/templates/chart.html.tera b/templates/chart.html.tera index 64cb9b3..50adbef 100644 --- a/templates/chart.html.tera +++ b/templates/chart.html.tera @@ -44,9 +44,9 @@ {{ account_name }} </a> <div class="dropdown-menu" aria-labelledby="navbarDropdownMenuLink"> - <a class="dropdown-item" href="/transactions">All Transactions</a> - <a class="dropdown-item" href="/chart">Spending chart</a> - <a class="dropdown-item" href="/balance">Balance</a> + <a class="dropdown-item" href="/transactions/{{ account_name }}">All Transactions</a> + <a class="dropdown-item" href="/chart/{{ account_name }}">Spending chart</a> + <a class="dropdown-item" href="/balance/{{ account_name }}">Balance</a> </div> </li> <li class="nav-item dropdown active"> @@ -68,7 +68,7 @@ <div class="container"> <h1>Spending Chart <small class="text-muted">{{ account_name }}</small></h1> <div style="text-align:center; margin: auto; width:100%"> - <form method="get" action="/chart"><input type="month" id="start" name="start" value="{{ date_start }}"> to <input type="month" id="end" name="end" value="{{ date_end }}"> + <form method="get" action="/chart/{{ account_name }}"><input type="month" id="start" name="start" value="{{ date_start }}"> to <input type="month" id="end" name="end" value="{{ date_end }}"> <input type="submit" value="Show" class="btn btn-light"> </form> </div> diff --git a/templates/transaction.html.tera b/templates/transaction.html.tera index a0f258f..b36b12a 100644 --- a/templates/transaction.html.tera +++ b/templates/transaction.html.tera @@ -22,9 +22,9 @@ {{ account_name }} </a> <div class="dropdown-menu" aria-labelledby="navbarDropdownMenuLink"> - <a class="dropdown-item" href="/transactions">All Transactions</a> - <a class="dropdown-item" href="/chart">Spending chart</a> - <a class="dropdown-item" href="/balance">Balance</a> + <a class="dropdown-item" href="/transactions/{{ account_name }}">All Transactions</a> + <a class="dropdown-item" href="/chart/{{ account_name }}">Spending chart</a> + <a class="dropdown-item" href="/balance/{{account_name }}">Balance</a> </div> </li> <li class="nav-item dropdown active"> @@ -33,7 +33,6 @@ </a> <div class="dropdown-menu" aria-labelledby="navbarDropdownMenuLink"> <a class="dropdown-item" href="/asset">Overview</a> - <a class="dropdown-item" href="/chart">Girokonto</a> </div> </li> <li class="nav-item"> @@ -45,7 +44,7 @@ <!-- content --> <div class="container"> <div class="md-form mt-0" style="padding-top: 20px;"> - <form name="filter" method="get" action="/transactions"> + <form name="filter" method="get" action="/transactions/{{ account_name }}"> {% if filter == "" %} <input id="filter" name="filter" class="form-control" type="text" placeholder="Filter"> {% else %} |
