2017-05-13 09:55:46 -04:00
|
|
|
module View.Timeline
|
|
|
|
exposing
|
|
|
|
( contextualTimelineView
|
|
|
|
, contextualTimelineMenu
|
|
|
|
, homeTimelineView
|
|
|
|
)
|
|
|
|
|
|
|
|
import Html exposing (..)
|
|
|
|
import Html.Attributes exposing (..)
|
|
|
|
import Html.Events exposing (..)
|
|
|
|
import Html.Keyed as Keyed
|
|
|
|
import Html.Lazy as Lazy
|
|
|
|
import Mastodon.Model exposing (..)
|
|
|
|
import Types exposing (..)
|
|
|
|
import View.Common as Common
|
|
|
|
import View.Events exposing (..)
|
|
|
|
import View.Status exposing (statusView, statusActionsView, statusEntryView)
|
|
|
|
|
|
|
|
|
|
|
|
type alias CurrentUser =
|
|
|
|
Account
|
|
|
|
|
|
|
|
|
|
|
|
type alias CurrentUserRelation =
|
|
|
|
Maybe Relationship
|
|
|
|
|
|
|
|
|
|
|
|
topScrollableColumn : ( String, String, String ) -> Html Msg -> Html Msg
|
|
|
|
topScrollableColumn ( label, iconName, timelineId ) content =
|
|
|
|
div [ class "col-md-3 column" ]
|
|
|
|
[ div [ class "panel panel-default" ]
|
|
|
|
[ a
|
|
|
|
[ href "", onClickWithPreventAndStop <| ScrollColumn ScrollTop timelineId ]
|
|
|
|
[ div [ class "panel-heading" ] [ Common.icon iconName, text label ] ]
|
|
|
|
, content
|
|
|
|
]
|
|
|
|
]
|
|
|
|
|
|
|
|
|
|
|
|
timelineView : CurrentUser -> Timeline Status -> Html Msg
|
|
|
|
timelineView currentUser timeline =
|
|
|
|
let
|
|
|
|
keyedEntry status =
|
|
|
|
( toString id, statusEntryView timeline.id "" currentUser status )
|
|
|
|
|
|
|
|
entries =
|
|
|
|
List.map keyedEntry timeline.entries
|
|
|
|
in
|
|
|
|
Keyed.ul [ id timeline.id, class "list-group timeline" ] <|
|
|
|
|
(entries ++ [ ( "load-more", Common.loadMoreBtn timeline ) ])
|
|
|
|
|
|
|
|
|
|
|
|
homeTimelineView : CurrentUser -> Timeline Status -> Html Msg
|
|
|
|
homeTimelineView currentUser timeline =
|
|
|
|
Lazy.lazy2 topScrollableColumn
|
|
|
|
( "Home timeline"
|
|
|
|
, "home"
|
|
|
|
, timeline.id
|
|
|
|
)
|
|
|
|
(timelineView currentUser timeline)
|
|
|
|
|
|
|
|
|
|
|
|
contextualTimelineMenu : CurrentView -> Html Msg
|
|
|
|
contextualTimelineMenu currentView =
|
|
|
|
let
|
|
|
|
btnView tooltip iconName view =
|
|
|
|
button
|
|
|
|
[ class <|
|
|
|
|
"btn "
|
|
|
|
++ (if currentView == view then
|
|
|
|
"btn-primary active"
|
|
|
|
else
|
|
|
|
"btn-default"
|
|
|
|
)
|
|
|
|
, onClick <| SetView view
|
|
|
|
, Html.Attributes.title tooltip
|
|
|
|
]
|
|
|
|
[ Common.icon iconName ]
|
|
|
|
in
|
2017-05-14 05:30:38 -04:00
|
|
|
Common.justifiedButtonGroup "column-menu"
|
2017-05-13 09:55:46 -04:00
|
|
|
[ btnView "Local timeline" "th-large" LocalTimelineView
|
|
|
|
, btnView "Global timeline" "globe" GlobalTimelineView
|
|
|
|
, btnView "Favorites" "star" FavoriteTimelineView
|
|
|
|
, btnView "Accounts" "user" AccountSelectorView
|
|
|
|
]
|
|
|
|
|
|
|
|
|
|
|
|
contextualTimelineView : CurrentView -> String -> String -> CurrentUser -> Timeline Status -> Html Msg
|
|
|
|
contextualTimelineView currentView title iconName currentUser timeline =
|
|
|
|
div []
|
|
|
|
[ contextualTimelineMenu currentView
|
|
|
|
, timelineView currentUser timeline
|
|
|
|
]
|
|
|
|
|> Lazy.lazy2 topScrollableColumn ( title, iconName, timeline.id )
|