module Main ( main ) where import Graphics.Element exposing (..) import Json.Decode as Json import Html exposing (Html) import StartApp exposing (App) import Effects exposing (Effects, Never) import TransitRouter import Task exposing (..) import Time exposing (..) import Server import Mailbox import Action exposing (..) import Model exposing (Model, initialModel) import Model.InitResult as InitResult exposing (initResultDecoder) import Update exposing (update, routerConfig) import View exposing (view) import Utils.Maybe exposing (isJust) import Utils.Effects as Effects main : Signal Html main = app.html app : App Model app = StartApp.start { init = (initData, Effects.none) `Effects.andThen` initRouter , view = view , update = update , inputs = [ Signal.map UpdateTime (Time.every 1000) , Signal.map RouterAction TransitRouter.actions , Mailbox.signal ] } -- Init initData : Model initData = case Json.decodeString initResultDecoder initResult of Ok init -> initialModel initialTime translations conf init Err _ -> initialModel initialTime translations conf InitResult.InitEmpty initRouter : Model -> (Model, Effects Action) initRouter model = TransitRouter.init routerConfig location model -- Output ports port tasks : Signal (Task.Task Never ()) port tasks = app.tasks -- Input ports port initialTime : Time port translations : String port conf : String port initResult : String port location : String