-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathMobileView.elm
127 lines (115 loc) · 6.4 KB
/
MobileView.elm
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
module MobileView exposing (..)
import Date
import DateUtils
import Html exposing (..)
import Html.Attributes exposing (..)
import Html.Events exposing (onClick, on)
import MainMessages exposing (..)
import MainModel exposing (..)
import Time
import Utils
import Json.Decode
view : Model -> Html Msg
view model =
let
displayedColumnId =
Maybe.withDefault 0 model.displayedColumn
columnOptions =
(List.map (\c -> option [ value (toString c.id) ] [ text c.name ]) model.columns)
dateDivs =
(List.map
(\d ->
let
sortedSessions =
d.sessions
|> List.sortBy (\s -> DateUtils.timeOfDayToTime d.date s.startTime)
in
div [ class "prog-mob__oneday" ]
[ div [ class "prog-mob__datecontainer" ]
[ span [ class "prog-mob__day" ]
[ text (DateUtils.dateWithoutTimeToDay d.date)
]
, span [ class "prog-mob__date" ] [ text (toString d.date.day ++ " " ++ (DateUtils.intToMonthString d.date.month)) ]
]
, div []
(List.map
(\s ->
let
locationId =
Maybe.withDefault 0 s.locationId
trackId =
Maybe.withDefault 0 s.trackId
chairId =
Maybe.withDefault 0 s.chairId
query =
if model.showPreviewUi then
"?view=preview"
else if model.showPublishPage then
"?view=published"
else if model.showBasicPage then
"?view=basic"
else
""
in
if s.sessionColumn == ColumnId displayedColumnId || s.sessionColumn == AllColumns then
div [ class "prog-mob__session" ]
[ div
[ class "prog-mob__sesh-times" ]
[ span [ class "prog-mob__sesh-time prog-mob__sesh-time--start" ]
[ text
(toString s.startTime.hour
++ "."
++ DateUtils.add0Padding (toString s.startTime.minute)
)
]
, span [ class "prog-mob__sesh-time prog-mob__sesh-time--end" ]
[ text
(toString s.endTime.hour
++ "."
++ DateUtils.add0Padding (toString s.endTime.minute)
)
]
]
, div [ class "prog-mob__sesh-info" ]
[ a
[ class "prog-mob__sesh-name"
, href
("/events/"
++ model.eventId
++ "/sessions/"
++ (toString s.id)
++ query
)
]
[ text s.name ]
, span [ class "prog-mob__sesh-chair" ] [ text (getNameFromId model.chairs chairId) ]
, span [ class "prog-mob__sesh-location" ] [ text (getNameFromId model.locations locationId) ]
, span [ class "prog-mob__sesh-track" ] [ text (getNameFromId model.tracks trackId) ]
]
]
else
div [] []
)
sortedSessions
)
]
)
model.datesWithSessions
)
in
div [ class "prog-mob__container" ]
[ div [ class "prog-mob__colselect" ]
[ select [ onChange UpdateDisplayedColumn ]
columnOptions
]
, div [ class "prog-mob__feed" ] dateDivs
]
onChange : (String -> msg) -> Attribute msg
onChange handler =
on "change" <| Json.Decode.map handler <| Json.Decode.at [ "target", "value" ] Json.Decode.string
getNameFromId list id =
list
|> List.filter (\t -> t.id == id)
|> List.map .name
|> List.head
|> Maybe.withDefault ""