From 6be00d64236161da4bee3d63294f7bcd1656484c Mon Sep 17 00:00:00 2001 From: bel Date: Sun, 21 Jul 2024 17:12:52 -0600 Subject: [PATCH] /api/trends has 1 pie of median --- cmd/http/router.go | 25 +++++++++++++++++++------ src/view/chart.go | 3 +++ 2 files changed, 22 insertions(+), 6 deletions(-) diff --git a/cmd/http/router.go b/cmd/http/router.go index 26afd04..cfbd1d6 100644 --- a/cmd/http/router.go +++ b/cmd/http/router.go @@ -143,17 +143,30 @@ func (router Router) APITrends(w http.ResponseWriter, r *http.Request) { } slices.Sort(months) - fmt.Fprintln(w, "") + catToMonth := map[string][]int{} for _, month := range months { balances := monthsToDeltas[month].Balances().WithBPIs(bpis) - chart := view.NewChart("pie") for category, balance := range balances { - chart.AddY(category, []int{int(balance[ledger.USD])}) + catToMonth[category] = append(catToMonth[category], int(balance[ledger.USD])) } - fmt.Fprintln(w, "

", month, "

") - if err := chart.Render(w); err != nil { - panic(err) + } + + chart := view.NewChart("pie") + ttl := 0 + for cat, month := range catToMonth { + for i := 0; i < len(months)-len(month); i++ { + month = append(month, 0) } + slices.Sort(month) + median := month[len(month)/2] + ttl += median + if median > 50 { + chart.AddY(cat, []int{median}) + } + } + fmt.Fprintln(w, "

Median Spending ($", ttl, ")

") + if err := chart.Render(w); err != nil { + panic(err) } } diff --git a/src/view/chart.go b/src/view/chart.go index 7495a5e..8434702 100644 --- a/src/view/chart.go +++ b/src/view/chart.go @@ -124,6 +124,9 @@ func (pie *Pie) AddX(v interface{}) { func (pie *Pie) Render(w io.Writer) error { pie.AddSeries("", pie.series) + pie.SetGlobalOptions(charts.WithLegendOpts(opts.Legend{ + Show: false, + })) return pie.Pie.Render(w) }