{-# LANGUAGE FlexibleContexts #-} {-# LANGUAGE TemplateHaskell #-} {-# LANGUAGE OverloadedStrings #-} module Haskus.Web.JQuery ( jqueryHtmlHeader , jqueryFiles ) where import Haskus.Web.Response import Haskus.Web.Server import Haskus.Web.Html import Haskus.Utils.Embed.ByteString import Data.Text import Control.Monad -- | Add jquery headers jqueryHtmlHeader :: Bool -> Html () jqueryHtmlHeader minimized = do let addScript :: Text -> Text -> Html () addScript mini normal = script_ [ src_ (if minimized then mini else normal) ] (mempty :: Html ()) addScript "/script/jquery/jquery-3.2.1.min.js" "/script/jquery/jquery-3.2.1.min.js" -- TODO: add normal jquery -- JQuery UI: some widgets addScript "/script/jquery/jquery-ui.min.js" "/script/jquery/jquery-ui.js" -- allow jquery UI to support Touch Screens addScript "/script/jquery/jquery.ui.touch-punch.min.js" "/script/jquery/jquery.ui.touch-punch.min.js" --TODO: add normal script -- ability to block the whole screen with a JS popup addScript "/script/jquery/jquery.blockUI.js" --TODO: minimized script "/script/jquery/jquery.blockUI.js" link_ [ rel_ "stylesheet" , type_ "text/css" , href_ "/style/jquery/jquery-ui.theme.css" ] -- | Serve JQuery files jqueryFiles :: ServerPartT IO Response jqueryFiles = msum [ dir "script" $ dir "jquery" $ msum [ dir "jquery-3.2.1.min.js" $ sendJS $ $(embedBSFile "src/scripts/jquery-3.2.1.min.js") , dir "jquery-ui.min.js" $ sendJS $ $(embedBSFile "src/scripts/jquery-ui.min.js") , dir "jquery-ui.js" $ sendJS $ $(embedBSFile "src/scripts/jquery-ui.js") , dir "jquery.ui.touch-punch.min.js" $ sendJS $ $(embedBSFile "src/scripts/jquery.ui.touch-punch.min.js") , dir "jquery.blockUI.js" $ sendJS $ $(embedBSFile "src/scripts/jquery.blockUI.js") ] , dir "style" $ dir "jquery" $ msum [ dir "jquery-ui.theme.css" $ sendJS $ $(embedBSFile "src/css/jquery-ui.theme.css") ] ]