From 3e16b66c86b59f7f6045f29ac66e4fae37d99e0d Mon Sep 17 00:00:00 2001 From: Mark Powers Date: Sun, 18 Oct 2020 18:16:26 -0500 Subject: Add expected averages and category summary --- README.md | 1 + src/server.js | 11 ++++++++++- src/templates/expected.html | 12 ++++++++++++ src/templates/summary.html | 30 ++++++++++++++++++++++++++++++ 4 files changed, 53 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 5e5b47a..40f54a5 100644 --- a/README.md +++ b/README.md @@ -22,6 +22,7 @@ fill out a `config.json` file as specified below, and then `npm run run`. ``` ## TODO - Add expected summary (maybe in /summary? compare to averages?) + - add rolling category values (grocery last month, last year, all time) - Add graphs - Add initial balance somewhere - Add assets/liabilities? diff --git a/src/server.js b/src/server.js index b8ccef4..c108a00 100644 --- a/src/server.js +++ b/src/server.js @@ -92,11 +92,16 @@ function setUpRoutes(models, jwtFunctions, database, templates) { server.get(`/expected`, async (req, res, next) => { try { let expecteds = await database.query(`SELECT * FROM expecteds WHERE username = '${res.locals.user.username}' ORDER BY \`name\` DESC`, { type: database.QueryTypes.SELECT }) + let day_average = 0 expecteds.forEach((element, i) => { element.index = i + 1 + day_average = element.total / element.days }); let name = res.locals.user.username - let body = templates["expected"]({ name, expecteds }) + let week = Math.round(day_average * 7) + let month = Math.round(day_average * 31) + let year = Math.round(day_average * 365) + let body = templates["expected"]({ name, expecteds, week, month, year }) res.status(200).send(body); } catch (e) { console.log(e) @@ -306,6 +311,10 @@ async function formatSummary(database, username) { summary.year_avg = getBudgetAverage(summary.year) summary.month_avg = getBudgetAverage(summary.month) summary.week_avg = getBudgetAverage(summary.week) + + + summary.categories = await database.query(`select category, sum(amount) as s from transactions where category <> '' group by category`, { type: database.QueryTypes.SELECT }); + summary.subcategories = await database.query(`select subcategory, sum(amount) as s from transactions where subcategory <> '' group by subcategory`, { type: database.QueryTypes.SELECT }); summary.name = username return summary } diff --git a/src/templates/expected.html b/src/templates/expected.html index 15b9d7c..99bf6fd 100644 --- a/src/templates/expected.html +++ b/src/templates/expected.html @@ -33,6 +33,18 @@ {{/each}} + + + + + + + + + + + +
Weekly:{{week}}
Monthly:{{month}}
Yearly:{{year}}
diff --git a/src/templates/summary.html b/src/templates/summary.html index d78182a..bdc2f44 100644 --- a/src/templates/summary.html +++ b/src/templates/summary.html @@ -99,6 +99,36 @@ +
+

Categories

+ + + + + + {{#each categories}} + + + + + {{/each}} +
CategoryTotal
{{this.category}}{{this.s}}
+
+
+

Sub-Categories

+ + + + + + {{#each subcategories}} + + + + + {{/each}} +
Sub-CategoryTotal
{{this.subcategory}}{{this.s}}
+
\ No newline at end of file -- cgit v1.2.3