mirror of
https://github.com/gren-lang/compiler.git
synced 2024-10-27 10:19:02 +03:00
* elm + Yesod example
This commit is contained in:
parent
cdef603d8c
commit
f7e985243a
58
Examples/elm-yesod/Main.hs
Normal file
58
Examples/elm-yesod/Main.hs
Normal file
@ -0,0 +1,58 @@
|
||||
{-# LANGUAGE QuasiQuotes, TemplateHaskell, OverloadedStrings, TypeFamilies, MultiParamTypeClasses #-}
|
||||
|
||||
import Data.Text (Text)
|
||||
import Language.Elm.Yesod
|
||||
import Yesod
|
||||
import Yesod.Static
|
||||
import Yesod.Default.Util
|
||||
import Text.Hamlet
|
||||
import Text.Julius
|
||||
|
||||
data ElmTest = ElmTest
|
||||
|
||||
-- our Elm code
|
||||
mousePage = [elm|
|
||||
niceBlue = rgb 0 (1/3) (2/3)
|
||||
clearGreen = rgba (1/9) (8/9) (3/9) (1/2)
|
||||
|
||||
scene (x,y) (w,h) =
|
||||
collage w h [ filled niceBlue . rotate ((x+y)/1000) $ ngon 4 100 (200,200)
|
||||
, filled clearGreen $ ngon 5 30 (x,y)
|
||||
]
|
||||
|
||||
main = lift2 scene Mouse.position Window.dimensions
|
||||
|]
|
||||
|
||||
rootPage = [elm|
|
||||
main = plainText "Welcome!"
|
||||
|]
|
||||
|
||||
-- our Yesod App
|
||||
|
||||
mkYesod "ElmTest" [parseRoutes|
|
||||
/ RootR GET
|
||||
/mouse MouseR GET
|
||||
|]
|
||||
|
||||
getMouseR :: Handler RepHtml
|
||||
getMouseR = defaultLayout $ do
|
||||
setTitle "Mouse position demo"
|
||||
generateWidget mousePage
|
||||
|
||||
|
||||
getRootR :: Handler RepHtml
|
||||
getRootR = defaultLayout $ do
|
||||
setTitle "Welcome!"
|
||||
generateWidget rootPage
|
||||
|
||||
instance Yesod ElmTest where
|
||||
jsLoader _ = BottomOfHeadBlocking
|
||||
defaultLayout widget = do
|
||||
mmsg <- getMessage
|
||||
pc <- widgetToPageContent $ do
|
||||
addScriptRemote $ "http://f.cl.ly/items/2e3Z3r3v29263U393c3x/elm-min.js"
|
||||
$(whamletFile "templates/default-layout.hamlet")
|
||||
hamletToRepHtml $(hamletFile "templates/default-layout-wrapper.hamlet")
|
||||
|
||||
main :: IO ()
|
||||
main = warpDebug 3000 ElmTest
|
@ -0,0 +1,8 @@
|
||||
$doctype 5
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<title>#{pageTitle pc}
|
||||
^{pageHead pc}
|
||||
<body>
|
||||
^{pageBody pc}
|
3
Examples/elm-yesod/templates/default-layout.hamlet
Normal file
3
Examples/elm-yesod/templates/default-layout.hamlet
Normal file
@ -0,0 +1,3 @@
|
||||
$maybe msg <- mmsg
|
||||
<div .message>#{msg}
|
||||
^{widget}
|
Loading…
Reference in New Issue
Block a user