From 92126cc98f59b43a7663bb6ccc0dc766b362716b Mon Sep 17 00:00:00 2001 From: Vidir Valberg Gudmundsson Date: Sun, 13 Aug 2017 15:24:01 +0200 Subject: [PATCH] Keep filter when returning to overview. --- schedule/src/Views/DayPicker.elm | 3 ++- schedule/src/Views/FilterView.elm | 26 +++++++++++++++++++++----- 2 files changed, 23 insertions(+), 6 deletions(-) diff --git a/schedule/src/Views/DayPicker.elm b/schedule/src/Views/DayPicker.elm index d7a8b5f5..b22297d1 100644 --- a/schedule/src/Views/DayPicker.elm +++ b/schedule/src/Views/DayPicker.elm @@ -5,6 +5,7 @@ module Views.DayPicker exposing (..) import Models exposing (..) import Messages exposing (Msg(..)) import Routing exposing (routeToString) +import Views.FilterView exposing (maybeFilteredOverviewRoute) -- Core modules @@ -52,7 +53,7 @@ dayPicker model = , ( "btn-default", not isAllDaysActive ) , ( "btn-primary", isAllDaysActive ) ] - , href <| routeToString OverviewRoute + , href <| routeToString <| maybeFilteredOverviewRoute model ] [ text "All Days" ] diff --git a/schedule/src/Views/FilterView.elm b/schedule/src/Views/FilterView.elm index 3cfc1686..e6cb5413 100644 --- a/schedule/src/Views/FilterView.elm +++ b/schedule/src/Views/FilterView.elm @@ -1,9 +1,9 @@ -module Views.FilterView exposing (filterSidebar, applyFilters, parseFilterFromQuery, filterToQuery) +module Views.FilterView exposing (filterSidebar, applyFilters, parseFilterFromQuery, filterToQuery, maybeFilteredOverviewRoute) -- Local modules import Messages exposing (Msg(..)) -import Models exposing (Model, EventInstance, Filter, Day, FilterQuery, Route(OverviewFilteredRoute), VideoRecordingFilter, EventType, EventLocation) +import Models exposing (Model, EventInstance, Filter, Day, FilterQuery, Route(OverviewRoute, OverviewFilteredRoute), VideoRecordingFilter, EventType, EventLocation) import Routing exposing (routeToString) @@ -204,8 +204,8 @@ parseFilterFromQuery query model = } -filterToQuery : Filter -> FilterQuery -filterToQuery filter = +filterToString : Filter -> String +filterToString filter = let typePart = case String.join "," (List.map .slug filter.eventTypes) of @@ -230,8 +230,24 @@ filterToQuery filter = video -> "video=" ++ video + in + String.join "&" (List.filter (\x -> x /= "") [ typePart, locationPart, videoPart ]) + +filterToQuery : Filter -> FilterQuery +filterToQuery filter = + let result = - String.join "&" (List.filter (\x -> x /= "") [ typePart, locationPart, videoPart ]) + filterToString filter in routeToString <| OverviewFilteredRoute result + + +maybeFilteredOverviewRoute : Model -> Route +maybeFilteredOverviewRoute model = + case filterToString model.filter of + "" -> + OverviewRoute + + query -> + OverviewFilteredRoute query