module Leankit.Types.Common where
import Control.Applicative ((<$>))
import Data.Aeson.Types
import Data.Colour
import Data.Colour.SRGB
type Date = String
type DateTime = String
newtype BoardID = BoardID Int deriving (Eq, Show)
instance FromJSON BoardID where
parseJSON v = BoardID <$> parseJSON v
newtype OrganizationID = OrganizationID Int deriving (Eq, Show)
instance FromJSON OrganizationID where
parseJSON v = OrganizationID <$> parseJSON v
newtype UserID = UserID Int deriving (Eq, Show)
instance FromJSON UserID where
parseJSON v = UserID <$> parseJSON v
newtype LaneID = LaneID Int deriving (Eq, Show)
instance FromJSON LaneID where
parseJSON v = LaneID <$> parseJSON v
newtype CardID = CardID Int deriving (Eq, Show)
instance FromJSON CardID where
parseJSON v = CardID <$> parseJSON v
newtype CardContextID = CardContextID Int deriving (Eq, Show)
instance FromJSON CardContextID where
parseJSON v = CardContextID <$> parseJSON v
newtype CardCommentID = CardCommentID Int deriving (Eq, Show)
instance FromJSON CardCommentID where
parseJSON v = CardCommentID <$> parseJSON v
newtype CardTypeID = CardTypeID Int deriving (Eq, Show)
instance FromJSON CardTypeID where
parseJSON v = CardTypeID <$> parseJSON v
newtype Color = Color (Colour Double) deriving (Eq, Show)
instance FromJSON Color where
parseJSON (String "") = parseJSON (String "#FFFFFF")
parseJSON v = (Color . sRGB24read) <$> parseJSON v
newtype LaneClassTypeID = LaneClassTypeID Int deriving (Eq, Show)
instance FromJSON LaneClassTypeID where
parseJSON v = LaneClassTypeID <$> parseJSON v
newtype LaneTypeID = LaneTypeID Int deriving (Eq, Show)
instance FromJSON LaneTypeID where
parseJSON v = LaneTypeID <$> parseJSON v
newtype PriorityID = PriorityID Int deriving (Eq, Show)
instance FromJSON PriorityID where
parseJSON v = PriorityID <$> parseJSON v
newtype ClassOfServiceID = ClassOfServiceID Int deriving (Eq, Show)
instance FromJSON ClassOfServiceID where
parseJSON v = ClassOfServiceID <$> parseJSON v