summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/web_frontend/chart.rs13
-rw-r--r--src/web_frontend/transactions.rs9
-rw-r--r--templates/asset.html.tera2
-rw-r--r--templates/chart.html.tera8
-rw-r--r--templates/transaction.html.tera9
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 %}