diff options
Diffstat (limited to 'web/views.go')
| -rw-r--r-- | web/views.go | 26 |
1 files changed, 20 insertions, 6 deletions
diff --git a/web/views.go b/web/views.go index b728de8..de4d38f 100644 --- a/web/views.go +++ b/web/views.go @@ -18,6 +18,13 @@ type RideView struct { CotacolPer100Km string } +type RidesPageData struct { + Items []RideView + Headers []RideSortHeader + Filters RideFilterView + Sort RideSort +} + type RideDetailView struct { RideView Route GeoJSONFeatureCollection @@ -168,6 +175,10 @@ func (s RideSort) databaseColumn() (rides.SortColumn, bool) { } func rideSortHeaders(current RideSort) []RideSortHeader { + return rideSortHeadersWithFilters(current, RideFilters{}) +} + +func rideSortHeadersWithFilters(current RideSort, filters RideFilters) []RideSortHeader { columns := []struct { key string label string @@ -188,13 +199,9 @@ func rideSortHeaders(current RideSort) []RideSortHeader { if active { descending = !current.Descending } - query := url.Values{} + query := rideFilterQuery(filters) query.Set("sort", column.key) - if descending { - query.Set("dir", "desc") - } else { - query.Set("dir", "asc") - } + query.Set("dir", rideSortDirection(RideSort{Column: column.key, Descending: descending})) headerClass := column.class ariaSort := "none" indicator := "" @@ -219,6 +226,13 @@ func rideSortHeaders(current RideSort) []RideSortHeader { return headers } +func rideSortDirection(sort RideSort) string { + if sort.Descending { + return "desc" + } + return "asc" +} + func rideDetailURL(id int64) string { return fmt.Sprintf("/rides/%d", id) } |