From 27d90c8041367688fc322559d8bbaa1fe92c4b78 Mon Sep 17 00:00:00 2001 From: Vidir Valberg Gudmundsson Date: Wed, 19 Jul 2017 18:30:50 +0200 Subject: [PATCH] No need for activeDay stuff. Also make back button in EventDetail more flexible. --- schedule/src/Decoders.elm | 2 +- schedule/src/Main.elm | 2 +- schedule/src/Messages.elm | 3 +-- schedule/src/Models.elm | 1 - schedule/src/Update.elm | 16 ++++++++------ schedule/src/Views/DayPicker.elm | 35 ++++++++++++++++++++---------- schedule/src/Views/DayView.elm | 8 ++++--- schedule/src/Views/EventDetail.elm | 6 +++-- 8 files changed, 44 insertions(+), 29 deletions(-) diff --git a/schedule/src/Decoders.elm b/schedule/src/Decoders.elm index d04b887c..6e68bff6 100644 --- a/schedule/src/Decoders.elm +++ b/schedule/src/Decoders.elm @@ -107,7 +107,7 @@ eventTypeDecoder = |> required "light_text" bool -initDataDecoder : Decoder (Flags -> Maybe Day -> Filter -> Route -> Model) +initDataDecoder : Decoder (Flags -> Filter -> Route -> Model) initDataDecoder = decode Model |> required "days" (list dayDecoder) diff --git a/schedule/src/Main.elm b/schedule/src/Main.elm index db88a8d6..dc641d65 100644 --- a/schedule/src/Main.elm +++ b/schedule/src/Main.elm @@ -38,7 +38,7 @@ init flags location = Filter [] [] [] initModel = - (Model [] [] [] [] [] flags Nothing emptyFilter currentRoute) + Model [] [] [] [] [] flags emptyFilter currentRoute in initModel ! [ sendInitMessage flags.camp_slug ] diff --git a/schedule/src/Messages.elm b/schedule/src/Messages.elm index ce8cc9be..705ed40a 100644 --- a/schedule/src/Messages.elm +++ b/schedule/src/Messages.elm @@ -13,9 +13,8 @@ import Navigation exposing (Location) type Msg = NoOp | WebSocketPayload String - | MakeActiveday Day - | RemoveActiveDay | ToggleEventTypeFilter EventType | ToggleEventLocationFilter EventLocation | ToggleVideoRecordingFilter { name : String, filter : EventInstance -> Bool } | OnLocationChange Location + | BackInHistory diff --git a/schedule/src/Models.elm b/schedule/src/Models.elm index e1e3c90c..d1e063b7 100644 --- a/schedule/src/Models.elm +++ b/schedule/src/Models.elm @@ -17,7 +17,6 @@ type alias Model = , eventLocations : List EventLocation , eventTypes : List EventType , flags : Flags - , activeDay : Maybe Day , filter : Filter , route : Route } diff --git a/schedule/src/Update.elm b/schedule/src/Update.elm index 2f83275c..6d839307 100644 --- a/schedule/src/Update.elm +++ b/schedule/src/Update.elm @@ -13,6 +13,11 @@ import Routing exposing (parseLocation) import Json.Decode +-- External modules + +import Navigation + + update : Msg -> Model -> ( Model, Cmd Msg ) update msg model = case msg of @@ -28,7 +33,7 @@ update msg model = "init" -> case Json.Decode.decodeString initDataDecoder str of Ok m -> - m model.flags Nothing (Filter [] [] []) model.route + m model.flags (Filter [] [] []) model.route Err error -> model @@ -41,12 +46,6 @@ update msg model = in newModel ! [] - MakeActiveday day -> - { model | activeDay = Just day } ! [] - - RemoveActiveDay -> - { model | activeDay = Nothing } ! [] - ToggleEventTypeFilter eventType -> let eventTypesFilter = @@ -101,3 +100,6 @@ update msg model = parseLocation location in { model | route = newRoute } ! [] + + BackInHistory -> + model ! [ Navigation.back 1 ] diff --git a/schedule/src/Views/DayPicker.elm b/schedule/src/Views/DayPicker.elm index 6d25bc99..13a6d3df 100644 --- a/schedule/src/Views/DayPicker.elm +++ b/schedule/src/Views/DayPicker.elm @@ -6,20 +6,33 @@ import Models exposing (..) import Messages exposing (Msg(..)) +-- Core modules + +import Date exposing (Date) + + -- External modules import Html exposing (Html, text, a, div) import Html.Attributes exposing (class, classList, href, id) import Html.Events exposing (onClick) -import Date.Extra as Date +import Date.Extra dayPicker : Model -> Html Msg dayPicker model = let + activeDate = + case model.route of + DayRoute iso -> + Date.Extra.fromIsoString iso + + _ -> + Nothing + isAllDaysActive = - case model.activeDay of - Just activeDay -> + case activeDate of + Just _ -> False Nothing -> @@ -34,23 +47,22 @@ dayPicker model = , ( "btn-primary", isAllDaysActive ) ] , href ("#") - , onClick (RemoveActiveDay) ] [ text "All Days" ] ] - ++ (List.map (\day -> dayButton day model.activeDay) model.days) + ++ (List.map (\day -> dayButton day activeDate) model.days) ) ] -dayButton : Day -> Maybe Day -> Html Msg -dayButton day activeDay = +dayButton : Day -> Maybe Date -> Html Msg +dayButton day activeDate = let isActive = - case activeDay of - Just activeDay -> - day == activeDay + case activeDate of + Just activeDate -> + day.date == activeDate Nothing -> False @@ -61,8 +73,7 @@ dayButton day activeDay = , ( "btn-default", not isActive ) , ( "btn-primary", isActive ) ] - , href ("#day/" ++ (Date.toFormattedString "y-MM-dd" day.date)) - , onClick (MakeActiveday day) + , href ("#day/" ++ (Date.Extra.toFormattedString "y-MM-dd" day.date)) ] [ text day.day_name ] diff --git a/schedule/src/Views/DayView.elm b/schedule/src/Views/DayView.elm index c7bf9562..f8ac1c49 100644 --- a/schedule/src/Views/DayView.elm +++ b/schedule/src/Views/DayView.elm @@ -13,8 +13,8 @@ import Date exposing (Date) -- External modules -import Html exposing (Html, text, div, ul, li, span, i, h4, table, p) -import Html.Attributes exposing (classList, style) +import Html exposing (Html, text, div, ul, li, span, i, h4, table, p, a) +import Html.Attributes exposing (classList, style, href) import Date.Extra @@ -121,7 +121,7 @@ eventInstanceBlock eventInstance = height = (toString (length * toFloat blockHeight)) ++ "px" in - div + a [ classList [ ( "event", True ) , ( "event-in-dayview", True ) @@ -129,7 +129,9 @@ eventInstanceBlock eventInstance = , style [ ( "height", height ) , ( "background-color", eventInstance.backgroundColor ) + , ( "color", eventInstance.forgroundColor ) ] + , href ("#event/" ++ eventInstance.eventSlug) ] [ p [] [ text ((Date.Extra.toFormattedString "HH:mm" eventInstance.from) ++ " " ++ eventInstance.title) ] ] diff --git a/schedule/src/Views/EventDetail.elm b/schedule/src/Views/EventDetail.elm index 9f21f36a..286ca2d6 100644 --- a/schedule/src/Views/EventDetail.elm +++ b/schedule/src/Views/EventDetail.elm @@ -10,6 +10,7 @@ import Models exposing (..) import Html exposing (Html, text, div, ul, li, span, i, h4, a, p, hr) import Html.Attributes exposing (class, classList, href) +import Html.Events exposing (onClick) import Markdown import Date.Extra @@ -27,8 +28,9 @@ eventDetailView eventSlug model = in div [ class "row" ] [ div [ class "col-sm-9" ] - [ a [ href "#" ] - [ text "Back" + [ a [ onClick BackInHistory, classList [ ( "btn", True ), ( "btn-default", True ) ] ] + [ i [ classList [ ( "fa", True ), ( "fa-chevron-left", True ) ] ] [] + , text " Back" ] , h4 [] [ text event.title ] , p [] [ Markdown.toHtml [] event.abstract ]