summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/web_frontend/balance.rs26
-rw-r--r--templates/balance.html.tera9
2 files changed, 20 insertions, 15 deletions
diff --git a/src/web_frontend/balance.rs b/src/web_frontend/balance.rs
index 77311b0..f05b69a 100644
--- a/src/web_frontend/balance.rs
+++ b/src/web_frontend/balance.rs
@@ -1,5 +1,6 @@
use parsers::csv::CsvFile;
use banking::account::Account;
+use crate::banking::asset::Asset;
//use parsers::ini::IniFile;
use std::collections::HashMap;
use rocket_contrib::templates::Template;
@@ -29,8 +30,9 @@ struct BalanceContext {
}
-#[get("/balance?<start>&<end>")]
-pub fn balance_handler(start : Option<&RawStr>, end : Option<&RawStr>) -> rocket_contrib::templates::Template {
+#[get("/balance/<account>?<start>&<end>")]
+pub fn balance_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");
@@ -45,15 +47,19 @@ pub fn balance_handler(start : Option<&RawStr>, end : Option<&RawStr>) -> rocket
};
let date_range = crate::web_frontend::util::DateRange::new(date_start, date_end);
+ 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(&account_name);
+ let acc;
+ match transactions {
+ Some(trans) => acc = trans,
+ None => panic!("could not read file")
+ }
+ let t = acc.transactions;
+
let mut earn_spend_v = Vec::new();
for date in date_range {
- let transactions = CsvFile::from_file("data/t.csv", ";", true);
- let t : Vec<crate::banking::account::Transaction> ;
- match transactions {
- Ok(trans) => t = crate::banking::account::Transaction::from_sparkasse_csv_file(trans),
- Err(e) => panic!("could not read file {:?}", e)
- }
- let result : Vec<_> = t.iter().filter(|x| x.date.month() == date.month()).collect();
+ let result : Vec<_> = t.iter().filter(|x| x.date.month() == date.month() && x.date.year() == date.year()).collect();
let mut earn = 0.0;
let mut spend = 0.0;
for r in &result {
@@ -65,7 +71,7 @@ pub fn balance_handler(start : Option<&RawStr>, end : Option<&RawStr>) -> rocket
}
earn_spend_v.push(MonthEarnSpend { name : date.to_string(), earned : earn, spent : spend});
}
- let context = BalanceContext { account_name : String::from("Girokonto"),
+ let context = BalanceContext { account_name : account_name,
months : earn_spend_v , date_start : date_start.to_string()[0..7].to_string(),
date_end : date_end.to_string()[0..7].to_string()};
Template::render("balance", context)
diff --git a/templates/balance.html.tera b/templates/balance.html.tera
index 8f9ebec..332c8c1 100644
--- a/templates/balance.html.tera
+++ b/templates/balance.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">
@@ -46,7 +45,7 @@
<div class="container">
<h1>Balance <small class="text-muted">{{ account_name }}</small></h1>
<div style="text-align:center; margin: auto; width:100%; padding: 10px;">
- <form method="get" action="/balance"><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="/balance/{{ 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>