module Model exposing
    (
      Model
    , TrackState(..)
    , Drag(..)
    , DragTarget(..)
    )
import TileMap exposing (FineZoomLevel, Coord)
import Point exposing (Point)

type DragTarget = Map | Graph | StartMark | EndMark | NoTarget

type Drag
    = None
    | Dragging DragTarget (Int, Int)  (Int, Int)

type TrackState = Empty | Loading | Failure String | Present (List Point)

type alias Model =
    { centre: Coord
    , zoom: FineZoomLevel
    , drag: Drag
    , startTime : Float
    , duration : Float
    , markedTime : (Float, Float)
    , track: TrackState }