2017-07-17 09:25:57 +00:00
|
|
|
module Main exposing (..)
|
|
|
|
|
|
|
|
-- Local modules
|
|
|
|
|
|
|
|
import Models exposing (..)
|
|
|
|
import Routing exposing (parseLocation)
|
|
|
|
import Update exposing (update)
|
|
|
|
import Messages exposing (Msg(..))
|
|
|
|
import WebSocketCalls exposing (scheduleServer, sendInitMessage)
|
|
|
|
import Views exposing (view)
|
|
|
|
|
|
|
|
|
|
|
|
-- External modules
|
|
|
|
|
2017-07-17 15:59:38 +00:00
|
|
|
import Html.Lazy exposing (lazy)
|
2017-07-17 09:25:57 +00:00
|
|
|
import WebSocket exposing (listen)
|
|
|
|
import Navigation exposing (Location)
|
|
|
|
|
|
|
|
|
|
|
|
main : Program Flags Model Msg
|
|
|
|
main =
|
|
|
|
Navigation.programWithFlags
|
|
|
|
OnLocationChange
|
|
|
|
{ init = init
|
2017-07-17 15:59:38 +00:00
|
|
|
, view = lazy view
|
2017-07-17 09:25:57 +00:00
|
|
|
, update = update
|
|
|
|
, subscriptions = subscriptions
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
init : Flags -> Location -> ( Model, Cmd Msg )
|
|
|
|
init flags location =
|
2017-07-17 14:05:38 +00:00
|
|
|
let
|
|
|
|
currentRoute =
|
|
|
|
parseLocation location
|
|
|
|
|
|
|
|
emptyFilter =
|
|
|
|
Filter [] []
|
|
|
|
|
|
|
|
initModel =
|
|
|
|
(Model [] [] [] [] [] flags allDaysDay emptyFilter currentRoute)
|
|
|
|
|
|
|
|
-- To ensure we load data on right momens we call update with the
|
|
|
|
-- OnLocationChange message which is in charge of all that
|
|
|
|
( model, cmd ) =
|
|
|
|
update (OnLocationChange location) initModel
|
|
|
|
in
|
|
|
|
model ! [ cmd ]
|
2017-07-17 09:25:57 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
-- SUBSCRIPTIONS
|
|
|
|
|
|
|
|
|
|
|
|
subscriptions : Model -> Sub Msg
|
|
|
|
subscriptions model =
|
|
|
|
WebSocket.listen scheduleServer WebSocketPayload
|