Remove jqueryDayTimeField (#152)

This commit is contained in:
Michael Snoyman 2012-01-10 12:00:12 +02:00
parent 6d30eabd7c
commit a98c236ef0

View File

@ -8,7 +8,6 @@
module Yesod.Form.Jquery module Yesod.Form.Jquery
( YesodJquery (..) ( YesodJquery (..)
, jqueryDayField , jqueryDayField
, jqueryDayTimeField
, jqueryAutocompleteField , jqueryAutocompleteField
, googleHostedJqueryUiCss , googleHostedJqueryUiCss
, JqueryDaySettings (..) , JqueryDaySettings (..)
@ -19,10 +18,8 @@ import Yesod.Handler
import Yesod.Core (Route) import Yesod.Core (Route)
import Yesod.Form import Yesod.Form
import Yesod.Widget import Yesod.Widget
import Data.Time (UTCTime (..), Day, TimeOfDay (..), timeOfDayToTime, import Data.Time (Day)
timeToTimeOfDay)
import qualified Data.Text as T import qualified Data.Text as T
import Data.Char (isSpace)
import Data.Default import Data.Default
import Text.Hamlet (shamlet) import Text.Hamlet (shamlet)
import Text.Julius (julius) import Text.Julius (julius)
@ -109,53 +106,6 @@ $(function(){$("##{theId}").datepicker({
, "]" , "]"
] ]
ifRight :: Either a b -> (b -> c) -> Either a c
ifRight e f = case e of
Left l -> Left l
Right r -> Right $ f r
showLeadingZero :: (Show a) => a -> String
showLeadingZero time = let t = show time in if length t == 1 then "0" ++ t else t
-- use A.M/P.M and drop seconds and "UTC" (as opposed to normal UTCTime show)
jqueryDayTimeUTCTime :: UTCTime -> String
jqueryDayTimeUTCTime (UTCTime day utcTime) =
let timeOfDay = timeToTimeOfDay utcTime
in (replace '-' '/' (show day)) ++ " " ++ showTimeOfDay timeOfDay
where
showTimeOfDay (TimeOfDay hour minute _) =
let (h, apm) = if hour < 12 then (hour, "AM") else (hour - 12, "PM")
in (showLeadingZero h) ++ ":" ++ (showLeadingZero minute) ++ " " ++ apm
jqueryDayTimeField :: (RenderMessage master FormMessage, YesodJquery master) => Field sub master UTCTime
jqueryDayTimeField = Field
{ fieldParse = blank $ parseUTCTime . unpack
, fieldView = \theId name theClass val isReq -> do
addHtml [HTML|\
<input id="#{theId}" name="#{name}" :not (null theClass):class="#{T.intercalate " " theClass}" :isReq:required="" value="#{showVal val}">
|]
addScript' urlJqueryJs
addScript' urlJqueryUiJs
addScript' urlJqueryUiDateTimePicker
addStylesheet' urlJqueryUiCss
addJulius [JULIUS|
$(function(){$("##{theId}").datetimepicker({dateFormat : "yyyy/mm/dd hh:MM TT"})});
|]
}
where
showVal = either id (pack . jqueryDayTimeUTCTime)
parseUTCTime :: String -> Either FormMessage UTCTime
parseUTCTime s =
let (dateS, timeS') = break isSpace (dropWhile isSpace s)
timeS = drop 1 timeS'
dateE = parseDate dateS
in case dateE of
Left l -> Left l
Right date ->
ifRight (parseTime timeS)
(UTCTime date . timeOfDayToTime)
jqueryAutocompleteField :: (RenderMessage master FormMessage, YesodJquery master) jqueryAutocompleteField :: (RenderMessage master FormMessage, YesodJquery master)
=> Route master -> Field sub master Text => Route master -> Field sub master Text
jqueryAutocompleteField src = Field jqueryAutocompleteField src = Field
@ -187,11 +137,6 @@ readMay s = case reads s of
(x, _):_ -> Just x (x, _):_ -> Just x
[] -> Nothing [] -> Nothing
-- | Replaces all instances of a value in a list by another value.
-- from http://hackage.haskell.org/packages/archive/cgi/3001.1.7.1/doc/html/src/Network-CGI-Protocol.html#replace
replace :: Eq a => a -> a -> [a] -> [a]
replace x y = map (\z -> if z == x then y else z)
data JqueryDaySettings = JqueryDaySettings data JqueryDaySettings = JqueryDaySettings
{ jdsChangeMonth :: Bool { jdsChangeMonth :: Bool
, jdsChangeYear :: Bool , jdsChangeYear :: Bool