module Model exposing
    (
      Model
    , TrackState(..)
    , DragState(..)
    )
import TileMap exposing (ZoomLevel, Coord)
import Point exposing (Point)

type DragState =
    DragMap (Int, Int) Coord
  | DragGraph (Int, Int) Float
  | DragLeftMark (Int, Int) (Float, Float)
  | DragRightMark (Int, Int) Float

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

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