summaryrefslogtreecommitdiff
path: root/web/views.go
diff options
context:
space:
mode:
Diffstat (limited to 'web/views.go')
-rw-r--r--web/views.go26
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)
}