All checks were successful
Deploy to K8s / deploy (push) Successful in 12s
Instead of hiding older months entirely, show all months in the from/to selectors but default the from-select to the last MONTHS_TO_SHOW months on page load. The "All" button resets to full history as before. Python: passes months_to_show to render_template, IIFE sets fromSelect.value. Go: adds MonthsToShow to response structs, data-months-to-show attr in templates, filters.js reads it and defaults fromSelect after hideFutureMonths. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
44 lines
2.3 KiB
Go
44 lines
2.3 KiB
Go
package api
|
|
|
|
// AdultsMonthData is the reconciled ledger for one adult member in one month.
|
|
// Keys match Python's result["members"][name]["months"][YYYY-MM].
|
|
type AdultsMonthData struct {
|
|
Expected int `json:"expected"`
|
|
OriginalExpected int `json:"original_expected"`
|
|
AttendanceCount int `json:"attendance_count"`
|
|
Exception *ExceptionData `json:"exception"`
|
|
Paid float64 `json:"paid"` // float: proportional allocator may produce fractional CZK
|
|
Transactions []MemberTxEntry `json:"transactions"`
|
|
}
|
|
|
|
// AdultsMemberData is the reconciled ledger for one adult member.
|
|
// Keys match Python's result["members"][name].
|
|
type AdultsMemberData struct {
|
|
Tier string `json:"tier"`
|
|
Months map[string]AdultsMonthData `json:"months"` // YYYY-MM → month data
|
|
OtherTransactions []MemberOtherEntry `json:"other_transactions"`
|
|
TotalBalance int `json:"total_balance"`
|
|
}
|
|
|
|
// AdultsResponse is the JSON contract for GET /api/adults.
|
|
// MemberData, MonthLabels, and RawPayments correspond to the Python view-model
|
|
// fields member_data, month_labels_json, and raw_payments_json respectively,
|
|
// but as nested objects rather than pre-serialised JSON strings.
|
|
type AdultsResponse struct {
|
|
Months []string `json:"months"` // display labels
|
|
RawMonths []string `json:"raw_months"` // "YYYY-MM"
|
|
Results []MemberRow `json:"results"`
|
|
Totals []TotalCell `json:"totals"`
|
|
MemberData map[string]AdultsMemberData `json:"member_data"` // name → ledger
|
|
MonthLabels map[string]string `json:"month_labels"` // YYYY-MM → display label
|
|
RawPayments map[string][]RawTransaction `json:"raw_payments"` // name → raw sheet rows
|
|
Credits []Credit `json:"credits"`
|
|
Debts []Credit `json:"debts"`
|
|
Unmatched []RawTransaction `json:"unmatched"`
|
|
AttendanceURL string `json:"attendance_url"`
|
|
PaymentsURL string `json:"payments_url"`
|
|
BankAccount string `json:"bank_account"`
|
|
CurrentMonth string `json:"current_month"`
|
|
MonthsToShow int `json:"months_to_show"`
|
|
}
|