module Views.EventDetail exposing (eventDetailView) -- Local modules import Messages exposing (Msg(..)) import Models exposing (..) -- External modules import Html exposing (Html, text, div, ul, li, span, i, h4, a, p, hr) import Html.Attributes exposing (class, classList, href) import Markdown import Date.Extra eventDetailView : EventSlug -> Model -> Html Msg eventDetailView eventSlug model = let event = case List.head (List.filter (\e -> e.slug == eventSlug) model.events) of Just event -> event Nothing -> { title = "", slug = "", abstract = "", speakers = [], videoRecording = False, videoUrl = "" } in div [ class "row" ] [ div [ class "col-sm-9" ] [ a [ href "#" ] [ text "Back" ] , h4 [] [ text event.title ] , p [] [ Markdown.toHtml [] event.abstract ] , hr [] [] , eventInstancesList eventSlug model.eventInstances ] , div [ classList [ ( "col-sm-3", True ) , ( "schedule-sidebar", True ) ] ] [ videoRecordingSidebar event , speakerSidebar event.speakers ] ] videoRecordingSidebar : Event -> Html Msg videoRecordingSidebar event = let ( video, willBeRecorded ) = if event.videoUrl /= "" then ( h4 [] [ text "Watch the video here!" ], True ) else if event.videoRecording == True then ( h4 [] [ text "This event will be recorded!" ], True ) else ( h4 [] [ text "This event will NOT be recorded!" ], False ) in div [ classList [ ( "alert", True ), ( "alert-danger", not willBeRecorded ), ( "alert-info", willBeRecorded ) ] ] [ video ] speakerSidebar : List Speaker -> Html Msg speakerSidebar speakers = div [] [ h4 [] [ text "Speakers" ] , ul [] (List.map speakerDetail speakers) ] speakerDetail : Speaker -> Html Msg speakerDetail speaker = li [] [ text speaker.name ] eventInstancesList : String -> List EventInstance -> Html Msg eventInstancesList eventSlug eventInstances = let instances = List.filter (\instance -> instance.eventSlug == eventSlug) eventInstances in div [] [ h4 [] [ text "This event will occur at:" ] , ul [] (List.map eventInstanceItem instances) ] eventInstanceItem : EventInstance -> Html Msg eventInstanceItem eventInstance = li [] [ text ((Date.Extra.toFormattedString "y-MM-dd HH:mm" eventInstance.from) ++ " to " ++ (Date.Extra.toFormattedString "y-MM-d HH:mm" eventInstance.to) ) ]